cnhis-design-vue 2.1.79 → 2.1.81

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 (130) hide show
  1. package/CHANGELOG.md +52 -4
  2. package/es/affix/index.js +8 -8
  3. package/es/age/index.js +10 -10
  4. package/es/alert/index.js +8 -8
  5. package/es/anchor/index.js +8 -8
  6. package/es/auto-complete/index.js +8 -8
  7. package/es/avatar/index.js +8 -8
  8. package/es/back-top/index.js +8 -8
  9. package/es/badge/index.js +8 -8
  10. package/es/base/index.js +8 -8
  11. package/es/big-table/index.js +115 -95
  12. package/es/big-table/style.css +1 -1
  13. package/es/breadcrumb/index.js +8 -8
  14. package/es/button/index.js +22 -22
  15. package/es/calendar/index.js +8 -8
  16. package/es/captcha/index.js +3 -3
  17. package/es/card/index.js +8 -8
  18. package/es/carousel/index.js +8 -8
  19. package/es/cascader/index.js +8 -8
  20. package/es/checkbox/index.js +9 -9
  21. package/es/col/index.js +8 -8
  22. package/es/collapse/index.js +8 -8
  23. package/es/color-picker/index.js +1 -1
  24. package/es/comment/index.js +8 -8
  25. package/es/config-provider/index.js +8 -8
  26. package/es/date-picker/index.js +8 -8
  27. package/es/descriptions/index.js +8 -8
  28. package/es/divider/index.js +8 -8
  29. package/es/drag-layout/index.js +3 -3
  30. package/es/drawer/index.js +8 -8
  31. package/es/dropdown/index.js +8 -8
  32. package/es/editor/index.js +1 -1
  33. package/es/ellipsis/index.js +1 -1
  34. package/es/empty/index.js +8 -8
  35. package/es/fabric-chart/index.js +9 -9
  36. package/es/form/index.js +8 -8
  37. package/es/form-model/index.js +8 -8
  38. package/es/form-table/index.js +66 -66
  39. package/es/index/index.js +4328 -1795
  40. package/es/index/style.css +1 -1
  41. package/es/input/index.js +9 -9
  42. package/es/input-number/index.js +8 -8
  43. package/es/layout/index.js +8 -8
  44. package/es/list/index.js +8 -8
  45. package/es/locale-provider/index.js +8 -8
  46. package/es/map/index.js +9 -9
  47. package/es/mentions/index.js +8 -8
  48. package/es/menu/index.js +8 -8
  49. package/es/message/index.js +8 -8
  50. package/es/multi-chat/index.js +76 -76
  51. package/es/multi-chat-client/index.js +70 -70
  52. package/es/multi-chat-history/index.js +4 -4
  53. package/es/multi-chat-record/index.js +14 -14
  54. package/es/multi-chat-setting/index.js +22 -22
  55. package/es/multi-chat-sip/index.js +1 -1
  56. package/es/notification/index.js +8 -8
  57. package/es/page-header/index.js +8 -8
  58. package/es/pagination/index.js +8 -8
  59. package/es/popconfirm/index.js +8 -8
  60. package/es/popover/index.js +8 -8
  61. package/es/progress/index.js +8 -8
  62. package/es/radio/index.js +9 -9
  63. package/es/rate/index.js +8 -8
  64. package/es/result/index.js +8 -8
  65. package/es/row/index.js +8 -8
  66. package/es/scale-container/index.js +1 -1
  67. package/es/scale-view/index.js +52 -50
  68. package/es/scale-view/style.css +1 -1
  69. package/es/select/index.js +12 -12
  70. package/es/select-label/index.js +36 -34
  71. package/es/select-label/style.css +1 -1
  72. package/es/select-person/index.js +2 -2
  73. package/es/select-tag/index.js +4248 -0
  74. package/es/select-tag/style.css +1 -0
  75. package/es/shortcut-setter/index.js +10 -10
  76. package/es/skeleton/index.js +8 -8
  77. package/es/slider/index.js +8 -8
  78. package/es/space/index.js +8 -8
  79. package/es/spin/index.js +8 -8
  80. package/es/statistic/index.js +8 -8
  81. package/es/steps/index.js +8 -8
  82. package/es/switch/index.js +8 -8
  83. package/es/table-filter/index.js +3158 -1350
  84. package/es/table-filter/style.css +1 -1
  85. package/es/tabs/index.js +8 -8
  86. package/es/tag/index.js +9 -9
  87. package/es/time-picker/index.js +8 -8
  88. package/es/timeline/index.js +8 -8
  89. package/es/tooltip/index.js +8 -8
  90. package/es/transfer/index.js +8 -8
  91. package/es/tree/index.js +8 -8
  92. package/es/tree-select/index.js +8 -8
  93. package/es/upload/index.js +8 -8
  94. package/es/verification-code/index.js +2 -2
  95. package/lib/cui.common.js +4369 -1699
  96. package/lib/cui.umd.js +4369 -1699
  97. package/lib/cui.umd.min.js +82 -82
  98. package/package.json +1 -1
  99. package/packages/big-table/src/BigTable.vue +15 -3
  100. package/packages/big-table/src/assets/style/table-base.less +7 -4
  101. package/packages/index.js +3 -0
  102. package/packages/select-label/select-label.vue +18 -2
  103. package/packages/select-tag/index.js +14 -0
  104. package/packages/select-tag/label-classify.vue +133 -0
  105. package/packages/select-tag/labelFormContent.vue +295 -0
  106. package/packages/select-tag/select-label.vue +274 -0
  107. package/packages/table-filter/src/base-search-com/BaseSearch.vue +11 -15
  108. package/packages/table-filter/src/components/TextOverTooltip.vue +24 -11
  109. package/packages/table-filter/src/components/age-com/index.vue +3 -3
  110. package/packages/table-filter/src/components/checkbox-group/CheckboxGroup.vue +53 -0
  111. package/packages/table-filter/src/components/multi-select/multi-select.vue +7 -1
  112. package/packages/table-filter/src/components/out-quick-search/out-quick-search.vue +5 -119
  113. package/packages/table-filter/src/components/range-age/index.vue +11 -12
  114. package/packages/table-filter/src/components/render-widget/components/DateRangeQuick.vue +216 -0
  115. package/packages/table-filter/src/components/render-widget/components/Label.vue +209 -0
  116. package/packages/table-filter/src/components/render-widget/components/NumberRange.vue +147 -0
  117. package/packages/table-filter/src/components/render-widget/components/SelectDynamic.vue +280 -0
  118. package/packages/table-filter/src/components/render-widget/components/SelectLabel.vue +80 -0
  119. package/packages/table-filter/src/components/render-widget/components/index.js +6 -4
  120. package/packages/table-filter/src/components/render-widget/enums.js +29 -22
  121. package/packages/table-filter/src/components/render-widget/index.vue +45 -5
  122. package/packages/table-filter/src/components/render-widget/mixins/dynamic-method.js +164 -0
  123. package/packages/table-filter/src/components/render-widget/mixins/label-method.js +23 -0
  124. package/packages/table-filter/src/components/render-widget/widgetCfgMaps.js +194 -46
  125. package/packages/table-filter/src/components/search-filter/SearchFilter.vue +3 -1
  126. package/packages/table-filter/src/components/search-modal/set-classification.vue +5 -1
  127. package/packages/table-filter/src/mixins/mixins.js +192 -133
  128. package/packages/table-filter/src/mixins/out-quick-method.js +123 -0
  129. package/packages/table-filter/src/mixins/renderWidget.js +21 -13
  130. package/packages/table-filter/src/quick-search/QuickSearch.vue +201 -133
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cnhis-design-vue",
3
- "version": "2.1.79",
3
+ "version": "2.1.81",
4
4
  "description": "前端业务UI库",
5
5
  "keyword": "cnhis-design-vue vue cnhis",
6
6
  "homepage": "http://dv.cnhis.com/",
@@ -733,7 +733,7 @@ export default create({
733
733
  return str;
734
734
  },
735
735
  // 日期显示格式化
736
- getDate(row, item) {
736
+ getDate(row, item, attrType) {
737
737
  let obj = row[item.columnName] || '';
738
738
  let style = {};
739
739
  // fillColor 有值代表背景色
@@ -754,6 +754,13 @@ export default create({
754
754
  ];
755
755
  }
756
756
  }
757
+ if (attrType === 'BIRTHDAY') {
758
+ return [
759
+ <a-tooltip title={obj}>
760
+ <span domPropsInnerHTML={obj} style={style} />
761
+ </a-tooltip>
762
+ ];
763
+ }
757
764
  return [<span domPropsInnerHTML={obj} style={style}></span>];
758
765
  },
759
766
  // 百分数格式化
@@ -1415,6 +1422,10 @@ export default create({
1415
1422
  this.columnLen = currentColumns.filter(item => item.visible).length;
1416
1423
  return columns;
1417
1424
  },
1425
+ _isAge(item){
1426
+ if(item.attrType !== 'BIRTHDAY') return false;
1427
+ return item.settingObj?.format?.includes?.("age")
1428
+ },
1418
1429
  // 2022/12/1 沈培均/方晶晶要求新增 如果有自定义提示就不显示表格自带的提示
1419
1430
  handleShowOverflow(item) {
1420
1431
  // 2023/03/17 新增单行高度由内容撑开, 不需要缺省
@@ -1422,6 +1433,7 @@ export default create({
1422
1433
  if (item.columnName == "operatorColumn") return false;
1423
1434
  // 选人组件 自己的tooltip
1424
1435
  if (item.attrType === "CANDIDATE_COMPONENTS") return false;
1436
+ if(this._isAge(item)) return false;
1425
1437
  let {showSetting} = item.settingObj || {}
1426
1438
  if (!showSetting || !showSetting.length) return 'title';
1427
1439
  let hasTips = 'title';
@@ -2071,8 +2083,8 @@ export default create({
2071
2083
  if (attrType == 'MAP') {
2072
2084
  return this.getMapVal(row, own);
2073
2085
  }
2074
- if (attrType == 'DATE' || attrType == 'TASKDATE') {
2075
- return this.getDate(row, own);
2086
+ if (attrType == 'DATE' || attrType == 'TASKDATE'|| this._isAge(own)) {
2087
+ return this.getDate(row, own, attrType);
2076
2088
  }
2077
2089
  if (attrType == 'PERCENTAGE') {
2078
2090
  return this.getPercentage(row, own);
@@ -273,20 +273,23 @@ body {
273
273
  border-right-color: #5585f5;
274
274
  }
275
275
  }
276
+ /deep/ .vxe-body--column.col--checkbox {
277
+ .vxe-cell {
278
+ position: relative;
279
+ }
280
+ }
276
281
  /deep/ .disabled-checked-tips {
277
282
  position: absolute;
278
- left: 6px;
283
+ left: 50%;
279
284
  top: 50%;
280
- bottom: 0;
281
- right: 0;
282
285
  box-sizing: border-box;
283
286
  width: 16px;
284
287
  height: 16px;
285
- margin-top: -8px;
286
288
  overflow: hidden;
287
289
  border-radius: 50%;
288
290
  border: 2px solid #b5b5b5;
289
291
  background: #fff;
292
+ transform: translate(-50%, -50%);
290
293
  &:hover {
291
294
  border-color: #ff1818;
292
295
  &::after {
package/packages/index.js CHANGED
@@ -76,6 +76,7 @@ import { default as Age } from './age';
76
76
  import { default as SelectPerson } from './select-person';
77
77
  import { default as ScaleView } from './scale-view';
78
78
  import { default as SelectLabel } from './select-label';
79
+ import { default as SelectTag } from './select-tag';
79
80
  import { default as VerificationCode } from './verification-code';
80
81
  import { default as DragLayout } from './drag-layout';
81
82
  import { default as MultiChat } from './multi-chat';
@@ -174,6 +175,7 @@ const components = [
174
175
  SelectPerson,
175
176
  ScaleView,
176
177
  SelectLabel,
178
+ SelectTag,
177
179
  VerificationCode,
178
180
  DragLayout,
179
181
  MultiChat,
@@ -290,6 +292,7 @@ export {
290
292
  locales,
291
293
  ScaleView,
292
294
  SelectLabel,
295
+ SelectTag,
293
296
  VerificationCode,
294
297
  DragLayout,
295
298
  MultiChat,
@@ -9,9 +9,9 @@
9
9
  新增
10
10
  </span>
11
11
  </div>
12
- <div class="common-label" v-if="sourceType == 'form' && commonLabelList.length && item_is_edit && !explicit">
12
+ <div class="common-label" v-if="sourceType == 'form' && commonLabelList.length && !explicit">
13
13
  <span>常用</span>
14
- <a-checkable-tag v-for="(item, i) in commonLabelList" v-model="item.isSelect" @change="handleCommonLabelChange($event, item)" :key="i" :style="handleLabelColor(item)">
14
+ <a-checkable-tag v-for="(item, i) in commonLabelList" v-model="item.isSelect" @change="handleCommonLabelChange($event, item)" :key="i" :style="handleLabelColor(item)" :class="{'label-common-check-disabel': !item_is_edit}">
15
15
  {{ item.labelName }}
16
16
  </a-checkable-tag>
17
17
  </div>
@@ -233,6 +233,7 @@ export default create({
233
233
  this.hanldeSetLabelItem(d.labelId, false);
234
234
  },
235
235
  handleCommonLabelChange(v, d) {
236
+ if(!this.item_is_edit) return;
236
237
  let multipleChoiceConfig = this.multipleChoiceConfig;
237
238
  let selectedList = this.labelSelectedList || [];
238
239
  if (v) {
@@ -304,6 +305,7 @@ export default create({
304
305
  },
305
306
 
306
307
  handleLabelColor(...arg) {
308
+ if(!this.item_is_edit) return {}
307
309
  return utils.handleLabelColor(...arg);
308
310
  },
309
311
 
@@ -500,10 +502,24 @@ export default create({
500
502
  .ant-tag-checkable {
501
503
  cursor: pointer;
502
504
  box-sizing: border-box;
505
+ &.label-common-check-disabel {
506
+ color: rgba(33, 33, 33, 0.6);
507
+ background: rgb(250, 250, 250);
508
+ border-color: rgba(213, 213, 213, 0.8);
509
+ cursor: default;
510
+ &:hover,
511
+ &:active,
512
+ &:focus {
513
+ color: rgba(33, 33, 33, 0.6);
514
+ background: rgb(250, 250, 250);
515
+ border-color: rgba(213, 213, 213, 0.8);
516
+ }
517
+ }
503
518
  }
504
519
  /deep/ .ant-tag {
505
520
  margin-bottom: 4px;
506
521
  }
522
+
507
523
  }
508
524
  .form-add-icon-label {
509
525
  margin-bottom: 4px;
@@ -0,0 +1,14 @@
1
+ import SelectTag from './select-label';
2
+ import TagFormContent from './labelFormContent';
3
+
4
+ SelectTag.install = function(Vue){
5
+ Vue.component(SelectTag.name, SelectTag);
6
+ Vue.component(TagFormContent.name, TagFormContent);
7
+ }
8
+
9
+
10
+ Object.assign(SelectTag, {
11
+ TagFormContent,
12
+ });
13
+
14
+ export default SelectTag;
@@ -0,0 +1,133 @@
1
+ <template>
2
+ <div class="edit-content">
3
+ <div v-if="!labelList || labelList.length === 0" class="label-disable-wrap">
4
+ <p class="label-disable-title">无可选标签</p>
5
+ <p class="label-disable-desc">请联系管理员进行标签管理设置</p>
6
+ </div>
7
+
8
+ <div v-else class="label-content">
9
+ <a-checkable-tag
10
+ v-for="item in labelList"
11
+ v-model="item.isSelect"
12
+ @change="onHandleLabelChange($event, item, categoryItem)"
13
+ :key="item.labelCode"
14
+ :style="formatStyle(item)"
15
+ >
16
+ <a-tooltip placement="topLeft" :mouseEnterDelay="0.5" :mouseLeaveDelay="0">
17
+ <template slot="title">
18
+ <span>{{ item.labelShowText }}</span>
19
+ </template>
20
+ {{ item.labelShowText }}
21
+ </a-tooltip>
22
+ </a-checkable-tag>
23
+ </div>
24
+ </div>
25
+ </template>
26
+
27
+ <script>
28
+ import { Tooltip, Icon, Button, Input, Tag, Tabs, Anchor } from 'ant-design-vue';
29
+ import create from '@/core/create';
30
+
31
+ const baseActiveColor = 'rgb(85, 133, 245)';
32
+ export default create({
33
+ name: 'label-classify',
34
+ data() {
35
+ return {};
36
+ },
37
+ props: {
38
+ categoryItem:{
39
+ type: Object,
40
+ default:()=>({})
41
+ },
42
+ selectedList:{
43
+ type: Array,
44
+ default:()=>[]
45
+ },
46
+ handleLabelChange: {
47
+ type: Function,
48
+ default: ()=>{}
49
+ }
50
+ },
51
+ computed: {
52
+ labelList(){
53
+ if (this.categoryItem?.labelList) {
54
+ return this.categoryItem.labelList.map(item => {
55
+ return {
56
+ ...item,
57
+ isSelect: this.showCheck(item)
58
+ }
59
+ })
60
+ }
61
+ return [];
62
+ }
63
+ },
64
+ methods: {
65
+ showCheck(label) {
66
+ const labelIndex = this.selectedList.findIndex(selectLabel => selectLabel.classifyId === this.categoryItem.classifyId && selectLabel.labelCode === label.labelCode);
67
+ return labelIndex > -1;
68
+ },
69
+ onHandleLabelChange(isSelect, item, categoryItem) {
70
+ this.handleLabelChange(isSelect, item, categoryItem);
71
+ },
72
+ formatStyle(item) {
73
+ return this.showCheck(item) ? {
74
+ background: item.backgroundColor || baseActiveColor,
75
+ borderColor: item.backgroundColor || baseActiveColor
76
+ } : {}
77
+ }
78
+ },
79
+ components: {
80
+ [Input.name]: Input,
81
+ [Icon.name]: Icon,
82
+ [Tabs.name]: Tabs,
83
+ [Tabs.TabPane.name]: Tabs.TabPane,
84
+ [Anchor.name]: Anchor,
85
+ [Anchor.Link.name]: Anchor.Link,
86
+ [Tooltip.name]: Tooltip,
87
+ [Button.name]: Button,
88
+ [Tag.name]: Tag,
89
+ [Tag.CheckableTag.name]: Tag.CheckableTag
90
+ },
91
+ });
92
+ </script>
93
+
94
+ <style lang="less" scoped>
95
+ .edit-content{
96
+ flex: 1;
97
+ padding: 8px 0 0 16px;
98
+ width: 100%;
99
+ .label-content{
100
+ display: flex;
101
+ flex-wrap: wrap;
102
+ line-height: 34px;
103
+ .ant-tag-checkable{
104
+ cursor: pointer;
105
+ position: relative;
106
+ height: 32px;
107
+ line-height: 32px;
108
+ text-align: center;
109
+ min-width: 108px;
110
+ max-width: 108px;
111
+ color: rgba(33, 33, 33, 0.6);
112
+ background: rgb(250, 250, 250);
113
+ border-color: rgba(213, 213, 213, 0.8);
114
+ font-size: 14px;
115
+ border-radius: 4px;
116
+ margin-bottom: 8px;
117
+ box-sizing: border-box;
118
+ span {
119
+ display: inline-block;
120
+ width: 80px;
121
+ height: 100%;
122
+ line-height: 30px;
123
+ overflow: hidden;
124
+ text-overflow: ellipsis;
125
+ white-space: nowrap;
126
+ }
127
+ }
128
+ .ant-tag-checkable-checked {
129
+ color: #fff !important;
130
+ }
131
+ }
132
+ }
133
+ </style>
@@ -0,0 +1,295 @@
1
+ <template>
2
+ <div class="labelFormContent-page">
3
+ <template v-if="!tagRequestMap.status">
4
+ <div class="label-disable-wrap" >{{tagRequestMap.resultMsg}}</div>
5
+ </template>
6
+ <template v-else>
7
+ <div v-if="!categoryList.length" class="label-disable-wrap">
8
+ <p class="label-disable-title">无可选标签</p>
9
+ <p class="label-disable-desc">请联系管理员进行标签管理设置</p>
10
+ </div>
11
+ <div v-show="categoryList.length > 0" class="label-wrap" >
12
+ <!-- 表单内嵌打开标签组件的样式 -->
13
+ <div v-if="explicit" class="explicit-continer">
14
+ <a-tabs hideAdd :activeKey="labelAnchorKey" type="card" @change="labelAnchorTabsOnChange" tab-position="top">
15
+ <a-tab-pane v-for="(v) in categoryList" :key="`#${v.classifyId}-${v.classifyName}`">
16
+ <span slot="tab">
17
+ {{ v.classifyName }}
18
+ <!-- <span class="edit-label-type">({{ v.multipleChoice == 2 ? '单' : '多' }}选)</span> -->
19
+ </span>
20
+ <div class="explicit-label-wrap left-label-wrap">
21
+ <div class="edit-label-content">
22
+ <labelClassify
23
+ :categoryItem="v"
24
+ :selectedList="curSelectedList"
25
+ :handleLabelChange="handleLabelChange"
26
+ />
27
+ </div>
28
+ </div>
29
+ </a-tab-pane>
30
+ </a-tabs>
31
+ </div>
32
+
33
+ <!-- 普通标签样式 -->
34
+ <div
35
+ v-else
36
+ class="left-label-wrap"
37
+ :class="{
38
+ 'total-left-label-wrap': isChangeWindow
39
+ }"
40
+ >
41
+ <a-tabs hideAdd :activeKey="labelAnchorKey" @change="labelAnchorTabsOnChange" tab-position="left">
42
+ <a-tab-pane v-for="(v) in categoryList" :key="`#${v.classifyId}-${v.classifyName}`">
43
+ <span slot="tab">
44
+ {{ v.classifyName }}
45
+ </span>
46
+ </a-tab-pane>
47
+ </a-tabs>
48
+ </div>
49
+
50
+ <div
51
+ v-if="!explicit"
52
+ class="right-label-wrap"
53
+ :class="{
54
+ 'total-right-label-wrap': isChangeWindow
55
+ }"
56
+ >
57
+ <a-anchor v-show="false" :getContainer="anchorGetContainer" @click="handleAnchorClick" @change="anchorOnChange">
58
+ <a-anchor-link
59
+ v-for="(v) in categoryList"
60
+ :key="v.classifyId"
61
+ :href="`#${v.classifyId}-${v.classifyName}`"
62
+ :title="v.classifyName"
63
+ />
64
+ </a-anchor>
65
+ <div v-for="(v, k) in categoryList" :key="k" class="edit-label-content">
66
+ <div class="edit-label" :id="`${v.classifyId}-${v.classifyName}`">
67
+ {{ v.classifyName }}
68
+ <!-- <span class="edit-label-type">({{ v.multipleChoice == 2 ? '单' : '多' }}选)</span> -->
69
+ </div>
70
+ <labelClassify
71
+ :categoryItem="v"
72
+ :selectedList="curSelectedList"
73
+ :handleLabelChange="handleLabelChange"
74
+ />
75
+ </div>
76
+ </div>
77
+ </div>
78
+ </template>
79
+ </div>
80
+ </template>
81
+ <script>
82
+
83
+ import { Tooltip, Icon, Button, Input, Tag, Tabs, Anchor } from 'ant-design-vue';
84
+ import create from '@/core/create';
85
+
86
+ import labelClassify from './label-classify.vue';
87
+ export default create({
88
+ name: 'tag-form-content',
89
+ components: {
90
+ [Input.name]: Input,
91
+ [Icon.name]: Icon,
92
+ [Tabs.name]: Tabs,
93
+ [Tabs.TabPane.name]: Tabs.TabPane,
94
+ [Anchor.name]: Anchor,
95
+ [Anchor.Link.name]: Anchor.Link,
96
+ [Tooltip.name]: Tooltip,
97
+ [Button.name]: Button,
98
+ [Tag.name]: Tag,
99
+ [Tag.CheckableTag.name]: Tag.CheckableTag,
100
+ labelClassify
101
+ },
102
+ props: {
103
+ // 选中的标签列表
104
+ selectedList: {
105
+ type: Array,
106
+ default: () => []
107
+ },
108
+ // 配置项
109
+ categoryList: {
110
+ type: Array,
111
+ default: () => []
112
+ },
113
+ // 弹窗样式
114
+ isChangeWindow: {
115
+ type: Boolean,
116
+ default: false
117
+ },
118
+ // 标签选择外显
119
+ explicit: {
120
+ type: Boolean,
121
+ default: false
122
+ },
123
+ // 接口请求状态
124
+ tagRequestMap: {
125
+ type: Object,
126
+ default: () => ({
127
+ status: true,
128
+ resultMsg: ''
129
+ })
130
+ }
131
+ },
132
+ inject: {},
133
+ data() {
134
+ return {
135
+ labelAnchorKey: this.categoryList?.length > 0 ? `#${this.categoryList[0].classifyId}-${this.categoryList[0].classifyName}` : '',
136
+ cacheAnchorKey: '',
137
+
138
+ curSelectedList: [] // 当前选中的label项
139
+ };
140
+ },
141
+
142
+ watch: {
143
+ selectedList: {
144
+ immediate: true,
145
+ deep: true,
146
+ handler(val) {
147
+ if (val) {
148
+ let list = Array.isArray(val) ? val : [];
149
+ this.curSelectedList = JSON.parse(JSON.stringify(list));
150
+ }
151
+ }
152
+ }
153
+ },
154
+ // 方法
155
+ methods: {
156
+ labelAnchorTabsOnChange(key) {
157
+ if (!key) return;
158
+ setTimeout(() => {
159
+ // let anchorKey = '#' + key;
160
+ let curLink;
161
+ curLink = this.$el.querySelector("a[href='" + key + "']");
162
+ curLink && curLink.click();
163
+ this.labelAnchorKey = key;
164
+ }, 32);
165
+ },
166
+ anchorOnChange(link) {
167
+ if (!link) return;
168
+ let curLink = link.slice(1);
169
+ this.cacheAnchorKey = curLink;
170
+ },
171
+ anchorGetContainer() {
172
+ return this.$el?.querySelector('.right-label-wrap');
173
+ },
174
+ handleAnchorClick(e) {
175
+ e.preventDefault();
176
+ },
177
+ handleLabelForm(cb) {
178
+ const selectList = [...(this.curSelectedList || [])];
179
+ cb(selectList);
180
+ },
181
+ handleLabelChange(isSelect, labelItem, categoryItem) {
182
+ let curSelecteds = this.curSelectedList || [];
183
+ if (isSelect) {
184
+ curSelecteds.push({
185
+ classifyId: categoryItem.classifyId,
186
+ classifyName: categoryItem.classifyName,
187
+ labelCode: labelItem.labelCode,
188
+ labelShowText: labelItem.labelShowText,
189
+ backgroundColor: labelItem.backgroundColor
190
+ })
191
+ } else {
192
+ const fdIndex = curSelecteds.findIndex(selectLabel => selectLabel.classifyId === categoryItem.classifyId && selectLabel.labelCode === labelItem.labelCode);
193
+ fdIndex > -1 && curSelecteds.splice(fdIndex, 1);
194
+ }
195
+ this.curSelectedList = curSelecteds;
196
+
197
+ // 外显实时改变通知
198
+ if (this.explicit) {
199
+ this.$emit('explicitOnChange', curSelecteds);
200
+ }
201
+ }
202
+ }
203
+ });
204
+ </script>
205
+ <style lang="less" scoped>
206
+ .labelFormContent-page {
207
+ width: 100%;
208
+ height: 100%;
209
+ .label-disable-wrap{
210
+ margin-top: 20px;
211
+ width: 100%;
212
+ font-size: 14px;
213
+ line-height: 20px;
214
+ display: flex;
215
+ align-items: center;
216
+ flex-direction: column;
217
+ color: #969696;
218
+ .label-disable-title {
219
+ color: #2e2e2e;
220
+ margin-bottom: 5px;
221
+ }
222
+ }
223
+
224
+ .label-wrap {
225
+ display: flex;
226
+ width: 100%;
227
+ height: 100%;
228
+ .left-label-wrap {
229
+ width: 160px;
230
+ height: 404px;
231
+ max-height: 404px;
232
+ &.total-left-label-wrap {
233
+ height: calc(100vh - 109px);
234
+ max-height: calc(100vh - 109px);
235
+ }
236
+ &.explicit-label-wrap {
237
+ width: 100%;
238
+ height: auto;
239
+ overflow: hidden;
240
+ overflow-y: auto;
241
+ }
242
+ /deep/.ant-tabs {
243
+ height: 100%;
244
+ .ant-tabs-nav-container {
245
+ padding: 0;
246
+ }
247
+ .ant-tabs-left-bar {
248
+ width: 100%;
249
+ .ant-tabs-tab {
250
+ text-align: left;
251
+ }
252
+ }
253
+ .ant-tabs-tab-prev,
254
+ .ant-tabs-tab-next {
255
+ display: none !important;
256
+ }
257
+ .ant-tabs-nav-wrap {
258
+ overflow-y: auto;
259
+ color: #212121;
260
+ .ant-tabs-tab {
261
+ padding: 12px 12px 12px 16px;
262
+ margin: 0px;
263
+ }
264
+ }
265
+ .ant-tabs-nav .ant-tabs-tab-active {
266
+ background-color: #f2f2f2;
267
+ }
268
+ }
269
+ }
270
+ .right-label-wrap {
271
+ flex: 1;
272
+ overflow-y: auto;
273
+ .edit-label-content{
274
+ display: flex;
275
+ flex-direction: column;
276
+ align-items: flex-start;
277
+ font-size: 14px;
278
+ .edit-label{
279
+ display: flex;
280
+ justify-content: center;
281
+ align-items: center;
282
+ padding: 0 5px 0 16px;
283
+ word-wrap: normal;
284
+ color: #212121;
285
+ font-size: 16px;
286
+ }
287
+ }
288
+ &.total-right-label-wrap {
289
+ max-height: calc(100vh - 109px);
290
+ }
291
+ }
292
+ }
293
+ }
294
+
295
+ </style>