cloud-web-corejs 1.1.0-dev.6 → 1.1.0-dev.61

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 (499) hide show
  1. package/README.md +38 -0
  2. package/bin/core-resources.js +16 -0
  3. package/bin/create-child-app.js +34 -0
  4. package/docs/child-app/README.md +95 -0
  5. package/docs/child-app/activiti-resources.md +63 -0
  6. package/docs/child-app/generate-prompt.md +55 -0
  7. package/docs/child-app/luckysheet-resources.md +80 -0
  8. package/docs/child-app/public-resources-plan.md +288 -0
  9. package/docs/child-app/resources-implementation.md +101 -0
  10. package/docs/child-app/tinymce-resources.md +88 -0
  11. package/docs/child-app/validation.md +34 -0
  12. package/docs/qiankun/346/216/245/345/205/245/345/215/217/350/256/256.md +298 -0
  13. package/docs/qiankun/350/257/246/346/203/205/346/211/277/350/275/275/345/255/220/345/272/224/347/224/250/345/257/271/346/216/245/346/270/205/345/215/225.md +111 -0
  14. package/package.json +29 -4
  15. package/resource-tools/index.js +126 -0
  16. package/src/app-bootstrap.js +531 -0
  17. package/src/app-bootstrap.sync.js +502 -0
  18. package/src/boot-assets.legacy.js +13 -0
  19. package/src/boot-assets.next.js +7 -0
  20. package/src/components/Qrcode/fileParse.vue +11 -0
  21. package/src/components/Tinymce/dynamicLoadScript.js +51 -59
  22. package/src/components/Tinymce/index.vue +382 -336
  23. package/src/components/Tinymce/mce-chrome.scss +150 -0
  24. package/src/components/VabUpload/image-viewer.vue +18 -10
  25. package/src/components/VabUpload/index.js +11 -4
  26. package/src/components/VabUpload/index.vue +1 -1
  27. package/src/components/VabUpload/mixins/fileLibraryDialog.js +2 -0
  28. package/src/components/VabUpload/mixins.js +72 -40
  29. package/src/components/VabUpload/partUploadConfig.js +95 -0
  30. package/src/components/VabUpload/privateProfileDialogMixins.js +2 -0
  31. package/src/components/VabUpload/style.scss +282 -0
  32. package/src/components/VabUpload/view.vue +19 -18
  33. package/src/components/baseArea/index.vue +2 -2
  34. package/src/components/baseInputExport/mixins.js +1 -6
  35. package/src/components/bizTab/BizTabListPage.vue +66 -33
  36. package/src/components/bizTab/README.md +3 -1
  37. package/src/components/bizTab/bizBillDetailMixin.js +2 -0
  38. package/src/components/code-editor/ace-chrome.scss +17 -0
  39. package/src/components/code-editor/index.vue +361 -340
  40. package/src/components/errorMsg/index.vue +142 -13
  41. package/src/components/errorMsg/mixins.js +53 -0
  42. package/src/components/excelExport/conditionExportConfig.js +112 -0
  43. package/src/components/excelExport/exportColumnMemory.js +118 -0
  44. package/src/components/excelExport/exportFieldDialog.vue +50 -38
  45. package/src/components/excelExport/exportType.js +8 -0
  46. package/src/components/excelExport/index.js +30 -13
  47. package/src/components/excelExport/index.vue +7 -1
  48. package/src/components/excelExport/mixins.js +782 -293
  49. package/src/components/excelImport/index.vue +156 -156
  50. package/src/components/excelImport/mixins.js +888 -834
  51. package/src/components/fileLibrary/mixins/indexMixins.js +2 -0
  52. package/src/components/fileLibrary/style.scss +579 -0
  53. package/src/components/formDialog/index.vue +11 -8
  54. package/src/components/hiprint/style.scss +188 -0
  55. package/src/components/hiprint/view/json-view.vue +4 -4
  56. package/src/components/jdPrint/mixins.js +2 -0
  57. package/src/components/jsonImport/index.vue +1 -1
  58. package/src/components/jsonImport/mixins.js +6 -10
  59. package/src/components/langImport/index.vue +1 -1
  60. package/src/components/langImport/mixins.js +6 -10
  61. package/src/components/luckysheet/loadResources.js +64 -0
  62. package/src/components/luckysheet/view.vue +239 -210
  63. package/src/components/mobile/buttonGroup/index.vue +1 -1
  64. package/src/components/mobile/wf/addTaskUserdialog.vue +100 -80
  65. package/src/components/mobile/wf/content.vue +1734 -1662
  66. package/src/components/mobile/wf/deleteTaskUserDialog.vue +73 -54
  67. package/src/components/mobile/wf/selectUserDialog.vue +118 -0
  68. package/src/components/mobile/wf/setCandidateDialog.vue +69 -48
  69. package/src/components/mobile/wf/urgingDialog.vue +75 -52
  70. package/src/components/mobile/wf/wfModifyDialog.vue +4 -0
  71. package/src/components/obsUpload/index.js +4 -1
  72. package/src/components/obsUpload/index.vue +1 -1
  73. package/src/components/obsUpload/mixins.js +45 -15
  74. package/src/components/onlineTalk/index.vue +4 -4
  75. package/src/components/onlineTalk/mixins.js +21 -7
  76. package/src/components/table/index.js +96 -81
  77. package/src/components/table/plugins/cell-area/index.js +10 -3
  78. package/src/components/table/style.scss +1399 -0
  79. package/src/components/table/vxeFilter/mixin.js +28 -18
  80. package/src/components/wf/content.vue +3 -2
  81. package/src/components/wf/content2.vue +1 -1
  82. package/src/components/wf/style.scss +265 -0
  83. package/src/components/wf/wf.js +7 -0
  84. package/src/components/wf/wfActionItems.js +3 -0
  85. package/src/components/wf/wfStartDialog.vue +1 -0
  86. package/src/components/wf/wfTransferEnabled.js +54 -0
  87. package/src/components/wf/wfUtil.js +47 -29
  88. package/src/components/wf/wfVisibility.js +6 -0
  89. package/src/components/xform/docs/2026-07 table/344/270/216excelExport/344/277/256/345/244/215/345/217/212/345/257/274/345/207/272/344/274/230/345/214/226.md" +64 -57
  90. package/src/components/xform/docs/2026-08 xform H5 P0 /345/256/236/347/216/260/350/247/204/346/240/274.md" +1 -1
  91. package/src/components/xform/docs/2026-08 xform /347/247/273/345/212/250/347/253/257/345/270/203/345/261/200/345/257/271/351/275/220 bill_setting /346/226/271/346/241/210.md" +1 -1
  92. package/src/components/xform/docs/2026-09 /345/212/250/346/200/201/345/255/227/346/256/265/350/247/204/345/210/231/344/270/216/346/265/201/347/250/213/346/216/247/345/210/266/346/211/247/350/241/214/351/241/272/345/272/217/350/220/275/345/234/260/346/226/271/346/241/210.md" +409 -0
  93. package/src/components/xform/docs/2026-09 /346/235/241/344/273/266/345/257/274/345/207/272/345/244/247/346/225/260/346/215/256/351/207/217/345/264/251/346/272/203/346/216/222/346/237/245.md" +389 -0
  94. package/src/components/xform/docs/2026-09 /346/265/217/350/247/210/345/231/250/345/264/251/346/272/203/346/262/273/347/220/206P0/344/273/243/347/240/201/350/257/204/345/256/241.md" +255 -0
  95. package/src/components/xform/docs/2026-09 /346/265/217/350/247/210/345/231/250/345/264/251/346/272/203/346/262/273/347/220/206P0/346/265/213/350/257/225/351/252/214/350/257/201/345/256/236/346/226/275/346/226/207/346/241/243.md" +595 -0
  96. package/src/components/xform/docs/2026-09 /347/274/226/350/276/221/350/241/250/350/241/214/345/206/205/344/277/235/345/255/230/346/240/241/351/252/214/350/214/203/345/233/264/344/270/216/345/210/227/345/277/205/345/241/253/350/247/243/346/236/220/344/277/256/345/244/215.md" +233 -0
  97. package/src/components/xform/docs/2026-09 /350/241/250/345/215/225/345/257/274/345/205/245/351/200/232/351/201/223/346/242/263/347/220/206/344/270/216/350/220/275/345/234/260/346/226/271/346/241/210.md" +745 -0
  98. package/src/components/xform/docs//346/265/217/350/247/210/345/231/250/345/264/251/346/272/203/346/262/273/347/220/206/344/270/216/344/277/256/345/244/215/350/220/275/345/234/260/346/226/271/346/241/210.md +324 -0
  99. package/src/components/xform/form-designer/designer.js +2133 -2100
  100. package/src/components/xform/form-designer/form-widget/container-widget/data-table-mixin.js +7 -0
  101. package/src/components/xform/form-designer/form-widget/container-widget/data-table-widget.vue +4 -2
  102. package/src/components/xform/form-designer/form-widget/container-widget/detail-h5-widget.vue +243 -227
  103. package/src/components/xform/form-designer/form-widget/container-widget/h5-card-pane-widget.vue +228 -207
  104. package/src/components/xform/form-designer/form-widget/container-widget/h5-card-widget.vue +165 -136
  105. package/src/components/xform/form-designer/form-widget/dialog/formDialog.vue +30 -4
  106. package/src/components/xform/form-designer/form-widget/dialog/importDialog.vue +190 -185
  107. package/src/components/xform/form-designer/form-widget/dialog/importDialogMixin.js +2657 -1774
  108. package/src/components/xform/form-designer/form-widget/dialog/searchFormDialog.vue +27 -4
  109. package/src/components/xform/form-designer/form-widget/field-widget/a-link-widget.vue +1 -1
  110. package/src/components/xform/form-designer/form-widget/field-widget/a-text-widget.vue +1 -1
  111. package/src/components/xform/form-designer/form-widget/field-widget/area-select-widget.vue +1 -1
  112. package/src/components/xform/form-designer/form-widget/field-widget/autocomplete-widget.vue +1 -1
  113. package/src/components/xform/form-designer/form-widget/field-widget/baseAttachment-widget.vue +1 -1
  114. package/src/components/xform/form-designer/form-widget/field-widget/button-widget.vue +1 -1
  115. package/src/components/xform/form-designer/form-widget/field-widget/cascader-widget.vue +1 -1
  116. package/src/components/xform/form-designer/form-widget/field-widget/census-widget.vue +1 -1
  117. package/src/components/xform/form-designer/form-widget/field-widget/checkbox-widget.vue +1 -1
  118. package/src/components/xform/form-designer/form-widget/field-widget/color-widget.vue +1 -1
  119. package/src/components/xform/form-designer/form-widget/field-widget/copy_button-widget.vue +1 -1
  120. package/src/components/xform/form-designer/form-widget/field-widget/date-range-widget.vue +1 -1
  121. package/src/components/xform/form-designer/form-widget/field-widget/date-widget.vue +1 -1
  122. package/src/components/xform/form-designer/form-widget/field-widget/descriptions-widget.vue +1 -1
  123. package/src/components/xform/form-designer/form-widget/field-widget/divider-widget.vue +1 -1
  124. package/src/components/xform/form-designer/form-widget/field-widget/download-button-widget.vue +1 -1
  125. package/src/components/xform/form-designer/form-widget/field-widget/dropdown-item-widget.vue +1 -1
  126. package/src/components/xform/form-designer/form-widget/field-widget/dropdown-widget.vue +35 -4
  127. package/src/components/xform/form-designer/form-widget/field-widget/echart-bar-widget.vue +1 -1
  128. package/src/components/xform/form-designer/form-widget/field-widget/echart-category-widget.vue +1 -1
  129. package/src/components/xform/form-designer/form-widget/field-widget/echart-pie-widget.vue +1 -1
  130. package/src/components/xform/form-designer/form-widget/field-widget/fieldMixin.js +64 -10
  131. package/src/components/xform/form-designer/form-widget/field-widget/file-upload-widget.vue +1 -1
  132. package/src/components/xform/form-designer/form-widget/field-widget/form-item-wrapper.vue +14 -4
  133. package/src/components/xform/form-designer/form-widget/field-widget/html-text-widget.vue +1 -1
  134. package/src/components/xform/form-designer/form-widget/field-widget/import-button-widget.vue +19 -6
  135. package/src/components/xform/form-designer/form-widget/field-widget/import2-button-widget.vue +1 -1
  136. package/src/components/xform/form-designer/form-widget/field-widget/index.js +10 -1
  137. package/src/components/xform/form-designer/form-widget/field-widget/input-batch-widget.vue +1 -1
  138. package/src/components/xform/form-designer/form-widget/field-widget/input-widget.vue +29 -3
  139. package/src/components/xform/form-designer/form-widget/field-widget/multiSearch-widget.vue +1 -1
  140. package/src/components/xform/form-designer/form-widget/field-widget/news-list-widget.vue +1 -1
  141. package/src/components/xform/form-designer/form-widget/field-widget/number-widget.vue +1 -1
  142. package/src/components/xform/form-designer/form-widget/field-widget/oplog-widget.vue +1 -1
  143. package/src/components/xform/form-designer/form-widget/field-widget/picture-upload-widget.vue +1 -1
  144. package/src/components/xform/form-designer/form-widget/field-widget/print-button-widget.vue +1 -1
  145. package/src/components/xform/form-designer/form-widget/field-widget/print-detail-button-widget.vue +1 -1
  146. package/src/components/xform/form-designer/form-widget/field-widget/project-tag-widget.vue +1 -1
  147. package/src/components/xform/form-designer/form-widget/field-widget/radio-widget.vue +1 -1
  148. package/src/components/xform/form-designer/form-widget/field-widget/rate-widget.vue +1 -1
  149. package/src/components/xform/form-designer/form-widget/field-widget/rich-editor-widget.vue +1 -1
  150. package/src/components/xform/form-designer/form-widget/field-widget/row-col-select-widget.vue +64 -0
  151. package/src/components/xform/form-designer/form-widget/field-widget/save_submit_wf_button-widget.vue +1 -1
  152. package/src/components/xform/form-designer/form-widget/field-widget/script-input-widget.vue +1 -1
  153. package/src/components/xform/form-designer/form-widget/field-widget/search_button-widget.vue +1 -1
  154. package/src/components/xform/form-designer/form-widget/field-widget/select-export-button-widget.vue +1 -1
  155. package/src/components/xform/form-designer/form-widget/field-widget/select-export-item-button-widget.vue +6 -2
  156. package/src/components/xform/form-designer/form-widget/field-widget/select-widget.vue +1 -1
  157. package/src/components/xform/form-designer/form-widget/field-widget/singerSearch-widget.vue +1 -1
  158. package/src/components/xform/form-designer/form-widget/field-widget/singleUpload-widget.vue +145 -145
  159. package/src/components/xform/form-designer/form-widget/field-widget/slider-widget.vue +1 -1
  160. package/src/components/xform/form-designer/form-widget/field-widget/static-content-wrapper.vue +1 -1
  161. package/src/components/xform/form-designer/form-widget/field-widget/static-text-widget.vue +1 -1
  162. package/src/components/xform/form-designer/form-widget/field-widget/status-widget.vue +1 -1
  163. package/src/components/xform/form-designer/form-widget/field-widget/switch-widget.vue +1 -1
  164. package/src/components/xform/form-designer/form-widget/field-widget/table-export-button-widget.vue +3 -2
  165. package/src/components/xform/form-designer/form-widget/field-widget/tempStorage-widget.vue +1 -1
  166. package/src/components/xform/form-designer/form-widget/field-widget/text-widget.vue +1 -1
  167. package/src/components/xform/form-designer/form-widget/field-widget/textarea-widget.vue +1 -1
  168. package/src/components/xform/form-designer/form-widget/field-widget/time-range-widget.vue +1 -1
  169. package/src/components/xform/form-designer/form-widget/field-widget/time-widget.vue +1 -1
  170. package/src/components/xform/form-designer/form-widget/field-widget/title-head-widget.vue +1 -1
  171. package/src/components/xform/form-designer/form-widget/field-widget/vabSearch-widget.vue +1 -1
  172. package/src/components/xform/form-designer/form-widget/field-widget/vabUpload-widget.vue +3 -3
  173. package/src/components/xform/form-designer/form-widget/field-widget/vabUpload2-widget.vue +25 -1
  174. package/src/components/xform/form-designer/form-widget/field-widget/vue-page-widget.vue +1 -1
  175. package/src/components/xform/form-designer/indexMixin.js +27 -0
  176. package/src/components/xform/form-designer/setting-panel/form-dynamicField-setting.vue +687 -602
  177. package/src/components/xform/form-designer/setting-panel/form-setting.vue +269 -36
  178. package/src/components/xform/form-designer/setting-panel/property-editor/container-data-table/data-table-editor.vue +335 -12
  179. package/src/components/xform/form-designer/setting-panel/property-editor/container-data-table/table-column-dialog.vue +23 -7
  180. package/src/components/xform/form-designer/setting-panel/property-editor/container-detail/detail-temp-edito.vue +13 -1
  181. package/src/components/xform/form-designer/setting-panel/property-editor/container-list-h5/list-h5-editor.vue +846 -860
  182. package/src/components/xform/form-designer/setting-panel/property-editor/container-tab/tab-lazyRender-editor.vue +27 -0
  183. package/src/components/xform/form-designer/setting-panel/property-editor/event-handler/onTabChange-editor.vue +28 -0
  184. package/src/components/xform/form-designer/setting-panel/property-editor/event-handler/onTabClick-editor.vue +28 -0
  185. package/src/components/xform/form-designer/setting-panel/property-editor/field-import-button/import-button-editor.vue +62 -1
  186. package/src/components/xform/form-designer/setting-panel/property-editor/field-import-button/import2-button-editor.vue +142 -2
  187. package/src/components/xform/form-designer/setting-panel/property-editor/field-table-export-button/empty-number-input.vue +51 -0
  188. package/src/components/xform/form-designer/setting-panel/property-editor/field-table-export-button/select-export-item-button-editor.vue +27 -2
  189. package/src/components/xform/form-designer/setting-panel/property-editor/field-table-export-button/table-export-button-editor.vue +33 -3
  190. package/src/components/xform/form-designer/setting-panel/property-editor/project-tag-editor.vue +2 -4
  191. package/src/components/xform/form-designer/setting-panel/property-editor/suffixIconClickable-editor.vue +23 -0
  192. package/src/components/xform/form-designer/setting-panel/propertyRegister.js +18 -4
  193. package/src/components/xform/form-designer/toolbar-panel/index.vue +884 -874
  194. package/src/components/xform/form-designer/toolbar-panel/indexMixin.js +13 -0
  195. package/src/components/xform/form-designer/widget-panel/index.vue +11 -7
  196. package/src/components/xform/form-designer/widget-panel/indexMixin.js +15 -2
  197. package/src/components/xform/form-designer/widget-panel/widgetsConfig.js +152 -9
  198. package/src/components/xform/form-render/container-item/containerItemMixin.js +93 -8
  199. package/src/components/xform/form-render/container-item/data-table-item.vue +352 -347
  200. package/src/components/xform/form-render/container-item/data-table-mixin.js +7261 -5985
  201. package/src/components/xform/form-render/container-item/detail-h5-item.vue +48 -19
  202. package/src/components/xform/form-render/container-item/detail-item.vue +350 -446
  203. package/src/components/xform/form-render/container-item/dynamicFieldMixin.js +55 -1
  204. package/src/components/xform/form-render/container-item/list-h5-item.vue +261 -178
  205. package/src/components/xform/form-render/container-item/panel-item.vue +1 -1
  206. package/src/components/xform/form-render/container-item/tab-item.vue +177 -129
  207. package/src/components/xform/form-render/fieldControlEngine.js +218 -0
  208. package/src/components/xform/form-render/fieldControlMixin.js +536 -0
  209. package/src/components/xform/form-render/index.vue +164 -153
  210. package/src/components/xform/form-render/indexMixin.js +5443 -5311
  211. package/src/components/xform/form-render/pageDialogScope.js +54 -0
  212. package/src/components/xform/icon-picker/index.vue +1 -1
  213. package/src/components/xform/lang/en-US.js +8 -0
  214. package/src/components/xform/lang/zh-CN.js +9 -0
  215. package/src/components/xform/mixins/businessLock.js +59 -0
  216. package/src/components/xform/mixins/defaultHandle.js +713 -707
  217. package/src/components/xform/mixins/scriptHttp.js +42 -21
  218. package/src/components/xform/mixins/wfStart.js +105 -0
  219. package/src/components/xform/mixins/wfVisibility.js +33 -0
  220. package/src/components/xform/styles/census.scss +288 -0
  221. package/src/components/xform/styles/containers.scss +215 -0
  222. package/src/components/xform/styles/designer.scss +904 -0
  223. package/src/components/xform/styles/detail-temp.scss +71 -0
  224. package/src/components/xform/styles/h5-designer.scss +191 -0
  225. package/src/components/xform/styles/h5-runtime.scss +520 -0
  226. package/src/components/xform/styles/h5.scss +836 -516
  227. package/src/components/xform/styles/skins.scss +398 -0
  228. package/src/components/xform/styles/table-layout.scss +91 -0
  229. package/src/components/xform/styles/titles.scss +255 -0
  230. package/src/components/xform/utils/dynamicSchemaUtil.js +385 -361
  231. package/src/components/xform/utils/fixedQueryUtil.js +29 -4
  232. package/src/components/xform/utils/serviceNameCache.js +69 -0
  233. package/src/components/xform/utils/tableColumnHelper.js +46 -4
  234. package/src/components/xform/utils/util.js +1776 -1708
  235. package/src/core-resources/css/h5.scss +548 -0
  236. package/src/core-resources/css/iconfont.css +1447 -0
  237. package/src/core-resources/font/iconfont.ttf +0 -0
  238. package/src/core-resources/font/iconfont.woff +0 -0
  239. package/src/core-resources/font/iconfont.woff2 +0 -0
  240. package/src/core-resources/images/default-header.png +0 -0
  241. package/src/core-resources/images/ico-default_wenjian.svg +1 -0
  242. package/src/core-resources/images/ico-excel.svg +1 -0
  243. package/src/core-resources/images/ico-ftl.svg +7 -0
  244. package/src/core-resources/images/ico-html.svg +1 -0
  245. package/src/core-resources/images/ico-java.svg +1 -0
  246. package/src/core-resources/images/ico-music.svg +1 -0
  247. package/src/core-resources/images/ico-pdf.svg +1 -0
  248. package/src/core-resources/images/ico-photo.svg +1 -0
  249. package/src/core-resources/images/ico-ppt.svg +1 -0
  250. package/src/core-resources/images/ico-psd.svg +1 -0
  251. package/src/core-resources/images/ico-service.png +0 -0
  252. package/src/core-resources/images/ico-txt.svg +1 -0
  253. package/src/core-resources/images/ico-video.svg +1 -0
  254. package/src/core-resources/images/ico-vue.svg +8 -0
  255. package/src/core-resources/images/ico-wenjianjia.svg +1 -0
  256. package/src/core-resources/images/ico-wrod.svg +1 -0
  257. package/src/core-resources/images/ico-xml.svg +1 -0
  258. package/src/core-resources/images/ico-yasuobao.svg +1 -0
  259. package/src/core-resources/images/icon-error.png +0 -0
  260. package/src/core-resources/images/icon-tips.png +0 -0
  261. package/src/core-resources/images/nodata.png +0 -0
  262. package/src/core-resources/images/nodata2.png +0 -0
  263. package/src/directive/append-to-body/index.js +48 -0
  264. package/src/directive/el-dialog-center/index.js +3 -2
  265. package/src/directive/el-drag-dialog/drag.js +33 -4
  266. package/src/icons/index.js +9 -0
  267. package/src/icons/svg/404.svg +1 -0
  268. package/src/icons/svg/alert.svg +1 -0
  269. package/src/icons/svg/bug.svg +1 -0
  270. package/src/icons/svg/button.svg +1 -0
  271. package/src/icons/svg/card.svg +1 -0
  272. package/src/icons/svg/cascader-field.svg +1 -0
  273. package/src/icons/svg/census.svg +1 -0
  274. package/src/icons/svg/chart.svg +1 -0
  275. package/src/icons/svg/checkbox-field.svg +1 -0
  276. package/src/icons/svg/clipboard.svg +1 -0
  277. package/src/icons/svg/color-field.svg +1 -0
  278. package/src/icons/svg/component.svg +1 -0
  279. package/src/icons/svg/custom-component.svg +1 -0
  280. package/src/icons/svg/dashboard.svg +1 -0
  281. package/src/icons/svg/data-table.svg +1 -0
  282. package/src/icons/svg/date-field.svg +1 -0
  283. package/src/icons/svg/date-range-field.svg +1 -0
  284. package/src/icons/svg/descriptions.svg +1 -0
  285. package/src/icons/svg/divider.svg +1 -0
  286. package/src/icons/svg/document.svg +1 -0
  287. package/src/icons/svg/documentation.svg +1 -0
  288. package/src/icons/svg/drag.svg +1 -0
  289. package/src/icons/svg/echart-category.svg +1 -0
  290. package/src/icons/svg/echart-pie.svg +1 -0
  291. package/src/icons/svg/echart.svg +1 -0
  292. package/src/icons/svg/edit.svg +1 -0
  293. package/src/icons/svg/education.svg +1 -0
  294. package/src/icons/svg/email.svg +1 -0
  295. package/src/icons/svg/example.svg +1 -0
  296. package/src/icons/svg/excel.svg +1 -0
  297. package/src/icons/svg/exit-fullscreen.svg +1 -0
  298. package/src/icons/svg/eye-open.svg +1 -0
  299. package/src/icons/svg/eye.svg +1 -0
  300. package/src/icons/svg/file-upload-field.svg +1 -0
  301. package/src/icons/svg/form.svg +1 -0
  302. package/src/icons/svg/fullscreen.svg +1 -0
  303. package/src/icons/svg/github.svg +1 -0
  304. package/src/icons/svg/grid.svg +1 -0
  305. package/src/icons/svg/guide.svg +1 -0
  306. package/src/icons/svg/html-text.svg +1 -0
  307. package/src/icons/svg/ico-more.svg +1 -0
  308. package/src/icons/svg/ico-wenjianjia.svg +1 -0
  309. package/src/icons/svg/icon.svg +1 -0
  310. package/src/icons/svg/input-batch.svg +1 -0
  311. package/src/icons/svg/international.svg +1 -0
  312. package/src/icons/svg/language.svg +1 -0
  313. package/src/icons/svg/link.svg +1 -0
  314. package/src/icons/svg/list-export.svg +1 -0
  315. package/src/icons/svg/list.svg +1 -0
  316. package/src/icons/svg/lock.svg +1 -0
  317. package/src/icons/svg/message.svg +1 -0
  318. package/src/icons/svg/money.svg +1 -0
  319. package/src/icons/svg/nested.svg +1 -0
  320. package/src/icons/svg/news-list.svg +1 -0
  321. package/src/icons/svg/node-tree.svg +1 -0
  322. package/src/icons/svg/number-field.svg +1 -0
  323. package/src/icons/svg/password.svg +1 -0
  324. package/src/icons/svg/pdf.svg +1 -0
  325. package/src/icons/svg/people.svg +1 -0
  326. package/src/icons/svg/peoples.svg +1 -0
  327. package/src/icons/svg/picture-upload-field.svg +1 -0
  328. package/src/icons/svg/qq.svg +1 -0
  329. package/src/icons/svg/query.svg +1 -0
  330. package/src/icons/svg/radio-field.svg +1 -0
  331. package/src/icons/svg/rate-field.svg +1 -0
  332. package/src/icons/svg/redo.svg +1 -0
  333. package/src/icons/svg/rich-editor-field.svg +1 -0
  334. package/src/icons/svg/search.svg +1 -0
  335. package/src/icons/svg/searchbox.svg +1 -0
  336. package/src/icons/svg/section.svg +1 -0
  337. package/src/icons/svg/select-field.svg +1 -0
  338. package/src/icons/svg/shopping.svg +1 -0
  339. package/src/icons/svg/size.svg +1 -0
  340. package/src/icons/svg/skill.svg +1 -0
  341. package/src/icons/svg/slider-field.svg +1 -0
  342. package/src/icons/svg/slot-component.svg +1 -0
  343. package/src/icons/svg/slot-field.svg +1 -0
  344. package/src/icons/svg/star.svg +1 -0
  345. package/src/icons/svg/static-text.svg +1 -0
  346. package/src/icons/svg/status.svg +1 -0
  347. package/src/icons/svg/sub-form.svg +1 -0
  348. package/src/icons/svg/switch-field.svg +1 -0
  349. package/src/icons/svg/tab.svg +1 -0
  350. package/src/icons/svg/table.svg +1 -0
  351. package/src/icons/svg/text-field.svg +1 -0
  352. package/src/icons/svg/text.svg +1 -0
  353. package/src/icons/svg/textarea-field.svg +1 -0
  354. package/src/icons/svg/theme.svg +1 -0
  355. package/src/icons/svg/time-field.svg +1 -0
  356. package/src/icons/svg/time-range-field.svg +1 -0
  357. package/src/icons/svg/tips-text.svg +1 -0
  358. package/src/icons/svg/title-head.svg +1 -0
  359. package/src/icons/svg/tree-pane.svg +1 -0
  360. package/src/icons/svg/tree-table.svg +1 -0
  361. package/src/icons/svg/tree.svg +1 -0
  362. package/src/icons/svg/undo.svg +1 -0
  363. package/src/icons/svg/uploadbox.svg +1 -0
  364. package/src/icons/svg/user.svg +1 -0
  365. package/src/icons/svg/vf-box.svg +1 -0
  366. package/src/icons/svg/vf-dialog.svg +1 -0
  367. package/src/icons/svg/vf-drawer.svg +1 -0
  368. package/src/icons/svg/vue-sfc.svg +1 -0
  369. package/src/icons/svg/wechat.svg +1 -0
  370. package/src/icons/svg/zip.svg +1 -0
  371. package/src/index.js +2 -510
  372. package/src/index.next.js +5 -0
  373. package/src/index.sync.js +5 -0
  374. package/src/layout/components/Sidebar/default.vue +1656 -1655
  375. package/src/layout/components/TagsView/index.vue +330 -323
  376. package/src/layout/components/TagsView/style.scss +92 -0
  377. package/src/layout/components/watermark/index.vue +1 -1
  378. package/src/layout/defaultLayout.vue +2 -2
  379. package/src/router/index.js +43 -48
  380. package/src/router/modules/customer.js +12 -0
  381. package/src/store/modules/settings.js +1 -1
  382. package/src/store/modules/tagsView.js +241 -217
  383. package/src/store/modules/user.js +16 -12
  384. package/src/styles/btn.scss +315 -0
  385. package/src/styles/dialog.scss +1710 -0
  386. package/src/styles/element-ui.scss +1076 -0
  387. package/src/styles/element-variables.scss +31 -0
  388. package/src/styles/global.scss +115 -0
  389. package/src/styles/index.scss +245 -0
  390. package/src/styles/layout-skins.scss +840 -0
  391. package/src/styles/legacy-base.scss +19 -0
  392. package/src/styles/menu-icons.scss +75 -0
  393. package/src/styles/mixin.scss +80 -0
  394. package/src/styles/nprogress.scss +14 -0
  395. package/src/styles/page-shell.scss +723 -0
  396. package/src/styles/sidebar.scss +296 -0
  397. package/src/styles/split-handle.scss +52 -0
  398. package/src/styles/theme-variables.scss +7 -0
  399. package/src/styles/transition.scss +48 -0
  400. package/src/styles/utilities.scss +253 -0
  401. package/src/styles/variables.scss +72 -0
  402. package/src/utils/baseDictsCache.js +197 -0
  403. package/src/utils/chunkLoadError.js +24 -0
  404. package/src/utils/featureResources.js +57 -0
  405. package/src/utils/importLimit.js +72 -0
  406. package/src/utils/pdfUtil.js +6 -1
  407. package/src/utils/request.js +149 -9
  408. package/src/utils/resolveViewComponent.js +45 -90
  409. package/src/utils/runtimeRecovery.js +105 -0
  410. package/src/utils/swiperLoader.js +20 -0
  411. package/src/utils/vab.js +1334 -1283
  412. package/src/utils/xlsxLoader.js +29 -0
  413. package/src/views/bd/setting/formVersion/compareContMixin.scss +1 -1
  414. package/src/views/bd/setting/form_template/edit.vue +378 -356
  415. package/src/views/bd/setting/form_template/formDesignerDialog.vue +6 -0
  416. package/src/views/bd/setting/form_template/formTemplateType.js +43 -0
  417. package/src/views/bd/setting/form_template/list.vue +304 -303
  418. package/src/views/bd/setting/form_template/mixins/edit.js +344 -280
  419. package/src/views/bd/setting/form_template/mixins/list.js +749 -721
  420. package/src/views/bd/setting/form_template/mixins/list2.js +412 -411
  421. package/src/views/bd/setting/form_template/mixins/wf_list.js +431 -430
  422. package/src/views/mobile/user/area/dialog.vue +1 -1
  423. package/src/views/mobile/user/user/dialog.vue +1 -1
  424. package/src/views/user/bill_setting/mixins/wf.js +8 -0
  425. package/src/views/user/bill_setting/render.vue +1 -1
  426. package/src/views/user/commMenu/index.vue +3 -1
  427. package/src/views/user/commMenu/style.scss +123 -0
  428. package/src/views/user/common_attribute/edit.vue +2 -0
  429. package/src/views/user/common_attribute/itemEdit.vue +2 -0
  430. package/src/views/user/file_view_ins/list.vue +970 -970
  431. package/src/views/user/form/form_template/list.vue +527 -506
  432. package/src/views/user/form/vform/designer.vue +823 -821
  433. package/src/views/user/form/view/list.vue +24 -1
  434. package/src/views/user/home/default.vue +1124 -1117
  435. package/src/views/user/home/default2.vue +12 -8
  436. package/src/views/user/home/index.vue +102 -102
  437. package/src/views/user/home/wjl/content.vue +1581 -1569
  438. package/src/views/user/intf_permission/edit.vue +230 -0
  439. package/src/views/user/intf_permission/list.vue +196 -0
  440. package/src/views/user/menuFallback/index.vue +23 -0
  441. package/src/views/user/notify_message/dialog.vue +139 -139
  442. package/src/views/user/outLink/form_view.vue +202 -202
  443. package/src/views/user/outLink/index.vue +110 -110
  444. package/src/views/user/role/edit.vue +4 -0
  445. package/src/views/user/role/role-box.scss +83 -0
  446. package/src/views/user/role/voc_edit.vue +4 -0
  447. package/src/views/user/user/list.vue +28 -6
  448. package/src/views/user/wf/iframe/index.vue +51 -51
  449. package/src/views/user/wf/iframe/index2.vue +64 -64
  450. package/src/views/user/wf/wf_diy_attribute/edit.vue +1 -1
  451. package/src/views/user/wf/wf_manage/list2.vue +871 -871
  452. package/src/views/user/wf/wf_manage/wfContentDialog.vue +177 -126
  453. package/src/views/user/wf/wf_obj_config/activiti_wf.vue +134 -133
  454. package/src/views/user/wf/wf_obj_config/importItemDialog.vue +1 -1
  455. package/src/views/user/wf/wf_obj_config/list.vue +747 -746
  456. package/src/views/user/wf/wf_obj_config/list_form.vue +374 -373
  457. package/templates/child-app/.env +3 -0
  458. package/templates/child-app/README.md +49 -0
  459. package/templates/child-app/app.config.js +6 -0
  460. package/templates/child-app/babel.config.js +1 -0
  461. package/templates/child-app/core-resources.config.js +15 -0
  462. package/templates/child-app/gitignore +7 -0
  463. package/templates/child-app/package.json +34 -0
  464. package/templates/child-app/public/index.html +12 -0
  465. package/templates/child-app/src/assets/401_images/401.gif +0 -0
  466. package/templates/child-app/src/assets/404_images/404.png +0 -0
  467. package/templates/child-app/src/assets/404_images/404_cloud.png +0 -0
  468. package/templates/child-app/src/assets/logo.png +0 -0
  469. package/templates/child-app/src/corejsConfig.js +2 -0
  470. package/templates/child-app/src/icons/index.js +2 -0
  471. package/templates/child-app/src/icons/svg/child-demo.svg +1 -0
  472. package/templates/child-app/src/layout/index.vue +4 -0
  473. package/templates/child-app/src/main.js +5 -0
  474. package/templates/child-app/src/prefixConfig.js +13 -0
  475. package/templates/child-app/src/resources/css/login.scss +29 -0
  476. package/templates/child-app/src/resources/images/bg-login5.jpg +0 -0
  477. package/templates/child-app/src/resources/images/home-img.png +0 -0
  478. package/templates/child-app/src/router/modules/customer.js +3 -0
  479. package/templates/child-app/src/settings.js +25 -0
  480. package/templates/child-app/src/styles/app.scss +2 -0
  481. package/templates/child-app/src/views/demo/detail.vue +19 -0
  482. package/templates/child-app/src/views/demo/list.vue +38 -0
  483. package/templates/child-app/src/views/user/login/index.vue +18 -0
  484. package/templates/child-app/vue.config.js +107 -0
  485. package/src/components/xform/form-render/container-item/dynamicFieldEngine.js +0 -285
  486. package/src/components/xform/form-render/formDynamicFieldMixin.js +0 -131
  487. package/src/views/demo/bizTab/bill/billConfig.js +0 -41
  488. package/src/views/demo/bizTab/bill/detail.vue +0 -436
  489. package/src/views/demo/bizTab/bill/list.vue +0 -288
  490. package/src/views/demo/bizTab/bill/productDialog.vue +0 -176
  491. package/src/views/demo/bizTab/simple/billApi.js +0 -123
  492. package/src/views/demo/bizTab/simple/detail.vue +0 -407
  493. package/src/views/demo/bizTab/simple/list.vue +0 -217
  494. package/src/views/demo/bizTab/standalone/index.vue +0 -121
  495. package/src/views/demo/bizTab/wf/billConfig.js +0 -44
  496. package/src/views/demo/bizTab/wf/detail.vue +0 -661
  497. package/src/views/demo/bizTab/wf/list.vue +0 -242
  498. package/src/views/user/outLink/cc_form_view.vue +0 -188
  499. /package/src/{resources → core-resources}/js/base/common.js +0 -0
@@ -1,1655 +1,1656 @@
1
- <template>
2
- <div :class="{ 'has-logo': showLogo, telescopMenu: !isMenu }">
3
- <!-- <logo v-if="showLogo" :collapse="isCollapse" /> -->
4
-
5
- <div class="hamburger-box" ref="hamhurger" @click="openUserInfo">
6
- <!-- <hamburger :is-active="sidebar.opened" @toggleClick="toggleSideBar" /> -->
7
- <div>
8
- <p class="name">
9
- <i class="iconfont icon-ziyuan"></i
10
- ><span>{{ userInfo.nickName }}</span>
11
- </p>
12
- </div>
13
- </div>
14
- <div class="business-name" ref="business">
15
- <el-tooltip
16
- :enterable="false"
17
- effect="dark"
18
- :content="companyInfo.companyName"
19
- :placement="direction"
20
- >
21
- <p v-show="getMenuFlag()">{{ companyInfo.companyName }}</p>
22
- </el-tooltip>
23
- </div>
24
- <div
25
- class="fase-box"
26
- ref="fase"
27
- @mouseleave="$emit('selfClose')"
28
- @mouseenter="$emit('selfEnter')"
29
- >
30
- <langTool v-if="getMenuFlag()"></langTool>
31
- <div class="item" @click="openCompanyDialog" v-if="getMenuFlag()">
32
- <el-tooltip
33
- :enterable="false"
34
- effect="dark"
35
- :content="$t1('切换组织')"
36
- :placement="direction"
37
- >
38
- <i class="el-icon-set-up" />
39
- </el-tooltip>
40
- </div>
41
- <div class="item" v-if="getMenuFlag()">
42
- <el-tooltip
43
- :enterable="false"
44
- effect="dark"
45
- :content="$t1('流程待办')"
46
- :placement="direction"
47
- >
48
- <i
49
- class="iconfont icon-liuchengdaiban"
50
- @click="$router.push('/basic/wf/wf_manage/list')"
51
- />
52
- </el-tooltip>
53
- </div>
54
- <div class="item" v-if="isDev && isBdAdmin">
55
- <el-tooltip
56
- :enterable="false"
57
- effect="dark"
58
- :content="$t1('获取提取码')"
59
- :placement="direction"
60
- >
61
- <i
62
- class="el-icon-setting"
63
- @click="showExtractedCodeCreateDialog = true"
64
- />
65
- </el-tooltip>
66
- </div>
67
- <div class="item" v-if="isBdAdmin">
68
- <el-tooltip
69
- :enterable="false"
70
- effect="dark"
71
- :content="$t1('查看提取码')"
72
- :placement="direction"
73
- >
74
- <i
75
- class="el-icon-tickets"
76
- @click="showExtractedCodeQueryDialog = true"
77
- />
78
- </el-tooltip>
79
- </div>
80
-
81
- <div class="item" @click="logout()">
82
- <el-tooltip
83
- :enterable="false"
84
- effect="dark"
85
- :content="$t1('退出')"
86
- :placement="direction"
87
- >
88
- <i class="el-icon-switch-button" />
89
- </el-tooltip>
90
- </div>
91
- </div>
92
- <template v-for="router1 in viewRouter">
93
- <template v-for="router2 in router1.children">
94
- <div
95
- class="second-list"
96
- :key="router1.id + 't' + router2.id"
97
- :class="{ on: router2.id == nowNavID }"
98
- @mouseenter="stopFlag = 1"
99
- @mouseleave="showNav()"
100
- v-show="router2.id == nowNavID"
101
- :ref="'seconMenus' + router2.id"
102
- >
103
- <i class="ico-arrow"></i>
104
- <div>
105
- <div class="tit">
106
- <i :class="getMenuClass(router2, 2)"></i
107
- ><span>{{ getMenuName(router2) }}</span>
108
- </div>
109
- <dl
110
- v-for="(router3, index3) in router2.children"
111
- :key="'router3' + index3"
112
- >
113
- <div
114
- class="item"
115
- v-if="!router3.hidden"
116
- @click="rourteTo(router3, router1)"
117
- >
118
- <!--<i class="el-icon-caret-right"></i>-->
119
- <i :class="getMenuClass(router3, 3)"></i>
120
- <a>{{ getMenuName(router3) }}</a>
121
- </div>
122
- </dl>
123
- </div>
124
- </div>
125
- </template>
126
- </template>
127
- <el-menu
128
- class="menu-box"
129
- :class="{ 'lang-zh': $i18n.locale == 'zh' }"
130
- text-color="#fff"
131
- active-text-color="#fff"
132
- :unique-opened="true"
133
- @mouseleave="showNav()"
134
- ref="seconMenus"
135
- :collapse="!isMenu"
136
- >
137
- <el-scrollbar wrap-class="scrollbar-wrapper" id="menuUl">
138
- <component
139
- v-for="menuModule in menuModules"
140
- :is="getMenuType(menuModule)"
141
- :index="'' + menuModule.id"
142
- :key="'menuModule' + menuModule.id"
143
- @click.native="rourteTo(menuModule)"
144
- >
145
- <i
146
- :class="getMenuClass(menuModule, 1)"
147
- v-if="menuModule.children.length <= 0"
148
- ></i>
149
- <template slot="title">
150
- <i
151
- :class="getMenuClass(menuModule, 1)"
152
- v-if="menuModule.children.length > 0"
153
- ></i>
154
- <span>{{ getMenuName(menuModule) }}</span>
155
- </template>
156
- <component
157
- v-for="(router2, index1) in menuModule.children"
158
- :is="getMenuType(router2)"
159
- :key="index1"
160
- :index="'' + router2.id"
161
- @mouseenter.native="showNav(router2, $event)"
162
- @mouseleave.native="showNav()"
163
- @click="rourteTo(router2)"
164
- >
165
- <template slot="title">
166
- <i :class="getMenuClass(router2, 2)"></i>
167
- <span>{{ getMenuName(router2) }}</span>
168
- </template>
169
- <el-menu-item
170
- v-for="(router3, index3) in router2.children"
171
- :key="index3"
172
- :index="'' + router3.id"
173
- @click="rourteTo(router3)"
174
- >
175
- <template slot="title">
176
- <i :class="getMenuClass(router3, 3)"></i>
177
- <span>{{ getMenuName(router3) }}</span>
178
- </template>
179
- </el-menu-item>
180
- </component>
181
- </component>
182
- <!-- <el-menu-item
183
- @click.native="openCreateCompanyDialog"
184
- index="xx"
185
- v-if="isFormDev"
186
- >
187
- <template slot="title">
188
- <i :class="getMenuClass({}, 1)"></i>
189
- <span>新建企业</span>
190
- </template>
191
- </el-menu-item> -->
192
- </el-scrollbar>
193
- </el-menu>
194
- <div class="menu-btn">
195
- <i class="el-icon-arrow-up" @click="toUpMove()"></i>
196
- <i class="el-icon-arrow-down" @click="toDownMove()"></i>
197
- </div>
198
- <div
199
- id="tta"
200
- style="
201
- position: absolute;
202
- height: 100%;
203
- top: 0;
204
- right: 0;
205
- z-index: 9999;
206
- width: 800px;
207
- left: 100%;
208
- "
209
- v-if="showMenuModal"
210
- ></div>
211
- <el-dialog
212
- :title="$t1('切换组织')"
213
- width="355px"
214
- custom-class="dialog-style list-dialog"
215
- v-if="showCompanyDialog"
216
- :visible.sync="showCompanyDialog"
217
- :append-to-body="true"
218
- :modal-append-to-body="true"
219
- :close-on-click-modal="false"
220
- v-el-drag-dialog
221
- v-el-dialog-center
222
- @close="changeCompanyClose"
223
- >
224
- <div class="cont">
225
- <el-input
226
- :placeholder="$t1('搜索')"
227
- class="search-btn"
228
- v-model="filterText"
229
- ></el-input>
230
- <el-tree
231
- :props="defaultProps"
232
- :load="loadNode"
233
- node-key="id"
234
- ref="tree"
235
- highlight-current
236
- lazy
237
- :expand-on-click-node="true"
238
- @node-click="handleNodeClick"
239
- class="organization-tree"
240
- icon-class="el-icon-arrow-right"
241
- :filter-node-method="filterNode"
242
- ></el-tree>
243
- </div>
244
- <!-- <span slot="footer" class="dialog-footer">
245
- <el-button type="primary" plain class="button-sty" @click="changeCompanyClose">
246
- <i class="el-icon-close el-icon"></i>
247
- 取 消
248
- </el-button>
249
- <el-button type="primary" @click="changeCompany" class="button-sty">
250
- <i class="el-icon-check el-icon"></i>
251
- 确 定
252
- </el-button>
253
- </span> -->
254
- </el-dialog>
255
-
256
- <!-- <infoIframeDialog v-if="showInfoIframeDialog" :visiable.sync="showInfoIframeDialog"
257
- :dataId="userInfo.id"></infoIframeDialog>-->
258
- <userInfo
259
- v-if="!isFormDev && showUserInfoDialog"
260
- :visiable.sync="showUserInfoDialog"
261
- :_dataId="userInfo.id"
262
- topValue="128px"
263
- @reload="userInfoReload"
264
- ></userInfo>
265
- <userFormInfo
266
- v-if="isFormDev && showUserInfoDialog"
267
- :visiable.sync="showUserInfoDialog"
268
- :_dataId="userInfo.id"
269
- topValue="128px"
270
- @reload="userInfoReload"
271
- ></userFormInfo>
272
- <onlineTalk></onlineTalk>
273
- <extractedCodeCreateDialog
274
- v-if="showExtractedCodeCreateDialog"
275
- :visiable.sync="showExtractedCodeCreateDialog"
276
- ></extractedCodeCreateDialog>
277
- <extractedCodeQueryDialog
278
- v-if="showExtractedCodeQueryDialog"
279
- :visiable.sync="showExtractedCodeQueryDialog"
280
- ></extractedCodeQueryDialog>
281
- <createCompanyDialog
282
- v-if="showCreateCompanyDialog"
283
- :visiable.sync="showCreateCompanyDialog"
284
- ></createCompanyDialog>
285
- </div>
286
- </template>
287
-
288
- <script>
289
- import { mapGetters } from "vuex";
290
- import variables from "@/styles/variables.scss";
291
- import userInfo from "@base/views/user/user/info.vue";
292
- import userFormInfo from "@base/views/user/user/form_info.vue";
293
- import onlineTalk from "@base/components/onlineTalk";
294
- import { getToken } from "@base/utils/auth";
295
- import indexUtil from "@base/utils/index.js";
296
- import langTool from "../langTool.vue";
297
- import { initPddLog } from "@base/utils/pddLog";
298
-
299
- import extractedCodeCreateDialog from "../extractedCode/createDialog.vue";
300
- import extractedCodeQueryDialog from "../extractedCode/queryDialog.vue";
301
- import { getBdFlag } from "@base/api/user";
302
- import createCompanyDialog from "@base/layout/components/createCompany/createCompanyDialog.vue";
303
-
304
- export default {
305
- props: {
306
- option: Object,
307
- isMenu: {
308
- type: Boolean,
309
- },
310
- },
311
- components: {
312
- userInfo,
313
- userFormInfo,
314
- onlineTalk,
315
- langTool,
316
- extractedCodeCreateDialog,
317
- extractedCodeQueryDialog,
318
- createCompanyDialog,
319
- },
320
- data() {
321
- return {
322
- direction: "bottom",
323
- defaultOpenedsArray: [],
324
- viewRouter: [],
325
- showMenuModal: false,
326
- menuheight: {
327
- height: "",
328
- },
329
- defaultProps: {
330
- label: "label", //这里是树结构中需显示的数据(即接口返回的需展示在页面上的参数)
331
- children: [],
332
- isLeaf: "leaf",
333
- },
334
- filterText: null,
335
- showCompanyDialog: false,
336
- choose_company_info: "",
337
- userInfo: {},
338
- companyInfo: {},
339
- showUserInfoDialog: false,
340
- hoverStatus: false,
341
- nowNavID: "null",
342
- stopFlag: 0,
343
- showInfoIframeDialog: false,
344
- currentMenu: null,
345
- menuModules: [],
346
- firstMenuHeight: 0, // 第一个菜单的高度
347
- eveyMenuHeight: 48, // 每一个菜单的高度
348
- isFormDev: false,
349
-
350
- showExtractedCodeCreateDialog: false,
351
- showExtractedCodeQueryDialog: false,
352
- isDev: false,
353
- showCreateCompanyDialog: false,
354
- };
355
- },
356
- computed: {
357
- ...mapGetters([
358
- "permission_routes",
359
- "sidebar",
360
- "sidebarRouters",
361
- "isBdAdmin",
362
- "userFlag",
363
- ]),
364
- activeMenu() {
365
- const route = this.$route;
366
- const { meta, path } = route;
367
- // if set path, the sidebar will highlight the path you set
368
- if (meta.activeMenu) {
369
- return meta.activeMenu;
370
- }
371
- return path;
372
- },
373
- showLogo() {
374
- return this.$store.state.settings.sidebarLogo;
375
- },
376
- variables() {
377
- return variables;
378
- },
379
- /*isCollapse() {
380
- if (this.sidebar.opened) {
381
- this.direction = 'bottom';
382
- } else {
383
- this.direction = 'right-start';
384
- }
385
- return !this.sidebar.opened;
386
- }*/
387
- },
388
- watch: {
389
- filterText(val) {
390
- this.$refs.tree.filter(val);
391
- },
392
- },
393
- created() {
394
- indexUtil.initI18nMessage("menus");
395
- },
396
- mounted() {
397
- this.getUserInfo();
398
- setTimeout(() => {
399
- this.filterRoute();
400
- }, 100);
401
- this.countHeight();
402
- let query = this.$route.query;
403
- if (query && query.flag == 1) {
404
- this.showCompanyDialog = true;
405
- }
406
- initPddLog(); //初始化拼多多日志
407
- this.initIsFormDev();
408
- this.getBdEnv();
409
- },
410
- methods: {
411
- getMenuType(item) {
412
- if (item.children && item.children.length > 0) {
413
- return "el-submenu";
414
- } else {
415
- return "el-menu-item";
416
- }
417
- },
418
- getBdEnv() {
419
- getBdFlag({
420
- success: (res) => {
421
- this.isDev = res.objx == 1;
422
- },
423
- });
424
- },
425
- initIsFormDev() {
426
- let userFlag = this.userFlag;
427
- this.isFormDev = userFlag == 6 || userFlag == 7 || userFlag == 8;
428
- },
429
- getMenuFlag() {
430
- return !this.isBdAdmin;
431
- },
432
- getMenuName(item) {
433
- let locale = this.$i18n?.locale;
434
- let zhTitle = item.meta ? item.meta.title : "";
435
- let enTitle = item.meta ? item.meta.enTitle : "";
436
- let title;
437
- if (locale == "en") {
438
- title = enTitle || zhTitle;
439
- } else {
440
- title = zhTitle;
441
- }
442
- if (!enTitle || locale !== "en") {
443
- title = zhTitle;
444
- }
445
- if (this.$t1) {
446
- title = this.$t1(title);
447
- }
448
-
449
- return title;
450
- },
451
- jumpOutLink(route) {
452
- let path = route.url || route.path;
453
- if (route.type == 4 && path) {
454
- let params = this.getCustomReqUrlAndCleanUrl(path);
455
- let reqUrl = params.custom_req_url;
456
- if (reqUrl) {
457
- this.$http({
458
- url: reqUrl,
459
- method: `post`,
460
- data: { thirdUrl: params.newUrl },
461
- isLoading: true,
462
- success: (res) => {
463
- path = res.objx;
464
- window.open(path);
465
- },
466
- });
467
- } else {
468
- if (path.indexOf("token={token}") >= 0) {
469
- path = path.replace("token={token}", "token=" + getToken());
470
- }
471
- window.open(path);
472
- }
473
- }
474
- },
475
- getCustomReqUrlAndCleanUrl(url) {
476
- // 直接使用正则表达式匹配
477
- const match = url.match(/[?&]custom_req_url=([^&?#]+)/);
478
- if (match) {
479
- const customReqUrl = decodeURIComponent(match[1]);
480
- // 移除匹配到的参数部分
481
- const newUrl = url.replace(
482
- match[0],
483
- match[0].startsWith("?") ? "?" : ""
484
- );
485
-
486
- return {
487
- custom_req_url: customReqUrl,
488
- newUrl: newUrl.replace(/\?$/, "").replace(/\?&/, "?"),
489
- };
490
- }
491
-
492
- return {
493
- custom_req_url: "",
494
- newUrl: url,
495
- };
496
- },
497
- changeModules(row, cRow) {
498
- if (!row.route) return;
499
- localStorage.setItem("currentMenuId", row.id);
500
- let route = row.route ? "/" + row.route : "";
501
- sessionStorage.setItem("reUrl", cRow.path);
502
- sessionStorage.setItem("reCid", row.id);
503
- location.href = route + "/index.html/#/home";
504
-
505
- // location.reload();
506
- },
507
- filterRoute() {
508
- var oldRoutes = JSON.parse(JSON.stringify(this.sidebarRouters));
509
- var nRoute1s = [];
510
- oldRoutes.forEach((route1, index1) => {
511
- let nRoute2s = [];
512
- if (!route1.hidden) {
513
- route1.children.forEach((route2, index2) => {
514
- let nRoute3s = [];
515
- if (!route2.hidden) {
516
- route2.children.forEach((route3, index3) => {
517
- if (!route3.hidden) {
518
- nRoute3s.push(route3);
519
- }
520
- });
521
- }
522
- if (route2.type == 4 || route2.url || nRoute3s.length > 0) {
523
- route2.children = nRoute3s;
524
- nRoute2s.push(route2);
525
- }
526
- });
527
- }
528
- if (route1.type == 4 || route1.url || nRoute2s.length > 0) {
529
- route1.children = nRoute2s;
530
- nRoute1s.push(route1);
531
- }
532
- });
533
- this.viewRouter = nRoute1s || [];
534
- this.menuModules = nRoute1s || [];
535
-
536
- let reUrl = sessionStorage.getItem("reUrl");
537
- let reCid = sessionStorage.getItem("reCid");
538
- if (reUrl) {
539
- this.$nextTick(() => {
540
- this.$refs.seconMenus.open(reCid);
541
- });
542
- this.$router.push(reUrl);
543
- sessionStorage.removeItem("reUrl");
544
- sessionStorage.removeItem("reCid");
545
- }
546
- },
547
- filterRoute1() {
548
- var oldRoutes = JSON.parse(JSON.stringify(this.sidebarRouters));
549
- var nRoute1s = [];
550
- oldRoutes.forEach((route1, index1) => {
551
- let nRoute2s = [];
552
- if (!route1.hidden && route1.route) {
553
- route1.children.forEach((route2, index2) => {
554
- let nRoute3s = [];
555
- if (!route2.hidden) {
556
- route2.children.forEach((route3, index3) => {
557
- if (!route3.hidden) {
558
- nRoute3s.push(route3);
559
- }
560
- });
561
- }
562
- if (nRoute3s.length > 0) {
563
- route2.children = nRoute3s;
564
- nRoute2s.push(route2);
565
- }
566
- });
567
- }
568
- if (nRoute2s.length > 0) {
569
- route1.children = nRoute2s;
570
- nRoute1s.push(route1);
571
- }
572
- });
573
- let rows = nRoute1s;
574
- if (rows.length) {
575
- let currentMenu;
576
- if (nRoute1s.length) {
577
- var currentMenuId = localStorage.getItem("currentMenuId");
578
- if (currentMenuId) {
579
- currentMenu = nRoute1s.find((row) => row.id == currentMenuId);
580
- }
581
- if (!currentMenu) {
582
- currentMenu = nRoute1s[0];
583
- }
584
- this.viewRouter = currentMenu.children;
585
- }
586
- this.currentMenu = currentMenu;
587
- this.menuModules = rows || [];
588
-
589
- /*if (currentMenu) {
590
- if (currentMenu.route != WEB_PREFIX.substring(1, WEB_PREFIX.length)) {
591
- this.changeModules(currentMenu, 1);
592
- } else {
593
- localStorage.setItem('currentMenuId', currentMenu.id);
594
- }
595
- } else {
596
- localStorage.removeItem('currentMenuId');
597
- }*/
598
- }
599
- },
600
- rourteTo(route) {
601
- let path = route.url || route.path;
602
- if (!path) {
603
- return;
604
- }
605
- this.showMenuModal = true;
606
- setTimeout(() => {
607
- this.showMenuModal = false;
608
- }, 200);
609
- try {
610
- if (route.linkType == 4) {
611
- this.jumpOutLink(route);
612
- } else if (route.linkType == 3) {
613
- this.$router.push({
614
- path: path,
615
- query: { url: route.outLink, route: route.route },
616
- });
617
- } else {
618
- // 通用打开:可重复时附加唯一标识生成独立标签页
619
- this.$openView(path, route);
620
- }
621
- } catch (e) {
622
- console.error(e);
623
- }
624
- },
625
- logout() {
626
- this.$store.dispatch("user/logout2").then((res) => {
627
- this.$router.push(`/login?redirect=${this.$route.fullPath}`);
628
- });
629
- },
630
- toggleSideBar() {
631
- this.$store.dispatch("app/toggleSideBar");
632
- },
633
- countHeight() {
634
- var h =
635
- this.$refs.hamhurger.offsetHeight +
636
- this.$refs.fase.offsetHeight +
637
- this.$refs.business.offsetHeight;
638
- this.menuheight.height = window.innerHeight - h + "px";
639
- },
640
- handleNodeClick(data, node, v) {
641
- if (!data.hasChild) {
642
- this.choose_company_info = data;
643
- this.changeCompany();
644
- } else {
645
- this.choose_company_info = {};
646
- }
647
- },
648
- // 异步树叶子节点懒加载逻辑
649
- loadNode(node, resolve) {
650
- let companyCode =
651
- node && node.data && node.data.companyCode
652
- ? node.data.companyCode || ""
653
- : "";
654
- let url = !companyCode
655
- ? USER_PREFIX + "/user_company_info/getAllList"
656
- : USER_PREFIX + "/user_company_info/getChildren";
657
-
658
- this.$http({
659
- url: url,
660
- method: "post",
661
- data: {
662
- parentCompanyCode: companyCode,
663
- },
664
- success: (res) => {
665
- let datas = res.objx || [];
666
- let parentLabel = companyCode ? node.label : null;
667
- datas.forEach((item) => {
668
- item.leaf = !item.hasChild;
669
- let label = this.$t1(item.companyName);
670
- /*if(companyCode){
671
- label = label + '('+companyTypeMap[item.companyType]+')'
672
- }*/
673
- item.label = label;
674
- item.parentLabel = parentLabel;
675
- });
676
-
677
- if (node.level === 0) {
678
- if (datas.length > 0 && datas[0].hasChild) {
679
- this.$nextTick(() => {
680
- let nodedata = node.childNodes[0];
681
- nodedata.expanded = true;
682
- nodedata.loadData();
683
- });
684
- }
685
- }
686
- resolve(datas);
687
- },
688
- });
689
- },
690
- filterNode(value, data) {
691
- if (!value) return true;
692
- let flag1 = data.label.indexOf(value) !== -1;
693
- let flag2 = data.parentLabel && data.parentLabel.indexOf(value) !== -1;
694
- return flag1 || flag2;
695
- },
696
- openCompanyDialog() {
697
- this.filterText = null;
698
- this.showCompanyDialog = true;
699
- },
700
- getWebPrefix(callback) {
701
- this.$http({
702
- url: USER_PREFIX + "/auth/getWebPrefix",
703
- method: `post`,
704
- data: {},
705
- isLoading: true,
706
- success: (res) => {
707
- let webPrefix = res.objx;
708
- callback && callback(webPrefix);
709
- },
710
- });
711
- },
712
- changeCompany() {
713
- let row = this.choose_company_info;
714
- let query = this.$route.query;
715
- let flag = query && query.flag == 1 ? 1 : null;
716
- this.showCompanyDialog = false;
717
- if (row && row.companyCode) {
718
- this.$baseLoading({ target: document.body, fullscreen: true });
719
- this.$http({
720
- url: USER_PREFIX + "/auth/switchCompany",
721
- method: "post",
722
- data: { stringOne: row.companyCode },
723
- isLoading: true,
724
- success: (res) => {
725
- this.getWebPrefix((prefix) => {
726
- let webPrefix = prefix ? "/" + prefix : window.MAIN_WEB_PREFIX;
727
- sessionStorage.removeItem("out-token");
728
- this.$store.dispatch("user/changeCompanyInfo", row);
729
- this.$store.dispatch("tagsView/delAllViews");
730
- window.location.href = webPrefix + "/index.html";
731
- });
732
- },
733
- });
734
- } else {
735
- if (flag == 1) {
736
- this.$router.push({
737
- path: "/",
738
- });
739
- }
740
- }
741
- },
742
- changeCompanyClose() {
743
- let query = this.$route.query;
744
- let flag = query && query.flag == 1 ? 1 : null;
745
- if (flag == 1) {
746
- this.$router.push({
747
- path: "/",
748
- });
749
- }
750
- this.showCompanyDialog = false;
751
- },
752
- getUserInfo() {
753
- this.$http({
754
- url: USER_PREFIX + "/user/currentUser",
755
- method: "post",
756
- success: (res) => {
757
- let userInfo = res.objx;
758
- this.headPhotoUrl = userInfo.headPhotoUrl
759
- ? userInfo.headPhotoUrl
760
- : (require("@/resources/images/default-header.png").default || require("@/resources/images/default-header.png"));
761
- this.userInfo = userInfo;
762
- },
763
- });
764
-
765
- this.$http({
766
- url: USER_PREFIX + "/company_info/getCurrent",
767
- method: `post`,
768
- success: (res) => {
769
- this.companyInfo = res.objx || {};
770
- },
771
- });
772
- },
773
- openUserInfo() {
774
- this.showUserInfoDialog = true;
775
- // this.showInfoIframeDialog = true;
776
- },
777
- userInfoReload() {
778
- this.showUserInfoDialog = true;
779
- },
780
- showNav(route, event) {
781
- if (!this.isMenu) return;
782
- let id = route && route.id ? route.id : null;
783
- if (id != null) {
784
- if (!route.children || !route.children.length) {
785
- return;
786
- }
787
- this.stopFlag = 1;
788
- this.nowNavID = id;
789
- this.$nextTick(() => {
790
- var wh = window.innerHeight;
791
- let dom = event.target;
792
- let domAttr = dom.getBoundingClientRect();
793
- // var sh1 = dom.offsetTop;
794
- var sh1 = domAttr.top + 5;
795
- let $snav = this.$refs["seconMenus" + id][0];
796
- let snavAttr = $snav.getBoundingClientRect();
797
-
798
- // var sh2 = $snav.outerHeight;
799
- var sh2 = snavAttr.height;
800
- var sh = wh - (sh1 + sh2);
801
-
802
- var hd = 20;
803
- var xhd = sh - hd; //移动距离+固定值
804
- if (sh >= 0) {
805
- $snav.style["margin-top"] = sh1 + "px";
806
- } else if (sh < 0) {
807
- let bd = sh1 + sh;
808
-
809
- $snav.style["margin-top"] = bd + "px";
810
- $snav.querySelector(".ico-arrow").style["margin-top"] =
811
- sh1 - bd + "px";
812
- }
813
- });
814
- } else {
815
- this.stopFlag = 0;
816
- setTimeout(() => {
817
- if (this.stopFlag == 0) {
818
- this.nowNavID = id;
819
- }
820
- }, 200);
821
- }
822
- },
823
- jumpTo(row, firstRow) {
824
- let route = firstRow.route ? "/" + firstRow.route : "";
825
- if (route == WEB_PREFIX) {
826
- this.$router.push({
827
- path: row.path,
828
- });
829
- } else {
830
- this.changeModules(firstRow, row);
831
- }
832
- },
833
- toDownMove() {
834
- let containter = document
835
- .getElementById("menuUl")
836
- .querySelector(".scrollbar-wrapper");
837
- let menuscrollTop = containter.scrollTop;
838
- let scrollHeight = containter.scrollHeight;
839
- let val = menuscrollTop + this.eveyMenuHeight;
840
- if (val < scrollHeight) {
841
- containter.scrollTop = val;
842
- } else {
843
- containter.scrollTop = scrollHeight;
844
- }
845
- },
846
- toUpMove() {
847
- let containter = document
848
- .getElementById("menuUl")
849
- .querySelector(".scrollbar-wrapper");
850
- let menuscrollTop = containter.scrollTop;
851
- let val = menuscrollTop - this.eveyMenuHeight;
852
- if (val > 0) {
853
- containter.scrollTop = val;
854
- } else {
855
- containter.scrollTop = 0;
856
- }
857
- },
858
- getMenuClass(menu, flag) {
859
- let res = "";
860
- if (menu.menuImg) {
861
- res = "iconfont " + menu.menuImg;
862
- } else if (flag == 1) {
863
- res = "iconfont icon-jinggao"; //一级默认图标
864
- } else if (flag == 2) {
865
- res = "iconfont icon-circle"; //二级默认图标
866
- } else if (flag == 3) {
867
- res = "iconfont icon-thirdMemu"; //三级级默认图标
868
- }
869
-
870
- if (flag == 2) {
871
- if (menu.id == this.nowNavID) {
872
- res += " on";
873
- }
874
- }
875
- return res;
876
- },
877
- openCreateCompanyDialog() {
878
- this.showCreateCompanyDialog = true;
879
- },
880
- confirmCreateCompanyDialog() {
881
- this.showCreateCompanyDialog = false;
882
- },
883
- },
884
- };
885
- </script>
886
- <style lang="scss">
887
- @import "~@/styles/variables.scss";
888
-
889
- .hamburger-box {
890
- background-color: #0000004d;
891
- height: 42px;
892
- /* line-height: 30px; */
893
- text-align: center;
894
- /* box-shadow: 0 2px 6px rgb(0 0 0 / 10%); */
895
- position: relative;
896
- z-index: 2;
897
- overflow: hidden;
898
- font-size: 12px;
899
- color: rgba(255, 255, 255, 0.65);
900
-
901
- > div {
902
- color: #fff;
903
- font-size: 13px;
904
- margin-bottom: 4px;
905
- cursor: pointer;
906
- height: 36px;
907
- border-radius: 7px;
908
- margin: 6px 10px 6px 8px;
909
- overflow: hidden;
910
- background: #2a6494;
911
- }
912
-
913
- p {
914
- color: #fff;
915
- font-size: 13px;
916
- margin-bottom: 4px;
917
- cursor: pointer;
918
- /* border: solid 1px #ffffff61; */
919
- display: block;
920
- line-height: 27px;
921
- /* width: 88%; */
922
- margin-top: 6px;
923
- border-radius: 7px;
924
- margin: 6px 10px 6px 8px;
925
- background: #2a6494;
926
-
927
- i {
928
- font-size: 14px;
929
- vertical-align: middle;
930
- margin: 0 4px 0 6px;
931
- height: 36px;
932
- line-height: 36px;
933
- width: 21px;
934
- }
935
-
936
- span {
937
- width: 94px;
938
- display: table-cell;
939
- height: 32px;
940
- word-break: break-word;
941
- line-height: 16px;
942
- overflow: hidden;
943
- vertical-align: middle;
944
- white-space: nowrap;
945
- }
946
-
947
- &.name {
948
- display: table-row;
949
- margin: 0;
950
- }
951
- }
952
- }
953
-
954
- .business-name {
955
- height: 47px;
956
- color: #ffffffb8;
957
- background: #0000004d;
958
- /* padding-top: 12px; */
959
- font-size: 12px;
960
- /* padding-left: 5px; */
961
- display: table-cell;
962
- vertical-align: middle;
963
- width: 140px;
964
- padding: 6px 10px;
965
- text-align: center;
966
-
967
- p {
968
- margin: 0;
969
- display: -webkit-box;
970
- overflow: hidden;
971
- text-overflow: ellipsis;
972
- -webkit-line-clamp: 2;
973
- -webkit-box-orient: vertical;
974
- }
975
- }
976
-
977
- .fase-box {
978
- color: #fff;
979
- /* border-bottom: solid 1px rgba(255, 255, 255, 0.12); */
980
- border-top: solid 1px rgba(255, 255, 255, 0.12);
981
- background: #225076;
982
- padding: 4px 0 8px;
983
- width: 100%;
984
- z-index: 999;
985
- position: relative;
986
- /* display: flex;*/
987
- //text-align: left !important;
988
- // &:hover {
989
- // color: $baseColor;
990
- // background-color: #fbfdfe;
991
- // .fase-list {
992
- // display: block;
993
- // }
994
- // }
995
- .item {
996
- flex: 1;
997
- text-align: center;
998
- font-size: 16px;
999
- height: 40px;
1000
- line-height: 40px;
1001
- cursor: pointer;
1002
- display: inline-block;
1003
- min-width: 30px;
1004
- }
1005
-
1006
- .fase-list {
1007
- position: absolute;
1008
- left: 100%;
1009
- color: $baseColor;
1010
- background-color: #fbfdfe;
1011
- border: solid 1px $baseColor;
1012
- border-left: none;
1013
- top: -0.5px;
1014
- padding: 10px 0 10px 24px;
1015
- height: 43px;
1016
- width: 413px;
1017
- display: none;
1018
-
1019
- .l-item {
1020
- display: inline-block;
1021
- font-size: 12px;
1022
- margin-right: 36px;
1023
- line-height: 20px;
1024
- cursor: pointer;
1025
-
1026
- i {
1027
- vertical-align: middle;
1028
- margin-right: 4px;
1029
- font-size: 15px;
1030
- margin-bottom: 2px;
1031
- }
1032
-
1033
- &:hover {
1034
- border-bottom: solid 1px $baseColor;
1035
- }
1036
- }
1037
- }
1038
- }
1039
-
1040
- .openSidebar .fase-box {
1041
- text-align: center;
1042
- //padding: 0;
1043
- }
1044
-
1045
- #app .sidebar-container {
1046
- overflow: visible;
1047
- z-index: 1003;
1048
-
1049
- &.hover {
1050
- z-index: 1003;
1051
- }
1052
-
1053
- &.hover1 .fase-box {
1054
- width: 138px;
1055
- color: $baseColor;
1056
- background-color: #fbfdfe;
1057
- border-color: $baseColor;
1058
- }
1059
-
1060
- .el-menu.menu-box {
1061
- height: calc(100vh - 173px);
1062
- font-size: 13px;
1063
- z-index: -1;
1064
- position: relative;
1065
- background-color: rgba(0, 0, 0, 0.2);
1066
- word-break: break-word;
1067
- .el-scrollbar__view > {
1068
- .el-menu-item {
1069
- padding: 0 11px !important;
1070
- span {
1071
- font-size: 14px;
1072
- }
1073
- }
1074
- .el-submenu > .el-submenu__title {
1075
- padding: 0 11px !important;
1076
- span {
1077
- font-size: 14px;
1078
- }
1079
- ~ .el-menu {
1080
- padding: 5px 0;
1081
- display: grid;
1082
- > .el-menu-item {
1083
- span {
1084
- line-height: 1.4;
1085
- height: 26px;
1086
- }
1087
- }
1088
- .el-submenu.is-opened .el-submenu__title {
1089
- background-color: #fff;
1090
- opacity: 1;
1091
- span {
1092
- color: $baseColor;
1093
- }
1094
- i.iconfont {
1095
- color: $baseColor;
1096
- }
1097
- }
1098
- }
1099
- }
1100
- }
1101
- .el-submenu__title,
1102
- .el-menu-item {
1103
- padding: 0 11px;
1104
- height: 48px;
1105
- line-height: 48px;
1106
- overflow: hidden;
1107
- &:hover,
1108
- &.is-active {
1109
- background-color: rgba(0, 0, 0, 0.29);
1110
- }
1111
- i {
1112
- color: #fff;
1113
- font-size: 13px;
1114
- margin-right: 0;
1115
- width: 18px;
1116
-
1117
- &.iconfont {
1118
- margin-right: 5px;
1119
- font-size: 18px;
1120
- float: left;
1121
- }
1122
-
1123
- &.el-submenu__icon-arrow {
1124
- right: 3px;
1125
- text-align: center;
1126
- font-size: 12px;
1127
- margin-top: -5px;
1128
- display: none;
1129
- }
1130
- }
1131
-
1132
- > span {
1133
- height: 48px;
1134
- display: table-cell;
1135
- width: 114px;
1136
- vertical-align: middle;
1137
- font-size: 13px;
1138
- white-space: normal;
1139
- line-height: 16px;
1140
- }
1141
- }
1142
-
1143
- .el-submenu {
1144
- overflow: hidden; //有点电脑分辨率问题
1145
-
1146
- &.is-opened .el-submenu__title {
1147
- //background-color: rgba(27, 66, 97) !important;
1148
- }
1149
- .el-submenu .el-menu {
1150
- display: none;
1151
- }
1152
- }
1153
-
1154
- .el-submenu {
1155
- &.is-opened {
1156
- > .el-submenu__title {
1157
- background-color: rgba(0, 0, 0, 0.29);
1158
- }
1159
- }
1160
- .el-menu {
1161
- background: rgba(0, 0, 0, 0.35);
1162
- box-shadow: 0px -5px 8px #00000014 inset;
1163
- //padding:4px 0;
1164
- .el-submenu__title {
1165
- height: auto;
1166
- line-height: 1.4;
1167
- font-size: 12px;
1168
- opacity: 0.8;
1169
- margin: 5px 0 5px 14px;
1170
- padding: 7px 2px 7px 33px !important;
1171
- border-radius: 8px;
1172
- text-align: left;
1173
- min-width: 81px;
1174
- white-space: normal;
1175
- margin-right: 10px;
1176
- word-break: break-word;
1177
- i.iconfont {
1178
- position: absolute;
1179
- top: 50%;
1180
- height: 20px;
1181
- margin-top: -10px;
1182
- line-height: 20px;
1183
- left: 7px;
1184
- font-size: 18px;
1185
- }
1186
-
1187
- [class^="el-icon-"] {
1188
- font-size: 12px;
1189
- color: #fff;
1190
- position: absolute;
1191
- right: 2px;
1192
- top: 50%;
1193
- margin-top: -5px;
1194
- width: 14px;
1195
- zoom: 0.8;
1196
- display: none;
1197
- }
1198
- span {
1199
- height: auto;
1200
- text-align: left !important;
1201
- }
1202
- &:hover,
1203
- &.on {
1204
- opacity: 1;
1205
- background-color: #fbfdfe !important;
1206
- color: $baseColor !important;
1207
- i.iconfont {
1208
- color: $baseColor;
1209
- }
1210
- .el-icon-arrow-right {
1211
- color: $baseColor;
1212
- }
1213
- }
1214
- }
1215
- }
1216
-
1217
- .el-menu-item {
1218
- height: auto;
1219
- line-height: 1.4;
1220
- padding-left: 33px !important;
1221
- font-size: 12px;
1222
- opacity: 0.8;
1223
- margin: 5px 0 5px 14px;
1224
- padding: 2px 2px 2px 0px;
1225
- border-radius: 8px;
1226
- text-align: left;
1227
- min-width: 81px !important;
1228
- white-space: normal;
1229
- margin-right: 10px;
1230
- word-break: break-word;
1231
-
1232
- i.iconfont {
1233
- position: absolute;
1234
- top: 50%;
1235
- height: 20px;
1236
- margin-top: -10px;
1237
- line-height: 20px;
1238
- left: 7px;
1239
- font-size: 18px;
1240
- color: #d0d6db;
1241
- }
1242
-
1243
- [class^="el-icon-"] {
1244
- font-size: 12px;
1245
- color: #fff;
1246
- position: absolute;
1247
- right: 2px;
1248
- top: 50%;
1249
- margin-top: -5px;
1250
- width: 14px;
1251
- zoom: 0.8;
1252
- display: none;
1253
- }
1254
-
1255
- &:hover,
1256
- &.on {
1257
- opacity: 1;
1258
- background-color: #fbfdfe !important;
1259
- color: $baseColor !important;
1260
-
1261
- .el-icon-arrow-right,
1262
- i.iconfont {
1263
- color: $baseColor;
1264
- }
1265
- }
1266
- }
1267
- }
1268
-
1269
- &.lang-zh {
1270
- font-size: 14px;
1271
-
1272
- .el-submenu {
1273
- .el-submenu__title {
1274
- > span {
1275
- text-align: center;
1276
- }
1277
-
1278
- i.iconfont {
1279
- margin-right: 2px;
1280
- }
1281
- }
1282
-
1283
- .el-menu-item {
1284
- font-size: 13px;
1285
- }
1286
- }
1287
- }
1288
- }
1289
- }
1290
-
1291
- .main-container {
1292
- z-index: 1002;
1293
- }
1294
-
1295
- .menu-btn {
1296
- background-color: #0000001c;
1297
- height: 30px;
1298
- line-height: 30px;
1299
- text-align: center;
1300
- box-shadow: 0 -10px 6px rgb(0 0 0 / 10%);
1301
- display: flex;
1302
- color: #fff;
1303
- font-size: 16px;
1304
-
1305
- i {
1306
- display: inline-block;
1307
- flex: 1;
1308
- line-height: 30px;
1309
- cursor: pointer;
1310
- border-right: solid 1px rgba(0, 0, 0, 0.2);
1311
-
1312
- &:last-child {
1313
- border-right: none;
1314
- }
1315
-
1316
- &:hover {
1317
- background-color: rgba(255, 255, 255, 0.12);
1318
- }
1319
- }
1320
- }
1321
-
1322
- /*.menu-box {
1323
- background-color: #0000002e !important;
1324
- font-size: 14px;
1325
- z-index: -1;
1326
- position: relative;
1327
- &.hover .el-scrollbar {
1328
- width: 1000px;
1329
- }
1330
- .el-scrollbar {
1331
- .el-scrollbar__view {
1332
- padding-top: 1px;
1333
- }
1334
- .el-scrollbar__bar.is-vertical {
1335
- left: 104px;
1336
- }
1337
- }
1338
- .first-item {
1339
- position: relative;
1340
- width: 104px;
1341
- &:nth-child(-n + 6) .second-list {
1342
- bottom: inherit !important;
1343
- top: -40.5px !important;
1344
- }
1345
- &:nth-child(1) .second-list {
1346
- top: 0 !important;
1347
- }
1348
- &:nth-last-child(-n + 6) .second-list {
1349
- bottom: -1%;
1350
- top: inherit;
1351
- }
1352
- .f-name {
1353
- height: 55px;
1354
- line-height: 55px;
1355
- padding-left: 9px;
1356
- color: #fff;
1357
- cursor: pointer;
1358
- position: relative;
1359
- padding-right: 6px;
1360
- -webkit-transition: all 0.2s ease-in;
1361
- -moz-transition: all 0.2s ease-in;
1362
- -o-transition: all 0.2s ease-in;
1363
- transition: all 0.2s ease-in;
1364
- width: 104px;
1365
- i.el-icon-arrow-right {
1366
- position: absolute;
1367
- right: 3px;
1368
- top: 21.5px;
1369
- width: 14px;
1370
- height: 14px;
1371
- }
1372
- .el-icon-s-opportunity {
1373
- opacity: 0.92;
1374
- font-size: 13px;
1375
- vertical-align: middle;
1376
- margin-right: 2px;
1377
- }
1378
- span{display: inline-block;width: calc(100% - 20px);vertical-align: middle;line-height: 1.2;}
1379
- }
1380
-
1381
- &:hover,
1382
- &.current {
1383
- .f-name {
1384
- background-color: #fbfdfe;
1385
- color: $baseColor;
1386
- }
1387
- .second-list {
1388
- display: block;
1389
- }
1390
- }
1391
- }
1392
- }
1393
-
1394
-
1395
- */
1396
- .second-list {
1397
- display: none;
1398
- position: absolute;
1399
- left: $sideBarWidth;
1400
- padding-left: 2px;
1401
- top: 0.5px;
1402
- // &:before {
1403
- // content: "";
1404
- // top: 22px;
1405
- // bottom: 22px;
1406
- // background-color: $baseColor;
1407
- // width: 2px;
1408
- // position: absolute;
1409
- // left: 24px;
1410
- // }
1411
- > div {
1412
- background: #fbfdfe;
1413
- border: solid 1px $baseColor;
1414
- top: -0.5px;
1415
- padding: 24px 0;
1416
- border-radius: 8px;
1417
- margin-left: 9px;
1418
- max-height: calc(84vh);
1419
- overflow-y: auto;
1420
- overflow-x: hidden;
1421
- width: 458px;
1422
- }
1423
-
1424
- .ico-arrow {
1425
- border-top: solid 7px transparent;
1426
- border-bottom: solid 7px transparent;
1427
- border-right: solid 7px $baseColor;
1428
- position: absolute;
1429
- left: 2px;
1430
- top: 8px;
1431
- }
1432
-
1433
- &.on {
1434
- display: block;
1435
- }
1436
-
1437
- .tit {
1438
- width: auto;
1439
- /* text-align: center; */
1440
- /* background: #22507614; */
1441
- color: $baseColor;
1442
- /* border: dashed 1px #1d4667; */
1443
- padding: 0 0 10px;
1444
- /* border-radius: 6px; */
1445
- /* margin: 5px auto; */
1446
- margin: 0 22px;
1447
- display: block;
1448
- border-bottom: solid 1px #eee;
1449
-
1450
- i,
1451
- span {
1452
- opacity: 1;
1453
- vertical-align: middle;
1454
- margin-right: 7px;
1455
- font-size: 18px;
1456
- }
1457
-
1458
- span {
1459
- font-size: 14px;
1460
- }
1461
- }
1462
-
1463
- dl {
1464
- padding: 8px 16px 3px 24px;
1465
- margin-top: 0;
1466
- margin-bottom: 0;
1467
- display: inline-block;
1468
- width: 50%;
1469
- position: relative;
1470
- word-break: break-all;
1471
-
1472
- &:after {
1473
- content: "";
1474
- width: 1px;
1475
- height: 14px;
1476
- background: #e4e4e4;
1477
- display: inline-block;
1478
- position: absolute;
1479
- right: -5px;
1480
- top: 50%;
1481
- margin-top: -3px;
1482
- }
1483
-
1484
- .s-name {
1485
- color: $baseColor;
1486
- display: inline-block;
1487
- width: 190px;
1488
- font-size: 14px;
1489
- vertical-align: top;
1490
- margin-top: 11px;
1491
- text-align: right;
1492
-
1493
- i {
1494
- margin-left: 5px;
1495
-
1496
- &.icon {
1497
- font-size: 13px;
1498
- opacity: 0.92;
1499
- margin-left: 2px;
1500
- margin-right: 4px;
1501
- }
1502
- }
1503
- }
1504
-
1505
- .item {
1506
- position: relative;
1507
- border: dashed 1px #fff;
1508
- border-radius: 6px;
1509
- display: block;
1510
- padding: 6px 8px 6px 27px;
1511
- cursor: pointer;
1512
-
1513
- &:hover {
1514
- border-color: $baseColor;
1515
- color: $baseColor;
1516
-
1517
- i,
1518
- a {
1519
- color: $baseColor;
1520
- }
1521
- }
1522
-
1523
- // &:after {
1524
- // content: "";
1525
- // width: 1px;
1526
- // height: 12px;
1527
- // background: #dcdcdc;
1528
- // position: absolute;
1529
- // right: -25px;
1530
- // top: 2px
1531
- // }
1532
-
1533
- i {
1534
- opacity: 0.8;
1535
- margin-right: 8px;
1536
- vertical-align: middle;
1537
- position: absolute;
1538
- left: 4px;
1539
- top: 50%;
1540
- margin-top: -11px;
1541
- height: 22px;
1542
- line-height: 22px;
1543
- font-size: 16px;
1544
- }
1545
-
1546
- a {
1547
- color: rgba(0, 0, 0, 0.82);
1548
- display: inline-block;
1549
- font-size: 13px;
1550
- position: relative;
1551
- overflow: initial !important;
1552
- -webkit-transition: all 0.2s ease-in;
1553
- -moz-transition: all 0.2s ease-in;
1554
- -o-transition: all 0.2s ease-in;
1555
- transition: all 0.2s ease-in;
1556
- width: auto !important;
1557
- vertical-align: middle;
1558
- word-break: break-word;
1559
-
1560
- &:hover {
1561
- color: $baseColor;
1562
-
1563
- // &:after {
1564
- // content: '';
1565
- // position: absolute;
1566
- // bottom: -4px;
1567
- // left: 0;
1568
- // right: 0;
1569
- // border-bottom: solid 1px $baseColor;
1570
- // }
1571
- }
1572
- }
1573
- }
1574
-
1575
- &:last-child {
1576
- .list-box {
1577
- border-bottom: none;
1578
- }
1579
- }
1580
- }
1581
- }
1582
- // .el-submenu .el-menu {
1583
- // height: auto !important;
1584
- // }
1585
- .el-menu--vertical {
1586
- > .el-menu--popup {
1587
- overflow: auto; //不用atuo 超出不出滚动条
1588
- .el-submenu__title,
1589
- .el-menu-item {
1590
- height: auto !important;
1591
- line-height: 1.4 !important;
1592
- padding: 8px 0;
1593
- text-align: left;
1594
- white-space: normal;
1595
- word-break: break-word;
1596
- background: none;
1597
- i.iconfont {
1598
- color: #fff;
1599
- margin-right: 8px;
1600
- }
1601
- }
1602
- }
1603
- .el-submenu {
1604
- .el-submenu__title {
1605
- .el-submenu__icon-arrow {
1606
- display: none;
1607
- }
1608
- }
1609
- &:hover {
1610
- .el-submenu__title {
1611
- background-color: rgba(0, 0, 0, 0.29) !important;
1612
- i.iconfont {
1613
- color: $baseColor;
1614
- }
1615
- }
1616
- }
1617
-
1618
- &.is-opened {
1619
- .el-submenu__title {
1620
- background-color: rgba(0, 0, 0, 0.29) !important;
1621
- i.iconfont {
1622
- color: $baseColor;
1623
- }
1624
- }
1625
- }
1626
- }
1627
- .el-menu-item {
1628
- &:hover {
1629
- background-color: rgba(0, 0, 0, 0.29) !important;
1630
- i.iconfont {
1631
- color: $baseColor;
1632
- }
1633
- }
1634
-
1635
- &.is-opened {
1636
- background-color: rgba(0, 0, 0, 0.29) !important;
1637
- i.iconfont {
1638
- color: $baseColor;
1639
- }
1640
- }
1641
- }
1642
- // .el-menu-item{
1643
- // &:hover{
1644
- // background:#FFF !important;opacity:1;
1645
- // span{color:$baseColor}
1646
- // i.iconfont{color:$baseColor}
1647
- // }
1648
- // &.is-opened{
1649
- // background:#FFF;opacity:1;
1650
- // span{color:$baseColor}
1651
- // i.iconfont{color:$baseColor}
1652
- // }
1653
- // }
1654
- }
1655
- </style>
1
+ <template>
2
+ <div :class="{ 'has-logo': showLogo, telescopMenu: !isMenu }">
3
+ <!-- <logo v-if="showLogo" :collapse="isCollapse" /> -->
4
+
5
+ <div class="hamburger-box" ref="hamhurger" @click="openUserInfo">
6
+ <!-- <hamburger :is-active="sidebar.opened" @toggleClick="toggleSideBar" /> -->
7
+ <div>
8
+ <p class="name">
9
+ <i class="iconfont icon-ziyuan"></i
10
+ ><span>{{ userInfo.nickName }}</span>
11
+ </p>
12
+ </div>
13
+ </div>
14
+ <div class="business-name" ref="business">
15
+ <el-tooltip
16
+ :enterable="false"
17
+ effect="dark"
18
+ :content="companyInfo.companyName"
19
+ :placement="direction"
20
+ >
21
+ <p v-show="getMenuFlag()">{{ companyInfo.companyName }}</p>
22
+ </el-tooltip>
23
+ </div>
24
+ <div
25
+ class="fase-box"
26
+ ref="fase"
27
+ @mouseleave="$emit('selfClose')"
28
+ @mouseenter="$emit('selfEnter')"
29
+ >
30
+ <langTool v-if="getMenuFlag()"></langTool>
31
+ <div class="item" @click="openCompanyDialog" v-if="getMenuFlag()">
32
+ <el-tooltip
33
+ :enterable="false"
34
+ effect="dark"
35
+ :content="$t1('切换组织')"
36
+ :placement="direction"
37
+ >
38
+ <i class="el-icon-set-up" />
39
+ </el-tooltip>
40
+ </div>
41
+ <div class="item" v-if="getMenuFlag()">
42
+ <el-tooltip
43
+ :enterable="false"
44
+ effect="dark"
45
+ :content="$t1('流程待办')"
46
+ :placement="direction"
47
+ >
48
+ <i
49
+ class="iconfont icon-liuchengdaiban"
50
+ @click="$router.push('/basic/wf/wf_manage/list')"
51
+ />
52
+ </el-tooltip>
53
+ </div>
54
+ <div class="item" v-if="isDev && isBdAdmin">
55
+ <el-tooltip
56
+ :enterable="false"
57
+ effect="dark"
58
+ :content="$t1('获取提取码')"
59
+ :placement="direction"
60
+ >
61
+ <i
62
+ class="el-icon-setting"
63
+ @click="showExtractedCodeCreateDialog = true"
64
+ />
65
+ </el-tooltip>
66
+ </div>
67
+ <div class="item" v-if="isBdAdmin">
68
+ <el-tooltip
69
+ :enterable="false"
70
+ effect="dark"
71
+ :content="$t1('查看提取码')"
72
+ :placement="direction"
73
+ >
74
+ <i
75
+ class="el-icon-tickets"
76
+ @click="showExtractedCodeQueryDialog = true"
77
+ />
78
+ </el-tooltip>
79
+ </div>
80
+
81
+ <div class="item" @click="logout()">
82
+ <el-tooltip
83
+ :enterable="false"
84
+ effect="dark"
85
+ :content="$t1('退出')"
86
+ :placement="direction"
87
+ >
88
+ <i class="el-icon-switch-button" />
89
+ </el-tooltip>
90
+ </div>
91
+ </div>
92
+ <template v-for="router1 in viewRouter">
93
+ <template v-for="router2 in router1.children">
94
+ <div
95
+ class="second-list"
96
+ :key="router1.id + 't' + router2.id"
97
+ :class="{ on: router2.id == nowNavID }"
98
+ @mouseenter="stopFlag = 1"
99
+ @mouseleave="showNav()"
100
+ v-show="router2.id == nowNavID"
101
+ :ref="'seconMenus' + router2.id"
102
+ >
103
+ <i class="ico-arrow"></i>
104
+ <div>
105
+ <div class="tit">
106
+ <i :class="getMenuClass(router2, 2)"></i
107
+ ><span>{{ getMenuName(router2) }}</span>
108
+ </div>
109
+ <dl
110
+ v-for="(router3, index3) in router2.children"
111
+ :key="'router3' + index3"
112
+ >
113
+ <div
114
+ class="item"
115
+ v-if="!router3.hidden"
116
+ @click="rourteTo(router3, router1)"
117
+ >
118
+ <!--<i class="el-icon-caret-right"></i>-->
119
+ <i :class="getMenuClass(router3, 3)"></i>
120
+ <a>{{ getMenuName(router3) }}</a>
121
+ </div>
122
+ </dl>
123
+ </div>
124
+ </div>
125
+ </template>
126
+ </template>
127
+ <el-menu
128
+ class="menu-box"
129
+ :class="{ 'lang-zh': $i18n.locale == 'zh' }"
130
+ text-color="#fff"
131
+ active-text-color="#fff"
132
+ :unique-opened="true"
133
+ @mouseleave="showNav()"
134
+ ref="seconMenus"
135
+ :collapse="!isMenu"
136
+ >
137
+ <el-scrollbar wrap-class="scrollbar-wrapper" id="menuUl">
138
+ <component
139
+ v-for="menuModule in menuModules"
140
+ :is="getMenuType(menuModule)"
141
+ :index="'' + menuModule.id"
142
+ :key="'menuModule' + menuModule.id"
143
+ @click.native="rourteTo(menuModule)"
144
+ >
145
+ <i
146
+ :class="getMenuClass(menuModule, 1)"
147
+ v-if="menuModule.children.length <= 0"
148
+ ></i>
149
+ <template slot="title">
150
+ <i
151
+ :class="getMenuClass(menuModule, 1)"
152
+ v-if="menuModule.children.length > 0"
153
+ ></i>
154
+ <span>{{ getMenuName(menuModule) }}</span>
155
+ </template>
156
+ <component
157
+ v-for="(router2, index1) in menuModule.children"
158
+ :is="getMenuType(router2)"
159
+ :key="index1"
160
+ :index="'' + router2.id"
161
+ @mouseenter.native="showNav(router2, $event)"
162
+ @mouseleave.native="showNav()"
163
+ @click="rourteTo(router2)"
164
+ >
165
+ <template slot="title">
166
+ <i :class="getMenuClass(router2, 2)"></i>
167
+ <span>{{ getMenuName(router2) }}</span>
168
+ </template>
169
+ <el-menu-item
170
+ v-for="(router3, index3) in router2.children"
171
+ :key="index3"
172
+ :index="'' + router3.id"
173
+ @click="rourteTo(router3)"
174
+ >
175
+ <template slot="title">
176
+ <i :class="getMenuClass(router3, 3)"></i>
177
+ <span>{{ getMenuName(router3) }}</span>
178
+ </template>
179
+ </el-menu-item>
180
+ </component>
181
+ </component>
182
+ <!-- <el-menu-item
183
+ @click.native="openCreateCompanyDialog"
184
+ index="xx"
185
+ v-if="isFormDev"
186
+ >
187
+ <template slot="title">
188
+ <i :class="getMenuClass({}, 1)"></i>
189
+ <span>新建企业</span>
190
+ </template>
191
+ </el-menu-item> -->
192
+ </el-scrollbar>
193
+ </el-menu>
194
+ <div class="menu-btn">
195
+ <i class="el-icon-arrow-up" @click="toUpMove()"></i>
196
+ <i class="el-icon-arrow-down" @click="toDownMove()"></i>
197
+ </div>
198
+ <div
199
+ id="tta"
200
+ style="
201
+ position: absolute;
202
+ height: 100%;
203
+ top: 0;
204
+ right: 0;
205
+ z-index: 9999;
206
+ width: 800px;
207
+ left: 100%;
208
+ "
209
+ v-if="showMenuModal"
210
+ ></div>
211
+ <el-dialog
212
+ :title="$t1('切换组织')"
213
+ width="355px"
214
+ custom-class="dialog-style list-dialog"
215
+ v-if="showCompanyDialog"
216
+ :visible.sync="showCompanyDialog"
217
+ :append-to-body="true"
218
+ :modal-append-to-body="true"
219
+ :close-on-click-modal="false"
220
+ v-el-drag-dialog
221
+ v-el-dialog-center
222
+ @close="changeCompanyClose"
223
+ >
224
+ <div class="cont">
225
+ <el-input
226
+ :placeholder="$t1('搜索')"
227
+ class="search-btn"
228
+ v-model="filterText"
229
+ ></el-input>
230
+ <el-tree
231
+ :props="defaultProps"
232
+ :load="loadNode"
233
+ node-key="id"
234
+ ref="tree"
235
+ highlight-current
236
+ lazy
237
+ :expand-on-click-node="true"
238
+ @node-click="handleNodeClick"
239
+ class="organization-tree"
240
+ icon-class="el-icon-arrow-right"
241
+ :filter-node-method="filterNode"
242
+ ></el-tree>
243
+ </div>
244
+ <!-- <span slot="footer" class="dialog-footer">
245
+ <el-button type="primary" plain class="button-sty" @click="changeCompanyClose">
246
+ <i class="el-icon-close el-icon"></i>
247
+ 取 消
248
+ </el-button>
249
+ <el-button type="primary" @click="changeCompany" class="button-sty">
250
+ <i class="el-icon-check el-icon"></i>
251
+ 确 定
252
+ </el-button>
253
+ </span> -->
254
+ </el-dialog>
255
+
256
+ <!-- <infoIframeDialog v-if="showInfoIframeDialog" :visiable.sync="showInfoIframeDialog"
257
+ :dataId="userInfo.id"></infoIframeDialog>-->
258
+ <userInfo
259
+ v-if="!isFormDev && showUserInfoDialog"
260
+ :visiable.sync="showUserInfoDialog"
261
+ :_dataId="userInfo.id"
262
+ topValue="128px"
263
+ @reload="userInfoReload"
264
+ ></userInfo>
265
+ <userFormInfo
266
+ v-if="isFormDev && showUserInfoDialog"
267
+ :visiable.sync="showUserInfoDialog"
268
+ :_dataId="userInfo.id"
269
+ topValue="128px"
270
+ @reload="userInfoReload"
271
+ ></userFormInfo>
272
+ <onlineTalk></onlineTalk>
273
+ <extractedCodeCreateDialog
274
+ v-if="showExtractedCodeCreateDialog"
275
+ :visiable.sync="showExtractedCodeCreateDialog"
276
+ ></extractedCodeCreateDialog>
277
+ <extractedCodeQueryDialog
278
+ v-if="showExtractedCodeQueryDialog"
279
+ :visiable.sync="showExtractedCodeQueryDialog"
280
+ ></extractedCodeQueryDialog>
281
+ <createCompanyDialog
282
+ v-if="showCreateCompanyDialog"
283
+ :visiable.sync="showCreateCompanyDialog"
284
+ ></createCompanyDialog>
285
+ </div>
286
+ </template>
287
+
288
+ <script>
289
+ import { mapGetters } from "vuex";
290
+ import variables from "@base/styles/variables.scss";
291
+ import { getToken } from "@base/utils/auth";
292
+ import indexUtil from "@base/utils/index.js";
293
+ import langTool from "../langTool.vue";
294
+ import { initPddLog } from "@base/utils/pddLog";
295
+ import { getBdFlag } from "@base/api/user";
296
+
297
+ export default {
298
+ props: {
299
+ option: Object,
300
+ isMenu: {
301
+ type: Boolean,
302
+ },
303
+ },
304
+ components: {
305
+ // 个人设置 / 在线沟通 / 提取码 / 建企业 首屏菜单用不到。同步 import 会把
306
+ // onlineTalk → talkUserDialog → tableForm 整条链焊进 Sidebar 异步包,
307
+ // 发布环境首次进入时左边菜单明显慢于首页。
308
+ userInfo: () => import("@base/views/user/user/info.vue"),
309
+ userFormInfo: () => import("@base/views/user/user/form_info.vue"),
310
+ onlineTalk: () => import("@base/components/onlineTalk"),
311
+ langTool,
312
+ extractedCodeCreateDialog: () => import("../extractedCode/createDialog.vue"),
313
+ extractedCodeQueryDialog: () => import("../extractedCode/queryDialog.vue"),
314
+ createCompanyDialog: () =>
315
+ import("@base/layout/components/createCompany/createCompanyDialog.vue"),
316
+ },
317
+ data() {
318
+ return {
319
+ direction: "bottom",
320
+ defaultOpenedsArray: [],
321
+ viewRouter: [],
322
+ showMenuModal: false,
323
+ menuheight: {
324
+ height: "",
325
+ },
326
+ defaultProps: {
327
+ label: "label", //这里是树结构中需显示的数据(即接口返回的需展示在页面上的参数)
328
+ children: [],
329
+ isLeaf: "leaf",
330
+ },
331
+ filterText: null,
332
+ showCompanyDialog: false,
333
+ choose_company_info: "",
334
+ userInfo: {},
335
+ companyInfo: {},
336
+ showUserInfoDialog: false,
337
+ hoverStatus: false,
338
+ nowNavID: "null",
339
+ stopFlag: 0,
340
+ showInfoIframeDialog: false,
341
+ currentMenu: null,
342
+ menuModules: [],
343
+ firstMenuHeight: 0, // 第一个菜单的高度
344
+ eveyMenuHeight: 48, // 每一个菜单的高度
345
+ isFormDev: false,
346
+
347
+ showExtractedCodeCreateDialog: false,
348
+ showExtractedCodeQueryDialog: false,
349
+ isDev: false,
350
+ showCreateCompanyDialog: false,
351
+ };
352
+ },
353
+ computed: {
354
+ ...mapGetters([
355
+ "permission_routes",
356
+ "sidebar",
357
+ "sidebarRouters",
358
+ "isBdAdmin",
359
+ "userFlag",
360
+ ]),
361
+ activeMenu() {
362
+ const route = this.$route;
363
+ const { meta, path } = route;
364
+ // if set path, the sidebar will highlight the path you set
365
+ if (meta.activeMenu) {
366
+ return meta.activeMenu;
367
+ }
368
+ return path;
369
+ },
370
+ showLogo() {
371
+ return this.$store.state.settings.sidebarLogo;
372
+ },
373
+ variables() {
374
+ return variables;
375
+ },
376
+ /*isCollapse() {
377
+ if (this.sidebar.opened) {
378
+ this.direction = 'bottom';
379
+ } else {
380
+ this.direction = 'right-start';
381
+ }
382
+ return !this.sidebar.opened;
383
+ }*/
384
+ },
385
+ watch: {
386
+ filterText(val) {
387
+ this.$refs.tree.filter(val);
388
+ },
389
+ sidebarRouters() {
390
+ this.filterRoute();
391
+ },
392
+ },
393
+ created() {
394
+ indexUtil.initI18nMessage("menus");
395
+ // generateRoutes2 在 next() 之前已经写入。放 created 而不是 mounted+100ms,
396
+ // 第一次 render 就带菜单项;也不用 immediate watcher(会早于 created,
397
+ // filterRoute 里的 $router.push 不安全)。
398
+ this.filterRoute();
399
+ },
400
+ mounted() {
401
+ this.getUserInfo();
402
+ this.countHeight();
403
+ let query = this.$route.query;
404
+ if (query && query.flag == 1) {
405
+ this.showCompanyDialog = true;
406
+ }
407
+ initPddLog(); //初始化拼多多日志
408
+ this.initIsFormDev();
409
+ this.getBdEnv();
410
+ },
411
+ methods: {
412
+ getMenuType(item) {
413
+ if (item.children && item.children.length > 0) {
414
+ return "el-submenu";
415
+ } else {
416
+ return "el-menu-item";
417
+ }
418
+ },
419
+ getBdEnv() {
420
+ getBdFlag({
421
+ success: (res) => {
422
+ this.isDev = res.objx == 1;
423
+ },
424
+ });
425
+ },
426
+ initIsFormDev() {
427
+ let userFlag = this.userFlag;
428
+ this.isFormDev = userFlag == 6 || userFlag == 7 || userFlag == 8;
429
+ },
430
+ getMenuFlag() {
431
+ return !this.isBdAdmin;
432
+ },
433
+ getMenuName(item) {
434
+ let locale = this.$i18n?.locale;
435
+ let zhTitle = item.meta ? item.meta.title : "";
436
+ let enTitle = item.meta ? item.meta.enTitle : "";
437
+ let title;
438
+ if (locale == "en") {
439
+ title = enTitle || zhTitle;
440
+ } else {
441
+ title = zhTitle;
442
+ }
443
+ if (!enTitle || locale !== "en") {
444
+ title = zhTitle;
445
+ }
446
+ if (this.$t1) {
447
+ title = this.$t1(title);
448
+ }
449
+
450
+ return title;
451
+ },
452
+ jumpOutLink(route) {
453
+ let path = route.url || route.path;
454
+ if (route.type == 4 && path) {
455
+ let params = this.getCustomReqUrlAndCleanUrl(path);
456
+ let reqUrl = params.custom_req_url;
457
+ if (reqUrl) {
458
+ this.$http({
459
+ url: reqUrl,
460
+ method: `post`,
461
+ data: { thirdUrl: params.newUrl },
462
+ isLoading: true,
463
+ success: (res) => {
464
+ path = res.objx;
465
+ window.open(path);
466
+ },
467
+ });
468
+ } else {
469
+ if (path.indexOf("token={token}") >= 0) {
470
+ path = path.replace("token={token}", "token=" + getToken());
471
+ }
472
+ window.open(path);
473
+ }
474
+ }
475
+ },
476
+ getCustomReqUrlAndCleanUrl(url) {
477
+ // 直接使用正则表达式匹配
478
+ const match = url.match(/[?&]custom_req_url=([^&?#]+)/);
479
+ if (match) {
480
+ const customReqUrl = decodeURIComponent(match[1]);
481
+ // 移除匹配到的参数部分
482
+ const newUrl = url.replace(
483
+ match[0],
484
+ match[0].startsWith("?") ? "?" : ""
485
+ );
486
+
487
+ return {
488
+ custom_req_url: customReqUrl,
489
+ newUrl: newUrl.replace(/\?$/, "").replace(/\?&/, "?"),
490
+ };
491
+ }
492
+
493
+ return {
494
+ custom_req_url: "",
495
+ newUrl: url,
496
+ };
497
+ },
498
+ changeModules(row, cRow) {
499
+ if (!row.route) return;
500
+ localStorage.setItem("currentMenuId", row.id);
501
+ let route = row.route ? "/" + row.route : "";
502
+ sessionStorage.setItem("reUrl", cRow.path);
503
+ sessionStorage.setItem("reCid", row.id);
504
+ location.href = route + "/index.html/#/home";
505
+
506
+ // location.reload();
507
+ },
508
+ filterRoute() {
509
+ var oldRoutes = JSON.parse(JSON.stringify(this.sidebarRouters));
510
+ var nRoute1s = [];
511
+ oldRoutes.forEach((route1, index1) => {
512
+ let nRoute2s = [];
513
+ if (!route1.hidden) {
514
+ route1.children.forEach((route2, index2) => {
515
+ let nRoute3s = [];
516
+ if (!route2.hidden) {
517
+ route2.children.forEach((route3, index3) => {
518
+ if (!route3.hidden) {
519
+ nRoute3s.push(route3);
520
+ }
521
+ });
522
+ }
523
+ if (route2.type == 4 || route2.url || nRoute3s.length > 0) {
524
+ route2.children = nRoute3s;
525
+ nRoute2s.push(route2);
526
+ }
527
+ });
528
+ }
529
+ if (route1.type == 4 || route1.url || nRoute2s.length > 0) {
530
+ route1.children = nRoute2s;
531
+ nRoute1s.push(route1);
532
+ }
533
+ });
534
+ this.viewRouter = nRoute1s || [];
535
+ this.menuModules = nRoute1s || [];
536
+
537
+ let reUrl = sessionStorage.getItem("reUrl");
538
+ let reCid = sessionStorage.getItem("reCid");
539
+ if (reUrl) {
540
+ this.$nextTick(() => {
541
+ this.$refs.seconMenus.open(reCid);
542
+ });
543
+ this.$router.push(reUrl);
544
+ sessionStorage.removeItem("reUrl");
545
+ sessionStorage.removeItem("reCid");
546
+ }
547
+ },
548
+ filterRoute1() {
549
+ var oldRoutes = JSON.parse(JSON.stringify(this.sidebarRouters));
550
+ var nRoute1s = [];
551
+ oldRoutes.forEach((route1, index1) => {
552
+ let nRoute2s = [];
553
+ if (!route1.hidden && route1.route) {
554
+ route1.children.forEach((route2, index2) => {
555
+ let nRoute3s = [];
556
+ if (!route2.hidden) {
557
+ route2.children.forEach((route3, index3) => {
558
+ if (!route3.hidden) {
559
+ nRoute3s.push(route3);
560
+ }
561
+ });
562
+ }
563
+ if (nRoute3s.length > 0) {
564
+ route2.children = nRoute3s;
565
+ nRoute2s.push(route2);
566
+ }
567
+ });
568
+ }
569
+ if (nRoute2s.length > 0) {
570
+ route1.children = nRoute2s;
571
+ nRoute1s.push(route1);
572
+ }
573
+ });
574
+ let rows = nRoute1s;
575
+ if (rows.length) {
576
+ let currentMenu;
577
+ if (nRoute1s.length) {
578
+ var currentMenuId = localStorage.getItem("currentMenuId");
579
+ if (currentMenuId) {
580
+ currentMenu = nRoute1s.find((row) => row.id == currentMenuId);
581
+ }
582
+ if (!currentMenu) {
583
+ currentMenu = nRoute1s[0];
584
+ }
585
+ this.viewRouter = currentMenu.children;
586
+ }
587
+ this.currentMenu = currentMenu;
588
+ this.menuModules = rows || [];
589
+
590
+ /*if (currentMenu) {
591
+ if (currentMenu.route != WEB_PREFIX.substring(1, WEB_PREFIX.length)) {
592
+ this.changeModules(currentMenu, 1);
593
+ } else {
594
+ localStorage.setItem('currentMenuId', currentMenu.id);
595
+ }
596
+ } else {
597
+ localStorage.removeItem('currentMenuId');
598
+ }*/
599
+ }
600
+ },
601
+ rourteTo(route) {
602
+ let path = route.url || route.path;
603
+ if (!path) {
604
+ return;
605
+ }
606
+ this.showMenuModal = true;
607
+ setTimeout(() => {
608
+ this.showMenuModal = false;
609
+ }, 200);
610
+ try {
611
+ if (route.linkType == 4) {
612
+ this.jumpOutLink(route);
613
+ } else if (route.linkType == 3) {
614
+ this.$router.push({
615
+ path: path,
616
+ query: { url: route.outLink, route: route.route },
617
+ });
618
+ } else {
619
+ // 通用打开:可重复时附加唯一标识生成独立标签页
620
+ this.$openView(path, route);
621
+ }
622
+ } catch (e) {
623
+ console.error(e);
624
+ }
625
+ },
626
+ logout() {
627
+ this.$store.dispatch("user/logout2").then((res) => {
628
+ this.$router.push(`/login?redirect=${this.$route.fullPath}`);
629
+ });
630
+ },
631
+ toggleSideBar() {
632
+ this.$store.dispatch("app/toggleSideBar");
633
+ },
634
+ countHeight() {
635
+ var h =
636
+ this.$refs.hamhurger.offsetHeight +
637
+ this.$refs.fase.offsetHeight +
638
+ this.$refs.business.offsetHeight;
639
+ this.menuheight.height = window.innerHeight - h + "px";
640
+ },
641
+ handleNodeClick(data, node, v) {
642
+ if (!data.hasChild) {
643
+ this.choose_company_info = data;
644
+ this.changeCompany();
645
+ } else {
646
+ this.choose_company_info = {};
647
+ }
648
+ },
649
+ // 异步树叶子节点懒加载逻辑
650
+ loadNode(node, resolve) {
651
+ let companyCode =
652
+ node && node.data && node.data.companyCode
653
+ ? node.data.companyCode || ""
654
+ : "";
655
+ let url = !companyCode
656
+ ? USER_PREFIX + "/user_company_info/getAllList"
657
+ : USER_PREFIX + "/user_company_info/getChildren";
658
+
659
+ this.$http({
660
+ url: url,
661
+ method: "post",
662
+ data: {
663
+ parentCompanyCode: companyCode,
664
+ },
665
+ success: (res) => {
666
+ let datas = res.objx || [];
667
+ let parentLabel = companyCode ? node.label : null;
668
+ datas.forEach((item) => {
669
+ item.leaf = !item.hasChild;
670
+ let label = this.$t1(item.companyName);
671
+ /*if(companyCode){
672
+ label = label + '('+companyTypeMap[item.companyType]+')'
673
+ }*/
674
+ item.label = label;
675
+ item.parentLabel = parentLabel;
676
+ });
677
+
678
+ if (node.level === 0) {
679
+ if (datas.length > 0 && datas[0].hasChild) {
680
+ this.$nextTick(() => {
681
+ let nodedata = node.childNodes[0];
682
+ nodedata.expanded = true;
683
+ nodedata.loadData();
684
+ });
685
+ }
686
+ }
687
+ resolve(datas);
688
+ },
689
+ });
690
+ },
691
+ filterNode(value, data) {
692
+ if (!value) return true;
693
+ let flag1 = data.label.indexOf(value) !== -1;
694
+ let flag2 = data.parentLabel && data.parentLabel.indexOf(value) !== -1;
695
+ return flag1 || flag2;
696
+ },
697
+ openCompanyDialog() {
698
+ this.filterText = null;
699
+ this.showCompanyDialog = true;
700
+ },
701
+ getWebPrefix(callback) {
702
+ this.$http({
703
+ url: USER_PREFIX + "/auth/getWebPrefix",
704
+ method: `post`,
705
+ data: {},
706
+ isLoading: true,
707
+ success: (res) => {
708
+ let webPrefix = res.objx;
709
+ callback && callback(webPrefix);
710
+ },
711
+ });
712
+ },
713
+ changeCompany() {
714
+ let row = this.choose_company_info;
715
+ let query = this.$route.query;
716
+ let flag = query && query.flag == 1 ? 1 : null;
717
+ this.showCompanyDialog = false;
718
+ if (row && row.companyCode) {
719
+ this.$baseLoading({ target: document.body, fullscreen: true });
720
+ this.$http({
721
+ url: USER_PREFIX + "/auth/switchCompany",
722
+ method: "post",
723
+ data: { stringOne: row.companyCode },
724
+ isLoading: true,
725
+ success: (res) => {
726
+ this.getWebPrefix((prefix) => {
727
+ let webPrefix = prefix ? "/" + prefix : window.MAIN_WEB_PREFIX;
728
+ sessionStorage.removeItem("out-token");
729
+ this.$store.dispatch("user/changeCompanyInfo", row);
730
+ this.$store.dispatch("tagsView/delAllViews");
731
+ window.location.href = webPrefix + "/index.html";
732
+ });
733
+ },
734
+ });
735
+ } else {
736
+ if (flag == 1) {
737
+ this.$router.push({
738
+ path: "/",
739
+ });
740
+ }
741
+ }
742
+ },
743
+ changeCompanyClose() {
744
+ let query = this.$route.query;
745
+ let flag = query && query.flag == 1 ? 1 : null;
746
+ if (flag == 1) {
747
+ this.$router.push({
748
+ path: "/",
749
+ });
750
+ }
751
+ this.showCompanyDialog = false;
752
+ },
753
+ getUserInfo() {
754
+ this.$http({
755
+ url: USER_PREFIX + "/user/currentUser",
756
+ method: "post",
757
+ success: (res) => {
758
+ let userInfo = res.objx;
759
+ this.headPhotoUrl = userInfo.headPhotoUrl
760
+ ? userInfo.headPhotoUrl
761
+ : (require("@base/core-resources/images/default-header.png").default || require("@base/core-resources/images/default-header.png"));
762
+ this.userInfo = userInfo;
763
+ },
764
+ });
765
+
766
+ this.$http({
767
+ url: USER_PREFIX + "/company_info/getCurrent",
768
+ method: `post`,
769
+ success: (res) => {
770
+ this.companyInfo = res.objx || {};
771
+ },
772
+ });
773
+ },
774
+ openUserInfo() {
775
+ this.showUserInfoDialog = true;
776
+ // this.showInfoIframeDialog = true;
777
+ },
778
+ userInfoReload() {
779
+ this.showUserInfoDialog = true;
780
+ },
781
+ showNav(route, event) {
782
+ if (!this.isMenu) return;
783
+ let id = route && route.id ? route.id : null;
784
+ if (id != null) {
785
+ if (!route.children || !route.children.length) {
786
+ return;
787
+ }
788
+ this.stopFlag = 1;
789
+ this.nowNavID = id;
790
+ this.$nextTick(() => {
791
+ var wh = window.innerHeight;
792
+ let dom = event.target;
793
+ let domAttr = dom.getBoundingClientRect();
794
+ // var sh1 = dom.offsetTop;
795
+ var sh1 = domAttr.top + 5;
796
+ let $snav = this.$refs["seconMenus" + id][0];
797
+ let snavAttr = $snav.getBoundingClientRect();
798
+
799
+ // var sh2 = $snav.outerHeight;
800
+ var sh2 = snavAttr.height;
801
+ var sh = wh - (sh1 + sh2);
802
+
803
+ var hd = 20;
804
+ var xhd = sh - hd; //移动距离+固定值
805
+ if (sh >= 0) {
806
+ $snav.style["margin-top"] = sh1 + "px";
807
+ } else if (sh < 0) {
808
+ let bd = sh1 + sh;
809
+
810
+ $snav.style["margin-top"] = bd + "px";
811
+ $snav.querySelector(".ico-arrow").style["margin-top"] =
812
+ sh1 - bd + "px";
813
+ }
814
+ });
815
+ } else {
816
+ this.stopFlag = 0;
817
+ setTimeout(() => {
818
+ if (this.stopFlag == 0) {
819
+ this.nowNavID = id;
820
+ }
821
+ }, 200);
822
+ }
823
+ },
824
+ jumpTo(row, firstRow) {
825
+ let route = firstRow.route ? "/" + firstRow.route : "";
826
+ if (route == WEB_PREFIX) {
827
+ this.$router.push({
828
+ path: row.path,
829
+ });
830
+ } else {
831
+ this.changeModules(firstRow, row);
832
+ }
833
+ },
834
+ toDownMove() {
835
+ let containter = document
836
+ .getElementById("menuUl")
837
+ .querySelector(".scrollbar-wrapper");
838
+ let menuscrollTop = containter.scrollTop;
839
+ let scrollHeight = containter.scrollHeight;
840
+ let val = menuscrollTop + this.eveyMenuHeight;
841
+ if (val < scrollHeight) {
842
+ containter.scrollTop = val;
843
+ } else {
844
+ containter.scrollTop = scrollHeight;
845
+ }
846
+ },
847
+ toUpMove() {
848
+ let containter = document
849
+ .getElementById("menuUl")
850
+ .querySelector(".scrollbar-wrapper");
851
+ let menuscrollTop = containter.scrollTop;
852
+ let val = menuscrollTop - this.eveyMenuHeight;
853
+ if (val > 0) {
854
+ containter.scrollTop = val;
855
+ } else {
856
+ containter.scrollTop = 0;
857
+ }
858
+ },
859
+ getMenuClass(menu, flag) {
860
+ let res = "";
861
+ if (menu.menuImg) {
862
+ res = "iconfont " + menu.menuImg;
863
+ } else if (flag == 1) {
864
+ res = "iconfont icon-jinggao"; //一级默认图标
865
+ } else if (flag == 2) {
866
+ res = "iconfont icon-circle"; //二级默认图标
867
+ } else if (flag == 3) {
868
+ res = "iconfont icon-thirdMemu"; //三级级默认图标
869
+ }
870
+
871
+ if (flag == 2) {
872
+ if (menu.id == this.nowNavID) {
873
+ res += " on";
874
+ }
875
+ }
876
+ return res;
877
+ },
878
+ openCreateCompanyDialog() {
879
+ this.showCreateCompanyDialog = true;
880
+ },
881
+ confirmCreateCompanyDialog() {
882
+ this.showCreateCompanyDialog = false;
883
+ },
884
+ },
885
+ };
886
+ </script>
887
+ <style lang="scss">
888
+ @import "~@base/styles/variables.scss";
889
+
890
+ .hamburger-box {
891
+ background-color: #0000004d;
892
+ height: 42px;
893
+ /* line-height: 30px; */
894
+ text-align: center;
895
+ /* box-shadow: 0 2px 6px rgb(0 0 0 / 10%); */
896
+ position: relative;
897
+ z-index: 2;
898
+ overflow: hidden;
899
+ font-size: 12px;
900
+ color: rgba(255, 255, 255, 0.65);
901
+
902
+ > div {
903
+ color: #fff;
904
+ font-size: 13px;
905
+ margin-bottom: 4px;
906
+ cursor: pointer;
907
+ height: 36px;
908
+ border-radius: 7px;
909
+ margin: 6px 10px 6px 8px;
910
+ overflow: hidden;
911
+ background: #2a6494;
912
+ }
913
+
914
+ p {
915
+ color: #fff;
916
+ font-size: 13px;
917
+ margin-bottom: 4px;
918
+ cursor: pointer;
919
+ /* border: solid 1px #ffffff61; */
920
+ display: block;
921
+ line-height: 27px;
922
+ /* width: 88%; */
923
+ margin-top: 6px;
924
+ border-radius: 7px;
925
+ margin: 6px 10px 6px 8px;
926
+ background: #2a6494;
927
+
928
+ i {
929
+ font-size: 14px;
930
+ vertical-align: middle;
931
+ margin: 0 4px 0 6px;
932
+ height: 36px;
933
+ line-height: 36px;
934
+ width: 21px;
935
+ }
936
+
937
+ span {
938
+ width: 94px;
939
+ display: table-cell;
940
+ height: 32px;
941
+ word-break: break-word;
942
+ line-height: 16px;
943
+ overflow: hidden;
944
+ vertical-align: middle;
945
+ white-space: nowrap;
946
+ }
947
+
948
+ &.name {
949
+ display: table-row;
950
+ margin: 0;
951
+ }
952
+ }
953
+ }
954
+
955
+ .business-name {
956
+ height: 47px;
957
+ color: #ffffffb8;
958
+ background: #0000004d;
959
+ /* padding-top: 12px; */
960
+ font-size: 12px;
961
+ /* padding-left: 5px; */
962
+ display: table-cell;
963
+ vertical-align: middle;
964
+ width: 140px;
965
+ padding: 6px 10px;
966
+ text-align: center;
967
+
968
+ p {
969
+ margin: 0;
970
+ display: -webkit-box;
971
+ overflow: hidden;
972
+ text-overflow: ellipsis;
973
+ -webkit-line-clamp: 2;
974
+ -webkit-box-orient: vertical;
975
+ }
976
+ }
977
+
978
+ .fase-box {
979
+ color: #fff;
980
+ /* border-bottom: solid 1px rgba(255, 255, 255, 0.12); */
981
+ border-top: solid 1px rgba(255, 255, 255, 0.12);
982
+ background: #225076;
983
+ padding: 4px 0 8px;
984
+ width: 100%;
985
+ z-index: 999;
986
+ position: relative;
987
+ /* display: flex;*/
988
+ //text-align: left !important;
989
+ // &:hover {
990
+ // color: $baseColor;
991
+ // background-color: #fbfdfe;
992
+ // .fase-list {
993
+ // display: block;
994
+ // }
995
+ // }
996
+ .item {
997
+ flex: 1;
998
+ text-align: center;
999
+ font-size: 16px;
1000
+ height: 40px;
1001
+ line-height: 40px;
1002
+ cursor: pointer;
1003
+ display: inline-block;
1004
+ min-width: 30px;
1005
+ }
1006
+
1007
+ .fase-list {
1008
+ position: absolute;
1009
+ left: 100%;
1010
+ color: $baseColor;
1011
+ background-color: #fbfdfe;
1012
+ border: solid 1px $baseColor;
1013
+ border-left: none;
1014
+ top: -0.5px;
1015
+ padding: 10px 0 10px 24px;
1016
+ height: 43px;
1017
+ width: 413px;
1018
+ display: none;
1019
+
1020
+ .l-item {
1021
+ display: inline-block;
1022
+ font-size: 12px;
1023
+ margin-right: 36px;
1024
+ line-height: 20px;
1025
+ cursor: pointer;
1026
+
1027
+ i {
1028
+ vertical-align: middle;
1029
+ margin-right: 4px;
1030
+ font-size: 15px;
1031
+ margin-bottom: 2px;
1032
+ }
1033
+
1034
+ &:hover {
1035
+ border-bottom: solid 1px $baseColor;
1036
+ }
1037
+ }
1038
+ }
1039
+ }
1040
+
1041
+ .openSidebar .fase-box {
1042
+ text-align: center;
1043
+ //padding: 0;
1044
+ }
1045
+
1046
+ #app .sidebar-container {
1047
+ overflow: visible;
1048
+ z-index: 1003;
1049
+
1050
+ &.hover {
1051
+ z-index: 1003;
1052
+ }
1053
+
1054
+ &.hover1 .fase-box {
1055
+ width: 138px;
1056
+ color: $baseColor;
1057
+ background-color: #fbfdfe;
1058
+ border-color: $baseColor;
1059
+ }
1060
+
1061
+ .el-menu.menu-box {
1062
+ height: calc(100vh - 173px);
1063
+ font-size: 13px;
1064
+ z-index: -1;
1065
+ position: relative;
1066
+ background-color: rgba(0, 0, 0, 0.2);
1067
+ word-break: break-word;
1068
+ .el-scrollbar__view > {
1069
+ .el-menu-item {
1070
+ padding: 0 11px !important;
1071
+ span {
1072
+ font-size: 14px;
1073
+ }
1074
+ }
1075
+ .el-submenu > .el-submenu__title {
1076
+ padding: 0 11px !important;
1077
+ span {
1078
+ font-size: 14px;
1079
+ }
1080
+ ~ .el-menu {
1081
+ padding: 5px 0;
1082
+ display: grid;
1083
+ > .el-menu-item {
1084
+ span {
1085
+ line-height: 1.4;
1086
+ height: 26px;
1087
+ }
1088
+ }
1089
+ .el-submenu.is-opened .el-submenu__title {
1090
+ background-color: #fff;
1091
+ opacity: 1;
1092
+ span {
1093
+ color: $baseColor;
1094
+ }
1095
+ i.iconfont {
1096
+ color: $baseColor;
1097
+ }
1098
+ }
1099
+ }
1100
+ }
1101
+ }
1102
+ .el-submenu__title,
1103
+ .el-menu-item {
1104
+ padding: 0 11px;
1105
+ height: 48px;
1106
+ line-height: 48px;
1107
+ overflow: hidden;
1108
+ &:hover,
1109
+ &.is-active {
1110
+ background-color: rgba(0, 0, 0, 0.29);
1111
+ }
1112
+ i {
1113
+ color: #fff;
1114
+ font-size: 13px;
1115
+ margin-right: 0;
1116
+ width: 18px;
1117
+
1118
+ &.iconfont {
1119
+ margin-right: 5px;
1120
+ font-size: 18px;
1121
+ float: left;
1122
+ }
1123
+
1124
+ &.el-submenu__icon-arrow {
1125
+ right: 3px;
1126
+ text-align: center;
1127
+ font-size: 12px;
1128
+ margin-top: -5px;
1129
+ display: none;
1130
+ }
1131
+ }
1132
+
1133
+ > span {
1134
+ height: 48px;
1135
+ display: table-cell;
1136
+ width: 114px;
1137
+ vertical-align: middle;
1138
+ font-size: 13px;
1139
+ white-space: normal;
1140
+ line-height: 16px;
1141
+ }
1142
+ }
1143
+
1144
+ .el-submenu {
1145
+ overflow: hidden; //有点电脑分辨率问题
1146
+
1147
+ &.is-opened .el-submenu__title {
1148
+ //background-color: rgba(27, 66, 97) !important;
1149
+ }
1150
+ .el-submenu .el-menu {
1151
+ display: none;
1152
+ }
1153
+ }
1154
+
1155
+ .el-submenu {
1156
+ &.is-opened {
1157
+ > .el-submenu__title {
1158
+ background-color: rgba(0, 0, 0, 0.29);
1159
+ }
1160
+ }
1161
+ .el-menu {
1162
+ background: rgba(0, 0, 0, 0.35);
1163
+ box-shadow: 0px -5px 8px #00000014 inset;
1164
+ //padding:4px 0;
1165
+ .el-submenu__title {
1166
+ height: auto;
1167
+ line-height: 1.4;
1168
+ font-size: 12px;
1169
+ opacity: 0.8;
1170
+ margin: 5px 0 5px 14px;
1171
+ padding: 7px 2px 7px 33px !important;
1172
+ border-radius: 8px;
1173
+ text-align: left;
1174
+ min-width: 81px;
1175
+ white-space: normal;
1176
+ margin-right: 10px;
1177
+ word-break: break-word;
1178
+ i.iconfont {
1179
+ position: absolute;
1180
+ top: 50%;
1181
+ height: 20px;
1182
+ margin-top: -10px;
1183
+ line-height: 20px;
1184
+ left: 7px;
1185
+ font-size: 18px;
1186
+ }
1187
+
1188
+ [class^="el-icon-"] {
1189
+ font-size: 12px;
1190
+ color: #fff;
1191
+ position: absolute;
1192
+ right: 2px;
1193
+ top: 50%;
1194
+ margin-top: -5px;
1195
+ width: 14px;
1196
+ zoom: 0.8;
1197
+ display: none;
1198
+ }
1199
+ span {
1200
+ height: auto;
1201
+ text-align: left !important;
1202
+ }
1203
+ &:hover,
1204
+ &.on {
1205
+ opacity: 1;
1206
+ background-color: #fbfdfe !important;
1207
+ color: $baseColor !important;
1208
+ i.iconfont {
1209
+ color: $baseColor;
1210
+ }
1211
+ .el-icon-arrow-right {
1212
+ color: $baseColor;
1213
+ }
1214
+ }
1215
+ }
1216
+ }
1217
+
1218
+ .el-menu-item {
1219
+ height: auto;
1220
+ line-height: 1.4;
1221
+ padding-left: 33px !important;
1222
+ font-size: 12px;
1223
+ opacity: 0.8;
1224
+ margin: 5px 0 5px 14px;
1225
+ padding: 2px 2px 2px 0px;
1226
+ border-radius: 8px;
1227
+ text-align: left;
1228
+ min-width: 81px !important;
1229
+ white-space: normal;
1230
+ margin-right: 10px;
1231
+ word-break: break-word;
1232
+
1233
+ i.iconfont {
1234
+ position: absolute;
1235
+ top: 50%;
1236
+ height: 20px;
1237
+ margin-top: -10px;
1238
+ line-height: 20px;
1239
+ left: 7px;
1240
+ font-size: 18px;
1241
+ color: #d0d6db;
1242
+ }
1243
+
1244
+ [class^="el-icon-"] {
1245
+ font-size: 12px;
1246
+ color: #fff;
1247
+ position: absolute;
1248
+ right: 2px;
1249
+ top: 50%;
1250
+ margin-top: -5px;
1251
+ width: 14px;
1252
+ zoom: 0.8;
1253
+ display: none;
1254
+ }
1255
+
1256
+ &:hover,
1257
+ &.on {
1258
+ opacity: 1;
1259
+ background-color: #fbfdfe !important;
1260
+ color: $baseColor !important;
1261
+
1262
+ .el-icon-arrow-right,
1263
+ i.iconfont {
1264
+ color: $baseColor;
1265
+ }
1266
+ }
1267
+ }
1268
+ }
1269
+
1270
+ &.lang-zh {
1271
+ font-size: 14px;
1272
+
1273
+ .el-submenu {
1274
+ .el-submenu__title {
1275
+ > span {
1276
+ text-align: center;
1277
+ }
1278
+
1279
+ i.iconfont {
1280
+ margin-right: 2px;
1281
+ }
1282
+ }
1283
+
1284
+ .el-menu-item {
1285
+ font-size: 13px;
1286
+ }
1287
+ }
1288
+ }
1289
+ }
1290
+ }
1291
+
1292
+ .main-container {
1293
+ z-index: 1002;
1294
+ }
1295
+
1296
+ .menu-btn {
1297
+ background-color: #0000001c;
1298
+ height: 30px;
1299
+ line-height: 30px;
1300
+ text-align: center;
1301
+ box-shadow: 0 -10px 6px rgb(0 0 0 / 10%);
1302
+ display: flex;
1303
+ color: #fff;
1304
+ font-size: 16px;
1305
+
1306
+ i {
1307
+ display: inline-block;
1308
+ flex: 1;
1309
+ line-height: 30px;
1310
+ cursor: pointer;
1311
+ border-right: solid 1px rgba(0, 0, 0, 0.2);
1312
+
1313
+ &:last-child {
1314
+ border-right: none;
1315
+ }
1316
+
1317
+ &:hover {
1318
+ background-color: rgba(255, 255, 255, 0.12);
1319
+ }
1320
+ }
1321
+ }
1322
+
1323
+ /*.menu-box {
1324
+ background-color: #0000002e !important;
1325
+ font-size: 14px;
1326
+ z-index: -1;
1327
+ position: relative;
1328
+ &.hover .el-scrollbar {
1329
+ width: 1000px;
1330
+ }
1331
+ .el-scrollbar {
1332
+ .el-scrollbar__view {
1333
+ padding-top: 1px;
1334
+ }
1335
+ .el-scrollbar__bar.is-vertical {
1336
+ left: 104px;
1337
+ }
1338
+ }
1339
+ .first-item {
1340
+ position: relative;
1341
+ width: 104px;
1342
+ &:nth-child(-n + 6) .second-list {
1343
+ bottom: inherit !important;
1344
+ top: -40.5px !important;
1345
+ }
1346
+ &:nth-child(1) .second-list {
1347
+ top: 0 !important;
1348
+ }
1349
+ &:nth-last-child(-n + 6) .second-list {
1350
+ bottom: -1%;
1351
+ top: inherit;
1352
+ }
1353
+ .f-name {
1354
+ height: 55px;
1355
+ line-height: 55px;
1356
+ padding-left: 9px;
1357
+ color: #fff;
1358
+ cursor: pointer;
1359
+ position: relative;
1360
+ padding-right: 6px;
1361
+ -webkit-transition: all 0.2s ease-in;
1362
+ -moz-transition: all 0.2s ease-in;
1363
+ -o-transition: all 0.2s ease-in;
1364
+ transition: all 0.2s ease-in;
1365
+ width: 104px;
1366
+ i.el-icon-arrow-right {
1367
+ position: absolute;
1368
+ right: 3px;
1369
+ top: 21.5px;
1370
+ width: 14px;
1371
+ height: 14px;
1372
+ }
1373
+ .el-icon-s-opportunity {
1374
+ opacity: 0.92;
1375
+ font-size: 13px;
1376
+ vertical-align: middle;
1377
+ margin-right: 2px;
1378
+ }
1379
+ span{display: inline-block;width: calc(100% - 20px);vertical-align: middle;line-height: 1.2;}
1380
+ }
1381
+
1382
+ &:hover,
1383
+ &.current {
1384
+ .f-name {
1385
+ background-color: #fbfdfe;
1386
+ color: $baseColor;
1387
+ }
1388
+ .second-list {
1389
+ display: block;
1390
+ }
1391
+ }
1392
+ }
1393
+ }
1394
+
1395
+
1396
+ */
1397
+ .second-list {
1398
+ display: none;
1399
+ position: absolute;
1400
+ left: $sideBarWidth;
1401
+ padding-left: 2px;
1402
+ top: 0.5px;
1403
+ // &:before {
1404
+ // content: "";
1405
+ // top: 22px;
1406
+ // bottom: 22px;
1407
+ // background-color: $baseColor;
1408
+ // width: 2px;
1409
+ // position: absolute;
1410
+ // left: 24px;
1411
+ // }
1412
+ > div {
1413
+ background: #fbfdfe;
1414
+ border: solid 1px $baseColor;
1415
+ top: -0.5px;
1416
+ padding: 24px 0;
1417
+ border-radius: 8px;
1418
+ margin-left: 9px;
1419
+ max-height: calc(84vh);
1420
+ overflow-y: auto;
1421
+ overflow-x: hidden;
1422
+ width: 458px;
1423
+ }
1424
+
1425
+ .ico-arrow {
1426
+ border-top: solid 7px transparent;
1427
+ border-bottom: solid 7px transparent;
1428
+ border-right: solid 7px $baseColor;
1429
+ position: absolute;
1430
+ left: 2px;
1431
+ top: 8px;
1432
+ }
1433
+
1434
+ &.on {
1435
+ display: block;
1436
+ }
1437
+
1438
+ .tit {
1439
+ width: auto;
1440
+ /* text-align: center; */
1441
+ /* background: #22507614; */
1442
+ color: $baseColor;
1443
+ /* border: dashed 1px #1d4667; */
1444
+ padding: 0 0 10px;
1445
+ /* border-radius: 6px; */
1446
+ /* margin: 5px auto; */
1447
+ margin: 0 22px;
1448
+ display: block;
1449
+ border-bottom: solid 1px #eee;
1450
+
1451
+ i,
1452
+ span {
1453
+ opacity: 1;
1454
+ vertical-align: middle;
1455
+ margin-right: 7px;
1456
+ font-size: 18px;
1457
+ }
1458
+
1459
+ span {
1460
+ font-size: 14px;
1461
+ }
1462
+ }
1463
+
1464
+ dl {
1465
+ padding: 8px 16px 3px 24px;
1466
+ margin-top: 0;
1467
+ margin-bottom: 0;
1468
+ display: inline-block;
1469
+ width: 50%;
1470
+ position: relative;
1471
+ word-break: break-all;
1472
+
1473
+ &:after {
1474
+ content: "";
1475
+ width: 1px;
1476
+ height: 14px;
1477
+ background: #e4e4e4;
1478
+ display: inline-block;
1479
+ position: absolute;
1480
+ right: -5px;
1481
+ top: 50%;
1482
+ margin-top: -3px;
1483
+ }
1484
+
1485
+ .s-name {
1486
+ color: $baseColor;
1487
+ display: inline-block;
1488
+ width: 190px;
1489
+ font-size: 14px;
1490
+ vertical-align: top;
1491
+ margin-top: 11px;
1492
+ text-align: right;
1493
+
1494
+ i {
1495
+ margin-left: 5px;
1496
+
1497
+ &.icon {
1498
+ font-size: 13px;
1499
+ opacity: 0.92;
1500
+ margin-left: 2px;
1501
+ margin-right: 4px;
1502
+ }
1503
+ }
1504
+ }
1505
+
1506
+ .item {
1507
+ position: relative;
1508
+ border: dashed 1px #fff;
1509
+ border-radius: 6px;
1510
+ display: block;
1511
+ padding: 6px 8px 6px 27px;
1512
+ cursor: pointer;
1513
+
1514
+ &:hover {
1515
+ border-color: $baseColor;
1516
+ color: $baseColor;
1517
+
1518
+ i,
1519
+ a {
1520
+ color: $baseColor;
1521
+ }
1522
+ }
1523
+
1524
+ // &:after {
1525
+ // content: "";
1526
+ // width: 1px;
1527
+ // height: 12px;
1528
+ // background: #dcdcdc;
1529
+ // position: absolute;
1530
+ // right: -25px;
1531
+ // top: 2px
1532
+ // }
1533
+
1534
+ i {
1535
+ opacity: 0.8;
1536
+ margin-right: 8px;
1537
+ vertical-align: middle;
1538
+ position: absolute;
1539
+ left: 4px;
1540
+ top: 50%;
1541
+ margin-top: -11px;
1542
+ height: 22px;
1543
+ line-height: 22px;
1544
+ font-size: 16px;
1545
+ }
1546
+
1547
+ a {
1548
+ color: rgba(0, 0, 0, 0.82);
1549
+ display: inline-block;
1550
+ font-size: 13px;
1551
+ position: relative;
1552
+ overflow: initial !important;
1553
+ -webkit-transition: all 0.2s ease-in;
1554
+ -moz-transition: all 0.2s ease-in;
1555
+ -o-transition: all 0.2s ease-in;
1556
+ transition: all 0.2s ease-in;
1557
+ width: auto !important;
1558
+ vertical-align: middle;
1559
+ word-break: break-word;
1560
+
1561
+ &:hover {
1562
+ color: $baseColor;
1563
+
1564
+ // &:after {
1565
+ // content: '';
1566
+ // position: absolute;
1567
+ // bottom: -4px;
1568
+ // left: 0;
1569
+ // right: 0;
1570
+ // border-bottom: solid 1px $baseColor;
1571
+ // }
1572
+ }
1573
+ }
1574
+ }
1575
+
1576
+ &:last-child {
1577
+ .list-box {
1578
+ border-bottom: none;
1579
+ }
1580
+ }
1581
+ }
1582
+ }
1583
+ // .el-submenu .el-menu {
1584
+ // height: auto !important;
1585
+ // }
1586
+ .el-menu--vertical {
1587
+ > .el-menu--popup {
1588
+ overflow: auto; //不用atuo 超出不出滚动条
1589
+ .el-submenu__title,
1590
+ .el-menu-item {
1591
+ height: auto !important;
1592
+ line-height: 1.4 !important;
1593
+ padding: 8px 0;
1594
+ text-align: left;
1595
+ white-space: normal;
1596
+ word-break: break-word;
1597
+ background: none;
1598
+ i.iconfont {
1599
+ color: #fff;
1600
+ margin-right: 8px;
1601
+ }
1602
+ }
1603
+ }
1604
+ .el-submenu {
1605
+ .el-submenu__title {
1606
+ .el-submenu__icon-arrow {
1607
+ display: none;
1608
+ }
1609
+ }
1610
+ &:hover {
1611
+ .el-submenu__title {
1612
+ background-color: rgba(0, 0, 0, 0.29) !important;
1613
+ i.iconfont {
1614
+ color: $baseColor;
1615
+ }
1616
+ }
1617
+ }
1618
+
1619
+ &.is-opened {
1620
+ .el-submenu__title {
1621
+ background-color: rgba(0, 0, 0, 0.29) !important;
1622
+ i.iconfont {
1623
+ color: $baseColor;
1624
+ }
1625
+ }
1626
+ }
1627
+ }
1628
+ .el-menu-item {
1629
+ &:hover {
1630
+ background-color: rgba(0, 0, 0, 0.29) !important;
1631
+ i.iconfont {
1632
+ color: $baseColor;
1633
+ }
1634
+ }
1635
+
1636
+ &.is-opened {
1637
+ background-color: rgba(0, 0, 0, 0.29) !important;
1638
+ i.iconfont {
1639
+ color: $baseColor;
1640
+ }
1641
+ }
1642
+ }
1643
+ // .el-menu-item{
1644
+ // &:hover{
1645
+ // background:#FFF !important;opacity:1;
1646
+ // span{color:$baseColor}
1647
+ // i.iconfont{color:$baseColor}
1648
+ // }
1649
+ // &.is-opened{
1650
+ // background:#FFF;opacity:1;
1651
+ // span{color:$baseColor}
1652
+ // i.iconfont{color:$baseColor}
1653
+ // }
1654
+ // }
1655
+ }
1656
+ </style>