vue2-client 1.8.201 → 1.8.202

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 (185) hide show
  1. package/.env +19 -19
  2. package/.eslintrc.js +90 -90
  3. package/CHANGELOG.md +824 -824
  4. package/Components.md +60 -60
  5. package/babel.config.js +21 -21
  6. package/docs/index.md +30 -30
  7. package/docs/lowcode.md +161 -161
  8. package/index.js +31 -31
  9. package/jest-transform-stub.js +8 -8
  10. package/jest.config.js +21 -21
  11. package/jest.setup.js +7 -7
  12. package/package.json +1 -1
  13. package/public/index.html +27 -27
  14. package/src/App.vue +185 -185
  15. package/src/ReportView.js +19 -19
  16. package/src/assets/img/querySlotDemo.svg +15 -15
  17. package/src/assets/svg/badtwo.svg +1 -1
  18. package/src/assets/svg/goodtwo.svg +1 -1
  19. package/src/base-client/components/common/AMisRender/index.js +3 -3
  20. package/src/base-client/components/common/AMisRender/index.vue +263 -263
  21. package/src/base-client/components/common/AddressSearchCombobox/AddressSearchCombobox.vue +316 -316
  22. package/src/base-client/components/common/AmapMarker/AmapPointRendering.vue +120 -120
  23. package/src/base-client/components/common/AmapMarker/index.js +3 -3
  24. package/src/base-client/components/common/CitySelect/CitySelect.vue +346 -346
  25. package/src/base-client/components/common/CitySelect/index.js +3 -3
  26. package/src/base-client/components/common/CitySelect/index.md +109 -109
  27. package/src/base-client/components/common/CreateQuery/CreateQuery.vue +669 -669
  28. package/src/base-client/components/common/CreateQuery/CreateQueryItem.vue +1014 -1014
  29. package/src/base-client/components/common/CreateQuery/index.js +3 -3
  30. package/src/base-client/components/common/CreateQuery/index.md +42 -42
  31. package/src/base-client/components/common/CreateSimpleFormQuery/CreateSimpleFormQuery.vue +452 -452
  32. package/src/base-client/components/common/CreateSimpleFormQuery/CreateSimpleFormQueryItem.vue +511 -511
  33. package/src/base-client/components/common/CreateSimpleFormQuery/index.js +3 -3
  34. package/src/base-client/components/common/CreateSimpleFormQuery/index.md +42 -42
  35. package/src/base-client/components/common/FormGroupEdit/FormGroupEdit.vue +149 -149
  36. package/src/base-client/components/common/FormGroupEdit/index.js +3 -3
  37. package/src/base-client/components/common/FormGroupEdit/index.md +43 -43
  38. package/src/base-client/components/common/FormGroupQuery/FormGroupQuery.vue +166 -166
  39. package/src/base-client/components/common/FormGroupQuery/index.js +3 -3
  40. package/src/base-client/components/common/FormGroupQuery/index.md +43 -43
  41. package/src/base-client/components/common/JSONToTree/jsontotree.vue +271 -271
  42. package/src/base-client/components/common/LowCodePageRender/LowCodePageRender.vue +29 -29
  43. package/src/base-client/components/common/LowCodePageRender/editorPageRender.vue +299 -299
  44. package/src/base-client/components/common/LowCodePageRender/index.js +3 -3
  45. package/src/base-client/components/common/PersonSetting/PersonSetting.vue +208 -208
  46. package/src/base-client/components/common/PersonSetting/index.js +3 -3
  47. package/src/base-client/components/common/Tree/Tree.vue +149 -149
  48. package/src/base-client/components/common/Tree/index.js +2 -2
  49. package/src/base-client/components/common/Upload/Upload.vue +197 -197
  50. package/src/base-client/components/common/Upload/index.js +3 -3
  51. package/src/base-client/components/common/XAddForm/XAddForm.vue +92 -92
  52. package/src/base-client/components/common/XAddNativeForm/XAddNativeForm.vue +547 -547
  53. package/src/base-client/components/common/XAddNativeForm/index.md +146 -146
  54. package/src/base-client/components/common/XAddNativeFormOA/XAddNativeFormOA.vue +303 -303
  55. package/src/base-client/components/common/XAddNativeFormOA/index.js +3 -3
  56. package/src/base-client/components/common/XAddNativeFormOA/index.md +146 -146
  57. package/src/base-client/components/common/XBadge/XBadge.vue +78 -78
  58. package/src/base-client/components/common/XCard/XCard.vue +64 -64
  59. package/src/base-client/components/common/XDataDrawer/XDataDrawer.vue +180 -180
  60. package/src/base-client/components/common/XDataDrawer/index.js +3 -3
  61. package/src/base-client/components/common/XDataDrawer/index.md +41 -41
  62. package/src/base-client/components/common/XDescriptions/XDescriptions.vue +144 -144
  63. package/src/base-client/components/common/XDescriptions/index.js +3 -3
  64. package/src/base-client/components/common/XDescriptions/index.md +83 -83
  65. package/src/base-client/components/common/XForm/XForm.vue +255 -255
  66. package/src/base-client/components/common/XForm/XTreeSelect.vue +208 -208
  67. package/src/base-client/components/common/XForm/index.md +178 -178
  68. package/src/base-client/components/common/XFormCol/XFormCol.vue +36 -36
  69. package/src/base-client/components/common/XFormTable/XFormTable.vue +492 -492
  70. package/src/base-client/components/common/XFormTable/index.md +98 -98
  71. package/src/base-client/components/common/XFormTable/lowcodeEditorRegister.js +12 -12
  72. package/src/base-client/components/common/XImportExcel/XImportExcel.vue +131 -131
  73. package/src/base-client/components/common/XReport/XReport.vue +703 -703
  74. package/src/base-client/components/common/XReport/XReportDesign.vue +428 -428
  75. package/src/base-client/components/common/XReport/XReportJsonRender.vue +234 -234
  76. package/src/base-client/components/common/XReport/XReportTrGroup.vue +663 -663
  77. package/src/base-client/components/common/XReport/index.js +3 -3
  78. package/src/base-client/components/common/XReport/index.md +44 -44
  79. package/src/base-client/components/common/XReportSlot/XReportSlot.vue +110 -110
  80. package/src/base-client/components/common/XReportSlot/index.js +3 -3
  81. package/src/base-client/components/common/XReportSlot/index.md +48 -48
  82. package/src/base-client/components/common/XStepView/XStepView.vue +252 -252
  83. package/src/base-client/components/common/XStepView/index.js +3 -3
  84. package/src/base-client/components/common/XStepView/index.md +31 -31
  85. package/src/base-client/components/common/XTable/XTable.vue +570 -570
  86. package/src/base-client/components/common/XTable/index.md +255 -255
  87. package/src/base-client/components/common/XTree/XTree.vue +318 -318
  88. package/src/base-client/components/common/XTree/index.js +3 -3
  89. package/src/base-client/components/common/XTree/index.md +36 -36
  90. package/src/base-client/components/common/XTreeOne/XTreeOne.vue +114 -114
  91. package/src/base-client/components/common/XTreeOne/lowcodeEditorRegister.js +9 -9
  92. package/src/base-client/components/index.js +47 -47
  93. package/src/base-client/components/system/DictionaryDetailsView/DictionaryDetailsView.vue +232 -232
  94. package/src/base-client/components/system/QueryParamsDetailsView/QueryParamsDetailsView.vue +281 -281
  95. package/src/base-client/plugins/AppData.js +115 -115
  96. package/src/base-client/plugins/Config.js +19 -19
  97. package/src/base-client/plugins/GetLoginInfoService.js +183 -182
  98. package/src/base-client/plugins/tabs-page-plugin.js +39 -39
  99. package/src/bootstrap.js +39 -39
  100. package/src/components/CodeMirror/inedx.vue +118 -118
  101. package/src/components/CodeMirror/setting.js +40 -40
  102. package/src/components/FilePreview/FilePreview.vue +166 -166
  103. package/src/components/NumberInfo/NumberInfo.vue +54 -54
  104. package/src/components/STable/index.js +323 -323
  105. package/src/components/checkbox/ColorCheckbox.vue +157 -157
  106. package/src/components/checkbox/ImgCheckbox.vue +163 -163
  107. package/src/components/menu/SideMenu.vue +75 -75
  108. package/src/components/menu/menu.js +273 -273
  109. package/src/components/tool/AStepItem.vue +60 -60
  110. package/src/config/CreateQueryConfig.js +322 -322
  111. package/src/config/default/antd.config.js +89 -89
  112. package/src/config/default/setting.config.js +53 -53
  113. package/src/font-style/font.css +4 -4
  114. package/src/layouts/CommonLayout.vue +56 -56
  115. package/src/layouts/PageLayout.vue +151 -151
  116. package/src/layouts/SinglePageView.vue +138 -138
  117. package/src/layouts/header/AdminHeader.vue +132 -132
  118. package/src/layouts/header/HeaderNotice.vue +177 -177
  119. package/src/layouts/tabs/TabsHead.vue +189 -189
  120. package/src/layouts/tabs/TabsView.vue +387 -387
  121. package/src/lib.js +1 -1
  122. package/src/main.js +26 -26
  123. package/src/mock/extend/index.js +84 -84
  124. package/src/mock/goods/index.js +108 -108
  125. package/src/pages/AMisDemo/AMisDemo.vue +325 -325
  126. package/src/pages/AMisDemo/AMisDemo2.vue +74 -74
  127. package/src/pages/DynamicStatistics/ChartSelector.vue +331 -331
  128. package/src/pages/DynamicStatistics/DataTabs.vue +83 -83
  129. package/src/pages/DynamicStatistics/DynamicTable.vue +128 -128
  130. package/src/pages/DynamicStatistics/EvaluationArea.vue +69 -69
  131. package/src/pages/DynamicStatistics/FavoriteList.vue +51 -51
  132. package/src/pages/DynamicStatistics/QuestionHistoryAndFavorites.vue +591 -591
  133. package/src/pages/DynamicStatistics/SearchBar.vue +192 -192
  134. package/src/pages/DynamicStatistics/index.vue +282 -282
  135. package/src/pages/Example/index.vue +578 -578
  136. package/src/pages/ServiceReview/index.vue +284 -284
  137. package/src/pages/XReportView/index.vue +62 -62
  138. package/src/pages/login/Login.vue +378 -378
  139. package/src/pages/login/LoginV3.vue +389 -389
  140. package/src/pages/lowCode/lowCodeEditor.vue +621 -621
  141. package/src/pages/lowCode/lowCodeRender.vue +39 -39
  142. package/src/pages/resourceManage/orgListManage.vue +98 -98
  143. package/src/pages/system/dictionary/index.vue +44 -44
  144. package/src/pages/system/monitor/loginInfor/index.vue +37 -37
  145. package/src/pages/system/monitor/operLog/index.vue +37 -37
  146. package/src/pages/system/settings/modifyPassword.vue +117 -117
  147. package/src/pages/system/ticket/index.vue +480 -480
  148. package/src/pages/system/ticket/submitTicketSuccess.vue +484 -484
  149. package/src/router/async/config.async.js +32 -32
  150. package/src/router/async/router.map.js +104 -104
  151. package/src/router/guards.js +220 -220
  152. package/src/router/index.js +27 -27
  153. package/src/router.js +18 -18
  154. package/src/services/api/TicketDetailsViewApi.js +46 -46
  155. package/src/services/api/cas.js +79 -79
  156. package/src/services/api/common.js +274 -274
  157. package/src/services/api/entity.js +18 -18
  158. package/src/services/api/index.js +17 -17
  159. package/src/services/api/restTools.js +46 -46
  160. package/src/services/apiService.js +14 -14
  161. package/src/services/user.js +71 -71
  162. package/src/store/modules/setting.js +119 -119
  163. package/src/theme/default/style.less +57 -57
  164. package/src/utils/authority-utils.js +85 -85
  165. package/src/utils/errorCode.js +6 -6
  166. package/src/utils/htmlToPDF.js +108 -108
  167. package/src/utils/htmlToPDFApi.js +5 -5
  168. package/src/utils/indexedDB.js +201 -201
  169. package/src/utils/login.js +144 -144
  170. package/src/utils/lowcode/lowcodeComponentMixin.js +67 -67
  171. package/src/utils/lowcode/lowcodeLog.js +29 -29
  172. package/src/utils/lowcode/lowcodeUtils.js +51 -51
  173. package/src/utils/lowcode/registerComponentForEditor.js +7 -7
  174. package/src/utils/lowcode/registerComponentForRender.js +7 -7
  175. package/src/utils/map-utils.js +47 -47
  176. package/src/utils/request.js +343 -343
  177. package/src/utils/routerUtil.js +435 -435
  178. package/src/utils/runEvalFunction.js +6 -6
  179. package/src/utils/util.js +231 -231
  180. package/src/utils/waterMark.js +31 -31
  181. package/test/Amis.spec.js +163 -163
  182. package/test/Tree.spec.js +167 -167
  183. package/test/myDialog.spec.js +46 -46
  184. package/vue.config.js +176 -176
  185. package//350/277/201/347/247/273/346/227/245/345/277/227.md +15 -15
@@ -1,570 +1,570 @@
1
- <template>
2
- <div v-show="tableColumns.length > 0">
3
- <a-row :gutter="48">
4
- <a-col>
5
- <span :style="{ float: 'left', overflow: 'hidden', marginBottom: '8px' }">
6
- <a-space>
7
- <slot name="leftButton" :selectedRowKeys="selectedRowKeys" :selectedRows="selectedRows"></slot>
8
- <a-button v-if="!buttonState || buttonState.add" type="primary" @click="add">
9
- <a-icon type="plus"/>新增
10
- </a-button>
11
- <a-button
12
- v-if="!buttonState || buttonState.edit"
13
- :disabled="!isModify"
14
- :loading="editLoading"
15
- class="btn-success"
16
- type="dashed"
17
- @click="edit()">
18
- <a-icon :style="iconStyle" type="edit"/>修改
19
- </a-button>
20
- <a-button v-if="!buttonState || buttonState.delete" :disabled="!isDelete" type="danger" @click="deleteItem">
21
- <a-icon :style="iconStyle" type="delete"/>删除
22
- </a-button>
23
- <a-button v-if="!buttonState || buttonState.import" type="dashed" @click="importData">
24
- <a-icon :style="iconStyle" type="import"/>导入
25
- </a-button>
26
- <a-dropdown v-if="!buttonState || buttonState.export">
27
- <a-menu slot="overlay">
28
- <a-menu-item :disabled="selectedRowKeys.length === 0" key="1" @click="handleExport(true)"><a-icon
29
- :style="iconStyle"
30
- type="ordered-list"/>导出选中数据</a-menu-item>
31
- <a-menu-item key="2" @click="handleExport(false)"><a-icon :style="iconStyle" type="snippets"/>导出本页数据</a-menu-item>
32
- <a-menu-item key="3" @click="handleExportByQuery"><a-icon :style="iconStyle" type="download"/>导出所有符合条件的数据</a-menu-item>
33
- </a-menu>
34
- <a-button>导出 <a-icon type="down" :style="iconStyle"/> </a-button>
35
- </a-dropdown>
36
- <slot name="button" :selectedRowKeys="selectedRowKeys" :selectedRows="selectedRows"></slot>
37
- </a-space>
38
- </span>
39
- </a-col>
40
- <a-col>
41
- <span :style="{ float: 'right', overflow: 'hidden', marginBottom: '8px' }">
42
- <a-button-group>
43
- <slot name="rightBtnExpand" :selectedRowKeys="selectedRowKeys" :selectedRows="selectedRows"></slot>
44
- <a-tooltip title="重新查询">
45
- <a-button @click="refresh(true)">
46
- <a-icon :style="iconStyle" type="reload"/>
47
- </a-button>
48
- </a-tooltip>
49
- <a-tooltip title="列展示/排序">
50
- <table-setting v-if="columnSelectLoaded" v-model="tableColumns"/>
51
- </a-tooltip>
52
- </a-button-group>
53
- </span>
54
- </a-col>
55
- </a-row>
56
- <s-table
57
- ref="table"
58
- :alert="true"
59
- :columns="tableColumns"
60
- :data="loadData"
61
- :rowKey="rowKey"
62
- :rowSelection="rowSelection"
63
- :scroll="{ x: scrollXWidth, y: scrollYHeight }"
64
- :showPagination="showPagination"
65
- size="default"
66
- >
67
- <template
68
- v-for="(item, index) in tableColumns"
69
- :slot="item.dataIndex"
70
- slot-scope="text, record">
71
- <!-- 文本溢出省略(ellipsis) -->
72
- <span v-if="item.slotType === 'ellipsis'" :key="index">
73
- <ellipsis :length="item.slotValue" tooltip>{{ text === '' ? '--' : text }}</ellipsis>
74
- </span>
75
- <!-- 徽标(badge) -->
76
- <span v-else-if="item.slotType === 'badge'" :key="index">
77
- <x-badge v-if="text !== null && text !== undefined" :badge-key="item.slotKeyMap" :value="text"/>
78
- </span>
79
- <!-- 日期(date) -->
80
- <span v-else-if="item.slotType === 'date'" :key="index">
81
- {{ format(text, 'yyyy-MM-dd') }}
82
- </span>
83
- <!-- 日期时间(datetime) -->
84
- <span v-else-if="item.slotType === 'dateTime'" :key="index">
85
- {{ format(text, 'yyyy-MM-dd hh:mm:ss') }}
86
- </span>
87
- <!-- 操作列(action) -->
88
- <span v-else-if="item.slotType === 'action'" :key="index">
89
- <template v-if="item.actionArr && item.actionArr.length > 0">
90
- <a-dropdown>
91
- <a class="ant-dropdown-link" @click="e => e.preventDefault()">
92
- {{ item.scopedSlots?.customRender || item.slotValue }} <a-icon type="down"/>
93
- </a>
94
- <a-menu slot="overlay" style="min-width: 60px">
95
- <a-menu-item
96
- v-for="(action_item, index) in item.actionArr"
97
- :key="index"
98
- v-if="!action_item.customFunction || executeStrFunction( action_item.customFunction,[record,index])">
99
- <a
100
- style="text-align: center"
101
- @click="action(record, item.dataIndex, action_item.func)"
102
- >{{ action_item.text }}</a>
103
- </a-menu-item>
104
- </a-menu>
105
- </a-dropdown>
106
- </template>
107
- <template v-if="!item.actionArr || item.actionArr.length === 0">
108
- <a @click="action(record, item.dataIndex)">{{ item.slotValue }}</a>
109
- </template>
110
- </span>
111
- </template>
112
- <template slot="footer">
113
- <slot name="footer" :selectedRowKeys="selectedRowKeys" :selectedRows="selectedRows"></slot>
114
- </template>
115
- </s-table>
116
- <!-- 上传文件 -->
117
- <x-import-excel
118
- ref="importExcel"
119
- @ok="refresh(true)"
120
- :title="title"
121
- :service-name="serviceName"
122
- :query-params-name="queryParamsName"
123
- />
124
- </div>
125
- </template>
126
- <script>
127
- import { Ellipsis, STable } from '@vue2-client/components'
128
- import { formatDate } from '@vue2-client/utils/util'
129
- import XBadge from '@vue2-client/base-client/components/common/XBadge'
130
- import TableSetting from '@vue2-client/components/TableSetting/TableSetting'
131
- import { exportJson } from '@vue2-client/utils/excel/Export2Excel'
132
- import { exportData, query, queryWithResource, remove } from '@vue2-client/services/api/common'
133
- import XImportExcel from '@vue2-client/base-client/components/common/XImportExcel'
134
- import { Modal } from 'ant-design-vue'
135
- import { post } from '@vue2-client/services/api'
136
- import { CommonTempTable } from '@vue2-client/services/api/commonTempTable'
137
- import { mapState } from 'vuex'
138
- import executeStrFunction from '@vue2-client/utils/runEvalFunction'
139
-
140
- export default {
141
- name: 'XTable',
142
- components: {
143
- TableSetting,
144
- STable,
145
- Ellipsis,
146
- XBadge,
147
- XImportExcel
148
- },
149
- data () {
150
- return {
151
- // 筛选列加载状态
152
- columnSelectLoaded: false,
153
- // 预览模式
154
- viewMode: false,
155
- // 加载数据方法 必须为 Promise 对象
156
- loadData: parameter => {
157
- // 取到表格携带的表单参数
158
- const requestParameters = Object.assign({}, parameter)
159
- // 取到父组件传入的表单参数
160
- const conditionParams = {}
161
- Object.assign(conditionParams, this.fixedQueryForm)
162
- Object.assign(conditionParams, this.form)
163
- // 如果传了燃气公司字段,则进行数据处理
164
- if (conditionParams.orgName) {
165
- requestParameters.orgName = conditionParams.orgName
166
- delete conditionParams.orgName
167
- }
168
- requestParameters.conditionParams = conditionParams
169
- requestParameters.queryParamsName = this.queryParamsName
170
- requestParameters.queryParams = this.queryParams
171
- // 加载数据
172
- return this.loadTableData(requestParameters)
173
- },
174
- rowKey: undefined,
175
- // x滚动条宽度
176
- scrollXWidth: 1600,
177
- // y滚动条高度
178
- scrollYHeight: 'calc(100vh - 31rem)',
179
- // 表格选择列Key集合
180
- selectedRowKeys: [],
181
- // 表格选择Row集合
182
- selectedRows: [],
183
- // 禁止表格选择Row集合
184
- selectedDisableRows: [],
185
- // 业务标题
186
- title: '',
187
- // 数据列
188
- tableColumns: [],
189
- // 查询用表单
190
- form: {},
191
- // 是否允许修改
192
- isModify: false,
193
- // 是否允许删除
194
- isDelete: false,
195
- // 服务名称
196
- serviceName: undefined,
197
- // 选中用于修改的id
198
- selectId: undefined,
199
- // 是否为临时表
200
- isTableTemp: false,
201
- // 是否显示展示列抽屉
202
- visible: false,
203
- // 编辑按钮加载状态
204
- editLoading: false,
205
- // 按钮状态
206
- buttonState: {},
207
- // 图标样式
208
- iconStyle: {
209
- position: 'relative',
210
- top: '1px'
211
- },
212
- // 当前环境
213
- env: 'prod'
214
- }
215
- },
216
- props: {
217
- // 查询配置文件名
218
- queryParamsName: {
219
- type: String,
220
- default: () => {
221
- return ''
222
- }
223
- },
224
- // 查询配置文件Json
225
- queryParamsJson: {
226
- type: Object,
227
- default: null
228
- },
229
- // 固定查询表单
230
- fixedQueryForm: {
231
- type: Object,
232
- default: () => {
233
- return {}
234
- }
235
- },
236
- // 数据只有一页时是否展示分页,true:展示,auto:隐藏
237
- showPagination: {
238
- type: Boolean,
239
- default: true
240
- },
241
- // 是否自定义删除功能
242
- customDelete: {
243
- type: Boolean,
244
- default: false
245
- }
246
- },
247
- computed: {
248
- rowSelection () {
249
- return {
250
- selectedRowKeys: this.selectedRowKeys,
251
- onChange: this.onSelectChange,
252
- getCheckboxProps: record => ({
253
- props: {
254
- disabled: this.selectedDisableRows.includes(record[this.rowKey]), // Column configuration not to be checked
255
- name: record.name,
256
- },
257
- }),
258
- }
259
- },
260
- ...mapState('account', { currUser: 'user' }),
261
- ...mapState('setting', ['compatible'])
262
- },
263
- mounted () {
264
- },
265
- methods: {
266
- executeStrFunction,
267
- /**
268
- * 初始化表格参数
269
- */
270
- init (params) {
271
- const {
272
- // 查询参数对象, 用于没有对应查询配置文件名时
273
- queryParams,
274
- tableColumns,
275
- buttonState,
276
- title,
277
- form,
278
- serviceName,
279
- viewMode,
280
- env = 'prod'
281
- } = params
282
- this.queryParams = queryParams
283
- this.tableColumns = JSON.parse(JSON.stringify(tableColumns))
284
- if (this.tableColumns.length === 0) {
285
- return
286
- }
287
- this.buttonState = buttonState
288
- this.title = title
289
- this.serviceName = serviceName
290
- this.viewMode = viewMode
291
- this.env = env
292
- this.rowKey = this.tableColumns[0].dataIndex
293
- let totalWidth = 0
294
- for (let i = 0; i < this.tableColumns.length; i++) {
295
- const item = this.tableColumns[i]
296
- // 设置操作列
297
- if (item.slotType === 'action') {
298
- item.fixed = 'right'
299
- item.width = 70
300
- }
301
- // 设置表格宽度
302
- if (item.width) {
303
- totalWidth = totalWidth + item.width
304
- } else {
305
- totalWidth = totalWidth + 180
306
- }
307
- }
308
- // 设置表格高度为固定值
309
- this.setScrollYHeight('default')
310
- // 横向滚动长度大于所有宽度,才能实现固定表头
311
- this.scrollXWidth = totalWidth
312
- // 加载筛选列完成
313
- this.columnSelectLoaded = true
314
- this.setQueryForm(form || {})
315
- },
316
- /**
317
- * 加载表格数据
318
- * @param requestParameters 请求参数
319
- */
320
- loadTableData (requestParameters) {
321
- let result = {}
322
- if (this.queryParamsJson) {
323
- if (this.queryParamsJson.tableName.startsWith('##')) {
324
- this.isTableTemp = true
325
- result = this.initTempTable(requestParameters)
326
- }
327
- }
328
- if (!this.isTableTemp) {
329
- result = query(Object.assign(requestParameters, { userId: this.currUser?.id }), this.serviceName, this.env === 'dev')
330
- }
331
- this.clearRowKeys()
332
- this.$emit('afterQuery', result, requestParameters.conditionParams)
333
- return result
334
- },
335
- /**
336
- * 操作列事件
337
- * @param record 本条数据
338
- * @param actionType 操作类型
339
- * @param func 事件默认 action
340
- */
341
- action (record, actionType, func = 'action') {
342
- this.$emit('action', record, record[this.getPrimaryKeyName()], actionType, func)
343
- },
344
- /**
345
- * 选择列事件
346
- * @param selectedRowKeys 被选择的列Key集合
347
- * @param selectedRows 被选择的列集合
348
- */
349
- onSelectChange (selectedRowKeys, selectedRows) {
350
- this.selectedRowKeys = selectedRowKeys
351
- this.selectedRows = selectedRows
352
- this.isModify = this.selectedRowKeys.length === 1
353
- this.isDelete = this.selectedRowKeys.length > 0
354
- this.$emit('selectRow', selectedRowKeys, selectedRows)
355
- },
356
- /**
357
- * 清除表格选中项
358
- */
359
- clearRowKeys () {
360
- this.$refs.table.clearSelected()
361
- },
362
- /**
363
- * 为表格附加查询条件
364
- */
365
- setQueryForm (form = {}) {
366
- this.form = form
367
- this.refresh(true)
368
- },
369
- /**
370
- * 表格重新加载方法
371
- * 如果参数为 true, 则强制刷新到第一页
372
- */
373
- refresh (bool) {
374
- this.$nextTick(() => {
375
- this.$refs.table.refresh(bool)
376
- })
377
- },
378
- setScrollYHeight (value) {
379
- if (value === 'default') {
380
- value = 'calc(100vh - 31rem)'
381
- }
382
- this.scrollYHeight = value
383
- },
384
- /**
385
- * 格式化日期
386
- * @param date 日期字符串
387
- * @param format 格式化方式
388
- */
389
- format (date, format) {
390
- return formatDate(date, format)
391
- },
392
- /**
393
- * 获取主键列名称
394
- */
395
- getPrimaryKeyName () {
396
- return this.tableColumns[0].dataIndex
397
- },
398
- // 导出选中或本页数据
399
- handleExport (isSelected) {
400
- const tHeader = this.tableColumns.filter(res => res.slotType !== 'action').map(res => res.title)
401
- const filterVal = this.tableColumns.map(res => res.dataIndex)
402
- let exportData
403
- if (isSelected) {
404
- exportData = this.selectedRows
405
- } else {
406
- exportData = this.$refs.table.localDataSource
407
- }
408
- exportJson(tHeader, exportData.map(v => filterVal.map(j => v[j])), this.title + `数据_${new Date().toLocaleString()}`)
409
- },
410
- // 导出符合条件的数据
411
- handleExportByQuery () {
412
- const that = this
413
- const conditionParams = Object.assign(that.form, that.fixedQueryForm)
414
- this.$confirm({
415
- title: '是否确认导出?',
416
- content: '此操作将导出当前条件下所有数据而非选中数据',
417
- onOk () {
418
- exportData({
419
- queryParamsName: that.queryParamsName,
420
- queryParams: that.queryParams,
421
- form: conditionParams,
422
- userId: that.currUser.id
423
- }, that.serviceName, that.env === 'dev').then(res => {
424
- let value = res
425
- if (that.compatible === 'V4') {
426
- value = res.value
427
- }
428
- window.open('/res/excel/export/' + value)
429
- })
430
- },
431
- onCancel () {
432
- }
433
- })
434
- },
435
- // 新增业务
436
- add () {
437
- this.$emit('add')
438
- },
439
- // 编辑业务
440
- edit (id) {
441
- this.editLoading = true
442
- this.getEditData(id).then(modifyModelData => {
443
- this.$emit('edit', modifyModelData)
444
- this.editLoading = false
445
- })
446
- },
447
- // 获取被编辑的数据
448
- getEditData (id) {
449
- const requestParameters = {
450
- queryParamsName: this.queryParamsName,
451
- queryParams: this.queryParams,
452
- conditionParams: {},
453
- pageNo: 1,
454
- pageSize: 1
455
- }
456
- if (!id) {
457
- this.selectId = this.selectedRowKeys[0]
458
- } else {
459
- this.selectId = id
460
- }
461
- const primaryKeyName = this.getPrimaryKeyName()
462
- requestParameters.conditionParams[primaryKeyName] = this.selectId
463
- requestParameters.f_businessid = this.selectId
464
- if (this.isTableTemp) {
465
- this.$emit('tempTableEdit', requestParameters)
466
- return
467
- }
468
- return queryWithResource(requestParameters, this.serviceName, this.env === 'dev').then(res => {
469
- // 将更新需要的主键值加入到primaryKeyData中
470
- const primaryKeyData = {}
471
- primaryKeyData[primaryKeyName] = this.selectId
472
- return { data: res.data[0], primaryKeyData: primaryKeyData, images: res.images, files: res.files }
473
- })
474
- },
475
- // 删除业务
476
- deleteItem () {
477
- if (this.viewMode) {
478
- this.$message.info('预览模式禁止删除')
479
- return
480
- }
481
- Modal.confirm({
482
- title: '提示',
483
- content: '您本次要删除共' + this.selectedRowKeys.length + '条数据,确定操作吗?',
484
- zIndex: 1001,
485
- onOk: () => {
486
- return new Promise((resolve, reject) => {
487
- if (this.customDelete) {
488
- this.$emit('del', this.selectedRows, resolve)
489
- } else {
490
- const requestParameters = {
491
- queryParamsName: this.queryParamsName,
492
- idList: this.selectedRowKeys
493
- }
494
- remove(requestParameters, this.serviceName, this.env === 'dev').then(res => {
495
- resolve(res)
496
- this.$message.success('删除成功!')
497
- this.refresh(true)
498
- // afterDelete
499
- this.$emit('afterDelete', requestParameters)
500
- }).catch(e => {
501
- reject(e)
502
- this.$message.error('删除失败!')
503
- })
504
- }
505
- })
506
- },
507
- onCancel () {
508
- }
509
- })
510
- },
511
- // 导入业务
512
- importData () {
513
- this.$refs.importExcel.importExcelHandleOpen()
514
- },
515
- // 初始化临时表
516
- async initTempTable (json) {
517
- await this.createTempTable(this.queryParamsJson)
518
- await this.insertTempTableData(this.queryParamsJson)
519
- let result = {}
520
- await post(CommonTempTable.initApplySubTable, {
521
- define: json
522
- }).then(res => {
523
- console.log('子表临时表已创建')
524
- result = res
525
- })
526
- return result
527
- },
528
- // 创建临时表sql生成
529
- createTempTable (defineJson) {
530
- const tableName = defineJson.tableName
531
- const define = defineJson.column
532
- return post(CommonTempTable.createTempTable, {
533
- define: define,
534
- tableName: tableName
535
- }).then(res => {
536
- return res
537
- }, err => {
538
- console.log(err)
539
- })
540
- },
541
- // 插入临时表数据sql生成
542
- insertTempTableData (defineJson) {
543
- const tableName = defineJson.tableName
544
- const params = {}
545
- params.define = defineJson.column
546
- params.applyId = defineJson.applyId
547
- params.stepName = defineJson.stepName
548
- params.tableName = tableName
549
- return post(CommonTempTable.insertDataToTempTable, {
550
- tempTableData: params
551
- }).then(res => {
552
- return res
553
- })
554
- }
555
- }
556
- }
557
- </script>
558
- <style lang="less" scoped>
559
- :deep(.ant-table-thead > tr > th) {
560
- font-weight: 600;
561
- }
562
-
563
- :deep(.ant-table-pagination.ant-pagination) {
564
- margin-bottom: 0;
565
- }
566
-
567
- :deep(.ant-table td) {
568
- white-space: nowrap;
569
- }
570
- </style>
1
+ <template>
2
+ <div v-show="tableColumns.length > 0">
3
+ <a-row :gutter="48">
4
+ <a-col>
5
+ <span :style="{ float: 'left', overflow: 'hidden', marginBottom: '8px' }">
6
+ <a-space>
7
+ <slot name="leftButton" :selectedRowKeys="selectedRowKeys" :selectedRows="selectedRows"></slot>
8
+ <a-button v-if="!buttonState || buttonState.add" type="primary" @click="add">
9
+ <a-icon type="plus"/>新增
10
+ </a-button>
11
+ <a-button
12
+ v-if="!buttonState || buttonState.edit"
13
+ :disabled="!isModify"
14
+ :loading="editLoading"
15
+ class="btn-success"
16
+ type="dashed"
17
+ @click="edit()">
18
+ <a-icon :style="iconStyle" type="edit"/>修改
19
+ </a-button>
20
+ <a-button v-if="!buttonState || buttonState.delete" :disabled="!isDelete" type="danger" @click="deleteItem">
21
+ <a-icon :style="iconStyle" type="delete"/>删除
22
+ </a-button>
23
+ <a-button v-if="!buttonState || buttonState.import" type="dashed" @click="importData">
24
+ <a-icon :style="iconStyle" type="import"/>导入
25
+ </a-button>
26
+ <a-dropdown v-if="!buttonState || buttonState.export">
27
+ <a-menu slot="overlay">
28
+ <a-menu-item :disabled="selectedRowKeys.length === 0" key="1" @click="handleExport(true)"><a-icon
29
+ :style="iconStyle"
30
+ type="ordered-list"/>导出选中数据</a-menu-item>
31
+ <a-menu-item key="2" @click="handleExport(false)"><a-icon :style="iconStyle" type="snippets"/>导出本页数据</a-menu-item>
32
+ <a-menu-item key="3" @click="handleExportByQuery"><a-icon :style="iconStyle" type="download"/>导出所有符合条件的数据</a-menu-item>
33
+ </a-menu>
34
+ <a-button>导出 <a-icon type="down" :style="iconStyle"/> </a-button>
35
+ </a-dropdown>
36
+ <slot name="button" :selectedRowKeys="selectedRowKeys" :selectedRows="selectedRows"></slot>
37
+ </a-space>
38
+ </span>
39
+ </a-col>
40
+ <a-col>
41
+ <span :style="{ float: 'right', overflow: 'hidden', marginBottom: '8px' }">
42
+ <a-button-group>
43
+ <slot name="rightBtnExpand" :selectedRowKeys="selectedRowKeys" :selectedRows="selectedRows"></slot>
44
+ <a-tooltip title="重新查询">
45
+ <a-button @click="refresh(true)">
46
+ <a-icon :style="iconStyle" type="reload"/>
47
+ </a-button>
48
+ </a-tooltip>
49
+ <a-tooltip title="列展示/排序">
50
+ <table-setting v-if="columnSelectLoaded" v-model="tableColumns"/>
51
+ </a-tooltip>
52
+ </a-button-group>
53
+ </span>
54
+ </a-col>
55
+ </a-row>
56
+ <s-table
57
+ ref="table"
58
+ :alert="true"
59
+ :columns="tableColumns"
60
+ :data="loadData"
61
+ :rowKey="rowKey"
62
+ :rowSelection="rowSelection"
63
+ :scroll="{ x: scrollXWidth, y: scrollYHeight }"
64
+ :showPagination="showPagination"
65
+ size="default"
66
+ >
67
+ <template
68
+ v-for="(item, index) in tableColumns"
69
+ :slot="item.dataIndex"
70
+ slot-scope="text, record">
71
+ <!-- 文本溢出省略(ellipsis) -->
72
+ <span v-if="item.slotType === 'ellipsis'" :key="index">
73
+ <ellipsis :length="item.slotValue" tooltip>{{ text === '' ? '--' : text }}</ellipsis>
74
+ </span>
75
+ <!-- 徽标(badge) -->
76
+ <span v-else-if="item.slotType === 'badge'" :key="index">
77
+ <x-badge v-if="text !== null && text !== undefined" :badge-key="item.slotKeyMap" :value="text"/>
78
+ </span>
79
+ <!-- 日期(date) -->
80
+ <span v-else-if="item.slotType === 'date'" :key="index">
81
+ {{ format(text, 'yyyy-MM-dd') }}
82
+ </span>
83
+ <!-- 日期时间(datetime) -->
84
+ <span v-else-if="item.slotType === 'dateTime'" :key="index">
85
+ {{ format(text, 'yyyy-MM-dd hh:mm:ss') }}
86
+ </span>
87
+ <!-- 操作列(action) -->
88
+ <span v-else-if="item.slotType === 'action'" :key="index">
89
+ <template v-if="item.actionArr && item.actionArr.length > 0">
90
+ <a-dropdown>
91
+ <a class="ant-dropdown-link" @click="e => e.preventDefault()">
92
+ {{ item.scopedSlots?.customRender || item.slotValue }} <a-icon type="down"/>
93
+ </a>
94
+ <a-menu slot="overlay" style="min-width: 60px">
95
+ <a-menu-item
96
+ v-for="(action_item, index) in item.actionArr"
97
+ :key="index"
98
+ v-if="!action_item.customFunction || executeStrFunction( action_item.customFunction,[record,index])">
99
+ <a
100
+ style="text-align: center"
101
+ @click="action(record, item.dataIndex, action_item.func)"
102
+ >{{ action_item.text }}</a>
103
+ </a-menu-item>
104
+ </a-menu>
105
+ </a-dropdown>
106
+ </template>
107
+ <template v-if="!item.actionArr || item.actionArr.length === 0">
108
+ <a @click="action(record, item.dataIndex)">{{ item.slotValue }}</a>
109
+ </template>
110
+ </span>
111
+ </template>
112
+ <template slot="footer">
113
+ <slot name="footer" :selectedRowKeys="selectedRowKeys" :selectedRows="selectedRows"></slot>
114
+ </template>
115
+ </s-table>
116
+ <!-- 上传文件 -->
117
+ <x-import-excel
118
+ ref="importExcel"
119
+ @ok="refresh(true)"
120
+ :title="title"
121
+ :service-name="serviceName"
122
+ :query-params-name="queryParamsName"
123
+ />
124
+ </div>
125
+ </template>
126
+ <script>
127
+ import { Ellipsis, STable } from '@vue2-client/components'
128
+ import { formatDate } from '@vue2-client/utils/util'
129
+ import XBadge from '@vue2-client/base-client/components/common/XBadge'
130
+ import TableSetting from '@vue2-client/components/TableSetting/TableSetting'
131
+ import { exportJson } from '@vue2-client/utils/excel/Export2Excel'
132
+ import { exportData, query, queryWithResource, remove } from '@vue2-client/services/api/common'
133
+ import XImportExcel from '@vue2-client/base-client/components/common/XImportExcel'
134
+ import { Modal } from 'ant-design-vue'
135
+ import { post } from '@vue2-client/services/api'
136
+ import { CommonTempTable } from '@vue2-client/services/api/commonTempTable'
137
+ import { mapState } from 'vuex'
138
+ import executeStrFunction from '@vue2-client/utils/runEvalFunction'
139
+
140
+ export default {
141
+ name: 'XTable',
142
+ components: {
143
+ TableSetting,
144
+ STable,
145
+ Ellipsis,
146
+ XBadge,
147
+ XImportExcel
148
+ },
149
+ data () {
150
+ return {
151
+ // 筛选列加载状态
152
+ columnSelectLoaded: false,
153
+ // 预览模式
154
+ viewMode: false,
155
+ // 加载数据方法 必须为 Promise 对象
156
+ loadData: parameter => {
157
+ // 取到表格携带的表单参数
158
+ const requestParameters = Object.assign({}, parameter)
159
+ // 取到父组件传入的表单参数
160
+ const conditionParams = {}
161
+ Object.assign(conditionParams, this.fixedQueryForm)
162
+ Object.assign(conditionParams, this.form)
163
+ // 如果传了燃气公司字段,则进行数据处理
164
+ if (conditionParams.orgName) {
165
+ requestParameters.orgName = conditionParams.orgName
166
+ delete conditionParams.orgName
167
+ }
168
+ requestParameters.conditionParams = conditionParams
169
+ requestParameters.queryParamsName = this.queryParamsName
170
+ requestParameters.queryParams = this.queryParams
171
+ // 加载数据
172
+ return this.loadTableData(requestParameters)
173
+ },
174
+ rowKey: undefined,
175
+ // x滚动条宽度
176
+ scrollXWidth: 1600,
177
+ // y滚动条高度
178
+ scrollYHeight: 'calc(100vh - 31rem)',
179
+ // 表格选择列Key集合
180
+ selectedRowKeys: [],
181
+ // 表格选择Row集合
182
+ selectedRows: [],
183
+ // 禁止表格选择Row集合
184
+ selectedDisableRows: [],
185
+ // 业务标题
186
+ title: '',
187
+ // 数据列
188
+ tableColumns: [],
189
+ // 查询用表单
190
+ form: {},
191
+ // 是否允许修改
192
+ isModify: false,
193
+ // 是否允许删除
194
+ isDelete: false,
195
+ // 服务名称
196
+ serviceName: undefined,
197
+ // 选中用于修改的id
198
+ selectId: undefined,
199
+ // 是否为临时表
200
+ isTableTemp: false,
201
+ // 是否显示展示列抽屉
202
+ visible: false,
203
+ // 编辑按钮加载状态
204
+ editLoading: false,
205
+ // 按钮状态
206
+ buttonState: {},
207
+ // 图标样式
208
+ iconStyle: {
209
+ position: 'relative',
210
+ top: '1px'
211
+ },
212
+ // 当前环境
213
+ env: 'prod'
214
+ }
215
+ },
216
+ props: {
217
+ // 查询配置文件名
218
+ queryParamsName: {
219
+ type: String,
220
+ default: () => {
221
+ return ''
222
+ }
223
+ },
224
+ // 查询配置文件Json
225
+ queryParamsJson: {
226
+ type: Object,
227
+ default: null
228
+ },
229
+ // 固定查询表单
230
+ fixedQueryForm: {
231
+ type: Object,
232
+ default: () => {
233
+ return {}
234
+ }
235
+ },
236
+ // 数据只有一页时是否展示分页,true:展示,auto:隐藏
237
+ showPagination: {
238
+ type: Boolean,
239
+ default: true
240
+ },
241
+ // 是否自定义删除功能
242
+ customDelete: {
243
+ type: Boolean,
244
+ default: false
245
+ }
246
+ },
247
+ computed: {
248
+ rowSelection () {
249
+ return {
250
+ selectedRowKeys: this.selectedRowKeys,
251
+ onChange: this.onSelectChange,
252
+ getCheckboxProps: record => ({
253
+ props: {
254
+ disabled: this.selectedDisableRows.includes(record[this.rowKey]), // Column configuration not to be checked
255
+ name: record.name,
256
+ },
257
+ }),
258
+ }
259
+ },
260
+ ...mapState('account', { currUser: 'user' }),
261
+ ...mapState('setting', ['compatible'])
262
+ },
263
+ mounted () {
264
+ },
265
+ methods: {
266
+ executeStrFunction,
267
+ /**
268
+ * 初始化表格参数
269
+ */
270
+ init (params) {
271
+ const {
272
+ // 查询参数对象, 用于没有对应查询配置文件名时
273
+ queryParams,
274
+ tableColumns,
275
+ buttonState,
276
+ title,
277
+ form,
278
+ serviceName,
279
+ viewMode,
280
+ env = 'prod'
281
+ } = params
282
+ this.queryParams = queryParams
283
+ this.tableColumns = JSON.parse(JSON.stringify(tableColumns))
284
+ if (this.tableColumns.length === 0) {
285
+ return
286
+ }
287
+ this.buttonState = buttonState
288
+ this.title = title
289
+ this.serviceName = serviceName
290
+ this.viewMode = viewMode
291
+ this.env = env
292
+ this.rowKey = this.tableColumns[0].dataIndex
293
+ let totalWidth = 0
294
+ for (let i = 0; i < this.tableColumns.length; i++) {
295
+ const item = this.tableColumns[i]
296
+ // 设置操作列
297
+ if (item.slotType === 'action') {
298
+ item.fixed = 'right'
299
+ item.width = 70
300
+ }
301
+ // 设置表格宽度
302
+ if (item.width) {
303
+ totalWidth = totalWidth + item.width
304
+ } else {
305
+ totalWidth = totalWidth + 180
306
+ }
307
+ }
308
+ // 设置表格高度为固定值
309
+ this.setScrollYHeight('default')
310
+ // 横向滚动长度大于所有宽度,才能实现固定表头
311
+ this.scrollXWidth = totalWidth
312
+ // 加载筛选列完成
313
+ this.columnSelectLoaded = true
314
+ this.setQueryForm(form || {})
315
+ },
316
+ /**
317
+ * 加载表格数据
318
+ * @param requestParameters 请求参数
319
+ */
320
+ loadTableData (requestParameters) {
321
+ let result = {}
322
+ if (this.queryParamsJson) {
323
+ if (this.queryParamsJson.tableName.startsWith('##')) {
324
+ this.isTableTemp = true
325
+ result = this.initTempTable(requestParameters)
326
+ }
327
+ }
328
+ if (!this.isTableTemp) {
329
+ result = query(Object.assign(requestParameters, { userId: this.currUser?.id }), this.serviceName, this.env === 'dev')
330
+ }
331
+ this.clearRowKeys()
332
+ this.$emit('afterQuery', result, requestParameters.conditionParams)
333
+ return result
334
+ },
335
+ /**
336
+ * 操作列事件
337
+ * @param record 本条数据
338
+ * @param actionType 操作类型
339
+ * @param func 事件默认 action
340
+ */
341
+ action (record, actionType, func = 'action') {
342
+ this.$emit('action', record, record[this.getPrimaryKeyName()], actionType, func)
343
+ },
344
+ /**
345
+ * 选择列事件
346
+ * @param selectedRowKeys 被选择的列Key集合
347
+ * @param selectedRows 被选择的列集合
348
+ */
349
+ onSelectChange (selectedRowKeys, selectedRows) {
350
+ this.selectedRowKeys = selectedRowKeys
351
+ this.selectedRows = selectedRows
352
+ this.isModify = this.selectedRowKeys.length === 1
353
+ this.isDelete = this.selectedRowKeys.length > 0
354
+ this.$emit('selectRow', selectedRowKeys, selectedRows)
355
+ },
356
+ /**
357
+ * 清除表格选中项
358
+ */
359
+ clearRowKeys () {
360
+ this.$refs.table.clearSelected()
361
+ },
362
+ /**
363
+ * 为表格附加查询条件
364
+ */
365
+ setQueryForm (form = {}) {
366
+ this.form = form
367
+ this.refresh(true)
368
+ },
369
+ /**
370
+ * 表格重新加载方法
371
+ * 如果参数为 true, 则强制刷新到第一页
372
+ */
373
+ refresh (bool) {
374
+ this.$nextTick(() => {
375
+ this.$refs.table.refresh(bool)
376
+ })
377
+ },
378
+ setScrollYHeight (value) {
379
+ if (value === 'default') {
380
+ value = 'calc(100vh - 31rem)'
381
+ }
382
+ this.scrollYHeight = value
383
+ },
384
+ /**
385
+ * 格式化日期
386
+ * @param date 日期字符串
387
+ * @param format 格式化方式
388
+ */
389
+ format (date, format) {
390
+ return formatDate(date, format)
391
+ },
392
+ /**
393
+ * 获取主键列名称
394
+ */
395
+ getPrimaryKeyName () {
396
+ return this.tableColumns[0].dataIndex
397
+ },
398
+ // 导出选中或本页数据
399
+ handleExport (isSelected) {
400
+ const tHeader = this.tableColumns.filter(res => res.slotType !== 'action').map(res => res.title)
401
+ const filterVal = this.tableColumns.map(res => res.dataIndex)
402
+ let exportData
403
+ if (isSelected) {
404
+ exportData = this.selectedRows
405
+ } else {
406
+ exportData = this.$refs.table.localDataSource
407
+ }
408
+ exportJson(tHeader, exportData.map(v => filterVal.map(j => v[j])), this.title + `数据_${new Date().toLocaleString()}`)
409
+ },
410
+ // 导出符合条件的数据
411
+ handleExportByQuery () {
412
+ const that = this
413
+ const conditionParams = Object.assign(that.form, that.fixedQueryForm)
414
+ this.$confirm({
415
+ title: '是否确认导出?',
416
+ content: '此操作将导出当前条件下所有数据而非选中数据',
417
+ onOk () {
418
+ exportData({
419
+ queryParamsName: that.queryParamsName,
420
+ queryParams: that.queryParams,
421
+ form: conditionParams,
422
+ userId: that.currUser.id
423
+ }, that.serviceName, that.env === 'dev').then(res => {
424
+ let value = res
425
+ if (that.compatible === 'V4') {
426
+ value = res.value
427
+ }
428
+ window.open('/res/excel/export/' + value)
429
+ })
430
+ },
431
+ onCancel () {
432
+ }
433
+ })
434
+ },
435
+ // 新增业务
436
+ add () {
437
+ this.$emit('add')
438
+ },
439
+ // 编辑业务
440
+ edit (id) {
441
+ this.editLoading = true
442
+ this.getEditData(id).then(modifyModelData => {
443
+ this.$emit('edit', modifyModelData)
444
+ this.editLoading = false
445
+ })
446
+ },
447
+ // 获取被编辑的数据
448
+ getEditData (id) {
449
+ const requestParameters = {
450
+ queryParamsName: this.queryParamsName,
451
+ queryParams: this.queryParams,
452
+ conditionParams: {},
453
+ pageNo: 1,
454
+ pageSize: 1
455
+ }
456
+ if (!id) {
457
+ this.selectId = this.selectedRowKeys[0]
458
+ } else {
459
+ this.selectId = id
460
+ }
461
+ const primaryKeyName = this.getPrimaryKeyName()
462
+ requestParameters.conditionParams[primaryKeyName] = this.selectId
463
+ requestParameters.f_businessid = this.selectId
464
+ if (this.isTableTemp) {
465
+ this.$emit('tempTableEdit', requestParameters)
466
+ return
467
+ }
468
+ return queryWithResource(requestParameters, this.serviceName, this.env === 'dev').then(res => {
469
+ // 将更新需要的主键值加入到primaryKeyData中
470
+ const primaryKeyData = {}
471
+ primaryKeyData[primaryKeyName] = this.selectId
472
+ return { data: res.data[0], primaryKeyData: primaryKeyData, images: res.images, files: res.files }
473
+ })
474
+ },
475
+ // 删除业务
476
+ deleteItem () {
477
+ if (this.viewMode) {
478
+ this.$message.info('预览模式禁止删除')
479
+ return
480
+ }
481
+ Modal.confirm({
482
+ title: '提示',
483
+ content: '您本次要删除共' + this.selectedRowKeys.length + '条数据,确定操作吗?',
484
+ zIndex: 1001,
485
+ onOk: () => {
486
+ return new Promise((resolve, reject) => {
487
+ if (this.customDelete) {
488
+ this.$emit('del', this.selectedRows, resolve)
489
+ } else {
490
+ const requestParameters = {
491
+ queryParamsName: this.queryParamsName,
492
+ idList: this.selectedRowKeys
493
+ }
494
+ remove(requestParameters, this.serviceName, this.env === 'dev').then(res => {
495
+ resolve(res)
496
+ this.$message.success('删除成功!')
497
+ this.refresh(true)
498
+ // afterDelete
499
+ this.$emit('afterDelete', requestParameters)
500
+ }).catch(e => {
501
+ reject(e)
502
+ this.$message.error('删除失败!')
503
+ })
504
+ }
505
+ })
506
+ },
507
+ onCancel () {
508
+ }
509
+ })
510
+ },
511
+ // 导入业务
512
+ importData () {
513
+ this.$refs.importExcel.importExcelHandleOpen()
514
+ },
515
+ // 初始化临时表
516
+ async initTempTable (json) {
517
+ await this.createTempTable(this.queryParamsJson)
518
+ await this.insertTempTableData(this.queryParamsJson)
519
+ let result = {}
520
+ await post(CommonTempTable.initApplySubTable, {
521
+ define: json
522
+ }).then(res => {
523
+ console.log('子表临时表已创建')
524
+ result = res
525
+ })
526
+ return result
527
+ },
528
+ // 创建临时表sql生成
529
+ createTempTable (defineJson) {
530
+ const tableName = defineJson.tableName
531
+ const define = defineJson.column
532
+ return post(CommonTempTable.createTempTable, {
533
+ define: define,
534
+ tableName: tableName
535
+ }).then(res => {
536
+ return res
537
+ }, err => {
538
+ console.log(err)
539
+ })
540
+ },
541
+ // 插入临时表数据sql生成
542
+ insertTempTableData (defineJson) {
543
+ const tableName = defineJson.tableName
544
+ const params = {}
545
+ params.define = defineJson.column
546
+ params.applyId = defineJson.applyId
547
+ params.stepName = defineJson.stepName
548
+ params.tableName = tableName
549
+ return post(CommonTempTable.insertDataToTempTable, {
550
+ tempTableData: params
551
+ }).then(res => {
552
+ return res
553
+ })
554
+ }
555
+ }
556
+ }
557
+ </script>
558
+ <style lang="less" scoped>
559
+ :deep(.ant-table-thead > tr > th) {
560
+ font-weight: 600;
561
+ }
562
+
563
+ :deep(.ant-table-pagination.ant-pagination) {
564
+ margin-bottom: 0;
565
+ }
566
+
567
+ :deep(.ant-table td) {
568
+ white-space: nowrap;
569
+ }
570
+ </style>