From aaabc31048e95ad3f6384a37cc07d47168086893 Mon Sep 17 00:00:00 2001
From: wangting <675591594@qq.com>
Date: 星期日, 25 六月 2023 16:23:33 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'
---
Source/UBCS-WEB/src/api/template/flowpath.js | 16 ++
Source/UBCS-WEB/src/views/work/process/leave/handle.vue | 352 ++++++++++++++++++++++++++++---------------------
Source/UBCS-WEB/vue.config.js | 4
3 files changed, 219 insertions(+), 153 deletions(-)
diff --git a/Source/UBCS-WEB/src/api/template/flowpath.js b/Source/UBCS-WEB/src/api/template/flowpath.js
index d1fef57..5efd565 100644
--- a/Source/UBCS-WEB/src/api/template/flowpath.js
+++ b/Source/UBCS-WEB/src/api/template/flowpath.js
@@ -64,3 +64,19 @@
data: params
})
}
+// 灞炴�у垪琛ㄥ乏渚�
+export const getBtnTask = (params) => {
+ return request({
+ url: '/api/ubcs-flow/vciflow/next',
+ method: 'post',
+ data: params
+ })
+}
+// 妯℃澘闃舵鍒楄〃
+export const ExamineTask = (params) => {
+ return request({
+ url: '/api/ubcs-flow/work/complete-task',
+ method: 'post',
+ data: params
+ })
+}
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..86617b7 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,219 @@
<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: 'sex', minWidth: 80 },
+ { label: '浠诲姟寮�濮嬫椂闂�', prop: 'createTime', minWidth: 140 },
+ { label: '瀹℃壒鎰忚', prop: 'sex', 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();
+ 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/start` });
+ } 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: 70vh;
+
+ &_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>
diff --git a/Source/UBCS-WEB/vue.config.js b/Source/UBCS-WEB/vue.config.js
index 90f5f41..39735fc 100644
--- a/Source/UBCS-WEB/vue.config.js
+++ b/Source/UBCS-WEB/vue.config.js
@@ -26,7 +26,7 @@
proxy: {
'/api': {
//鏈湴鏈嶅姟鎺ュ彛鍦板潃
- target: 'http://localhost:37000',
+ // target: 'http://localhost:37000',
// target: 'http://192.168.1.51:37000',
//target: 'http://192.168.1.46:37000',
// target: 'http://dev.vci-tech.com:37000',
@@ -35,7 +35,7 @@
//target: 'http://192.168.3.7:37000',
//target: 'http://dev.vci-tech.com:37000',
//target: 'http://192.168.1.51:37000/',
- // target:'http://192.168.1.104:37000',
+ target:'http://192.168.1.104:37000',
//杩滅▼婕旂ず鏈嶅姟鍦板潃,鍙敤浜庣洿鎺ュ惎鍔ㄩ」鐩�
// target: 'https://saber.bladex.vip/api',
ws: true,
--
Gitblit v1.9.3