n20-common-lib 1.2.2 → 1.2.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 (186) hide show
  1. package/README.md +26 -26
  2. package/package.json +87 -87
  3. package/src/_qiankun/index.js +113 -113
  4. package/src/_qiankun/postMessage.js +48 -48
  5. package/src/assets/css/_coreLib.scss +35 -35
  6. package/src/assets/css/cl-anchor.scss +23 -23
  7. package/src/assets/css/cl-approve-card.scss +58 -58
  8. package/src/assets/css/cl-dialog.scss +99 -99
  9. package/src/assets/css/cl-drag-list.scss +22 -22
  10. package/src/assets/css/cl-empty.scss +10 -10
  11. package/src/assets/css/cl-expandable-pane.scss +27 -25
  12. package/src/assets/css/cl-expandable.scss +25 -23
  13. package/src/assets/css/cl-file-upload-table.scss +11 -11
  14. package/src/assets/css/cl-filter.scss +4 -4
  15. package/src/assets/css/cl-flow-step.scss +185 -185
  16. package/src/assets/css/cl-footer-box.scss +10 -10
  17. package/src/assets/css/cl-form-item.scss +331 -322
  18. package/src/assets/css/cl-general-card.scss +11 -11
  19. package/src/assets/css/cl-layout-aside.scss +88 -96
  20. package/src/assets/css/cl-layout-content.scss +16 -16
  21. package/src/assets/css/cl-layout-header.scss +73 -77
  22. package/src/assets/css/cl-layout-tabs.scss +87 -87
  23. package/src/assets/css/cl-layout.scss +97 -97
  24. package/src/assets/css/cl-login-temporary.scss +37 -37
  25. package/src/assets/css/cl-message.scss +75 -75
  26. package/src/assets/css/cl-more-tab.scss +98 -98
  27. package/src/assets/css/cl-nav-menu.scss +5 -5
  28. package/src/assets/css/cl-pagination.scss +65 -65
  29. package/src/assets/css/cl-secondary-tab.scss +39 -39
  30. package/src/assets/css/cl-showcolumn.scss +23 -23
  31. package/src/assets/css/cl-sifting.scss +51 -51
  32. package/src/assets/css/cl-statis.scss +42 -42
  33. package/src/assets/css/cl-step.scss +73 -73
  34. package/src/assets/css/cl-suspend.scss +19 -19
  35. package/src/assets/css/cl-tertiary-tab.scss +9 -9
  36. package/src/assets/css/cl-upload.scss +41 -41
  37. package/src/assets/css/cl-worn-pagination.scss +50 -50
  38. package/src/assets/css/el-button.scss +173 -169
  39. package/src/assets/css/el-table.scss +79 -79
  40. package/src/assets/css/element-variables.scss +1061 -1061
  41. package/src/assets/css/element.dev.scss +21 -21
  42. package/src/assets/css/font-icon.scss +26 -26
  43. package/src/assets/css/index.dev.scss +4 -4
  44. package/src/assets/css/index.scss +11 -11
  45. package/src/assets/css/normalize.scss +726 -723
  46. package/src/assets/css/rootvar.scss +139 -139
  47. package/src/assets/css/select.scss +25 -25
  48. package/src/assets/css/title-pop.scss +4 -4
  49. package/src/assets/getJsonc.js +50 -50
  50. package/src/assets/realUrl.js +12 -12
  51. package/src/components/Anchor/AnchorItem.vue +29 -29
  52. package/src/components/Anchor/index.vue +185 -185
  53. package/src/components/ApprovalButtons/index.vue +232 -232
  54. package/src/components/ApprovalCard/index.vue +128 -128
  55. package/src/components/ApprovalRecord/approvalImg.vue +39 -39
  56. package/src/components/ApprovalRecord/index.vue +59 -59
  57. package/src/components/Button/button-group.vue +150 -150
  58. package/src/components/Button/icon-group-button.vue +61 -61
  59. package/src/components/Button/index.vue +56 -56
  60. package/src/components/CascaderArea/index.vue +81 -0
  61. package/src/components/ContentLoading/index.vue +41 -41
  62. package/src/components/ContentNull/index.vue +19 -19
  63. package/src/components/DatePicker/index.vue +27 -27
  64. package/src/components/DatePicker/por.vue +169 -169
  65. package/src/components/Dialog/index.vue +26 -26
  66. package/src/components/Dialog/indexO.vue +116 -116
  67. package/src/components/DragList/index.vue +68 -68
  68. package/src/components/Empty/img/abnormal.svg +108 -108
  69. package/src/components/Empty/img/dispose.svg +71 -71
  70. package/src/components/Empty/img/empty.svg +57 -57
  71. package/src/components/Empty/img/general.svg +58 -58
  72. package/src/components/Empty/img/lock.svg +57 -57
  73. package/src/components/Empty/img/network.svg +59 -59
  74. package/src/components/Empty/img/relevant.svg +68 -68
  75. package/src/components/Empty/img/search.svg +72 -72
  76. package/src/components/Empty/index.vue +92 -92
  77. package/src/components/Expandable/index.vue +49 -49
  78. package/src/components/Expandable/main.vue +52 -52
  79. package/src/components/FileUploadTable/index.vue +484 -484
  80. package/src/components/Filters/index.vue +363 -358
  81. package/src/components/Filters/indexO.vue +104 -104
  82. package/src/components/FlowStep/index.vue +68 -68
  83. package/src/components/FooterBox/index.vue +21 -21
  84. package/src/components/GeneralCard/index.vue +15 -15
  85. package/src/components/InputNumber/index.vue +153 -153
  86. package/src/components/InputNumber/numberRange.vue +47 -47
  87. package/src/components/InputSearch/index.vue +75 -75
  88. package/src/components/Layout/AsideNav/index.vue +144 -144
  89. package/src/components/Layout/HeaderWrap/changePwd.vue +215 -215
  90. package/src/components/Layout/HeaderWrap/index.vue +333 -336
  91. package/src/components/Layout/HeaderWrap/noticePop.vue +300 -291
  92. package/src/components/Layout/SubContent/index.vue +131 -131
  93. package/src/components/Layout/TabsNav/index.vue +170 -170
  94. package/src/components/Layout/index.vue +529 -529
  95. package/src/components/Layout/utils.js +12 -12
  96. package/src/components/LoginTemporary/form.vue +537 -511
  97. package/src/components/LoginTemporary/index.vue +122 -122
  98. package/src/components/LoginTemporary/qrcode.vue +90 -90
  99. package/src/components/LoginTemporary/retrievePw.vue +28 -28
  100. package/src/components/LoginTemporary/utils.js +73 -73
  101. package/src/components/MicroApp/index.js +67 -67
  102. package/src/components/MicroFrame/index.vue +95 -95
  103. package/src/components/MoreTab/index.vue +232 -232
  104. package/src/components/NavMenu/index.vue +60 -60
  105. package/src/components/NstcG6Components/NstcDialog/NstcDialog.vue +184 -184
  106. package/src/components/PageLayout/page.vue +15 -15
  107. package/src/components/Pagination/index.vue +96 -96
  108. package/src/components/SecondaryTab/index.vue +58 -58
  109. package/src/components/SelectLazy/index.vue +75 -75
  110. package/src/components/SelectTree/SelectTreeLazy.vue +241 -241
  111. package/src/components/SelectTree/index.vue +208 -208
  112. package/src/components/ShowColumn/index.vue +204 -188
  113. package/src/components/Sifting/index.vue +99 -99
  114. package/src/components/Statis/index.vue +97 -97
  115. package/src/components/Statis/statisItem.vue +54 -54
  116. package/src/components/Statis/statisPopover.vue +55 -55
  117. package/src/components/Step/index.vue +38 -38
  118. package/src/components/Suspend/index.vue +72 -72
  119. package/src/components/Table/index.vue +170 -131
  120. package/src/components/Table/indexO.vue +149 -149
  121. package/src/components/Task/index.vue +26 -26
  122. package/src/components/TertiaryTab/index.vue +53 -53
  123. package/src/components/TimePicker/index.vue +28 -28
  124. package/src/components/Upload/index.vue +242 -242
  125. package/src/components/WornPagination/index.vue +73 -73
  126. package/src/directives/VClickOutside/index.js +19 -19
  127. package/src/directives/VHas/index.js +32 -27
  128. package/src/directives/VMove/index.js +42 -42
  129. package/src/directives/VTitle/index.js +56 -56
  130. package/src/directives/VTitle/tooltip.vue +21 -21
  131. package/src/index.js +218 -225
  132. package/src/plugins/CompatibleOld/index.js +57 -57
  133. package/src/plugins/Print/index.js +4 -4
  134. package/src/plugins/Print/print-js/.babelrc +12 -12
  135. package/src/plugins/Print/print-js/LICENSE +21 -21
  136. package/src/plugins/Print/print-js/README.md +98 -98
  137. package/src/plugins/Print/print-js/dist/print.css +96 -96
  138. package/src/plugins/Print/print-js/dist/print.js +990 -990
  139. package/src/plugins/Print/print-js/package.json +60 -60
  140. package/src/plugins/Print/print-js/src/index.d.ts +45 -45
  141. package/src/plugins/Print/print-js/src/index.js +10 -10
  142. package/src/plugins/Print/print-js/src/js/browser.js +33 -33
  143. package/src/plugins/Print/print-js/src/js/functions.js +103 -103
  144. package/src/plugins/Print/print-js/src/js/html.js +70 -70
  145. package/src/plugins/Print/print-js/src/js/image.js +48 -48
  146. package/src/plugins/Print/print-js/src/js/init.js +168 -168
  147. package/src/plugins/Print/print-js/src/js/json.js +109 -109
  148. package/src/plugins/Print/print-js/src/js/modal.js +62 -62
  149. package/src/plugins/Print/print-js/src/js/pdf.js +62 -62
  150. package/src/plugins/Print/print-js/src/js/print.js +102 -102
  151. package/src/plugins/Print/print-js/src/js/raw-html.js +15 -15
  152. package/src/plugins/Print/print-js/src/sass/index.scss +13 -13
  153. package/src/plugins/Print/print-js/src/sass/modules/_colors.scss +9 -9
  154. package/src/plugins/Print/print-js/src/sass/partials/_modal.scss +40 -40
  155. package/src/plugins/Print/print-js/src/sass/partials/_spinner.scss +45 -45
  156. package/src/plugins/Print/print.js +2 -2
  157. package/src/plugins/Print/print.scss +1 -1
  158. package/src/plugins/SetMenuTree/index.vue +41 -41
  159. package/src/plugins/SetMenuTree/logoIcon.vue +37 -37
  160. package/src/plugins/SetMenuTree/setmenutree.vue +427 -427
  161. package/src/plugins/SetMenuTree/utils.js +74 -74
  162. package/src/plugins/Sign/InfosecNetSignCNGAgent.min.js +2000 -2000
  163. package/src/plugins/Sign/index.js +65 -65
  164. package/src/plugins/Sign/sign.js +1 -1
  165. package/src/plugins/setTabsForSub.js +2 -2
  166. package/src/utils/auth.js +53 -53
  167. package/src/utils/axios.js +203 -203
  168. package/src/utils/downloadBlob.js +19 -19
  169. package/src/utils/forEachs.js +16 -16
  170. package/src/utils/getScrollContainer.js +43 -43
  171. package/src/utils/i18n/cn2hk.json +1270 -1270
  172. package/src/utils/i18n/index.js +54 -54
  173. package/src/utils/list2tree.js +36 -36
  174. package/src/utils/msgboxPor.js +26 -26
  175. package/src/utils/print.js +161 -161
  176. package/src/utils/relaNo.js +69 -35
  177. package/src/utils/repairElementUI.js +66 -66
  178. package/src/utils/urlToGo.js +82 -82
  179. package/style/css/normalize.scss +726 -723
  180. package/style/index.css +2 -2
  181. package/style/index.css.map +1 -1
  182. package/style/pageDemo/demo-1.vue +131 -130
  183. package/style/pageDemo/demo-2.vue +35 -35
  184. package/style/pageDemo/demo-3.vue +22 -22
  185. package/style/pageDemo/seeCode.js +20 -20
  186. package/style/server-config.jsonc +596 -663
@@ -1,336 +1,333 @@
1
- /* 页头内容 */
2
- <template>
3
- <div class="flex-box flex-v p-l-s p-r-s" :class="show && 'header-wrap-show'">
4
- <img
5
- class="header-logo"
6
- :src="headerLogoUrl"
7
- alt="logo"
8
- :style="{
9
- width: headerLogoWidth,
10
- height: headerLogoHeight
11
- }"
12
- />
13
- <el-divider direction="vertical" />
14
- <!-- eslint-disable-next-line vue/no-v-html -->
15
- <h3 class="header-title" v-html="headerTitle"></h3>
16
-
17
- <el-dropdown
18
- class="set-user-drop"
19
- trigger="click"
20
- placement="bottom"
21
- size="medium"
22
- @command="setUserFn"
23
- >
24
- <span class="set-user-btn el-icon-setting"></span>
25
-
26
- <el-dropdown-menu slot="dropdown">
27
- <el-dropdown-item icon="el-icon-document" command="setLang"
28
- >{{ '语言切换' | $l(i18n) }}
29
- </el-dropdown-item>
30
- <el-dropdown-item icon="el-icon-document" command="dowApp">{{
31
- '客户端下载' | $l(i18n)
32
- }}</el-dropdown-item>
33
- <el-dropdown-item
34
- v-if="false"
35
- icon="el-icon-document"
36
- command="setStyle"
37
- >{{ '主题设置' | $l(i18n) }}</el-dropdown-item
38
- >
39
- </el-dropdown-menu>
40
- </el-dropdown>
41
-
42
- <el-badge :hidden="noticeNum === 0" :value="noticeNum">
43
- <span v-popover:noticePop class="news-btn el-icon-bell"></span>
44
- </el-badge>
45
-
46
- <el-dropdown
47
- class="user-info-drop"
48
- trigger="click"
49
- placement="bottom-end"
50
- size="medium"
51
- @command="setUserFn"
52
- @visible-change="setUserVisible"
53
- >
54
- <img class="user-info-btn" :src="headerUserUrl" />
55
-
56
- <el-dropdown-menu slot="dropdown">
57
- <div
58
- class="user-info-name flex-box p-l p-r p-t-s p-b-s"
59
- style="max-width: 300px"
60
- >
61
- <span class="pointer" @click="goMdmUser">{{ userInfo.userName }}</span>
62
- <div class="flex-column flex-l">
63
- <span
64
- v-title="userInfo.companyName"
65
- class="
66
- flex-item
67
- text-ellipsis
68
- m-l m-b-ss
69
- font-size-small
70
- color-primary
71
- "
72
- :show-overflow-tooltip="true"
73
- >{{ userInfo.companyName }}</span
74
- >
75
- </div>
76
- </div>
77
- <div
78
- v-for="(item, i) in rolesList"
79
- :key="i"
80
- class="text-ellipsis m-l color-ccc"
81
- >{{ item.name }}</div>
82
- <el-dropdown-item command="changePassword" divided>{{
83
- '修改密码' | $l(i18n)
84
- }}</el-dropdown-item>
85
- <el-dropdown-item command="myDeal" divided>{{
86
- '我的交易' | $l(i18n)
87
- }}</el-dropdown-item>
88
- <el-divider class="m-t-s m-b-s" />
89
- <div class="user-log-time p-l p-r p-b-s">
90
- <i
91
- class="el-icon-s-help m-r-s"
92
- style="color: var(--color-success)"
93
- ></i>
94
- <span style="color: var(--color-text-placeholder)"
95
- >{{ '登录时长' | $l(i18n) }} {{ durationTime }}</span
96
- >
97
- </div>
98
- <el-dropdown-item command="logOut">{{
99
- '退出登录' | $l(i18n)
100
- }}</el-dropdown-item>
101
- </el-dropdown-menu>
102
- </el-dropdown>
103
-
104
- <dialogWrap
105
- :title="'语言切换' | $l(i18n)"
106
- :visible.sync="langV"
107
- append-to-body
108
- width="560px"
109
- >
110
- <div class="b-center">
111
- <el-radio-group v-model="langVal" @change="setLang">
112
- <el-radio label="zh-cn" border>{{ '中文简体' | $l(i18n) }}</el-radio>
113
- <el-radio label="zh-hk" border>{{ '中文繁体' | $l(i18n) }}</el-radio>
114
- <el-radio label="en" border>{{ '英文' | $l(i18n) }}</el-radio>
115
- </el-radio-group>
116
- </div>
117
- </dialogWrap>
118
- <dialogWrap
119
- :title="'修改密码' | $l(i18n)"
120
- :visible.sync="cpwdV"
121
- append-to-body
122
- width="400px"
123
- >
124
- <changePwd :visible.sync="cpwdV" />
125
- </dialogWrap>
126
- <!-- 消息/通知 -->
127
- <el-popover
128
- ref="noticePop"
129
- trigger="click"
130
- width="400"
131
- @after-enter="$refs.noticeContent.show()"
132
- >
133
- <noticePop ref="noticeContent" :num.sync="noticeNum" />
134
- </el-popover>
135
- </div>
136
- </template>
137
-
138
- <script>
139
- import dialogWrap from '../../Dialog/index.vue'
140
- import changePwd from './changePwd.vue'
141
- import noticePop from './noticePop.vue'
142
-
143
- import getJsonc from '../../../assets/getJsonc'
144
- import realUrl from '../../../assets/realUrl'
145
- import auth from '../../../utils/auth'
146
- import { linkPush } from '../../../utils/urlToGo'
147
- import dayjs from 'dayjs'
148
- import duration from 'dayjs/plugin/duration'
149
- dayjs.extend(duration)
150
-
151
- const prefix =
152
- window.__INJECTED_PUBLIC_PATH_BY_QIANKUN__ || process.env.BASE_URL || '/'
153
-
154
- const i18n = {
155
- 语言切换: {
156
- en: 'Language switching'
157
- },
158
- 客户端下载: {
159
- en: 'Client download'
160
- },
161
- 主题设置: {
162
- en: 'Theme setting'
163
- },
164
- 修改密码: {
165
- en: 'Change Password'
166
- },
167
- 我的交易: {
168
- en: 'My deal'
169
- },
170
- 登录时长: {
171
- en: 'Login duration'
172
- },
173
- 退出登录: {
174
- en: 'LogOut'
175
- },
176
- 小时: {
177
- en: ':'
178
- },
179
- 分: {
180
- en: ':'
181
- },
182
- 秒: {
183
- en: ':'
184
- },
185
- '确定退出,将清除未提交的临时操作,是否继续?': {
186
- en: 'Are you sure to exit? Uncommitted temporary operations will be cleared. Do you want to continue?'
187
- },
188
- 退出提示: {
189
- en: 'Exit Tips'
190
- },
191
- 中文简体: {
192
- en: 'Chinese Simplified'
193
- },
194
- 中文繁体: {
195
- en: 'Chinese Traditional'
196
- },
197
- 英文: {
198
- en: 'English'
199
- }
200
- }
201
-
202
- export default {
203
- components: {
204
- dialogWrap,
205
- changePwd,
206
- noticePop
207
- },
208
- data() {
209
- return {
210
- show: false,
211
- headerLogoUrl: undefined,
212
- headerLogoWidth: undefined,
213
- headerLogoHeight: undefined,
214
- headerTitle: undefined,
215
- headerUserUrl: undefined,
216
- userInfo: {},
217
- durationTime: '00小时00分00秒',
218
- cpwdV: false,
219
- langV: false,
220
- langVal: window.localStorage.getItem('pageLang') || 'zh-cn',
221
- noticeNum: 0,
222
- rolesList: [],
223
- i18n
224
- }
225
- },
226
- created() {
227
- getJsonc('/server-config.jsonc').then(({ _layoutData = {} }) => {
228
- this.show = true
229
-
230
- this.headerLogoUrl = realUrl(_layoutData.headerLogoUrl)
231
- this.headerUserUrl = realUrl(_layoutData.headerUserUrl)
232
- this.headerLogoWidth = _layoutData.headerLogoWidth
233
- this.headerLogoHeight = _layoutData.headerLogoHeight
234
- this.headerTitle = _layoutData.headerTitle
235
- })
236
- this.getUserRolesList()
237
- },
238
- methods: {
239
- // 跳转打主数据人员页面
240
- goMdmUser() {
241
- linkPush('/mdm/personnel')
242
- },
243
- setUserVisible(v) {
244
- if (v) {
245
- let loginTime = sessionStorage.getItem('loginTime')
246
- if (loginTime) {
247
- this.durationTime = dayjs.duration(Date.now() - loginTime).format(
248
- `HH${this.$l('小时', this.i18n)}
249
- mm${this.$l('分', this.i18n)}
250
- ss${this.$l('秒', this.i18n)}`
251
- )
252
- }
253
-
254
- let userInfo = JSON.parse(sessionStorage.getItem('userInfo') || '{}')
255
- this.userInfo = {
256
- userName: userInfo.uname,
257
- companyName: userInfo.cltName
258
- }
259
- }
260
- },
261
- async getUserRolesList() {
262
- let userNo = sessionStorage.getItem('userNo')
263
- const { data } = await this.$axios.get(
264
- `/bems/prod_1.0/user/api/userController/userCltAdRole/${userNo}`
265
- )
266
- this.rolesList = data.roles
267
- },
268
- setUserFn(c) {
269
- switch (c) {
270
- case 'setLang':
271
- // this.setLang()
272
- this.langV = true
273
- break
274
- case 'dowApp':
275
- this.dowApp()
276
- break
277
- case 'setStyle':
278
- this.setStyle()
279
- break
280
- case 'changePassword':
281
- this.changePassword()
282
- break
283
- case 'myDeal':
284
- this.myDeal()
285
- break
286
- case 'logOut':
287
- this.logOut()
288
- break
289
- }
290
- },
291
- setLang() {
292
- this.langV = false
293
- window.localStorage.setItem('pageLang', this.langVal)
294
- window.location.reload()
295
- },
296
- dowApp() {
297
- // alert('客户端下载')
298
- let name = 'download.exe'
299
- let aDom = document.createElement('a')
300
- aDom.href = `${prefix}server-assets/${name}`
301
- aDom.download = name
302
- aDom.click()
303
-
304
- this.$nextTick(() => {
305
- aDom = undefined
306
- })
307
- },
308
- setStyle() {
309
- // alert('主题设置')
310
- this.$emit('custom-event', { type: 'setStyle' })
311
- },
312
- changePassword() {
313
- // alert('修改密码')
314
- this.cpwdV = true
315
- },
316
- myDeal() {
317
- // alert('我的交易')
318
- this.$emit('custom-event', { type: 'myDeal' })
319
- },
320
- logOut() {
321
- // alert('退出登录')
322
- this.$confirm(
323
- this.$l('退出将清除未保存的临时操作,请确认是否继续?', this.i18n),
324
- this.$l('退出提示', this.i18n),
325
- {
326
- confirmButtonText: this.$l('确定'),
327
- cancelButtonText: this.$l('取消'),
328
- type: 'warning'
329
- }
330
- ).then(() => {
331
- auth.removeToken()
332
- })
333
- }
334
- }
335
- }
336
- </script>
1
+ /* 页头内容 */
2
+ <template>
3
+ <div class="flex-box flex-v p-l-s p-r-s" :class="show && 'header-wrap-show'">
4
+ <img
5
+ class="header-logo"
6
+ :src="headerLogoUrl"
7
+ alt="logo"
8
+ :style="{
9
+ width: headerLogoWidth,
10
+ height: headerLogoHeight
11
+ }"
12
+ />
13
+ <el-divider direction="vertical" />
14
+ <!-- eslint-disable-next-line vue/no-v-html -->
15
+ <h3 class="header-title" v-html="headerTitle"></h3>
16
+
17
+ <el-dropdown
18
+ class="set-user-drop"
19
+ trigger="click"
20
+ placement="bottom"
21
+ size="medium"
22
+ @command="setUserFn"
23
+ >
24
+ <span class="set-user-btn el-icon-setting"></span>
25
+
26
+ <el-dropdown-menu slot="dropdown">
27
+ <el-dropdown-item icon="el-icon-document" command="setLang"
28
+ >{{ '语言切换' | $l(i18n) }}
29
+ </el-dropdown-item>
30
+ <el-dropdown-item icon="el-icon-document" command="dowApp">{{
31
+ '客户端下载' | $l(i18n)
32
+ }}</el-dropdown-item>
33
+ <el-dropdown-item
34
+ v-if="false"
35
+ icon="el-icon-document"
36
+ command="setStyle"
37
+ >{{ '主题设置' | $l(i18n) }}</el-dropdown-item
38
+ >
39
+ </el-dropdown-menu>
40
+ </el-dropdown>
41
+
42
+ <el-badge :hidden="noticeNum === 0" :value="noticeNum">
43
+ <span v-popover:noticePop class="news-btn el-icon-bell"></span>
44
+ </el-badge>
45
+
46
+ <el-dropdown
47
+ class="user-info-drop"
48
+ trigger="click"
49
+ placement="bottom-end"
50
+ size="medium"
51
+ @command="setUserFn"
52
+ @visible-change="setUserVisible"
53
+ >
54
+ <img class="user-info-btn" :src="headerUserUrl" />
55
+
56
+ <el-dropdown-menu slot="dropdown">
57
+ <div
58
+ class="user-info-name flex-box p-l p-r p-t-s p-b-s"
59
+ style="max-width: 300px"
60
+ >
61
+ <span class="pointer" @click="goMdmUser">{{
62
+ userInfo.userName
63
+ }}</span>
64
+ <div class="flex-column flex-l">
65
+ <span
66
+ v-title="userInfo.companyName"
67
+ class="
68
+ flex-item
69
+ text-ellipsis
70
+ m-l m-b-ss
71
+ font-size-small
72
+ color-primary
73
+ "
74
+ :show-overflow-tooltip="true"
75
+ >{{ userInfo.companyName }}</span
76
+ >
77
+ </div>
78
+ </div>
79
+ <div
80
+ v-for="(item, i) in rolesList"
81
+ :key="i"
82
+ class="text-ellipsis m-l color-ccc"
83
+ >
84
+ {{ item.name }}
85
+ </div>
86
+ <el-dropdown-item command="changePassword" divided>{{
87
+ '修改密码' | $l(i18n)
88
+ }}</el-dropdown-item>
89
+ <el-dropdown-item command="myDeal" divided>{{
90
+ '我的交易' | $l(i18n)
91
+ }}</el-dropdown-item>
92
+ <el-divider class="m-t-s m-b-s" />
93
+ <div class="user-log-time p-l p-r p-b-s">
94
+ <i
95
+ class="el-icon-s-help m-r-s"
96
+ style="color: var(--color-success)"
97
+ ></i>
98
+ <span style="color: var(--color-text-placeholder)"
99
+ >{{ '登录时长' | $l(i18n) }} {{ durationTime }}</span
100
+ >
101
+ </div>
102
+ <el-dropdown-item command="logOut">{{
103
+ '退出登录' | $l(i18n)
104
+ }}</el-dropdown-item>
105
+ </el-dropdown-menu>
106
+ </el-dropdown>
107
+
108
+ <dialogWrap
109
+ :title="'语言切换' | $l(i18n)"
110
+ :visible.sync="langV"
111
+ append-to-body
112
+ width="560px"
113
+ >
114
+ <div class="b-center">
115
+ <el-radio-group v-model="langVal" @change="setLang">
116
+ <el-radio label="zh-cn" border>{{ '中文简体' | $l(i18n) }}</el-radio>
117
+ <el-radio label="zh-hk" border>{{ '中文繁体' | $l(i18n) }}</el-radio>
118
+ <el-radio label="en" border>{{ '英文' | $l(i18n) }}</el-radio>
119
+ </el-radio-group>
120
+ </div>
121
+ </dialogWrap>
122
+ <dialogWrap
123
+ :title="'修改密码' | $l(i18n)"
124
+ :visible.sync="cpwdV"
125
+ append-to-body
126
+ width="400px"
127
+ >
128
+ <changePwd :visible.sync="cpwdV" />
129
+ </dialogWrap>
130
+ <!-- 消息/通知 -->
131
+ <el-popover
132
+ ref="noticePop"
133
+ trigger="click"
134
+ width="400"
135
+ @after-enter="$refs.noticeContent.show()"
136
+ >
137
+ <noticePop ref="noticeContent" :num.sync="noticeNum" />
138
+ </el-popover>
139
+ </div>
140
+ </template>
141
+
142
+ <script>
143
+ import dialogWrap from '../../Dialog/index.vue'
144
+ import changePwd from './changePwd.vue'
145
+ import noticePop from './noticePop.vue'
146
+
147
+ import getJsonc from '../../../assets/getJsonc'
148
+ import realUrl from '../../../assets/realUrl'
149
+ import auth from '../../../utils/auth'
150
+ import { linkPush } from '../../../utils/urlToGo'
151
+ import dayjs from 'dayjs'
152
+ import duration from 'dayjs/plugin/duration'
153
+ dayjs.extend(duration)
154
+
155
+ const prefix =
156
+ window.__INJECTED_PUBLIC_PATH_BY_QIANKUN__ || process.env.BASE_URL || '/'
157
+
158
+ const i18n = {
159
+ 语言切换: {
160
+ en: 'Language switching'
161
+ },
162
+ 客户端下载: {
163
+ en: 'Client download'
164
+ },
165
+ 主题设置: {
166
+ en: 'Theme setting'
167
+ },
168
+ 修改密码: {
169
+ en: 'Change Password'
170
+ },
171
+ 我的交易: {
172
+ en: 'My deal'
173
+ },
174
+ 登录时长: {
175
+ en: 'Login duration'
176
+ },
177
+ 退出登录: {
178
+ en: 'LogOut'
179
+ },
180
+ 小时: {
181
+ en: ':'
182
+ },
183
+ 分: {
184
+ en: ':'
185
+ },
186
+ 秒: {
187
+ en: ':'
188
+ },
189
+ '确定退出,将清除未提交的临时操作,是否继续?': {
190
+ en: 'Are you sure to exit? Uncommitted temporary operations will be cleared. Do you want to continue?'
191
+ },
192
+ 退出提示: {
193
+ en: 'Exit Tips'
194
+ },
195
+ 中文简体: {
196
+ en: 'Chinese Simplified'
197
+ },
198
+ 中文繁体: {
199
+ en: 'Chinese Traditional'
200
+ },
201
+ 英文: {
202
+ en: 'English'
203
+ }
204
+ }
205
+
206
+ export default {
207
+ components: {
208
+ dialogWrap,
209
+ changePwd,
210
+ noticePop
211
+ },
212
+ data() {
213
+ return {
214
+ show: false,
215
+ headerLogoUrl: undefined,
216
+ headerLogoWidth: undefined,
217
+ headerLogoHeight: undefined,
218
+ headerTitle: undefined,
219
+ headerUserUrl: undefined,
220
+ userInfo: {},
221
+ durationTime: '00小时00分00秒',
222
+ cpwdV: false,
223
+ langV: false,
224
+ langVal: window.localStorage.getItem('pageLang') || 'zh-cn',
225
+ noticeNum: 0,
226
+ rolesList: [],
227
+ i18n
228
+ }
229
+ },
230
+ created() {
231
+ getJsonc('/server-config.jsonc').then(({ _layoutData = {} }) => {
232
+ this.show = true
233
+
234
+ this.headerLogoUrl = realUrl(_layoutData.headerLogoUrl)
235
+ this.headerUserUrl = realUrl(_layoutData.headerUserUrl)
236
+ this.headerLogoWidth = _layoutData.headerLogoWidth
237
+ this.headerLogoHeight = _layoutData.headerLogoHeight
238
+ this.headerTitle = _layoutData.headerTitle
239
+ })
240
+ },
241
+ methods: {
242
+ // 跳转打主数据人员页面
243
+ goMdmUser() {
244
+ linkPush('/mdm/personnel')
245
+ },
246
+ setUserVisible(v) {
247
+ if (v) {
248
+ let loginTime = sessionStorage.getItem('loginTime')
249
+ if (loginTime) {
250
+ this.durationTime = dayjs.duration(Date.now() - loginTime).format(
251
+ `HH${this.$l('小时', this.i18n)}
252
+ mm${this.$l('分', this.i18n)}
253
+ ss${this.$l('秒', this.i18n)}`
254
+ )
255
+ }
256
+
257
+ let userInfo = JSON.parse(sessionStorage.getItem('userInfo') || '{}')
258
+ this.userInfo = {
259
+ userName: userInfo.uname,
260
+ companyName: userInfo.cltName
261
+ }
262
+ this.rolesList = userInfo.roles || []
263
+ }
264
+ },
265
+ setUserFn(c) {
266
+ switch (c) {
267
+ case 'setLang':
268
+ // this.setLang()
269
+ this.langV = true
270
+ break
271
+ case 'dowApp':
272
+ this.dowApp()
273
+ break
274
+ case 'setStyle':
275
+ this.setStyle()
276
+ break
277
+ case 'changePassword':
278
+ this.changePassword()
279
+ break
280
+ case 'myDeal':
281
+ this.myDeal()
282
+ break
283
+ case 'logOut':
284
+ this.logOut()
285
+ break
286
+ }
287
+ },
288
+ setLang() {
289
+ this.langV = false
290
+ window.localStorage.setItem('pageLang', this.langVal)
291
+ window.location.reload()
292
+ },
293
+ dowApp() {
294
+ // alert('客户端下载')
295
+ let name = 'download.exe'
296
+ let aDom = document.createElement('a')
297
+ aDom.href = `${prefix}server-assets/${name}`
298
+ aDom.download = name
299
+ aDom.click()
300
+
301
+ this.$nextTick(() => {
302
+ aDom = undefined
303
+ })
304
+ },
305
+ setStyle() {
306
+ // alert('主题设置')
307
+ this.$emit('custom-event', { type: 'setStyle' })
308
+ },
309
+ changePassword() {
310
+ // alert('修改密码')
311
+ this.cpwdV = true
312
+ },
313
+ myDeal() {
314
+ // alert('我的交易')
315
+ this.$emit('custom-event', { type: 'myDeal' })
316
+ },
317
+ logOut() {
318
+ // alert('退出登录')
319
+ this.$confirm(
320
+ this.$l('退出将清除未保存的临时操作,请确认是否继续?', this.i18n),
321
+ this.$l('退出提示', this.i18n),
322
+ {
323
+ confirmButtonText: this.$l('确定'),
324
+ cancelButtonText: this.$l('取消'),
325
+ type: 'warning'
326
+ }
327
+ ).then(() => {
328
+ auth.removeToken()
329
+ })
330
+ }
331
+ }
332
+ }
333
+ </script>