|
|
@@ -12,7 +12,7 @@
|
|
|
<el-card class="box-card" v-loading="processInstanceLoading">
|
|
|
<div slot="header" class="clearfix">
|
|
|
<span class="el-icon-document"
|
|
|
- >申请信息【{{ processInstance.name }}】 申请人:【{{
|
|
|
+ >申请信息【{{ processInstance.name }}】 申请人:【{{
|
|
|
processInstance.startUser?.nickname
|
|
|
}}】</span
|
|
|
>
|
|
|
@@ -61,7 +61,7 @@
|
|
|
:rules="auditRule"
|
|
|
label-width="100px"
|
|
|
>
|
|
|
-
|
|
|
+
|
|
|
<el-form-item
|
|
|
label="审批建议"
|
|
|
prop="reason"
|
|
|
@@ -145,7 +145,8 @@
|
|
|
</el-form>
|
|
|
<div slot="footer" class="dialog-footer">
|
|
|
<el-button type="primary" @click="submitUpdateAssigneeForm"
|
|
|
- >确 定</el-button
|
|
|
+ >确 定
|
|
|
+ </el-button
|
|
|
>
|
|
|
<el-button @click="cancelUpdateAssigneeForm">取 消</el-button>
|
|
|
</div>
|
|
|
@@ -188,7 +189,8 @@
|
|
|
</el-form>
|
|
|
<div slot="footer" class="dialog-footer">
|
|
|
<el-button type="primary" @click="submitUpdateDelegateForm"
|
|
|
- >确 定</el-button
|
|
|
+ >确 定
|
|
|
+ </el-button
|
|
|
>
|
|
|
<el-button @click="cancelUpdateDelegateForm">取 消</el-button>
|
|
|
</div>
|
|
|
@@ -235,7 +237,7 @@
|
|
|
:disabled="formLoading"
|
|
|
type="primary"
|
|
|
@click="submitReturn"
|
|
|
- >确 定</el-button
|
|
|
+ >确 定</el-button
|
|
|
>
|
|
|
</span>
|
|
|
</el-dialog>
|
|
|
@@ -244,383 +246,387 @@
|
|
|
</template>
|
|
|
|
|
|
<script>
|
|
|
- // import { getProcessDefinitionBpmnXML } from '@/api/bpm/definition';
|
|
|
- import store from '@/store';
|
|
|
- // import {decodeFields} from "@/utils/formGenerator";
|
|
|
- // import Parser from '@/components/parser/Parser'
|
|
|
- import { getProcessInstance } from '@/api/bpm/processInstance';
|
|
|
- import { listAllUserBind } from '@/api/system/organization';
|
|
|
- import Vue from 'vue';
|
|
|
+// import { getProcessDefinitionBpmnXML } from '@/api/bpm/definition';
|
|
|
+import store from '@/store';
|
|
|
+// import {decodeFields} from "@/utils/formGenerator";
|
|
|
+// import Parser from '@/components/parser/Parser'
|
|
|
+import {getProcessInstance} from '@/api/bpm/processInstance';
|
|
|
+import {listAllUserBind} from '@/api/system/organization';
|
|
|
+import Vue from 'vue';
|
|
|
|
|
|
- import {
|
|
|
- approveTask,
|
|
|
- delegateTask,
|
|
|
- getReturnList,
|
|
|
- getTaskListByProcessInstanceId,
|
|
|
- rejectTask,
|
|
|
- returnTask,
|
|
|
- updateTaskAssignee
|
|
|
- } from '@/api/bpm/task';
|
|
|
- // import { getDate } from '@/utils/dateUtils';
|
|
|
+import {
|
|
|
+ approveTask,
|
|
|
+ delegateTask,
|
|
|
+ getReturnList,
|
|
|
+ getTaskListByProcessInstanceId,
|
|
|
+ rejectTask,
|
|
|
+ returnTask,
|
|
|
+ updateTaskAssignee
|
|
|
+} from '@/api/bpm/task';
|
|
|
+// import { getDate } from '@/utils/dateUtils';
|
|
|
|
|
|
- // 流程实例的详情页,可用于审批
|
|
|
- export default {
|
|
|
- name: 'ProcessInstanceDetail',
|
|
|
- components: {
|
|
|
- // Parser
|
|
|
- },
|
|
|
- data() {
|
|
|
- return {
|
|
|
- // 遮罩层
|
|
|
- processInstanceLoading: true,
|
|
|
- dialogVisible: false,
|
|
|
- // 流程实例
|
|
|
- listData: {
|
|
|
- id: undefined, // 流程实例的编号
|
|
|
- pcHandleRouter: '',
|
|
|
- pcViewRouter: '',
|
|
|
- businessId: '', // 业务id
|
|
|
- taskDefinitionKey: '',
|
|
|
- taskId: '' //任务编码
|
|
|
- },
|
|
|
+// 流程实例的详情页,可用于审批
|
|
|
+export default {
|
|
|
+ name: 'ProcessInstanceDetail',
|
|
|
+ components: {
|
|
|
+ // Parser
|
|
|
+ },
|
|
|
+ data() {
|
|
|
+ return {
|
|
|
+ // 遮罩层
|
|
|
+ processInstanceLoading: true,
|
|
|
+ dialogVisible: false,
|
|
|
+ // 流程实例
|
|
|
+ listData: {
|
|
|
+ id: undefined, // 流程实例的编号
|
|
|
+ pcHandleRouter: '',
|
|
|
+ pcViewRouter: '',
|
|
|
+ businessId: '', // 业务id
|
|
|
+ taskDefinitionKey: '',
|
|
|
+ taskId: '' //任务编码
|
|
|
+ },
|
|
|
+
|
|
|
+ processInstance: {},
|
|
|
+ formLoading: false,
|
|
|
+ // 流程表单详情
|
|
|
+ detailForm: {
|
|
|
+ fields: []
|
|
|
+ },
|
|
|
+ //回退列表数据
|
|
|
+ returnList: [],
|
|
|
+ formData: {
|
|
|
+ id: '',
|
|
|
+ targetDefinitionKey: undefined,
|
|
|
+ reason: ''
|
|
|
+ },
|
|
|
+ formRules: {
|
|
|
+ targetDefinitionKey: [
|
|
|
+ {required: true, message: '必须选择回退节点', trigger: 'change'}
|
|
|
+ ],
|
|
|
+ reason: [
|
|
|
+ {required: true, message: '回退理由不能为空', trigger: 'blur'}
|
|
|
+ ]
|
|
|
+ },
|
|
|
+ returnOpen: false,
|
|
|
+ activityList: [],
|
|
|
|
|
|
- processInstance: {},
|
|
|
- formLoading: false,
|
|
|
- // 流程表单详情
|
|
|
- detailForm: {
|
|
|
- fields: []
|
|
|
+ tasks: [],
|
|
|
+
|
|
|
+ // 审批表单
|
|
|
+ runningTasks: [],
|
|
|
+ auditForms: [],
|
|
|
+ auditRule: {
|
|
|
+ reason: [
|
|
|
+ {required: true, message: '审批建议不能为空', trigger: 'blur'}
|
|
|
+ ]
|
|
|
+ },
|
|
|
+ // 转派审批人
|
|
|
+ userOptions: [],
|
|
|
+ updateAssignee: {
|
|
|
+ open: false,
|
|
|
+ form: {
|
|
|
+ assigneeUserId: undefined
|
|
|
},
|
|
|
- //回退列表数据
|
|
|
- returnList: [],
|
|
|
- formData: {
|
|
|
- id: '',
|
|
|
- targetDefinitionKey: undefined,
|
|
|
+ rules: {
|
|
|
+ assigneeUserId: [
|
|
|
+ {required: true, message: '新审批人不能为空', trigger: 'change'}
|
|
|
+ ]
|
|
|
+ }
|
|
|
+ },
|
|
|
+ updateDelegate: {
|
|
|
+ open: false,
|
|
|
+ form: {
|
|
|
+ delegateUserId: undefined,
|
|
|
reason: ''
|
|
|
},
|
|
|
- formRules: {
|
|
|
- targetDefinitionKey: [
|
|
|
- { required: true, message: '必须选择回退节点', trigger: 'change' }
|
|
|
+ rules: {
|
|
|
+ delegateUserId: [
|
|
|
+ {required: true, message: '新审批人不能为空', trigger: 'change'}
|
|
|
],
|
|
|
reason: [
|
|
|
- { required: true, message: '回退理由不能为空', trigger: 'blur' }
|
|
|
+ {required: true, message: '委派理由不能为空', trigger: 'blur'}
|
|
|
]
|
|
|
- },
|
|
|
- returnOpen: false,
|
|
|
- activityList: [],
|
|
|
-
|
|
|
- tasks: [],
|
|
|
-
|
|
|
- // 审批表单
|
|
|
- runningTasks: [],
|
|
|
- auditForms: [],
|
|
|
- auditRule: {
|
|
|
- reason: [
|
|
|
- { required: true, message: '审批建议不能为空', trigger: 'blur' }
|
|
|
- ]
|
|
|
- },
|
|
|
- // 转派审批人
|
|
|
- userOptions: [],
|
|
|
- updateAssignee: {
|
|
|
- open: false,
|
|
|
- form: {
|
|
|
- assigneeUserId: undefined
|
|
|
- },
|
|
|
- rules: {
|
|
|
- assigneeUserId: [
|
|
|
- { required: true, message: '新审批人不能为空', trigger: 'change' }
|
|
|
- ]
|
|
|
- }
|
|
|
- },
|
|
|
- updateDelegate: {
|
|
|
- open: false,
|
|
|
- form: {
|
|
|
- delegateUserId: undefined,
|
|
|
- reason: ''
|
|
|
- },
|
|
|
- rules: {
|
|
|
- delegateUserId: [
|
|
|
- { required: true, message: '新审批人不能为空', trigger: 'change' }
|
|
|
- ],
|
|
|
- reason: [
|
|
|
- { required: true, message: '委派理由不能为空', trigger: 'blur' }
|
|
|
- ]
|
|
|
- }
|
|
|
}
|
|
|
- };
|
|
|
- },
|
|
|
- created() {
|
|
|
- // this.id = this.$route.query.id;
|
|
|
- // if (!this.id) {
|
|
|
- // this.$message.error('未传递 id 参数,无法查看流程信息');
|
|
|
- // return;
|
|
|
- // }
|
|
|
- // this.getDetail();
|
|
|
+ }
|
|
|
+ };
|
|
|
+ },
|
|
|
+ created() {
|
|
|
+ // this.id = this.$route.query.id;
|
|
|
+ // if (!this.id) {
|
|
|
+ // this.$message.error('未传递 id 参数,无法查看流程信息');
|
|
|
+ // return;
|
|
|
+ // }
|
|
|
+ // this.getDetail();
|
|
|
|
|
|
- // 获得用户列表
|
|
|
- this.userOptions = [];
|
|
|
- listAllUserBind().then((data) => {
|
|
|
- this.userOptions.push(...data);
|
|
|
- });
|
|
|
+ // 获得用户列表
|
|
|
+ this.userOptions = [];
|
|
|
+ listAllUserBind().then((data) => {
|
|
|
+ this.userOptions.push(...data);
|
|
|
+ });
|
|
|
+ },
|
|
|
+ methods: {
|
|
|
+ submit(data) {
|
|
|
+ this.$refs.bziRef.save(data);
|
|
|
},
|
|
|
- methods: {
|
|
|
- submit(data) {
|
|
|
- this.$refs.bziRef.save(data);
|
|
|
- },
|
|
|
- open(data) {
|
|
|
- this.listData = data;
|
|
|
- console.log('实例流程~~~~~~', data);
|
|
|
- this.dialogVisible = true;
|
|
|
- this.getDetail();
|
|
|
- },
|
|
|
- activeCompChange(activeComp) {
|
|
|
- console.log(activeComp);
|
|
|
- this.$refs.subForm[0].activeCompChange(activeComp);
|
|
|
- },
|
|
|
- /** 获得流程实例 */
|
|
|
- getDetail() {
|
|
|
- // 获得流程实例相关
|
|
|
- this.processInstanceLoading = true;
|
|
|
- getProcessInstance(this.listData.id).then((response) => {
|
|
|
- if (!response) {
|
|
|
- this.$message.error('查询不到流程信息!');
|
|
|
- return;
|
|
|
- }
|
|
|
- // 设置流程信息
|
|
|
- console.log('==', response);
|
|
|
- console.log('==', this.listData);
|
|
|
- this.processInstance = response;
|
|
|
- // //将业务表单,注册为动态组件
|
|
|
- // let formCustomCreatePath = JSON.parse(
|
|
|
- // this.processInstance.processDefinition.formCustomCreatePath
|
|
|
- // );
|
|
|
- // const bizpath = formCustomCreatePath.pcView;
|
|
|
- // const subpath = formCustomCreatePath.pcHandle;
|
|
|
- Vue.component('async-biz-form-component', (resolve) => {
|
|
|
- require([`@/views${this.listData.pcViewRouter}`], resolve);
|
|
|
- });
|
|
|
- Vue.component('async-sub-form-component', (resolve) => {
|
|
|
- require([`@/views${this.listData.pcHandleRouter}`], resolve);
|
|
|
- });
|
|
|
- // // 设置表单信息
|
|
|
- // if (this.processInstance.processDefinition.formType === 10) {
|
|
|
- // this.detailForm = {
|
|
|
- // ...JSON.parse(this.processInstance.processDefinition.formConf),
|
|
|
- // disabled: true, // 表单禁用
|
|
|
- // formBtns: false, // 按钮隐藏
|
|
|
- // fields: decodeFields(this.processInstance.processDefinition.formFields)
|
|
|
- // }
|
|
|
- // // 设置表单的值
|
|
|
- // this.detailForm.fields.forEach(item => {
|
|
|
- // const val = this.processInstance.formVariables[item.__vModel__]
|
|
|
- // if (val) {
|
|
|
- // item.__config__.defaultValue = val
|
|
|
- // }
|
|
|
- // });
|
|
|
- // }
|
|
|
-
|
|
|
- // 取消加载中
|
|
|
- this.processInstanceLoading = false;
|
|
|
+ open(data) {
|
|
|
+ this.listData = data;
|
|
|
+ console.log('实例流程~~~~~~', data);
|
|
|
+ this.dialogVisible = true;
|
|
|
+ this.getDetail();
|
|
|
+ },
|
|
|
+ activeCompChange(activeComp) {
|
|
|
+ console.log(activeComp);
|
|
|
+ this.$refs.subForm[0].activeCompChange(activeComp);
|
|
|
+ },
|
|
|
+ /** 获得流程实例 */
|
|
|
+ getDetail() {
|
|
|
+ // 获得流程实例相关
|
|
|
+ this.processInstanceLoading = true;
|
|
|
+ getProcessInstance(this.listData.id).then((response) => {
|
|
|
+ if (!response) {
|
|
|
+ this.$message.error('查询不到流程信息!');
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ // 设置流程信息
|
|
|
+ console.log('==', response);
|
|
|
+ console.log('==', this.listData);
|
|
|
+ this.processInstance = response;
|
|
|
+ // //将业务表单,注册为动态组件
|
|
|
+ // let formCustomCreatePath = JSON.parse(
|
|
|
+ // this.processInstance.processDefinition.formCustomCreatePath
|
|
|
+ // );
|
|
|
+ // const bizpath = formCustomCreatePath.pcView;
|
|
|
+ // const subpath = formCustomCreatePath.pcHandle;
|
|
|
+ Vue.component('async-biz-form-component', (resolve) => {
|
|
|
+ require([`@/views${this.listData.pcViewRouter}`], resolve);
|
|
|
});
|
|
|
-
|
|
|
- this.runningTasks = [];
|
|
|
- this.auditForms = [];
|
|
|
- getTaskListByProcessInstanceId(this.listData.id).then((response) => {
|
|
|
- console.log(response, 'response');
|
|
|
- // 审批记录
|
|
|
- this.tasks = [];
|
|
|
- // 移除已取消的审批
|
|
|
- response.forEach((task) => {
|
|
|
- if (task.result !== 4) {
|
|
|
- this.tasks.push(task);
|
|
|
- }
|
|
|
- });
|
|
|
- // 排序,将未完成的排在前面,已完成的排在后面;
|
|
|
- this.tasks.sort((a, b) => {
|
|
|
- // 有已完成的情况,按照完成时间倒序
|
|
|
- if (a.endTime && b.endTime) {
|
|
|
- return b.endTime - a.endTime;
|
|
|
- } else if (a.endTime) {
|
|
|
- return 1;
|
|
|
- } else if (b.endTime) {
|
|
|
- return -1;
|
|
|
- // 都是未完成,按照创建时间倒序
|
|
|
- } else {
|
|
|
- return b.createTime - a.createTime;
|
|
|
- }
|
|
|
- });
|
|
|
-
|
|
|
- // 需要审核的记录
|
|
|
- const userId = store.getters.user.info.userId;
|
|
|
- this.tasks.forEach((task) => {
|
|
|
- if (task.result !== 1 && task.result !== 6) {
|
|
|
- // 只有待处理才需要
|
|
|
- return;
|
|
|
- }
|
|
|
- if (!task.assigneeUser || task.assigneeUser.id !== userId) {
|
|
|
- // 自己不是处理人
|
|
|
- return;
|
|
|
- }
|
|
|
- this.runningTasks.push({ ...task });
|
|
|
- console.log(this.runningTasks, ' this.runningTasks');
|
|
|
- this.auditForms.push({
|
|
|
- reason: ''
|
|
|
- });
|
|
|
- });
|
|
|
+ Vue.component('async-sub-form-component', (resolve) => {
|
|
|
+ require([`@/views${this.listData.pcHandleRouter}`], resolve);
|
|
|
});
|
|
|
- },
|
|
|
-
|
|
|
- /** 处理审批通过和不通过的操作 */
|
|
|
- handleAudit(data) {
|
|
|
- let text = data.status === 1 ? '通过' : '不通过';
|
|
|
- this.$message.success(`审批${data.title || text}成功!`);
|
|
|
- this.handleClose(); // 获得最新详情
|
|
|
-
|
|
|
- // const index = this.runningTasks.indexOf(task);
|
|
|
- // this.$refs['form' + index][0].validate((valid) => {
|
|
|
- // if (!valid) {
|
|
|
- // return;
|
|
|
- // }
|
|
|
- // const data = {
|
|
|
- // id: task.id,
|
|
|
- // reason: this.auditForms[index].reason
|
|
|
- // };
|
|
|
- // if (pass) {
|
|
|
- // approveTask(data).then((response) => {
|
|
|
- // this.$message.success('审批通过成功!');
|
|
|
- // this.handleClose(); // 获得最新详情
|
|
|
- // });
|
|
|
- // } else {
|
|
|
- // rejectTask(data).then((response) => {
|
|
|
- // this.$message.success('审批不通过成功!');
|
|
|
- // this.handleClose(); // 获得最新详情
|
|
|
+ // // 设置表单信息
|
|
|
+ // if (this.processInstance.processDefinition.formType === 10) {
|
|
|
+ // this.detailForm = {
|
|
|
+ // ...JSON.parse(this.processInstance.processDefinition.formConf),
|
|
|
+ // disabled: true, // 表单禁用
|
|
|
+ // formBtns: false, // 按钮隐藏
|
|
|
+ // fields: decodeFields(this.processInstance.processDefinition.formFields)
|
|
|
+ // }
|
|
|
+ // // 设置表单的值
|
|
|
+ // this.detailForm.fields.forEach(item => {
|
|
|
+ // const val = this.processInstance.formVariables[item.__vModel__]
|
|
|
+ // if (val) {
|
|
|
+ // item.__config__.defaultValue = val
|
|
|
+ // }
|
|
|
// });
|
|
|
// }
|
|
|
- // });
|
|
|
- },
|
|
|
- /** 处理转办审批人 */
|
|
|
- handleUpdateAssignee(task) {
|
|
|
- // 设置表单
|
|
|
- this.resetUpdateAssigneeForm();
|
|
|
- this.updateAssignee.form.id = task.id;
|
|
|
- // 设置为打开
|
|
|
- this.updateAssignee.open = true;
|
|
|
- },
|
|
|
- /** 提交转办审批人 */
|
|
|
- submitUpdateAssigneeForm() {
|
|
|
- this.$refs['updateAssigneeForm'].validate((valid) => {
|
|
|
- if (!valid) {
|
|
|
- return;
|
|
|
- }
|
|
|
- updateTaskAssignee(this.updateAssignee.form).then((response) => {
|
|
|
- this.$message.success('转办任务成功!');
|
|
|
|
|
|
- this.updateAssignee.open = false;
|
|
|
- this.handleClose(); // 获得最新详情
|
|
|
- });
|
|
|
+ // 取消加载中
|
|
|
+ this.processInstanceLoading = false;
|
|
|
+ });
|
|
|
+
|
|
|
+ this.runningTasks = [];
|
|
|
+ this.auditForms = [];
|
|
|
+ getTaskListByProcessInstanceId(this.listData.id).then((response) => {
|
|
|
+ console.log(response, 'response');
|
|
|
+ // 审批记录
|
|
|
+ this.tasks = [];
|
|
|
+ // 移除已取消的审批
|
|
|
+ response.forEach((task) => {
|
|
|
+ if (task.result !== 4) {
|
|
|
+ this.tasks.push(task);
|
|
|
+ }
|
|
|
});
|
|
|
- },
|
|
|
- /** 取消转办审批人 */
|
|
|
- cancelUpdateAssigneeForm() {
|
|
|
- this.updateAssignee.open = false;
|
|
|
- this.resetUpdateAssigneeForm();
|
|
|
- },
|
|
|
- /** 重置转办审批人 */
|
|
|
- resetUpdateAssigneeForm() {
|
|
|
- this.updateAssignee.form = {
|
|
|
- id: undefined,
|
|
|
- assigneeUserId: undefined
|
|
|
- };
|
|
|
- this.resetForm('updateAssigneeForm');
|
|
|
- },
|
|
|
- /** 处理审批委派的操作 */
|
|
|
- handleDelegate(task) {
|
|
|
- //this.$modal.msgError("暂不支持【委派】功能,可以使用【转派】替代!");
|
|
|
- this.resetUpdateDelegateForm();
|
|
|
- this.updateDelegate.form.id = task.id;
|
|
|
- // 设置为打开
|
|
|
- this.updateDelegate.open = true;
|
|
|
- },
|
|
|
- /** 提交委派审批人 */
|
|
|
- submitUpdateDelegateForm() {
|
|
|
- this.$refs['updateDelegateForm'].validate((valid) => {
|
|
|
- if (!valid) {
|
|
|
- return;
|
|
|
+ // 排序,将未完成的排在前面,已完成的排在后面;
|
|
|
+ this.tasks.sort((a, b) => {
|
|
|
+ // 有已完成的情况,按照完成时间倒序
|
|
|
+ if (a.endTime && b.endTime) {
|
|
|
+ return b.endTime - a.endTime;
|
|
|
+ } else if (a.endTime) {
|
|
|
+ return 1;
|
|
|
+ } else if (b.endTime) {
|
|
|
+ return -1;
|
|
|
+ // 都是未完成,按照创建时间倒序
|
|
|
+ } else {
|
|
|
+ return b.createTime - a.createTime;
|
|
|
}
|
|
|
- delegateTask(this.updateDelegate.form).then((response) => {
|
|
|
- this.$message.success('委派任务成功!');
|
|
|
- this.updateDelegate.open = false;
|
|
|
- this.handleClose(); // 获得最新详情
|
|
|
- });
|
|
|
});
|
|
|
- },
|
|
|
- /** 取消委派审批人 */
|
|
|
- cancelUpdateDelegateForm() {
|
|
|
- this.updateDelegate.open = false;
|
|
|
- this.resetUpdateDelegateForm();
|
|
|
- },
|
|
|
- /** 重置委派审批人 */
|
|
|
- resetUpdateDelegateForm() {
|
|
|
- this.updateDelegate.form = {
|
|
|
- id: undefined,
|
|
|
- delegateUserId: undefined
|
|
|
- };
|
|
|
- this.resetForm('updateDelegateForm');
|
|
|
- },
|
|
|
- /** 处理审批退回的操作 */
|
|
|
- /** 返回退回节点列表 */
|
|
|
- handleBackList(task) {
|
|
|
- // 可参考 http://blog.wya1.com/article/636697030/details/7296
|
|
|
- getReturnList(task.id).then((response) => {
|
|
|
- this.returnList = response.data.data;
|
|
|
- if (this.returnList.length == 0) {
|
|
|
- this.$message.error('当前没有可回退的节点!');
|
|
|
|
|
|
+ // 需要审核的记录
|
|
|
+ const userId = store.getters.user.info.userId;
|
|
|
+ this.tasks.forEach((task) => {
|
|
|
+ if (task.result !== 1 && task.result !== 6) {
|
|
|
+ // 只有待处理才需要
|
|
|
return;
|
|
|
}
|
|
|
- this.formData.id = task.id;
|
|
|
- this.returnOpen = true;
|
|
|
- });
|
|
|
- },
|
|
|
- /** 提交退回任务 */
|
|
|
- submitReturn() {
|
|
|
- if (!this.formData.targetDefinitionKey) {
|
|
|
- this.$message.error('请选择退回节点!');
|
|
|
- }
|
|
|
- this.$refs['formRef'].validate((valid) => {
|
|
|
- if (!valid) {
|
|
|
+ if (!task.assigneeUser || task.assigneeUser.id !== userId) {
|
|
|
+ // 自己不是处理人
|
|
|
return;
|
|
|
}
|
|
|
- returnTask(this.formData).then((res) => {
|
|
|
- if (res.data) {
|
|
|
- this.$message.success('回退成功!');
|
|
|
-
|
|
|
- this.returnOpen = false;
|
|
|
- this.handleClose(); // 获得最新详情
|
|
|
- }
|
|
|
+ if (task.taskDefinitionKey !== this.listData.taskDefinitionKey) {
|
|
|
+ // 不是当前流程的
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ this.runningTasks.push({...task});
|
|
|
+ console.log(this.runningTasks, ' this.runningTasks');
|
|
|
+ this.auditForms.push({
|
|
|
+ reason: ''
|
|
|
});
|
|
|
});
|
|
|
- },
|
|
|
- handleClose() {
|
|
|
- this.$emit('reload');
|
|
|
- this.dialogVisible = false;
|
|
|
- },
|
|
|
- getTableValue(fn) {
|
|
|
- fn(this.$refs.bziRef.getTableValue());
|
|
|
- },
|
|
|
- getReturnStorage(fn) {
|
|
|
- fn(this.$refs.bziRef.getReturnStorage());
|
|
|
+ });
|
|
|
+ },
|
|
|
+
|
|
|
+ /** 处理审批通过和不通过的操作 */
|
|
|
+ handleAudit(data) {
|
|
|
+ let text = data.status === 1 ? '通过' : '不通过';
|
|
|
+ this.$message.success(`审批${data.title || text}成功!`);
|
|
|
+ this.handleClose(); // 获得最新详情
|
|
|
+
|
|
|
+ // const index = this.runningTasks.indexOf(task);
|
|
|
+ // this.$refs['form' + index][0].validate((valid) => {
|
|
|
+ // if (!valid) {
|
|
|
+ // return;
|
|
|
+ // }
|
|
|
+ // const data = {
|
|
|
+ // id: task.id,
|
|
|
+ // reason: this.auditForms[index].reason
|
|
|
+ // };
|
|
|
+ // if (pass) {
|
|
|
+ // approveTask(data).then((response) => {
|
|
|
+ // this.$message.success('审批通过成功!');
|
|
|
+ // this.handleClose(); // 获得最新详情
|
|
|
+ // });
|
|
|
+ // } else {
|
|
|
+ // rejectTask(data).then((response) => {
|
|
|
+ // this.$message.success('审批不通过成功!');
|
|
|
+ // this.handleClose(); // 获得最新详情
|
|
|
+ // });
|
|
|
+ // }
|
|
|
+ // });
|
|
|
+ },
|
|
|
+ /** 处理转办审批人 */
|
|
|
+ handleUpdateAssignee(task) {
|
|
|
+ // 设置表单
|
|
|
+ this.resetUpdateAssigneeForm();
|
|
|
+ this.updateAssignee.form.id = task.id;
|
|
|
+ // 设置为打开
|
|
|
+ this.updateAssignee.open = true;
|
|
|
+ },
|
|
|
+ /** 提交转办审批人 */
|
|
|
+ submitUpdateAssigneeForm() {
|
|
|
+ this.$refs['updateAssigneeForm'].validate((valid) => {
|
|
|
+ if (!valid) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ updateTaskAssignee(this.updateAssignee.form).then((response) => {
|
|
|
+ this.$message.success('转办任务成功!');
|
|
|
+
|
|
|
+ this.updateAssignee.open = false;
|
|
|
+ this.handleClose(); // 获得最新详情
|
|
|
+ });
|
|
|
+ });
|
|
|
+ },
|
|
|
+ /** 取消转办审批人 */
|
|
|
+ cancelUpdateAssigneeForm() {
|
|
|
+ this.updateAssignee.open = false;
|
|
|
+ this.resetUpdateAssigneeForm();
|
|
|
+ },
|
|
|
+ /** 重置转办审批人 */
|
|
|
+ resetUpdateAssigneeForm() {
|
|
|
+ this.updateAssignee.form = {
|
|
|
+ id: undefined,
|
|
|
+ assigneeUserId: undefined
|
|
|
+ };
|
|
|
+ this.resetForm('updateAssigneeForm');
|
|
|
+ },
|
|
|
+ /** 处理审批委派的操作 */
|
|
|
+ handleDelegate(task) {
|
|
|
+ //this.$modal.msgError("暂不支持【委派】功能,可以使用【转派】替代!");
|
|
|
+ this.resetUpdateDelegateForm();
|
|
|
+ this.updateDelegate.form.id = task.id;
|
|
|
+ // 设置为打开
|
|
|
+ this.updateDelegate.open = true;
|
|
|
+ },
|
|
|
+ /** 提交委派审批人 */
|
|
|
+ submitUpdateDelegateForm() {
|
|
|
+ this.$refs['updateDelegateForm'].validate((valid) => {
|
|
|
+ if (!valid) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ delegateTask(this.updateDelegate.form).then((response) => {
|
|
|
+ this.$message.success('委派任务成功!');
|
|
|
+ this.updateDelegate.open = false;
|
|
|
+ this.handleClose(); // 获得最新详情
|
|
|
+ });
|
|
|
+ });
|
|
|
+ },
|
|
|
+ /** 取消委派审批人 */
|
|
|
+ cancelUpdateDelegateForm() {
|
|
|
+ this.updateDelegate.open = false;
|
|
|
+ this.resetUpdateDelegateForm();
|
|
|
+ },
|
|
|
+ /** 重置委派审批人 */
|
|
|
+ resetUpdateDelegateForm() {
|
|
|
+ this.updateDelegate.form = {
|
|
|
+ id: undefined,
|
|
|
+ delegateUserId: undefined
|
|
|
+ };
|
|
|
+ this.resetForm('updateDelegateForm');
|
|
|
+ },
|
|
|
+ /** 处理审批退回的操作 */
|
|
|
+ /** 返回退回节点列表 */
|
|
|
+ handleBackList(task) {
|
|
|
+ // 可参考 http://blog.wya1.com/article/636697030/details/7296
|
|
|
+ getReturnList(task.id).then((response) => {
|
|
|
+ this.returnList = response.data.data;
|
|
|
+ if (this.returnList.length == 0) {
|
|
|
+ this.$message.error('当前没有可回退的节点!');
|
|
|
+
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ this.formData.id = task.id;
|
|
|
+ this.returnOpen = true;
|
|
|
+ });
|
|
|
+ },
|
|
|
+ /** 提交退回任务 */
|
|
|
+ submitReturn() {
|
|
|
+ if (!this.formData.targetDefinitionKey) {
|
|
|
+ this.$message.error('请选择退回节点!');
|
|
|
}
|
|
|
+ this.$refs['formRef'].validate((valid) => {
|
|
|
+ if (!valid) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ returnTask(this.formData).then((res) => {
|
|
|
+ if (res.data) {
|
|
|
+ this.$message.success('回退成功!');
|
|
|
+
|
|
|
+ this.returnOpen = false;
|
|
|
+ this.handleClose(); // 获得最新详情
|
|
|
+ }
|
|
|
+ });
|
|
|
+ });
|
|
|
+ },
|
|
|
+ handleClose() {
|
|
|
+ this.$emit('reload');
|
|
|
+ this.dialogVisible = false;
|
|
|
+ },
|
|
|
+ getTableValue(fn) {
|
|
|
+ fn(this.$refs.bziRef.getTableValue());
|
|
|
+ },
|
|
|
+ getReturnStorage(fn) {
|
|
|
+ fn(this.$refs.bziRef.getReturnStorage());
|
|
|
}
|
|
|
- };
|
|
|
+ }
|
|
|
+};
|
|
|
</script>
|
|
|
|
|
|
<style lang="scss">
|
|
|
- .my-process-designer {
|
|
|
- height: calc(100vh - 200px);
|
|
|
- }
|
|
|
+.my-process-designer {
|
|
|
+ height: calc(100vh - 200px);
|
|
|
+}
|
|
|
|
|
|
- .box-card {
|
|
|
- width: 100%;
|
|
|
- margin-bottom: 20px;
|
|
|
- }
|
|
|
+.box-card {
|
|
|
+ width: 100%;
|
|
|
+ margin-bottom: 20px;
|
|
|
+}
|
|
|
</style>
|