bri-components 1.5.13 → 1.5.15

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 (151) hide show
  1. package/README.md +83 -83
  2. package/lib/0.bri-components.min.js +1 -1
  3. package/lib/1.bri-components.min.js +1 -1
  4. package/lib/10.bri-components.min.js +1 -1
  5. package/lib/2.bri-components.min.js +1 -1
  6. package/lib/3.bri-components.min.js +1 -1
  7. package/lib/4.bri-components.min.js +1 -1
  8. package/lib/5.bri-components.min.js +1 -1
  9. package/lib/6.bri-components.min.js +1 -1
  10. package/lib/7.bri-components.min.js +1 -1
  11. package/lib/8.bri-components.min.js +1 -1
  12. package/lib/9.bri-components.min.js +1 -1
  13. package/lib/bri-components.min.js +4 -4
  14. package/lib/styles/bundle.css +12 -12
  15. package/lib/styles/font/fontello.svg +31 -31
  16. package/package.json +125 -125
  17. package/src/components/Error/Error403.vue +42 -42
  18. package/src/components/Error/Error404.vue +40 -40
  19. package/src/components/Error/Error500.vue +51 -51
  20. package/src/components/Error/error.less +162 -162
  21. package/src/components/Error/errorBack.vue +40 -40
  22. package/src/components/controls/DshControlInput.vue +195 -195
  23. package/src/components/controls/base/BriUpload/BriUpload.vue +434 -434
  24. package/src/components/controls/base/BriUpload/BriUploadImage.vue +377 -377
  25. package/src/components/controls/base/BriUpload/uploadList.vue +727 -731
  26. package/src/components/controls/base/BriUpload/uploadMixin.js +446 -446
  27. package/src/components/controls/base/DshCascader/DshCascader.vue +215 -215
  28. package/src/components/controls/base/DshCascader/components/cascaderModal.vue +366 -366
  29. package/src/components/controls/base/DshCascader/components/cascaderPicker.vue +416 -416
  30. package/src/components/controls/base/DshCascader/components/cascaderSimple.vue +141 -141
  31. package/src/components/controls/base/DshCascader/components/cascaderTree.vue +151 -151
  32. package/src/components/controls/base/DshCoordinates.vue +577 -577
  33. package/src/components/controls/base/DshDate/DshDate.vue +191 -191
  34. package/src/components/controls/base/DshDate/DshDaterange.vue +186 -186
  35. package/src/components/controls/base/DshDivider.vue +201 -201
  36. package/src/components/controls/base/DshEditor.vue +274 -274
  37. package/src/components/controls/base/DshInput/BriInputs.vue +166 -166
  38. package/src/components/controls/base/DshInput/DshInput.vue +260 -260
  39. package/src/components/controls/base/DshNumber/BriInputNumber/BriInputNumber.vue +435 -435
  40. package/src/components/controls/base/DshNumber/BriInputNumber/mixins/emitter.js +34 -34
  41. package/src/components/controls/base/DshNumber/BriInputNumber/mixins/form.js +14 -14
  42. package/src/components/controls/base/DshNumber/BriInputNumber/utils/assist.js +322 -322
  43. package/src/components/controls/base/DshNumber/DshNumber.vue +143 -143
  44. package/src/components/controls/base/DshNumber/DshNumberange.vue +109 -109
  45. package/src/components/controls/base/DshSelect/DshCheckbox.vue +168 -168
  46. package/src/components/controls/base/DshSelect/DshSelect.vue +180 -180
  47. package/src/components/controls/base/DshSwitch/DshSwitch.vue +115 -115
  48. package/src/components/controls/control.less +324 -324
  49. package/src/components/controls/controlMap.js +114 -114
  50. package/src/components/controls/extra/DshColor.vue +81 -81
  51. package/src/components/controls/extra/DshThemeColor.vue +100 -100
  52. package/src/components/controls/extra/DshThemeIcon.vue +122 -122
  53. package/src/components/controls/mixins/cascaderMixin.js +325 -327
  54. package/src/components/controls/mixins/cascaderPickerMixin.js +227 -227
  55. package/src/components/controls/mixins/cascaderTableMixin.js +130 -130
  56. package/src/components/controls/mixins/controlMixin.js +393 -393
  57. package/src/components/controls/mixins/dateMixin.js +149 -149
  58. package/src/components/controls/mixins/flatTableMixin.js +111 -111
  59. package/src/components/controls/mixins/numberMixin.js +112 -112
  60. package/src/components/controls/mixins/selectMixin.js +233 -233
  61. package/src/components/controls/mixins/switchMixin.js +87 -87
  62. package/src/components/controls/mixins/userAndDepartMixin.js +260 -260
  63. package/src/components/controls/senior/DshLabels.vue +333 -333
  64. package/src/components/controls/senior/DshPackage.vue +57 -57
  65. package/src/components/controls/senior/cascaderTable.vue +213 -213
  66. package/src/components/controls/senior/flatTable.vue +138 -138
  67. package/src/components/controls/senior/selectDepartments.vue +399 -399
  68. package/src/components/controls/senior/selectUsers/departMenu.vue +293 -293
  69. package/src/components/controls/senior/selectUsers/selectUsers.vue +712 -712
  70. package/src/components/controls/special/DshBack.vue +42 -42
  71. package/src/components/controls/special/DshUndeveloped.vue +41 -41
  72. package/src/components/form/DshAdvSearch.vue +510 -510
  73. package/src/components/form/DshDefaultSearch.vue +260 -260
  74. package/src/components/form/DshForm.vue +494 -494
  75. package/src/components/form/searchMixin.js +376 -376
  76. package/src/components/list/BriCard.vue +95 -95
  77. package/src/components/list/BriTable.vue +205 -205
  78. package/src/components/list/BriTree.vue +529 -529
  79. package/src/components/list/BriTreeItem.vue +163 -163
  80. package/src/components/list/DshBox/DshBox.vue +219 -219
  81. package/src/components/list/DshBox/DshCard.vue +446 -446
  82. package/src/components/list/DshBox/DshCrossTable.vue +827 -827
  83. package/src/components/list/DshBox/DshList.vue +404 -404
  84. package/src/components/list/DshBox/DshPanel.vue +669 -669
  85. package/src/components/list/DshBox/DshSingleData.vue +119 -119
  86. package/src/components/list/DshBox/DshTable.vue +239 -239
  87. package/src/components/list/DshCascaderTable.vue +115 -115
  88. package/src/components/list/DshFlatTable.vue +337 -337
  89. package/src/components/list/DshPage.vue +194 -194
  90. package/src/components/list/DshTreeTable.vue +113 -113
  91. package/src/components/list/common/importModal.vue +243 -243
  92. package/src/components/list/common/quoteListModal.vue +206 -206
  93. package/src/components/list/mixins/DshCascaderTableMixin.js +278 -278
  94. package/src/components/list/mixins/DshFlatTableMixin.js +509 -509
  95. package/src/components/list/mixins/DshTreeTableMixin.js +286 -286
  96. package/src/components/list/mixins/tableBaseMixin.js +1653 -1653
  97. package/src/components/list/mixins/treeTableBaseMixin.js +145 -145
  98. package/src/components/other/BriAvatar.vue +166 -166
  99. package/src/components/other/BriCode.vue +125 -125
  100. package/src/components/other/BriCollapseTree.vue +207 -207
  101. package/src/components/other/BriGantt.vue +1087 -1087
  102. package/src/components/other/BriIframe.vue +116 -116
  103. package/src/components/other/BriLoading.vue +171 -171
  104. package/src/components/other/BriSvg.vue +27 -27
  105. package/src/components/other/DshColorPanel.vue +128 -128
  106. package/src/components/other/DshMenuNav.vue +188 -188
  107. package/src/components/small/BriButton.vue +71 -71
  108. package/src/components/small/BriDrawer.vue +169 -169
  109. package/src/components/small/BriTooltip.vue +87 -87
  110. package/src/components/small/DshBtnModal.vue +68 -68
  111. package/src/components/small/DshButtons.vue +324 -324
  112. package/src/components/small/DshDropdown.vue +225 -225
  113. package/src/components/small/DshIcons.vue +59 -59
  114. package/src/components/small/DshListRender.js +21 -21
  115. package/src/components/small/DshModal.vue +160 -160
  116. package/src/components/small/DshSteps.vue +141 -141
  117. package/src/components/small/DshTabs.vue +598 -598
  118. package/src/components/small/DshTabsSet.vue +309 -309
  119. package/src/components/small/DshTags.vue +251 -251
  120. package/src/components/small/DshTitle.vue +50 -50
  121. package/src/components/small/render.js +20 -20
  122. package/src/components/unit/DshFormUnit.vue +398 -398
  123. package/src/components/unit/DshListUnit.vue +115 -115
  124. package/src/components/unit/unitMixin.js +86 -86
  125. package/src/data/index.js +4 -9
  126. package/src/index.js +282 -282
  127. package/src/styles/bundle.css +12 -12
  128. package/src/styles/components/BriButton.less +307 -307
  129. package/src/styles/components/BriTable.less +344 -344
  130. package/src/styles/components/DshModal.less +257 -257
  131. package/src/styles/components/index.less +3 -3
  132. package/src/styles/global/animate.less +11 -11
  133. package/src/styles/global/base.less +45 -45
  134. package/src/styles/global/box.less +186 -186
  135. package/src/styles/global/control.less +122 -122
  136. package/src/styles/global/flex.less +282 -282
  137. package/src/styles/global/global.less +8 -8
  138. package/src/styles/global/text.less +59 -59
  139. package/src/styles/global/variables.less +85 -85
  140. package/src/styles/iconfont/iconfont.css +254 -254
  141. package/src/styles/iconfont/iconfont.json +422 -422
  142. package/src/styles/iconfont/iconfont.svg +137 -137
  143. package/src/styles/index.less +26 -26
  144. package/src/styles/reset-easytable.less +21 -21
  145. package/src/styles/reset-iview-controls.less +145 -145
  146. package/src/styles/reset-iview-other.less +49 -49
  147. package/src/styles/reset-iview-variables.less +43 -43
  148. package/src/styles/reset.less +45 -45
  149. package/src/utils/index.js +5 -5
  150. package/src/utils/table.js +175 -175
  151. package/lib/11.bri-components.min.js +0 -1
@@ -1,286 +1,286 @@
1
- export default {
2
- mixins: [],
3
- components: {},
4
- props: {},
5
- data () {
6
- return {};
7
- },
8
- computed: {
9
- selfBasePropsObj () {
10
- return {
11
- ...this.treeTableBasePropsObj
12
- };
13
- },
14
-
15
- /* --- 列字段 --- */
16
- showColumns () {
17
- return [
18
- this.expandColumn,
19
- ...(this.useIndex === true ? [this.indexColumn] : []),
20
- ...this.$transformToColumns(this.showContentColumns),
21
- ...(!this.isSearching && this.rowOperationList.length ? [this.operationColumn] : [])
22
- ];
23
- },
24
- expandColumn () {
25
- return {
26
- // title: "开/合",
27
- _key: "__isExpand__",
28
- key: "__isExpand__",
29
- field: "__isExpand__",
30
- width: 48,
31
- align: "center",
32
- fixed: "left",
33
- renderBodyCell: ({ row, rowIndex, column }, h) => {
34
- return this.isSearching && this.searchMode === "flat"
35
- ? h("span", "")
36
- : row.children && row.children.length
37
- ? h("Icon", {
38
- style: {
39
- width: "16px",
40
- height: "16px",
41
- cursor: "pointer",
42
- transform: row.__isExpand__ ? "rotate(90deg)" : "rotate(0deg)",
43
- transition: "transform 0.3s"
44
- },
45
- props: {
46
- type: "ios-arrow-forward",
47
- size: "18"
48
- },
49
- on: {
50
- click: () => {
51
- this.toggleExpand(row, !row.__isExpand__);
52
- }
53
- }
54
- })
55
- : h("span", "");
56
- }
57
- };
58
- },
59
- indexColumn () {
60
- return {
61
- title: "序号",
62
- _key: "__treeIndex__",
63
- key: "__treeIndex__",
64
- field: "__treeIndex__",
65
- width: 28 + 16 + (this.maxLevel - 1) * 36,
66
- align: "left",
67
- fixed: "left",
68
- renderBodyCell: ({ row, rowIndex, column }, h) => {
69
- return [
70
- h("div", {
71
- style: {
72
- paddingLeft: `${(row.level - 1) * 18}px`,
73
- fontWeight: "500"
74
- }
75
- }, row.__treeIndex__),
76
-
77
- // 添加符
78
- ...this.operationIconRender(h, { row, rowIndex, column })
79
- ];
80
- }
81
- };
82
- },
83
-
84
- /* --- 数据 --- */
85
- allTreeData () {
86
- return this.getCalcuedTree(this.data, this.selfColumns);
87
- },
88
- allListData () {
89
- return this.$getTreeFlatArr(this.allTreeData);
90
- },
91
- // 全部数据(或筛选出的数据)
92
- showListData () {
93
- return this.allListData.filter(row =>
94
- this.isSearching
95
- ? this.$isAdvRelyAccord(this.finalTableAdvSearch, row)
96
- : row.__isShow__
97
- );
98
- },
99
- footerData () {
100
- return this.isSearching
101
- ? []
102
- : this.useSummary && this.allListData.length
103
- ? [
104
- this.contentColumns.reduce((obj, column) => {
105
- return {
106
- ...obj,
107
- [column._key]: column._type === "number" && column._summaryType
108
- ? this.$calNumList(
109
- this.allListData
110
- .filter(row => row.level === 1)
111
- .map(row => row[column._key]),
112
- column._summaryType,
113
- { ...column, _defaultDigit: 2 }
114
- )
115
- : (obj[column._key] || "--")
116
- };
117
- }, {
118
- _id: this.$ObjectID().str,
119
- __treeIndex__: "汇总",
120
- __isExpand__: "-",
121
- __operation__: "——"
122
- })
123
- ]
124
- : [];
125
- }
126
- },
127
- created () { },
128
- methods: {
129
- // 加工树形数据
130
- getCalcuedTree (treeData = [], cols = []) {
131
- const loop = (list = [], parentRow, levelNum = 1) =>
132
- list.forEach(rowItem => {
133
- this.fixRowData(rowItem, levelNum);
134
-
135
- // 递归到叶子节点前 从上往下执行 要处理的
136
- cols.reduce((newRow, column) => {
137
- if (["number", "date"].includes(column._type)) {
138
- if (column._summaryType) {
139
- // 不做处理,_summaryType和_writeSort互反,更安全的判断
140
- }
141
- else if (["upToDown"].includes(column._writeSort) && column._noLimitWrite !== true) {
142
- // 有父级且值为空的 值置空
143
- const val = parentRow && this.$isEmptyData(parentRow[column._key])
144
- ? this.$deepCopy(this.dftInitValMap[column._type])
145
- : newRow[column._key];
146
-
147
- this.$set(newRow, column._key, val);
148
- }
149
- }
150
-
151
- return newRow;
152
- }, rowItem);
153
-
154
- if (rowItem.children && rowItem.children.length) {
155
- rowItem.isLeaf = false;
156
- loop(rowItem.children, rowItem, levelNum + 1);
157
-
158
- // 递归到叶子节点后到 从下往上执行 要处理的(非叶子节点)
159
- cols.reduce((newRow, column) => {
160
- if (["number", "date"].includes(column._type)) {
161
- if (column._summaryType) {
162
- const val = ["number"].includes(column._type)
163
- ? this.$calNumList(
164
- newRow.children.map(subRow => subRow[column._key]),
165
- column._summaryType,
166
- { ...column, _defaultDigit: 2 },
167
- false
168
- )
169
- : this.$calDateList(
170
- newRow.children.map(subRow => subRow[column._key]),
171
- column._summaryType,
172
- column._dateType
173
- );
174
-
175
- this.$set(newRow, column._key, val);
176
- }
177
- else if (["downToUp"].includes(column._writeSort) && column._noLimitWrite !== true) {
178
- // 子行有空值的 值置空
179
- const val = newRow.children.some(sonRow => this.$isEmptyData(sonRow[column._key]))
180
- ? this.$deepCopy(this.dftInitValMap[column._type])
181
- : newRow[column._key];
182
-
183
- this.$set(newRow, column._key, val);
184
- }
185
- }
186
-
187
- return newRow;
188
- }, rowItem);
189
- } else {
190
- rowItem.isLeaf = true;
191
-
192
- // 递归到叶子节点后到 从下往上执行 要处理的(叶子节点)
193
- cols.reduce((newRow, column) => {
194
- if (["number", "date"].includes(column._type)) {
195
- if (column._summaryType) {
196
- this.$set(newRow, column._key, newRow[column._key]);
197
- }
198
- else if (["downToUp"].includes(column._writeSort) && column._noLimitWrite !== true) {
199
- this.$set(newRow, column._key, newRow[column._key]);
200
- }
201
- }
202
-
203
- return newRow;
204
- }, rowItem);
205
- }
206
- });
207
- loop(treeData);
208
-
209
- this.initFlag = false;
210
- return treeData;
211
- },
212
- fixSelfRowData (row, levelNum) {
213
- // console.log(row.level);
214
- if (this.initFlag) {
215
- // 每条数据都补充全所有字段值(赋一个默认的空值)
216
- this.selfColumns.forEach((colItem) => {
217
- // 不用row[colItem._key] === undefined判断,是因为后端给的空值不可靠,多选的有时候都能给null
218
- if (!Object.prototype.hasOwnProperty.call(row, colItem._key) && this.$isEmptyData(row[colItem._key])) {
219
- this.$set(row, colItem._key, this.$deepCopy(this.dftInitValMap[colItem._type]));
220
- }
221
- });
222
-
223
- row.level = row.level || levelNum; // TODO:修正数据level属性,后期可以删除
224
- // 第一级的需要显示出来
225
- if (row.level === 1) {
226
- // 必须用$set
227
- this.$set(row, "__isExpand__", false);
228
- this.$set(row, "__isShow__", true);
229
- this.$set(row, "__isTmpShow__", true);
230
- } else {
231
- this.$set(row, "__isExpand__", false);
232
- this.$set(row, "__isShow__", false);
233
- this.$set(row, "__isTmpShow__", false);
234
- }
235
- }
236
- // 考虑计算或其它重新传进来值时
237
- else {
238
- // 第一级的需要显示出来
239
- if (row.level === 1) {
240
- !Object.prototype.hasOwnProperty.call(row, "__isExpand__") && this.$set(row, "__isExpand__", false);
241
- !Object.prototype.hasOwnProperty.call(row, "__isShow__") && this.$set(row, "__isShow__", true);
242
- !Object.prototype.hasOwnProperty.call(row, "__isTmpShow__") && this.$set(row, "__isTmpShow__", true);
243
- } else {
244
- !Object.prototype.hasOwnProperty.call(row, "__isExpand__") && this.$set(row, "__isExpand__", false);
245
- !Object.prototype.hasOwnProperty.call(row, "__isShow__") && this.$set(row, "__isShow__", false);
246
- !Object.prototype.hasOwnProperty.call(row, "__isTmpShow__") && this.$set(row, "__isTmpShow__", false);
247
- }
248
- }
249
- },
250
-
251
- // 展开/隐藏节点
252
- toggleExpand (row, bool = true) {
253
- this.isExpandAction = true;
254
- this.$set(row, "__isExpand__", bool);
255
-
256
- this.toggleDescendantsShow(row, bool);
257
- },
258
- // 切换子孙后代的显示/隐藏
259
- toggleDescendantsShow (row, bool) {
260
- const loop = (row, isFirstSon) => {
261
- if (row.children && row.children.length) {
262
- row.children.forEach(subRow => {
263
- if (isFirstSon) {
264
- this.$set(subRow, "__isShow__", bool);
265
- this.$set(subRow, "__isTmpShow__", bool);
266
- } else {
267
- this.$set(subRow, "__isShow__", bool ? !!subRow.__isTmpShow__ : false);
268
- }
269
-
270
- loop(subRow);
271
- });
272
- }
273
- };
274
-
275
- loop(row, true);
276
- },
277
- // getNewRowData时,额外补充的行相关的数据
278
- getSelfNewRowData (level) {
279
- return {
280
- __isExpand__: false,
281
- __isShow__: true,
282
- __isTmpShow__: true
283
- };
284
- }
285
- }
286
- };
1
+ export default {
2
+ mixins: [],
3
+ components: {},
4
+ props: {},
5
+ data () {
6
+ return {};
7
+ },
8
+ computed: {
9
+ selfBasePropsObj () {
10
+ return {
11
+ ...this.treeTableBasePropsObj
12
+ };
13
+ },
14
+
15
+ /* --- 列字段 --- */
16
+ showColumns () {
17
+ return [
18
+ this.expandColumn,
19
+ ...(this.useIndex === true ? [this.indexColumn] : []),
20
+ ...this.$transformToColumns(this.showContentColumns),
21
+ ...(!this.isSearching && this.rowOperationList.length ? [this.operationColumn] : [])
22
+ ];
23
+ },
24
+ expandColumn () {
25
+ return {
26
+ // title: "开/合",
27
+ _key: "__isExpand__",
28
+ key: "__isExpand__",
29
+ field: "__isExpand__",
30
+ width: 48,
31
+ align: "center",
32
+ fixed: "left",
33
+ renderBodyCell: ({ row, rowIndex, column }, h) => {
34
+ return this.isSearching && this.searchMode === "flat"
35
+ ? h("span", "")
36
+ : row.children && row.children.length
37
+ ? h("Icon", {
38
+ style: {
39
+ width: "16px",
40
+ height: "16px",
41
+ cursor: "pointer",
42
+ transform: row.__isExpand__ ? "rotate(90deg)" : "rotate(0deg)",
43
+ transition: "transform 0.3s"
44
+ },
45
+ props: {
46
+ type: "ios-arrow-forward",
47
+ size: "18"
48
+ },
49
+ on: {
50
+ click: () => {
51
+ this.toggleExpand(row, !row.__isExpand__);
52
+ }
53
+ }
54
+ })
55
+ : h("span", "");
56
+ }
57
+ };
58
+ },
59
+ indexColumn () {
60
+ return {
61
+ title: "序号",
62
+ _key: "__treeIndex__",
63
+ key: "__treeIndex__",
64
+ field: "__treeIndex__",
65
+ width: 28 + 16 + (this.maxLevel - 1) * 36,
66
+ align: "left",
67
+ fixed: "left",
68
+ renderBodyCell: ({ row, rowIndex, column }, h) => {
69
+ return [
70
+ h("div", {
71
+ style: {
72
+ paddingLeft: `${(row.level - 1) * 18}px`,
73
+ fontWeight: "500"
74
+ }
75
+ }, row.__treeIndex__),
76
+
77
+ // 添加符
78
+ ...this.operationIconRender(h, { row, rowIndex, column })
79
+ ];
80
+ }
81
+ };
82
+ },
83
+
84
+ /* --- 数据 --- */
85
+ allTreeData () {
86
+ return this.getCalcuedTree(this.data, this.selfColumns);
87
+ },
88
+ allListData () {
89
+ return this.$getTreeFlatArr(this.allTreeData);
90
+ },
91
+ // 全部数据(或筛选出的数据)
92
+ showListData () {
93
+ return this.allListData.filter(row =>
94
+ this.isSearching
95
+ ? this.$isAdvRelyAccord(this.finalTableAdvSearch, row)
96
+ : row.__isShow__
97
+ );
98
+ },
99
+ footerData () {
100
+ return this.isSearching
101
+ ? []
102
+ : this.useSummary && this.allListData.length
103
+ ? [
104
+ this.contentColumns.reduce((obj, column) => {
105
+ return {
106
+ ...obj,
107
+ [column._key]: column._type === "number" && column._summaryType
108
+ ? this.$calNumList(
109
+ this.allListData
110
+ .filter(row => row.level === 1)
111
+ .map(row => row[column._key]),
112
+ column._summaryType,
113
+ { ...column, _defaultDigit: 2 }
114
+ )
115
+ : (obj[column._key] || "--")
116
+ };
117
+ }, {
118
+ _id: this.$ObjectID().str,
119
+ __treeIndex__: "汇总",
120
+ __isExpand__: "-",
121
+ __operation__: "——"
122
+ })
123
+ ]
124
+ : [];
125
+ }
126
+ },
127
+ created () { },
128
+ methods: {
129
+ // 加工树形数据
130
+ getCalcuedTree (treeData = [], cols = []) {
131
+ const loop = (list = [], parentRow, levelNum = 1) =>
132
+ list.forEach(rowItem => {
133
+ this.fixRowData(rowItem, levelNum);
134
+
135
+ // 递归到叶子节点前 从上往下执行 要处理的
136
+ cols.reduce((newRow, column) => {
137
+ if (["number", "date"].includes(column._type)) {
138
+ if (column._summaryType) {
139
+ // 不做处理,_summaryType和_writeSort互反,更安全的判断
140
+ }
141
+ else if (["upToDown"].includes(column._writeSort) && column._noLimitWrite !== true) {
142
+ // 有父级且值为空的 值置空
143
+ const val = parentRow && this.$isEmptyData(parentRow[column._key])
144
+ ? this.$deepCopy(this.dftInitValMap[column._type])
145
+ : newRow[column._key];
146
+
147
+ this.$set(newRow, column._key, val);
148
+ }
149
+ }
150
+
151
+ return newRow;
152
+ }, rowItem);
153
+
154
+ if (rowItem.children && rowItem.children.length) {
155
+ rowItem.isLeaf = false;
156
+ loop(rowItem.children, rowItem, levelNum + 1);
157
+
158
+ // 递归到叶子节点后到 从下往上执行 要处理的(非叶子节点)
159
+ cols.reduce((newRow, column) => {
160
+ if (["number", "date"].includes(column._type)) {
161
+ if (column._summaryType) {
162
+ const val = ["number"].includes(column._type)
163
+ ? this.$calNumList(
164
+ newRow.children.map(subRow => subRow[column._key]),
165
+ column._summaryType,
166
+ { ...column, _defaultDigit: 2 },
167
+ false
168
+ )
169
+ : this.$calDateList(
170
+ newRow.children.map(subRow => subRow[column._key]),
171
+ column._summaryType,
172
+ column._dateType
173
+ );
174
+
175
+ this.$set(newRow, column._key, val);
176
+ }
177
+ else if (["downToUp"].includes(column._writeSort) && column._noLimitWrite !== true) {
178
+ // 子行有空值的 值置空
179
+ const val = newRow.children.some(sonRow => this.$isEmptyData(sonRow[column._key]))
180
+ ? this.$deepCopy(this.dftInitValMap[column._type])
181
+ : newRow[column._key];
182
+
183
+ this.$set(newRow, column._key, val);
184
+ }
185
+ }
186
+
187
+ return newRow;
188
+ }, rowItem);
189
+ } else {
190
+ rowItem.isLeaf = true;
191
+
192
+ // 递归到叶子节点后到 从下往上执行 要处理的(叶子节点)
193
+ cols.reduce((newRow, column) => {
194
+ if (["number", "date"].includes(column._type)) {
195
+ if (column._summaryType) {
196
+ this.$set(newRow, column._key, newRow[column._key]);
197
+ }
198
+ else if (["downToUp"].includes(column._writeSort) && column._noLimitWrite !== true) {
199
+ this.$set(newRow, column._key, newRow[column._key]);
200
+ }
201
+ }
202
+
203
+ return newRow;
204
+ }, rowItem);
205
+ }
206
+ });
207
+ loop(treeData);
208
+
209
+ this.initFlag = false;
210
+ return treeData;
211
+ },
212
+ fixSelfRowData (row, levelNum) {
213
+ // console.log(row.level);
214
+ if (this.initFlag) {
215
+ // 每条数据都补充全所有字段值(赋一个默认的空值)
216
+ this.selfColumns.forEach((colItem) => {
217
+ // 不用row[colItem._key] === undefined判断,是因为后端给的空值不可靠,多选的有时候都能给null
218
+ if (!Object.prototype.hasOwnProperty.call(row, colItem._key) && this.$isEmptyData(row[colItem._key])) {
219
+ this.$set(row, colItem._key, this.$deepCopy(this.dftInitValMap[colItem._type]));
220
+ }
221
+ });
222
+
223
+ row.level = row.level || levelNum; // TODO:修正数据level属性,后期可以删除
224
+ // 第一级的需要显示出来
225
+ if (row.level === 1) {
226
+ // 必须用$set
227
+ this.$set(row, "__isExpand__", false);
228
+ this.$set(row, "__isShow__", true);
229
+ this.$set(row, "__isTmpShow__", true);
230
+ } else {
231
+ this.$set(row, "__isExpand__", false);
232
+ this.$set(row, "__isShow__", false);
233
+ this.$set(row, "__isTmpShow__", false);
234
+ }
235
+ }
236
+ // 考虑计算或其它重新传进来值时
237
+ else {
238
+ // 第一级的需要显示出来
239
+ if (row.level === 1) {
240
+ !Object.prototype.hasOwnProperty.call(row, "__isExpand__") && this.$set(row, "__isExpand__", false);
241
+ !Object.prototype.hasOwnProperty.call(row, "__isShow__") && this.$set(row, "__isShow__", true);
242
+ !Object.prototype.hasOwnProperty.call(row, "__isTmpShow__") && this.$set(row, "__isTmpShow__", true);
243
+ } else {
244
+ !Object.prototype.hasOwnProperty.call(row, "__isExpand__") && this.$set(row, "__isExpand__", false);
245
+ !Object.prototype.hasOwnProperty.call(row, "__isShow__") && this.$set(row, "__isShow__", false);
246
+ !Object.prototype.hasOwnProperty.call(row, "__isTmpShow__") && this.$set(row, "__isTmpShow__", false);
247
+ }
248
+ }
249
+ },
250
+
251
+ // 展开/隐藏节点
252
+ toggleExpand (row, bool = true) {
253
+ this.isExpandAction = true;
254
+ this.$set(row, "__isExpand__", bool);
255
+
256
+ this.toggleDescendantsShow(row, bool);
257
+ },
258
+ // 切换子孙后代的显示/隐藏
259
+ toggleDescendantsShow (row, bool) {
260
+ const loop = (row, isFirstSon) => {
261
+ if (row.children && row.children.length) {
262
+ row.children.forEach(subRow => {
263
+ if (isFirstSon) {
264
+ this.$set(subRow, "__isShow__", bool);
265
+ this.$set(subRow, "__isTmpShow__", bool);
266
+ } else {
267
+ this.$set(subRow, "__isShow__", bool ? !!subRow.__isTmpShow__ : false);
268
+ }
269
+
270
+ loop(subRow);
271
+ });
272
+ }
273
+ };
274
+
275
+ loop(row, true);
276
+ },
277
+ // getNewRowData时,额外补充的行相关的数据
278
+ getSelfNewRowData (level) {
279
+ return {
280
+ __isExpand__: false,
281
+ __isShow__: true,
282
+ __isTmpShow__: true
283
+ };
284
+ }
285
+ }
286
+ };