gaoshp
2025-08-10 5834870bf878dcfda0d8dd80fe00479f82bffff7
自动排工
已修改2个文件
148 ■■■■ 文件已修改
src/api/flow/todolist.js 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/flow/todolist.vue 127 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/flow/todolist.js
@@ -1,7 +1,7 @@
/*
 * @Date: 2025-06-12 22:38:05
 * @LastEditors: gaoshp
 * @LastEditTime: 2025-08-02 13:51:54
 * @LastEditTime: 2025-08-10 00:26:43
 * @FilePath: /mdmweb/src/api/flow/todolist.js
 */
import request from '@/axios';
@@ -68,6 +68,7 @@
    },
  })
}
// 重新指派
export const reassgin = data => {
  return request({
    url: '/blade-mdm/flow/transferTask',
@@ -75,4 +76,22 @@
    params: data,
    data: {}
  })
}
// 手动派工
export const manualDispatch = data => {
  return request({
    url: '/blade-mdm/flow/batchDispatch',
    method: 'post',
    params: data,
    data: {}
  })
}
// 自动派工
export const autoDispatch = data => {
  return request({
    url: '/blade-mdm/flow/batchDispatchAuto',
    method: 'post',
    params: data,
    data: {}
  })
}
src/views/flow/todolist.vue
@@ -5,10 +5,10 @@
            @size-change="sizeChange" @refresh-change="refreshChange" @on-load="onLoad"
            @selection-change="selectionTransferTask">
            <template #menu-left>
                <el-button type="primary" plain @click="reassign">重新指派</el-button>
                <el-button type="primary" v-if="permission.manual_dispatch" plain @click="reassign">手动派工
                <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">自动派工
                <el-button type="primary" v-if="permission.auto_dispatch" plain @click="reassign(2)">自动派工
                </el-button>
            </template>
            <template #menu="scope">
@@ -16,7 +16,7 @@
                </el-button>
            </template>
        </avue-crud>
        <el-dialog title="指派" append-to-body v-model="reassignBox" width="30%">
        <el-dialog title=" " append-to-body v-model="reassignBox" width="30%">
            <avue-form ref="reassginform" :option="reassignOption" v-model="reassignForm" @submit="toPerson"></avue-form>
        </el-dialog>
        <el-drawer title="审批" append-to-body v-model="approveBox" size="100%" v-if="approveBox">
@@ -34,7 +34,7 @@
</template>
<script>
import { getList, approve, getAssignee,reassgin } from '@/api/flow/todolist';
import { getList, approve, getAssignee,reassgin,manualDispatch,autoDispatch } from '@/api/flow/todolist';
import { mapGetters } from 'vuex';
import dayjs from 'dayjs';
import TodolistLeft from './components/TodolistLeft.vue';
@@ -45,8 +45,6 @@
        TodolistRightTop
    },
    data() {
        let rejectText = '驳回';//+this.row.categoryName;
        console.log(this,'ttt');
        return {
            
            applist: [],
@@ -69,7 +67,7 @@
                        span: 24,
                        dicData: [
                            { label: '通过', value: 'Y' },
                            { label: rejectText, value: 'N' },
                            { label: '驳回', value: 'N' },
                        ],
                        rules: [{ required: true, message: '请选择审批结果', trigger: 'blur' }],
                    },
@@ -250,6 +248,7 @@
            data: [],
            transferTaskSelection: [],
            reassignBox: false,
            reassignType: 0, // 0:重新指派,1:自动派工 2: 自动派工
            reassignOption: {
                submitBtn: true,
                emptyBtn: false,
@@ -381,40 +380,102 @@
        selectionTransferTask(list) {
            this.transferTaskSelection = list;
        },
        reassign() {// 重新指派
        reassign(val) {// 重新指派
            this.reassignType = val;
            if (this.transferTaskSelection.length === 0) {
                this.$message.warning('请选择需要重新指派的任务');
                this.$message.warning('请选择需要操作的任务');
                return;
            }
            if (this.transferTaskSelection.length > 1) {
            if (this.transferTaskSelection.length > 1 && this.reassignType === 0) {
                this.$message.warning('请选择一条');
                return;
            }
            this.reassignBox = true;
            if(val === 2) {
                this.$confirm('请确认是否进行批量自动派工?', '', {
                    confirmButtonText: this.$t('submitText'),
                    cancelButtonText: this.$t('cancelText'),
                    type: 'warning',
                }).then(() => {
                    autoDispatch({
                        taskIds: this.transferTaskSelection.map(v => v.taskId),
                        processInstanceIds: this.transferTaskSelection.map(v => v.processInstanceId),
                    }).then(res => {
                        if(res.data.code !== 200) {
                            this.$message.error(res.data.msg);
                            return;
                        }
                        this.$message.success('操作成功');
                        this.onLoad(this.page, this.query);
                    }).catch(err => {
                        this.$message.success('操作失败');
                    })
                });
            } else {
                this.reassignBox = true;
            }
        },
        toPerson(form, done) {
            this.$confirm('请确认是否指派', '', {
                confirmButtonText: this.$t('submitText'),
                cancelButtonText: this.$t('cancelText'),
                type: 'warning',
            }).then(() => {
                console.log('toPerson', form);
                reassgin({
                    ...form,
                    taskId: this.transferTaskSelection[0].taskId,
                    processInstanceId: this.transferTaskSelection[0].processInstanceId,
                }).then(res => {
                    this.$message.success('指派成功');
                    this.reassignBox = false;
                    this.$refs?.reassginform?.resetForm();
                    this.onLoad(this.page, this.query);
                    done()
            let tip = ''
            this.reassignType === 1 ? tip = '请确认是否手动派工' : this.reassignType === 2 ? tip = '请确认是否自动派工' : tip = '请确认是否重新指派';
            if (this.reassignType === 0) {
                this.$confirm(tip, '', {
                    confirmButtonText: this.$t('submitText'),
                    cancelButtonText: this.$t('cancelText'),
                    type: 'warning',
                }).then(() => {
                    reassgin({
                        ...form,
                        taskId: this.transferTaskSelection[0].taskId,
                        processInstanceId: this.transferTaskSelection[0].processInstanceId,
                    }).then(res => {
                        if(res.data.code !== 200) {
                            this.$message.error(res.data.msg);
                            return;
                        }
                        this.$message.success('操作成功');
                        this.reassignBox = false;
                        this.$refs?.reassginform?.resetForm();
                        this.onLoad(this.page, this.query);
                        done()
                }).catch(err => {
                    console.error(err);
                    done()
                })
            });
                    }).catch(err => {
                        this.$message.error('操作失败');
                        done()
                    })
                });
            } else if (this.reassignType === 1) {
                this.$confirm(tip, '', {
                    confirmButtonText: this.$t('submitText'),
                    cancelButtonText: this.$t('cancelText'),
                    type: 'warning',
                }).then(() => {
                    manualDispatch({
                        assignee: form.newAssigneeId,
                        comment: form.comment,
                        taskIds: this.transferTaskSelection.map(v => v.taskId),
                        processInstanceIds: this.transferTaskSelection.map(v => v.processInstanceId),
                    }).then(res => {
                        if(res.data.code !== 200) {
                            this.$message.error(res.data.msg);
                            return;
                        }
                        this.$message.success('操作成功');
                        this.reassignBox = false;
                        this.$refs?.reassginform?.resetForm();
                        this.onLoad(this.page, this.query);
                        done()
                    }).catch(err => {
                        console.error(err);
                        done()
                    })
                });
            }
            done();
        },
        handleAction(row, index) {