fix:系统优化

This commit is contained in:
HH 2024-06-20 16:51:40 +08:00
parent 3d38a94be7
commit f82b8afc3c
16 changed files with 369 additions and 70 deletions

View File

@ -16,10 +16,10 @@ VITE_PROXY_API = /dev-api
# VITE_PROXY = [ ["/dev-api", "http://42.193.40.239:8017" ],["/dev-img-api", "http://file.sczysoft.com" ]] # VITE_PROXY = [ ["/dev-api", "http://42.193.40.239:8017" ],["/dev-img-api", "http://file.sczysoft.com" ]]
# VITE_UPLOAD_URL = http://42.193.40.239:8888 # VITE_UPLOAD_URL = http://42.193.40.239:8888
# 东哥 # 东哥
VITE_PROXY = [ ["/dev-api", "http://192.168.110.186:8017" ],["/dev-img-api", "http://42.193.40.239:8017" ]] # VITE_PROXY = [ ["/dev-api", "http://192.168.110.186:8017" ],["/dev-img-api", "http://42.193.40.239:8017" ]]
# VITE_UPLOAD_URL = http://192.168.110.186 # VITE_UPLOAD_URL = http://192.168.110.186
# 陈游 # 陈游
# VITE_PROXY = [ ["/dev-api", "http://192.168.110.10:8017" ],["/dev-img-api", "http://42.193.40.239:8017" ]] VITE_PROXY = [ ["/dev-api", "http://192.168.110.10:8017" ],["/dev-img-api", "http://42.193.40.239:8017" ]]
VITE_UPLOAD_URL = http://42.193.40.239:8888/ VITE_UPLOAD_URL = http://42.193.40.239:8888/
# VITE_UPLOAD_URL = https://city.sczysoft.com/dffile/ # VITE_UPLOAD_URL = https://city.sczysoft.com/dffile/
# #

View File

@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1718863812636" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2322" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M512 768c-183.466667 0-328.533333-85.333333-426.666667-256 98.133333-170.666667 243.2-256 426.666667-256s328.533333 85.333333 426.666667 256c-98.133333 170.666667-243.2 256-426.666667 256z m8.533333-426.666667c-128 0-256 55.466667-328.533333 170.666667 72.533333 115.2 200.533333 170.666667 328.533333 170.666667s238.933333-55.466667 311.466667-170.666667c-72.533333-115.2-183.466667-170.666667-311.466667-170.666667z m-8.533333 298.666667c-72.533333 0-128-55.466667-128-128s55.466667-128 128-128 128 55.466667 128 128-55.466667 128-128 128z m0-85.333333c25.6 0 42.666667-17.066667 42.666667-42.666667s-17.066667-42.666667-42.666667-42.666667-42.666667 17.066667-42.666667 42.666667 17.066667 42.666667 42.666667 42.666667z" fill="#444444" p-id="2323"></path></svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1718863843275" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2480" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M422.4 776.533333l76.8-76.8h8.533333c145.066667 0 251.733333-55.466667 332.8-170.666666-25.6-34.133333-55.466667-64-85.333333-89.6L819.2 384c46.933333 38.4 85.333333 89.6 119.466667 145.066667-98.133333 170.666667-243.2 251.733333-426.666667 251.733333-29.866667 4.266667-59.733333 0-89.6-4.266667z m-238.933333-119.466666c-34.133333-34.133333-68.266667-76.8-98.133334-128 98.133333-170.666667 243.2-251.733333 426.666667-251.733334h46.933333l-85.333333 85.333334c-128 8.533333-226.133333 64-298.666667 166.4 17.066667 25.6 38.4 51.2 59.733334 68.266666l-51.2 59.733334zM755.2 213.333333l59.733333 59.733334L277.333333 810.666667l-59.733333-59.733334L755.2 213.333333z" fill="#444444" p-id="2481"></path></svg>

After

Width:  |  Height:  |  Size: 1.0 KiB

View File

@ -135,8 +135,12 @@
placeholder="请输入身份证号" placeholder="请输入身份证号"
type="input" type="input"
v-model="formData.idCard" v-model="formData.idCard"
/> >
<el-button @click="getPeopleIdCard" type="primary" round class="idCardButton">查看身份证号</el-button> <template #append v-if="formData.peopleId">
<svg-icon name="xianshi" class="icon_xianshi" v-if="cardtype" @click.stop="getPeopleIdCard(true)" />
<svg-icon name="yingchang" class="icon_xianshi" v-else @click.stop="getPeopleIdCard(false)" />
</template>
</el-input>
</el-form-item> </el-form-item>
<el-form-item label="当前地址" prop="nowAddress" style="width: 100%;"> <el-form-item label="当前地址" prop="nowAddress" style="width: 100%;">
<el-input <el-input
@ -316,7 +320,10 @@ const onclone = () => {
emits("close"); emits("close");
}; };
// //
const getPeopleIdCard = () =>{ const cardtype = ref(true);
const getPeopleIdCard = (type) =>{
cardtype.value = !cardtype.value;
if(type) {
let params = { let params = {
idCard:formData.value.idCard, idCard:formData.value.idCard,
peopleId:formData.value.peopleId, peopleId:formData.value.peopleId,
@ -326,6 +333,23 @@ const getPeopleIdCard = () =>{
formData.value.idCard = res.data.idCard; formData.value.idCard = res.data.idCard;
} }
}); });
}else {
function maskIdCard(idCardNumber) {
if (idCardNumber.length !== 18) {
throw new Error('身份证号码必须是18位');
}
//
var firstSix = idCardNumber.substring(0, 6);
//
var lastFour = idCardNumber.substring(14);
// *
var maskedMiddle = '********'.repeat(1); // 8*
//
return firstSix + maskedMiddle + lastFour;
}
formData.value.idCard = maskIdCard(formData.value.idCard);
}
} }
onMounted(() => { onMounted(() => {
getareaTree(); getareaTree();
@ -360,4 +384,15 @@ watch(
.idCardButton { .idCardButton {
margin-top: 10px; margin-top: 10px;
} }
.icon_xianshi {
width: 2em;
height: 2em;
position: absolute;
right: 0px;
}
:deep(.el-input-group__append) {
padding: 0 !important;
background-color:transparent !important;
}
</style> </style>

View File

@ -135,8 +135,12 @@
placeholder="请输入身份证号" placeholder="请输入身份证号"
type="input" type="input"
v-model="formData.idCard" v-model="formData.idCard"
/> >
<el-button @click="getPeopleIdCard" type="primary" round class="idCardButton">查看身份证号</el-button> <template #append v-if="formData.peopleId">
<svg-icon name="xianshi" class="icon_xianshi" v-if="cardtype" @click.stop="getPeopleIdCard(true)" />
<svg-icon name="yingchang" class="icon_xianshi" v-else @click.stop="getPeopleIdCard(false)" />
</template>
</el-input>
</el-form-item> </el-form-item>
<el-form-item label="当前地址" prop="nowAddress" style="width: 100%;"> <el-form-item label="当前地址" prop="nowAddress" style="width: 100%;">
@ -316,7 +320,10 @@ const onclone = () => {
emits("close"); emits("close");
}; };
// //
const getPeopleIdCard = () =>{ const cardtype = ref(true);
const getPeopleIdCard = (type) =>{
cardtype.value = !cardtype.value;
if(type) {
let params = { let params = {
idCard:formData.value.idCard, idCard:formData.value.idCard,
peopleId:formData.value.peopleId, peopleId:formData.value.peopleId,
@ -326,6 +333,23 @@ const getPeopleIdCard = () =>{
formData.value.idCard = res.data.idCard; formData.value.idCard = res.data.idCard;
} }
}); });
}else {
function maskIdCard(idCardNumber) {
if (idCardNumber.length !== 18) {
throw new Error('身份证号码必须是18位');
}
//
var firstSix = idCardNumber.substring(0, 6);
//
var lastFour = idCardNumber.substring(14);
// *
var maskedMiddle = '********'.repeat(1); // 8*
//
return firstSix + maskedMiddle + lastFour;
}
formData.value.idCard = maskIdCard(formData.value.idCard);
}
} }
onMounted(() => { onMounted(() => {
getareaTree(); getareaTree();
@ -360,4 +384,15 @@ watch(
.idCardButton { .idCardButton {
margin-top: 10px; margin-top: 10px;
} }
.icon_xianshi {
width: 2em;
height: 2em;
position: absolute;
right: 0px;
}
:deep(.el-input-group__append) {
padding: 0 !important;
background-color:transparent !important;
}
</style> </style>

View File

@ -89,7 +89,12 @@
placeholder="请输入身份证号" placeholder="请输入身份证号"
type="input" type="input"
v-model="formData.idCard" v-model="formData.idCard"
/> >
<template #append v-if="formData.domicileId">
<svg-icon name="xianshi" class="icon_xianshi" v-if="cardtype" @click.stop="getPeopleIdCard(true)" />
<svg-icon name="yingchang" class="icon_xianshi" v-else @click.stop="getPeopleIdCard(false)" />
</template>
</el-input>
</el-form-item> </el-form-item>
<el-form-item label="现居地址" prop="address" style="width: 94%;"> <el-form-item label="现居地址" prop="address" style="width: 94%;">
<el-input <el-input
@ -137,7 +142,7 @@
import { reactive, ref, onMounted, watch } from "vue"; import { reactive, ref, onMounted, watch } from "vue";
import { ElMessage, FormInstance, FormRules } from "element-plus"; import { ElMessage, FormInstance, FormRules } from "element-plus";
import { areaTree } from "@/api/account"; import { areaTree } from "@/api/account";
import { domicileAdd, domicileDetail } from "@/api/base"; import { domicileAdd, domicileDetail,domicileIdCard } from "@/api/base";
import useUserStore from "@/store/modules/user"; import useUserStore from "@/store/modules/user";
const userStore = useUserStore(); const userStore = useUserStore();
const user = ref(JSON.parse(userStore.userInfo)); const user = ref(JSON.parse(userStore.userInfo));
@ -164,12 +169,11 @@ let isCardId = (rule, value, callback) => {
if (!value) { if (!value) {
return new Error("请输入身份证号)"); return new Error("请输入身份证号)");
} else { } else {
const reg = const reg = /^[0-9*]{15}$|^[0-9*]{17}[0-9Xx]$/;
/^\d{6}(18|19|20)?\d{2}(0[1-9]|1[0-2])(([0-2][1-9])|10|20|30|31)\d{3}(\d|X|x)$/;
const card = reg.test(value); const card = reg.test(value);
if (!card) { if (!card) {
//12 ///15-18
callback(new Error("身份证格式如:423024xxxx0216xxxx")); callback(new Error("请输入长度为15或者18位"));
} else { } else {
callback(); callback();
} }
@ -246,34 +250,66 @@ const onclone = () => {
emits("close"); emits("close");
}; };
// //
const detailTableData = ref([]);
const getDomicileDetail = (id) => { const getDomicileDetail = (id) => {
domicileDetail({ domicileId: id }).then((res: any) => { domicileDetail({ domicileId: id }).then((res: any) => {
detailTableData.value = res.peopleList; formData.value = res.data;
}); });
}; };
//
const cardtype = ref(true);
const getPeopleIdCard = (type) =>{
cardtype.value = !cardtype.value
if(type) {
let params = {
idCard:formData.value.idCard,
domicileId:formData.value.domicileId,
}
domicileIdCard(params).then((res: any) => {
if (res.data.idCard) {
formData.value.idCard = res.data.idCard;
}
});
}else {
function maskIdCard(idCardNumber) {
if (idCardNumber.length !== 18) {
throw new Error('身份证号码必须是18位');
}
//
var firstSix = idCardNumber.substring(0, 6);
//
var lastFour = idCardNumber.substring(14);
// *
var maskedMiddle = '********'.repeat(1); // 8*
//
return firstSix + maskedMiddle + lastFour;
}
formData.value.idCard = maskIdCard(formData.value.idCard);
}
}
onMounted(() => { onMounted(() => {
getareaTree(); getareaTree();
}); });
watch(
() => props.readonly,
(val: any) => {
if (val == true) {
setTimeout(() => {
titleName.value = "查看";
getDomicileDetail(formData.value.domicileId);
}, 300);
}
}
);
// //
watch( watch(
() => props.form, () => props.form,
(val: any) => { (val: any) => {
titleName.value = val.domicileId ? "编辑" : "新增/迁入"; titleName.value = val.domicileId ? "编辑" : "新增/迁入";
formData.value = JSON.parse(JSON.stringify(val)); formData.value = JSON.parse(JSON.stringify(val));
if(val.domicileId) getDomicileDetail(formData.value.domicileId);
} }
); );
</script> </script>
<style scoped></style> <style scoped>
.icon_xianshi {
width: 2em;
height: 2em;
position: absolute;
right: 0px;
}
:deep(.el-input-group__append) {
padding: 0 !important;
background-color:transparent !important;
}
</style>

View File

@ -78,7 +78,7 @@
value-format="YYYY-MM-DD" value-format="YYYY-MM-DD"
/> />
</el-form-item> </el-form-item>
<el-form-item label="类型" prop="typeId" style="width: 100%;"> <el-form-item label="类型" prop="typeId">
<el-select <el-select
multiple multiple
:disabled="readonly" :disabled="readonly"
@ -94,6 +94,17 @@
> >
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="是否本地户籍" prop="isLocal">
<el-select
:disabled="readonly"
placeholder="请选择是否本地户籍"
v-model="formData.isLocal"
>
<el-option label="是" :value=1></el-option>
<el-option label="否" :value=2></el-option>
</el-select>
</el-form-item>
<el-form-item label="工作地点" prop="workAddress" style="width: 100%;"> <el-form-item label="工作地点" prop="workAddress" style="width: 100%;">
<el-input <el-input
v-model="formData.workAddress" v-model="formData.workAddress"
@ -109,8 +120,12 @@
placeholder="请输入身份证号" placeholder="请输入身份证号"
type="input" type="input"
v-model="formData.idCard" v-model="formData.idCard"
/> >
<el-button @click="getPeopleIdCard" type="primary" round class="idCardButton">查看身份证号</el-button> <template #append v-if="formData.peopleId">
<svg-icon name="xianshi" class="icon_xianshi" v-if="cardtype" @click.stop="getPeopleIdCard(true)" />
<svg-icon name="yingchang" class="icon_xianshi" v-else @click.stop="getPeopleIdCard(false)" />
</template>
</el-input>
</el-form-item> </el-form-item>
<el-form-item label="当前地址" prop="nowAddress" style="width: 100%;"> <el-form-item label="当前地址" prop="nowAddress" style="width: 100%;">
<el-input <el-input
@ -277,7 +292,10 @@ const onclone = () => {
emits("close"); emits("close");
}; };
// //
const getPeopleIdCard = () =>{ const cardtype = ref(true);
const getPeopleIdCard = (type) =>{
cardtype.value = !cardtype.value;
if(type) {
let params = { let params = {
idCard:formData.value.idCard, idCard:formData.value.idCard,
peopleId:formData.value.peopleId, peopleId:formData.value.peopleId,
@ -287,6 +305,23 @@ const getPeopleIdCard = () =>{
formData.value.idCard = res.data.idCard; formData.value.idCard = res.data.idCard;
} }
}); });
}else {
function maskIdCard(idCardNumber) {
if (idCardNumber.length !== 18) {
throw new Error('身份证号码必须是18位');
}
//
var firstSix = idCardNumber.substring(0, 6);
//
var lastFour = idCardNumber.substring(14);
// *
var maskedMiddle = '********'.repeat(1); // 8*
//
return firstSix + maskedMiddle + lastFour;
}
formData.value.idCard = maskIdCard(formData.value.idCard);
}
} }
onMounted(() => { onMounted(() => {
getCrTypeList(); getCrTypeList();
@ -311,4 +346,15 @@ watch(
.idCardButton { .idCardButton {
margin-top: 10px; margin-top: 10px;
} }
.icon_xianshi {
width: 2em;
height: 2em;
position: absolute;
right: 0px;
}
:deep(.el-input-group__append) {
padding: 0 !important;
background-color:transparent !important;
}
</style> </style>

View File

@ -400,7 +400,7 @@ const onclone = () => {
const fileExport = () => { const fileExport = () => {
const params = { const params = {
userId:userId.value, userId:userId.value,
areaCode:search.value.areaCode, areaCode:'',
condition:search.value.condition, condition:search.value.condition,
domicileState:search.value.domicileState, domicileState:search.value.domicileState,
marriageState:search.value.marriageState, marriageState:search.value.marriageState,
@ -408,6 +408,9 @@ const fileExport = () => {
startTime:'', startTime:'',
endTime:'', endTime:'',
} }
if (search.value.areaCode) {
params.areaCode = search.value.areaCode[search.value.areaCode.length - 1];
}
exportFileRequest(`/admin/export/exportDomicileList`, '户籍管理统计.xlsx', params).then(res => { exportFileRequest(`/admin/export/exportDomicileList`, '户籍管理统计.xlsx', params).then(res => {
}) })
}; };

View File

@ -13,7 +13,7 @@
<el-form <el-form
ref="formRef" ref="formRef"
label-position="right" label-position="right"
label-width="150px" label-width="80px"
:rules="ruleForm" :rules="ruleForm"
:model="addPostFactorForm" :model="addPostFactorForm"
> >
@ -21,7 +21,17 @@
<el-input v-model="addPostFactorForm.othname"></el-input> <el-input v-model="addPostFactorForm.othname"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="性别" prop="othsex"> <el-form-item label="性别" prop="othsex">
<el-input v-model="addPostFactorForm.othsex"></el-input> <el-select
placeholder="请选择"
v-model="addPostFactorForm.othsex"
>
<el-option label="男" :value=1></el-option>
<el-option label="女" :value=0></el-option>
</el-select>
</el-form-item>
<el-form-item label="身份证号码" prop="idCard">
<el-input v-model="addPostFactorForm.idCard"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="民族" prop="nation"> <el-form-item label="民族" prop="nation">
<el-input v-model="addPostFactorForm.nation"></el-input> <el-input v-model="addPostFactorForm.nation"></el-input>

View File

@ -167,7 +167,9 @@
label="性别" label="性别"
> >
<template #default="item"> <template #default="item">
<span>{{ item.row.othsex ? item.row.othsex : "-" }}</span> <span v-if="item.row.othsex === 0"></span>
<span v-else-if="item.row.othsex === 1"></span>
<span v-else> - </span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column

View File

@ -49,9 +49,9 @@
v-model="addPostFactorForm.content" v-model="addPostFactorForm.content"
></el-input> ></el-input>
</el-form-item> </el-form-item>
<el-form-item label="时间:" prop="createTimeString" style="width: 100%;"> <el-form-item label="时间:" prop="createTime" style="width: 100%;">
<el-date-picker <el-date-picker
v-model="addPostFactorForm.createTimeString" v-model="addPostFactorForm.createTime"
type="date" type="date"
placeholder="请选择时间" placeholder="请选择时间"
format="YYYY-MM-DD" format="YYYY-MM-DD"

View File

@ -101,7 +101,7 @@
> >
</el-table-column> </el-table-column>
<el-table-column <el-table-column
prop="modifyTimeString" prop="modifyTime"
:resizable="true" :resizable="true"
align="center" align="center"
label="上报时间" label="上报时间"

View File

@ -28,6 +28,10 @@
<svg-icon name="refurbish" class="icon" /> <svg-icon name="refurbish" class="icon" />
<span>刷新</span> <span>刷新</span>
</div> </div>
<div class="tool-item" @click="fileExport">
<svg-icon name="export" class="icon" />
<span>导出动态</span>
</div>
</div> </div>
<div class="label-select filter-tab"> <div class="label-select filter-tab">
<label>工作类型</label> <label>工作类型</label>
@ -63,6 +67,16 @@
</el-option> </el-option>
</el-select> </el-select>
</div> </div>
<div class="label-select filter-tab">
<label>开始时间</label>
<el-date-picker v-model="search.startTime" type="date" placeholder="选择开始时间" format="YYYY/MM/DD"
value-format="YYYY-MM-DD" @change="getList" />
</div>
<div class="label-select filter-tab">
<label>j结束时间</label>
<el-date-picker v-model="search.endTime" type="date" placeholder="选择结束时间" format="YYYY/MM/DD"
value-format="YYYY-MM-DD" @change="getList" />
</div>
</div> </div>
</div> </div>
<!-- 表格 --> <!-- 表格 -->
@ -166,6 +180,7 @@
<script lang='ts' setup> <script lang='ts' setup>
import { onMounted, reactive, ref } from "vue"; import { onMounted, reactive, ref } from "vue";
import { receiveWork, wkAllFinishStats } from "@/api/demands"; import { receiveWork, wkAllFinishStats } from "@/api/demands";
import { exportFileRequest } from "@/api/export";
import Add from "./add.vue"; import Add from "./add.vue";
import { useRouter } from "vue-router"; import { useRouter } from "vue-router";
const router = useRouter(); const router = useRouter();
@ -178,6 +193,8 @@ const search = ref({
condition: "", condition: "",
typeId:'', typeId:'',
state:1, state:1,
startTime:"",
endTime:'',
}); });
const currentPage = ref(1); const currentPage = ref(1);
const pageSize = ref(10); const pageSize = ref(10);
@ -212,10 +229,11 @@ const getList = () => {
condition: search.value.condition, condition: search.value.condition,
userId: userId.value, userId: userId.value,
typeId:search.value.typeId, typeId:search.value.typeId,
state:search.value.state state:search.value.state,
startTime: search.value.startTime,
endTime: search.value.endTime,
}; };
receiveWork(params).then((res: any) => { receiveWork(params).then((res: any) => {
console.log(res.data.list);
tableData.value = res.data.list; tableData.value = res.data.list;
total.value = res.data.total; total.value = res.data.total;
tableDataloading.value = false; tableDataloading.value = false;
@ -262,6 +280,15 @@ const determineEme = (value)=>{
} }
getList(); getList();
} }
const fileExport = () => {
const params = {
startTime: search.value.startTime,
endTime: search.value.endTime,
}
exportFileRequest(`/admin/export/exportDynamic`, '工作动态.zip', params).then(res => {
})
};
onMounted(() => { onMounted(() => {
getWkTypes(); getWkTypes();

View File

@ -27,6 +27,35 @@
v-model="addMessageForm.title" v-model="addMessageForm.title"
></el-input> ></el-input>
</el-form-item> </el-form-item>
<el-form-item label="所属地区:" prop="areaCode">
<el-cascader
v-model="addMessageForm.areaCode"
placeholder="请选择所属地区"
@change="handleAreaChange"
:options="orgList"
:props="{
checkStrictly: true,
label: 'orgname',
value: 'orgcode',
}"
clearable
></el-cascader>
</el-form-item>
<el-form-item label="是否公开内容:" prop="isUnlimited">
<el-select
v-model="addMessageForm.isUnlimited"
clearable
placeholder="请选择是否公开内容"
>
<el-option
v-for="item in typelist"
:key="item.value"
:label="item.lable"
:value="item.value"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item label="内容:" prop="content" style="width: 100%;"> <el-form-item label="内容:" prop="content" style="width: 100%;">
<div class="qedit"> <div class="qedit">
<QuillEditor <QuillEditor
@ -62,6 +91,7 @@ import useUserStore from "@/store/modules/user";
import { getYears, getUUID, FileType } from "@/utils/common"; import { getYears, getUUID, FileType } from "@/utils/common";
import { ElMessage, FormInstance, FormRules } from "element-plus"; import { ElMessage, FormInstance, FormRules } from "element-plus";
import { uploadFile, getFile, delFile } from "@/api/file"; import { uploadFile, getFile, delFile } from "@/api/file";
import { areaTree } from "@/api/account";
import { publicContentSave, publicContentDetail } from "@/api/Sys"; import { publicContentSave, publicContentDetail } from "@/api/Sys";
const formRef = ref<FormInstance>(); const formRef = ref<FormInstance>();
@ -71,6 +101,11 @@ const userId = ref(user.value.userId);
const uuid = ref(""); const uuid = ref("");
const ruleForm = reactive<FormRules>({ const ruleForm = reactive<FormRules>({
title: [{ required: true, message: "请输入标题", trigger: "blur" }], title: [{ required: true, message: "请输入标题", trigger: "blur" }],
content: [{ required: true, message: "请输入公开内容", trigger: "blur" }],
areaCode: [
{ required: true, message: "请选择所属地区", trigger: "change" },
],
coverImg:[{ required: true, message: "请上传封面", trigger: "blur" }]
}); });
const props = defineProps({ const props = defineProps({
@ -85,6 +120,10 @@ const props = defineProps({
}, },
id: String, id: String,
}); });
const typelist = ref([
{lable:'是',value:1},
{lable:'否',value:2},
])
const addMessageForm = ref<any>({ content: "",title:"" }); const addMessageForm = ref<any>({ content: "",title:"" });
const emits = defineEmits(["close", "onSubmit"]); const emits = defineEmits(["close", "onSubmit"]);
// //
@ -92,6 +131,7 @@ const msgContent = ref('')
const getMsg = (val) => { const getMsg = (val) => {
// addMessageForm.content = val; // addMessageForm.content = val;
msgContent.value = val; msgContent.value = val;
addMessageForm.value.content = msgContent.value;
}; };
//退 //退
@ -102,7 +142,16 @@ const handleSubmit = () => {
...addMessageForm.value, ...addMessageForm.value,
coverPath:fileList.value[0].filepath, coverPath:fileList.value[0].filepath,
publicContentId:addMessageForm.value.publicContentId||uuid.value, publicContentId:addMessageForm.value.publicContentId||uuid.value,
content : msgContent.value content : msgContent.value,
areaCode: "",
}
if (addMessageForm.value.areaCode instanceof Array) {
params.areaCode =
addMessageForm.value.areaCode[
addMessageForm.value.areaCode.length - 1
];
} else {
params.areaCode = addMessageForm.value.areaCode;
} }
publicContentSave(params).then((res: any) => { publicContentSave(params).then((res: any) => {
if (res.code == 1) { if (res.code == 1) {
@ -126,12 +175,14 @@ const baseUrl = ref(import.meta.env.VITE_UPLOAD_URL);
*/ */
const updateFile = (files: any) => { const updateFile = (files: any) => {
fileList.value = files; fileList.value = files;
addMessageForm.value.coverImg = files[0].filepath;
}; };
// //
const getFiles = (FileType) => { const getFiles = (FileType) => {
getFile(addMessageForm.value.publicContentId || uuid.value, FileType).then( getFile(addMessageForm.value.publicContentId || uuid.value, FileType).then(
(res: any) => { (res: any) => {
fileList.value = res.data; fileList.value = res.data;
addMessageForm.value.coverImg = res.data[0].filepath;
} }
); );
}; };
@ -148,6 +199,13 @@ const getNoticeDetail = (id) =>{
} }
); );
} }
//
const orgList = ref([]);
const getareaTree = () => {
areaTree(userId.value).then((res: any) => {
orgList.value = res.data;
});
};
// //
const onclone = () => { const onclone = () => {
emits("close"); emits("close");
@ -166,7 +224,9 @@ watch(
} }
); );
onMounted(() => {}); onMounted(() => {
getareaTree()
});
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>

View File

@ -41,6 +41,36 @@
placeholder="请输入" placeholder="请输入"
v-model="detailForm.title" v-model="detailForm.title"
></el-input> ></el-input>
</el-form-item>
<el-form-item label="所属地区:" prop="areaCode">
<el-cascader
v-model="detailForm.areaCode"
placeholder="请选择所属地区"
:options="orgList"
:props="{
checkStrictly: true,
label: 'orgname',
value: 'orgcode',
}"
clearable
:disabled="formEnable"
></el-cascader>
</el-form-item>
<el-form-item label="是否公开内容:" prop="isUnlimited">
<el-select
v-model="detailForm.isUnlimited"
clearable
:disabled="formEnable"
placeholder="请选择是否公开内容"
>
<el-option
v-for="item in typelist"
:key="item.value"
:label="item.lable"
:value="item.value"
>
</el-option>
</el-select>
</el-form-item> </el-form-item>
<el-form-item label="内容:" prop="content" style="width: 100%;"> <el-form-item label="内容:" prop="content" style="width: 100%;">
<div class="qedit"> <div class="qedit">
@ -129,6 +159,7 @@
import { onMounted, reactive, ref } from "vue"; import { onMounted, reactive, ref } from "vue";
import { ElMessage, FormInstance, FormRules, ElMessageBox } from "element-plus"; import { ElMessage, FormInstance, FormRules, ElMessageBox } from "element-plus";
import { uploadFile, getFile, delFile } from "@/api/file"; import { uploadFile, getFile, delFile } from "@/api/file";
import { areaTree } from "@/api/account";
import { publicContentSave, publicContentDetail, publicCheckList } from "@/api/Sys"; import { publicContentSave, publicContentDetail, publicCheckList } from "@/api/Sys";
import { FileType } from "@/utils/common"; import { FileType } from "@/utils/common";
import { useRoute } from "vue-router"; import { useRoute } from "vue-router";
@ -147,6 +178,10 @@ const formRef = ref<FormInstance>();
const ruleForm = reactive<FormRules>({ const ruleForm = reactive<FormRules>({
title: [{ required: true, message: "请输入标题", trigger: "blur" }], title: [{ required: true, message: "请输入标题", trigger: "blur" }],
}); });
const typelist = ref([
{lable:'是',value:1},
{lable:'否',value:2},
])
//id //id
const domicileId = ref(''); const domicileId = ref('');
// //
@ -248,11 +283,18 @@ const getMsg = (val) => {
const refurbish = (id) => { const refurbish = (id) => {
getPublicContentDetail(id); getPublicContentDetail(id);
}; };
//
const orgList = ref([]);
const getareaTree = () => {
areaTree(userId.value).then((res: any) => {
orgList.value = res.data;
});
};
onMounted(() => { onMounted(() => {
domicileId.value = route.query.id || ""; domicileId.value = route.query.id || "";
refurbish(domicileId.value); refurbish(domicileId.value);
getList(); getList();
getareaTree();
}); });
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>

View File

@ -107,7 +107,7 @@
<script setup lang="ts" > <script setup lang="ts" >
import { reactive, ref, onMounted, watch, getCurrentInstance } from "vue"; import { reactive, ref, onMounted, watch, getCurrentInstance } from "vue";
import useUserStore from "@/store/modules/user"; import useUserStore from "@/store/modules/user";
import { ElMessage, FormInstance, FormRules } from "element-plus"; import { ElMessage, FormInstance, FormRules, valueEquals } from "element-plus";
import type { UploadUserFile } from "element-plus"; import type { UploadUserFile } from "element-plus";
import { getYears, getUUID, FileType } from "@/utils/common"; import { getYears, getUUID, FileType } from "@/utils/common";
import { uploadFile, getFile, delFile } from "@/api/file"; import { uploadFile, getFile, delFile } from "@/api/file";
@ -181,6 +181,7 @@ const handleSubmit = () => {
userId: form.value.userId || userId.value, userId: form.value.userId || userId.value,
startTime: form.value.time[0], startTime: form.value.time[0],
endTime: form.value.time[1], endTime: form.value.time[1],
filePath:afterList.value.length > 0 ? afterList.value[0].filepath:'',
}; };
wkDynamicsAdd(params).then((res: any) => { wkDynamicsAdd(params).then((res: any) => {
if (res.code == 1) { if (res.code == 1) {