centaline-data-driven 1.1.55 → 1.1.59

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 (202) 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/.vs/Centaline.Front_End.DataDriven/DesignTimeBuild/.dtbcache +0 -0
  6. package/.vs/Centaline.Front_End.DataDriven/v16/Server/sqlite3/db.lock +0 -0
  7. package/.vs/Centaline.Front_End.DataDriven/v16/Server/sqlite3/storage.ide +0 -0
  8. package/Centaline.Front_End.DataDriven.csproj +37 -37
  9. package/Centaline.Front_End.DataDriven.sln +25 -25
  10. package/Properties/launchSettings.json +26 -26
  11. package/README.md +140 -140
  12. package/build/build.js +41 -41
  13. package/build/centaline/centaline.path.js +59 -59
  14. package/build/centaline/webpack.centaline.conf.js +106 -106
  15. package/build/check-versions.js +54 -54
  16. package/build/utils.js +102 -102
  17. package/build/vue-loader.conf.js +22 -22
  18. package/build/webpack.base.conf.js +82 -82
  19. package/build/webpack.dev.conf.js +111 -111
  20. package/build/webpack.prod.conf.js +145 -145
  21. package/config/dev.env.js +12 -12
  22. package/config/index.js +73 -73
  23. package/config/prod.env.js +4 -4
  24. package/index.html +14 -14
  25. package/obj/Centaline.Front_End.DataDriven.csproj.nuget.dgspec.json +73 -0
  26. package/obj/Centaline.Front_End.DataDriven.csproj.nuget.g.props +29 -0
  27. package/obj/Centaline.Front_End.DataDriven.csproj.nuget.g.targets +15 -0
  28. package/obj/Debug/netcoreapp2.1/Centaline.Front_End.DataDriven.AssemblyInfo.cs +23 -0
  29. package/obj/Debug/netcoreapp2.1/Centaline.Front_End.DataDriven.RazorAssemblyInfo.cs +20 -0
  30. package/obj/project.assets.json +11907 -0
  31. package/package.json +75 -75
  32. package/src/App.vue +10 -10
  33. package/src/Detail.vue +29 -26
  34. package/src/Edit.vue +32 -32
  35. package/src/Form.vue +45 -29
  36. package/src/SearchList.vue +41 -40
  37. package/src/SearchTree.vue +51 -51
  38. package/src/Tabs.vue +19 -19
  39. package/src/centaline/api/index.js +249 -249
  40. package/src/centaline/comfirm/index.js +11 -11
  41. package/src/centaline/comfirm/src/comfirm.vue +44 -44
  42. package/src/centaline/common/index.js +738 -738
  43. package/src/centaline/css/common.css +752 -748
  44. package/src/centaline/css/max.css +208 -208
  45. package/src/centaline/dialogList/index.js +11 -11
  46. package/src/centaline/dialogList/src/dialog.vue +210 -210
  47. package/src/centaline/dialogList/src/dialogList.vue +65 -65
  48. package/src/centaline/dialogList/src/dialogNew.vue +78 -78
  49. package/src/centaline/dialogList/src/drag.js +77 -77
  50. package/src/centaline/directives/index.js +23 -23
  51. package/src/centaline/dynamicBtn/index.js +11 -11
  52. package/src/centaline/dynamicBtn/src/dynamicBtn.vue +100 -100
  53. package/src/centaline/dynamicCb/index.js +11 -11
  54. package/src/centaline/dynamicCb/src/dynamicCb.vue +72 -72
  55. package/src/centaline/dynamicCheckbox/index.js +11 -11
  56. package/src/centaline/dynamicCheckbox/src/dynamicCheckbox.vue +128 -128
  57. package/src/centaline/dynamicComboBoxWithTextBox/index.js +11 -11
  58. package/src/centaline/dynamicComboBoxWithTextBox/src/dynamicComboBoxWithTextBox.vue +240 -240
  59. package/src/centaline/dynamicD/index.js +11 -11
  60. package/src/centaline/dynamicD/src/dynamicD.vue +92 -92
  61. package/src/centaline/dynamicDetail/index.js +10 -10
  62. package/src/centaline/dynamicDetail/src/dynamicDetail.vue +40 -40
  63. package/src/centaline/dynamicDetail/src/dynamicPropertyDetailOFI.vue +1280 -1280
  64. package/src/centaline/dynamicDetail/src/dynamicPropertyDetailRET.vue +1346 -1293
  65. package/src/centaline/dynamicDrop/index.js +11 -11
  66. package/src/centaline/dynamicDrop/src/dynamicDrop.vue +54 -54
  67. package/src/centaline/dynamicDtd/index.js +11 -11
  68. package/src/centaline/dynamicDtd/src/dynamicDtd.vue +125 -125
  69. package/src/centaline/dynamicDtd/src/dynamicDtdOld.vue +93 -93
  70. package/src/centaline/dynamicFile/index.js +11 -11
  71. package/src/centaline/dynamicFile/src/dynamicFile.vue +289 -288
  72. package/src/centaline/dynamicForm/index.js +24 -24
  73. package/src/centaline/dynamicForm/src/dynamicForm.vue +564 -564
  74. package/src/centaline/dynamicForm/src/dynamicFormList.vue +209 -209
  75. package/src/centaline/dynamicForm/src/dynamicFormListTable.vue +376 -376
  76. package/src/centaline/dynamicGp/index.js +11 -11
  77. package/src/centaline/dynamicGp/src/dynamicGp.vue +27 -27
  78. package/src/centaline/dynamicHyperLink/index.js +10 -10
  79. package/src/centaline/dynamicHyperLink/src/dynamicHyperLink.vue +54 -54
  80. package/src/centaline/dynamicInput/index.js +35 -35
  81. package/src/centaline/dynamicInput/src/dynamicInput.vue +35 -35
  82. package/src/centaline/dynamicInputNumber/index.js +11 -11
  83. package/src/centaline/dynamicInputNumber/src/dynamicInputNumber.vue +157 -157
  84. package/src/centaline/dynamicIti/index.js +11 -11
  85. package/src/centaline/dynamicIti/src/dynamicIti.vue +148 -148
  86. package/src/centaline/dynamicL/index.js +11 -11
  87. package/src/centaline/dynamicL/src/dynamicL.vue +37 -37
  88. package/src/centaline/dynamicLabel/index.js +11 -11
  89. package/src/centaline/dynamicLabel/src/dynamicLabel.vue +73 -73
  90. package/src/centaline/dynamicLs/index.js +22 -22
  91. package/src/centaline/dynamicLs/src/dynamicLs.vue +233 -233
  92. package/src/centaline/dynamicMo/index.js +13 -13
  93. package/src/centaline/dynamicMo/src/dynamicMo.vue +421 -421
  94. package/src/centaline/dynamicMt/index.js +11 -11
  95. package/src/centaline/dynamicMt/src/dynamicMt.vue +44 -44
  96. package/src/centaline/dynamicPlaceHolder/index.js +10 -10
  97. package/src/centaline/dynamicPlaceHolder/src/dynamicPlaceHolder.vue +29 -29
  98. package/src/centaline/dynamicPopupSearchList/index.js +11 -11
  99. package/src/centaline/dynamicPopupSearchList/src/dynamicPopupSearchList.vue +157 -157
  100. package/src/centaline/dynamicPopupSearchList/src/dynamicPopupSearchListTable.vue +239 -239
  101. package/src/centaline/dynamicRichText/index.js +11 -11
  102. package/src/centaline/dynamicRichText/src/dynamicRichText.vue +33 -33
  103. package/src/centaline/dynamicSearchList/index.js +11 -11
  104. package/src/centaline/dynamicSearchList/src/dynamicSearchCategory.vue +121 -121
  105. package/src/centaline/dynamicSearchList/src/dynamicSearchList.vue +135 -135
  106. package/src/centaline/dynamicSearchList/src/dynamicSearchScreen.vue +206 -206
  107. package/src/centaline/dynamicSearchList/src/dynamicSearchTable.vue +1082 -1069
  108. package/src/centaline/dynamicSearchList/src/dynamicTableStatistics.vue +30 -30
  109. package/src/centaline/dynamicSearchList/src/dynamicTableTip.vue +46 -46
  110. package/src/centaline/dynamicSearchList/src/dynamicTableToolbar.vue +61 -61
  111. package/src/centaline/dynamicSeg/index.js +11 -11
  112. package/src/centaline/dynamicSeg/src/dynamicSeg.vue +100 -100
  113. package/src/centaline/dynamicSensitiveEye/index.js +11 -11
  114. package/src/centaline/dynamicSensitiveEye/src/dynamicSensitiveEye.vue +74 -74
  115. package/src/centaline/dynamicSo/index.js +14 -14
  116. package/src/centaline/dynamicSo/src/dynamicSo.vue +329 -328
  117. package/src/centaline/dynamicSo/src/dynamicSo/345/211/257/346/234/254.vue +69 -69
  118. package/src/centaline/dynamicSos/index.js +14 -14
  119. package/src/centaline/dynamicSos/src/dynamicSos - /345/244/215/345/210/266.vue" +223 -223
  120. package/src/centaline/dynamicSos/src/dynamicSos.vue +261 -260
  121. package/src/centaline/dynamicSw/index.js +11 -11
  122. package/src/centaline/dynamicSw/src/dynamicSw.vue +74 -74
  123. package/src/centaline/dynamicT/index.js +11 -11
  124. package/src/centaline/dynamicT/src/dynamicT.vue +79 -79
  125. package/src/centaline/dynamicTab/index.js +11 -11
  126. package/src/centaline/dynamicTab/src/dynamicTab.vue +49 -49
  127. package/src/centaline/dynamicTabs/index.js +11 -11
  128. package/src/centaline/dynamicTabs/src/dynamicTabs.vue +69 -69
  129. package/src/centaline/dynamicTags/index.js +13 -13
  130. package/src/centaline/dynamicTags/src/dynamicTags - /345/244/215/345/210/266.vue" +391 -391
  131. package/src/centaline/dynamicTags/src/dynamicTags.vue +427 -427
  132. package/src/centaline/dynamicTimeSelect/index.js +11 -11
  133. package/src/centaline/dynamicTimeSelect/src/dynamicTimeSelect.vue +141 -141
  134. package/src/centaline/dynamicTree/index.js +11 -11
  135. package/src/centaline/dynamicTree/src/dynamicSearchTree.vue +66 -66
  136. package/src/centaline/dynamicTree/src/dynamicTree.vue +233 -233
  137. package/src/centaline/dynamicTree/src/dynamicTreeList.vue +74 -74
  138. package/src/centaline/formData/index.js +290 -290
  139. package/src/centaline/imgPreview/index.js +42 -42
  140. package/src/centaline/imgPreview/src/imgPreview.vue +26 -26
  141. package/src/centaline/index.js +51 -51
  142. package/src/centaline/loader/index.js +157 -157
  143. package/src/centaline/loader/src/ctl/Base.js +270 -261
  144. package/src/centaline/loader/src/ctl/Button.js +44 -44
  145. package/src/centaline/loader/src/ctl/Cb.js +27 -27
  146. package/src/centaline/loader/src/ctl/Checkbox.js +107 -107
  147. package/src/centaline/loader/src/ctl/ComboBoxWithTextBox.js +162 -162
  148. package/src/centaline/loader/src/ctl/D.js +31 -31
  149. package/src/centaline/loader/src/ctl/Detail.js +228 -175
  150. package/src/centaline/loader/src/ctl/Dtd.js +115 -115
  151. package/src/centaline/loader/src/ctl/DtdOld.js +129 -129
  152. package/src/centaline/loader/src/ctl/File.js +292 -292
  153. package/src/centaline/loader/src/ctl/Form.js +380 -380
  154. package/src/centaline/loader/src/ctl/FormList.js +428 -428
  155. package/src/centaline/loader/src/ctl/GM.js +20 -20
  156. package/src/centaline/loader/src/ctl/Gp.js +9 -9
  157. package/src/centaline/loader/src/ctl/Hd.js +13 -13
  158. package/src/centaline/loader/src/ctl/HyperLink.js +24 -24
  159. package/src/centaline/loader/src/ctl/InputNumber.js +51 -51
  160. package/src/centaline/loader/src/ctl/Iti.js +108 -108
  161. package/src/centaline/loader/src/ctl/L.js +18 -18
  162. package/src/centaline/loader/src/ctl/Mo.js +183 -183
  163. package/src/centaline/loader/src/ctl/Mt.js +20 -20
  164. package/src/centaline/loader/src/ctl/PlaceHolder.js +15 -15
  165. package/src/centaline/loader/src/ctl/Router.js +273 -273
  166. package/src/centaline/loader/src/ctl/SearchCategory.js +54 -54
  167. package/src/centaline/loader/src/ctl/SearchScreen.js +236 -236
  168. package/src/centaline/loader/src/ctl/SearchTable.js +787 -772
  169. package/src/centaline/loader/src/ctl/Seg.js +37 -37
  170. package/src/centaline/loader/src/ctl/SensitiveEye.js +65 -65
  171. package/src/centaline/loader/src/ctl/So.js +117 -117
  172. package/src/centaline/loader/src/ctl/Sos.js +128 -128
  173. package/src/centaline/loader/src/ctl/Sw.js +27 -27
  174. package/src/centaline/loader/src/ctl/T.js +65 -65
  175. package/src/centaline/loader/src/ctl/Tabs.js +57 -57
  176. package/src/centaline/loader/src/ctl/Tags.js +191 -191
  177. package/src/centaline/loader/src/ctl/TimeSelect.js +87 -87
  178. package/src/centaline/loader/src/ctl/Tree.js +151 -151
  179. package/src/centaline/loader/src/ctl/Ttts.js +78 -78
  180. package/src/centaline/loader/src/ctl/lib/Enum.js +580 -563
  181. package/src/centaline/loader/src/ctl/lib/LibFunction.js +364 -364
  182. package/src/centaline/loader/src/ctl.js +36 -36
  183. package/src/centaline/mixins/dynamicElement.js +151 -151
  184. package/src/centaline/mixins/dynamicSelect.js +84 -84
  185. package/src/centaline/mixins/emitter.js +33 -33
  186. package/src/centaline/progress/index.js +11 -11
  187. package/src/centaline/progress/src/progress.vue +70 -70
  188. package/src/centaline/quickInput/src/quickInput.vue +64 -64
  189. package/src/centaline/selectOption/src/selectOption.vue +61 -61
  190. package/src/centaline/selectOption/src/selectOptionVertical.vue +80 -80
  191. package/src/centaline/templateControls/index.js +17 -17
  192. package/src/centaline/templateControls/src/dynamicTableA.vue +20 -20
  193. package/src/centaline/templateControls/src/dynamicTableCurrency.vue +62 -62
  194. package/src/centaline/templateControls/src/dynamicTableImg.vue +25 -25
  195. package/src/centaline/templates/index.js +34 -34
  196. package/src/centaline/templates/src/ContractSearch.js +67 -67
  197. package/src/centaline/templates/src/test.js +44 -44
  198. package/src/centaline/validate/index.js +332 -332
  199. package/src/main.js +55 -46
  200. package/src/router/index.js +44 -44
  201. package/wwwroot/static/centaline/centaline-data-driven.js +1 -1
  202. package/wwwroot/static/centaline/centaline-data-driven.js.map +1 -1
@@ -1,772 +1,787 @@
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
+ get tdClass() {
747
+ let c='';
748
+ if (source.content.lineType !== undefined && source.content.lineType !== null) {
749
+ if (source.content.lineType===Enum.LineType.Vertical) {
750
+ c='ct-td1';
751
+ }
752
+ else if (source.content.lineType===Enum.LineType.Horizon) {
753
+ c='ct-td2';
754
+ }
755
+ else if (source.content.lineType===Enum.LineType.Both) {
756
+ c='ct-td3';
757
+ }
758
+ }
759
+ return c;
760
+ },
761
+ };
762
+ if (rtn.template) {
763
+ var tempLoader = template.loader(rtn.template).default;
764
+ tempLoader.init(rtn);
765
+ }
766
+ rtn.dataDictionary = rtn.listData;
767
+ return rtn;
768
+ };
769
+ if (typeof data === 'string') {
770
+ var apiData = searchModel ? searchModel.searchData : {};
771
+ Vue.prototype.$api.postHandler(common.globalUri(), { action: data, para: { searchFields: apiData, pageAttribute: { pageIndex: 1 }, flagSearch: flagSearch } }).then(
772
+ function (response) {
773
+ if (response.rtnCode === Enum.ReturnCode.Successful) {
774
+ var rtn = init(response);
775
+ if (callBack) {
776
+ callBack(rtn);
777
+ }
778
+ }
779
+ }
780
+ );
781
+ }
782
+ else {
783
+ return init(data);
784
+ }
785
+ }
786
+
787
+ export default SearchTable;