UserTask.vue 3.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. <template>
  2. <div style="margin-top: 16px">
  3. <!-- <el-form-item label="处理用户">-->
  4. <!-- <el-select v-model="userTaskForm.assignee" @change="updateElementTask('assignee')">-->
  5. <!-- <el-option v-for="ak in mockData" :key="'ass-' + ak" :label="`用户${ak}`" :value="`user${ak}`" />-->
  6. <!-- </el-select>-->
  7. <!-- </el-form-item>-->
  8. <!-- <el-form-item label="候选用户">-->
  9. <!-- <el-select v-model="userTaskForm.candidateUsers" multiple collapse-tags @change="updateElementTask('candidateUsers')">-->
  10. <!-- <el-option v-for="uk in mockData" :key="'user-' + uk" :label="`用户${uk}`" :value="`user${uk}`" />-->
  11. <!-- </el-select>-->
  12. <!-- </el-form-item>-->
  13. <!-- <el-form-item label="候选分组">-->
  14. <!-- <el-select v-model="userTaskForm.candidateGroups" multiple collapse-tags @change="updateElementTask('candidateGroups')">-->
  15. <!-- <el-option v-for="gk in mockData" :key="'ass-' + gk" :label="`分组${gk}`" :value="`group${gk}`" />-->
  16. <!-- </el-select>-->
  17. <!-- </el-form-item>-->
  18. <el-form-item label="到期时间">
  19. <el-input v-model="userTaskForm.dueDate" clearable @change="updateElementTask('dueDate')" />
  20. </el-form-item>
  21. <el-form-item label="跟踪时间">
  22. <el-input v-model="userTaskForm.followUpDate" clearable @change="updateElementTask('followUpDate')" />
  23. </el-form-item>
  24. <el-form-item label="优先级">
  25. <el-input v-model="userTaskForm.priority" clearable @change="updateElementTask('priority')" />
  26. </el-form-item>
  27. 友情提示:任务的分配规则,使用
  28. <router-link target="_blank" :to="{path:'/bpm/manager/model'}"><el-link type="danger">流程模型</el-link> </router-link>
  29. 下的【分配规则】替代,提供指定角色、部门负责人、部门成员、岗位、工作组、自定义脚本等 7 种维护的任务分配维度,更加灵活!
  30. </div>
  31. </template>
  32. <script>
  33. export default {
  34. name: "UserTask",
  35. props: {
  36. id: String,
  37. type: String
  38. },
  39. data() {
  40. return {
  41. defaultTaskForm: {
  42. assignee: "",
  43. candidateUsers: [],
  44. candidateGroups: [],
  45. dueDate: "",
  46. followUpDate: "",
  47. priority: ""
  48. },
  49. userTaskForm: {},
  50. mockData: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
  51. };
  52. },
  53. watch: {
  54. id: {
  55. immediate: true,
  56. handler() {
  57. this.bpmnElement = window.bpmnInstances.bpmnElement;
  58. this.$nextTick(() => this.resetTaskForm());
  59. }
  60. }
  61. },
  62. methods: {
  63. resetTaskForm() {
  64. for (let key in this.defaultTaskForm) {
  65. let value;
  66. if (key === "candidateUsers" || key === "candidateGroups") {
  67. value = this.bpmnElement?.businessObject[key] ? this.bpmnElement.businessObject[key].split(",") : [];
  68. } else {
  69. value = this.bpmnElement?.businessObject[key] || this.defaultTaskForm[key];
  70. }
  71. this.$set(this.userTaskForm, key, value);
  72. }
  73. },
  74. updateElementTask(key) {
  75. const taskAttr = Object.create(null);
  76. if (key === "candidateUsers" || key === "candidateGroups") {
  77. taskAttr[key] = this.userTaskForm[key] && this.userTaskForm[key].length ? this.userTaskForm[key].join() : null;
  78. } else {
  79. taskAttr[key] = this.userTaskForm[key] || null;
  80. }
  81. window.bpmnInstances.modeling.updateProperties(this.bpmnElement, taskAttr);
  82. }
  83. },
  84. beforeDestroy() {
  85. this.bpmnElement = null;
  86. }
  87. };
  88. </script>