lw-cdp-ui 1.4.22 → 1.4.23

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.
@@ -11,7 +11,7 @@
11
11
  <div v-if="item.data?.setting?.activeDateUnitFilter" class="filter-top">
12
12
  <el-radio-group v-model="item.timeUnit" @change="changeTimeUnit(item, index)">
13
13
  <el-radio-button :label="key" :value="value"
14
- v-for="(value, key) in item.data?.setting?.optionalDateUnitRanges" />
14
+ v-for="(value, key) in item.data?.setting?.optionalDateUnitRanges" :key="key" />
15
15
  <el-radio-button disabled
16
16
  v-if="Object.keys(item.data?.setting?.optionalDateUnitRanges).length == 0">未选择周期列表</el-radio-button>
17
17
  </el-radio-group>
@@ -160,60 +160,93 @@ export default {
160
160
  removeChart(index) {
161
161
  this.modelValue.splice(index, 1)
162
162
  },
163
- getFilter(filterControls) {
164
- filterControls.forEach(async control => {
165
- switch (control.type) {
166
- case 'DATA_PICKER':
167
- case 'DATA_CASCADE':
168
- if (control.dataPickerSetting.options.type == 'DICT') {
169
- this.searchOptions.push({
170
- label: control.name,
171
- prop: `values.${control.dataPickerSetting.code}`,
172
- renderType: 'select',
173
- options: Object.entries(control.dataPickerSetting.options.dict).map(([key, value]) => ({
174
- value: key,
175
- label: value
176
- })),
177
- valueKey: 'value',
178
- labelKey: 'label'
179
- })
180
- } else {
181
- let list = await this.$api.dimensionChild.list({}, control.dataPickerSetting.options.dimensionTableId)
182
- this.searchOptions.push({
183
- label: control.name,
184
- prop: `values.${control.dataPickerSetting.code}`,
185
- renderType: 'select',
186
- options: list.map(item => ({
187
- value: item.id,
188
- label: item.name
189
- })),
190
- valueKey: 'value',
191
- labelKey: 'label'
192
- })
193
- }
163
+ async getFilter(filterControls) {
164
+ for (const control of filterControls) {
165
+ const { type } = control
194
166
 
167
+ const getOptions = async (setting) => {
168
+ const { type, dict, dataInterfaceUri, dimensionTableId } = setting.options
169
+ if (type === 'DICT') {
170
+ return Object.entries(dict).map(([key, value]) => ({ value: key, label: value }))
171
+ } else if (type === 'DATA_INTERFACE') {
172
+ const res = await this.$http.get(dataInterfaceUri)
173
+ return res.map((item) => ({ value: item.id, label: item.name }))
174
+ } else {
175
+ const res = await this.$api.dimensionChild.list({}, dimensionTableId)
176
+ return res.map((item) => ({ value: item.id, label: item.name }))
177
+ }
178
+ }
179
+
180
+ const getTreeOptions = async (setting) => {
181
+ const { type, dict, dataInterfaceUri, dimensionTableId } = setting.options
182
+ if (type === 'DICT') {
183
+ return Object.entries(dict).map(([key, value]) => ({ value: key, label: value }))
184
+ } else if (type === 'DATA_INTERFACE') {
185
+ const res = await this.$http.get(dataInterfaceUri)
186
+ return this.listToTree(res)
187
+ } else {
188
+ const res = await this.$api.dimensionChild.list({}, dimensionTableId)
189
+ return this.listToTree(res)
190
+ }
191
+ }
192
+
193
+ switch (type) {
194
+ case 'DATA_PICKER': {
195
+ const setting = control.dataPickerSetting
196
+ const options = await getOptions(setting)
197
+ this.searchOptions.push({
198
+ label: control.name,
199
+ prop: `values.${setting.code}`,
200
+ renderType: 'select',
201
+ options,
202
+ valueKey: 'value',
203
+ labelKey: 'label'
204
+ })
195
205
  break
196
- case 'DATA_INPUT':
206
+ }
207
+
208
+ case 'DATA_CASCADE': {
209
+ const setting = control.dataPickerSetting
210
+ const items = await getTreeOptions(setting)
211
+ this.searchOptions.push({
212
+ label: control.name,
213
+ name: `values.${setting.code}`,
214
+ value: '',
215
+ component: 'treeSelect',
216
+ options: {
217
+ items,
218
+ placeholder: '请选择' + control.name,
219
+ checkStrictly: true
220
+ }
221
+ })
222
+ break
223
+ }
224
+
225
+ case 'DATA_INPUT': {
197
226
  this.searchOptions.push({
198
227
  label: control.name,
199
228
  prop: `values.${control.dataInputSetting.code}`,
200
229
  renderType: 'input'
201
230
  })
202
231
  break
203
- case 'DATE_PICKER':
232
+ }
233
+
234
+ case 'DATE_PICKER': {
235
+ const setting = control.datePickerSetting
204
236
  this.searchOptions.push({
205
237
  label: control.name,
206
- prop: `ranges.${control.datePickerSetting.code}`,
238
+ prop: `ranges.${setting.code}`,
207
239
  renderType: 'dateRange',
208
240
  valueFormat: 'YYYY-MM-DDTHH:mm:ss.SSSZ'
209
241
  })
210
- this.globalFilter.ranges[control.datePickerSetting.code] = {
242
+ this.globalFilter.ranges[setting.code] = {
211
243
  timeRange: {},
212
- type: control.datePickerSetting.type
244
+ type: setting.type
213
245
  }
214
246
  break
247
+ }
215
248
  }
216
- })
249
+ }
217
250
  }
218
251
  }
219
252
  }