From 42085aad206257ddeffe71d6defc547b5e13b4b7 Mon Sep 17 00:00:00 2001 From: ludc Date: 星期一, 26 六月 2023 19:57:50 +0800 Subject: [PATCH] 代码整合 --- Source/UBCS-WEB/src/views/work/process/leave/handle.vue | 356 ++++++++++++++++++++++++++++++++++------------------------- 1 files changed, 205 insertions(+), 151 deletions(-) diff --git a/Source/UBCS-WEB/src/views/work/process/leave/handle.vue b/Source/UBCS-WEB/src/views/work/process/leave/handle.vue index 961bf88..665405d 100644 --- a/Source/UBCS-WEB/src/views/work/process/leave/handle.vue +++ b/Source/UBCS-WEB/src/views/work/process/leave/handle.vue @@ -1,169 +1,223 @@ <template> <basic-container> - <el-form ref="form" :model="form" :rules="rules" label-width="80px"> - <el-row type="flex" class="row-bg" justify="end"> - <el-form-item> - <el-button type="primary" @click="handleAgree">鍚屾剰</el-button> - <el-button type="danger" @click="handleDisagree">椹冲洖</el-button> - <el-button @click="handleCancel">鍏抽棴</el-button> - </el-form-item> - </el-row> - <el-card shadow="hover"> - <div slot="header"> - <span>瀹℃壒淇℃伅</span> - </div> - <el-form-item label="鐢宠浜�"> - <el-input :disabled="true" v-model="form.flow.assigneeName"/> - </el-form-item> - <el-row> - <el-col :span="12"> - <el-form-item label="寮�濮嬫椂闂�"> - <el-input :disabled="true" v-model="form.startTime"/> - </el-form-item> - </el-col> - <el-col :span="12"> - <el-form-item label="缁撴潫鏃堕棿"> - <el-input :disabled="true" v-model="form.endTime"/> - </el-form-item> - </el-col> - </el-row> - <el-form-item label="璇峰亣鐞嗙敱"> - <el-input :disabled="true" type="textarea" v-model="form.reason"/> - </el-form-item> - <el-form-item label="鎵瑰鎰忚"> - <el-input type="textarea" v-model="form.comment"/> - </el-form-item> - </el-card> - <el-card shadow="hover"> - <div slot="header"> - <span>娴佺▼淇℃伅</span> - </div> - <el-row type="flex" class="row-bg"> - <el-timeline> - <el-timeline-item :key="flow.id" :timestamp="flow.createTime" v-for="flow in flowList" placement="top"> + <div class="dialogwarp"> + <div class="dialogwarp_tab"> + <el-card class="dialogwarp_tab_card"> + <el-tabs v-model="activeName" @tab-click="handleClick"> + <el-tab-pane label="涓氬姟鏁版嵁淇℃伅" name="first"> + + </el-tab-pane> + <el-tab-pane label="娴佺▼璺熻釜" name="second"> + <avue-crud :data="flowList" :option="option" ref="crud"> + </avue-crud> <el-card shadow="hover"> - <p>{{flow.assigneeName}} 鍦� [{{flow.createTime}}] 寮�濮嬪鐞� [{{flow.historyActivityName}}] 鐜妭</p> - <p v-if="flow.historyActivityDurationTime!==''">浠诲姟鍘嗘椂 [{{flow.historyActivityDurationTime}}]</p> - <p v-if="flow.comment!==''">鎵瑰鎰忚: [{{flow.comment}}]</p> - <p v-if="flow.endTime!==''">缁撴潫鏃堕棿: [{{flow.endTime}}]</p> + <div slot="header"> + <span>娴佺▼璺熻釜</span> + </div> + <el-row class="row-bg"> + <flow-design :is-display="true" :process-instance-id="processInstanceId"></flow-design> + </el-row> </el-card> - </el-timeline-item> - </el-timeline> - </el-row> - </el-card> - <el-card shadow="hover"> - <div slot="header"> - <span>娴佺▼璺熻釜</span> - </div> - <el-row class="row-bg"> - <flow-design :is-display="true" :process-instance-id="processInstanceId"></flow-design> - </el-row> - </el-card> - </el-form> + </el-tab-pane> + </el-tabs> + </el-card> + </div> + <div class="dialogwarp_card"> + <el-card class="box-card"> + <div slot="header" class="clearfix"> + <span>褰撳墠浠诲姟锛�</span> + <span>{{ title }}</span> + </div> + <div style="width: 100%;"> + <p>璇峰湪涓嬫柟杈撳叆鎮ㄧ殑瀹℃壒鎰忚锛�</p> + <el-input type="textarea" :rows="4" placeholder="璇疯緭鍏ュ唴瀹�" show-word-limit v-model="opinionVal"> + </el-input> + </div> + <div style="width: 100%;"> + <p>瀹℃壒鎰忚闄勪欢锛�</p> + <el-upload drag action="https://jsonplaceholder.typicode.com/posts/" multiple style="width: 100%;"> + <i class="el-icon-upload"></i> + <div class="el-upload__text">灏嗘枃浠舵嫋鍒版澶勶紝鎴�<em>鐐瑰嚮涓婁紶</em></div> + </el-upload> + </div> + <div style="width: 100%;"> + <p>宸蹭笂浼犲鎵规枃浠讹細</p> + <el-card class="box-card"> + <el-table :data="tableData" stripe style="width: 100%"> + <el-table-column prop="date" label="鏂囦欢鍚�"> + </el-table-column> + <el-table-column prop="name" label="涓婁紶浜� "> + </el-table-column> + <el-table-column prop="address" label="鎿嶄綔"> + </el-table-column> + </el-table> + </el-card> + </div> + <div style="margin-top: 20px;"> + <!-- <el-button type="primary" size="mini" @click="handelRefuse">涓嶅悓鎰�</el-button> + <el-button v-if="!isRefuse" type="primary" size="mini" @click="handelAgree">鍚屾剰</el-button> + <el-button v-if="!isAgree" type="primary" size="mini" @click="handelRefuse">涓嶅悓鎰�</el-button> --> + <el-button type="primary" size="mini" @click="handelExecute(item)" v-for="(item, index) in btnList" + :key="index">{{ item.toName === '鍚屾剰' ? item.toName : `${item.toName}鍒�${item.taskName}` }}</el-button> + <!-- <el-button v-if="isRefuse" type="primary" size="mini" @click="handelExecute">鎵ц</el-button> --> + </div> + </el-card> + </div> + </div> </basic-container> </template> <script> - import {historyFlowList, leaveDetail} from "@/api/work/process"; - import {completeTask} from "@/api/work/work"; +import { historyFlowList } from "@/api/work/process"; +import { getBtnTask, ExamineTask } from '@/api/template/flowpath.js' +import { validatenull } from '@/util/validate' - export default { - data() { - return { - taskId: '', - businessId: '', - processInstanceId: '', - src: '', - flowList: [], - form: { - flow: { - assigneeName: '', - }, - startTime: '', - endTime: '', - reason: '', - comment: '', - }, - } - }, - created() { +export default { + data() { + return { + taskId: '', + businessId: '', + processInstanceId: '', + src: '', + flowList: [], + btnList: [], + opinionVal: '', + activeName: 'first', + option: { + menu: false, + addBtn: false, + refreshBtn: false, + columnBtn: false, + index: true, + header: false, + stripe: true, + indexLabelClassName: '搴忓彿', + column: [ + { label: '浠诲姟鍚嶇О', prop: 'historyActivityName', minWidth: 120 }, + { label: '鎵ц鎿嶄綔', prop: 'pass', minWidth: 80 ,formatter:this.formatterPass}, + { label: '浠诲姟寮�濮嬫椂闂�', prop: 'createTime', minWidth: 140 }, + { label: '瀹℃壒鎰忚', prop: 'comment', minWidth: 220, overHidden: true }, + { label: '鎵ц浜�', prop: 'assigneeName', minWidth: 80 }, + { label: '浠诲姟瀹屾垚鏃堕棿', prop: 'endTime', minWidth: 140 }, + { label: '宸蹭笂浼犲鎵规枃浠�', prop: 'sex', minWidth: 220, overHidden: true }, + ] + }, + } + }, + created() { + this.init(); + + }, + beforeRouteUpdate(to, from, next) { + // 鍦ㄥ綋鍓嶈矾鐢辨敼鍙橈紝浣嗘槸璇ョ粍浠惰澶嶇敤鏃惰皟鐢� + // 涓句緥鏉ヨ锛屽浜庝竴涓甫鏈夊姩鎬佸弬鏁扮殑璺緞 /foo/:id锛屽湪 /foo/1 鍜� /foo/2 涔嬮棿璺宠浆鐨勬椂鍊� + // 鐢变簬浼氭覆鏌撳悓鏍风殑 Foo 缁勪欢锛屽洜姝ょ粍浠跺疄渚嬩細琚鐢ㄣ�傝�岃繖涓挬瀛愬氨浼氬湪杩欎釜鎯呭喌涓嬭璋冪敤 + // 鍙互璁块棶缁勪欢瀹炰緥 `this` + if (to.fullPath !== from.fullPath) { + next(); this.init(); + } + }, + methods: { + init() { + this.taskId = this.$route.params.taskId; + this.processInstanceId = this.$route.params.processInstanceId; + this.businessId = this.$route.params.businessId; + historyFlowList(this.processInstanceId).then(res => { + const data = res.data; + if (data.success) { + this.flowList = data.data; + } + }) + this.apiGetBtnTask(this.processInstanceId) }, - beforeRouteUpdate(to, from, next) { - // 鍦ㄥ綋鍓嶈矾鐢辨敼鍙橈紝浣嗘槸璇ョ粍浠惰澶嶇敤鏃惰皟鐢� - // 涓句緥鏉ヨ锛屽浜庝竴涓甫鏈夊姩鎬佸弬鏁扮殑璺緞 /foo/:id锛屽湪 /foo/1 鍜� /foo/2 涔嬮棿璺宠浆鐨勬椂鍊� - // 鐢变簬浼氭覆鏌撳悓鏍风殑 Foo 缁勪欢锛屽洜姝ょ粍浠跺疄渚嬩細琚鐢ㄣ�傝�岃繖涓挬瀛愬氨浼氬湪杩欎釜鎯呭喌涓嬭璋冪敤 - // 鍙互璁块棶缁勪欢瀹炰緥 `this` - if (to.fullPath !== from.fullPath) { - next(); - this.init(); + formatterPass(row, value, column) { + console.log('value',value) + return value?'鍚屾剰':'椹冲洖' + }, + async apiGetBtnTask(id) { + const response = await getBtnTask({ processInstanceId: id }) + const res = response.data + if (res.success) { + console.log(res) + this.btnList = res.data.toTasks } }, - methods: { - init() { - this.taskId = this.$route.params.taskId; - this.processInstanceId = this.$route.params.processInstanceId; - this.businessId = this.$route.params.businessId; - historyFlowList(this.processInstanceId).then(res => { - const data = res.data; - if (data.success) { - this.flowList = data.data; - } - }) - leaveDetail(this.businessId).then(res => { - const data = res.data; - if (data.success) { - this.form = data.data; - } - }) - }, - handleAgree() { - if (!this.form.comment) { - this.$message.warning('璇峰厛濉啓鎵瑰鎰忚'); - return; - } - const params = { - taskId: this.taskId, - processInstanceId: this.processInstanceId, - flag: 'ok', - comment: this.form.comment, - }; - completeTask(params).then(res => { - const data = res.data; - if (data.success) { - this.$message.success(data.msg); - this.$router.$avueRouter.closeTag(); - this.$router.push({path: `/work/start`}); - } else { - this.$message.error(data.msg || '鎻愪氦澶辫触'); - } - }) - }, - handleDisagree() { - if (!this.form.comment) { - this.$message.warning('璇峰厛濉啓鎵瑰鎰忚'); - return; - } - const params = { - taskId: this.taskId, - processInstanceId: this.processInstanceId, - comment: this.form.comment, - }; - completeTask(params).then(res => { - const data = res.data; - if (data.success) { - this.$message.success(data.msg); - this.$router.$avueRouter.closeTag(); - this.$router.push({path: `/work/start`}); - } else { - this.$message.error(data.msg || '鎻愪氦澶辫触'); - } - }) - }, - handleCancel() { + async apiExamineTask(param) { + const response = await ExamineTask(param) + const res = response.data + if (res.success) { + this.$message.success(res.msg); this.$router.$avueRouter.closeTag(); - this.$router.push({path: `/work/start`}); + this.$router.push({ path: `/work/todo` }); + } else { + this.$message.error(res.msg || '鎻愪氦澶辫触'); } + }, + handelExecute(event) { + console.log(event) + const { toName, conditionKey, conditionValue } = event + let param = { + comment: this.opinionVal || '鍚屾剰', + flag: 'ok', + processInstanceId: this.processInstanceId, + taskId: this.taskId, + } + if (!validatenull(conditionKey) && !validatenull(conditionValue)) { + param = { + ...param, variables: { + [conditionKey]: conditionValue + } + } + } + if (toName === '椹冲洖') { + if (!this.opinionVal) { + this.$alert(`褰撳鐞嗘柟寮忎负${toName}鏃讹紝闇�瑕佸~鍐欏鎵规剰瑙乣, '鎻愮ず淇℃伅', { + confirmButtonText: '纭畾', + }).then(() => { + + }); + } else this.apiExamineTask(param) + } else this.apiExamineTask(param) } } +} </script> +<style lang="scss" scoped> +.dialogwarp { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + justify-content: space-between; + height: 85vh; + + &_tab { + width: 79%; + + + &_card { + width: 100%; + height: 100%; + } + } + + &_card { + // margin-left: 20px; + width: 20%; + } +} + +::v-deep(.el-upload) { + width: 100%; + height: 120px; +} + +::v-deep(.el-upload-dragger) { + width: 100%; + height: 120px; +} + +::v-deep(.el-upload-dragger .el-icon-upload) { + margin: 15px 0 16px; +} +</style> -- Gitblit v1.9.3