vue2-client 1.2.73 → 1.2.74

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 (41) hide show
  1. package/.env +15 -15
  2. package/.eslintrc.js +82 -82
  3. package/CHANGELOG.md +4 -0
  4. package/package.json +1 -1
  5. package/src/base-client/components/common/AddressSearchCombobox/AddressSearchCombobox.vue +225 -225
  6. package/src/base-client/components/common/AmapMarker/AmapPointRendering.vue +113 -113
  7. package/src/base-client/components/common/CitySelect/CitySelect.vue +244 -244
  8. package/src/base-client/components/common/CitySelect/index.js +3 -3
  9. package/src/base-client/components/common/CitySelect/index.md +109 -109
  10. package/src/base-client/components/common/CreateQuery/CreateQuery.vue +539 -523
  11. package/src/base-client/components/common/CreateQuery/CreateQueryItem.vue +773 -773
  12. package/src/base-client/components/common/CreateSimpleFormQuery/CreateSimpleFormQuery.vue +310 -310
  13. package/src/base-client/components/common/CreateSimpleFormQuery/CreateSimpleFormQueryItem.vue +553 -553
  14. package/src/base-client/components/common/Upload/Upload.vue +151 -151
  15. package/src/base-client/components/common/Upload/index.js +3 -3
  16. package/src/base-client/components/common/XAddForm/XAddForm.vue +345 -345
  17. package/src/base-client/components/common/XAddNativeForm/XAddNativeForm.vue +322 -322
  18. package/src/base-client/components/common/XForm/XForm.vue +268 -268
  19. package/src/base-client/components/common/XForm/XFormItem.vue +358 -358
  20. package/src/base-client/components/common/XFormTable/XFormTable.vue +491 -491
  21. package/src/base-client/components/common/XTable/XTable.vue +269 -269
  22. package/src/base-client/components/iot/DeviceDetailsView/part/DeviceDetailsException.vue +57 -57
  23. package/src/base-client/components/iot/DeviceDetailsView/part/DeviceDetailsRead.vue +131 -131
  24. package/src/base-client/components/iot/DeviceTypeDetailsView/DeviceTypeDetailsView.vue +300 -300
  25. package/src/base-client/components/iot/WebmeterAnalysisView/WebmeterAnalysisView.vue +647 -647
  26. package/src/base-client/components/ticket/TicketSubmitSuccessView/TicketSubmitSuccessView.vue +532 -532
  27. package/src/base-client/plugins/AppData.js +70 -70
  28. package/src/base-client/plugins/compatible/LoginServiceOA.js +20 -20
  29. package/src/config/CreateQueryConfig.js +301 -301
  30. package/src/pages/resourceManage/orgListManage.vue +98 -98
  31. package/src/router/async/config.async.js +26 -26
  32. package/src/router/async/router.map.js +60 -60
  33. package/src/router/index.js +27 -27
  34. package/src/services/api/common.js +56 -56
  35. package/src/services/api/manage.js +16 -16
  36. package/src/services/api/restTools.js +24 -24
  37. package/src/theme/default/style.less +47 -47
  38. package/src/utils/map-utils.js +28 -28
  39. package/src/utils/request.js +198 -198
  40. package/src/utils/util.js +222 -222
  41. package/vue.config.js +153 -153
@@ -1,269 +1,269 @@
1
- <template>
2
- <div>
3
- <custom-columns-drawer
4
- :columns-meta="jsonData"
5
- :columns.sync="tableColumns"
6
- :visible.sync="visible"/>
7
- <a-row :gutter="48">
8
- <a-col>
9
- <span :style="{ float: 'left', overflow: 'hidden', marginBottom: '8px' }">
10
- <slot name="expand"></slot>
11
- </span>
12
- </a-col>
13
- <a-col>
14
- <span :style="{ float: 'right', overflow: 'hidden', marginBottom: '8px' }">
15
- <a-button-group>
16
- <a-button @click="toggleIsFormShow">
17
- <a-icon :style="iconStyle" type="vertical-align-top"/>
18
- </a-button>
19
- <a-button @click="refresh(true)">
20
- <a-icon :style="iconStyle" type="reload" />
21
- </a-button>
22
- <a-button @click="showDrawer">
23
- <a-icon :style="iconStyle" type="table" />
24
- </a-button>
25
- <a-button v-if="!buttonState || buttonState.export" @click="exports">
26
- <a-icon :style="iconStyle" type="cloud-download"/>
27
- </a-button>
28
- </a-button-group>
29
- </span>
30
- </a-col>
31
- </a-row>
32
- <s-table
33
- ref="table"
34
- :alert="true"
35
- :columns="tableColumns"
36
- :data="loadData"
37
- :rowKey="rowKey"
38
- :rowSelection="rowSelection"
39
- :scroll="{ x: scrollXWidth, y: scrollYWidth }"
40
- showPagination="auto"
41
- size="default"
42
- >
43
- <template
44
- v-for="(item, index) in tableColumns"
45
- :slot="item.dataIndex"
46
- slot-scope="text, record">
47
- <!-- 文本溢出省略(ellipsis) -->
48
- <span v-if="item.slotType === 'ellipsis'" :key="index">
49
- <ellipsis :length="item.slotValue" tooltip>{{ text === '' ? '--' : text }}</ellipsis>
50
- </span>
51
- <!-- 徽标(badge) -->
52
- <span v-else-if="item.slotType === 'badge'" :key="index">
53
- <x-badge :badge-key="item.slotKeyMap" :value="text" />
54
- </span>
55
- <!-- 日期(date) -->
56
- <span v-else-if="item.slotType === 'date'" :key="index">
57
- {{ format(text,'yyyy-MM-dd') }}
58
- </span>
59
- <!-- 日期时间(datetime) -->
60
- <span v-else-if="item.slotType === 'dateTime'" :key="index">
61
- {{ format(text,'yyyy-MM-dd hh:mm:ss') }}
62
- </span>
63
- <!-- 操作列(action) -->
64
- <span v-else-if="item.slotType === 'action'" :key="index">
65
- <a @click="action(record)">{{ item.slotValue }}</a>
66
- </span>
67
- </template>
68
- </s-table>
69
- </div>
70
- </template>
71
- <script>
72
- import { Ellipsis, STable } from '@vue2-client/components'
73
- import { formatDate } from '@vue2-client/utils/util'
74
- import { exportJson } from '@vue2-client/utils/excel/Export2Excel'
75
-
76
- export default {
77
- name: 'XTable',
78
- components: {
79
- STable,
80
- Ellipsis
81
- },
82
- data () {
83
- return {
84
- // 加载数据方法 必须为 Promise 对象
85
- loadData: parameter => {
86
- // 取到表格携带的表单参数
87
- const requestParameters = Object.assign({}, parameter)
88
- // 取到父组件传入的表单参数
89
- const conditionParams = Object.assign(this.fixedQueryForm, this.form)
90
- // 如果适用了综合筛选表单,则进行数据处理
91
- if (conditionParams.rowIdName) {
92
- const rowIdName = conditionParams.rowIdName
93
- const rowIdValue = conditionParams.rowIdValue
94
- delete conditionParams.rowIdName
95
- delete conditionParams.rowIdValue
96
- if (rowIdValue) {
97
- conditionParams[rowIdName] = rowIdValue
98
- }
99
- }
100
- // 如果传了燃气公司字段,则进行数据处理
101
- if (conditionParams.orgName) {
102
- requestParameters.orgName = conditionParams.orgName
103
- delete conditionParams.orgName
104
- }
105
- requestParameters.conditionParams = conditionParams
106
- requestParameters.queryParamsName = this.queryParamsName
107
- requestParameters.queryParams = this.queryParams
108
- // 加载数据
109
- return this.loadTableData(requestParameters)
110
- },
111
- rowKey: undefined,
112
- scrollXWidth: 1600,
113
- scrollYWidth: 437,
114
- selectedRowKeys: [],
115
- selectedRows: [],
116
- // 数据列
117
- tableColumns: this.jsonData,
118
- // 是否显示展示列抽屉
119
- visible: false,
120
- dataSource: [],
121
- // 图标样式
122
- iconStyle: {
123
- position: 'relative',
124
- top: '1px'
125
- }
126
- }
127
- },
128
- watch: {
129
- form (rel) {
130
- this.form = rel
131
- this.refresh(true)
132
- },
133
- jsonData () {
134
- this.initTableParams()
135
- }
136
- },
137
- props: {
138
- jsonData: {
139
- type: Array,
140
- default: () => {
141
- return []
142
- }
143
- },
144
- queryParamsName: {
145
- type: String,
146
- default: () => {
147
- return ''
148
- }
149
- },
150
- // 查询参数对象, 用于没有对应查询配置文件名时
151
- queryParams: {
152
- type: Object,
153
- default: null
154
- },
155
- form: {
156
- type: Object,
157
- default: () => {
158
- return {}
159
- }
160
- },
161
- // 固定查询表单
162
- fixedQueryForm: {
163
- type: Object,
164
- default: () => {
165
- return {}
166
- }
167
- },
168
- // 按钮
169
- buttonState: {
170
- type: Object,
171
- default: () => {
172
- return undefined
173
- }
174
- }
175
- },
176
- computed: {
177
- rowSelection () {
178
- return {
179
- selectedRowKeys: this.selectedRowKeys,
180
- onChange: this.onSelectChange
181
- }
182
- }
183
- },
184
- mounted () {
185
- this.initTableParams()
186
- },
187
- methods: {
188
- exports () {
189
- const tHeader = this.tableColumns.filter(res => res.slotType !== 'action').map(res => res.title)
190
- const filterVal = this.tableColumns.map(res => res.dataIndex)
191
- const list = this.dataSource
192
- const data = this.formatJson(filterVal, list)
193
- exportJson(tHeader, data, new Date())
194
- },
195
- formatJson (filterVal, jsonData) {
196
- return jsonData.map(v => filterVal.map(j => v[j]))
197
- },
198
- badgeFilter (key, value) {
199
- return this.$appdata.getParam(key, value)
200
- },
201
- initTableParams () {
202
- let totalWidth = 0
203
- this.rowKey = this.tableColumns[0].dataIndex
204
- for (let i = 0; i < this.tableColumns.length; i++) {
205
- const item = this.tableColumns[i]
206
- if (item.dataIndex === 'action') {
207
- item.fixed = 'right'
208
- item.width = 70
209
- }
210
- if (item.width) {
211
- totalWidth = totalWidth + item.width
212
- } else {
213
- totalWidth = totalWidth + 180
214
- }
215
- }
216
- const width = document.documentElement.clientWidth
217
- if (width >= 1600) {
218
- this.scrollYWidth = 429
219
- } else if (width >= 1200) {
220
- this.scrollYWidth = 390
221
- } else {
222
- this.scrollYWidth = 343
223
- }
224
- // 横向滚动长度大于所有宽度,才能实现固定表头
225
- this.scrollXWidth = totalWidth
226
- },
227
- loadTableData (requestParameters) {
228
- let data = []
229
- this.$emit('loadData', requestParameters, val => {
230
- data = val
231
- })
232
- const _this = this
233
- data.then(res => {
234
- _this.dataSource = res.data
235
- })
236
- return data
237
- },
238
- action (record) {
239
- this.$emit('action', record, record[this.jsonData[0].dataIndex])
240
- },
241
- onSelectChange (selectedRowKeys, selectedRows) {
242
- this.selectedRowKeys = selectedRowKeys
243
- this.selectedRows = selectedRows
244
- this.$emit('selectRow', selectedRowKeys)
245
- },
246
- clearRowKeys () {
247
- this.$refs.table.clearSelected()
248
- },
249
- /**
250
- * 表格重新加载方法
251
- * 如果参数为 true, 则强制刷新到第一页
252
- */
253
- refresh (bool) {
254
- this.$refs.table.refresh(bool)
255
- },
256
- format (date, format) {
257
- return formatDate(date, format)
258
- },
259
- showDrawer () {
260
- this.visible = true
261
- },
262
- toggleIsFormShow () {
263
- this.$emit('toggleIsFormShow')
264
- }
265
- }
266
- }
267
- </script>
268
- <style lang="less" scoped>
269
- </style>
1
+ <template>
2
+ <div>
3
+ <custom-columns-drawer
4
+ :columns-meta="jsonData"
5
+ :columns.sync="tableColumns"
6
+ :visible.sync="visible"/>
7
+ <a-row :gutter="48">
8
+ <a-col>
9
+ <span :style="{ float: 'left', overflow: 'hidden', marginBottom: '8px' }">
10
+ <slot name="expand"></slot>
11
+ </span>
12
+ </a-col>
13
+ <a-col>
14
+ <span :style="{ float: 'right', overflow: 'hidden', marginBottom: '8px' }">
15
+ <a-button-group>
16
+ <a-button @click="toggleIsFormShow">
17
+ <a-icon :style="iconStyle" type="vertical-align-top"/>
18
+ </a-button>
19
+ <a-button @click="refresh(true)">
20
+ <a-icon :style="iconStyle" type="reload" />
21
+ </a-button>
22
+ <a-button @click="showDrawer">
23
+ <a-icon :style="iconStyle" type="table" />
24
+ </a-button>
25
+ <a-button v-if="!buttonState || buttonState.export" @click="exports">
26
+ <a-icon :style="iconStyle" type="cloud-download"/>
27
+ </a-button>
28
+ </a-button-group>
29
+ </span>
30
+ </a-col>
31
+ </a-row>
32
+ <s-table
33
+ ref="table"
34
+ :alert="true"
35
+ :columns="tableColumns"
36
+ :data="loadData"
37
+ :rowKey="rowKey"
38
+ :rowSelection="rowSelection"
39
+ :scroll="{ x: scrollXWidth, y: scrollYWidth }"
40
+ showPagination="auto"
41
+ size="default"
42
+ >
43
+ <template
44
+ v-for="(item, index) in tableColumns"
45
+ :slot="item.dataIndex"
46
+ slot-scope="text, record">
47
+ <!-- 文本溢出省略(ellipsis) -->
48
+ <span v-if="item.slotType === 'ellipsis'" :key="index">
49
+ <ellipsis :length="item.slotValue" tooltip>{{ text === '' ? '--' : text }}</ellipsis>
50
+ </span>
51
+ <!-- 徽标(badge) -->
52
+ <span v-else-if="item.slotType === 'badge'" :key="index">
53
+ <x-badge :badge-key="item.slotKeyMap" :value="text" />
54
+ </span>
55
+ <!-- 日期(date) -->
56
+ <span v-else-if="item.slotType === 'date'" :key="index">
57
+ {{ format(text,'yyyy-MM-dd') }}
58
+ </span>
59
+ <!-- 日期时间(datetime) -->
60
+ <span v-else-if="item.slotType === 'dateTime'" :key="index">
61
+ {{ format(text,'yyyy-MM-dd hh:mm:ss') }}
62
+ </span>
63
+ <!-- 操作列(action) -->
64
+ <span v-else-if="item.slotType === 'action'" :key="index">
65
+ <a @click="action(record)">{{ item.slotValue }}</a>
66
+ </span>
67
+ </template>
68
+ </s-table>
69
+ </div>
70
+ </template>
71
+ <script>
72
+ import { Ellipsis, STable } from '@vue2-client/components'
73
+ import { formatDate } from '@vue2-client/utils/util'
74
+ import { exportJson } from '@vue2-client/utils/excel/Export2Excel'
75
+
76
+ export default {
77
+ name: 'XTable',
78
+ components: {
79
+ STable,
80
+ Ellipsis
81
+ },
82
+ data () {
83
+ return {
84
+ // 加载数据方法 必须为 Promise 对象
85
+ loadData: parameter => {
86
+ // 取到表格携带的表单参数
87
+ const requestParameters = Object.assign({}, parameter)
88
+ // 取到父组件传入的表单参数
89
+ const conditionParams = Object.assign(this.fixedQueryForm, this.form)
90
+ // 如果适用了综合筛选表单,则进行数据处理
91
+ if (conditionParams.rowIdName) {
92
+ const rowIdName = conditionParams.rowIdName
93
+ const rowIdValue = conditionParams.rowIdValue
94
+ delete conditionParams.rowIdName
95
+ delete conditionParams.rowIdValue
96
+ if (rowIdValue) {
97
+ conditionParams[rowIdName] = rowIdValue
98
+ }
99
+ }
100
+ // 如果传了燃气公司字段,则进行数据处理
101
+ if (conditionParams.orgName) {
102
+ requestParameters.orgName = conditionParams.orgName
103
+ delete conditionParams.orgName
104
+ }
105
+ requestParameters.conditionParams = conditionParams
106
+ requestParameters.queryParamsName = this.queryParamsName
107
+ requestParameters.queryParams = this.queryParams
108
+ // 加载数据
109
+ return this.loadTableData(requestParameters)
110
+ },
111
+ rowKey: undefined,
112
+ scrollXWidth: 1600,
113
+ scrollYWidth: 437,
114
+ selectedRowKeys: [],
115
+ selectedRows: [],
116
+ // 数据列
117
+ tableColumns: this.jsonData,
118
+ // 是否显示展示列抽屉
119
+ visible: false,
120
+ dataSource: [],
121
+ // 图标样式
122
+ iconStyle: {
123
+ position: 'relative',
124
+ top: '1px'
125
+ }
126
+ }
127
+ },
128
+ watch: {
129
+ form (rel) {
130
+ this.form = rel
131
+ this.refresh(true)
132
+ },
133
+ jsonData () {
134
+ this.initTableParams()
135
+ }
136
+ },
137
+ props: {
138
+ jsonData: {
139
+ type: Array,
140
+ default: () => {
141
+ return []
142
+ }
143
+ },
144
+ queryParamsName: {
145
+ type: String,
146
+ default: () => {
147
+ return ''
148
+ }
149
+ },
150
+ // 查询参数对象, 用于没有对应查询配置文件名时
151
+ queryParams: {
152
+ type: Object,
153
+ default: null
154
+ },
155
+ form: {
156
+ type: Object,
157
+ default: () => {
158
+ return {}
159
+ }
160
+ },
161
+ // 固定查询表单
162
+ fixedQueryForm: {
163
+ type: Object,
164
+ default: () => {
165
+ return {}
166
+ }
167
+ },
168
+ // 按钮
169
+ buttonState: {
170
+ type: Object,
171
+ default: () => {
172
+ return undefined
173
+ }
174
+ }
175
+ },
176
+ computed: {
177
+ rowSelection () {
178
+ return {
179
+ selectedRowKeys: this.selectedRowKeys,
180
+ onChange: this.onSelectChange
181
+ }
182
+ }
183
+ },
184
+ mounted () {
185
+ this.initTableParams()
186
+ },
187
+ methods: {
188
+ exports () {
189
+ const tHeader = this.tableColumns.filter(res => res.slotType !== 'action').map(res => res.title)
190
+ const filterVal = this.tableColumns.map(res => res.dataIndex)
191
+ const list = this.dataSource
192
+ const data = this.formatJson(filterVal, list)
193
+ exportJson(tHeader, data, new Date())
194
+ },
195
+ formatJson (filterVal, jsonData) {
196
+ return jsonData.map(v => filterVal.map(j => v[j]))
197
+ },
198
+ badgeFilter (key, value) {
199
+ return this.$appdata.getParam(key, value)
200
+ },
201
+ initTableParams () {
202
+ let totalWidth = 0
203
+ this.rowKey = this.tableColumns[0].dataIndex
204
+ for (let i = 0; i < this.tableColumns.length; i++) {
205
+ const item = this.tableColumns[i]
206
+ if (item.dataIndex === 'action') {
207
+ item.fixed = 'right'
208
+ item.width = 70
209
+ }
210
+ if (item.width) {
211
+ totalWidth = totalWidth + item.width
212
+ } else {
213
+ totalWidth = totalWidth + 180
214
+ }
215
+ }
216
+ const width = document.documentElement.clientWidth
217
+ if (width >= 1600) {
218
+ this.scrollYWidth = 429
219
+ } else if (width >= 1200) {
220
+ this.scrollYWidth = 390
221
+ } else {
222
+ this.scrollYWidth = 343
223
+ }
224
+ // 横向滚动长度大于所有宽度,才能实现固定表头
225
+ this.scrollXWidth = totalWidth
226
+ },
227
+ loadTableData (requestParameters) {
228
+ let data = []
229
+ this.$emit('loadData', requestParameters, val => {
230
+ data = val
231
+ })
232
+ const _this = this
233
+ data.then(res => {
234
+ _this.dataSource = res.data
235
+ })
236
+ return data
237
+ },
238
+ action (record) {
239
+ this.$emit('action', record, record[this.jsonData[0].dataIndex])
240
+ },
241
+ onSelectChange (selectedRowKeys, selectedRows) {
242
+ this.selectedRowKeys = selectedRowKeys
243
+ this.selectedRows = selectedRows
244
+ this.$emit('selectRow', selectedRowKeys)
245
+ },
246
+ clearRowKeys () {
247
+ this.$refs.table.clearSelected()
248
+ },
249
+ /**
250
+ * 表格重新加载方法
251
+ * 如果参数为 true, 则强制刷新到第一页
252
+ */
253
+ refresh (bool) {
254
+ this.$refs.table.refresh(bool)
255
+ },
256
+ format (date, format) {
257
+ return formatDate(date, format)
258
+ },
259
+ showDrawer () {
260
+ this.visible = true
261
+ },
262
+ toggleIsFormShow () {
263
+ this.$emit('toggleIsFormShow')
264
+ }
265
+ }
266
+ }
267
+ </script>
268
+ <style lang="less" scoped>
269
+ </style>
@@ -1,57 +1,57 @@
1
- <template>
2
- <a-card :bordered="false">
3
- <x-form-table
4
- v-if="tabActiveKey === '1'"
5
- :queryParamsName="queryParamsName"
6
- :fixedQueryForm="fixedQueryForm"
7
- @onSubmit="onSubmit"
8
- @action="toDetail">
9
- </x-form-table>
10
- </a-card>
11
- </template>
12
-
13
- <script>
14
- import XFormTable from '@vue2-client/base-client/components/common/XFormTable/XFormTable'
15
-
16
- export default {
17
- name: 'DeviceDetailsException',
18
- components: {
19
- XFormTable
20
- },
21
- data () {
22
- return {
23
- // 选中的异常编号
24
- selectSingularId: undefined,
25
- tabActiveKey: undefined,
26
- fixedQueryForm: {},
27
- // 查询配置文件名
28
- queryParamsName: 'deviceToExceptionQueryParams',
29
- // 是否显示设置设备参数详情抽屉
30
- detailVisible: false
31
- }
32
- },
33
- props: {
34
- deviceId: {
35
- type: Number,
36
- required: true
37
- }
38
- },
39
- mounted () {
40
- this.initView()
41
- },
42
- methods: {
43
- initView () {
44
- this.tabActiveKey = '1'
45
- this.fixedQueryForm['e_f_device_id'] = this.deviceId
46
- },
47
- onSubmit (res) {
48
- res.form['e_f_device_id'] = this.deviceId
49
- this.$emit('onSubmit', res)
50
- },
51
- toDetail (record, id) {
52
- // this.selectSingularId = record.id + ''
53
- // this.detailVisible = true
54
- }
55
- }
56
- }
57
- </script>
1
+ <template>
2
+ <a-card :bordered="false">
3
+ <x-form-table
4
+ v-if="tabActiveKey === '1'"
5
+ :queryParamsName="queryParamsName"
6
+ :fixedQueryForm="fixedQueryForm"
7
+ @onSubmit="onSubmit"
8
+ @action="toDetail">
9
+ </x-form-table>
10
+ </a-card>
11
+ </template>
12
+
13
+ <script>
14
+ import XFormTable from '@vue2-client/base-client/components/common/XFormTable/XFormTable'
15
+
16
+ export default {
17
+ name: 'DeviceDetailsException',
18
+ components: {
19
+ XFormTable
20
+ },
21
+ data () {
22
+ return {
23
+ // 选中的异常编号
24
+ selectSingularId: undefined,
25
+ tabActiveKey: undefined,
26
+ fixedQueryForm: {},
27
+ // 查询配置文件名
28
+ queryParamsName: 'deviceToExceptionQueryParams',
29
+ // 是否显示设置设备参数详情抽屉
30
+ detailVisible: false
31
+ }
32
+ },
33
+ props: {
34
+ deviceId: {
35
+ type: Number,
36
+ required: true
37
+ }
38
+ },
39
+ mounted () {
40
+ this.initView()
41
+ },
42
+ methods: {
43
+ initView () {
44
+ this.tabActiveKey = '1'
45
+ this.fixedQueryForm['e_f_device_id'] = this.deviceId
46
+ },
47
+ onSubmit (res) {
48
+ res.form['e_f_device_id'] = this.deviceId
49
+ this.$emit('onSubmit', res)
50
+ },
51
+ toDetail (record, id) {
52
+ // this.selectSingularId = record.id + ''
53
+ // this.detailVisible = true
54
+ }
55
+ }
56
+ }
57
+ </script>