From 315bb78f53b5a6df9b921c8cbae76275fdb46c5d Mon Sep 17 00:00:00 2001 From: 15820893422 <1978476055@qq.com> Date: Wed, 17 Apr 2024 09:40:49 +0800 Subject: [PATCH] first commit --- .editorconfig | 14 + .env.development | 20 + .env.production | 7 + .env.staging | 8 + .eslintignore | 5 + .eslintrc.js | 198 + .gitignore | 23 + .travis.yml | 5 + LICENSE | 21 + README.es.md | 263 + README.ja.md | 263 + README.md | 263 + README.zh-CN.md | 263 + babel.config.js | 5 + build/index.js | 45 + jest.config.js | 24 + jsconfig.json | 9 + mock/article.js | 125 + mock/index.js | 66 + mock/mock-server.js | 93 + mock/remote-search.js | 60 + mock/role/index.js | 98 + mock/role/routes.js | 525 + mock/user.js | 92 + package.json | 136 + patches/element-ui+2.13.2.patch | 69 + plop-templates/component/index.hbs | 26 + plop-templates/component/prompt.js | 64 + plop-templates/store/index.hbs | 16 + plop-templates/store/prompt.js | 62 + plop-templates/utils.js | 9 + plop-templates/view/index.hbs | 26 + plop-templates/view/prompt.js | 55 + plopfile.js | 9 + postcss.config.js | 5 + public/UEditor/dialogs/anchor/anchor.html | 40 + .../UEditor/dialogs/attachment/attachment.css | 681 + .../dialogs/attachment/attachment.html | 60 + .../UEditor/dialogs/attachment/attachment.js | 760 + .../attachment/fileTypeImages/icon_chm.gif | Bin 0 -> 923 bytes .../fileTypeImages/icon_default.png | Bin 0 -> 841 bytes .../attachment/fileTypeImages/icon_doc.gif | Bin 0 -> 1012 bytes .../attachment/fileTypeImages/icon_exe.gif | Bin 0 -> 949 bytes .../attachment/fileTypeImages/icon_jpg.gif | Bin 0 -> 950 bytes .../attachment/fileTypeImages/icon_mp3.gif | Bin 0 -> 986 bytes .../attachment/fileTypeImages/icon_mv.gif | Bin 0 -> 1001 bytes .../attachment/fileTypeImages/icon_pdf.gif | Bin 0 -> 996 bytes .../attachment/fileTypeImages/icon_ppt.gif | Bin 0 -> 1001 bytes .../attachment/fileTypeImages/icon_psd.gif | Bin 0 -> 1009 bytes .../attachment/fileTypeImages/icon_rar.gif | Bin 0 -> 1007 bytes .../attachment/fileTypeImages/icon_txt.gif | Bin 0 -> 970 bytes .../attachment/fileTypeImages/icon_xls.gif | Bin 0 -> 1005 bytes .../dialogs/attachment/images/alignicon.gif | Bin 0 -> 1051 bytes .../dialogs/attachment/images/alignicon.png | Bin 0 -> 3714 bytes .../UEditor/dialogs/attachment/images/bg.png | Bin 0 -> 2810 bytes .../dialogs/attachment/images/file-icons.gif | Bin 0 -> 20097 bytes .../dialogs/attachment/images/file-icons.png | Bin 0 -> 44070 bytes .../dialogs/attachment/images/icons.gif | Bin 0 -> 453 bytes .../dialogs/attachment/images/icons.png | Bin 0 -> 2678 bytes .../dialogs/attachment/images/image.png | Bin 0 -> 1672 bytes .../dialogs/attachment/images/progress.png | Bin 0 -> 1269 bytes .../dialogs/attachment/images/success.gif | Bin 0 -> 445 bytes .../dialogs/attachment/images/success.png | Bin 0 -> 1621 bytes .../UEditor/dialogs/background/background.css | 95 + .../dialogs/background/background.html | 56 + .../UEditor/dialogs/background/background.js | 376 + .../UEditor/dialogs/background/images/bg.png | Bin 0 -> 2810 bytes .../dialogs/background/images/success.png | Bin 0 -> 1621 bytes public/UEditor/dialogs/charts/chart.config.js | 65 + public/UEditor/dialogs/charts/charts.css | 165 + public/UEditor/dialogs/charts/charts.html | 89 + public/UEditor/dialogs/charts/charts.js | 519 + .../UEditor/dialogs/charts/images/charts0.png | Bin 0 -> 25306 bytes .../UEditor/dialogs/charts/images/charts1.png | Bin 0 -> 19263 bytes .../UEditor/dialogs/charts/images/charts2.png | Bin 0 -> 23016 bytes .../UEditor/dialogs/charts/images/charts3.png | Bin 0 -> 7823 bytes .../UEditor/dialogs/charts/images/charts4.png | Bin 0 -> 8344 bytes .../UEditor/dialogs/charts/images/charts5.png | Bin 0 -> 47084 bytes public/UEditor/dialogs/emotion/emotion.css | 43 + public/UEditor/dialogs/emotion/emotion.html | 54 + public/UEditor/dialogs/emotion/emotion.js | 186 + public/UEditor/dialogs/emotion/images/0.gif | Bin 0 -> 43 bytes .../UEditor/dialogs/emotion/images/bface.gif | Bin 0 -> 27167 bytes .../UEditor/dialogs/emotion/images/cface.gif | Bin 0 -> 8603 bytes .../UEditor/dialogs/emotion/images/fface.gif | Bin 0 -> 18479 bytes .../dialogs/emotion/images/jxface2.gif | Bin 0 -> 40706 bytes .../emotion/images/neweditor-tab-bg.png | Bin 0 -> 216 bytes .../UEditor/dialogs/emotion/images/tface.gif | Bin 0 -> 19805 bytes .../UEditor/dialogs/emotion/images/wface.gif | Bin 0 -> 49850 bytes .../UEditor/dialogs/emotion/images/yface.gif | Bin 0 -> 28409 bytes public/UEditor/dialogs/gmap/gmap.html | 89 + public/UEditor/dialogs/help/help.css | 7 + public/UEditor/dialogs/help/help.html | 82 + public/UEditor/dialogs/help/help.js | 56 + public/UEditor/dialogs/image/image.css | 894 + public/UEditor/dialogs/image/image.html | 120 + public/UEditor/dialogs/image/image.js | 1148 + .../dialogs/image/images/alignicon.jpg | Bin 0 -> 16101 bytes public/UEditor/dialogs/image/images/bg.png | Bin 0 -> 2810 bytes public/UEditor/dialogs/image/images/icons.gif | Bin 0 -> 453 bytes public/UEditor/dialogs/image/images/icons.png | Bin 0 -> 2678 bytes public/UEditor/dialogs/image/images/image.png | Bin 0 -> 1672 bytes .../UEditor/dialogs/image/images/progress.png | Bin 0 -> 1269 bytes .../UEditor/dialogs/image/images/success.gif | Bin 0 -> 445 bytes .../UEditor/dialogs/image/images/success.png | Bin 0 -> 1621 bytes .../dialogs/insertframe/insertframe.html | 98 + public/UEditor/dialogs/internal.js | 80 + public/UEditor/dialogs/link/link.html | 126 + public/UEditor/dialogs/map/map.html | 135 + public/UEditor/dialogs/map/show.html | 118 + public/UEditor/dialogs/music/music.css | 30 + public/UEditor/dialogs/music/music.html | 32 + public/UEditor/dialogs/music/music.js | 192 + public/UEditor/dialogs/preview/preview.html | 40 + .../UEditor/dialogs/scrawl/images/addimg.png | Bin 0 -> 628 bytes .../UEditor/dialogs/scrawl/images/brush.png | Bin 0 -> 608 bytes .../UEditor/dialogs/scrawl/images/delimg.png | Bin 0 -> 516 bytes .../UEditor/dialogs/scrawl/images/delimgH.png | Bin 0 -> 578 bytes .../UEditor/dialogs/scrawl/images/empty.png | Bin 0 -> 519 bytes .../UEditor/dialogs/scrawl/images/emptyH.png | Bin 0 -> 657 bytes .../UEditor/dialogs/scrawl/images/eraser.png | Bin 0 -> 43271 bytes public/UEditor/dialogs/scrawl/images/redo.png | Bin 0 -> 454 bytes .../UEditor/dialogs/scrawl/images/redoH.png | Bin 0 -> 536 bytes .../UEditor/dialogs/scrawl/images/scale.png | Bin 0 -> 435 bytes .../UEditor/dialogs/scrawl/images/scaleH.png | Bin 0 -> 330 bytes public/UEditor/dialogs/scrawl/images/size.png | Bin 0 -> 775 bytes public/UEditor/dialogs/scrawl/images/undo.png | Bin 0 -> 444 bytes .../UEditor/dialogs/scrawl/images/undoH.png | Bin 0 -> 511 bytes public/UEditor/dialogs/scrawl/scrawl.css | 72 + public/UEditor/dialogs/scrawl/scrawl.html | 95 + public/UEditor/dialogs/scrawl/scrawl.js | 671 + .../dialogs/searchreplace/searchreplace.html | 102 + .../dialogs/searchreplace/searchreplace.js | 164 + .../dialogs/snapscreen/snapscreen.html | 58 + public/UEditor/dialogs/spechars/spechars.html | 21 + public/UEditor/dialogs/spechars/spechars.js | 57 + public/UEditor/dialogs/table/dragicon.png | Bin 0 -> 304 bytes public/UEditor/dialogs/table/edittable.css | 84 + public/UEditor/dialogs/table/edittable.html | 64 + public/UEditor/dialogs/table/edittable.js | 237 + public/UEditor/dialogs/table/edittd.html | 61 + public/UEditor/dialogs/table/edittip.html | 33 + public/UEditor/dialogs/template/config.js | 42 + public/UEditor/dialogs/template/images/bg.gif | Bin 0 -> 84 bytes .../UEditor/dialogs/template/images/pre0.png | Bin 0 -> 250 bytes .../UEditor/dialogs/template/images/pre1.png | Bin 0 -> 291 bytes .../UEditor/dialogs/template/images/pre2.png | Bin 0 -> 394 bytes .../UEditor/dialogs/template/images/pre3.png | Bin 0 -> 485 bytes .../UEditor/dialogs/template/images/pre4.png | Bin 0 -> 393 bytes public/UEditor/dialogs/template/template.css | 18 + public/UEditor/dialogs/template/template.html | 26 + public/UEditor/dialogs/template/template.js | 53 + public/UEditor/dialogs/video/images/bg.png | Bin 0 -> 2810 bytes .../dialogs/video/images/center_focus.jpg | Bin 0 -> 11795 bytes .../dialogs/video/images/file-icons.gif | Bin 0 -> 20097 bytes .../dialogs/video/images/file-icons.png | Bin 0 -> 44070 bytes public/UEditor/dialogs/video/images/icons.gif | Bin 0 -> 453 bytes public/UEditor/dialogs/video/images/icons.png | Bin 0 -> 2678 bytes public/UEditor/dialogs/video/images/image.png | Bin 0 -> 1672 bytes .../dialogs/video/images/left_focus.jpg | Bin 0 -> 11423 bytes .../dialogs/video/images/none_focus.jpg | Bin 0 -> 11546 bytes .../UEditor/dialogs/video/images/progress.png | Bin 0 -> 1269 bytes .../dialogs/video/images/right_focus.jpg | Bin 0 -> 11334 bytes .../UEditor/dialogs/video/images/success.gif | Bin 0 -> 445 bytes .../UEditor/dialogs/video/images/success.png | Bin 0 -> 1621 bytes public/UEditor/dialogs/video/video.css | 635 + public/UEditor/dialogs/video/video.html | 86 + public/UEditor/dialogs/video/video.js | 797 + public/UEditor/dialogs/webapp/webapp.html | 53 + public/UEditor/dialogs/wordimage/tangram.js | 1495 + .../UEditor/dialogs/wordimage/wordimage.html | 111 + public/UEditor/dialogs/wordimage/wordimage.js | 157 + public/UEditor/index.html | 175 + public/UEditor/lang/en/en.js | 755 + public/UEditor/lang/en/images/addimage.png | Bin 0 -> 3373 bytes .../lang/en/images/alldeletebtnhoverskin.png | Bin 0 -> 743 bytes .../lang/en/images/alldeletebtnupskin.png | Bin 0 -> 743 bytes public/UEditor/lang/en/images/background.png | Bin 0 -> 3854 bytes public/UEditor/lang/en/images/button.png | Bin 0 -> 4929 bytes public/UEditor/lang/en/images/copy.png | Bin 0 -> 1222 bytes .../UEditor/lang/en/images/deletedisable.png | Bin 0 -> 649 bytes .../UEditor/lang/en/images/deleteenable.png | Bin 0 -> 664 bytes .../UEditor/lang/en/images/listbackground.png | Bin 0 -> 3750 bytes public/UEditor/lang/en/images/localimage.png | Bin 0 -> 3083 bytes public/UEditor/lang/en/images/music.png | Bin 0 -> 91561 bytes .../lang/en/images/rotateleftdisable.png | Bin 0 -> 719 bytes .../lang/en/images/rotateleftenable.png | Bin 0 -> 952 bytes .../lang/en/images/rotaterightdisable.png | Bin 0 -> 754 bytes .../lang/en/images/rotaterightenable.png | Bin 0 -> 1007 bytes public/UEditor/lang/en/images/upload.png | Bin 0 -> 3941 bytes public/UEditor/lang/zh-cn/images/copy.png | Bin 0 -> 4319 bytes .../UEditor/lang/zh-cn/images/localimage.png | Bin 0 -> 6979 bytes public/UEditor/lang/zh-cn/images/music.png | Bin 0 -> 23106 bytes public/UEditor/lang/zh-cn/images/upload.png | Bin 0 -> 6608 bytes public/UEditor/lang/zh-cn/zh-cn.js | 669 + public/UEditor/themes/default/css/ueditor.css | 1905 + .../themes/default/css/ueditor.min.css | 8 + public/UEditor/themes/default/dialogbase.css | 100 + .../UEditor/themes/default/html/preview.html | 22 + .../UEditor/themes/default/images/anchor.gif | Bin 0 -> 184 bytes .../UEditor/themes/default/images/arrow.png | Bin 0 -> 1173 bytes .../themes/default/images/arrow_down.png | Bin 0 -> 1610 bytes .../themes/default/images/arrow_up.png | Bin 0 -> 1649 bytes .../themes/default/images/button-bg.gif | Bin 0 -> 1114 bytes .../themes/default/images/cancelbutton.gif | Bin 0 -> 1227 bytes .../UEditor/themes/default/images/charts.png | Bin 0 -> 518 bytes .../themes/default/images/cursor_h.gif | Bin 0 -> 253 bytes .../themes/default/images/cursor_h.png | Bin 0 -> 175 bytes .../themes/default/images/cursor_v.gif | Bin 0 -> 370 bytes .../themes/default/images/cursor_v.png | Bin 0 -> 177 bytes .../themes/default/images/dialog-title-bg.png | Bin 0 -> 938 bytes .../themes/default/images/filescan.png | Bin 0 -> 4282 bytes .../themes/default/images/highlighted.gif | Bin 0 -> 111 bytes .../themes/default/images/icons-all.gif | Bin 0 -> 3750 bytes .../UEditor/themes/default/images/icons.gif | Bin 0 -> 20947 bytes .../UEditor/themes/default/images/icons.png | Bin 0 -> 19694 bytes .../themes/default/images/iphone-bg.png | Bin 0 -> 56887 bytes .../themes/default/images/loaderror.png | Bin 0 -> 3209 bytes .../UEditor/themes/default/images/loading.gif | Bin 0 -> 734 bytes public/UEditor/themes/default/images/lock.gif | Bin 0 -> 1062 bytes .../default/images/neweditor-tab-bg.png | Bin 0 -> 216 bytes .../themes/default/images/pagebreak.gif | Bin 0 -> 54 bytes .../themes/default/images/previewMobile.png | Bin 0 -> 630 bytes .../UEditor/themes/default/images/scale.png | Bin 0 -> 167 bytes .../themes/default/images/sortable.png | Bin 0 -> 2851 bytes .../UEditor/themes/default/images/spacer.gif | Bin 0 -> 43 bytes .../themes/default/images/sparator_v.png | Bin 0 -> 122 bytes .../default/images/table-cell-align.png | Bin 0 -> 1847 bytes .../default/images/tangram-colorpicker.png | Bin 0 -> 17355 bytes .../themes/default/images/toolbar_bg.png | Bin 0 -> 170 bytes .../themes/default/images/unhighlighted.gif | Bin 0 -> 111 bytes .../UEditor/themes/default/images/upload.png | Bin 0 -> 6608 bytes .../themes/default/images/videologo.gif | Bin 0 -> 1604 bytes public/UEditor/themes/default/images/word.gif | Bin 0 -> 1019 bytes .../themes/default/images/wordpaste.png | Bin 0 -> 6467 bytes public/UEditor/themes/iframe.css | 1 + .../third-party/SyntaxHighlighter/shCore.js | 3655 + .../SyntaxHighlighter/shCoreDefault.css | 1 + .../third-party/codemirror/codemirror.css | 104 + .../third-party/codemirror/codemirror.js | 3581 + .../highcharts/adapters/mootools-adapter.js | 13 + .../adapters/mootools-adapter.src.js | 313 + .../highcharts/adapters/prototype-adapter.js | 15 + .../adapters/prototype-adapter.src.js | 316 + .../adapters/standalone-framework.js | 17 + .../adapters/standalone-framework.src.js | 583 + .../third-party/highcharts/highcharts-more.js | 50 + .../highcharts/highcharts-more.src.js | 2430 + .../third-party/highcharts/highcharts.js | 283 + .../third-party/highcharts/highcharts.src.js | 16974 +++ .../highcharts/modules/annotations.js | 7 + .../highcharts/modules/annotations.src.js | 401 + .../highcharts/modules/canvas-tools.js | 133 + .../highcharts/modules/canvas-tools.src.js | 3113 + .../third-party/highcharts/modules/data.js | 17 + .../highcharts/modules/data.src.js | 582 + .../highcharts/modules/drilldown.js | 11 + .../highcharts/modules/drilldown.src.js | 447 + .../highcharts/modules/exporting.js | 22 + .../highcharts/modules/exporting.src.js | 709 + .../third-party/highcharts/modules/funnel.js | 12 + .../highcharts/modules/funnel.src.js | 289 + .../third-party/highcharts/modules/heatmap.js | 1 + .../highcharts/modules/heatmap.src.js | 53 + .../third-party/highcharts/modules/map.js | 27 + .../third-party/highcharts/modules/map.src.js | 1002 + .../highcharts/modules/no-data-to-display.js | 12 + .../modules/no-data-to-display.src.js | 128 + .../highcharts/themes/dark-blue.js | 254 + .../highcharts/themes/dark-green.js | 255 + .../third-party/highcharts/themes/gray.js | 257 + .../third-party/highcharts/themes/grid.js | 103 + .../third-party/highcharts/themes/skies.js | 89 + public/UEditor/third-party/jquery-1.10.2.js | 9789 ++ .../UEditor/third-party/jquery-1.10.2.min.js | 6 + .../UEditor/third-party/jquery-1.10.2.min.map | 1 + .../snapscreen/UEditorSnapscreen.exe | Bin 0 -> 519936 bytes .../UEditor/third-party/video-js/font/vjs.eot | Bin 0 -> 3536 bytes .../UEditor/third-party/video-js/font/vjs.svg | 65 + .../UEditor/third-party/video-js/font/vjs.ttf | Bin 0 -> 3372 bytes .../third-party/video-js/font/vjs.woff | Bin 0 -> 4228 bytes .../UEditor/third-party/video-js/video-js.css | 766 + .../third-party/video-js/video-js.min.css | 5 + .../UEditor/third-party/video-js/video.dev.js | 7105 ++ public/UEditor/third-party/video-js/video.js | 129 + .../third-party/webuploader/webuploader.css | 28 + .../webuploader/webuploader.custom.js | 5670 + .../webuploader/webuploader.custom.min.js | 2 + .../webuploader/webuploader.flashonly.js | 4176 + .../webuploader/webuploader.flashonly.min.js | 2 + .../webuploader/webuploader.html5only.js | 5559 + .../webuploader/webuploader.html5only.min.js | 2 + .../third-party/webuploader/webuploader.js | 6733 ++ .../webuploader/webuploader.min.js | 2 + .../webuploader/webuploader.withoutimage.js | 4593 + .../webuploader.withoutimage.min.js | 2 + public/UEditor/third-party/xss.min.js | 1 + .../zeroclipboard/ZeroClipboard.js | 1256 + .../zeroclipboard/ZeroClipboard.min.js | 9 + public/UEditor/ueditor.all.js | 29559 +++++ public/UEditor/ueditor.all.min.js | 18 + public/UEditor/ueditor.config.js | 474 + public/UEditor/ueditor.parse.js | 1022 + public/UEditor/ueditor.parse.min.js | 7 + public/favicon.ico | Bin 0 -> 5445 bytes public/index.html | 21 + public/screen/110000.json | 1 + public/screen/120000.json | 1 + public/screen/130000.json | 1 + public/screen/140000.json | 1 + public/screen/150000.json | 1 + public/screen/210000.json | 1 + public/screen/220000.json | 1 + public/screen/230000.json | 1 + public/screen/310000.json | 1 + public/screen/320000.json | 1 + public/screen/330000.json | 1 + public/screen/340000.json | 1 + public/screen/350000.json | 1 + public/screen/360000.json | 1 + public/screen/370000.json | 1 + public/screen/410000.json | 1 + public/screen/420000.json | 1 + public/screen/430000.json | 1 + public/screen/440000.json | 1 + public/screen/450000.json | 1 + public/screen/460000.json | 1 + public/screen/500000.json | 1 + public/screen/510000.json | 1 + public/screen/520000.json | 1 + public/screen/530000.json | 1 + public/screen/540000.json | 1 + public/screen/610000.json | 1 + public/screen/620000.json | 1 + public/screen/630000.json | 1 + public/screen/640000.json | 1 + public/screen/650000.json | 1 + public/screen/710000.json | 1 + public/screen/810000.json | 1 + public/screen/820000.json | 1 + public/screen/china.json | 98604 ++++++++++++++++ public/screen/chinaNanhai.json | 1 + sh.exe.stackdump | 11 + src/App.vue | 69 + src/api/accounts.js | 274 + src/api/app.js | 233 + src/api/cms.js | 83 + src/api/community.js | 165 + src/api/diy.js | 361 + src/api/freight.js | 47 + src/api/home.js | 84 + src/api/maintain.js | 114 + src/api/marketing.js | 665 + src/api/merchant.js | 380 + src/api/order.js | 165 + src/api/product.js | 560 + src/api/promoter.js | 233 + src/api/request.js | 82 + src/api/screen.js | 28 + src/api/setting.js | 415 + src/api/sms.js | 94 + src/api/system.js | 389 + src/api/systemForm.js | 73 + src/api/user.js | 477 + src/api/userFeedback.js | 77 + src/assets/401_images/401.gif | Bin 0 -> 164227 bytes src/assets/404_images/404.png | Bin 0 -> 98071 bytes src/assets/404_images/404_cloud.png | Bin 0 -> 4766 bytes .../custom-theme/fonts/element-icons.ttf | Bin 0 -> 11028 bytes .../custom-theme/fonts/element-icons.woff | Bin 0 -> 6124 bytes src/assets/custom-theme/index.css | 1 + src/assets/images/assist_title.png | Bin 0 -> 1857 bytes src/assets/images/bg.jpg | Bin 0 -> 305003 bytes src/assets/images/bjt.png | Bin 0 -> 2182 bytes src/assets/images/bluesgin.png | Bin 0 -> 20432 bytes src/assets/images/broadcast_title.png | Bin 0 -> 1537 bytes src/assets/images/c_presell_bg0.png | Bin 0 -> 38097 bytes src/assets/images/c_presell_bg1.png | Bin 0 -> 26181 bytes src/assets/images/c_presell_bg2.png | Bin 0 -> 28488 bytes src/assets/images/coupon-bg.png | Bin 0 -> 2526 bytes src/assets/images/default.jpg | Bin 0 -> 20200 bytes src/assets/images/dui.png | Bin 0 -> 177 bytes src/assets/images/edit.png | Bin 0 -> 437 bytes src/assets/images/electric.png | Bin 0 -> 1773 bytes src/assets/images/expressi.jpg | Bin 0 -> 2634 bytes src/assets/images/f.png | Bin 0 -> 7127 bytes src/assets/images/foot-001.png | Bin 0 -> 1946 bytes src/assets/images/foot-0010.png | Bin 0 -> 2016 bytes src/assets/images/foot-002.png | Bin 0 -> 1690 bytes src/assets/images/foot-003.png | Bin 0 -> 1519 bytes src/assets/images/foot-004.png | Bin 0 -> 1417 bytes src/assets/images/foot-005.png | Bin 0 -> 3578 bytes src/assets/images/foot-006.png | Bin 0 -> 2681 bytes src/assets/images/foot-007.png | Bin 0 -> 2133 bytes src/assets/images/foot-008.png | Bin 0 -> 1899 bytes src/assets/images/foot-009.png | Bin 0 -> 2482 bytes src/assets/images/formImg.png | Bin 0 -> 33503 bytes src/assets/images/gg.jpg | Bin 0 -> 32035 bytes src/assets/images/goods_icon.png | Bin 0 -> 2028 bytes src/assets/images/greesgin.png | Bin 0 -> 23714 bytes src/assets/images/group_title.png | Bin 0 -> 1570 bytes src/assets/images/head.gif | Bin 0 -> 129103 bytes src/assets/images/icons.png | Bin 0 -> 19694 bytes src/assets/images/integral.png | Bin 0 -> 142579 bytes src/assets/images/laber.png | Bin 0 -> 11730 bytes src/assets/images/member.png | Bin 0 -> 16763 bytes src/assets/images/member01.png | Bin 0 -> 2626 bytes src/assets/images/mobilefoot.png | Bin 0 -> 1348 bytes src/assets/images/mobilehead.png | Bin 0 -> 12673 bytes src/assets/images/moren.jpg | Bin 0 -> 2768 bytes src/assets/images/news.png | Bin 0 -> 2991 bytes src/assets/images/no-message.png | Bin 0 -> 28582 bytes src/assets/images/no-msg.png | Bin 0 -> 28187 bytes src/assets/images/no.png | Bin 0 -> 4166 bytes src/assets/images/oragesgin.png | Bin 0 -> 20903 bytes src/assets/images/order1.png | Bin 0 -> 1183 bytes src/assets/images/order2.png | Bin 0 -> 1306 bytes src/assets/images/order3.png | Bin 0 -> 1759 bytes src/assets/images/order4.png | Bin 0 -> 1936 bytes src/assets/images/order5.png | Bin 0 -> 1576 bytes src/assets/images/order_icon.png | Bin 0 -> 1193 bytes src/assets/images/pclogin.png | Bin 0 -> 82634 bytes src/assets/images/phoneBox.png | Bin 0 -> 8601 bytes src/assets/images/pinksgin.png | Bin 0 -> 21931 bytes src/assets/images/plant_bg.png | Bin 0 -> 6459 bytes src/assets/images/plant_form.png | Bin 0 -> 8968 bytes src/assets/images/plant_title.png | Bin 0 -> 1425 bytes src/assets/images/points_mall.png | Bin 0 -> 79096 bytes src/assets/images/presell_bg.png | Bin 0 -> 4473 bytes src/assets/images/presell_title.png | Bin 0 -> 2518 bytes src/assets/images/product_icon.png | Bin 0 -> 3048 bytes src/assets/images/purplesign.png | Bin 0 -> 20556 bytes src/assets/images/rank_cate.png | Bin 0 -> 523 bytes src/assets/images/rank_num.png | Bin 0 -> 257 bytes src/assets/images/rank_title.png | Bin 0 -> 4841 bytes src/assets/images/redsgin.png | Bin 0 -> 22235 bytes src/assets/images/ren.png | Bin 0 -> 31925 bytes src/assets/images/ren1.png | Bin 0 -> 908 bytes src/assets/images/ren2.png | Bin 0 -> 709 bytes src/assets/images/right.png | Bin 0 -> 3959 bytes src/assets/images/sort01.jpg | Bin 0 -> 24394 bytes src/assets/images/sort02.jpg | Bin 0 -> 17689 bytes src/assets/images/sort03.jpg | Bin 0 -> 26578 bytes src/assets/images/sort11.jpg | Bin 0 -> 25526 bytes src/assets/images/sort12.jpg | Bin 0 -> 18771 bytes src/assets/images/sort13.jpg | Bin 0 -> 27670 bytes src/assets/images/spike_title.png | Bin 0 -> 1949 bytes src/assets/images/store_avatar.png | Bin 0 -> 17370 bytes src/assets/images/store_bg.png | Bin 0 -> 145016 bytes src/assets/images/store_icon.png | Bin 0 -> 2599 bytes src/assets/images/svip.png | Bin 0 -> 3546 bytes src/assets/images/themStyle/blue1.jpg | Bin 0 -> 176997 bytes src/assets/images/themStyle/blue2.jpg | Bin 0 -> 121784 bytes src/assets/images/themStyle/blue3.jpg | Bin 0 -> 119728 bytes src/assets/images/themStyle/green1.jpg | Bin 0 -> 170185 bytes src/assets/images/themStyle/green2.jpg | Bin 0 -> 119430 bytes src/assets/images/themStyle/green3.jpg | Bin 0 -> 117574 bytes src/assets/images/themStyle/orange1.jpg | Bin 0 -> 171494 bytes src/assets/images/themStyle/orange2.jpg | Bin 0 -> 120052 bytes src/assets/images/themStyle/orange3.jpg | Bin 0 -> 118704 bytes src/assets/images/themStyle/pink1.jpg | Bin 0 -> 163865 bytes src/assets/images/themStyle/pink2.jpg | Bin 0 -> 113670 bytes src/assets/images/themStyle/pink3.jpg | Bin 0 -> 113778 bytes src/assets/images/themStyle/purple1.jpg | Bin 0 -> 167935 bytes src/assets/images/themStyle/purple2.jpg | Bin 0 -> 115959 bytes src/assets/images/themStyle/purple3.jpg | Bin 0 -> 114242 bytes src/assets/images/themStyle/red1.jpg | Bin 0 -> 172741 bytes src/assets/images/themStyle/red2.jpg | Bin 0 -> 121761 bytes src/assets/images/themStyle/red3.jpg | Bin 0 -> 119315 bytes src/assets/images/topic_title.png | Bin 0 -> 4695 bytes src/assets/images/type_icon.png | Bin 0 -> 3125 bytes src/assets/images/uploadImg.png | Bin 0 -> 5139 bytes src/assets/images/user01.png | Bin 0 -> 15507 bytes src/assets/images/user_vip.png | Bin 0 -> 36339 bytes src/assets/images/wutu.png | Bin 0 -> 24897 bytes src/assets/js/canvas-nest.min.js | 94 + src/assets/js/jigsaw.css | 127 + src/assets/js/jigsaw.js | 277 + src/assets/video/newOrderAudioLink.mp3 | Bin 0 -> 9216 bytes src/assets/video/notice.mp3 | Bin 0 -> 5268 bytes src/assets/video/notice.wav | Bin 0 -> 130044 bytes src/components/SvgIcon/index.vue | 71 + src/components/ThemePicker/index.vue | 183 + src/components/TopNav/index.vue | 200 + src/components/attrList/index.vue | 110 + src/components/breadCrumb/index.vue | 92 + src/components/cards/index.vue | 130 + src/components/copyright/index.vue | 73 + src/components/crossStore/index.vue | 304 + src/components/echarts/index.vue | 85 + src/components/echarts/mixins/resize.js | 65 + src/components/exportFile/fileList.vue | 134 + src/components/from/from.vue | 114 + src/components/goodList/index.vue | 179 + src/components/goodsList/index.vue | 413 + src/components/guidancePop/index.vue | 53 + src/components/hamBurger/index.vue | 53 + src/components/headerNotice/index.vue | 323 + src/components/headerSearch/index.vue | 189 + src/components/iconFrom/element-icons.js | 12 + src/components/iconFrom/index.vue | 117 + src/components/labelList/index.vue | 142 + src/components/linkaddress/index.vue | 715 + .../mobileConfig/c_auxiliary_box.vue | 84 + .../mobileConfig/c_auxiliary_line.vue | 97 + src/components/mobileConfig/c_banner.vue | 144 + .../mobileConfig/c_home_bargain.vue | 186 + src/components/mobileConfig/c_home_comb.vue | 156 + src/components/mobileConfig/c_home_coupon.vue | 114 + .../mobileConfig/c_home_goods_list.vue | 263 + src/components/mobileConfig/c_home_hot.vue | 128 + .../mobileConfig/c_home_hotranking.vue | 113 + src/components/mobileConfig/c_home_menu.vue | 189 + src/components/mobileConfig/c_home_pink.vue | 168 + src/components/mobileConfig/c_home_plant.vue | 146 + .../mobileConfig/c_home_presell.vue | 150 + .../mobileConfig/c_home_seckill.vue | 141 + .../mobileConfig/c_home_service.vue | 119 + src/components/mobileConfig/c_home_shop.vue | 148 + src/components/mobileConfig/c_home_title.vue | 141 + src/components/mobileConfig/c_home_topic.vue | 180 + src/components/mobileConfig/c_nav_bar.vue | 100 + src/components/mobileConfig/c_news_roll.vue | 140 + .../mobileConfig/c_picture_cube.vue | 119 + src/components/mobileConfig/c_search_box.vue | 135 + src/components/mobileConfig/c_ueditor_box.vue | 109 + .../mobileConfig/c_wechat_attention.vue | 125 + src/components/mobileConfig/c_wechat_live.vue | 97 + src/components/mobileConfig/index.js | 18 + src/components/mobileConfig/pageFoot.vue | 106 + src/components/mobileConfig/pageTitle.vue | 257 + .../mobileConfigRight/c_bg_color.vue | 98 + .../mobileConfigRight/c_cascader.vue | 82 + .../mobileConfigRight/c_comb_data.vue | 113 + src/components/mobileConfigRight/c_foot.vue | 278 + src/components/mobileConfigRight/c_goods.vue | 153 + .../mobileConfigRight/c_hot_box.vue | 22 + .../mobileConfigRight/c_hot_imgs.vue | 252 + .../mobileConfigRight/c_hot_word.vue | 153 + .../mobileConfigRight/c_input_item.vue | 91 + .../mobileConfigRight/c_input_number.vue | 88 + .../mobileConfigRight/c_is_show.vue | 73 + .../mobileConfigRight/c_menu_list.vue | 329 + .../mobileConfigRight/c_page_ueditor.vue | 127 + .../mobileConfigRight/c_pictrue.vue | 355 + .../mobileConfigRight/c_product.vue | 220 + src/components/mobileConfigRight/c_radio.vue | 85 + src/components/mobileConfigRight/c_select.vue | 79 + .../mobileConfigRight/c_select_item.vue | 203 + .../mobileConfigRight/c_select_list.vue | 255 + src/components/mobileConfigRight/c_set_up.vue | 68 + src/components/mobileConfigRight/c_slider.vue | 71 + src/components/mobileConfigRight/c_status.vue | 95 + src/components/mobileConfigRight/c_tab.vue | 144 + src/components/mobileConfigRight/c_text.vue | 68 + .../mobileConfigRight/c_txt_tab.vue | 144 + .../mobileConfigRight/c_upload_img.vue | 179 + src/components/mobileConfigRight/index.js | 18 + .../mobileFormConfig/c_home_checkbox.vue | 94 + .../mobileFormConfig/c_home_city.vue | 98 + .../mobileFormConfig/c_home_date.vue | 107 + .../mobileFormConfig/c_home_daterange.vue | 110 + .../mobileFormConfig/c_home_radio.vue | 94 + .../mobileFormConfig/c_home_select.vue | 94 + .../mobileFormConfig/c_home_text.vue | 102 + .../mobileFormConfig/c_home_time.vue | 98 + .../mobileFormConfig/c_home_timerange.vue | 98 + .../mobileFormConfig/c_upload_picture.vue | 94 + src/components/mobileFormConfig/index.js | 18 + .../mobileFormPage/home_checkbox.vue | 149 + src/components/mobileFormPage/home_city.vue | 149 + src/components/mobileFormPage/home_date.vue | 184 + .../mobileFormPage/home_daterange.vue | 185 + src/components/mobileFormPage/home_radio.vue | 150 + src/components/mobileFormPage/home_select.vue | 131 + src/components/mobileFormPage/home_text.vue | 162 + src/components/mobileFormPage/home_time.vue | 182 + .../mobileFormPage/home_timerange.vue | 182 + .../mobileFormPage/home_upload_picture.vue | 138 + src/components/mobileFormPage/index.js | 18 + src/components/mobilePage/banner.vue | 322 + src/components/mobilePage/home_bargain.vue | 601 + src/components/mobilePage/home_comb.vue | 449 + src/components/mobilePage/home_coupon.vue | 353 + src/components/mobilePage/home_goods_list.vue | 854 + src/components/mobilePage/home_hot.vue | 442 + src/components/mobilePage/home_hotranking.vue | 422 + src/components/mobilePage/home_menu.vue | 515 + src/components/mobilePage/home_news_roll.vue | 252 + src/components/mobilePage/home_pink.vue | 535 + src/components/mobilePage/home_plant.vue | 408 + src/components/mobilePage/home_presell.vue | 496 + src/components/mobilePage/home_seckill.vue | 539 + src/components/mobilePage/home_service.vue | 135 + src/components/mobilePage/home_shop.vue | 465 + src/components/mobilePage/home_title.vue | 235 + src/components/mobilePage/home_topic.vue | 404 + src/components/mobilePage/index.js | 17 + src/components/mobilePage/nav_bar.vue | 225 + src/components/mobilePage/picture_cube.vue | 465 + src/components/mobilePage/search_box.vue | 242 + src/components/mobilePage/wechat_live.vue | 503 + src/components/mobilePage/z_auxiliary_box.vue | 114 + .../mobilePage/z_auxiliary_line.vue | 157 + src/components/mobilePage/z_ueditor.vue | 136 + .../mobilePage/z_wechat_attention.vue | 209 + src/components/newsCategory/index.vue | 345 + .../newsCategory/newsCategoryFrom/index.js | 31 + .../newsCategory/newsCategoryFrom/index.vue | 56 + src/components/pagesFoot/index.vue | 120 + src/components/previewBox/index.vue | 66 + src/components/referrerList/index.vue | 165 + src/components/rightBtn/index.vue | 38 + src/components/rightPanel/index.vue | 154 + src/components/screenFull/index.vue | 69 + src/components/settingGuide/app.vue | 142 + src/components/settingGuide/index.js | 16 + src/components/settingGuide/routine.vue | 255 + src/components/settingGuide/wechat.vue | 379 + src/components/ueditorFrom/index.vue | 104 + src/components/uploadImg/index.vue | 532 + src/components/uploadPicture/index.vue | 1029 + .../uploadPicture/uploadFrom/index.js | 32 + .../uploadPicture/uploadFrom/index.vue | 54 + src/components/uploadVideo/index.vue | 142 + src/components/userList/index.vue | 151 + src/components/verifition/Verify.vue | 501 + .../verifition/Verify/VerifyPoints.vue | 350 + .../verifition/Verify/VerifySlide.vue | 511 + src/components/verifition/utils/ase.js | 21 + src/components/verifition/utils/util.js | 45 + src/components/wangEditor/editor.js | 36 + src/components/wangEditor/html.js | 35 + src/components/wangEditor/index.vue | 220 + src/components/wangEditor/monaco.vue | 76 + src/directive/clipboard/clipboard.js | 57 + src/directive/clipboard/index.js | 22 + src/directive/el-drag-dialog/drag.js | 86 + src/directive/el-drag-dialog/index.js | 22 + src/directive/el-table/adaptive.js | 50 + src/directive/el-table/index.js | 22 + src/directive/permission/index.js | 22 + src/directive/permission/permission.js | 31 + src/directive/sticky.js | 100 + src/directive/waves/index.js | 22 + src/directive/waves/waves.css | 26 + src/directive/waves/waves.js | 81 + src/filters/commFilter.js | 506 + src/filters/index.js | 78 + src/icons/index.js | 18 + src/icons/svg/404.svg | 1 + src/icons/svg/bug.svg | 1 + src/icons/svg/chart.svg | 1 + src/icons/svg/clipboard.svg | 1 + src/icons/svg/component.svg | 1 + src/icons/svg/dashboard.svg | 1 + src/icons/svg/documentation.svg | 1 + src/icons/svg/drag.svg | 1 + src/icons/svg/edit.svg | 1 + src/icons/svg/education.svg | 1 + src/icons/svg/email.svg | 1 + src/icons/svg/example.svg | 1 + src/icons/svg/excel.svg | 1 + src/icons/svg/exit-fullscreen.svg | 1 + src/icons/svg/eye-open.svg | 1 + src/icons/svg/eye.svg | 1 + src/icons/svg/form.svg | 1 + src/icons/svg/fullscreen.svg | 1 + src/icons/svg/guide.svg | 1 + src/icons/svg/icon.svg | 1 + src/icons/svg/international.svg | 1 + src/icons/svg/language.svg | 1 + src/icons/svg/link.svg | 1 + src/icons/svg/list.svg | 1 + src/icons/svg/lock.svg | 1 + src/icons/svg/message.svg | 1 + src/icons/svg/money.svg | 1 + src/icons/svg/nested.svg | 1 + src/icons/svg/password.svg | 1 + src/icons/svg/pdf.svg | 1 + src/icons/svg/people.svg | 1 + src/icons/svg/peoples.svg | 1 + src/icons/svg/qq.svg | 1 + src/icons/svg/search.svg | 1 + src/icons/svg/shopping.svg | 1 + src/icons/svg/size.svg | 1 + src/icons/svg/skill.svg | 1 + src/icons/svg/star.svg | 1 + src/icons/svg/tab.svg | 1 + src/icons/svg/table.svg | 1 + src/icons/svg/theme.svg | 1 + src/icons/svg/tree-table.svg | 1 + src/icons/svg/tree.svg | 1 + src/icons/svg/user.svg | 1 + src/icons/svg/wechat.svg | 1 + src/icons/svg/zip.svg | 1 + src/icons/svgo.yml | 22 + src/layout/component/aside.vue | 156 + src/layout/component/columnsAside.vue | 311 + src/layout/component/header.vue | 33 + src/layout/component/main.vue | 101 + src/layout/component/transverseAside.vue | 328 + src/layout/footer/index.vue | 39 + src/layout/index.vue | 101 + src/layout/logo/index.vue | 102 + src/layout/main/classic.vue | 39 + src/layout/main/columns.vue | 42 + src/layout/main/defaults.vue | 50 + src/layout/main/transverse.vue | 25 + src/layout/navBars/breadcrumb/breadcrumb.vue | 239 + src/layout/navBars/breadcrumb/index.vue | 98 + src/layout/navBars/breadcrumb/search.vue | 124 + src/layout/navBars/breadcrumb/setings.vue | 824 + src/layout/navBars/breadcrumb/theme.js | 140 + src/layout/navBars/breadcrumb/user.vue | 464 + src/layout/navBars/breadcrumb/userNews.vue | 301 + src/layout/navBars/index.vue | 44 + src/layout/navBars/tagsView/contextmenu.vue | 125 + src/layout/navBars/tagsView/tagsView.vue | 662 + src/layout/navMenu/horizontal.vue | 151 + src/layout/navMenu/subItem.vue | 50 + src/layout/navMenu/vertical.vue | 98 + src/layout/routerView/iframes.vue | 55 + src/layout/routerView/link.vue | 98 + src/layout/routerView/parent.vue | 59 + src/layout/upgrade/index.vue | 141 + src/libs/constants.js | 38 + src/libs/currency.js | 431 + src/libs/dataScreen.js | 67 + src/libs/dd-moment.js | 92 + src/libs/index.js | 18 + src/libs/modal-form.js | 89 + src/libs/modal-newsCategory.js | 63 + src/libs/modal-upload.js | 50 + src/libs/modal.js | 287 + src/libs/notice.js | 91 + src/libs/public.js | 87 + src/libs/settingMer.js | 26 + src/libs/socket.js | 120 + src/libs/system/index.js | 236 + src/libs/tools.js | 241 + src/libs/types.js | 47 + src/libs/util.cookies.js | 101 + src/libs/util.db.js | 22 + src/libs/util.js | 70 + src/libs/util.log.js | 89 + src/main.js | 202 + src/permission.js | 75 + src/router/index.js | 217 + src/router/modules/accounts.js | 156 + src/router/modules/app.js | 128 + src/router/modules/cms.js | 51 + src/router/modules/community.js | 63 + src/router/modules/config.js | 52 + src/router/modules/delivery.js | 50 + src/router/modules/freight.js | 43 + src/router/modules/group.js | 68 + src/router/modules/maintain.js | 61 + src/router/modules/marketing.js | 481 + src/router/modules/merchant.js | 135 + src/router/modules/order.js | 51 + src/router/modules/product.js | 149 + src/router/modules/promoter.js | 99 + src/router/modules/routine.js | 34 + src/router/modules/safe.js | 42 + src/router/modules/service.js | 58 + src/router/modules/setting.js | 229 + src/router/modules/sms.js | 49 + src/router/modules/station.js | 33 + src/router/modules/systemForm.js | 68 + src/router/modules/user.js | 151 + src/router/modules/userFeedback.js | 44 + src/setting.js | 120 + src/settings.js | 47 + src/store/getters.js | 26 + src/store/index.js | 34 + src/store/modules/app.js | 65 + src/store/modules/errorLog.js | 37 + src/store/modules/layout.js | 117 + src/store/modules/menu.js | 317 + src/store/modules/mobildConfig.js | 289 + src/store/modules/permission.js | 77 + src/store/modules/screenSetting.js | 63 + src/store/modules/settings.js | 47 + src/store/modules/tagsView.js | 169 + src/store/modules/themeConfig.js | 130 + src/store/modules/user.js | 221 + src/store/modules/users.js | 70 + src/styles/app.scss | 262 + src/styles/btn.scss | 99 + src/styles/element-ui.scss | 407 + src/styles/element-variables.scss | 31 + src/styles/font/demo.css | 539 + src/styles/font/demo_index.html | 3459 + src/styles/font/iconfont.css | 586 + src/styles/font/iconfont.eot | Bin 0 -> 40148 bytes src/styles/font/iconfont.js | 1 + src/styles/font/iconfont.json | 1010 + src/styles/font/iconfont.svg | 455 + src/styles/font/iconfont.ttf | Bin 0 -> 39980 bytes src/styles/font/iconfont.woff | Bin 0 -> 24332 bytes src/styles/font/iconfont.woff2 | Bin 0 -> 20376 bytes src/styles/form.scss | 41 + src/styles/iconfont/demo.css | 539 + src/styles/iconfont/demo_index.html | 11182 ++ .../font_1945396_bzyvwsjuo37/demo.css | 539 + .../font_1945396_bzyvwsjuo37/demo_index.html | 11182 ++ .../font_1945396_bzyvwsjuo37/iconfont.css | 1927 + .../font_1945396_bzyvwsjuo37/iconfont.js | 1 + .../font_1945396_bzyvwsjuo37/iconfont.json | 3355 + .../font_1945396_bzyvwsjuo37/iconfont.ttf | Bin 0 -> 133332 bytes .../font_1945396_bzyvwsjuo37/iconfont.woff | Bin 0 -> 76908 bytes .../font_1945396_bzyvwsjuo37/iconfont.woff2 | Bin 0 -> 63956 bytes src/styles/iconfont/iconfont.css | 1927 + src/styles/iconfont/iconfont.js | 1 + src/styles/iconfont/iconfont.json | 3355 + src/styles/iconfont/iconfont.ttf | Bin 0 -> 133332 bytes src/styles/iconfont/iconfont.woff | Bin 0 -> 76908 bytes src/styles/iconfont/iconfont.woff2 | Bin 0 -> 64036 bytes src/styles/iconfont2/demo.css | 539 + src/styles/iconfont2/demo_index.html | 13942 +++ src/styles/iconfont2/iconfont.css | 2407 + src/styles/iconfont2/iconfont.js | 1 + src/styles/iconfont2/iconfont.json | 4195 + src/styles/iconfont2/iconfont.ttf | Bin 0 -> 175876 bytes src/styles/iconfont2/iconfont.woff | Bin 0 -> 105028 bytes src/styles/iconfont2/iconfont.woff2 | Bin 0 -> 86484 bytes src/styles/index.scss | 175 + src/styles/mixin.scss | 66 + src/styles/sidebar.scss | 223 + src/styles/styles.scss | 491 + src/styles/transition.scss | 48 + src/styles/variables.scss | 1148 + src/utils/auth.js | 26 + src/utils/bus.js | 11 + src/utils/clipboard.js | 41 + src/utils/compressImg.js | 74 + src/utils/error-log.js | 44 + src/utils/get-page-title.js | 19 + src/utils/index.js | 415 + src/utils/newToExcel.js | 205 + src/utils/open-window.js | 34 + src/utils/permission.js | 32 + src/utils/scroll-to.js | 67 + src/utils/storage.js | 57 + src/utils/system.js | 282 + src/utils/theme.js | 72 + src/utils/timeOptions.js | 70 + src/utils/toolsValidate.js | 296 + src/utils/util.js | 595 + src/utils/validate.js | 96 + src/utils/videoCloud.js | 282 + src/views/accounts/bill/index.vue | 223 + src/views/accounts/capital/index.vue | 225 + src/views/accounts/capitalFlow/index.vue | 247 + src/views/accounts/extract/index.vue | 406 + src/views/accounts/invoiceDesc/index.vue | 168 + src/views/accounts/receipt/index.vue | 374 + src/views/accounts/reconciliation/index.vue | 343 + src/views/accounts/settings/index.vue | 204 + src/views/accounts/statement/index.vue | 387 + src/views/accounts/statement/merchantBill.vue | 180 + .../accounts/statement/merchantDetail.vue | 420 + src/views/accounts/transferManage/setting.vue | 98 + src/views/accounts/transferRecord/index.vue | 601 + src/views/app/routine/download/index.vue | 222 + src/views/app/wechat/file/index.vue | 100 + src/views/app/wechat/menus/index.vue | 412 + src/views/app/wechat/newsCategory/index.vue | 35 + src/views/app/wechat/newsCategory/save.vue | 412 + src/views/app/wechat/reply/follow/index.vue | 658 + src/views/app/wechat/reply/index.vue | 3 + src/views/app/wechat/reply/keyword/index.vue | 151 + src/views/app/wechat/wxTemplate/index.vue | 193 + .../cityDelivery/rechargeRecord/index.vue | 232 + src/views/cityDelivery/storeManage/index.vue | 200 + src/views/cityDelivery/usageRecord/index.vue | 271 + src/views/cms/addArticle/index.vue | 361 + src/views/cms/article/index.vue | 165 + src/views/cms/articleCategory/index.vue | 158 + .../community/communityClassify/index.vue | 149 + .../community/communityComment/index.vue | 273 + src/views/community/communityConfig/index.vue | 170 + src/views/community/communityList/index.vue | 574 + src/views/community/communityTopic/index.vue | 202 + src/views/dashboard/components/TodoPanel.vue | 446 + src/views/dashboard/components/baseInfo.vue | 364 + .../dashboard/components/merchantRate.vue | 116 + src/views/dashboard/components/ranking.vue | 118 + src/views/dashboard/components/toDay.vue | 473 + src/views/dashboard/components/user.vue | 591 + src/views/dashboard/components/userData.vue | 232 + src/views/dashboard/index.vue | 167 + src/views/dataScreen/assets/css/index.scss | 381 + .../dataScreen/assets/css/modules/reset.scss | 186 + .../assets/css/modules/variables.scss | 98 + src/views/dataScreen/assets/css/public.scss | 221 + .../assets/css/theme/fonts/element-icons.ttf | Bin 0 -> 55956 bytes .../assets/css/theme/fonts/element-icons.woff | Bin 0 -> 28200 bytes .../dataScreen/assets/css/theme/index.css | 1 + src/views/dataScreen/assets/css/variable.scss | 0 .../dataScreen/assets/css/webfont/index.css | 18 + .../dataScreen/assets/font/D-DINExp-Bold.otf | Bin 0 -> 56068 bytes .../dataScreen/assets/iconfont/iconfont.css | 23 + .../dataScreen/assets/iconfont/iconfont.ttf | Bin 0 -> 2476 bytes .../dataScreen/assets/iconfont/iconfont.woff | Bin 0 -> 1672 bytes .../dataScreen/assets/iconfont/iconfont.woff2 | Bin 0 -> 1284 bytes .../dataScreen/assets/img/center_map.png | Bin 0 -> 26425 bytes src/views/dataScreen/assets/img/frame.png | Bin 0 -> 15167 bytes src/views/dataScreen/assets/img/guang.png | Bin 0 -> 63109 bytes .../dataScreen/assets/img/headers/juxing1.png | Bin 0 -> 1679 bytes .../dataScreen/assets/img/headers/juxing2.png | Bin 0 -> 1657 bytes .../dataScreen/assets/img/left_top_hong.png | Bin 0 -> 5260 bytes .../dataScreen/assets/img/left_top_huang.png | Bin 0 -> 5294 bytes .../dataScreen/assets/img/left_top_lan.png | Bin 0 -> 5266 bytes .../dataScreen/assets/img/left_top_lv.png | Bin 0 -> 5287 bytes src/views/dataScreen/assets/img/pageBg.png | Bin 0 -> 413995 bytes .../dataScreen/assets/img/titles/you.png | Bin 0 -> 1548 bytes .../dataScreen/assets/img/titles/zuo.png | Bin 0 -> 1547 bytes src/views/dataScreen/assets/img/top.png | Bin 0 -> 9050 bytes src/views/dataScreen/assets/img/xieyou.png | Bin 0 -> 1623 bytes src/views/dataScreen/assets/img/xiezuo.png | Bin 0 -> 1590 bytes .../dataScreen/assets/img/zuo_xuxian.png | Bin 0 -> 2117 bytes .../dataScreen/components/echart/index.vue | 72 + .../components/item-wrap/item-wrap.vue | 101 + src/views/dataScreen/components/kong.vue | 51 + .../dataScreen/components/message/message.js | 50 + .../dataScreen/components/message/message.vue | 76 + .../components/reacquire/reacquire.vue | 65 + .../components/scale-screen/scale-screen.vue | 260 + src/views/dataScreen/home.scss | 263 + src/views/dataScreen/home.vue | 166 + src/views/dataScreen/indexs/center-bottom.vue | 227 + src/views/dataScreen/indexs/center-map.vue | 397 + src/views/dataScreen/indexs/center-top.vue | 171 + src/views/dataScreen/indexs/index.vue | 160 + src/views/dataScreen/indexs/left-bottom.vue | 292 + src/views/dataScreen/indexs/left-center.vue | 226 + src/views/dataScreen/indexs/left-top.vue | 248 + src/views/dataScreen/indexs/right-bottom.vue | 239 + src/views/dataScreen/indexs/right-center.vue | 156 + src/views/dataScreen/indexs/right-top.vue | 312 + src/views/dataScreen/setting.vue | 119 + src/views/dataScreen/utils/drawMixin.js | 67 + src/views/dataScreen/utils/index.js | 50 + src/views/dataScreen/utils/map/china.json | 25711 ++++ src/views/dataScreen/utils/map/xzqCode.js | 177 + src/views/error-page/401.vue | 108 + src/views/error-page/404.vue | 245 + src/views/freight/city/index.vue | 127 + src/views/freight/express/index.vue | 186 + src/views/login/index.vue | 681 + src/views/login/mixins.js | 20 + src/views/maintain/auth/index.vue | 331 + src/views/maintain/cache/index.vue | 68 + src/views/maintain/copyRight/index.vue | 83 + src/views/maintain/dataBackup/index.vue | 325 + .../application/handle/applicationDetails.vue | 320 + .../application/handle/applicationInfo.vue | 349 + .../marketing/application/handle/create.vue | 331 + .../marketing/application/handle/editForm.vue | 441 + src/views/marketing/application/index.vue | 3 + .../marketing/application/list/create.vue | 360 + .../marketing/application/list/index.vue | 268 + .../marketing/assist/assist_goods/detail.vue | 264 + .../marketing/assist/assist_goods/index.vue | 701 + .../marketing/assist/assist_goods/info.vue | 372 + .../marketing/assist/assist_list/detail.vue | 102 + .../marketing/assist/assist_list/index.vue | 328 + src/views/marketing/assist/index.vue | 3 + .../atmosphereList/addAtmosphere.vue | 490 + .../atmosphere/atmosphereList/goodsList.vue | 245 + .../atmosphere/atmosphereList/index.vue | 239 + src/views/marketing/atmosphere/index.vue | 3 + .../marketing/border/borderList/addBorder.vue | 485 + .../marketing/border/borderList/index.vue | 241 + src/views/marketing/border/index.vue | 3 + .../broadcast/broadcastList/index.vue | 263 + .../broadcast/broadcastList/proDetail.vue | 152 + src/views/marketing/broadcast/index.vue | 3 + .../combination/combination_goods/detail.vue | 335 + .../combination/combination_goods/index.vue | 699 + .../combination/combination_goods/info.vue | 382 + .../combination/combination_set/index.vue | 91 + src/views/marketing/combination/index.vue | 3 + .../combination/store_combination/detail.vue | 190 + .../combination/store_combination/index.vue | 336 + .../coupon/couponList/creatCoupon.vue | 92 + .../marketing/coupon/couponList/index.vue | 595 + .../marketing/coupon/couponUser/index.vue | 229 + src/views/marketing/coupon/index.vue | 3 + src/views/marketing/discounts/index.vue | 403 + .../integral/addProduct/copyRecord.vue | 109 + .../marketing/integral/addProduct/index.vue | 1749 + .../marketing/integral/classify/index.vue | 151 + src/views/marketing/integral/config/index.vue | 384 + src/views/marketing/integral/index.vue | 3 + src/views/marketing/integral/log/index.vue | 204 + .../marketing/integral/orderList/index.vue | 571 + .../integral/orderList/orderDetails.vue | 673 + .../integral/productList/goodsList.vue | 160 + .../marketing/integral/productList/index.vue | 251 + src/views/marketing/integral/sign/index.vue | 195 + .../couponInstructions/index.vue | 193 + .../platformCoupon/couponList/creatCoupon.vue | 121 + .../platformCoupon/couponList/index.vue | 698 + .../platformCoupon/couponRecord/index.vue | 242 + .../platformCoupon/couponSend/index.vue | 618 + src/views/marketing/platformCoupon/index.vue | 3 + src/views/marketing/preSale/agreement.vue | 180 + src/views/marketing/preSale/detail.vue | 375 + src/views/marketing/preSale/index.vue | 665 + src/views/marketing/preSale/info.vue | 463 + src/views/marketing/seckill/index.vue | 3 + .../marketing/seckill/seckillConfig/index.vue | 209 + .../marketing/seckill/seckillGoods/index.vue | 993 + .../marketing/seckill/seckillGoods/info.vue | 366 + src/views/marketing/studio/index.vue | 3 + .../marketing/studio/studioList/index.vue | 447 + .../studio/studioList/selectedGoods.vue | 124 + .../studio/studioList/studioDetail.vue | 269 + .../studio/studioProList/creatProduct.vue | 107 + .../marketing/studio/studioProList/index.vue | 196 + src/views/merchant/agreement/index.vue | 171 + src/views/merchant/application/index.vue | 310 + src/views/merchant/applyments/index.vue | 488 + src/views/merchant/applyments/list.vue | 339 + src/views/merchant/classify/index.vue | 135 + src/views/merchant/deposit/index.vue | 720 + src/views/merchant/list/handle/merDetails.vue | 336 + .../merchant/list/handle/merEditForm.vue | 511 + src/views/merchant/list/handle/merInfo.vue | 420 + src/views/merchant/list/index.vue | 419 + src/views/merchant/list/record.vue | 616 + src/views/merchant/rechargeRecord/index.vue | 203 + src/views/merchant/system/index.vue | 146 + src/views/merchant/type/description.vue | 170 + src/views/merchant/type/index.vue | 250 + src/views/merchant/type/record.vue | 615 + src/views/merchant/type/typeDetails.vue | 323 + src/views/merchant/type/typeEditForm.vue | 308 + src/views/merchant/type/typeInfo.vue | 151 + .../smsConfig/components/forgetPassword.vue | 249 + .../smsConfig/components/forgetPhone.vue | 222 + .../notify/smsConfig/components/loginFrom.vue | 131 + .../notify/smsConfig/components/register.vue | 202 + src/views/notify/smsConfig/config.vue | 170 + src/views/notify/smsConfig/index.vue | 339 + src/views/notify/smsConfig/tableList.vue | 783 + src/views/notify/smsPay/index.vue | 273 + src/views/notify/smsTemplateApply/index.vue | 446 + src/views/order/list/index.vue | 660 + src/views/order/list/orderDetails.vue | 769 + src/views/order/orderCancellate/index.vue | 365 + src/views/order/refund/index.vue | 407 + src/views/product/band/bandClassify/index.vue | 142 + src/views/product/band/bandList/index.vue | 190 + src/views/product/band/index.vue | 3 + src/views/product/priceDescription/index.vue | 281 + src/views/product/productClassify/index.vue | 185 + src/views/product/productComment/index.vue | 255 + src/views/product/productExamine/index.vue | 783 + src/views/product/productExamine/info.vue | 397 + .../product/productExamine/proDetails.vue | 877 + src/views/product/productGuarantee/index.vue | 241 + src/views/product/productLabel/index.vue | 148 + src/views/product/sourceCountry/index.vue | 191 + src/views/product/specs/create.vue | 195 + src/views/product/specs/list.vue | 222 + src/views/product/specs/merList.vue | 205 + src/views/promoter/commission/index.vue | 166 + src/views/promoter/config/index.vue | 187 + .../promoter/distributionRules/index.vue | 170 + src/views/promoter/gift/index.vue | 481 + src/views/promoter/membershipLevel/index.vue | 645 + src/views/promoter/order/index.vue | 632 + src/views/promoter/order/orderDetails.vue | 737 + src/views/promoter/user/index.vue | 537 + src/views/safe/pageLinks/index.vue | 770 + src/views/safe/pcLinks/index.vue | 323 + src/views/service/balanceRecord/index.vue | 205 + src/views/service/customer/index.vue | 347 + src/views/service/purchase/index.vue | 265 + src/views/service/settings/index.vue | 192 + src/views/setting/agreements/index.vue | 173 + src/views/setting/devise/cateMerchant.vue | 116 + src/views/setting/devise/catePlantform.vue | 114 + .../setting/devise/components/uploadPic.vue | 219 + src/views/setting/devise/index.vue | 1392 + src/views/setting/devise/linkList.vue | 146 + src/views/setting/devise/links.vue | 156 + src/views/setting/devise/list.vue | 378 + src/views/setting/devise/merLink.vue | 146 + src/views/setting/devise/merchantList.vue | 427 + src/views/setting/devise/microList.vue | 316 + src/views/setting/devise/shopStreet.vue | 184 + src/views/setting/devise/users.vue | 696 + src/views/setting/devise/visualization.vue | 1489 + src/views/setting/systemAdmin/index.vue | 220 + src/views/setting/systemLog/index.vue | 190 + src/views/setting/systemMenu/index.vue | 139 + src/views/setting/systemRole/index.vue | 168 + src/views/setting/themeStyle/index.vue | 269 + .../sms/smsConfig/components/changePsd.vue | 212 + .../smsConfig/components/changeSignature.vue | 235 + .../sms/smsConfig/components/loginFrom.vue | 180 + .../sms/smsConfig/components/register.vue | 273 + .../sms/smsConfig/components/tableList.vue | 123 + src/views/sms/smsConfig/index.vue | 185 + src/views/sms/smsPay/index.vue | 271 + src/views/sms/smsTemplate/applyList.vue | 170 + src/views/sms/smsTemplate/index.vue | 230 + src/views/station/notice/index.vue | 316 + src/views/system/config/classify.vue | 193 + src/views/system/config/picture.vue | 42 + src/views/system/config/setting.vue | 226 + src/views/system/customer_keyword/index.vue | 384 + src/views/system/exportFile/index.vue | 172 + src/views/system/groupData/data.vue | 245 + src/views/system/groupData/list.vue | 132 + src/views/system/notification/index.vue | 211 + src/views/system/topic/data.vue | 534 + src/views/systemForm/cityDelivery/index.vue | 92 + src/views/systemForm/form/create.vue | 1001 + src/views/systemForm/form/details.vue | 200 + src/views/systemForm/form/index.vue | 149 + src/views/systemForm/setSystem/index.vue | 257 + src/views/user/agreement/index.vue | 170 + src/views/user/group/index.vue | 162 + src/views/user/list/couponList.vue | 238 + src/views/user/list/index.vue | 1011 + src/views/user/list/userCreate.vue | 263 + src/views/user/list/userDetails.vue | 1431 + src/views/user/member/config.vue | 83 + src/views/user/member/description.vue | 171 + src/views/user/member/equity.vue | 122 + src/views/user/member/index.vue | 3 + src/views/user/member/interests.vue | 127 + src/views/user/member/list.vue | 129 + src/views/user/member/record.vue | 172 + src/views/user/member/type.vue | 149 + src/views/user/member/vipAgreement.vue | 168 + src/views/user/search/index.vue | 235 + src/views/user/setupUser/index.vue | 614 + src/views/userFeedback/classify/index.vue | 149 + src/views/userFeedback/list/index.vue | 201 + tests/unit/.eslintrc.js | 5 + tests/unit/components/Hamburger.spec.js | 27 + tests/unit/components/SvgIcon.spec.js | 31 + tests/unit/utils/formatTime.spec.js | 38 + tests/unit/utils/parseTime.spec.js | 41 + tests/unit/utils/validate.spec.js | 37 + vue.config.js | 137 + 1153 files changed, 449573 insertions(+) create mode 100644 .editorconfig create mode 100644 .env.development create mode 100644 .env.production create mode 100644 .env.staging create mode 100644 .eslintignore create mode 100644 .eslintrc.js create mode 100644 .gitignore create mode 100644 .travis.yml create mode 100644 LICENSE create mode 100644 README.es.md create mode 100644 README.ja.md create mode 100644 README.md create mode 100644 README.zh-CN.md create mode 100644 babel.config.js create mode 100644 build/index.js create mode 100644 jest.config.js create mode 100644 jsconfig.json create mode 100644 mock/article.js create mode 100644 mock/index.js create mode 100644 mock/mock-server.js create mode 100644 mock/remote-search.js create mode 100644 mock/role/index.js create mode 100644 mock/role/routes.js create mode 100644 mock/user.js create mode 100644 package.json create mode 100644 patches/element-ui+2.13.2.patch create mode 100644 plop-templates/component/index.hbs create mode 100644 plop-templates/component/prompt.js create mode 100644 plop-templates/store/index.hbs create mode 100644 plop-templates/store/prompt.js create mode 100644 plop-templates/utils.js create mode 100644 plop-templates/view/index.hbs create mode 100644 plop-templates/view/prompt.js create mode 100644 plopfile.js create mode 100644 postcss.config.js create mode 100644 public/UEditor/dialogs/anchor/anchor.html create mode 100644 public/UEditor/dialogs/attachment/attachment.css create mode 100644 public/UEditor/dialogs/attachment/attachment.html create mode 100644 public/UEditor/dialogs/attachment/attachment.js create mode 100644 public/UEditor/dialogs/attachment/fileTypeImages/icon_chm.gif create mode 100644 public/UEditor/dialogs/attachment/fileTypeImages/icon_default.png create mode 100644 public/UEditor/dialogs/attachment/fileTypeImages/icon_doc.gif create mode 100644 public/UEditor/dialogs/attachment/fileTypeImages/icon_exe.gif create mode 100644 public/UEditor/dialogs/attachment/fileTypeImages/icon_jpg.gif create mode 100644 public/UEditor/dialogs/attachment/fileTypeImages/icon_mp3.gif create mode 100644 public/UEditor/dialogs/attachment/fileTypeImages/icon_mv.gif create mode 100644 public/UEditor/dialogs/attachment/fileTypeImages/icon_pdf.gif create mode 100644 public/UEditor/dialogs/attachment/fileTypeImages/icon_ppt.gif create mode 100644 public/UEditor/dialogs/attachment/fileTypeImages/icon_psd.gif create mode 100644 public/UEditor/dialogs/attachment/fileTypeImages/icon_rar.gif create mode 100644 public/UEditor/dialogs/attachment/fileTypeImages/icon_txt.gif create mode 100644 public/UEditor/dialogs/attachment/fileTypeImages/icon_xls.gif create mode 100644 public/UEditor/dialogs/attachment/images/alignicon.gif create mode 100644 public/UEditor/dialogs/attachment/images/alignicon.png create mode 100644 public/UEditor/dialogs/attachment/images/bg.png create mode 100644 public/UEditor/dialogs/attachment/images/file-icons.gif create mode 100644 public/UEditor/dialogs/attachment/images/file-icons.png create mode 100644 public/UEditor/dialogs/attachment/images/icons.gif create mode 100644 public/UEditor/dialogs/attachment/images/icons.png create mode 100644 public/UEditor/dialogs/attachment/images/image.png create mode 100644 public/UEditor/dialogs/attachment/images/progress.png create mode 100644 public/UEditor/dialogs/attachment/images/success.gif create mode 100644 public/UEditor/dialogs/attachment/images/success.png create mode 100644 public/UEditor/dialogs/background/background.css create mode 100644 public/UEditor/dialogs/background/background.html create mode 100644 public/UEditor/dialogs/background/background.js create mode 100644 public/UEditor/dialogs/background/images/bg.png create mode 100644 public/UEditor/dialogs/background/images/success.png create mode 100644 public/UEditor/dialogs/charts/chart.config.js create mode 100644 public/UEditor/dialogs/charts/charts.css create mode 100644 public/UEditor/dialogs/charts/charts.html create mode 100644 public/UEditor/dialogs/charts/charts.js create mode 100644 public/UEditor/dialogs/charts/images/charts0.png create mode 100644 public/UEditor/dialogs/charts/images/charts1.png create mode 100644 public/UEditor/dialogs/charts/images/charts2.png create mode 100644 public/UEditor/dialogs/charts/images/charts3.png create mode 100644 public/UEditor/dialogs/charts/images/charts4.png create mode 100644 public/UEditor/dialogs/charts/images/charts5.png create mode 100644 public/UEditor/dialogs/emotion/emotion.css create mode 100644 public/UEditor/dialogs/emotion/emotion.html create mode 100644 public/UEditor/dialogs/emotion/emotion.js create mode 100644 public/UEditor/dialogs/emotion/images/0.gif create mode 100644 public/UEditor/dialogs/emotion/images/bface.gif create mode 100644 public/UEditor/dialogs/emotion/images/cface.gif create mode 100644 public/UEditor/dialogs/emotion/images/fface.gif create mode 100644 public/UEditor/dialogs/emotion/images/jxface2.gif create mode 100644 public/UEditor/dialogs/emotion/images/neweditor-tab-bg.png create mode 100644 public/UEditor/dialogs/emotion/images/tface.gif create mode 100644 public/UEditor/dialogs/emotion/images/wface.gif create mode 100644 public/UEditor/dialogs/emotion/images/yface.gif create mode 100644 public/UEditor/dialogs/gmap/gmap.html create mode 100644 public/UEditor/dialogs/help/help.css create mode 100644 public/UEditor/dialogs/help/help.html create mode 100644 public/UEditor/dialogs/help/help.js create mode 100644 public/UEditor/dialogs/image/image.css create mode 100644 public/UEditor/dialogs/image/image.html create mode 100644 public/UEditor/dialogs/image/image.js create mode 100644 public/UEditor/dialogs/image/images/alignicon.jpg create mode 100644 public/UEditor/dialogs/image/images/bg.png create mode 100644 public/UEditor/dialogs/image/images/icons.gif create mode 100644 public/UEditor/dialogs/image/images/icons.png create mode 100644 public/UEditor/dialogs/image/images/image.png create mode 100644 public/UEditor/dialogs/image/images/progress.png create mode 100644 public/UEditor/dialogs/image/images/success.gif create mode 100644 public/UEditor/dialogs/image/images/success.png create mode 100644 public/UEditor/dialogs/insertframe/insertframe.html create mode 100644 public/UEditor/dialogs/internal.js create mode 100644 public/UEditor/dialogs/link/link.html create mode 100644 public/UEditor/dialogs/map/map.html create mode 100644 public/UEditor/dialogs/map/show.html create mode 100644 public/UEditor/dialogs/music/music.css create mode 100644 public/UEditor/dialogs/music/music.html create mode 100644 public/UEditor/dialogs/music/music.js create mode 100644 public/UEditor/dialogs/preview/preview.html create mode 100644 public/UEditor/dialogs/scrawl/images/addimg.png create mode 100644 public/UEditor/dialogs/scrawl/images/brush.png create mode 100644 public/UEditor/dialogs/scrawl/images/delimg.png create mode 100644 public/UEditor/dialogs/scrawl/images/delimgH.png create mode 100644 public/UEditor/dialogs/scrawl/images/empty.png create mode 100644 public/UEditor/dialogs/scrawl/images/emptyH.png create mode 100644 public/UEditor/dialogs/scrawl/images/eraser.png create mode 100644 public/UEditor/dialogs/scrawl/images/redo.png create mode 100644 public/UEditor/dialogs/scrawl/images/redoH.png create mode 100644 public/UEditor/dialogs/scrawl/images/scale.png create mode 100644 public/UEditor/dialogs/scrawl/images/scaleH.png create mode 100644 public/UEditor/dialogs/scrawl/images/size.png create mode 100644 public/UEditor/dialogs/scrawl/images/undo.png create mode 100644 public/UEditor/dialogs/scrawl/images/undoH.png create mode 100644 public/UEditor/dialogs/scrawl/scrawl.css create mode 100644 public/UEditor/dialogs/scrawl/scrawl.html create mode 100644 public/UEditor/dialogs/scrawl/scrawl.js create mode 100644 public/UEditor/dialogs/searchreplace/searchreplace.html create mode 100644 public/UEditor/dialogs/searchreplace/searchreplace.js create mode 100644 public/UEditor/dialogs/snapscreen/snapscreen.html create mode 100644 public/UEditor/dialogs/spechars/spechars.html create mode 100644 public/UEditor/dialogs/spechars/spechars.js create mode 100644 public/UEditor/dialogs/table/dragicon.png create mode 100644 public/UEditor/dialogs/table/edittable.css create mode 100644 public/UEditor/dialogs/table/edittable.html create mode 100644 public/UEditor/dialogs/table/edittable.js create mode 100644 public/UEditor/dialogs/table/edittd.html create mode 100644 public/UEditor/dialogs/table/edittip.html create mode 100644 public/UEditor/dialogs/template/config.js create mode 100644 public/UEditor/dialogs/template/images/bg.gif create mode 100644 public/UEditor/dialogs/template/images/pre0.png create mode 100644 public/UEditor/dialogs/template/images/pre1.png create mode 100644 public/UEditor/dialogs/template/images/pre2.png create mode 100644 public/UEditor/dialogs/template/images/pre3.png create mode 100644 public/UEditor/dialogs/template/images/pre4.png create mode 100644 public/UEditor/dialogs/template/template.css create mode 100644 public/UEditor/dialogs/template/template.html create mode 100644 public/UEditor/dialogs/template/template.js create mode 100644 public/UEditor/dialogs/video/images/bg.png create mode 100644 public/UEditor/dialogs/video/images/center_focus.jpg create mode 100644 public/UEditor/dialogs/video/images/file-icons.gif create mode 100644 public/UEditor/dialogs/video/images/file-icons.png create mode 100644 public/UEditor/dialogs/video/images/icons.gif create mode 100644 public/UEditor/dialogs/video/images/icons.png create mode 100644 public/UEditor/dialogs/video/images/image.png create mode 100644 public/UEditor/dialogs/video/images/left_focus.jpg create mode 100644 public/UEditor/dialogs/video/images/none_focus.jpg create mode 100644 public/UEditor/dialogs/video/images/progress.png create mode 100644 public/UEditor/dialogs/video/images/right_focus.jpg create mode 100644 public/UEditor/dialogs/video/images/success.gif create mode 100644 public/UEditor/dialogs/video/images/success.png create mode 100644 public/UEditor/dialogs/video/video.css create mode 100644 public/UEditor/dialogs/video/video.html create mode 100644 public/UEditor/dialogs/video/video.js create mode 100644 public/UEditor/dialogs/webapp/webapp.html create mode 100644 public/UEditor/dialogs/wordimage/tangram.js create mode 100644 public/UEditor/dialogs/wordimage/wordimage.html create mode 100644 public/UEditor/dialogs/wordimage/wordimage.js create mode 100644 public/UEditor/index.html create mode 100644 public/UEditor/lang/en/en.js create mode 100644 public/UEditor/lang/en/images/addimage.png create mode 100644 public/UEditor/lang/en/images/alldeletebtnhoverskin.png create mode 100644 public/UEditor/lang/en/images/alldeletebtnupskin.png create mode 100644 public/UEditor/lang/en/images/background.png create mode 100644 public/UEditor/lang/en/images/button.png create mode 100644 public/UEditor/lang/en/images/copy.png create mode 100644 public/UEditor/lang/en/images/deletedisable.png create mode 100644 public/UEditor/lang/en/images/deleteenable.png create mode 100644 public/UEditor/lang/en/images/listbackground.png create mode 100644 public/UEditor/lang/en/images/localimage.png create mode 100644 public/UEditor/lang/en/images/music.png create mode 100644 public/UEditor/lang/en/images/rotateleftdisable.png create mode 100644 public/UEditor/lang/en/images/rotateleftenable.png create mode 100644 public/UEditor/lang/en/images/rotaterightdisable.png create mode 100644 public/UEditor/lang/en/images/rotaterightenable.png create mode 100644 public/UEditor/lang/en/images/upload.png create mode 100644 public/UEditor/lang/zh-cn/images/copy.png create mode 100644 public/UEditor/lang/zh-cn/images/localimage.png create mode 100644 public/UEditor/lang/zh-cn/images/music.png create mode 100644 public/UEditor/lang/zh-cn/images/upload.png create mode 100644 public/UEditor/lang/zh-cn/zh-cn.js create mode 100644 public/UEditor/themes/default/css/ueditor.css create mode 100644 public/UEditor/themes/default/css/ueditor.min.css create mode 100644 public/UEditor/themes/default/dialogbase.css create mode 100644 public/UEditor/themes/default/html/preview.html create mode 100644 public/UEditor/themes/default/images/anchor.gif create mode 100644 public/UEditor/themes/default/images/arrow.png create mode 100644 public/UEditor/themes/default/images/arrow_down.png create mode 100644 public/UEditor/themes/default/images/arrow_up.png create mode 100644 public/UEditor/themes/default/images/button-bg.gif create mode 100644 public/UEditor/themes/default/images/cancelbutton.gif create mode 100644 public/UEditor/themes/default/images/charts.png create mode 100644 public/UEditor/themes/default/images/cursor_h.gif create mode 100644 public/UEditor/themes/default/images/cursor_h.png create mode 100644 public/UEditor/themes/default/images/cursor_v.gif create mode 100644 public/UEditor/themes/default/images/cursor_v.png create mode 100644 public/UEditor/themes/default/images/dialog-title-bg.png create mode 100644 public/UEditor/themes/default/images/filescan.png create mode 100644 public/UEditor/themes/default/images/highlighted.gif create mode 100644 public/UEditor/themes/default/images/icons-all.gif create mode 100644 public/UEditor/themes/default/images/icons.gif create mode 100644 public/UEditor/themes/default/images/icons.png create mode 100644 public/UEditor/themes/default/images/iphone-bg.png create mode 100644 public/UEditor/themes/default/images/loaderror.png create mode 100644 public/UEditor/themes/default/images/loading.gif create mode 100644 public/UEditor/themes/default/images/lock.gif create mode 100644 public/UEditor/themes/default/images/neweditor-tab-bg.png create mode 100644 public/UEditor/themes/default/images/pagebreak.gif create mode 100644 public/UEditor/themes/default/images/previewMobile.png create mode 100644 public/UEditor/themes/default/images/scale.png create mode 100644 public/UEditor/themes/default/images/sortable.png create mode 100644 public/UEditor/themes/default/images/spacer.gif create mode 100644 public/UEditor/themes/default/images/sparator_v.png create mode 100644 public/UEditor/themes/default/images/table-cell-align.png create mode 100644 public/UEditor/themes/default/images/tangram-colorpicker.png create mode 100644 public/UEditor/themes/default/images/toolbar_bg.png create mode 100644 public/UEditor/themes/default/images/unhighlighted.gif create mode 100644 public/UEditor/themes/default/images/upload.png create mode 100644 public/UEditor/themes/default/images/videologo.gif create mode 100644 public/UEditor/themes/default/images/word.gif create mode 100644 public/UEditor/themes/default/images/wordpaste.png create mode 100644 public/UEditor/themes/iframe.css create mode 100644 public/UEditor/third-party/SyntaxHighlighter/shCore.js create mode 100644 public/UEditor/third-party/SyntaxHighlighter/shCoreDefault.css create mode 100644 public/UEditor/third-party/codemirror/codemirror.css create mode 100644 public/UEditor/third-party/codemirror/codemirror.js create mode 100644 public/UEditor/third-party/highcharts/adapters/mootools-adapter.js create mode 100644 public/UEditor/third-party/highcharts/adapters/mootools-adapter.src.js create mode 100644 public/UEditor/third-party/highcharts/adapters/prototype-adapter.js create mode 100644 public/UEditor/third-party/highcharts/adapters/prototype-adapter.src.js create mode 100644 public/UEditor/third-party/highcharts/adapters/standalone-framework.js create mode 100644 public/UEditor/third-party/highcharts/adapters/standalone-framework.src.js create mode 100644 public/UEditor/third-party/highcharts/highcharts-more.js create mode 100644 public/UEditor/third-party/highcharts/highcharts-more.src.js create mode 100644 public/UEditor/third-party/highcharts/highcharts.js create mode 100644 public/UEditor/third-party/highcharts/highcharts.src.js create mode 100644 public/UEditor/third-party/highcharts/modules/annotations.js create mode 100644 public/UEditor/third-party/highcharts/modules/annotations.src.js create mode 100644 public/UEditor/third-party/highcharts/modules/canvas-tools.js create mode 100644 public/UEditor/third-party/highcharts/modules/canvas-tools.src.js create mode 100644 public/UEditor/third-party/highcharts/modules/data.js create mode 100644 public/UEditor/third-party/highcharts/modules/data.src.js create mode 100644 public/UEditor/third-party/highcharts/modules/drilldown.js create mode 100644 public/UEditor/third-party/highcharts/modules/drilldown.src.js create mode 100644 public/UEditor/third-party/highcharts/modules/exporting.js create mode 100644 public/UEditor/third-party/highcharts/modules/exporting.src.js create mode 100644 public/UEditor/third-party/highcharts/modules/funnel.js create mode 100644 public/UEditor/third-party/highcharts/modules/funnel.src.js create mode 100644 public/UEditor/third-party/highcharts/modules/heatmap.js create mode 100644 public/UEditor/third-party/highcharts/modules/heatmap.src.js create mode 100644 public/UEditor/third-party/highcharts/modules/map.js create mode 100644 public/UEditor/third-party/highcharts/modules/map.src.js create mode 100644 public/UEditor/third-party/highcharts/modules/no-data-to-display.js create mode 100644 public/UEditor/third-party/highcharts/modules/no-data-to-display.src.js create mode 100644 public/UEditor/third-party/highcharts/themes/dark-blue.js create mode 100644 public/UEditor/third-party/highcharts/themes/dark-green.js create mode 100644 public/UEditor/third-party/highcharts/themes/gray.js create mode 100644 public/UEditor/third-party/highcharts/themes/grid.js create mode 100644 public/UEditor/third-party/highcharts/themes/skies.js create mode 100644 public/UEditor/third-party/jquery-1.10.2.js create mode 100644 public/UEditor/third-party/jquery-1.10.2.min.js create mode 100644 public/UEditor/third-party/jquery-1.10.2.min.map create mode 100644 public/UEditor/third-party/snapscreen/UEditorSnapscreen.exe create mode 100644 public/UEditor/third-party/video-js/font/vjs.eot create mode 100644 public/UEditor/third-party/video-js/font/vjs.svg create mode 100644 public/UEditor/third-party/video-js/font/vjs.ttf create mode 100644 public/UEditor/third-party/video-js/font/vjs.woff create mode 100644 public/UEditor/third-party/video-js/video-js.css create mode 100644 public/UEditor/third-party/video-js/video-js.min.css create mode 100644 public/UEditor/third-party/video-js/video.dev.js create mode 100644 public/UEditor/third-party/video-js/video.js create mode 100644 public/UEditor/third-party/webuploader/webuploader.css create mode 100644 public/UEditor/third-party/webuploader/webuploader.custom.js create mode 100644 public/UEditor/third-party/webuploader/webuploader.custom.min.js create mode 100644 public/UEditor/third-party/webuploader/webuploader.flashonly.js create mode 100644 public/UEditor/third-party/webuploader/webuploader.flashonly.min.js create mode 100644 public/UEditor/third-party/webuploader/webuploader.html5only.js create mode 100644 public/UEditor/third-party/webuploader/webuploader.html5only.min.js create mode 100644 public/UEditor/third-party/webuploader/webuploader.js create mode 100644 public/UEditor/third-party/webuploader/webuploader.min.js create mode 100644 public/UEditor/third-party/webuploader/webuploader.withoutimage.js create mode 100644 public/UEditor/third-party/webuploader/webuploader.withoutimage.min.js create mode 100644 public/UEditor/third-party/xss.min.js create mode 100644 public/UEditor/third-party/zeroclipboard/ZeroClipboard.js create mode 100644 public/UEditor/third-party/zeroclipboard/ZeroClipboard.min.js create mode 100644 public/UEditor/ueditor.all.js create mode 100644 public/UEditor/ueditor.all.min.js create mode 100644 public/UEditor/ueditor.config.js create mode 100644 public/UEditor/ueditor.parse.js create mode 100644 public/UEditor/ueditor.parse.min.js create mode 100644 public/favicon.ico create mode 100644 public/index.html create mode 100644 public/screen/110000.json create mode 100644 public/screen/120000.json create mode 100644 public/screen/130000.json create mode 100644 public/screen/140000.json create mode 100644 public/screen/150000.json create mode 100644 public/screen/210000.json create mode 100644 public/screen/220000.json create mode 100644 public/screen/230000.json create mode 100644 public/screen/310000.json create mode 100644 public/screen/320000.json create mode 100644 public/screen/330000.json create mode 100644 public/screen/340000.json create mode 100644 public/screen/350000.json create mode 100644 public/screen/360000.json create mode 100644 public/screen/370000.json create mode 100644 public/screen/410000.json create mode 100644 public/screen/420000.json create mode 100644 public/screen/430000.json create mode 100644 public/screen/440000.json create mode 100644 public/screen/450000.json create mode 100644 public/screen/460000.json create mode 100644 public/screen/500000.json create mode 100644 public/screen/510000.json create mode 100644 public/screen/520000.json create mode 100644 public/screen/530000.json create mode 100644 public/screen/540000.json create mode 100644 public/screen/610000.json create mode 100644 public/screen/620000.json create mode 100644 public/screen/630000.json create mode 100644 public/screen/640000.json create mode 100644 public/screen/650000.json create mode 100644 public/screen/710000.json create mode 100644 public/screen/810000.json create mode 100644 public/screen/820000.json create mode 100644 public/screen/china.json create mode 100644 public/screen/chinaNanhai.json create mode 100644 sh.exe.stackdump create mode 100644 src/App.vue create mode 100644 src/api/accounts.js create mode 100644 src/api/app.js create mode 100644 src/api/cms.js create mode 100644 src/api/community.js create mode 100644 src/api/diy.js create mode 100644 src/api/freight.js create mode 100644 src/api/home.js create mode 100644 src/api/maintain.js create mode 100644 src/api/marketing.js create mode 100644 src/api/merchant.js create mode 100644 src/api/order.js create mode 100644 src/api/product.js create mode 100644 src/api/promoter.js create mode 100644 src/api/request.js create mode 100644 src/api/screen.js create mode 100644 src/api/setting.js create mode 100644 src/api/sms.js create mode 100644 src/api/system.js create mode 100644 src/api/systemForm.js create mode 100644 src/api/user.js create mode 100644 src/api/userFeedback.js create mode 100644 src/assets/401_images/401.gif create mode 100644 src/assets/404_images/404.png create mode 100644 src/assets/404_images/404_cloud.png create mode 100644 src/assets/custom-theme/fonts/element-icons.ttf create mode 100644 src/assets/custom-theme/fonts/element-icons.woff create mode 100644 src/assets/custom-theme/index.css create mode 100644 src/assets/images/assist_title.png create mode 100644 src/assets/images/bg.jpg create mode 100644 src/assets/images/bjt.png create mode 100644 src/assets/images/bluesgin.png create mode 100644 src/assets/images/broadcast_title.png create mode 100644 src/assets/images/c_presell_bg0.png create mode 100644 src/assets/images/c_presell_bg1.png create mode 100644 src/assets/images/c_presell_bg2.png create mode 100644 src/assets/images/coupon-bg.png create mode 100644 src/assets/images/default.jpg create mode 100644 src/assets/images/dui.png create mode 100644 src/assets/images/edit.png create mode 100644 src/assets/images/electric.png create mode 100644 src/assets/images/expressi.jpg create mode 100644 src/assets/images/f.png create mode 100644 src/assets/images/foot-001.png create mode 100644 src/assets/images/foot-0010.png create mode 100644 src/assets/images/foot-002.png create mode 100644 src/assets/images/foot-003.png create mode 100644 src/assets/images/foot-004.png create mode 100644 src/assets/images/foot-005.png create mode 100644 src/assets/images/foot-006.png create mode 100644 src/assets/images/foot-007.png create mode 100644 src/assets/images/foot-008.png create mode 100644 src/assets/images/foot-009.png create mode 100644 src/assets/images/formImg.png create mode 100644 src/assets/images/gg.jpg create mode 100644 src/assets/images/goods_icon.png create mode 100644 src/assets/images/greesgin.png create mode 100644 src/assets/images/group_title.png create mode 100644 src/assets/images/head.gif create mode 100644 src/assets/images/icons.png create mode 100644 src/assets/images/integral.png create mode 100644 src/assets/images/laber.png create mode 100644 src/assets/images/member.png create mode 100644 src/assets/images/member01.png create mode 100644 src/assets/images/mobilefoot.png create mode 100644 src/assets/images/mobilehead.png create mode 100644 src/assets/images/moren.jpg create mode 100644 src/assets/images/news.png create mode 100644 src/assets/images/no-message.png create mode 100644 src/assets/images/no-msg.png create mode 100644 src/assets/images/no.png create mode 100644 src/assets/images/oragesgin.png create mode 100644 src/assets/images/order1.png create mode 100644 src/assets/images/order2.png create mode 100644 src/assets/images/order3.png create mode 100644 src/assets/images/order4.png create mode 100644 src/assets/images/order5.png create mode 100644 src/assets/images/order_icon.png create mode 100644 src/assets/images/pclogin.png create mode 100644 src/assets/images/phoneBox.png create mode 100644 src/assets/images/pinksgin.png create mode 100644 src/assets/images/plant_bg.png create mode 100644 src/assets/images/plant_form.png create mode 100644 src/assets/images/plant_title.png create mode 100644 src/assets/images/points_mall.png create mode 100644 src/assets/images/presell_bg.png create mode 100644 src/assets/images/presell_title.png create mode 100644 src/assets/images/product_icon.png create mode 100644 src/assets/images/purplesign.png create mode 100644 src/assets/images/rank_cate.png create mode 100644 src/assets/images/rank_num.png create mode 100644 src/assets/images/rank_title.png create mode 100644 src/assets/images/redsgin.png create mode 100644 src/assets/images/ren.png create mode 100644 src/assets/images/ren1.png create mode 100644 src/assets/images/ren2.png create mode 100644 src/assets/images/right.png create mode 100644 src/assets/images/sort01.jpg create mode 100644 src/assets/images/sort02.jpg create mode 100644 src/assets/images/sort03.jpg create mode 100644 src/assets/images/sort11.jpg create mode 100644 src/assets/images/sort12.jpg create mode 100644 src/assets/images/sort13.jpg create mode 100644 src/assets/images/spike_title.png create mode 100644 src/assets/images/store_avatar.png create mode 100644 src/assets/images/store_bg.png create mode 100644 src/assets/images/store_icon.png create mode 100644 src/assets/images/svip.png create mode 100644 src/assets/images/themStyle/blue1.jpg create mode 100644 src/assets/images/themStyle/blue2.jpg create mode 100644 src/assets/images/themStyle/blue3.jpg create mode 100644 src/assets/images/themStyle/green1.jpg create mode 100644 src/assets/images/themStyle/green2.jpg create mode 100644 src/assets/images/themStyle/green3.jpg create mode 100644 src/assets/images/themStyle/orange1.jpg create mode 100644 src/assets/images/themStyle/orange2.jpg create mode 100644 src/assets/images/themStyle/orange3.jpg create mode 100644 src/assets/images/themStyle/pink1.jpg create mode 100644 src/assets/images/themStyle/pink2.jpg create mode 100644 src/assets/images/themStyle/pink3.jpg create mode 100644 src/assets/images/themStyle/purple1.jpg create mode 100644 src/assets/images/themStyle/purple2.jpg create mode 100644 src/assets/images/themStyle/purple3.jpg create mode 100644 src/assets/images/themStyle/red1.jpg create mode 100644 src/assets/images/themStyle/red2.jpg create mode 100644 src/assets/images/themStyle/red3.jpg create mode 100644 src/assets/images/topic_title.png create mode 100644 src/assets/images/type_icon.png create mode 100644 src/assets/images/uploadImg.png create mode 100644 src/assets/images/user01.png create mode 100644 src/assets/images/user_vip.png create mode 100644 src/assets/images/wutu.png create mode 100644 src/assets/js/canvas-nest.min.js create mode 100644 src/assets/js/jigsaw.css create mode 100644 src/assets/js/jigsaw.js create mode 100644 src/assets/video/newOrderAudioLink.mp3 create mode 100644 src/assets/video/notice.mp3 create mode 100644 src/assets/video/notice.wav create mode 100644 src/components/SvgIcon/index.vue create mode 100644 src/components/ThemePicker/index.vue create mode 100644 src/components/TopNav/index.vue create mode 100644 src/components/attrList/index.vue create mode 100644 src/components/breadCrumb/index.vue create mode 100644 src/components/cards/index.vue create mode 100644 src/components/copyright/index.vue create mode 100644 src/components/crossStore/index.vue create mode 100644 src/components/echarts/index.vue create mode 100644 src/components/echarts/mixins/resize.js create mode 100644 src/components/exportFile/fileList.vue create mode 100644 src/components/from/from.vue create mode 100644 src/components/goodList/index.vue create mode 100644 src/components/goodsList/index.vue create mode 100644 src/components/guidancePop/index.vue create mode 100644 src/components/hamBurger/index.vue create mode 100644 src/components/headerNotice/index.vue create mode 100644 src/components/headerSearch/index.vue create mode 100644 src/components/iconFrom/element-icons.js create mode 100644 src/components/iconFrom/index.vue create mode 100644 src/components/labelList/index.vue create mode 100644 src/components/linkaddress/index.vue create mode 100644 src/components/mobileConfig/c_auxiliary_box.vue create mode 100644 src/components/mobileConfig/c_auxiliary_line.vue create mode 100644 src/components/mobileConfig/c_banner.vue create mode 100644 src/components/mobileConfig/c_home_bargain.vue create mode 100644 src/components/mobileConfig/c_home_comb.vue create mode 100644 src/components/mobileConfig/c_home_coupon.vue create mode 100644 src/components/mobileConfig/c_home_goods_list.vue create mode 100644 src/components/mobileConfig/c_home_hot.vue create mode 100644 src/components/mobileConfig/c_home_hotranking.vue create mode 100644 src/components/mobileConfig/c_home_menu.vue create mode 100644 src/components/mobileConfig/c_home_pink.vue create mode 100644 src/components/mobileConfig/c_home_plant.vue create mode 100644 src/components/mobileConfig/c_home_presell.vue create mode 100644 src/components/mobileConfig/c_home_seckill.vue create mode 100644 src/components/mobileConfig/c_home_service.vue create mode 100644 src/components/mobileConfig/c_home_shop.vue create mode 100644 src/components/mobileConfig/c_home_title.vue create mode 100644 src/components/mobileConfig/c_home_topic.vue create mode 100644 src/components/mobileConfig/c_nav_bar.vue create mode 100644 src/components/mobileConfig/c_news_roll.vue create mode 100644 src/components/mobileConfig/c_picture_cube.vue create mode 100644 src/components/mobileConfig/c_search_box.vue create mode 100644 src/components/mobileConfig/c_ueditor_box.vue create mode 100644 src/components/mobileConfig/c_wechat_attention.vue create mode 100644 src/components/mobileConfig/c_wechat_live.vue create mode 100644 src/components/mobileConfig/index.js create mode 100644 src/components/mobileConfig/pageFoot.vue create mode 100644 src/components/mobileConfig/pageTitle.vue create mode 100644 src/components/mobileConfigRight/c_bg_color.vue create mode 100644 src/components/mobileConfigRight/c_cascader.vue create mode 100644 src/components/mobileConfigRight/c_comb_data.vue create mode 100644 src/components/mobileConfigRight/c_foot.vue create mode 100644 src/components/mobileConfigRight/c_goods.vue create mode 100644 src/components/mobileConfigRight/c_hot_box.vue create mode 100644 src/components/mobileConfigRight/c_hot_imgs.vue create mode 100644 src/components/mobileConfigRight/c_hot_word.vue create mode 100644 src/components/mobileConfigRight/c_input_item.vue create mode 100644 src/components/mobileConfigRight/c_input_number.vue create mode 100644 src/components/mobileConfigRight/c_is_show.vue create mode 100644 src/components/mobileConfigRight/c_menu_list.vue create mode 100644 src/components/mobileConfigRight/c_page_ueditor.vue create mode 100644 src/components/mobileConfigRight/c_pictrue.vue create mode 100644 src/components/mobileConfigRight/c_product.vue create mode 100644 src/components/mobileConfigRight/c_radio.vue create mode 100644 src/components/mobileConfigRight/c_select.vue create mode 100644 src/components/mobileConfigRight/c_select_item.vue create mode 100644 src/components/mobileConfigRight/c_select_list.vue create mode 100644 src/components/mobileConfigRight/c_set_up.vue create mode 100644 src/components/mobileConfigRight/c_slider.vue create mode 100644 src/components/mobileConfigRight/c_status.vue create mode 100644 src/components/mobileConfigRight/c_tab.vue create mode 100644 src/components/mobileConfigRight/c_text.vue create mode 100644 src/components/mobileConfigRight/c_txt_tab.vue create mode 100644 src/components/mobileConfigRight/c_upload_img.vue create mode 100644 src/components/mobileConfigRight/index.js create mode 100644 src/components/mobileFormConfig/c_home_checkbox.vue create mode 100644 src/components/mobileFormConfig/c_home_city.vue create mode 100644 src/components/mobileFormConfig/c_home_date.vue create mode 100644 src/components/mobileFormConfig/c_home_daterange.vue create mode 100644 src/components/mobileFormConfig/c_home_radio.vue create mode 100644 src/components/mobileFormConfig/c_home_select.vue create mode 100644 src/components/mobileFormConfig/c_home_text.vue create mode 100644 src/components/mobileFormConfig/c_home_time.vue create mode 100644 src/components/mobileFormConfig/c_home_timerange.vue create mode 100644 src/components/mobileFormConfig/c_upload_picture.vue create mode 100644 src/components/mobileFormConfig/index.js create mode 100644 src/components/mobileFormPage/home_checkbox.vue create mode 100644 src/components/mobileFormPage/home_city.vue create mode 100644 src/components/mobileFormPage/home_date.vue create mode 100644 src/components/mobileFormPage/home_daterange.vue create mode 100644 src/components/mobileFormPage/home_radio.vue create mode 100644 src/components/mobileFormPage/home_select.vue create mode 100644 src/components/mobileFormPage/home_text.vue create mode 100644 src/components/mobileFormPage/home_time.vue create mode 100644 src/components/mobileFormPage/home_timerange.vue create mode 100644 src/components/mobileFormPage/home_upload_picture.vue create mode 100644 src/components/mobileFormPage/index.js create mode 100644 src/components/mobilePage/banner.vue create mode 100644 src/components/mobilePage/home_bargain.vue create mode 100644 src/components/mobilePage/home_comb.vue create mode 100644 src/components/mobilePage/home_coupon.vue create mode 100644 src/components/mobilePage/home_goods_list.vue create mode 100644 src/components/mobilePage/home_hot.vue create mode 100644 src/components/mobilePage/home_hotranking.vue create mode 100644 src/components/mobilePage/home_menu.vue create mode 100644 src/components/mobilePage/home_news_roll.vue create mode 100644 src/components/mobilePage/home_pink.vue create mode 100644 src/components/mobilePage/home_plant.vue create mode 100644 src/components/mobilePage/home_presell.vue create mode 100644 src/components/mobilePage/home_seckill.vue create mode 100644 src/components/mobilePage/home_service.vue create mode 100644 src/components/mobilePage/home_shop.vue create mode 100644 src/components/mobilePage/home_title.vue create mode 100644 src/components/mobilePage/home_topic.vue create mode 100644 src/components/mobilePage/index.js create mode 100644 src/components/mobilePage/nav_bar.vue create mode 100644 src/components/mobilePage/picture_cube.vue create mode 100644 src/components/mobilePage/search_box.vue create mode 100644 src/components/mobilePage/wechat_live.vue create mode 100644 src/components/mobilePage/z_auxiliary_box.vue create mode 100644 src/components/mobilePage/z_auxiliary_line.vue create mode 100644 src/components/mobilePage/z_ueditor.vue create mode 100644 src/components/mobilePage/z_wechat_attention.vue create mode 100644 src/components/newsCategory/index.vue create mode 100644 src/components/newsCategory/newsCategoryFrom/index.js create mode 100644 src/components/newsCategory/newsCategoryFrom/index.vue create mode 100644 src/components/pagesFoot/index.vue create mode 100644 src/components/previewBox/index.vue create mode 100644 src/components/referrerList/index.vue create mode 100644 src/components/rightBtn/index.vue create mode 100644 src/components/rightPanel/index.vue create mode 100644 src/components/screenFull/index.vue create mode 100644 src/components/settingGuide/app.vue create mode 100644 src/components/settingGuide/index.js create mode 100644 src/components/settingGuide/routine.vue create mode 100644 src/components/settingGuide/wechat.vue create mode 100644 src/components/ueditorFrom/index.vue create mode 100644 src/components/uploadImg/index.vue create mode 100644 src/components/uploadPicture/index.vue create mode 100644 src/components/uploadPicture/uploadFrom/index.js create mode 100644 src/components/uploadPicture/uploadFrom/index.vue create mode 100644 src/components/uploadVideo/index.vue create mode 100644 src/components/userList/index.vue create mode 100644 src/components/verifition/Verify.vue create mode 100644 src/components/verifition/Verify/VerifyPoints.vue create mode 100644 src/components/verifition/Verify/VerifySlide.vue create mode 100644 src/components/verifition/utils/ase.js create mode 100644 src/components/verifition/utils/util.js create mode 100644 src/components/wangEditor/editor.js create mode 100644 src/components/wangEditor/html.js create mode 100644 src/components/wangEditor/index.vue create mode 100644 src/components/wangEditor/monaco.vue create mode 100644 src/directive/clipboard/clipboard.js create mode 100644 src/directive/clipboard/index.js create mode 100644 src/directive/el-drag-dialog/drag.js create mode 100644 src/directive/el-drag-dialog/index.js create mode 100644 src/directive/el-table/adaptive.js create mode 100644 src/directive/el-table/index.js create mode 100644 src/directive/permission/index.js create mode 100644 src/directive/permission/permission.js create mode 100644 src/directive/sticky.js create mode 100644 src/directive/waves/index.js create mode 100644 src/directive/waves/waves.css create mode 100644 src/directive/waves/waves.js create mode 100644 src/filters/commFilter.js create mode 100644 src/filters/index.js create mode 100644 src/icons/index.js create mode 100644 src/icons/svg/404.svg create mode 100644 src/icons/svg/bug.svg create mode 100644 src/icons/svg/chart.svg create mode 100644 src/icons/svg/clipboard.svg create mode 100644 src/icons/svg/component.svg create mode 100644 src/icons/svg/dashboard.svg create mode 100644 src/icons/svg/documentation.svg create mode 100644 src/icons/svg/drag.svg create mode 100644 src/icons/svg/edit.svg create mode 100644 src/icons/svg/education.svg create mode 100644 src/icons/svg/email.svg create mode 100644 src/icons/svg/example.svg create mode 100644 src/icons/svg/excel.svg create mode 100644 src/icons/svg/exit-fullscreen.svg create mode 100644 src/icons/svg/eye-open.svg create mode 100644 src/icons/svg/eye.svg create mode 100644 src/icons/svg/form.svg create mode 100644 src/icons/svg/fullscreen.svg create mode 100644 src/icons/svg/guide.svg create mode 100644 src/icons/svg/icon.svg create mode 100644 src/icons/svg/international.svg create mode 100644 src/icons/svg/language.svg create mode 100644 src/icons/svg/link.svg create mode 100644 src/icons/svg/list.svg create mode 100644 src/icons/svg/lock.svg create mode 100644 src/icons/svg/message.svg create mode 100644 src/icons/svg/money.svg create mode 100644 src/icons/svg/nested.svg create mode 100644 src/icons/svg/password.svg create mode 100644 src/icons/svg/pdf.svg create mode 100644 src/icons/svg/people.svg create mode 100644 src/icons/svg/peoples.svg create mode 100644 src/icons/svg/qq.svg create mode 100644 src/icons/svg/search.svg create mode 100644 src/icons/svg/shopping.svg create mode 100644 src/icons/svg/size.svg create mode 100644 src/icons/svg/skill.svg create mode 100644 src/icons/svg/star.svg create mode 100644 src/icons/svg/tab.svg create mode 100644 src/icons/svg/table.svg create mode 100644 src/icons/svg/theme.svg create mode 100644 src/icons/svg/tree-table.svg create mode 100644 src/icons/svg/tree.svg create mode 100644 src/icons/svg/user.svg create mode 100644 src/icons/svg/wechat.svg create mode 100644 src/icons/svg/zip.svg create mode 100644 src/icons/svgo.yml create mode 100644 src/layout/component/aside.vue create mode 100644 src/layout/component/columnsAside.vue create mode 100644 src/layout/component/header.vue create mode 100644 src/layout/component/main.vue create mode 100644 src/layout/component/transverseAside.vue create mode 100644 src/layout/footer/index.vue create mode 100644 src/layout/index.vue create mode 100644 src/layout/logo/index.vue create mode 100644 src/layout/main/classic.vue create mode 100644 src/layout/main/columns.vue create mode 100644 src/layout/main/defaults.vue create mode 100644 src/layout/main/transverse.vue create mode 100644 src/layout/navBars/breadcrumb/breadcrumb.vue create mode 100644 src/layout/navBars/breadcrumb/index.vue create mode 100644 src/layout/navBars/breadcrumb/search.vue create mode 100644 src/layout/navBars/breadcrumb/setings.vue create mode 100644 src/layout/navBars/breadcrumb/theme.js create mode 100644 src/layout/navBars/breadcrumb/user.vue create mode 100644 src/layout/navBars/breadcrumb/userNews.vue create mode 100644 src/layout/navBars/index.vue create mode 100644 src/layout/navBars/tagsView/contextmenu.vue create mode 100644 src/layout/navBars/tagsView/tagsView.vue create mode 100644 src/layout/navMenu/horizontal.vue create mode 100644 src/layout/navMenu/subItem.vue create mode 100644 src/layout/navMenu/vertical.vue create mode 100644 src/layout/routerView/iframes.vue create mode 100644 src/layout/routerView/link.vue create mode 100644 src/layout/routerView/parent.vue create mode 100644 src/layout/upgrade/index.vue create mode 100644 src/libs/constants.js create mode 100644 src/libs/currency.js create mode 100644 src/libs/dataScreen.js create mode 100644 src/libs/dd-moment.js create mode 100644 src/libs/index.js create mode 100644 src/libs/modal-form.js create mode 100644 src/libs/modal-newsCategory.js create mode 100644 src/libs/modal-upload.js create mode 100644 src/libs/modal.js create mode 100644 src/libs/notice.js create mode 100644 src/libs/public.js create mode 100644 src/libs/settingMer.js create mode 100644 src/libs/socket.js create mode 100644 src/libs/system/index.js create mode 100644 src/libs/tools.js create mode 100644 src/libs/types.js create mode 100644 src/libs/util.cookies.js create mode 100644 src/libs/util.db.js create mode 100644 src/libs/util.js create mode 100644 src/libs/util.log.js create mode 100644 src/main.js create mode 100644 src/permission.js create mode 100644 src/router/index.js create mode 100644 src/router/modules/accounts.js create mode 100644 src/router/modules/app.js create mode 100644 src/router/modules/cms.js create mode 100644 src/router/modules/community.js create mode 100644 src/router/modules/config.js create mode 100644 src/router/modules/delivery.js create mode 100644 src/router/modules/freight.js create mode 100644 src/router/modules/group.js create mode 100644 src/router/modules/maintain.js create mode 100644 src/router/modules/marketing.js create mode 100644 src/router/modules/merchant.js create mode 100644 src/router/modules/order.js create mode 100644 src/router/modules/product.js create mode 100644 src/router/modules/promoter.js create mode 100644 src/router/modules/routine.js create mode 100644 src/router/modules/safe.js create mode 100644 src/router/modules/service.js create mode 100644 src/router/modules/setting.js create mode 100644 src/router/modules/sms.js create mode 100644 src/router/modules/station.js create mode 100644 src/router/modules/systemForm.js create mode 100644 src/router/modules/user.js create mode 100644 src/router/modules/userFeedback.js create mode 100644 src/setting.js create mode 100644 src/settings.js create mode 100644 src/store/getters.js create mode 100644 src/store/index.js create mode 100644 src/store/modules/app.js create mode 100644 src/store/modules/errorLog.js create mode 100644 src/store/modules/layout.js create mode 100644 src/store/modules/menu.js create mode 100644 src/store/modules/mobildConfig.js create mode 100644 src/store/modules/permission.js create mode 100644 src/store/modules/screenSetting.js create mode 100644 src/store/modules/settings.js create mode 100644 src/store/modules/tagsView.js create mode 100644 src/store/modules/themeConfig.js create mode 100644 src/store/modules/user.js create mode 100644 src/store/modules/users.js create mode 100644 src/styles/app.scss create mode 100644 src/styles/btn.scss create mode 100644 src/styles/element-ui.scss create mode 100644 src/styles/element-variables.scss create mode 100644 src/styles/font/demo.css create mode 100644 src/styles/font/demo_index.html create mode 100644 src/styles/font/iconfont.css create mode 100644 src/styles/font/iconfont.eot create mode 100644 src/styles/font/iconfont.js create mode 100644 src/styles/font/iconfont.json create mode 100644 src/styles/font/iconfont.svg create mode 100644 src/styles/font/iconfont.ttf create mode 100644 src/styles/font/iconfont.woff create mode 100644 src/styles/font/iconfont.woff2 create mode 100644 src/styles/form.scss create mode 100644 src/styles/iconfont/demo.css create mode 100644 src/styles/iconfont/demo_index.html create mode 100644 src/styles/iconfont/font_1945396_bzyvwsjuo37/demo.css create mode 100644 src/styles/iconfont/font_1945396_bzyvwsjuo37/demo_index.html create mode 100644 src/styles/iconfont/font_1945396_bzyvwsjuo37/iconfont.css create mode 100644 src/styles/iconfont/font_1945396_bzyvwsjuo37/iconfont.js create mode 100644 src/styles/iconfont/font_1945396_bzyvwsjuo37/iconfont.json create mode 100644 src/styles/iconfont/font_1945396_bzyvwsjuo37/iconfont.ttf create mode 100644 src/styles/iconfont/font_1945396_bzyvwsjuo37/iconfont.woff create mode 100644 src/styles/iconfont/font_1945396_bzyvwsjuo37/iconfont.woff2 create mode 100644 src/styles/iconfont/iconfont.css create mode 100644 src/styles/iconfont/iconfont.js create mode 100644 src/styles/iconfont/iconfont.json create mode 100644 src/styles/iconfont/iconfont.ttf create mode 100644 src/styles/iconfont/iconfont.woff create mode 100644 src/styles/iconfont/iconfont.woff2 create mode 100644 src/styles/iconfont2/demo.css create mode 100644 src/styles/iconfont2/demo_index.html create mode 100644 src/styles/iconfont2/iconfont.css create mode 100644 src/styles/iconfont2/iconfont.js create mode 100644 src/styles/iconfont2/iconfont.json create mode 100644 src/styles/iconfont2/iconfont.ttf create mode 100644 src/styles/iconfont2/iconfont.woff create mode 100644 src/styles/iconfont2/iconfont.woff2 create mode 100644 src/styles/index.scss create mode 100644 src/styles/mixin.scss create mode 100644 src/styles/sidebar.scss create mode 100644 src/styles/styles.scss create mode 100644 src/styles/transition.scss create mode 100644 src/styles/variables.scss create mode 100644 src/utils/auth.js create mode 100644 src/utils/bus.js create mode 100644 src/utils/clipboard.js create mode 100644 src/utils/compressImg.js create mode 100644 src/utils/error-log.js create mode 100644 src/utils/get-page-title.js create mode 100644 src/utils/index.js create mode 100644 src/utils/newToExcel.js create mode 100644 src/utils/open-window.js create mode 100644 src/utils/permission.js create mode 100644 src/utils/scroll-to.js create mode 100644 src/utils/storage.js create mode 100644 src/utils/system.js create mode 100644 src/utils/theme.js create mode 100644 src/utils/timeOptions.js create mode 100644 src/utils/toolsValidate.js create mode 100644 src/utils/util.js create mode 100644 src/utils/validate.js create mode 100644 src/utils/videoCloud.js create mode 100644 src/views/accounts/bill/index.vue create mode 100644 src/views/accounts/capital/index.vue create mode 100644 src/views/accounts/capitalFlow/index.vue create mode 100644 src/views/accounts/extract/index.vue create mode 100644 src/views/accounts/invoiceDesc/index.vue create mode 100644 src/views/accounts/receipt/index.vue create mode 100644 src/views/accounts/reconciliation/index.vue create mode 100644 src/views/accounts/settings/index.vue create mode 100644 src/views/accounts/statement/index.vue create mode 100644 src/views/accounts/statement/merchantBill.vue create mode 100644 src/views/accounts/statement/merchantDetail.vue create mode 100644 src/views/accounts/transferManage/setting.vue create mode 100644 src/views/accounts/transferRecord/index.vue create mode 100644 src/views/app/routine/download/index.vue create mode 100644 src/views/app/wechat/file/index.vue create mode 100644 src/views/app/wechat/menus/index.vue create mode 100644 src/views/app/wechat/newsCategory/index.vue create mode 100644 src/views/app/wechat/newsCategory/save.vue create mode 100644 src/views/app/wechat/reply/follow/index.vue create mode 100644 src/views/app/wechat/reply/index.vue create mode 100644 src/views/app/wechat/reply/keyword/index.vue create mode 100644 src/views/app/wechat/wxTemplate/index.vue create mode 100644 src/views/cityDelivery/rechargeRecord/index.vue create mode 100644 src/views/cityDelivery/storeManage/index.vue create mode 100644 src/views/cityDelivery/usageRecord/index.vue create mode 100644 src/views/cms/addArticle/index.vue create mode 100644 src/views/cms/article/index.vue create mode 100644 src/views/cms/articleCategory/index.vue create mode 100644 src/views/community/communityClassify/index.vue create mode 100644 src/views/community/communityComment/index.vue create mode 100644 src/views/community/communityConfig/index.vue create mode 100644 src/views/community/communityList/index.vue create mode 100644 src/views/community/communityTopic/index.vue create mode 100644 src/views/dashboard/components/TodoPanel.vue create mode 100644 src/views/dashboard/components/baseInfo.vue create mode 100644 src/views/dashboard/components/merchantRate.vue create mode 100644 src/views/dashboard/components/ranking.vue create mode 100644 src/views/dashboard/components/toDay.vue create mode 100644 src/views/dashboard/components/user.vue create mode 100644 src/views/dashboard/components/userData.vue create mode 100644 src/views/dashboard/index.vue create mode 100644 src/views/dataScreen/assets/css/index.scss create mode 100644 src/views/dataScreen/assets/css/modules/reset.scss create mode 100644 src/views/dataScreen/assets/css/modules/variables.scss create mode 100644 src/views/dataScreen/assets/css/public.scss create mode 100644 src/views/dataScreen/assets/css/theme/fonts/element-icons.ttf create mode 100644 src/views/dataScreen/assets/css/theme/fonts/element-icons.woff create mode 100644 src/views/dataScreen/assets/css/theme/index.css create mode 100644 src/views/dataScreen/assets/css/variable.scss create mode 100644 src/views/dataScreen/assets/css/webfont/index.css create mode 100644 src/views/dataScreen/assets/font/D-DINExp-Bold.otf create mode 100644 src/views/dataScreen/assets/iconfont/iconfont.css create mode 100644 src/views/dataScreen/assets/iconfont/iconfont.ttf create mode 100644 src/views/dataScreen/assets/iconfont/iconfont.woff create mode 100644 src/views/dataScreen/assets/iconfont/iconfont.woff2 create mode 100644 src/views/dataScreen/assets/img/center_map.png create mode 100644 src/views/dataScreen/assets/img/frame.png create mode 100644 src/views/dataScreen/assets/img/guang.png create mode 100644 src/views/dataScreen/assets/img/headers/juxing1.png create mode 100644 src/views/dataScreen/assets/img/headers/juxing2.png create mode 100644 src/views/dataScreen/assets/img/left_top_hong.png create mode 100644 src/views/dataScreen/assets/img/left_top_huang.png create mode 100644 src/views/dataScreen/assets/img/left_top_lan.png create mode 100644 src/views/dataScreen/assets/img/left_top_lv.png create mode 100644 src/views/dataScreen/assets/img/pageBg.png create mode 100644 src/views/dataScreen/assets/img/titles/you.png create mode 100644 src/views/dataScreen/assets/img/titles/zuo.png create mode 100644 src/views/dataScreen/assets/img/top.png create mode 100644 src/views/dataScreen/assets/img/xieyou.png create mode 100644 src/views/dataScreen/assets/img/xiezuo.png create mode 100644 src/views/dataScreen/assets/img/zuo_xuxian.png create mode 100644 src/views/dataScreen/components/echart/index.vue create mode 100644 src/views/dataScreen/components/item-wrap/item-wrap.vue create mode 100644 src/views/dataScreen/components/kong.vue create mode 100644 src/views/dataScreen/components/message/message.js create mode 100644 src/views/dataScreen/components/message/message.vue create mode 100644 src/views/dataScreen/components/reacquire/reacquire.vue create mode 100644 src/views/dataScreen/components/scale-screen/scale-screen.vue create mode 100644 src/views/dataScreen/home.scss create mode 100644 src/views/dataScreen/home.vue create mode 100644 src/views/dataScreen/indexs/center-bottom.vue create mode 100644 src/views/dataScreen/indexs/center-map.vue create mode 100644 src/views/dataScreen/indexs/center-top.vue create mode 100644 src/views/dataScreen/indexs/index.vue create mode 100644 src/views/dataScreen/indexs/left-bottom.vue create mode 100644 src/views/dataScreen/indexs/left-center.vue create mode 100644 src/views/dataScreen/indexs/left-top.vue create mode 100644 src/views/dataScreen/indexs/right-bottom.vue create mode 100644 src/views/dataScreen/indexs/right-center.vue create mode 100644 src/views/dataScreen/indexs/right-top.vue create mode 100644 src/views/dataScreen/setting.vue create mode 100644 src/views/dataScreen/utils/drawMixin.js create mode 100644 src/views/dataScreen/utils/index.js create mode 100644 src/views/dataScreen/utils/map/china.json create mode 100644 src/views/dataScreen/utils/map/xzqCode.js create mode 100644 src/views/error-page/401.vue create mode 100644 src/views/error-page/404.vue create mode 100644 src/views/freight/city/index.vue create mode 100644 src/views/freight/express/index.vue create mode 100644 src/views/login/index.vue create mode 100644 src/views/login/mixins.js create mode 100644 src/views/maintain/auth/index.vue create mode 100644 src/views/maintain/cache/index.vue create mode 100644 src/views/maintain/copyRight/index.vue create mode 100644 src/views/maintain/dataBackup/index.vue create mode 100644 src/views/marketing/application/handle/applicationDetails.vue create mode 100644 src/views/marketing/application/handle/applicationInfo.vue create mode 100644 src/views/marketing/application/handle/create.vue create mode 100644 src/views/marketing/application/handle/editForm.vue create mode 100644 src/views/marketing/application/index.vue create mode 100644 src/views/marketing/application/list/create.vue create mode 100644 src/views/marketing/application/list/index.vue create mode 100644 src/views/marketing/assist/assist_goods/detail.vue create mode 100644 src/views/marketing/assist/assist_goods/index.vue create mode 100644 src/views/marketing/assist/assist_goods/info.vue create mode 100644 src/views/marketing/assist/assist_list/detail.vue create mode 100644 src/views/marketing/assist/assist_list/index.vue create mode 100644 src/views/marketing/assist/index.vue create mode 100644 src/views/marketing/atmosphere/atmosphereList/addAtmosphere.vue create mode 100644 src/views/marketing/atmosphere/atmosphereList/goodsList.vue create mode 100644 src/views/marketing/atmosphere/atmosphereList/index.vue create mode 100644 src/views/marketing/atmosphere/index.vue create mode 100644 src/views/marketing/border/borderList/addBorder.vue create mode 100644 src/views/marketing/border/borderList/index.vue create mode 100644 src/views/marketing/border/index.vue create mode 100644 src/views/marketing/broadcast/broadcastList/index.vue create mode 100644 src/views/marketing/broadcast/broadcastList/proDetail.vue create mode 100644 src/views/marketing/broadcast/index.vue create mode 100644 src/views/marketing/combination/combination_goods/detail.vue create mode 100644 src/views/marketing/combination/combination_goods/index.vue create mode 100644 src/views/marketing/combination/combination_goods/info.vue create mode 100644 src/views/marketing/combination/combination_set/index.vue create mode 100644 src/views/marketing/combination/index.vue create mode 100644 src/views/marketing/combination/store_combination/detail.vue create mode 100644 src/views/marketing/combination/store_combination/index.vue create mode 100644 src/views/marketing/coupon/couponList/creatCoupon.vue create mode 100644 src/views/marketing/coupon/couponList/index.vue create mode 100644 src/views/marketing/coupon/couponUser/index.vue create mode 100644 src/views/marketing/coupon/index.vue create mode 100644 src/views/marketing/discounts/index.vue create mode 100644 src/views/marketing/integral/addProduct/copyRecord.vue create mode 100644 src/views/marketing/integral/addProduct/index.vue create mode 100644 src/views/marketing/integral/classify/index.vue create mode 100644 src/views/marketing/integral/config/index.vue create mode 100644 src/views/marketing/integral/index.vue create mode 100644 src/views/marketing/integral/log/index.vue create mode 100644 src/views/marketing/integral/orderList/index.vue create mode 100644 src/views/marketing/integral/orderList/orderDetails.vue create mode 100644 src/views/marketing/integral/productList/goodsList.vue create mode 100644 src/views/marketing/integral/productList/index.vue create mode 100644 src/views/marketing/integral/sign/index.vue create mode 100644 src/views/marketing/platformCoupon/couponInstructions/index.vue create mode 100644 src/views/marketing/platformCoupon/couponList/creatCoupon.vue create mode 100644 src/views/marketing/platformCoupon/couponList/index.vue create mode 100644 src/views/marketing/platformCoupon/couponRecord/index.vue create mode 100644 src/views/marketing/platformCoupon/couponSend/index.vue create mode 100644 src/views/marketing/platformCoupon/index.vue create mode 100644 src/views/marketing/preSale/agreement.vue create mode 100644 src/views/marketing/preSale/detail.vue create mode 100644 src/views/marketing/preSale/index.vue create mode 100644 src/views/marketing/preSale/info.vue create mode 100644 src/views/marketing/seckill/index.vue create mode 100644 src/views/marketing/seckill/seckillConfig/index.vue create mode 100644 src/views/marketing/seckill/seckillGoods/index.vue create mode 100644 src/views/marketing/seckill/seckillGoods/info.vue create mode 100644 src/views/marketing/studio/index.vue create mode 100644 src/views/marketing/studio/studioList/index.vue create mode 100644 src/views/marketing/studio/studioList/selectedGoods.vue create mode 100644 src/views/marketing/studio/studioList/studioDetail.vue create mode 100644 src/views/marketing/studio/studioProList/creatProduct.vue create mode 100644 src/views/marketing/studio/studioProList/index.vue create mode 100644 src/views/merchant/agreement/index.vue create mode 100644 src/views/merchant/application/index.vue create mode 100644 src/views/merchant/applyments/index.vue create mode 100644 src/views/merchant/applyments/list.vue create mode 100644 src/views/merchant/classify/index.vue create mode 100644 src/views/merchant/deposit/index.vue create mode 100644 src/views/merchant/list/handle/merDetails.vue create mode 100644 src/views/merchant/list/handle/merEditForm.vue create mode 100644 src/views/merchant/list/handle/merInfo.vue create mode 100644 src/views/merchant/list/index.vue create mode 100644 src/views/merchant/list/record.vue create mode 100644 src/views/merchant/rechargeRecord/index.vue create mode 100644 src/views/merchant/system/index.vue create mode 100644 src/views/merchant/type/description.vue create mode 100644 src/views/merchant/type/index.vue create mode 100644 src/views/merchant/type/record.vue create mode 100644 src/views/merchant/type/typeDetails.vue create mode 100644 src/views/merchant/type/typeEditForm.vue create mode 100644 src/views/merchant/type/typeInfo.vue create mode 100644 src/views/notify/smsConfig/components/forgetPassword.vue create mode 100644 src/views/notify/smsConfig/components/forgetPhone.vue create mode 100644 src/views/notify/smsConfig/components/loginFrom.vue create mode 100644 src/views/notify/smsConfig/components/register.vue create mode 100644 src/views/notify/smsConfig/config.vue create mode 100644 src/views/notify/smsConfig/index.vue create mode 100644 src/views/notify/smsConfig/tableList.vue create mode 100644 src/views/notify/smsPay/index.vue create mode 100644 src/views/notify/smsTemplateApply/index.vue create mode 100644 src/views/order/list/index.vue create mode 100644 src/views/order/list/orderDetails.vue create mode 100644 src/views/order/orderCancellate/index.vue create mode 100644 src/views/order/refund/index.vue create mode 100644 src/views/product/band/bandClassify/index.vue create mode 100644 src/views/product/band/bandList/index.vue create mode 100644 src/views/product/band/index.vue create mode 100644 src/views/product/priceDescription/index.vue create mode 100644 src/views/product/productClassify/index.vue create mode 100644 src/views/product/productComment/index.vue create mode 100644 src/views/product/productExamine/index.vue create mode 100644 src/views/product/productExamine/info.vue create mode 100644 src/views/product/productExamine/proDetails.vue create mode 100644 src/views/product/productGuarantee/index.vue create mode 100644 src/views/product/productLabel/index.vue create mode 100644 src/views/product/sourceCountry/index.vue create mode 100644 src/views/product/specs/create.vue create mode 100644 src/views/product/specs/list.vue create mode 100644 src/views/product/specs/merList.vue create mode 100644 src/views/promoter/commission/index.vue create mode 100644 src/views/promoter/config/index.vue create mode 100644 src/views/promoter/distributionRules/index.vue create mode 100644 src/views/promoter/gift/index.vue create mode 100644 src/views/promoter/membershipLevel/index.vue create mode 100644 src/views/promoter/order/index.vue create mode 100644 src/views/promoter/order/orderDetails.vue create mode 100644 src/views/promoter/user/index.vue create mode 100644 src/views/safe/pageLinks/index.vue create mode 100644 src/views/safe/pcLinks/index.vue create mode 100644 src/views/service/balanceRecord/index.vue create mode 100644 src/views/service/customer/index.vue create mode 100644 src/views/service/purchase/index.vue create mode 100644 src/views/service/settings/index.vue create mode 100644 src/views/setting/agreements/index.vue create mode 100644 src/views/setting/devise/cateMerchant.vue create mode 100644 src/views/setting/devise/catePlantform.vue create mode 100644 src/views/setting/devise/components/uploadPic.vue create mode 100644 src/views/setting/devise/index.vue create mode 100644 src/views/setting/devise/linkList.vue create mode 100644 src/views/setting/devise/links.vue create mode 100644 src/views/setting/devise/list.vue create mode 100644 src/views/setting/devise/merLink.vue create mode 100644 src/views/setting/devise/merchantList.vue create mode 100644 src/views/setting/devise/microList.vue create mode 100644 src/views/setting/devise/shopStreet.vue create mode 100644 src/views/setting/devise/users.vue create mode 100644 src/views/setting/devise/visualization.vue create mode 100644 src/views/setting/systemAdmin/index.vue create mode 100644 src/views/setting/systemLog/index.vue create mode 100644 src/views/setting/systemMenu/index.vue create mode 100644 src/views/setting/systemRole/index.vue create mode 100644 src/views/setting/themeStyle/index.vue create mode 100644 src/views/sms/smsConfig/components/changePsd.vue create mode 100644 src/views/sms/smsConfig/components/changeSignature.vue create mode 100644 src/views/sms/smsConfig/components/loginFrom.vue create mode 100644 src/views/sms/smsConfig/components/register.vue create mode 100644 src/views/sms/smsConfig/components/tableList.vue create mode 100644 src/views/sms/smsConfig/index.vue create mode 100644 src/views/sms/smsPay/index.vue create mode 100644 src/views/sms/smsTemplate/applyList.vue create mode 100644 src/views/sms/smsTemplate/index.vue create mode 100644 src/views/station/notice/index.vue create mode 100644 src/views/system/config/classify.vue create mode 100644 src/views/system/config/picture.vue create mode 100644 src/views/system/config/setting.vue create mode 100644 src/views/system/customer_keyword/index.vue create mode 100644 src/views/system/exportFile/index.vue create mode 100644 src/views/system/groupData/data.vue create mode 100644 src/views/system/groupData/list.vue create mode 100644 src/views/system/notification/index.vue create mode 100644 src/views/system/topic/data.vue create mode 100644 src/views/systemForm/cityDelivery/index.vue create mode 100644 src/views/systemForm/form/create.vue create mode 100644 src/views/systemForm/form/details.vue create mode 100644 src/views/systemForm/form/index.vue create mode 100644 src/views/systemForm/setSystem/index.vue create mode 100644 src/views/user/agreement/index.vue create mode 100644 src/views/user/group/index.vue create mode 100644 src/views/user/list/couponList.vue create mode 100644 src/views/user/list/index.vue create mode 100644 src/views/user/list/userCreate.vue create mode 100644 src/views/user/list/userDetails.vue create mode 100644 src/views/user/member/config.vue create mode 100644 src/views/user/member/description.vue create mode 100644 src/views/user/member/equity.vue create mode 100644 src/views/user/member/index.vue create mode 100644 src/views/user/member/interests.vue create mode 100644 src/views/user/member/list.vue create mode 100644 src/views/user/member/record.vue create mode 100644 src/views/user/member/type.vue create mode 100644 src/views/user/member/vipAgreement.vue create mode 100644 src/views/user/search/index.vue create mode 100644 src/views/user/setupUser/index.vue create mode 100644 src/views/userFeedback/classify/index.vue create mode 100644 src/views/userFeedback/list/index.vue create mode 100644 tests/unit/.eslintrc.js create mode 100644 tests/unit/components/Hamburger.spec.js create mode 100644 tests/unit/components/SvgIcon.spec.js create mode 100644 tests/unit/utils/formatTime.spec.js create mode 100644 tests/unit/utils/parseTime.spec.js create mode 100644 tests/unit/utils/validate.spec.js create mode 100644 vue.config.js diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..3454886 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,14 @@ +# https://editorconfig.org +root = true + +[*] +charset = utf-8 +indent_style = space +indent_size = 2 +end_of_line = lf +insert_final_newline = true +trim_trailing_whitespace = true + +[*.md] +insert_final_newline = false +trim_trailing_whitespace = false diff --git a/.env.development b/.env.development new file mode 100644 index 0000000..00601dc --- /dev/null +++ b/.env.development @@ -0,0 +1,20 @@ +# just a flag +ENV = 'development' +# http://192.168.1.43:8324/admin +# http://mer.crmeb.net/admin +# base api +# VUE_APP_BASE_API = 'http://192.168.1.110:8088' +VUE_APP_BASE_API = 'http://oversea.hwms.shop' + +# socket 连接地址 +# VUE_APP_WS_URL = 'ws://0.0.0.0:8324' +VUE_APP_WS_URL = 'ws://oversea.hwms.shop' + +# vue-cli uses the VUE_CLI_BABEL_TRANSPILE_MODULES environment variable, +# to control whether the babel-plugin-dynamic-import-node plugin is enabled. +# It only does one thing by converting all import() to require(). +# This configuration can significantly increase the speed of hot updates, +# when you have a large number of pages. +# Detail: https://github.com/vuejs/vue-cli/blob/dev/packages/@vue/babel-preset-app/index.js + +VUE_CLI_BABEL_TRANSPILE_MODULES = true diff --git a/.env.production b/.env.production new file mode 100644 index 0000000..4442bca --- /dev/null +++ b/.env.production @@ -0,0 +1,7 @@ +# just a flag +ENV = 'production' + +# base api +VUE_APP_BASE_API = 'http://oversea.hwms.shop' +# socket 连接地址 +VUE_APP_WS_URL = 'ws://oversea.hwms.shop' diff --git a/.env.staging b/.env.staging new file mode 100644 index 0000000..a8793a0 --- /dev/null +++ b/.env.staging @@ -0,0 +1,8 @@ +NODE_ENV = production + +# just a flag +ENV = 'staging' + +# base api +VUE_APP_BASE_API = '/stage-api' + diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 0000000..5bf07e6 --- /dev/null +++ b/.eslintignore @@ -0,0 +1,5 @@ +build/*.js +src/assets +public +dist +src/ diff --git a/.eslintrc.js b/.eslintrc.js new file mode 100644 index 0000000..c977505 --- /dev/null +++ b/.eslintrc.js @@ -0,0 +1,198 @@ +module.exports = { + root: true, + parserOptions: { + parser: 'babel-eslint', + sourceType: 'module' + }, + env: { + browser: true, + node: true, + es6: true, + }, + extends: ['plugin:vue/recommended', 'eslint:recommended'], + + // add your custom rules here + //it is base on https://github.com/vuejs/eslint-config-vue + rules: { + "vue/max-attributes-per-line": [2, { + "singleline": 10, + "multiline": { + "max": 1, + "allowFirstLine": false + } + }], + "vue/singleline-html-element-content-newline": "off", + "vue/multiline-html-element-content-newline":"off", + "vue/name-property-casing": ["error", "PascalCase"], + "vue/no-v-html": "off", + 'accessor-pairs': 2, + 'arrow-spacing': [2, { + 'before': true, + 'after': true + }], + 'block-spacing': [2, 'always'], + 'brace-style': [2, '1tbs', { + 'allowSingleLine': true + }], + 'camelcase': [0, { + 'properties': 'always' + }], + 'comma-dangle': [2, 'never'], + 'comma-spacing': [2, { + 'before': false, + 'after': true + }], + 'comma-style': [2, 'last'], + 'constructor-super': 2, + 'curly': [2, 'multi-line'], + 'dot-location': [2, 'property'], + 'eol-last': 2, + 'eqeqeq': ["error", "always", {"null": "ignore"}], + 'generator-star-spacing': [2, { + 'before': true, + 'after': true + }], + 'handle-callback-err': [2, '^(err|error)$'], + 'indent': [2, 2, { + 'SwitchCase': 1 + }], + 'jsx-quotes': [2, 'prefer-single'], + 'key-spacing': [2, { + 'beforeColon': false, + 'afterColon': true + }], + 'keyword-spacing': [2, { + 'before': true, + 'after': true + }], + 'new-cap': [2, { + 'newIsCap': true, + 'capIsNew': false + }], + 'new-parens': 2, + 'no-array-constructor': 2, + 'no-caller': 2, + 'no-console': 'off', + 'no-class-assign': 2, + 'no-cond-assign': 2, + 'no-const-assign': 2, + 'no-control-regex': 0, + 'no-delete-var': 2, + 'no-dupe-args': 2, + 'no-dupe-class-members': 2, + 'no-dupe-keys': 2, + 'no-duplicate-case': 2, + 'no-empty-character-class': 2, + 'no-empty-pattern': 2, + 'no-eval': 2, + 'no-ex-assign': 2, + 'no-extend-native': 2, + 'no-extra-bind': 2, + 'no-extra-boolean-cast': 2, + 'no-extra-parens': [2, 'functions'], + 'no-fallthrough': 2, + 'no-floating-decimal': 2, + 'no-func-assign': 2, + 'no-implied-eval': 2, + 'no-inner-declarations': [2, 'functions'], + 'no-invalid-regexp': 2, + 'no-irregular-whitespace': 2, + 'no-iterator': 2, + 'no-label-var': 2, + 'no-labels': [2, { + 'allowLoop': false, + 'allowSwitch': false + }], + 'no-lone-blocks': 2, + 'no-mixed-spaces-and-tabs': 2, + 'no-multi-spaces': 2, + 'no-multi-str': 2, + 'no-multiple-empty-lines': [2, { + 'max': 1 + }], + 'no-native-reassign': 2, + 'no-negated-in-lhs': 2, + 'no-new-object': 2, + 'no-new-require': 2, + 'no-new-symbol': 2, + 'no-new-wrappers': 2, + 'no-obj-calls': 2, + 'no-octal': 2, + 'no-octal-escape': 2, + 'no-path-concat': 2, + 'no-proto': 2, + 'no-redeclare': 2, + 'no-regex-spaces': 2, + 'no-return-assign': [2, 'except-parens'], + 'no-self-assign': 2, + 'no-self-compare': 2, + 'no-sequences': 2, + 'no-shadow-restricted-names': 2, + 'no-spaced-func': 2, + 'no-sparse-arrays': 2, + 'no-this-before-super': 2, + 'no-throw-literal': 2, + 'no-trailing-spaces': 2, + 'no-undef': 2, + 'no-undef-init': 2, + 'no-unexpected-multiline': 2, + 'no-unmodified-loop-condition': 2, + 'no-unneeded-ternary': [2, { + 'defaultAssignment': false + }], + 'no-unreachable': 2, + 'no-unsafe-finally': 2, + 'no-unused-vars': [2, { + 'vars': 'all', + 'args': 'none' + }], + 'no-useless-call': 2, + 'no-useless-computed-key': 2, + 'no-useless-constructor': 2, + 'no-useless-escape': 0, + 'no-whitespace-before-property': 2, + 'no-with': 2, + 'one-var': [2, { + 'initialized': 'never' + }], + 'operator-linebreak': [2, 'after', { + 'overrides': { + '?': 'before', + ':': 'before' + } + }], + 'padded-blocks': [2, 'never'], + 'quotes': [2, 'single', { + 'avoidEscape': true, + 'allowTemplateLiterals': true + }], + 'semi': [2, 'never'], + 'semi-spacing': [2, { + 'before': false, + 'after': true + }], + 'space-before-blocks': [2, 'always'], + 'space-before-function-paren': [2, 'never'], + 'space-in-parens': [2, 'never'], + 'space-infix-ops': 2, + 'space-unary-ops': [2, { + 'words': true, + 'nonwords': false + }], + 'spaced-comment': [2, 'always', { + 'markers': ['global', 'globals', 'eslint', 'eslint-disable', '*package', '!', ','] + }], + 'template-curly-spacing': [2, 'never'], + 'use-isnan': 2, + 'valid-typeof': 2, + 'wrap-iife': [2, 'any'], + 'yield-star-spacing': [2, 'both'], + 'yoda': [2, 'never'], + 'prefer-const': 2, + 'no-debugger': process.env.NODE_ENV === 'production' ? 2 : 0, + 'object-curly-spacing': [2, 'always', { + objectsInObjects: false + }], + 'array-bracket-spacing': [2, 'never'] + } +} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..78a752d --- /dev/null +++ b/.gitignore @@ -0,0 +1,23 @@ +.DS_Store +node_modules/ +dist/ +npm-debug.log* +yarn-debug.log* +yarn-error.log* +**/*.log + +tests/**/coverage/ +tests/e2e/reports +selenium-debug.log + +# Editor directories and files +.idea +.vscode +*.suo +*.ntvs* +*.njsproj +*.sln +*.local + +package-lock.json +yarn.lock diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..f4be7a0 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,5 @@ +language: node_js +node_js: 10 +script: npm run test +notifications: + email: false diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..6151575 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2017-present PanJiaChen + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.es.md b/README.es.md new file mode 100644 index 0000000..fadb9a9 --- /dev/null +++ b/README.es.md @@ -0,0 +1,263 @@ +# CRMEB多商户 +## 开发规范 +统一使用ES6 语法 +方法注释 +/* +* th => 表头 +* data => 数据 +* fileName => 文件名 +* fileType => 文件类型 +* sheetName => sheet页名 +*/ +export default function toExcel ({ th, data, fileName, fileType, sheetName }) +行注释 // + +### 命名 + +页面目录 文件夹命名格式骆驼式命名法,例如:用户列表 userList +例如:商品模块 +product 商品 + ├─ product 商品管理 + ├─productList 商品管理目录 + ├- index.vue 首页 + +页面命名、组建、文件夹 命名格式小驼峰命名法,例如:用户列表 userList + +类名函数命名 大驼峰式 例如:addUser +变量命名 小驼峰式 例如:user 或者 userInfo _userinfo user-info +常量 采用全大些下划线命名 例如:VUE_APP_API_URl + +### 文件管理规范 +pages 页面模块必须件文件夹区分 +api 接口一个模块一个文件 +组建 一个组建一个文件夹 +plugins 插件一个插件一个文件夹 +vuex 路由状态管理,一个模块在modules 中建一个文件夹 +router 一个模块一个模块在modules 中建一个文件夹 +style 样式尽量采用iView自带组建,common.less 系统通用样式不要轻易动 +自定义通用样式 style.less,每次添加必须加注释,页面独立样式在在页面内写,后缀less 格式 +组建样式 styles 中添加文件夹 composents 对应components 目录新建样式文件 +utils 自定义工具js 独立命名,一般不用新建文件夹 + +## 模块命名 +~~~ +├─ login 登录 +├─ dashboard 首页 +├─ product 商品管理 +├─ order 系统订单管理 +├─ promoter 分销 +├─ user 用户管理 +├─ accounts 财务管理 +├─ merchant 商户管理 +├─ app 各个应用模块功能管理公众号、小程序、支付宝、百度小程序、今日头条小程序 +├─ system 系统更新日志 数据库管理 素材管理 +├─ setting 系统身份管理 系统权限管理、系统菜单管理、操作日志 +├─ sms 短信设置 +├─ systemForm 商城设置 +├─ freight 物流设置 +├─ maintain 安全维护 +├─ safe 维护-页面链接 +├─ userFeedback 用户反馈 +├─ error-page 错误页 + +~~~ +## 目录结构 +主要目录结构及说明: +~~~ + +├── public # 静态资源 +│ ├── favicon.ico # favicon图标 +│ └── index.html # html 模板 +├── src # 源代码 +│ ├── api # 所有接口api +│ │ └──request.js # 请求封装 +│ │ └──accounts.js # 有关财务的接口 +│ │ └──promoter.js # 有关分销的接口 +│ │ └──app.js # 有关应用(小程序、公众号)的接口 +│ │ └──cms.js # 有关内容(文章管理、分类)的接口 +│ │ └──home.js # 有关首页的接口 +│ │ └──order.js # 有关订单的接口 +│ │ └──product.js # 有关商品的接口 +│ │ └──setting.js # 有关权限管理的接口 +│ │ └──system.js # 有关系统配置的接口 +│ │ └──systemForm.js # 有关表单组件的接口 +│ │ └──maintain.js # 有关安全维护的接口 +│ │ └──merchant.js # 有关商户的接口 +│ │ └──sms.js # 有关短信设置的接口 +│ │ └──user.js # 有关登录、用户的接口 +│ │ └──userFeedback.js # 有关用户反馈的接口 +│ │ └──freight.js # 有关物流设置的接口 +│ ├── assets # 图片、svg 等静态资源 +│ ├── icons # svg 等静态资源 +│ ├── components # 公共组件 +│ │ └──Breadcrumb # 头部标题标签 +│ │ └──cards # 统计 +│ │ └──echarts # 统计图 +│ │ └──goodsList # 商品列表 +│ │ └──Hamburger # 导航收缩组件 +│ │ └──HeaderSearch # 导航搜索组件 +│ │ └──iconFrom # 导航添加图标 +│ │ └──newsCategory # 图文组件 +│ │ └──RightPanel # 右侧设置按钮,设置导航相关 +│ │ └──Screenfull # 全屏 +│ │ └──SvgIcon # svg图标 +│ │ └──ThemePicker # 右侧设置按钮,设置组题颜色 +│ │ └──ueditorFrom # 富文本编辑器 +│ │ └──uploadPicture # 上传图片组件 +│ ├── layouts # 导航布局 +│ │ ├──index # 主页面 +│ │ ├──components # 导航组件 +│ │ └──Settings # 右边小按钮,设置导航等 +│ │ └──Sidebar # 侧边导航 +│ │ └──TagsView # tab标签页导航 +│ │ └──Navbar # 头部导航 +│ │ └──AppMain # 导航路由 +│ │ └──index.js # 组件引用 +│ │ └──mixins # 自适应大小 +│ ├── libs # 公共js方法 +│ │ └──settingMer # 配置请求地址 +│ ├── views # 所有页面 +│ │ └──login # 登录 +│ │ └──index # 登录 +│ │ └──dashboard # 首页 +│ │ └──product # 商品 +│ │ └──band # 品牌管理 +│ │ └──productClassify # 商品分类 +│ │ └──productExamine # 商品审核 +│ │ └──productComment # 商品评论管理 +│ │ └──order # 订单管理 +│ │ └──promoter # 分销 +│ │ └──user # 分销员列表 +│ │ └──config # 分销设置 +│ │ └──cms # 内容 +│ │ └──addArticle # 添加文章/编辑文章 +│ │ └──article # 文章管理 +│ │ └──articleCategory # 文章分类 +│ │ └──user # 用户 +│ │ └──group # 用户分组 +│ │ └──group # 用户标签 +│ │ └──list # 用户管理 +│ │ └──accounts # 财务 +│ │ └──bill # 充值记录 +│ │ └──capital # 资金记录 +│ │ └──extract # 提现管理 +│ │ └──reconciliation # 财务对账 +│ │ └──merchant # 商户 +│ │ └──list # 商户列表 +│ │ └──classify # 商户分类 +│ │ └──system # 商户菜单管理 +│ │ └──app # 应用 +│ │ └──wechat # 公众号 +│ │ └──menus # 微信菜单 +│ │ └──newsCategory # 图文管理 +│ │ └──save # 图文添加 +│ │ └──reply # 自动回复 +│ │ └──follow # 微信关注回复/无效关键词回复 +│ │ └──keyword # 关键字回复 +│ │ └──wxTemplate # 微信/小程序模板消息 +│ │ └──system # 设置 +│ │ └──config # 系统设置 +│ │ └──classify # 配置分类 +│ │ └──setting # 配置管理 +│ │ └──picture # 素材管理 +│ │ └──groupData # 组合设置 +│ │ └──list # 组合数据 +│ │ └──data # 组合数据列表/登录页幻灯片/首页幻灯片/首页导航按钮/首页推荐区/个人中心幻灯片/个人中心菜单/热门搜索/分销特权/分销海报/充值金额配置 +│ │ └──setting # 设置-权限管理 +│ │ └──systemRole # 身份管理 +│ │ └──systemAdmin # 管理员管理 +│ │ └──systemLog # 操作日志 +│ │ └──systemMenu # 菜单管理 +│ │ └──systemForm # 设置-商城设置 +│ │ └──setSystem # 基础配置/商城配置/余额充值设置/文件上传/短信提醒开关/公众号支付配置/小程序支付配置/公众号配置/小程序配置 +│ │ └──sms # 短信设置 +│ │ └──smsConfig # 短信账户 +│ │ └──smsTemplate # 短信模板 +│ │ └──smsPay # 短信购买 +│ │ └──freight # 物流设置 +│ │ └──express # 物流公司 +│ │ └──maintain # 安全维护 +│ │ └──dataBackup # 数据备份 +│ │ └──auth # 商业授权 +│ │ └──safe # 维护-页面链接 +│ │ └──pageLinks # 页面链接 +│ │ └──userFeedback # 用户-用户反馈 +│ │ └──list # 反馈列表 +│ │ └──classify # 反馈分类 +│ │ └──error-page # 错误页 +│ │ └──404 # 错误页404 +│ │ └──403 # 错误页403 +│ ├── filters # 过滤器 +│ ├── router # 路由配置 +│ │ └──modules # 页面路由模块 +│ │ └──accounts.js # 有关财务 +│ │ └──app.js # 有关应用(公众号) +│ │ └──cms.js # 有关内容(文章管理、文章分类) +│ │ └──config.js # 有关系统配置 +│ │ └──freight.js # 有关物流设置 +│ │ └──group.js # 有关组合数据 +│ │ └──maintain.js # 有关安全维护 +│ │ └──merchant.js # 有关商户 +│ │ └──order.js # 有关订单 +│ │ └──product.js # 有关商品 +│ │ └──promoter.js # 有关分销 +│ │ └──routine.js # 有关小程序 +│ │ └──safe.js # 有关维护 +│ │ └──setting.js # 有关权限 +│ │ └──sms.js # 有关短信 +│ │ └──systemForm.js # 有关商城设置 +│ │ └──user.js # 有关用户 +│ │ └──feedback.js # 有关用户反馈 +│ │ └──index.js # 路由的汇总 +│ ├── store # Vuex 状态管理 +│ ├── utils # 全局公用方法 +│ ├── styles # 样式管理 +│ ├── permission.js # 路由拦截 +│ ├── setting.js # 业务配置文件 +│ ├── main.js # 入口文件 加载组件 初始化等 +│ └── App.vue # 入口页面 +├── tests # 测试 +├── .env.xxx # 环境变量配置 +├── .eslintrc.js # eslint 配置项 +├── .babelrc # babel-loader 配置 +├── .travis.yml # 自动化CI配置 +├── vue.config.js # vue-cli 配置 +├── postcss.config.js # postcss 配置 +└── package.json # package.json + +~~~ +## 开发打包项目 +~~~ +# 进入项目目录 +$ cd admin-iView + +# 安装依赖 +$ npm install + +# 启动项目(本地开发环境) +$ npm run dev + +# 打包项目 +## Build + +```bash +# build for test environment +npm run build:stage + +# build for production environment +npm run build:prod +``` +## Advanced +```bash +# preview the release environment effect +npm run preview + +# preview the release environment effect + static resource analysis +npm run preview -- --report + +# code format check +npm run lint + +# code format check and auto fix +npm run lint -- --fix +``` \ No newline at end of file diff --git a/README.ja.md b/README.ja.md new file mode 100644 index 0000000..fadb9a9 --- /dev/null +++ b/README.ja.md @@ -0,0 +1,263 @@ +# CRMEB多商户 +## 开发规范 +统一使用ES6 语法 +方法注释 +/* +* th => 表头 +* data => 数据 +* fileName => 文件名 +* fileType => 文件类型 +* sheetName => sheet页名 +*/ +export default function toExcel ({ th, data, fileName, fileType, sheetName }) +行注释 // + +### 命名 + +页面目录 文件夹命名格式骆驼式命名法,例如:用户列表 userList +例如:商品模块 +product 商品 + ├─ product 商品管理 + ├─productList 商品管理目录 + ├- index.vue 首页 + +页面命名、组建、文件夹 命名格式小驼峰命名法,例如:用户列表 userList + +类名函数命名 大驼峰式 例如:addUser +变量命名 小驼峰式 例如:user 或者 userInfo _userinfo user-info +常量 采用全大些下划线命名 例如:VUE_APP_API_URl + +### 文件管理规范 +pages 页面模块必须件文件夹区分 +api 接口一个模块一个文件 +组建 一个组建一个文件夹 +plugins 插件一个插件一个文件夹 +vuex 路由状态管理,一个模块在modules 中建一个文件夹 +router 一个模块一个模块在modules 中建一个文件夹 +style 样式尽量采用iView自带组建,common.less 系统通用样式不要轻易动 +自定义通用样式 style.less,每次添加必须加注释,页面独立样式在在页面内写,后缀less 格式 +组建样式 styles 中添加文件夹 composents 对应components 目录新建样式文件 +utils 自定义工具js 独立命名,一般不用新建文件夹 + +## 模块命名 +~~~ +├─ login 登录 +├─ dashboard 首页 +├─ product 商品管理 +├─ order 系统订单管理 +├─ promoter 分销 +├─ user 用户管理 +├─ accounts 财务管理 +├─ merchant 商户管理 +├─ app 各个应用模块功能管理公众号、小程序、支付宝、百度小程序、今日头条小程序 +├─ system 系统更新日志 数据库管理 素材管理 +├─ setting 系统身份管理 系统权限管理、系统菜单管理、操作日志 +├─ sms 短信设置 +├─ systemForm 商城设置 +├─ freight 物流设置 +├─ maintain 安全维护 +├─ safe 维护-页面链接 +├─ userFeedback 用户反馈 +├─ error-page 错误页 + +~~~ +## 目录结构 +主要目录结构及说明: +~~~ + +├── public # 静态资源 +│ ├── favicon.ico # favicon图标 +│ └── index.html # html 模板 +├── src # 源代码 +│ ├── api # 所有接口api +│ │ └──request.js # 请求封装 +│ │ └──accounts.js # 有关财务的接口 +│ │ └──promoter.js # 有关分销的接口 +│ │ └──app.js # 有关应用(小程序、公众号)的接口 +│ │ └──cms.js # 有关内容(文章管理、分类)的接口 +│ │ └──home.js # 有关首页的接口 +│ │ └──order.js # 有关订单的接口 +│ │ └──product.js # 有关商品的接口 +│ │ └──setting.js # 有关权限管理的接口 +│ │ └──system.js # 有关系统配置的接口 +│ │ └──systemForm.js # 有关表单组件的接口 +│ │ └──maintain.js # 有关安全维护的接口 +│ │ └──merchant.js # 有关商户的接口 +│ │ └──sms.js # 有关短信设置的接口 +│ │ └──user.js # 有关登录、用户的接口 +│ │ └──userFeedback.js # 有关用户反馈的接口 +│ │ └──freight.js # 有关物流设置的接口 +│ ├── assets # 图片、svg 等静态资源 +│ ├── icons # svg 等静态资源 +│ ├── components # 公共组件 +│ │ └──Breadcrumb # 头部标题标签 +│ │ └──cards # 统计 +│ │ └──echarts # 统计图 +│ │ └──goodsList # 商品列表 +│ │ └──Hamburger # 导航收缩组件 +│ │ └──HeaderSearch # 导航搜索组件 +│ │ └──iconFrom # 导航添加图标 +│ │ └──newsCategory # 图文组件 +│ │ └──RightPanel # 右侧设置按钮,设置导航相关 +│ │ └──Screenfull # 全屏 +│ │ └──SvgIcon # svg图标 +│ │ └──ThemePicker # 右侧设置按钮,设置组题颜色 +│ │ └──ueditorFrom # 富文本编辑器 +│ │ └──uploadPicture # 上传图片组件 +│ ├── layouts # 导航布局 +│ │ ├──index # 主页面 +│ │ ├──components # 导航组件 +│ │ └──Settings # 右边小按钮,设置导航等 +│ │ └──Sidebar # 侧边导航 +│ │ └──TagsView # tab标签页导航 +│ │ └──Navbar # 头部导航 +│ │ └──AppMain # 导航路由 +│ │ └──index.js # 组件引用 +│ │ └──mixins # 自适应大小 +│ ├── libs # 公共js方法 +│ │ └──settingMer # 配置请求地址 +│ ├── views # 所有页面 +│ │ └──login # 登录 +│ │ └──index # 登录 +│ │ └──dashboard # 首页 +│ │ └──product # 商品 +│ │ └──band # 品牌管理 +│ │ └──productClassify # 商品分类 +│ │ └──productExamine # 商品审核 +│ │ └──productComment # 商品评论管理 +│ │ └──order # 订单管理 +│ │ └──promoter # 分销 +│ │ └──user # 分销员列表 +│ │ └──config # 分销设置 +│ │ └──cms # 内容 +│ │ └──addArticle # 添加文章/编辑文章 +│ │ └──article # 文章管理 +│ │ └──articleCategory # 文章分类 +│ │ └──user # 用户 +│ │ └──group # 用户分组 +│ │ └──group # 用户标签 +│ │ └──list # 用户管理 +│ │ └──accounts # 财务 +│ │ └──bill # 充值记录 +│ │ └──capital # 资金记录 +│ │ └──extract # 提现管理 +│ │ └──reconciliation # 财务对账 +│ │ └──merchant # 商户 +│ │ └──list # 商户列表 +│ │ └──classify # 商户分类 +│ │ └──system # 商户菜单管理 +│ │ └──app # 应用 +│ │ └──wechat # 公众号 +│ │ └──menus # 微信菜单 +│ │ └──newsCategory # 图文管理 +│ │ └──save # 图文添加 +│ │ └──reply # 自动回复 +│ │ └──follow # 微信关注回复/无效关键词回复 +│ │ └──keyword # 关键字回复 +│ │ └──wxTemplate # 微信/小程序模板消息 +│ │ └──system # 设置 +│ │ └──config # 系统设置 +│ │ └──classify # 配置分类 +│ │ └──setting # 配置管理 +│ │ └──picture # 素材管理 +│ │ └──groupData # 组合设置 +│ │ └──list # 组合数据 +│ │ └──data # 组合数据列表/登录页幻灯片/首页幻灯片/首页导航按钮/首页推荐区/个人中心幻灯片/个人中心菜单/热门搜索/分销特权/分销海报/充值金额配置 +│ │ └──setting # 设置-权限管理 +│ │ └──systemRole # 身份管理 +│ │ └──systemAdmin # 管理员管理 +│ │ └──systemLog # 操作日志 +│ │ └──systemMenu # 菜单管理 +│ │ └──systemForm # 设置-商城设置 +│ │ └──setSystem # 基础配置/商城配置/余额充值设置/文件上传/短信提醒开关/公众号支付配置/小程序支付配置/公众号配置/小程序配置 +│ │ └──sms # 短信设置 +│ │ └──smsConfig # 短信账户 +│ │ └──smsTemplate # 短信模板 +│ │ └──smsPay # 短信购买 +│ │ └──freight # 物流设置 +│ │ └──express # 物流公司 +│ │ └──maintain # 安全维护 +│ │ └──dataBackup # 数据备份 +│ │ └──auth # 商业授权 +│ │ └──safe # 维护-页面链接 +│ │ └──pageLinks # 页面链接 +│ │ └──userFeedback # 用户-用户反馈 +│ │ └──list # 反馈列表 +│ │ └──classify # 反馈分类 +│ │ └──error-page # 错误页 +│ │ └──404 # 错误页404 +│ │ └──403 # 错误页403 +│ ├── filters # 过滤器 +│ ├── router # 路由配置 +│ │ └──modules # 页面路由模块 +│ │ └──accounts.js # 有关财务 +│ │ └──app.js # 有关应用(公众号) +│ │ └──cms.js # 有关内容(文章管理、文章分类) +│ │ └──config.js # 有关系统配置 +│ │ └──freight.js # 有关物流设置 +│ │ └──group.js # 有关组合数据 +│ │ └──maintain.js # 有关安全维护 +│ │ └──merchant.js # 有关商户 +│ │ └──order.js # 有关订单 +│ │ └──product.js # 有关商品 +│ │ └──promoter.js # 有关分销 +│ │ └──routine.js # 有关小程序 +│ │ └──safe.js # 有关维护 +│ │ └──setting.js # 有关权限 +│ │ └──sms.js # 有关短信 +│ │ └──systemForm.js # 有关商城设置 +│ │ └──user.js # 有关用户 +│ │ └──feedback.js # 有关用户反馈 +│ │ └──index.js # 路由的汇总 +│ ├── store # Vuex 状态管理 +│ ├── utils # 全局公用方法 +│ ├── styles # 样式管理 +│ ├── permission.js # 路由拦截 +│ ├── setting.js # 业务配置文件 +│ ├── main.js # 入口文件 加载组件 初始化等 +│ └── App.vue # 入口页面 +├── tests # 测试 +├── .env.xxx # 环境变量配置 +├── .eslintrc.js # eslint 配置项 +├── .babelrc # babel-loader 配置 +├── .travis.yml # 自动化CI配置 +├── vue.config.js # vue-cli 配置 +├── postcss.config.js # postcss 配置 +└── package.json # package.json + +~~~ +## 开发打包项目 +~~~ +# 进入项目目录 +$ cd admin-iView + +# 安装依赖 +$ npm install + +# 启动项目(本地开发环境) +$ npm run dev + +# 打包项目 +## Build + +```bash +# build for test environment +npm run build:stage + +# build for production environment +npm run build:prod +``` +## Advanced +```bash +# preview the release environment effect +npm run preview + +# preview the release environment effect + static resource analysis +npm run preview -- --report + +# code format check +npm run lint + +# code format check and auto fix +npm run lint -- --fix +``` \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..fadb9a9 --- /dev/null +++ b/README.md @@ -0,0 +1,263 @@ +# CRMEB多商户 +## 开发规范 +统一使用ES6 语法 +方法注释 +/* +* th => 表头 +* data => 数据 +* fileName => 文件名 +* fileType => 文件类型 +* sheetName => sheet页名 +*/ +export default function toExcel ({ th, data, fileName, fileType, sheetName }) +行注释 // + +### 命名 + +页面目录 文件夹命名格式骆驼式命名法,例如:用户列表 userList +例如:商品模块 +product 商品 + ├─ product 商品管理 + ├─productList 商品管理目录 + ├- index.vue 首页 + +页面命名、组建、文件夹 命名格式小驼峰命名法,例如:用户列表 userList + +类名函数命名 大驼峰式 例如:addUser +变量命名 小驼峰式 例如:user 或者 userInfo _userinfo user-info +常量 采用全大些下划线命名 例如:VUE_APP_API_URl + +### 文件管理规范 +pages 页面模块必须件文件夹区分 +api 接口一个模块一个文件 +组建 一个组建一个文件夹 +plugins 插件一个插件一个文件夹 +vuex 路由状态管理,一个模块在modules 中建一个文件夹 +router 一个模块一个模块在modules 中建一个文件夹 +style 样式尽量采用iView自带组建,common.less 系统通用样式不要轻易动 +自定义通用样式 style.less,每次添加必须加注释,页面独立样式在在页面内写,后缀less 格式 +组建样式 styles 中添加文件夹 composents 对应components 目录新建样式文件 +utils 自定义工具js 独立命名,一般不用新建文件夹 + +## 模块命名 +~~~ +├─ login 登录 +├─ dashboard 首页 +├─ product 商品管理 +├─ order 系统订单管理 +├─ promoter 分销 +├─ user 用户管理 +├─ accounts 财务管理 +├─ merchant 商户管理 +├─ app 各个应用模块功能管理公众号、小程序、支付宝、百度小程序、今日头条小程序 +├─ system 系统更新日志 数据库管理 素材管理 +├─ setting 系统身份管理 系统权限管理、系统菜单管理、操作日志 +├─ sms 短信设置 +├─ systemForm 商城设置 +├─ freight 物流设置 +├─ maintain 安全维护 +├─ safe 维护-页面链接 +├─ userFeedback 用户反馈 +├─ error-page 错误页 + +~~~ +## 目录结构 +主要目录结构及说明: +~~~ + +├── public # 静态资源 +│ ├── favicon.ico # favicon图标 +│ └── index.html # html 模板 +├── src # 源代码 +│ ├── api # 所有接口api +│ │ └──request.js # 请求封装 +│ │ └──accounts.js # 有关财务的接口 +│ │ └──promoter.js # 有关分销的接口 +│ │ └──app.js # 有关应用(小程序、公众号)的接口 +│ │ └──cms.js # 有关内容(文章管理、分类)的接口 +│ │ └──home.js # 有关首页的接口 +│ │ └──order.js # 有关订单的接口 +│ │ └──product.js # 有关商品的接口 +│ │ └──setting.js # 有关权限管理的接口 +│ │ └──system.js # 有关系统配置的接口 +│ │ └──systemForm.js # 有关表单组件的接口 +│ │ └──maintain.js # 有关安全维护的接口 +│ │ └──merchant.js # 有关商户的接口 +│ │ └──sms.js # 有关短信设置的接口 +│ │ └──user.js # 有关登录、用户的接口 +│ │ └──userFeedback.js # 有关用户反馈的接口 +│ │ └──freight.js # 有关物流设置的接口 +│ ├── assets # 图片、svg 等静态资源 +│ ├── icons # svg 等静态资源 +│ ├── components # 公共组件 +│ │ └──Breadcrumb # 头部标题标签 +│ │ └──cards # 统计 +│ │ └──echarts # 统计图 +│ │ └──goodsList # 商品列表 +│ │ └──Hamburger # 导航收缩组件 +│ │ └──HeaderSearch # 导航搜索组件 +│ │ └──iconFrom # 导航添加图标 +│ │ └──newsCategory # 图文组件 +│ │ └──RightPanel # 右侧设置按钮,设置导航相关 +│ │ └──Screenfull # 全屏 +│ │ └──SvgIcon # svg图标 +│ │ └──ThemePicker # 右侧设置按钮,设置组题颜色 +│ │ └──ueditorFrom # 富文本编辑器 +│ │ └──uploadPicture # 上传图片组件 +│ ├── layouts # 导航布局 +│ │ ├──index # 主页面 +│ │ ├──components # 导航组件 +│ │ └──Settings # 右边小按钮,设置导航等 +│ │ └──Sidebar # 侧边导航 +│ │ └──TagsView # tab标签页导航 +│ │ └──Navbar # 头部导航 +│ │ └──AppMain # 导航路由 +│ │ └──index.js # 组件引用 +│ │ └──mixins # 自适应大小 +│ ├── libs # 公共js方法 +│ │ └──settingMer # 配置请求地址 +│ ├── views # 所有页面 +│ │ └──login # 登录 +│ │ └──index # 登录 +│ │ └──dashboard # 首页 +│ │ └──product # 商品 +│ │ └──band # 品牌管理 +│ │ └──productClassify # 商品分类 +│ │ └──productExamine # 商品审核 +│ │ └──productComment # 商品评论管理 +│ │ └──order # 订单管理 +│ │ └──promoter # 分销 +│ │ └──user # 分销员列表 +│ │ └──config # 分销设置 +│ │ └──cms # 内容 +│ │ └──addArticle # 添加文章/编辑文章 +│ │ └──article # 文章管理 +│ │ └──articleCategory # 文章分类 +│ │ └──user # 用户 +│ │ └──group # 用户分组 +│ │ └──group # 用户标签 +│ │ └──list # 用户管理 +│ │ └──accounts # 财务 +│ │ └──bill # 充值记录 +│ │ └──capital # 资金记录 +│ │ └──extract # 提现管理 +│ │ └──reconciliation # 财务对账 +│ │ └──merchant # 商户 +│ │ └──list # 商户列表 +│ │ └──classify # 商户分类 +│ │ └──system # 商户菜单管理 +│ │ └──app # 应用 +│ │ └──wechat # 公众号 +│ │ └──menus # 微信菜单 +│ │ └──newsCategory # 图文管理 +│ │ └──save # 图文添加 +│ │ └──reply # 自动回复 +│ │ └──follow # 微信关注回复/无效关键词回复 +│ │ └──keyword # 关键字回复 +│ │ └──wxTemplate # 微信/小程序模板消息 +│ │ └──system # 设置 +│ │ └──config # 系统设置 +│ │ └──classify # 配置分类 +│ │ └──setting # 配置管理 +│ │ └──picture # 素材管理 +│ │ └──groupData # 组合设置 +│ │ └──list # 组合数据 +│ │ └──data # 组合数据列表/登录页幻灯片/首页幻灯片/首页导航按钮/首页推荐区/个人中心幻灯片/个人中心菜单/热门搜索/分销特权/分销海报/充值金额配置 +│ │ └──setting # 设置-权限管理 +│ │ └──systemRole # 身份管理 +│ │ └──systemAdmin # 管理员管理 +│ │ └──systemLog # 操作日志 +│ │ └──systemMenu # 菜单管理 +│ │ └──systemForm # 设置-商城设置 +│ │ └──setSystem # 基础配置/商城配置/余额充值设置/文件上传/短信提醒开关/公众号支付配置/小程序支付配置/公众号配置/小程序配置 +│ │ └──sms # 短信设置 +│ │ └──smsConfig # 短信账户 +│ │ └──smsTemplate # 短信模板 +│ │ └──smsPay # 短信购买 +│ │ └──freight # 物流设置 +│ │ └──express # 物流公司 +│ │ └──maintain # 安全维护 +│ │ └──dataBackup # 数据备份 +│ │ └──auth # 商业授权 +│ │ └──safe # 维护-页面链接 +│ │ └──pageLinks # 页面链接 +│ │ └──userFeedback # 用户-用户反馈 +│ │ └──list # 反馈列表 +│ │ └──classify # 反馈分类 +│ │ └──error-page # 错误页 +│ │ └──404 # 错误页404 +│ │ └──403 # 错误页403 +│ ├── filters # 过滤器 +│ ├── router # 路由配置 +│ │ └──modules # 页面路由模块 +│ │ └──accounts.js # 有关财务 +│ │ └──app.js # 有关应用(公众号) +│ │ └──cms.js # 有关内容(文章管理、文章分类) +│ │ └──config.js # 有关系统配置 +│ │ └──freight.js # 有关物流设置 +│ │ └──group.js # 有关组合数据 +│ │ └──maintain.js # 有关安全维护 +│ │ └──merchant.js # 有关商户 +│ │ └──order.js # 有关订单 +│ │ └──product.js # 有关商品 +│ │ └──promoter.js # 有关分销 +│ │ └──routine.js # 有关小程序 +│ │ └──safe.js # 有关维护 +│ │ └──setting.js # 有关权限 +│ │ └──sms.js # 有关短信 +│ │ └──systemForm.js # 有关商城设置 +│ │ └──user.js # 有关用户 +│ │ └──feedback.js # 有关用户反馈 +│ │ └──index.js # 路由的汇总 +│ ├── store # Vuex 状态管理 +│ ├── utils # 全局公用方法 +│ ├── styles # 样式管理 +│ ├── permission.js # 路由拦截 +│ ├── setting.js # 业务配置文件 +│ ├── main.js # 入口文件 加载组件 初始化等 +│ └── App.vue # 入口页面 +├── tests # 测试 +├── .env.xxx # 环境变量配置 +├── .eslintrc.js # eslint 配置项 +├── .babelrc # babel-loader 配置 +├── .travis.yml # 自动化CI配置 +├── vue.config.js # vue-cli 配置 +├── postcss.config.js # postcss 配置 +└── package.json # package.json + +~~~ +## 开发打包项目 +~~~ +# 进入项目目录 +$ cd admin-iView + +# 安装依赖 +$ npm install + +# 启动项目(本地开发环境) +$ npm run dev + +# 打包项目 +## Build + +```bash +# build for test environment +npm run build:stage + +# build for production environment +npm run build:prod +``` +## Advanced +```bash +# preview the release environment effect +npm run preview + +# preview the release environment effect + static resource analysis +npm run preview -- --report + +# code format check +npm run lint + +# code format check and auto fix +npm run lint -- --fix +``` \ No newline at end of file diff --git a/README.zh-CN.md b/README.zh-CN.md new file mode 100644 index 0000000..fadb9a9 --- /dev/null +++ b/README.zh-CN.md @@ -0,0 +1,263 @@ +# CRMEB多商户 +## 开发规范 +统一使用ES6 语法 +方法注释 +/* +* th => 表头 +* data => 数据 +* fileName => 文件名 +* fileType => 文件类型 +* sheetName => sheet页名 +*/ +export default function toExcel ({ th, data, fileName, fileType, sheetName }) +行注释 // + +### 命名 + +页面目录 文件夹命名格式骆驼式命名法,例如:用户列表 userList +例如:商品模块 +product 商品 + ├─ product 商品管理 + ├─productList 商品管理目录 + ├- index.vue 首页 + +页面命名、组建、文件夹 命名格式小驼峰命名法,例如:用户列表 userList + +类名函数命名 大驼峰式 例如:addUser +变量命名 小驼峰式 例如:user 或者 userInfo _userinfo user-info +常量 采用全大些下划线命名 例如:VUE_APP_API_URl + +### 文件管理规范 +pages 页面模块必须件文件夹区分 +api 接口一个模块一个文件 +组建 一个组建一个文件夹 +plugins 插件一个插件一个文件夹 +vuex 路由状态管理,一个模块在modules 中建一个文件夹 +router 一个模块一个模块在modules 中建一个文件夹 +style 样式尽量采用iView自带组建,common.less 系统通用样式不要轻易动 +自定义通用样式 style.less,每次添加必须加注释,页面独立样式在在页面内写,后缀less 格式 +组建样式 styles 中添加文件夹 composents 对应components 目录新建样式文件 +utils 自定义工具js 独立命名,一般不用新建文件夹 + +## 模块命名 +~~~ +├─ login 登录 +├─ dashboard 首页 +├─ product 商品管理 +├─ order 系统订单管理 +├─ promoter 分销 +├─ user 用户管理 +├─ accounts 财务管理 +├─ merchant 商户管理 +├─ app 各个应用模块功能管理公众号、小程序、支付宝、百度小程序、今日头条小程序 +├─ system 系统更新日志 数据库管理 素材管理 +├─ setting 系统身份管理 系统权限管理、系统菜单管理、操作日志 +├─ sms 短信设置 +├─ systemForm 商城设置 +├─ freight 物流设置 +├─ maintain 安全维护 +├─ safe 维护-页面链接 +├─ userFeedback 用户反馈 +├─ error-page 错误页 + +~~~ +## 目录结构 +主要目录结构及说明: +~~~ + +├── public # 静态资源 +│ ├── favicon.ico # favicon图标 +│ └── index.html # html 模板 +├── src # 源代码 +│ ├── api # 所有接口api +│ │ └──request.js # 请求封装 +│ │ └──accounts.js # 有关财务的接口 +│ │ └──promoter.js # 有关分销的接口 +│ │ └──app.js # 有关应用(小程序、公众号)的接口 +│ │ └──cms.js # 有关内容(文章管理、分类)的接口 +│ │ └──home.js # 有关首页的接口 +│ │ └──order.js # 有关订单的接口 +│ │ └──product.js # 有关商品的接口 +│ │ └──setting.js # 有关权限管理的接口 +│ │ └──system.js # 有关系统配置的接口 +│ │ └──systemForm.js # 有关表单组件的接口 +│ │ └──maintain.js # 有关安全维护的接口 +│ │ └──merchant.js # 有关商户的接口 +│ │ └──sms.js # 有关短信设置的接口 +│ │ └──user.js # 有关登录、用户的接口 +│ │ └──userFeedback.js # 有关用户反馈的接口 +│ │ └──freight.js # 有关物流设置的接口 +│ ├── assets # 图片、svg 等静态资源 +│ ├── icons # svg 等静态资源 +│ ├── components # 公共组件 +│ │ └──Breadcrumb # 头部标题标签 +│ │ └──cards # 统计 +│ │ └──echarts # 统计图 +│ │ └──goodsList # 商品列表 +│ │ └──Hamburger # 导航收缩组件 +│ │ └──HeaderSearch # 导航搜索组件 +│ │ └──iconFrom # 导航添加图标 +│ │ └──newsCategory # 图文组件 +│ │ └──RightPanel # 右侧设置按钮,设置导航相关 +│ │ └──Screenfull # 全屏 +│ │ └──SvgIcon # svg图标 +│ │ └──ThemePicker # 右侧设置按钮,设置组题颜色 +│ │ └──ueditorFrom # 富文本编辑器 +│ │ └──uploadPicture # 上传图片组件 +│ ├── layouts # 导航布局 +│ │ ├──index # 主页面 +│ │ ├──components # 导航组件 +│ │ └──Settings # 右边小按钮,设置导航等 +│ │ └──Sidebar # 侧边导航 +│ │ └──TagsView # tab标签页导航 +│ │ └──Navbar # 头部导航 +│ │ └──AppMain # 导航路由 +│ │ └──index.js # 组件引用 +│ │ └──mixins # 自适应大小 +│ ├── libs # 公共js方法 +│ │ └──settingMer # 配置请求地址 +│ ├── views # 所有页面 +│ │ └──login # 登录 +│ │ └──index # 登录 +│ │ └──dashboard # 首页 +│ │ └──product # 商品 +│ │ └──band # 品牌管理 +│ │ └──productClassify # 商品分类 +│ │ └──productExamine # 商品审核 +│ │ └──productComment # 商品评论管理 +│ │ └──order # 订单管理 +│ │ └──promoter # 分销 +│ │ └──user # 分销员列表 +│ │ └──config # 分销设置 +│ │ └──cms # 内容 +│ │ └──addArticle # 添加文章/编辑文章 +│ │ └──article # 文章管理 +│ │ └──articleCategory # 文章分类 +│ │ └──user # 用户 +│ │ └──group # 用户分组 +│ │ └──group # 用户标签 +│ │ └──list # 用户管理 +│ │ └──accounts # 财务 +│ │ └──bill # 充值记录 +│ │ └──capital # 资金记录 +│ │ └──extract # 提现管理 +│ │ └──reconciliation # 财务对账 +│ │ └──merchant # 商户 +│ │ └──list # 商户列表 +│ │ └──classify # 商户分类 +│ │ └──system # 商户菜单管理 +│ │ └──app # 应用 +│ │ └──wechat # 公众号 +│ │ └──menus # 微信菜单 +│ │ └──newsCategory # 图文管理 +│ │ └──save # 图文添加 +│ │ └──reply # 自动回复 +│ │ └──follow # 微信关注回复/无效关键词回复 +│ │ └──keyword # 关键字回复 +│ │ └──wxTemplate # 微信/小程序模板消息 +│ │ └──system # 设置 +│ │ └──config # 系统设置 +│ │ └──classify # 配置分类 +│ │ └──setting # 配置管理 +│ │ └──picture # 素材管理 +│ │ └──groupData # 组合设置 +│ │ └──list # 组合数据 +│ │ └──data # 组合数据列表/登录页幻灯片/首页幻灯片/首页导航按钮/首页推荐区/个人中心幻灯片/个人中心菜单/热门搜索/分销特权/分销海报/充值金额配置 +│ │ └──setting # 设置-权限管理 +│ │ └──systemRole # 身份管理 +│ │ └──systemAdmin # 管理员管理 +│ │ └──systemLog # 操作日志 +│ │ └──systemMenu # 菜单管理 +│ │ └──systemForm # 设置-商城设置 +│ │ └──setSystem # 基础配置/商城配置/余额充值设置/文件上传/短信提醒开关/公众号支付配置/小程序支付配置/公众号配置/小程序配置 +│ │ └──sms # 短信设置 +│ │ └──smsConfig # 短信账户 +│ │ └──smsTemplate # 短信模板 +│ │ └──smsPay # 短信购买 +│ │ └──freight # 物流设置 +│ │ └──express # 物流公司 +│ │ └──maintain # 安全维护 +│ │ └──dataBackup # 数据备份 +│ │ └──auth # 商业授权 +│ │ └──safe # 维护-页面链接 +│ │ └──pageLinks # 页面链接 +│ │ └──userFeedback # 用户-用户反馈 +│ │ └──list # 反馈列表 +│ │ └──classify # 反馈分类 +│ │ └──error-page # 错误页 +│ │ └──404 # 错误页404 +│ │ └──403 # 错误页403 +│ ├── filters # 过滤器 +│ ├── router # 路由配置 +│ │ └──modules # 页面路由模块 +│ │ └──accounts.js # 有关财务 +│ │ └──app.js # 有关应用(公众号) +│ │ └──cms.js # 有关内容(文章管理、文章分类) +│ │ └──config.js # 有关系统配置 +│ │ └──freight.js # 有关物流设置 +│ │ └──group.js # 有关组合数据 +│ │ └──maintain.js # 有关安全维护 +│ │ └──merchant.js # 有关商户 +│ │ └──order.js # 有关订单 +│ │ └──product.js # 有关商品 +│ │ └──promoter.js # 有关分销 +│ │ └──routine.js # 有关小程序 +│ │ └──safe.js # 有关维护 +│ │ └──setting.js # 有关权限 +│ │ └──sms.js # 有关短信 +│ │ └──systemForm.js # 有关商城设置 +│ │ └──user.js # 有关用户 +│ │ └──feedback.js # 有关用户反馈 +│ │ └──index.js # 路由的汇总 +│ ├── store # Vuex 状态管理 +│ ├── utils # 全局公用方法 +│ ├── styles # 样式管理 +│ ├── permission.js # 路由拦截 +│ ├── setting.js # 业务配置文件 +│ ├── main.js # 入口文件 加载组件 初始化等 +│ └── App.vue # 入口页面 +├── tests # 测试 +├── .env.xxx # 环境变量配置 +├── .eslintrc.js # eslint 配置项 +├── .babelrc # babel-loader 配置 +├── .travis.yml # 自动化CI配置 +├── vue.config.js # vue-cli 配置 +├── postcss.config.js # postcss 配置 +└── package.json # package.json + +~~~ +## 开发打包项目 +~~~ +# 进入项目目录 +$ cd admin-iView + +# 安装依赖 +$ npm install + +# 启动项目(本地开发环境) +$ npm run dev + +# 打包项目 +## Build + +```bash +# build for test environment +npm run build:stage + +# build for production environment +npm run build:prod +``` +## Advanced +```bash +# preview the release environment effect +npm run preview + +# preview the release environment effect + static resource analysis +npm run preview -- --report + +# code format check +npm run lint + +# code format check and auto fix +npm run lint -- --fix +``` \ No newline at end of file diff --git a/babel.config.js b/babel.config.js new file mode 100644 index 0000000..ba17966 --- /dev/null +++ b/babel.config.js @@ -0,0 +1,5 @@ +module.exports = { + presets: [ + '@vue/app' + ] +} diff --git a/build/index.js b/build/index.js new file mode 100644 index 0000000..bcba030 --- /dev/null +++ b/build/index.js @@ -0,0 +1,45 @@ +// +---------------------------------------------------------------------- +// | CRMEB [ CRMEB赋能开发者,助力企业发展 ] +// +---------------------------------------------------------------------- +// | Copyright (c) 2016~2024 https://www.crmeb.com All rights reserved. +// +---------------------------------------------------------------------- +// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 +// +---------------------------------------------------------------------- +// | Author: CRMEB Team +// +---------------------------------------------------------------------- + +const { run } = require('runjs') +const chalk = require('chalk') +const config = require('../vue.config.js') +const rawArgv = process.argv.slice(2) +const args = rawArgv.join(' ') + +if (process.env.npm_config_preview || rawArgv.includes('--preview')) { + const report = rawArgv.includes('--report') + + run(`vue-cli-service build ${args}`) + + const port = 9526 + const publicPath = config.publicPath + + var connect = require('connect') + var serveStatic = require('serve-static') + const app = connect() + + app.use( + publicPath, + serveStatic('./dist', { + index: ['index.html', '/'] + }) + ) + + app.listen(port, function () { + console.log(chalk.green(`> Preview at http://localhost:${port}${publicPath}`)) + if (report) { + console.log(chalk.green(`> Report at http://localhost:${port}${publicPath}report.html`)) + } + + }) +} else { + run(`vue-cli-service build ${args}`) +} diff --git a/jest.config.js b/jest.config.js new file mode 100644 index 0000000..143cdc8 --- /dev/null +++ b/jest.config.js @@ -0,0 +1,24 @@ +module.exports = { + moduleFileExtensions: ['js', 'jsx', 'json', 'vue'], + transform: { + '^.+\\.vue$': 'vue-jest', + '.+\\.(css|styl|less|sass|scss|svg|png|jpg|ttf|woff|woff2)$': + 'jest-transform-stub', + '^.+\\.jsx?$': 'babel-jest' + }, + moduleNameMapper: { + '^@/(.*)$': '/src/$1' + }, + snapshotSerializers: ['jest-serializer-vue'], + testMatch: [ + '**/tests/unit/**/*.spec.(js|jsx|ts|tsx)|**/__tests__/*.(js|jsx|ts|tsx)' + ], + collectCoverageFrom: ['src/utils/**/*.{js,vue}', '!src/utils/auth.js', '!src/utils/request.js', 'src/components/**/*.{js,vue}'], + coverageDirectory: '/tests/unit/coverage', + // 'collectCoverage': true, + 'coverageReporters': [ + 'lcov', + 'text-summary' + ], + testURL: 'http://localhost/' +} diff --git a/jsconfig.json b/jsconfig.json new file mode 100644 index 0000000..958df04 --- /dev/null +++ b/jsconfig.json @@ -0,0 +1,9 @@ +{ + "compilerOptions": { + "baseUrl": "./", + "paths": { + "@/*": ["src/*"] + } + }, + "exclude": ["node_modules", "dist"] +} \ No newline at end of file diff --git a/mock/article.js b/mock/article.js new file mode 100644 index 0000000..e527426 --- /dev/null +++ b/mock/article.js @@ -0,0 +1,125 @@ +// +---------------------------------------------------------------------- +// | CRMEB [ CRMEB赋能开发者,助力企业发展 ] +// +---------------------------------------------------------------------- +// | Copyright (c) 2016~2024 https://www.crmeb.com All rights reserved. +// +---------------------------------------------------------------------- +// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 +// +---------------------------------------------------------------------- +// | Author: CRMEB Team +// +---------------------------------------------------------------------- +import Mock from 'mockjs' + +const List = [] +const count = 100 + +const baseContent = '

I am testing data, I am testing data.

' +const image_uri = 'https://wpimg.wallstcn.com/e4558086-631c-425c-9430-56ffb46e70b3' + +for (let i = 0; i < count; i++) { + List.push(Mock.mock({ + id: '@increment', + timestamp: +Mock.Random.date('T'), + author: '@first', + reviewer: '@first', + title: '@title(5, 10)', + content_short: 'mock data', + content: baseContent, + forecast: '@float(0, 100, 2, 2)', + importance: '@integer(1, 3)', + 'type|1': ['CN', 'US', 'JP', 'EU'], + 'status|1': ['published', 'draft'], + display_time: '@datetime', + comment_disabled: true, + pageviews: '@integer(300, 5000)', + image_uri, + platforms: ['a-platform'] + })) +} + +export default [ + { + url: '/vue-element-admin/article/list', + type: 'get', + response: config => { + const { importance, type, title, page = 1, limit = 20, sort } = config.query + + let mockList = List.filter(item => { + if (importance && item.importance !== +importance) return false + if (type && item.type !== type) return false + if (title && item.title.indexOf(title) < 0) return false + return true + }) + + if (sort === '-id') { + mockList = mockList.reverse() + } + + const pageList = mockList.filter((item, index) => index < limit * page && index >= limit * (page - 1)) + + return { + code: 20000, + data: { + total: mockList.length, + items: pageList + } + } + } + }, + + { + url: '/vue-element-admin/article/detail', + type: 'get', + response: config => { + const { id } = config.query + for (const article of List) { + if (article.id === +id) { + return { + code: 20000, + data: article + } + } + } + } + }, + + { + url: '/vue-element-admin/article/pv', + type: 'get', + response: _ => { + return { + code: 20000, + data: { + pvData: [ + { key: 'PC', pv: 1024 }, + { key: 'mobile', pv: 1024 }, + { key: 'ios', pv: 1024 }, + { key: 'android', pv: 1024 } + ] + } + } + } + }, + + { + url: '/vue-element-admin/article/create', + type: 'post', + response: _ => { + return { + code: 20000, + data: 'success' + } + } + }, + + { + url: '/vue-element-admin/article/update', + type: 'post', + response: _ => { + return { + code: 20000, + data: 'success' + } + } + } +] + diff --git a/mock/index.js b/mock/index.js new file mode 100644 index 0000000..3a043fa --- /dev/null +++ b/mock/index.js @@ -0,0 +1,66 @@ +// +---------------------------------------------------------------------- +// | CRMEB [ CRMEB赋能开发者,助力企业发展 ] +// +---------------------------------------------------------------------- +// | Copyright (c) 2016~2024 https://www.crmeb.com All rights reserved. +// +---------------------------------------------------------------------- +// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 +// +---------------------------------------------------------------------- +// | Author: CRMEB Team +// +---------------------------------------------------------------------- +import Mock from 'mockjs' +import { param2Obj } from '../src/utils' + +import user from './user' +import role from './role' +import article from './article' +import search from './remote-search' + +const mocks = [ + ...user, + ...role, + ...article, + ...search +] + +// for front mock +// please use it cautiously, it will redefine XMLHttpRequest, +// which will cause many of your third-party libraries to be invalidated(like progress event). +export function mockXHR() { + // mock patch + // https://github.com/nuysoft/Mock/issues/300 + Mock.XHR.prototype.proxy_send = Mock.XHR.prototype.send + Mock.XHR.prototype.send = function() { + if (this.custom.xhr) { + this.custom.xhr.withCredentials = this.withCredentials || false + + if (this.responseType) { + this.custom.xhr.responseType = this.responseType + } + } + this.proxy_send(...arguments) + } + + function XHR2ExpressReqWrap(respond) { + return function(options) { + let result = null + if (respond instanceof Function) { + const { body, type, url } = options + // https://expressjs.com/en/4x/api.html#req + result = respond({ + method: type, + body: JSON.parse(body), + query: param2Obj(url) + }) + } else { + result = respond + } + return Mock.mock(result) + } + } + + for (const i of mocks) { + Mock.mock(new RegExp(i.url), i.type || 'get', XHR2ExpressReqWrap(i.response)) + } +} + +export default mocks diff --git a/mock/mock-server.js b/mock/mock-server.js new file mode 100644 index 0000000..2b0119c --- /dev/null +++ b/mock/mock-server.js @@ -0,0 +1,93 @@ +// +---------------------------------------------------------------------- +// | CRMEB [ CRMEB赋能开发者,助力企业发展 ] +// +---------------------------------------------------------------------- +// | Copyright (c) 2016~2024 https://www.crmeb.com All rights reserved. +// +---------------------------------------------------------------------- +// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 +// +---------------------------------------------------------------------- +// | Author: CRMEB Team +// +---------------------------------------------------------------------- +const chokidar = require('chokidar') +const bodyParser = require('body-parser') +const chalk = require('chalk') +const path = require('path') +const Mock = require('mockjs') + +const mockDir = path.join(process.cwd(), 'mock') + +function registerRoutes(app) { + let mockLastIndex + const { default: mocks } = require('./index.js') + const mocksForServer = mocks.map(route => { + return responseFake(route.url, route.type, route.response) + }) + for (const mock of mocksForServer) { + app[mock.type](mock.url, mock.response) + mockLastIndex = app._router.stack.length + } + const mockRoutesLength = Object.keys(mocksForServer).length + return { + mockRoutesLength: mockRoutesLength, + mockStartIndex: mockLastIndex - mockRoutesLength + } +} + +function unregisterRoutes() { + Object.keys(require.cache).forEach(i => { + if (i.includes(mockDir)) { + delete require.cache[require.resolve(i)] + } + }) +} + +// for mock server +const responseFake = (url, type, respond) => { + return { + url: new RegExp(`${process.env.VUE_APP_BASE_API}${url}`), + type: type || 'get', + response(req, res) { + console.log('request invoke:' + req.path) + res.json(Mock.mock(respond instanceof Function ? respond(req, res) : respond)) + } + } +} + +module.exports = app => { + // es6 polyfill + require('@babel/register') + + // parse app.body + // https://expressjs.com/en/4x/api.html#req.body + app.use(bodyParser.json()) + app.use(bodyParser.urlencoded({ + extended: true + })) + + const mockRoutes = registerRoutes(app) + var mockRoutesLength = mockRoutes.mockRoutesLength + var mockStartIndex = mockRoutes.mockStartIndex + + // watch files, hot reload mock server + chokidar.watch(mockDir, { + ignored: /mock-server/, + ignoreInitial: true + }).on('all', (event, path) => { + if (event === 'change' || event === 'add') { + try { + // remove mock routes stack + app._router.stack.splice(mockStartIndex, mockRoutesLength) + + // clear routes cache + unregisterRoutes() + + const mockRoutes = registerRoutes(app) + mockRoutesLength = mockRoutes.mockRoutesLength + mockStartIndex = mockRoutes.mockStartIndex + + console.log(chalk.magentaBright(`\n > Mock Server hot reload success! changed ${path}`)) + } catch (error) { + console.log(chalk.redBright(error)) + } + } + }) +} diff --git a/mock/remote-search.js b/mock/remote-search.js new file mode 100644 index 0000000..91d3548 --- /dev/null +++ b/mock/remote-search.js @@ -0,0 +1,60 @@ +// +---------------------------------------------------------------------- +// | CRMEB [ CRMEB赋能开发者,助力企业发展 ] +// +---------------------------------------------------------------------- +// | Copyright (c) 2016~2024 https://www.crmeb.com All rights reserved. +// +---------------------------------------------------------------------- +// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 +// +---------------------------------------------------------------------- +// | Author: CRMEB Team +// +---------------------------------------------------------------------- +import Mock from 'mockjs' + +const NameList = [] +const count = 100 + +for (let i = 0; i < count; i++) { + NameList.push(Mock.mock({ + name: '@first' + })) +} +NameList.push({ name: 'mock-Pan' }) + +export default [ + // username search + { + url: '/vue-element-admin/search/user', + type: 'get', + response: config => { + const { name } = config.query + const mockNameList = NameList.filter(item => { + const lowerCaseName = item.name.toLowerCase() + return !(name && lowerCaseName.indexOf(name.toLowerCase()) < 0) + }) + return { + code: 20000, + data: { items: mockNameList } + } + } + }, + + // transaction list + { + url: '/vue-element-admin/transaction/list', + type: 'get', + response: _ => { + return { + code: 20000, + data: { + total: 20, + 'items|20': [{ + order_no: '@guid()', + timestamp: +Mock.Random.date('T'), + username: '@name()', + price: '@float(1000, 15000, 0, 2)', + 'status|1': ['success', 'pending'] + }] + } + } + } + } +] diff --git a/mock/role/index.js b/mock/role/index.js new file mode 100644 index 0000000..d957493 --- /dev/null +++ b/mock/role/index.js @@ -0,0 +1,98 @@ +import Mock from 'mockjs' +import { deepClone } from '../../src/utils/index.js' +import { asyncRoutes, constantRoutes } from './routes.js' + +const routes = deepClone([...constantRoutes, ...asyncRoutes]) + +const roles = [ + { + key: 'admin', + name: 'admin', + description: 'Super Administrator. Have access to view all pages.', + routes: routes + }, + { + key: 'editor', + name: 'editor', + description: 'Normal Editor. Can see all pages except permission page', + routes: routes.filter(i => i.path !== '/permission')// just a mock + }, + { + key: 'visitor', + name: 'visitor', + description: 'Just a visitor. Can only see the home page and the document page', + routes: [{ + path: '', + redirect: 'dashboard', + children: [ + { + path: 'dashboard', + name: 'Dashboard', + meta: { title: 'dashboard', icon: 'dashboard' } + } + ] + }] + } +] + +export default [ + // mock get all routes form server + { + url: '/vue-element-admin/routes', + type: 'get', + response: _ => { + return { + code: 20000, + data: routes + } + } + }, + + // mock get all roles form server + { + url: '/vue-element-admin/roles', + type: 'get', + response: _ => { + return { + code: 20000, + data: roles + } + } + }, + + // add role + { + url: '/vue-element-admin/role', + type: 'post', + response: { + code: 20000, + data: { + key: Mock.mock('@integer(300, 5000)') + } + } + }, + + // update role + { + url: '/vue-element-admin/role/[A-Za-z0-9]', + type: 'put', + response: { + code: 20000, + data: { + status: 'success' + } + } + }, + + // delete role + { + url: '/vue-element-admin/role/[A-Za-z0-9]', + type: 'delete', + response: { + code: 20000, + data: { + status: 'success' + } + } + } +] diff --git a/mock/role/routes.js b/mock/role/routes.js new file mode 100644 index 0000000..d718919 --- /dev/null +++ b/mock/role/routes.js @@ -0,0 +1,525 @@ +// Just a mock data + +export const constantRoutes = [ + { + path: '/redirect', + component: 'layout/Layout', + hidden: true, + children: [ + { + path: '/redirect/:path*', + component: 'views/redirect/index' + } + ] + }, + { + path: '/login', + component: 'views/login/index', + hidden: true + }, + { + path: '/auth-redirect', + component: 'views/login/auth-redirect', + hidden: true + }, + { + path: '/404', + component: 'views/error-page/404', + hidden: true + }, + { + path: '/401', + component: 'views/error-page/401', + hidden: true + }, + { + path: '', + component: 'layout/Layout', + redirect: 'dashboard', + children: [ + { + path: 'dashboard', + component: 'views/dashboard/index', + name: 'Dashboard', + meta: { title: 'Dashboard', icon: 'dashboard', affix: true } + } + ] + }, + { + path: '/documentation', + component: 'layout/Layout', + children: [ + { + path: 'index', + component: 'views/documentation/index', + name: 'Documentation', + meta: { title: 'Documentation', icon: 'documentation', affix: true } + } + ] + }, + { + path: '/guide', + component: 'layout/Layout', + redirect: '/guide/index', + children: [ + { + path: 'index', + component: 'views/guide/index', + name: 'Guide', + meta: { title: 'Guide', icon: 'guide', noCache: true } + } + ] + } +] + +export const asyncRoutes = [ + { + path: '/permission', + component: 'layout/Layout', + redirect: '/permission/index', + alwaysShow: true, + meta: { + title: 'Permission', + icon: 'lock', + roles: ['admin', 'editor'] + }, + children: [ + { + path: 'page', + component: 'views/permission/page', + name: 'PagePermission', + meta: { + title: 'Page Permission', + roles: ['admin'] + } + }, + { + path: 'directive', + component: 'views/permission/directive', + name: 'DirectivePermission', + meta: { + title: 'Directive Permission' + } + }, + { + path: 'role', + component: 'views/permission/role', + name: 'RolePermission', + meta: { + title: 'Role Permission', + roles: ['admin'] + } + } + ] + }, + + { + path: '/icon', + component: 'layout/Layout', + children: [ + { + path: 'index', + component: 'views/icons/index', + name: 'Icons', + meta: { title: 'Icons', icon: 'icon', noCache: true } + } + ] + }, + + { + path: '/components', + component: 'layout/Layout', + redirect: 'noRedirect', + name: 'ComponentDemo', + meta: { + title: 'Components', + icon: 'component' + }, + children: [ + { + path: 'tinymce', + component: 'views/components-demo/tinymce', + name: 'TinymceDemo', + meta: { title: 'Tinymce' } + }, + { + path: 'markdown', + component: 'views/components-demo/markdown', + name: 'MarkdownDemo', + meta: { title: 'Markdown' } + }, + { + path: 'json-editor', + component: 'views/components-demo/json-editor', + name: 'JsonEditorDemo', + meta: { title: 'Json Editor' } + }, + { + path: 'split-pane', + component: 'views/components-demo/split-pane', + name: 'SplitpaneDemo', + meta: { title: 'SplitPane' } + }, + { + path: 'avatar-upload', + component: 'views/components-demo/avatar-upload', + name: 'AvatarUploadDemo', + meta: { title: 'Avatar Upload' } + }, + { + path: 'dropzone', + component: 'views/components-demo/dropzone', + name: 'DropzoneDemo', + meta: { title: 'Dropzone' } + }, + { + path: 'sticky', + component: 'views/components-demo/sticky', + name: 'StickyDemo', + meta: { title: 'Sticky' } + }, + { + path: 'count-to', + component: 'views/components-demo/count-to', + name: 'CountToDemo', + meta: { title: 'Count To' } + }, + { + path: 'mixin', + component: 'views/components-demo/mixin', + name: 'ComponentMixinDemo', + meta: { title: 'componentMixin' } + }, + { + path: 'back-to-top', + component: 'views/components-demo/back-to-top', + name: 'BackToTopDemo', + meta: { title: 'Back To Top' } + }, + { + path: 'drag-dialog', + component: 'views/components-demo/drag-dialog', + name: 'DragDialogDemo', + meta: { title: 'Drag Dialog' } + }, + { + path: 'drag-select', + component: 'views/components-demo/drag-select', + name: 'DragSelectDemo', + meta: { title: 'Drag Select' } + }, + { + path: 'dnd-list', + component: 'views/components-demo/dnd-list', + name: 'DndListDemo', + meta: { title: 'Dnd List' } + }, + { + path: 'drag-kanban', + component: 'views/components-demo/drag-kanban', + name: 'DragKanbanDemo', + meta: { title: 'Drag Kanban' } + } + ] + }, + { + path: '/charts', + component: 'layout/Layout', + redirect: 'noRedirect', + name: 'Charts', + meta: { + title: 'Charts', + icon: 'chart' + }, + children: [ + { + path: 'keyboard', + component: 'views/charts/keyboard', + name: 'KeyboardChart', + meta: { title: 'Keyboard Chart', noCache: true } + }, + { + path: 'line', + component: 'views/charts/line', + name: 'LineChart', + meta: { title: 'Line Chart', noCache: true } + }, + { + path: 'mixchart', + component: 'views/charts/mixChart', + name: 'MixChart', + meta: { title: 'Mix Chart', noCache: true } + } + ] + }, + { + path: '/nested', + component: 'layout/Layout', + redirect: '/nested/menu1/menu1-1', + name: 'Nested', + meta: { + title: 'Nested', + icon: 'nested' + }, + children: [ + { + path: 'menu1', + component: 'views/nested/menu1/index', + name: 'Menu1', + meta: { title: 'Menu1' }, + redirect: '/nested/menu1/menu1-1', + children: [ + { + path: 'menu1-1', + component: 'views/nested/menu1/menu1-1', + name: 'Menu1-1', + meta: { title: 'Menu1-1' } + }, + { + path: 'menu1-2', + component: 'views/nested/menu1/menu1-2', + name: 'Menu1-2', + redirect: '/nested/menu1/menu1-2/menu1-2-1', + meta: { title: 'Menu1-2' }, + children: [ + { + path: 'menu1-2-1', + component: 'views/nested/menu1/menu1-2/menu1-2-1', + name: 'Menu1-2-1', + meta: { title: 'Menu1-2-1' } + }, + { + path: 'menu1-2-2', + component: 'views/nested/menu1/menu1-2/menu1-2-2', + name: 'Menu1-2-2', + meta: { title: 'Menu1-2-2' } + } + ] + }, + { + path: 'menu1-3', + component: 'views/nested/menu1/menu1-3', + name: 'Menu1-3', + meta: { title: 'Menu1-3' } + } + ] + }, + { + path: 'menu2', + name: 'Menu2', + component: 'views/nested/menu2/index', + meta: { title: 'Menu2' } + } + ] + }, + + { + path: '/example', + component: 'layout/Layout', + redirect: '/example/list', + name: 'Example', + meta: { + title: 'Example', + icon: 'example' + }, + children: [ + { + path: 'create', + component: 'views/example/create', + name: 'CreateArticle', + meta: { title: 'Create Article', icon: 'edit' } + }, + { + path: 'edit/:id(\\d+)', + component: 'views/example/edit', + name: 'EditArticle', + meta: { title: 'Edit Article', noCache: true }, + hidden: true + }, + { + path: 'list', + component: 'views/example/list', + name: 'ArticleList', + meta: { title: 'Article List', icon: 'list' } + } + ] + }, + + { + path: '/tab', + component: 'layout/Layout', + children: [ + { + path: 'index', + component: 'views/tab/index', + name: 'Tab', + meta: { title: 'Tab', icon: 'tab' } + } + ] + }, + + { + path: '/error', + component: 'layout/Layout', + redirect: 'noRedirect', + name: 'ErrorPages', + meta: { + title: 'Error Pages', + icon: '404' + }, + children: [ + { + path: '401', + component: 'views/error-page/401', + name: 'Page401', + meta: { title: 'Page 401', noCache: true } + }, + { + path: '404', + component: 'views/error-page/404', + name: 'Page404', + meta: { title: 'Page 404', noCache: true } + } + ] + }, + + { + path: '/error-log', + component: 'layout/Layout', + redirect: 'noRedirect', + children: [ + { + path: 'log', + component: 'views/error-log/index', + name: 'ErrorLog', + meta: { title: 'Error Log', icon: 'bug' } + } + ] + }, + + { + path: '/excel', + component: 'layout/Layout', + redirect: '/excel/export-excel', + name: 'Excel', + meta: { + title: 'Excel', + icon: 'excel' + }, + children: [ + { + path: 'export-excel', + component: 'views/excel/export-excel', + name: 'ExportExcel', + meta: { title: 'Export Excel' } + }, + { + path: 'export-selected-excel', + component: 'views/excel/select-excel', + name: 'SelectExcel', + meta: { title: 'Select Excel' } + }, + { + path: 'export-merge-header', + component: 'views/excel/merge-header', + name: 'MergeHeader', + meta: { title: 'Merge Header' } + }, + { + path: 'upload-excel', + component: 'views/excel/upload-excel', + name: 'UploadExcel', + meta: { title: 'Upload Excel' } + } + ] + }, + + { + path: '/zip', + component: 'layout/Layout', + redirect: '/zip/download', + alwaysShow: true, + meta: { title: 'Zip', icon: 'zip' }, + children: [ + { + path: 'download', + component: 'views/zip/index', + name: 'ExportZip', + meta: { title: 'Export Zip' } + } + ] + }, + + { + path: '/pdf', + component: 'layout/Layout', + redirect: '/pdf/index', + children: [ + { + path: 'index', + component: 'views/pdf/index', + name: 'PDF', + meta: { title: 'PDF', icon: 'pdf' } + } + ] + }, + { + path: '/pdf/download', + component: 'views/pdf/download', + hidden: true + }, + + { + path: '/theme', + component: 'layout/Layout', + redirect: 'noRedirect', + children: [ + { + path: 'index', + component: 'views/theme/index', + name: 'Theme', + meta: { title: 'Theme', icon: 'theme' } + } + ] + }, + + { + path: '/clipboard', + component: 'layout/Layout', + redirect: 'noRedirect', + children: [ + { + path: 'index', + component: 'views/clipboard/index', + name: 'ClipboardDemo', + meta: { title: 'Clipboard Demo', icon: 'clipboard' } + } + ] + }, + + { + path: '/i18n', + component: 'layout/Layout', + children: [ + { + path: 'index', + component: 'views/i18n-demo/index', + name: 'I18n', + meta: { title: 'I18n', icon: 'international' } + } + ] + }, + + { + path: 'external-link', + component: 'layout/Layout', + children: [ + { + path: 'https://github.com/PanJiaChen/vue-element-admin', + meta: { title: 'External Link', icon: 'link' } + } + ] + }, + + { path: '*', redirect: '/404', hidden: true } +] diff --git a/mock/user.js b/mock/user.js new file mode 100644 index 0000000..90e4078 --- /dev/null +++ b/mock/user.js @@ -0,0 +1,92 @@ +// +---------------------------------------------------------------------- +// | CRMEB [ CRMEB赋能开发者,助力企业发展 ] +// +---------------------------------------------------------------------- +// | Copyright (c) 2016~2024 https://www.crmeb.com All rights reserved. +// +---------------------------------------------------------------------- +// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 +// +---------------------------------------------------------------------- +// | Author: CRMEB Team +// +---------------------------------------------------------------------- +const tokens = { + admin: { + token: 'admin-token' + }, + editor: { + token: 'editor-token' + } +} + +const users = { + 'admin-token': { + roles: ['admin'], + introduction: 'I am a super administrator', + avatar: 'https://wpimg.wallstcn.com/f778738c-e4f8-4870-b634-56703b4acafe.gif', + name: 'Super Admin' + }, + 'editor-token': { + roles: ['editor'], + introduction: 'I am an editor', + avatar: 'https://wpimg.wallstcn.com/f778738c-e4f8-4870-b634-56703b4acafe.gif', + name: 'Normal Editor' + } +} + +export default [ + // user login + { + url: '/vue-element-admin/user/login', + type: 'post', + response: config => { + const { username } = config.body + const token = tokens[username] + + // mock error + if (!token) { + return { + code: 60204, + message: 'Account and password are incorrect.' + } + } + + return { + code: 20000, + data: token + } + } + }, + + // get user info + { + url: '/vue-element-admin/user/info\.*', + type: 'get', + response: config => { + const { token } = config.query + const info = users[token] + + // mock error + if (!info) { + return { + code: 50008, + message: 'Login failed, unable to get user details.' + } + } + + return { + code: 20000, + data: info + } + } + }, + + // user logout + { + url: '/vue-element-admin/user/logout', + type: 'post', + response: _ => { + return { + code: 20000, + data: 'success' + } + } + } +] diff --git a/package.json b/package.json new file mode 100644 index 0000000..ef93fef --- /dev/null +++ b/package.json @@ -0,0 +1,136 @@ +{ + "name": "vue-element-admin", + "version": "4.2.1", + "description": "A magical vue admin. An out-of-box UI solution for enterprise applications. Newest development stack of vue. Lots of awesome features", + "author": "Pan ", + "license": "MIT", + "scripts": { + "dev": "vue-cli-service serve", + "build:prod": "vue-cli-service build", + "build:stage": "vue-cli-service build --mode staging", + "preview": "node build/index.js --preview", + "lint": "eslint --ext .js,.vue src", + "test:unit": "jest --clearCache && vue-cli-service test:unit", + "test:ci": "npm run lint && npm run test:unit", + "svgo": "svgo -f src/icons/svg --config=src/icons/svgo.yml", + "new": "plop" + }, + "husky": { + "hooks": { + "pre-commit": "lint-staged" + } + }, + "lint-staged": { + "src/**/*.{js,vue}": [ + "eslint --fix", + "git add" + ] + }, + "keywords": [ + "vue", + "admin", + "dashboard", + "element-ui", + "boilerplate", + "admin-template", + "management-system" + ], + "repository": { + "type": "git", + "url": "git+https://github.com/PanJiaChen/vue-element-admin.git" + }, + "bugs": { + "url": "https://github.com/PanJiaChen/vue-element-admin/issues" + }, + "dependencies": { + "@form-create/element-ui": "2.5", + "@jiaminghi/data-view": "^2.10.0", + "axios": "0.18.1", + "clipboard": "^2.0.6", + "codemirror": "5.45.0", + "core-js": "^2.6.12", + "cos-js-sdk-v5": "^1.4.5", + "crypto-js": "^4.1.1", + "driver.js": "0.9.5", + "dropzone": "5.5.1", + "echarts": "^5.4.0", + "element-ui": "^2.15.12", + "exceljs": "^4.3.0", + "file-saver": "2.0.1", + "fuse.js": "3.4.4", + "html2canvas": "^1.1.0", + "js-cookie": "2.2.0", + "jsonlint": "1.6.3", + "jszip": "3.2.1", + "krry-transfer": "^1.2.21", + "lowdb": "^1.0.0", + "moment": "^2.29.1", + "monaco-editor": "^0.19.3", + "node-sass": "^4.13.1", + "normalize.css": "7.0.0", + "nprogress": "0.2.0", + "path-to-regexp": "2.4.0", + "qiniu-js": "^3.4.1", + "qrcodejs2": "0.0.2", + "screenfull": "4.2.0", + "script-loader": "0.7.2", + "showdown": "1.9.0", + "sortablejs": "1.8.4", + "v-viewer": "^1.5.1", + "vue": "2.6.10", + "vue-awesome-swiper": "^3.1.3", + "vue-count-to": "1.0.13", + "vue-easytable": "^2.27.1", + "vue-qr": "^2.5.0", + "vue-router": "3.0.2", + "vue-seamless-scroll": "^1.1.23", + "vue-splitpane": "1.0.4", + "vue-ueditor-wrap": "^2.4.1", + "vue-waterfall-easy": "^2.4.4", + "vuedraggable": "2.20.0", + "vuex": "3.1.0", + "wangeditor": "^4.7.12", + "xlsx": "0.14.1" + }, + "devDependencies": { + "@babel/core": "7.0.0", + "@babel/register": "7.0.0", + "@vue/cli-plugin-babel": "3.5.3", + "@vue/cli-plugin-eslint": "^3.9.1", + "@vue/cli-plugin-unit-jest": "3.5.3", + "@vue/cli-service": "3.5.3", + "@vue/test-utils": "1.0.0-beta.29", + "autoprefixer": "^9.5.1", + "babel-core": "7.0.0-bridge.0", + "babel-eslint": "10.0.1", + "babel-jest": "23.6.0", + "cache-loader": "^2.0.1", + "chalk": "2.4.2", + "chokidar": "2.1.5", + "connect": "3.6.6", + "eslint": "5.15.3", + "eslint-plugin-vue": "5.2.2", + "html-webpack-plugin": "3.2.0", + "husky": "1.3.1", + "lint-staged": "8.1.5", + "mockjs": "1.0.1-beta3", + "plop": "2.3.0", + "runjs": "^4.3.2", + "sass-loader": "^7.3.1", + "script-ext-html-webpack-plugin": "2.1.3", + "serve-static": "^1.13.2", + "svg-sprite-loader": "4.1.3", + "svgo": "1.2.0", + "vue-lazyload": "^1.3.3", + "vue-template-compiler": "2.6.10", + "webpack": "^4.44.2" + }, + "engines": { + "node": ">=8.9", + "npm": ">= 3.0.0" + }, + "browserslist": [ + "> 1%", + "last 2 versions" + ] +} diff --git a/patches/element-ui+2.13.2.patch b/patches/element-ui+2.13.2.patch new file mode 100644 index 0000000..e7d2526 --- /dev/null +++ b/patches/element-ui+2.13.2.patch @@ -0,0 +1,69 @@ +diff --git a/node_modules/element-ui/lib/cascader-panel.js b/node_modules/element-ui/lib/cascader-panel.js +index 0f3f827..aba337b 100644 +--- a/node_modules/element-ui/lib/cascader-panel.js ++++ b/node_modules/element-ui/lib/cascader-panel.js +@@ -1050,7 +1050,7 @@ var store_Store = function () { + }; + + Store.prototype.getNodeByValue = function getNodeByValue(value) { +- if (value) { ++ if (value || value === 0) { + var nodes = this.getFlattedNodes(false, !this.config.lazy).filter(function (node) { + return Object(util_["valueEquals"])(node.path, value) || node.value === value; + }); +diff --git a/node_modules/element-ui/lib/cascader.js b/node_modules/element-ui/lib/cascader.js +index ee4bc3d..d39b5a4 100644 +--- a/node_modules/element-ui/lib/cascader.js ++++ b/node_modules/element-ui/lib/cascader.js +@@ -911,7 +911,7 @@ var InputSizeMap = { + data: function data() { + return { + dropDownVisible: false, +- checkedValue: this.value || null, ++ checkedValue: this.value, + inputHover: false, + inputValue: null, + presentText: null, +@@ -1039,7 +1039,7 @@ var InputSizeMap = { + this.inputInitialHeight = input.$el.offsetHeight || InputSizeMap[this.realSize] || 40; + } + +- if (!Object(util_["isEmpty"])(this.value)) { ++ if (this.value === 0 || !Object(util_["isEmpty"])(this.value)) { + this.computePresentContent(); + } + +@@ -1189,7 +1189,7 @@ var InputSizeMap = { + var checkedValue = this.checkedValue, + config = this.config; + +- if (!Object(util_["isEmpty"])(checkedValue)) { ++ if (checkedValue === 0 || !Object(util_["isEmpty"])(checkedValue)) { + var node = this.panel.getNodeByValue(checkedValue); + if (node && (config.checkStrictly || node.isLeaf)) { + this.presentText = node.getText(this.showAllLevels, this.separator); +diff --git a/node_modules/element-ui/lib/utils/util.js b/node_modules/element-ui/lib/utils/util.js +index 1ced2ab..bfa9001 100644 +--- a/node_modules/element-ui/lib/utils/util.js ++++ b/node_modules/element-ui/lib/utils/util.js +@@ -215,7 +215,7 @@ var isEmpty = exports.isEmpty = function isEmpty(val) { + + if (typeof val === 'boolean') return false; + +- if (typeof val === 'number') return !val; ++ if (typeof val === 'number') return false; + + if (val instanceof Error) return val.message === ''; + +diff --git a/node_modules/element-ui/packages/.DS_Store b/node_modules/element-ui/packages/.DS_Store +deleted file mode 100644 +index 1c1f7f4..0000000 +Binary files a/node_modules/element-ui/packages/.DS_Store and /dev/null differ +diff --git a/node_modules/element-ui/packages/theme-chalk/src/.DS_Store b/node_modules/element-ui/packages/theme-chalk/src/.DS_Store +deleted file mode 100644 +index 94b4cf9..0000000 +Binary files a/node_modules/element-ui/packages/theme-chalk/src/.DS_Store and /dev/null differ +diff --git a/node_modules/element-ui/packages/theme-chalk/src/fonts/.DS_Store b/node_modules/element-ui/packages/theme-chalk/src/fonts/.DS_Store +deleted file mode 100644 +index 5008ddf..0000000 +Binary files a/node_modules/element-ui/packages/theme-chalk/src/fonts/.DS_Store and /dev/null differ diff --git a/plop-templates/component/index.hbs b/plop-templates/component/index.hbs new file mode 100644 index 0000000..7661055 --- /dev/null +++ b/plop-templates/component/index.hbs @@ -0,0 +1,26 @@ +{{#if template}} + +{{/if}} + +{{#if script}} + +{{/if}} + +{{#if style}} + +{{/if}} diff --git a/plop-templates/component/prompt.js b/plop-templates/component/prompt.js new file mode 100644 index 0000000..287f98d --- /dev/null +++ b/plop-templates/component/prompt.js @@ -0,0 +1,64 @@ +// +---------------------------------------------------------------------- +// | CRMEB [ CRMEB赋能开发者,助力企业发展 ] +// +---------------------------------------------------------------------- +// | Copyright (c) 2016~2024 https://www.crmeb.com All rights reserved. +// +---------------------------------------------------------------------- +// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 +// +---------------------------------------------------------------------- +// | Author: CRMEB Team +// +---------------------------------------------------------------------- +const { notEmpty } = require('../utils.js') + +module.exports = { + description: 'generate vue component', + prompts: [{ + type: 'input', + name: 'name', + message: 'component name please', + validate: notEmpty('name') + }, + { + type: 'checkbox', + name: 'blocks', + message: 'Blocks:', + choices: [{ + name: ' + + diff --git a/src/views/promoter/user/index.vue b/src/views/promoter/user/index.vue new file mode 100644 index 0000000..0b56870 --- /dev/null +++ b/src/views/promoter/user/index.vue @@ -0,0 +1,537 @@ + + + + + diff --git a/src/views/safe/pageLinks/index.vue b/src/views/safe/pageLinks/index.vue new file mode 100644 index 0000000..cf0bb25 --- /dev/null +++ b/src/views/safe/pageLinks/index.vue @@ -0,0 +1,770 @@ + + + + + diff --git a/src/views/safe/pcLinks/index.vue b/src/views/safe/pcLinks/index.vue new file mode 100644 index 0000000..9c4f648 --- /dev/null +++ b/src/views/safe/pcLinks/index.vue @@ -0,0 +1,323 @@ + + + + + diff --git a/src/views/service/balanceRecord/index.vue b/src/views/service/balanceRecord/index.vue new file mode 100644 index 0000000..27c1134 --- /dev/null +++ b/src/views/service/balanceRecord/index.vue @@ -0,0 +1,205 @@ + + + + + diff --git a/src/views/service/customer/index.vue b/src/views/service/customer/index.vue new file mode 100644 index 0000000..e054164 --- /dev/null +++ b/src/views/service/customer/index.vue @@ -0,0 +1,347 @@ + + + + + diff --git a/src/views/service/purchase/index.vue b/src/views/service/purchase/index.vue new file mode 100644 index 0000000..c38fcc7 --- /dev/null +++ b/src/views/service/purchase/index.vue @@ -0,0 +1,265 @@ + + + + + diff --git a/src/views/service/settings/index.vue b/src/views/service/settings/index.vue new file mode 100644 index 0000000..d4ae85d --- /dev/null +++ b/src/views/service/settings/index.vue @@ -0,0 +1,192 @@ + + + + + diff --git a/src/views/setting/agreements/index.vue b/src/views/setting/agreements/index.vue new file mode 100644 index 0000000..2b17e27 --- /dev/null +++ b/src/views/setting/agreements/index.vue @@ -0,0 +1,173 @@ + + + \ No newline at end of file diff --git a/src/views/setting/devise/cateMerchant.vue b/src/views/setting/devise/cateMerchant.vue new file mode 100644 index 0000000..b790053 --- /dev/null +++ b/src/views/setting/devise/cateMerchant.vue @@ -0,0 +1,116 @@ + + + + + diff --git a/src/views/setting/devise/catePlantform.vue b/src/views/setting/devise/catePlantform.vue new file mode 100644 index 0000000..a637c1b --- /dev/null +++ b/src/views/setting/devise/catePlantform.vue @@ -0,0 +1,114 @@ + + + + + diff --git a/src/views/setting/devise/components/uploadPic.vue b/src/views/setting/devise/components/uploadPic.vue new file mode 100644 index 0000000..99b0122 --- /dev/null +++ b/src/views/setting/devise/components/uploadPic.vue @@ -0,0 +1,219 @@ + + + + + \ No newline at end of file diff --git a/src/views/setting/devise/index.vue b/src/views/setting/devise/index.vue new file mode 100644 index 0000000..39fb65e --- /dev/null +++ b/src/views/setting/devise/index.vue @@ -0,0 +1,1392 @@ + + + + + diff --git a/src/views/setting/devise/linkList.vue b/src/views/setting/devise/linkList.vue new file mode 100644 index 0000000..89289fc --- /dev/null +++ b/src/views/setting/devise/linkList.vue @@ -0,0 +1,146 @@ + + + + + diff --git a/src/views/setting/devise/links.vue b/src/views/setting/devise/links.vue new file mode 100644 index 0000000..da59eeb --- /dev/null +++ b/src/views/setting/devise/links.vue @@ -0,0 +1,156 @@ + + + + + diff --git a/src/views/setting/devise/list.vue b/src/views/setting/devise/list.vue new file mode 100644 index 0000000..af65f83 --- /dev/null +++ b/src/views/setting/devise/list.vue @@ -0,0 +1,378 @@ + + + + + diff --git a/src/views/setting/devise/merLink.vue b/src/views/setting/devise/merLink.vue new file mode 100644 index 0000000..2cfe466 --- /dev/null +++ b/src/views/setting/devise/merLink.vue @@ -0,0 +1,146 @@ + + + + + diff --git a/src/views/setting/devise/merchantList.vue b/src/views/setting/devise/merchantList.vue new file mode 100644 index 0000000..c3bc4ee --- /dev/null +++ b/src/views/setting/devise/merchantList.vue @@ -0,0 +1,427 @@ + + + + + diff --git a/src/views/setting/devise/microList.vue b/src/views/setting/devise/microList.vue new file mode 100644 index 0000000..5f8f40d --- /dev/null +++ b/src/views/setting/devise/microList.vue @@ -0,0 +1,316 @@ + + + + + diff --git a/src/views/setting/devise/shopStreet.vue b/src/views/setting/devise/shopStreet.vue new file mode 100644 index 0000000..e555cec --- /dev/null +++ b/src/views/setting/devise/shopStreet.vue @@ -0,0 +1,184 @@ + + + + diff --git a/src/views/setting/devise/users.vue b/src/views/setting/devise/users.vue new file mode 100644 index 0000000..1bd9c60 --- /dev/null +++ b/src/views/setting/devise/users.vue @@ -0,0 +1,696 @@ + + + + diff --git a/src/views/setting/devise/visualization.vue b/src/views/setting/devise/visualization.vue new file mode 100644 index 0000000..cba2e06 --- /dev/null +++ b/src/views/setting/devise/visualization.vue @@ -0,0 +1,1489 @@ + + + + + diff --git a/src/views/setting/systemAdmin/index.vue b/src/views/setting/systemAdmin/index.vue new file mode 100644 index 0000000..f0963a9 --- /dev/null +++ b/src/views/setting/systemAdmin/index.vue @@ -0,0 +1,220 @@ + + + + + diff --git a/src/views/setting/systemLog/index.vue b/src/views/setting/systemLog/index.vue new file mode 100644 index 0000000..13d00d2 --- /dev/null +++ b/src/views/setting/systemLog/index.vue @@ -0,0 +1,190 @@ + + + + + diff --git a/src/views/setting/systemMenu/index.vue b/src/views/setting/systemMenu/index.vue new file mode 100644 index 0000000..851e5ce --- /dev/null +++ b/src/views/setting/systemMenu/index.vue @@ -0,0 +1,139 @@ + + + + + diff --git a/src/views/setting/systemRole/index.vue b/src/views/setting/systemRole/index.vue new file mode 100644 index 0000000..243ea37 --- /dev/null +++ b/src/views/setting/systemRole/index.vue @@ -0,0 +1,168 @@ + + + + + diff --git a/src/views/setting/themeStyle/index.vue b/src/views/setting/themeStyle/index.vue new file mode 100644 index 0000000..30a647f --- /dev/null +++ b/src/views/setting/themeStyle/index.vue @@ -0,0 +1,269 @@ + + + + diff --git a/src/views/sms/smsConfig/components/changePsd.vue b/src/views/sms/smsConfig/components/changePsd.vue new file mode 100644 index 0000000..686a286 --- /dev/null +++ b/src/views/sms/smsConfig/components/changePsd.vue @@ -0,0 +1,212 @@ + + + + diff --git a/src/views/sms/smsConfig/components/changeSignature.vue b/src/views/sms/smsConfig/components/changeSignature.vue new file mode 100644 index 0000000..63f4980 --- /dev/null +++ b/src/views/sms/smsConfig/components/changeSignature.vue @@ -0,0 +1,235 @@ + + + + diff --git a/src/views/sms/smsConfig/components/loginFrom.vue b/src/views/sms/smsConfig/components/loginFrom.vue new file mode 100644 index 0000000..7180eaa --- /dev/null +++ b/src/views/sms/smsConfig/components/loginFrom.vue @@ -0,0 +1,180 @@ + + + + diff --git a/src/views/sms/smsConfig/components/register.vue b/src/views/sms/smsConfig/components/register.vue new file mode 100644 index 0000000..807f7b8 --- /dev/null +++ b/src/views/sms/smsConfig/components/register.vue @@ -0,0 +1,273 @@ + + + + diff --git a/src/views/sms/smsConfig/components/tableList.vue b/src/views/sms/smsConfig/components/tableList.vue new file mode 100644 index 0000000..90621ec --- /dev/null +++ b/src/views/sms/smsConfig/components/tableList.vue @@ -0,0 +1,123 @@ + + + + + diff --git a/src/views/sms/smsConfig/index.vue b/src/views/sms/smsConfig/index.vue new file mode 100644 index 0000000..122e5ae --- /dev/null +++ b/src/views/sms/smsConfig/index.vue @@ -0,0 +1,185 @@ + + + + + diff --git a/src/views/sms/smsPay/index.vue b/src/views/sms/smsPay/index.vue new file mode 100644 index 0000000..a1c2485 --- /dev/null +++ b/src/views/sms/smsPay/index.vue @@ -0,0 +1,271 @@ + + + + + diff --git a/src/views/sms/smsTemplate/applyList.vue b/src/views/sms/smsTemplate/applyList.vue new file mode 100644 index 0000000..feed09f --- /dev/null +++ b/src/views/sms/smsTemplate/applyList.vue @@ -0,0 +1,170 @@ + + + + + diff --git a/src/views/sms/smsTemplate/index.vue b/src/views/sms/smsTemplate/index.vue new file mode 100644 index 0000000..66313d6 --- /dev/null +++ b/src/views/sms/smsTemplate/index.vue @@ -0,0 +1,230 @@ + + + + + diff --git a/src/views/station/notice/index.vue b/src/views/station/notice/index.vue new file mode 100644 index 0000000..c31f0a9 --- /dev/null +++ b/src/views/station/notice/index.vue @@ -0,0 +1,316 @@ + + + + + diff --git a/src/views/system/config/classify.vue b/src/views/system/config/classify.vue new file mode 100644 index 0000000..d822446 --- /dev/null +++ b/src/views/system/config/classify.vue @@ -0,0 +1,193 @@ + + + + + diff --git a/src/views/system/config/picture.vue b/src/views/system/config/picture.vue new file mode 100644 index 0000000..38e9ad4 --- /dev/null +++ b/src/views/system/config/picture.vue @@ -0,0 +1,42 @@ + + + + + diff --git a/src/views/system/config/setting.vue b/src/views/system/config/setting.vue new file mode 100644 index 0000000..8615de8 --- /dev/null +++ b/src/views/system/config/setting.vue @@ -0,0 +1,226 @@ + + + + + diff --git a/src/views/system/customer_keyword/index.vue b/src/views/system/customer_keyword/index.vue new file mode 100644 index 0000000..c0bf55a --- /dev/null +++ b/src/views/system/customer_keyword/index.vue @@ -0,0 +1,384 @@ + + + + + diff --git a/src/views/system/exportFile/index.vue b/src/views/system/exportFile/index.vue new file mode 100644 index 0000000..8f80354 --- /dev/null +++ b/src/views/system/exportFile/index.vue @@ -0,0 +1,172 @@ + + + + + diff --git a/src/views/system/groupData/data.vue b/src/views/system/groupData/data.vue new file mode 100644 index 0000000..f7d8370 --- /dev/null +++ b/src/views/system/groupData/data.vue @@ -0,0 +1,245 @@ + + + + + diff --git a/src/views/system/groupData/list.vue b/src/views/system/groupData/list.vue new file mode 100644 index 0000000..30addf3 --- /dev/null +++ b/src/views/system/groupData/list.vue @@ -0,0 +1,132 @@ + + + + + diff --git a/src/views/system/notification/index.vue b/src/views/system/notification/index.vue new file mode 100644 index 0000000..ba593ff --- /dev/null +++ b/src/views/system/notification/index.vue @@ -0,0 +1,211 @@ + + + + + diff --git a/src/views/system/topic/data.vue b/src/views/system/topic/data.vue new file mode 100644 index 0000000..995d2e4 --- /dev/null +++ b/src/views/system/topic/data.vue @@ -0,0 +1,534 @@ + + + + + diff --git a/src/views/systemForm/cityDelivery/index.vue b/src/views/systemForm/cityDelivery/index.vue new file mode 100644 index 0000000..98b7744 --- /dev/null +++ b/src/views/systemForm/cityDelivery/index.vue @@ -0,0 +1,92 @@ + + + + + diff --git a/src/views/systemForm/form/create.vue b/src/views/systemForm/form/create.vue new file mode 100644 index 0000000..d1079fd --- /dev/null +++ b/src/views/systemForm/form/create.vue @@ -0,0 +1,1001 @@ + + + + + \ No newline at end of file diff --git a/src/views/systemForm/form/details.vue b/src/views/systemForm/form/details.vue new file mode 100644 index 0000000..4dbf317 --- /dev/null +++ b/src/views/systemForm/form/details.vue @@ -0,0 +1,200 @@ + + + + diff --git a/src/views/systemForm/form/index.vue b/src/views/systemForm/form/index.vue new file mode 100644 index 0000000..bc75e55 --- /dev/null +++ b/src/views/systemForm/form/index.vue @@ -0,0 +1,149 @@ + + + + + diff --git a/src/views/systemForm/setSystem/index.vue b/src/views/systemForm/setSystem/index.vue new file mode 100644 index 0000000..e0bc57e --- /dev/null +++ b/src/views/systemForm/setSystem/index.vue @@ -0,0 +1,257 @@ + + + + + diff --git a/src/views/user/agreement/index.vue b/src/views/user/agreement/index.vue new file mode 100644 index 0000000..2b9e108 --- /dev/null +++ b/src/views/user/agreement/index.vue @@ -0,0 +1,170 @@ + + + + + + + + diff --git a/src/views/user/group/index.vue b/src/views/user/group/index.vue new file mode 100644 index 0000000..c036ee8 --- /dev/null +++ b/src/views/user/group/index.vue @@ -0,0 +1,162 @@ + + + + + diff --git a/src/views/user/list/couponList.vue b/src/views/user/list/couponList.vue new file mode 100644 index 0000000..6a76574 --- /dev/null +++ b/src/views/user/list/couponList.vue @@ -0,0 +1,238 @@ + + + + + diff --git a/src/views/user/list/index.vue b/src/views/user/list/index.vue new file mode 100644 index 0000000..3c751e2 --- /dev/null +++ b/src/views/user/list/index.vue @@ -0,0 +1,1011 @@ + + + + + diff --git a/src/views/user/list/userCreate.vue b/src/views/user/list/userCreate.vue new file mode 100644 index 0000000..f93bc79 --- /dev/null +++ b/src/views/user/list/userCreate.vue @@ -0,0 +1,263 @@ + + + + diff --git a/src/views/user/list/userDetails.vue b/src/views/user/list/userDetails.vue new file mode 100644 index 0000000..6d1c85c --- /dev/null +++ b/src/views/user/list/userDetails.vue @@ -0,0 +1,1431 @@ + + + + + diff --git a/src/views/user/member/config.vue b/src/views/user/member/config.vue new file mode 100644 index 0000000..a678d74 --- /dev/null +++ b/src/views/user/member/config.vue @@ -0,0 +1,83 @@ + + + + + diff --git a/src/views/user/member/description.vue b/src/views/user/member/description.vue new file mode 100644 index 0000000..f16b075 --- /dev/null +++ b/src/views/user/member/description.vue @@ -0,0 +1,171 @@ + + + + + + + + diff --git a/src/views/user/member/equity.vue b/src/views/user/member/equity.vue new file mode 100644 index 0000000..96307a5 --- /dev/null +++ b/src/views/user/member/equity.vue @@ -0,0 +1,122 @@ + + + + + diff --git a/src/views/user/member/index.vue b/src/views/user/member/index.vue new file mode 100644 index 0000000..87ed26e --- /dev/null +++ b/src/views/user/member/index.vue @@ -0,0 +1,3 @@ + \ No newline at end of file diff --git a/src/views/user/member/interests.vue b/src/views/user/member/interests.vue new file mode 100644 index 0000000..699f894 --- /dev/null +++ b/src/views/user/member/interests.vue @@ -0,0 +1,127 @@ + + + + + diff --git a/src/views/user/member/list.vue b/src/views/user/member/list.vue new file mode 100644 index 0000000..1fea7a0 --- /dev/null +++ b/src/views/user/member/list.vue @@ -0,0 +1,129 @@ + + + + + diff --git a/src/views/user/member/record.vue b/src/views/user/member/record.vue new file mode 100644 index 0000000..aacce48 --- /dev/null +++ b/src/views/user/member/record.vue @@ -0,0 +1,172 @@ + + + + + diff --git a/src/views/user/member/type.vue b/src/views/user/member/type.vue new file mode 100644 index 0000000..dbeddc6 --- /dev/null +++ b/src/views/user/member/type.vue @@ -0,0 +1,149 @@ + + + + + diff --git a/src/views/user/member/vipAgreement.vue b/src/views/user/member/vipAgreement.vue new file mode 100644 index 0000000..9f2afa8 --- /dev/null +++ b/src/views/user/member/vipAgreement.vue @@ -0,0 +1,168 @@ + + + + + + + + diff --git a/src/views/user/search/index.vue b/src/views/user/search/index.vue new file mode 100644 index 0000000..e29e78b --- /dev/null +++ b/src/views/user/search/index.vue @@ -0,0 +1,235 @@ + + + + diff --git a/src/views/user/setupUser/index.vue b/src/views/user/setupUser/index.vue new file mode 100644 index 0000000..26ebba2 --- /dev/null +++ b/src/views/user/setupUser/index.vue @@ -0,0 +1,614 @@ + + + diff --git a/src/views/userFeedback/classify/index.vue b/src/views/userFeedback/classify/index.vue new file mode 100644 index 0000000..3ce4fce --- /dev/null +++ b/src/views/userFeedback/classify/index.vue @@ -0,0 +1,149 @@ + + + + + diff --git a/src/views/userFeedback/list/index.vue b/src/views/userFeedback/list/index.vue new file mode 100644 index 0000000..7c93178 --- /dev/null +++ b/src/views/userFeedback/list/index.vue @@ -0,0 +1,201 @@ + + + + + diff --git a/tests/unit/.eslintrc.js b/tests/unit/.eslintrc.js new file mode 100644 index 0000000..958d51b --- /dev/null +++ b/tests/unit/.eslintrc.js @@ -0,0 +1,5 @@ +module.exports = { + env: { + jest: true + } +} diff --git a/tests/unit/components/Hamburger.spec.js b/tests/unit/components/Hamburger.spec.js new file mode 100644 index 0000000..266e79d --- /dev/null +++ b/tests/unit/components/Hamburger.spec.js @@ -0,0 +1,27 @@ +// +---------------------------------------------------------------------- +// | CRMEB [ CRMEB赋能开发者,助力企业发展 ] +// +---------------------------------------------------------------------- +// | Copyright (c) 2016~2023 https://www.crmeb.com All rights reserved. +// +---------------------------------------------------------------------- +// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 +// +---------------------------------------------------------------------- +// | Author: CRMEB Team +// +---------------------------------------------------------------------- +import { shallowMount } from '@vue/test-utils' +import Hamburger from '@/components/hamBurger/index.vue' +describe('Hamburger.vue', () => { + it('toggle click', () => { + const wrapper = shallowMount(Hamburger) + const mockFn = jest.fn() + wrapper.vm.$on('toggleClick', mockFn) + wrapper.find('.hamburger').trigger('click') + expect(mockFn).toBeCalled() + }) + it('prop isActive', () => { + const wrapper = shallowMount(Hamburger) + wrapper.setProps({ isActive: true }) + expect(wrapper.contains('.is-active')).toBe(true) + wrapper.setProps({ isActive: false }) + expect(wrapper.contains('.is-active')).toBe(false) + }) +}) diff --git a/tests/unit/components/SvgIcon.spec.js b/tests/unit/components/SvgIcon.spec.js new file mode 100644 index 0000000..ac8a85a --- /dev/null +++ b/tests/unit/components/SvgIcon.spec.js @@ -0,0 +1,31 @@ +// +---------------------------------------------------------------------- +// | CRMEB [ CRMEB赋能开发者,助力企业发展 ] +// +---------------------------------------------------------------------- +// | Copyright (c) 2016~2023 https://www.crmeb.com All rights reserved. +// +---------------------------------------------------------------------- +// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 +// +---------------------------------------------------------------------- +// | Author: CRMEB Team +// +---------------------------------------------------------------------- +import { shallowMount } from '@vue/test-utils' +import SvgIcon from '@/components/SvgIcon/index.vue' +describe('SvgIcon.vue', () => { + it('iconClass', () => { + const wrapper = shallowMount(SvgIcon, { + propsData: { + iconClass: 'test' + } + }) + expect(wrapper.find('use').attributes().href).toBe('#icon-test') + }) + it('className', () => { + const wrapper = shallowMount(SvgIcon, { + propsData: { + iconClass: 'test' + } + }) + expect(wrapper.classes().length).toBe(1) + wrapper.setProps({ className: 'test' }) + expect(wrapper.classes().includes('test')).toBe(true) + }) +}) diff --git a/tests/unit/utils/formatTime.spec.js b/tests/unit/utils/formatTime.spec.js new file mode 100644 index 0000000..67eda05 --- /dev/null +++ b/tests/unit/utils/formatTime.spec.js @@ -0,0 +1,38 @@ +// +---------------------------------------------------------------------- +// | CRMEB [ CRMEB赋能开发者,助力企业发展 ] +// +---------------------------------------------------------------------- +// | Copyright (c) 2016~2023 https://www.crmeb.com All rights reserved. +// +---------------------------------------------------------------------- +// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 +// +---------------------------------------------------------------------- +// | Author: CRMEB Team +// +---------------------------------------------------------------------- +import { formatTime } from '@/utils/index.js' +describe('Utils:formatTime', () => { + const d = new Date('2018-07-13 17:54:01') // "2018-07-13 17:54:01" + const retrofit = 5 * 1000 + + it('ten digits timestamp', () => { + expect(formatTime((d / 1000).toFixed(0))).toBe('7月13日17时54分') + }) + it('test now', () => { + expect(formatTime(+new Date() - 1)).toBe('刚刚') + }) + it('less two minute', () => { + expect(formatTime(+new Date() - 60 * 2 * 1000 + retrofit)).toBe('2分钟前') + }) + it('less two hour', () => { + expect(formatTime(+new Date() - 60 * 60 * 2 * 1000 + retrofit)).toBe('2小时前') + }) + it('less one day', () => { + expect(formatTime(+new Date() - 60 * 60 * 24 * 1 * 1000)).toBe('1天前') + }) + it('more than one day', () => { + expect(formatTime(d)).toBe('7月13日17时54分') + }) + it('format', () => { + expect(formatTime(d, '{y}-{m}-{d} {h}:{i}')).toBe('2018-07-13 17:54') + expect(formatTime(d, '{y}-{m}-{d}')).toBe('2018-07-13') + expect(formatTime(d, '{y}/{m}/{d} {h}-{i}')).toBe('2018/07/13 17-54') + }) +}) diff --git a/tests/unit/utils/parseTime.spec.js b/tests/unit/utils/parseTime.spec.js new file mode 100644 index 0000000..9c2a3ee --- /dev/null +++ b/tests/unit/utils/parseTime.spec.js @@ -0,0 +1,41 @@ +// +---------------------------------------------------------------------- +// | CRMEB [ CRMEB赋能开发者,助力企业发展 ] +// +---------------------------------------------------------------------- +// | Copyright (c) 2016~2023 https://www.crmeb.com All rights reserved. +// +---------------------------------------------------------------------- +// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 +// +---------------------------------------------------------------------- +// | Author: CRMEB Team +// +---------------------------------------------------------------------- +import { parseTime } from '@/utils/index.js' +describe('Utils:parseTime', () => { + const d = new Date('2018-07-13 17:54:01') // "2018-07-13 17:54:01" + it('timestamp', () => { + expect(parseTime(d)).toBe('2018-07-13 17:54:01') + }) + + it('timestamp string', () => { + expect(parseTime((d + ''))).toBe('2018-07-13 17:54:01') + }) + + it('ten digits timestamp', () => { + expect(parseTime((d / 1000).toFixed(0))).toBe('2018-07-13 17:54:01') + }) + it('new Date', () => { + expect(parseTime(new Date(d))).toBe('2018-07-13 17:54:01') + }) + it('format', () => { + expect(parseTime(d, '{y}-{m}-{d} {h}:{i}')).toBe('2018-07-13 17:54') + expect(parseTime(d, '{y}-{m}-{d}')).toBe('2018-07-13') + expect(parseTime(d, '{y}/{m}/{d} {h}-{i}')).toBe('2018/07/13 17-54') + }) + it('get the day of the week', () => { + expect(parseTime(d, '{a}')).toBe('五') // 星期五 + }) + it('get the day of the week', () => { + expect(parseTime(+d + 1000 * 60 * 60 * 24 * 2, '{a}')).toBe('日') // 星期日 + }) + it('empty argument', () => { + expect(parseTime()).toBeNull() + }) +}) diff --git a/tests/unit/utils/validate.spec.js b/tests/unit/utils/validate.spec.js new file mode 100644 index 0000000..a1a0823 --- /dev/null +++ b/tests/unit/utils/validate.spec.js @@ -0,0 +1,37 @@ + +// +---------------------------------------------------------------------- +// | CRMEB [ CRMEB赋能开发者,助力企业发展 ] +// +---------------------------------------------------------------------- +// | Copyright (c) 2016~2023 https://www.crmeb.com All rights reserved. +// +---------------------------------------------------------------------- +// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 +// +---------------------------------------------------------------------- +// | Author: CRMEB Team +// +----------------------------------------------------------------------import { validUsername, validURL, validLowerCase, validUpperCase, validAlphabets } from '@/utils/validate.js' +describe('Utils:validate', () => { + it('validUsername', () => { + expect(validUsername('admin')).toBe(true) + expect(validUsername('editor')).toBe(true) + expect(validUsername('xxxx')).toBe(false) + }) + it('validURL', () => { + expect(validURL('https://github.com/PanJiaChen/vue-element-admin')).toBe(true) + expect(validURL('http://github.com/PanJiaChen/vue-element-admin')).toBe(true) + expect(validURL('github.com/PanJiaChen/vue-element-admin')).toBe(false) + }) + it('validLowerCase', () => { + expect(validLowerCase('abc')).toBe(true) + expect(validLowerCase('Abc')).toBe(false) + expect(validLowerCase('123abc')).toBe(false) + }) + it('validUpperCase', () => { + expect(validUpperCase('ABC')).toBe(true) + expect(validUpperCase('Abc')).toBe(false) + expect(validUpperCase('123ABC')).toBe(false) + }) + it('validAlphabets', () => { + expect(validAlphabets('ABC')).toBe(true) + expect(validAlphabets('Abc')).toBe(true) + expect(validAlphabets('123aBC')).toBe(false) + }) +}) diff --git a/vue.config.js b/vue.config.js new file mode 100644 index 0000000..6138b33 --- /dev/null +++ b/vue.config.js @@ -0,0 +1,137 @@ +'use strict' +const path = require('path') +const defaultSettings = require('./src/settings.js') + +function resolve(dir) { + return path.join(__dirname, dir) +} + +const name = defaultSettings.title || 'vue Element Admin' // page title + +// If your port is set to 80, +// use administrator privileges to execute the command line. +// For example, Mac: sudo npm run +// You can change the port by the following method: +// port = 9527 npm run dev OR npm run dev --port = 9527 +const port = process.env.port || process.env.npm_config_port || 9527 // dev port + +// All configuration item explanations can be find in https://cli.vuejs.org/config/ +module.exports = { + /** + * You will need to set publicPath if you plan to deploy your site under a sub path, + * for example GitHub Pages. If you plan to deploy your site to https://foo.github.io/bar/, + * then publicPath should be set to "/bar/". + * In most cases please use '/' !!! + * Detail: https://cli.vuejs.org/config/#publicpath + */ + publicPath: '/', + outputDir: 'dist', + assetsDir: 'system', + indexPath: process.env.NODE_ENV === 'development' ? 'index.html' : 'system.html', + lintOnSave: process.env.NODE_ENV === 'development', + productionSourceMap: false, + devServer: { + port: port, + // open: true, + overlay: { + warnings: false, + errors: true + }, + before: require('./mock/mock-server.js') + }, + configureWebpack: { + // provide the app's title in webpack's name field, so that + // it can be accessed in index.html to inject the correct title. + name: name, + resolve: { + alias: { + '@': resolve('src') + } + } + }, + css: { + loaderOptions: { + sass: { + // data:`@import "~@/assets/variable.scss";` v7之前使用 的是data,现在改成了prependData + data: `@import "@/styles/variables.scss";` + } + } + }, + chainWebpack(config) { + config.plugins.delete('preload') // TODO: need test + config.plugins.delete('prefetch') // TODO: need test + + // set svg-sprite-loader + config.module + .rule('svg') + .exclude.add(resolve('src/icons')) + .end() + + config.module + .rule('icons') + .test(/\.svg$/) + .include.add(resolve('src/icons')) + .end() + .use('svg-sprite-loader') + .loader('svg-sprite-loader') + .options({ + symbolId: 'icon-[name]' + }) + .end() + // set preserveWhitespace + config.module + .rule('vue') + .use('vue-loader') + .loader('vue-loader') + .tap(options => { + options.compilerOptions.preserveWhitespace = true + return options + }) + .end() + + config + // https://webpack.js.org/configuration/devtool/#development + .when(process.env.NODE_ENV === 'development', + config => config.devtool('cheap-source-map') + ) + + config + .when(process.env.NODE_ENV !== 'development', + config => { + config + .plugin('ScriptExtHtmlWebpackPlugin') + .after('html') + .use('script-ext-html-webpack-plugin', [{ + // `runtime` must same as runtimeChunk name. default is `runtime` + inline: /runtime\..*\.js$/ + }]) + .end() + config + .optimization.splitChunks({ + chunks: 'all', + cacheGroups: { + libs: { + name: 'chunk-libs', + test: /[\\/]node_modules[\\/]/, + priority: 10, + chunks: 'initial' // only package third parties that are initially dependent + }, + elementUI: { + name: 'chunk-elementUI', // split elementUI into a single package + priority: 20, // the weight needs to be larger than libs and app or it will be packaged into libs or app + test: /[\\/]node_modules[\\/]_?element-ui(.*)/ // in order to adapt to cnpm + }, + commons: { + name: 'chunk-commons', + test: resolve('src/components'), // can customize your rules + minChunks: 3, // minimum common number + priority: 5, + reuseExistingChunk: true + } + } + }) + config.optimization.runtimeChunk('single') + } + ) + } +}