cnhis-design-vue 2.1.150 → 2.1.152

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 (52) hide show
  1. package/CHANGELOG.md +70 -55
  2. package/es/age/index.js +2 -2
  3. package/es/big-table/index.js +54 -56
  4. package/es/big-table/style.css +1 -1
  5. package/es/button/index.js +36 -36
  6. package/es/button/style.css +1 -1
  7. package/es/captcha/index.js +3 -3
  8. package/es/card-reader-sdk/index.js +1 -1
  9. package/es/checkbox/index.js +1 -1
  10. package/es/color-picker/index.js +1 -1
  11. package/es/drag-layout/index.js +3 -3
  12. package/es/editor/index.js +1 -1
  13. package/es/ellipsis/index.js +1 -1
  14. package/es/fabric-chart/index.js +9 -9
  15. package/es/form-table/index.js +20 -20
  16. package/es/full-calendar/index.js +4 -4
  17. package/es/index/index.js +513 -360
  18. package/es/index/style.css +1 -1
  19. package/es/input/index.js +1 -1
  20. package/es/map/index.js +1 -1
  21. package/es/multi-chat/index.js +25 -25
  22. package/es/multi-chat-client/index.js +19 -19
  23. package/es/multi-chat-history/index.js +4 -4
  24. package/es/multi-chat-record/index.js +4 -4
  25. package/es/multi-chat-setting/index.js +20 -20
  26. package/es/multi-chat-sip/index.js +1 -1
  27. package/es/radio/index.js +1 -1
  28. package/es/scale-container/index.js +1 -1
  29. package/es/scale-view/index.js +299 -144
  30. package/es/scale-view/style.css +1 -1
  31. package/es/select/index.js +4 -4
  32. package/es/select-label/index.js +3 -3
  33. package/es/select-person/index.js +2 -2
  34. package/es/select-tag/index.js +4 -4
  35. package/es/shortcut-setter/index.js +2 -2
  36. package/es/slider-tree/index.js +1 -1
  37. package/es/table-filter/index.js +64 -64
  38. package/es/table-filter/style.css +1 -1
  39. package/es/tag/index.js +1 -1
  40. package/es/utils/time-domain.js +15 -0
  41. package/es/verification-code/index.js +2 -2
  42. package/lib/cui.common.js +645 -477
  43. package/lib/cui.umd.js +645 -477
  44. package/lib/cui.umd.min.js +26 -26
  45. package/package.json +1 -1
  46. package/packages/big-table/src/BigTable.vue +3 -3
  47. package/packages/button/src/ButtonPrint/new.vue +6 -6
  48. package/packages/scale-view/directive/drag-move.js +132 -0
  49. package/packages/scale-view/evaluateCountdown.vue +28 -26
  50. package/packages/scale-view/evaluatePage.vue +2 -1
  51. package/packages/scale-view/scaleView.vue +1 -1
  52. package/src/utils/time-domain.js +21 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cnhis-design-vue",
3
- "version": "2.1.150",
3
+ "version": "2.1.152",
4
4
  "description": "前端业务UI库",
5
5
  "keyword": "cnhis-design-vue vue cnhis",
6
6
  "homepage": "http://dv.cnhis.com/",
@@ -2206,15 +2206,15 @@ export default create({
2206
2206
  table.setAllCheckboxRow(false);
2207
2207
  */
2208
2208
  table?.setAllCheckboxRow(false);
2209
- this.$set(this, 'checkedRows', []);
2210
- this.pubCheckChange([], {isChecked: false});
2209
+ this.$set(this, 'checkedRows', [row]);
2210
+ this.pubCheckChange([row]);
2211
2211
  rowVal = row;
2212
2212
  } else {
2213
2213
  if (checkedRow.length > 1) return false;
2214
2214
  rowVal = checked || (checkedRow.length === 1 && !checked) ? checkedRow[0] : {};
2215
2215
  this.$set(this, 'checkedRows', [rowVal]);
2216
2216
  }
2217
- // this.updateAddCheckedRows(rowVal, true);
2217
+ this.updateAddCheckedRows(rowVal, true);
2218
2218
  // 需要选中行
2219
2219
  this.$emit('handlerClickRow', rowVal, rowIndex, { source, column, trigger });
2220
2220
  this.setTableCurrentRow(table, row);
@@ -621,7 +621,7 @@ export default create({
621
621
 
622
622
  if (!isNoPopup && (!formatListResult?.obj || formatListResult?.obj?.length == 0)) {
623
623
  this.options = [];
624
- this.$message.error(this.noformatTips || '获取打印格式失败,请联系管理员!');
624
+ this.$message.error(this.noformatTips || '缺少打印格式参数配置,请联系管理员!');
625
625
  return this.requestError();
626
626
  }
627
627
 
@@ -698,7 +698,7 @@ export default create({
698
698
 
699
699
  if (!isNoPopup && this.formatList.length == 0) {
700
700
  this.options = [];
701
- this.$message.error(this.noformatTips || '获取打印格式失败,请联系管理员!');
701
+ this.$message.error(this.noformatTips || '缺少打印格式参数配置,请联系管理员!');
702
702
  return this.requestError();
703
703
  }
704
704
  // if (!this.currentFormatId) {
@@ -754,7 +754,7 @@ export default create({
754
754
  const tempNumber = paramItem.templateNumbers[i];
755
755
  const templateObj = templateParams[tempNumber];
756
756
  if (!templateObj) {
757
- this.$message.error('当前勾选的数据没有匹配的模板');
757
+ this.$message.error(`勾选数据中模板为${tempNumber}没有匹配的格式`);
758
758
  return mergeData;
759
759
  }
760
760
  if (!mergeData[tempNumber]) {
@@ -770,7 +770,7 @@ export default create({
770
770
  const tempNumber = templateParamKeys[i];
771
771
  const templateObj = templateParams[tempNumber];
772
772
  if (!templateObj) {
773
- this.$message.error('当前勾选的数据没有匹配的模板');
773
+ this.$message.error(`勾选数据中模板为${tempNumber}没有匹配的格式`);
774
774
  return mergeData;
775
775
  }
776
776
  if (!mergeData[tempNumber]) {
@@ -789,7 +789,7 @@ export default create({
789
789
  const tempNumber = paramItem.templateNumbers[i];
790
790
  const templateObj = templateParams[tempNumber];
791
791
  if (!templateObj) {
792
- this.$message.error('当前勾选的数据没有匹配的模板');
792
+ this.$message.error(`勾选数据中模板为${tempNumber}没有匹配的格式`);
793
793
  return mergeData;
794
794
  }
795
795
  if (!mergeData[tempNumber]) {
@@ -805,7 +805,7 @@ export default create({
805
805
  const tempNumber = templateParamKeys[i];
806
806
  const templateObj = templateParams[tempNumber];
807
807
  if (!templateObj) {
808
- this.$message.error('当前勾选的数据没有匹配的模板');
808
+ this.$message.error(`勾选数据中模板为${tempNumber}没有匹配的格式`);
809
809
  return mergeData;
810
810
  }
811
811
  if (!mergeData[tempNumber]) {
@@ -0,0 +1,132 @@
1
+ const findparent = (el, name) => {
2
+ let parent = el.parentElement;
3
+ let pcname = parent.className || '';
4
+ while (parent && !pcname.includes(name)) {
5
+ parent = parent.parentElement;
6
+ if (parent) pcname = parent.className || '';
7
+ }
8
+ return parent;
9
+ };
10
+
11
+ const initSetDom = (dragDom, pDom) => {
12
+ const screenWidth = pDom?.clientWidth || document.body.clientWidth; // body当前宽度
13
+
14
+ const dragDomWidth = dragDom.offsetWidth; // 对话框宽度
15
+
16
+ const iL = screenWidth - dragDomWidth;
17
+
18
+ dragDom.style.cssText += `position: absolute;left:${iL}px;top:0 px;right:unset;`;
19
+ };
20
+
21
+ // 获取原有属性 ie dom元素.currentStyle 火狐谷歌 window.getComputedStyle(dom元素, null);
22
+ const sty = (function() {
23
+ if (document.body.currentStyle) {
24
+ // 在ie下兼容写法
25
+ return (dom, attr) => dom.currentStyle[attr];
26
+ }
27
+ return (dom, attr) => getComputedStyle(dom, null)[attr];
28
+ })();
29
+
30
+ const maskStyle = 'position: absolute;top: 0;left: 0;right: 0;bottom: 0;z-index: 2999;width: 100%;height: 100%;';
31
+
32
+ const mouseMove = (e, config) => {
33
+ const { dragDom, minDragDomLeft, maxDragDomLeft, disX, disY, minDragDomTop, maxDragDomTop, styL, styT } = config || {};
34
+ // 通过事件委托,计算移动的距离
35
+ let left = e.clientX - disX;
36
+ let top = e.clientY - disY;
37
+ // 边界处理
38
+ if (-left > minDragDomLeft) {
39
+ left = -minDragDomLeft;
40
+ } else if (left > maxDragDomLeft) {
41
+ left = maxDragDomLeft;
42
+ }
43
+
44
+ if (-top > minDragDomTop) {
45
+ top = -minDragDomTop;
46
+ } else if (top > maxDragDomTop) {
47
+ top = maxDragDomTop;
48
+ }
49
+
50
+ // 移动当前元素
51
+ dragDom.style.cssText += `;left:${left + styL}px;top:${top + styT}px;`;
52
+ };
53
+
54
+ const mouseUp = () => {
55
+ const iframeFix = document.getElementsByClassName('scale-countdown-iframeFix')[0];
56
+ iframeFix && document.body.removeChild(iframeFix);
57
+ document.onmousemove = null;
58
+ document.onmouseup = null;
59
+ };
60
+
61
+ const dragMethod = obj => {
62
+ const { el, containerName, targetName, contentName } = obj;
63
+ const pDom = findparent(el, containerName);
64
+
65
+ const dialogHeaderEl = pDom.querySelector(`.${targetName}`);
66
+ const dragDom = pDom.querySelector(`.${contentName}`);
67
+ // 初始化定位
68
+ initSetDom(dragDom, pDom);
69
+
70
+ dialogHeaderEl.style.cssText += ';cursor:move;';
71
+
72
+ dialogHeaderEl.onmousedown = e => {
73
+ const dialogMask = document.createElement('div');
74
+ dialogMask.className = 'scale-countdown-iframeFix';
75
+ dialogMask.setAttribute('style', maskStyle);
76
+ document.body.appendChild(dialogMask);
77
+
78
+ // 鼠标按下,计算当前元素距离可视区的距离
79
+ const disX = e.clientX - dialogHeaderEl.offsetLeft;
80
+ const disY = e.clientY - dialogHeaderEl.offsetTop;
81
+ const screenWidth = pDom?.clientWidth || document.body.clientWidth; // body当前宽度
82
+ const screenHeight = pDom?.clientHeight || document.documentElement.clientHeight; // 可见区域高度(应为body高度,可某些环境下无法获取)
83
+
84
+ const dragDomWidth = dragDom.offsetWidth; // 对话框宽度
85
+ const dragDomheight = dragDom.offsetHeight; // 对话框高度
86
+
87
+ const minDragDomLeft = dragDom.offsetLeft;
88
+ const maxDragDomLeft = screenWidth - dragDom.offsetLeft - dragDomWidth;
89
+
90
+ const minDragDomTop = dragDom.offsetTop;
91
+ const maxDragDomTop = screenHeight - dragDom.offsetTop - dragDomheight;
92
+
93
+ // 获取到的值带px 正则匹配替换
94
+ let styL = sty(dragDom, 'left');
95
+ // 为兼容ie
96
+ if (styL === 'auto') styL = '0px';
97
+ let styT = sty(dragDom, 'top');
98
+
99
+ // console.log(styL)
100
+ // 注意在ie中 第一次获取到的值为组件自带50% 移动之后赋值为px
101
+ if (styL.includes('%')) {
102
+ styL = +screenWidth * (+styL.replace(/%/g, '') / 100);
103
+ styT = +screenHeight * (+styT.replace(/%/g, '') / 100);
104
+ } else {
105
+ styL = +styL.replace(/px/g, '');
106
+ styT = +styT.replace(/px/g, '');
107
+ }
108
+
109
+ document.onmousemove = e => mouseMove(e, { dragDom, minDragDomLeft, maxDragDomLeft, disX, disY, minDragDomTop, maxDragDomTop, styL, styT });
110
+
111
+ document.onmouseup = mouseUp;
112
+ return false;
113
+ };
114
+ };
115
+
116
+ // 拖拽的指令
117
+ export default {
118
+ bind: function(el, binding, vnode) {
119
+ // 自定义属性,判断是否可拖拽
120
+ if (!binding.value) return;
121
+ const { target, container, content, isDrag } = binding.value || {};
122
+ if (!isDrag) return;
123
+
124
+ const containerName = container || 'r-scale-v3'; // 容器dom
125
+ const targetName = target || 'evaluateCountdown-wrap'; // 触发dom
126
+ const contentName = content || 'c-evaluateCountdown-v2'; // 移动dom
127
+
128
+ setTimeout(() => {
129
+ dragMethod({ el, containerName, targetName, contentName });
130
+ }, 50);
131
+ }
132
+ };
@@ -1,21 +1,29 @@
1
1
  <template>
2
- <div class="evaluateCountdown" :class="{ 'evaluateCountdown-hasTime': showEvaluateCountdown }">
3
- <div v-if="showEvaluateCountdown" class="countdown" :class="{ 'countdown-red': countdownRed }">
4
- <span>{{ countdownStr }}</span>
5
- <svg-icon icon-class="zhongtai-zujianliebiao-gongzuoshijian"></svg-icon>
6
- </div>
7
- <div class="answered-wrap">
8
- 答题情况: {{ setAnswered }}/<span>{{ totalLen }}</span>
2
+ <div
3
+ class="evaluateCountdown c-evaluateCountdown-v2"
4
+ v-drag-move="dragSetting"
5
+ :class="{ 'evaluateCountdown-hasTime': showEvaluateCountdown }"
6
+ >
7
+ <div class="evaluateCountdown-wrap">
8
+ <div v-if="showEvaluateCountdown" class="countdown" :class="{ 'countdown-red': countdownRed }">
9
+ <span>{{ countdownStr }}</span>
10
+ <svg-icon icon-class="zhongtai-zujianliebiao-gongzuoshijian"></svg-icon>
11
+ </div>
12
+ <div class="answered-wrap">
13
+ 答题情况: {{ setAnswered }}/<span>{{ totalLen }}</span>
14
+ </div>
9
15
  </div>
10
16
  </div>
11
17
  </template>
12
18
  <script>
13
19
  import evaluate from "./mixin/evaluate";
14
20
  import moment from 'moment';
21
+ import dragMove from './directive/drag-move'
15
22
  export default {
16
23
  name: "evaluateCountdown",
17
24
  mixins: [evaluate],
18
25
  components: {},
26
+ directives: { dragMove },
19
27
  props: [
20
28
  "formArray",
21
29
  "evaluateResultConfig",
@@ -27,7 +35,8 @@ export default {
27
35
  data() {
28
36
  return {
29
37
  source: "countdown",
30
- setAnswered: 0
38
+ setAnswered: 0,
39
+ dragSetting: { isDrag: true }
31
40
  };
32
41
  },
33
42
 
@@ -103,30 +112,23 @@ export default {
103
112
  background: #f2f2f4;
104
113
  border-radius: 8px;
105
114
  color: #212121;
106
- z-index: 1;
115
+ z-index: 2;
107
116
  text-align: center;
117
+ user-select: none;
108
118
  &.evaluateCountdown-hasTime {
109
119
 
110
- &:hover {
111
- padding: 8px 32px;
112
- background: #f1f1f4;
113
- .countdown {
114
- line-height: 40px;
115
- font-size: 26px;
116
- span {
117
- line-height: unset;
118
- }
119
- svg {
120
- display: none;
121
- }
120
+ padding: 8px 32px;
121
+ background: #f1f1f4;
122
+ .countdown {
123
+ line-height: 40px;
124
+ font-size: 26px;
125
+ span {
126
+ line-height: unset;
122
127
  }
123
- .answered-wrap {
124
- display: block;
128
+ svg {
129
+ display: none;
125
130
  }
126
131
  }
127
- .answered-wrap {
128
- display: none;
129
- }
130
132
  }
131
133
  .countdown {
132
134
  display: flex;
@@ -39,12 +39,13 @@
39
39
  </div>
40
40
  </template>
41
41
  <script>
42
+ import { Button } from 'ant-design-vue'
42
43
  import evaluate from "./mixin/evaluate";
43
44
  import moment from 'moment';
44
45
  export default {
45
46
  name: "evaluatePage",
46
47
  mixins: [evaluate],
47
- components: {},
48
+ components: {[Button.name]: Button,},
48
49
  props: ["formArray", "evaluateResultConfig", "evaluateResultSetting", "isFinished", "maxScore"],
49
50
  data() {
50
51
  return {
@@ -1,5 +1,5 @@
1
1
  <template>
2
- <div class="r-scale">
2
+ <div class="r-scale r-scale-v3">
3
3
  <slot v-if="spinning">
4
4
  <a-spin :indicator="indicator" tip="加载中..." />
5
5
  </slot>
@@ -89,6 +89,27 @@ const timeDomain = {
89
89
  .endOf('week');
90
90
  return [start, end];
91
91
  },
92
+ PAST_WEEK() {
93
+ const start = moment()
94
+ .add(-7, 'days')
95
+ .startOf('days');
96
+ const end = moment().endOf('days');
97
+ return [start, end];
98
+ },
99
+ PAST_MONTH() {
100
+ const start = moment()
101
+ .add(-30, 'days')
102
+ .startOf('days');
103
+ const end = moment().endOf('days');
104
+ return [start, end];
105
+ },
106
+ PAST_HALF_YEAR() {
107
+ const start = moment()
108
+ .add(-182, 'days')
109
+ .startOf('days');
110
+ const end = moment().endOf('days');
111
+ return [start, end];
112
+ },
92
113
 
93
114
  THIS_QUARTER() {
94
115
  const start = moment().startOf('quarter');