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