vue2-client 1.4.1 → 1.4.3

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 (102) hide show
  1. package/.env +15 -15
  2. package/.eslintrc.js +82 -82
  3. package/CHANGELOG.md +1 -1
  4. package/index.js +30 -30
  5. package/package.json +78 -78
  6. package/src/base-client/components/common/AddressSearchCombobox/AddressSearchCombobox.vue +225 -225
  7. package/src/base-client/components/common/AmapMarker/AmapPointRendering.vue +113 -113
  8. package/src/base-client/components/common/CitySelect/CitySelect.vue +244 -244
  9. package/src/base-client/components/common/CitySelect/index.js +3 -3
  10. package/src/base-client/components/common/CitySelect/index.md +109 -109
  11. package/src/base-client/components/common/CreateQuery/CreateQuery.vue +589 -543
  12. package/src/base-client/components/common/CreateQuery/CreateQueryItem.vue +777 -777
  13. package/src/base-client/components/common/CreateSimpleFormQuery/CreateSimpleFormQuery.vue +310 -310
  14. package/src/base-client/components/common/CreateSimpleFormQuery/CreateSimpleFormQueryItem.vue +553 -553
  15. package/src/base-client/components/common/FormGroupQuery/FormGroupQuery.vue +165 -165
  16. package/src/base-client/components/common/JSONToTree/jsontotree.vue +275 -275
  17. package/src/base-client/components/common/PersonSetting/PersonSetting.vue +210 -210
  18. package/src/base-client/components/common/PersonSetting/index.js +3 -3
  19. package/src/base-client/components/common/Upload/index.js +3 -3
  20. package/src/base-client/components/common/XAddForm/XAddForm.vue +354 -354
  21. package/src/base-client/components/common/XAddNativeForm/XAddNativeForm.vue +327 -327
  22. package/src/base-client/components/common/XCard/XCard.vue +64 -64
  23. package/src/base-client/components/common/XForm/XForm.vue +274 -274
  24. package/src/base-client/components/common/XForm/XFormItem.vue +389 -389
  25. package/src/base-client/components/common/XFormTable/XFormTable.vue +3 -2
  26. package/src/base-client/components/common/XFormTable/index.md +96 -96
  27. package/src/base-client/components/common/XTable/XTable.vue +259 -259
  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/exception/ExceptionPage.vue +70 -70
  47. package/src/components/form/FormRow.vue +52 -52
  48. package/src/components/index.js +36 -36
  49. package/src/components/menu/SideMenu.vue +62 -62
  50. package/src/components/menu/menu.js +273 -273
  51. package/src/components/setting/Setting.vue +235 -235
  52. package/src/components/table/StandardTable.vue +141 -141
  53. package/src/components/table/advance/ActionColumns.vue +158 -158
  54. package/src/components/table/advance/SearchArea.vue +355 -355
  55. package/src/components/tool/AStepItem.vue +60 -60
  56. package/src/components/tool/AvatarList.vue +68 -68
  57. package/src/components/tool/Drawer.vue +142 -142
  58. package/src/components/tool/TagSelect.vue +83 -83
  59. package/src/components/transition/PageToggleTransition.vue +97 -97
  60. package/src/config/CreateQueryConfig.js +307 -307
  61. package/src/config/default/setting.config.js +41 -41
  62. package/src/config/replacer/resolve.config.js +67 -67
  63. package/src/layouts/AdminLayout.vue +174 -174
  64. package/src/layouts/header/AdminHeader.vue +104 -104
  65. package/src/layouts/header/HeaderNotice.vue +167 -167
  66. package/src/layouts/header/HeaderSearch.vue +67 -67
  67. package/src/layouts/header/InstitutionDetail.vue +181 -181
  68. package/src/layouts/tabs/TabsHead.vue +190 -190
  69. package/src/layouts/tabs/TabsView.vue +379 -379
  70. package/src/mock/goods/index.js +108 -108
  71. package/src/pages/CreateQueryPage.vue +65 -65
  72. package/src/pages/report/ReportTable.js +124 -124
  73. package/src/pages/report/ReportTableHome.vue +28 -28
  74. package/src/pages/resourceManage/orgListManage.vue +98 -98
  75. package/src/pages/system/dictionary/index.vue +43 -43
  76. package/src/pages/system/file/index.vue +317 -317
  77. package/src/pages/system/queryParams/index.vue +43 -43
  78. package/src/router/async/config.async.js +27 -27
  79. package/src/router/async/router.map.js +2 -0
  80. package/src/router/index.js +27 -27
  81. package/src/services/api/DictionaryDetailsViewApi.js +6 -6
  82. package/src/services/api/LogDetailsViewApi.js +10 -10
  83. package/src/services/api/QueryParamsDetailsViewApi.js +6 -6
  84. package/src/services/api/TicketDetailsViewApi.js +34 -34
  85. package/src/services/api/commonTempTable.js +10 -10
  86. package/src/services/api/index.js +17 -17
  87. package/src/services/api/manage.js +8 -8
  88. package/src/services/api/restTools.js +24 -24
  89. package/src/store/mutation-types.js +2 -2
  90. package/src/theme/default/nprogress.less +76 -76
  91. package/src/theme/default/style.less +47 -47
  92. package/src/utils/colors.js +103 -103
  93. package/src/utils/excel/Blob.js +180 -180
  94. package/src/utils/excel/Export2Excel.js +141 -141
  95. package/src/utils/formatter.js +68 -68
  96. package/src/utils/i18n.js +80 -80
  97. package/src/utils/request.js +225 -225
  98. package/src/utils/routerUtil.js +364 -364
  99. package/src/utils/theme-color-replacer-extend.js +91 -91
  100. package/src/utils/themeUtil.js +100 -100
  101. package/src/utils/util.js +230 -230
  102. package/vue.config.js +2 -2
@@ -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>