n20-common-lib 1.2.21 → 1.2.22

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