yangys
2025-09-04 2781142ab67deba83925da706ca26b7f8ea1a759
src/views/flow/todolist.vue
@@ -36,7 +36,9 @@
                        v-model="activeName"
                    >
                        <el-tab-pane label="审批" name="approve">
                            <avue-form ref="form" :option="optionApprove" v-model="formApprove" @submit="handleSubmit" />
                            <avue-form ref="form" :option="optionApprove" v-model="formApprove" @submit="handleSubmit" >
                            </avue-form>
                        </el-tab-pane>
                        <el-tab-pane label="流程轨迹" name="log">
                            <processTrace :item="row" v-if="activeName==='log'"></processTrace>
@@ -47,19 +49,15 @@
            </div>
        </el-drawer>
    </basic-container>
    <div>
        <top-todo ref="topTodoComponent" />
    </div>
</template>
<script>
import { getList, approve, getAssignee,reassgin,manualDispatch,autoDispatch,getPrevius,batchApprove } from '@/api/flow/todolist';
import { getList, approve, getAssignee,getAssigneeTree,reassgin,manualDispatch,autoDispatch,todoChangeNotify,batchApprove } from '@/api/flow/todolist';
import { mapGetters } from 'vuex';
import dayjs from 'dayjs';
import TodolistLeft from './components/TodolistLeft.vue';
import TodolistRightTop from './components/TodolistRightTop.vue';
import processTrace from './components/process-trace.vue';
//import top-todo from '../../page/index/LoadGood.vue';
export default {
    components: {
        TodolistLeft,
@@ -73,13 +71,18 @@
            assigneeData: [],
            allAssigneeData: [],
            managerAssigneeData: [],//数控管理员角色的审批用户
            assignee2Data:[],
            row: {},
            approveBox: false,
            formApprove: {
                comment: '',
                approve: '', // 默认同意
                assignee: ''
                approve: '',
                assignee: '',
            },
            optionApprove: {
                labelWidth: 100,
                column: [
@@ -94,7 +97,7 @@
                            { label: '驳回', value: 'N' },
                        ],
                        rules: [{ required: true, message: '请选择审批结果', trigger: 'blur' }],
                    },
                    },/*
                    {
                        label: '发送给',
                        prop: 'assignee',
@@ -110,7 +113,24 @@
                        dicData: [
                        ],
                        // rules: [{ required: true, message: '请选择下一审批用户', trigger: 'blur' }],
                    },*/
                    {
                        label: '发送给',
                        prop: 'assignee',
                        component: 'elTreeSelect',
                        params: {
                            props:{
                                label: 'name',
                                value:'id',
                                disabled: (data) => data.nodeType==='dept',
                                isLeaf: (data) => data.children==null || data.children.length==0,
                            },
                        },
                        display: true,
                        filterable: true,
                        span: 24,
                        disabled: false,
                    },
                    {
                        label: '备注',
@@ -132,6 +152,7 @@
                            }
                        ]
                    },
                ],
            },
            page: {
@@ -149,12 +170,10 @@
                delBtn: false,
                columnBtn: false,
                tip: false,
                // simplePage: true,
                searchEnter:true,
                searchShow: true,
                searchMenuSpan: 6,
                dialogWidth: '60%',
                // tree: true,
                border: true,
                index: true,
                selection: true,
@@ -222,6 +241,7 @@
                        label: '机床',
                        width: 100,
                        prop: '',
                        showOverflowTooltip:true,
                        formatter: (val, value, label) => {
                            return `${val?.variables?.machineCode}`;
                        },
@@ -242,6 +262,7 @@
                        search: true,
                        searchRange: true,
                        searchSpan: 8,
                        showOverflowTooltip:true,
                        // hide: true,
                    },
                    {
@@ -254,18 +275,23 @@
                    },
                    {
                        label: '当前节点',
                        width: 100,
                        width: 120,
                        showOverflowTooltip:true,
                        prop: 'taskName',
                    },
                    {
                        label: '文件',
                        width: 200,
                        prop: 'file',
                        showOverflowTooltip:true,
                    },
                    {
                        label: '到达时间',
                        width: 120,
                        prop: 'createTime',
                        showOverflowTooltip:true,
                    },
                    {
                        label: '到达描述',
@@ -298,6 +324,25 @@
                    {
                        label: '发送给',
                        prop: 'newAssigneeId',
                        component: 'elTreeSelect',
                        params: {
                            props:{
                                label: 'name',
                                value:'id',
                                disabled: (data) => data.nodeType==='dept',
                                isLeaf: (data) => data.children==null || data.children.length==0,
                            },
                        },
                        display: true,
                        filterable: true,
                        span: 24,
                        disabled: false,
                        rules: [{ required: true, message: '请输入选择', trigger: 'blur' }],
                    },
                    /*
                    {
                        label: '发送给',
                        prop: 'newAssigneeId',
                        filterable:true,
                        type: 'select',
                        props: {
@@ -311,13 +356,12 @@
                        ],
                        rules: [{ required: true, message: '请输入选择', trigger: 'blur' }],
                    },
                    },*/
                    {
                        label: '备注',
                        span: 24,
                        prop: 'comment',
                        type: 'textarea',
                        // rules: [{ required: true, message: '请输入审批意见', trigger: 'blur' }],
                    },
                ],
            },
@@ -325,24 +369,9 @@
        };
    },
    watch: {
        // 'form.category'() {
        //     const category = func.toInt(this.form.category);
        //     this.$refs.crud.option.column.filter(item => {
        //         if (item.prop === 'path') {
        //             item.rules[0].required = category === 1;
        //         }
        //         if (item.prop === 'isOpen') {
        //             item.disabled = category === 2;
        //         }
        //     });
        // },
        'formApprove.approve'(val) {
            this.setAssignee(this.row, val);
            // if(val === 'Y' && ['confirmIsUseableTask'].includes(this.row.taskDefinitionKey) && this.row.variables.isProcessEditionSame=='N') {
            //     // this.optionApprove.column[2].display = true; // 显示工序版次
            // } else {
            //     this.optionApprove.column[2].display = false; // 隐藏工序版次
            // }
            
        },
        'reassignForm.approve'(val) {
@@ -372,10 +401,35 @@
    },
    mounted() {
        //this.setApproveBtn(row)
        /*
        getAssignee({
                taskId: 0,
             }).then(res => {
                //if(row.taskDefinitionKey === '')
                this.assigneeData = res.data.data;
                this.reassignOption.column[1].dicData = this.assigneeData;
             });
        */
         getAssigneeTree({
                taskId: 0,
             }).then(res => {
                this.assigneeData = res.data.data;
                //初始化数控管理员的数组
                for(var i=0;i<this.assigneeData.length;i++){
                    for(var j=0;j<this.assigneeData[i].children.length;j++){
                        if(this.assigneeData[i].children[j].nodeType=='manager'){
                            this.managerAssigneeData[this.managerAssigneeData.length] = this.assigneeData[i].children[j];
                        }
                    }
                }
                this.optionApprove.column[1].data = this.assigneeData;
                this.reassignOption.column[1].data = this.assigneeData;
             });
    },
    methods: {
        // 设置审批结果的状态
        setApproveBtn (row) {
        setApproveBtn (row) { // 设置审批结果的状态
            // 1.审批界面radio文本修改,普通节点的2个radio文本 通过(approve=Y),不通过(现在的驳回)(approve=N)
            
            this.optionApprove.column[0].dicData = [
@@ -435,10 +489,10 @@
            
            if (["cureProgramTask"].includes(row.taskDefinitionKey)) {
                if(approve === 'N'){
                    this.optionApprove.column[1].dicData = this.managerAssigneeData;
                    this.optionApprove.column[1].data = this.managerAssigneeData;
                }else{
                    //this.assigneeData = this.allAssigneeData;
                    this.optionApprove.column[1].dicData = this.allAssigneeData;
                    //this.optionApprove.column[1].dicData = this.allAssigneeData;
                    this.optionApprove.column[1].data = this.assigneeData;
                }
            }
            if (approve === 'Y') {//审批通过的情况
@@ -466,11 +520,13 @@
                this.optionApprove.column[1].disabled = true;
                if (["approveTask", 'seniorApproveTask','replaceApprove','unlockApproveTask','appendApproveTask'].includes(row.taskDefinitionKey)) {
                    //审批节点,不通过给编制:编制是责任人,不给校对了
                    this.formApprove.assignee = row.variables.programmer;
                    //审批节点,不通过给编制:编制是责任人,给实际编程员
                    //this.formApprove.assignee = row.variables.programmer;
                    this.formApprove.assignee = row.variables.actProgrammer;//给实际编程员
                } else if(["check", 'cureCheckTask','repalceCheckTask','appendCheckTask'].includes(row.taskDefinitionKey)){
                    //校对节点,上一步是编程
                    this.formApprove.assignee = row.variables.programmer;
                    //this.formApprove.assignee = row.variables.programmer;
                    this.formApprove.assignee = row.variables.actProgrammer;//给实际编程员
                }else if (["programmingTask"].includes(row.taskDefinitionKey)) {
                    // 试切编制节点,上一步是组长
                    this.formApprove.assignee = row.variables.teamLeader;
@@ -478,13 +534,10 @@
                    //固化编制节点,不通过给数控管理员
                    //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;
                        }
                    if(this.managerAssigneeData.length>0){
                        this.formApprove.assignee = this.managerAssigneeData[0].id;
                    }
                    //this.formApprove.assignee = '';
                }else if(["confirmIsUseableTask"].includes(row.taskDefinitionKey)) {
                    //判断是否可用节点,不可用,给编制
                    this.formApprove.assignee = row.variables.programmer;
@@ -510,6 +563,7 @@
            this.transferTaskSelection = list;
        },
        reassign(val) {// 重新指派
            //var 0:批量转派;1:手动派工;2:自动派工;3:批量审批
            this.reassignType = val;
            if (this.transferTaskSelection.length === 0) {
                this.$message.warning('请选择需要操作的任务');
@@ -535,7 +589,7 @@
                        }
                        this.$message.success('操作成功');
                        this.onLoad(this.page, this.query);
                        todoChangeNotify();
                    }).catch(err => {
                        this.$message.success('操作失败');
                    })
@@ -543,6 +597,7 @@
                    // this.$message.info('已取消操作');
                });
            } else {
                //0重新指派 3批量审批 ,1手动派工
                this.reassignBox = true;
                if(val === 3) {//批量审批时 显示通过驳回
@@ -553,9 +608,14 @@
                    this.reassignOption.column[1].disabled = true;
                    this.reassignOption.column[1].display = true;
                } else {
                    //0
                    this.reassignOption.column[0].display = false;
                    this.reassignForm.approve = '';
                    if(val === 0 || val === 1) {//0重新指派 1手动派工 ,需要显示处理人
                        this.reassignOption.column[1].disabled = false;
                        this.reassignOption.column[1].display = true;
                    }
                }
                if(val ===1) {
                    this.reassignForm.newAssigneeId = this.transferTaskSelection[0].variables.programmer;
@@ -587,6 +647,8 @@
                        this.reassignBox = false;
                        this.$refs?.reassginform?.resetForm();
                        this.onLoad(this.page, this.query);
                        todoChangeNotify();
                        done()
                    }).catch(err => {
@@ -619,6 +681,8 @@
                        this.reassignBox = false;
                        this.$refs?.reassginform?.resetForm();
                        this.onLoad(this.page, this.query);
                        todoChangeNotify();
                        done()
                    }).catch(err => {
@@ -651,6 +715,8 @@
                        this.reassignBox = false;
                        this.$refs?.reassginform?.resetForm();
                        this.onLoad(this.page, this.query);
                        todoChangeNotify();
                        done()
                    }).catch(err => {
@@ -665,20 +731,24 @@
            }
        },
        handleAction(row, index) {
             getAssignee({
             getAssigneeTree({
                taskId: row.taskId,
             }).then(res => {
                //if(row.taskDefinitionKey === '')
                this.assigneeData = res.data.data;
                this.allAssigneeData = res.data.data;
                this.managerAssigneeData=[];
                //初始化数控管理员的数组
                for(var i=0;i<this.allAssigneeData.length;i++){
                    if(this.allAssigneeData[i].manager == true){
                        this.managerAssigneeData[this.managerAssigneeData.length] = this.allAssigneeData[i];
                for(var i=0;i<this.assigneeData.length;i++){
                    for(var j=0;j<this.assigneeData[i].children.length;j++){
                        if(this.assigneeData[i].children[j].nodeType=='manager'){
                            this.managerAssigneeData[this.managerAssigneeData.length] = this.assigneeData[i].children[j];
                        }
                    }
                }
                this.optionApprove.column[1].dicData = this.assigneeData;
                this.reassignOption.column[1].dicData = this.assigneeData;
                this.optionApprove.column[1].data = this.assigneeData;
                this.reassignOption.column[1].data = this.assigneeData;
            })
            this.formApprove = {
                comment: '',
@@ -689,7 +759,7 @@
            this.setAssignee(row, this.formApprove.approve);
            this.setApproveBtn(row);
            console.log('handleAction', row, index);
            //console.log('handleAction', row, index);
        },
        handleSubmit(form, done) {
            if(this.row.taskDefinitionKey === 'programmingTask') {
@@ -712,6 +782,8 @@
                this.$message.success('审批成功');
                this.approveBox = false;
                this.onLoad(this.page, this.query);
                todoChangeNotify();//顶部待办数量刷新
                done();
            }).catch(err => {
                done();
@@ -725,12 +797,6 @@
            console.log('searchChange', params);
            params.createTimeBegin = params?.processCreateTime?.[0] || '';
            params.createTimeEnd = params?.processCreateTime?.[1] || '';
            console.log(params);
            // data = {
            //     createTimeBegin: dayjs(params.createTimeBegin).isValid() ? dayjs(params.createTimeBegin).format('YYYY-MM-DD') : '',
            //     createTimeEnd: dayjs(params.createTimeEnd).isValid() ? dayjs(params.createTimeEnd).format('YYYY-MM-DD') : '',
            //     keyword: params.keyword || ''
            // }
            data = {
                createTimeBegin: params.createTimeBegin,
                createTimeEnd: params.createTimeEnd,