yangys
2025-08-21 6c374c0cc42d52d32666198e57d5b7356e882fc9
src/views/flow/todolist.vue
@@ -5,11 +5,12 @@
            @size-change="sizeChange" @refresh-change="refreshChange" @on-load="onLoad"
            @selection-change="selectionTransferTask">
            <template #menu-left>
                <el-button type="primary" plain @click="reassign(0)">重新指派</el-button>
                <el-button type="primary" v-if="permission.manual_dispatch" plain @click="reassign(1)">手动派工
                </el-button>
                <el-button type="primary" v-if="permission.auto_dispatch" plain @click="reassign(2)">自动派工
                </el-button>
                <el-button type="primary" v-if="permission.manual_dispatch" plain @click="reassign(1)">手动派工
                </el-button>
                <el-button type="primary" plain @click="reassign(0)">重新指派</el-button>
                <el-button type="primary" v-if="permission.batch_approve" plain @click="reassign(3)">批量审批
                </el-button>
            </template>
@@ -66,6 +67,8 @@
            activeName: 'approve',
            applist: [],
            assigneeData: [],
            allAssigneeData: [],
            managerAssigneeData: [],//数控管理员角色的审批用户
            row: {},
            approveBox: false,
            formApprove: {
@@ -92,27 +95,17 @@
                        label: '发送给',
                        prop: 'assignee',
                        type: 'select',
                        // dicUrl: `/blade-mdm/flow/flow-user-list?deptId=0`,
                        // dicFlag: true,
                        props: {
                            label: 'name',
                            value: 'id',
                        },
                        display: true,
                        filterable: true,
                        span: 24,
                        disabled: false,
                        dicData: [
                        ],
                        // rules: [{ required: true, message: '请选择下一审批用户', trigger: 'blur' }],
                    },
                    {
                        label: '工序版次',
                        prop: 'processEdition',
                        type: 'input',
                        span: 24,
                        // disabled: true,
                        display: false,// 隐藏显示
                        // rules: [{ required: true, message: '请选择下一审批用户', trigger: 'blur' }],
                    },
                    {
@@ -153,6 +146,7 @@
                columnBtn: false,
                tip: false,
                // simplePage: true,
                searchEnter:true,
                searchShow: true,
                searchMenuSpan: 6,
                dialogWidth: '60%',
@@ -185,7 +179,7 @@
               {
                        label: '标题',
                        prop: '',
                        width: 100,
                        width: 200,
                  render: ({ row }) => {
                            return h('p',
                                {
@@ -197,15 +191,29 @@
                    },
                    {
                        label: '流程名称',
                        prop: 'processDefinitionName',
                        width: 100,
                    },/*
                        prop: '',
                        width: 110,
                  render: ({ row }) => {
                            return h('p',
                                {
                                    attrs: {},
                                    class: {},
                                    style: {},
                                }, row?.variables?.myProcessName)
                        }
                    },
                    {
                        label: '流程类型',
                        label: '编制',
                        width: 100,
                        prop: 'categoryName',
                    },*/
                        render: ({ row }) => {
                            return h('p',
                                {
                                    attrs: {},
                                    class: {},
                                    style: {},
                                }, row?.variables?.programmerName)
                        }
                    },
                    {
                        label: '机床',
                        width: 100,
@@ -216,12 +224,13 @@
                    },
                    {
                        label: '创建人',
                        width: 100,
                        width: 70,
                        overHidden:true,
                        prop: 'startUserName',
                    },
                    {
                        label: '创建时间',
                        width: 200,
                        width: 100,
                        prop: 'processCreateTime',
                        type: 'datetime',
                        format: 'YYYY-MM-DD HH:mm:ss',
@@ -233,7 +242,7 @@
                    },
                    {
                        label: '上一步用户',
                        width: 200,
                        width: 100,
                        prop: '',
                        formatter: (val, value, label) => {
                            return `${val?.variables?.approveUserNickName || ''}`;
@@ -241,7 +250,7 @@
                    },
                    {
                        label: '当前节点',
                        width: 200,
                        width: 100,
                        prop: 'taskName',
                    },
                    {
@@ -251,7 +260,7 @@
                    },
                    {
                        label: '到达时间',
                        width: 200,
                        width: 120,
                        prop: 'createTime',
                    },
                    {
@@ -285,16 +294,15 @@
                    {
                        label: '发送给',
                        prop: 'newAssigneeId',
                        filterable:true,
                        type: 'select',
                        // dicUrl: `/blade-mdm/flow/flow-user-list?deptId=0`,
                        // dicFlag: true,
                        props: {
                            label: 'name',
                            value: 'id',
                        },
                        span: 24,
                        disabled: false,
                        display: false,
                        display: true,
                        dicData: [
                        ],
@@ -334,15 +342,18 @@
            
        },
        'reassignForm.approve'(val) {
            if(val === 'Y') {
                this.reassignOption.column[1].disabled = true;
                this.reassignOption.column[1].display = false;
                this.reassignForm.newAssigneeId = '';
            } else {
                this.reassignOption.column[1].display = false;
                this.reassignOption.column[1].disabled = false;
                this.reassignForm.newAssigneeId = '';
            if(this.reassignType ===3) {
                if(val === 'Y') {
                    this.reassignOption.column[1].disabled = true;
                    this.reassignOption.column[1].display = false;
                    this.reassignForm.newAssigneeId = '';
                } else {
                    this.reassignOption.column[1].display = false;
                    this.reassignOption.column[1].disabled = false;
                    this.reassignForm.newAssigneeId = '';
                }
            }
        }
    },
    computed: {
@@ -356,39 +367,52 @@
        },
    },
    mounted() {
        getAssignee().then(res => {
            this.assigneeData = res.data.data;
            this.optionApprove.column[1].dicData = this.assigneeData;
            this.reassignOption.column[1].dicData = this.assigneeData;
        })
        this.setApproveBtn()
        //this.setApproveBtn(row)
    },
    methods: {
        // 设置审批结果的状态
        setApproveBtn () {
        setApproveBtn (row) {
            // 1.审批界面radio文本修改,普通节点的2个radio文本 通过(approve=Y),不通过(现在的驳回)(approve=N)
            this.optionApprove.column[0].dicData = [
                { label: '通过', value: 'Y' },
                { label: '不通过', value: 'N' },
            ];
            switch (this.row.taskDefinitionKey) {
                case 'teamLeaderTask': // 任务派工
                case 'cureProgramTask': // 固化编制
                    this.optionApprove.column[0].dicData = [
                        { label: '通过', value: 'Y' },
                        { label: '结束', value: 'N' },
                    ];
                    break;
                case 'confirmIsUseableTask': // 检查程序是否可用
                case 'cureProgramTask': // 固化编制,可以通过(给校对);不通过N(给程序管理员)
                    this.optionApprove.column[0].dicData = [
                        { label: '通过', value: 'Y' },
                        { label: '不通过', value: 'N' },
                        { label: '驳回', value: 'R' },
                        { label: '不通过', value: 'N' },//给程序管理员
                    ];
                    break;
                case 'confirmIsUseableTask': // 检查程序是否可用,驳回是给
                    this.optionApprove.column[0].dicData = [
                        { label: '可用', value: 'Y' }, //给校对
                        { label: '不可用', value: 'N' },//给编制
                        { label: '驳回', value: 'R' },//给驳回组长
                    ];
                    break;
                case 'programmingTask': //试切 编制节点
                    this.optionApprove.column[0].dicData = [
                        { label: '通过', value: 'Y' },
                        { label: '不通过', value: 'N' },//给组长
                        { label: '结束', value: 'E' },//结束流程
                    ];
                    break;
                case 'programMgrConfirm'://固化流程 程序管理员,只能结束
                    this.optionApprove.column[0].dicData = [
                        { label: '结束', value: 'E' },
                    ];
                    break;
                case 'seniorApproveTask': // 高师审核
                case 'approveTask': // 高师审核
                default:
                    this.optionApprove.column[0].dicData = [
                        { label: '通过', value: 'Y' },
@@ -398,32 +422,77 @@
            }
        },
        setAssignee (row, approve) {
            if (approve === 'Y') {
                if (["check", 'cureCheckTask '].includes(row.taskDefinitionKey)) {// 校对
            if (["cureProgramTask"].includes(row.taskDefinitionKey)) {
                if(approve === 'N'){
                    this.optionApprove.column[1].dicData = this.managerAssigneeData;
                }else{
                    //this.assigneeData = this.allAssigneeData;
                    this.optionApprove.column[1].dicData = this.allAssigneeData;
                }
            }
            if (approve === 'Y') {//审批通过的情况
                this.optionApprove.column[1].disabled = false;
                if (["check", 'cureCheckTask','repalceCheckTask'].includes(row.taskDefinitionKey)) {// 校对节点
                    this.formApprove.assignee = row.variables.senior;
                } else if (["programmingTask",'cureProgramTask'].includes(row.taskDefinitionKey)) {// 编制,校对
                } else if (["programmingTask",'cureProgramTask','repalceProgrammingTask'].includes(row.taskDefinitionKey)) {// 编制节点
                    this.formApprove.assignee = row.variables.checker;
                } else if (row.taskDefinitionKey == "teamLeaderTask") {// 任务派工
                } else if (row.taskDefinitionKey == "teamLeaderTask") {// 任务派工(组长)
                    this.optionApprove.column[1].disabled = false;
                    this.formApprove.assignee = row.variables.programmer
                } else if (row.taskDefinitionKey == "confirmIsUseableTask") {
                } else if (row.taskDefinitionKey == "confirmIsUseableTask") {//判断程序是否可用节点,都是发送给校对
                    this.formApprove.assignee = row.variables.checker
                } else if (["approveTask", 'seniorApproveTask','replaceApprove'].includes(row.taskDefinitionKey)) {// 高师审核
                    this.optionApprove.column[1].disabled = true;
                    this.formApprove.assignee = ''; // 如果是通过,则默认指派给自己
                } else if (["approveTask", 'seniorApproveTask','replaceApprove','unlockApproveTask'].includes(row.taskDefinitionKey)) {// 高师审核
                    this.optionApprove.column[1].disabled = true;//最后一个节点"发送给" 禁用
                    this.formApprove.assignee = ''; // 如果是通过流程直接结束
                }else if('unlockProgramConfirm'==row.taskDefinitionKey){
                    //解锁流程,编程复核,默认给高师
                    this.formApprove.assignee = row.variables.senior;
                }
            } else if(approve === 'N'){
                this.formApprove.assignee = ''
                if (["approveTask", 'seniorApproveTask','replaceApprove'].includes(row.taskDefinitionKey)) {// 高师审核
                    this.optionApprove.column[1].disabled = true;
                    getPrevius({processInstanceId: row.processInstanceId}).then(res => {
                        console.log(res)
                        if(res.data.code === 200) {
                            this.formApprove.assignee = res.data.data // 如果是通过,则默认指派给自己
                //不通过的情况
                //根据在线文档34行,'发送给'是禁用,但有默认选项
                this.optionApprove.column[1].disabled = true;
                if (["approveTask", 'seniorApproveTask','replaceApprove','unlockApproveTask'].includes(row.taskDefinitionKey)) {
                    //审批节点,不通过给编制:编制是责任人,不给校对了
                    this.formApprove.assignee = row.variables.programmer;
                } else if(["check", 'cureCheckTask','repalceCheckTask'].includes(row.taskDefinitionKey)){
                    //校对节点,上一步是编程
                    this.formApprove.assignee = row.variables.programmer;
                }else if (["programmingTask"].includes(row.taskDefinitionKey)) {
                    // 试切编制节点,上一步是组长
                    this.formApprove.assignee = row.variables.teamLeader;
                }else if(["cureProgramTask"].includes(row.taskDefinitionKey)) {
                    //固化编制节点,不通过给数控管理员
                    //TODO 按找角色定位给其中一个数控管理员
                    this.optionApprove.column[1].disabled = false;
                    for(var i=0;i<this.assigneeData.length;i++){
                        if(this.assigneeData[i].manager == true){
                            this.formApprove.assignee = this.assigneeData[i].id;
                            break;
                        }
                    })
                    }
                    //this.formApprove.assignee = '';
                }else if(["confirmIsUseableTask"].includes(row.taskDefinitionKey)) {
                    //判断是否可用节点,不可用,给编制
                    this.formApprove.assignee = row.variables.programmer;
                }if(['teamLeaderTask','repalceProgrammingTask','unlockProgramConfirm'].includes(row.taskDefinitionKey)){
                    //初始节点不通过就是结束流程,处理人为空
                    this.formApprove.assignee = '';
                }
            }else if(approve === 'R'){
                //驳回,目前只有检查程序是否可用节点
                if(["confirmIsUseableTask"].includes(row.taskDefinitionKey)) {
                    //判断程序是否可用节点,驳回,给组长
                    this.formApprove.assignee = row.variables.teamLeader;
                }
            }else if(approve === 'E'){//END 结束流程,不可选处理人
                //驳回,目前只有检查程序是否可用节点
                this.optionApprove.column[1].disabled = true;//处理人选项禁用
                this.formApprove.assignee = ''
            }
            
        },
@@ -460,17 +529,26 @@
                    }).catch(err => {
                        this.$message.success('操作失败');
                    })
                }).catch(() => {
                    // this.$message.info('已取消操作');
                });
            } else {
                this.reassignBox = true;
                if(val === 3) {//批量审批时 显示通过驳回
                    this.reassignOption.column[0].display = true;
                    this.reassignOption.column[0].dicData[1].label = '不通过';
                    this.reassignForm.approve = 'Y';
                    this.reassignForm.newAssigneeId = '';
                    this.reassignOption.column[1].disabled = true;
                    this.reassignOption.column[1].display = true;
                } else {
                    this.reassignOption.column[0].display = false;
                    this.reassignForm.approve = '';
                }
                if(val ===1) {
                    this.reassignForm.newAssigneeId = this.transferTaskSelection[0].variables.programmer;
                }
            }
            
@@ -484,7 +562,8 @@
                    confirmButtonText: this.$t('submitText'),
                    cancelButtonText: this.$t('cancelText'),
                    type: 'warning',
                }).then(() => {
                }).then((res) => {
                    console.log(res,'>>>>>>')
                    reassgin({
                        ...form,
                        taskId: this.transferTaskSelection[0].taskId,
@@ -504,6 +583,10 @@
                        this.$message.error('操作失败');
                        done()
                    })
                }).catch(() => {
                    console.log('>>>>>>')
                    // this.$message.info('已取消操作');
                    done();
                });
                
            } else if (this.reassignType === 1) {
@@ -532,6 +615,10 @@
                        console.error(err);
                        done()
                    })
                }).catch(() => {
                    console.log('>>>>>>')
                    // this.$message.info('已取消操作');
                    done();
                });
            } else if (this.reassignType === 3) {
                this.$confirm('确认要进行批量审批吗?', '', {
@@ -560,17 +647,38 @@
                        console.error(err);
                        done()
                    })
                }).catch(() => {
                    console.log('>>>>>>')
                    // this.$message.info('已取消操作');
                    done();
                });
            }
        },
        handleAction(row, index) {
             getAssignee({
                taskId: row.taskId,
             }).then(res => {
                //if(row.taskDefinitionKey === '')
                this.assigneeData = res.data.data;
                this.allAssigneeData = res.data.data;
                //初始化数控管理员的数组
                for(var i=0;i<this.allAssigneeData.length;i++){
                    if(this.allAssigneeData[i].manager == true){
                        this.managerAssigneeData[this.managerAssigneeData.length] = this.allAssigneeData[i];
                    }
                }
                this.optionApprove.column[1].dicData = this.assigneeData;
                this.reassignOption.column[1].dicData = this.assigneeData;
            })
            this.formApprove = {
                comment: '',
                approve: 'Y', // 默认同
            }
            this.approveBox = true;
            this.row = row
            this.setAssignee(row, this.formApprove.approve);
            this.setApproveBtn(row);
            console.log('handleAction', row, index);
        },
        handleSubmit(form, done) {
@@ -672,7 +780,7 @@
    }
    .left {
        width: 400px;
        width: 40%;
    }
    .right {