vue2-client 1.6.55-single → 1.6.56-single
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/CHANGELOG.md
CHANGED
package/package.json
CHANGED
|
@@ -56,6 +56,8 @@ export default {
|
|
|
56
56
|
return {
|
|
57
57
|
// 预览模式
|
|
58
58
|
viewMode: false,
|
|
59
|
+
// 是否处理表单Key值
|
|
60
|
+
isHandleFormKey: true,
|
|
59
61
|
// 是否展示
|
|
60
62
|
isShow: false,
|
|
61
63
|
// 内容加载是否完成
|
|
@@ -109,11 +111,12 @@ export default {
|
|
|
109
111
|
},
|
|
110
112
|
methods: {
|
|
111
113
|
init (params) {
|
|
112
|
-
const { isShow = true, formItems, viewMode, isTableTemp, serviceName = 'af-system' } = params
|
|
114
|
+
const { isShow = true, formItems, viewMode, isHandleFormKey = true, isTableTemp, serviceName = 'af-system' } = params
|
|
113
115
|
if (isShow) {
|
|
114
116
|
this.isShow = true
|
|
115
117
|
this.formItems = JSON.parse(JSON.stringify(formItems))
|
|
116
118
|
this.viewMode = viewMode
|
|
119
|
+
this.isHandleFormKey = isHandleFormKey
|
|
117
120
|
this.isTableTemp = isTableTemp
|
|
118
121
|
this.serviceName = serviceName
|
|
119
122
|
}
|
|
@@ -284,7 +287,11 @@ export default {
|
|
|
284
287
|
},
|
|
285
288
|
// 获取表单字段实际值
|
|
286
289
|
getRealKey (key) {
|
|
287
|
-
|
|
290
|
+
if (this.isHandleFormKey) {
|
|
291
|
+
return key.substring(key.indexOf('_') + 1)
|
|
292
|
+
} else {
|
|
293
|
+
return key
|
|
294
|
+
}
|
|
288
295
|
},
|
|
289
296
|
/**
|
|
290
297
|
* 获取被修改记录数据
|
|
@@ -1,279 +1,290 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
<
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
import
|
|
27
|
-
import {
|
|
28
|
-
import {
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
1
|
+
<template>
|
|
2
|
+
<a-form-model
|
|
3
|
+
v-if="loaded"
|
|
4
|
+
ref="selectForm"
|
|
5
|
+
:zIndex="1001"
|
|
6
|
+
:model="form"
|
|
7
|
+
:rules="rules">
|
|
8
|
+
<a-row :gutter="16">
|
|
9
|
+
<x-form-item
|
|
10
|
+
v-for="(item, index) in realJsonData"
|
|
11
|
+
:key="index"
|
|
12
|
+
:attr="item"
|
|
13
|
+
:disabled="itemDisabled(item)"
|
|
14
|
+
:files="files"
|
|
15
|
+
:form="form"
|
|
16
|
+
:images="images"
|
|
17
|
+
:service-name="serviceName"
|
|
18
|
+
mode="新增/修改"
|
|
19
|
+
:get-data-params="getDataParams"
|
|
20
|
+
/>
|
|
21
|
+
</a-row>
|
|
22
|
+
</a-form-model>
|
|
23
|
+
</template>
|
|
24
|
+
<script>
|
|
25
|
+
import XFormItem from '@vue2-client/base-client/components/common/XForm/XFormItem'
|
|
26
|
+
import { formatDate } from '@vue2-client/utils/util'
|
|
27
|
+
import { mapState } from 'vuex'
|
|
28
|
+
import { post } from '@vue2-client/services/api'
|
|
29
|
+
|
|
30
|
+
export default {
|
|
31
|
+
name: 'XAddNativeForm',
|
|
32
|
+
components: {
|
|
33
|
+
XFormItem
|
|
34
|
+
},
|
|
35
|
+
props: {
|
|
36
|
+
// 调用logic获取数据源的追加参数
|
|
37
|
+
getDataParams: {
|
|
38
|
+
type: Object,
|
|
39
|
+
default: undefined
|
|
40
|
+
}
|
|
41
|
+
},
|
|
42
|
+
data () {
|
|
43
|
+
return {
|
|
44
|
+
// 预览模式
|
|
45
|
+
viewMode: false,
|
|
46
|
+
// 是否处理表单Key值
|
|
47
|
+
isHandleFormKey: true,
|
|
48
|
+
// 内容加载是否完成
|
|
49
|
+
loaded: false,
|
|
50
|
+
// 业务类型
|
|
51
|
+
businessType: '',
|
|
52
|
+
// 业务标题
|
|
53
|
+
title: '',
|
|
54
|
+
// 新增或修改业务是否执行中
|
|
55
|
+
loading: false,
|
|
56
|
+
// 表单Model
|
|
57
|
+
form: {},
|
|
58
|
+
// 表单项集合
|
|
59
|
+
formItems: [],
|
|
60
|
+
// 服务名称
|
|
61
|
+
serviceName: 'af-system',
|
|
62
|
+
// 修改有文件的表单时使用
|
|
63
|
+
files: [],
|
|
64
|
+
images: [],
|
|
65
|
+
// 校验
|
|
66
|
+
rules: {}
|
|
67
|
+
}
|
|
68
|
+
},
|
|
69
|
+
computed: {
|
|
70
|
+
businessTitle () {
|
|
71
|
+
return this.businessType + this.title
|
|
72
|
+
},
|
|
73
|
+
// 过滤出用于新增/修改场景的表单项
|
|
74
|
+
realJsonData: function () {
|
|
75
|
+
return this.formItems.filter((item) => {
|
|
76
|
+
return item.addOrEdit && item.addOrEdit !== 'no' && item.addOrEdit !== 'silenceAdd' && item.addOrEdit !== 'version' && !this.itemDisabled(item)
|
|
77
|
+
})
|
|
78
|
+
},
|
|
79
|
+
// 过滤出用于静默新增场景的表单项
|
|
80
|
+
silenceAddJsonData: function () {
|
|
81
|
+
return this.formItems.filter(function (item) {
|
|
82
|
+
return item.addOrEdit === 'silenceAdd'
|
|
83
|
+
})
|
|
84
|
+
},
|
|
85
|
+
// 过滤出版本号表单项
|
|
86
|
+
versionJsonData: function () {
|
|
87
|
+
return this.formItems.filter(function (item) {
|
|
88
|
+
return item.addOrEdit === 'version'
|
|
89
|
+
})
|
|
90
|
+
},
|
|
91
|
+
...mapState('account', { currUser: 'user' })
|
|
92
|
+
},
|
|
93
|
+
methods: {
|
|
94
|
+
init (params) {
|
|
95
|
+
const {
|
|
96
|
+
formItems, viewMode, isHandleFormKey = true, serviceName = 'af-system', modifyModelData = {}, businessType, title, fixedAddForm = {}
|
|
97
|
+
} = params
|
|
98
|
+
this.loaded = false
|
|
99
|
+
this.formItems = JSON.parse(JSON.stringify(formItems))
|
|
100
|
+
this.viewMode = viewMode
|
|
101
|
+
this.isHandleFormKey = isHandleFormKey
|
|
102
|
+
this.serviceName = serviceName
|
|
103
|
+
this.businessType = businessType
|
|
104
|
+
this.title = title
|
|
105
|
+
// 设置表单相关参数
|
|
106
|
+
const formData = Object.assign({}, fixedAddForm)
|
|
107
|
+
for (let i = 0; i < this.realJsonData.length; i++) {
|
|
108
|
+
const item = this.realJsonData[i]
|
|
109
|
+
formData[item.model] = undefined
|
|
110
|
+
// 处理表单校验情况
|
|
111
|
+
if (item.rule) {
|
|
112
|
+
this.rules[item.model] = []
|
|
113
|
+
const required = item.rule.required ? item.rule.required === true || item.rule.required === 'true' : false
|
|
114
|
+
let trigger
|
|
115
|
+
let message
|
|
116
|
+
if (required) {
|
|
117
|
+
switch (item.type) {
|
|
118
|
+
case 'select':
|
|
119
|
+
case 'radio':
|
|
120
|
+
case 'treeSelect':
|
|
121
|
+
message = '请选择' + item.name
|
|
122
|
+
trigger = 'change'
|
|
123
|
+
break
|
|
124
|
+
default:
|
|
125
|
+
message = '请输入' + item.name
|
|
126
|
+
trigger = 'blur'
|
|
127
|
+
}
|
|
128
|
+
this.rules[item.model].push({
|
|
129
|
+
required: true,
|
|
130
|
+
message: message,
|
|
131
|
+
trigger: trigger
|
|
132
|
+
})
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
switch (item.rule.type) {
|
|
136
|
+
case 'number':
|
|
137
|
+
case 'integer':
|
|
138
|
+
case 'float':
|
|
139
|
+
let defaultValue
|
|
140
|
+
let message
|
|
141
|
+
switch (item.rule.type) {
|
|
142
|
+
case 'number':
|
|
143
|
+
message = '数字'
|
|
144
|
+
defaultValue = 0
|
|
145
|
+
break
|
|
146
|
+
case 'integer':
|
|
147
|
+
message = '整数'
|
|
148
|
+
defaultValue = 0
|
|
149
|
+
break
|
|
150
|
+
case 'float':
|
|
151
|
+
message = '小数'
|
|
152
|
+
defaultValue = 0.0
|
|
153
|
+
break
|
|
154
|
+
}
|
|
155
|
+
this.rules[item.model].push({
|
|
156
|
+
type: item.rule.type,
|
|
157
|
+
message: item.name + '必须为' + message,
|
|
158
|
+
transform: (value) => {
|
|
159
|
+
if (value && value.length !== 0) {
|
|
160
|
+
return Number(value)
|
|
161
|
+
} else {
|
|
162
|
+
return defaultValue
|
|
163
|
+
}
|
|
164
|
+
},
|
|
165
|
+
trigger: 'blur'
|
|
166
|
+
})
|
|
167
|
+
break
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
this.form = formData
|
|
172
|
+
if (modifyModelData && modifyModelData.data) {
|
|
173
|
+
this.files = modifyModelData.files
|
|
174
|
+
this.images = modifyModelData.images
|
|
175
|
+
if (Object.keys(modifyModelData.data).length > 0) {
|
|
176
|
+
this.getModifyModelData(modifyModelData)
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
this.loaded = true
|
|
180
|
+
},
|
|
181
|
+
itemDisabled (value) {
|
|
182
|
+
return (this.businessType === '新增' && value.addOrEdit === 'edit') ||
|
|
183
|
+
(this.businessType === '修改' && value.addOrEdit === 'add')
|
|
184
|
+
},
|
|
185
|
+
async onSubmit () {
|
|
186
|
+
this.$refs.selectForm.validate(async valid => {
|
|
187
|
+
// 验证未通过直接返回
|
|
188
|
+
if (!valid) {
|
|
189
|
+
return false
|
|
190
|
+
}
|
|
191
|
+
if (this.viewMode) {
|
|
192
|
+
this.$message.info('预览模式禁止新增和修改')
|
|
193
|
+
return false
|
|
194
|
+
}
|
|
195
|
+
this.loading = true
|
|
196
|
+
for (const key of Object.keys(this.form)) {
|
|
197
|
+
if (this.form[key] === null || this.form[key] === '') {
|
|
198
|
+
this.form[key] = undefined
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
const requestForm = Object.assign({}, this.form)
|
|
202
|
+
// 追加静默新增字段
|
|
203
|
+
if (this.businessType === '新增') {
|
|
204
|
+
for (const item of this.silenceAddJsonData) {
|
|
205
|
+
switch (item.silencePurpose) {
|
|
206
|
+
case 'createTime':
|
|
207
|
+
requestForm[item.model] = formatDate('now')
|
|
208
|
+
break
|
|
209
|
+
case 'operator':
|
|
210
|
+
requestForm[item.model] = this.currUser.name
|
|
211
|
+
break
|
|
212
|
+
case 'orgId':
|
|
213
|
+
requestForm[item.model] = this.currUser.orgid
|
|
214
|
+
break
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
// 通过请求追加静默新增:自定义字段
|
|
218
|
+
for (const item of this.silenceAddJsonData.filter((item) => item.silencePurpose === 'customize')) {
|
|
219
|
+
requestForm[item.model] = await this.getSilenceSource(item.silenceSource, requestForm)
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
// 处理表单键问题
|
|
223
|
+
const realForm = {}
|
|
224
|
+
for (const key of Object.keys(requestForm)) {
|
|
225
|
+
const realKey = this.getRealKey(key)
|
|
226
|
+
realForm[realKey] = requestForm[key]
|
|
227
|
+
}
|
|
228
|
+
// 交由父级处理
|
|
229
|
+
this.$emit('onSubmit', {
|
|
230
|
+
businessType: this.businessType,
|
|
231
|
+
serviceName: this.serviceName,
|
|
232
|
+
realForm: realForm,
|
|
233
|
+
currUserName: this.currUser.name
|
|
234
|
+
}, () => {})
|
|
235
|
+
})
|
|
236
|
+
},
|
|
237
|
+
/**
|
|
238
|
+
* 获取通过logic静默新增的字段
|
|
239
|
+
* @param logicName logic名称
|
|
240
|
+
* @param requestParameters 请求参数
|
|
241
|
+
*/
|
|
242
|
+
async getSilenceSource (logicName, requestParameters) {
|
|
243
|
+
const result = await post('/api/' + this.serviceName + '/logic/' + logicName, requestParameters)
|
|
244
|
+
return result
|
|
245
|
+
},
|
|
246
|
+
// 获取表单字段实际值
|
|
247
|
+
getRealKey (key) {
|
|
248
|
+
if (this.isHandleFormKey) {
|
|
249
|
+
return key.substring(key.indexOf('_') + 1)
|
|
250
|
+
} else {
|
|
251
|
+
return key
|
|
252
|
+
}
|
|
253
|
+
},
|
|
254
|
+
/**
|
|
255
|
+
* 获取被修改记录数据
|
|
256
|
+
* @param modifyModelData 被修改记录的数据
|
|
257
|
+
*/
|
|
258
|
+
getModifyModelData (modifyModelData) {
|
|
259
|
+
if (modifyModelData.primaryKeyData) {
|
|
260
|
+
this.form = Object.assign(this.form, modifyModelData.primaryKeyData)
|
|
261
|
+
}
|
|
262
|
+
for (let i = 0; i < this.realJsonData.length; i++) {
|
|
263
|
+
if (['FilesId', 'Images'].includes(this.realJsonData[i])) {
|
|
264
|
+
// 附件需要跳过 因为会通过 modifyModelData中的files,images属性给upload赋值
|
|
265
|
+
// 新增修改表单每次提交时只会提交最新添加的文件
|
|
266
|
+
continue
|
|
267
|
+
}
|
|
268
|
+
const item = this.realJsonData[i]
|
|
269
|
+
if (modifyModelData.data[item.model] || modifyModelData.data[item.model] === 0) {
|
|
270
|
+
if (modifyModelData.data[item.model] instanceof Array) {
|
|
271
|
+
this.form[item.model] = modifyModelData.data[item.model]
|
|
272
|
+
} else {
|
|
273
|
+
this.form[item.model] = modifyModelData.data[item.model] + ''
|
|
274
|
+
}
|
|
275
|
+
} else {
|
|
276
|
+
this.form[item.model] = undefined
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
// 追加版本号信息
|
|
280
|
+
for (const item of this.versionJsonData) {
|
|
281
|
+
if (!modifyModelData.data[item.model]) {
|
|
282
|
+
this.form[item.model] = 0
|
|
283
|
+
} else {
|
|
284
|
+
this.form[item.model] = modifyModelData.data[item.model] + ''
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
</script>
|