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,428 +1,428 @@
1
- import base from '../../index';
2
- import LibFunction from './lib/LibFunction';
3
- import common from '../../../common/index';
4
- import Router from './Router';
5
- import Enum from './lib/Enum';
6
- import Vue from 'vue';
7
-
8
- const FormList = function (source, master) {
9
- var rtn = {
10
- form: null,
11
- refField: Object,
12
- refFieldsLabel: Object,
13
- get id(){
14
- return source.name;
15
- },
16
- get type() {
17
- return master.controlType;
18
- },
19
- get label() {
20
- return master.dn || '';
21
- },
22
- get source() {
23
- return source;
24
- },
25
- get master() {
26
- return master;
27
- },
28
- get title() {
29
- return master.controlLabel || '';
30
- },
31
- get show() {
32
- if (typeof master.show !== "undefined") {
33
- return master.show;
34
- }
35
- return true;
36
- },
37
- get create() {
38
- return source.rightNew === true;
39
- },
40
- get required() {
41
- return master.required;
42
- },
43
- set required(v) {
44
- master.required = false;
45
- },
46
- get primaryKeys() {
47
- return source.primaryKeys;
48
- },
49
- //get rowEdit() {
50
- // return source.editMode !== true;
51
- //},
52
- get dialogEdit() {
53
- return source.editMode === 1;
54
- },
55
- get showSummary() {
56
- return source.totalCols.length > 0;
57
- },
58
- get totalColTitle() {
59
- return source.totalColTitle;
60
- },
61
- get totalCols() {
62
- return source.totalCols;
63
- },
64
- set tableDisabled(v) {
65
- source.disabled = v;
66
- },
67
- get tableDisabled() {
68
- return source.disabled || false;
69
- },
70
- getFormObj() {
71
- let rtnFormArr = [];
72
-
73
- for (let i = 1; i < rtn.rows.length; i++) {
74
- let rtnFormObj = {};
75
- rtn.rows[i].field.forEach((s) => {
76
- Object.assign(rtnFormObj, s.getFormObj());
77
- });
78
- rtnFormObj.flagDeleted = rtn.rows[i].deleted;
79
- rtnFormObj.flagNew = rtn.rows[i].isNewFlag;
80
- rtnFormArr.push(rtnFormObj);
81
- }
82
-
83
- let rtnObj = {};
84
- Object.defineProperty(rtnObj, master.fieldName1, {
85
- get: function () {
86
- return rtnFormArr;
87
- },
88
- enumerable: true,
89
- configurable: true
90
- });
91
- return rtnObj;
92
- },
93
- _buttons: null,
94
- get buttons() {
95
- if (rtn._buttons !== null) {
96
- return rtn._buttons;
97
- }
98
- else {
99
- rtn._buttons = [];
100
- if (source.actionRouters) {
101
- source.actionRouters.forEach((v) => {
102
- var button = Router(v);
103
- button.is = "ct-btn";
104
- rtn._buttons.push(button);
105
- });
106
- }
107
- return rtn._buttons;
108
- }
109
- },
110
- _rows:null,
111
- get rows() {
112
-
113
- if (this._rows) {
114
- return this._rows;
115
- }
116
- else {
117
- this._rows = [];
118
- //遍历每一行
119
- source.rows.forEach((r) => {
120
- var row = rtn.initRow(r);
121
- this._rows.push(row);
122
- });
123
- return this._rows;
124
- }
125
- },
126
- initRow(r) {
127
- var row = {
128
- field: [],
129
- isSet: false,
130
- get delete() {//删除权限
131
- return r.rightDelete === true;
132
- },
133
- get edit() {
134
- return r.rightEdit === true;
135
- },
136
- get deleted() {//是否已删除
137
- return r.flagDeleted === true;
138
- },
139
- set deleted(v) {
140
- if (v) {
141
- r.flagDeleted = true;
142
- }
143
- else {
144
- r.flagDeleted = false;
145
- }
146
- }
147
- };
148
- //遍历每一列
149
- let rowIndex = 0;
150
- //for (var key in source.fields) {
151
- r.columns.forEach((value) => {
152
- //let value = source.fields[key];
153
- value.onChanged = value.onChange ? value.onChange : source.rows[0].columns[rowIndex].onChanged;//事件使用第一条的
154
- value.onBlur = value.onBlur ? value.onBlur : source.rows[0].columns[rowIndex].onBlur;//事件使用第一条的
155
- rowIndex++;
156
- let item = LibFunction.GetControl(value, source, false, false);
157
- if (item instanceof Object) {
158
- item.form = rtn.form;
159
- row.field.push(item);
160
- }
161
- });
162
- //}
163
- return row;
164
- },
165
- currentRow: null,
166
- _tableData: undefined,
167
- get tableData() {
168
- if (this._tableData) {
169
- return this._tableData;
170
- }
171
- else {
172
- this._tableData = [];
173
- let rows = rtn.rows;
174
- let field = rtn.rows[0].field;
175
- var row = {};
176
- for (let i = 1; i < rows.length; i++) {//遍历每一行
177
- if (!rows[i].deleted) {
178
- row = {};
179
- //row['$sourceIndex'] = i;
180
- Vue.set(row, '$sourceIndex', i);
181
- for (let j = 0; j < rows[i].field.length; j++) {//遍历每一列
182
- //row[field[j].id] = rows[i].field[j];
183
- Vue.set(row, field[j].id, rows[i].field[j]);
184
- }
185
- //row.isSet = false;
186
- Vue.set(row, 'isSet', false);
187
- Vue.set(row, 'edit', rows[i].edit);
188
- Vue.set(row, 'delete', rows[i].delete);
189
- this._tableData.push(row);
190
- }
191
- }
192
-
193
- return this._tableData;
194
- }
195
- },
196
- _headerData: null,
197
- get headerData() {
198
- if (this._headerData) {
199
- return this._headerData;
200
- }
201
- else {
202
- var row = rtn.initRow(source.rows[0]);
203
- this._headerData = row;
204
-
205
- return this._headerData;
206
- }
207
- },
208
- getCloneRowData(index) {
209
- let row = {};
210
- let sourceRow = source.rows[index];
211
- let rowData = rtn.initRow(JSON.parse(JSON.stringify(sourceRow)));
212
- for (let j = 0; j < rowData.field.length; j++) {//遍历每一列
213
- row[rowData.field[j].id] = rowData.field[j];
214
- }
215
- row.$sourceIndex = index;
216
- return row;
217
- },
218
- fieldsToTableData(fields) {
219
- let row = {};
220
-
221
- fields.forEach(v => {
222
- row[v.fieldName1] = v;
223
- });
224
- return row;
225
- },
226
- rowsItemToTableData(rowsItem) {
227
- let row = {};
228
-
229
- rowsItem.field.forEach(v => {
230
- row[v.id] = v;
231
- });
232
- return row;
233
- },
234
- updateListField(refs, rowNum, fiedlId) {
235
- if (refs) {
236
- let ref = refs.find((v) => {
237
- return v.rowNum === rowNum && v.vmodel.id === fiedlId;
238
- });
239
- if (ref) {
240
- ref.$forceUpdate();
241
- }
242
- }
243
- },
244
- get formListChange() {
245
- return master.onChanged;
246
- },
247
- currentRowIndex: null,
248
- currentEventField: null,
249
- //是否是复制的
250
- isDuplicated(row, index) {
251
- let isDuplicated = false;
252
-
253
- if (rtn.primaryKeys && rtn.primaryKeys.length > 0) {
254
- for (let i = 1; i < source.rows.length; i++) {//遍历数据源的每一行
255
- let srow = source.rows[i].columns;
256
- if (!source.rows[i].flagDeleted) {//该行已删除,跳过
257
- if (index === -1 || i !== index) {
258
- let temp = 0;
259
- let tempLabel = '';
260
- for (let j = 0; j < srow.length; j++) {//遍历数据源每一列
261
- for (let a = 0; a < rtn.primaryKeys.length; a++) {//遍历组合唯一的字段
262
- let currentRow = row[rtn.primaryKeys[a]];
263
- if (srow[j].fieldName1 === rtn.primaryKeys[a] && srow[j].code1 === currentRow.value) {
264
- temp = ++temp;
265
- tempLabel = tempLabel + currentRow.label + ',';
266
- break;
267
- }
268
- }
269
-
270
- if (temp >= rtn.primaryKeys.length) {
271
- isDuplicated = true;
272
- Vue.prototype.$message.error('错误,字段:' + tempLabel + '已存在!');
273
- break;
274
- }
275
- }
276
- if (isDuplicated) {
277
- break;
278
- }
279
- }
280
- }
281
- }
282
- }
283
- return isDuplicated;
284
- },
285
- deleteRow(index, callback) {
286
- Vue.prototype.$common.confirm("确定删除?", "提示", {
287
- confirmButtonText: "确定",
288
- cancelButtonText: "取消",
289
- //type: 'warning'
290
- }).then(() => {
291
- if (rtn.rows[index].isNewFlag) {
292
- rtn.rows.splice(index, 1);
293
- source.rows.splice(index, 1);
294
- }
295
- else {
296
- rtn.rows[index].deleted = true;
297
- }
298
- callback();
299
- }).catch(() => {
300
- });
301
- },
302
- editRow(index, callback) {
303
- var self = this;
304
- var dialogOption = {
305
- title: '修改',
306
- pane: common.getParentPane(self),
307
- content: [{
308
- component: 'ct-form',
309
- attrs: {
310
- source: {
311
- scripts: source.scripts,
312
- parameterAction: self.OptApi,
313
- fields: JSON.parse(JSON.stringify(source.rows[index].columns)),
314
- colSpan: 1,
315
- buttons: [
316
- {
317
- "key": "test1",
318
- "text": "提交",
319
- "buttonType": Enum.ButtonType.Submit
320
- }
321
- ]
322
- },
323
- width:'500px',
324
- height: '400px'
325
- },
326
- on: {
327
- submit: function (ev) {
328
- //var row = rtn.rows[index];
329
- //var row = rtn.rows[index].field;
330
- var row = source.rows[index].columns;
331
- let isRepeat = rtn.isDuplicated(rtn.fieldsToTableData(ev.formData.source.fields), index);
332
-
333
- if (!isRepeat) {
334
- for (let findex = 0; findex < row.length; findex++) {//循环所在行的列
335
- //let field = row[findex];
336
- //field.value = ev.formData.source.Fields[findex].code1;
337
- //field.value1 = field.text = ev.formData.source.Fields[findex].v2;
338
-
339
- //Vue.set(row[findex], 'value', ev.formData.source.Fields[findex].code1);
340
- //Vue.set(row[findex], 'value1', ev.formData.source.Fields[findex].v2);
341
- Vue.set(row[findex], 'code1', ev.formData.source.fields[findex].code1);
342
- Vue.set(row[findex], 'name1', ev.formData.source.fields[findex].name1);
343
- }
344
-
345
- common.closeDialog(dialogOption.dialog);
346
- callback();
347
- }
348
- }
349
- }
350
- }]
351
- };
352
- common.openDialog(dialogOption);
353
- },
354
- addSourceRow(row) {
355
- //let sourceRow = JSON.parse(JSON.stringify(source.Rows[0]));
356
- let sourceRow = JSON.parse(JSON.stringify(source.rows[0]));
357
- for (let k in sourceRow.columns) {
358
- //sourceRow.Row[k] = row.field[k].source;
359
- sourceRow.columns[k] = row[sourceRow.columns[k].fieldName1].source;
360
- sourceRow.columns[k] = row[sourceRow.columns[k].fieldName1].source;
361
- };
362
- source.rows.push(sourceRow);
363
- let iRow = this.initRow(sourceRow);
364
- iRow.isNewFlag = true;
365
- rtn._rows.push(iRow);
366
- Vue.set(row, 'edit', iRow.edit);
367
- Vue.set(row, 'delete', iRow.delete);
368
- row.$sourceIndex = rtn._rows.length - 1;
369
- },
370
- addRow(callback) {
371
- var self = this;
372
- var dialogOption = {
373
- title: '新增',
374
- pane: common.getParentPane(self),
375
- content: [{
376
- component: 'ct-form',
377
- attrs: {
378
- source: {
379
- scripts: source.scripts,
380
- parameterAction: self.OptApi,
381
- fields: JSON.parse(JSON.stringify(source.rows[0].columns)),
382
- colSpan: 1,
383
- buttons: [
384
- {
385
- "key": "test1",
386
- "text": "提交",
387
- "buttonType": Enum.ButtonType.Submit
388
- }
389
- ]
390
- },
391
- width: '500px',
392
- height: '400px'
393
- },
394
- on: {
395
- submit: function (ev) {
396
- var row = JSON.parse(JSON.stringify(source.rows[0]));
397
- for (let findex = 0; findex < row.columns.length; findex++) {
398
- let field = row.columns[findex];
399
- field.code1 = ev.formData.source.fields[findex].code1;
400
- field.name1 = ev.formData.source.fields[findex].name1;
401
- }
402
-
403
- let rowItem = rtn.initRow(row);
404
- let rowData = rtn.rowsItemToTableData(rowItem)
405
- let isRepeat = rtn.isDuplicated(rowData, -1);
406
- if (!isRepeat) {
407
- source.rows.push(row);
408
- rtn.rows.push(rowItem);
409
-
410
- rowData.$sourceIndex = source.rows.length - 1;
411
-
412
- rowData.edit = rowItem.edit;
413
- rowData.delete = rowItem.delete;
414
- rowItem.isNewFlag = true;
415
- rtn._tableData.push(rowData);
416
- common.closeDialog(dialogOption.dialog);
417
- callback();
418
- }
419
- }
420
- }
421
- }]
422
- };
423
- common.openDialog(dialogOption);
424
- }
425
- };
426
- return rtn;
427
- };
428
- export default FormList;
1
+ import base from '../../index';
2
+ import LibFunction from './lib/LibFunction';
3
+ import common from '../../../common/index';
4
+ import Router from './Router';
5
+ import Enum from './lib/Enum';
6
+ import Vue from 'vue';
7
+
8
+ const FormList = function (source, master) {
9
+ var rtn = {
10
+ form: null,
11
+ refField: Object,
12
+ refFieldsLabel: Object,
13
+ get id(){
14
+ return source.name;
15
+ },
16
+ get type() {
17
+ return master.controlType;
18
+ },
19
+ get label() {
20
+ return master.dn || '';
21
+ },
22
+ get source() {
23
+ return source;
24
+ },
25
+ get master() {
26
+ return master;
27
+ },
28
+ get title() {
29
+ return master.controlLabel || '';
30
+ },
31
+ get show() {
32
+ if (typeof master.show !== "undefined") {
33
+ return master.show;
34
+ }
35
+ return true;
36
+ },
37
+ get create() {
38
+ return source.rightNew === true;
39
+ },
40
+ get required() {
41
+ return master.required;
42
+ },
43
+ set required(v) {
44
+ master.required = false;
45
+ },
46
+ get primaryKeys() {
47
+ return source.primaryKeys;
48
+ },
49
+ //get rowEdit() {
50
+ // return source.editMode !== true;
51
+ //},
52
+ get dialogEdit() {
53
+ return source.editMode === 1;
54
+ },
55
+ get showSummary() {
56
+ return source.totalCols.length > 0;
57
+ },
58
+ get totalColTitle() {
59
+ return source.totalColTitle;
60
+ },
61
+ get totalCols() {
62
+ return source.totalCols;
63
+ },
64
+ set tableDisabled(v) {
65
+ source.disabled = v;
66
+ },
67
+ get tableDisabled() {
68
+ return source.disabled || false;
69
+ },
70
+ getFormObj() {
71
+ let rtnFormArr = [];
72
+
73
+ for (let i = 1; i < rtn.rows.length; i++) {
74
+ let rtnFormObj = {};
75
+ rtn.rows[i].field.forEach((s) => {
76
+ Object.assign(rtnFormObj, s.getFormObj());
77
+ });
78
+ rtnFormObj.flagDeleted = rtn.rows[i].deleted;
79
+ rtnFormObj.flagNew = rtn.rows[i].isNewFlag;
80
+ rtnFormArr.push(rtnFormObj);
81
+ }
82
+
83
+ let rtnObj = {};
84
+ Object.defineProperty(rtnObj, master.fieldName1, {
85
+ get: function () {
86
+ return rtnFormArr;
87
+ },
88
+ enumerable: true,
89
+ configurable: true
90
+ });
91
+ return rtnObj;
92
+ },
93
+ _buttons: null,
94
+ get buttons() {
95
+ if (rtn._buttons !== null) {
96
+ return rtn._buttons;
97
+ }
98
+ else {
99
+ rtn._buttons = [];
100
+ if (source.actionRouters) {
101
+ source.actionRouters.forEach((v) => {
102
+ var button = Router(v);
103
+ button.is = "ct-btn";
104
+ rtn._buttons.push(button);
105
+ });
106
+ }
107
+ return rtn._buttons;
108
+ }
109
+ },
110
+ _rows:null,
111
+ get rows() {
112
+
113
+ if (this._rows) {
114
+ return this._rows;
115
+ }
116
+ else {
117
+ this._rows = [];
118
+ //遍历每一行
119
+ source.rows.forEach((r) => {
120
+ var row = rtn.initRow(r);
121
+ this._rows.push(row);
122
+ });
123
+ return this._rows;
124
+ }
125
+ },
126
+ initRow(r) {
127
+ var row = {
128
+ field: [],
129
+ isSet: false,
130
+ get delete() {//删除权限
131
+ return r.rightDelete === true;
132
+ },
133
+ get edit() {
134
+ return r.rightEdit === true;
135
+ },
136
+ get deleted() {//是否已删除
137
+ return r.flagDeleted === true;
138
+ },
139
+ set deleted(v) {
140
+ if (v) {
141
+ r.flagDeleted = true;
142
+ }
143
+ else {
144
+ r.flagDeleted = false;
145
+ }
146
+ }
147
+ };
148
+ //遍历每一列
149
+ let rowIndex = 0;
150
+ //for (var key in source.fields) {
151
+ r.columns.forEach((value) => {
152
+ //let value = source.fields[key];
153
+ value.onChanged = value.onChange ? value.onChange : source.rows[0].columns[rowIndex].onChanged;//事件使用第一条的
154
+ value.onBlur = value.onBlur ? value.onBlur : source.rows[0].columns[rowIndex].onBlur;//事件使用第一条的
155
+ rowIndex++;
156
+ let item = LibFunction.GetControl(value, source, false, false);
157
+ if (item instanceof Object) {
158
+ item.form = rtn.form;
159
+ row.field.push(item);
160
+ }
161
+ });
162
+ //}
163
+ return row;
164
+ },
165
+ currentRow: null,
166
+ _tableData: undefined,
167
+ get tableData() {
168
+ if (this._tableData) {
169
+ return this._tableData;
170
+ }
171
+ else {
172
+ this._tableData = [];
173
+ let rows = rtn.rows;
174
+ let field = rtn.rows[0].field;
175
+ var row = {};
176
+ for (let i = 1; i < rows.length; i++) {//遍历每一行
177
+ if (!rows[i].deleted) {
178
+ row = {};
179
+ //row['$sourceIndex'] = i;
180
+ Vue.set(row, '$sourceIndex', i);
181
+ for (let j = 0; j < rows[i].field.length; j++) {//遍历每一列
182
+ //row[field[j].id] = rows[i].field[j];
183
+ Vue.set(row, field[j].id, rows[i].field[j]);
184
+ }
185
+ //row.isSet = false;
186
+ Vue.set(row, 'isSet', false);
187
+ Vue.set(row, 'edit', rows[i].edit);
188
+ Vue.set(row, 'delete', rows[i].delete);
189
+ this._tableData.push(row);
190
+ }
191
+ }
192
+
193
+ return this._tableData;
194
+ }
195
+ },
196
+ _headerData: null,
197
+ get headerData() {
198
+ if (this._headerData) {
199
+ return this._headerData;
200
+ }
201
+ else {
202
+ var row = rtn.initRow(source.rows[0]);
203
+ this._headerData = row;
204
+
205
+ return this._headerData;
206
+ }
207
+ },
208
+ getCloneRowData(index) {
209
+ let row = {};
210
+ let sourceRow = source.rows[index];
211
+ let rowData = rtn.initRow(JSON.parse(JSON.stringify(sourceRow)));
212
+ for (let j = 0; j < rowData.field.length; j++) {//遍历每一列
213
+ row[rowData.field[j].id] = rowData.field[j];
214
+ }
215
+ row.$sourceIndex = index;
216
+ return row;
217
+ },
218
+ fieldsToTableData(fields) {
219
+ let row = {};
220
+
221
+ fields.forEach(v => {
222
+ row[v.fieldName1] = v;
223
+ });
224
+ return row;
225
+ },
226
+ rowsItemToTableData(rowsItem) {
227
+ let row = {};
228
+
229
+ rowsItem.field.forEach(v => {
230
+ row[v.id] = v;
231
+ });
232
+ return row;
233
+ },
234
+ updateListField(refs, rowNum, fiedlId) {
235
+ if (refs) {
236
+ let ref = refs.find((v) => {
237
+ return v.rowNum === rowNum && v.vmodel.id === fiedlId;
238
+ });
239
+ if (ref) {
240
+ ref.$forceUpdate();
241
+ }
242
+ }
243
+ },
244
+ get formListChange() {
245
+ return master.onChanged;
246
+ },
247
+ currentRowIndex: null,
248
+ currentEventField: null,
249
+ //是否是复制的
250
+ isDuplicated(row, index) {
251
+ let isDuplicated = false;
252
+
253
+ if (rtn.primaryKeys && rtn.primaryKeys.length > 0) {
254
+ for (let i = 1; i < source.rows.length; i++) {//遍历数据源的每一行
255
+ let srow = source.rows[i].columns;
256
+ if (!source.rows[i].flagDeleted) {//该行已删除,跳过
257
+ if (index === -1 || i !== index) {
258
+ let temp = 0;
259
+ let tempLabel = '';
260
+ for (let j = 0; j < srow.length; j++) {//遍历数据源每一列
261
+ for (let a = 0; a < rtn.primaryKeys.length; a++) {//遍历组合唯一的字段
262
+ let currentRow = row[rtn.primaryKeys[a]];
263
+ if (srow[j].fieldName1 === rtn.primaryKeys[a] && srow[j].code1 === currentRow.value) {
264
+ temp = ++temp;
265
+ tempLabel = tempLabel + currentRow.label + ',';
266
+ break;
267
+ }
268
+ }
269
+
270
+ if (temp >= rtn.primaryKeys.length) {
271
+ isDuplicated = true;
272
+ Vue.prototype.$message.error('错误,字段:' + tempLabel + '已存在!');
273
+ break;
274
+ }
275
+ }
276
+ if (isDuplicated) {
277
+ break;
278
+ }
279
+ }
280
+ }
281
+ }
282
+ }
283
+ return isDuplicated;
284
+ },
285
+ deleteRow(index, callback) {
286
+ Vue.prototype.$common.confirm("确定删除?", "提示", {
287
+ confirmButtonText: "确定",
288
+ cancelButtonText: "取消",
289
+ //type: 'warning'
290
+ }).then(() => {
291
+ if (rtn.rows[index].isNewFlag) {
292
+ rtn.rows.splice(index, 1);
293
+ source.rows.splice(index, 1);
294
+ }
295
+ else {
296
+ rtn.rows[index].deleted = true;
297
+ }
298
+ callback();
299
+ }).catch(() => {
300
+ });
301
+ },
302
+ editRow(index, callback) {
303
+ var self = this;
304
+ var dialogOption = {
305
+ title: '修改',
306
+ pane: common.getParentPane(self),
307
+ content: [{
308
+ component: 'ct-form',
309
+ attrs: {
310
+ source: {
311
+ scripts: source.scripts,
312
+ parameterAction: self.OptApi,
313
+ fields: JSON.parse(JSON.stringify(source.rows[index].columns)),
314
+ colSpan: 1,
315
+ buttons: [
316
+ {
317
+ "key": "test1",
318
+ "text": "提交",
319
+ "buttonType": Enum.ButtonType.Submit
320
+ }
321
+ ]
322
+ },
323
+ width:'500px',
324
+ height: '400px'
325
+ },
326
+ on: {
327
+ submit: function (ev) {
328
+ //var row = rtn.rows[index];
329
+ //var row = rtn.rows[index].field;
330
+ var row = source.rows[index].columns;
331
+ let isRepeat = rtn.isDuplicated(rtn.fieldsToTableData(ev.formData.source.fields), index);
332
+
333
+ if (!isRepeat) {
334
+ for (let findex = 0; findex < row.length; findex++) {//循环所在行的列
335
+ //let field = row[findex];
336
+ //field.value = ev.formData.source.Fields[findex].code1;
337
+ //field.value1 = field.text = ev.formData.source.Fields[findex].v2;
338
+
339
+ //Vue.set(row[findex], 'value', ev.formData.source.Fields[findex].code1);
340
+ //Vue.set(row[findex], 'value1', ev.formData.source.Fields[findex].v2);
341
+ Vue.set(row[findex], 'code1', ev.formData.source.fields[findex].code1);
342
+ Vue.set(row[findex], 'name1', ev.formData.source.fields[findex].name1);
343
+ }
344
+
345
+ common.closeDialog(dialogOption.dialog);
346
+ callback();
347
+ }
348
+ }
349
+ }
350
+ }]
351
+ };
352
+ common.openDialog(dialogOption);
353
+ },
354
+ addSourceRow(row) {
355
+ //let sourceRow = JSON.parse(JSON.stringify(source.Rows[0]));
356
+ let sourceRow = JSON.parse(JSON.stringify(source.rows[0]));
357
+ for (let k in sourceRow.columns) {
358
+ //sourceRow.Row[k] = row.field[k].source;
359
+ sourceRow.columns[k] = row[sourceRow.columns[k].fieldName1].source;
360
+ sourceRow.columns[k] = row[sourceRow.columns[k].fieldName1].source;
361
+ };
362
+ source.rows.push(sourceRow);
363
+ let iRow = this.initRow(sourceRow);
364
+ iRow.isNewFlag = true;
365
+ rtn._rows.push(iRow);
366
+ Vue.set(row, 'edit', iRow.edit);
367
+ Vue.set(row, 'delete', iRow.delete);
368
+ row.$sourceIndex = rtn._rows.length - 1;
369
+ },
370
+ addRow(callback) {
371
+ var self = this;
372
+ var dialogOption = {
373
+ title: '新增',
374
+ pane: common.getParentPane(self),
375
+ content: [{
376
+ component: 'ct-form',
377
+ attrs: {
378
+ source: {
379
+ scripts: source.scripts,
380
+ parameterAction: self.OptApi,
381
+ fields: JSON.parse(JSON.stringify(source.rows[0].columns)),
382
+ colSpan: 1,
383
+ buttons: [
384
+ {
385
+ "key": "test1",
386
+ "text": "提交",
387
+ "buttonType": Enum.ButtonType.Submit
388
+ }
389
+ ]
390
+ },
391
+ width: '500px',
392
+ height: '400px'
393
+ },
394
+ on: {
395
+ submit: function (ev) {
396
+ var row = JSON.parse(JSON.stringify(source.rows[0]));
397
+ for (let findex = 0; findex < row.columns.length; findex++) {
398
+ let field = row.columns[findex];
399
+ field.code1 = ev.formData.source.fields[findex].code1;
400
+ field.name1 = ev.formData.source.fields[findex].name1;
401
+ }
402
+
403
+ let rowItem = rtn.initRow(row);
404
+ let rowData = rtn.rowsItemToTableData(rowItem)
405
+ let isRepeat = rtn.isDuplicated(rowData, -1);
406
+ if (!isRepeat) {
407
+ source.rows.push(row);
408
+ rtn.rows.push(rowItem);
409
+
410
+ rowData.$sourceIndex = source.rows.length - 1;
411
+
412
+ rowData.edit = rowItem.edit;
413
+ rowData.delete = rowItem.delete;
414
+ rowItem.isNewFlag = true;
415
+ rtn._tableData.push(rowData);
416
+ common.closeDialog(dialogOption.dialog);
417
+ callback();
418
+ }
419
+ }
420
+ }
421
+ }]
422
+ };
423
+ common.openDialog(dialogOption);
424
+ }
425
+ };
426
+ return rtn;
427
+ };
428
+ export default FormList;