From 915aa9658845f54442ccf2eeb0cc60e97323e808 Mon Sep 17 00:00:00 2001 From: zhouwx <1175765986@qq.com> Date: 星期三, 26 三月 2025 10:35:39 +0800 Subject: [PATCH] bug修改 --- src/views/templateManage/components/createSign.vue | 124 ++++++++++++++++++++++++++++------------- 1 files changed, 84 insertions(+), 40 deletions(-) diff --git a/src/views/templateManage/components/createSign.vue b/src/views/templateManage/components/createSign.vue index f6a217f..0913ec9 100644 --- a/src/views/templateManage/components/createSign.vue +++ b/src/views/templateManage/components/createSign.vue @@ -3,49 +3,51 @@ <el-dialog v-model="dialogVisible" title="创建签署项目" - width="50%" + width="550px" :before-close="handleClose" :close-on-press-escape="false" :close-on-click-modal="false" > <el-form :model="state.form" size="default" ref="busRef" :rules="state.formRules" label-width="150px" > - <el-form-item label="项目名称:" prop="name" > - <el-input v-model="state.form.name" placeholder="请输入项目名称"></el-input> + <el-form-item label="项目名称:" prop="itemName" > + <el-input v-model="state.form.itemName" placeholder="请输入项目名称"></el-input> </el-form-item> + + <div style="display: flex;align-items: center;"> + <el-form-item label="最初签署人:" prop="deptId" > - <div style="display: flex;"> <el-cascader - style="width: 50%" + style="width: 170px" clearable placeholder="请选择部门" - v-model="state.form.deptId" + v-model="state.deptIds" :options="state.options" @change="selectValue" - :props="{ expandTrigger: 'hover', value: 'deptId',label: 'deptName',emitPath: false}"> + :props="{ multiple:true, expandTrigger: 'hover', value: 'deptId',label: 'deptName',emitPath: false}"> </el-cascader> - <el-select clearable - v-model="state.form.people" + v-model="state.initiaiUsers" filterable - multiple remote + multiple reserve-keyword - placeholder="请输入签署人名称(可多选)" + placeholder="请输入签署人名称" remote-show-suffix - :remote-method="(val)=>getUserList(val,state.form.deptId)" - style="width: 50%;margin-left: 10px" + @change="changeUser" + :remote-method="(val)=>getUserList(val,state.deptIds)" + style=" width:170px;margin-left:20px" + value-key="userId" > <el-option v-for="item in state.userList" :key="item.userId" :label="item.nickName" - :value="item.userId" + :value="item" /> </el-select> - </div> - </el-form-item> + </div> </el-form> <template #footer> <span class="dialog-footer"> @@ -57,10 +59,13 @@ </div> </template> <script setup> -import {reactive, ref, toRefs} from 'vue' +import {onMounted, reactive, ref, toRefs} from 'vue' import {ElMessage} from "element-plus"; import {listDept} from "@/api/system/dept"; import {listUser} from "@/api/system/user"; +import {addSignProject} from "@/api/signAgreement/signProject"; +import Cookies from "js-cookie"; +import {userListByDept} from "@/api/signAgreement/template"; const { proxy } = getCurrentInstance(); const dialogVisible = ref(false); @@ -72,25 +77,38 @@ const state = reactive({ form: { id: '', - deptId: '', - people: [] + itemName: '', + deptId: null, + initiaiUserId: null, + templateId: null, + userDept: [] }, options: [], userList: [], formRules:{ - deptId: [{ required: true, trigger: "blur", message:'请选择部门' }], - people: [{ required: true, trigger: "blur", message:'请选择签署人' }], + // deptId: [{ required: true, trigger: "blur", message:'请选择部门' }], + itemName: [{ required: true, trigger: "blur", message:'请输入项目名称' }], }, + deptIds: [], + initiaiUsers: [] }) +onMounted( () => { + const userInfo = JSON.parse(Cookies.get('userInfo')) + state.form.deptId = userInfo.deptId +}); const openDialog = async (value) => { await getDept() + state.form.templateId = value.id + dialogVisible.value = true; } const selectValue = (val) => { state.userList = [] - state.form.people = [] + state.form.initiaiUserId = null + state.initiaiUsers = [] + state.form.userDept = [] getUserList("",val) } @@ -107,15 +125,19 @@ const valid = await busRef.value.validate(); if(valid){ const {id, ...data} = JSON.parse(JSON.stringify(state.form)) - // const res = await addWarehouse(data) - // if(res.code === 200){ - // ElMessage({ - // type: 'success', - // message: '新增成功' - // }); - // }else{ - // ElMessage.warning(res.message) - // } + if(data.initiaiUserId == null) { + ElMessage.warning('请选择签署人') + return; + } + const res = await addSignProject(data) + if(res.code === 200){ + ElMessage({ + type: 'success', + message: '新增成功' + }); + }else{ + ElMessage.warning(res.message) + } emit("getList") busRef.value.clearValidate(); reset(); @@ -133,22 +155,33 @@ const reset = () => { state.form = { id: '', - name: '', - remark: '', + itemName: '', + deptId: null, + initiaiUserId: null, + templateId: null } + state.deptIds = [] } const getUserList = async (val,deptId)=>{ - if(deptId == '' || deptId == null){ - ElMessage.warning("请选择部门!") + console.log('dept',deptId) + if(deptId.length ==0 || deptId == null){ + // ElMessage.warning("请选择部门!") return; } if(val != ""){ const queryParams = { - name: val, + deptId: deptId, + nickName: val, } - const res = await listUser(queryParams) + const res = await userListByDept(queryParams) if (res.code == 200) { - state.userList = res.rows + state.userList = res.rows.map(item => { + return { + ...item, + nickName: item.nickName + '(' + item.dept.deptName + ')' + } + }) + } else { ElMessage.warning(res.message) } @@ -158,14 +191,25 @@ pageSize: 10, deptId: deptId } - const res = await listUser(queryParams) + const res = await userListByDept(queryParams) if (res.code == 200) { - state.userList = res.rows + state.userList = res.rows.map(item => { + return { + ...item, + nickName: item.nickName + ' ( ' + item.dept.deptName + ' ) ' + } + }) } else { ElMessage.warning(res.message) } } } + +const changeUser = (val) =>{ + const userIds = val.map(item => item.userId) + state.form.initiaiUserId = userIds.join(',') + state.form.userDept = val.map(i => i.userId + '_' + i.deptId) +} defineExpose({ openDialog }); -- Gitblit v1.9.2