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,36 @@
1
+ // chart
2
+ import Bar from '@vue2-client/components/Charts/Bar'
3
+ import ChartCard from '@vue2-client/components/Charts/ChartCard'
4
+ import Liquid from '@vue2-client/components/Charts/Liquid'
5
+ import MiniArea from '@vue2-client/components/Charts/MiniArea'
6
+ import MiniSmoothArea from '@vue2-client/components/Charts/MiniSmoothArea'
7
+ import MiniBar from '@vue2-client/components/Charts/MiniBar'
8
+ import MiniProgress from '@vue2-client/components/Charts/MiniProgress'
9
+ import Radar from '@vue2-client/components/Charts/Radar'
10
+ import RankList from '@vue2-client/components/Charts/RankList'
11
+ import TransferBar from '@vue2-client/components/Charts/TransferBar'
12
+ import TagCloud from '@vue2-client/components/Charts/TagCloud'
13
+
14
+ // pro components
15
+ import Ellipsis from '@vue2-client/components/Ellipsis'
16
+ import NumberInfo from '@vue2-client/components/NumberInfo'
17
+ import STable from '@vue2-client/components/STable'
18
+ import Trend from '@vue2-client/components/Trend'
19
+
20
+ export {
21
+ Bar,
22
+ ChartCard,
23
+ Liquid,
24
+ MiniArea,
25
+ MiniSmoothArea,
26
+ MiniBar,
27
+ MiniProgress,
28
+ Radar,
29
+ TagCloud,
30
+ RankList,
31
+ TransferBar,
32
+ Ellipsis,
33
+ NumberInfo,
34
+ STable,
35
+ Trend
36
+ }
@@ -0,0 +1,6 @@
1
+ @import "~ant-design-vue/lib/style/index";
2
+
3
+ // The prefix to use on all css classes from ant-pro.
4
+ @ant-pro-prefix : ant-pro;
5
+ @ant-global-sider-zindex : 106;
6
+ @ant-global-header-zindex : 105;
@@ -0,0 +1,66 @@
1
+ <template>
2
+ <a-input
3
+ :addon-after="addonAfter"
4
+ :addon-before="addonBefore"
5
+ :default-value="defaultValue"
6
+ :disabled="disabled"
7
+ :id="id"
8
+ :max-length="maxLength"
9
+ :prefix="prefix"
10
+ :size="size"
11
+ :suffix="suffix || lenSuffix"
12
+ :type="type"
13
+ :allow-clear="allowClear"
14
+ v-model="sValue"
15
+ :value="value"
16
+ @change="onChange"
17
+ @input="onInput"
18
+ @pressEnter="onPressEnter"
19
+ @keydown="onKeydown"
20
+ >
21
+ <template :slot="slot" v-for="slot in Object.keys($slots)">
22
+ <slot :name="slot"></slot>
23
+ </template>
24
+ </a-input>
25
+ </template>
26
+
27
+ <script>
28
+ export default {
29
+ name: 'IInput',
30
+ model: {
31
+ prop: 'value',
32
+ event: 'change.value'
33
+ },
34
+ props: ['addonAfter', 'addonBefore', 'defaultValue', 'disabled', 'id', 'maxLength', 'prefix', 'size', 'suffix', 'type', 'value', 'allowClear'],
35
+ data () {
36
+ return {
37
+ sValue: this.value || this.defaultValue || ''
38
+ }
39
+ },
40
+ watch: {
41
+ value (val) {
42
+ this.sValue = val
43
+ }
44
+ },
45
+ computed: {
46
+ lenSuffix () {
47
+ return this.maxLength && `${(this.sValue + '').length}/${this.maxLength}`
48
+ }
49
+ },
50
+ methods: {
51
+ onChange (e) {
52
+ this.$emit('change', e)
53
+ this.$emit('change.value', e.target.value)
54
+ },
55
+ onInput (e) {
56
+ this.$emit('input', e)
57
+ },
58
+ onPressEnter (e) {
59
+ this.$emit('pressEnter', e)
60
+ },
61
+ onKeydown (e) {
62
+ this.$emit('keydown', e)
63
+ }
64
+ }
65
+ }
66
+ </script>
@@ -0,0 +1,84 @@
1
+ <template>
2
+ <a-menu
3
+ v-show="visible"
4
+ class="contextmenu"
5
+ :style="style"
6
+ :selectedKeys="selectedKeys"
7
+ @click="handleClick"
8
+ >
9
+ <a-menu-item :key="item.key" v-for="item in itemList">
10
+ <a-icon v-if="item.icon" :type="item.icon" />
11
+ <span>{{ item.text }}</span>
12
+ </a-menu-item>
13
+ </a-menu>
14
+ </template>
15
+
16
+ <script>
17
+ export default {
18
+ name: 'Contextmenu',
19
+ props: {
20
+ visible: {
21
+ type: Boolean,
22
+ required: false,
23
+ default: false
24
+ },
25
+ itemList: {
26
+ type: Array,
27
+ required: true,
28
+ default: () => []
29
+ }
30
+ },
31
+ data () {
32
+ return {
33
+ left: 0,
34
+ top: 0,
35
+ target: null,
36
+ meta: null,
37
+ selectedKeys: []
38
+ }
39
+ },
40
+ computed: {
41
+ style () {
42
+ return {
43
+ left: this.left + 'px',
44
+ top: this.top + 'px'
45
+ }
46
+ }
47
+ },
48
+ created () {
49
+ window.addEventListener('click', this.closeMenu)
50
+ window.addEventListener('contextmenu', this.setPosition)
51
+ },
52
+ beforeDestroy () {
53
+ window.removeEventListener('click', this.closeMenu)
54
+ window.removeEventListener('contextmenu', this.setPosition)
55
+ },
56
+ methods: {
57
+ closeMenu () {
58
+ this.$emit('update:visible', false)
59
+ },
60
+ setPosition (e) {
61
+ this.left = e.clientX
62
+ this.top = e.clientY
63
+ this.target = e.target
64
+ this.meta = e.meta
65
+ },
66
+ handleClick ({ key }) {
67
+ this.$emit('select', key, this.target, this.meta)
68
+ this.closeMenu()
69
+ }
70
+ }
71
+ }
72
+ </script>
73
+
74
+ <style lang="less" scoped>
75
+ .contextmenu{
76
+ position: fixed;
77
+ z-index: 1000;
78
+ border-radius: 4px;
79
+ box-shadow: -4px 4px 16px 1px @shadow-color !important;
80
+ }
81
+ .ant-menu-item {
82
+ margin: 0 !important // 菜单项之间的缝隙会影响点击
83
+ }
84
+ </style>
@@ -0,0 +1,62 @@
1
+ <template>
2
+ <a-layout-sider
3
+ :theme="sideTheme"
4
+ :class="['side-menu', 'beauty-scroll', isMobile ? null : 'shadow']"
5
+ width="256px"
6
+ :collapsible="collapsible"
7
+ v-model="collapsed"
8
+ :trigger="null">
9
+ <div :class="['logo', theme]">
10
+ <router-link to="/dashboard/workplace">
11
+ <img src="@/assets/img/logo.png">
12
+ <h1 style="font-weight: bold">{{ systemName }}</h1>
13
+ </router-link>
14
+ </div>
15
+ <i-menu :theme="theme" :collapsed="collapsed" :options="menuData" @select="onSelect" class="menu"/>
16
+ </a-layout-sider>
17
+ </template>
18
+
19
+ <script>
20
+ import IMenu from './menu'
21
+ import { mapState } from 'vuex'
22
+ export default {
23
+ name: 'SideMenu',
24
+ components: { IMenu },
25
+ props: {
26
+ collapsible: {
27
+ type: Boolean,
28
+ required: false,
29
+ default: false
30
+ },
31
+ collapsed: {
32
+ type: Boolean,
33
+ required: false,
34
+ default: false
35
+ },
36
+ menuData: {
37
+ type: Array,
38
+ required: true
39
+ },
40
+ theme: {
41
+ type: String,
42
+ required: false,
43
+ default: 'dark'
44
+ }
45
+ },
46
+ computed: {
47
+ sideTheme () {
48
+ return this.theme == 'light' ? this.theme : 'dark'
49
+ },
50
+ ...mapState('setting', ['isMobile', 'systemName'])
51
+ },
52
+ methods: {
53
+ onSelect (obj) {
54
+ this.$emit('menuSelect', obj)
55
+ }
56
+ }
57
+ }
58
+ </script>
59
+
60
+ <style lang="less" scoped>
61
+ @import "index";
62
+ </style>
@@ -0,0 +1,38 @@
1
+ .shadow{
2
+ box-shadow: 2px 0 6px rgba(0, 21, 41, .35);
3
+ }
4
+ .side-menu{
5
+ min-height: 100vh;
6
+ overflow-y: auto;
7
+ z-index: 10;
8
+ .logo{
9
+ height: 64px;
10
+ position: relative;
11
+ line-height: 64px;
12
+ padding-left: 24px;
13
+ -webkit-transition: all .3s;
14
+ transition: all .3s;
15
+ overflow: hidden;
16
+ background-color: @layout-trigger-background;
17
+ &.light{
18
+ background-color: #fff;
19
+ h1{
20
+ color: @primary-color;
21
+ }
22
+ }
23
+ h1{
24
+ color: @menu-dark-highlight-color;
25
+ font-size: 20px;
26
+ margin: 0 0 0 12px;
27
+ display: inline-block;
28
+ vertical-align: middle;
29
+ }
30
+ img{
31
+ width: 32px;
32
+ vertical-align: middle;
33
+ }
34
+ }
35
+ }
36
+ .menu{
37
+ padding: 16px 0;
38
+ }
@@ -0,0 +1,273 @@
1
+ /**
2
+ * 该插件可根据菜单配置自动生成 ANTD menu组件
3
+ * menuOptions示例:
4
+ * [
5
+ * {
6
+ * name: '菜单名称',
7
+ * path: '菜单路由',
8
+ * meta: {
9
+ * icon: '菜单图标',
10
+ * invisible: 'boolean, 是否不可见, 默认 false',
11
+ * },
12
+ * children: [子菜单配置]
13
+ * },
14
+ * {
15
+ * name: '菜单名称',
16
+ * path: '菜单路由',
17
+ * meta: {
18
+ * icon: '菜单图标',
19
+ * invisible: 'boolean, 是否不可见, 默认 false',
20
+ * },
21
+ * children: [子菜单配置]
22
+ * }
23
+ * ]
24
+ *
25
+ * i18n: 国际化配置。系统默认会根据 options route配置的 path 和 name 生成英文以及中文的国际化配置,如需自定义或增加其他语言,配置
26
+ * 此项即可。如:
27
+ * i18n: {
28
+ * messages: {
29
+ * CN: {dashboard: {name: '监控中心'}}
30
+ * HK: {dashboard: {name: '監控中心'}}
31
+ * }
32
+ * }
33
+ **/
34
+ import Menu from 'ant-design-vue/es/menu'
35
+ import Icon from 'ant-design-vue/es/icon'
36
+ import fastEqual from 'fast-deep-equal'
37
+ import { getI18nKey } from '@vue2-client/utils/routerUtil'
38
+ import { mapMutations } from 'vuex'
39
+
40
+ const { Item, SubMenu } = Menu
41
+
42
+ const resolvePath = (path, params = {}) => {
43
+ let _path = path
44
+ Object.entries(params).forEach(([key, value]) => {
45
+ _path = _path.replace(new RegExp(`:${key}`, 'g'), value)
46
+ })
47
+ return _path
48
+ }
49
+
50
+ const toRoutesMap = (routes) => {
51
+ const map = {}
52
+ routes.forEach(route => {
53
+ map[route.fullPath] = route
54
+ if (route.children && route.children.length > 0) {
55
+ const childrenMap = toRoutesMap(route.children)
56
+ Object.assign(map, childrenMap)
57
+ }
58
+ })
59
+ return map
60
+ }
61
+
62
+ export default {
63
+ name: 'IMenu',
64
+ props: {
65
+ options: {
66
+ type: Array,
67
+ required: true
68
+ },
69
+ theme: {
70
+ type: String,
71
+ required: false,
72
+ default: 'dark'
73
+ },
74
+ mode: {
75
+ type: String,
76
+ required: false,
77
+ default: 'inline'
78
+ },
79
+ collapsed: {
80
+ type: Boolean,
81
+ required: false,
82
+ default: false
83
+ },
84
+ i18n: Object,
85
+ openKeys: Array
86
+ },
87
+ data () {
88
+ return {
89
+ selectedKeys: [],
90
+ sOpenKeys: [],
91
+ cachedOpenKeys: []
92
+ }
93
+ },
94
+ computed: {
95
+ menuTheme () {
96
+ return this.theme == 'light' ? this.theme : 'dark'
97
+ },
98
+ routesMap () {
99
+ return toRoutesMap(this.options)
100
+ }
101
+ },
102
+ created () {
103
+ this.updateMenu()
104
+ if (this.options.length > 0 && !this.options[0].fullPath) {
105
+ this.formatOptions(this.options, '')
106
+ }
107
+ // 自定义国际化配置
108
+ if (this.i18n && this.i18n.messages) {
109
+ const messages = this.i18n.messages
110
+ Object.keys(messages).forEach(key => {
111
+ this.$i18n.mergeLocaleMessage(key, messages[key])
112
+ })
113
+ }
114
+ },
115
+ watch: {
116
+ options (val) {
117
+ if (val.length > 0 && !val[0].fullPath) {
118
+ this.formatOptions(this.options, '')
119
+ }
120
+ },
121
+ i18n (val) {
122
+ if (val && val.messages) {
123
+ const messages = this.i18n.messages
124
+ Object.keys(messages).forEach(key => {
125
+ this.$i18n.mergeLocaleMessage(key, messages[key])
126
+ })
127
+ }
128
+ },
129
+ collapsed (val) {
130
+ if (val) {
131
+ this.cachedOpenKeys = this.sOpenKeys
132
+ this.sOpenKeys = []
133
+ } else {
134
+ this.sOpenKeys = this.cachedOpenKeys
135
+ }
136
+ },
137
+ '$route': function () {
138
+ if (this.$route.meta && this.$route.meta.singlePage) {
139
+ this.setSingle(this.$route)
140
+ }
141
+ this.updateMenu()
142
+ },
143
+ sOpenKeys (val) {
144
+ this.$emit('openChange', val)
145
+ this.$emit('update:openKeys', val)
146
+ }
147
+ },
148
+ methods: {
149
+ ...mapMutations('account', ['setSingle']),
150
+ renderIcon: function (h, icon, key) {
151
+ if (this.$scopedSlots.icon && icon && icon !== 'none') {
152
+ const vnodes = this.$scopedSlots.icon({ icon, key })
153
+ vnodes.forEach(vnode => {
154
+ vnode.data.class = vnode.data.class ? vnode.data.class : []
155
+ vnode.data.class.push('anticon')
156
+ })
157
+ return vnodes
158
+ }
159
+ return !icon || icon == 'none' ? null : h(Icon, { props: { type: icon } })
160
+ },
161
+ renderMenuItem: function (h, menu) {
162
+ let tag = 'router-link'
163
+ const path = resolvePath(menu.fullPath, menu.meta.params)
164
+ let config = { props: { to: { path, query: menu.meta.query } }, attrs: { style: 'overflow:hidden;white-space:normal;text-overflow:clip;' } }
165
+ if (menu.meta && menu.meta.link) {
166
+ tag = 'a'
167
+ config = { attrs: { style: 'overflow:hidden;white-space:normal;text-overflow:clip;', href: menu.meta.link, target: '_blank' } }
168
+ }
169
+ return h(
170
+ Item, { key: menu.fullPath },
171
+ [
172
+ h(tag, config,
173
+ [
174
+ this.renderIcon(h, menu.meta ? menu.meta.icon : 'none', menu.fullPath),
175
+ this.$t(getI18nKey(menu.fullPath))
176
+ ]
177
+ )
178
+ ]
179
+ )
180
+ },
181
+ renderSubMenu: function (h, menu) {
182
+ const this_ = this
183
+ const subItem = [h('span', { slot: 'title', attrs: { style: 'overflow:hidden;white-space:normal;text-overflow:clip;' } },
184
+ [
185
+ this.renderIcon(h, menu.meta ? menu.meta.icon : 'none', menu.fullPath),
186
+ this.$t(getI18nKey(menu.fullPath))
187
+ ]
188
+ )]
189
+ const itemArr = []
190
+ menu.children.forEach(function (item) {
191
+ itemArr.push(this_.renderItem(h, item))
192
+ })
193
+ return h(SubMenu, { key: menu.fullPath },
194
+ subItem.concat(itemArr)
195
+ )
196
+ },
197
+ renderItem: function (h, menu) {
198
+ const meta = menu.meta
199
+ if (!meta || !meta.invisible) {
200
+ let renderChildren = false
201
+ const children = menu.children
202
+ if (children != undefined) {
203
+ for (let i = 0; i < children.length; i++) {
204
+ const childMeta = children[i].meta
205
+ if (!childMeta || !childMeta.invisible) {
206
+ renderChildren = true
207
+ break
208
+ }
209
+ }
210
+ }
211
+ return (menu.children && renderChildren) ? this.renderSubMenu(h, menu) : this.renderMenuItem(h, menu)
212
+ }
213
+ },
214
+ renderMenu: function (h, menuTree) {
215
+ const this_ = this
216
+ const menuArr = []
217
+ menuTree.forEach(function (menu, i) {
218
+ menuArr.push(this_.renderItem(h, menu, '0', i))
219
+ })
220
+ return menuArr
221
+ },
222
+ formatOptions (options, parentPath) {
223
+ options.forEach(route => {
224
+ const isFullPath = route.path.substring(0, 1) == '/'
225
+ route.fullPath = isFullPath ? route.path : parentPath + '/' + route.path
226
+ if (route.children) {
227
+ this.formatOptions(route.children, route.fullPath)
228
+ }
229
+ })
230
+ },
231
+ updateMenu () {
232
+ this.selectedKeys = this.getSelectedKeys()
233
+ let openKeys = this.selectedKeys.filter(item => item !== '')
234
+ openKeys = openKeys.slice(0, openKeys.length - 1)
235
+ if (!fastEqual(openKeys, this.sOpenKeys)) {
236
+ this.collapsed || this.mode === 'horizontal' ? this.cachedOpenKeys = openKeys : this.sOpenKeys = openKeys
237
+ }
238
+ },
239
+ getSelectedKeys () {
240
+ let matches = this.$route.matched
241
+ const route = matches[matches.length - 1]
242
+ let chose = this.routesMap[route.path]
243
+ if (chose.meta && chose.meta.highlight) {
244
+ chose = this.routesMap[chose.meta.highlight]
245
+ const resolve = this.$router.resolve({ path: chose.fullPath })
246
+ matches = (resolve.resolved && resolve.resolved.matched) || matches
247
+ }
248
+ return matches.map(item => item.path)
249
+ }
250
+ },
251
+ render (h) {
252
+ return h(
253
+ Menu,
254
+ {
255
+ props: {
256
+ theme: this.menuTheme,
257
+ mode: this.$props.mode,
258
+ selectedKeys: this.selectedKeys,
259
+ openKeys: this.openKeys ? this.openKeys : this.sOpenKeys
260
+ },
261
+ on: {
262
+ 'update:openKeys': (val) => {
263
+ this.sOpenKeys = val
264
+ },
265
+ click: (obj) => {
266
+ obj.selectedKeys = [obj.key]
267
+ this.$emit('select', obj)
268
+ }
269
+ }
270
+ }, this.renderMenu(h, this.options)
271
+ )
272
+ }
273
+ }
@@ -0,0 +1,64 @@
1
+ <template>
2
+ <div :class="['page-header', layout, pageWidth]">
3
+ <div class="page-header-wide">
4
+ <div class="breadcrumb">
5
+ <a-breadcrumb>
6
+ <a-breadcrumb-item :key="index" v-for="(item, index) in breadcrumb">
7
+ <span>{{ item }}</span>
8
+ </a-breadcrumb-item>
9
+ </a-breadcrumb>
10
+ </div>
11
+ <div class="detail">
12
+ <div class="main">
13
+ <div class="row">
14
+ <h1 v-if="showPageTitle && title" class="title">{{ title }}</h1>
15
+ <div class="action"><slot name="action"></slot></div>
16
+ </div>
17
+ <div class="row">
18
+ <div v-if="this.$slots.content" class="content">
19
+ <div v-if="avatar" class="avatar"><a-avatar :src="avatar" :size="72" /></div>
20
+ <slot name="content"></slot>
21
+ </div>
22
+ <div v-if="this.$slots.extra" class="extra"><slot name="extra"></slot></div>
23
+ </div>
24
+ </div>
25
+ </div>
26
+ </div>
27
+ </div>
28
+ </template>
29
+
30
+ <script>
31
+ import { mapState } from 'vuex'
32
+ export default {
33
+ name: 'PageHeader',
34
+ props: {
35
+ // eslint-disable-next-line vue/require-default-prop
36
+ title: {
37
+ type: [String, Boolean],
38
+ required: false
39
+ },
40
+ // eslint-disable-next-line vue/require-default-prop
41
+ breadcrumb: {
42
+ type: Array,
43
+ required: false
44
+ },
45
+ // eslint-disable-next-line vue/require-default-prop
46
+ logo: {
47
+ type: String,
48
+ required: false
49
+ },
50
+ // eslint-disable-next-line vue/require-default-prop
51
+ avatar: {
52
+ type: String,
53
+ required: false
54
+ }
55
+ },
56
+ computed: {
57
+ ...mapState('setting', ['layout', 'showPageTitle', 'pageWidth'])
58
+ }
59
+ }
60
+ </script>
61
+
62
+ <style lang="less" scoped>
63
+ @import "index";
64
+ </style>
@@ -0,0 +1,40 @@
1
+ .page-header{
2
+ background: @base-bg-color;
3
+ padding: 16px 24px;
4
+ &.head.fixed{
5
+ margin: auto;
6
+ max-width: 1400px;
7
+ }
8
+ .page-header-wide{
9
+ .breadcrumb{
10
+ margin-bottom: 20px;
11
+ }
12
+ .detail{
13
+ display: flex;
14
+ .row {
15
+ display: flex;
16
+ flex-wrap: wrap;
17
+ justify-content: space-between;
18
+ }
19
+ .avatar {
20
+ margin:0 24px 0 0;
21
+ }
22
+ .main{
23
+ width: 100%;
24
+ .title{
25
+ font-size: 20px;
26
+ color: @title-color;
27
+ margin-bottom: 16px;
28
+ }
29
+ .content{
30
+ display: flex;
31
+ flex-wrap: wrap;
32
+ color: @text-color-second;
33
+ }
34
+ .extra{
35
+ display: flex;
36
+ }
37
+ }
38
+ }
39
+ }
40
+ }