bri-components 1.3.74 → 1.3.76

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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bri-components",
3
- "version": "1.3.74",
3
+ "version": "1.3.76",
4
4
  "author": "dengshanghui",
5
5
  "description": "a component lib for vue project",
6
6
  "main": "src/index.js",
@@ -143,15 +143,13 @@
143
143
  return {
144
144
  _fileType: "file",
145
145
  _showMode: this.isHeightAuto ? "old" : "inline", // 宽度为100%、且不在级联表格或内部表格里的 显示老版
146
- // _multiple: true,
146
+ _multiple: true,
147
147
  _useType: "drag",
148
148
  _maxSize: 1024 * 1024,
149
149
  _format: [],
150
150
 
151
151
  ...this.propsObj,
152
- ...this.commonDealPropsObj,
153
-
154
- _multiple: true // TODO: 解决后端返回的配置数据里,内部表格里的上传字段有脏属性_multiple且为false,早晚要删除这行用上面的那行
152
+ ...this.commonDealPropsObj
155
153
  };
156
154
  },
157
155
  subType () {
@@ -93,21 +93,8 @@
93
93
  ...this.commonDealPropsObj
94
94
  };
95
95
  },
96
-
97
- curValDate: {
98
- get () {
99
- const val = this.value[this.controlKey];
100
- return this.$transformDateCompatible(val, this.subType);
101
- },
102
- set (val) {
103
- this.$set(this.value, this.controlKey, this.$transformDate(val, "-", this.subType));
104
- }
105
- },
106
96
  subType () {
107
- return this.selfPropsObj._dateType;
108
- },
109
- writeSort () {
110
- return this.selfPropsObj._writeSort;
97
+ return this.selfPropsObj._dateType; // 5种,"date", "datetime", "year", "month", "time"
111
98
  },
112
99
  options () {
113
100
  return {
@@ -120,21 +107,22 @@
120
107
 
121
108
  // 日期字段的平级对比
122
109
  const compareBool = this.$normalComparedFunc(this.selfPropsObj, selfValue, this.allFormList, this.parentObj, this.parentFormList, this.inTableType);
123
-
124
- // 层级表格里-日期字段的上下级对比(从下往上时,子行的值全有时,才启用置灰)
125
- const caluBool = (
126
- this.inTableType === "treeTable" &&
127
- this.writeSort === "downToUp" &&
128
- this.value.children &&
129
- this.value.children.length &&
130
- this.value.children.some(child => this.$isEmptyData(child[this.controlKey]))
131
- )
132
- ? true
133
- : this.$levelComparedFunc(this.selfPropsObj, selfValue, this.allListRows, this.inTableType);
110
+ // 层级表格里-日期字段的上下级对比
111
+ const caluBool = this.$levelComparedFunc(this.selfPropsObj, selfValue, this.allListRows, this.inTableType, undefined, true);
134
112
 
135
113
  return !compareBool || !caluBool;
136
114
  }
137
115
  };
116
+ },
117
+
118
+ curValDate: {
119
+ get () {
120
+ const val = this.value[this.controlKey];
121
+ return this.$transformDateCompatible(val, this.subType);
122
+ },
123
+ set (val) {
124
+ this.$set(this.value, this.controlKey, this.$transformDate(val, "-", this.subType));
125
+ }
138
126
  }
139
127
  },
140
128
  created () {},
@@ -1,6 +1,6 @@
1
1
  <template>
2
2
  <div class="DshDaterange">
3
- <template v-if="['time', 'timerange'].includes(subType)">
3
+ <template v-if="['time'].includes(subType)">
4
4
  <!-- 时间范围 -->
5
5
  <TimePicker
6
6
  style="width: 100%;"
@@ -15,7 +15,7 @@
15
15
  </template>
16
16
 
17
17
  <!-- 动态日期 -->
18
- <template v-else-if="['date', 'datetime', 'daterange', 'datetimerange', 'year', 'month'].includes(subType)">
18
+ <template v-else-if="['date', 'datetime', 'year', 'month'].includes(subType)">
19
19
  <DatePicker
20
20
  class="DshDaterange-left"
21
21
  :model-value="val0"
@@ -94,115 +94,115 @@
94
94
  _key: "dyn_today_start",
95
95
  name: "今天",
96
96
  numbers: [0],
97
- dateTypes: ["date", "datetime", "daterange", "datetimerange"]
97
+ dateTypes: ["date", "datetime"]
98
98
  },
99
99
  {
100
100
  _key: "dyn_today_end",
101
101
  name: "今天",
102
102
  numbers: [1],
103
- dateTypes: ["date", "datetime", "daterange", "datetimerange"]
103
+ dateTypes: ["date", "datetime"]
104
104
  },
105
105
  {
106
106
  _key: "dyn_now",
107
107
  name: "现在",
108
108
  numbers: [0, 1],
109
- dateTypes: ["date", "datetime", "daterange", "datetimerange"]
109
+ dateTypes: ["date", "datetime"]
110
110
  },
111
111
  {
112
112
  _key: "dyn_yesterday",
113
113
  name: "昨天",
114
114
  numbers: [0],
115
- dateTypes: ["date", "datetime", "daterange", "datetimerange"]
115
+ dateTypes: ["date", "datetime"]
116
116
  },
117
117
  {
118
118
  _key: "dyn_subtract_3_days",
119
119
  name: "三天前",
120
120
  numbers: [0],
121
- dateTypes: ["date", "datetime", "daterange", "datetimerange"]
121
+ dateTypes: ["date", "datetime"]
122
122
  },
123
123
  {
124
124
  _key: "dyn_subtract_7_days",
125
125
  name: "七天前",
126
126
  numbers: [0],
127
- dateTypes: ["date", "datetime", "daterange", "datetimerange"]
127
+ dateTypes: ["date", "datetime"]
128
128
  },
129
129
  {
130
130
  _key: "dyn_subtract_30_days",
131
131
  name: "三十天前",
132
132
  numbers: [0],
133
- dateTypes: ["date", "datetime", "daterange", "datetimerange"]
133
+ dateTypes: ["date", "datetime"]
134
134
  },
135
135
  {
136
136
  _key: "dyn_add_3_days",
137
137
  name: "三天后",
138
138
  numbers: [1],
139
- dateTypes: ["date", "datetime", "daterange", "datetimerange"]
139
+ dateTypes: ["date", "datetime"]
140
140
  },
141
141
  {
142
142
  _key: "dyn_add_7_days",
143
143
  name: "七天后",
144
144
  numbers: [1],
145
- dateTypes: ["date", "datetime", "daterange", "datetimerange"]
145
+ dateTypes: ["date", "datetime"]
146
146
  },
147
147
  {
148
148
  _key: "dyn_add_30_days",
149
149
  name: "三十后",
150
150
  numbers: [1],
151
- dateTypes: ["date", "datetime", "daterange", "datetimerange"]
151
+ dateTypes: ["date", "datetime"]
152
152
  },
153
153
  {
154
154
  _key: "last_month_start",
155
155
  name: "上月初",
156
156
  numbers: [0],
157
- dateTypes: ["month", "date", "datetime", "daterange", "datetimerange"]
157
+ dateTypes: ["month", "date", "datetime"]
158
158
  },
159
159
  {
160
160
  _key: "dyn_month_start",
161
161
  name: "月初",
162
162
  numbers: [0, 1],
163
- dateTypes: ["month", "date", "datetime", "daterange", "datetimerange"]
163
+ dateTypes: ["month", "date", "datetime"]
164
164
  },
165
165
  {
166
166
  _key: "dyn_month_end",
167
167
  name: "月末",
168
168
  numbers: [1],
169
- dateTypes: ["month", "date", "datetime", "daterange", "datetimerange"]
169
+ dateTypes: ["month", "date", "datetime"]
170
170
  },
171
171
  {
172
172
  _key: "dyn_quarter_start",
173
173
  name: "本季初",
174
174
  numbers: [0],
175
- dateTypes: ["month", "date", "datetime", "daterange", "datetimerange"]
175
+ dateTypes: ["month", "date", "datetime"]
176
176
  },
177
177
  {
178
178
  _key: "dyn_quarter_end",
179
179
  name: "本季末",
180
180
  numbers: [1],
181
- dateTypes: ["month", "date", "datetime", "daterange", "datetimerange"]
181
+ dateTypes: ["month", "date", "datetime"]
182
182
  },
183
183
  {
184
184
  _key: "dyn_year_start",
185
185
  name: "年初",
186
186
  numbers: [0],
187
- dateTypes: ["year", "date", "datetime", "daterange", "datetimerange"]
187
+ dateTypes: ["year", "date", "datetime"]
188
188
  },
189
189
  {
190
190
  _key: "dyn_year_end",
191
191
  name: "年末",
192
192
  numbers: [1],
193
- dateTypes: ["year", "date", "datetime", "daterange", "datetimerange"]
193
+ dateTypes: ["year", "date", "datetime"]
194
194
  },
195
195
  {
196
196
  _key: "dyn_nextyear_start",
197
197
  name: "次年初",
198
198
  numbers: [0],
199
- dateTypes: ["year", "date", "datetime", "daterange", "datetimerange"]
199
+ dateTypes: ["year", "date", "datetime"]
200
200
  },
201
201
  {
202
202
  _key: "dyn_nextyear_end",
203
203
  name: "次年末",
204
204
  numbers: [1],
205
- dateTypes: ["year", "date", "datetime", "daterange", "datetimerange"]
205
+ dateTypes: ["year", "date", "datetime"]
206
206
  }
207
207
  ]
208
208
  };
@@ -17,11 +17,8 @@ const componentNameMap = {
17
17
  url: "DshInput",
18
18
  password: "DshInput",
19
19
  serialNumber: "DshInput",
20
- texts: "DshInput",
21
20
  number: "DshNumber",
22
- numberange: "DshNumber",
23
21
  date: "DshDate",
24
- daterange: "DshDate",
25
22
  switch: "DshSwitch",
26
23
  select: "DshSelect",
27
24
  checkbox: "DshCheckbox",
@@ -132,7 +132,7 @@ export default {
132
132
  multipleMode () {
133
133
  return this.isOnDftSearch || this.isOnSearch
134
134
  ? true
135
- : ["texts", "numberange", "daterange", "checkbox", "regions", "cascaders", "file"].includes(this.controlType) || !!this.propsObj._multiple;
135
+ : ["checkbox", "regions", "cascaders"].includes(this.controlType) || !!this.selfPropsObj._multiple;
136
136
  },
137
137
  // 是否为tag显示
138
138
  tagShow () {
@@ -168,7 +168,7 @@
168
168
  computed: {
169
169
  selfPropsObj () {
170
170
  return {
171
- _icon: this.multipleMode ? "ios-people" : "ios-person",
171
+ _icon: this.propsObj._multiple === true ? "ios-people" : "ios-person",
172
172
  _highSearch: false,
173
173
  _changeOnSelect: true,
174
174
  _searchString: "",
@@ -283,7 +283,7 @@
283
283
  computed: {
284
284
  selfPropsObj () {
285
285
  return {
286
- _icon: this.multipleMode ? "ios-people" : "ios-person",
286
+ _icon: this.propsObj._multiple === true ? "ios-people" : "ios-person",
287
287
  _highSearch: false,
288
288
  _reverseFilter: false, // 是否反向过滤,默认正向过滤
289
289
  _userDepartFilterVals: [], // 过滤的数据
@@ -342,7 +342,8 @@
342
342
  _displayType: "show",
343
343
  canEdit: !["createdAt", "updatedAt", "_creaters"].includes(formData._key)
344
344
  }).forEach(arr => {
345
- !this.ignoreProperties.includes(arr[0]) && (formData.__parentKey__ ? !this.subIgnoreProperties.includes(arr[0]) : true) &&
345
+ !this.ignoreProperties.includes(arr[0]) &&
346
+ (formData.__parentKey__ ? !this.subIgnoreProperties.includes(arr[0]) : true) &&
346
347
  this.$set(formItem, arr[0], arr[1]);
347
348
  });
348
349
  }
@@ -388,16 +389,31 @@
388
389
  });
389
390
  }
390
391
 
391
- // 对比校验(横向对比和层级对比)-虽然暂时只number和date对比校验,但为了扩展到其他类型时,不修改此处。用type判断:大量使用DshForm的地方有复合类型,type参数(数据类型)没有定义,会出现校验文字
392
- // if (ruleConfig.type) {
393
- if (["number", "date"].includes(formItem._type)) {
392
+ // 对比校验(横向同类型字段对比)-暂时只number和date对比校验
393
+ if (formItem._saveRuleConfigs) {
394
394
  const ruleObj = {
395
395
  message: `${formItem._name}对比不通过!`,
396
396
  trigger: "blur, change",
397
397
  type: "string",
398
398
  transform: (val) => {
399
- return this.$normalComparedFunc(formItem, this.formData, this.allFormList, this.parentObj, this.parentFormList, this.inTableType, ruleObj) &&
400
- this.$levelComparedFunc(formItem, this.formData, this.allListRows, this.inTableType, ruleObj)
399
+ return this.$normalComparedFunc(formItem, this.formData, this.allFormList, this.parentObj, this.parentFormList, this.inTableType, ruleObj)
400
+ ? val
401
+ : false;
402
+ },
403
+ ...ruleConfig
404
+ };
405
+
406
+ rules.push(ruleObj);
407
+ }
408
+
409
+ // 对比校验(层级表格的层级对比)-暂时只number和date对比校验
410
+ if (this.inTableType === "treeTable" && ["downToUp", "upToDown"].includes(formItem._writeSort)) {
411
+ const ruleObj = {
412
+ message: `${formItem._name}层级对比不通过!`,
413
+ trigger: "blur, change",
414
+ type: "string",
415
+ transform: (val) => {
416
+ return this.$levelComparedFunc(formItem, this.formData, this.allListRows, this.inTableType, ruleObj)
401
417
  ? val
402
418
  : false;
403
419
  },
@@ -313,7 +313,7 @@ export default {
313
313
  colType: "data"
314
314
  }
315
315
  ))
316
- );
316
+ );
317
317
  },
318
318
  // 转化树数据
319
319
  getCalcuedTree (nodes = [], treeForm = [], subForm = []) {
@@ -785,7 +785,7 @@ export default {
785
785
  }
786
786
  : {
787
787
  textAlign: col._align || "left"
788
- };
788
+ };
789
789
 
790
790
  return {
791
791
  width: `${width}px`,
@@ -269,16 +269,18 @@ export default {
269
269
  list.forEach((row) => {
270
270
  // 递归到叶子节点前 从上往下执行 要处理的
271
271
  columns.reduce((newRow, column) => {
272
- if (
273
- ["number", "date"].includes(column._type) &&
274
- ["upToDown"].includes(column._writeSort)
275
- ) {
276
- // 第一级的和父级有值的,否则置空
277
- const val = parentRow && this.$isEmptyData(parentRow[column._key])
278
- ? this.$deepCopy(this.initDftValMap[column._type])
279
- : newRow[column._key];
272
+ if (["number", "date"].includes(column._type)) {
273
+ if (![undefined, null, "", "no"].includes(column._summaryType)) {
274
+ // 不做处理,_summaryType和_writeSort互反,更安全的判断
275
+ }
276
+ else if (["upToDown"].includes(column._writeSort) && column._noLimitWrite !== true) {
277
+ // 有父级且值为空的 值置空
278
+ const val = parentRow && this.$isEmptyData(parentRow[column._key])
279
+ ? this.$deepCopy(this.initDftValMap[column._type])
280
+ : newRow[column._key];
280
281
 
281
- this.$set(newRow, column._key, val);
282
+ this.$set(newRow, column._key, val);
283
+ }
282
284
  }
283
285
 
284
286
  return newRow;
@@ -290,34 +292,31 @@ export default {
290
292
 
291
293
  // 递归到叶子节点后到 从下往上执行 要处理的(非叶子节点)
292
294
  columns.reduce((newRow, column) => {
293
- // if (
294
- // ["number", "date"].includes(column._type) &&
295
- // ["downToUp"].includes(column._writeSort)
296
- // ) {
297
- // // 第一级的和父级有值的,否则置空
298
- // const val = newRow[column._key];
299
-
300
- // this.$set(newRow, column._key, val);
301
- // }
295
+ if (["number", "date"].includes(column._type)) {
296
+ if (![undefined, null, "", "no"].includes(column._summaryType)) {
297
+ const val = ["number"].includes(column._type)
298
+ ? this.$calNumList(
299
+ newRow.children.map(subRow => subRow[column._key]),
300
+ column._summaryType,
301
+ { ...column, _defaultDigit: 2 },
302
+ false
303
+ )
304
+ : this.$calDateList(
305
+ newRow.children.map(subRow => subRow[column._key]),
306
+ column._summaryType,
307
+ column._dateType
308
+ );
302
309
 
303
- if (
304
- ["number", "date"].includes(column._type) &&
305
- ![undefined, null, "", "no"].includes(column._summaryType)
306
- ) {
307
- const val = ["number"].includes(column._type)
308
- ? this.$calNumList(
309
- newRow.children.map(subRow => subRow[column._key]),
310
- column._summaryType,
311
- { ...column, _defaultDigit: 2 },
312
- false
313
- )
314
- : this.$calDateList(
315
- newRow.children.map(subRow => subRow[column._key]),
316
- column._summaryType,
317
- column._dateType
318
- );
310
+ this.$set(newRow, column._key, val);
311
+ }
312
+ else if (["downToUp"].includes(column._writeSort) && column._noLimitWrite !== true) {
313
+ // 子行有空值的 值置空
314
+ const val = newRow.children.some(sonRow => this.$isEmptyData(sonRow[column._key]))
315
+ ? this.$deepCopy(this.initDftValMap[column._type])
316
+ : newRow[column._key];
319
317
 
320
- this.$set(newRow, column._key, val);
318
+ this.$set(newRow, column._key, val);
319
+ }
321
320
  }
322
321
 
323
322
  return newRow;
@@ -325,13 +324,15 @@ export default {
325
324
  } else {
326
325
  row.isLeaf = true;
327
326
 
328
- // 递归到叶子节点前 从上往下执行 要处理的(叶子节点)
327
+ // 递归到叶子节点后到 从下往上执行 要处理的(叶子节点)
329
328
  columns.reduce((newRow, column) => {
330
- if (
331
- ["number", "date"].includes(column._type) &&
332
- ![undefined, null, "", "no"].includes(column._summaryType)
333
- ) {
334
- this.$set(newRow, column._key, newRow[column._key]);
329
+ if (["number", "date"].includes(column._type)) {
330
+ if (![undefined, null, "", "no"].includes(column._summaryType)) {
331
+ this.$set(newRow, column._key, newRow[column._key]);
332
+ }
333
+ else if (["downToUp"].includes(column._writeSort) && column._noLimitWrite !== true) {
334
+ this.$set(newRow, column._key, newRow[column._key]);
335
+ }
335
336
  }
336
337
 
337
338
  return newRow;
@@ -207,7 +207,7 @@ export default {
207
207
  _isImport: false, // 导入
208
208
  _isExport: false, // 导出
209
209
  _isQuote: false, // 引用
210
- _quoteDataCanEdit: false, // 引用的数据是否能编辑
210
+ _quoteDisabledColKeys: [], // 引用数据行不可编辑咧
211
211
  _quoteListFields: [], // 引用列表的显示字段
212
212
  _quoteAdvSearch: {
213
213
  logic: "and",
@@ -274,8 +274,8 @@ export default {
274
274
  isQuote () {
275
275
  return this.selfPropsObj._isQuote;
276
276
  },
277
- quoteDataCanEdit () {
278
- return this.selfPropsObj._quoteDataCanEdit;
277
+ quoteDisabledColKeys () {
278
+ return this.selfPropsObj._quoteDisabledColKeys;
279
279
  },
280
280
  quoteListFields () {
281
281
  return this.selfPropsObj._quoteListFields;
@@ -1040,15 +1040,17 @@ export default {
1040
1040
  ["treeTable"].includes(this.inTableType) && ["number", "date"].includes(col._type)
1041
1041
  ? ![undefined, null, "", "no"].includes(col._summaryType)
1042
1042
  ? row.isLeaf === true
1043
- // : ["downToUp"].includes(col._writeSort)
1044
- // ? row.isLeaf === true
1045
- : ["upToDown"].includes(col._writeSort)
1046
- ? row.level === 1 || !this.$isEmptyData(this.getParentNode(row, this.allTreeData)[col._key])
1043
+ : ["downToUp", "upToDown"].includes(col._writeSort)
1044
+ ? col._noLimitWrite === true
1045
+ ? true
1046
+ : ["downToUp"].includes(col._writeSort)
1047
+ ? !(row.children && row.children.length) || row.children.every(sonRow => !this.$isEmptyData(sonRow[col._key]))
1048
+ : row.level === 1 || !this.$isEmptyData(this.getParentNode(row, this.allTreeData)[col._key])
1047
1049
  : true
1048
1050
  : true
1049
1051
  ) &&
1050
1052
  (col._oldReadonly ? row.__old__ !== true : true) && // 老数据行里某些列不可编辑
1051
- (row.__isQuote__ ? this.quoteDataCanEdit === true : true) && // 引用过来的数据是否可编辑
1053
+ (row.__isQuote__ ? !this.quoteDisabledColKeys.includes(col._key) : true) && // 引用过来的数据是否可编辑
1052
1054
  col._enterType !== "calculate" && // 计算的不可编辑
1053
1055
  col._readonly !== true && // 不能为只读
1054
1056
  col.canEdit !== false; // 字段本身编辑权限 考虑为undefined时候