From 8e6c58eec222c4bbea613e02703d9af22da72bee Mon Sep 17 00:00:00 2001 From: xiejun <xj@2023> Date: 星期四, 15 六月 2023 18:17:49 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- Source/UBCS-WEB/src/components/template/SetPersonnel.vue | 138 +++++++++++++++++++++++++++++++++++++--------- 1 files changed, 111 insertions(+), 27 deletions(-) diff --git a/Source/UBCS-WEB/src/components/template/SetPersonnel.vue b/Source/UBCS-WEB/src/components/template/SetPersonnel.vue index beb1801..279b8d1 100644 --- a/Source/UBCS-WEB/src/components/template/SetPersonnel.vue +++ b/Source/UBCS-WEB/src/components/template/SetPersonnel.vue @@ -1,15 +1,23 @@ <template> - <el-dialog :title="title" :visible.sync="dialogVisible" append-to-body="true" width="30%"> - <el-tag v-for="tag in tags" :key="tag" closable effect="dark" @click="handleClickTag(tag)" - @close="handleCloseTag(tag)"> - <span> {{ tag }}</span> - </el-tag> - <el-divider></el-divider> - <el-form :model="formInline" class="demo-form-inline" label-position="left"> - <el-form-item :label="item.taskName" v-for="(item,index) in initFrom" :key="index"> - <el-select v-model="formInline[index].userId" :placeholder="item.taskName"> - <el-option label="鍖哄煙涓�" value="shanghai"></el-option> - <el-option label="鍖哄煙浜�" value="beijing"></el-option> + <el-dialog :title="title" :visible.sync="dialogVisible" append-to-body="true"> + <div> + <el-tag v-for="tag in tags" :key="tag" closable disable-transitions effect="dark" @click="handleClickTag(tag)" + @close="handleCloseTag(tag)"> + <span> {{ tag.name }}</span> + </el-tag> + </div> + + <el-divider v-if="tags.length !== 0"></el-divider> + <div class="btns-icon"> + <el-button type="primary" icon="el-icon-star-off" @click="handleCollect"></el-button> + <!-- <el-button type="primary" icon="el-icon-refresh" ></el-button> --> + </div> + <el-form :model="saveParam" class="demo-form-inline" label-position="left"> + <el-form-item :label="item.taskName" v-for="(item, index) in initFrom" :key="index"> + <el-select style="width: 50%;" v-model="saveParam.flowTaskUsers[index]['userId']" + :placeholder="item.taskName" @change="handleSelect($event, index)"> + <el-option :label="key.userNames" :value="key.userId" v-for="(key, keyi) in typeName" + :key="keyi"></el-option> </el-select> </el-form-item> </el-form> @@ -20,7 +28,7 @@ </el-dialog> </template> <script> -import { personnelInit, personnelCollect, cancelCollect, personnelSave } from '@/api/template/setPersonnel.js' +import { personnelInit, personnelCollect, cancelCollect, personnelSave, personnelDict } from '@/api/template/setPersonnel.js' export default { name: 'SetPersonnel', props: { @@ -29,11 +37,18 @@ typeof: Boolean, default: false }, + // 鏍囬 title: { typeof: String, default: '浜哄憳璁剧疆' }, - code:{ + // 妯℃澘id + code: { + typeof: String, + default: '' + }, + // 妯℃澘鐢ㄩ�� + type: { typeof: String, default: '' } @@ -50,47 +65,108 @@ return { dialogVisible: this.visible, initFrom: [], - tags: ['鏍囩1', '鏍囩2', '鏍囩3', '鏍囩4'], - formInline: [] + tags: [], + typeName: [], + saveParam: {}, + users: [], } }, mounted() { this.apiInit() + this.apiDict() }, methods: { async apiInit() { - const response = await personnelInit({type:'PUBLIC',templateId:'8b5e2017-990f-454a-9c39-4c4eeeb57553'}) + const response = await personnelInit({ type: this.type, templateId: this.code }) if (response.status === 200) { console.log(response) this.initFrom = response.data.data.user - this.formInline = response.data.data.user + this.tags = response.data.data.collect + const { modelKey, templateId } = response.data.data.flow + let flowTaskUsers = response.data.data.user + this.saveParam = { modelKey, templateId, flowTaskUsers: flowTaskUsers } + this.handleClickTag(this.tags[0]) } }, - async apiCollect() { - const response = await personnelCollect() + async apiDict() { + const response = await personnelDict() if (response.status === 200) { console.log(response) + const data = response.data.data + this.typeName = data.map(item => { + const { account, deptName, id, realName } = item + let userNames = `${deptName} - ${realName} - ${account}` + return { userId: id, userName: realName, userNames: userNames } + }) } }, - async canCollect(id) { - const response = await cancelCollect() + + handleCollect() { + this.$prompt('璇疯緭鍏ヤ竴涓悕瀛�', '鎿嶄綔', { + confirmButtonText: '纭畾', + cancelButtonText: '鍙栨秷', + }).then(async ({ value }) => { + console.log(this.users) + this.saveParam.flowTaskUsers = this.users + this.saveParam = { ...this.saveParam, name: value } + console.log(this.saveParam) + const response = await personnelCollect(this.saveParam) + if (response.status === 200) { + this.$nextTick(() => { + this.apiInit() + }) + console.log(response) + } + }).catch(() => { + + }); + }, + async canCollect(name) { + const response = await cancelCollect({ name: name }) if (response.status === 200) { console.log(response) + this.apiInit() + this.$message({ + type: 'success', + message: response.data.msg + }); } }, async apiSave() { - const response = await personnelSave() - if (response.status === 200) { - console.log(response) + try { + const { modelKey, templateId } = this.saveParam + const response = await personnelSave({ modelKey, templateId }) + if (response.status === 200) { + console.log(response) + this.$message({ + type: 'success', + message: response.data.msg + }); + this.done() + } + } catch { + console.error('鎺ュ彛璋冪敤澶辫触') } }, handleClickTag(event) { console.log(event) + const flowTaskUsers = event.flowTaskUsers + this.saveParam.flowTaskUsers = flowTaskUsers.map(item => { + const { taskId, taskName, userId, userName } = item + return { taskId, taskName, userId, userName } + }) }, handleCloseTag(event) { console.log(event) - this.canCollect(event) + this.canCollect(event.name) + }, + handleSelect(event, index) { + const res = this.typeName.find(item => item.userId === event) + const { userName } = res + let users = { ... this.saveParam.flowTaskUsers[index], userName } + console.log(users) + this.users[index] = users }, done() { this.dialogVisible = false @@ -99,8 +175,9 @@ this.done() }, handleConfirm() { - // this.done() - console.log(this.formInline) + console.log(this.users) + console.log(this.saveParam) + this.apiSave() } } } @@ -108,6 +185,7 @@ <style lang="scss"> .el-tag+.el-tag { margin-left: 10px; + margin-top: 10px; } .button-new-tag { @@ -123,4 +201,10 @@ margin-left: 10px; vertical-align: bottom; } + +.btns-icon { + display: flex; + justify-content: end; + padding-bottom: 10px; +} </style> \ No newline at end of file -- Gitblit v1.9.3