workflow-editor 0.9.67 → 0.9.68-boe3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (31) hide show
  1. package/lib/workflow-editor.css +1 -1
  2. package/lib/workflow-editor.umd.min.js +8 -8
  3. package/package.json +2 -2
  4. package/packages/plugins/formValidatorUtil.js +6 -1
  5. package/packages/workflow-editor/src/json-object-templates/auto-task.js +70 -0
  6. package/packages/workflow-editor/src/json-object-templates/copy-task.js +5 -0
  7. package/packages/workflow-editor/src/json-object-templates/subprocess.js +2 -1
  8. package/packages/workflow-editor/src/main/canvas.vue +5 -1
  9. package/packages/workflow-editor/src/main/wf-history-canvas.vue +3 -1
  10. package/packages/workflow-editor/src/process-json.js +2 -1
  11. package/packages/workflow-editor/src/properties-editors/auto-task/basic-properties.vue +81 -0
  12. package/packages/workflow-editor/src/properties-editors/auto-task/permission-settings.vue +155 -0
  13. package/packages/workflow-editor/src/properties-editors/auto-task.vue +73 -0
  14. package/packages/workflow-editor/src/properties-editors/common/additional-condition-utils.js +20 -10
  15. package/packages/workflow-editor/src/properties-editors/common/common-notice-tool.vue +30 -10
  16. package/packages/workflow-editor/src/properties-editors/common/form-fields-utils.js +1 -1
  17. package/packages/workflow-editor/src/properties-editors/common/notice-reminder.vue +72 -0
  18. package/packages/workflow-editor/src/properties-editors/common/notice.vue +4 -1
  19. package/packages/workflow-editor/src/properties-editors/common/reminder.vue +8 -2
  20. package/packages/workflow-editor/src/properties-editors/common/transactor-settings.vue +51 -9
  21. package/packages/workflow-editor/src/properties-editors/copy-task.vue +15 -1
  22. package/packages/workflow-editor/src/properties-editors/human-task/basic-properties.vue +5 -1
  23. package/packages/workflow-editor/src/properties-editors/human-task.vue +11 -5
  24. package/packages/workflow-editor/src/properties-editors/process/basic-properties.vue +2 -2
  25. package/packages/workflow-editor/src/properties-editors/process.vue +10 -4
  26. package/packages/workflow-editor/src/properties-editors/subprocess/basic-properties.vue +18 -6
  27. package/packages/workflow-editor/src/taches/auto-task.vue +99 -0
  28. package/packages/workflow-editor/src/util.js +32 -36
  29. package/packages/workflow-editor/src/workflow-editor.vue +1 -0
  30. package/src/i18n/langs/cn.js +18 -7
  31. package/src/i18n/langs/en.js +18 -7
@@ -0,0 +1,72 @@
1
+ <template>
2
+ <div>
3
+ <el-card class="box-card">
4
+ <div slot="header" class="clearfix">
5
+ <span>{{ $t('workflowEditor.common.taskNotice') }}</span>
6
+ </div>
7
+ <el-form :model="noticeObj" label-width="80px">
8
+ <common-notice-tool v-model="noticeObj.informType" :label="$t('workflowEditor.common.notificationMethod')" :custom-msg="noticeObj.customMsg" @input-msg="setCustomMsg" />
9
+ <el-form-item :label="$t('workflowEditor.task.selectMailTemplate')">
10
+ <select-mail-templates v-model="noticeObj.mailTemplateCode" @set-value="setMailTemplateCode" />
11
+ </el-form-item>
12
+ </el-form>
13
+ </el-card>
14
+ <el-card class="box-card" style="margin-top: 10px">
15
+ <div slot="header" class="clearfix">
16
+ <span>{{ $t('workflowEditor.common.reminderNotice') }}</span>
17
+ </div>
18
+ <reminder v-model="reminderObj" />
19
+ </el-card>
20
+ </div>
21
+ </template>
22
+
23
+ <script>
24
+ import Reminder from './reminder.vue'
25
+ import CommonNoticeTool from './common-notice-tool'
26
+ import SelectMailTemplates from './select-mail-template.vue'
27
+ export default {
28
+ name: 'NoticeReminder',
29
+ components: {
30
+ Reminder,
31
+ CommonNoticeTool,
32
+ SelectMailTemplates
33
+ },
34
+ props: {
35
+ reminderValue: {
36
+ type: [Object, String],
37
+ default: null
38
+ },
39
+ taskNoticeValue: {
40
+ type: Object,
41
+ default: null
42
+ }
43
+ },
44
+ data() {
45
+ let reminderObj = {}
46
+ if (this.reminderValue !== null && this.reminderValue !== undefined && this.reminderValue !== '') {
47
+ reminderObj = this.reminderValue
48
+ }
49
+ let noticeObj = {}
50
+ if (this.taskNoticeValue !== null && this.taskNoticeValue !== undefined && this.taskNoticeValue !== '') {
51
+ noticeObj = this.taskNoticeValue
52
+ }
53
+ return {
54
+ reminderObj: reminderObj,
55
+ noticeObj: noticeObj
56
+ }
57
+ },
58
+ methods: {
59
+ // 关闭选择邮件模板弹框
60
+ setMailTemplateCode(mailTemplateCode) {
61
+ this.noticeObj.mailTemplateCode = mailTemplateCode
62
+ },
63
+ setCustomMsg(msg) {
64
+ this.noticeObj.customMsg = msg
65
+ }
66
+ }
67
+ }
68
+ </script>
69
+
70
+ <style lang="scss" scoped>
71
+
72
+ </style>
@@ -6,7 +6,7 @@
6
6
  />
7
7
  </el-form-item>
8
8
  <div v-if="showNotice">
9
- <common-notice-tool v-model="model.informType" :label="$t('workflowEditor.common.notificationMethod')" />
9
+ <common-notice-tool v-model="model.informType" :label="$t('workflowEditor.common.notificationMethod')" :custom-msg="model.customMsg" @input-msg="setCustomMsg" />
10
10
  <el-form-item v-if="model.informType && model.informType.length > 0 && model.informType.indexOf('mail') !== -1" :label="$t('workflowEditor.task.selectMailTemplate')">
11
11
  <select-mail-templates v-model="model.noticeMailTemplateCode" @set-value="setMailTemplateCode" />
12
12
  </el-form-item>
@@ -91,6 +91,9 @@ export default {
91
91
  // 关闭选择邮件模板弹框
92
92
  setMailTemplateCode(mailTemplateCode) {
93
93
  this.model.noticeMailTemplateCode = mailTemplateCode
94
+ },
95
+ setCustomMsg(msg) {
96
+ this.model.customMsg = msg
94
97
  }
95
98
  }
96
99
  }
@@ -6,7 +6,7 @@
6
6
  />
7
7
  </el-form-item>
8
8
  <div v-if="showReminder">
9
- <common-notice-tool v-model="model.remindType" :label="$t('workflowEditor.task.urgingMethod')" />
9
+ <common-notice-tool v-model="model.remindType" :label="$t('workflowEditor.task.urgingMethod')" :custom-msg="model.reminderCustomMsg" @input-msg="setReminderCustomMsg" />
10
10
  <el-form-item v-if="model.remindType && model.remindType.length > 0 && model.remindType.indexOf('mail') !== -1" :label="$t('workflowEditor.task.selectMailTemplate')">
11
11
  <select-mail-templates v-model="model.noticeMailTemplateCode" @set-value="setMailTemplateCode" />
12
12
  </el-form-item>
@@ -34,7 +34,7 @@
34
34
  <el-form-item :label="$t('workflowEditor.task.timesOfUrging')" size="mini">
35
35
  <el-input-number v-model="model.remindTimes" controls-position="right" :min="1" :max="99" style="width:90px" />
36
36
  </el-form-item>
37
- <common-notice-tool v-model="model.noticeType" :label="$t('workflowEditor.common.notificationMethod')" />
37
+ <common-notice-tool v-model="model.noticeType" :label="$t('workflowEditor.common.notificationMethod')" :custom-msg="model.noticeCustomMsg" @input-msg="setNoticeCustomMsg" />
38
38
  <el-form-item :label="$t('workflowEditor.common.notifyPersonnel')" style="margin-bottom:5px">
39
39
  <el-checkbox v-model="model.containTransferUser">
40
40
  {{ $t('workflowEditor.task.includingHandoverPersonnel') }}
@@ -168,6 +168,12 @@ export default {
168
168
  },
169
169
  selectData(selection, row) {
170
170
  this.multiSelectData = selection
171
+ },
172
+ setReminderCustomMsg(msg) {
173
+ this.model.reminderCustomMsg = msg
174
+ },
175
+ setNoticeCustomMsg(msg) {
176
+ this.model.noticeCustomMsg = msg
171
177
  }
172
178
  }
173
179
  }
@@ -11,6 +11,9 @@
11
11
  <el-radio label="byField">
12
12
  {{ $t('workflowEditor.process.personSpecifiedInFormField') }}
13
13
  </el-radio>
14
+ <el-radio label="byDeptField">
15
+ {{ $t('workflowEditor.process.deptSpecifiedInFormField') }}
16
+ </el-radio>
14
17
  <el-radio label="byCondition">
15
18
  {{ $t('workflowEditor.process.filterByCriteria') }}
16
19
  </el-radio>
@@ -19,16 +22,16 @@
19
22
  <common-user-condition v-model="formModel.userCondition" used-in="transactor" />
20
23
  </div>
21
24
  <el-form-item
22
- v-if="formModel.transactor==='byField'"
25
+ v-if="formModel.transactor==='byField' || formModel.transactor==='byDeptField' "
26
+ :label="$t('workflowEditor.process.fieldName')"
23
27
  prop="selectedField"
24
28
  required
25
- :label="$t('workflowEditor.process.fieldName')"
26
29
  label-width="80px"
27
30
  >
28
31
  <el-input :value="formatLabel(formModel.selectedField)" @focus="showFormFields=true" />
29
32
  <form-fields v-if="showFormFields" @close="setField" />
30
33
  </el-form-item>
31
- <div v-if="formModel.transactor==='byCondition' || formModel.transactor==='byField'">
34
+ <div v-if="formModel.transactor==='byCondition' || formModel.transactor==='byField' || formModel.transactor==='byDeptField'">
32
35
  <el-form-item :label="$t('workflowEditor.process.additionalConditions')">
33
36
  <el-checkbox v-model="formModel.additionalCondition.onlyInCreatorDepartment">
34
37
  {{ $t('workflowEditor.process.handlingYyThePersonnelOfTheDepartmentOfTheInitiator') }}
@@ -45,6 +48,9 @@
45
48
  <el-checkbox v-if="isSubprocess" v-model="formModel.additionalCondition.generateOneInstanceFromDept">
46
49
  {{ $t('workflowEditor.process.generateOneInstanceFromDept') }}
47
50
  </el-checkbox>
51
+ <el-checkbox v-if="isCountersign" v-model="formModel.additionalCondition.activateOneVoteVeto">
52
+ {{ $t('workflowEditor.process.activateOneVoteVeto') }}
53
+ </el-checkbox>
48
54
  </el-form-item>
49
55
  <div v-if="formModel.additionalCondition.selectOneFromMultiple">
50
56
  <el-form-item :label="$t('workflowEditor.process.selectionMethod')">
@@ -59,9 +65,9 @@
59
65
  </el-form-item>
60
66
  <el-form-item
61
67
  v-show="formModel.additionalCondition.selectType==='autoType'"
62
- prop="additionalCondition.selectUrl"
63
68
  :label="$t('workflowEditor.process.callbackURL')"
64
69
  :rules="[{ required: true, message: this.$t('workflowEditor.process.cannotBeEmpty'), trigger: 'blur' }]"
70
+ prop="additionalCondition.selectUrl"
65
71
  >
66
72
  <el-input v-model="formModel.additionalCondition.selectUrl" />
67
73
  </el-form-item>
@@ -70,9 +76,9 @@
70
76
  </el-form-item>
71
77
  <el-form-item
72
78
  v-if="usedIn==='HumanTask' && formModel.transactor==='${previousTransactorAssignment}'"
73
- prop="url"
74
79
  :rules="[{ required: true, message: this.$t('workflowEditor.process.cannotBeEmpty'), trigger: 'blur' }]"
75
80
  :label="$t('workflowEditor.process.selectURL')"
81
+ prop="url"
76
82
  label-width="80px"
77
83
  >
78
84
  <el-input v-model.trim="formModel.url" @change="handleUrlChange" />
@@ -102,6 +108,11 @@ export default {
102
108
  isSubprocess: {
103
109
  type: Boolean,
104
110
  default: false
111
+ },
112
+ // basicProperties
113
+ basicProperties: {
114
+ type: Object,
115
+ default: null
105
116
  }
106
117
  },
107
118
  data() {
@@ -115,7 +126,8 @@ export default {
115
126
  this.initFormModel(formModel)
116
127
  return {
117
128
  showFormFields: false,
118
- formModel
129
+ formModel,
130
+ isCountersign: false
119
131
  }
120
132
  },
121
133
  mounted() {
@@ -135,6 +147,12 @@ export default {
135
147
  }, {
136
148
  deep: true
137
149
  })
150
+ this.$watch('basicProperties', function() {
151
+ this.showActivateOneVoteVeto()
152
+ }, {
153
+ deep: true
154
+ })
155
+ this.showActivateOneVoteVeto()
138
156
  },
139
157
  methods: {
140
158
  formatLabel(name) {
@@ -150,9 +168,12 @@ export default {
150
168
  } else {
151
169
  if (userCondition === '${instanceCreator}' || userCondition === '${previousTransactorAssignment}') {
152
170
  formModel.transactor = userCondition
153
- } else if (userCondition.indexOf('${field[') >= 0) {
171
+ } else if (userCondition.startsWith('${field[') && userCondition.indexOf('${field[') >= 0 && userCondition.indexOf('"selectedField": "${field[') < 2) {
154
172
  formModel.transactor = 'byField'
155
173
  formModel.selectedField = userCondition
174
+ } else if (userCondition.startsWith('${deptField[')) {
175
+ formModel.transactor = 'byDeptField'
176
+ formModel.selectedField = userCondition
156
177
  } else {
157
178
  formModel.transactor = 'byCondition'
158
179
  formModel.userCondition = userCondition
@@ -209,6 +230,9 @@ export default {
209
230
  } else {
210
231
  this.model.url = ''
211
232
  }
233
+ // if (val === 'byDeptField') {
234
+ // this.model.userCondition = this.formModel.selectedField
235
+ // }
212
236
 
213
237
  // 不是按条件筛选的时候,需要清空xml中additionalCondition
214
238
  if (val === 'byCondition') {
@@ -223,10 +247,28 @@ export default {
223
247
  },
224
248
  setField(name) {
225
249
  if (name !== undefined) {
226
- this.formModel.selectedField = '${field[' + name + ']}'
227
- this.model.userCondition = this.formModel.selectedField
250
+ if (this.formModel.transactor === 'byDeptField') {
251
+ this.formModel.selectedField = '${deptField[' + name + ']}'
252
+ this.model.userCondition = this.formModel.selectedField
253
+ } else {
254
+ this.formModel.selectedField = '${field[' + name + ']}'
255
+ this.model.userCondition = this.formModel.selectedField
256
+ }
228
257
  }
229
258
  this.showFormFields = false
259
+ },
260
+ /**
261
+ * 会签时显示一票否决配置
262
+ */
263
+ showActivateOneVoteVeto() {
264
+ if (this.basicProperties && this.basicProperties.processingMode) {
265
+ if (this.basicProperties.processingMode.type === 'COUNTERSIGN') {
266
+ this.isCountersign = true
267
+ } else {
268
+ this.isCountersign = false
269
+ this.formModel.additionalCondition.activateOneVoteVeto = false
270
+ }
271
+ }
230
272
  }
231
273
  }
232
274
  }
@@ -22,6 +22,13 @@
22
22
  <el-tab-pane :label="$t('workflowEditor.task.settingOfHandler')" name="transactors">
23
23
  <transactor-settings :model="model.ref.transactorSettings" used-in="CopyTask" />
24
24
  </el-tab-pane>
25
+ <el-tab-pane :label="$t('workflowEditor.task.reminderSettings')" name="reminders">
26
+ <!-- <reminder v-model="model.ref.reminder" /> -->
27
+ <notice-reminder :reminder-value="model.ref.reminder" :task-notice-value="model.ref.taskNotice" />
28
+ </el-tab-pane>
29
+ <el-tab-pane :label="$t('workflowEditor.task.eventProcessing')" name="events">
30
+ <events v-model="model.ref.events" />
31
+ </el-tab-pane>
25
32
  <el-tab-pane :label="$t('workflowEditor.task.permissionSettings')" name="permissions">
26
33
  <permission-settings v-model="model.ref.permissionSettings" />
27
34
  </el-tab-pane>
@@ -32,12 +39,16 @@
32
39
  import BasicProperties from './copy-task/basic-properties'
33
40
  import PermissionSettings from './copy-task/permission-settings'
34
41
  import TransactorSettings from './common/transactor-settings'
42
+ import NoticeReminder from './common/notice-reminder.vue'
43
+ import Events from './human-task/events.vue'
35
44
  export default {
36
45
  name: 'HumanTaskPropertiesEditor',
37
46
  components: {
38
47
  BasicProperties,
39
48
  TransactorSettings,
40
- PermissionSettings
49
+ PermissionSettings,
50
+ NoticeReminder,
51
+ Events
41
52
  },
42
53
  props: {
43
54
  model: {
@@ -47,6 +58,9 @@ export default {
47
58
  },
48
59
  data() {
49
60
  console.log(this.model)
61
+ if (!this.model.ref.taskNotice) {
62
+ this.model.ref.taskNotice = {}
63
+ }
50
64
  return {
51
65
  activeTab: 'basicProperties'
52
66
  }
@@ -4,7 +4,11 @@
4
4
  <el-col :span="12">
5
5
  <el-form-item :label="$t('workflowEditor.task.name')">
6
6
  <!-- <el-input v-model="formModel.name" /> -->
7
- <i18n-input v-model="formModel.name" :i18n-key="tache.i18nKey?tache.i18nKey:'name.'+formModel.id" @setI18n="setI18nValue" />
7
+ <i18n-input
8
+ v-model="formModel.name"
9
+ :i18n-key="tache.i18nKey?tache.i18nKey:'name.'+formModel.id"
10
+ @setI18n="setI18nValue"
11
+ />
8
12
  </el-form-item>
9
13
  </el-col>
10
14
  <el-col :span="12">
@@ -20,7 +20,7 @@
20
20
  />
21
21
  </el-tab-pane>
22
22
  <el-tab-pane :label="$t('workflowEditor.task.settingOfHandler')" name="transactors">
23
- <transactor-settings :model="model.ref.transactorSettings" />
23
+ <transactor-settings :model="model.ref.transactorSettings" :basic-properties="model.ref.basicProperties" />
24
24
  </el-tab-pane>
25
25
  <el-tab-pane :label="$t('workflowEditor.task.permissionSettings')" name="permissions">
26
26
  <permission-settings v-model="model.ref.permissionSettings" />
@@ -29,7 +29,8 @@
29
29
  <auto-filled-fields v-model="model.ref.autoFilledFields" />
30
30
  </el-tab-pane>
31
31
  <el-tab-pane :label="$t('workflowEditor.task.reminderSettings')" name="reminders">
32
- <reminder v-model="model.ref.reminder" />
32
+ <!-- <reminder v-model="model.ref.reminder" /> -->
33
+ <notice-reminder :reminder-value="model.ref.reminder" :task-notice-value="model.ref.taskNotice" />
33
34
  </el-tab-pane>
34
35
  <el-tab-pane :label="$t('workflowEditor.task.eventProcessing')" name="events">
35
36
  <events v-model="model.ref.events" />
@@ -46,9 +47,10 @@ import BasicProperties from './human-task/basic-properties'
46
47
  import PermissionSettings from './human-task/permission-settings'
47
48
  import TransactorSettings from './common/transactor-settings'
48
49
  import AutoFilledFields from './common/auto-filled-fields'
49
- import Reminder from './common/reminder'
50
+ // import Reminder from './common/reminder'
50
51
  import Variables from './common/variables'
51
52
  import Events from './human-task/events'
53
+ import NoticeReminder from './common/notice-reminder.vue'
52
54
  export default {
53
55
  name: 'HumanTaskPropertiesEditor',
54
56
  components: {
@@ -56,9 +58,10 @@ export default {
56
58
  TransactorSettings,
57
59
  PermissionSettings,
58
60
  AutoFilledFields,
59
- Reminder,
61
+ // Reminder,
60
62
  Events,
61
- Variables
63
+ Variables,
64
+ NoticeReminder
62
65
 
63
66
  },
64
67
  props: {
@@ -69,6 +72,9 @@ export default {
69
72
  },
70
73
  data() {
71
74
  console.log(this.model)
75
+ if (!this.model.ref.taskNotice) {
76
+ this.model.ref.taskNotice = {}
77
+ }
72
78
  return {
73
79
  activeTab: 'basicProperties'
74
80
  }
@@ -67,8 +67,8 @@
67
67
  <el-form-item :label="$t('workflowEditor.process.affiliatedBranch')">
68
68
  <el-select v-model="model.branchCode" clearable :placeholder="$t('workflowEditorMessage.pleaseSelect')">
69
69
  <el-option
70
- v-for="item in allBranches"
71
- :key="item.code"
70
+ v-for="(item, index) in allBranches"
71
+ :key="item.code+'-'+index"
72
72
  :label="item.name"
73
73
  :value="item.code"
74
74
  />
@@ -26,7 +26,8 @@
26
26
  <notice-settings v-model="model.properties.inform" />
27
27
  </el-tab-pane>
28
28
  <el-tab-pane :label="$t('workflowEditor.process.reminderSettings')" name="reminders">
29
- <reminder v-model="model.properties.reminder" />
29
+ <!-- <reminder v-model="model.properties.reminder" /> -->
30
+ <notice-reminder :reminder-value="model.properties.reminder" :task-notice-value="model.properties.taskNotice" />
30
31
  </el-tab-pane>
31
32
  <el-tab-pane :label="$t('workflowEditor.process.parameterSsetting')" name="parameterSettings">
32
33
  <parameter-settings :model="model.properties.parameterSettings" />
@@ -44,21 +45,23 @@
44
45
  import convert from 'xml-js'
45
46
  import BasicProperties from './process/basic-properties'
46
47
  import PermissionSettings from './process/permission-settings'
47
- import Reminder from './common/reminder'
48
+ // import Reminder from './common/reminder'
48
49
  import ParameterSettings from './process/parameter-settings'
49
50
  import Events from './process/events'
50
51
  import Variables from './common/variables'
51
52
  import NoticeSettings from './process/notice-settings.vue'
53
+ import NoticeReminder from './common/notice-reminder.vue'
52
54
  export default {
53
55
  name: 'ProcessPropertiesEditor',
54
56
  components: {
55
57
  BasicProperties,
56
58
  PermissionSettings,
57
- Reminder,
59
+ // Reminder,
58
60
  ParameterSettings,
59
61
  Events,
60
62
  Variables,
61
- NoticeSettings
63
+ NoticeSettings,
64
+ NoticeReminder
62
65
  },
63
66
  props: {
64
67
  model: {
@@ -70,6 +73,9 @@ export default {
70
73
  // if (this.model.properties.inform === undefined) {
71
74
  // this.model.properties.inform = {}
72
75
  // }
76
+ if (this.model.properties.taskNotice === undefined) {
77
+ this.model.properties.taskNotice = {}
78
+ }
73
79
  return {
74
80
  activeTab: 'basicProperties'
75
81
  }
@@ -4,7 +4,11 @@
4
4
  <el-col :span="12">
5
5
  <el-form-item :label="$t('workflowEditor.process.name')" label-width="50px">
6
6
  <!-- <el-input v-model="formModel.name" /> -->
7
- <i18n-input v-model="formModel.name" :i18n-key="formModel.tache.i18nKey?formModel.tache.i18nKey:'name.'+formModel.id" @setI18n="setI18nValue" />
7
+ <i18n-input
8
+ v-model="formModel.name"
9
+ :i18n-key="formModel.tache.i18nKey?formModel.tache.i18nKey:'name.'+formModel.id"
10
+ @setI18n="setI18nValue"
11
+ />
8
12
  </el-form-item>
9
13
  </el-col>
10
14
  <el-col :span="12">
@@ -13,6 +17,9 @@
13
17
  </el-form-item>
14
18
  </el-col>
15
19
  </el-row>
20
+ <el-form-item :label="$t('workflowEditor.task.taskTitle')">
21
+ <task-title v-model="tache.taskTitle" />
22
+ </el-form-item>
16
23
  <el-form-item :label="$t('workflowEditor.process.subprocess')" label-width="60px">
17
24
  <el-cascader
18
25
  v-model="selectedProcess"
@@ -56,11 +63,13 @@ import FieldMappings from './field-mappings'
56
63
  import processService from '../../process-service.js'
57
64
  import { validateTacheCode } from '../../util'
58
65
  import i18nInput from '../common/i18n-input'
66
+ import TaskTitle from '../common/task-title'
59
67
  export default {
60
68
  name: 'BasicProperties',
61
69
  components: {
62
70
  FieldMappings,
63
- i18nInput
71
+ i18nInput,
72
+ TaskTitle
64
73
  },
65
74
  props: {
66
75
  model: {
@@ -89,6 +98,9 @@ export default {
89
98
  }
90
99
  },
91
100
  computed: {
101
+ tache() {
102
+ return this.model
103
+ }
92
104
  },
93
105
  created() {
94
106
  this.listAllProcesses().then(() => {
@@ -103,10 +115,10 @@ export default {
103
115
  }
104
116
  },
105
117
  mounted() {
106
- // this.$watch('model.attr.id', function(newVal, oldVal) {
107
- // // updateTransitionsWhenTacheIdChanged(newVal, oldVal)
108
- // this.$emit('update:id', newVal)
109
- // })
118
+ // 支持.snyc修饰符的写法
119
+ this.$watch('formModel.name', function(newVal, oldVal) {
120
+ this.$emit('update:name', newVal)
121
+ })
110
122
  },
111
123
  methods: {
112
124
  fetchSubprocessFormFields() {
@@ -0,0 +1,99 @@
1
+ <template>
2
+ <g
3
+ @mousedown.stop="startDrag"
4
+ @mouseup="endDrag"
5
+ @mouseenter="showJoints"
6
+ @mouseleave="hideJoints"
7
+ @dblclick.stop="setPropertiesEditorFor('AutoTask')"
8
+ >
9
+ <rect
10
+ ref="tache"
11
+ :width="model.width"
12
+ :height="model.height"
13
+ :class="{'draggable':true,'task-tache':true, 'selected':model.isSelected}"
14
+ :x="model.x"
15
+ :y="model.y"
16
+ rx="6"
17
+ ry="6"
18
+ />
19
+ <text
20
+ :x="text.x"
21
+ :y="text.y"
22
+ text-anchor="middle"
23
+ class="draggable"
24
+ >
25
+ {{ name }}
26
+ </text>
27
+ <joint
28
+ v-for="position in jointPoints"
29
+ :key="position"
30
+ :parent="model"
31
+ :position="position"
32
+ />
33
+ <tache-resizer
34
+ v-for="position in resizers"
35
+ :key="position"
36
+ :owner="model"
37
+ :position="position"
38
+ />
39
+ </g>
40
+ </template>
41
+ <script>
42
+ import { mapGetters, mapMutations } from 'vuex'
43
+ import Joint from './joint'
44
+ import TacheResizer from './tache-resizer'
45
+ import tacheMethods from './common-methods'
46
+ import { watchShowName } from '../util'
47
+ export default {
48
+ name: 'AutoTask',
49
+ components: {
50
+ Joint,
51
+ TacheResizer
52
+ },
53
+ props: {
54
+ model: {
55
+ type: Object,
56
+ default: null
57
+ }
58
+ },
59
+ data() {
60
+ return {
61
+ // 一个tache有上右下左四个连接点,这四个连接点的坐标根据tache的位置和大小计算出来
62
+ jointPoints: [],
63
+ resizers: ['NW', 'NE', 'SW', 'SE'],
64
+ name: this.model.name
65
+ }
66
+ },
67
+ computed: {
68
+ ...mapGetters('wfEditor', [
69
+ 'selectedTaches',
70
+ 'processI18n'
71
+ ]),
72
+ text() {
73
+ return {
74
+ x: this.model.x + this.model.width / 2,
75
+ y: this.model.y + this.model.height / 2
76
+ }
77
+ }
78
+ },
79
+ created() {
80
+ this.name = watchShowName(this, this.name)
81
+ },
82
+ mounted() {
83
+ this.$watch('model.name', function(newVal) {
84
+ this.name = watchShowName(this, newVal)
85
+ })
86
+ },
87
+ methods: {
88
+ ...mapMutations('wfEditor', [
89
+ 'setPropertiesEditorFor',
90
+ 'setContextMenuVisible'
91
+ ]),
92
+ ...tacheMethods
93
+ }
94
+ }
95
+ </script>
96
+ <style>
97
+
98
+ </style>
99
+