workflow-editor 0.9.67-boe6 → 0.9.67-boe8

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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "workflow-editor",
3
- "version": "0.9.67-boe6",
3
+ "version": "0.9.67-boe8",
4
4
  "description": "流程编辑器",
5
5
  "main": "lib/workflow-editor.umd.min.js",
6
6
  "private": false,
@@ -33,7 +33,7 @@
33
33
  "element-ui": "2.15.3",
34
34
  "eslint": "5.16.0",
35
35
  "eslint-plugin-vue": "5.2.2",
36
- "imatrix-ui": "2.8.22-boe8",
36
+ "imatrix-ui": "2.9.11-boe9",
37
37
  "node-sass": "4.12.0",
38
38
  "nprogress": "^0.2.0",
39
39
  "sass-loader": "^7.1.0",
@@ -0,0 +1,70 @@
1
+ import i18n from '../../../../src/i18n/i18n'
2
+ export default function newAutoTask() {
3
+ return {
4
+ attr: {
5
+ id: '',
6
+ name: i18n.t('workflowEditor.task.newAutoTask')
7
+ },
8
+ g: {},
9
+ taskNotice: {
10
+
11
+ },
12
+ basicProperties: {
13
+ beanName: ''
14
+ },
15
+ transactorSettings: {
16
+ userCondition: '',
17
+ moreTransactor: false,
18
+ additionalCondition: {
19
+ onlyInCreatorDepartment: false,
20
+ withCreatorDepartment: false,
21
+ selectOneFromMultiple: false
22
+ }
23
+ },
24
+ events: {
25
+ },
26
+ permissionSettings: {
27
+ editForm: {
28
+ permission: false,
29
+ field: []
30
+ },
31
+ viewOpinion: {
32
+ permission: false,
33
+ condition: ''
34
+ },
35
+ editOpinion: {
36
+ permission: false,
37
+ condition: ''
38
+ },
39
+ requireOpinion: {
40
+ permission: false,
41
+ condition: ''
42
+ },
43
+ viewMeetingResult: {
44
+ permission: false,
45
+ condition: ''
46
+ },
47
+ viewVoteResult: {
48
+ permission: false,
49
+ condition: ''
50
+ },
51
+ viewFlowHistory: {
52
+ permission: false,
53
+ condition: ''
54
+ },
55
+ printForm: {
56
+ permission: false,
57
+ condition: ''
58
+ },
59
+ officialText: {
60
+ permission: false // 控制是否设置正文权限,false时就没有后续的create,edit等权限设置了
61
+ },
62
+ attachment: {
63
+ permission: false // 控制是否设置附件权限,false时就没有后面的add,delete等权限设置了
64
+ },
65
+ deleteInstance: {
66
+ userCondition: ''
67
+ }
68
+ }
69
+ }
70
+ }
@@ -3,7 +3,8 @@ export default function newSubprocess() {
3
3
  return {
4
4
  attr: {
5
5
  id: '',
6
- name: i18n.t('workflowEditor.task.subprocess')
6
+ name: i18n.t('workflowEditor.task.subprocess'),
7
+ taskTitle: ''
7
8
  },
8
9
  g: {},
9
10
  processCode: '',
@@ -53,6 +53,7 @@ import Fork from '../taches/fork'
53
53
  import Join from '../taches/join'
54
54
  import HumanDecision from '../taches/human-decision'
55
55
  import CopyTask from '../taches/copy-task'
56
+ import AutoTask from '../taches/auto-task'
56
57
  import Transition from '../transitions/transition'
57
58
  import VirtualTransition from '../transitions/virtual-transition'
58
59
  import SelectionRegion from './selection-region'
@@ -64,6 +65,7 @@ import ForkPropertiesEditor from '../properties-editors/fork'
64
65
  import JoinPropertiesEditor from '../properties-editors/join'
65
66
  import HumanDecisionPropertiesEditor from '../properties-editors/human-decision'
66
67
  import CopyTaskPropertiesEditor from '../properties-editors/copy-task'
68
+ import AutoTaskPropertiesEditor from '../properties-editors/auto-task'
67
69
  import SubprocessPropertiesEditor from '../properties-editors/subprocess'
68
70
  import TacheHistoryTooltip from './tache-history-tooltip'
69
71
  import { mapGetters, mapMutations } from 'vuex'
@@ -94,7 +96,9 @@ export default {
94
96
  HumanDecisionPropertiesEditor,
95
97
  CopyTaskPropertiesEditor,
96
98
  SubprocessPropertiesEditor,
97
- TacheHistoryTooltip
99
+ TacheHistoryTooltip,
100
+ AutoTask,
101
+ AutoTaskPropertiesEditor
98
102
  },
99
103
  props: {
100
104
  process: {
@@ -48,6 +48,7 @@ import Fork from '../taches/fork'
48
48
  import Join from '../taches/join'
49
49
  import HumanDecision from '../taches/human-decision'
50
50
  import CopyTask from '../taches/copy-task'
51
+ import AutoTask from '../taches/auto-task'
51
52
  import Transition from '../transitions/transition'
52
53
  import TacheHistoryTooltip from './tache-history-tooltip'
53
54
  import { mapGetters } from 'vuex'
@@ -71,7 +72,8 @@ export default {
71
72
  CopyTask,
72
73
  Transition,
73
74
  TacheHistoryTooltip,
74
- TacheSubprocessHistoryDialog
75
+ TacheSubprocessHistoryDialog,
76
+ AutoTask
75
77
  },
76
78
  props: {
77
79
  process: {
@@ -292,7 +292,8 @@ const process = {
292
292
  subprocess: {
293
293
  attr: {
294
294
  id: 't2',
295
- name: '子流程'
295
+ name: '子流程',
296
+ taskTitle: ''
296
297
  },
297
298
  g: {
298
299
  x: 250,
@@ -0,0 +1,81 @@
1
+ <template>
2
+ <el-form :model="formModel" label-width="110px">
3
+ <el-row>
4
+ <el-col :span="12">
5
+ <el-form-item :label="$t('workflowEditor.task.name')">
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" />
8
+ </el-form-item>
9
+ </el-col>
10
+ <el-col :span="12">
11
+ <el-form-item :label="$t('workflowEditor.task.code')">
12
+ <el-input v-model="formModel.id" @blur="validateId" />
13
+ </el-form-item>
14
+ </el-col>
15
+ </el-row>
16
+ <el-form-item :label="$t('workflowEditor.task.custombeanName')">
17
+ <el-input v-model="tache.beanName" />
18
+ </el-form-item>
19
+ </el-form>
20
+ </template>
21
+ <script>
22
+ import TaskTitle from '../common/task-title'
23
+ import { validateTacheCode } from '../../util'
24
+ import i18nInput from '../common/i18n-input'
25
+ export default {
26
+ name: 'BasicProperties',
27
+ components: {
28
+ TaskTitle,
29
+ i18nInput
30
+ },
31
+ props: {
32
+ model: {
33
+ type: Object,
34
+ default: null
35
+ },
36
+ id: {
37
+ type: String,
38
+ default: null
39
+ },
40
+ name: {
41
+ type: String,
42
+ default: null
43
+ }
44
+ },
45
+ data() {
46
+ return {
47
+ formModel: {
48
+ name: this.name,
49
+ id: this.id,
50
+ tache: this.model
51
+ }
52
+ }
53
+ },
54
+ computed: {
55
+ tache() {
56
+ return this.model
57
+ }
58
+ },
59
+ mounted() {
60
+ // 支持.snyc修饰符的写法
61
+ this.$watch('formModel.name', function(newVal, oldVal) {
62
+ this.$emit('update:name', newVal)
63
+ })
64
+ },
65
+ methods: {
66
+ validateId() {
67
+ validateTacheCode(this)
68
+ },
69
+ setI18nValue(i18nKey) {
70
+ this.tache.i18nKey = i18nKey
71
+ }
72
+ }
73
+ }
74
+ </script>
75
+ <style scoped>
76
+ .percent{
77
+ margin-left: 10px;
78
+ color:red;
79
+ font-size:1.2em;
80
+ }
81
+ </style>
@@ -0,0 +1,155 @@
1
+ <template>
2
+ <el-form :model="formModel">
3
+ <el-form-item :label="$t('workflowEditor.task.allowViews')">
4
+ <el-switch v-model="formModel.viewOpinion.permission" />
5
+ <el-checkbox v-if="formModel.viewOpinion.permission" v-model="formModel.viewOpinionCheckbox">
6
+ {{ $t('workflowEditor.task.additionalConditions') }}
7
+ </el-checkbox>
8
+ <additional-condition v-if="formModel.viewOpinion.permission&&formModel.viewOpinionCheckbox" v-model="formModel.viewOpinion.condition" />
9
+ </el-form-item>
10
+ <el-form-item :label="$t('workflowEditor.task.allowToViewCountersignatureResults')">
11
+ <el-switch v-model="formModel.viewMeetingResult.permission" />
12
+ <el-checkbox v-if="formModel.viewMeetingResult.permission" v-model="formModel.viewMeetingResultCheckbox">
13
+ {{ $t('workflowEditor.task.additionalConditions') }}
14
+ </el-checkbox>
15
+ <additional-condition v-if="formModel.viewMeetingResult.permission&&formModel.viewMeetingResultCheckbox" v-model="formModel.viewMeetingResult.condition" />
16
+ </el-form-item>
17
+ <el-form-item :label="$t('workflowEditor.task.allowToViewVotingResults')">
18
+ <el-switch v-model="formModel.viewVoteResult.permission" />
19
+ <el-checkbox v-if="formModel.viewVoteResult.permission" v-model="formModel.viewVoteResultCheckbox">
20
+ {{ $t('workflowEditor.task.additionalConditions') }}
21
+ </el-checkbox>
22
+ <additional-condition v-if="formModel.viewVoteResult.permission&&formModel.viewVoteResultCheckbox" v-model="formModel.viewVoteResult.condition" />
23
+ </el-form-item>
24
+ <el-form-item :label="$t('workflowEditor.task.allowToViewFlowHistory')">
25
+ <el-switch v-model="formModel.viewFlowHistory.permission" />
26
+ <el-checkbox v-if="formModel.viewFlowHistory.permission" v-model="formModel.viewFlowHistoryCheckbox">
27
+ {{ $t('workflowEditor.task.additionalConditions') }}
28
+ </el-checkbox>
29
+ <additional-condition v-if="formModel.viewFlowHistory.permission&&formModel.viewFlowHistoryCheckbox" v-model="formModel.viewFlowHistory.condition" />
30
+ </el-form-item>
31
+ <el-form-item :label="$t('workflowEditor.task.allowFormsToPrint')">
32
+ <el-switch v-model="formModel.printForm.permission" />
33
+ <el-checkbox v-if="formModel.printForm.permission" v-model="formModel.printFormCheckbox">
34
+ {{ $t('workflowEditor.task.additionalConditions') }}
35
+ </el-checkbox>
36
+ <additional-condition v-if="formModel.printForm.permission&&formModel.printFormCheckbox" v-model="formModel.printForm.condition" />
37
+ </el-form-item>
38
+ <el-form-item :label="$t('workflowEditor.task.attachmentAuthority')">
39
+ <el-switch v-model="formModel.attachment.permission" />
40
+ </el-form-item>
41
+ <el-card v-if="formModel.attachment.permission" class="box-card">
42
+ <el-form-item :label="$t('workflowEditor.task.downloadAttachment')">
43
+ <el-switch v-model="formModel.attachment.download.permission" />
44
+ <el-checkbox v-if="formModel.attachment.download.permission" v-model="formModel.attachment.downloadCheckbox">
45
+ {{ $t('workflowEditor.task.additionalConditions') }}
46
+ </el-checkbox>
47
+ <additional-condition v-if="formModel.attachment.download.permission&&formModel.attachment.downloadCheckbox" v-model="formModel.attachment.download.condition" />
48
+ </el-form-item>
49
+ </el-card>
50
+ <el-form-item :label="$t('workflowEditor.task.bodyPermission')">
51
+ <el-switch v-model="formModel.officialText.permission" />
52
+ </el-form-item>
53
+ </el-form>
54
+ </template>
55
+ <script>
56
+ import AdditionalCondition from '../common/additional-condition'
57
+ import { deepCopy } from '../../util'
58
+ export default {
59
+ name: 'PermissionSettings',
60
+ components: {
61
+ AdditionalCondition
62
+ },
63
+ props: {
64
+ value: {
65
+ type: Object,
66
+ default: null
67
+ }
68
+ },
69
+ data() {
70
+ const formModel = deepCopy(this.value)
71
+ // 控制附加条件的属性名
72
+ const attrNames = [
73
+ 'viewOpinion', 'viewMeetingResult', 'viewVoteResult',
74
+ 'viewFlowHistory', 'printForm'
75
+ ]
76
+ attrNames.forEach(name => {
77
+ // 如果是''或者undefined,那么两次!后就是false
78
+ formModel[name + 'Checkbox'] = !!this.value[name].condition
79
+ })
80
+ // 控制附件各个权限的附加条件的属性名
81
+ const attachmentAttrNames = [
82
+ 'download'
83
+ ]
84
+ attachmentAttrNames.forEach(item => {
85
+ // 如果是''或者undefined,那么两次!后就是false
86
+ formModel.attachment[name + 'Checkbox'] = !!this.value.attachment[name] && !!this.value.attachment[name].condition
87
+ if (!formModel.attachment.permission) {
88
+ formModel.attachment[name] = {
89
+ permission: false,
90
+ condition: ''
91
+ }
92
+ }
93
+ })
94
+
95
+ return {
96
+ formModel,
97
+ attrNames,
98
+ attachmentAttrNames
99
+ }
100
+ },
101
+ mounted() {
102
+ this.$watch('formModel', function(formModel) {
103
+ const result = {
104
+ viewOpinion: { },
105
+ viewMeetingResult: { },
106
+ viewVoteResult: { },
107
+ viewFlowHistory: { },
108
+ printForm: { },
109
+ officialText: { },
110
+ attachment: { }
111
+ }
112
+ this.attrNames.map(name => {
113
+ // permission为true且附件条件的checkbox也选中了,condition才有效
114
+ result[name].permission = formModel[name].permission
115
+ if (formModel[name].permission && formModel[name + 'Checkbox']) {
116
+ result[name].condition = formModel[name].condition
117
+ } else {
118
+ result[name].condition = ''
119
+ }
120
+ })
121
+
122
+ result.attachment.permission = formModel.attachment.permission
123
+ // 允许设置附件权限时,add,delete等的权限设置才有效,否则根本不生成add,delete等对应的json
124
+ if (formModel.attachment.permission) {
125
+ this.attachmentAttrNames.map(name => {
126
+ // 需要避免result的add,delete等属性为undefined
127
+ if (!result.attachment[name])result.attachment[name] = {}
128
+ // attachment不是undefined并且对应的add,delete等属性的permission为true
129
+ result.attachment[name].permission = formModel.attachment[name].permission
130
+ // permission为true且附件条件的checkbox也选中了,condition才有效
131
+ if (formModel.attachment[name].permission && formModel.attachment[name + 'Checkbox']) {
132
+ result.attachment[name].condition = formModel.attachment[name].condition
133
+ } else {
134
+ result.attachment[name].condition = ''
135
+ }
136
+ })
137
+ }
138
+
139
+ // 正文权限暂不处理
140
+
141
+ this.$emit('input', result)
142
+ }, {
143
+ deep: true
144
+ })
145
+ },
146
+ methods: {
147
+
148
+ }
149
+ }
150
+ </script>
151
+ <style scoped>
152
+ .el-checkbox{
153
+ margin-left: 20px;
154
+ }
155
+ </style>
@@ -0,0 +1,73 @@
1
+ <template>
2
+ <el-dialog
3
+ visible
4
+ :title="$t('workflowEditor.task.propertiesOfAutoTask')"
5
+ :center="true"
6
+ top="10vh"
7
+ append-to-body
8
+ custom-class="properties-editor"
9
+ @open="$emit('open')"
10
+ @opend="$emit('opend')"
11
+ @close="$emit('close')"
12
+ @closed="$emit('closed')"
13
+ >
14
+ <el-tabs v-model="activeTab" type="border-card" @tab-click="handleClick">
15
+ <el-tab-pane :label="$t('workflowEditor.task.basicProperties')" name="basicProperties">
16
+ <basic-properties
17
+ :id.sync="model.ref.attr.id"
18
+ :name.sync="model.ref.attr.name"
19
+ :model="model.ref.basicProperties"
20
+ />
21
+ </el-tab-pane>
22
+ </el-tabs>
23
+ </el-dialog>
24
+ </template>
25
+ <script>
26
+ import BasicProperties from './auto-task/basic-properties'
27
+ export default {
28
+ name: 'HumanTaskPropertiesEditor',
29
+ components: {
30
+ BasicProperties
31
+ },
32
+ props: {
33
+ model: {
34
+ type: Object,
35
+ default: null
36
+ }
37
+ },
38
+ data() {
39
+ console.log(this.model)
40
+ if (!this.model.ref.taskNotice) {
41
+ this.model.ref.taskNotice = {}
42
+ }
43
+ return {
44
+ activeTab: 'basicProperties'
45
+ }
46
+ },
47
+ computed: {
48
+ formModel() {
49
+ return this.model.ref
50
+ }
51
+ },
52
+ mounted() {
53
+ this.$watch('model.ref.attr.id', function(newVal, oldVal) {
54
+ this.model.id = newVal
55
+ })
56
+ this.$watch('model.ref.attr.name', function(newVal, oldVal) {
57
+ this.model.name = newVal
58
+ })
59
+ },
60
+ methods: {
61
+ handleClick(tab, event) {
62
+ // console.log(tab, event)
63
+ }
64
+ }
65
+ }
66
+ </script>
67
+ <style scoped>
68
+ /* 使用深度作用选择器(vue-loader的功能)">>>"符号重新定义了.el-dialog__body,不影响其他页面的同名样式*/
69
+ .properties-editor >>> .el-dialog__body{
70
+ padding-top: 0
71
+ }
72
+ </style>
73
+
@@ -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">
@@ -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
+