n20-common-lib 1.1.98

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 (196) hide show
  1. package/README.md +27 -0
  2. package/package.json +87 -0
  3. package/src/_qiankun/index.js +113 -0
  4. package/src/_qiankun/postMessage.js +48 -0
  5. package/src/assets/css/_coreLib.scss +35 -0
  6. package/src/assets/css/cl-anchor.scss +24 -0
  7. package/src/assets/css/cl-approve-card.scss +58 -0
  8. package/src/assets/css/cl-dialog.scss +99 -0
  9. package/src/assets/css/cl-drag-list.scss +22 -0
  10. package/src/assets/css/cl-empty.scss +10 -0
  11. package/src/assets/css/cl-expandable-pane.scss +25 -0
  12. package/src/assets/css/cl-expandable.scss +23 -0
  13. package/src/assets/css/cl-file-upload-table.scss +11 -0
  14. package/src/assets/css/cl-filter.scss +4 -0
  15. package/src/assets/css/cl-flow-step.scss +186 -0
  16. package/src/assets/css/cl-footer-box.scss +10 -0
  17. package/src/assets/css/cl-form-item.scss +322 -0
  18. package/src/assets/css/cl-general-card.scss +12 -0
  19. package/src/assets/css/cl-layout-aside.scss +88 -0
  20. package/src/assets/css/cl-layout-content.scss +16 -0
  21. package/src/assets/css/cl-layout-header.scss +73 -0
  22. package/src/assets/css/cl-layout-tabs.scss +87 -0
  23. package/src/assets/css/cl-layout.scss +97 -0
  24. package/src/assets/css/cl-login-temporary.scss +37 -0
  25. package/src/assets/css/cl-message.scss +75 -0
  26. package/src/assets/css/cl-more-tab.scss +98 -0
  27. package/src/assets/css/cl-nav-menu.scss +5 -0
  28. package/src/assets/css/cl-pagination.scss +65 -0
  29. package/src/assets/css/cl-secondary-tab.scss +39 -0
  30. package/src/assets/css/cl-showcolumn.scss +23 -0
  31. package/src/assets/css/cl-sifting.scss +51 -0
  32. package/src/assets/css/cl-statis.scss +42 -0
  33. package/src/assets/css/cl-step.scss +73 -0
  34. package/src/assets/css/cl-suspend.scss +19 -0
  35. package/src/assets/css/cl-tertiary-tab.scss +9 -0
  36. package/src/assets/css/cl-upload.scss +41 -0
  37. package/src/assets/css/cl-worn-pagination.scss +50 -0
  38. package/src/assets/css/el-button.scss +169 -0
  39. package/src/assets/css/el-table.scss +79 -0
  40. package/src/assets/css/element-variables.scss +1061 -0
  41. package/src/assets/css/element.dev.scss +21 -0
  42. package/src/assets/css/font-icon.scss +26 -0
  43. package/src/assets/css/index.dev.scss +4 -0
  44. package/src/assets/css/index.scss +11 -0
  45. package/src/assets/css/normalize.scss +723 -0
  46. package/src/assets/css/rootvar.scss +139 -0
  47. package/src/assets/css/select.scss +26 -0
  48. package/src/assets/css/title-pop.scss +4 -0
  49. package/src/assets/getJsonc.js +50 -0
  50. package/src/assets/realUrl.js +12 -0
  51. package/src/components/Anchor/AnchorItem.vue +30 -0
  52. package/src/components/Anchor/index.vue +185 -0
  53. package/src/components/ApprovalButtons/index.vue +232 -0
  54. package/src/components/ApprovalCard/index.vue +128 -0
  55. package/src/components/ApprovalRecord/approvalImg.vue +39 -0
  56. package/src/components/ApprovalRecord/index.vue +59 -0
  57. package/src/components/Button/button-group.vue +150 -0
  58. package/src/components/Button/icon-group-button.vue +61 -0
  59. package/src/components/Button/index.vue +56 -0
  60. package/src/components/ContentLoading/index.vue +41 -0
  61. package/src/components/ContentNull/index.vue +19 -0
  62. package/src/components/DatePicker/index.vue +27 -0
  63. package/src/components/DatePicker/por.vue +169 -0
  64. package/src/components/Dialog/index.vue +26 -0
  65. package/src/components/Dialog/indexO.vue +116 -0
  66. package/src/components/DragList/index.vue +68 -0
  67. package/src/components/Empty/img/404.png +0 -0
  68. package/src/components/Empty/img/abnormal.svg +109 -0
  69. package/src/components/Empty/img/dispose.svg +72 -0
  70. package/src/components/Empty/img/empty.svg +58 -0
  71. package/src/components/Empty/img/general.svg +59 -0
  72. package/src/components/Empty/img/lock.svg +58 -0
  73. package/src/components/Empty/img/network.svg +60 -0
  74. package/src/components/Empty/img/relevant.svg +69 -0
  75. package/src/components/Empty/img/search.svg +73 -0
  76. package/src/components/Empty/index.vue +92 -0
  77. package/src/components/Expandable/index.vue +49 -0
  78. package/src/components/Expandable/main.vue +52 -0
  79. package/src/components/FileUploadTable/index.vue +484 -0
  80. package/src/components/Filters/index.vue +358 -0
  81. package/src/components/Filters/indexO.vue +104 -0
  82. package/src/components/FlowStep/index.vue +69 -0
  83. package/src/components/FooterBox/index.vue +21 -0
  84. package/src/components/GeneralCard/index.vue +15 -0
  85. package/src/components/InputNumber/index.vue +153 -0
  86. package/src/components/InputNumber/numberRange.vue +47 -0
  87. package/src/components/InputSearch/index.vue +75 -0
  88. package/src/components/Layout/AsideNav/index.vue +144 -0
  89. package/src/components/Layout/HeaderWrap/changePwd.vue +215 -0
  90. package/src/components/Layout/HeaderWrap/index.vue +336 -0
  91. package/src/components/Layout/HeaderWrap/noticePop.vue +300 -0
  92. package/src/components/Layout/SubContent/index.vue +131 -0
  93. package/src/components/Layout/TabsNav/index.vue +170 -0
  94. package/src/components/Layout/index.vue +529 -0
  95. package/src/components/Layout/utils.js +12 -0
  96. package/src/components/LoginTemporary/form.vue +511 -0
  97. package/src/components/LoginTemporary/index.vue +122 -0
  98. package/src/components/LoginTemporary/qr.png +0 -0
  99. package/src/components/LoginTemporary/qrcode.vue +90 -0
  100. package/src/components/LoginTemporary/qrt.png +0 -0
  101. package/src/components/LoginTemporary/retrievePw.vue +28 -0
  102. package/src/components/LoginTemporary/utils.js +73 -0
  103. package/src/components/MicroApp/index.js +67 -0
  104. package/src/components/MicroFrame/index.vue +95 -0
  105. package/src/components/MoreTab/index.vue +232 -0
  106. package/src/components/NavMenu/index.vue +60 -0
  107. package/src/components/NstcG6Components/NstcApprovel/NstcApprovel.vue +13 -0
  108. package/src/components/NstcG6Components/NstcDialog/NstcDialog.vue +185 -0
  109. package/src/components/NstcG6Components/Progress/progress.vue +134 -0
  110. package/src/components/PageLayout/page.vue +15 -0
  111. package/src/components/Pagination/index.vue +96 -0
  112. package/src/components/SecondaryTab/index.vue +58 -0
  113. package/src/components/SelectLazy/index.vue +75 -0
  114. package/src/components/SelectTree/SelectTreeLazy.vue +241 -0
  115. package/src/components/SelectTree/index.vue +208 -0
  116. package/src/components/ShowColumn/index.vue +188 -0
  117. package/src/components/Sifting/index.vue +99 -0
  118. package/src/components/Statis/index.vue +97 -0
  119. package/src/components/Statis/statisItem.vue +54 -0
  120. package/src/components/Statis/statisPopover.vue +55 -0
  121. package/src/components/Step/index.vue +38 -0
  122. package/src/components/Suspend/index.vue +72 -0
  123. package/src/components/Table/index.vue +131 -0
  124. package/src/components/Table/indexO.vue +149 -0
  125. package/src/components/Task/index.vue +26 -0
  126. package/src/components/TertiaryTab/index.vue +53 -0
  127. package/src/components/TimePicker/index.vue +28 -0
  128. package/src/components/Upload/index.vue +242 -0
  129. package/src/components/WornPagination/index.vue +73 -0
  130. package/src/directives/VClickOutside/index.js +19 -0
  131. package/src/directives/VDrag/index.js +72 -0
  132. package/src/directives/VHas/index.js +27 -0
  133. package/src/directives/VMove/index.js +42 -0
  134. package/src/directives/VTitle/index.js +56 -0
  135. package/src/directives/VTitle/tooltip.vue +21 -0
  136. package/src/index.js +225 -0
  137. package/src/plugins/CompatibleOld/index.js +57 -0
  138. package/src/plugins/Print/index.js +4 -0
  139. package/src/plugins/Print/print-js/.babelrc +12 -0
  140. package/src/plugins/Print/print-js/LICENSE +21 -0
  141. package/src/plugins/Print/print-js/README.md +98 -0
  142. package/src/plugins/Print/print-js/dist/print.css +97 -0
  143. package/src/plugins/Print/print-js/dist/print.js +991 -0
  144. package/src/plugins/Print/print-js/dist/print.map +1 -0
  145. package/src/plugins/Print/print-js/package.json +60 -0
  146. package/src/plugins/Print/print-js/src/index.d.ts +45 -0
  147. package/src/plugins/Print/print-js/src/index.js +10 -0
  148. package/src/plugins/Print/print-js/src/js/browser.js +33 -0
  149. package/src/plugins/Print/print-js/src/js/functions.js +103 -0
  150. package/src/plugins/Print/print-js/src/js/html.js +70 -0
  151. package/src/plugins/Print/print-js/src/js/image.js +48 -0
  152. package/src/plugins/Print/print-js/src/js/init.js +168 -0
  153. package/src/plugins/Print/print-js/src/js/json.js +109 -0
  154. package/src/plugins/Print/print-js/src/js/modal.js +62 -0
  155. package/src/plugins/Print/print-js/src/js/pdf.js +62 -0
  156. package/src/plugins/Print/print-js/src/js/print.js +102 -0
  157. package/src/plugins/Print/print-js/src/js/raw-html.js +15 -0
  158. package/src/plugins/Print/print-js/src/sass/index.scss +14 -0
  159. package/src/plugins/Print/print-js/src/sass/modules/_colors.scss +10 -0
  160. package/src/plugins/Print/print-js/src/sass/partials/_modal.scss +41 -0
  161. package/src/plugins/Print/print-js/src/sass/partials/_spinner.scss +46 -0
  162. package/src/plugins/Print/print.js +2 -0
  163. package/src/plugins/Print/print.scss +1 -0
  164. package/src/plugins/SetMenuTree/index.vue +41 -0
  165. package/src/plugins/SetMenuTree/logoIcon.vue +37 -0
  166. package/src/plugins/SetMenuTree/setmenutree.vue +427 -0
  167. package/src/plugins/SetMenuTree/utils.js +74 -0
  168. package/src/plugins/Sign/InfosecNetSignCNGAgent.min.js +2000 -0
  169. package/src/plugins/Sign/index.js +65 -0
  170. package/src/plugins/Sign/sign.js +1 -0
  171. package/src/plugins/setTabsForSub.js +2 -0
  172. package/src/utils/auth.js +53 -0
  173. package/src/utils/axios.js +203 -0
  174. package/src/utils/downloadBlob.js +19 -0
  175. package/src/utils/forEachs.js +16 -0
  176. package/src/utils/getScrollContainer.js +43 -0
  177. package/src/utils/i18n/cn2hk.json +1270 -0
  178. package/src/utils/i18n/index.js +54 -0
  179. package/src/utils/list2tree.js +36 -0
  180. package/src/utils/msgboxPor.js +26 -0
  181. package/src/utils/print.js +161 -0
  182. package/src/utils/relaNo.js +35 -0
  183. package/src/utils/repairElementUI.js +66 -0
  184. package/src/utils/urlToGo.js +82 -0
  185. package/style/css/normalize.scss +723 -0
  186. package/style/fonts/element-icons.535877f5.woff +0 -0
  187. package/style/fonts/element-icons.732389de.ttf +0 -0
  188. package/style/index.css +3 -0
  189. package/style/index.css.map +1 -0
  190. package/style/index.umd.min.js +2 -0
  191. package/style/index.umd.min.js.map +1 -0
  192. package/style/pageDemo/demo-1.vue +130 -0
  193. package/style/pageDemo/demo-2.vue +35 -0
  194. package/style/pageDemo/demo-3.vue +22 -0
  195. package/style/pageDemo/seeCode.js +20 -0
  196. package/style/server-config.jsonc +663 -0
@@ -0,0 +1,241 @@
1
+ <template>
2
+ <el-select
3
+ ref="select"
4
+ v-model="valueC"
5
+ :multiple="multiple"
6
+ :collapse-tags="collapseTags"
7
+ :clearable="clearable"
8
+ :disabled="disabled"
9
+ :filterable="true"
10
+ :filter-method="filterFn"
11
+ :size="size"
12
+ @visible-change="showOpt"
13
+ @change="(val) => $emit('change', val)"
14
+ >
15
+ <slot></slot>
16
+ <el-option label="null" :value="null" style="display: none" />
17
+ <el-option
18
+ v-for="(item, i) in optionList"
19
+ :key="i"
20
+ :label="item[props.label]"
21
+ :value="item[props.value]"
22
+ style="display: none"
23
+ />
24
+ <el-tree
25
+ ref="tree"
26
+ class="m-r"
27
+ :data="data"
28
+ :props="props"
29
+ :node-key="props.value"
30
+ :default-expanded-keys="expandedKeys"
31
+ :highlight-current="!multiple"
32
+ :show-checkbox="multiple"
33
+ :check-strictly="true"
34
+ :expand-on-click-node="multiple"
35
+ :filter-node-method="filterNode"
36
+ :lazy="lazy"
37
+ :load="load"
38
+ :size="size"
39
+ @node-click="nodeClick"
40
+ @check-change="checkChange"
41
+ />
42
+ </el-select>
43
+ </template>
44
+
45
+ <script>
46
+ import forEachs from '../../utils/forEachs'
47
+
48
+ export default {
49
+ name: 'SelectTreeLazy',
50
+ props: {
51
+ size: {
52
+ type: String,
53
+ default: undefined
54
+ },
55
+ // 懒加载回显的选项
56
+ lazyChecked: {
57
+ type: [Array, Object],
58
+ default: undefined
59
+ },
60
+ /* select */
61
+ value: {
62
+ type: [String, Number, Array],
63
+ default: undefined
64
+ },
65
+ multiple: {
66
+ type: Boolean,
67
+ default: false
68
+ },
69
+ clearable: {
70
+ type: Boolean,
71
+ default: true
72
+ },
73
+ disabled: {
74
+ type: Boolean,
75
+ default: false
76
+ },
77
+ collapseTags: {
78
+ type: Boolean,
79
+ default: false
80
+ },
81
+ filterMethod: {
82
+ type: Function,
83
+ default: undefined
84
+ },
85
+ /* tree */
86
+ data: {
87
+ type: Array,
88
+ default: () => []
89
+ },
90
+ props: {
91
+ type: Object,
92
+ default: () => ({
93
+ label: 'label',
94
+ children: 'children',
95
+ disabled: 'disabled',
96
+ isLeaf: 'isLeaf',
97
+ value: 'value'
98
+ })
99
+ },
100
+ lazy: {
101
+ type: Boolean,
102
+ default: false
103
+ },
104
+ load: {
105
+ type: Function,
106
+ default: undefined
107
+ }
108
+ },
109
+ data() {
110
+ return {
111
+ wCdList: [], // 监听value得到的选项
112
+ tCdList: [], // 临时选择得到的选项
113
+ expandedKeys: []
114
+ }
115
+ },
116
+ computed: {
117
+ valueC: {
118
+ get() {
119
+ return this.value
120
+ },
121
+ set(val) {
122
+ this.$emit('input', val)
123
+ }
124
+ },
125
+ optionList() {
126
+ let vK = this.props.value
127
+ let optionList = []
128
+
129
+ if (this.lazyChecked) {
130
+ if (Array.isArray(this.lazyChecked)) {
131
+ optionList.push.apply(optionList, this.lazyChecked)
132
+ } else {
133
+ optionList.push(this.lazyChecked)
134
+ }
135
+ }
136
+
137
+ this.wCdList.forEach((item) => {
138
+ if (!optionList.some((c) => c[vK] === item[vK])) {
139
+ optionList.push(item)
140
+ }
141
+ })
142
+
143
+ this.tCdList.forEach((item) => {
144
+ if (!optionList.some((c) => c[vK] === item[vK])) {
145
+ optionList.push(item)
146
+ }
147
+ })
148
+
149
+ return optionList
150
+ }
151
+ },
152
+ watch: {
153
+ value: {
154
+ handler(val) {
155
+ if (!val && !this.multiple) {
156
+ this.wCdList = []
157
+ this.$refs['tree']?.setCurrentKey(null)
158
+ return
159
+ }
160
+
161
+ let dataList = []
162
+ forEachs(this.data, (d) => dataList.push(d), this.props.children)
163
+
164
+ if (!this.multiple) {
165
+ let valueObj = dataList.find((d) => d[this.props.value] === val)
166
+ this.wCdList = valueObj ? [valueObj] : []
167
+ this.$refs['tree']?.setCurrentKey(val)
168
+ } else {
169
+ this.wCdList = dataList.filter((d) =>
170
+ val.includes(d[this.props.value])
171
+ )
172
+ this.$refs['tree']?.setCheckedKeys(val)
173
+ }
174
+ },
175
+ immediate: true
176
+ }
177
+ },
178
+ methods: {
179
+ showOpt() {
180
+ if (this.showd) return
181
+
182
+ this.showd = true
183
+
184
+ this.expandedKeys = this.multiple ? [...this.value] : [this.value]
185
+
186
+ if (!this.multiple) {
187
+ this.$refs['tree'].setCurrentKey(this.value)
188
+ } else {
189
+ this.$refs['tree'].setCheckedKeys(this.value)
190
+ }
191
+ },
192
+ filterFn(val) {
193
+ this.$refs['tree'].filter(val)
194
+ this.filterMethod && this.filterMethod(val)
195
+ },
196
+ nodeClick(data) {
197
+ if (!this.multiple) {
198
+ this.lazy && (this.tCdList = [data])
199
+
200
+ let vK = this.props.value
201
+ this.$emit('input', data[vK])
202
+ this.$emit('change', data[vK], data)
203
+ this.$refs['select'].blur()
204
+ }
205
+ },
206
+ checkChange(data, check) {
207
+ let vK = this.props.value
208
+ if (check) {
209
+ if (this.lazy) {
210
+ let tV = this.tCdList.some((c) => c[vK] === data[vK])
211
+ if (!tV) {
212
+ this.tCdList.push(data)
213
+ }
214
+ }
215
+ let vV = this.value.includes(data[vK])
216
+ if (!vV) {
217
+ this.value.push(data[vK])
218
+ }
219
+ } else {
220
+ if (this.lazy) {
221
+ let tI = this.tCdList.findIndex((c) => c[vK] === data[vK])
222
+ if (tI !== -1) {
223
+ this.tCdList.splice(tI, 1)
224
+ }
225
+ }
226
+
227
+ let vI = this.value.indexOf(data[vK])
228
+ if (vI !== -1) {
229
+ this.value.splice(vI, 1)
230
+ }
231
+ }
232
+ this.$emit('change', this.value)
233
+ },
234
+ filterNode(value, data) {
235
+ if (!value) return true
236
+ let lK = this.props.label
237
+ return data[lK].indexOf(value) !== -1
238
+ }
239
+ }
240
+ }
241
+ </script>
@@ -0,0 +1,208 @@
1
+ <template>
2
+ <el-select
3
+ ref="select"
4
+ v-model="valueC"
5
+ :multiple="multiple"
6
+ :collapse-tags="collapseTags"
7
+ :clearable="clearable"
8
+ :disabled="disabled"
9
+ :filterable="true"
10
+ :filter-method="filterFn"
11
+ :size="size"
12
+ @visible-change="showOpt"
13
+ >
14
+ <slot></slot>
15
+ <el-option :label="null" :value="null" style="display: none" />
16
+ <el-option
17
+ v-for="(item, i) in wCdList"
18
+ :key="i"
19
+ :label="item[props.label]"
20
+ :value="item[props.value]"
21
+ style="display: none"
22
+ />
23
+ <el-tree
24
+ ref="tree"
25
+ class="m-r"
26
+ :data="data"
27
+ :props="props"
28
+ :node-key="props.value"
29
+ :default-expanded-keys="expandedKeys"
30
+ :highlight-current="!multiple"
31
+ :show-checkbox="multiple"
32
+ :expand-on-click-node="multiple"
33
+ :filter-node-method="filterNode"
34
+ :size="size"
35
+ v-bind="$attrs"
36
+ @node-click="nodeClick"
37
+ @check="checkChange"
38
+ />
39
+ </el-select>
40
+ </template>
41
+
42
+ <script>
43
+ import forEachs from '../../utils/forEachs'
44
+
45
+ export default {
46
+ name: 'SelectTree',
47
+ props: {
48
+ // 是否关联
49
+ relevance: {
50
+ type: Boolean,
51
+ default: false
52
+ },
53
+ size: {
54
+ type: String,
55
+ default: undefined
56
+ },
57
+ // 懒加载回显的选项
58
+ lazyChecked: {
59
+ type: [Array, Object],
60
+ default: undefined
61
+ },
62
+ /* select */
63
+ value: {
64
+ type: [String, Number, Array],
65
+ default: undefined
66
+ },
67
+ multiple: {
68
+ type: Boolean,
69
+ default: false
70
+ },
71
+ clearable: {
72
+ type: Boolean,
73
+ default: true
74
+ },
75
+ disabled: {
76
+ type: Boolean,
77
+ default: false
78
+ },
79
+ collapseTags: {
80
+ type: Boolean,
81
+ default: false
82
+ },
83
+ filterMethod: {
84
+ type: Function,
85
+ default: undefined
86
+ },
87
+ /* tree */
88
+ data: {
89
+ type: Array,
90
+ default: () => []
91
+ },
92
+ props: {
93
+ type: Object,
94
+ default: () => ({
95
+ label: 'label',
96
+ children: 'children',
97
+ disabled: 'disabled',
98
+ isLeaf: 'isLeaf',
99
+ value: 'value'
100
+ })
101
+ },
102
+ lazy: {
103
+ type: Boolean,
104
+ default: false
105
+ },
106
+ load: {
107
+ type: Function,
108
+ default: undefined
109
+ }
110
+ },
111
+ data() {
112
+ return {
113
+ wCdList: [], // 监听value得到的选项
114
+ expandedKeys: []
115
+ }
116
+ },
117
+ computed: {
118
+ valueC: {
119
+ get() {
120
+ return this.value
121
+ },
122
+ set(val) {
123
+ this.$emit('input', val)
124
+ }
125
+ }
126
+ },
127
+ watch: {
128
+ value: {
129
+ handler(val) {
130
+ if (!val && !this.multiple) {
131
+ this.wCdList = []
132
+ this.$refs['tree']?.setCurrentKey(null)
133
+ this.$emit('change', val, undefined)
134
+ return
135
+ }
136
+ if (!this.multiple) {
137
+ if (val === undefined || val === null) {
138
+ this.wCdList = []
139
+ this.$refs['tree']?.setCurrentKey(null)
140
+ this.$emit('change', val, undefined)
141
+ return
142
+ }
143
+ } else {
144
+ if (val.length === 0) {
145
+ this.wCdList = []
146
+ this.$refs['tree']?.setCurrentKey(null)
147
+ this.$emit('change', val, undefined)
148
+ return
149
+ }
150
+ }
151
+
152
+ let dataList = []
153
+ forEachs(this.data, (d) => dataList.push(d), this.props.children)
154
+
155
+ if (!this.multiple) {
156
+ let valueObj = dataList.find((d) => d[this.props.value] === val)
157
+ this.wCdList = valueObj ? [valueObj] : []
158
+ this.$refs['tree']?.setCurrentKey(val)
159
+ this.$emit('change', val, valueObj)
160
+ } else {
161
+ this.wCdList = dataList.filter((d) =>
162
+ val.includes(d[this.props.value])
163
+ )
164
+ this.$refs['tree']?.setCheckedKeys(val)
165
+ this.$emit('change', val, this.wCdList)
166
+ }
167
+ },
168
+ immediate: true
169
+ }
170
+ },
171
+ methods: {
172
+ showOpt() {
173
+ if (this.showd) return
174
+
175
+ this.showd = true
176
+
177
+ this.expandedKeys = this.multiple ? [...this.value] : [this.value]
178
+
179
+ if (!this.multiple) {
180
+ this.$refs['tree'].setCurrentKey(this.value)
181
+ } else {
182
+ this.$refs['tree'].setCheckedKeys(this.value)
183
+ }
184
+ },
185
+ filterFn(val) {
186
+ this.$refs['tree'].filter(val)
187
+ this.filterMethod && this.filterMethod(val)
188
+ },
189
+ nodeClick(data) {
190
+ if (!this.multiple) {
191
+ this.lazy && (this.tCdList = [data])
192
+
193
+ let vK = this.props.value
194
+ this.$emit('input', data[vK])
195
+ this.$refs['select'].blur()
196
+ }
197
+ },
198
+ checkChange(data, { checkedKeys, checkedNodes }) {
199
+ this.$emit('input', checkedKeys)
200
+ },
201
+ filterNode(value, data) {
202
+ if (!value) return true
203
+ let lK = this.props.label
204
+ return data[lK].indexOf(value) !== -1
205
+ }
206
+ }
207
+ }
208
+ </script>
@@ -0,0 +1,188 @@
1
+ <template>
2
+ <dialog-wrap
3
+ ref="dialog"
4
+ v-bind="$attrs"
5
+ :visible.sync="visible"
6
+ width="800px"
7
+ :title="isExport ? '导出' : '设置显示列'"
8
+ @open="popOpen"
9
+ >
10
+ <div class="dialog-view" style="margin-top: -16px">
11
+ <div class="flex-box">
12
+ <div class="left-c flex-column p-t-m bd-r">
13
+ <div class="flex-box flex-v p-r m-b">
14
+ <span>{{ isExport ? '导出' : '显示列' }}</span>
15
+ <span class="m-l-m color-999">
16
+ 已选
17
+ <span class="color-main">{{ dragList.length }}</span>
18
+ </span>
19
+ <el-link
20
+ :underline="false"
21
+ type="primary"
22
+ class="m-l-auto"
23
+ @click="setAll"
24
+ >{{ setState ? '全部清空' : '全部选中' }}</el-link
25
+ >
26
+ </div>
27
+ <div class="flex-item p-r" style="height: 50%; overflow: auto">
28
+ <el-checkbox-group :value="dragList.map((d) => d[labelKey])">
29
+ <el-checkbox
30
+ v-for="(column, i) in columns"
31
+ :key="i"
32
+ :label="column[labelKey]"
33
+ class="m-t"
34
+ @change="(val) => checkChange(val, column)"
35
+ >{{ column[labelKey] }}</el-checkbox
36
+ >
37
+ </el-checkbox-group>
38
+ </div>
39
+ </div>
40
+ <div class="right-c flex-column p-t-m">
41
+ <div class="m-b">
42
+ 当前选定项
43
+ <el-link type="primary" style="visibility: hidden"
44
+ >当前选定项</el-link
45
+ >
46
+ </div>
47
+ <div class="flex-1 overflow-y">
48
+ <drag-list :list="dragList" :label-key="labelKey" />
49
+ </div>
50
+ </div>
51
+ </div>
52
+ </div>
53
+ <div slot="footer" class="text-c">
54
+ <el-button type="primary" @click="setChange">确定</el-button>
55
+ <el-button plain @click="reset">重置</el-button>
56
+ </div>
57
+ </dialog-wrap>
58
+ </template>
59
+ <script>
60
+ import axios from '../../utils/axios'
61
+ import dialogWrap from '../Dialog/index.vue'
62
+ import dragList from '../DragList/index.vue'
63
+ export default {
64
+ name: 'ShowColumn',
65
+ components: { dialogWrap, dragList },
66
+ inheritAttrs: false,
67
+ props: {
68
+ dialogVisible: {
69
+ type: Boolean,
70
+ default: false
71
+ },
72
+ columns: {
73
+ type: Array,
74
+ default: () => []
75
+ },
76
+ checkColumns: {
77
+ type: Array,
78
+ default: () => []
79
+ },
80
+ isExport: {
81
+ type: Boolean,
82
+ default: false
83
+ },
84
+ labelKey: {
85
+ type: String,
86
+ default: 'label'
87
+ },
88
+ pageId: {
89
+ type: String,
90
+ default: undefined
91
+ },
92
+ autoSave: {
93
+ type: Boolean,
94
+ default: false
95
+ }
96
+ },
97
+ data() {
98
+ return {
99
+ dragList: [],
100
+ userNo: sessionStorage.getItem('userNo')
101
+ }
102
+ },
103
+ computed: {
104
+ visible: {
105
+ get() {
106
+ return this.dialogVisible
107
+ },
108
+ set(val) {
109
+ this.$emit('update:dialogVisible', val)
110
+ }
111
+ },
112
+ setState() {
113
+ return this.columns.length && this.columns.length === this.dragList.length
114
+ }
115
+ },
116
+ methods: {
117
+ popOpen() {
118
+ this.dragList = [...this.checkColumns]
119
+ },
120
+ setAll() {
121
+ if (this.setState) {
122
+ this.dragList = []
123
+ } else {
124
+ this.dragList = [...this.columns]
125
+ }
126
+ },
127
+ checkChange(val, column) {
128
+ if (val === false) {
129
+ let index = this.dragList.findIndex(
130
+ (d) => d[this.labelKey] === column[this.labelKey]
131
+ )
132
+ index !== -1 && this.dragList.splice(index, 1)
133
+ } else {
134
+ this.dragList.push(column)
135
+ }
136
+ },
137
+ reset() {
138
+ this.dragList = JSON.parse(JSON.stringify(this.checkColumns || []))
139
+ },
140
+ setChange() {
141
+ if (this.dragList.length < 1) {
142
+ this.$message.error('至少设置显示一列!')
143
+ return
144
+ }
145
+ // 自动保存设置的显示列
146
+ !this.isExport && this.autoSave && this.saveColumns()
147
+
148
+ this.$emit('setColumns', this.dragList)
149
+ this.visible = false
150
+ },
151
+ saveColumns() {
152
+ axios.post(
153
+ '/bems/prod_1.0/user/pageHabit',
154
+ {
155
+ userNo: this.userNo,
156
+ pageId: this.pageId,
157
+ showStructure: JSON.stringify(this.dragList)
158
+ },
159
+ { loading: false }
160
+ )
161
+ },
162
+ getColumns(pageId) {
163
+ return new Promise((resolve, reject) => {
164
+ axios
165
+ .post(
166
+ '/bems/prod_1.0/user/pageHabit/list',
167
+ {
168
+ userNo: this.userNo,
169
+ pageId: pageId || this.pageId
170
+ },
171
+ { loading: false }
172
+ )
173
+ .then(({ data }) => {
174
+ if (data) {
175
+ let _data = JSON.parse(data)
176
+ resolve(_data.length ? _data : null)
177
+ } else {
178
+ resolve(null)
179
+ }
180
+ })
181
+ .catch((err) => {
182
+ reject(err)
183
+ })
184
+ })
185
+ }
186
+ }
187
+ }
188
+ </script>