vue2-client 1.3.0 → 1.3.3

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 (106) hide show
  1. package/CHANGELOG.md +9 -1
  2. package/index.js +30 -28
  3. package/package.json +1 -1
  4. package/src/base-client/components/common/AddressSearchCombobox/AddressSearchCombobox.vue +225 -225
  5. package/src/base-client/components/common/CreateQuery/CreateQueryItem.vue +777 -777
  6. package/src/base-client/components/common/CreateSimpleFormQuery/CreateSimpleFormQueryItem.vue +553 -553
  7. package/src/base-client/components/common/FormGroupQuery/FormGroupQuery.vue +165 -163
  8. package/src/base-client/components/common/Upload/Upload.vue +161 -158
  9. package/src/base-client/components/common/XAddForm/XAddForm.vue +349 -349
  10. package/src/base-client/components/common/XAddNativeForm/XAddNativeForm.vue +321 -322
  11. package/src/base-client/components/common/XForm/XForm.vue +273 -268
  12. package/src/base-client/components/common/XForm/XFormItem.vue +387 -371
  13. package/src/base-client/components/common/XFormTable/XFormTable.vue +8 -7
  14. package/src/base-client/components/common/XTable/XTable.vue +278 -274
  15. package/src/base-client/components/{iot → system}/LogDetailsView/LogDetailsView.vue +0 -0
  16. package/src/base-client/components/{iot → system}/LogDetailsView/index.js +0 -0
  17. package/src/base-client/components/{iot → system}/LogDetailsView/index.md +0 -0
  18. package/src/base-client/components/system/QueryParamsDetailsView/QueryParamsDetailsView.vue +281 -280
  19. package/src/base-client/components/ticket/TicketDetailsView/TicketDetailsView.vue +806 -804
  20. package/src/base-client/components/ticket/TicketSubmitSuccessView/TicketSubmitSuccessView.vue +24 -24
  21. package/src/base-client/plugins/PagedList.js +177 -176
  22. package/src/components/STable/index.js +318 -316
  23. package/src/components/index.js +36 -36
  24. package/src/components/table/StandardTable.vue +141 -142
  25. package/src/components/tool/TagSelect.vue +83 -83
  26. package/src/layouts/header/AdminHeader.vue +104 -109
  27. package/src/layouts/header/HeaderNotice.vue +167 -199
  28. package/src/layouts/header/InstitutionDetail.vue +181 -182
  29. package/src/pages/CreateQueryPage.vue +65 -59
  30. package/src/pages/system/dictionary/index.vue +43 -41
  31. package/src/pages/system/file/Info.vue +56 -0
  32. package/src/pages/system/file/index.vue +317 -0
  33. package/src/pages/system/queryParams/index.vue +43 -41
  34. package/src/pages/system/ticket/index.vue +458 -452
  35. package/src/pages/system/ticket/submitTicketSuccess.vue +206 -203
  36. package/src/router/async/config.async.js +2 -1
  37. package/src/router/async/router.map.js +56 -60
  38. package/src/services/api/DictionaryDetailsViewApi.js +6 -6
  39. package/src/services/api/LogDetailsViewApi.js +10 -10
  40. package/src/services/api/QueryParamsDetailsViewApi.js +6 -6
  41. package/src/services/api/TicketDetailsViewApi.js +42 -40
  42. package/src/services/api/commonTempTable.js +10 -0
  43. package/src/services/api/index.js +2 -24
  44. package/src/services/api/manage.js +8 -16
  45. package/src/utils/excel/Blob.js +181 -181
  46. package/src/utils/excel/Export2Excel.js +141 -142
  47. package/src/utils/i18n.js +80 -80
  48. package/src/utils/request.js +4 -4
  49. package/src/utils/routerUtil.js +358 -350
  50. package/src/utils/theme-color-replacer-extend.js +91 -92
  51. package/vue.config.js +109 -163
  52. package/src/base-client/all.js +0 -62
  53. package/src/base-client/components/iot/CustomerDetailsView/CustomerDetailsView.vue +0 -225
  54. package/src/base-client/components/iot/CustomerDetailsView/index.js +0 -3
  55. package/src/base-client/components/iot/CustomerDetailsView/index.md +0 -40
  56. package/src/base-client/components/iot/DataAnalysisUser/DataAnalysisUser.vue +0 -127
  57. package/src/base-client/components/iot/DataAnalysisUser/index.js +0 -3
  58. package/src/base-client/components/iot/DeviceBrandDetailsView/DeviceBrandDetailsView.vue +0 -452
  59. package/src/base-client/components/iot/DeviceBrandDetailsView/index.js +0 -3
  60. package/src/base-client/components/iot/DeviceDetailsView/DeviceDetailsView.vue +0 -232
  61. package/src/base-client/components/iot/DeviceDetailsView/index.js +0 -3
  62. package/src/base-client/components/iot/DeviceDetailsView/index.md +0 -41
  63. package/src/base-client/components/iot/DeviceDetailsView/part/DeviceDetailsCount.vue +0 -678
  64. package/src/base-client/components/iot/DeviceDetailsView/part/DeviceDetailsException.vue +0 -57
  65. package/src/base-client/components/iot/DeviceDetailsView/part/DeviceDetailsInstruct.vue +0 -122
  66. package/src/base-client/components/iot/DeviceDetailsView/part/DeviceDetailsInstructOperate.vue +0 -121
  67. package/src/base-client/components/iot/DeviceDetailsView/part/DeviceDetailsMain.vue +0 -269
  68. package/src/base-client/components/iot/DeviceDetailsView/part/DeviceDetailsRead.vue +0 -131
  69. package/src/base-client/components/iot/DeviceDetailsView/part/index.js +0 -8
  70. package/src/base-client/components/iot/DeviceTypeDetailsView/DeviceTypeDetailsView.vue +0 -300
  71. package/src/base-client/components/iot/DeviceTypeDetailsView/index.js +0 -3
  72. package/src/base-client/components/iot/InstructDetailsView/InstructDetailsView.vue +0 -464
  73. package/src/base-client/components/iot/InstructDetailsView/index.js +0 -3
  74. package/src/base-client/components/iot/InstructDetailsView/index.md +0 -43
  75. package/src/base-client/components/iot/MeterDetailsView/MeterDetailsView.vue +0 -352
  76. package/src/base-client/components/iot/MeterDetailsView/index.js +0 -3
  77. package/src/base-client/components/iot/MeterDetailsView/index.md +0 -41
  78. package/src/base-client/components/iot/MeterDetailsView/part/MeterDetailsCount.vue +0 -330
  79. package/src/base-client/components/iot/MeterDetailsView/part/MeterDetailsException.vue +0 -179
  80. package/src/base-client/components/iot/MeterDetailsView/part/MeterDetailsHandPlan.vue +0 -285
  81. package/src/base-client/components/iot/MeterDetailsView/part/MeterDetailsInstruct.vue +0 -230
  82. package/src/base-client/components/iot/MeterDetailsView/part/MeterDetailsMain.vue +0 -251
  83. package/src/base-client/components/iot/MeterDetailsView/part/MeterDetailsSellGas.vue +0 -184
  84. package/src/base-client/components/iot/MeterDetailsView/part/index.js +0 -9
  85. package/src/base-client/components/iot/WebmeterAnalysisView/WebmeterAnalysisView.vue +0 -960
  86. package/src/base-client/components/iot/WebmeterAnalysisView/index.js +0 -3
  87. package/src/base-client/components/iot/WebmeterAnalysisView/index.md +0 -42
  88. package/src/base-client/components/ticket/EmployeeDetailsView/EmployeeDetailsView.vue +0 -370
  89. package/src/base-client/components/ticket/EmployeeDetailsView/index.js +0 -3
  90. package/src/base-client/components/ticket/EmployeeDetailsView/index.md +0 -28
  91. package/src/components/Charts/DataUserOrderSituation.vue +0 -77
  92. package/src/components/Charts/DataUserReporting.vue +0 -74
  93. package/src/components/Charts/DataUserSituation.vue +0 -107
  94. package/src/services/api/CustomerDetailsViewApi.js +0 -6
  95. package/src/services/api/DeviceBrandDetailsViewApi.js +0 -14
  96. package/src/services/api/DeviceDetailsViewApi.js +0 -10
  97. package/src/services/api/DeviceTypeDetailsViewApi.js +0 -6
  98. package/src/services/api/EmployeeDetailsViewApi.js +0 -12
  99. package/src/services/api/FormGroupEditApi.js +0 -6
  100. package/src/services/api/InstructDetailsViewApi.js +0 -12
  101. package/src/services/api/MeterDetailsViewApi.js +0 -24
  102. package/src/services/api/WebmeterAnalysisViewApi.js +0 -24
  103. package/src/services/api/applyInstallApi.js +0 -14
  104. package/src/services/api/iot/DeviceDetailsView/DeviceDetailsCountApi.js +0 -18
  105. package/src/services/api/iot.js +0 -7
  106. package/src/services/api/service.js +0 -12
@@ -1,36 +1,36 @@
1
- // chart
2
- import Bar from '@vue2-client/components/Charts/Bar'
3
- import ChartCard from '@vue2-client/components/Charts/ChartCard'
4
- import Liquid from '@vue2-client/components/Charts/Liquid'
5
- import MiniArea from '@vue2-client/components/Charts/MiniArea'
6
- import MiniSmoothArea from '@vue2-client/components/Charts/MiniSmoothArea'
7
- import MiniBar from '@vue2-client/components/Charts/MiniBar'
8
- import MiniProgress from '@vue2-client/components/Charts/MiniProgress'
9
- import Radar from '@vue2-client/components/Charts/Radar'
10
- import RankList from '@vue2-client/components/Charts/RankList'
11
- import TransferBar from '@vue2-client/components/Charts/TransferBar'
12
- import TagCloud from '@vue2-client/components/Charts/TagCloud'
13
-
14
- // pro components
15
- import Ellipsis from '@vue2-client/components/Ellipsis'
16
- import NumberInfo from '@vue2-client/components/NumberInfo'
17
- import STable from '@vue2-client/components/STable'
18
- import Trend from '@vue2-client/components/Trend'
19
-
20
- export {
21
- Bar,
22
- ChartCard,
23
- Liquid,
24
- MiniArea,
25
- MiniSmoothArea,
26
- MiniBar,
27
- MiniProgress,
28
- Radar,
29
- TagCloud,
30
- RankList,
31
- TransferBar,
32
- Ellipsis,
33
- NumberInfo,
34
- STable,
35
- Trend
36
- }
1
+ // chart
2
+ import Bar from '@vue2-client/components/Charts/Bar'
3
+ import ChartCard from '@vue2-client/components/Charts/ChartCard'
4
+ import Liquid from '@vue2-client/components/Charts/Liquid'
5
+ import MiniArea from '@vue2-client/components/Charts/MiniArea'
6
+ import MiniSmoothArea from '@vue2-client/components/Charts/MiniSmoothArea'
7
+ import MiniBar from '@vue2-client/components/Charts/MiniBar'
8
+ import MiniProgress from '@vue2-client/components/Charts/MiniProgress'
9
+ import Radar from '@vue2-client/components/Charts/Radar'
10
+ import RankList from '@vue2-client/components/Charts/RankList'
11
+ import TagCloud from '@vue2-client/components/Charts/TagCloud'
12
+ import TransferBar from '@vue2-client/components/Charts/TransferBar'
13
+ import Trend from '@vue2-client/components/Trend'
14
+
15
+ // pro components
16
+ import Ellipsis from '@vue2-client/components/Ellipsis'
17
+ import NumberInfo from '@vue2-client/components/NumberInfo'
18
+ import STable from '@vue2-client/components/STable'
19
+
20
+ export {
21
+ Bar,
22
+ ChartCard,
23
+ Liquid,
24
+ MiniArea,
25
+ MiniSmoothArea,
26
+ MiniBar,
27
+ MiniProgress,
28
+ Radar,
29
+ TagCloud,
30
+ RankList,
31
+ TransferBar,
32
+ Ellipsis,
33
+ NumberInfo,
34
+ STable,
35
+ Trend
36
+ }
@@ -1,142 +1,141 @@
1
- <template>
2
- <div class="standard-table">
3
- <div class="alert">
4
- <a-alert type="info" :show-icon="true" v-if="selectedRows">
5
- <div class="message" slot="message">
6
- 已选择&nbsp;<a>{{ selectedRows.length }}</a>&nbsp;项 <a class="clear" @click="onClear">清空</a>
7
- <template v-for="(item, index) in needTotalList" >
8
- <div v-if="item.needTotal" :key="index">
9
- {{ item.title }}总计&nbsp;
10
- <a>{{ item.customRender ? item.customRender(item.total) : item.total }}</a>
11
- </div>
12
- </template>
13
- </div>
14
- </a-alert>
15
- </div>
16
- <a-table
17
- :bordered="bordered"
18
- :loading="loading"
19
- :columns="columns"
20
- :dataSource="dataSource"
21
- :rowKey="rowKey"
22
- :pagination="pagination"
23
- :expandedRowKeys="expandedRowKeys"
24
- :expandedRowRender="expandedRowRender"
25
- @change="onChange"
26
- :rowSelection="selectedRows ? {selectedRowKeys: selectedRowKeys, onChange: updateSelect} : undefined"
27
- >
28
- <template slot-scope="text, record, index" :slot="slot" v-for="slot in Object.keys($scopedSlots).filter(key => key !== 'expandedRowRender') ">
29
- <slot :name="slot" v-bind="{text, record, index}"></slot>
30
- </template>
31
- <template :slot="slot" v-for="slot in Object.keys($slots)">
32
- <slot :name="slot"></slot>
33
- </template>
34
- <template slot-scope="record, index, indent, expanded" :slot="$scopedSlots.expandedRowRender ? 'expandedRowRender' : ''">
35
- <slot v-bind="{record, index, indent, expanded}" :name="$scopedSlots.expandedRowRender ? 'expandedRowRender' : ''"></slot>
36
- </template>
37
- </a-table>
38
- </div>
39
- </template>
40
-
41
- <script>
42
- export default {
43
- name: 'StandardTable',
44
- props: {
45
- bordered: Boolean,
46
- // eslint-disable-next-line vue/require-default-prop
47
- loading: [Boolean, Object],
48
- // eslint-disable-next-line vue/require-default-prop
49
- columns: Array,
50
- // eslint-disable-next-line vue/require-default-prop
51
- dataSource: Array,
52
- rowKey: {
53
- type: [String, Function],
54
- default: 'key'
55
- },
56
- pagination: {
57
- type: [Object, Boolean],
58
- default: true
59
- },
60
- // eslint-disable-next-line vue/require-default-prop
61
- selectedRows: Array,
62
- // eslint-disable-next-line vue/require-default-prop
63
- expandedRowKeys: Array,
64
- // eslint-disable-next-line vue/require-default-prop
65
- expandedRowRender: Function
66
- },
67
- data () {
68
- return {
69
- needTotalList: []
70
- }
71
- },
72
- methods: {
73
- updateSelect (selectedRowKeys, selectedRows) {
74
- this.$emit('update:selectedRows', selectedRows)
75
- this.$emit('selectedRowChange', selectedRowKeys, selectedRows)
76
- },
77
- initTotalList (columns) {
78
- const totalList = columns.filter(item => item.needTotal)
79
- .map(item => {
80
- return {
81
- ...item,
82
- total: 0
83
- }
84
- })
85
- return totalList
86
- },
87
- onClear () {
88
- this.updateSelect([], [])
89
- this.$emit('clear')
90
- },
91
- onChange (pagination, filters, sorter, { currentDataSource }) {
92
- this.$emit('change', pagination, filters, sorter, { currentDataSource })
93
- }
94
- },
95
- created () {
96
- this.needTotalList = this.initTotalList(this.columns)
97
- },
98
- watch: {
99
- selectedRows (selectedRows) {
100
- this.needTotalList = this.needTotalList.map(item => {
101
- return {
102
- ...item,
103
- total: selectedRows.reduce((sum, val) => {
104
- let v
105
- try {
106
- // eslint-disable-next-line no-eval
107
- v = val[item.dataIndex] ? val[item.dataIndex] : eval(`val.${item.dataIndex}`)
108
- } catch (_) {
109
- v = val[item.dataIndex]
110
- }
111
- v = !isNaN(parseFloat(v)) ? parseFloat(v) : 0
112
- return sum + v
113
- }, 0)
114
- }
115
- })
116
- }
117
- },
118
- computed: {
119
- selectedRowKeys () {
120
- return this.selectedRows.map(record => {
121
- return (typeof this.rowKey === 'function') ? this.rowKey(record) : record[this.rowKey]
122
- })
123
- }
124
- }
125
- }
126
- </script>
127
-
128
- <style scoped lang="less">
129
- .standard-table{
130
- .alert{
131
- margin-bottom: 16px;
132
- .message{
133
- a{
134
- font-weight: 600;
135
- }
136
- }
137
- .clear{
138
- float: right;
139
- }
140
- }
141
- }
142
- </style>
1
+ <template>
2
+ <div class="standard-table">
3
+ <div class="alert">
4
+ <a-alert v-if="selectedRows" :show-icon="true" type="info">
5
+ <div slot="message" class="message">
6
+ 已选择&nbsp;<a>{{ selectedRows.length }}</a>&nbsp;项 <a class="clear" @click="onClear">清空</a>
7
+ <template v-for="(item, index) in needTotalList" >
8
+ <div v-if="item.needTotal" :key="index">
9
+ {{ item.title }}总计&nbsp;
10
+ <a>{{ item.customRender ? item.customRender(item.total) : item.total }}</a>
11
+ </div>
12
+ </template>
13
+ </div>
14
+ </a-alert>
15
+ </div>
16
+ <a-table
17
+ :bordered="bordered"
18
+ :columns="columns"
19
+ :dataSource="dataSource"
20
+ :expandedRowKeys="expandedRowKeys"
21
+ :expandedRowRender="expandedRowRender"
22
+ :loading="loading"
23
+ :pagination="pagination"
24
+ :rowKey="rowKey"
25
+ :rowSelection="selectedRows ? {selectedRowKeys: selectedRowKeys, onChange: updateSelect} : undefined"
26
+ @change="onChange"
27
+ >
28
+ <template v-for="slot in Object.keys($scopedSlots).filter(key => key !== 'expandedRowRender') " :slot="slot" slot-scope="text, record, index">
29
+ <slot :name="slot" v-bind="{text, record, index}"></slot>
30
+ </template>
31
+ <template v-for="slot in Object.keys($slots)" :slot="slot">
32
+ <slot :name="slot"></slot>
33
+ </template>
34
+ <template :slot="$scopedSlots.expandedRowRender ? 'expandedRowRender' : ''" slot-scope="record, index, indent, expanded">
35
+ <slot :name="$scopedSlots.expandedRowRender ? 'expandedRowRender' : ''" v-bind="{record, index, indent, expanded}"></slot>
36
+ </template>
37
+ </a-table>
38
+ </div>
39
+ </template>
40
+
41
+ <script>
42
+ export default {
43
+ name: 'StandardTable',
44
+ props: {
45
+ bordered: Boolean,
46
+ // eslint-disable-next-line vue/require-default-prop
47
+ loading: [Boolean, Object],
48
+ // eslint-disable-next-line vue/require-default-prop
49
+ columns: Array,
50
+ // eslint-disable-next-line vue/require-default-prop
51
+ dataSource: Array,
52
+ rowKey: {
53
+ type: [String, Function],
54
+ default: 'key'
55
+ },
56
+ pagination: {
57
+ type: [Object, Boolean],
58
+ default: true
59
+ },
60
+ // eslint-disable-next-line vue/require-default-prop
61
+ selectedRows: Array,
62
+ // eslint-disable-next-line vue/require-default-prop
63
+ expandedRowKeys: Array,
64
+ // eslint-disable-next-line vue/require-default-prop
65
+ expandedRowRender: Function
66
+ },
67
+ data () {
68
+ return {
69
+ needTotalList: []
70
+ }
71
+ },
72
+ methods: {
73
+ updateSelect (selectedRowKeys, selectedRows) {
74
+ this.$emit('update:selectedRows', selectedRows)
75
+ this.$emit('selectedRowChange', selectedRowKeys, selectedRows)
76
+ },
77
+ initTotalList (columns) {
78
+ return columns.filter(item => item.needTotal)
79
+ .map(item => {
80
+ return {
81
+ ...item,
82
+ total: 0
83
+ }
84
+ })
85
+ },
86
+ onClear () {
87
+ this.updateSelect([], [])
88
+ this.$emit('clear')
89
+ },
90
+ onChange (pagination, filters, sorter, { currentDataSource }) {
91
+ this.$emit('change', pagination, filters, sorter, { currentDataSource })
92
+ }
93
+ },
94
+ created () {
95
+ this.needTotalList = this.initTotalList(this.columns)
96
+ },
97
+ watch: {
98
+ selectedRows (selectedRows) {
99
+ this.needTotalList = this.needTotalList.map(item => {
100
+ return {
101
+ ...item,
102
+ total: selectedRows.reduce((sum, val) => {
103
+ let v
104
+ try {
105
+ // eslint-disable-next-line no-eval
106
+ v = val[item.dataIndex] ? val[item.dataIndex] : eval(`val.${item.dataIndex}`)
107
+ } catch (_) {
108
+ v = val[item.dataIndex]
109
+ }
110
+ v = !isNaN(parseFloat(v)) ? parseFloat(v) : 0
111
+ return sum + v
112
+ }, 0)
113
+ }
114
+ })
115
+ }
116
+ },
117
+ computed: {
118
+ selectedRowKeys () {
119
+ return this.selectedRows.map(record => {
120
+ return (typeof this.rowKey === 'function') ? this.rowKey(record) : record[this.rowKey]
121
+ })
122
+ }
123
+ }
124
+ }
125
+ </script>
126
+
127
+ <style lang="less" scoped>
128
+ .standard-table{
129
+ .alert{
130
+ margin-bottom: 16px;
131
+ .message{
132
+ a{
133
+ font-weight: 600;
134
+ }
135
+ }
136
+ .clear{
137
+ float: right;
138
+ }
139
+ }
140
+ }
141
+ </style>
@@ -1,83 +1,83 @@
1
- <template>
2
- <div class="tag-select">
3
- <tag-select-option @click="toggleCheck">全部</tag-select-option>
4
- <slot></slot>
5
- <a @click="toggle" v-show="showTrigger" ref="trigger" class="trigger">展开<a-icon style="margin-left: 5px" :type="collapsed ? 'down' : 'up'"/></a>
6
- </div>
7
- </template>
8
-
9
- <script>
10
- import TagSelectOption from './TagSelectOption'
11
- export default {
12
- name: 'TagSelect',
13
- Option: TagSelectOption,
14
- components: { TagSelectOption },
15
- data () {
16
- return {
17
- showTrigger: false,
18
- collapsed: true,
19
- screenWidth: document.body.clientWidth,
20
- checkAll: false
21
- }
22
- },
23
- watch: {
24
- screenWidth: function () {
25
- this.showTrigger = this.needTrigger()
26
- },
27
- collapsed: function (val) {
28
- this.$el.style.maxHeight = val ? '39px' : '78px'
29
- }
30
- },
31
- mounted () {
32
- const _this = this
33
- // 此处延迟执行,是为解决mouted未完全完成情况下引发的trigger显示bug
34
- setTimeout(() => {
35
- _this.showTrigger = _this.needTrigger()
36
- _this.$refs.trigger.style.display = _this.showTrigger ? 'inline' : 'none'
37
- }, 1)
38
- window.onresize = () => {
39
- return (() => {
40
- window.screenWidth = document.body.clientWidth
41
- _this.screenWidth = window.screenWidth
42
- })()
43
- }
44
- },
45
- methods: {
46
- needTrigger () {
47
- return this.$el.clientHeight < this.$el.scrollHeight || this.$el.scrollHeight > 39
48
- },
49
- toggle () {
50
- this.collapsed = !this.collapsed
51
- },
52
- getAllTags () {
53
- const tagList = this.$children.filter((item) => {
54
- return item.isTagSelectOption
55
- })
56
- return tagList
57
- },
58
- toggleCheck () {
59
- this.checkAll = !this.checkAll
60
- const tagList = this.getAllTags()
61
- tagList.forEach((item) => {
62
- item.checked = this.checkAll
63
- })
64
- }
65
- }
66
- }
67
- </script>
68
-
69
- <style lang="less" scoped>
70
- .tag-select{
71
- user-select: none;
72
- position: relative;
73
- overflow: hidden;
74
- max-height: 39px;
75
- padding-right: 50px;
76
- display: inline-block;
77
- }
78
- .trigger{
79
- position: absolute;
80
- top: 0;
81
- right: 0;
82
- }
83
- </style>
1
+ <template>
2
+ <div class="tag-select">
3
+ <tag-select-option @click="toggleCheck">全部</tag-select-option>
4
+ <slot></slot>
5
+ <a v-show="showTrigger" ref="trigger" class="trigger" @click="toggle">展开<a-icon :type="collapsed ? 'down' : 'up'" style="margin-left: 5px"/></a>
6
+ </div>
7
+ </template>
8
+
9
+ <script>
10
+ import TagSelectOption from './TagSelectOption'
11
+
12
+ export default {
13
+ name: 'TagSelect',
14
+ Option: TagSelectOption,
15
+ components: { TagSelectOption },
16
+ data () {
17
+ return {
18
+ showTrigger: false,
19
+ collapsed: true,
20
+ screenWidth: document.body.clientWidth,
21
+ checkAll: false
22
+ }
23
+ },
24
+ watch: {
25
+ screenWidth: function () {
26
+ this.showTrigger = this.needTrigger()
27
+ },
28
+ collapsed: function (val) {
29
+ this.$el.style.maxHeight = val ? '39px' : '78px'
30
+ }
31
+ },
32
+ mounted () {
33
+ const _this = this
34
+ // 此处延迟执行,是为解决mouted未完全完成情况下引发的trigger显示bug
35
+ setTimeout(() => {
36
+ _this.showTrigger = _this.needTrigger()
37
+ _this.$refs.trigger.style.display = _this.showTrigger ? 'inline' : 'none'
38
+ }, 1)
39
+ window.onresize = () => {
40
+ return (() => {
41
+ window.screenWidth = document.body.clientWidth
42
+ _this.screenWidth = window.screenWidth
43
+ })()
44
+ }
45
+ },
46
+ methods: {
47
+ needTrigger () {
48
+ return this.$el.clientHeight < this.$el.scrollHeight || this.$el.scrollHeight > 39
49
+ },
50
+ toggle () {
51
+ this.collapsed = !this.collapsed
52
+ },
53
+ getAllTags () {
54
+ return this.$children.filter((item) => {
55
+ return item.isTagSelectOption
56
+ })
57
+ },
58
+ toggleCheck () {
59
+ this.checkAll = !this.checkAll
60
+ const tagList = this.getAllTags()
61
+ tagList.forEach((item) => {
62
+ item.checked = this.checkAll
63
+ })
64
+ }
65
+ }
66
+ }
67
+ </script>
68
+
69
+ <style lang="less" scoped>
70
+ .tag-select{
71
+ user-select: none;
72
+ position: relative;
73
+ overflow: hidden;
74
+ max-height: 39px;
75
+ padding-right: 50px;
76
+ display: inline-block;
77
+ }
78
+ .trigger{
79
+ position: absolute;
80
+ top: 0;
81
+ right: 0;
82
+ }
83
+ </style>