|
|
@@ -1,64 +1,162 @@
|
|
|
<template>
|
|
|
<basic-container>
|
|
|
- <avue-form :option="option" v-model="form" :upload-before="uploadBefore" :upload-after="uploadAfter"></avue-form>
|
|
|
+ <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 class="box-card">
|
|
|
+ <div slot="header" class="clearfix">
|
|
|
+ <span>审批信息</span>
|
|
|
+ </div>
|
|
|
+ <el-form-item label="申请人">
|
|
|
+ <el-input :disabled="true" v-model="form.flow.assigneeName"></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ <el-row>
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item label="开始时间">
|
|
|
+ <el-input :disabled="true" v-model="form.startTime"></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item label="结束时间">
|
|
|
+ <el-input :disabled="true" v-model="form.endTime"></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ <el-form-item label="请假理由">
|
|
|
+ <el-input :disabled="true" type="textarea" v-model="form.reason"></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="批复意见">
|
|
|
+ <el-input type="textarea" v-model="form.comment"></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ </el-card>
|
|
|
+ <el-card class="box-card">
|
|
|
+ <div slot="header" class="clearfix">
|
|
|
+ <span>流程信息</span>
|
|
|
+ </div>
|
|
|
+ <el-row type="flex" class="row-bg">
|
|
|
+ <avue-timeline pending time :time-width="200">
|
|
|
+ <avue-timeline-item v-for="flow in flowList">
|
|
|
+ <div slot="time">
|
|
|
+ <p>{{flow.createTime}}</p>
|
|
|
+ </div>
|
|
|
+ <div slot="content">
|
|
|
+ <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>
|
|
|
+ </avue-timeline-item>
|
|
|
+ </avue-timeline>
|
|
|
+ </el-row>
|
|
|
+ </el-card>
|
|
|
+ <el-card class="box-card">
|
|
|
+ <div slot="header" class="clearfix">
|
|
|
+ <span>流程跟踪</span>
|
|
|
+ </div>
|
|
|
+ <el-row type="flex" class="row-bg">
|
|
|
+ <img :src="src" alt="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: {
|
|
|
- imgUrl: [],
|
|
|
+ flow: {
|
|
|
+ assigneeName: '',
|
|
|
+ },
|
|
|
+ startTime: '',
|
|
|
+ endTime: '',
|
|
|
+ reason: '',
|
|
|
+ comment: '',
|
|
|
},
|
|
|
- option: {
|
|
|
- labelWidth: 120,
|
|
|
- column: [
|
|
|
- {
|
|
|
- label: '流程类型',
|
|
|
- prop: 'flowCategory',
|
|
|
- type: 'select',
|
|
|
- dicUrl: `/api/blade-system/dict/dictionary?code=flow`,
|
|
|
- props: {
|
|
|
- label: "dictValue",
|
|
|
- value: "dictKey"
|
|
|
- },
|
|
|
- rules: [
|
|
|
- {
|
|
|
- required: true,
|
|
|
- message: '请选择流程类型',
|
|
|
- trigger: 'blur'
|
|
|
- }
|
|
|
- ]
|
|
|
- },
|
|
|
- {
|
|
|
- label: '附件上传',
|
|
|
- prop: 'imgUrl',
|
|
|
- type: 'upload',
|
|
|
- loadText: '附件上传中,请稍等',
|
|
|
- span: 24,
|
|
|
- propsHttp: {
|
|
|
- res: 'data.0'
|
|
|
- },
|
|
|
- tip: '请上传 bpmn20.xml 标准格式文件',
|
|
|
- },
|
|
|
- ]
|
|
|
- }
|
|
|
}
|
|
|
},
|
|
|
+ created() {
|
|
|
+ this.init();
|
|
|
+ },
|
|
|
methods: {
|
|
|
- uploadBefore(file, done, loading) {
|
|
|
- console.log(file)
|
|
|
- done()
|
|
|
- this.$message.success('上传前的方法')
|
|
|
+ init() {
|
|
|
+ this.taskId = this.$route.params.taskId;
|
|
|
+ this.processInstanceId = this.$route.params.processInstanceId;
|
|
|
+ this.businessId = this.$route.params.businessId;
|
|
|
+ this.src = `/api/blade-flow/process/diagram-view?processInstanceId=${this.$route.params.processInstanceId}`;
|
|
|
+ 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;
|
|
|
+ }
|
|
|
+ })
|
|
|
},
|
|
|
- uploadAfter(res, done, loading) {
|
|
|
- console.log(res)
|
|
|
- done()
|
|
|
- this.$message.success('上传后的方法')
|
|
|
+ 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 || '提交失败');
|
|
|
+ }
|
|
|
+ })
|
|
|
},
|
|
|
- submit() {
|
|
|
- this.$message.success('当前数据' + JSON.stringify(this.form))
|
|
|
+ handleCancel() {
|
|
|
+ this.$router.$avueRouter.closeTag();
|
|
|
+ this.$router.push({path: `/work/start`});
|
|
|
}
|
|
|
}
|
|
|
}
|