cnhis-design-vue 2.1.80 → 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 (115) hide show
  1. package/CHANGELOG.md +31 -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 +68 -68
  12. package/es/breadcrumb/index.js +8 -8
  13. package/es/button/index.js +22 -22
  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/ellipsis/index.js +1 -1
  33. package/es/empty/index.js +8 -8
  34. package/es/fabric-chart/index.js +9 -9
  35. package/es/form/index.js +8 -8
  36. package/es/form-model/index.js +8 -8
  37. package/es/form-table/index.js +66 -66
  38. package/es/index/index.js +1771 -610
  39. package/es/index/style.css +1 -1
  40. package/es/input/index.js +9 -9
  41. package/es/input-number/index.js +8 -8
  42. package/es/layout/index.js +8 -8
  43. package/es/list/index.js +8 -8
  44. package/es/locale-provider/index.js +8 -8
  45. package/es/map/index.js +9 -9
  46. package/es/mentions/index.js +8 -8
  47. package/es/menu/index.js +8 -8
  48. package/es/message/index.js +8 -8
  49. package/es/multi-chat/index.js +76 -76
  50. package/es/multi-chat-client/index.js +70 -70
  51. package/es/multi-chat-history/index.js +4 -4
  52. package/es/multi-chat-record/index.js +14 -14
  53. package/es/multi-chat-setting/index.js +22 -22
  54. package/es/multi-chat-sip/index.js +1 -1
  55. package/es/notification/index.js +8 -8
  56. package/es/page-header/index.js +8 -8
  57. package/es/pagination/index.js +8 -8
  58. package/es/popconfirm/index.js +8 -8
  59. package/es/popover/index.js +8 -8
  60. package/es/progress/index.js +8 -8
  61. package/es/radio/index.js +9 -9
  62. package/es/rate/index.js +8 -8
  63. package/es/result/index.js +8 -8
  64. package/es/row/index.js +8 -8
  65. package/es/scale-container/index.js +1 -1
  66. package/es/scale-view/index.js +27 -27
  67. package/es/select/index.js +12 -12
  68. package/es/select-label/index.js +11 -11
  69. package/es/select-person/index.js +2 -2
  70. package/es/select-tag/index.js +4248 -0
  71. package/es/select-tag/style.css +1 -0
  72. package/es/shortcut-setter/index.js +10 -10
  73. package/es/skeleton/index.js +8 -8
  74. package/es/slider/index.js +8 -8
  75. package/es/space/index.js +8 -8
  76. package/es/spin/index.js +8 -8
  77. package/es/statistic/index.js +8 -8
  78. package/es/steps/index.js +8 -8
  79. package/es/switch/index.js +8 -8
  80. package/es/table-filter/index.js +686 -228
  81. package/es/table-filter/style.css +1 -1
  82. package/es/tabs/index.js +8 -8
  83. package/es/tag/index.js +9 -9
  84. package/es/time-picker/index.js +8 -8
  85. package/es/timeline/index.js +8 -8
  86. package/es/tooltip/index.js +8 -8
  87. package/es/transfer/index.js +8 -8
  88. package/es/tree/index.js +8 -8
  89. package/es/tree-select/index.js +8 -8
  90. package/es/upload/index.js +8 -8
  91. package/es/verification-code/index.js +2 -2
  92. package/lib/cui.common.js +1827 -674
  93. package/lib/cui.umd.js +1827 -674
  94. package/lib/cui.umd.min.js +70 -70
  95. package/package.json +1 -1
  96. package/packages/index.js +3 -0
  97. package/packages/select-tag/index.js +14 -0
  98. package/packages/select-tag/label-classify.vue +133 -0
  99. package/packages/select-tag/labelFormContent.vue +295 -0
  100. package/packages/select-tag/select-label.vue +274 -0
  101. package/packages/table-filter/src/base-search-com/BaseSearch.vue +4 -0
  102. package/packages/table-filter/src/components/render-widget/components/DateRangeQuick.vue +7 -3
  103. package/packages/table-filter/src/components/render-widget/components/Label.vue +209 -0
  104. package/packages/table-filter/src/components/render-widget/components/NumberRange.vue +7 -5
  105. package/packages/table-filter/src/components/render-widget/components/SelectDynamic.vue +11 -35
  106. package/packages/table-filter/src/components/render-widget/components/SelectLabel.vue +80 -0
  107. package/packages/table-filter/src/components/render-widget/components/index.js +3 -1
  108. package/packages/table-filter/src/components/render-widget/enums.js +3 -1
  109. package/packages/table-filter/src/components/render-widget/index.vue +13 -6
  110. package/packages/table-filter/src/components/render-widget/mixins/dynamic-method.js +7 -1
  111. package/packages/table-filter/src/components/render-widget/mixins/label-method.js +23 -0
  112. package/packages/table-filter/src/components/render-widget/widgetCfgMaps.js +48 -5
  113. package/packages/table-filter/src/components/search-modal/set-classification.vue +5 -1
  114. package/packages/table-filter/src/mixins/renderWidget.js +1 -1
  115. package/packages/table-filter/src/quick-search/QuickSearch.vue +57 -12
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cnhis-design-vue",
3
- "version": "2.1.80",
3
+ "version": "2.1.81",
4
4
  "description": "前端业务UI库",
5
5
  "keyword": "cnhis-design-vue vue cnhis",
6
6
  "homepage": "http://dv.cnhis.com/",
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,
@@ -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>