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,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;