From 7deb6f3a8151b7338ac402e05e462938f8e26ca0 Mon Sep 17 00:00:00 2001
From: ludc
Date: 星期日, 28 一月 2024 15:18:46 +0800
Subject: [PATCH] 近义词管理,界面和接口完善
---
Source/UBCS-WEB/src/views/work/process/leave/handle.vue | 375 +++++++++++++++++++++++++++++++---------------------
1 files changed, 222 insertions(+), 153 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..ba5684a 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,238 @@
<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">
- <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>
- </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>
+ <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">
+ <businesswork ref="businesswork" :ids="ids" :templateId="templateId" :taskId="taskId" :modelKey="modelKey" :codeClassifyOid="codeClassifyOid" :stageAttrs="stageAttrs"></businesswork>
+ </el-tab-pane>
+ <el-tab-pane label="娴佺▼璺熻釜" name="second">
+ <avue-crud :data="flowList" :option="option" ref="crud">
+ </avue-crud>
+ <el-row class="row-bg" style="margin-top: 20px">
+ <flow-design :is-display="true" :process-instance-id="processInstanceId"></flow-design>
+ </el-row>
+ </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 }}</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 {
+ ids:[],
+ templateId:'',
+ taskId: '',
+ modelKey:'',
+ codeClassifyOid:'',
+ businessId: '',
+ processInstanceId: '',
+ stageAttrs:[],
+ 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) {
+ return value?'鍚屾剰':'椹冲洖'
+ },
+ async apiGetBtnTask(id) {
+ const response = await getBtnTask({ processInstanceId: id })
+ const res = response.data
+ this.ids=res.data.variables.ids;
+ this.templateId=res.data.variables.templateId;
+ this.modelKey=res.data.variables.modelKey;
+ this.codeClassifyOid=res.data.variables.codeClassifyOid;
+ this.title=res.data.variables.processName;
+ this.stageAttrs=res.data.stageAttrs;
+ //this.taskId=res.data.variables.taskId;
+ if (res.success) {
+ 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) {
+ if(this.$refs.businesswork.hasEditor){
+ this.$refs.businesswork.HandlerSave()
+ }
+ 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;
+ }
+ .el-upload-dragger {
+ width: 100%;
+ height: 120px;
+ }
+ .el-upload-dragger .el-icon-upload {
+ margin: 15px 0 16px;
+ }
+ }
+
+ .el-tab-pane{
+ height: 75vh;
+ overflow: auto;
+ }
+ .el-button{
+ margin:0 10px 10px 0;
+ }
+</style>
--
Gitblit v1.9.3