vue2-client 1.4.13 → 1.4.14

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.
Files changed (99) hide show
  1. package/.env +15 -15
  2. package/.eslintrc.js +82 -82
  3. package/CHANGELOG.md +4 -0
  4. package/index.js +30 -30
  5. package/package.json +1 -1
  6. package/src/assets/img/querySlotDemo.svg +16 -0
  7. package/src/base-client/components/common/AddressSearchCombobox/AddressSearchCombobox.vue +225 -225
  8. package/src/base-client/components/common/AmapMarker/AmapPointRendering.vue +113 -113
  9. package/src/base-client/components/common/CitySelect/CitySelect.vue +244 -244
  10. package/src/base-client/components/common/CitySelect/index.js +3 -3
  11. package/src/base-client/components/common/CitySelect/index.md +109 -109
  12. package/src/base-client/components/common/CreateQuery/CreateQuery.vue +593 -591
  13. package/src/base-client/components/common/CreateQuery/CreateQueryItem.vue +777 -777
  14. package/src/base-client/components/common/CreateSimpleFormQuery/CreateSimpleFormQuery.vue +310 -310
  15. package/src/base-client/components/common/CreateSimpleFormQuery/CreateSimpleFormQueryItem.vue +553 -553
  16. package/src/base-client/components/common/FormGroupQuery/FormGroupQuery.vue +165 -165
  17. package/src/base-client/components/common/JSONToTree/jsontotree.vue +275 -275
  18. package/src/base-client/components/common/PersonSetting/PersonSetting.vue +210 -210
  19. package/src/base-client/components/common/PersonSetting/index.js +3 -3
  20. package/src/base-client/components/common/Upload/index.js +3 -3
  21. package/src/base-client/components/common/XAddForm/XAddForm.vue +354 -354
  22. package/src/base-client/components/common/XAddNativeForm/XAddNativeForm.vue +327 -327
  23. package/src/base-client/components/common/XCard/XCard.vue +64 -64
  24. package/src/base-client/components/common/XForm/XForm.vue +274 -274
  25. package/src/base-client/components/common/XForm/XFormItem.vue +389 -389
  26. package/src/base-client/components/common/XFormTable/XFormTable.vue +548 -548
  27. package/src/base-client/components/common/XFormTable/index.md +96 -96
  28. package/src/base-client/components/system/QueryParamsDetailsView/QueryParamsDetailsView.vue +281 -281
  29. package/src/base-client/components/ticket/TicketDetailsView/TicketDetailsView.vue +807 -807
  30. package/src/base-client/components/ticket/TicketDetailsView/index.md +29 -29
  31. package/src/base-client/components/ticket/TicketDetailsView/part/TicketDetailsFlow.vue +260 -260
  32. package/src/base-client/components/ticket/TicketSubmitSuccessView/TicketSubmitSuccessView.vue +532 -532
  33. package/src/base-client/components/ticket/TicketSubmitSuccessView/index.md +29 -29
  34. package/src/base-client/plugins/AppData.js +69 -69
  35. package/src/base-client/plugins/GetLoginInfoService.js +179 -179
  36. package/src/base-client/plugins/PagedList.js +177 -177
  37. package/src/base-client/plugins/compatible/LoginServiceOA.js +20 -20
  38. package/src/base-client/plugins/i18n-extend.js +32 -32
  39. package/src/components/Ellipsis/index.md +38 -38
  40. package/src/components/NumberInfo/index.md +43 -43
  41. package/src/components/STable/README.md +341 -341
  42. package/src/components/STable/index.js +318 -318
  43. package/src/components/Trend/index.md +45 -45
  44. package/src/components/checkbox/ColorCheckbox.vue +157 -157
  45. package/src/components/checkbox/ImgCheckbox.vue +163 -163
  46. package/src/components/form/FormRow.vue +52 -52
  47. package/src/components/index.js +36 -36
  48. package/src/components/menu/SideMenu.vue +62 -62
  49. package/src/components/menu/menu.js +273 -273
  50. package/src/components/setting/Setting.vue +235 -235
  51. package/src/components/table/StandardTable.vue +141 -141
  52. package/src/components/table/advance/ActionColumns.vue +158 -158
  53. package/src/components/table/advance/SearchArea.vue +355 -355
  54. package/src/components/tool/AStepItem.vue +60 -60
  55. package/src/components/tool/AvatarList.vue +68 -68
  56. package/src/components/tool/Drawer.vue +142 -142
  57. package/src/components/tool/TagSelect.vue +83 -83
  58. package/src/components/transition/PageToggleTransition.vue +97 -97
  59. package/src/config/CreateQueryConfig.js +307 -307
  60. package/src/config/replacer/resolve.config.js +67 -67
  61. package/src/layouts/AdminLayout.vue +174 -174
  62. package/src/layouts/header/AdminHeader.vue +104 -104
  63. package/src/layouts/header/HeaderNotice.vue +167 -167
  64. package/src/layouts/header/HeaderSearch.vue +67 -67
  65. package/src/layouts/header/InstitutionDetail.vue +181 -181
  66. package/src/layouts/tabs/TabsHead.vue +190 -190
  67. package/src/layouts/tabs/TabsView.vue +379 -379
  68. package/src/mock/goods/index.js +108 -108
  69. package/src/pages/CreateQueryPage.vue +65 -65
  70. package/src/pages/report/ReportTable.js +124 -124
  71. package/src/pages/report/ReportTableHome.vue +28 -28
  72. package/src/pages/resourceManage/orgListManage.vue +98 -98
  73. package/src/pages/system/dictionary/index.vue +43 -43
  74. package/src/pages/system/file/index.vue +317 -317
  75. package/src/pages/system/queryParams/index.vue +43 -43
  76. package/src/router/async/config.async.js +27 -27
  77. package/src/router/async/router.map.js +63 -61
  78. package/src/router/index.js +27 -27
  79. package/src/services/api/DictionaryDetailsViewApi.js +6 -6
  80. package/src/services/api/LogDetailsViewApi.js +10 -10
  81. package/src/services/api/QueryParamsDetailsViewApi.js +6 -6
  82. package/src/services/api/TicketDetailsViewApi.js +34 -34
  83. package/src/services/api/commonTempTable.js +10 -10
  84. package/src/services/api/index.js +17 -17
  85. package/src/services/api/manage.js +8 -8
  86. package/src/services/api/restTools.js +24 -24
  87. package/src/store/modules/index.js +4 -4
  88. package/src/theme/default/nprogress.less +76 -76
  89. package/src/theme/default/style.less +47 -47
  90. package/src/utils/colors.js +103 -103
  91. package/src/utils/excel/Blob.js +180 -180
  92. package/src/utils/excel/Export2Excel.js +141 -141
  93. package/src/utils/formatter.js +68 -68
  94. package/src/utils/i18n.js +80 -80
  95. package/src/utils/routerUtil.js +364 -364
  96. package/src/utils/theme-color-replacer-extend.js +91 -91
  97. package/src/utils/themeUtil.js +100 -100
  98. package/src/utils/util.js +230 -230
  99. package/vue.config.js +106 -106
@@ -1,310 +1,310 @@
1
- <template>
2
- <a-drawer
3
- title="基础表单配置生成"
4
- placement="right"
5
- :width="isMobile ? screenWidth : screenWidth * 0.85"
6
- :visible="visible"
7
- @close="onClose"
8
- >
9
- <a-row :gutter="24">
10
- <a-col :xl="14" :lg="12" :md="12" :sm="24" :xs="24">
11
- <a-form-model
12
- ref="businessCreateForm"
13
- :rules="rules"
14
- :model="form"
15
- :label-col="labelCol"
16
- :wrapper-col="wrapperCol"
17
- >
18
- <a-form-model-item label="参数组名称" prop="group">
19
- <a-input v-model="form.group" placeholder="设置表单项的组名,如:设置上报参数" />
20
- </a-form-model-item>
21
- <a-form-model-item label="参数组描述" prop="describe">
22
- <a-input v-model="form.describe" placeholder="简单描述参数组,如:用于配置物联网设备的上报参数" />
23
- </a-form-model-item>
24
- <a-form-model-item label="数据字段" prop="column">
25
- <a-button type="primary" @click="addColumnItem()">增加</a-button>
26
- <div v-for="(columnItem, index) in form.column" :key="index">
27
- <a-row :gutter="16">
28
- <a-col :span="16">
29
- <span style="font-weight: bold">{{ columnItem.title }}({{ columnItem.key }})</span>
30
- </a-col>
31
- <a-col v-if="index > 0 && form.column.length > 1" :span="2">
32
- <a-icon type="up-square" @click="upColumnItem(columnItem.key,index)"/>
33
- </a-col>
34
- <a-col v-if="(index !== form.column.length - 1) && form.column.length > 1" :span="2">
35
- <a-icon type="down-square" @click="downColumnItem(columnItem.key,index)"/>
36
- </a-col>
37
- <a-col :span="2">
38
- <a-icon type="edit" @click="editColumnItem(columnItem.key,index)"/>
39
- </a-col>
40
- <a-col :span="2">
41
- <a-icon type="close" @click="removeColumnItem(columnItem.key,index)"/>
42
- </a-col>
43
- </a-row>
44
- </div>
45
- </a-form-model-item>
46
- </a-form-model>
47
- <create-simple-form-query-item ref="queryItem" @itemHandle="itemHandle" @getColumn="getColumn"/>
48
- <a-button type="primary" @click="view">操作</a-button>
49
- </a-col>
50
- <a-col :xl="10" :lg="12" :md="12" :sm="24" :xs="24">
51
- <a-card :bordered="false" title="预览" size="small" style="overflow: auto">
52
- <json-viewer :copyable="{copyText: '复制', copiedText: '已复制'}" :value="result" :expand-depth="parseInt('100')" style="overflow: auto;max-height: 440px"></json-viewer>
53
- </a-card>
54
- </a-col>
55
- </a-row>
56
- <x-add-form
57
- business-title="效果预览"
58
- business-type="新增"
59
- :visible.sync="modelVisible"
60
- :json-data="formItems"
61
- @onSubmit="submit"/>
62
- </a-drawer>
63
- </template>
64
-
65
- <script>
66
- import CreateSimpleFormQueryItem from './CreateSimpleFormQueryItem'
67
- import XAddForm from '@vue2-client/base-client/components/common/XAddForm/XAddForm'
68
- import JsonViewer from 'vue-json-viewer'
69
- import FileSaver from 'file-saver'
70
- import { mapState } from 'vuex'
71
- import { commonApi, post } from '@vue2-client/services/api'
72
- export default {
73
- name: 'CreateSimpleFormQuery',
74
- components: {
75
- CreateSimpleFormQueryItem,
76
- JsonViewer,
77
- XAddForm
78
- },
79
- data () {
80
- return {
81
- // 页面宽度
82
- screenWidth: document.documentElement.clientWidth,
83
- // 效果预览模态框是否展示
84
- modelVisible: false,
85
- // 数据列操作类型:新增,修改
86
- type: '新增',
87
- labelCol: { span: 4 },
88
- wrapperCol: { span: 14 },
89
- form: {
90
- group: '',
91
- describe: '',
92
- column: []
93
- },
94
- result: {},
95
- itemMap: {},
96
- selectIndex: null,
97
- selectType: undefined,
98
- joinArray: [],
99
- rules: {
100
- group: [{ required: true, message: '请输入参数组名称', trigger: 'blur' }],
101
- describe: [{ required: true, message: '请输入参数组描述', trigger: 'blur' }]
102
- },
103
- formItems: [],
104
- // 字典键集合
105
- option: []
106
- }
107
- },
108
- mounted () {
109
- this.initView()
110
- },
111
- computed: {
112
- ...mapState('setting', ['isMobile'])
113
- },
114
- props: {
115
- visible: {
116
- type: Boolean,
117
- default: false
118
- },
119
- toEditJson: {
120
- type: Object,
121
- default: () => {}
122
- }
123
- },
124
- watch: {
125
- visible (rel) {
126
- if (rel) {
127
- this.initView()
128
- }
129
- if (rel && this.toEditJson) {
130
- this.form = Object.assign(
131
- {
132
- group: '',
133
- describe: '',
134
- column: []
135
- }, this.toEditJson
136
- )
137
- for (const columnItem of this.form.column) {
138
- // 必选项兼容处理
139
- if (columnItem.rule && columnItem.rule.required && columnItem.rule.required !== 'false') {
140
- columnItem.rule.required = columnItem.rule.required.toString()
141
- } else {
142
- if (!columnItem.rule) {
143
- columnItem.rule = {}
144
- }
145
- columnItem.rule.required = 'false'
146
- }
147
- // 数据源加载方式兼容处理
148
- if (columnItem.lazyLoad && columnItem.lazyLoad !== 'false') {
149
- columnItem.lazyLoad = columnItem.lazyLoad.toString()
150
- } else {
151
- columnItem.lazyLoad = 'false'
152
- }
153
- // 下拉框数据源兼容处理
154
- if ((columnItem.formType === 'select' || columnItem.formType === 'cascader') && columnItem.selectKey) {
155
- // 数据源为logic
156
- if (columnItem.selectKey.toString().startsWith('logic@')) {
157
- columnItem.selectType = 'logic'
158
- } else if (columnItem.selectKey instanceof Array || this.isJSON(columnItem.selectKey)) {
159
- // 数据源为固定json集合
160
- if (columnItem.selectKey instanceof Array) {
161
- columnItem.selectKey = JSON.stringify(columnItem.selectKey)
162
- }
163
- columnItem.selectType = 'fixArray'
164
- } else {
165
- columnItem.selectType = 'key'
166
- }
167
- }
168
- this.itemMap[columnItem.key] = Object.assign({
169
- key: '',
170
- title: '',
171
- pathKey: '',
172
- rule: {
173
- required: 'false'
174
- }
175
- }, columnItem)
176
- }
177
- }
178
- }
179
- },
180
- methods: {
181
- // 初始化组件
182
- initView () {
183
- this.result = {}
184
- post(commonApi.getDictionaryParam, {}).then(res => {
185
- this.option = res
186
- })
187
- },
188
- onClose () {
189
- this.$emit('update:visible', false)
190
- },
191
- filterOption (input, option) {
192
- return (
193
- option.componentOptions.children[0].text.toLowerCase().indexOf(input.toLowerCase()) >= 0
194
- )
195
- },
196
- onModelClose () {
197
- this.modelVisible = false
198
- },
199
- removeColumnItem (key, index) {
200
- const _this = this
201
- this.$confirm({
202
- title: '您确定要删除该数据项?',
203
- content: '删除的数据项无法恢复',
204
- okText: '确定',
205
- okType: 'danger',
206
- cancelText: '取消',
207
- onOk () {
208
- delete _this.itemMap[key]
209
- _this.form.column.splice(index, 1)
210
- }
211
- })
212
- },
213
- upColumnItem (key, index) {
214
- const newIndex = index - 1
215
- const itemA = this.form.column[newIndex]
216
- const itemB = this.form.column[index]
217
- this.form.column.splice(index, 1, itemA)
218
- this.form.column.splice(newIndex, 1, itemB)
219
- },
220
- downColumnItem (key, index) {
221
- const newIndex = index + 1
222
- const itemA = this.form.column[newIndex]
223
- const itemB = this.form.column[index]
224
- this.form.column.splice(index, 1, itemA)
225
- this.form.column.splice(newIndex, 1, itemB)
226
- },
227
- itemHandle (item, type) {
228
- console.log(JSON.stringify(item))
229
- this.itemMap[item.key] = item
230
- if (type === '新增') {
231
- this.form.column.push(item)
232
- } else {
233
- this.$set(this.form.column, this.selectIndex, item)
234
- }
235
- this.$message.success(`${type}成功`)
236
- this.$refs.queryItem.flashModal(false)
237
- },
238
- addColumnItem () {
239
- this.type = '新增'
240
- this.$refs.queryItem.addColumnItemExecute()
241
- },
242
- editColumnItem (key, index) {
243
- if (this.itemMap[key]) {
244
- this.$refs.queryItem.editColumnItemExecute(this.itemMap[key])
245
- this.selectIndex = index
246
- } else {
247
- this.$message.warn('编辑失败')
248
- }
249
- },
250
- getColumn (callback) {
251
- callback(JSON.parse(JSON.stringify(this.form.column)))
252
- },
253
- // 判断是否为json字符串
254
- isJSON (str) {
255
- if (typeof str == 'string') {
256
- try {
257
- const obj = JSON.parse(str)
258
- return !!(typeof obj == 'object' && obj)
259
- } catch (e) {
260
- return false
261
- }
262
- }
263
- },
264
- exportJson () {
265
- const data = JSON.stringify(this.form, null, 2)
266
- const blob = new Blob([data], { type: 'application/json' })
267
- FileSaver.saveAs(blob, `SimpleFormQuery.json`)
268
- this.$message.success('导出成功!')
269
- },
270
- viewHandle (then) {
271
- if (this.form.column.length === 0) {
272
- this.$message.error('你没有增加任何数据字段')
273
- return
274
- }
275
- this.result = JSON.parse(JSON.stringify(this.form))
276
- for (const item of this.result.column) {
277
- if (item.selectType === 'fixArray') {
278
- item.selectKey = JSON.parse(item.selectKey)
279
- }
280
- }
281
- then()
282
- },
283
- view () {
284
- this.$refs.businessCreateForm.validate(valid => {
285
- if (valid) {
286
- this.viewHandle(() => {
287
- post(commonApi.getColumnsJson, { queryObject: this.result }).then(res => {
288
- this.formItems = res.formJson
289
- this.modelVisible = true
290
- })
291
- })
292
- }
293
- })
294
- },
295
- submit () {
296
- this.onModelClose()
297
- this.$refs.businessCreateForm.validate(valid => {
298
- if (valid) {
299
- this.viewHandle(() => {
300
- // saveQueryParams
301
- this.$emit('saveSimpleFormQueryParams', this.result)
302
- })
303
- }
304
- })
305
- },
306
- }
307
- }
308
- </script>
309
- <style lang="less" scoped>
310
- </style>
1
+ <template>
2
+ <a-drawer
3
+ title="基础表单配置生成"
4
+ placement="right"
5
+ :width="isMobile ? screenWidth : screenWidth * 0.85"
6
+ :visible="visible"
7
+ @close="onClose"
8
+ >
9
+ <a-row :gutter="24">
10
+ <a-col :xl="14" :lg="12" :md="12" :sm="24" :xs="24">
11
+ <a-form-model
12
+ ref="businessCreateForm"
13
+ :rules="rules"
14
+ :model="form"
15
+ :label-col="labelCol"
16
+ :wrapper-col="wrapperCol"
17
+ >
18
+ <a-form-model-item label="参数组名称" prop="group">
19
+ <a-input v-model="form.group" placeholder="设置表单项的组名,如:设置上报参数" />
20
+ </a-form-model-item>
21
+ <a-form-model-item label="参数组描述" prop="describe">
22
+ <a-input v-model="form.describe" placeholder="简单描述参数组,如:用于配置物联网设备的上报参数" />
23
+ </a-form-model-item>
24
+ <a-form-model-item label="数据字段" prop="column">
25
+ <a-button type="primary" @click="addColumnItem()">增加</a-button>
26
+ <div v-for="(columnItem, index) in form.column" :key="index">
27
+ <a-row :gutter="16">
28
+ <a-col :span="16">
29
+ <span style="font-weight: bold">{{ columnItem.title }}({{ columnItem.key }})</span>
30
+ </a-col>
31
+ <a-col v-if="index > 0 && form.column.length > 1" :span="2">
32
+ <a-icon type="up-square" @click="upColumnItem(columnItem.key,index)"/>
33
+ </a-col>
34
+ <a-col v-if="(index !== form.column.length - 1) && form.column.length > 1" :span="2">
35
+ <a-icon type="down-square" @click="downColumnItem(columnItem.key,index)"/>
36
+ </a-col>
37
+ <a-col :span="2">
38
+ <a-icon type="edit" @click="editColumnItem(columnItem.key,index)"/>
39
+ </a-col>
40
+ <a-col :span="2">
41
+ <a-icon type="close" @click="removeColumnItem(columnItem.key,index)"/>
42
+ </a-col>
43
+ </a-row>
44
+ </div>
45
+ </a-form-model-item>
46
+ </a-form-model>
47
+ <create-simple-form-query-item ref="queryItem" @itemHandle="itemHandle" @getColumn="getColumn"/>
48
+ <a-button type="primary" @click="view">操作</a-button>
49
+ </a-col>
50
+ <a-col :xl="10" :lg="12" :md="12" :sm="24" :xs="24">
51
+ <a-card :bordered="false" title="预览" size="small" style="overflow: auto">
52
+ <json-viewer :copyable="{copyText: '复制', copiedText: '已复制'}" :value="result" :expand-depth="parseInt('100')" style="overflow: auto;max-height: 440px"></json-viewer>
53
+ </a-card>
54
+ </a-col>
55
+ </a-row>
56
+ <x-add-form
57
+ business-title="效果预览"
58
+ business-type="新增"
59
+ :visible.sync="modelVisible"
60
+ :json-data="formItems"
61
+ @onSubmit="submit"/>
62
+ </a-drawer>
63
+ </template>
64
+
65
+ <script>
66
+ import CreateSimpleFormQueryItem from './CreateSimpleFormQueryItem'
67
+ import XAddForm from '@vue2-client/base-client/components/common/XAddForm/XAddForm'
68
+ import JsonViewer from 'vue-json-viewer'
69
+ import FileSaver from 'file-saver'
70
+ import { mapState } from 'vuex'
71
+ import { commonApi, post } from '@vue2-client/services/api'
72
+ export default {
73
+ name: 'CreateSimpleFormQuery',
74
+ components: {
75
+ CreateSimpleFormQueryItem,
76
+ JsonViewer,
77
+ XAddForm
78
+ },
79
+ data () {
80
+ return {
81
+ // 页面宽度
82
+ screenWidth: document.documentElement.clientWidth,
83
+ // 效果预览模态框是否展示
84
+ modelVisible: false,
85
+ // 数据列操作类型:新增,修改
86
+ type: '新增',
87
+ labelCol: { span: 4 },
88
+ wrapperCol: { span: 14 },
89
+ form: {
90
+ group: '',
91
+ describe: '',
92
+ column: []
93
+ },
94
+ result: {},
95
+ itemMap: {},
96
+ selectIndex: null,
97
+ selectType: undefined,
98
+ joinArray: [],
99
+ rules: {
100
+ group: [{ required: true, message: '请输入参数组名称', trigger: 'blur' }],
101
+ describe: [{ required: true, message: '请输入参数组描述', trigger: 'blur' }]
102
+ },
103
+ formItems: [],
104
+ // 字典键集合
105
+ option: []
106
+ }
107
+ },
108
+ mounted () {
109
+ this.initView()
110
+ },
111
+ computed: {
112
+ ...mapState('setting', ['isMobile'])
113
+ },
114
+ props: {
115
+ visible: {
116
+ type: Boolean,
117
+ default: false
118
+ },
119
+ toEditJson: {
120
+ type: Object,
121
+ default: () => {}
122
+ }
123
+ },
124
+ watch: {
125
+ visible (rel) {
126
+ if (rel) {
127
+ this.initView()
128
+ }
129
+ if (rel && this.toEditJson) {
130
+ this.form = Object.assign(
131
+ {
132
+ group: '',
133
+ describe: '',
134
+ column: []
135
+ }, this.toEditJson
136
+ )
137
+ for (const columnItem of this.form.column) {
138
+ // 必选项兼容处理
139
+ if (columnItem.rule && columnItem.rule.required && columnItem.rule.required !== 'false') {
140
+ columnItem.rule.required = columnItem.rule.required.toString()
141
+ } else {
142
+ if (!columnItem.rule) {
143
+ columnItem.rule = {}
144
+ }
145
+ columnItem.rule.required = 'false'
146
+ }
147
+ // 数据源加载方式兼容处理
148
+ if (columnItem.lazyLoad && columnItem.lazyLoad !== 'false') {
149
+ columnItem.lazyLoad = columnItem.lazyLoad.toString()
150
+ } else {
151
+ columnItem.lazyLoad = 'false'
152
+ }
153
+ // 下拉框数据源兼容处理
154
+ if ((columnItem.formType === 'select' || columnItem.formType === 'cascader') && columnItem.selectKey) {
155
+ // 数据源为logic
156
+ if (columnItem.selectKey.toString().startsWith('logic@')) {
157
+ columnItem.selectType = 'logic'
158
+ } else if (columnItem.selectKey instanceof Array || this.isJSON(columnItem.selectKey)) {
159
+ // 数据源为固定json集合
160
+ if (columnItem.selectKey instanceof Array) {
161
+ columnItem.selectKey = JSON.stringify(columnItem.selectKey)
162
+ }
163
+ columnItem.selectType = 'fixArray'
164
+ } else {
165
+ columnItem.selectType = 'key'
166
+ }
167
+ }
168
+ this.itemMap[columnItem.key] = Object.assign({
169
+ key: '',
170
+ title: '',
171
+ pathKey: '',
172
+ rule: {
173
+ required: 'false'
174
+ }
175
+ }, columnItem)
176
+ }
177
+ }
178
+ }
179
+ },
180
+ methods: {
181
+ // 初始化组件
182
+ initView () {
183
+ this.result = {}
184
+ post(commonApi.getDictionaryParam, {}).then(res => {
185
+ this.option = res
186
+ })
187
+ },
188
+ onClose () {
189
+ this.$emit('update:visible', false)
190
+ },
191
+ filterOption (input, option) {
192
+ return (
193
+ option.componentOptions.children[0].text.toLowerCase().indexOf(input.toLowerCase()) >= 0
194
+ )
195
+ },
196
+ onModelClose () {
197
+ this.modelVisible = false
198
+ },
199
+ removeColumnItem (key, index) {
200
+ const _this = this
201
+ this.$confirm({
202
+ title: '您确定要删除该数据项?',
203
+ content: '删除的数据项无法恢复',
204
+ okText: '确定',
205
+ okType: 'danger',
206
+ cancelText: '取消',
207
+ onOk () {
208
+ delete _this.itemMap[key]
209
+ _this.form.column.splice(index, 1)
210
+ }
211
+ })
212
+ },
213
+ upColumnItem (key, index) {
214
+ const newIndex = index - 1
215
+ const itemA = this.form.column[newIndex]
216
+ const itemB = this.form.column[index]
217
+ this.form.column.splice(index, 1, itemA)
218
+ this.form.column.splice(newIndex, 1, itemB)
219
+ },
220
+ downColumnItem (key, index) {
221
+ const newIndex = index + 1
222
+ const itemA = this.form.column[newIndex]
223
+ const itemB = this.form.column[index]
224
+ this.form.column.splice(index, 1, itemA)
225
+ this.form.column.splice(newIndex, 1, itemB)
226
+ },
227
+ itemHandle (item, type) {
228
+ console.log(JSON.stringify(item))
229
+ this.itemMap[item.key] = item
230
+ if (type === '新增') {
231
+ this.form.column.push(item)
232
+ } else {
233
+ this.$set(this.form.column, this.selectIndex, item)
234
+ }
235
+ this.$message.success(`${type}成功`)
236
+ this.$refs.queryItem.flashModal(false)
237
+ },
238
+ addColumnItem () {
239
+ this.type = '新增'
240
+ this.$refs.queryItem.addColumnItemExecute()
241
+ },
242
+ editColumnItem (key, index) {
243
+ if (this.itemMap[key]) {
244
+ this.$refs.queryItem.editColumnItemExecute(this.itemMap[key])
245
+ this.selectIndex = index
246
+ } else {
247
+ this.$message.warn('编辑失败')
248
+ }
249
+ },
250
+ getColumn (callback) {
251
+ callback(JSON.parse(JSON.stringify(this.form.column)))
252
+ },
253
+ // 判断是否为json字符串
254
+ isJSON (str) {
255
+ if (typeof str == 'string') {
256
+ try {
257
+ const obj = JSON.parse(str)
258
+ return !!(typeof obj == 'object' && obj)
259
+ } catch (e) {
260
+ return false
261
+ }
262
+ }
263
+ },
264
+ exportJson () {
265
+ const data = JSON.stringify(this.form, null, 2)
266
+ const blob = new Blob([data], { type: 'application/json' })
267
+ FileSaver.saveAs(blob, `SimpleFormQuery.json`)
268
+ this.$message.success('导出成功!')
269
+ },
270
+ viewHandle (then) {
271
+ if (this.form.column.length === 0) {
272
+ this.$message.error('你没有增加任何数据字段')
273
+ return
274
+ }
275
+ this.result = JSON.parse(JSON.stringify(this.form))
276
+ for (const item of this.result.column) {
277
+ if (item.selectType === 'fixArray') {
278
+ item.selectKey = JSON.parse(item.selectKey)
279
+ }
280
+ }
281
+ then()
282
+ },
283
+ view () {
284
+ this.$refs.businessCreateForm.validate(valid => {
285
+ if (valid) {
286
+ this.viewHandle(() => {
287
+ post(commonApi.getColumnsJson, { queryObject: this.result }).then(res => {
288
+ this.formItems = res.formJson
289
+ this.modelVisible = true
290
+ })
291
+ })
292
+ }
293
+ })
294
+ },
295
+ submit () {
296
+ this.onModelClose()
297
+ this.$refs.businessCreateForm.validate(valid => {
298
+ if (valid) {
299
+ this.viewHandle(() => {
300
+ // saveQueryParams
301
+ this.$emit('saveSimpleFormQueryParams', this.result)
302
+ })
303
+ }
304
+ })
305
+ },
306
+ }
307
+ }
308
+ </script>
309
+ <style lang="less" scoped>
310
+ </style>