From 8ff27c68fb20b0592ce256c15df474d6b3137416 Mon Sep 17 00:00:00 2001
From: zhangxp <zhangxp@chicecm.com>
Date: 星期三, 21 六月 2023 16:06:37 +0800
Subject: [PATCH] 操作流程
---
Source/UBCS-WEB/src/views/work/process/leave-bak/handle.vue | 169 ++++++++++++++++++++++++
Source/UBCS-WEB/src/views/work/process/leave-bak/form.vue | 112 ++++++++++++++++
Source/UBCS-WEB/src/views/work/process/leave-bak/detail.vue | 107 +++++++++++++++
3 files changed, 388 insertions(+), 0 deletions(-)
diff --git a/Source/UBCS-WEB/src/views/work/process/leave-bak/detail.vue b/Source/UBCS-WEB/src/views/work/process/leave-bak/detail.vue
new file mode 100644
index 0000000..18a8e30
--- /dev/null
+++ b/Source/UBCS-WEB/src/views/work/process/leave-bak/detail.vue
@@ -0,0 +1,107 @@
+<template>
+ <basic-container>
+ <el-form ref="form" :model="form" label-width="80px">
+ <el-row type="flex" class="row-bg" justify="end">
+ <el-form-item>
+ <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-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>
+ </basic-container>
+</template>
+
+<script>
+ import {historyFlowList, leaveDetail} from "@/api/work/process";
+
+ export default {
+ data() {
+ return {
+ businessId: '',
+ processInstanceId: '',
+ src: '',
+ flowList: [],
+ form: {
+ flow:{
+ assigneeName:'',
+ },
+ startTime: '',
+ endTime: '',
+ reason: '',
+ }
+ }
+ },
+ created() {
+ this.init();
+ },
+ methods: {
+ init() {
+ 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;
+ }
+ })
+ },
+ handleCancel() {
+ this.$router.$avueRouter.closeTag();
+ this.$router.push({path: `/work/start`});
+ }
+ }
+ }
+</script>
diff --git a/Source/UBCS-WEB/src/views/work/process/leave-bak/form.vue b/Source/UBCS-WEB/src/views/work/process/leave-bak/form.vue
new file mode 100644
index 0000000..5f15d44
--- /dev/null
+++ b/Source/UBCS-WEB/src/views/work/process/leave-bak/form.vue
@@ -0,0 +1,112 @@
+<template>
+ <div>
+ <basic-container>
+ <avue-form :option="option" v-model="form" @submit="handleSubmit"/>
+ </basic-container>
+ <basic-container>
+ <flow-design :is-display="true" :process-definition-id="processDefinitionId"></flow-design>
+ </basic-container>
+ </div>
+</template>
+
+<script>
+ import {leaveProcess} from "@/api/work/process";
+
+ export default {
+ data() {
+ return {
+ processDefinitionId: '',
+ form: {},
+ option: {
+ group: [
+ {
+ icon: 'el-icon-info',
+ label: '璇峰亣鍩虹淇℃伅',
+ prop: 'group1',
+ column: [
+ {
+ label: '瀹℃壒浜哄憳',
+ prop: 'taskUser',
+ type: 'select',
+ dicUrl: `/api/ubcs-user/user-list`,
+ props: {
+ label: "account",
+ value: "id"
+ },
+ span: 24,
+ rules: [
+ {
+ required: true,
+ message: '璇烽�夋嫨瀹℃壒浜哄憳',
+ trigger: 'blur'
+ }
+ ]
+ },
+ {
+ label: '寮�濮嬫椂闂�',
+ prop: 'startTime',
+ type: 'datetime',
+ valueFormat: 'yyyy-MM-dd HH:mm:ss',
+ rules: [
+ {
+ required: true,
+ message: '璇烽�夋嫨寮�濮嬫椂闂�',
+ trigger: 'blur'
+ }
+ ]
+ },
+ {
+ label: '缁撴潫鏃堕棿',
+ prop: 'endTime',
+ type: 'datetime',
+ valueFormat: 'yyyy-MM-dd HH:mm:ss',
+ rules: [
+ {
+ required: true,
+ message: '璇烽�夋嫨缁撴潫鏃堕棿',
+ trigger: 'blur'
+ }
+ ]
+ },
+ {
+ label: '璇峰亣鐞嗙敱',
+ prop: 'reason',
+ type: 'textarea',
+ span: 24,
+ rules: [
+ {
+ required: true,
+ message: '璇疯緭鍏ヨ鍋囩悊鐢�',
+ trigger: 'blur'
+ }
+ ]
+ },
+ ]
+ },
+ ],
+ }
+ }
+ },
+ created() {
+ this.processDefinitionId = this.$route.params.processDefinitionId;
+ },
+ methods: {
+ handleSubmit() {
+ const params = {
+ processDefinitionId: this.$route.params.processDefinitionId,
+ ...this.form,
+ };
+ leaveProcess(params).then(resp => {
+ const data = resp.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 || '鎻愪氦澶辫触');
+ }
+ });
+ }
+ }
+ }
+</script>
diff --git a/Source/UBCS-WEB/src/views/work/process/leave-bak/handle.vue b/Source/UBCS-WEB/src/views/work/process/leave-bak/handle.vue
new file mode 100644
index 0000000..961bf88
--- /dev/null
+++ b/Source/UBCS-WEB/src/views/work/process/leave-bak/handle.vue
@@ -0,0 +1,169 @@
+<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>
+ </basic-container>
+</template>
+
+<script>
+ import {historyFlowList, leaveDetail} from "@/api/work/process";
+ import {completeTask} from "@/api/work/work";
+
+ export default {
+ data() {
+ return {
+ taskId: '',
+ businessId: '',
+ processInstanceId: '',
+ src: '',
+ flowList: [],
+ form: {
+ flow: {
+ assigneeName: '',
+ },
+ startTime: '',
+ endTime: '',
+ reason: '',
+ comment: '',
+ },
+ }
+ },
+ 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;
+ }
+ })
+ 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() {
+ this.$router.$avueRouter.closeTag();
+ this.$router.push({path: `/work/start`});
+ }
+ }
+ }
+</script>
--
Gitblit v1.9.3