vue2-client 0.1.1 → 1.2.0

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 (394) hide show
  1. package/.editorconfig +9 -0
  2. package/.env +14 -0
  3. package/.env.development +1 -0
  4. package/.eslintrc.js +81 -0
  5. package/.eslintrc.json +5 -0
  6. package/README.md +56 -36
  7. package/babel.config.js +14 -5
  8. package/docs/index.md +29 -0
  9. package/index.js +28 -35
  10. package/jest.config.js +3 -0
  11. package/package.json +68 -22
  12. package/public/index.html +27 -17
  13. package/src/App.vue +93 -0
  14. package/src/assets/img/alipay.png +0 -0
  15. package/src/assets/img/defect.png +0 -0
  16. package/src/assets/img/error.png +0 -0
  17. package/src/assets/img/logo.png +0 -0
  18. package/src/assets/img/preview-nine.png +0 -0
  19. package/src/assets/img/preview.png +0 -0
  20. package/src/assets/img/success.png +0 -0
  21. package/src/assets/img/success1.png +0 -0
  22. package/src/assets/img/wechatpay.png +0 -0
  23. package/src/base-client/all.js +57 -0
  24. package/src/base-client/components/common/CreateQuery/CreateQuery.vue +1159 -0
  25. package/src/base-client/components/common/CreateQuery/index.js +3 -0
  26. package/src/base-client/components/common/CreateQuery/index.md +42 -0
  27. package/src/base-client/components/common/CreateSimpleFormQuery/CreateSimpleFormQuery.vue +540 -0
  28. package/src/base-client/components/common/CreateSimpleFormQuery/index.js +3 -0
  29. package/src/base-client/components/common/CreateSimpleFormQuery/index.md +42 -0
  30. package/src/{components → base-client/components/common}/CustomColumnsDrawer/CustomColumnsDrawer.vue +21 -15
  31. package/src/{components → base-client/components/common}/CustomColumnsDrawer/index.js +0 -0
  32. package/src/{components → base-client/components/common}/CustomColumnsDrawer/index.md +46 -46
  33. package/src/base-client/components/common/FormGroupEdit/FormGroupEdit.vue +150 -0
  34. package/src/base-client/components/common/FormGroupEdit/index.js +3 -0
  35. package/src/base-client/components/common/FormGroupEdit/index.md +43 -0
  36. package/src/base-client/components/common/FormGroupQuery/FormGroupQuery.vue +163 -0
  37. package/src/base-client/components/common/FormGroupQuery/index.js +3 -0
  38. package/src/base-client/components/common/FormGroupQuery/index.md +43 -0
  39. package/src/base-client/components/common/JSONToTree/index.js +3 -0
  40. package/src/base-client/components/common/JSONToTree/jsontotree.vue +275 -0
  41. package/src/base-client/components/common/XAddForm/XAddForm.vue +323 -0
  42. package/src/base-client/components/common/XAddForm/index.js +3 -0
  43. package/src/base-client/components/common/XAddForm/index.md +60 -0
  44. package/src/base-client/components/common/XBadge/XBadge.vue +61 -0
  45. package/src/base-client/components/common/XBadge/index.js +3 -0
  46. package/src/base-client/components/common/XBadge/index.md +39 -0
  47. package/src/base-client/components/common/XCard/XCard.vue +59 -0
  48. package/src/base-client/components/common/XCard/index.js +3 -0
  49. package/src/base-client/components/common/XCard/index.md +43 -0
  50. package/src/base-client/components/common/XForm/XForm.vue +275 -0
  51. package/src/base-client/components/common/XForm/XFormItem.vue +217 -0
  52. package/src/base-client/components/common/XForm/index.js +3 -0
  53. package/src/base-client/components/common/XForm/index.md +196 -0
  54. package/src/{components/FormItem/FormItem.vue → base-client/components/common/XFormCol/XFormCol.vue} +16 -14
  55. package/src/base-client/components/common/XFormCol/index.js +3 -0
  56. package/src/{components/FormItem → base-client/components/common/XFormCol}/index.md +35 -35
  57. package/src/base-client/components/common/XFormTable/XFormTable.vue +405 -0
  58. package/src/base-client/components/common/XFormTable/index.js +3 -0
  59. package/src/base-client/components/common/XFormTable/index.md +89 -0
  60. package/src/base-client/components/common/XTable/XTable.vue +262 -0
  61. package/src/base-client/components/common/XTable/index.js +3 -0
  62. package/src/base-client/components/common/XTable/index.md +255 -0
  63. package/src/base-client/components/common/XTreeOne/XTreeOne.vue +105 -0
  64. package/src/base-client/components/common/XTreeOne/index.js +3 -0
  65. package/src/base-client/components/iot/CustomerDetailsView/CustomerDetailsView.vue +226 -0
  66. package/src/base-client/components/iot/CustomerDetailsView/index.js +3 -0
  67. package/src/base-client/components/iot/CustomerDetailsView/index.md +41 -0
  68. package/src/base-client/components/iot/DataAnalysisUser/DataAnalysisUser.vue +127 -0
  69. package/src/base-client/components/iot/DataAnalysisUser/index.js +3 -0
  70. package/src/base-client/components/iot/DataAnalysisView/DataAnalysisView.vue +250 -0
  71. package/src/base-client/components/iot/DataAnalysisView/index.js +3 -0
  72. package/src/base-client/components/iot/DataAnalysisViewGD/DataAnalysisViewGD.vue +548 -0
  73. package/src/base-client/components/iot/DataAnalysisViewGD/WindowTemplate/WindowInfotemp.vue +99 -0
  74. package/src/base-client/components/iot/DataAnalysisViewGD/WindowTemplate/index.js +3 -0
  75. package/src/base-client/components/iot/DataAnalysisViewGD/index.js +3 -0
  76. package/src/base-client/components/iot/DeviceBrandDetailsView/DeviceBrandDetailsView.vue +453 -0
  77. package/src/base-client/components/iot/DeviceBrandDetailsView/index.js +3 -0
  78. package/src/base-client/components/iot/DeviceDetailsView/DeviceDetailsView.vue +231 -0
  79. package/src/base-client/components/iot/DeviceDetailsView/index.js +3 -0
  80. package/src/base-client/components/iot/DeviceDetailsView/index.md +43 -0
  81. package/src/base-client/components/iot/DeviceDetailsView/part/DeviceDetailsCount.vue +330 -0
  82. package/src/base-client/components/iot/DeviceDetailsView/part/DeviceDetailsException.vue +57 -0
  83. package/src/base-client/components/iot/DeviceDetailsView/part/DeviceDetailsInstruct.vue +122 -0
  84. package/src/base-client/components/iot/DeviceDetailsView/part/DeviceDetailsInstructOperate.vue +122 -0
  85. package/src/base-client/components/iot/DeviceDetailsView/part/DeviceDetailsMain.vue +225 -0
  86. package/src/base-client/components/iot/DeviceDetailsView/part/DeviceDetailsRead.vue +135 -0
  87. package/src/base-client/components/iot/DeviceDetailsView/part/index.js +8 -0
  88. package/src/base-client/components/iot/DeviceTypeDetailsView/DeviceTypeDetailsView.vue +277 -0
  89. package/src/base-client/components/iot/DeviceTypeDetailsView/index.js +3 -0
  90. package/src/base-client/components/iot/InstructDetailsView/InstructDetailsView.vue +472 -0
  91. package/src/{components → base-client/components/iot}/InstructDetailsView/index.js +0 -0
  92. package/src/base-client/components/iot/InstructDetailsView/index.md +45 -0
  93. package/src/base-client/components/iot/LogDetailsView/LogDetailsView.vue +380 -0
  94. package/src/base-client/components/iot/LogDetailsView/index.js +3 -0
  95. package/src/base-client/components/iot/LogDetailsView/index.md +43 -0
  96. package/src/base-client/components/iot/MeterDetailsView/MeterDetailsView.vue +360 -0
  97. package/src/{components → base-client/components/iot}/MeterDetailsView/index.js +0 -0
  98. package/src/base-client/components/iot/MeterDetailsView/index.md +43 -0
  99. package/src/{components → base-client/components/iot}/MeterDetailsView/part/MeterDetailsCount.vue +335 -381
  100. package/src/{components → base-client/components/iot}/MeterDetailsView/part/MeterDetailsException.vue +185 -204
  101. package/src/{components → base-client/components/iot}/MeterDetailsView/part/MeterDetailsHandPlan.vue +292 -320
  102. package/src/{components → base-client/components/iot}/MeterDetailsView/part/MeterDetailsInstruct.vue +237 -278
  103. package/src/{components → base-client/components/iot}/MeterDetailsView/part/MeterDetailsMain.vue +257 -247
  104. package/src/{components → base-client/components/iot}/MeterDetailsView/part/MeterDetailsSellGas.vue +190 -211
  105. package/src/base-client/components/iot/MeterDetailsView/part/index.js +9 -0
  106. package/src/base-client/components/iot/WebmeterAnalysisView/WebmeterAnalysisView.vue +723 -0
  107. package/src/base-client/components/iot/WebmeterAnalysisView/index.js +3 -0
  108. package/src/base-client/components/iot/WebmeterAnalysisView/index.md +48 -0
  109. package/src/base-client/components/system/DictionaryDetailsView/DictionaryDetailsView.vue +232 -0
  110. package/src/base-client/components/system/DictionaryDetailsView/index.js +3 -0
  111. package/src/base-client/components/system/DictionaryDetailsView/index.md +41 -0
  112. package/src/base-client/components/system/QueryParamsDetailsView/QueryParamsDetailsView.vue +248 -0
  113. package/src/base-client/components/system/QueryParamsDetailsView/index.js +3 -0
  114. package/src/base-client/components/ticket/EmployeeDetailsView/EmployeeDetailsView.vue +406 -0
  115. package/src/base-client/components/ticket/EmployeeDetailsView/index.js +3 -0
  116. package/src/base-client/components/ticket/EmployeeDetailsView/index.md +28 -0
  117. package/src/base-client/components/ticket/TicketDetailsView/TicketDetailsView.vue +486 -0
  118. package/src/base-client/components/ticket/TicketDetailsView/index.js +3 -0
  119. package/src/base-client/components/ticket/TicketDetailsView/index.md +29 -0
  120. package/src/base-client/components/ticket/TicketDetailsView/part/TicketDetailsFlow.vue +184 -0
  121. package/src/base-client/components/ticket/TicketDetailsView/part/index.js +3 -0
  122. package/src/base-client/components/ticket/TicketSubmitSuccessView/TicketSubmitSuccessView.vue +303 -0
  123. package/src/base-client/components/ticket/TicketSubmitSuccessView/index.js +3 -0
  124. package/src/base-client/components/ticket/TicketSubmitSuccessView/index.md +29 -0
  125. package/src/base-client/plugins/AppData.js +69 -0
  126. package/src/{plugins → base-client/plugins}/Config.js +1 -1
  127. package/src/base-client/plugins/GetLoginInfoService.js +221 -0
  128. package/src/{plugins → base-client/plugins}/PagedList.js +0 -0
  129. package/src/base-client/plugins/authority-plugin.js +167 -0
  130. package/src/base-client/plugins/i18n-extend.js +32 -0
  131. package/src/base-client/plugins/index.js +21 -0
  132. package/src/{plugins → base-client/plugins}/moment.js +8 -8
  133. package/src/base-client/plugins/tabs-page-plugin.js +38 -0
  134. package/src/bootstrap.js +27 -0
  135. package/src/components/Charts/Bar.vue +62 -0
  136. package/src/components/Charts/ChartCard.vue +120 -0
  137. package/src/components/Charts/DataUserOrderSituation.vue +77 -0
  138. package/src/components/Charts/DataUserReporting.vue +74 -0
  139. package/src/components/Charts/DataUserSituation.vue +107 -0
  140. package/src/components/Charts/Liquid.vue +67 -0
  141. package/src/components/Charts/MiniArea.vue +39 -0
  142. package/src/components/Charts/MiniBar.vue +39 -0
  143. package/src/components/Charts/MiniProgress.vue +75 -0
  144. package/src/components/Charts/MiniSmoothArea.vue +40 -0
  145. package/src/components/Charts/Radar.vue +68 -0
  146. package/src/components/Charts/RankList.vue +77 -0
  147. package/src/components/Charts/TagCloud.vue +113 -0
  148. package/src/components/Charts/TransferBar.vue +64 -0
  149. package/src/components/Charts/Trend.vue +82 -0
  150. package/src/components/Charts/chart.less +13 -0
  151. package/src/components/Charts/smooth.area.less +14 -0
  152. package/src/components/Ellipsis/Ellipsis.vue +64 -0
  153. package/src/components/Ellipsis/index.js +3 -0
  154. package/src/components/Ellipsis/index.md +38 -0
  155. package/src/components/NumberInfo/NumberInfo.vue +54 -0
  156. package/src/components/NumberInfo/index.js +3 -0
  157. package/src/components/NumberInfo/index.less +55 -0
  158. package/src/components/NumberInfo/index.md +43 -0
  159. package/src/components/STable/README.md +341 -0
  160. package/src/components/STable/index.js +316 -0
  161. package/src/components/Trend/Trend.vue +41 -0
  162. package/src/components/Trend/index.js +3 -0
  163. package/src/components/Trend/index.less +42 -0
  164. package/src/components/Trend/index.md +45 -0
  165. package/src/components/_util/util.js +46 -0
  166. package/src/components/cache/AKeepAlive.js +172 -0
  167. package/src/components/card/ChartCard.vue +79 -0
  168. package/src/components/chart/Bar.vue +60 -0
  169. package/src/components/chart/MiniArea.vue +67 -0
  170. package/src/components/chart/MiniBar.vue +59 -0
  171. package/src/components/chart/MiniProgress.vue +57 -0
  172. package/src/components/chart/Radar.vue +80 -0
  173. package/src/components/chart/RankingList.vue +60 -0
  174. package/src/components/chart/Trend.vue +79 -0
  175. package/src/components/chart/index.less +9 -0
  176. package/src/components/checkbox/ColorCheckbox.vue +157 -0
  177. package/src/components/checkbox/ImgCheckbox.vue +163 -0
  178. package/src/components/checkbox/index.js +7 -0
  179. package/src/components/dataAnalysisView/UserData.vue +61 -0
  180. package/src/components/exception/ExceptionPage.vue +70 -0
  181. package/src/components/exception/typeConfig.js +19 -0
  182. package/src/components/form/FormRow.vue +52 -0
  183. package/src/components/index.js +36 -0
  184. package/src/components/index.less +6 -0
  185. package/src/components/input/IInput.vue +66 -0
  186. package/src/components/menu/Contextmenu.vue +84 -0
  187. package/src/components/menu/SideMenu.vue +62 -0
  188. package/src/components/menu/index.less +38 -0
  189. package/src/components/menu/menu.js +273 -0
  190. package/src/components/page/header/PageHeader.vue +64 -0
  191. package/src/components/page/header/index.less +40 -0
  192. package/src/components/result/Result.vue +77 -0
  193. package/src/components/setting/Setting.vue +237 -0
  194. package/src/components/setting/SettingItem.vue +26 -0
  195. package/src/components/setting/i18n.js +117 -0
  196. package/src/components/table/StandardTable.vue +142 -0
  197. package/src/components/table/advance/ActionColumns.vue +158 -0
  198. package/src/components/table/advance/ActionSize.vue +45 -0
  199. package/src/components/table/advance/AdvanceTable.vue +275 -0
  200. package/src/components/table/advance/SearchArea.vue +355 -0
  201. package/src/components/table/advance/index.js +2 -0
  202. package/src/components/table/api/ApiTable.vue +50 -0
  203. package/src/components/task/TaskGroup.vue +80 -0
  204. package/src/components/task/TaskItem.vue +26 -0
  205. package/src/components/tool/AStepItem.vue +60 -0
  206. package/src/components/tool/AvatarList.vue +69 -0
  207. package/src/components/tool/DetailList.vue +157 -0
  208. package/src/components/tool/Drawer.vue +142 -0
  209. package/src/components/tool/FooterToolBar.vue +30 -0
  210. package/src/components/tool/HeadInfo.vue +35 -0
  211. package/src/components/tool/TagSelect.vue +83 -0
  212. package/src/components/tool/TagSelectOption.vue +33 -0
  213. package/src/components/transition/PageToggleTransition.vue +97 -0
  214. package/src/config/config.js +13 -0
  215. package/src/config/default/admin.config.js +18 -0
  216. package/src/config/default/animate.config.js +21 -0
  217. package/src/config/default/antd.config.js +84 -0
  218. package/src/config/default/index.js +6 -0
  219. package/src/config/default/setting.config.js +33 -0
  220. package/src/config/index.js +6 -0
  221. package/src/config/replacer/index.js +10 -0
  222. package/src/config/replacer/resolve.config.js +67 -0
  223. package/src/layouts/AdminLayout.vue +174 -0
  224. package/src/layouts/BlankView.vue +22 -0
  225. package/src/layouts/CommonLayout.vue +42 -0
  226. package/src/layouts/ComponentLayoutOne.vue +47 -0
  227. package/src/layouts/PageLayout.vue +151 -0
  228. package/src/layouts/PageView.vue +55 -0
  229. package/src/layouts/SinglePageView.vue +74 -0
  230. package/src/layouts/footer/PageFooter.vue +46 -0
  231. package/src/layouts/header/AdminHeader.vue +109 -0
  232. package/src/layouts/header/HeaderAvatar.vue +60 -0
  233. package/src/layouts/header/HeaderNotice.vue +97 -0
  234. package/src/layouts/header/HeaderSearch.vue +67 -0
  235. package/src/layouts/header/index.less +92 -0
  236. package/src/layouts/tabs/TabsHead.vue +190 -0
  237. package/src/layouts/tabs/TabsView.vue +355 -0
  238. package/src/layouts/tabs/i18n.js +25 -0
  239. package/src/layouts/tabs/index.js +2 -0
  240. package/src/main.js +15 -7
  241. package/src/mock/common/activityData.js +32 -0
  242. package/src/mock/common/index.js +89 -0
  243. package/src/mock/common/reportData.js +20 -0
  244. package/src/mock/common/tableData.js +118 -0
  245. package/src/mock/extend/index.js +83 -0
  246. package/src/mock/goods/index.js +108 -0
  247. package/src/mock/index.js +12 -0
  248. package/src/mock/project/index.js +17 -0
  249. package/src/mock/user/current.js +13 -0
  250. package/src/mock/user/login.js +39 -0
  251. package/src/mock/user/routes.js +61 -0
  252. package/src/mock/workplace/index.js +15 -0
  253. package/src/pages/exception/403.vue +25 -0
  254. package/src/pages/exception/404.vue +25 -0
  255. package/src/pages/exception/500.vue +25 -0
  256. package/src/pages/login/Login.vue +194 -0
  257. package/src/pages/login/index.js +2 -0
  258. package/src/pages/report/ReportTable.js +125 -0
  259. package/src/pages/report/ReportTableHome.vue +28 -0
  260. package/src/pages/resourceManage/resourceManageMain.vue +55 -0
  261. package/src/pages/system/applyInstallView/Core.vue +570 -0
  262. package/src/pages/system/applyInstallView/LFComponents/AddPanel.vue +52 -0
  263. package/src/pages/system/applyInstallView/LFComponents/Control.vue +78 -0
  264. package/src/pages/system/applyInstallView/LFComponents/DataDialog.vue +24 -0
  265. package/src/pages/system/applyInstallView/LFComponents/NodePanel.vue +103 -0
  266. package/src/pages/system/applyInstallView/PropertySetting/Base.vue +124 -0
  267. package/src/pages/system/applyInstallView/PropertySetting/CommonProperty.vue +104 -0
  268. package/src/pages/system/applyInstallView/PropertySetting/PropertyDialog.vue +43 -0
  269. package/src/pages/system/applyInstallView/background/base.png +0 -0
  270. package/src/pages/system/applyInstallView/background/click.png +0 -0
  271. package/src/pages/system/applyInstallView/background/download.png +0 -0
  272. package/src/pages/system/applyInstallView/background/end.png +0 -0
  273. package/src/pages/system/applyInstallView/background/push.png +0 -0
  274. package/src/pages/system/applyInstallView/background/start.png +0 -0
  275. package/src/pages/system/applyInstallView/background/step.png +0 -0
  276. package/src/pages/system/applyInstallView/background/time.png +0 -0
  277. package/src/pages/system/applyInstallView/config.js +22 -0
  278. package/src/pages/system/applyInstallView/data.json +1284 -0
  279. package/src/pages/system/applyInstallView/index.vue +34 -0
  280. package/src/pages/system/applyInstallView/registerNode/Connect.vue +43 -0
  281. package/src/pages/system/applyInstallView/registerNode/index.js +16 -0
  282. package/src/pages/system/applyInstallView/registerNode/registerBackEdge.js +44 -0
  283. package/src/pages/system/applyInstallView/registerNode/registerBase.js +139 -0
  284. package/src/pages/system/applyInstallView/registerNode/registerConnect.js +60 -0
  285. package/src/pages/system/applyInstallView/registerNode/registerDownload.js +92 -0
  286. package/src/pages/system/applyInstallView/registerNode/registerEnd.js +110 -0
  287. package/src/pages/system/applyInstallView/registerNode/registerPolyline.js +14 -0
  288. package/src/pages/system/applyInstallView/registerNode/registerPush.js +127 -0
  289. package/src/pages/system/applyInstallView/registerNode/registerStart.js +105 -0
  290. package/src/pages/system/applyInstallView/registerNode/registerStep.js +209 -0
  291. package/src/pages/system/applyInstallView/registerNode/registerTask.js +29 -0
  292. package/src/pages/system/dictionary/index.vue +41 -0
  293. package/src/pages/system/queryParams/index.vue +41 -0
  294. package/src/router/async/config.async.js +25 -0
  295. package/src/router/async/router.map.js +59 -0
  296. package/src/router/guards.js +104 -0
  297. package/src/router/i18n.js +57 -0
  298. package/src/router/index.js +27 -0
  299. package/src/services/api/CustomerDetailsViewApi.js +6 -0
  300. package/src/services/api/DeviceBrandDetailsViewApi.js +14 -0
  301. package/src/services/api/DeviceDetailsViewApi.js +10 -0
  302. package/src/services/api/DeviceTypeDetailsViewApi.js +6 -0
  303. package/src/services/api/DictionaryDetailsViewApi.js +6 -0
  304. package/src/services/api/EmployeeDetailsViewApi.js +16 -0
  305. package/src/services/api/FormGroupEditApi.js +6 -0
  306. package/src/services/api/InstructDetailsViewApi.js +12 -0
  307. package/src/services/api/LogDetailsViewApi.js +10 -0
  308. package/src/services/api/MeterDetailsViewApi.js +24 -0
  309. package/src/services/api/QueryParamsDetailsViewApi.js +6 -0
  310. package/src/services/api/TicketDetailsViewApi.js +30 -0
  311. package/src/services/api/WebmeterAnalysisViewApi.js +30 -0
  312. package/src/services/api/common.js +39 -0
  313. package/src/services/api/iot.js +7 -0
  314. package/src/services/api/manage.js +12 -0
  315. package/src/services/api/restTools.js +23 -0
  316. package/src/services/api/service.js +12 -0
  317. package/src/services/api.js +11 -0
  318. package/src/services/dataSource.js +12 -0
  319. package/src/services/index.js +7 -0
  320. package/src/services/user.js +34 -0
  321. package/src/store/index.js +5 -0
  322. package/src/store/modules/account.js +103 -0
  323. package/src/store/modules/index.js +4 -0
  324. package/src/store/modules/setting.js +114 -0
  325. package/src/store/mutation-types.js +1 -0
  326. package/src/theme/antd/ant-menu.less +3 -0
  327. package/src/theme/antd/ant-message.less +3 -0
  328. package/src/theme/antd/ant-table.less +22 -0
  329. package/src/theme/antd/ant-time-picker.less +3 -0
  330. package/src/theme/antd/index.less +4 -0
  331. package/src/theme/default/color.less +43 -0
  332. package/src/theme/default/index.less +3 -0
  333. package/src/theme/default/nprogress.less +76 -0
  334. package/src/theme/default/style.less +33 -0
  335. package/src/theme/global.less +130 -0
  336. package/src/theme/index.less +5 -0
  337. package/src/theme/reportTable.less +58 -0
  338. package/src/theme/theme.less +1 -0
  339. package/src/utils/Objects.js +25 -0
  340. package/src/utils/authority-utils.js +85 -0
  341. package/src/utils/axios-interceptors.js +82 -0
  342. package/src/utils/colors.js +103 -0
  343. package/src/utils/excel/Blob.js +181 -0
  344. package/src/utils/excel/Export2Excel.js +142 -0
  345. package/src/utils/filter.js +21 -0
  346. package/src/utils/formatter.js +68 -0
  347. package/src/utils/i18n.js +80 -0
  348. package/src/utils/indexedDB.js +146 -0
  349. package/src/utils/request.js +197 -0
  350. package/src/utils/routerUtil.js +353 -0
  351. package/src/utils/theme-color-replacer-extend.js +92 -0
  352. package/src/utils/themeUtil.js +102 -0
  353. package/src/utils/util.js +134 -0
  354. package/tests/unit/ReportTable.spec.js +15 -0
  355. package/vue.config.js +153 -0
  356. package/webpack.config.js +12 -0
  357. package/src/api/business.js +0 -30
  358. package/src/api/common.js +0 -6
  359. package/src/assets/logo.png +0 -0
  360. package/src/components/Criteria/Criteria.vue +0 -191
  361. package/src/components/Criteria/CriteriaPaged.vue +0 -50
  362. package/src/components/Criteria/index.js +0 -7
  363. package/src/components/Criteria/index.md +0 -120
  364. package/src/components/DataGrid/DataGrid.vue +0 -206
  365. package/src/components/DataGrid/index.js +0 -3
  366. package/src/components/DataGrid/index.md +0 -195
  367. package/src/components/ExportExcel/ExportExcel.vue +0 -246
  368. package/src/components/ExportExcel/index.js +0 -3
  369. package/src/components/ExportExcel/index.md +0 -76
  370. package/src/components/FormItem/index.js +0 -3
  371. package/src/components/InstructDetailsView/InstructDetailsView.vue +0 -518
  372. package/src/components/InstructDetailsView/index.md +0 -40
  373. package/src/components/MetaAnalysis/MetaAnalysis.vue +0 -183
  374. package/src/components/MetaAnalysis/demo/A.vue +0 -31
  375. package/src/components/MetaAnalysis/demo/B.vue +0 -31
  376. package/src/components/MetaAnalysis/demo/C.vue +0 -31
  377. package/src/components/MetaAnalysis/demo/MetaTest.vue +0 -44
  378. package/src/components/MetaAnalysis/index.js +0 -3
  379. package/src/components/MetaAnalysis/index.md +0 -255
  380. package/src/components/MeterDetailsView/MeterDetailsView.vue +0 -317
  381. package/src/components/MeterDetailsView/index.md +0 -40
  382. package/src/components/MeterDetailsView/part/index.js +0 -9
  383. package/src/components/ModalView/Modal.vue +0 -100
  384. package/src/components/ModalView/index.js +0 -3
  385. package/src/components/WCriteria/WCriteria.vue +0 -191
  386. package/src/components/WCriteria/WCriteriaPaged.vue +0 -95
  387. package/src/components/WCriteria/index.js +0 -7
  388. package/src/components/WCriteria/index.md +0 -120
  389. package/src/components/WTable/WTable.vue +0 -216
  390. package/src/components/WTable/index.js +0 -3
  391. package/src/components/WTable/index.md +0 -195
  392. package/src/plugins/AppData.js +0 -39
  393. package/src/plugins/GetLoginInfoService.js +0 -475
  394. package/src/plugins/MessageBox.js +0 -15
@@ -0,0 +1,84 @@
1
+ // antd 配置
2
+ const ANTD = {
3
+ primary: {
4
+ color: '#1890ff',
5
+ warning: '#faad14',
6
+ success: '#52c41a',
7
+ error: '#f5222d',
8
+ light: {
9
+ menuColors: ['#000c17', '#001529', '#002140']
10
+ },
11
+ dark: {
12
+ menuColors: ['#000c17', '#001529', '#002140']
13
+ },
14
+ night: {
15
+ menuColors: ['#151515', '#1f1f1f', '#1e1e1e']
16
+ }
17
+ },
18
+ theme: {
19
+ dark: {
20
+ 'layout-body-background': '#f0f2f5',
21
+ 'body-background': '#fff',
22
+ 'component-background': '#fff',
23
+ 'heading-color': 'rgba(0, 0, 0, 0.85)',
24
+ 'text-color': 'rgba(0, 0, 0, 0.65)',
25
+ 'text-color-inverse': '#fff',
26
+ 'text-color-secondary': 'rgba(0, 0, 0, 0.45)',
27
+ 'shadow-color': 'rgba(0, 0, 0, 0.15)',
28
+ 'border-color-split': '#f0f0f0',
29
+ 'background-color-light': '#fafafa',
30
+ 'background-color-base': '#f5f5f5',
31
+ 'table-selected-row-bg': '#fafafa',
32
+ 'table-expanded-row-bg': '#fbfbfb',
33
+ 'checkbox-check-color': '#fff',
34
+ 'disabled-color': 'rgba(0, 0, 0, 0.25)',
35
+ 'menu-dark-color': 'rgba(254, 254, 254, 0.65)',
36
+ 'menu-dark-highlight-color': '#fefefe',
37
+ 'menu-dark-arrow-color': '#fefefe',
38
+ 'btn-primary-color': '#fff'
39
+ },
40
+ light: {
41
+ 'layout-body-background': '#f0f2f5',
42
+ 'body-background': '#fff',
43
+ 'component-background': '#fff',
44
+ 'heading-color': 'rgba(0, 0, 0, 0.85)',
45
+ 'text-color': 'rgba(0, 0, 0, 0.65)',
46
+ 'text-color-inverse': '#fff',
47
+ 'text-color-secondary': 'rgba(0, 0, 0, 0.45)',
48
+ 'shadow-color': 'rgba(0, 0, 0, 0.15)',
49
+ 'border-color-split': '#f0f0f0',
50
+ 'background-color-light': '#fafafa',
51
+ 'background-color-base': '#f5f5f5',
52
+ 'table-selected-row-bg': '#fafafa',
53
+ 'table-expanded-row-bg': '#fbfbfb',
54
+ 'checkbox-check-color': '#fff',
55
+ 'disabled-color': 'rgba(0, 0, 0, 0.25)',
56
+ 'menu-dark-color': 'rgba(1, 1, 1, 0.65)',
57
+ 'menu-dark-highlight-color': '#fefefe',
58
+ 'menu-dark-arrow-color': '#fefefe',
59
+ 'btn-primary-color': '#fff'
60
+ },
61
+ night: {
62
+ 'layout-body-background': '#000',
63
+ 'body-background': '#141414',
64
+ 'component-background': '#141414',
65
+ 'heading-color': 'rgba(255, 255, 255, 0.85)',
66
+ 'text-color': 'rgba(255, 255, 255, 0.85)',
67
+ 'text-color-inverse': '#141414',
68
+ 'text-color-secondary': 'rgba(255, 255, 255, 0.45)',
69
+ 'shadow-color': 'rgba(255, 255, 255, 0.15)',
70
+ 'border-color-split': '#303030',
71
+ 'background-color-light': '#ffffff0a',
72
+ 'background-color-base': '#2a2a2a',
73
+ 'table-selected-row-bg': '#ffffff0a',
74
+ 'table-expanded-row-bg': '#ffffff0b',
75
+ 'checkbox-check-color': '#141414',
76
+ 'disabled-color': 'rgba(255, 255, 255, 0.25)',
77
+ 'menu-dark-color': 'rgba(254, 254, 254, 0.65)',
78
+ 'menu-dark-highlight-color': '#fefefe',
79
+ 'menu-dark-arrow-color': '#fefefe',
80
+ 'btn-primary-color': '#141414'
81
+ }
82
+ }
83
+ }
84
+ module.exports = ANTD
@@ -0,0 +1,6 @@
1
+ const ANTD = require('./antd.config')
2
+ const ADMIN = require('./admin.config')
3
+ const ANIMATE = require('./animate.config')
4
+ const setting = require('./setting.config')
5
+
6
+ module.exports = { ANTD, ADMIN, ANIMATE, setting }
@@ -0,0 +1,33 @@
1
+ // 此配置为系统默认设置,需修改的设置项,在src/config/config.js中添加修改项即可。也可直接在此文件中修改。
2
+ module.exports = {
3
+ lang: 'CN', // 语言,可选 CN(简体)、HK(繁体)、US(英语),也可扩展其它语言
4
+ theme: { // 主题
5
+ color: '#1890ff', // 主题色
6
+ mode: 'dark', // 主题模式 可选 dark、 light 和 night
7
+ success: '#52c41a', // 成功色
8
+ warning: '#faad14', // 警告色
9
+ error: '#f5222f' // 错误色
10
+ },
11
+ layout: 'side', // 导航布局,可选 side 和 head,分别为侧边导航和顶部导航
12
+ fixedHeader: false, // 固定头部状态栏,true:固定,false:不固定
13
+ fixedSideBar: true, // 固定侧边栏,true:固定,false:不固定
14
+ fixedTabs: false, // 固定页签头,true:固定,false:不固定
15
+ pageWidth: 'fixed', // 内容区域宽度,fixed:固定宽度,fluid:流式宽度
16
+ weekMode: false, // 色弱模式,true:开启,false:不开启
17
+ multiPage: true, // 多页签模式,true:开启,false:不开启
18
+ cachePage: true, // 是否缓存页面数据,仅多页签模式下生效,true 缓存, false 不缓存
19
+ hideSetting: false, // 隐藏设置抽屉,true:隐藏,false:不隐藏
20
+ homePage: '/system/dictionaryManage', // 首页路由, 登陆后默认打开
21
+ systemName: '物联网监控平台', // 系统名称
22
+ copyright: '2021 Mr.Jiang', // copyright
23
+ asyncRoutes: true, // 异步加载路由,true:开启,false:不开启
24
+ showPageTitle: true, // 是否显示页面标题(PageLayout 布局中的页面标题),true:显示,false:不显示
25
+ filterMenu: true, // 根据权限过滤菜单,true:过滤,false:不过滤
26
+ animate: { // 动画设置
27
+ disabled: true, // 禁用动画,true:禁用,false:启用
28
+ name: 'lightSpeed', // 动画效果,支持的动画效果可参考 ./animate.config.js
29
+ direction: 'left' // 动画方向,切换页面时动画的方向,参考 ./animate.config.js
30
+ },
31
+ footerLinks: [ // 页面底部链接,{link: '链接地址', name: '名称/显示文字', icon: '图标,支持 ant design vue 图标库'}
32
+ ]
33
+ }
@@ -0,0 +1,6 @@
1
+ const deepMerge = require('deepmerge')
2
+ const _config = require('./config')
3
+ const { setting } = require('./default')
4
+ const config = deepMerge(setting, _config)
5
+
6
+ module.exports = config
@@ -0,0 +1,10 @@
1
+ /**
2
+ * webpack-theme-color-replacer 配置
3
+ * webpack-theme-color-replacer 是一个高效的主题色替换插件,可以实现系统运行时动态切换主题功能。
4
+ * 但有些情景下,我们需要为 webpack-theme-color-replacer 配置一些规则,以达到我们的个性化需求的目的
5
+ *
6
+ * @cssResolve: css处理规则,在 webpack-theme-color-replacer 提取 需要替换主题色的 css 后,应用此规则。一般在
7
+ * webpack-theme-color-replacer 默认规则无法达到我们的要求时使用。
8
+ */
9
+ const cssResolve = require('./resolve.config')
10
+ module.exports = { cssResolve }
@@ -0,0 +1,67 @@
1
+ /**
2
+ * webpack-theme-color-replacer 插件的 resolve 配置
3
+ * 为特定的 css 选择器(selector)配置 resolve 规则。
4
+ *
5
+ * key 为 css selector 值或合法的正则表达式字符串
6
+ * 当 key 设置 css selector 值时,会匹配对应的 css
7
+ * 当 key 设置为正则表达式时,会匹配所有满足此正则表达式的的 css
8
+ *
9
+ * value 可以设置为 boolean 值 false 或 一个对象
10
+ * 当 value 为 false 时,则会忽略此 css,即此 css 不纳入 webpack-theme-color-replacer 管理
11
+ * 当 value 为 对象时,会调用该对象的 resolve 函数,并传入 cssText(原始的 css文本) 和 cssObj(css对象)参数; resolve函数应该返
12
+ * 回一个处理后的、合法的 css字符串(包含 selector)
13
+ * 注意: value 不能设置为 true
14
+ */
15
+ const cssResolve = {
16
+ '.ant-checkbox-checked .ant-checkbox-inner::after': {
17
+ resolve (cssText, cssObj) {
18
+ cssObj.rules.push('border-top:0', 'border-left:0')
19
+ return cssObj.toText()
20
+ }
21
+ },
22
+ '.ant-tree-checkbox-checked .ant-tree-checkbox-inner::after': {
23
+ resolve (cssText, cssObj) {
24
+ cssObj.rules.push('border-top:0', 'border-left:0')
25
+ return cssObj.toText()
26
+ }
27
+ },
28
+ '.ant-checkbox-checked .ant-checkbox-inner:after': {
29
+ resolve (cssText, cssObj) {
30
+ cssObj.rules.push('border-top:0', 'border-left:0')
31
+ return cssObj.toText()
32
+ }
33
+ },
34
+ '.ant-tree-checkbox-checked .ant-tree-checkbox-inner:after': {
35
+ resolve (cssText, cssObj) {
36
+ cssObj.rules.push('border-top:0', 'border-left:0')
37
+ return cssObj.toText()
38
+ }
39
+ },
40
+ '.ant-menu-dark .ant-menu-inline.ant-menu-sub': {
41
+ resolve (cssText, cssObj) {
42
+ cssObj.rules = cssObj.rules.filter(rule => rule.indexOf('box-shadow') == -1)
43
+ return cssObj.toText()
44
+ }
45
+ },
46
+ '.ant-menu-horizontal>.ant-menu-item:hover,.ant-menu-horizontal>.ant-menu-submenu:hover,.ant-menu-horizontal>.ant-menu-item-active,.ant-menu-horizontal>.ant-menu-submenu-active,.ant-menu-horizontal>.ant-menu-item-open,.ant-menu-horizontal>.ant-menu-submenu-open,.ant-menu-horizontal>.ant-menu-item-selected,.ant-menu-horizontal>.ant-menu-submenu-selected': {
47
+ resolve (cssText, cssObj) {
48
+ cssObj.selector = cssObj.selector.replace(/.ant-menu-horizontal/g, '.ant-menu-horizontal:not(.ant-menu-dark)')
49
+ return cssObj.toText()
50
+ }
51
+ },
52
+ '.ant-menu-horizontal>.ant-menu-item-active,.ant-menu-horizontal>.ant-menu-item-open,.ant-menu-horizontal>.ant-menu-item-selected,.ant-menu-horizontal>.ant-menu-item:hover,.ant-menu-horizontal>.ant-menu-submenu-active,.ant-menu-horizontal>.ant-menu-submenu-open,.ant-menu-horizontal>.ant-menu-submenu-selected,.ant-menu-horizontal>.ant-menu-submenu:hover': {
53
+ resolve (cssText, cssObj) {
54
+ cssObj.selector = cssObj.selector.replace(/.ant-menu-horizontal/g, '.ant-menu-horizontal:not(.ant-menu-dark)')
55
+ return cssObj.toText()
56
+ }
57
+ },
58
+ '.ant-layout-sider': {
59
+ resolve (cssText, cssObj) {
60
+ cssObj.selector = '.ant-layout-sider-dark'
61
+ return cssObj.toText()
62
+ }
63
+ },
64
+ '/keyframes/': false
65
+ }
66
+
67
+ module.exports = cssResolve
@@ -0,0 +1,174 @@
1
+ <template>
2
+ <a-layout :class="['admin-layout', 'beauty-scroll']">
3
+ <drawer v-if="isMobile" v-model="drawerOpen">
4
+ <side-menu :theme="theme.mode" :menuData="menuData" :collapsed="false" :collapsible="false" @menuSelect="onMenuSelect"/>
5
+ </drawer>
6
+ <side-menu
7
+ :class="[fixedSideBar ? 'fixed-side' : '']"
8
+ :theme="theme.mode"
9
+ v-else-if="layout === 'side' || layout === 'mix'"
10
+ :menuData="sideMenuData"
11
+ :collapsed="collapsed"
12
+ :collapsible="true" />
13
+ <div v-if="fixedSideBar && !isMobile" :style="`width: ${sideMenuWidth}; min-width: ${sideMenuWidth};max-width: ${sideMenuWidth};`" class="virtual-side"></div>
14
+ <drawer v-if="!hideSetting" v-model="showSetting" placement="right">
15
+ <div class="setting" slot="handler">
16
+ <a-icon :type="showSetting ? 'close' : 'setting'"/>
17
+ </div>
18
+ <setting />
19
+ </drawer>
20
+ <a-layout class="admin-layout-main beauty-scroll">
21
+ <admin-header :class="[{'fixed-tabs': fixedTabs, 'fixed-header': fixedHeader, 'multi-page': multiPage}]" :style="headerStyle" :menuData="headMenuData" :collapsed="collapsed" @toggleCollapse="toggleCollapse"/>
22
+ <a-layout-header :class="['virtual-header', {'fixed-tabs' : fixedTabs, 'fixed-header': fixedHeader, 'multi-page': multiPage}]" v-show="fixedHeader"></a-layout-header>
23
+ <a-layout-content class="admin-layout-content" :style="`min-height: ${minHeight}px;`">
24
+ <div style="position: relative">
25
+ <slot></slot>
26
+ </div>
27
+ </a-layout-content>
28
+ <a-layout-footer style="padding: 0px">
29
+ <page-footer :link-list="footerLinks" :copyright="copyright" />
30
+ </a-layout-footer>
31
+ </a-layout>
32
+ </a-layout>
33
+ </template>
34
+
35
+ <script>
36
+ import AdminHeader from './header/AdminHeader'
37
+ import PageFooter from './footer/PageFooter'
38
+ import Drawer from '../components/tool/Drawer'
39
+ import SideMenu from '../components/menu/SideMenu'
40
+ import Setting from '../components/setting/Setting'
41
+ import { mapState, mapMutations, mapGetters } from 'vuex'
42
+
43
+ // const minHeight = window.innerHeight - 64 - 122
44
+
45
+ export default {
46
+ name: 'AdminLayout',
47
+ components: { Setting, SideMenu, Drawer, PageFooter, AdminHeader },
48
+ data () {
49
+ return {
50
+ minHeight: window.innerHeight - 64 - 122,
51
+ collapsed: false,
52
+ showSetting: false,
53
+ drawerOpen: false
54
+ }
55
+ },
56
+ provide () {
57
+ return {
58
+ adminLayout: this
59
+ }
60
+ },
61
+ watch: {
62
+ $route (val) {
63
+ this.setActivated(val)
64
+ },
65
+ layout () {
66
+ this.setActivated(this.$route)
67
+ },
68
+ isMobile (val) {
69
+ if (!val) {
70
+ this.drawerOpen = false
71
+ }
72
+ }
73
+ },
74
+ computed: {
75
+ ...mapState('setting', ['isMobile', 'theme', 'layout', 'footerLinks', 'copyright', 'fixedHeader', 'fixedSideBar',
76
+ 'fixedTabs', 'hideSetting', 'multiPage']),
77
+ ...mapGetters('setting', ['firstMenu', 'subMenu', 'menuData']),
78
+ sideMenuWidth () {
79
+ return this.collapsed ? '80px' : '256px'
80
+ },
81
+ headerStyle () {
82
+ const width = (this.fixedHeader && this.layout !== 'head' && !this.isMobile) ? `calc(100% - ${this.sideMenuWidth})` : '100%'
83
+ const position = this.fixedHeader ? 'fixed' : 'static'
84
+ return `width: ${width}; position: ${position};`
85
+ },
86
+ headMenuData () {
87
+ const { layout, menuData, firstMenu } = this
88
+ return layout === 'mix' ? firstMenu : menuData
89
+ },
90
+ sideMenuData () {
91
+ const { layout, menuData, subMenu } = this
92
+ return layout === 'mix' ? subMenu : menuData
93
+ }
94
+ },
95
+ methods: {
96
+ ...mapMutations('setting', ['correctPageMinHeight', 'setActivatedFirst']),
97
+ toggleCollapse () {
98
+ this.collapsed = !this.collapsed
99
+ },
100
+ onMenuSelect () {
101
+ this.toggleCollapse()
102
+ },
103
+ setActivated (route) {
104
+ if (this.layout === 'mix') {
105
+ let matched = route.matched
106
+ matched = matched.slice(0, matched.length - 1)
107
+ const { firstMenu } = this
108
+ for (const menu of firstMenu) {
109
+ if (matched.findIndex(item => item.path === menu.fullPath) !== -1) {
110
+ this.setActivatedFirst(menu.fullPath)
111
+ break
112
+ }
113
+ }
114
+ }
115
+ }
116
+ },
117
+ created () {
118
+ this.correctPageMinHeight(this.minHeight - 24)
119
+ this.setActivated(this.$route)
120
+ },
121
+ beforeDestroy () {
122
+ this.correctPageMinHeight(-this.minHeight + 24)
123
+ }
124
+ }
125
+ </script>
126
+
127
+ <style lang="less" scoped>
128
+ .admin-layout{
129
+ .side-menu{
130
+ &.fixed-side{
131
+ position: fixed;
132
+ height: 100vh;
133
+ left: 0;
134
+ top: 0;
135
+ }
136
+ }
137
+ .virtual-side{
138
+ transition: all 0.2s;
139
+ }
140
+ .virtual-header{
141
+ transition: all 0.2s;
142
+ opacity: 0;
143
+ &.fixed-tabs.multi-page:not(.fixed-header){
144
+ height: 0;
145
+ }
146
+ }
147
+ .admin-layout-main{
148
+ .admin-header{
149
+ top: 0;
150
+ right: 0;
151
+ overflow: hidden;
152
+ transition: all 0.2s;
153
+ &.fixed-tabs.multi-page:not(.fixed-header){
154
+ height: 0;
155
+ }
156
+ }
157
+ }
158
+ .admin-layout-content{
159
+ padding: 24px 24px 0;
160
+ /*overflow-x: hidden;*/
161
+ /*min-height: calc(100vh - 64px - 122px);*/
162
+ }
163
+ .setting{
164
+ background-color: @primary-color;
165
+ color: @base-bg-color;
166
+ border-radius: 5px 0 0 5px;
167
+ line-height: 40px;
168
+ font-size: 22px;
169
+ width: 40px;
170
+ height: 40px;
171
+ box-shadow: -2px 0 8px @shadow-color;
172
+ }
173
+ }
174
+ </style>
@@ -0,0 +1,22 @@
1
+ <template>
2
+ <page-toggle-transition :disabled="animate.disabled" :animate="animate.name" :direction="animate.direction">
3
+ <router-view />
4
+ </page-toggle-transition>
5
+ </template>
6
+
7
+ <script>
8
+ import PageToggleTransition from '../components/transition/PageToggleTransition'
9
+ import { mapState } from 'vuex'
10
+
11
+ export default {
12
+ name: 'BlankView',
13
+ components: { PageToggleTransition },
14
+ computed: {
15
+ ...mapState('setting', ['multiPage', 'animate'])
16
+ }
17
+ }
18
+ </script>
19
+
20
+ <style scoped>
21
+
22
+ </style>
@@ -0,0 +1,42 @@
1
+ <template>
2
+ <div class="common-layout">
3
+ <div class="content"><slot></slot></div>
4
+ <page-footer :link-list="footerLinks" :copyright="copyright"></page-footer>
5
+ </div>
6
+ </template>
7
+
8
+ <script>
9
+ import PageFooter from '@vue2-client/layouts/footer/PageFooter'
10
+ import { mapState } from 'vuex'
11
+
12
+ export default {
13
+ name: 'CommonLayout',
14
+ components: { PageFooter },
15
+ computed: {
16
+ ...mapState('setting', ['footerLinks', 'copyright'])
17
+ }
18
+ }
19
+ </script>
20
+
21
+ <style scoped lang="less">
22
+ .common-layout{
23
+ display: flex;
24
+ flex-direction: column;
25
+ height: 100vh;
26
+ overflow: auto;
27
+ background-color: @layout-body-background;
28
+ background-image: url('https://gw.alipayobjects.com/zos/rmsportal/TVYTbAXWheQpRcWDaDMu.svg');
29
+ background-repeat: no-repeat;
30
+ background-position-x: center;
31
+ background-position-y: 110px;
32
+ background-size: 100%;
33
+ .content{
34
+ padding: 32px 0;
35
+ flex: 1;
36
+ @media (min-width: 768px){
37
+
38
+ padding: 112px 0 24px;
39
+ }
40
+ }
41
+ }
42
+ </style>
@@ -0,0 +1,47 @@
1
+ <template>
2
+ <div id="ComponentLayoutOne">
3
+ <a-layout>
4
+ <a-layout-sider v-bind="siderProps">
5
+ <slot name="left"></slot>
6
+ </a-layout-sider>
7
+ <a-layout>
8
+ <slot></slot>
9
+ </a-layout>
10
+ </a-layout>
11
+ </div>
12
+ </template>
13
+
14
+ <script>
15
+ export default {
16
+ name: 'ComponentLayoutOne',
17
+ props: {
18
+ // Layout.Sider props对象
19
+ siderProps: {
20
+ type: Object,
21
+ default: () => {
22
+ return {}
23
+ }
24
+ }
25
+ },
26
+ data () {
27
+ return {}
28
+ },
29
+ created () {
30
+ },
31
+ mounted () {
32
+ },
33
+ methods: {}
34
+ }
35
+ </script>
36
+
37
+ <style lang="less">
38
+ @import '~ant-design-vue/../../src/theme/index';
39
+ #ComponentLayoutOne {
40
+ .ant-layout-sider {
41
+ .ant-layout-sider-zero-width-trigger {
42
+ top: 50%;
43
+ background-color: @shadow-color;
44
+ }
45
+ }
46
+ }
47
+ </style>
@@ -0,0 +1,151 @@
1
+ <template>
2
+ <div class="page-layout">
3
+ <page-header
4
+ ref="pageHeader"
5
+ :style="`margin-top: ${multiPage ? 0 : -24}px`"
6
+ :breadcrumb="breadcrumb"
7
+ :title="pageTitle"
8
+ :logo="logo"
9
+ :avatar="avatar">
10
+ <slot name="action" slot="action"></slot>
11
+ <slot slot="content" name="headerContent"></slot>
12
+ <div slot="content" v-if="!this.$slots.headerContent && desc">
13
+ <p>{{ desc }}</p>
14
+ <div v-if="this.linkList" class="link">
15
+ <template v-for="(link, index) in linkList">
16
+ <a :key="index" :href="link.href"><a-icon :type="link.icon" />{{ link.title }}</a>
17
+ </template>
18
+ </div>
19
+ </div>
20
+ <slot v-if="this.$slots.extra" slot="extra" name="extra"></slot>
21
+ </page-header>
22
+ <div ref="page" :class="['page-content', layout, pageWidth]" >
23
+ <slot></slot>
24
+ </div>
25
+ </div>
26
+ </template>
27
+
28
+ <script>
29
+ import PageHeader from '@vue2-client/components/page/header/PageHeader'
30
+ import { mapState, mapMutations } from 'vuex'
31
+ import { getI18nKey } from '@vue2-client/utils/routerUtil'
32
+
33
+ export default {
34
+ name: 'PageLayout',
35
+ components: { PageHeader },
36
+ // eslint-disable-next-line vue/require-prop-types
37
+ props: ['desc', 'logo', 'title', 'avatar', 'linkList', 'extraImage'],
38
+ data () {
39
+ return {
40
+ page: {},
41
+ pageHeaderHeight: 0
42
+ }
43
+ },
44
+ watch: {
45
+ $route () {
46
+ this.page = this.$route.meta.page
47
+ }
48
+ },
49
+ updated () {
50
+ if (!this._inactive) {
51
+ this.updatePageHeight()
52
+ }
53
+ },
54
+ activated () {
55
+ this.updatePageHeight()
56
+ },
57
+ deactivated () {
58
+ this.updatePageHeight(0)
59
+ },
60
+ mounted () {
61
+ this.updatePageHeight()
62
+ },
63
+ created () {
64
+ this.page = this.$route.meta.page
65
+ },
66
+ beforeDestroy () {
67
+ this.updatePageHeight(0)
68
+ },
69
+ computed: {
70
+ ...mapState('setting', ['layout', 'multiPage', 'pageMinHeight', 'pageWidth', 'customTitles']),
71
+ pageTitle () {
72
+ const pageTitle = this.page && this.page.title
73
+ return this.customTitle || (pageTitle && this.$t(pageTitle)) || this.title || this.routeName
74
+ },
75
+ routeName () {
76
+ const route = this.$route
77
+ return this.$t(getI18nKey(route.matched[route.matched.length - 1].path))
78
+ },
79
+ breadcrumb () {
80
+ const page = this.page
81
+ const breadcrumb = page && page.breadcrumb
82
+ if (breadcrumb) {
83
+ const i18nBreadcrumb = []
84
+ breadcrumb.forEach(item => {
85
+ i18nBreadcrumb.push(this.$t(item))
86
+ })
87
+ return i18nBreadcrumb
88
+ } else {
89
+ return this.getRouteBreadcrumb()
90
+ }
91
+ },
92
+ marginCorrect () {
93
+ return this.multiPage ? 24 : 0
94
+ }
95
+ },
96
+ methods: {
97
+ ...mapMutations('setting', ['correctPageMinHeight']),
98
+ getRouteBreadcrumb () {
99
+ const routes = this.$route.matched
100
+ const path = this.$route.path
101
+ const breadcrumb = []
102
+ routes.filter(item => path.includes(item.path))
103
+ .forEach(route => {
104
+ const path = route.path.length === 0 ? '/home' : route.path
105
+ breadcrumb.push(this.$t(getI18nKey(path)))
106
+ })
107
+ const pageTitle = this.page && this.page.title
108
+ if (this.customTitle || pageTitle) {
109
+ breadcrumb[breadcrumb.length - 1] = this.customTitle || pageTitle
110
+ }
111
+ return breadcrumb
112
+ },
113
+ /**
114
+ * 用于计算页面内容最小高度
115
+ * @param newHeight
116
+ */
117
+ updatePageHeight (newHeight = this.$refs.pageHeader.$el.offsetHeight + this.marginCorrect) {
118
+ this.correctPageMinHeight(this.pageHeaderHeight - newHeight)
119
+ this.pageHeaderHeight = newHeight
120
+ }
121
+ }
122
+ }
123
+ </script>
124
+
125
+ <style lang="less">
126
+ .page-header{
127
+ margin: 0 -24px 0;
128
+ }
129
+ .link{
130
+ /*margin-top: 16px;*/
131
+ line-height: 24px;
132
+ a{
133
+ font-size: 14px;
134
+ margin-right: 32px;
135
+ i{
136
+ font-size: 22px;
137
+ margin-right: 8px;
138
+ }
139
+ }
140
+ }
141
+ .page-content{
142
+ position: relative;
143
+ padding: 24px 0 0;
144
+ &.side{
145
+ }
146
+ &.head.fixed{
147
+ margin: 0 auto;
148
+ max-width: 1400px;
149
+ }
150
+ }
151
+ </style>