vue2-client 1.4.64 → 1.5.0

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.
@@ -14,12 +14,10 @@
14
14
  :files="files"
15
15
  :form="form"
16
16
  :images="images"
17
- :selects-array="SelectsArray"
18
17
  :service-name="serviceName"
19
18
  :xl="12"
20
19
  :xxl="8"
21
20
  mode="新增/修改"
22
- @selectsItemCheck="selectsItemCheck"
23
21
  />
24
22
  </a-row>
25
23
  </a-form-model>
@@ -41,21 +39,12 @@ export default {
41
39
  // 内容加载是否完成
42
40
  loaded: false,
43
41
  // 表单Model
44
- form: undefined,
42
+ form: {},
45
43
  // 修改有文件得表单时使用
46
44
  files: [],
47
45
  images: [],
48
- // 多层下拉框组 数据储存
49
- SelectsArray: {},
50
- // 多层下拉框组 各组数量
51
- SelectsNumber: {},
52
46
  // 校验
53
- rules: {},
54
- // 图标样式
55
- iconStyle: {
56
- position: 'relative',
57
- top: '1px'
58
- }
47
+ rules: {}
59
48
  }
60
49
  },
61
50
  computed: {
@@ -121,59 +110,13 @@ export default {
121
110
  visible (rel) {
122
111
  if (rel) {
123
112
  this.formItemLoad()
124
- this.getSelectsArray()
125
113
  }
126
114
  }
127
115
  },
128
116
  mounted () {
129
117
  this.formItemLoad()
130
- this.getSelectsArray()
131
118
  },
132
119
  methods: {
133
- // 初始化级联框数据
134
- getSelectsArray () {
135
- const selectSate = this.jsonData.filter(item => !item.isOnlyAddOrEdit && item.group)
136
- const groupName = [...new Set(selectSate.map(item => item.group))]
137
- // 初始化数据组
138
- groupName.forEach(groupName => {
139
- this.SelectsArray[groupName] = []
140
- const SelectsItem = selectSate.filter(item => {
141
- if (item.groupIndex === 1) {
142
- if (item.keyName.substring(0, 6) === 'logic@') {
143
- // 请求logic
144
- post('/api/' + this.serviceName + '/logic/' + item.keyName.substring(6), {}).then(res => {
145
- this.SelectsArray[item.group][item.groupIndex] = res
146
- this.SelectsArray = JSON.parse(JSON.stringify(this.SelectsArray))
147
- })
148
- } else {
149
- this.SelectsArray[item.group][item.groupIndex] = JSON.parse(item.keyName)
150
- this.SelectsArray = JSON.parse(JSON.stringify(this.SelectsArray))
151
- }
152
- }
153
- return item.group === groupName
154
- }
155
- )
156
- this.SelectsNumber[groupName] = SelectsItem.length ? SelectsItem.length : 0
157
- }
158
- )
159
- this.loaded = true
160
- },
161
- selectsItemCheck (callback, groupName, index, value) {
162
- const tem = { }
163
- const group = this.realJsonData.filter(item => item.addOrEdit && item.group && item.group === groupName)
164
- // 获取当前下拉框子下拉框的数据
165
- this.SelectsArray[groupName][index + 1] = this.SelectsArray[groupName][index].filter(item => item.value === value)[0].children
166
- // 清空子下拉框的子们的数据
167
- for (let i = index; i < this.SelectsNumber[groupName]; i++) {
168
- tem[group[i].model] = undefined
169
- }
170
- this.form = Object.assign({}, this.form, tem)
171
- // 清空子下拉框的子们的数据源
172
- for (let i = index + 2; i <= this.SelectsNumber[groupName]; i++) {
173
- this.SelectsArray[groupName][i] = []
174
- }
175
- callback(this.SelectsArray)
176
- },
177
120
  formItemLoad () {
178
121
  const formData = Object.assign({}, this.fixedAddForm)
179
122
  for (let i = 0; i < this.realJsonData.length; i++) {
@@ -251,12 +194,6 @@ export default {
251
194
  return (this.businessType === '新增' && value.addOrEdit === 'edit') ||
252
195
  (this.businessType === '修改' && value.addOrEdit === 'add')
253
196
  },
254
- itemDisabledPlus (group, index) {
255
- return (!this.SelectsArray[group][index]) || (this.SelectsArray[group][index] && this.SelectsArray[group][index].length === 0)
256
- },
257
- resetForm () {
258
- this.$refs.selectForm.resetFields()
259
- },
260
197
  async onSubmit () {
261
198
  this.$refs.selectForm.validate(async valid => {
262
199
  for (const key of Object.keys(this.form)) {
@@ -264,38 +201,47 @@ export default {
264
201
  this.form[key] = undefined
265
202
  }
266
203
  }
267
- const requestParameters = Object.assign({}, this.form)
204
+ const requestForm = Object.assign({}, this.form)
268
205
  // 追加静默新增字段
269
206
  if (this.businessType === '新增') {
270
207
  for (const item of this.silenceAddJsonData) {
271
208
  switch (item.silencePurpose) {
272
209
  case 'createTime':
273
- requestParameters[item.model] = formatDate('now')
210
+ requestForm[item.model] = formatDate('now')
274
211
  break
275
212
  case 'operator':
276
- requestParameters[item.model] = this.currUser.name
213
+ requestForm[item.model] = this.currUser.name
277
214
  break
278
215
  case 'orgId':
279
- requestParameters[item.model] = this.currUser.orgid
216
+ requestForm[item.model] = this.currUser.orgid
280
217
  break
281
218
  }
282
219
  }
283
220
  // 通过请求追加静默新增:自定义字段
284
221
  for (const item of this.silenceAddJsonData.filter((item) => item.silencePurpose === 'customize')) {
285
- requestParameters[item.model] = await this.getSilenceSource(item.silenceSource, requestParameters)
222
+ requestForm[item.model] = await this.getSilenceSource(item.silenceSource, requestForm)
286
223
  }
287
224
  }
288
225
  const data = {
289
226
  valid: valid,
290
- form: requestParameters
227
+ form: requestForm
291
228
  }
292
229
  this.$emit('onSubmit', data)
293
230
  })
294
231
  },
295
- async getSilenceSource (silenceSource, requestParameters) {
296
- const result = await post('/api/' + this.serviceName + '/logic/' + silenceSource, requestParameters)
232
+ /**
233
+ * 获取通过logic静默新增的字段
234
+ * @param logicName logic名称
235
+ * @param requestParameters 请求参数
236
+ */
237
+ async getSilenceSource (logicName, requestParameters) {
238
+ const result = await post('/api/' + this.serviceName + '/logic/' + logicName, requestParameters)
297
239
  return result
298
240
  },
241
+ /**
242
+ * 获取被修改记录数据
243
+ * @param modifyModelData 被修改记录的数据
244
+ */
299
245
  getModifyModelData () {
300
246
  for (let i = 0; i < this.realJsonData.length; i++) {
301
247
  if (['FilesId', 'Images'].includes(this.realJsonData[i])) {
@@ -305,7 +251,11 @@ export default {
305
251
  }
306
252
  const item = this.realJsonData[i]
307
253
  if (this.modifyModelData.data[item.model] || this.modifyModelData.data[item.model] === 0) {
308
- this.form[item.model] = this.modifyModelData.data[item.model] + ''
254
+ if (this.modifyModelData.data[item.model] instanceof Array) {
255
+ this.form[item.model] = this.modifyModelData.data[item.model]
256
+ } else {
257
+ this.form[item.model] = this.modifyModelData.data[item.model] + ''
258
+ }
309
259
  } else {
310
260
  this.form[item.model] = undefined
311
261
  }
@@ -1,9 +1,9 @@
1
1
  <template>
2
- <div v-show="isShow" class="table-page-search-wrapper">
2
+ <div v-show="visible" class="table-page-search-wrapper">
3
3
  <div v-show="advanced" ref="drawerContainer"></div>
4
4
  <a-form-model
5
5
  v-if="loaded"
6
- ref="selectForm"
6
+ ref="form"
7
7
  :model="form"
8
8
  :rules="rules"
9
9
  layout="inline">
@@ -13,9 +13,7 @@
13
13
  :key="index"
14
14
  :attr="item"
15
15
  :form="form"
16
- :selects-array="SelectsArray"
17
16
  :service-name="serviceName"
18
- @selectsItemCheck="selectsItemCheck"
19
17
  />
20
18
  <a-drawer
21
19
  :get-container="() => {return $refs.drawerContainer}"
@@ -32,9 +30,7 @@
32
30
  :key="'advanced'+index"
33
31
  :attr="item"
34
32
  :form="form"
35
- :selectsArray="SelectsArray"
36
33
  :service-name="serviceName"
37
- @selectsItemCheck="selectsItemCheck"
38
34
  />
39
35
  </a-form-model>
40
36
  </a-drawer>
@@ -49,7 +45,7 @@
49
45
  <a-icon :style="iconStyle" type="redo" />重置
50
46
  </a-button>
51
47
  <slot></slot>
52
- <a v-if="jsonData.length > 6" style="margin-left: 8px" @click="toggleAdvanced">
48
+ <a v-if="realJsonData.length > 6" style="margin-left: 8px" @click="toggleAdvanced">
53
49
  更多条件
54
50
  <a-icon type="down"/>
55
51
  </a>
@@ -62,7 +58,6 @@
62
58
  </template>
63
59
  <script>
64
60
  import XFormItem from '@vue2-client/base-client/components/common/XForm/XFormItem'
65
- import { post } from '@vue2-client/services/api'
66
61
 
67
62
  export default {
68
63
  name: 'XForm',
@@ -73,134 +68,46 @@ export default {
73
68
  return {
74
69
  // 内容加载是否完成
75
70
  loaded: false,
71
+ // 服务名称
72
+ serviceName: 'af-system',
76
73
  // 是否展开条件
77
74
  advanced: false,
78
75
  // 表单Model
79
76
  form: undefined,
80
- // 多层下拉框组 数据储存
81
- SelectsArray: {},
82
- // 多层下拉框组 各组数量
83
- SelectsNumber: {},
84
77
  // 校验
85
78
  rules: {},
86
79
  // 图标样式
87
80
  iconStyle: {
88
81
  position: 'relative',
89
82
  top: '1px'
90
- }
83
+ },
84
+ // 表单项集合
85
+ formItems: [],
86
+ // 是否显示
87
+ visible: true
91
88
  }
92
89
  },
93
90
  computed: {
94
- // 过滤掉仅用于新增/修改场景的表单项 以及多个下拉框得组
91
+ // 过滤掉仅用于新增/修改场景的表单项
95
92
  realJsonData: function () {
96
- return this.jsonData.filter(item => !item.isOnlyAddOrEdit)
93
+ return this.formItems.filter(item => !item.isOnlyAddOrEdit)
97
94
  },
98
95
  },
99
- props: {
100
- jsonData: {
101
- type: Array,
102
- default: () => {
103
- return []
104
- }
105
- },
106
- isExports: {
107
- type: Boolean,
108
- default: () => {
109
- return true
110
- }
111
- },
112
- isShow: {
113
- type: Boolean,
114
- default: () => {
115
- return true
116
- }
117
- },
118
- serviceName: {
119
- type: String,
120
- default: 'af-system'
121
- }
122
- },
123
- mounted () {
124
- this.formItemLoad()
125
- this.getSelectsArray()
126
- },
127
96
  methods: {
128
- // 初始化级联框数据
129
- getSelectsArray () {
130
- const selectSate = this.jsonData.filter(item => !item.isOnlyAddOrEdit && item.group)
131
- const groupName = [...new Set(selectSate.map(item => item.group))]
132
- // 初始化数据组
133
- groupName.forEach(groupName => {
134
- this.SelectsArray[groupName] = []
135
- const SelectsItem = selectSate.filter(item => {
136
- if (item.groupIndex === 1) {
137
- if (item.keyName.substring(0, 6) === 'logic@') {
138
- // 请求logic
139
- post('/api/' + this.serviceName + '/logic/' + item.keyName.substring(6), {}).then(res => {
140
- this.SelectsArray[item.group][item.groupIndex] = res
141
- this.SelectsArray = JSON.parse(JSON.stringify(this.SelectsArray))
142
- })
143
- } else {
144
- this.SelectsArray[item.group][item.groupIndex] = JSON.parse(item.keyName)
145
- this.SelectsArray = JSON.parse(JSON.stringify(this.SelectsArray))
146
- }
147
- }
148
- return item.group === groupName
149
- }
150
- )
151
- this.SelectsNumber[groupName] = SelectsItem.length ? SelectsItem.length : 0
152
- }
153
- )
154
- this.loaded = true
155
- },
156
- selectsItemCheck (callback, groupName, index, value) {
157
- const tem = { }
158
- const group = this.realJsonData.filter(item => !item.isOnlyAddOrEdit && item.group && item.group === groupName)
159
- // 获取当前下拉框子下拉框的数据
160
- this.SelectsArray[groupName][index + 1] = this.SelectsArray[groupName][index].filter(item => item.value === value)[0].children
161
- // 清空子下拉框的子们的数据
162
- for (let i = index; i < this.SelectsNumber[groupName]; i++) {
163
- tem[group[i].model] = undefined
164
- }
165
- this.form = Object.assign({}, this.form, tem)
166
- // 清空子下拉框的子们的数据源
167
- for (let i = index + 2; i <= this.SelectsNumber[groupName]; i++) {
168
- this.SelectsArray[groupName][i] = []
169
- }
170
- callback(this.SelectsArray)
171
- },
172
- formItemLoad () {
97
+ init (params) {
98
+ const {
99
+ formItems, serviceName = 'af-system'
100
+ } = params
101
+ this.loaded = false
102
+ this.formItems = JSON.parse(JSON.stringify(formItems))
103
+ this.serviceName = serviceName
173
104
  const formData = {}
174
105
  for (let i = 0; i < this.realJsonData.length; i++) {
175
106
  const item = this.realJsonData[i]
176
107
  formData[item.model] = undefined
177
- if (item.keys && item.model === 'rowIdValue' && item.keys.length > 0) {
178
- // 处理综合筛选下拉框默认值情况
179
- formData.rowIdName = Object.keys(item.keys[0])[0]
180
- }
181
108
  // 处理表单校验情况
182
109
  if (item.rule) {
183
110
  this.rules[item.model] = []
184
- // const required = item.rule.required ? item.rule.required === true || item.rule.required === 'true' : false
185
- // let trigger
186
- // let message
187
- // if (required) {
188
- // switch (item.type) {
189
- // case 'select':
190
- // message = '请选择' + item.name
191
- // trigger = 'change'
192
- // break
193
- // default:
194
- // message = '请输入' + item.name
195
- // trigger = 'blur'
196
- // }
197
- // this.rules[item.model].push({
198
- // required: true,
199
- // message: message,
200
- // trigger: trigger
201
- // })
202
- // }
203
-
204
111
  switch (item.rule.type) {
205
112
  case 'number':
206
113
  case 'integer':
@@ -238,15 +145,19 @@ export default {
238
145
  }
239
146
  }
240
147
  this.form = formData
148
+ this.loaded = true
241
149
  },
242
150
  toggleAdvanced () {
243
151
  this.advanced = !this.advanced
244
152
  },
153
+ toggleVisible () {
154
+ this.visible = !this.visible
155
+ },
245
156
  resetForm () {
246
- this.$refs.selectForm.resetFields()
157
+ this.$refs.form.resetFields()
247
158
  },
248
159
  onSubmit () {
249
- this.$refs.selectForm.validate(valid => {
160
+ this.$refs.form.validate(valid => {
250
161
  for (const key of Object.keys(this.form)) {
251
162
  if (this.form[key] === null || this.form[key] === '') {
252
163
  this.form[key] = undefined