From cfededd9721be4322e660fc879f11a806fcc7963 Mon Sep 17 00:00:00 2001 From: weidy <lastanimals@163.com> Date: 星期二, 20 六月 2023 17:07:42 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- Source/UBCS-WEB/src/components/template/SetPersonnel.vue | 261 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 261 insertions(+), 0 deletions(-) diff --git a/Source/UBCS-WEB/src/components/template/SetPersonnel.vue b/Source/UBCS-WEB/src/components/template/SetPersonnel.vue new file mode 100644 index 0000000..a03ab9d --- /dev/null +++ b/Source/UBCS-WEB/src/components/template/SetPersonnel.vue @@ -0,0 +1,261 @@ +<template> + <el-dialog :title="title" :visible.sync="dialogVisible" append-to-body="true" width="30%"> + <el-tag v-for="tag in tags" :key="tag" closable disable-transitions effect="Plain" size="medium" + @click="handleClickTag(tag)" @close="handleCloseTag(tag)"> + <span> {{ tag.name }}</span> + </el-tag> + <el-divider v-if="tags.length !== 0"></el-divider> + <el-form :model="saveParam" class="demo-form-inline" label-position="left" label-width="auto" :rules="rules"> + <el-form-item label="娴佺▼妯℃澘"> + <el-input placeholder="娴佺▼妯℃澘" v-model="saveParam.modelName" disabled></el-input> + </el-form-item> + <el-form-item label="娴佺▼鍚嶇О" prop="processName"> + <el-input placeholder="娴佺▼鍚嶇О" v-model="saveParam.processName"> + </el-input> + </el-form-item> + <el-form-item label="娴佺▼鎻忚堪"> + <el-input placeholder="娴佺▼鎻忚堪" type="textarea" :rows="4" v-model="saveParam.processDesc"> + </el-input> + </el-form-item> + </el-form> + <el-divider></el-divider> + <div class="btns-icon"> + <el-button icon="el-icon-star-off" circle @click="handleCollect"></el-button> + </div> + <el-form :model="collectParam" class="demo-form-inline" label-position="left" label-width="auto"> + <el-form-item :label="item.taskName" v-for="(item, index) in initFrom" :key="index"> + <el-select style="width: 80%;" filterable v-model="collectParam.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> + <div slot="footer" class="dialog-footer"> + <el-button @click="handleCancel">鍙� 娑�</el-button> + <el-button type="primary" @click="handleConfirm">纭� 瀹�</el-button> + </div> + </el-dialog> +</template> +<script> +import { personnelInit, personnelCollect, cancelCollect, personnelSave, personnelDict } from '@/api/template/setPersonnel.js' +export default { + name: 'SetPersonnel', + props: { + // 鏄惁鎵撳紑 + visible: { + typeof: Boolean, + default: false + }, + // 鏍囬 + title: { + typeof: String, + default: '娴佺▼瀹℃壒' + }, + // 鍙傛暟锛氶�夋嫨鐨刬d锛屽涓互鏁扮粍鏂瑰紡浼犻�掞細['id','id']锛屾ā鏉縤d锛屾ā鏉跨敤閫旓紝娴佺▼鍚嶅瓧锛屾祦绋嬫ā鏉� + parameter: { + typeof: Object, + default: () => { } + }, + parameterKeys: { + typeof: Object, + default: () => { + return { + ids: 'ids', + flowTemplate: 'flowTemplate', + code: 'code', + type: 'type' + } + } + } + + }, + watch: { + visible(n) { + this.dialogVisible = n; + if(n){ + this.apiInit() + this.apiDict() + } + }, + dialogVisible(n) { + this.$emit('update:visible', n) + }, + }, + data() { + return { + dialogVisible: this.visible, + isCollent: false, + initFrom: [], + tags: [], + typeName: [], + collectParam: {}, + saveParam: this.saveParam(), + users: [], + rules: { + processName: [ + { required: true, message: '妯℃澘鍚嶇О涓嶈兘涓虹┖', trigger: 'blur' }, + { min: 1, max: 20, message: '闀垮害鍦� 3 鍒� 20 涓瓧绗�', trigger: 'blur' } + ] + } + } + }, + + mounted() { + // this.apiInit() + // this.apiDict() + }, + methods: { + saveParam() { + return { + processName: this.parameter[this.parameterKeys.flowTemplate], + topName: this.title, + ids: this.parameter[this.parameterKeys.ids], + } + }, + userIndex(arr1) { + return this.initFrom.findIndex(i => i.taskId === arr1) + }, + async apiInit() { + const response = await personnelInit({ type: this.parameter[this.parameterKeys.type], templateId: this.parameter[this.parameterKeys.code] }) + if (response.status === 200) { + console.log(response) + this.initFrom = response.data.data.user + this.tags = response.data.data.collect + const { modelKey, templateId, modelName } = response.data.data.flow + let flowTaskUsers = response.data.data.user + this.collectParam = { modelKey, templateId, flowTaskUsers: flowTaskUsers } + console.log(this.collectParam) + this.saveParam = { ...this.saveParam, modelKey, templateId, modelName } + this.handleClickTag(this.tags[0]) + } + }, + async apiDict() { + const response = await personnelDict() + console.log(response) + 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 } + }) + } + }, + + handleCollect() { + this.$prompt('璇疯緭鍏ヤ竴涓悕瀛�', '鎿嶄綔', { + confirmButtonText: '纭畾', + cancelButtonText: '鍙栨秷', + }).then(async ({ value }) => { + console.log(this.users) + this.collectParam.flowTaskUsers = this.users + this.collectParam = { ...this.collectParam, name: value } + console.log(this.collectParam) + const response = await personnelCollect(this.collectParam) + Console.log(response) + 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.isCollent = true + this.$message({ + type: 'success', + message: response.data.msg + }); + } + }, + async apiSave() { + try { + const response = await personnelSave(this.saveParam) + 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//collet.flowTaskUsers + let tasks = this.collectParam.flowTaskUsers;//user + for(let i=0;i<tasks.length;i++){ + let thisFlowTaskUsers = tasks[i]; + console.log('thisFlowTaskUsers',thisFlowTaskUsers) + for(let j=0;j<flowTaskUsers.length;j++){ + let thisFflowTaskUsers = flowTaskUsers[j]; + if(thisFlowTaskUsers.taskId==thisFflowTaskUsers.taskId){ + thisFlowTaskUsers['userName']=thisFflowTaskUsers.userName; + thisFlowTaskUsers['userId']=thisFflowTaskUsers.userId; + } + } + } + console.log(this.collectParam) + }, + handleCloseTag(event) { + console.log(event) + this.canCollect(event.name) + }, + handleSelect(event, index) { + const res = this.typeName.find(item => item.userId === event) + const { userName } = res + let users = { ... this.collectParam.flowTaskUsers[index], userName } + console.log(users) + this.users[index] = users + }, + done() { + this.dialogVisible = false + }, + handleCancel() { + this.done() + }, + handleConfirm() { + console.log(this.saveParam) + this.apiSave() + } + } +} +</script> +<style lang="scss"> +.el-tag+.el-tag { + margin-left: 10px; + margin-top: 10px; +} + +.button-new-tag { + margin-left: 10px; + height: 32px; + line-height: 30px; + padding-top: 0; + padding-bottom: 0; +} + +.input-new-tag { + width: 90px; + margin-left: 10px; + vertical-align: bottom; +} + +.btns-icon { + display: flex; + justify-content: end; + padding-bottom: 10px; +} +</style> -- Gitblit v1.9.3