Commit 842cb6bd6b2ab53bedde440c68e6ee4e981189ba
1 parent
5efb4c26
BPM 模型重构 7:将任务分配规则,分装成前端组件
Showing
3 changed files
with
248 additions
and
194 deletions
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/enums/definition/BpmTaskAssignRuleTypeEnum.java
| @@ -16,6 +16,7 @@ public enum BpmTaskAssignRuleTypeEnum { | @@ -16,6 +16,7 @@ public enum BpmTaskAssignRuleTypeEnum { | ||
| 16 | 16 | ||
| 17 | DEPT_MEMBER(20, "部门的成员"), // 包括负责人 | 17 | DEPT_MEMBER(20, "部门的成员"), // 包括负责人 |
| 18 | DEPT_LEADER(21, "部门的负责人"), | 18 | DEPT_LEADER(21, "部门的负责人"), |
| 19 | + POST(22, "岗位"), | ||
| 19 | 20 | ||
| 20 | USER(30, "用户"), | 21 | USER(30, "用户"), |
| 21 | 22 |
yudao-admin-ui/src/views/bpm/model/index.vue
| @@ -200,61 +200,7 @@ | @@ -200,61 +200,7 @@ | ||
| 200 | </el-dialog> | 200 | </el-dialog> |
| 201 | 201 | ||
| 202 | <!-- ========== 流程任务分配规则 ========== --> | 202 | <!-- ========== 流程任务分配规则 ========== --> |
| 203 | - <!-- 列表弹窗 --> | ||
| 204 | - <el-dialog title="任务分配规则" :visible.sync="taskAssignRule.listOpen" width="800px" append-to-body> | ||
| 205 | - <el-table v-loading="taskAssignRule.loading" :data="taskAssignRule.list"> | ||
| 206 | - <el-table-column label="任务名" align="center" prop="taskDefinitionName" width="120" fixed /> | ||
| 207 | - <el-table-column label="任务标识" align="center" prop="taskDefinitionKey" width="120" show-tooltip-when-overflow /> | ||
| 208 | - <el-table-column label="规则类型" align="center" prop="type" width="120"> | ||
| 209 | - <template slot-scope="scope"> | ||
| 210 | - <span>{{ getDictDataLabel(DICT_TYPE.BPM_TASK_ASSIGN_RULE_TYPE, scope.row.type) }}</span> | ||
| 211 | - </template> | ||
| 212 | - </el-table-column> | ||
| 213 | - <el-table-column label="规则范围" align="center" prop="options" width="300px"> | ||
| 214 | - <template slot-scope="scope"> | ||
| 215 | - <el-tag size="medium" v-if="scope.row.options" v-for="option in scope.row.options"> | ||
| 216 | - {{ getAssignRuleOptionName(scope.row.type, option) }} | ||
| 217 | - </el-tag> | ||
| 218 | - </template> | ||
| 219 | - </el-table-column> | ||
| 220 | - <el-table-column label="操作" align="center" width="80" fixed="right"> | ||
| 221 | - <template slot-scope="scope"> | ||
| 222 | - <!-- TODO 权限 --> | ||
| 223 | - <el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdateTaskAssignRule(scope.row)" | ||
| 224 | - v-hasPermi="['bpm:model:update']">修改</el-button> | ||
| 225 | - </template> | ||
| 226 | - </el-table-column> | ||
| 227 | - </el-table> | ||
| 228 | - </el-dialog> | ||
| 229 | - <!-- 添加/修改弹窗 --> | ||
| 230 | - <el-dialog title="修改任务规则" :visible.sync="taskAssignRule.open" width="500px" append-to-body> | ||
| 231 | - <el-form ref="taskAssignRuleForm" :model="taskAssignRule.form" :rules="taskAssignRule.rules" label-width="110px"> | ||
| 232 | - <el-form-item label="任务名称" prop="taskDefinitionName"> | ||
| 233 | - <el-input v-model="taskAssignRule.form.taskDefinitionName" disabled /> | ||
| 234 | - </el-form-item> | ||
| 235 | - <el-form-item label="任务标识" prop="taskDefinitionKey"> | ||
| 236 | - <el-input v-model="taskAssignRule.form.taskDefinitionKey" disabled /> | ||
| 237 | - </el-form-item> | ||
| 238 | - <el-form-item label="规则类型" prop="type"> | ||
| 239 | - <el-select v-model="taskAssignRule.form.type" clearable style="width: 100%"> | ||
| 240 | - <el-option v-for="dict in taskAssignRuleDictDatas" :key="parseInt(dict.value)" :label="dict.label" :value="parseInt(dict.value)"/> | ||
| 241 | - </el-select> | ||
| 242 | - </el-form-item> | ||
| 243 | - <el-form-item v-if="taskAssignRule.form.type === 10" label="指定角色" prop="roleIds"> | ||
| 244 | - <el-select v-model="taskAssignRule.form.roleIds" multiple clearable style="width: 100%"> | ||
| 245 | - <el-option v-for="item in taskAssignRule.roleOptions" :key="parseInt(item.id)" :label="item.name" :value="parseInt(item.id)" /> | ||
| 246 | - </el-select> | ||
| 247 | - </el-form-item> | ||
| 248 | - <el-form-item v-if="taskAssignRule.form.type === 20 || taskAssignRule.form.type === 21" label="指定部门" prop="deptIds"> | ||
| 249 | - <treeselect v-model="taskAssignRule.form.deptIds" :options="taskAssignRule.deptTreeOptions" multiple flat :defaultExpandLevel="3" | ||
| 250 | - placeholder="请选择指定部门" :normalizer="normalizer"/> | ||
| 251 | - </el-form-item> | ||
| 252 | - </el-form> | ||
| 253 | - <div slot="footer" class="dialog-footer"> | ||
| 254 | - <el-button type="primary" @click="submitAssignRuleForm">确 定</el-button> | ||
| 255 | - <el-button @click="cancelAssignRuleForm">取 消</el-button> | ||
| 256 | - </div> | ||
| 257 | - </el-dialog> | 203 | + <taskAssignRuleDialog ref="taskAssignRuleDialog" /> |
| 258 | </div> | 204 | </div> |
| 259 | </template> | 205 | </template> |
| 260 | 206 | ||
| @@ -273,9 +219,7 @@ import {getForm, getSimpleForms} from "@/api/bpm/form"; | @@ -273,9 +219,7 @@ import {getForm, getSimpleForms} from "@/api/bpm/form"; | ||
| 273 | import {decodeFields} from "@/utils/formGenerator"; | 219 | import {decodeFields} from "@/utils/formGenerator"; |
| 274 | import Parser from '@/components/parser/Parser' | 220 | import Parser from '@/components/parser/Parser' |
| 275 | import {getBaseHeader} from "@/utils/request"; | 221 | import {getBaseHeader} from "@/utils/request"; |
| 276 | -import {createTaskAssignRule, getTaskAssignRuleList, updateTaskAssignRule} from "@/api/bpm/taskAssignRule"; | ||
| 277 | -import {listSimpleRoles} from "@/api/system/role"; | ||
| 278 | -import {listSimpleDepts} from "@/api/system/dept"; | 222 | +import taskAssignRuleDialog from "../taskAssignRule/taskAssignRuleDialog"; |
| 279 | 223 | ||
| 280 | import Treeselect from "@riophae/vue-treeselect"; | 224 | import Treeselect from "@riophae/vue-treeselect"; |
| 281 | import "@riophae/vue-treeselect/dist/vue-treeselect.css"; | 225 | import "@riophae/vue-treeselect/dist/vue-treeselect.css"; |
| @@ -284,7 +228,8 @@ export default { | @@ -284,7 +228,8 @@ export default { | ||
| 284 | name: "model", | 228 | name: "model", |
| 285 | components: { | 229 | components: { |
| 286 | Parser, | 230 | Parser, |
| 287 | - Treeselect | 231 | + Treeselect, |
| 232 | + taskAssignRuleDialog | ||
| 288 | }, | 233 | }, |
| 289 | data() { | 234 | data() { |
| 290 | return { | 235 | return { |
| @@ -329,25 +274,6 @@ export default { | @@ -329,25 +274,6 @@ export default { | ||
| 329 | formCustomViewPath: [{ required: true, message: "表单查看路由不能为空", trigger: "blur" }], | 274 | formCustomViewPath: [{ required: true, message: "表单查看路由不能为空", trigger: "blur" }], |
| 330 | }, | 275 | }, |
| 331 | 276 | ||
| 332 | - // 任务分配规则表单 | ||
| 333 | - taskAssignRule: { | ||
| 334 | - row: undefined, // 选中的流程模型 | ||
| 335 | - list: [], // 选中流程模型的任务分配规则们 | ||
| 336 | - listOpen: false, // 列表是否打开 | ||
| 337 | - loading: false, // 加载中 | ||
| 338 | - open: false, // 是否打开 | ||
| 339 | - form: {}, // 表单 | ||
| 340 | - rules: { // 表单校验规则 | ||
| 341 | - type: [{ required: true, message: "规则类型不能为空", trigger: "change" }], | ||
| 342 | - roleIds: [{required: true, message: "指定角色不能为空", trigger: "change" }], | ||
| 343 | - deptIds: [{required: true, message: "指定部门不能为空", trigger: "change" }], | ||
| 344 | - }, | ||
| 345 | - // 各种下拉框 | ||
| 346 | - roleOptions: [], | ||
| 347 | - deptOptions: [], | ||
| 348 | - deptTreeOptions: [], | ||
| 349 | - }, | ||
| 350 | - | ||
| 351 | // 流程导入参数 | 277 | // 流程导入参数 |
| 352 | upload: { | 278 | upload: { |
| 353 | // 是否显示弹出层(用户导入) | 279 | // 是否显示弹出层(用户导入) |
| @@ -600,125 +526,10 @@ export default { | @@ -600,125 +526,10 @@ export default { | ||
| 600 | this.$refs.upload.submit(); | 526 | this.$refs.upload.submit(); |
| 601 | }) | 527 | }) |
| 602 | }, | 528 | }, |
| 603 | - // ========== ========== | ||
| 604 | - doGetTaskAssignRuleList() { | ||
| 605 | - this.taskAssignRule.loading = true; | ||
| 606 | - getTaskAssignRuleList({ | ||
| 607 | - modelId: this.taskAssignRule.row.id | ||
| 608 | - }).then(response => { | ||
| 609 | - this.taskAssignRule.loading = false; | ||
| 610 | - this.taskAssignRule.list = response.data; | ||
| 611 | - }) | ||
| 612 | - }, | ||
| 613 | /** 处理任务分配规则列表的按钮操作 */ | 529 | /** 处理任务分配规则列表的按钮操作 */ |
| 614 | handleAssignRule(row) { | 530 | handleAssignRule(row) { |
| 615 | - this.taskAssignRule.row = row; | ||
| 616 | - this.taskAssignRule.listOpen = true; | ||
| 617 | - this.doGetTaskAssignRuleList(); | ||
| 618 | - // 获得角色列表 | ||
| 619 | - this.taskAssignRule.roleOptions = []; | ||
| 620 | - listSimpleRoles().then(response => { | ||
| 621 | - this.taskAssignRule.roleOptions.push(...response.data); | ||
| 622 | - }); | ||
| 623 | - // 获得部门列表 | ||
| 624 | - this.taskAssignRule.deptOptions = []; | ||
| 625 | - this.taskAssignRule.deptTreeOptions = []; | ||
| 626 | - listSimpleDepts().then(response => { | ||
| 627 | - // 处理 roleOptions 参数 | ||
| 628 | - this.taskAssignRule.deptOptions.push(...response.data); | ||
| 629 | - this.taskAssignRule.deptTreeOptions.push(...this.handleTree(response.data, "id")); | ||
| 630 | - }); | ||
| 631 | - }, | ||
| 632 | - /** 处理修改任务分配规则的按钮操作 */ | ||
| 633 | - handleUpdateTaskAssignRule(row) { | ||
| 634 | - // 先重置标识 | ||
| 635 | - this.resetAssignRuleForm(); | ||
| 636 | - // 设置表单 | ||
| 637 | - this.taskAssignRule.form = { | ||
| 638 | - ...row, | ||
| 639 | - options: [], | ||
| 640 | - roleIds: [], | ||
| 641 | - deptIds: [], | ||
| 642 | - }; | ||
| 643 | - // 将 options 赋值到对应的 roleIds 等选项 | ||
| 644 | - if (row.type === 10) { | ||
| 645 | - this.taskAssignRule.form.roleIds.push(...row.options); | ||
| 646 | - } else if (row.type === 20 || row.type === 21) { | ||
| 647 | - this.taskAssignRule.form.deptIds.push(...row.options); | ||
| 648 | - } | ||
| 649 | - this.taskAssignRule.open = true; | ||
| 650 | - }, | ||
| 651 | - /** 提交任务分配规则的表单 */ | ||
| 652 | - submitAssignRuleForm() { | ||
| 653 | - this.$refs["taskAssignRuleForm"].validate(valid => { | ||
| 654 | - if (valid) { | ||
| 655 | - // 构建表单 | ||
| 656 | - let form = { | ||
| 657 | - ...this.taskAssignRule.form, | ||
| 658 | - taskDefinitionName: undefined, | ||
| 659 | - }; | ||
| 660 | - // 将 roleIds 等选项赋值到 options 中 | ||
| 661 | - if (form.type === 10) { | ||
| 662 | - form.options = form.roleIds; | ||
| 663 | - } else if (form.type === 20 || form.type === 21) { | ||
| 664 | - form.options = form.deptIds; | ||
| 665 | - } | ||
| 666 | - form.roleIds = undefined; | ||
| 667 | - form.deptIds = undefined; | ||
| 668 | - // 新增 | ||
| 669 | - if (!form.id) { | ||
| 670 | - form.modelId = this.taskAssignRule.row.id // 模型编号 | ||
| 671 | - createTaskAssignRule(form).then(response => { | ||
| 672 | - this.msgSuccess("修改成功"); | ||
| 673 | - this.taskAssignRule.open = false; | ||
| 674 | - this.doGetTaskAssignRuleList(); | ||
| 675 | - }); | ||
| 676 | - // 修改 | ||
| 677 | - } else { | ||
| 678 | - form.taskDefinitionKey = undefined; // 无法修改 | ||
| 679 | - updateTaskAssignRule(form).then(response => { | ||
| 680 | - this.msgSuccess("修改成功"); | ||
| 681 | - this.taskAssignRule.open = false; | ||
| 682 | - this.doGetTaskAssignRuleList(); | ||
| 683 | - }); | ||
| 684 | - } | ||
| 685 | - } | ||
| 686 | - }); | ||
| 687 | - }, | ||
| 688 | - /** 取消任务分配规则的表单 */ | ||
| 689 | - cancelAssignRuleForm() { | ||
| 690 | - this.taskAssignRule.open = false; | ||
| 691 | - this.resetAssignRuleForm(); | ||
| 692 | - }, | ||
| 693 | - /** 表单重置 */ | ||
| 694 | - resetAssignRuleForm() { | ||
| 695 | - this.taskAssignRule.form = {}; | ||
| 696 | - this.resetForm("taskAssignRuleForm"); | 531 | + this.$refs['taskAssignRuleDialog'].initModel(row.id); |
| 697 | }, | 532 | }, |
| 698 | - getAssignRuleOptionName(type, option) { | ||
| 699 | - if (type === 10) { | ||
| 700 | - for (const roleOption of this.taskAssignRule.roleOptions) { | ||
| 701 | - if (roleOption.id === option) { | ||
| 702 | - return roleOption.name; | ||
| 703 | - } | ||
| 704 | - } | ||
| 705 | - } else if (type === 20 || type === 21) { | ||
| 706 | - for (const deptOption of this.taskAssignRule.deptOptions) { | ||
| 707 | - if (deptOption.id === option) { | ||
| 708 | - return deptOption.name; | ||
| 709 | - } | ||
| 710 | - } | ||
| 711 | - } | ||
| 712 | - return '未知(' + option + ')'; | ||
| 713 | - }, | ||
| 714 | - // 格式化部门的下拉框 | ||
| 715 | - normalizer(node) { | ||
| 716 | - return { | ||
| 717 | - id: node.id, | ||
| 718 | - label: node.name, | ||
| 719 | - children: node.children | ||
| 720 | - } | ||
| 721 | - } | ||
| 722 | } | 533 | } |
| 723 | }; | 534 | }; |
| 724 | </script> | 535 | </script> |
yudao-admin-ui/src/views/bpm/taskAssignRule/taskAssignRuleDialog.vue
0 → 100644
| 1 | +<template> | ||
| 2 | + <div> | ||
| 3 | + <!-- 列表弹窗 --> | ||
| 4 | + <el-dialog title="任务分配规则" :visible.sync="visible" width="800px" append-to-body> | ||
| 5 | + <el-table v-loading="loading" :data="list"> | ||
| 6 | + <el-table-column label="任务名" align="center" prop="taskDefinitionName" width="120" fixed /> | ||
| 7 | + <el-table-column label="任务标识" align="center" prop="taskDefinitionKey" width="120" show-tooltip-when-overflow /> | ||
| 8 | + <el-table-column label="规则类型" align="center" prop="type" width="120"> | ||
| 9 | + <template slot-scope="scope"> | ||
| 10 | + <span>{{ getDictDataLabel(DICT_TYPE.BPM_TASK_ASSIGN_RULE_TYPE, scope.row.type) }}</span> | ||
| 11 | + </template> | ||
| 12 | + </el-table-column> | ||
| 13 | + <el-table-column label="规则范围" align="center" prop="options" width="300px"> | ||
| 14 | + <template slot-scope="scope"> | ||
| 15 | + <el-tag size="medium" v-if="scope.row.options" v-for="option in scope.row.options"> | ||
| 16 | + {{ getAssignRuleOptionName(scope.row.type, option) }} | ||
| 17 | + </el-tag> | ||
| 18 | + </template> | ||
| 19 | + </el-table-column> | ||
| 20 | + <el-table-column label="操作" align="center" width="80" fixed="right"> | ||
| 21 | + <template slot-scope="scope"> | ||
| 22 | + <!-- TODO 权限 --> | ||
| 23 | + <el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdateTaskAssignRule(scope.row)" | ||
| 24 | + v-hasPermi="['bpm:model:update']">修改</el-button> | ||
| 25 | + </template> | ||
| 26 | + </el-table-column> | ||
| 27 | + </el-table> | ||
| 28 | + </el-dialog> | ||
| 29 | + <!-- 添加/修改弹窗 --> | ||
| 30 | + <el-dialog title="修改任务规则" :visible.sync="open" width="500px" append-to-body> | ||
| 31 | + <el-form ref="taskAssignRuleForm" :model="form" :rules="rules" label-width="110px"> | ||
| 32 | + <el-form-item label="任务名称" prop="taskDefinitionName"> | ||
| 33 | + <el-input v-model="form.taskDefinitionName" disabled /> | ||
| 34 | + </el-form-item> | ||
| 35 | + <el-form-item label="任务标识" prop="taskDefinitionKey"> | ||
| 36 | + <el-input v-model="form.taskDefinitionKey" disabled /> | ||
| 37 | + </el-form-item> | ||
| 38 | + <el-form-item label="规则类型" prop="type"> | ||
| 39 | + <el-select v-model="form.type" clearable style="width: 100%"> | ||
| 40 | + <el-option v-for="dict in taskAssignRuleDictDatas" :key="parseInt(dict.value)" :label="dict.label" :value="parseInt(dict.value)"/> | ||
| 41 | + </el-select> | ||
| 42 | + </el-form-item> | ||
| 43 | + <el-form-item v-if="form.type === 10" label="指定角色" prop="roleIds"> | ||
| 44 | + <el-select v-model="form.roleIds" multiple clearable style="width: 100%"> | ||
| 45 | + <el-option v-for="item in roleOptions" :key="parseInt(item.id)" :label="item.name" :value="parseInt(item.id)" /> | ||
| 46 | + </el-select> | ||
| 47 | + </el-form-item> | ||
| 48 | + <el-form-item v-if="form.type === 20 || form.type === 21" label="指定部门" prop="deptIds"> | ||
| 49 | + <treeselect v-model="form.deptIds" :options="deptTreeOptions" multiple flat :defaultExpandLevel="3" | ||
| 50 | + placeholder="请选择指定部门" :normalizer="normalizer"/> | ||
| 51 | + </el-form-item> | ||
| 52 | + </el-form> | ||
| 53 | + <div slot="footer" class="dialog-footer"> | ||
| 54 | + <el-button type="primary" @click="submitAssignRuleForm">确 定</el-button> | ||
| 55 | + <el-button @click="cancelAssignRuleForm">取 消</el-button> | ||
| 56 | + </div> | ||
| 57 | + </el-dialog> | ||
| 58 | + </div> | ||
| 59 | +</template> | ||
| 60 | + | ||
| 61 | +<script> | ||
| 62 | +import {DICT_TYPE, getDictDatas} from "@/utils/dict"; | ||
| 63 | +import {createTaskAssignRule, getTaskAssignRuleList, updateTaskAssignRule} from "@/api/bpm/taskAssignRule"; | ||
| 64 | +import {listSimpleRoles} from "@/api/system/role"; | ||
| 65 | +import {listSimpleDepts} from "@/api/system/dept"; | ||
| 66 | + | ||
| 67 | +import Treeselect from "@riophae/vue-treeselect"; | ||
| 68 | +import "@riophae/vue-treeselect/dist/vue-treeselect.css"; | ||
| 69 | + | ||
| 70 | +export default { | ||
| 71 | + name: "taskAssignRuleDialog", | ||
| 72 | + components: { | ||
| 73 | + Treeselect | ||
| 74 | + }, | ||
| 75 | + data() { | ||
| 76 | + return { | ||
| 77 | + // 如下参数,可传递 | ||
| 78 | + modelId: undefined, // 流程模型的编号。如果 modelId 非空,则用于流程模型的查看与配置 | ||
| 79 | + processDefinitionId: undefined, // 流程定义的编号。如果 processDefinitionId 非空,则用于流程定义的查看,不支持配置 | ||
| 80 | + visible: false, | ||
| 81 | + | ||
| 82 | + // 任务分配规则表单 | ||
| 83 | + row: undefined, // 选中的流程模型 | ||
| 84 | + list: [], // 选中流程模型的任务分配规则们 | ||
| 85 | + loading: false, // 加载中 | ||
| 86 | + open: false, // 是否打开 | ||
| 87 | + form: {}, // 表单 | ||
| 88 | + rules: { // 表单校验规则 | ||
| 89 | + type: [{ required: true, message: "规则类型不能为空", trigger: "change" }], | ||
| 90 | + roleIds: [{required: true, message: "指定角色不能为空", trigger: "change" }], | ||
| 91 | + deptIds: [{required: true, message: "指定部门不能为空", trigger: "change" }], | ||
| 92 | + }, | ||
| 93 | + | ||
| 94 | + // 各种下拉框 | ||
| 95 | + roleOptions: [], | ||
| 96 | + deptOptions: [], | ||
| 97 | + deptTreeOptions: [], | ||
| 98 | + | ||
| 99 | + // 数据字典 | ||
| 100 | + modelFormTypeDictDatas: getDictDatas(DICT_TYPE.BPM_MODEL_FORM_TYPE), | ||
| 101 | + taskAssignRuleDictDatas: getDictDatas(DICT_TYPE.BPM_TASK_ASSIGN_RULE_TYPE), | ||
| 102 | + }; | ||
| 103 | + }, | ||
| 104 | + methods: { | ||
| 105 | + initModel(modelId) { | ||
| 106 | + this.modelId = modelId; | ||
| 107 | + this.processDefinitionId = undefined; | ||
| 108 | + | ||
| 109 | + // 初始化所有下拉框 | ||
| 110 | + this.init0(); | ||
| 111 | + }, | ||
| 112 | + initProcessDefinition(processDefinitionId) { | ||
| 113 | + this.modelId = undefined; | ||
| 114 | + this.processDefinitionId = processDefinitionId; | ||
| 115 | + | ||
| 116 | + // 初始化所有下拉框 | ||
| 117 | + this.init0(); | ||
| 118 | + }, | ||
| 119 | + /** 初始化 */ | ||
| 120 | + init0() { | ||
| 121 | + // 设置可见 | ||
| 122 | + this.visible = true; | ||
| 123 | + // 获得列表 | ||
| 124 | + this.getList(); | ||
| 125 | + | ||
| 126 | + // 获得角色列表 | ||
| 127 | + this.roleOptions = []; | ||
| 128 | + listSimpleRoles().then(response => { | ||
| 129 | + this.roleOptions.push(...response.data); | ||
| 130 | + }); | ||
| 131 | + // 获得部门列表 | ||
| 132 | + this.deptOptions = []; | ||
| 133 | + this.deptTreeOptions = []; | ||
| 134 | + listSimpleDepts().then(response => { | ||
| 135 | + // 处理 roleOptions 参数 | ||
| 136 | + this.deptOptions.push(...response.data); | ||
| 137 | + this.deptTreeOptions.push(...this.handleTree(response.data, "id")); | ||
| 138 | + }); | ||
| 139 | + }, | ||
| 140 | + /** 获得任务分配规则列表 */ | ||
| 141 | + getList() { | ||
| 142 | + this.loading = true; | ||
| 143 | + getTaskAssignRuleList({ | ||
| 144 | + modelId: this.modelId, | ||
| 145 | + }).then(response => { | ||
| 146 | + this.loading = false; | ||
| 147 | + this.list = response.data; | ||
| 148 | + }) | ||
| 149 | + }, | ||
| 150 | + /** 处理修改任务分配规则的按钮操作 */ | ||
| 151 | + handleUpdateTaskAssignRule(row) { | ||
| 152 | + // 先重置标识 | ||
| 153 | + this.resetAssignRuleForm(); | ||
| 154 | + // 设置表单 | ||
| 155 | + this.form = { | ||
| 156 | + ...row, | ||
| 157 | + options: [], | ||
| 158 | + roleIds: [], | ||
| 159 | + deptIds: [], | ||
| 160 | + }; | ||
| 161 | + // 将 options 赋值到对应的 roleIds 等选项 | ||
| 162 | + if (row.type === 10) { | ||
| 163 | + this.form.roleIds.push(...row.options); | ||
| 164 | + } else if (row.type === 20 || row.type === 21) { | ||
| 165 | + this.form.deptIds.push(...row.options); | ||
| 166 | + } | ||
| 167 | + this.open = true; | ||
| 168 | + }, | ||
| 169 | + /** 提交任务分配规则的表单 */ | ||
| 170 | + submitAssignRuleForm() { | ||
| 171 | + this.$refs["taskAssignRuleForm"].validate(valid => { | ||
| 172 | + if (valid) { | ||
| 173 | + // 构建表单 | ||
| 174 | + let form = { | ||
| 175 | + ...this.form, | ||
| 176 | + taskDefinitionName: undefined, | ||
| 177 | + }; | ||
| 178 | + // 将 roleIds 等选项赋值到 options 中 | ||
| 179 | + if (form.type === 10) { | ||
| 180 | + form.options = form.roleIds; | ||
| 181 | + } else if (form.type === 20 || form.type === 21) { | ||
| 182 | + form.options = form.deptIds; | ||
| 183 | + } | ||
| 184 | + form.roleIds = undefined; | ||
| 185 | + form.deptIds = undefined; | ||
| 186 | + // 新增 | ||
| 187 | + if (!form.id) { | ||
| 188 | + form.modelId = this.modelId; // 模型编号 | ||
| 189 | + createTaskAssignRule(form).then(response => { | ||
| 190 | + this.msgSuccess("修改成功"); | ||
| 191 | + this.open = false; | ||
| 192 | + this.getList(); | ||
| 193 | + }); | ||
| 194 | + // 修改 | ||
| 195 | + } else { | ||
| 196 | + form.taskDefinitionKey = undefined; // 无法修改 | ||
| 197 | + updateTaskAssignRule(form).then(response => { | ||
| 198 | + this.msgSuccess("修改成功"); | ||
| 199 | + this.open = false; | ||
| 200 | + this.getList(); | ||
| 201 | + }); | ||
| 202 | + } | ||
| 203 | + } | ||
| 204 | + }); | ||
| 205 | + }, | ||
| 206 | + /** 取消任务分配规则的表单 */ | ||
| 207 | + cancelAssignRuleForm() { | ||
| 208 | + this.open = false; | ||
| 209 | + this.resetAssignRuleForm(); | ||
| 210 | + }, | ||
| 211 | + /** 表单重置 */ | ||
| 212 | + resetAssignRuleForm() { | ||
| 213 | + this.form = {}; | ||
| 214 | + this.resetForm("taskAssignRuleForm"); | ||
| 215 | + }, | ||
| 216 | + getAssignRuleOptionName(type, option) { | ||
| 217 | + if (type === 10) { | ||
| 218 | + for (const roleOption of this.roleOptions) { | ||
| 219 | + if (roleOption.id === option) { | ||
| 220 | + return roleOption.name; | ||
| 221 | + } | ||
| 222 | + } | ||
| 223 | + } else if (type === 20 || type === 21) { | ||
| 224 | + for (const deptOption of this.deptOptions) { | ||
| 225 | + if (deptOption.id === option) { | ||
| 226 | + return deptOption.name; | ||
| 227 | + } | ||
| 228 | + } | ||
| 229 | + } | ||
| 230 | + return '未知(' + option + ')'; | ||
| 231 | + }, | ||
| 232 | + // 格式化部门的下拉框 | ||
| 233 | + normalizer(node) { | ||
| 234 | + return { | ||
| 235 | + id: node.id, | ||
| 236 | + label: node.name, | ||
| 237 | + children: node.children | ||
| 238 | + } | ||
| 239 | + } | ||
| 240 | + } | ||
| 241 | +}; | ||
| 242 | +</script> |