cnhis-design-vue 0.1.65-beta → 0.1.69-beta

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 (96) hide show
  1. package/es/affix/index.js +8 -8
  2. package/es/age/index.js +10 -10
  3. package/es/alert/index.js +8 -8
  4. package/es/anchor/index.js +8 -8
  5. package/es/auto-complete/index.js +8 -8
  6. package/es/avatar/index.js +8 -8
  7. package/es/back-top/index.js +8 -8
  8. package/es/badge/index.js +8 -8
  9. package/es/base/index.js +8 -8
  10. package/es/big-table/index.js +97 -97
  11. package/es/big-table/style.css +1 -1
  12. package/es/breadcrumb/index.js +8 -8
  13. package/es/button/index.js +20 -20
  14. package/es/calendar/index.js +8 -8
  15. package/es/captcha/index.js +3 -3
  16. package/es/card/index.js +8 -8
  17. package/es/carousel/index.js +8 -8
  18. package/es/cascader/index.js +8 -8
  19. package/es/checkbox/index.js +9 -9
  20. package/es/col/index.js +8 -8
  21. package/es/collapse/index.js +8 -8
  22. package/es/color-picker/index.js +1 -1
  23. package/es/comment/index.js +8 -8
  24. package/es/config-provider/index.js +8 -8
  25. package/es/date-picker/index.js +8 -8
  26. package/es/descriptions/index.js +8 -8
  27. package/es/divider/index.js +8 -8
  28. package/es/drag-layout/index.js +3 -3
  29. package/es/drawer/index.js +8 -8
  30. package/es/dropdown/index.js +8 -8
  31. package/es/editor/index.js +1 -1
  32. package/es/empty/index.js +8 -8
  33. package/es/fabric-chart/index.js +9 -9
  34. package/es/form/index.js +8 -8
  35. package/es/form-model/index.js +8 -8
  36. package/es/index/index.js +732 -601
  37. package/es/index/style.css +1 -1
  38. package/es/input/index.js +9 -9
  39. package/es/input-number/index.js +8 -8
  40. package/es/layout/index.js +8 -8
  41. package/es/list/index.js +8 -8
  42. package/es/locale-provider/index.js +8 -8
  43. package/es/map/index.js +9 -9
  44. package/es/mentions/index.js +8 -8
  45. package/es/menu/index.js +8 -8
  46. package/es/message/index.js +8 -8
  47. package/es/multi-chat/index.js +57 -57
  48. package/es/multi-chat-client/index.js +48 -48
  49. package/es/multi-chat-history/index.js +4 -4
  50. package/es/multi-chat-record/index.js +14 -14
  51. package/es/multi-chat-setting/index.js +22 -22
  52. package/es/multi-chat-sip/index.js +1 -1
  53. package/es/notification/index.js +8 -8
  54. package/es/page-header/index.js +8 -8
  55. package/es/pagination/index.js +8 -8
  56. package/es/popconfirm/index.js +8 -8
  57. package/es/popover/index.js +8 -8
  58. package/es/progress/index.js +8 -8
  59. package/es/radio/index.js +9 -9
  60. package/es/rate/index.js +8 -8
  61. package/es/result/index.js +8 -8
  62. package/es/row/index.js +8 -8
  63. package/es/scale-view/index.js +302 -281
  64. package/es/scale-view/style.css +1 -1
  65. package/es/select/index.js +11 -11
  66. package/es/select-label/index.js +10 -10
  67. package/es/select-person/index.js +39 -27
  68. package/es/select-person/style.css +1 -1
  69. package/es/skeleton/index.js +8 -8
  70. package/es/slider/index.js +8 -8
  71. package/es/space/index.js +8 -8
  72. package/es/spin/index.js +8 -8
  73. package/es/statistic/index.js +8 -8
  74. package/es/steps/index.js +8 -8
  75. package/es/switch/index.js +8 -8
  76. package/es/table-filter/index.js +134 -164
  77. package/es/tabs/index.js +8 -8
  78. package/es/tag/index.js +9 -9
  79. package/es/time-picker/index.js +8 -8
  80. package/es/timeline/index.js +8 -8
  81. package/es/tooltip/index.js +8 -8
  82. package/es/transfer/index.js +8 -8
  83. package/es/tree/index.js +8 -8
  84. package/es/tree-select/index.js +8 -8
  85. package/es/upload/index.js +8 -8
  86. package/es/verification-code/index.js +2 -2
  87. package/lib/cui.common.js +738 -561
  88. package/lib/cui.umd.js +738 -561
  89. package/lib/cui.umd.min.js +93 -93
  90. package/package.json +9 -9
  91. package/packages/big-table/src/Fieldset.vue +12 -12
  92. package/packages/scale-view/answerParse.vue +106 -0
  93. package/packages/scale-view/evaluateCountdown.vue +3 -1
  94. package/packages/scale-view/formitem/r-choice.vue +20 -9
  95. package/packages/scale-view/scaleView.vue +126 -46
  96. package/packages/select-person/select-person.vue +5 -3
@@ -38,13 +38,17 @@
38
38
  <div>
39
39
  测评分数:<span>{{ config.totalScore }}分</span>
40
40
  </div>
41
+ <div>
42
+ 测评总分:<span>{{ maxScore }}分</span>
43
+ </div>
41
44
  <template v-if="hasEvaluateSetting">
42
- <div
43
- >测评结果:<span class="score-result">{{ config.evaluateResult }}</span></div
44
- >
45
- <div
46
- >结果说明:<span>{{ config.evaluateResultExplain }}</span></div
47
- >
45
+ <div>
46
+ 测评结果:
47
+ <span class="score-result">{{ config.evaluateResult }}</span>
48
+ </div>
49
+ <div>
50
+ 结果说明:<span>{{ config.evaluateResultExplain }}</span>
51
+ </div>
48
52
  </template>
49
53
  </div>
50
54
  <a-form-model
@@ -129,12 +133,15 @@
129
133
  v-html="handleShowQuestionNumber(item)"
130
134
  ></span>
131
135
  <span class="required-text" v-if="isFormBoldOpen(item)">(必填)</span>
136
+ <span class="evalute-label" v-if="showEvaluateLabel(item)">
137
+ {{ showEvaluateLabel(item) }}
138
+ </span>
132
139
  </span>
133
140
  <!-- 输入框 -->
134
141
  <MyInput
135
142
  v-bind="$attrs"
136
143
  v-if="isInput(item.type)"
137
- v-model="form[item.title]"
144
+ v-model="form[formKey(item)]"
138
145
  :type="item.valueType"
139
146
  :row="item.setting.inputRow || 1"
140
147
  :defaultPlaceHolder="item.setting.defaultPlaceHolder"
@@ -145,7 +152,7 @@
145
152
  <MyChoice
146
153
  v-bind="$attrs"
147
154
  v-else-if="isChoice(item.type)"
148
- v-model="form[item.title]"
155
+ v-model="form[formKey(item)]"
149
156
  :item="item"
150
157
  :isLock="componentDisable"
151
158
  :curIndex="index"
@@ -182,7 +189,7 @@
182
189
  >
183
190
  <a-input
184
191
  placeholder="请选择"
185
- :value="handleGetAddress(form[item.title])"
192
+ :value="handleGetAddress(form[formKey(item)])"
186
193
  disabled
187
194
  >
188
195
  <a-icon slot="prefix" type="info-circle" />
@@ -190,7 +197,7 @@
190
197
  <MapComp
191
198
  v-bind="$attrs"
192
199
  :visible.sync="mapVisible"
193
- :locationProp="form[item.title]"
200
+ :locationProp="form[formKey(item)]"
194
201
  :isLock="componentDisable"
195
202
  @selectLocation="handleSelectLocation($event, item)"
196
203
  />
@@ -221,10 +228,12 @@
221
228
  :source="'guage'"
222
229
  :formData="item"
223
230
  :limitNum="item.setting.limitPic"
224
- :defFileList="form[item.title]"
231
+ :defFileList="form[formKey(item)]"
225
232
  :isLock="componentDisable"
226
233
  @vodFileList="vodFileList($event, item)"
227
234
  />
235
+ <!-- 答案解析 -->
236
+ <answerParse v-if="showAnswerParse(item)" :item="item"></answerParse>
228
237
  </a-form-model-item>
229
238
  </template>
230
239
  </template>
@@ -272,6 +281,7 @@ import moment from "moment";
272
281
  import utils from "@/utils/utils-map";
273
282
  import evaluatePage from "./evaluatePage.vue";
274
283
  import evaluateCountdown from "./evaluateCountdown.vue";
284
+ import answerParse from "./answerParse.vue";
275
285
  import vexutils from '@/utils/vexutils';
276
286
  export default create({
277
287
  name: "scale-view",
@@ -330,7 +340,8 @@ export default create({
330
340
  [FormModel.Item.name]: FormModel.Item,
331
341
  [Tooltip.name]: Tooltip,
332
342
  evaluatePage,
333
- evaluateCountdown
343
+ evaluateCountdown,
344
+ answerParse
334
345
  },
335
346
  computed: {
336
347
  queryformBoldOpen() {
@@ -386,14 +397,14 @@ export default create({
386
397
  if (!this.isEvaluation(type)) return tempTile;
387
398
  if (this.noBtn) {
388
399
  let score = this.handleEvaluationScore(item);
389
- return `${tempTile}&nbsp;<span style="color:#3e85ff;">${score}</span>`;
400
+ return `${tempTile}&nbsp;<span style="color:#2d7aff;">${score}</span>`;
390
401
  }
391
402
  if (!this.isLock) {
392
403
  let score = this.handleEvaluationScore(item);
393
- return `${tempTile}&nbsp;<span style="color:#3e85ff;">${score}</span>`;
404
+ return `${tempTile}&nbsp;<span style="color:#2d7aff;">${score}</span>`;
394
405
  }
395
406
  if (item.questionScore !== undefined) {
396
- return `${tempTile}&nbsp;<span style="color:#3e85ff;">(${item.questionScore}分)</span>`;
407
+ return `${tempTile}&nbsp;<span style="color:#2d7aff;">(${item.questionScore}分)</span>`;
397
408
  }
398
409
  return tempTile;
399
410
  };
@@ -417,7 +428,7 @@ export default create({
417
428
  },
418
429
  getTimeValue() {
419
430
  return function(item) {
420
- let value = this.form[item.title];
431
+ let value = this.form[this.formKey(item)];
421
432
  return value;
422
433
  };
423
434
  },
@@ -471,6 +482,36 @@ export default create({
471
482
  return this.hideBtn || this.isLock;
472
483
  }
473
484
  return this.hideBtn || this.isLock || this.isFinished;
485
+ },
486
+ showEvaluateLabel() {
487
+ return function(item) {
488
+ let obj = {
489
+ EVALUATE_RADIO_BLOCK: "单选题",
490
+ EVALUATE_CHECKBOX_BLOCK: "多选题"
491
+ };
492
+ return obj[item.type];
493
+ };
494
+ },
495
+ showAnswerParse() {
496
+ return function(item) {
497
+ let { evaluateAnswer } = this.config?.evaluateResultSetting || {};
498
+ let arr = [
499
+ "EVALUATE_RADIO_BLOCK",
500
+ "EVALUATE_CHECKBOX_BLOCK",
501
+ "EVALUATE_SELECT",
502
+ "EVALUATE_INPUT"
503
+ ];
504
+ let maxScore = item?.scoreConfigs || 0;
505
+ return evaluateAnswer && this.isFinished && arr.includes(item.type) && maxScore;
506
+ };
507
+ },
508
+ tipMsg() {
509
+ return this.type === "customList" ? "保存" : "提交";
510
+ },
511
+ formKey() {
512
+ return function(item) {
513
+ return item.databaseTitle || item.title;
514
+ };
474
515
  }
475
516
  },
476
517
  watch: {
@@ -620,7 +661,7 @@ export default create({
620
661
  };
621
662
  for (let key in evaluateResultSetting) {
622
663
  let value = evaluateResultSetting[key];
623
- if (value && value.includes("${")) {
664
+ if (value && key != "evaluateAnswer" && value.includes("${")) {
624
665
  let parseValue = value.replace(/\$\{([^}]+)\}/g, (_v, $1) => {
625
666
  let param;
626
667
  if ($1.startsWith("form.")) {
@@ -709,21 +750,22 @@ export default create({
709
750
  const formData = {};
710
751
  let val;
711
752
  formArray.forEach(item => {
753
+ const key = this.formKey(item);
712
754
  const { type } = item;
713
755
  switch (type) {
714
756
  case "LOCATION":
715
- formData[item.title] = item.dbValue || "";
757
+ formData[key] = item.dbValue || "";
716
758
  break;
717
759
  case "SEARCH_CASCADE":
718
- formData[item.title] = item.dbValue || [];
760
+ formData[key] = item.dbValue || [];
719
761
  break;
720
762
  case "ADDRESS":
721
- formData[item.title] = item.dbValue || "";
763
+ formData[key] = item.dbValue || "";
722
764
  this.defaultAddress = item.dbValue || {};
723
765
  break;
724
766
  case "LABEL":
725
- formData[item.title] = item.dbValue || {};
726
- if (utils.isObject(item.dbValue)) {
767
+ formData[key] = item.dbValue || {};
768
+ if (this.$utils.isObject(item.dbValue)) {
727
769
  this.labelSelectedList = item.dbValue?.labels || [];
728
770
  } else if (Array.isArray(item.dbValue)) {
729
771
  this.labelSelectedList = item.dbValue;
@@ -732,33 +774,33 @@ export default create({
732
774
  }
733
775
  break;
734
776
  case "TITLE":
735
- formData[item.title] = item.title;
777
+ formData[key] = item.title;
736
778
  break;
737
779
  case "IMGCARD":
738
- formData[item.title] = item.setting?.imgUrl || "";
780
+ formData[key] = item.setting?.imgUrl || "";
739
781
  break;
740
782
  case "UPFILE":
741
783
  case "UPPICTURE":
742
- formData[item.title] = item.dbValue || [];
784
+ formData[key] = item.dbValue || [];
743
785
  break;
744
786
  // 自定义列表特殊处理
745
787
  case "CHECKBOX_BLOCK":
746
788
  if (item.dbValue && !Array.isArray(item.dbValue) && this.type === "customList") {
747
- formData[item.title] = item.dbValue.split(",").filter(ii => !!ii);
789
+ formData[key] = item.dbValue.split(",").filter(ii => !!ii);
748
790
  } else {
749
791
  val = item.dbValue || item.setting.defaultValue;
750
- if (utils.isJSON(val)) {
792
+ if (this.$utils.isJSON(val)) {
751
793
  val = JSON.parse(val);
752
794
  }
753
- formData[item.title] = val;
795
+ formData[key] = val;
754
796
  }
755
797
  break;
756
798
  default:
757
799
  val = item.dbValue || item.setting.defaultValue;
758
- if (utils.isJSON(val)) {
800
+ if (this.$utils.isJSON(val)) {
759
801
  val = JSON.parse(val);
760
802
  }
761
- formData[item.title] = val;
803
+ formData[key] = val;
762
804
  break;
763
805
  }
764
806
  });
@@ -957,7 +999,7 @@ export default create({
957
999
  if (!outDateMaxValue || !dateType) return callback();
958
1000
  let matchDateItem = this.formArray.find(v => v.seq === outDateMaxValue);
959
1001
  if (!matchDateItem || matchDateItem.hide) return callback();
960
- let matchValue = this.form[matchDateItem.title];
1002
+ let matchValue = this.form[this.formKey(matchDateItem)];
961
1003
  if (!matchValue) return;
962
1004
  let isMax = this.handleMax(dateType, value, matchValue);
963
1005
  if (!isMax) {
@@ -994,7 +1036,8 @@ export default create({
994
1036
  handleSelectLocation(e, item) {
995
1037
  const { locationProp, isInit } = e;
996
1038
  this.mapLocation = locationProp;
997
- this.form[item.title] = locationProp;
1039
+ const key = this.formKey(item);
1040
+ this.form[key] = locationProp;
998
1041
  this.mapVisible = isInit || false;
999
1042
  },
1000
1043
  isInput(type) {
@@ -1079,7 +1122,8 @@ export default create({
1079
1122
  if (item.seq > seq && item.seq < lastSeq) {
1080
1123
  item.isShow = false;
1081
1124
  // 跳过时 清空已填内容
1082
- this.form[item.title] && (this.form[item.title] = "");
1125
+ const key = this.formKey(item);
1126
+ this.form[key] && (this.form[key] = "");
1083
1127
  } else {
1084
1128
  item.isShow = true;
1085
1129
  }
@@ -1094,12 +1138,13 @@ export default create({
1094
1138
  }
1095
1139
  } else if (nextLogic.next_logic == "uncondition") {
1096
1140
  formArray.forEach(item => {
1141
+ const key = this.formKey(item);
1097
1142
  if (item.seq > seq && item.seq < lastSeq) {
1098
1143
  let res = utils.isEmpty(choiceValue);
1099
1144
  item.isShow = res;
1100
1145
  // 跳过时 清空已填内容
1101
1146
  if (!res) {
1102
- this.form[item.title] && (this.form[item.title] = "");
1147
+ this.form[key] && (this.form[key] = "");
1103
1148
  }
1104
1149
  }
1105
1150
  });
@@ -1152,21 +1197,25 @@ export default create({
1152
1197
  },
1153
1198
  // 单选组件回调
1154
1199
  radioChange(val, item) {
1155
- this.form[item.title] = val;
1200
+ const key = this.formKey(item);
1201
+ this.form[key] = val;
1156
1202
  this.nextLogicEvent(val, item, this.formArray);
1157
1203
  },
1158
1204
  // 多选组件回调
1159
1205
  checkboxChange(val, item) {
1160
- this.form[item.title] = val;
1206
+ const key = this.formKey(item);
1207
+ this.form[key] = val;
1161
1208
  this.nextLogicEvent(val, item, this.formArray);
1162
1209
  },
1163
1210
  // 标签组件回调
1164
1211
  labelChange(labelList, item) {
1165
- this.form[item.title] = this.handleGetLabelSubmit(labelList);
1212
+ const key = this.formKey(item);
1213
+ this.form[key] = this.handleGetLabelSubmit(labelList);
1166
1214
  },
1167
1215
  // 视频组件回调
1168
1216
  vodFileList(list, item) {
1169
- this.form[item.title] = list;
1217
+ const key = this.formKey(item);
1218
+ this.form[key] = list;
1170
1219
  },
1171
1220
  handleGetLabelSubmit(labelSelectedList) {
1172
1221
  if (!labelSelectedList || !labelSelectedList.length)
@@ -1190,16 +1239,19 @@ export default create({
1190
1239
  },
1191
1240
  // 地址回调
1192
1241
  changeAddress(allValue, item) {
1193
- this.form[item.title] = allValue;
1242
+ const key = this.formKey(item);
1243
+ this.form[key] = allValue;
1194
1244
  },
1195
1245
  // 上传回调
1196
1246
  changeUpload(value, item) {
1197
- this.form[item.title] = value;
1247
+ const key = this.formKey(item);
1248
+ this.form[key] = value;
1198
1249
  },
1199
1250
  // 时间回调
1200
1251
  changeTime(value, item) {
1201
- this.form[item.title] = value;
1202
- this.submitForm[item.title] = value;
1252
+ const key = this.formKey(item);
1253
+ this.form[key] = value;
1254
+ this.submitForm[key] = value;
1203
1255
  },
1204
1256
  // 保存
1205
1257
  onSubmit() {
@@ -1209,23 +1261,25 @@ export default create({
1209
1261
  (!evaluateResultSetting || !Object.keys(evaluateResultSetting).length) &&
1210
1262
  !this.showEvaluateEntry
1211
1263
  ) {
1212
- this.onSubmitForm();
1264
+ this.confirmSubmit("确认要提交吗?");
1213
1265
  return;
1214
1266
  }
1215
1267
  let countdownDom = this.$refs.evaluateCountdown;
1216
1268
  if (!countdownDom?.showEvaluateCountdown) {
1217
- this.onSubmitForm();
1269
+ this.confirmSubmit("确认要结束测评吗?");
1218
1270
  return;
1219
1271
  }
1220
1272
 
1221
- let message = "确定要提前结束吗?";
1273
+ let message = "确认要提前结束测评吗?";
1222
1274
  let setAnswered = this.$refs.evaluateCountdown?.setAnswered;
1223
1275
  let totalLen = this.$refs.evaluateCountdown?.totalLen;
1224
1276
  // 存在未解答题目
1225
1277
  if (setAnswered < totalLen) {
1226
1278
  message = "存在未解答的题目,确定要提前结束吗?";
1227
1279
  }
1228
-
1280
+ this.confirmSubmit(message);
1281
+ },
1282
+ confirmSubmit(message) {
1229
1283
  let _this = this;
1230
1284
  this.$confirm({
1231
1285
  title: "温馨提示",
@@ -1491,6 +1545,9 @@ export default create({
1491
1545
  &.scale-container-nopadding {
1492
1546
  height: 100%;
1493
1547
  }
1548
+ &::-webkit-scrollbar {
1549
+ width: 10px;
1550
+ }
1494
1551
  }
1495
1552
  /deep/ .no-data-tip {
1496
1553
  width: 100%;
@@ -1569,6 +1626,29 @@ export default create({
1569
1626
  .required-text {
1570
1627
  color: #e02828;
1571
1628
  }
1629
+ .evalute-label {
1630
+ display: inline-block;
1631
+ height: 20px;
1632
+ line-height: 20px;
1633
+ padding: 0 5px;
1634
+ margin-left: 4px;
1635
+ font-size: 12px;
1636
+ color: #2d7aff;
1637
+ border-radius: 4px;
1638
+ border: 1px solid rgba(45, 122, 255, 0.5);
1639
+ background: rgba(45, 122, 255, 0.1);
1640
+ }
1641
+ /deep/ .ant-form-item-label {
1642
+ // white-space: break-spaces;
1643
+ white-space: unset;
1644
+ text-align: left;
1645
+ line-height: 20px;
1646
+ padding: 6px 0;
1647
+ width: 100%;
1648
+ .ant-form-item-no-colon {
1649
+ width: 100%;
1650
+ }
1651
+ }
1572
1652
  }
1573
1653
  .footer {
1574
1654
  position: absolute;
@@ -138,6 +138,8 @@
138
138
  import { Icon, Checkbox, Tree, Tooltip, Input, Spin } from "ant-design-vue";
139
139
  import searchTree from "./search-tree";
140
140
  import create from '@/core/create';
141
+ import vexutils from '@/utils/vexutils';
142
+
141
143
  /**
142
144
  * 查询没有部门的分类时,parent_id_obj 为 undefined a-tree 展示异常。
143
145
  * 前端 赋上固定key 标识 该分类 无部门,该key 不能提交接口。
@@ -749,8 +751,8 @@ export default create({
749
751
 
750
752
  let allSearchkeysOther = this.search.dataListKeys.other;
751
753
 
752
- this.checkedKeys.main = this.$utils.uniq([...this.checkedKeys.main, ...allSearchkeysMain]);
753
- this.checkedKeys.other = this.$utils.uniq([
754
+ this.checkedKeys.main = vexutils.uniq([...this.checkedKeys.main, ...allSearchkeysMain]);
755
+ this.checkedKeys.other = vexutils.uniq([
754
756
  ...this.checkedKeys.other,
755
757
  ...allSearchkeysOther
756
758
  ]);
@@ -842,7 +844,7 @@ export default create({
842
844
  },
843
845
 
844
846
  removeCheckedkeysMain(keys) {
845
- let checkedKeysMain = this.$utils.clone(this.checkedKeys.main, true);
847
+ let checkedKeysMain = vexutils.clone(this.checkedKeys.main, true);
846
848
  keys.forEach(key => {
847
849
  //
848
850
  let index = checkedKeysMain.findIndex(mainKey => mainKey === key);