n20-common-lib 1.2.6 → 1.2.9

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 (202) hide show
  1. package/README.md +2 -2
  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 +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 +454 -454
  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 +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 -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 -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 -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/iconFont/demo.css +539 -0
  51. package/src/assets/iconFont/demo_index.html +1614 -0
  52. package/src/assets/iconFont/iconfont.css +263 -0
  53. package/src/assets/iconFont/iconfont.js +1 -0
  54. package/src/assets/iconFont/iconfont.json +443 -0
  55. package/src/assets/iconFont/iconfont.ttf +0 -0
  56. package/src/assets/iconFont/iconfont.woff +0 -0
  57. package/src/assets/iconFont/iconfont.woff2 +0 -0
  58. package/src/assets/realUrl.js +12 -12
  59. package/src/components/.DS_Store +0 -0
  60. package/src/components/Anchor/AnchorItem.vue +29 -29
  61. package/src/components/Anchor/index.vue +185 -185
  62. package/src/components/ApprovalButtons/index.vue +232 -232
  63. package/src/components/ApprovalCard/index.vue +128 -128
  64. package/src/components/ApprovalRecord/approvalImg.vue +39 -39
  65. package/src/components/ApprovalRecord/index.vue +59 -59
  66. package/src/components/Button/button-group.vue +150 -150
  67. package/src/components/Button/icon-group-button.vue +61 -61
  68. package/src/components/Button/index.vue +56 -56
  69. package/src/components/CascaderArea/index.vue +81 -81
  70. package/src/components/ContentLoading/index.vue +41 -41
  71. package/src/components/ContentNull/index.vue +19 -19
  72. package/src/components/DatePicker/index.vue +27 -27
  73. package/src/components/DatePicker/por.vue +169 -169
  74. package/src/components/Dialog/index.vue +26 -26
  75. package/src/components/Dialog/indexO.vue +116 -116
  76. package/src/components/DragList/index.vue +68 -68
  77. package/src/components/Empty/img/abnormal.svg +108 -108
  78. package/src/components/Empty/img/dispose.svg +71 -71
  79. package/src/components/Empty/img/empty.svg +57 -57
  80. package/src/components/Empty/img/general.svg +58 -58
  81. package/src/components/Empty/img/lock.svg +57 -57
  82. package/src/components/Empty/img/network.svg +59 -59
  83. package/src/components/Empty/img/relevant.svg +68 -68
  84. package/src/components/Empty/img/search.svg +72 -72
  85. package/src/components/Empty/index.vue +92 -92
  86. package/src/components/Expandable/index.vue +49 -49
  87. package/src/components/Expandable/main.vue +52 -52
  88. package/src/components/FileExportAsync/index.vue +174 -0
  89. package/src/components/FileUploadTable/index.vue +484 -484
  90. package/src/components/Filters/index.vue +369 -369
  91. package/src/components/Filters/indexO.vue +104 -104
  92. package/src/components/FlowStep/index.vue +68 -68
  93. package/src/components/FooterBox/index.vue +21 -21
  94. package/src/components/GeneralCard/index.vue +15 -15
  95. package/src/components/InputNumber/index.vue +153 -153
  96. package/src/components/InputNumber/numberRange.vue +47 -47
  97. package/src/components/InputSearch/index.vue +75 -75
  98. package/src/components/Layout/.DS_Store +0 -0
  99. package/src/components/Layout/AsideNav/index.vue +119 -144
  100. package/src/components/Layout/AsideNav/menuItem.vue +34 -0
  101. package/src/components/Layout/AsideNav/submenuTitle.vue +26 -0
  102. package/src/components/Layout/HeaderWrap/changePwd.vue +215 -215
  103. package/src/components/Layout/HeaderWrap/index.vue +348 -333
  104. package/src/components/Layout/HeaderWrap/noticePop.vue +300 -300
  105. package/src/components/Layout/SubContent/index.vue +131 -131
  106. package/src/components/Layout/TabsNav/index.vue +170 -170
  107. package/src/components/Layout/index.vue +529 -529
  108. package/src/components/Layout/utils.js +12 -12
  109. package/src/components/LoginTemporary/form.vue +537 -537
  110. package/src/components/LoginTemporary/index.vue +122 -122
  111. package/src/components/LoginTemporary/qrcode.vue +90 -90
  112. package/src/components/LoginTemporary/retrievePw.vue +28 -28
  113. package/src/components/LoginTemporary/utils.js +73 -73
  114. package/src/components/MicroApp/index.js +67 -67
  115. package/src/components/MicroFrame/index.vue +95 -95
  116. package/src/components/MoreTab/index.vue +232 -232
  117. package/src/components/NavMenu/index.vue +60 -60
  118. package/src/components/NstcG6Components/NstcDialog/NstcDialog.vue +184 -184
  119. package/src/components/PageLayout/page.vue +15 -15
  120. package/src/components/Pagination/index.vue +96 -96
  121. package/src/components/SecondaryTab/index.vue +58 -58
  122. package/src/components/SelectLazy/index.vue +75 -75
  123. package/src/components/SelectTree/SelectTreeLazy.vue +241 -241
  124. package/src/components/SelectTree/index.vue +205 -205
  125. package/src/components/ShowColumn/index.vue +204 -204
  126. package/src/components/Sifting/index.vue +99 -99
  127. package/src/components/Statis/index.vue +97 -97
  128. package/src/components/Statis/statisItem.vue +54 -54
  129. package/src/components/Statis/statisPopover.vue +55 -55
  130. package/src/components/Step/index.vue +38 -38
  131. package/src/components/Suspend/index.vue +72 -72
  132. package/src/components/Table/index.vue +179 -179
  133. package/src/components/Table/indexO.vue +149 -149
  134. package/src/components/Task/index.vue +26 -26
  135. package/src/components/TertiaryTab/index.vue +53 -53
  136. package/src/components/TimePicker/index.vue +28 -28
  137. package/src/components/Upload/index.vue +242 -242
  138. package/src/components/WornPagination/index.vue +73 -73
  139. package/src/directives/VClickOutside/index.js +19 -19
  140. package/src/directives/VHas/index.js +32 -32
  141. package/src/directives/VMove/index.js +42 -42
  142. package/src/directives/VTitle/index.js +64 -56
  143. package/src/directives/VTitle/tooltip.vue +21 -21
  144. package/src/index.js +225 -218
  145. package/src/plugins/CompatibleOld/index.js +57 -57
  146. package/src/plugins/Print/index.js +4 -4
  147. package/src/plugins/Print/print-js/.babelrc +12 -12
  148. package/src/plugins/Print/print-js/LICENSE +21 -21
  149. package/src/plugins/Print/print-js/README.md +98 -98
  150. package/src/plugins/Print/print-js/dist/print.css +96 -96
  151. package/src/plugins/Print/print-js/dist/print.js +990 -990
  152. package/src/plugins/Print/print-js/package.json +60 -60
  153. package/src/plugins/Print/print-js/src/index.d.ts +45 -45
  154. package/src/plugins/Print/print-js/src/index.js +10 -10
  155. package/src/plugins/Print/print-js/src/js/browser.js +33 -33
  156. package/src/plugins/Print/print-js/src/js/functions.js +103 -103
  157. package/src/plugins/Print/print-js/src/js/html.js +70 -70
  158. package/src/plugins/Print/print-js/src/js/image.js +48 -48
  159. package/src/plugins/Print/print-js/src/js/init.js +168 -168
  160. package/src/plugins/Print/print-js/src/js/json.js +109 -109
  161. package/src/plugins/Print/print-js/src/js/modal.js +62 -62
  162. package/src/plugins/Print/print-js/src/js/pdf.js +62 -62
  163. package/src/plugins/Print/print-js/src/js/print.js +102 -102
  164. package/src/plugins/Print/print-js/src/js/raw-html.js +15 -15
  165. package/src/plugins/Print/print-js/src/sass/index.scss +13 -13
  166. package/src/plugins/Print/print-js/src/sass/modules/_colors.scss +9 -9
  167. package/src/plugins/Print/print-js/src/sass/partials/_modal.scss +40 -40
  168. package/src/plugins/Print/print-js/src/sass/partials/_spinner.scss +45 -45
  169. package/src/plugins/Print/print.js +2 -2
  170. package/src/plugins/Print/print.scss +1 -1
  171. package/src/plugins/SetMenuTree/index.vue +41 -41
  172. package/src/plugins/SetMenuTree/logoIcon.vue +37 -37
  173. package/src/plugins/SetMenuTree/setmenutree.vue +427 -427
  174. package/src/plugins/SetMenuTree/utils.js +74 -74
  175. package/src/plugins/Sign/InfosecNetSignCNGAgent.min.js +2000 -2000
  176. package/src/plugins/Sign/index.js +65 -65
  177. package/src/plugins/Sign/sign.js +1 -1
  178. package/src/plugins/setTabsForSub.js +2 -2
  179. package/src/utils/auth.js +53 -53
  180. package/src/utils/axios.js +203 -203
  181. package/src/utils/downloadBlob.js +19 -19
  182. package/src/utils/forEachs.js +16 -16
  183. package/src/utils/getScrollContainer.js +43 -43
  184. package/src/utils/i18n/cn2hk.json +1270 -1270
  185. package/src/utils/i18n/index.js +54 -54
  186. package/src/utils/list2tree.js +36 -36
  187. package/src/utils/msgboxPor.js +26 -26
  188. package/src/utils/print.js +161 -161
  189. package/src/utils/relaNo.js +69 -69
  190. package/src/utils/repairElementUI.js +66 -66
  191. package/src/utils/urlToGo.js +82 -82
  192. package/style/css/normalize.scss +723 -726
  193. package/style/fonts/iconfont.022f36c4.woff2 +0 -0
  194. package/style/fonts/iconfont.4a1b2c93.woff +0 -0
  195. package/style/fonts/iconfont.a9febaa2.ttf +0 -0
  196. package/style/index.css +3 -2
  197. package/style/index.css.map +1 -1
  198. package/style/pageDemo/demo-1.vue +130 -131
  199. package/style/pageDemo/demo-2.vue +35 -35
  200. package/style/pageDemo/demo-3.vue +22 -22
  201. package/style/pageDemo/seeCode.js +20 -20
  202. package/style/server-config.jsonc +663 -596
@@ -1,333 +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-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>
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>