centaline-data-driven 1.1.54 → 1.1.55

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 (193) hide show
  1. package/.babelrc +12 -12
  2. package/.editorconfig +9 -9
  3. package/.gitattributes +63 -63
  4. package/.postcssrc.js +10 -10
  5. package/Centaline.Front_End.DataDriven.csproj +37 -37
  6. package/Centaline.Front_End.DataDriven.sln +25 -25
  7. package/Properties/launchSettings.json +26 -26
  8. package/README.md +140 -140
  9. package/build/build.js +41 -41
  10. package/build/centaline/centaline.path.js +59 -59
  11. package/build/centaline/webpack.centaline.conf.js +106 -106
  12. package/build/check-versions.js +54 -54
  13. package/build/utils.js +102 -102
  14. package/build/vue-loader.conf.js +22 -22
  15. package/build/webpack.base.conf.js +82 -82
  16. package/build/webpack.dev.conf.js +111 -111
  17. package/build/webpack.prod.conf.js +145 -145
  18. package/config/dev.env.js +12 -12
  19. package/config/index.js +73 -73
  20. package/config/prod.env.js +4 -4
  21. package/index.html +14 -14
  22. package/package.json +75 -75
  23. package/src/App.vue +10 -10
  24. package/src/Detail.vue +26 -26
  25. package/src/Edit.vue +32 -32
  26. package/src/Form.vue +29 -29
  27. package/src/SearchList.vue +40 -40
  28. package/src/SearchTree.vue +51 -51
  29. package/src/Tabs.vue +19 -19
  30. package/src/centaline/api/index.js +249 -249
  31. package/src/centaline/comfirm/index.js +11 -11
  32. package/src/centaline/comfirm/src/comfirm.vue +44 -44
  33. package/src/centaline/common/index.js +738 -738
  34. package/src/centaline/css/common.css +748 -748
  35. package/src/centaline/css/max.css +207 -207
  36. package/src/centaline/dialogList/index.js +11 -11
  37. package/src/centaline/dialogList/src/dialog.vue +210 -210
  38. package/src/centaline/dialogList/src/dialogList.vue +65 -65
  39. package/src/centaline/dialogList/src/dialogNew.vue +78 -78
  40. package/src/centaline/dialogList/src/drag.js +77 -77
  41. package/src/centaline/directives/index.js +23 -23
  42. package/src/centaline/dynamicBtn/index.js +11 -11
  43. package/src/centaline/dynamicBtn/src/dynamicBtn.vue +100 -100
  44. package/src/centaline/dynamicCb/index.js +11 -11
  45. package/src/centaline/dynamicCb/src/dynamicCb.vue +72 -72
  46. package/src/centaline/dynamicCheckbox/index.js +11 -11
  47. package/src/centaline/dynamicCheckbox/src/dynamicCheckbox.vue +128 -128
  48. package/src/centaline/dynamicComboBoxWithTextBox/index.js +11 -11
  49. package/src/centaline/dynamicComboBoxWithTextBox/src/dynamicComboBoxWithTextBox.vue +240 -240
  50. package/src/centaline/dynamicD/index.js +11 -11
  51. package/src/centaline/dynamicD/src/dynamicD.vue +92 -92
  52. package/src/centaline/dynamicDetail/index.js +10 -10
  53. package/src/centaline/dynamicDetail/src/dynamicDetail.vue +40 -40
  54. package/src/centaline/dynamicDetail/src/dynamicPropertyDetailOFI.vue +1280 -1280
  55. package/src/centaline/dynamicDetail/src/dynamicPropertyDetailRET.vue +1293 -1293
  56. package/src/centaline/dynamicDrop/index.js +11 -11
  57. package/src/centaline/dynamicDrop/src/dynamicDrop.vue +54 -54
  58. package/src/centaline/dynamicDtd/index.js +11 -11
  59. package/src/centaline/dynamicDtd/src/dynamicDtd.vue +125 -125
  60. package/src/centaline/dynamicDtd/src/dynamicDtdOld.vue +93 -93
  61. package/src/centaline/dynamicFile/index.js +11 -11
  62. package/src/centaline/dynamicFile/src/dynamicFile.vue +288 -283
  63. package/src/centaline/dynamicForm/index.js +24 -24
  64. package/src/centaline/dynamicForm/src/dynamicForm.vue +564 -564
  65. package/src/centaline/dynamicForm/src/dynamicFormList.vue +209 -209
  66. package/src/centaline/dynamicForm/src/dynamicFormListTable.vue +376 -376
  67. package/src/centaline/dynamicGp/index.js +11 -11
  68. package/src/centaline/dynamicGp/src/dynamicGp.vue +27 -27
  69. package/src/centaline/dynamicHyperLink/index.js +11 -11
  70. package/src/centaline/dynamicHyperLink/src/dynamicHyperLink.vue +54 -54
  71. package/src/centaline/dynamicInput/index.js +35 -35
  72. package/src/centaline/dynamicInput/src/dynamicInput.vue +35 -35
  73. package/src/centaline/dynamicInputNumber/index.js +11 -11
  74. package/src/centaline/dynamicInputNumber/src/dynamicInputNumber.vue +157 -157
  75. package/src/centaline/dynamicIti/index.js +11 -11
  76. package/src/centaline/dynamicIti/src/dynamicIti.vue +148 -148
  77. package/src/centaline/dynamicL/index.js +11 -11
  78. package/src/centaline/dynamicL/src/dynamicL.vue +37 -37
  79. package/src/centaline/dynamicLabel/index.js +11 -11
  80. package/src/centaline/dynamicLabel/src/dynamicLabel.vue +73 -73
  81. package/src/centaline/dynamicLs/index.js +22 -22
  82. package/src/centaline/dynamicLs/src/dynamicLs.vue +233 -233
  83. package/src/centaline/dynamicMo/index.js +13 -13
  84. package/src/centaline/dynamicMo/src/dynamicMo.vue +421 -421
  85. package/src/centaline/dynamicMt/index.js +11 -11
  86. package/src/centaline/dynamicMt/src/dynamicMt.vue +44 -44
  87. package/src/centaline/dynamicPlaceHolder/index.js +11 -11
  88. package/src/centaline/dynamicPlaceHolder/src/dynamicPlaceHolder.vue +29 -29
  89. package/src/centaline/dynamicPopupSearchList/index.js +11 -11
  90. package/src/centaline/dynamicPopupSearchList/src/dynamicPopupSearchList.vue +157 -157
  91. package/src/centaline/dynamicPopupSearchList/src/dynamicPopupSearchListTable.vue +239 -239
  92. package/src/centaline/dynamicRichText/index.js +11 -11
  93. package/src/centaline/dynamicRichText/src/dynamicRichText.vue +33 -33
  94. package/src/centaline/dynamicSearchList/index.js +11 -11
  95. package/src/centaline/dynamicSearchList/src/dynamicSearchCategory.vue +121 -121
  96. package/src/centaline/dynamicSearchList/src/dynamicSearchList.vue +135 -135
  97. package/src/centaline/dynamicSearchList/src/dynamicSearchScreen.vue +206 -206
  98. package/src/centaline/dynamicSearchList/src/dynamicSearchTable.vue +1069 -1069
  99. package/src/centaline/dynamicSearchList/src/dynamicTableStatistics.vue +41 -41
  100. package/src/centaline/dynamicSearchList/src/dynamicTableTip.vue +46 -46
  101. package/src/centaline/dynamicSearchList/src/dynamicTableToolbar.vue +61 -61
  102. package/src/centaline/dynamicSeg/index.js +11 -11
  103. package/src/centaline/dynamicSeg/src/dynamicSeg.vue +100 -100
  104. package/src/centaline/dynamicSensitiveEye/index.js +11 -11
  105. package/src/centaline/dynamicSensitiveEye/src/dynamicSensitiveEye.vue +74 -74
  106. package/src/centaline/dynamicSo/index.js +14 -14
  107. package/src/centaline/dynamicSo/src/dynamicSo.vue +328 -328
  108. package/src/centaline/dynamicSo/src/dynamicSo/345/211/257/346/234/254.vue +69 -69
  109. package/src/centaline/dynamicSos/index.js +14 -14
  110. package/src/centaline/dynamicSos/src/dynamicSos - /345/244/215/345/210/266.vue" +223 -223
  111. package/src/centaline/dynamicSos/src/dynamicSos.vue +260 -260
  112. package/src/centaline/dynamicSw/index.js +11 -11
  113. package/src/centaline/dynamicSw/src/dynamicSw.vue +74 -74
  114. package/src/centaline/dynamicT/index.js +11 -11
  115. package/src/centaline/dynamicT/src/dynamicT.vue +79 -79
  116. package/src/centaline/dynamicTab/index.js +11 -11
  117. package/src/centaline/dynamicTab/src/dynamicTab.vue +49 -49
  118. package/src/centaline/dynamicTabs/index.js +11 -11
  119. package/src/centaline/dynamicTabs/src/dynamicTabs.vue +69 -69
  120. package/src/centaline/dynamicTags/index.js +13 -13
  121. package/src/centaline/dynamicTags/src/dynamicTags - /345/244/215/345/210/266.vue" +391 -391
  122. package/src/centaline/dynamicTags/src/dynamicTags.vue +427 -427
  123. package/src/centaline/dynamicTimeSelect/index.js +11 -11
  124. package/src/centaline/dynamicTimeSelect/src/dynamicTimeSelect.vue +141 -141
  125. package/src/centaline/dynamicTree/index.js +11 -11
  126. package/src/centaline/dynamicTree/src/dynamicSearchTree.vue +66 -66
  127. package/src/centaline/dynamicTree/src/dynamicTree.vue +233 -233
  128. package/src/centaline/dynamicTree/src/dynamicTreeList.vue +74 -74
  129. package/src/centaline/formData/index.js +290 -290
  130. package/src/centaline/imgPreview/index.js +42 -42
  131. package/src/centaline/imgPreview/src/imgPreview.vue +26 -26
  132. package/src/centaline/index.js +51 -51
  133. package/src/centaline/loader/index.js +157 -157
  134. package/src/centaline/loader/src/ctl/Base.js +261 -261
  135. package/src/centaline/loader/src/ctl/Button.js +44 -44
  136. package/src/centaline/loader/src/ctl/Cb.js +27 -27
  137. package/src/centaline/loader/src/ctl/Checkbox.js +107 -107
  138. package/src/centaline/loader/src/ctl/ComboBoxWithTextBox.js +162 -162
  139. package/src/centaline/loader/src/ctl/D.js +31 -31
  140. package/src/centaline/loader/src/ctl/Detail.js +175 -175
  141. package/src/centaline/loader/src/ctl/Dtd.js +115 -115
  142. package/src/centaline/loader/src/ctl/DtdOld.js +129 -129
  143. package/src/centaline/loader/src/ctl/File.js +292 -292
  144. package/src/centaline/loader/src/ctl/Form.js +380 -380
  145. package/src/centaline/loader/src/ctl/FormList.js +428 -428
  146. package/src/centaline/loader/src/ctl/GM.js +20 -20
  147. package/src/centaline/loader/src/ctl/Gp.js +9 -9
  148. package/src/centaline/loader/src/ctl/Hd.js +13 -13
  149. package/src/centaline/loader/src/ctl/HyperLink.js +24 -24
  150. package/src/centaline/loader/src/ctl/InputNumber.js +51 -51
  151. package/src/centaline/loader/src/ctl/Iti.js +108 -108
  152. package/src/centaline/loader/src/ctl/L.js +18 -18
  153. package/src/centaline/loader/src/ctl/Mo.js +183 -183
  154. package/src/centaline/loader/src/ctl/Mt.js +20 -20
  155. package/src/centaline/loader/src/ctl/PlaceHolder.js +17 -17
  156. package/src/centaline/loader/src/ctl/Router.js +273 -273
  157. package/src/centaline/loader/src/ctl/SearchCategory.js +54 -54
  158. package/src/centaline/loader/src/ctl/SearchScreen.js +236 -236
  159. package/src/centaline/loader/src/ctl/SearchTable.js +772 -772
  160. package/src/centaline/loader/src/ctl/Seg.js +37 -37
  161. package/src/centaline/loader/src/ctl/SensitiveEye.js +65 -65
  162. package/src/centaline/loader/src/ctl/So.js +117 -117
  163. package/src/centaline/loader/src/ctl/Sos.js +128 -128
  164. package/src/centaline/loader/src/ctl/Sw.js +27 -27
  165. package/src/centaline/loader/src/ctl/T.js +65 -65
  166. package/src/centaline/loader/src/ctl/Tabs.js +57 -57
  167. package/src/centaline/loader/src/ctl/Tags.js +191 -191
  168. package/src/centaline/loader/src/ctl/TimeSelect.js +87 -87
  169. package/src/centaline/loader/src/ctl/Tree.js +151 -151
  170. package/src/centaline/loader/src/ctl/Ttts.js +78 -78
  171. package/src/centaline/loader/src/ctl/lib/Enum.js +563 -563
  172. package/src/centaline/loader/src/ctl/lib/LibFunction.js +364 -364
  173. package/src/centaline/loader/src/ctl.js +36 -36
  174. package/src/centaline/mixins/dynamicElement.js +151 -151
  175. package/src/centaline/mixins/dynamicSelect.js +84 -84
  176. package/src/centaline/mixins/emitter.js +33 -33
  177. package/src/centaline/progress/index.js +11 -11
  178. package/src/centaline/progress/src/progress.vue +70 -70
  179. package/src/centaline/quickInput/src/quickInput.vue +64 -64
  180. package/src/centaline/selectOption/src/selectOption.vue +61 -61
  181. package/src/centaline/selectOption/src/selectOptionVertical.vue +80 -80
  182. package/src/centaline/templateControls/index.js +17 -17
  183. package/src/centaline/templateControls/src/dynamicTableA.vue +20 -20
  184. package/src/centaline/templateControls/src/dynamicTableCurrency.vue +62 -62
  185. package/src/centaline/templateControls/src/dynamicTableImg.vue +25 -25
  186. package/src/centaline/templates/index.js +34 -34
  187. package/src/centaline/templates/src/ContractSearch.js +67 -67
  188. package/src/centaline/templates/src/test.js +44 -44
  189. package/src/centaline/validate/index.js +332 -332
  190. package/src/main.js +46 -46
  191. package/src/router/index.js +44 -44
  192. package/wwwroot/static/centaline/centaline-data-driven.js +1 -1
  193. package/wwwroot/static/centaline/centaline-data-driven.js.map +1 -1
@@ -1,772 +1,772 @@
1
- import template from '../../../templates/index';
2
- import common from '../../../common';
3
- import Router from './Router';
4
- import Vue from 'vue';
5
- import Enum from './lib/Enum';
6
- import formData from '../../../formData';
7
- const SearchTable = function (data, callBack, searchModel, flagSearch, defaultSearchData) {
8
- var init = function (source) {
9
- var rtn = {
10
- $vue: null,
11
- isLoading: false,
12
- searchModel: searchModel,
13
- tableHeight: 350,
14
- defaultSearchData: defaultSearchData,
15
- pageIndex: 1,
16
- selectIndex: 0,
17
- selectAll: 0,
18
- get title() {
19
- return source.title;
20
- },
21
- set title(v) {
22
- source.title = v;
23
- },
24
- get flagShowTitle() {
25
- let v=false;
26
- if(source.flagShowTitle)v=source.flagShowTitle;
27
- return v;
28
- },
29
- get source() {
30
- return source;
31
- },
32
- set source(v) {
33
- source = v;
34
- },
35
- _columns: [],
36
- get columns() {
37
- var self = this;
38
- if (self._columns.length > 0) {
39
- return self._columns;
40
- }
41
- else {
42
- var lockLeft = true;
43
-
44
- self.isMergeTitle = source.content.columns.some(v => {
45
- return v.trOrder === 2;
46
- });
47
-
48
- source.content.columns.forEach((v) => {
49
- v.columnWidth = v.columnWidth ? v.columnWidth : 'auto';
50
- var col = {
51
- fixedSize: 0,
52
- get source() {
53
- return v;
54
- },
55
- get id() {
56
- return common.initialsToUpperCase(v.fieldName);
57
- },
58
- get name() {
59
- return v.displayName;
60
- },
61
- get sort() {
62
- return v.flagSort;
63
- },
64
- get sortName() {
65
- return v.sortBy;
66
- },
67
- get sortAction() {
68
- return v.sc;
69
- },
70
- set sortAction(v1) {
71
- v.sc = v1;
72
- },
73
- get style() {
74
- return v.columnStyle;
75
- },
76
- get show() {
77
- return v.visible;
78
- },
79
- get rowspan() {
80
- return v.rowSpan || 1;
81
- },
82
- get colspan() {
83
- return v.colSpan || 1;
84
- },
85
- get trOrder() {
86
- return v.trOrder || 1;
87
- },
88
- get isDataField() {
89
- return v.isDataField;
90
- },
91
- get width() {
92
- return v.columnWidth ? v.columnWidth : undefined;
93
- },
94
- set width(widthV) {
95
- v.columnWidth = widthV;
96
- },
97
- get lock() {
98
- return v.frozen;
99
- },
100
- get routerKey() {
101
- return v.routerKey;
102
- },
103
- _router: null,
104
- get router() {
105
- if (col._router !== null) {
106
- return col._router;
107
- }
108
- //todo
109
- if (typeof v.routerKey !== "undefined") {
110
- let router = rtn.actionRouter.find(b => {
111
- return b.id === v.routerKey;
112
- });
113
- return router;
114
- }
115
- return null;
116
- },
117
- //是否高度自适应
118
- get autoRowHeight() {
119
- return v.autoRowHeight;
120
- },
121
- attrs: {
122
- get style() {
123
- let styleObj = v.cs ? JSON.parse(v.cs) : {};
124
- if (rtn.$vue !== null) {
125
- if (v.frozen) {
126
- if (col.fixed === 'right') {
127
- styleObj.right = col.fixedSize + 'px'
128
- }
129
- else if (col.fixed === 'left') {
130
- styleObj.left = col.fixedSize + 'px'
131
- }
132
- }
133
- }
134
-
135
- if (col.width) {
136
- styleObj["width"] = col.width + 'px';//列宽
137
- styleObj["min-width"] = col.width + 'px';//列宽
138
- }
139
- styleObj["text-align"] = col.align;//水平位置
140
-
141
- return styleObj;
142
- // return ;
143
- },
144
- get align() {//水平位置
145
- if (v.align === Enum.HalignType.Left) {
146
- return 'left';
147
- }
148
- if (v.align === Enum.HalignType.Right) {
149
- return 'right';
150
- }
151
- return 'center';
152
- },
153
- get valign() {//垂直位置 TODO
154
- return v.valign || 'center';
155
- },
156
- get title() {
157
- return v.columnToolTip;
158
- }
159
- }
160
- };
161
- if (col.show) {
162
- //合并表头时暂不支持固定列
163
- if (col.lock && !self.isMergeTitle) {
164
- if (lockLeft) {
165
- col.fixed = 'left';
166
- }
167
- else {
168
- col.fixed = 'right';
169
- }
170
- }
171
- else {
172
- lockLeft = false;
173
- }
174
- }
175
- self._columns.push(col);
176
- });
177
- }
178
- return self._columns;
179
- },
180
- set columns(v) {
181
- this._columns = [];
182
- source.content.columns = v;
183
- },
184
- //因合并表头需要
185
- isMergeTitle: false,//是否合并标题
186
- _columnsArr: [],
187
- get columnsArr() {
188
- var self = this;
189
- if (self._columnsArr.length > 0) {
190
- return self._columnsArr;
191
- }
192
- else {
193
- let i = 1;
194
- for (; i <= 4; i++) {
195
- var arr = self.columns.filter(v => {
196
- return v.trOrder === i
197
- });
198
- if (arr.length === 0) {
199
- break;
200
- }
201
-
202
- self._columnsArr.push(arr);
203
- }
204
- return self._columnsArr;
205
- }
206
- },
207
- _dataFieldcolumns: [],
208
- get dataFieldcolumns() {
209
- var self = this;
210
- if (self._dataFieldcolumns.length > 0) {
211
- return self._dataFieldcolumns;
212
- }
213
- else {
214
- var arr = self.columns.filter(v => {
215
- return v.isDataField !== false
216
- });
217
-
218
- self._dataFieldcolumns = arr;
219
- return self._dataFieldcolumns;
220
- }
221
- },
222
- get listData() {
223
- if (!source.content.rows) {
224
- source.content.rows = [];
225
- }
226
- return source.content.rows;
227
- },
228
- set listData(v) {
229
- source.content.rows = v;
230
- },
231
- get isMulti() {//是否多选
232
- if (this.isMergeTitle) {
233
- return false;//合并表头暂不支持多选
234
- }
235
- return source.content.flagCheckBoxColumn === true;
236
- },
237
- get rightMulti() {//多选权限列
238
- return source.content.rightCheckBoxColumn;
239
- },
240
- get rowColorColumn() {//行字体颜色列
241
- return source.content.rowColorColumn;
242
- },
243
- get flagMoreData() {
244
- return source.page.flagMoreData;
245
- },
246
- set flagMoreData(v1) {
247
- source.page.flagMoreData = v1;
248
- },
249
- getSelectRowData(router) {
250
- if (rtn.listData.length === 0) {
251
- return null;
252
- }
253
-
254
- if (rtn.isMulti) {
255
- if (router.isMulti) {
256
- var rtnData = rtn.listData.filter((ro) => {
257
- return ro.$select === true;
258
- });
259
- return rtnData;
260
- }
261
- else {
262
- return [rtn.listData[rtn.selectIndex]];
263
- }
264
- }
265
- else {
266
- return [rtn.listData[rtn.selectIndex]];
267
- }
268
- },
269
- _buttons: null,
270
- get buttons() {
271
- if (rtn._buttons !== null) {
272
- return rtn._buttons;
273
- }
274
- else {
275
- rtn._buttons = [];
276
- if (source.content.toolButtons) {
277
-
278
- source.content.toolButtons.forEach((v) => {
279
- var button = Router(v);
280
- button.is = "ct-btn";
281
- button.attrs = { size: "mini",class:'max-btn-gray'}
282
- rtn._buttons.push(button);
283
- });
284
- }
285
- return rtn._buttons;
286
- }
287
- },
288
- _actionRouter: null,
289
- get actionRouter() {
290
- if (rtn._actionRouter !== null) {
291
- return rtn._actionRouter;
292
- }
293
- else {
294
- rtn._actionRouter = [];
295
- if (source.content.actionRouters) {
296
- source.content.actionRouters.forEach((v) => {
297
- var router = Router(v);
298
- //router.is = "ct-btn";
299
- //router.attrs = { size: "mini" }
300
- rtn._actionRouter.push(router);
301
- });
302
- }
303
- return rtn._actionRouter;
304
- }
305
- },
306
- _rowRouter: null,
307
- get rowRouter() {
308
- if (rtn._rowRouter !== null) {
309
- return rtn._rowRouter;
310
- }
311
- else {
312
- rtn._rowRouter = [];
313
- if (rtn.actionRouter) {
314
- rtn.actionRouter.forEach((v) => {
315
- if (v.show) {
316
- rtn._rowRouter.push(v);
317
- }
318
- });
319
- }
320
- return rtn._rowRouter;
321
- }
322
- },
323
- sortData: [],
324
- toSort: function (col, action, callback) {
325
- this.columns.forEach((v1) => {
326
- if (v1.id !== col.id) {
327
- v1.sortAction = "";
328
- }
329
- });
330
- this.sortData = [];
331
- if (typeof action === 'undefined') {
332
- if (col.sortAction === 'asc') {
333
- col.sortAction = 'desc';
334
- this.sortData.push(col);
335
- }
336
- else if (col.sortAction === 'desc') {
337
- col.sortAction = '';
338
- }
339
- else {
340
- col.sortAction = 'asc';
341
- this.sortData.push(col);
342
- }
343
- }
344
- else {
345
- col.sortAction = action;
346
- this.sortData.push(col);
347
- }
348
- this.getPage(1, callback);
349
- },
350
- clearSort: function (col, callback) {
351
- col.sortAction = "";
352
- this.getPage(1, callback);
353
- },
354
- getPage: function (index, callback) {
355
- //this.listData = [];
356
- this.listData.splice(0, this.listData.length);
357
- this.pageIndex = index;
358
- this.apiData(callback);
359
- this.selectIndex = 0;
360
- this._lastRowspan = null;
361
- if (index === 1) {
362
- this.setButtonsDisabled();
363
- this.selectAll = 0;
364
- }
365
- },
366
- nextPage: function (callback) {
367
- if (this.flagMoreData && this.flagMoreData !== false) {
368
- this.pageIndex++;
369
- this.apiData(callback);
370
- }
371
- else {
372
- if (typeof callback !== 'undefined') {
373
- callback(false);
374
- }
375
- }
376
- },
377
- upKey: function () {
378
- if (this.selectIndex >= 0 && this.selectIndex - 1 >= 0) {
379
- this.selectIndex--;
380
- }
381
- },
382
- downKey: function () {
383
- if (this.selectIndex >= 0 && this.selectIndex + 1 <= this.listData.length - 1) {
384
- this.selectIndex++;
385
- }
386
- },
387
- get footer() {
388
- var self = this;
389
- if (typeof source.content.foot !== 'undefined') {
390
- var data = source.content.foot;
391
- var objs = data.match(/({{[^}]+}})/g);
392
- if (objs) {
393
- objs.forEach((v1) => {
394
- data = data.replace(v1, self[v1.replace('{{', '').replace('}}', '')]);
395
- });
396
- }
397
- return data;
398
- }
399
- else {
400
- return '';
401
- }
402
- },
403
- set footer(v1) {
404
- source.content.foot = v1;
405
- },
406
- get listHeader() {
407
- return source.content.topText || '';
408
- },
409
- set listHeader(v1) {
410
- source.content.topText = v1;
411
- },
412
- get listFooter() {
413
- return source.content.bottomText || '';
414
- },
415
- set listFooter(v1) {
416
- source.content.bottomText = v1;
417
- },
418
- apiData(callback) {
419
- var self = this;
420
- this.isLoading = true;
421
- if (self.searchModel) {
422
- //不需要禁用查询按钮
423
- // self.searchModel.setBtnLoading(true);
424
- }
425
- Vue.prototype.$api.postHandler(common.globalUri(), {
426
- action: data,
427
- para: {
428
- searchFields: this.searchModel ? this.searchModel.searchData : {},
429
- pageAttribute: this.pageData,
430
- flagSearch: true
431
- }
432
- })
433
- .then(function (response) {
434
- self.isLoading = false;
435
- if (response.rtnCode === Enum.ReturnCode.Successful) {
436
- if (response.content.rows.length > 0) {
437
- rtn.setRow(response.content.rows);
438
- response.content.rows.forEach((nr) => {
439
- rtn.listData.push(nr);
440
- });
441
- rtn.dataDictionary = response.content.rows;
442
- //self.listData = self.listData.concat(response.content.Rows);
443
- }
444
- source.page.rows = response.page.rows;
445
- source.page.rowCount = response.page.rowCount;
446
- if (typeof response.content.foot !== 'undefined') {
447
- self.footer = response.content.foot;
448
- }
449
-
450
- if (typeof response.content.topText !== 'undefined') {
451
- self.listHeader = response.content.topText;
452
- }
453
- if (typeof response.content.bottomText !== 'undefined') {
454
- self.listFooter = response.content.bottomText;
455
- }
456
-
457
- if (typeof response.page.flagMoreData !== 'undefined') {
458
- self.flagMoreData = response.page.flagMoreData;
459
- }
460
- if (typeof response.content.updateTableColumns !== 'undefined' && response.content.updateTableColumns === '1') {
461
- self.columns = response.content.columns;
462
- if (self.template) {
463
- var tempLoader = template.loader(self.template).default;
464
- tempLoader.init(self);
465
- }
466
- }
467
- if (typeof callback !== 'undefined') {
468
- if (response.content.rows.length > 0) {
469
- callback(true);
470
- }
471
- else {
472
- callback(false);
473
- }
474
- }
475
- }
476
- else {
477
- callback(false);
478
- }
479
-
480
- if (self.searchModel) {
481
- // self.searchModel.setBtnLoading(false);
482
- }
483
- })
484
- .catch((error) => {
485
- self.isLoading = false;
486
- if (self.searchModel) {
487
- // self.searchModel.setBtnLoading(false);
488
- }
489
- console.error(error);
490
- });
491
- },
492
- getCurrentRowApiData(callback) {
493
- var self = this;
494
- var searchFields = this.searchModel ? this.searchModel.searchData : { fields: [] };
495
- if (self.primaryKey) {
496
- searchFields.fields.push({
497
- fieldName1: self.primaryKey,
498
- groupName: self.primaryKey,
499
- operation: 2,
500
- searchDataType: 3,
501
- searchValue1: rtn.listData[rtn.selectIndex][self.primaryKey],
502
- });
503
- }
504
- Vue.prototype.$api.postHandler(common.globalUri(), {
505
- action: data,
506
- para: {
507
- searchFields: searchFields,
508
- pageAttribute: { pageIndex: 1},
509
- flagSearch: true
510
- }
511
- })
512
- .then(function (response) {
513
- if (response.rtnCode === Enum.ReturnCode.Successful) {
514
- if (response.content.rows.length > 0) {
515
- response.content.rows.forEach((row) => {
516
- for (var vkey in row) {
517
- rtn.dataDictionary[row[rtn.primaryKey]][vkey] = row[vkey];
518
- }
519
- });
520
- }
521
-
522
- if (typeof response.content.foot !== 'undefined') {
523
- self.footer = response.content.foot;
524
- }
525
- if (typeof response.content.topText !== 'undefined') {
526
- self.listHeader = response.content.topText;
527
- }
528
- if (typeof response.content.bottomText !== 'undefined') {
529
- self.listFooter = response.content.bottomText;
530
- }
531
- }
532
-
533
- if (typeof callback !== 'undefined') {
534
- callback();
535
- }
536
- })
537
- .catch((error) => {
538
- console.error(error);
539
- if (typeof callback !== 'undefined') {
540
- callback();
541
- }
542
- });
543
- },
544
- attrs: {
545
- size: 'mini'
546
- },
547
- pageData: {
548
- get orderBy() {
549
- if (rtn.sortData.length > 0) {
550
- return rtn.sortData[0].sortName + ' ' + rtn.sortData[0].sortAction;
551
- }
552
- },
553
- get pageIndex() {
554
- return rtn.pageIndex;
555
- }
556
- },
557
- get template() {
558
- return source.content.template;
559
- },
560
- get dataApi() {
561
- return source.content.dataApi;
562
- },
563
- get primaryKey() {
564
- return common.initialsToUpperCase(source.content.primaryFieldName);
565
- },
566
- get $index() {
567
- if (this.$rowCount > 0) {
568
- return this.selectIndex + 1;
569
- }
570
- return 0;
571
- },
572
- get $total() {
573
- return this.listData.length;
574
- },
575
- get $rowCount() {
576
- return source.page.rowCount;
577
- },
578
- _dataDictionary: {},
579
- set dataDictionary(v) {
580
- if (v) {
581
- v.forEach((r) => {
582
- rtn._dataDictionary[r[rtn.primaryKey]] = r;
583
- });
584
- }
585
- },
586
- get dataDictionary() {
587
- return rtn._dataDictionary;
588
- },
589
- get rowMergedColumns() {
590
- return source.content.rowMergedColumns || [];
591
- },
592
- get optionApi() {
593
- return source.content.parameterAction;
594
- },
595
- setRow(rows) {
596
- rtn.setStyleRow(rows);
597
- rtn.setMergeRow(rows);
598
- },
599
- //设置行样式
600
- setStyleRow(rows) {
601
- rows.forEach((row) => {
602
- if (!row.$style) {
603
- row.$style = {};
604
- }
605
- if (rtn.rowColorColumn && row[rtn.rowColorColumn]) {
606
- row.$style.color = row[rtn.rowColorColumn];
607
- }
608
- });
609
- },
610
- _lastRowspan: null,
611
- //设置合并行
612
- setMergeRow(rows) {
613
- if (rtn.rowMergedColumns.length === 0) {
614
- return;
615
- }
616
-
617
- for (let i = 0; i < rows.length; i++) {
618
- let row = rows[i];
619
- if (typeof row.$rowspan === 'undefined') {
620
- if (rtn._lastRowspan !== null) {
621
- let equalNum = 0;
622
- for (let j = 0; j < rtn.rowMergedColumns.length; j++) {
623
- let rowMerged = rtn.rowMergedColumns[j];
624
- if (row[rowMerged] === rtn._lastRowspan[rowMerged]) {
625
- equalNum++;
626
- }
627
- else {
628
- break;
629
- }
630
- }
631
-
632
- //当所有列都相等时
633
- if (equalNum === rtn.rowMergedColumns.length) {
634
- row.$rowspan = 0;
635
- rtn._lastRowspan.$rowspan++;
636
- }
637
- else {
638
- row.$rowspan = 1;
639
- rtn._lastRowspan = row;
640
- }
641
- }
642
- else {
643
- row.$rowspan = 1;
644
- rtn._lastRowspan = row;
645
- }
646
- }
647
- }
648
- },
649
- doAction(response) {
650
- if (response.responseData) {
651
- response = response.responseData;
652
- }
653
- switch (response.notification) {
654
- case Enum.ActionType.Delete://删除
655
- case Enum.ActionType.CloseTabThenDelete://删除
656
- var deleteRow = response.content.split(',');
657
- if (deleteRow) {
658
- deleteRow.forEach((r) => {
659
- const dataIndex = rtn.listData.indexOf(rtn.dataDictionary[r])
660
- if (dataIndex !== -1) {
661
- rtn.listData.splice(dataIndex, 1);
662
- delete rtn.dataDictionary[r];
663
- }
664
- });
665
- }
666
-
667
- source.page.rows = source.page.rows - deleteRow.length;
668
- break;
669
- case Enum.ActionType.New://新增
670
- case Enum.ActionType.CloseTabThenNew://新增
671
-
672
- rtn.setStyleRow(response.content);
673
- response.content.forEach((nr) => {
674
- rtn.listData.unshift(nr);
675
- });
676
- rtn.dataDictionary = response.content;
677
-
678
- source.page.rows = source.page.rows + response.content.length;
679
- rtn.$vue.calculatingRowHeight()
680
- break;
681
- case Enum.ActionType.Update://修改
682
- case Enum.ActionType.CloseTabThenUpdate://修改
683
- response.content.forEach((row) => {
684
- for (var vkey in row) {
685
- rtn.dataDictionary[row[rtn.primaryKey]][vkey] = row[vkey];
686
- }
687
- });
688
- break;
689
- case Enum.ActionType.Export://导出
690
- var fileName = response.content.fieldName1;
691
- var fileContent = window.atob(response.content.code1);
692
- common.saveFile(fileName, fileContent);
693
- break;
694
- case Enum.ActionType.Refersh://刷新
695
- rtn.$vue.getPage(1);
696
- break;
697
- case Enum.ActionType.RefreshParent://刷新父页面
698
- rtn.$vue.$emit('refreshParent');
699
- break;
700
- default:
701
- break;
702
- }
703
- rtn.$vue.$forceUpdate();
704
- },
705
- //检查是否关闭tab后触发来源页面操作
706
- checkCloseTabThen(notification) {
707
- var rtn = false;
708
- if (notification == Enum.ActionType.CloseTabThenDelete
709
- || notification == Enum.ActionType.CloseTabThenNew
710
- || notification == Enum.ActionType.CloseTabThenUpdate) {
711
- rtn = true;
712
- }
713
- return rtn;
714
- },
715
- //设置多选按钮是否禁用
716
- setButtonsDisabled() {
717
- var selectData = rtn.getSelectRowData({ isMulti: 1 });
718
- rtn._buttons.forEach((v) => {
719
- if (v.isMulti) {
720
- if (selectData != null && selectData.length > 0) {
721
- v.disabled = false;
722
- }
723
- else {
724
- v.disabled = true;
725
- }
726
- }
727
- });
728
- },
729
- _scripts: null,
730
- get scripts() {
731
- if (rtn._scripts !== null) {
732
- return rtn._scripts;
733
- }
734
- else {
735
- if (typeof source.scripts !== 'undefined') {
736
- rtn._scripts = base.common.eval(source.scripts);
737
- return rtn._scripts;
738
- }
739
- else{
740
- rtn._scripts={};
741
- return rtn._scripts;
742
- }
743
- }
744
- },
745
- formData:formData,
746
- };
747
- if (rtn.template) {
748
- var tempLoader = template.loader(rtn.template).default;
749
- tempLoader.init(rtn);
750
- }
751
- rtn.dataDictionary = rtn.listData;
752
- return rtn;
753
- };
754
- if (typeof data === 'string') {
755
- var apiData = searchModel ? searchModel.searchData : {};
756
- Vue.prototype.$api.postHandler(common.globalUri(), { action: data, para: { searchFields: apiData, pageAttribute: { pageIndex: 1 }, flagSearch: flagSearch } }).then(
757
- function (response) {
758
- if (response.rtnCode === Enum.ReturnCode.Successful) {
759
- var rtn = init(response);
760
- if (callBack) {
761
- callBack(rtn);
762
- }
763
- }
764
- }
765
- );
766
- }
767
- else {
768
- return init(data);
769
- }
770
- }
771
-
772
- export default SearchTable;
1
+ import template from '../../../templates/index';
2
+ import common from '../../../common';
3
+ import Router from './Router';
4
+ import Vue from 'vue';
5
+ import Enum from './lib/Enum';
6
+ import formData from '../../../formData';
7
+ const SearchTable = function (data, callBack, searchModel, flagSearch, defaultSearchData) {
8
+ var init = function (source) {
9
+ var rtn = {
10
+ $vue: null,
11
+ isLoading: false,
12
+ searchModel: searchModel,
13
+ tableHeight: 350,
14
+ defaultSearchData: defaultSearchData,
15
+ pageIndex: 1,
16
+ selectIndex: 0,
17
+ selectAll: 0,
18
+ get title() {
19
+ return source.title;
20
+ },
21
+ set title(v) {
22
+ source.title = v;
23
+ },
24
+ get flagShowTitle() {
25
+ let v=false;
26
+ if(source.flagShowTitle)v=source.flagShowTitle;
27
+ return v;
28
+ },
29
+ get source() {
30
+ return source;
31
+ },
32
+ set source(v) {
33
+ source = v;
34
+ },
35
+ _columns: [],
36
+ get columns() {
37
+ var self = this;
38
+ if (self._columns.length > 0) {
39
+ return self._columns;
40
+ }
41
+ else {
42
+ var lockLeft = true;
43
+
44
+ self.isMergeTitle = source.content.columns.some(v => {
45
+ return v.trOrder === 2;
46
+ });
47
+
48
+ source.content.columns.forEach((v) => {
49
+ v.columnWidth = v.columnWidth ? v.columnWidth : 'auto';
50
+ var col = {
51
+ fixedSize: 0,
52
+ get source() {
53
+ return v;
54
+ },
55
+ get id() {
56
+ return common.initialsToUpperCase(v.fieldName);
57
+ },
58
+ get name() {
59
+ return v.displayName;
60
+ },
61
+ get sort() {
62
+ return v.flagSort;
63
+ },
64
+ get sortName() {
65
+ return v.sortBy;
66
+ },
67
+ get sortAction() {
68
+ return v.sc;
69
+ },
70
+ set sortAction(v1) {
71
+ v.sc = v1;
72
+ },
73
+ get style() {
74
+ return v.columnStyle;
75
+ },
76
+ get show() {
77
+ return v.visible;
78
+ },
79
+ get rowspan() {
80
+ return v.rowSpan || 1;
81
+ },
82
+ get colspan() {
83
+ return v.colSpan || 1;
84
+ },
85
+ get trOrder() {
86
+ return v.trOrder || 1;
87
+ },
88
+ get isDataField() {
89
+ return v.isDataField;
90
+ },
91
+ get width() {
92
+ return v.columnWidth ? v.columnWidth : undefined;
93
+ },
94
+ set width(widthV) {
95
+ v.columnWidth = widthV;
96
+ },
97
+ get lock() {
98
+ return v.frozen;
99
+ },
100
+ get routerKey() {
101
+ return v.routerKey;
102
+ },
103
+ _router: null,
104
+ get router() {
105
+ if (col._router !== null) {
106
+ return col._router;
107
+ }
108
+ //todo
109
+ if (typeof v.routerKey !== "undefined") {
110
+ let router = rtn.actionRouter.find(b => {
111
+ return b.id === v.routerKey;
112
+ });
113
+ return router;
114
+ }
115
+ return null;
116
+ },
117
+ //是否高度自适应
118
+ get autoRowHeight() {
119
+ return v.autoRowHeight;
120
+ },
121
+ attrs: {
122
+ get style() {
123
+ let styleObj = v.cs ? JSON.parse(v.cs) : {};
124
+ if (rtn.$vue !== null) {
125
+ if (v.frozen) {
126
+ if (col.fixed === 'right') {
127
+ styleObj.right = col.fixedSize + 'px'
128
+ }
129
+ else if (col.fixed === 'left') {
130
+ styleObj.left = col.fixedSize + 'px'
131
+ }
132
+ }
133
+ }
134
+
135
+ if (col.width) {
136
+ styleObj["width"] = col.width + 'px';//列宽
137
+ styleObj["min-width"] = col.width + 'px';//列宽
138
+ }
139
+ styleObj["text-align"] = col.align;//水平位置
140
+
141
+ return styleObj;
142
+ // return ;
143
+ },
144
+ get align() {//水平位置
145
+ if (v.align === Enum.HalignType.Left) {
146
+ return 'left';
147
+ }
148
+ if (v.align === Enum.HalignType.Right) {
149
+ return 'right';
150
+ }
151
+ return 'center';
152
+ },
153
+ get valign() {//垂直位置 TODO
154
+ return v.valign || 'center';
155
+ },
156
+ get title() {
157
+ return v.columnToolTip;
158
+ }
159
+ }
160
+ };
161
+ if (col.show) {
162
+ //合并表头时暂不支持固定列
163
+ if (col.lock && !self.isMergeTitle) {
164
+ if (lockLeft) {
165
+ col.fixed = 'left';
166
+ }
167
+ else {
168
+ col.fixed = 'right';
169
+ }
170
+ }
171
+ else {
172
+ lockLeft = false;
173
+ }
174
+ }
175
+ self._columns.push(col);
176
+ });
177
+ }
178
+ return self._columns;
179
+ },
180
+ set columns(v) {
181
+ this._columns = [];
182
+ source.content.columns = v;
183
+ },
184
+ //因合并表头需要
185
+ isMergeTitle: false,//是否合并标题
186
+ _columnsArr: [],
187
+ get columnsArr() {
188
+ var self = this;
189
+ if (self._columnsArr.length > 0) {
190
+ return self._columnsArr;
191
+ }
192
+ else {
193
+ let i = 1;
194
+ for (; i <= 4; i++) {
195
+ var arr = self.columns.filter(v => {
196
+ return v.trOrder === i
197
+ });
198
+ if (arr.length === 0) {
199
+ break;
200
+ }
201
+
202
+ self._columnsArr.push(arr);
203
+ }
204
+ return self._columnsArr;
205
+ }
206
+ },
207
+ _dataFieldcolumns: [],
208
+ get dataFieldcolumns() {
209
+ var self = this;
210
+ if (self._dataFieldcolumns.length > 0) {
211
+ return self._dataFieldcolumns;
212
+ }
213
+ else {
214
+ var arr = self.columns.filter(v => {
215
+ return v.isDataField !== false
216
+ });
217
+
218
+ self._dataFieldcolumns = arr;
219
+ return self._dataFieldcolumns;
220
+ }
221
+ },
222
+ get listData() {
223
+ if (!source.content.rows) {
224
+ source.content.rows = [];
225
+ }
226
+ return source.content.rows;
227
+ },
228
+ set listData(v) {
229
+ source.content.rows = v;
230
+ },
231
+ get isMulti() {//是否多选
232
+ if (this.isMergeTitle) {
233
+ return false;//合并表头暂不支持多选
234
+ }
235
+ return source.content.flagCheckBoxColumn === true;
236
+ },
237
+ get rightMulti() {//多选权限列
238
+ return source.content.rightCheckBoxColumn;
239
+ },
240
+ get rowColorColumn() {//行字体颜色列
241
+ return source.content.rowColorColumn;
242
+ },
243
+ get flagMoreData() {
244
+ return source.page.flagMoreData;
245
+ },
246
+ set flagMoreData(v1) {
247
+ source.page.flagMoreData = v1;
248
+ },
249
+ getSelectRowData(router) {
250
+ if (rtn.listData.length === 0) {
251
+ return null;
252
+ }
253
+
254
+ if (rtn.isMulti) {
255
+ if (router.isMulti) {
256
+ var rtnData = rtn.listData.filter((ro) => {
257
+ return ro.$select === true;
258
+ });
259
+ return rtnData;
260
+ }
261
+ else {
262
+ return [rtn.listData[rtn.selectIndex]];
263
+ }
264
+ }
265
+ else {
266
+ return [rtn.listData[rtn.selectIndex]];
267
+ }
268
+ },
269
+ _buttons: null,
270
+ get buttons() {
271
+ if (rtn._buttons !== null) {
272
+ return rtn._buttons;
273
+ }
274
+ else {
275
+ rtn._buttons = [];
276
+ if (source.content.toolButtons) {
277
+
278
+ source.content.toolButtons.forEach((v) => {
279
+ var button = Router(v);
280
+ button.is = "ct-btn";
281
+ button.attrs = { size: "mini",class:'max-btn-gray'}
282
+ rtn._buttons.push(button);
283
+ });
284
+ }
285
+ return rtn._buttons;
286
+ }
287
+ },
288
+ _actionRouter: null,
289
+ get actionRouter() {
290
+ if (rtn._actionRouter !== null) {
291
+ return rtn._actionRouter;
292
+ }
293
+ else {
294
+ rtn._actionRouter = [];
295
+ if (source.content.actionRouters) {
296
+ source.content.actionRouters.forEach((v) => {
297
+ var router = Router(v);
298
+ //router.is = "ct-btn";
299
+ //router.attrs = { size: "mini" }
300
+ rtn._actionRouter.push(router);
301
+ });
302
+ }
303
+ return rtn._actionRouter;
304
+ }
305
+ },
306
+ _rowRouter: null,
307
+ get rowRouter() {
308
+ if (rtn._rowRouter !== null) {
309
+ return rtn._rowRouter;
310
+ }
311
+ else {
312
+ rtn._rowRouter = [];
313
+ if (rtn.actionRouter) {
314
+ rtn.actionRouter.forEach((v) => {
315
+ if (v.show) {
316
+ rtn._rowRouter.push(v);
317
+ }
318
+ });
319
+ }
320
+ return rtn._rowRouter;
321
+ }
322
+ },
323
+ sortData: [],
324
+ toSort: function (col, action, callback) {
325
+ this.columns.forEach((v1) => {
326
+ if (v1.id !== col.id) {
327
+ v1.sortAction = "";
328
+ }
329
+ });
330
+ this.sortData = [];
331
+ if (typeof action === 'undefined') {
332
+ if (col.sortAction === 'asc') {
333
+ col.sortAction = 'desc';
334
+ this.sortData.push(col);
335
+ }
336
+ else if (col.sortAction === 'desc') {
337
+ col.sortAction = '';
338
+ }
339
+ else {
340
+ col.sortAction = 'asc';
341
+ this.sortData.push(col);
342
+ }
343
+ }
344
+ else {
345
+ col.sortAction = action;
346
+ this.sortData.push(col);
347
+ }
348
+ this.getPage(1, callback);
349
+ },
350
+ clearSort: function (col, callback) {
351
+ col.sortAction = "";
352
+ this.getPage(1, callback);
353
+ },
354
+ getPage: function (index, callback) {
355
+ //this.listData = [];
356
+ this.listData.splice(0, this.listData.length);
357
+ this.pageIndex = index;
358
+ this.apiData(callback);
359
+ this.selectIndex = 0;
360
+ this._lastRowspan = null;
361
+ if (index === 1) {
362
+ this.setButtonsDisabled();
363
+ this.selectAll = 0;
364
+ }
365
+ },
366
+ nextPage: function (callback) {
367
+ if (this.flagMoreData && this.flagMoreData !== false) {
368
+ this.pageIndex++;
369
+ this.apiData(callback);
370
+ }
371
+ else {
372
+ if (typeof callback !== 'undefined') {
373
+ callback(false);
374
+ }
375
+ }
376
+ },
377
+ upKey: function () {
378
+ if (this.selectIndex >= 0 && this.selectIndex - 1 >= 0) {
379
+ this.selectIndex--;
380
+ }
381
+ },
382
+ downKey: function () {
383
+ if (this.selectIndex >= 0 && this.selectIndex + 1 <= this.listData.length - 1) {
384
+ this.selectIndex++;
385
+ }
386
+ },
387
+ get footer() {
388
+ var self = this;
389
+ if (typeof source.content.foot !== 'undefined') {
390
+ var data = source.content.foot;
391
+ var objs = data.match(/({{[^}]+}})/g);
392
+ if (objs) {
393
+ objs.forEach((v1) => {
394
+ data = data.replace(v1, self[v1.replace('{{', '').replace('}}', '')]);
395
+ });
396
+ }
397
+ return data;
398
+ }
399
+ else {
400
+ return '';
401
+ }
402
+ },
403
+ set footer(v1) {
404
+ source.content.foot = v1;
405
+ },
406
+ get listHeader() {
407
+ return source.content.topText || '';
408
+ },
409
+ set listHeader(v1) {
410
+ source.content.topText = v1;
411
+ },
412
+ get listFooter() {
413
+ return source.content.bottomText || '';
414
+ },
415
+ set listFooter(v1) {
416
+ source.content.bottomText = v1;
417
+ },
418
+ apiData(callback) {
419
+ var self = this;
420
+ this.isLoading = true;
421
+ if (self.searchModel) {
422
+ //不需要禁用查询按钮
423
+ // self.searchModel.setBtnLoading(true);
424
+ }
425
+ Vue.prototype.$api.postHandler(common.globalUri(), {
426
+ action: data,
427
+ para: {
428
+ searchFields: this.searchModel ? this.searchModel.searchData : {},
429
+ pageAttribute: this.pageData,
430
+ flagSearch: true
431
+ }
432
+ })
433
+ .then(function (response) {
434
+ self.isLoading = false;
435
+ if (response.rtnCode === Enum.ReturnCode.Successful) {
436
+ if (response.content.rows.length > 0) {
437
+ rtn.setRow(response.content.rows);
438
+ response.content.rows.forEach((nr) => {
439
+ rtn.listData.push(nr);
440
+ });
441
+ rtn.dataDictionary = response.content.rows;
442
+ //self.listData = self.listData.concat(response.content.Rows);
443
+ }
444
+ source.page.rows = response.page.rows;
445
+ source.page.rowCount = response.page.rowCount;
446
+ if (typeof response.content.foot !== 'undefined') {
447
+ self.footer = response.content.foot;
448
+ }
449
+
450
+ if (typeof response.content.topText !== 'undefined') {
451
+ self.listHeader = response.content.topText;
452
+ }
453
+ if (typeof response.content.bottomText !== 'undefined') {
454
+ self.listFooter = response.content.bottomText;
455
+ }
456
+
457
+ if (typeof response.page.flagMoreData !== 'undefined') {
458
+ self.flagMoreData = response.page.flagMoreData;
459
+ }
460
+ if (typeof response.content.updateTableColumns !== 'undefined' && response.content.updateTableColumns === '1') {
461
+ self.columns = response.content.columns;
462
+ if (self.template) {
463
+ var tempLoader = template.loader(self.template).default;
464
+ tempLoader.init(self);
465
+ }
466
+ }
467
+ if (typeof callback !== 'undefined') {
468
+ if (response.content.rows.length > 0) {
469
+ callback(true);
470
+ }
471
+ else {
472
+ callback(false);
473
+ }
474
+ }
475
+ }
476
+ else {
477
+ callback(false);
478
+ }
479
+
480
+ if (self.searchModel) {
481
+ // self.searchModel.setBtnLoading(false);
482
+ }
483
+ })
484
+ .catch((error) => {
485
+ self.isLoading = false;
486
+ if (self.searchModel) {
487
+ // self.searchModel.setBtnLoading(false);
488
+ }
489
+ console.error(error);
490
+ });
491
+ },
492
+ getCurrentRowApiData(callback) {
493
+ var self = this;
494
+ var searchFields = this.searchModel ? this.searchModel.searchData : { fields: [] };
495
+ if (self.primaryKey) {
496
+ searchFields.fields.push({
497
+ fieldName1: self.primaryKey,
498
+ groupName: self.primaryKey,
499
+ operation: 2,
500
+ searchDataType: 3,
501
+ searchValue1: rtn.listData[rtn.selectIndex][self.primaryKey],
502
+ });
503
+ }
504
+ Vue.prototype.$api.postHandler(common.globalUri(), {
505
+ action: data,
506
+ para: {
507
+ searchFields: searchFields,
508
+ pageAttribute: { pageIndex: 1},
509
+ flagSearch: true
510
+ }
511
+ })
512
+ .then(function (response) {
513
+ if (response.rtnCode === Enum.ReturnCode.Successful) {
514
+ if (response.content.rows.length > 0) {
515
+ response.content.rows.forEach((row) => {
516
+ for (var vkey in row) {
517
+ rtn.dataDictionary[row[rtn.primaryKey]][vkey] = row[vkey];
518
+ }
519
+ });
520
+ }
521
+
522
+ if (typeof response.content.foot !== 'undefined') {
523
+ self.footer = response.content.foot;
524
+ }
525
+ if (typeof response.content.topText !== 'undefined') {
526
+ self.listHeader = response.content.topText;
527
+ }
528
+ if (typeof response.content.bottomText !== 'undefined') {
529
+ self.listFooter = response.content.bottomText;
530
+ }
531
+ }
532
+
533
+ if (typeof callback !== 'undefined') {
534
+ callback();
535
+ }
536
+ })
537
+ .catch((error) => {
538
+ console.error(error);
539
+ if (typeof callback !== 'undefined') {
540
+ callback();
541
+ }
542
+ });
543
+ },
544
+ attrs: {
545
+ size: 'mini'
546
+ },
547
+ pageData: {
548
+ get orderBy() {
549
+ if (rtn.sortData.length > 0) {
550
+ return rtn.sortData[0].sortName + ' ' + rtn.sortData[0].sortAction;
551
+ }
552
+ },
553
+ get pageIndex() {
554
+ return rtn.pageIndex;
555
+ }
556
+ },
557
+ get template() {
558
+ return source.content.template;
559
+ },
560
+ get dataApi() {
561
+ return source.content.dataApi;
562
+ },
563
+ get primaryKey() {
564
+ return common.initialsToUpperCase(source.content.primaryFieldName);
565
+ },
566
+ get $index() {
567
+ if (this.$rowCount > 0) {
568
+ return this.selectIndex + 1;
569
+ }
570
+ return 0;
571
+ },
572
+ get $total() {
573
+ return this.listData.length;
574
+ },
575
+ get $rowCount() {
576
+ return source.page.rowCount;
577
+ },
578
+ _dataDictionary: {},
579
+ set dataDictionary(v) {
580
+ if (v) {
581
+ v.forEach((r) => {
582
+ rtn._dataDictionary[r[rtn.primaryKey]] = r;
583
+ });
584
+ }
585
+ },
586
+ get dataDictionary() {
587
+ return rtn._dataDictionary;
588
+ },
589
+ get rowMergedColumns() {
590
+ return source.content.rowMergedColumns || [];
591
+ },
592
+ get optionApi() {
593
+ return source.content.parameterAction;
594
+ },
595
+ setRow(rows) {
596
+ rtn.setStyleRow(rows);
597
+ rtn.setMergeRow(rows);
598
+ },
599
+ //设置行样式
600
+ setStyleRow(rows) {
601
+ rows.forEach((row) => {
602
+ if (!row.$style) {
603
+ row.$style = {};
604
+ }
605
+ if (rtn.rowColorColumn && row[rtn.rowColorColumn]) {
606
+ row.$style.color = row[rtn.rowColorColumn];
607
+ }
608
+ });
609
+ },
610
+ _lastRowspan: null,
611
+ //设置合并行
612
+ setMergeRow(rows) {
613
+ if (rtn.rowMergedColumns.length === 0) {
614
+ return;
615
+ }
616
+
617
+ for (let i = 0; i < rows.length; i++) {
618
+ let row = rows[i];
619
+ if (typeof row.$rowspan === 'undefined') {
620
+ if (rtn._lastRowspan !== null) {
621
+ let equalNum = 0;
622
+ for (let j = 0; j < rtn.rowMergedColumns.length; j++) {
623
+ let rowMerged = rtn.rowMergedColumns[j];
624
+ if (row[rowMerged] === rtn._lastRowspan[rowMerged]) {
625
+ equalNum++;
626
+ }
627
+ else {
628
+ break;
629
+ }
630
+ }
631
+
632
+ //当所有列都相等时
633
+ if (equalNum === rtn.rowMergedColumns.length) {
634
+ row.$rowspan = 0;
635
+ rtn._lastRowspan.$rowspan++;
636
+ }
637
+ else {
638
+ row.$rowspan = 1;
639
+ rtn._lastRowspan = row;
640
+ }
641
+ }
642
+ else {
643
+ row.$rowspan = 1;
644
+ rtn._lastRowspan = row;
645
+ }
646
+ }
647
+ }
648
+ },
649
+ doAction(response) {
650
+ if (response.responseData) {
651
+ response = response.responseData;
652
+ }
653
+ switch (response.notification) {
654
+ case Enum.ActionType.Delete://删除
655
+ case Enum.ActionType.CloseTabThenDelete://删除
656
+ var deleteRow = response.content.split(',');
657
+ if (deleteRow) {
658
+ deleteRow.forEach((r) => {
659
+ const dataIndex = rtn.listData.indexOf(rtn.dataDictionary[r])
660
+ if (dataIndex !== -1) {
661
+ rtn.listData.splice(dataIndex, 1);
662
+ delete rtn.dataDictionary[r];
663
+ }
664
+ });
665
+ }
666
+
667
+ source.page.rows = source.page.rows - deleteRow.length;
668
+ break;
669
+ case Enum.ActionType.New://新增
670
+ case Enum.ActionType.CloseTabThenNew://新增
671
+
672
+ rtn.setStyleRow(response.content);
673
+ response.content.forEach((nr) => {
674
+ rtn.listData.unshift(nr);
675
+ });
676
+ rtn.dataDictionary = response.content;
677
+
678
+ source.page.rows = source.page.rows + response.content.length;
679
+ rtn.$vue.calculatingRowHeight()
680
+ break;
681
+ case Enum.ActionType.Update://修改
682
+ case Enum.ActionType.CloseTabThenUpdate://修改
683
+ response.content.forEach((row) => {
684
+ for (var vkey in row) {
685
+ rtn.dataDictionary[row[rtn.primaryKey]][vkey] = row[vkey];
686
+ }
687
+ });
688
+ break;
689
+ case Enum.ActionType.Export://导出
690
+ var fileName = response.content.fieldName1;
691
+ var fileContent = window.atob(response.content.code1);
692
+ common.saveFile(fileName, fileContent);
693
+ break;
694
+ case Enum.ActionType.Refersh://刷新
695
+ rtn.$vue.getPage(1);
696
+ break;
697
+ case Enum.ActionType.RefreshParent://刷新父页面
698
+ rtn.$vue.$emit('refreshParent');
699
+ break;
700
+ default:
701
+ break;
702
+ }
703
+ rtn.$vue.$forceUpdate();
704
+ },
705
+ //检查是否关闭tab后触发来源页面操作
706
+ checkCloseTabThen(notification) {
707
+ var rtn = false;
708
+ if (notification == Enum.ActionType.CloseTabThenDelete
709
+ || notification == Enum.ActionType.CloseTabThenNew
710
+ || notification == Enum.ActionType.CloseTabThenUpdate) {
711
+ rtn = true;
712
+ }
713
+ return rtn;
714
+ },
715
+ //设置多选按钮是否禁用
716
+ setButtonsDisabled() {
717
+ var selectData = rtn.getSelectRowData({ isMulti: 1 });
718
+ rtn._buttons.forEach((v) => {
719
+ if (v.isMulti) {
720
+ if (selectData != null && selectData.length > 0) {
721
+ v.disabled = false;
722
+ }
723
+ else {
724
+ v.disabled = true;
725
+ }
726
+ }
727
+ });
728
+ },
729
+ _scripts: null,
730
+ get scripts() {
731
+ if (rtn._scripts !== null) {
732
+ return rtn._scripts;
733
+ }
734
+ else {
735
+ if (typeof source.scripts !== 'undefined') {
736
+ rtn._scripts = base.common.eval(source.scripts);
737
+ return rtn._scripts;
738
+ }
739
+ else{
740
+ rtn._scripts={};
741
+ return rtn._scripts;
742
+ }
743
+ }
744
+ },
745
+ formData:formData,
746
+ };
747
+ if (rtn.template) {
748
+ var tempLoader = template.loader(rtn.template).default;
749
+ tempLoader.init(rtn);
750
+ }
751
+ rtn.dataDictionary = rtn.listData;
752
+ return rtn;
753
+ };
754
+ if (typeof data === 'string') {
755
+ var apiData = searchModel ? searchModel.searchData : {};
756
+ Vue.prototype.$api.postHandler(common.globalUri(), { action: data, para: { searchFields: apiData, pageAttribute: { pageIndex: 1 }, flagSearch: flagSearch } }).then(
757
+ function (response) {
758
+ if (response.rtnCode === Enum.ReturnCode.Successful) {
759
+ var rtn = init(response);
760
+ if (callBack) {
761
+ callBack(rtn);
762
+ }
763
+ }
764
+ }
765
+ );
766
+ }
767
+ else {
768
+ return init(data);
769
+ }
770
+ }
771
+
772
+ export default SearchTable;