From 066525964f53e0329ceaafea18d8b4682af2bcf9 Mon Sep 17 00:00:00 2001 From: toesbieya <1647775459@qq.com> Date: Wed, 2 Dec 2020 19:05:43 +0800 Subject: [PATCH] =?UTF-8?q?=E5=89=8D=E7=AB=AF=E7=AE=80=E6=98=93=E6=A8=A1?= =?UTF-8?q?=E6=9D=BF=E7=9A=84=E5=88=9D=E6=AD=A5=E6=8A=BD=E5=8F=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- vue/{ => full}/.gitignore | 0 vue/{ => full}/babel.config.js | 0 .../component/Menu/MenuItem.vue | 0 .../component/Menu/Submenu.vue | 0 .../component/Menu/mixin.js | 0 .../component/Message/index.js | 0 .../component/Message/main.vue | 0 vue/{ => full}/element-ui-personal/index.js | 0 .../element-ui-personal/style/index.scss | 0 .../element-ui-personal/style/message.scss | 0 .../mock/controller/account/index.js | 0 vue/{ => full}/mock/controller/index.js | 0 .../mock/controller/system/resource.js | 0 vue/{ => full}/mock/index.js | 0 vue/{ => full}/mock/util.js | 0 vue/{ => full}/package-lock.json | 0 vue/{ => full}/package.json | 0 vue/{ => full}/public/favicon.ico | Bin vue/{ => full}/public/index.html | 4 + .../public/static/echarts/macarons.js | 0 vue/{ => full}/public/static/img/dot1.png | Bin vue/{ => full}/public/static/img/dot2.png | Bin vue/{ => full}/public/static/img/dot3.png | Bin vue/{ => full}/public/static/img/dot4.png | Bin .../public/static/img/fileType/doc.png | Bin .../public/static/img/fileType/pdf.png | Bin .../public/static/img/fileType/ppt.png | Bin .../public/static/img/fileType/rar.png | Bin .../public/static/img/fileType/txt.png | Bin .../public/static/img/fileType/xls.png | Bin .../public/static/img/fileType/zip.png | Bin vue/{ => full}/public/static/img/logo.svg | 0 vue/{ => full}/public/static/js/cjpeg.min.js | 0 .../public/static/js/exceljs.min.js | 0 .../public/static/js/pngquant.min.js | 0 .../public/static/json/region-pca.json | 0 .../static/lightgallery/lg-pager.min.js | 0 .../static/lightgallery/lg-thumbnail.min.js | 0 .../public/static/lightgallery/lg-zoom.min.js | 0 .../public/static/live2d/live2d.min.js | 0 .../public/static/live2d/waifu-tips.json | 0 vue/{ => full}/public/static/live2d/waifu.css | 0 .../public/static/tinymce/langs/zh_CN.js | 0 vue/{ => full}/src/App.vue | 0 vue/{ => full}/src/api/account/index.js | 0 vue/{ => full}/src/api/doc/history.js | 0 .../src/api/doc/purchase/inbound.js | 0 vue/{ => full}/src/api/doc/purchase/order.js | 0 vue/{ => full}/src/api/doc/sell/order.js | 0 vue/{ => full}/src/api/doc/sell/outbound.js | 0 vue/{ => full}/src/api/file/index.js | 0 vue/{ => full}/src/api/message/manage.js | 0 vue/{ => full}/src/api/message/user.js | 0 vue/{ => full}/src/api/record/index.js | 0 vue/{ => full}/src/api/request.js | 0 vue/{ => full}/src/api/statistic/index.js | 0 vue/{ => full}/src/api/stock/current.js | 0 vue/{ => full}/src/api/system/category.js | 0 vue/{ => full}/src/api/system/customer.js | 0 vue/{ => full}/src/api/system/department.js | 0 vue/{ => full}/src/api/system/resource.js | 0 vue/{ => full}/src/api/system/role.js | 0 vue/{ => full}/src/api/system/supplier.js | 0 vue/{ => full}/src/api/system/user.js | 0 vue/{ => full}/src/asset/icon/index.js | 0 vue/{ => full}/src/asset/icon/svg/bug.svg | 0 vue/{ => full}/src/asset/icon/svg/check.svg | 0 vue/{ => full}/src/asset/icon/svg/develop.svg | 0 .../src/asset/icon/svg/documentation.svg | 0 .../src/asset/icon/svg/eye-open.svg | 0 vue/{ => full}/src/asset/icon/svg/eye.svg | 0 vue/{ => full}/src/asset/icon/svg/home.svg | 0 vue/{ => full}/src/asset/icon/svg/icon.svg | 0 vue/{ => full}/src/asset/icon/svg/message.svg | 0 vue/{ => full}/src/asset/icon/svg/money.svg | 0 .../src/asset/icon/svg/password.svg | 0 vue/{ => full}/src/asset/icon/svg/qq.svg | 0 vue/{ => full}/src/asset/icon/svg/sell.svg | 0 .../src/asset/icon/svg/shopping.svg | 0 vue/{ => full}/src/asset/icon/svg/show.svg | 0 vue/{ => full}/src/asset/icon/svg/stock.svg | 0 vue/{ => full}/src/asset/icon/svg/system.svg | 0 vue/{ => full}/src/asset/icon/svg/user.svg | 0 vue/{ => full}/src/asset/icon/svgo.yml | 0 vue/{ => full}/src/asset/style/display.scss | 0 .../src/asset/style/element-ui.scss | 0 vue/{ => full}/src/asset/style/index.scss | 0 vue/{ => full}/src/asset/style/nprogress.scss | 0 .../src/asset/style/transition.scss | 0 vue/{ => full}/src/asset/style/variables.scss | 0 .../src/component/Charts/PieChart.vue | 0 .../src/component/CollapseCard/index.vue | 0 .../src/component/Empty/DefaultEmptyImage.vue | 0 vue/{ => full}/src/component/Empty/index.vue | 0 vue/{ => full}/src/component/Empty/style.scss | 0 .../src/component/ExtraArea/index.vue | 0 vue/{ => full}/src/component/Icon/index.vue | 0 .../src/component/LinerProgress/index.vue | 0 .../src/component/LinerProgress/style.scss | 0 .../src/component/OrgTree/index.vue | 0 vue/{ => full}/src/component/OrgTree/node.vue | 0 .../src/component/OrgTree/style.scss | 0 .../component/RegionSelector/Tab/index.vue | 0 .../component/RegionSelector/Tab/style.scss | 0 .../RegionSelector/Tree/TreeDialog.vue | 0 .../component/RegionSelector/Tree/index.vue | 0 .../src/component/RegionSelector/index.vue | 0 .../src/component/RegionSelector/mixin.js | 0 .../src/component/RegionSelector/store.js | 0 .../src/component/Skeleton/constant.js | 0 .../src/component/Skeleton/index.vue | 0 .../src/component/Skeleton/style.scss | 0 .../src/component/TreeSelect/index.vue | 0 .../src/component/UploadFile/index.vue | 0 .../src/component/UploadFile/style.scss | 0 .../component/abstract/Dialog/LoadingMask.vue | 0 .../src/component/abstract/Dialog/index.vue | 0 .../src/component/abstract/Dialog/style.scss | 0 .../src/component/abstract/Form/index.vue | 0 .../src/component/abstract/Form/item.vue | 0 .../component/abstract/Pagination/index.vue | 0 .../src/component/abstract/Table/index.vue | 0 .../src/component/biz/CategoryTree/index.vue | 0 .../SimpleMultipleUserSelector.vue | 0 .../src/component/biz/UserSelector/index.js | 0 .../src/component/biz/doc/DocHistory.vue | 0 .../src/component/biz/doc/DocSteps.vue | 0 .../src/component/checkbox/ColorCheckbox.vue | 0 .../src/component/checkbox/Group.vue | 0 .../src/component/checkbox/ImgCheckbox.vue | 0 .../src/component/checkbox/common.js | 0 .../src/component/editor/JsonEditor.vue | 0 .../src/component/editor/RichTextEditor.vue | 0 .../src/component/form/Anchor/index.vue | 0 .../src/component/form/Search/index.vue | 0 .../src/component/form/ValidateInfo/index.vue | 0 .../component/form/ValidateInfo/style.scss | 0 .../src/component/menu/ContextMenu/index.vue | 0 .../src/component/menu/NavMenu/index.vue | 0 .../src/component/menu/NavMenu/item.vue | 0 .../src/component/menu/NavMenu/style.scss | 0 .../component/menu/NavMenu/theme-dark.scss | 0 .../component/menu/NavMenu/theme-light.scss | 0 vue/{ => full}/src/config/index.js | 0 vue/{ => full}/src/directive/dragDialog.js | 0 vue/{ => full}/src/directive/index.js | 0 vue/{ => full}/src/directive/ripple/index.js | 0 .../src/directive/ripple/style.scss | 0 vue/{ => full}/src/filter/index.js | 0 .../src/globalMethod/BottomTip/index.js | 0 .../src/globalMethod/BottomTip/main.vue | 0 .../src/globalMethod/Guide/index.js | 0 .../src/globalMethod/Guide/main.vue | 0 .../src/globalMethod/Guide/style.scss | 0 .../src/globalMethod/Guide/utils.js | 0 .../src/globalMethod/ImageViewer/index.js | 0 .../src/globalMethod/SignautreBoard/index.js | 0 .../src/globalMethod/SignautreBoard/main.vue | 0 .../globalMethod/Verify/image/btn_move.png | Bin .../globalMethod/Verify/image/btn_stop.png | Bin .../globalMethod/Verify/image/icon_close.png | Bin .../globalMethod/Verify/image/icon_info.png | Bin .../Verify/image/icon_refresh_bottom.png | Bin .../Verify/image/icon_refresh_top.png | Bin .../src/globalMethod/Verify/image/loading.png | Bin .../src/globalMethod/Verify/image/track.png | Bin .../src/globalMethod/Verify/index.js | 0 .../src/globalMethod/Verify/main.vue | 0 .../src/globalMethod/Verify/style.scss | 0 vue/{ => full}/src/globalMethod/index.js | 0 .../component/Aside/component/MenuSearch.vue | 0 .../component/Aside/component/OnePartRoot.vue | 0 .../component/Aside/component/TwoPartRoot.vue | 0 .../component/Aside/component/TwoPartSub.vue | 0 .../src/layout/component/Aside/index.vue | 0 .../src/layout/component/Aside/style.scss | 0 .../layout/component/Aside/theme-dark.scss | 0 .../layout/component/Aside/theme-light.scss | 0 .../src/layout/component/Hamburger.vue | 0 vue/{ => full}/src/layout/component/Logo.vue | 0 .../component/Navbar/component/Bell.vue | 0 .../component/Navbar/component/HeadMenu.vue | 0 .../src/layout/component/Navbar/index.vue | 0 .../src/layout/component/Navbar/style.scss | 0 .../layout/component/Navbar/theme-dark.scss | 0 .../layout/component/Navbar/theme-light.scss | 0 .../component/Page/component/BackToTop.vue | 0 .../Page/component/KeepRouterViewAlive.vue | 0 .../component/Page/component/PageFooter.vue | 0 .../component/Page/component/PageHeader.vue | 0 .../component/Page/component/PageView.vue | 0 .../Page/component/TagsView/ScrollPanel.vue | 0 .../Page/component/TagsView/index.vue | 0 .../Page/component/TagsView/style.scss | 0 .../src/layout/component/Page/index.vue | 0 .../src/layout/component/SettingDrawer.vue | 0 vue/{ => full}/src/layout/index.vue | 0 .../layout/mixin/decideRouterTransition.js | 0 vue/{ => full}/src/layout/mixin/hamburger.js | 0 vue/{ => full}/src/layout/mixin/menu.js | 0 vue/{ => full}/src/layout/mixin/menuSearch.js | 0 vue/{ => full}/src/layout/mixin/offline.js | 0 .../src/layout/mixin/tagsViewPersistent.js | 0 .../src/layout/mixin/tagsViewShortcut.js | 0 vue/{ => full}/src/layout/store/app.js | 0 vue/{ => full}/src/layout/store/aside.js | 0 vue/{ => full}/src/layout/store/navbar.js | 0 vue/{ => full}/src/layout/store/page.js | 0 vue/{ => full}/src/layout/store/tagsView.js | 0 vue/{ => full}/src/layout/util.js | 0 vue/{ => full}/src/layout/布局设计.md | 0 vue/{ => full}/src/main.js | 0 vue/{ => full}/src/mixin/chart/index.js | 0 vue/{ => full}/src/mixin/chart/logic.js | 0 vue/{ => full}/src/mixin/chart/resize.js | 0 vue/{ => full}/src/mixin/dialogMixin.js | 0 vue/{ => full}/src/mixin/docDetailMixin.js | 0 vue/{ => full}/src/mixin/docTableMixin.js | 0 vue/{ => full}/src/mixin/tablePageMixin.js | 0 vue/{ => full}/src/mixin/treePageMixin.js | 0 .../canvasAnimation/firework/Particle.js | 0 .../plugin/canvasAnimation/firework/Rocket.js | 0 .../plugin/canvasAnimation/firework/Time.js | 0 .../plugin/canvasAnimation/firework/Trail.js | 0 .../plugin/canvasAnimation/firework/Vector.js | 0 .../plugin/canvasAnimation/firework/index.js | 0 .../plugin/canvasAnimation/godrays/index.js | 0 .../canvasAnimation/godrays/original.js | 0 .../moveFollowMouse/Particle.js | 0 .../canvasAnimation/moveFollowMouse/index.js | 0 .../canvasAnimation/particleBall/Particle.js | 0 .../canvasAnimation/particleBall/Vector.js | 0 .../canvasAnimation/particleBall/index.js | 0 .../canvasAnimation/particleBall/util.js | 0 .../particleNetwork/Particle.js | 0 .../canvasAnimation/particleNetwork/index.js | 0 .../canvasAnimation/particleWave/index.js | 0 .../canvasAnimation/reflectRain/RainDrop.js | 0 .../canvasAnimation/reflectRain/Vector.js | 0 .../canvasAnimation/reflectRain/index.js | 0 .../plugin/canvasAnimation/sparkRain/Spark.js | 0 .../plugin/canvasAnimation/sparkRain/index.js | 0 .../plugin/canvasAnimation/sparkRain/util.js | 0 .../canvasAnimation/sunlight/Particle.js | 0 .../plugin/canvasAnimation/sunlight/index.js | 0 .../src/plugin/imageCompress/cjpeg.js | 0 .../src/plugin/imageCompress/pngquant.js | 0 .../src/plugin/imageCompress/util.js | 0 vue/{ => full}/src/plugin/live2d/index.js | 0 .../src/plugin/webgl/fluid/Material.js | 0 .../src/plugin/webgl/fluid/Pointer.js | 0 .../src/plugin/webgl/fluid/Program.js | 0 .../src/plugin/webgl/fluid/config.js | 0 .../src/plugin/webgl/fluid/factory.js | 0 .../src/plugin/webgl/fluid/index.js | 0 vue/full/src/plugin/webgl/fluid/obj.js | 547 +++++++++++++++++ .../src/plugin/webgl/fluid/shader.js | 0 vue/{ => full}/src/plugin/webgl/fluid/util.js | 0 vue/{ => full}/src/router/define.js | 0 .../src/router/guardian/accessControl.js | 0 .../src/router/guardian/avoidReuse.js | 0 vue/{ => full}/src/router/guardian/iframe.js | 0 vue/{ => full}/src/router/guardian/index.js | 0 .../src/router/guardian/nprogress.js | 0 .../src/router/guardian/setTitle.js | 0 vue/{ => full}/src/router/index.js | 0 .../src/router/module/admin/child/default.js | 0 .../src/router/module/admin/child/message.js | 0 .../src/router/module/admin/child/purchase.js | 0 .../src/router/module/admin/child/sell.js | 0 .../src/router/module/admin/child/stock.js | 0 .../src/router/module/admin/child/system.js | 0 .../src/router/module/admin/index.js | 0 .../router/module/dev/child/uploadFileDev.js | 0 vue/{ => full}/src/router/module/dev/index.js | 0 vue/{ => full}/src/router/module/doc/index.js | 0 .../router/module/example/child/component.js | 0 .../src/router/module/example/child/cool.js | 0 .../router/module/example/child/directive.js | 0 .../module/example/child/globalMethod.js | 0 .../src/router/module/example/child/icon.js | 0 .../src/router/module/example/child/iframe.js | 0 .../src/router/module/example/child/test.js | 0 .../src/router/module/example/index.js | 0 vue/{ => full}/src/router/module/index.js | 0 vue/{ => full}/src/router/util.js | 0 vue/{ => full}/src/store/index.js | 0 vue/{ => full}/src/store/module/app.js | 0 vue/{ => full}/src/store/module/dataCache.js | 0 vue/{ => full}/src/store/module/message.js | 0 vue/{ => full}/src/store/module/needSearch.js | 0 vue/{ => full}/src/store/module/resource.js | 0 vue/{ => full}/src/store/module/socket.js | 0 vue/{ => full}/src/store/module/user.js | 0 vue/{ => full}/src/store/util.js | 0 vue/{ => full}/src/util/auth.js | 0 vue/{ => full}/src/util/browser.js | 0 vue/{ => full}/src/util/element-ui/elForm.js | 0 vue/{ => full}/src/util/element-ui/elMenu.js | 0 vue/{ => full}/src/util/element-ui/elTree.js | 0 vue/{ => full}/src/util/excel/common.js | 0 vue/{ => full}/src/util/excel/exceljs.js | 0 vue/{ => full}/src/util/excel/index.js | 0 vue/{ => full}/src/util/file.js | 0 vue/{ => full}/src/util/index.js | 0 vue/{ => full}/src/util/math.js | 0 vue/{ => full}/src/util/message.js | 0 vue/{ => full}/src/util/observable.js | 0 vue/{ => full}/src/util/route.js | 0 vue/{ => full}/src/util/secret.js | 0 vue/{ => full}/src/util/storage.js | 0 vue/{ => full}/src/util/tree.js | 0 vue/{ => full}/src/util/validate.js | 0 vue/{ => full}/src/util/vue.js | 0 vue/{ => full}/src/util/worker.js | 0 vue/{ => full}/src/view/_app/403.vue | 0 vue/{ => full}/src/view/_app/404.vue | 0 vue/{ => full}/src/view/_app/500.vue | 0 .../src/view/_app/login/LoginForm.vue | 0 .../src/view/_app/login/RegisterForm.vue | 0 .../src/view/_app/login/SetAnimation.vue | 0 vue/{ => full}/src/view/_app/login/index.vue | 0 vue/{ => full}/src/view/_app/login/style.scss | 0 vue/{ => full}/src/view/_app/redirect.vue | 0 .../src/view/_common/DetailPage/index.vue | 0 .../src/view/_common/DetailPage/style.scss | 0 .../src/view/_common/ExceptionPage/index.vue | 0 .../src/view/_common/ExceptionPage/style.scss | 0 .../_common/ListPage/autoAdaptHeightMixin.js | 0 .../src/view/_common/ListPage/index.vue | 0 .../src/view/_common/SkeletonPage/index.vue | 0 .../src/view/_common/SkeletonPage/style.scss | 0 .../index/component/DailyFinishOrderStat.vue | 0 .../admin/index/component/DailyProfitStat.vue | 0 .../component/PanelGroup/PanelGroupItem.vue | 0 .../index/component/PanelGroup/index.vue | 0 .../index/component/TotalProfitGoods.vue | 0 .../src/view/admin/index/indexPage.vue | 0 .../view/admin/message/manage/EditDialog.vue | 0 .../view/admin/message/manage/indexPage.vue | 0 .../view/admin/message/user/AutoHidden.vue | 0 .../view/admin/message/user/MessageStream.vue | 0 .../src/view/admin/message/user/indexPage.vue | 0 .../inbound/component/OrderSelector.vue | 0 .../admin/purchase/inbound/detailPage.vue | 0 .../view/admin/purchase/inbound/indexPage.vue | 0 .../order/component/CategorySelector.vue | 0 .../order/component/SupplierSelector.vue | 0 .../view/admin/purchase/order/detailPage.vue | 0 .../view/admin/purchase/order/indexPage.vue | 0 .../sell/order/component/CustomerSelector.vue | 0 .../sell/order/component/StockSelector.vue | 0 .../src/view/admin/sell/order/detailPage.vue | 0 .../src/view/admin/sell/order/indexPage.vue | 0 .../sell/outbound/component/OrderSelector.vue | 0 .../sell/outbound/component/StockSelector.vue | 0 .../view/admin/sell/outbound/detailPage.vue | 0 .../view/admin/sell/outbound/indexPage.vue | 0 .../view/admin/stock/current/DetailDialog.vue | 0 .../view/admin/stock/current/indexPage.vue | 0 .../admin/system/category/component/Form.vue | 0 .../admin/system/category/component/List.vue | 0 .../view/admin/system/category/indexPage.vue | 0 .../view/admin/system/customer/EditDialog.vue | 0 .../view/admin/system/customer/indexPage.vue | 0 .../department/component/EditDialog.vue | 0 .../department/component/OrgTreeView.vue | 0 .../department/component/ZoomControl.vue | 0 .../admin/system/department/indexPage.vue | 0 .../src/view/admin/system/menu/common.js | 0 .../src/view/admin/system/menu/indexPage.vue | 0 .../src/view/admin/system/role/EditDialog.vue | 0 .../src/view/admin/system/role/indexPage.vue | 0 .../view/admin/system/supplier/EditDialog.vue | 0 .../view/admin/system/supplier/indexPage.vue | 0 .../user/component/DepartmentSelector.vue | 0 .../system/user/component/EditDialog.vue | 0 .../system/user/component/RoleSelector.vue | 0 .../src/view/admin/system/user/indexPage.vue | 0 .../admin/userCenter/component/Account.vue | 0 .../admin/userCenter/component/Avatar.vue | 0 .../userCenter/component/LoginHistory.vue | 0 .../admin/userCenter/component/UserAction.vue | 0 .../admin/userCenter/component/UserCard.vue | 0 .../src/view/admin/userCenter/indexPage.vue | 0 vue/{ => full}/src/view/dev/uploadFileDev.vue | 0 .../example/component/regionSelectorPage.vue | 0 .../view/example/component/skeletonPage.vue | 0 .../view/example/component/treeSelectPage.vue | 0 .../src/view/example/component/uploadPage.vue | 0 .../src/view/example/cool/fluidPage.vue | 0 .../src/view/example/cool/l2dPage.vue | 0 .../view/example/directive/dragDialogPage.vue | 0 .../src/view/example/directive/ripplePage.vue | 0 .../example/globalMethod/bottomTipPage.vue | 0 .../view/example/globalMethod/guidePage.vue | 0 .../example/globalMethod/imageViewerPage.vue | 0 .../view/example/globalMethod/messagePage.vue | 0 .../example/globalMethod/signaturePage.vue | 0 .../view/example/globalMethod/verifyPage.vue | 0 .../src/view/example/icon/element-icon.js | 0 .../src/view/example/icon/indexPage.vue | 0 .../view/example/test/cache/detailPage.vue | 0 .../test/develop/component/ApiSpeedTest.vue | 0 .../develop/component/ExportExcelTest.vue | 0 .../develop/component/ImageCompressTest.vue | 0 .../test/develop/component/WebsocketTest.vue | 0 .../view/example/test/develop/indexPage.vue | 0 vue/{ => full}/vue.config.js | 0 vue/template/.gitignore | 22 + vue/template/babel.config.js | 5 + .../component/Menu/MenuItem.vue | 74 +++ .../component/Menu/Submenu.vue | 250 ++++++++ .../component/Menu/mixin.js | 53 ++ .../component/Message/index.js | 101 +++ .../component/Message/main.vue | 110 ++++ vue/template/element-ui-personal/index.js | 13 + .../element-ui-personal/style/index.scss | 1 + .../element-ui-personal/style/message.scss | 58 ++ vue/template/package.json | 49 ++ vue/template/public/favicon.ico | Bin 0 -> 4286 bytes vue/template/public/index.html | 27 + vue/template/public/static/img/dot1.png | Bin 0 -> 7207 bytes vue/template/public/static/img/dot2.png | Bin 0 -> 690 bytes vue/template/public/static/img/dot3.png | Bin 0 -> 1893 bytes vue/template/public/static/img/dot4.png | Bin 0 -> 1847 bytes .../public/static/img/fileType/doc.png | Bin 0 -> 41672 bytes .../public/static/img/fileType/pdf.png | Bin 0 -> 29448 bytes .../public/static/img/fileType/ppt.png | Bin 0 -> 42472 bytes .../public/static/img/fileType/rar.png | Bin 0 -> 28509 bytes .../public/static/img/fileType/txt.png | Bin 0 -> 21717 bytes .../public/static/img/fileType/xls.png | Bin 0 -> 44814 bytes .../public/static/img/fileType/zip.png | Bin 0 -> 23958 bytes vue/template/public/static/img/logo.svg | 1 + .../public/static/json/region-pca.json | 1 + .../static/lightgallery/lg-pager.min.js | 7 + .../static/lightgallery/lg-thumbnail.min.js | 7 + .../public/static/lightgallery/lg-zoom.min.js | 7 + vue/template/src/App.vue | 11 + vue/template/src/asset/icon/index.js | 9 + vue/template/src/asset/icon/svg/bug.svg | 1 + vue/template/src/asset/icon/svg/check.svg | 1 + vue/template/src/asset/icon/svg/develop.svg | 1 + .../src/asset/icon/svg/documentation.svg | 1 + vue/template/src/asset/icon/svg/eye-open.svg | 1 + vue/template/src/asset/icon/svg/eye.svg | 1 + vue/template/src/asset/icon/svg/home.svg | 1 + vue/template/src/asset/icon/svg/icon.svg | 1 + vue/template/src/asset/icon/svg/message.svg | 1 + vue/template/src/asset/icon/svg/money.svg | 1 + vue/template/src/asset/icon/svg/password.svg | 1 + vue/template/src/asset/icon/svg/qq.svg | 1 + vue/template/src/asset/icon/svg/sell.svg | 1 + vue/template/src/asset/icon/svg/shopping.svg | 1 + vue/template/src/asset/icon/svg/show.svg | 1 + vue/template/src/asset/icon/svg/stock.svg | 1 + vue/template/src/asset/icon/svg/system.svg | 1 + vue/template/src/asset/icon/svg/user.svg | 1 + vue/template/src/asset/icon/svgo.yml | 22 + vue/template/src/asset/style/display.scss | 5 + vue/template/src/asset/style/element-ui.scss | 250 ++++++++ vue/template/src/asset/style/index.scss | 230 +++++++ vue/template/src/asset/style/nprogress.scss | 11 + vue/template/src/asset/style/transition.scss | 253 ++++++++ vue/template/src/asset/style/variables.scss | 119 ++++ .../src/component/Charts/PieChart.vue | 48 ++ .../src/component/CollapseCard/index.vue | 52 ++ .../src/component/Empty/DefaultEmptyImage.vue | 51 ++ vue/template/src/component/Empty/index.vue | 40 ++ vue/template/src/component/Empty/style.scss | 47 ++ .../src/component/ExtraArea/index.vue | 39 ++ vue/template/src/component/Icon/index.vue | 39 ++ .../src/component/LinerProgress/index.vue | 23 + .../src/component/LinerProgress/style.scss | 38 ++ vue/template/src/component/OrgTree/index.vue | 139 +++++ vue/template/src/component/OrgTree/node.vue | 121 ++++ vue/template/src/component/OrgTree/style.scss | 261 ++++++++ .../component/RegionSelector/Tab/index.vue | 304 +++++++++ .../component/RegionSelector/Tab/style.scss | 139 +++++ .../RegionSelector/Tree/TreeDialog.vue | 82 +++ .../component/RegionSelector/Tree/index.vue | 79 +++ .../src/component/RegionSelector/index.vue | 33 + .../src/component/RegionSelector/mixin.js | 11 + .../src/component/RegionSelector/store.js | 11 + .../src/component/Skeleton/constant.js | 6 + vue/template/src/component/Skeleton/index.vue | 50 ++ .../src/component/Skeleton/style.scss | 140 +++++ .../src/component/TreeSelect/index.vue | 217 +++++++ .../src/component/UploadFile/index.vue | 242 ++++++++ .../src/component/UploadFile/style.scss | 34 ++ .../component/abstract/Dialog/LoadingMask.vue | 24 + .../src/component/abstract/Dialog/index.vue | 48 ++ .../src/component/abstract/Dialog/style.scss | 18 + .../src/component/abstract/Form/index.vue | 24 + .../src/component/abstract/Form/item.vue | 25 + .../component/abstract/Pagination/index.vue | 28 + .../src/component/abstract/Table/index.vue | 32 + .../src/component/biz/CategoryTree/index.vue | 42 ++ .../SimpleMultipleUserSelector.vue | 34 ++ .../src/component/biz/UserSelector/index.js | 5 + .../src/component/biz/doc/DocHistory.vue | 89 +++ .../src/component/biz/doc/DocSteps.vue | 22 + .../src/component/checkbox/ColorCheckbox.vue | 30 + vue/template/src/component/checkbox/Group.vue | 21 + .../src/component/checkbox/ImgCheckbox.vue | 40 ++ vue/template/src/component/checkbox/common.js | 22 + .../src/component/editor/JsonEditor.vue | 46 ++ .../src/component/editor/RichTextEditor.vue | 121 ++++ .../src/component/form/Anchor/index.vue | 157 +++++ .../src/component/form/Search/index.vue | 156 +++++ .../src/component/form/ValidateInfo/index.vue | 86 +++ .../component/form/ValidateInfo/style.scss | 50 ++ .../src/component/menu/ContextMenu/index.vue | 114 ++++ .../src/component/menu/NavMenu/index.vue | 175 ++++++ .../src/component/menu/NavMenu/item.vue | 154 +++++ .../src/component/menu/NavMenu/style.scss | 109 ++++ .../component/menu/NavMenu/theme-dark.scss | 60 ++ .../component/menu/NavMenu/theme-light.scss | 39 ++ vue/template/src/config/index.js | 60 ++ vue/template/src/directive/dragDialog.js | 82 +++ vue/template/src/directive/index.js | 7 + vue/template/src/directive/ripple/index.js | 184 ++++++ vue/template/src/directive/ripple/style.scss | 37 ++ vue/template/src/filter/index.js | 68 +++ .../src/globalMethod/BottomTip/index.js | 24 + .../src/globalMethod/BottomTip/main.vue | 49 ++ vue/template/src/globalMethod/Guide/index.js | 39 ++ vue/template/src/globalMethod/Guide/main.vue | 237 ++++++++ .../src/globalMethod/Guide/style.scss | 70 +++ vue/template/src/globalMethod/Guide/utils.js | 106 ++++ .../src/globalMethod/ImageViewer/index.js | 34 ++ .../src/globalMethod/SignautreBoard/index.js | 32 + .../src/globalMethod/SignautreBoard/main.vue | 161 +++++ .../globalMethod/Verify/image/btn_move.png | Bin 0 -> 2898 bytes .../globalMethod/Verify/image/btn_stop.png | Bin 0 -> 2626 bytes .../globalMethod/Verify/image/icon_close.png | Bin 0 -> 379 bytes .../globalMethod/Verify/image/icon_info.png | Bin 0 -> 351 bytes .../Verify/image/icon_refresh_bottom.png | Bin 0 -> 284 bytes .../Verify/image/icon_refresh_top.png | Bin 0 -> 305 bytes .../src/globalMethod/Verify/image/loading.png | Bin 0 -> 490 bytes .../src/globalMethod/Verify/image/track.png | Bin 0 -> 961 bytes vue/template/src/globalMethod/Verify/index.js | 44 ++ vue/template/src/globalMethod/Verify/main.vue | 330 ++++++++++ .../src/globalMethod/Verify/style.scss | 216 +++++++ vue/template/src/globalMethod/index.js | 13 + .../component/Aside/component/MenuSearch.vue | 56 ++ .../component/Aside/component/OnePartRoot.vue | 251 ++++++++ .../component/Aside/component/TwoPartRoot.vue | 134 ++++ .../component/Aside/component/TwoPartSub.vue | 110 ++++ .../src/layout/component/Aside/index.vue | 34 ++ .../src/layout/component/Aside/style.scss | 100 +++ .../layout/component/Aside/theme-dark.scss | 27 + .../layout/component/Aside/theme-light.scss | 14 + .../src/layout/component/Hamburger.vue | 30 + vue/template/src/layout/component/Logo.vue | 72 +++ .../component/Navbar/component/Bell.vue | 41 ++ .../component/Navbar/component/HeadMenu.vue | 210 +++++++ .../src/layout/component/Navbar/index.vue | 153 +++++ .../src/layout/component/Navbar/style.scss | 50 ++ .../layout/component/Navbar/theme-dark.scss | 27 + .../layout/component/Navbar/theme-light.scss | 11 + .../component/Page/component/BackToTop.vue | 15 + .../Page/component/KeepRouterViewAlive.vue | 92 +++ .../component/Page/component/PageFooter.vue | 27 + .../component/Page/component/PageHeader.vue | 65 ++ .../component/Page/component/PageView.vue | 27 + .../Page/component/TagsView/ScrollPanel.vue | 82 +++ .../Page/component/TagsView/index.vue | 207 +++++++ .../Page/component/TagsView/style.scss | 68 +++ .../src/layout/component/Page/index.vue | 97 +++ .../src/layout/component/SettingDrawer.vue | 340 +++++++++++ vue/template/src/layout/index.vue | 93 +++ .../layout/mixin/decideRouterTransition.js | 30 + vue/template/src/layout/mixin/hamburger.js | 33 + vue/template/src/layout/mixin/menu.js | 56 ++ vue/template/src/layout/mixin/menuSearch.js | 24 + vue/template/src/layout/mixin/offline.js | 17 + .../src/layout/mixin/tagsViewPersistent.js | 47 ++ .../src/layout/mixin/tagsViewShortcut.js | 67 ++ vue/template/src/layout/store/app.js | 85 +++ vue/template/src/layout/store/aside.js | 71 +++ vue/template/src/layout/store/navbar.js | 13 + vue/template/src/layout/store/page.js | 48 ++ vue/template/src/layout/store/tagsView.js | 145 +++++ vue/template/src/layout/util.js | 39 ++ vue/template/src/layout/布局设计.md | 39 ++ vue/template/src/main.js | 28 + vue/template/src/mixin/chart/index.js | 4 + vue/template/src/mixin/chart/logic.js | 42 ++ vue/template/src/mixin/chart/resize.js | 29 + vue/template/src/mixin/dialogMixin.js | 7 + vue/template/src/mixin/docDetailMixin.js | 286 +++++++++ vue/template/src/mixin/docTableMixin.js | 168 +++++ vue/template/src/mixin/tablePageMixin.js | 94 +++ vue/template/src/mixin/treePageMixin.js | 34 ++ .../canvasAnimation/firework/Particle.js | 44 ++ .../plugin/canvasAnimation/firework/Rocket.js | 20 + .../plugin/canvasAnimation/firework/Time.js | 20 + .../plugin/canvasAnimation/firework/Trail.js | 42 ++ .../plugin/canvasAnimation/firework/Vector.js | 22 + .../plugin/canvasAnimation/firework/index.js | 141 +++++ .../plugin/canvasAnimation/godrays/index.js | 95 +++ .../canvasAnimation/godrays/original.js | 261 ++++++++ .../moveFollowMouse/Particle.js | 30 + .../canvasAnimation/moveFollowMouse/index.js | 71 +++ .../canvasAnimation/particleBall/Particle.js | 90 +++ .../canvasAnimation/particleBall/Vector.js | 74 +++ .../canvasAnimation/particleBall/index.js | 91 +++ .../canvasAnimation/particleBall/util.js | 13 + .../particleNetwork/Particle.js | 50 ++ .../canvasAnimation/particleNetwork/index.js | 207 +++++++ .../canvasAnimation/particleWave/index.js | 160 +++++ .../canvasAnimation/reflectRain/RainDrop.js | 29 + .../canvasAnimation/reflectRain/Vector.js | 11 + .../canvasAnimation/reflectRain/index.js | 85 +++ .../plugin/canvasAnimation/sparkRain/Spark.js | 18 + .../plugin/canvasAnimation/sparkRain/index.js | 89 +++ .../plugin/canvasAnimation/sparkRain/util.js | 3 + .../canvasAnimation/sunlight/Particle.js | 81 +++ .../plugin/canvasAnimation/sunlight/index.js | 97 +++ .../src/plugin/imageCompress/cjpeg.js | 22 + .../src/plugin/imageCompress/pngquant.js | 22 + vue/template/src/plugin/imageCompress/util.js | 42 ++ vue/template/src/plugin/live2d/index.js | 291 +++++++++ .../src/plugin/webgl/fluid/Material.js | 44 ++ .../src/plugin/webgl/fluid/Pointer.js | 16 + .../src/plugin/webgl/fluid/Program.js | 15 + vue/template/src/plugin/webgl/fluid/config.js | 27 + .../src/plugin/webgl/fluid/factory.js | 50 ++ vue/template/src/plugin/webgl/fluid/index.js | 564 +++++++++++++++++ vue/template/src/plugin/webgl/fluid/obj.js | 547 +++++++++++++++++ vue/template/src/plugin/webgl/fluid/shader.js | 575 ++++++++++++++++++ vue/template/src/plugin/webgl/fluid/util.js | 387 ++++++++++++ vue/template/src/router/define.js | 43 ++ .../src/router/guardian/accessControl.js | 43 ++ .../src/router/guardian/avoidReuse.js | 22 + vue/template/src/router/guardian/iframe.js | 22 + vue/template/src/router/guardian/index.js | 13 + vue/template/src/router/guardian/nprogress.js | 17 + vue/template/src/router/guardian/setTitle.js | 20 + vue/template/src/router/index.js | 52 ++ .../src/router/module/admin/child/default.js | 18 + .../src/router/module/admin/child/message.js | 22 + .../src/router/module/admin/child/purchase.js | 68 +++ .../src/router/module/admin/child/sell.js | 68 +++ .../src/router/module/admin/child/stock.js | 16 + .../src/router/module/admin/child/system.js | 52 ++ vue/template/src/router/module/admin/index.js | 12 + .../router/module/dev/child/uploadFileDev.js | 7 + vue/template/src/router/module/dev/index.js | 11 + vue/template/src/router/module/doc/index.js | 4 + .../router/module/example/child/component.js | 26 + .../src/router/module/example/child/cool.js | 16 + .../router/module/example/child/directive.js | 16 + .../module/example/child/globalMethod.js | 36 ++ .../src/router/module/example/child/icon.js | 5 + .../src/router/module/example/child/iframe.js | 14 + .../src/router/module/example/child/test.js | 35 ++ .../src/router/module/example/index.js | 12 + vue/template/src/router/module/index.js | 6 + vue/template/src/router/util.js | 159 +++++ vue/template/src/store/index.js | 18 + vue/template/src/store/module/app.js | 14 + vue/template/src/store/module/dataCache.js | 24 + vue/template/src/store/module/message.js | 23 + vue/template/src/store/module/needSearch.js | 28 + vue/template/src/store/module/resource.js | 203 +++++++ vue/template/src/store/module/socket.js | 94 +++ vue/template/src/store/module/user.js | 80 +++ vue/template/src/store/util.js | 18 + vue/template/src/util/auth.js | 55 ++ vue/template/src/util/browser.js | 223 +++++++ vue/template/src/util/element-ui/elForm.js | 0 vue/template/src/util/element-ui/elMenu.js | 35 ++ vue/template/src/util/element-ui/elTree.js | 22 + vue/template/src/util/excel/common.js | 240 ++++++++ vue/template/src/util/excel/exceljs.js | 109 ++++ vue/template/src/util/excel/index.js | 1 + vue/template/src/util/file.js | 68 +++ vue/template/src/util/index.js | 269 ++++++++ vue/template/src/util/math.js | 56 ++ vue/template/src/util/message.js | 52 ++ vue/template/src/util/observable.js | 36 ++ vue/template/src/util/route.js | 33 + vue/template/src/util/secret.js | 34 ++ vue/template/src/util/storage.js | 142 +++++ vue/template/src/util/tree.js | 258 ++++++++ vue/template/src/util/validate.js | 50 ++ vue/template/src/util/vue.js | 23 + vue/template/src/util/worker.js | 12 + vue/template/src/view/_app/403.vue | 13 + vue/template/src/view/_app/404.vue | 13 + vue/template/src/view/_app/500.vue | 13 + .../src/view/_app/login/LoginForm.vue | 138 +++++ .../src/view/_app/login/RegisterForm.vue | 154 +++++ .../src/view/_app/login/SetAnimation.vue | 49 ++ vue/template/src/view/_app/login/index.vue | 71 +++ vue/template/src/view/_app/login/style.scss | 119 ++++ vue/template/src/view/_app/redirect.vue | 12 + .../src/view/_common/DetailPage/index.vue | 94 +++ .../src/view/_common/DetailPage/style.scss | 125 ++++ .../src/view/_common/ExceptionPage/index.vue | 50 ++ .../src/view/_common/ExceptionPage/style.scss | 46 ++ .../_common/ListPage/autoAdaptHeightMixin.js | 55 ++ .../src/view/_common/ListPage/index.vue | 73 +++ .../src/view/_common/SkeletonPage/index.vue | 28 + .../src/view/_common/SkeletonPage/style.scss | 46 ++ .../index/component/DailyFinishOrderStat.vue | 89 +++ .../admin/index/component/DailyProfitStat.vue | 97 +++ .../component/PanelGroup/PanelGroupItem.vue | 99 +++ .../index/component/PanelGroup/index.vue | 89 +++ .../index/component/TotalProfitGoods.vue | 73 +++ .../src/view/admin/index/indexPage.vue | 30 + .../view/admin/message/manage/EditDialog.vue | 234 +++++++ .../view/admin/message/manage/indexPage.vue | 162 +++++ .../view/admin/message/user/AutoHidden.vue | 69 +++ .../view/admin/message/user/MessageStream.vue | 186 ++++++ .../src/view/admin/message/user/indexPage.vue | 69 +++ .../inbound/component/OrderSelector.vue | 143 +++++ .../admin/purchase/inbound/detailPage.vue | 183 ++++++ .../view/admin/purchase/inbound/indexPage.vue | 124 ++++ .../order/component/CategorySelector.vue | 90 +++ .../order/component/SupplierSelector.vue | 117 ++++ .../view/admin/purchase/order/detailPage.vue | 239 ++++++++ .../view/admin/purchase/order/indexPage.vue | 161 +++++ .../sell/order/component/CustomerSelector.vue | 99 +++ .../sell/order/component/StockSelector.vue | 87 +++ .../src/view/admin/sell/order/detailPage.vue | 215 +++++++ .../src/view/admin/sell/order/indexPage.vue | 161 +++++ .../sell/outbound/component/OrderSelector.vue | 142 +++++ .../sell/outbound/component/StockSelector.vue | 89 +++ .../view/admin/sell/outbound/detailPage.vue | 274 +++++++++ .../view/admin/sell/outbound/indexPage.vue | 124 ++++ .../view/admin/stock/current/DetailDialog.vue | 125 ++++ .../view/admin/stock/current/indexPage.vue | 192 ++++++ .../admin/system/category/component/Form.vue | 155 +++++ .../admin/system/category/component/List.vue | 138 +++++ .../view/admin/system/category/indexPage.vue | 23 + .../view/admin/system/customer/EditDialog.vue | 167 +++++ .../view/admin/system/customer/indexPage.vue | 204 +++++++ .../department/component/EditDialog.vue | 137 +++++ .../department/component/OrgTreeView.vue | 127 ++++ .../department/component/ZoomControl.vue | 47 ++ .../admin/system/department/indexPage.vue | 204 +++++++ .../src/view/admin/system/menu/common.js | 14 + .../src/view/admin/system/menu/indexPage.vue | 355 +++++++++++ .../src/view/admin/system/role/EditDialog.vue | 202 ++++++ .../src/view/admin/system/role/indexPage.vue | 179 ++++++ .../view/admin/system/supplier/EditDialog.vue | 167 +++++ .../view/admin/system/supplier/indexPage.vue | 203 +++++++ .../user/component/DepartmentSelector.vue | 39 ++ .../system/user/component/EditDialog.vue | 172 ++++++ .../system/user/component/RoleSelector.vue | 43 ++ .../src/view/admin/system/user/indexPage.vue | 230 +++++++ .../admin/userCenter/component/Account.vue | 93 +++ .../admin/userCenter/component/Avatar.vue | 136 +++++ .../userCenter/component/LoginHistory.vue | 62 ++ .../admin/userCenter/component/UserAction.vue | 63 ++ .../admin/userCenter/component/UserCard.vue | 98 +++ .../src/view/admin/userCenter/indexPage.vue | 48 ++ vue/template/src/view/dev/uploadFileDev.vue | 9 + .../example/component/regionSelectorPage.vue | 41 ++ .../view/example/component/skeletonPage.vue | 64 ++ .../view/example/component/treeSelectPage.vue | 40 ++ .../src/view/example/component/uploadPage.vue | 59 ++ .../src/view/example/cool/fluidPage.vue | 57 ++ .../src/view/example/cool/l2dPage.vue | 36 ++ .../view/example/directive/dragDialogPage.vue | 25 + .../src/view/example/directive/ripplePage.vue | 57 ++ .../example/globalMethod/bottomTipPage.vue | 18 + .../view/example/globalMethod/guidePage.vue | 64 ++ .../example/globalMethod/imageViewerPage.vue | 33 + .../view/example/globalMethod/messagePage.vue | 26 + .../example/globalMethod/signaturePage.vue | 31 + .../view/example/globalMethod/verifyPage.vue | 25 + .../src/view/example/icon/element-icon.js | 15 + .../src/view/example/icon/indexPage.vue | 53 ++ .../view/example/test/cache/detailPage.vue | 17 + .../test/develop/component/ApiSpeedTest.vue | 55 ++ .../develop/component/ExportExcelTest.vue | 59 ++ .../develop/component/ImageCompressTest.vue | 219 +++++++ .../test/develop/component/WebsocketTest.vue | 63 ++ .../view/example/test/develop/indexPage.vue | 20 + vue/template/vue.config.js | 95 +++ 784 files changed, 28763 insertions(+) rename vue/{ => full}/.gitignore (100%) rename vue/{ => full}/babel.config.js (100%) rename vue/{ => full}/element-ui-personal/component/Menu/MenuItem.vue (100%) rename vue/{ => full}/element-ui-personal/component/Menu/Submenu.vue (100%) rename vue/{ => full}/element-ui-personal/component/Menu/mixin.js (100%) rename vue/{ => full}/element-ui-personal/component/Message/index.js (100%) rename vue/{ => full}/element-ui-personal/component/Message/main.vue (100%) rename vue/{ => full}/element-ui-personal/index.js (100%) rename vue/{ => full}/element-ui-personal/style/index.scss (100%) rename vue/{ => full}/element-ui-personal/style/message.scss (100%) rename vue/{ => full}/mock/controller/account/index.js (100%) rename vue/{ => full}/mock/controller/index.js (100%) rename vue/{ => full}/mock/controller/system/resource.js (100%) rename vue/{ => full}/mock/index.js (100%) rename vue/{ => full}/mock/util.js (100%) rename vue/{ => full}/package-lock.json (100%) rename vue/{ => full}/package.json (100%) rename vue/{ => full}/public/favicon.ico (100%) rename vue/{ => full}/public/index.html (94%) rename vue/{ => full}/public/static/echarts/macarons.js (100%) rename vue/{ => full}/public/static/img/dot1.png (100%) rename vue/{ => full}/public/static/img/dot2.png (100%) rename vue/{ => full}/public/static/img/dot3.png (100%) rename vue/{ => full}/public/static/img/dot4.png (100%) rename vue/{ => full}/public/static/img/fileType/doc.png (100%) rename vue/{ => full}/public/static/img/fileType/pdf.png (100%) rename vue/{ => full}/public/static/img/fileType/ppt.png (100%) rename vue/{ => full}/public/static/img/fileType/rar.png (100%) rename vue/{ => full}/public/static/img/fileType/txt.png (100%) rename vue/{ => full}/public/static/img/fileType/xls.png (100%) rename vue/{ => full}/public/static/img/fileType/zip.png (100%) rename vue/{ => full}/public/static/img/logo.svg (100%) rename vue/{ => full}/public/static/js/cjpeg.min.js (100%) rename vue/{ => full}/public/static/js/exceljs.min.js (100%) rename vue/{ => full}/public/static/js/pngquant.min.js (100%) rename vue/{ => full}/public/static/json/region-pca.json (100%) rename vue/{ => full}/public/static/lightgallery/lg-pager.min.js (100%) rename vue/{ => full}/public/static/lightgallery/lg-thumbnail.min.js (100%) rename vue/{ => full}/public/static/lightgallery/lg-zoom.min.js (100%) rename vue/{ => full}/public/static/live2d/live2d.min.js (100%) rename vue/{ => full}/public/static/live2d/waifu-tips.json (100%) rename vue/{ => full}/public/static/live2d/waifu.css (100%) rename vue/{ => full}/public/static/tinymce/langs/zh_CN.js (100%) rename vue/{ => full}/src/App.vue (100%) rename vue/{ => full}/src/api/account/index.js (100%) rename vue/{ => full}/src/api/doc/history.js (100%) rename vue/{ => full}/src/api/doc/purchase/inbound.js (100%) rename vue/{ => full}/src/api/doc/purchase/order.js (100%) rename vue/{ => full}/src/api/doc/sell/order.js (100%) rename vue/{ => full}/src/api/doc/sell/outbound.js (100%) rename vue/{ => full}/src/api/file/index.js (100%) rename vue/{ => full}/src/api/message/manage.js (100%) rename vue/{ => full}/src/api/message/user.js (100%) rename vue/{ => full}/src/api/record/index.js (100%) rename vue/{ => full}/src/api/request.js (100%) rename vue/{ => full}/src/api/statistic/index.js (100%) rename vue/{ => full}/src/api/stock/current.js (100%) rename vue/{ => full}/src/api/system/category.js (100%) rename vue/{ => full}/src/api/system/customer.js (100%) rename vue/{ => full}/src/api/system/department.js (100%) rename vue/{ => full}/src/api/system/resource.js (100%) rename vue/{ => full}/src/api/system/role.js (100%) rename vue/{ => full}/src/api/system/supplier.js (100%) rename vue/{ => full}/src/api/system/user.js (100%) rename vue/{ => full}/src/asset/icon/index.js (100%) rename vue/{ => full}/src/asset/icon/svg/bug.svg (100%) rename vue/{ => full}/src/asset/icon/svg/check.svg (100%) rename vue/{ => full}/src/asset/icon/svg/develop.svg (100%) rename vue/{ => full}/src/asset/icon/svg/documentation.svg (100%) rename vue/{ => full}/src/asset/icon/svg/eye-open.svg (100%) rename vue/{ => full}/src/asset/icon/svg/eye.svg (100%) rename vue/{ => full}/src/asset/icon/svg/home.svg (100%) rename vue/{ => full}/src/asset/icon/svg/icon.svg (100%) rename vue/{ => full}/src/asset/icon/svg/message.svg (100%) rename vue/{ => full}/src/asset/icon/svg/money.svg (100%) rename vue/{ => full}/src/asset/icon/svg/password.svg (100%) rename vue/{ => full}/src/asset/icon/svg/qq.svg (100%) rename vue/{ => full}/src/asset/icon/svg/sell.svg (100%) rename vue/{ => full}/src/asset/icon/svg/shopping.svg (100%) rename vue/{ => full}/src/asset/icon/svg/show.svg (100%) rename vue/{ => full}/src/asset/icon/svg/stock.svg (100%) rename vue/{ => full}/src/asset/icon/svg/system.svg (100%) rename vue/{ => full}/src/asset/icon/svg/user.svg (100%) rename vue/{ => full}/src/asset/icon/svgo.yml (100%) rename vue/{ => full}/src/asset/style/display.scss (100%) rename vue/{ => full}/src/asset/style/element-ui.scss (100%) rename vue/{ => full}/src/asset/style/index.scss (100%) rename vue/{ => full}/src/asset/style/nprogress.scss (100%) rename vue/{ => full}/src/asset/style/transition.scss (100%) rename vue/{ => full}/src/asset/style/variables.scss (100%) rename vue/{ => full}/src/component/Charts/PieChart.vue (100%) rename vue/{ => full}/src/component/CollapseCard/index.vue (100%) rename vue/{ => full}/src/component/Empty/DefaultEmptyImage.vue (100%) rename vue/{ => full}/src/component/Empty/index.vue (100%) rename vue/{ => full}/src/component/Empty/style.scss (100%) rename vue/{ => full}/src/component/ExtraArea/index.vue (100%) rename vue/{ => full}/src/component/Icon/index.vue (100%) rename vue/{ => full}/src/component/LinerProgress/index.vue (100%) rename vue/{ => full}/src/component/LinerProgress/style.scss (100%) rename vue/{ => full}/src/component/OrgTree/index.vue (100%) rename vue/{ => full}/src/component/OrgTree/node.vue (100%) rename vue/{ => full}/src/component/OrgTree/style.scss (100%) rename vue/{ => full}/src/component/RegionSelector/Tab/index.vue (100%) rename vue/{ => full}/src/component/RegionSelector/Tab/style.scss (100%) rename vue/{ => full}/src/component/RegionSelector/Tree/TreeDialog.vue (100%) rename vue/{ => full}/src/component/RegionSelector/Tree/index.vue (100%) rename vue/{ => full}/src/component/RegionSelector/index.vue (100%) rename vue/{ => full}/src/component/RegionSelector/mixin.js (100%) rename vue/{ => full}/src/component/RegionSelector/store.js (100%) rename vue/{ => full}/src/component/Skeleton/constant.js (100%) rename vue/{ => full}/src/component/Skeleton/index.vue (100%) rename vue/{ => full}/src/component/Skeleton/style.scss (100%) rename vue/{ => full}/src/component/TreeSelect/index.vue (100%) rename vue/{ => full}/src/component/UploadFile/index.vue (100%) rename vue/{ => full}/src/component/UploadFile/style.scss (100%) rename vue/{ => full}/src/component/abstract/Dialog/LoadingMask.vue (100%) rename vue/{ => full}/src/component/abstract/Dialog/index.vue (100%) rename vue/{ => full}/src/component/abstract/Dialog/style.scss (100%) rename vue/{ => full}/src/component/abstract/Form/index.vue (100%) rename vue/{ => full}/src/component/abstract/Form/item.vue (100%) rename vue/{ => full}/src/component/abstract/Pagination/index.vue (100%) rename vue/{ => full}/src/component/abstract/Table/index.vue (100%) rename vue/{ => full}/src/component/biz/CategoryTree/index.vue (100%) rename vue/{ => full}/src/component/biz/UserSelector/SimpleMultipleUserSelector.vue (100%) rename vue/{ => full}/src/component/biz/UserSelector/index.js (100%) rename vue/{ => full}/src/component/biz/doc/DocHistory.vue (100%) rename vue/{ => full}/src/component/biz/doc/DocSteps.vue (100%) rename vue/{ => full}/src/component/checkbox/ColorCheckbox.vue (100%) rename vue/{ => full}/src/component/checkbox/Group.vue (100%) rename vue/{ => full}/src/component/checkbox/ImgCheckbox.vue (100%) rename vue/{ => full}/src/component/checkbox/common.js (100%) rename vue/{ => full}/src/component/editor/JsonEditor.vue (100%) rename vue/{ => full}/src/component/editor/RichTextEditor.vue (100%) rename vue/{ => full}/src/component/form/Anchor/index.vue (100%) rename vue/{ => full}/src/component/form/Search/index.vue (100%) rename vue/{ => full}/src/component/form/ValidateInfo/index.vue (100%) rename vue/{ => full}/src/component/form/ValidateInfo/style.scss (100%) rename vue/{ => full}/src/component/menu/ContextMenu/index.vue (100%) rename vue/{ => full}/src/component/menu/NavMenu/index.vue (100%) rename vue/{ => full}/src/component/menu/NavMenu/item.vue (100%) rename vue/{ => full}/src/component/menu/NavMenu/style.scss (100%) rename vue/{ => full}/src/component/menu/NavMenu/theme-dark.scss (100%) rename vue/{ => full}/src/component/menu/NavMenu/theme-light.scss (100%) rename vue/{ => full}/src/config/index.js (100%) rename vue/{ => full}/src/directive/dragDialog.js (100%) rename vue/{ => full}/src/directive/index.js (100%) rename vue/{ => full}/src/directive/ripple/index.js (100%) rename vue/{ => full}/src/directive/ripple/style.scss (100%) rename vue/{ => full}/src/filter/index.js (100%) rename vue/{ => full}/src/globalMethod/BottomTip/index.js (100%) rename vue/{ => full}/src/globalMethod/BottomTip/main.vue (100%) rename vue/{ => full}/src/globalMethod/Guide/index.js (100%) rename vue/{ => full}/src/globalMethod/Guide/main.vue (100%) rename vue/{ => full}/src/globalMethod/Guide/style.scss (100%) rename vue/{ => full}/src/globalMethod/Guide/utils.js (100%) rename vue/{ => full}/src/globalMethod/ImageViewer/index.js (100%) rename vue/{ => full}/src/globalMethod/SignautreBoard/index.js (100%) rename vue/{ => full}/src/globalMethod/SignautreBoard/main.vue (100%) rename vue/{ => full}/src/globalMethod/Verify/image/btn_move.png (100%) rename vue/{ => full}/src/globalMethod/Verify/image/btn_stop.png (100%) rename vue/{ => full}/src/globalMethod/Verify/image/icon_close.png (100%) rename vue/{ => full}/src/globalMethod/Verify/image/icon_info.png (100%) rename vue/{ => full}/src/globalMethod/Verify/image/icon_refresh_bottom.png (100%) rename vue/{ => full}/src/globalMethod/Verify/image/icon_refresh_top.png (100%) rename vue/{ => full}/src/globalMethod/Verify/image/loading.png (100%) rename vue/{ => full}/src/globalMethod/Verify/image/track.png (100%) rename vue/{ => full}/src/globalMethod/Verify/index.js (100%) rename vue/{ => full}/src/globalMethod/Verify/main.vue (100%) rename vue/{ => full}/src/globalMethod/Verify/style.scss (100%) rename vue/{ => full}/src/globalMethod/index.js (100%) rename vue/{ => full}/src/layout/component/Aside/component/MenuSearch.vue (100%) rename vue/{ => full}/src/layout/component/Aside/component/OnePartRoot.vue (100%) rename vue/{ => full}/src/layout/component/Aside/component/TwoPartRoot.vue (100%) rename vue/{ => full}/src/layout/component/Aside/component/TwoPartSub.vue (100%) rename vue/{ => full}/src/layout/component/Aside/index.vue (100%) rename vue/{ => full}/src/layout/component/Aside/style.scss (100%) rename vue/{ => full}/src/layout/component/Aside/theme-dark.scss (100%) rename vue/{ => full}/src/layout/component/Aside/theme-light.scss (100%) rename vue/{ => full}/src/layout/component/Hamburger.vue (100%) rename vue/{ => full}/src/layout/component/Logo.vue (100%) rename vue/{ => full}/src/layout/component/Navbar/component/Bell.vue (100%) rename vue/{ => full}/src/layout/component/Navbar/component/HeadMenu.vue (100%) rename vue/{ => full}/src/layout/component/Navbar/index.vue (100%) rename vue/{ => full}/src/layout/component/Navbar/style.scss (100%) rename vue/{ => full}/src/layout/component/Navbar/theme-dark.scss (100%) rename vue/{ => full}/src/layout/component/Navbar/theme-light.scss (100%) rename vue/{ => full}/src/layout/component/Page/component/BackToTop.vue (100%) rename vue/{ => full}/src/layout/component/Page/component/KeepRouterViewAlive.vue (100%) rename vue/{ => full}/src/layout/component/Page/component/PageFooter.vue (100%) rename vue/{ => full}/src/layout/component/Page/component/PageHeader.vue (100%) rename vue/{ => full}/src/layout/component/Page/component/PageView.vue (100%) rename vue/{ => full}/src/layout/component/Page/component/TagsView/ScrollPanel.vue (100%) rename vue/{ => full}/src/layout/component/Page/component/TagsView/index.vue (100%) rename vue/{ => full}/src/layout/component/Page/component/TagsView/style.scss (100%) rename vue/{ => full}/src/layout/component/Page/index.vue (100%) rename vue/{ => full}/src/layout/component/SettingDrawer.vue (100%) rename vue/{ => full}/src/layout/index.vue (100%) rename vue/{ => full}/src/layout/mixin/decideRouterTransition.js (100%) rename vue/{ => full}/src/layout/mixin/hamburger.js (100%) rename vue/{ => full}/src/layout/mixin/menu.js (100%) rename vue/{ => full}/src/layout/mixin/menuSearch.js (100%) rename vue/{ => full}/src/layout/mixin/offline.js (100%) rename vue/{ => full}/src/layout/mixin/tagsViewPersistent.js (100%) rename vue/{ => full}/src/layout/mixin/tagsViewShortcut.js (100%) rename vue/{ => full}/src/layout/store/app.js (100%) rename vue/{ => full}/src/layout/store/aside.js (100%) rename vue/{ => full}/src/layout/store/navbar.js (100%) rename vue/{ => full}/src/layout/store/page.js (100%) rename vue/{ => full}/src/layout/store/tagsView.js (100%) rename vue/{ => full}/src/layout/util.js (100%) rename vue/{ => full}/src/layout/布局设计.md (100%) rename vue/{ => full}/src/main.js (100%) rename vue/{ => full}/src/mixin/chart/index.js (100%) rename vue/{ => full}/src/mixin/chart/logic.js (100%) rename vue/{ => full}/src/mixin/chart/resize.js (100%) rename vue/{ => full}/src/mixin/dialogMixin.js (100%) rename vue/{ => full}/src/mixin/docDetailMixin.js (100%) rename vue/{ => full}/src/mixin/docTableMixin.js (100%) rename vue/{ => full}/src/mixin/tablePageMixin.js (100%) rename vue/{ => full}/src/mixin/treePageMixin.js (100%) rename vue/{ => full}/src/plugin/canvasAnimation/firework/Particle.js (100%) rename vue/{ => full}/src/plugin/canvasAnimation/firework/Rocket.js (100%) rename vue/{ => full}/src/plugin/canvasAnimation/firework/Time.js (100%) rename vue/{ => full}/src/plugin/canvasAnimation/firework/Trail.js (100%) rename vue/{ => full}/src/plugin/canvasAnimation/firework/Vector.js (100%) rename vue/{ => full}/src/plugin/canvasAnimation/firework/index.js (100%) rename vue/{ => full}/src/plugin/canvasAnimation/godrays/index.js (100%) rename vue/{ => full}/src/plugin/canvasAnimation/godrays/original.js (100%) rename vue/{ => full}/src/plugin/canvasAnimation/moveFollowMouse/Particle.js (100%) rename vue/{ => full}/src/plugin/canvasAnimation/moveFollowMouse/index.js (100%) rename vue/{ => full}/src/plugin/canvasAnimation/particleBall/Particle.js (100%) rename vue/{ => full}/src/plugin/canvasAnimation/particleBall/Vector.js (100%) rename vue/{ => full}/src/plugin/canvasAnimation/particleBall/index.js (100%) rename vue/{ => full}/src/plugin/canvasAnimation/particleBall/util.js (100%) rename vue/{ => full}/src/plugin/canvasAnimation/particleNetwork/Particle.js (100%) rename vue/{ => full}/src/plugin/canvasAnimation/particleNetwork/index.js (100%) rename vue/{ => full}/src/plugin/canvasAnimation/particleWave/index.js (100%) rename vue/{ => full}/src/plugin/canvasAnimation/reflectRain/RainDrop.js (100%) rename vue/{ => full}/src/plugin/canvasAnimation/reflectRain/Vector.js (100%) rename vue/{ => full}/src/plugin/canvasAnimation/reflectRain/index.js (100%) rename vue/{ => full}/src/plugin/canvasAnimation/sparkRain/Spark.js (100%) rename vue/{ => full}/src/plugin/canvasAnimation/sparkRain/index.js (100%) rename vue/{ => full}/src/plugin/canvasAnimation/sparkRain/util.js (100%) rename vue/{ => full}/src/plugin/canvasAnimation/sunlight/Particle.js (100%) rename vue/{ => full}/src/plugin/canvasAnimation/sunlight/index.js (100%) rename vue/{ => full}/src/plugin/imageCompress/cjpeg.js (100%) rename vue/{ => full}/src/plugin/imageCompress/pngquant.js (100%) rename vue/{ => full}/src/plugin/imageCompress/util.js (100%) rename vue/{ => full}/src/plugin/live2d/index.js (100%) rename vue/{ => full}/src/plugin/webgl/fluid/Material.js (100%) rename vue/{ => full}/src/plugin/webgl/fluid/Pointer.js (100%) rename vue/{ => full}/src/plugin/webgl/fluid/Program.js (100%) rename vue/{ => full}/src/plugin/webgl/fluid/config.js (100%) rename vue/{ => full}/src/plugin/webgl/fluid/factory.js (100%) rename vue/{ => full}/src/plugin/webgl/fluid/index.js (100%) create mode 100644 vue/full/src/plugin/webgl/fluid/obj.js rename vue/{ => full}/src/plugin/webgl/fluid/shader.js (100%) rename vue/{ => full}/src/plugin/webgl/fluid/util.js (100%) rename vue/{ => full}/src/router/define.js (100%) rename vue/{ => full}/src/router/guardian/accessControl.js (100%) rename vue/{ => full}/src/router/guardian/avoidReuse.js (100%) rename vue/{ => full}/src/router/guardian/iframe.js (100%) rename vue/{ => full}/src/router/guardian/index.js (100%) rename vue/{ => full}/src/router/guardian/nprogress.js (100%) rename vue/{ => full}/src/router/guardian/setTitle.js (100%) rename vue/{ => full}/src/router/index.js (100%) rename vue/{ => full}/src/router/module/admin/child/default.js (100%) rename vue/{ => full}/src/router/module/admin/child/message.js (100%) rename vue/{ => full}/src/router/module/admin/child/purchase.js (100%) rename vue/{ => full}/src/router/module/admin/child/sell.js (100%) rename vue/{ => full}/src/router/module/admin/child/stock.js (100%) rename vue/{ => full}/src/router/module/admin/child/system.js (100%) rename vue/{ => full}/src/router/module/admin/index.js (100%) rename vue/{ => full}/src/router/module/dev/child/uploadFileDev.js (100%) rename vue/{ => full}/src/router/module/dev/index.js (100%) rename vue/{ => full}/src/router/module/doc/index.js (100%) rename vue/{ => full}/src/router/module/example/child/component.js (100%) rename vue/{ => full}/src/router/module/example/child/cool.js (100%) rename vue/{ => full}/src/router/module/example/child/directive.js (100%) rename vue/{ => full}/src/router/module/example/child/globalMethod.js (100%) rename vue/{ => full}/src/router/module/example/child/icon.js (100%) rename vue/{ => full}/src/router/module/example/child/iframe.js (100%) rename vue/{ => full}/src/router/module/example/child/test.js (100%) rename vue/{ => full}/src/router/module/example/index.js (100%) rename vue/{ => full}/src/router/module/index.js (100%) rename vue/{ => full}/src/router/util.js (100%) rename vue/{ => full}/src/store/index.js (100%) rename vue/{ => full}/src/store/module/app.js (100%) rename vue/{ => full}/src/store/module/dataCache.js (100%) rename vue/{ => full}/src/store/module/message.js (100%) rename vue/{ => full}/src/store/module/needSearch.js (100%) rename vue/{ => full}/src/store/module/resource.js (100%) rename vue/{ => full}/src/store/module/socket.js (100%) rename vue/{ => full}/src/store/module/user.js (100%) rename vue/{ => full}/src/store/util.js (100%) rename vue/{ => full}/src/util/auth.js (100%) rename vue/{ => full}/src/util/browser.js (100%) rename vue/{ => full}/src/util/element-ui/elForm.js (100%) rename vue/{ => full}/src/util/element-ui/elMenu.js (100%) rename vue/{ => full}/src/util/element-ui/elTree.js (100%) rename vue/{ => full}/src/util/excel/common.js (100%) rename vue/{ => full}/src/util/excel/exceljs.js (100%) rename vue/{ => full}/src/util/excel/index.js (100%) rename vue/{ => full}/src/util/file.js (100%) rename vue/{ => full}/src/util/index.js (100%) rename vue/{ => full}/src/util/math.js (100%) rename vue/{ => full}/src/util/message.js (100%) rename vue/{ => full}/src/util/observable.js (100%) rename vue/{ => full}/src/util/route.js (100%) rename vue/{ => full}/src/util/secret.js (100%) rename vue/{ => full}/src/util/storage.js (100%) rename vue/{ => full}/src/util/tree.js (100%) rename vue/{ => full}/src/util/validate.js (100%) rename vue/{ => full}/src/util/vue.js (100%) rename vue/{ => full}/src/util/worker.js (100%) rename vue/{ => full}/src/view/_app/403.vue (100%) rename vue/{ => full}/src/view/_app/404.vue (100%) rename vue/{ => full}/src/view/_app/500.vue (100%) rename vue/{ => full}/src/view/_app/login/LoginForm.vue (100%) rename vue/{ => full}/src/view/_app/login/RegisterForm.vue (100%) rename vue/{ => full}/src/view/_app/login/SetAnimation.vue (100%) rename vue/{ => full}/src/view/_app/login/index.vue (100%) rename vue/{ => full}/src/view/_app/login/style.scss (100%) rename vue/{ => full}/src/view/_app/redirect.vue (100%) rename vue/{ => full}/src/view/_common/DetailPage/index.vue (100%) rename vue/{ => full}/src/view/_common/DetailPage/style.scss (100%) rename vue/{ => full}/src/view/_common/ExceptionPage/index.vue (100%) rename vue/{ => full}/src/view/_common/ExceptionPage/style.scss (100%) rename vue/{ => full}/src/view/_common/ListPage/autoAdaptHeightMixin.js (100%) rename vue/{ => full}/src/view/_common/ListPage/index.vue (100%) rename vue/{ => full}/src/view/_common/SkeletonPage/index.vue (100%) rename vue/{ => full}/src/view/_common/SkeletonPage/style.scss (100%) rename vue/{ => full}/src/view/admin/index/component/DailyFinishOrderStat.vue (100%) rename vue/{ => full}/src/view/admin/index/component/DailyProfitStat.vue (100%) rename vue/{ => full}/src/view/admin/index/component/PanelGroup/PanelGroupItem.vue (100%) rename vue/{ => full}/src/view/admin/index/component/PanelGroup/index.vue (100%) rename vue/{ => full}/src/view/admin/index/component/TotalProfitGoods.vue (100%) rename vue/{ => full}/src/view/admin/index/indexPage.vue (100%) rename vue/{ => full}/src/view/admin/message/manage/EditDialog.vue (100%) rename vue/{ => full}/src/view/admin/message/manage/indexPage.vue (100%) rename vue/{ => full}/src/view/admin/message/user/AutoHidden.vue (100%) rename vue/{ => full}/src/view/admin/message/user/MessageStream.vue (100%) rename vue/{ => full}/src/view/admin/message/user/indexPage.vue (100%) rename vue/{ => full}/src/view/admin/purchase/inbound/component/OrderSelector.vue (100%) rename vue/{ => full}/src/view/admin/purchase/inbound/detailPage.vue (100%) rename vue/{ => full}/src/view/admin/purchase/inbound/indexPage.vue (100%) rename vue/{ => full}/src/view/admin/purchase/order/component/CategorySelector.vue (100%) rename vue/{ => full}/src/view/admin/purchase/order/component/SupplierSelector.vue (100%) rename vue/{ => full}/src/view/admin/purchase/order/detailPage.vue (100%) rename vue/{ => full}/src/view/admin/purchase/order/indexPage.vue (100%) rename vue/{ => full}/src/view/admin/sell/order/component/CustomerSelector.vue (100%) rename vue/{ => full}/src/view/admin/sell/order/component/StockSelector.vue (100%) rename vue/{ => full}/src/view/admin/sell/order/detailPage.vue (100%) rename vue/{ => full}/src/view/admin/sell/order/indexPage.vue (100%) rename vue/{ => full}/src/view/admin/sell/outbound/component/OrderSelector.vue (100%) rename vue/{ => full}/src/view/admin/sell/outbound/component/StockSelector.vue (100%) rename vue/{ => full}/src/view/admin/sell/outbound/detailPage.vue (100%) rename vue/{ => full}/src/view/admin/sell/outbound/indexPage.vue (100%) rename vue/{ => full}/src/view/admin/stock/current/DetailDialog.vue (100%) rename vue/{ => full}/src/view/admin/stock/current/indexPage.vue (100%) rename vue/{ => full}/src/view/admin/system/category/component/Form.vue (100%) rename vue/{ => full}/src/view/admin/system/category/component/List.vue (100%) rename vue/{ => full}/src/view/admin/system/category/indexPage.vue (100%) rename vue/{ => full}/src/view/admin/system/customer/EditDialog.vue (100%) rename vue/{ => full}/src/view/admin/system/customer/indexPage.vue (100%) rename vue/{ => full}/src/view/admin/system/department/component/EditDialog.vue (100%) rename vue/{ => full}/src/view/admin/system/department/component/OrgTreeView.vue (100%) rename vue/{ => full}/src/view/admin/system/department/component/ZoomControl.vue (100%) rename vue/{ => full}/src/view/admin/system/department/indexPage.vue (100%) rename vue/{ => full}/src/view/admin/system/menu/common.js (100%) rename vue/{ => full}/src/view/admin/system/menu/indexPage.vue (100%) rename vue/{ => full}/src/view/admin/system/role/EditDialog.vue (100%) rename vue/{ => full}/src/view/admin/system/role/indexPage.vue (100%) rename vue/{ => full}/src/view/admin/system/supplier/EditDialog.vue (100%) rename vue/{ => full}/src/view/admin/system/supplier/indexPage.vue (100%) rename vue/{ => full}/src/view/admin/system/user/component/DepartmentSelector.vue (100%) rename vue/{ => full}/src/view/admin/system/user/component/EditDialog.vue (100%) rename vue/{ => full}/src/view/admin/system/user/component/RoleSelector.vue (100%) rename vue/{ => full}/src/view/admin/system/user/indexPage.vue (100%) rename vue/{ => full}/src/view/admin/userCenter/component/Account.vue (100%) rename vue/{ => full}/src/view/admin/userCenter/component/Avatar.vue (100%) rename vue/{ => full}/src/view/admin/userCenter/component/LoginHistory.vue (100%) rename vue/{ => full}/src/view/admin/userCenter/component/UserAction.vue (100%) rename vue/{ => full}/src/view/admin/userCenter/component/UserCard.vue (100%) rename vue/{ => full}/src/view/admin/userCenter/indexPage.vue (100%) rename vue/{ => full}/src/view/dev/uploadFileDev.vue (100%) rename vue/{ => full}/src/view/example/component/regionSelectorPage.vue (100%) rename vue/{ => full}/src/view/example/component/skeletonPage.vue (100%) rename vue/{ => full}/src/view/example/component/treeSelectPage.vue (100%) rename vue/{ => full}/src/view/example/component/uploadPage.vue (100%) rename vue/{ => full}/src/view/example/cool/fluidPage.vue (100%) rename vue/{ => full}/src/view/example/cool/l2dPage.vue (100%) rename vue/{ => full}/src/view/example/directive/dragDialogPage.vue (100%) rename vue/{ => full}/src/view/example/directive/ripplePage.vue (100%) rename vue/{ => full}/src/view/example/globalMethod/bottomTipPage.vue (100%) rename vue/{ => full}/src/view/example/globalMethod/guidePage.vue (100%) rename vue/{ => full}/src/view/example/globalMethod/imageViewerPage.vue (100%) rename vue/{ => full}/src/view/example/globalMethod/messagePage.vue (100%) rename vue/{ => full}/src/view/example/globalMethod/signaturePage.vue (100%) rename vue/{ => full}/src/view/example/globalMethod/verifyPage.vue (100%) rename vue/{ => full}/src/view/example/icon/element-icon.js (100%) rename vue/{ => full}/src/view/example/icon/indexPage.vue (100%) rename vue/{ => full}/src/view/example/test/cache/detailPage.vue (100%) rename vue/{ => full}/src/view/example/test/develop/component/ApiSpeedTest.vue (100%) rename vue/{ => full}/src/view/example/test/develop/component/ExportExcelTest.vue (100%) rename vue/{ => full}/src/view/example/test/develop/component/ImageCompressTest.vue (100%) rename vue/{ => full}/src/view/example/test/develop/component/WebsocketTest.vue (100%) rename vue/{ => full}/src/view/example/test/develop/indexPage.vue (100%) rename vue/{ => full}/vue.config.js (100%) create mode 100644 vue/template/.gitignore create mode 100644 vue/template/babel.config.js create mode 100644 vue/template/element-ui-personal/component/Menu/MenuItem.vue create mode 100644 vue/template/element-ui-personal/component/Menu/Submenu.vue create mode 100644 vue/template/element-ui-personal/component/Menu/mixin.js create mode 100644 vue/template/element-ui-personal/component/Message/index.js create mode 100644 vue/template/element-ui-personal/component/Message/main.vue create mode 100644 vue/template/element-ui-personal/index.js create mode 100644 vue/template/element-ui-personal/style/index.scss create mode 100644 vue/template/element-ui-personal/style/message.scss create mode 100644 vue/template/package.json create mode 100644 vue/template/public/favicon.ico create mode 100644 vue/template/public/index.html create mode 100644 vue/template/public/static/img/dot1.png create mode 100644 vue/template/public/static/img/dot2.png create mode 100644 vue/template/public/static/img/dot3.png create mode 100644 vue/template/public/static/img/dot4.png create mode 100644 vue/template/public/static/img/fileType/doc.png create mode 100644 vue/template/public/static/img/fileType/pdf.png create mode 100644 vue/template/public/static/img/fileType/ppt.png create mode 100644 vue/template/public/static/img/fileType/rar.png create mode 100644 vue/template/public/static/img/fileType/txt.png create mode 100644 vue/template/public/static/img/fileType/xls.png create mode 100644 vue/template/public/static/img/fileType/zip.png create mode 100644 vue/template/public/static/img/logo.svg create mode 100644 vue/template/public/static/json/region-pca.json create mode 100644 vue/template/public/static/lightgallery/lg-pager.min.js create mode 100644 vue/template/public/static/lightgallery/lg-thumbnail.min.js create mode 100644 vue/template/public/static/lightgallery/lg-zoom.min.js create mode 100644 vue/template/src/App.vue create mode 100644 vue/template/src/asset/icon/index.js create mode 100644 vue/template/src/asset/icon/svg/bug.svg create mode 100644 vue/template/src/asset/icon/svg/check.svg create mode 100644 vue/template/src/asset/icon/svg/develop.svg create mode 100644 vue/template/src/asset/icon/svg/documentation.svg create mode 100644 vue/template/src/asset/icon/svg/eye-open.svg create mode 100644 vue/template/src/asset/icon/svg/eye.svg create mode 100644 vue/template/src/asset/icon/svg/home.svg create mode 100644 vue/template/src/asset/icon/svg/icon.svg create mode 100644 vue/template/src/asset/icon/svg/message.svg create mode 100644 vue/template/src/asset/icon/svg/money.svg create mode 100644 vue/template/src/asset/icon/svg/password.svg create mode 100644 vue/template/src/asset/icon/svg/qq.svg create mode 100644 vue/template/src/asset/icon/svg/sell.svg create mode 100644 vue/template/src/asset/icon/svg/shopping.svg create mode 100644 vue/template/src/asset/icon/svg/show.svg create mode 100644 vue/template/src/asset/icon/svg/stock.svg create mode 100644 vue/template/src/asset/icon/svg/system.svg create mode 100644 vue/template/src/asset/icon/svg/user.svg create mode 100644 vue/template/src/asset/icon/svgo.yml create mode 100644 vue/template/src/asset/style/display.scss create mode 100644 vue/template/src/asset/style/element-ui.scss create mode 100644 vue/template/src/asset/style/index.scss create mode 100644 vue/template/src/asset/style/nprogress.scss create mode 100644 vue/template/src/asset/style/transition.scss create mode 100644 vue/template/src/asset/style/variables.scss create mode 100644 vue/template/src/component/Charts/PieChart.vue create mode 100644 vue/template/src/component/CollapseCard/index.vue create mode 100644 vue/template/src/component/Empty/DefaultEmptyImage.vue create mode 100644 vue/template/src/component/Empty/index.vue create mode 100644 vue/template/src/component/Empty/style.scss create mode 100644 vue/template/src/component/ExtraArea/index.vue create mode 100644 vue/template/src/component/Icon/index.vue create mode 100644 vue/template/src/component/LinerProgress/index.vue create mode 100644 vue/template/src/component/LinerProgress/style.scss create mode 100644 vue/template/src/component/OrgTree/index.vue create mode 100644 vue/template/src/component/OrgTree/node.vue create mode 100644 vue/template/src/component/OrgTree/style.scss create mode 100644 vue/template/src/component/RegionSelector/Tab/index.vue create mode 100644 vue/template/src/component/RegionSelector/Tab/style.scss create mode 100644 vue/template/src/component/RegionSelector/Tree/TreeDialog.vue create mode 100644 vue/template/src/component/RegionSelector/Tree/index.vue create mode 100644 vue/template/src/component/RegionSelector/index.vue create mode 100644 vue/template/src/component/RegionSelector/mixin.js create mode 100644 vue/template/src/component/RegionSelector/store.js create mode 100644 vue/template/src/component/Skeleton/constant.js create mode 100644 vue/template/src/component/Skeleton/index.vue create mode 100644 vue/template/src/component/Skeleton/style.scss create mode 100644 vue/template/src/component/TreeSelect/index.vue create mode 100644 vue/template/src/component/UploadFile/index.vue create mode 100644 vue/template/src/component/UploadFile/style.scss create mode 100644 vue/template/src/component/abstract/Dialog/LoadingMask.vue create mode 100644 vue/template/src/component/abstract/Dialog/index.vue create mode 100644 vue/template/src/component/abstract/Dialog/style.scss create mode 100644 vue/template/src/component/abstract/Form/index.vue create mode 100644 vue/template/src/component/abstract/Form/item.vue create mode 100644 vue/template/src/component/abstract/Pagination/index.vue create mode 100644 vue/template/src/component/abstract/Table/index.vue create mode 100644 vue/template/src/component/biz/CategoryTree/index.vue create mode 100644 vue/template/src/component/biz/UserSelector/SimpleMultipleUserSelector.vue create mode 100644 vue/template/src/component/biz/UserSelector/index.js create mode 100644 vue/template/src/component/biz/doc/DocHistory.vue create mode 100644 vue/template/src/component/biz/doc/DocSteps.vue create mode 100644 vue/template/src/component/checkbox/ColorCheckbox.vue create mode 100644 vue/template/src/component/checkbox/Group.vue create mode 100644 vue/template/src/component/checkbox/ImgCheckbox.vue create mode 100644 vue/template/src/component/checkbox/common.js create mode 100644 vue/template/src/component/editor/JsonEditor.vue create mode 100644 vue/template/src/component/editor/RichTextEditor.vue create mode 100644 vue/template/src/component/form/Anchor/index.vue create mode 100644 vue/template/src/component/form/Search/index.vue create mode 100644 vue/template/src/component/form/ValidateInfo/index.vue create mode 100644 vue/template/src/component/form/ValidateInfo/style.scss create mode 100644 vue/template/src/component/menu/ContextMenu/index.vue create mode 100644 vue/template/src/component/menu/NavMenu/index.vue create mode 100644 vue/template/src/component/menu/NavMenu/item.vue create mode 100644 vue/template/src/component/menu/NavMenu/style.scss create mode 100644 vue/template/src/component/menu/NavMenu/theme-dark.scss create mode 100644 vue/template/src/component/menu/NavMenu/theme-light.scss create mode 100644 vue/template/src/config/index.js create mode 100644 vue/template/src/directive/dragDialog.js create mode 100644 vue/template/src/directive/index.js create mode 100644 vue/template/src/directive/ripple/index.js create mode 100644 vue/template/src/directive/ripple/style.scss create mode 100644 vue/template/src/filter/index.js create mode 100644 vue/template/src/globalMethod/BottomTip/index.js create mode 100644 vue/template/src/globalMethod/BottomTip/main.vue create mode 100644 vue/template/src/globalMethod/Guide/index.js create mode 100644 vue/template/src/globalMethod/Guide/main.vue create mode 100644 vue/template/src/globalMethod/Guide/style.scss create mode 100644 vue/template/src/globalMethod/Guide/utils.js create mode 100644 vue/template/src/globalMethod/ImageViewer/index.js create mode 100644 vue/template/src/globalMethod/SignautreBoard/index.js create mode 100644 vue/template/src/globalMethod/SignautreBoard/main.vue create mode 100644 vue/template/src/globalMethod/Verify/image/btn_move.png create mode 100644 vue/template/src/globalMethod/Verify/image/btn_stop.png create mode 100644 vue/template/src/globalMethod/Verify/image/icon_close.png create mode 100644 vue/template/src/globalMethod/Verify/image/icon_info.png create mode 100644 vue/template/src/globalMethod/Verify/image/icon_refresh_bottom.png create mode 100644 vue/template/src/globalMethod/Verify/image/icon_refresh_top.png create mode 100644 vue/template/src/globalMethod/Verify/image/loading.png create mode 100644 vue/template/src/globalMethod/Verify/image/track.png create mode 100644 vue/template/src/globalMethod/Verify/index.js create mode 100644 vue/template/src/globalMethod/Verify/main.vue create mode 100644 vue/template/src/globalMethod/Verify/style.scss create mode 100644 vue/template/src/globalMethod/index.js create mode 100644 vue/template/src/layout/component/Aside/component/MenuSearch.vue create mode 100644 vue/template/src/layout/component/Aside/component/OnePartRoot.vue create mode 100644 vue/template/src/layout/component/Aside/component/TwoPartRoot.vue create mode 100644 vue/template/src/layout/component/Aside/component/TwoPartSub.vue create mode 100644 vue/template/src/layout/component/Aside/index.vue create mode 100644 vue/template/src/layout/component/Aside/style.scss create mode 100644 vue/template/src/layout/component/Aside/theme-dark.scss create mode 100644 vue/template/src/layout/component/Aside/theme-light.scss create mode 100644 vue/template/src/layout/component/Hamburger.vue create mode 100644 vue/template/src/layout/component/Logo.vue create mode 100644 vue/template/src/layout/component/Navbar/component/Bell.vue create mode 100644 vue/template/src/layout/component/Navbar/component/HeadMenu.vue create mode 100644 vue/template/src/layout/component/Navbar/index.vue create mode 100644 vue/template/src/layout/component/Navbar/style.scss create mode 100644 vue/template/src/layout/component/Navbar/theme-dark.scss create mode 100644 vue/template/src/layout/component/Navbar/theme-light.scss create mode 100644 vue/template/src/layout/component/Page/component/BackToTop.vue create mode 100644 vue/template/src/layout/component/Page/component/KeepRouterViewAlive.vue create mode 100644 vue/template/src/layout/component/Page/component/PageFooter.vue create mode 100644 vue/template/src/layout/component/Page/component/PageHeader.vue create mode 100644 vue/template/src/layout/component/Page/component/PageView.vue create mode 100644 vue/template/src/layout/component/Page/component/TagsView/ScrollPanel.vue create mode 100644 vue/template/src/layout/component/Page/component/TagsView/index.vue create mode 100644 vue/template/src/layout/component/Page/component/TagsView/style.scss create mode 100644 vue/template/src/layout/component/Page/index.vue create mode 100644 vue/template/src/layout/component/SettingDrawer.vue create mode 100644 vue/template/src/layout/index.vue create mode 100644 vue/template/src/layout/mixin/decideRouterTransition.js create mode 100644 vue/template/src/layout/mixin/hamburger.js create mode 100644 vue/template/src/layout/mixin/menu.js create mode 100644 vue/template/src/layout/mixin/menuSearch.js create mode 100644 vue/template/src/layout/mixin/offline.js create mode 100644 vue/template/src/layout/mixin/tagsViewPersistent.js create mode 100644 vue/template/src/layout/mixin/tagsViewShortcut.js create mode 100644 vue/template/src/layout/store/app.js create mode 100644 vue/template/src/layout/store/aside.js create mode 100644 vue/template/src/layout/store/navbar.js create mode 100644 vue/template/src/layout/store/page.js create mode 100644 vue/template/src/layout/store/tagsView.js create mode 100644 vue/template/src/layout/util.js create mode 100644 vue/template/src/layout/布局设计.md create mode 100644 vue/template/src/main.js create mode 100644 vue/template/src/mixin/chart/index.js create mode 100644 vue/template/src/mixin/chart/logic.js create mode 100644 vue/template/src/mixin/chart/resize.js create mode 100644 vue/template/src/mixin/dialogMixin.js create mode 100644 vue/template/src/mixin/docDetailMixin.js create mode 100644 vue/template/src/mixin/docTableMixin.js create mode 100644 vue/template/src/mixin/tablePageMixin.js create mode 100644 vue/template/src/mixin/treePageMixin.js create mode 100644 vue/template/src/plugin/canvasAnimation/firework/Particle.js create mode 100644 vue/template/src/plugin/canvasAnimation/firework/Rocket.js create mode 100644 vue/template/src/plugin/canvasAnimation/firework/Time.js create mode 100644 vue/template/src/plugin/canvasAnimation/firework/Trail.js create mode 100644 vue/template/src/plugin/canvasAnimation/firework/Vector.js create mode 100644 vue/template/src/plugin/canvasAnimation/firework/index.js create mode 100644 vue/template/src/plugin/canvasAnimation/godrays/index.js create mode 100644 vue/template/src/plugin/canvasAnimation/godrays/original.js create mode 100644 vue/template/src/plugin/canvasAnimation/moveFollowMouse/Particle.js create mode 100644 vue/template/src/plugin/canvasAnimation/moveFollowMouse/index.js create mode 100644 vue/template/src/plugin/canvasAnimation/particleBall/Particle.js create mode 100644 vue/template/src/plugin/canvasAnimation/particleBall/Vector.js create mode 100644 vue/template/src/plugin/canvasAnimation/particleBall/index.js create mode 100644 vue/template/src/plugin/canvasAnimation/particleBall/util.js create mode 100644 vue/template/src/plugin/canvasAnimation/particleNetwork/Particle.js create mode 100644 vue/template/src/plugin/canvasAnimation/particleNetwork/index.js create mode 100644 vue/template/src/plugin/canvasAnimation/particleWave/index.js create mode 100644 vue/template/src/plugin/canvasAnimation/reflectRain/RainDrop.js create mode 100644 vue/template/src/plugin/canvasAnimation/reflectRain/Vector.js create mode 100644 vue/template/src/plugin/canvasAnimation/reflectRain/index.js create mode 100644 vue/template/src/plugin/canvasAnimation/sparkRain/Spark.js create mode 100644 vue/template/src/plugin/canvasAnimation/sparkRain/index.js create mode 100644 vue/template/src/plugin/canvasAnimation/sparkRain/util.js create mode 100644 vue/template/src/plugin/canvasAnimation/sunlight/Particle.js create mode 100644 vue/template/src/plugin/canvasAnimation/sunlight/index.js create mode 100644 vue/template/src/plugin/imageCompress/cjpeg.js create mode 100644 vue/template/src/plugin/imageCompress/pngquant.js create mode 100644 vue/template/src/plugin/imageCompress/util.js create mode 100644 vue/template/src/plugin/live2d/index.js create mode 100644 vue/template/src/plugin/webgl/fluid/Material.js create mode 100644 vue/template/src/plugin/webgl/fluid/Pointer.js create mode 100644 vue/template/src/plugin/webgl/fluid/Program.js create mode 100644 vue/template/src/plugin/webgl/fluid/config.js create mode 100644 vue/template/src/plugin/webgl/fluid/factory.js create mode 100644 vue/template/src/plugin/webgl/fluid/index.js create mode 100644 vue/template/src/plugin/webgl/fluid/obj.js create mode 100644 vue/template/src/plugin/webgl/fluid/shader.js create mode 100644 vue/template/src/plugin/webgl/fluid/util.js create mode 100644 vue/template/src/router/define.js create mode 100644 vue/template/src/router/guardian/accessControl.js create mode 100644 vue/template/src/router/guardian/avoidReuse.js create mode 100644 vue/template/src/router/guardian/iframe.js create mode 100644 vue/template/src/router/guardian/index.js create mode 100644 vue/template/src/router/guardian/nprogress.js create mode 100644 vue/template/src/router/guardian/setTitle.js create mode 100644 vue/template/src/router/index.js create mode 100644 vue/template/src/router/module/admin/child/default.js create mode 100644 vue/template/src/router/module/admin/child/message.js create mode 100644 vue/template/src/router/module/admin/child/purchase.js create mode 100644 vue/template/src/router/module/admin/child/sell.js create mode 100644 vue/template/src/router/module/admin/child/stock.js create mode 100644 vue/template/src/router/module/admin/child/system.js create mode 100644 vue/template/src/router/module/admin/index.js create mode 100644 vue/template/src/router/module/dev/child/uploadFileDev.js create mode 100644 vue/template/src/router/module/dev/index.js create mode 100644 vue/template/src/router/module/doc/index.js create mode 100644 vue/template/src/router/module/example/child/component.js create mode 100644 vue/template/src/router/module/example/child/cool.js create mode 100644 vue/template/src/router/module/example/child/directive.js create mode 100644 vue/template/src/router/module/example/child/globalMethod.js create mode 100644 vue/template/src/router/module/example/child/icon.js create mode 100644 vue/template/src/router/module/example/child/iframe.js create mode 100644 vue/template/src/router/module/example/child/test.js create mode 100644 vue/template/src/router/module/example/index.js create mode 100644 vue/template/src/router/module/index.js create mode 100644 vue/template/src/router/util.js create mode 100644 vue/template/src/store/index.js create mode 100644 vue/template/src/store/module/app.js create mode 100644 vue/template/src/store/module/dataCache.js create mode 100644 vue/template/src/store/module/message.js create mode 100644 vue/template/src/store/module/needSearch.js create mode 100644 vue/template/src/store/module/resource.js create mode 100644 vue/template/src/store/module/socket.js create mode 100644 vue/template/src/store/module/user.js create mode 100644 vue/template/src/store/util.js create mode 100644 vue/template/src/util/auth.js create mode 100644 vue/template/src/util/browser.js create mode 100644 vue/template/src/util/element-ui/elForm.js create mode 100644 vue/template/src/util/element-ui/elMenu.js create mode 100644 vue/template/src/util/element-ui/elTree.js create mode 100644 vue/template/src/util/excel/common.js create mode 100644 vue/template/src/util/excel/exceljs.js create mode 100644 vue/template/src/util/excel/index.js create mode 100644 vue/template/src/util/file.js create mode 100644 vue/template/src/util/index.js create mode 100644 vue/template/src/util/math.js create mode 100644 vue/template/src/util/message.js create mode 100644 vue/template/src/util/observable.js create mode 100644 vue/template/src/util/route.js create mode 100644 vue/template/src/util/secret.js create mode 100644 vue/template/src/util/storage.js create mode 100644 vue/template/src/util/tree.js create mode 100644 vue/template/src/util/validate.js create mode 100644 vue/template/src/util/vue.js create mode 100644 vue/template/src/util/worker.js create mode 100644 vue/template/src/view/_app/403.vue create mode 100644 vue/template/src/view/_app/404.vue create mode 100644 vue/template/src/view/_app/500.vue create mode 100644 vue/template/src/view/_app/login/LoginForm.vue create mode 100644 vue/template/src/view/_app/login/RegisterForm.vue create mode 100644 vue/template/src/view/_app/login/SetAnimation.vue create mode 100644 vue/template/src/view/_app/login/index.vue create mode 100644 vue/template/src/view/_app/login/style.scss create mode 100644 vue/template/src/view/_app/redirect.vue create mode 100644 vue/template/src/view/_common/DetailPage/index.vue create mode 100644 vue/template/src/view/_common/DetailPage/style.scss create mode 100644 vue/template/src/view/_common/ExceptionPage/index.vue create mode 100644 vue/template/src/view/_common/ExceptionPage/style.scss create mode 100644 vue/template/src/view/_common/ListPage/autoAdaptHeightMixin.js create mode 100644 vue/template/src/view/_common/ListPage/index.vue create mode 100644 vue/template/src/view/_common/SkeletonPage/index.vue create mode 100644 vue/template/src/view/_common/SkeletonPage/style.scss create mode 100644 vue/template/src/view/admin/index/component/DailyFinishOrderStat.vue create mode 100644 vue/template/src/view/admin/index/component/DailyProfitStat.vue create mode 100644 vue/template/src/view/admin/index/component/PanelGroup/PanelGroupItem.vue create mode 100644 vue/template/src/view/admin/index/component/PanelGroup/index.vue create mode 100644 vue/template/src/view/admin/index/component/TotalProfitGoods.vue create mode 100644 vue/template/src/view/admin/index/indexPage.vue create mode 100644 vue/template/src/view/admin/message/manage/EditDialog.vue create mode 100644 vue/template/src/view/admin/message/manage/indexPage.vue create mode 100644 vue/template/src/view/admin/message/user/AutoHidden.vue create mode 100644 vue/template/src/view/admin/message/user/MessageStream.vue create mode 100644 vue/template/src/view/admin/message/user/indexPage.vue create mode 100644 vue/template/src/view/admin/purchase/inbound/component/OrderSelector.vue create mode 100644 vue/template/src/view/admin/purchase/inbound/detailPage.vue create mode 100644 vue/template/src/view/admin/purchase/inbound/indexPage.vue create mode 100644 vue/template/src/view/admin/purchase/order/component/CategorySelector.vue create mode 100644 vue/template/src/view/admin/purchase/order/component/SupplierSelector.vue create mode 100644 vue/template/src/view/admin/purchase/order/detailPage.vue create mode 100644 vue/template/src/view/admin/purchase/order/indexPage.vue create mode 100644 vue/template/src/view/admin/sell/order/component/CustomerSelector.vue create mode 100644 vue/template/src/view/admin/sell/order/component/StockSelector.vue create mode 100644 vue/template/src/view/admin/sell/order/detailPage.vue create mode 100644 vue/template/src/view/admin/sell/order/indexPage.vue create mode 100644 vue/template/src/view/admin/sell/outbound/component/OrderSelector.vue create mode 100644 vue/template/src/view/admin/sell/outbound/component/StockSelector.vue create mode 100644 vue/template/src/view/admin/sell/outbound/detailPage.vue create mode 100644 vue/template/src/view/admin/sell/outbound/indexPage.vue create mode 100644 vue/template/src/view/admin/stock/current/DetailDialog.vue create mode 100644 vue/template/src/view/admin/stock/current/indexPage.vue create mode 100644 vue/template/src/view/admin/system/category/component/Form.vue create mode 100644 vue/template/src/view/admin/system/category/component/List.vue create mode 100644 vue/template/src/view/admin/system/category/indexPage.vue create mode 100644 vue/template/src/view/admin/system/customer/EditDialog.vue create mode 100644 vue/template/src/view/admin/system/customer/indexPage.vue create mode 100644 vue/template/src/view/admin/system/department/component/EditDialog.vue create mode 100644 vue/template/src/view/admin/system/department/component/OrgTreeView.vue create mode 100644 vue/template/src/view/admin/system/department/component/ZoomControl.vue create mode 100644 vue/template/src/view/admin/system/department/indexPage.vue create mode 100644 vue/template/src/view/admin/system/menu/common.js create mode 100644 vue/template/src/view/admin/system/menu/indexPage.vue create mode 100644 vue/template/src/view/admin/system/role/EditDialog.vue create mode 100644 vue/template/src/view/admin/system/role/indexPage.vue create mode 100644 vue/template/src/view/admin/system/supplier/EditDialog.vue create mode 100644 vue/template/src/view/admin/system/supplier/indexPage.vue create mode 100644 vue/template/src/view/admin/system/user/component/DepartmentSelector.vue create mode 100644 vue/template/src/view/admin/system/user/component/EditDialog.vue create mode 100644 vue/template/src/view/admin/system/user/component/RoleSelector.vue create mode 100644 vue/template/src/view/admin/system/user/indexPage.vue create mode 100644 vue/template/src/view/admin/userCenter/component/Account.vue create mode 100644 vue/template/src/view/admin/userCenter/component/Avatar.vue create mode 100644 vue/template/src/view/admin/userCenter/component/LoginHistory.vue create mode 100644 vue/template/src/view/admin/userCenter/component/UserAction.vue create mode 100644 vue/template/src/view/admin/userCenter/component/UserCard.vue create mode 100644 vue/template/src/view/admin/userCenter/indexPage.vue create mode 100644 vue/template/src/view/dev/uploadFileDev.vue create mode 100644 vue/template/src/view/example/component/regionSelectorPage.vue create mode 100644 vue/template/src/view/example/component/skeletonPage.vue create mode 100644 vue/template/src/view/example/component/treeSelectPage.vue create mode 100644 vue/template/src/view/example/component/uploadPage.vue create mode 100644 vue/template/src/view/example/cool/fluidPage.vue create mode 100644 vue/template/src/view/example/cool/l2dPage.vue create mode 100644 vue/template/src/view/example/directive/dragDialogPage.vue create mode 100644 vue/template/src/view/example/directive/ripplePage.vue create mode 100644 vue/template/src/view/example/globalMethod/bottomTipPage.vue create mode 100644 vue/template/src/view/example/globalMethod/guidePage.vue create mode 100644 vue/template/src/view/example/globalMethod/imageViewerPage.vue create mode 100644 vue/template/src/view/example/globalMethod/messagePage.vue create mode 100644 vue/template/src/view/example/globalMethod/signaturePage.vue create mode 100644 vue/template/src/view/example/globalMethod/verifyPage.vue create mode 100644 vue/template/src/view/example/icon/element-icon.js create mode 100644 vue/template/src/view/example/icon/indexPage.vue create mode 100644 vue/template/src/view/example/test/cache/detailPage.vue create mode 100644 vue/template/src/view/example/test/develop/component/ApiSpeedTest.vue create mode 100644 vue/template/src/view/example/test/develop/component/ExportExcelTest.vue create mode 100644 vue/template/src/view/example/test/develop/component/ImageCompressTest.vue create mode 100644 vue/template/src/view/example/test/develop/component/WebsocketTest.vue create mode 100644 vue/template/src/view/example/test/develop/indexPage.vue create mode 100644 vue/template/vue.config.js diff --git a/vue/.gitignore b/vue/full/.gitignore similarity index 100% rename from vue/.gitignore rename to vue/full/.gitignore diff --git a/vue/babel.config.js b/vue/full/babel.config.js similarity index 100% rename from vue/babel.config.js rename to vue/full/babel.config.js diff --git a/vue/element-ui-personal/component/Menu/MenuItem.vue b/vue/full/element-ui-personal/component/Menu/MenuItem.vue similarity index 100% rename from vue/element-ui-personal/component/Menu/MenuItem.vue rename to vue/full/element-ui-personal/component/Menu/MenuItem.vue diff --git a/vue/element-ui-personal/component/Menu/Submenu.vue b/vue/full/element-ui-personal/component/Menu/Submenu.vue similarity index 100% rename from vue/element-ui-personal/component/Menu/Submenu.vue rename to vue/full/element-ui-personal/component/Menu/Submenu.vue diff --git a/vue/element-ui-personal/component/Menu/mixin.js b/vue/full/element-ui-personal/component/Menu/mixin.js similarity index 100% rename from vue/element-ui-personal/component/Menu/mixin.js rename to vue/full/element-ui-personal/component/Menu/mixin.js diff --git a/vue/element-ui-personal/component/Message/index.js b/vue/full/element-ui-personal/component/Message/index.js similarity index 100% rename from vue/element-ui-personal/component/Message/index.js rename to vue/full/element-ui-personal/component/Message/index.js diff --git a/vue/element-ui-personal/component/Message/main.vue b/vue/full/element-ui-personal/component/Message/main.vue similarity index 100% rename from vue/element-ui-personal/component/Message/main.vue rename to vue/full/element-ui-personal/component/Message/main.vue diff --git a/vue/element-ui-personal/index.js b/vue/full/element-ui-personal/index.js similarity index 100% rename from vue/element-ui-personal/index.js rename to vue/full/element-ui-personal/index.js diff --git a/vue/element-ui-personal/style/index.scss b/vue/full/element-ui-personal/style/index.scss similarity index 100% rename from vue/element-ui-personal/style/index.scss rename to vue/full/element-ui-personal/style/index.scss diff --git a/vue/element-ui-personal/style/message.scss b/vue/full/element-ui-personal/style/message.scss similarity index 100% rename from vue/element-ui-personal/style/message.scss rename to vue/full/element-ui-personal/style/message.scss diff --git a/vue/mock/controller/account/index.js b/vue/full/mock/controller/account/index.js similarity index 100% rename from vue/mock/controller/account/index.js rename to vue/full/mock/controller/account/index.js diff --git a/vue/mock/controller/index.js b/vue/full/mock/controller/index.js similarity index 100% rename from vue/mock/controller/index.js rename to vue/full/mock/controller/index.js diff --git a/vue/mock/controller/system/resource.js b/vue/full/mock/controller/system/resource.js similarity index 100% rename from vue/mock/controller/system/resource.js rename to vue/full/mock/controller/system/resource.js diff --git a/vue/mock/index.js b/vue/full/mock/index.js similarity index 100% rename from vue/mock/index.js rename to vue/full/mock/index.js diff --git a/vue/mock/util.js b/vue/full/mock/util.js similarity index 100% rename from vue/mock/util.js rename to vue/full/mock/util.js diff --git a/vue/package-lock.json b/vue/full/package-lock.json similarity index 100% rename from vue/package-lock.json rename to vue/full/package-lock.json diff --git a/vue/package.json b/vue/full/package.json similarity index 100% rename from vue/package.json rename to vue/full/package.json diff --git a/vue/public/favicon.ico b/vue/full/public/favicon.ico similarity index 100% rename from vue/public/favicon.ico rename to vue/full/public/favicon.ico diff --git a/vue/public/index.html b/vue/full/public/index.html similarity index 94% rename from vue/public/index.html rename to vue/full/public/index.html index 249764d..91b1e68 100644 --- a/vue/public/index.html +++ b/vue/full/public/index.html @@ -33,4 +33,8 @@ + + + + diff --git a/vue/public/static/echarts/macarons.js b/vue/full/public/static/echarts/macarons.js similarity index 100% rename from vue/public/static/echarts/macarons.js rename to vue/full/public/static/echarts/macarons.js diff --git a/vue/public/static/img/dot1.png b/vue/full/public/static/img/dot1.png similarity index 100% rename from vue/public/static/img/dot1.png rename to vue/full/public/static/img/dot1.png diff --git a/vue/public/static/img/dot2.png b/vue/full/public/static/img/dot2.png similarity index 100% rename from vue/public/static/img/dot2.png rename to vue/full/public/static/img/dot2.png diff --git a/vue/public/static/img/dot3.png b/vue/full/public/static/img/dot3.png similarity index 100% rename from vue/public/static/img/dot3.png rename to vue/full/public/static/img/dot3.png diff --git a/vue/public/static/img/dot4.png b/vue/full/public/static/img/dot4.png similarity index 100% rename from vue/public/static/img/dot4.png rename to vue/full/public/static/img/dot4.png diff --git a/vue/public/static/img/fileType/doc.png b/vue/full/public/static/img/fileType/doc.png similarity index 100% rename from vue/public/static/img/fileType/doc.png rename to vue/full/public/static/img/fileType/doc.png diff --git a/vue/public/static/img/fileType/pdf.png b/vue/full/public/static/img/fileType/pdf.png similarity index 100% rename from vue/public/static/img/fileType/pdf.png rename to vue/full/public/static/img/fileType/pdf.png diff --git a/vue/public/static/img/fileType/ppt.png b/vue/full/public/static/img/fileType/ppt.png similarity index 100% rename from vue/public/static/img/fileType/ppt.png rename to vue/full/public/static/img/fileType/ppt.png diff --git a/vue/public/static/img/fileType/rar.png b/vue/full/public/static/img/fileType/rar.png similarity index 100% rename from vue/public/static/img/fileType/rar.png rename to vue/full/public/static/img/fileType/rar.png diff --git a/vue/public/static/img/fileType/txt.png b/vue/full/public/static/img/fileType/txt.png similarity index 100% rename from vue/public/static/img/fileType/txt.png rename to vue/full/public/static/img/fileType/txt.png diff --git a/vue/public/static/img/fileType/xls.png b/vue/full/public/static/img/fileType/xls.png similarity index 100% rename from vue/public/static/img/fileType/xls.png rename to vue/full/public/static/img/fileType/xls.png diff --git a/vue/public/static/img/fileType/zip.png b/vue/full/public/static/img/fileType/zip.png similarity index 100% rename from vue/public/static/img/fileType/zip.png rename to vue/full/public/static/img/fileType/zip.png diff --git a/vue/public/static/img/logo.svg b/vue/full/public/static/img/logo.svg similarity index 100% rename from vue/public/static/img/logo.svg rename to vue/full/public/static/img/logo.svg diff --git a/vue/public/static/js/cjpeg.min.js b/vue/full/public/static/js/cjpeg.min.js similarity index 100% rename from vue/public/static/js/cjpeg.min.js rename to vue/full/public/static/js/cjpeg.min.js diff --git a/vue/public/static/js/exceljs.min.js b/vue/full/public/static/js/exceljs.min.js similarity index 100% rename from vue/public/static/js/exceljs.min.js rename to vue/full/public/static/js/exceljs.min.js diff --git a/vue/public/static/js/pngquant.min.js b/vue/full/public/static/js/pngquant.min.js similarity index 100% rename from vue/public/static/js/pngquant.min.js rename to vue/full/public/static/js/pngquant.min.js diff --git a/vue/public/static/json/region-pca.json b/vue/full/public/static/json/region-pca.json similarity index 100% rename from vue/public/static/json/region-pca.json rename to vue/full/public/static/json/region-pca.json diff --git a/vue/public/static/lightgallery/lg-pager.min.js b/vue/full/public/static/lightgallery/lg-pager.min.js similarity index 100% rename from vue/public/static/lightgallery/lg-pager.min.js rename to vue/full/public/static/lightgallery/lg-pager.min.js diff --git a/vue/public/static/lightgallery/lg-thumbnail.min.js b/vue/full/public/static/lightgallery/lg-thumbnail.min.js similarity index 100% rename from vue/public/static/lightgallery/lg-thumbnail.min.js rename to vue/full/public/static/lightgallery/lg-thumbnail.min.js diff --git a/vue/public/static/lightgallery/lg-zoom.min.js b/vue/full/public/static/lightgallery/lg-zoom.min.js similarity index 100% rename from vue/public/static/lightgallery/lg-zoom.min.js rename to vue/full/public/static/lightgallery/lg-zoom.min.js diff --git a/vue/public/static/live2d/live2d.min.js b/vue/full/public/static/live2d/live2d.min.js similarity index 100% rename from vue/public/static/live2d/live2d.min.js rename to vue/full/public/static/live2d/live2d.min.js diff --git a/vue/public/static/live2d/waifu-tips.json b/vue/full/public/static/live2d/waifu-tips.json similarity index 100% rename from vue/public/static/live2d/waifu-tips.json rename to vue/full/public/static/live2d/waifu-tips.json diff --git a/vue/public/static/live2d/waifu.css b/vue/full/public/static/live2d/waifu.css similarity index 100% rename from vue/public/static/live2d/waifu.css rename to vue/full/public/static/live2d/waifu.css diff --git a/vue/public/static/tinymce/langs/zh_CN.js b/vue/full/public/static/tinymce/langs/zh_CN.js similarity index 100% rename from vue/public/static/tinymce/langs/zh_CN.js rename to vue/full/public/static/tinymce/langs/zh_CN.js diff --git a/vue/src/App.vue b/vue/full/src/App.vue similarity index 100% rename from vue/src/App.vue rename to vue/full/src/App.vue diff --git a/vue/src/api/account/index.js b/vue/full/src/api/account/index.js similarity index 100% rename from vue/src/api/account/index.js rename to vue/full/src/api/account/index.js diff --git a/vue/src/api/doc/history.js b/vue/full/src/api/doc/history.js similarity index 100% rename from vue/src/api/doc/history.js rename to vue/full/src/api/doc/history.js diff --git a/vue/src/api/doc/purchase/inbound.js b/vue/full/src/api/doc/purchase/inbound.js similarity index 100% rename from vue/src/api/doc/purchase/inbound.js rename to vue/full/src/api/doc/purchase/inbound.js diff --git a/vue/src/api/doc/purchase/order.js b/vue/full/src/api/doc/purchase/order.js similarity index 100% rename from vue/src/api/doc/purchase/order.js rename to vue/full/src/api/doc/purchase/order.js diff --git a/vue/src/api/doc/sell/order.js b/vue/full/src/api/doc/sell/order.js similarity index 100% rename from vue/src/api/doc/sell/order.js rename to vue/full/src/api/doc/sell/order.js diff --git a/vue/src/api/doc/sell/outbound.js b/vue/full/src/api/doc/sell/outbound.js similarity index 100% rename from vue/src/api/doc/sell/outbound.js rename to vue/full/src/api/doc/sell/outbound.js diff --git a/vue/src/api/file/index.js b/vue/full/src/api/file/index.js similarity index 100% rename from vue/src/api/file/index.js rename to vue/full/src/api/file/index.js diff --git a/vue/src/api/message/manage.js b/vue/full/src/api/message/manage.js similarity index 100% rename from vue/src/api/message/manage.js rename to vue/full/src/api/message/manage.js diff --git a/vue/src/api/message/user.js b/vue/full/src/api/message/user.js similarity index 100% rename from vue/src/api/message/user.js rename to vue/full/src/api/message/user.js diff --git a/vue/src/api/record/index.js b/vue/full/src/api/record/index.js similarity index 100% rename from vue/src/api/record/index.js rename to vue/full/src/api/record/index.js diff --git a/vue/src/api/request.js b/vue/full/src/api/request.js similarity index 100% rename from vue/src/api/request.js rename to vue/full/src/api/request.js diff --git a/vue/src/api/statistic/index.js b/vue/full/src/api/statistic/index.js similarity index 100% rename from vue/src/api/statistic/index.js rename to vue/full/src/api/statistic/index.js diff --git a/vue/src/api/stock/current.js b/vue/full/src/api/stock/current.js similarity index 100% rename from vue/src/api/stock/current.js rename to vue/full/src/api/stock/current.js diff --git a/vue/src/api/system/category.js b/vue/full/src/api/system/category.js similarity index 100% rename from vue/src/api/system/category.js rename to vue/full/src/api/system/category.js diff --git a/vue/src/api/system/customer.js b/vue/full/src/api/system/customer.js similarity index 100% rename from vue/src/api/system/customer.js rename to vue/full/src/api/system/customer.js diff --git a/vue/src/api/system/department.js b/vue/full/src/api/system/department.js similarity index 100% rename from vue/src/api/system/department.js rename to vue/full/src/api/system/department.js diff --git a/vue/src/api/system/resource.js b/vue/full/src/api/system/resource.js similarity index 100% rename from vue/src/api/system/resource.js rename to vue/full/src/api/system/resource.js diff --git a/vue/src/api/system/role.js b/vue/full/src/api/system/role.js similarity index 100% rename from vue/src/api/system/role.js rename to vue/full/src/api/system/role.js diff --git a/vue/src/api/system/supplier.js b/vue/full/src/api/system/supplier.js similarity index 100% rename from vue/src/api/system/supplier.js rename to vue/full/src/api/system/supplier.js diff --git a/vue/src/api/system/user.js b/vue/full/src/api/system/user.js similarity index 100% rename from vue/src/api/system/user.js rename to vue/full/src/api/system/user.js diff --git a/vue/src/asset/icon/index.js b/vue/full/src/asset/icon/index.js similarity index 100% rename from vue/src/asset/icon/index.js rename to vue/full/src/asset/icon/index.js diff --git a/vue/src/asset/icon/svg/bug.svg b/vue/full/src/asset/icon/svg/bug.svg similarity index 100% rename from vue/src/asset/icon/svg/bug.svg rename to vue/full/src/asset/icon/svg/bug.svg diff --git a/vue/src/asset/icon/svg/check.svg b/vue/full/src/asset/icon/svg/check.svg similarity index 100% rename from vue/src/asset/icon/svg/check.svg rename to vue/full/src/asset/icon/svg/check.svg diff --git a/vue/src/asset/icon/svg/develop.svg b/vue/full/src/asset/icon/svg/develop.svg similarity index 100% rename from vue/src/asset/icon/svg/develop.svg rename to vue/full/src/asset/icon/svg/develop.svg diff --git a/vue/src/asset/icon/svg/documentation.svg b/vue/full/src/asset/icon/svg/documentation.svg similarity index 100% rename from vue/src/asset/icon/svg/documentation.svg rename to vue/full/src/asset/icon/svg/documentation.svg diff --git a/vue/src/asset/icon/svg/eye-open.svg b/vue/full/src/asset/icon/svg/eye-open.svg similarity index 100% rename from vue/src/asset/icon/svg/eye-open.svg rename to vue/full/src/asset/icon/svg/eye-open.svg diff --git a/vue/src/asset/icon/svg/eye.svg b/vue/full/src/asset/icon/svg/eye.svg similarity index 100% rename from vue/src/asset/icon/svg/eye.svg rename to vue/full/src/asset/icon/svg/eye.svg diff --git a/vue/src/asset/icon/svg/home.svg b/vue/full/src/asset/icon/svg/home.svg similarity index 100% rename from vue/src/asset/icon/svg/home.svg rename to vue/full/src/asset/icon/svg/home.svg diff --git a/vue/src/asset/icon/svg/icon.svg b/vue/full/src/asset/icon/svg/icon.svg similarity index 100% rename from vue/src/asset/icon/svg/icon.svg rename to vue/full/src/asset/icon/svg/icon.svg diff --git a/vue/src/asset/icon/svg/message.svg b/vue/full/src/asset/icon/svg/message.svg similarity index 100% rename from vue/src/asset/icon/svg/message.svg rename to vue/full/src/asset/icon/svg/message.svg diff --git a/vue/src/asset/icon/svg/money.svg b/vue/full/src/asset/icon/svg/money.svg similarity index 100% rename from vue/src/asset/icon/svg/money.svg rename to vue/full/src/asset/icon/svg/money.svg diff --git a/vue/src/asset/icon/svg/password.svg b/vue/full/src/asset/icon/svg/password.svg similarity index 100% rename from vue/src/asset/icon/svg/password.svg rename to vue/full/src/asset/icon/svg/password.svg diff --git a/vue/src/asset/icon/svg/qq.svg b/vue/full/src/asset/icon/svg/qq.svg similarity index 100% rename from vue/src/asset/icon/svg/qq.svg rename to vue/full/src/asset/icon/svg/qq.svg diff --git a/vue/src/asset/icon/svg/sell.svg b/vue/full/src/asset/icon/svg/sell.svg similarity index 100% rename from vue/src/asset/icon/svg/sell.svg rename to vue/full/src/asset/icon/svg/sell.svg diff --git a/vue/src/asset/icon/svg/shopping.svg b/vue/full/src/asset/icon/svg/shopping.svg similarity index 100% rename from vue/src/asset/icon/svg/shopping.svg rename to vue/full/src/asset/icon/svg/shopping.svg diff --git a/vue/src/asset/icon/svg/show.svg b/vue/full/src/asset/icon/svg/show.svg similarity index 100% rename from vue/src/asset/icon/svg/show.svg rename to vue/full/src/asset/icon/svg/show.svg diff --git a/vue/src/asset/icon/svg/stock.svg b/vue/full/src/asset/icon/svg/stock.svg similarity index 100% rename from vue/src/asset/icon/svg/stock.svg rename to vue/full/src/asset/icon/svg/stock.svg diff --git a/vue/src/asset/icon/svg/system.svg b/vue/full/src/asset/icon/svg/system.svg similarity index 100% rename from vue/src/asset/icon/svg/system.svg rename to vue/full/src/asset/icon/svg/system.svg diff --git a/vue/src/asset/icon/svg/user.svg b/vue/full/src/asset/icon/svg/user.svg similarity index 100% rename from vue/src/asset/icon/svg/user.svg rename to vue/full/src/asset/icon/svg/user.svg diff --git a/vue/src/asset/icon/svgo.yml b/vue/full/src/asset/icon/svgo.yml similarity index 100% rename from vue/src/asset/icon/svgo.yml rename to vue/full/src/asset/icon/svgo.yml diff --git a/vue/src/asset/style/display.scss b/vue/full/src/asset/style/display.scss similarity index 100% rename from vue/src/asset/style/display.scss rename to vue/full/src/asset/style/display.scss diff --git a/vue/src/asset/style/element-ui.scss b/vue/full/src/asset/style/element-ui.scss similarity index 100% rename from vue/src/asset/style/element-ui.scss rename to vue/full/src/asset/style/element-ui.scss diff --git a/vue/src/asset/style/index.scss b/vue/full/src/asset/style/index.scss similarity index 100% rename from vue/src/asset/style/index.scss rename to vue/full/src/asset/style/index.scss diff --git a/vue/src/asset/style/nprogress.scss b/vue/full/src/asset/style/nprogress.scss similarity index 100% rename from vue/src/asset/style/nprogress.scss rename to vue/full/src/asset/style/nprogress.scss diff --git a/vue/src/asset/style/transition.scss b/vue/full/src/asset/style/transition.scss similarity index 100% rename from vue/src/asset/style/transition.scss rename to vue/full/src/asset/style/transition.scss diff --git a/vue/src/asset/style/variables.scss b/vue/full/src/asset/style/variables.scss similarity index 100% rename from vue/src/asset/style/variables.scss rename to vue/full/src/asset/style/variables.scss diff --git a/vue/src/component/Charts/PieChart.vue b/vue/full/src/component/Charts/PieChart.vue similarity index 100% rename from vue/src/component/Charts/PieChart.vue rename to vue/full/src/component/Charts/PieChart.vue diff --git a/vue/src/component/CollapseCard/index.vue b/vue/full/src/component/CollapseCard/index.vue similarity index 100% rename from vue/src/component/CollapseCard/index.vue rename to vue/full/src/component/CollapseCard/index.vue diff --git a/vue/src/component/Empty/DefaultEmptyImage.vue b/vue/full/src/component/Empty/DefaultEmptyImage.vue similarity index 100% rename from vue/src/component/Empty/DefaultEmptyImage.vue rename to vue/full/src/component/Empty/DefaultEmptyImage.vue diff --git a/vue/src/component/Empty/index.vue b/vue/full/src/component/Empty/index.vue similarity index 100% rename from vue/src/component/Empty/index.vue rename to vue/full/src/component/Empty/index.vue diff --git a/vue/src/component/Empty/style.scss b/vue/full/src/component/Empty/style.scss similarity index 100% rename from vue/src/component/Empty/style.scss rename to vue/full/src/component/Empty/style.scss diff --git a/vue/src/component/ExtraArea/index.vue b/vue/full/src/component/ExtraArea/index.vue similarity index 100% rename from vue/src/component/ExtraArea/index.vue rename to vue/full/src/component/ExtraArea/index.vue diff --git a/vue/src/component/Icon/index.vue b/vue/full/src/component/Icon/index.vue similarity index 100% rename from vue/src/component/Icon/index.vue rename to vue/full/src/component/Icon/index.vue diff --git a/vue/src/component/LinerProgress/index.vue b/vue/full/src/component/LinerProgress/index.vue similarity index 100% rename from vue/src/component/LinerProgress/index.vue rename to vue/full/src/component/LinerProgress/index.vue diff --git a/vue/src/component/LinerProgress/style.scss b/vue/full/src/component/LinerProgress/style.scss similarity index 100% rename from vue/src/component/LinerProgress/style.scss rename to vue/full/src/component/LinerProgress/style.scss diff --git a/vue/src/component/OrgTree/index.vue b/vue/full/src/component/OrgTree/index.vue similarity index 100% rename from vue/src/component/OrgTree/index.vue rename to vue/full/src/component/OrgTree/index.vue diff --git a/vue/src/component/OrgTree/node.vue b/vue/full/src/component/OrgTree/node.vue similarity index 100% rename from vue/src/component/OrgTree/node.vue rename to vue/full/src/component/OrgTree/node.vue diff --git a/vue/src/component/OrgTree/style.scss b/vue/full/src/component/OrgTree/style.scss similarity index 100% rename from vue/src/component/OrgTree/style.scss rename to vue/full/src/component/OrgTree/style.scss diff --git a/vue/src/component/RegionSelector/Tab/index.vue b/vue/full/src/component/RegionSelector/Tab/index.vue similarity index 100% rename from vue/src/component/RegionSelector/Tab/index.vue rename to vue/full/src/component/RegionSelector/Tab/index.vue diff --git a/vue/src/component/RegionSelector/Tab/style.scss b/vue/full/src/component/RegionSelector/Tab/style.scss similarity index 100% rename from vue/src/component/RegionSelector/Tab/style.scss rename to vue/full/src/component/RegionSelector/Tab/style.scss diff --git a/vue/src/component/RegionSelector/Tree/TreeDialog.vue b/vue/full/src/component/RegionSelector/Tree/TreeDialog.vue similarity index 100% rename from vue/src/component/RegionSelector/Tree/TreeDialog.vue rename to vue/full/src/component/RegionSelector/Tree/TreeDialog.vue diff --git a/vue/src/component/RegionSelector/Tree/index.vue b/vue/full/src/component/RegionSelector/Tree/index.vue similarity index 100% rename from vue/src/component/RegionSelector/Tree/index.vue rename to vue/full/src/component/RegionSelector/Tree/index.vue diff --git a/vue/src/component/RegionSelector/index.vue b/vue/full/src/component/RegionSelector/index.vue similarity index 100% rename from vue/src/component/RegionSelector/index.vue rename to vue/full/src/component/RegionSelector/index.vue diff --git a/vue/src/component/RegionSelector/mixin.js b/vue/full/src/component/RegionSelector/mixin.js similarity index 100% rename from vue/src/component/RegionSelector/mixin.js rename to vue/full/src/component/RegionSelector/mixin.js diff --git a/vue/src/component/RegionSelector/store.js b/vue/full/src/component/RegionSelector/store.js similarity index 100% rename from vue/src/component/RegionSelector/store.js rename to vue/full/src/component/RegionSelector/store.js diff --git a/vue/src/component/Skeleton/constant.js b/vue/full/src/component/Skeleton/constant.js similarity index 100% rename from vue/src/component/Skeleton/constant.js rename to vue/full/src/component/Skeleton/constant.js diff --git a/vue/src/component/Skeleton/index.vue b/vue/full/src/component/Skeleton/index.vue similarity index 100% rename from vue/src/component/Skeleton/index.vue rename to vue/full/src/component/Skeleton/index.vue diff --git a/vue/src/component/Skeleton/style.scss b/vue/full/src/component/Skeleton/style.scss similarity index 100% rename from vue/src/component/Skeleton/style.scss rename to vue/full/src/component/Skeleton/style.scss diff --git a/vue/src/component/TreeSelect/index.vue b/vue/full/src/component/TreeSelect/index.vue similarity index 100% rename from vue/src/component/TreeSelect/index.vue rename to vue/full/src/component/TreeSelect/index.vue diff --git a/vue/src/component/UploadFile/index.vue b/vue/full/src/component/UploadFile/index.vue similarity index 100% rename from vue/src/component/UploadFile/index.vue rename to vue/full/src/component/UploadFile/index.vue diff --git a/vue/src/component/UploadFile/style.scss b/vue/full/src/component/UploadFile/style.scss similarity index 100% rename from vue/src/component/UploadFile/style.scss rename to vue/full/src/component/UploadFile/style.scss diff --git a/vue/src/component/abstract/Dialog/LoadingMask.vue b/vue/full/src/component/abstract/Dialog/LoadingMask.vue similarity index 100% rename from vue/src/component/abstract/Dialog/LoadingMask.vue rename to vue/full/src/component/abstract/Dialog/LoadingMask.vue diff --git a/vue/src/component/abstract/Dialog/index.vue b/vue/full/src/component/abstract/Dialog/index.vue similarity index 100% rename from vue/src/component/abstract/Dialog/index.vue rename to vue/full/src/component/abstract/Dialog/index.vue diff --git a/vue/src/component/abstract/Dialog/style.scss b/vue/full/src/component/abstract/Dialog/style.scss similarity index 100% rename from vue/src/component/abstract/Dialog/style.scss rename to vue/full/src/component/abstract/Dialog/style.scss diff --git a/vue/src/component/abstract/Form/index.vue b/vue/full/src/component/abstract/Form/index.vue similarity index 100% rename from vue/src/component/abstract/Form/index.vue rename to vue/full/src/component/abstract/Form/index.vue diff --git a/vue/src/component/abstract/Form/item.vue b/vue/full/src/component/abstract/Form/item.vue similarity index 100% rename from vue/src/component/abstract/Form/item.vue rename to vue/full/src/component/abstract/Form/item.vue diff --git a/vue/src/component/abstract/Pagination/index.vue b/vue/full/src/component/abstract/Pagination/index.vue similarity index 100% rename from vue/src/component/abstract/Pagination/index.vue rename to vue/full/src/component/abstract/Pagination/index.vue diff --git a/vue/src/component/abstract/Table/index.vue b/vue/full/src/component/abstract/Table/index.vue similarity index 100% rename from vue/src/component/abstract/Table/index.vue rename to vue/full/src/component/abstract/Table/index.vue diff --git a/vue/src/component/biz/CategoryTree/index.vue b/vue/full/src/component/biz/CategoryTree/index.vue similarity index 100% rename from vue/src/component/biz/CategoryTree/index.vue rename to vue/full/src/component/biz/CategoryTree/index.vue diff --git a/vue/src/component/biz/UserSelector/SimpleMultipleUserSelector.vue b/vue/full/src/component/biz/UserSelector/SimpleMultipleUserSelector.vue similarity index 100% rename from vue/src/component/biz/UserSelector/SimpleMultipleUserSelector.vue rename to vue/full/src/component/biz/UserSelector/SimpleMultipleUserSelector.vue diff --git a/vue/src/component/biz/UserSelector/index.js b/vue/full/src/component/biz/UserSelector/index.js similarity index 100% rename from vue/src/component/biz/UserSelector/index.js rename to vue/full/src/component/biz/UserSelector/index.js diff --git a/vue/src/component/biz/doc/DocHistory.vue b/vue/full/src/component/biz/doc/DocHistory.vue similarity index 100% rename from vue/src/component/biz/doc/DocHistory.vue rename to vue/full/src/component/biz/doc/DocHistory.vue diff --git a/vue/src/component/biz/doc/DocSteps.vue b/vue/full/src/component/biz/doc/DocSteps.vue similarity index 100% rename from vue/src/component/biz/doc/DocSteps.vue rename to vue/full/src/component/biz/doc/DocSteps.vue diff --git a/vue/src/component/checkbox/ColorCheckbox.vue b/vue/full/src/component/checkbox/ColorCheckbox.vue similarity index 100% rename from vue/src/component/checkbox/ColorCheckbox.vue rename to vue/full/src/component/checkbox/ColorCheckbox.vue diff --git a/vue/src/component/checkbox/Group.vue b/vue/full/src/component/checkbox/Group.vue similarity index 100% rename from vue/src/component/checkbox/Group.vue rename to vue/full/src/component/checkbox/Group.vue diff --git a/vue/src/component/checkbox/ImgCheckbox.vue b/vue/full/src/component/checkbox/ImgCheckbox.vue similarity index 100% rename from vue/src/component/checkbox/ImgCheckbox.vue rename to vue/full/src/component/checkbox/ImgCheckbox.vue diff --git a/vue/src/component/checkbox/common.js b/vue/full/src/component/checkbox/common.js similarity index 100% rename from vue/src/component/checkbox/common.js rename to vue/full/src/component/checkbox/common.js diff --git a/vue/src/component/editor/JsonEditor.vue b/vue/full/src/component/editor/JsonEditor.vue similarity index 100% rename from vue/src/component/editor/JsonEditor.vue rename to vue/full/src/component/editor/JsonEditor.vue diff --git a/vue/src/component/editor/RichTextEditor.vue b/vue/full/src/component/editor/RichTextEditor.vue similarity index 100% rename from vue/src/component/editor/RichTextEditor.vue rename to vue/full/src/component/editor/RichTextEditor.vue diff --git a/vue/src/component/form/Anchor/index.vue b/vue/full/src/component/form/Anchor/index.vue similarity index 100% rename from vue/src/component/form/Anchor/index.vue rename to vue/full/src/component/form/Anchor/index.vue diff --git a/vue/src/component/form/Search/index.vue b/vue/full/src/component/form/Search/index.vue similarity index 100% rename from vue/src/component/form/Search/index.vue rename to vue/full/src/component/form/Search/index.vue diff --git a/vue/src/component/form/ValidateInfo/index.vue b/vue/full/src/component/form/ValidateInfo/index.vue similarity index 100% rename from vue/src/component/form/ValidateInfo/index.vue rename to vue/full/src/component/form/ValidateInfo/index.vue diff --git a/vue/src/component/form/ValidateInfo/style.scss b/vue/full/src/component/form/ValidateInfo/style.scss similarity index 100% rename from vue/src/component/form/ValidateInfo/style.scss rename to vue/full/src/component/form/ValidateInfo/style.scss diff --git a/vue/src/component/menu/ContextMenu/index.vue b/vue/full/src/component/menu/ContextMenu/index.vue similarity index 100% rename from vue/src/component/menu/ContextMenu/index.vue rename to vue/full/src/component/menu/ContextMenu/index.vue diff --git a/vue/src/component/menu/NavMenu/index.vue b/vue/full/src/component/menu/NavMenu/index.vue similarity index 100% rename from vue/src/component/menu/NavMenu/index.vue rename to vue/full/src/component/menu/NavMenu/index.vue diff --git a/vue/src/component/menu/NavMenu/item.vue b/vue/full/src/component/menu/NavMenu/item.vue similarity index 100% rename from vue/src/component/menu/NavMenu/item.vue rename to vue/full/src/component/menu/NavMenu/item.vue diff --git a/vue/src/component/menu/NavMenu/style.scss b/vue/full/src/component/menu/NavMenu/style.scss similarity index 100% rename from vue/src/component/menu/NavMenu/style.scss rename to vue/full/src/component/menu/NavMenu/style.scss diff --git a/vue/src/component/menu/NavMenu/theme-dark.scss b/vue/full/src/component/menu/NavMenu/theme-dark.scss similarity index 100% rename from vue/src/component/menu/NavMenu/theme-dark.scss rename to vue/full/src/component/menu/NavMenu/theme-dark.scss diff --git a/vue/src/component/menu/NavMenu/theme-light.scss b/vue/full/src/component/menu/NavMenu/theme-light.scss similarity index 100% rename from vue/src/component/menu/NavMenu/theme-light.scss rename to vue/full/src/component/menu/NavMenu/theme-light.scss diff --git a/vue/src/config/index.js b/vue/full/src/config/index.js similarity index 100% rename from vue/src/config/index.js rename to vue/full/src/config/index.js diff --git a/vue/src/directive/dragDialog.js b/vue/full/src/directive/dragDialog.js similarity index 100% rename from vue/src/directive/dragDialog.js rename to vue/full/src/directive/dragDialog.js diff --git a/vue/src/directive/index.js b/vue/full/src/directive/index.js similarity index 100% rename from vue/src/directive/index.js rename to vue/full/src/directive/index.js diff --git a/vue/src/directive/ripple/index.js b/vue/full/src/directive/ripple/index.js similarity index 100% rename from vue/src/directive/ripple/index.js rename to vue/full/src/directive/ripple/index.js diff --git a/vue/src/directive/ripple/style.scss b/vue/full/src/directive/ripple/style.scss similarity index 100% rename from vue/src/directive/ripple/style.scss rename to vue/full/src/directive/ripple/style.scss diff --git a/vue/src/filter/index.js b/vue/full/src/filter/index.js similarity index 100% rename from vue/src/filter/index.js rename to vue/full/src/filter/index.js diff --git a/vue/src/globalMethod/BottomTip/index.js b/vue/full/src/globalMethod/BottomTip/index.js similarity index 100% rename from vue/src/globalMethod/BottomTip/index.js rename to vue/full/src/globalMethod/BottomTip/index.js diff --git a/vue/src/globalMethod/BottomTip/main.vue b/vue/full/src/globalMethod/BottomTip/main.vue similarity index 100% rename from vue/src/globalMethod/BottomTip/main.vue rename to vue/full/src/globalMethod/BottomTip/main.vue diff --git a/vue/src/globalMethod/Guide/index.js b/vue/full/src/globalMethod/Guide/index.js similarity index 100% rename from vue/src/globalMethod/Guide/index.js rename to vue/full/src/globalMethod/Guide/index.js diff --git a/vue/src/globalMethod/Guide/main.vue b/vue/full/src/globalMethod/Guide/main.vue similarity index 100% rename from vue/src/globalMethod/Guide/main.vue rename to vue/full/src/globalMethod/Guide/main.vue diff --git a/vue/src/globalMethod/Guide/style.scss b/vue/full/src/globalMethod/Guide/style.scss similarity index 100% rename from vue/src/globalMethod/Guide/style.scss rename to vue/full/src/globalMethod/Guide/style.scss diff --git a/vue/src/globalMethod/Guide/utils.js b/vue/full/src/globalMethod/Guide/utils.js similarity index 100% rename from vue/src/globalMethod/Guide/utils.js rename to vue/full/src/globalMethod/Guide/utils.js diff --git a/vue/src/globalMethod/ImageViewer/index.js b/vue/full/src/globalMethod/ImageViewer/index.js similarity index 100% rename from vue/src/globalMethod/ImageViewer/index.js rename to vue/full/src/globalMethod/ImageViewer/index.js diff --git a/vue/src/globalMethod/SignautreBoard/index.js b/vue/full/src/globalMethod/SignautreBoard/index.js similarity index 100% rename from vue/src/globalMethod/SignautreBoard/index.js rename to vue/full/src/globalMethod/SignautreBoard/index.js diff --git a/vue/src/globalMethod/SignautreBoard/main.vue b/vue/full/src/globalMethod/SignautreBoard/main.vue similarity index 100% rename from vue/src/globalMethod/SignautreBoard/main.vue rename to vue/full/src/globalMethod/SignautreBoard/main.vue diff --git a/vue/src/globalMethod/Verify/image/btn_move.png b/vue/full/src/globalMethod/Verify/image/btn_move.png similarity index 100% rename from vue/src/globalMethod/Verify/image/btn_move.png rename to vue/full/src/globalMethod/Verify/image/btn_move.png diff --git a/vue/src/globalMethod/Verify/image/btn_stop.png b/vue/full/src/globalMethod/Verify/image/btn_stop.png similarity index 100% rename from vue/src/globalMethod/Verify/image/btn_stop.png rename to vue/full/src/globalMethod/Verify/image/btn_stop.png diff --git a/vue/src/globalMethod/Verify/image/icon_close.png b/vue/full/src/globalMethod/Verify/image/icon_close.png similarity index 100% rename from vue/src/globalMethod/Verify/image/icon_close.png rename to vue/full/src/globalMethod/Verify/image/icon_close.png diff --git a/vue/src/globalMethod/Verify/image/icon_info.png b/vue/full/src/globalMethod/Verify/image/icon_info.png similarity index 100% rename from vue/src/globalMethod/Verify/image/icon_info.png rename to vue/full/src/globalMethod/Verify/image/icon_info.png diff --git a/vue/src/globalMethod/Verify/image/icon_refresh_bottom.png b/vue/full/src/globalMethod/Verify/image/icon_refresh_bottom.png similarity index 100% rename from vue/src/globalMethod/Verify/image/icon_refresh_bottom.png rename to vue/full/src/globalMethod/Verify/image/icon_refresh_bottom.png diff --git a/vue/src/globalMethod/Verify/image/icon_refresh_top.png b/vue/full/src/globalMethod/Verify/image/icon_refresh_top.png similarity index 100% rename from vue/src/globalMethod/Verify/image/icon_refresh_top.png rename to vue/full/src/globalMethod/Verify/image/icon_refresh_top.png diff --git a/vue/src/globalMethod/Verify/image/loading.png b/vue/full/src/globalMethod/Verify/image/loading.png similarity index 100% rename from vue/src/globalMethod/Verify/image/loading.png rename to vue/full/src/globalMethod/Verify/image/loading.png diff --git a/vue/src/globalMethod/Verify/image/track.png b/vue/full/src/globalMethod/Verify/image/track.png similarity index 100% rename from vue/src/globalMethod/Verify/image/track.png rename to vue/full/src/globalMethod/Verify/image/track.png diff --git a/vue/src/globalMethod/Verify/index.js b/vue/full/src/globalMethod/Verify/index.js similarity index 100% rename from vue/src/globalMethod/Verify/index.js rename to vue/full/src/globalMethod/Verify/index.js diff --git a/vue/src/globalMethod/Verify/main.vue b/vue/full/src/globalMethod/Verify/main.vue similarity index 100% rename from vue/src/globalMethod/Verify/main.vue rename to vue/full/src/globalMethod/Verify/main.vue diff --git a/vue/src/globalMethod/Verify/style.scss b/vue/full/src/globalMethod/Verify/style.scss similarity index 100% rename from vue/src/globalMethod/Verify/style.scss rename to vue/full/src/globalMethod/Verify/style.scss diff --git a/vue/src/globalMethod/index.js b/vue/full/src/globalMethod/index.js similarity index 100% rename from vue/src/globalMethod/index.js rename to vue/full/src/globalMethod/index.js diff --git a/vue/src/layout/component/Aside/component/MenuSearch.vue b/vue/full/src/layout/component/Aside/component/MenuSearch.vue similarity index 100% rename from vue/src/layout/component/Aside/component/MenuSearch.vue rename to vue/full/src/layout/component/Aside/component/MenuSearch.vue diff --git a/vue/src/layout/component/Aside/component/OnePartRoot.vue b/vue/full/src/layout/component/Aside/component/OnePartRoot.vue similarity index 100% rename from vue/src/layout/component/Aside/component/OnePartRoot.vue rename to vue/full/src/layout/component/Aside/component/OnePartRoot.vue diff --git a/vue/src/layout/component/Aside/component/TwoPartRoot.vue b/vue/full/src/layout/component/Aside/component/TwoPartRoot.vue similarity index 100% rename from vue/src/layout/component/Aside/component/TwoPartRoot.vue rename to vue/full/src/layout/component/Aside/component/TwoPartRoot.vue diff --git a/vue/src/layout/component/Aside/component/TwoPartSub.vue b/vue/full/src/layout/component/Aside/component/TwoPartSub.vue similarity index 100% rename from vue/src/layout/component/Aside/component/TwoPartSub.vue rename to vue/full/src/layout/component/Aside/component/TwoPartSub.vue diff --git a/vue/src/layout/component/Aside/index.vue b/vue/full/src/layout/component/Aside/index.vue similarity index 100% rename from vue/src/layout/component/Aside/index.vue rename to vue/full/src/layout/component/Aside/index.vue diff --git a/vue/src/layout/component/Aside/style.scss b/vue/full/src/layout/component/Aside/style.scss similarity index 100% rename from vue/src/layout/component/Aside/style.scss rename to vue/full/src/layout/component/Aside/style.scss diff --git a/vue/src/layout/component/Aside/theme-dark.scss b/vue/full/src/layout/component/Aside/theme-dark.scss similarity index 100% rename from vue/src/layout/component/Aside/theme-dark.scss rename to vue/full/src/layout/component/Aside/theme-dark.scss diff --git a/vue/src/layout/component/Aside/theme-light.scss b/vue/full/src/layout/component/Aside/theme-light.scss similarity index 100% rename from vue/src/layout/component/Aside/theme-light.scss rename to vue/full/src/layout/component/Aside/theme-light.scss diff --git a/vue/src/layout/component/Hamburger.vue b/vue/full/src/layout/component/Hamburger.vue similarity index 100% rename from vue/src/layout/component/Hamburger.vue rename to vue/full/src/layout/component/Hamburger.vue diff --git a/vue/src/layout/component/Logo.vue b/vue/full/src/layout/component/Logo.vue similarity index 100% rename from vue/src/layout/component/Logo.vue rename to vue/full/src/layout/component/Logo.vue diff --git a/vue/src/layout/component/Navbar/component/Bell.vue b/vue/full/src/layout/component/Navbar/component/Bell.vue similarity index 100% rename from vue/src/layout/component/Navbar/component/Bell.vue rename to vue/full/src/layout/component/Navbar/component/Bell.vue diff --git a/vue/src/layout/component/Navbar/component/HeadMenu.vue b/vue/full/src/layout/component/Navbar/component/HeadMenu.vue similarity index 100% rename from vue/src/layout/component/Navbar/component/HeadMenu.vue rename to vue/full/src/layout/component/Navbar/component/HeadMenu.vue diff --git a/vue/src/layout/component/Navbar/index.vue b/vue/full/src/layout/component/Navbar/index.vue similarity index 100% rename from vue/src/layout/component/Navbar/index.vue rename to vue/full/src/layout/component/Navbar/index.vue diff --git a/vue/src/layout/component/Navbar/style.scss b/vue/full/src/layout/component/Navbar/style.scss similarity index 100% rename from vue/src/layout/component/Navbar/style.scss rename to vue/full/src/layout/component/Navbar/style.scss diff --git a/vue/src/layout/component/Navbar/theme-dark.scss b/vue/full/src/layout/component/Navbar/theme-dark.scss similarity index 100% rename from vue/src/layout/component/Navbar/theme-dark.scss rename to vue/full/src/layout/component/Navbar/theme-dark.scss diff --git a/vue/src/layout/component/Navbar/theme-light.scss b/vue/full/src/layout/component/Navbar/theme-light.scss similarity index 100% rename from vue/src/layout/component/Navbar/theme-light.scss rename to vue/full/src/layout/component/Navbar/theme-light.scss diff --git a/vue/src/layout/component/Page/component/BackToTop.vue b/vue/full/src/layout/component/Page/component/BackToTop.vue similarity index 100% rename from vue/src/layout/component/Page/component/BackToTop.vue rename to vue/full/src/layout/component/Page/component/BackToTop.vue diff --git a/vue/src/layout/component/Page/component/KeepRouterViewAlive.vue b/vue/full/src/layout/component/Page/component/KeepRouterViewAlive.vue similarity index 100% rename from vue/src/layout/component/Page/component/KeepRouterViewAlive.vue rename to vue/full/src/layout/component/Page/component/KeepRouterViewAlive.vue diff --git a/vue/src/layout/component/Page/component/PageFooter.vue b/vue/full/src/layout/component/Page/component/PageFooter.vue similarity index 100% rename from vue/src/layout/component/Page/component/PageFooter.vue rename to vue/full/src/layout/component/Page/component/PageFooter.vue diff --git a/vue/src/layout/component/Page/component/PageHeader.vue b/vue/full/src/layout/component/Page/component/PageHeader.vue similarity index 100% rename from vue/src/layout/component/Page/component/PageHeader.vue rename to vue/full/src/layout/component/Page/component/PageHeader.vue diff --git a/vue/src/layout/component/Page/component/PageView.vue b/vue/full/src/layout/component/Page/component/PageView.vue similarity index 100% rename from vue/src/layout/component/Page/component/PageView.vue rename to vue/full/src/layout/component/Page/component/PageView.vue diff --git a/vue/src/layout/component/Page/component/TagsView/ScrollPanel.vue b/vue/full/src/layout/component/Page/component/TagsView/ScrollPanel.vue similarity index 100% rename from vue/src/layout/component/Page/component/TagsView/ScrollPanel.vue rename to vue/full/src/layout/component/Page/component/TagsView/ScrollPanel.vue diff --git a/vue/src/layout/component/Page/component/TagsView/index.vue b/vue/full/src/layout/component/Page/component/TagsView/index.vue similarity index 100% rename from vue/src/layout/component/Page/component/TagsView/index.vue rename to vue/full/src/layout/component/Page/component/TagsView/index.vue diff --git a/vue/src/layout/component/Page/component/TagsView/style.scss b/vue/full/src/layout/component/Page/component/TagsView/style.scss similarity index 100% rename from vue/src/layout/component/Page/component/TagsView/style.scss rename to vue/full/src/layout/component/Page/component/TagsView/style.scss diff --git a/vue/src/layout/component/Page/index.vue b/vue/full/src/layout/component/Page/index.vue similarity index 100% rename from vue/src/layout/component/Page/index.vue rename to vue/full/src/layout/component/Page/index.vue diff --git a/vue/src/layout/component/SettingDrawer.vue b/vue/full/src/layout/component/SettingDrawer.vue similarity index 100% rename from vue/src/layout/component/SettingDrawer.vue rename to vue/full/src/layout/component/SettingDrawer.vue diff --git a/vue/src/layout/index.vue b/vue/full/src/layout/index.vue similarity index 100% rename from vue/src/layout/index.vue rename to vue/full/src/layout/index.vue diff --git a/vue/src/layout/mixin/decideRouterTransition.js b/vue/full/src/layout/mixin/decideRouterTransition.js similarity index 100% rename from vue/src/layout/mixin/decideRouterTransition.js rename to vue/full/src/layout/mixin/decideRouterTransition.js diff --git a/vue/src/layout/mixin/hamburger.js b/vue/full/src/layout/mixin/hamburger.js similarity index 100% rename from vue/src/layout/mixin/hamburger.js rename to vue/full/src/layout/mixin/hamburger.js diff --git a/vue/src/layout/mixin/menu.js b/vue/full/src/layout/mixin/menu.js similarity index 100% rename from vue/src/layout/mixin/menu.js rename to vue/full/src/layout/mixin/menu.js diff --git a/vue/src/layout/mixin/menuSearch.js b/vue/full/src/layout/mixin/menuSearch.js similarity index 100% rename from vue/src/layout/mixin/menuSearch.js rename to vue/full/src/layout/mixin/menuSearch.js diff --git a/vue/src/layout/mixin/offline.js b/vue/full/src/layout/mixin/offline.js similarity index 100% rename from vue/src/layout/mixin/offline.js rename to vue/full/src/layout/mixin/offline.js diff --git a/vue/src/layout/mixin/tagsViewPersistent.js b/vue/full/src/layout/mixin/tagsViewPersistent.js similarity index 100% rename from vue/src/layout/mixin/tagsViewPersistent.js rename to vue/full/src/layout/mixin/tagsViewPersistent.js diff --git a/vue/src/layout/mixin/tagsViewShortcut.js b/vue/full/src/layout/mixin/tagsViewShortcut.js similarity index 100% rename from vue/src/layout/mixin/tagsViewShortcut.js rename to vue/full/src/layout/mixin/tagsViewShortcut.js diff --git a/vue/src/layout/store/app.js b/vue/full/src/layout/store/app.js similarity index 100% rename from vue/src/layout/store/app.js rename to vue/full/src/layout/store/app.js diff --git a/vue/src/layout/store/aside.js b/vue/full/src/layout/store/aside.js similarity index 100% rename from vue/src/layout/store/aside.js rename to vue/full/src/layout/store/aside.js diff --git a/vue/src/layout/store/navbar.js b/vue/full/src/layout/store/navbar.js similarity index 100% rename from vue/src/layout/store/navbar.js rename to vue/full/src/layout/store/navbar.js diff --git a/vue/src/layout/store/page.js b/vue/full/src/layout/store/page.js similarity index 100% rename from vue/src/layout/store/page.js rename to vue/full/src/layout/store/page.js diff --git a/vue/src/layout/store/tagsView.js b/vue/full/src/layout/store/tagsView.js similarity index 100% rename from vue/src/layout/store/tagsView.js rename to vue/full/src/layout/store/tagsView.js diff --git a/vue/src/layout/util.js b/vue/full/src/layout/util.js similarity index 100% rename from vue/src/layout/util.js rename to vue/full/src/layout/util.js diff --git a/vue/src/layout/布局设计.md b/vue/full/src/layout/布局设计.md similarity index 100% rename from vue/src/layout/布局设计.md rename to vue/full/src/layout/布局设计.md diff --git a/vue/src/main.js b/vue/full/src/main.js similarity index 100% rename from vue/src/main.js rename to vue/full/src/main.js diff --git a/vue/src/mixin/chart/index.js b/vue/full/src/mixin/chart/index.js similarity index 100% rename from vue/src/mixin/chart/index.js rename to vue/full/src/mixin/chart/index.js diff --git a/vue/src/mixin/chart/logic.js b/vue/full/src/mixin/chart/logic.js similarity index 100% rename from vue/src/mixin/chart/logic.js rename to vue/full/src/mixin/chart/logic.js diff --git a/vue/src/mixin/chart/resize.js b/vue/full/src/mixin/chart/resize.js similarity index 100% rename from vue/src/mixin/chart/resize.js rename to vue/full/src/mixin/chart/resize.js diff --git a/vue/src/mixin/dialogMixin.js b/vue/full/src/mixin/dialogMixin.js similarity index 100% rename from vue/src/mixin/dialogMixin.js rename to vue/full/src/mixin/dialogMixin.js diff --git a/vue/src/mixin/docDetailMixin.js b/vue/full/src/mixin/docDetailMixin.js similarity index 100% rename from vue/src/mixin/docDetailMixin.js rename to vue/full/src/mixin/docDetailMixin.js diff --git a/vue/src/mixin/docTableMixin.js b/vue/full/src/mixin/docTableMixin.js similarity index 100% rename from vue/src/mixin/docTableMixin.js rename to vue/full/src/mixin/docTableMixin.js diff --git a/vue/src/mixin/tablePageMixin.js b/vue/full/src/mixin/tablePageMixin.js similarity index 100% rename from vue/src/mixin/tablePageMixin.js rename to vue/full/src/mixin/tablePageMixin.js diff --git a/vue/src/mixin/treePageMixin.js b/vue/full/src/mixin/treePageMixin.js similarity index 100% rename from vue/src/mixin/treePageMixin.js rename to vue/full/src/mixin/treePageMixin.js diff --git a/vue/src/plugin/canvasAnimation/firework/Particle.js b/vue/full/src/plugin/canvasAnimation/firework/Particle.js similarity index 100% rename from vue/src/plugin/canvasAnimation/firework/Particle.js rename to vue/full/src/plugin/canvasAnimation/firework/Particle.js diff --git a/vue/src/plugin/canvasAnimation/firework/Rocket.js b/vue/full/src/plugin/canvasAnimation/firework/Rocket.js similarity index 100% rename from vue/src/plugin/canvasAnimation/firework/Rocket.js rename to vue/full/src/plugin/canvasAnimation/firework/Rocket.js diff --git a/vue/src/plugin/canvasAnimation/firework/Time.js b/vue/full/src/plugin/canvasAnimation/firework/Time.js similarity index 100% rename from vue/src/plugin/canvasAnimation/firework/Time.js rename to vue/full/src/plugin/canvasAnimation/firework/Time.js diff --git a/vue/src/plugin/canvasAnimation/firework/Trail.js b/vue/full/src/plugin/canvasAnimation/firework/Trail.js similarity index 100% rename from vue/src/plugin/canvasAnimation/firework/Trail.js rename to vue/full/src/plugin/canvasAnimation/firework/Trail.js diff --git a/vue/src/plugin/canvasAnimation/firework/Vector.js b/vue/full/src/plugin/canvasAnimation/firework/Vector.js similarity index 100% rename from vue/src/plugin/canvasAnimation/firework/Vector.js rename to vue/full/src/plugin/canvasAnimation/firework/Vector.js diff --git a/vue/src/plugin/canvasAnimation/firework/index.js b/vue/full/src/plugin/canvasAnimation/firework/index.js similarity index 100% rename from vue/src/plugin/canvasAnimation/firework/index.js rename to vue/full/src/plugin/canvasAnimation/firework/index.js diff --git a/vue/src/plugin/canvasAnimation/godrays/index.js b/vue/full/src/plugin/canvasAnimation/godrays/index.js similarity index 100% rename from vue/src/plugin/canvasAnimation/godrays/index.js rename to vue/full/src/plugin/canvasAnimation/godrays/index.js diff --git a/vue/src/plugin/canvasAnimation/godrays/original.js b/vue/full/src/plugin/canvasAnimation/godrays/original.js similarity index 100% rename from vue/src/plugin/canvasAnimation/godrays/original.js rename to vue/full/src/plugin/canvasAnimation/godrays/original.js diff --git a/vue/src/plugin/canvasAnimation/moveFollowMouse/Particle.js b/vue/full/src/plugin/canvasAnimation/moveFollowMouse/Particle.js similarity index 100% rename from vue/src/plugin/canvasAnimation/moveFollowMouse/Particle.js rename to vue/full/src/plugin/canvasAnimation/moveFollowMouse/Particle.js diff --git a/vue/src/plugin/canvasAnimation/moveFollowMouse/index.js b/vue/full/src/plugin/canvasAnimation/moveFollowMouse/index.js similarity index 100% rename from vue/src/plugin/canvasAnimation/moveFollowMouse/index.js rename to vue/full/src/plugin/canvasAnimation/moveFollowMouse/index.js diff --git a/vue/src/plugin/canvasAnimation/particleBall/Particle.js b/vue/full/src/plugin/canvasAnimation/particleBall/Particle.js similarity index 100% rename from vue/src/plugin/canvasAnimation/particleBall/Particle.js rename to vue/full/src/plugin/canvasAnimation/particleBall/Particle.js diff --git a/vue/src/plugin/canvasAnimation/particleBall/Vector.js b/vue/full/src/plugin/canvasAnimation/particleBall/Vector.js similarity index 100% rename from vue/src/plugin/canvasAnimation/particleBall/Vector.js rename to vue/full/src/plugin/canvasAnimation/particleBall/Vector.js diff --git a/vue/src/plugin/canvasAnimation/particleBall/index.js b/vue/full/src/plugin/canvasAnimation/particleBall/index.js similarity index 100% rename from vue/src/plugin/canvasAnimation/particleBall/index.js rename to vue/full/src/plugin/canvasAnimation/particleBall/index.js diff --git a/vue/src/plugin/canvasAnimation/particleBall/util.js b/vue/full/src/plugin/canvasAnimation/particleBall/util.js similarity index 100% rename from vue/src/plugin/canvasAnimation/particleBall/util.js rename to vue/full/src/plugin/canvasAnimation/particleBall/util.js diff --git a/vue/src/plugin/canvasAnimation/particleNetwork/Particle.js b/vue/full/src/plugin/canvasAnimation/particleNetwork/Particle.js similarity index 100% rename from vue/src/plugin/canvasAnimation/particleNetwork/Particle.js rename to vue/full/src/plugin/canvasAnimation/particleNetwork/Particle.js diff --git a/vue/src/plugin/canvasAnimation/particleNetwork/index.js b/vue/full/src/plugin/canvasAnimation/particleNetwork/index.js similarity index 100% rename from vue/src/plugin/canvasAnimation/particleNetwork/index.js rename to vue/full/src/plugin/canvasAnimation/particleNetwork/index.js diff --git a/vue/src/plugin/canvasAnimation/particleWave/index.js b/vue/full/src/plugin/canvasAnimation/particleWave/index.js similarity index 100% rename from vue/src/plugin/canvasAnimation/particleWave/index.js rename to vue/full/src/plugin/canvasAnimation/particleWave/index.js diff --git a/vue/src/plugin/canvasAnimation/reflectRain/RainDrop.js b/vue/full/src/plugin/canvasAnimation/reflectRain/RainDrop.js similarity index 100% rename from vue/src/plugin/canvasAnimation/reflectRain/RainDrop.js rename to vue/full/src/plugin/canvasAnimation/reflectRain/RainDrop.js diff --git a/vue/src/plugin/canvasAnimation/reflectRain/Vector.js b/vue/full/src/plugin/canvasAnimation/reflectRain/Vector.js similarity index 100% rename from vue/src/plugin/canvasAnimation/reflectRain/Vector.js rename to vue/full/src/plugin/canvasAnimation/reflectRain/Vector.js diff --git a/vue/src/plugin/canvasAnimation/reflectRain/index.js b/vue/full/src/plugin/canvasAnimation/reflectRain/index.js similarity index 100% rename from vue/src/plugin/canvasAnimation/reflectRain/index.js rename to vue/full/src/plugin/canvasAnimation/reflectRain/index.js diff --git a/vue/src/plugin/canvasAnimation/sparkRain/Spark.js b/vue/full/src/plugin/canvasAnimation/sparkRain/Spark.js similarity index 100% rename from vue/src/plugin/canvasAnimation/sparkRain/Spark.js rename to vue/full/src/plugin/canvasAnimation/sparkRain/Spark.js diff --git a/vue/src/plugin/canvasAnimation/sparkRain/index.js b/vue/full/src/plugin/canvasAnimation/sparkRain/index.js similarity index 100% rename from vue/src/plugin/canvasAnimation/sparkRain/index.js rename to vue/full/src/plugin/canvasAnimation/sparkRain/index.js diff --git a/vue/src/plugin/canvasAnimation/sparkRain/util.js b/vue/full/src/plugin/canvasAnimation/sparkRain/util.js similarity index 100% rename from vue/src/plugin/canvasAnimation/sparkRain/util.js rename to vue/full/src/plugin/canvasAnimation/sparkRain/util.js diff --git a/vue/src/plugin/canvasAnimation/sunlight/Particle.js b/vue/full/src/plugin/canvasAnimation/sunlight/Particle.js similarity index 100% rename from vue/src/plugin/canvasAnimation/sunlight/Particle.js rename to vue/full/src/plugin/canvasAnimation/sunlight/Particle.js diff --git a/vue/src/plugin/canvasAnimation/sunlight/index.js b/vue/full/src/plugin/canvasAnimation/sunlight/index.js similarity index 100% rename from vue/src/plugin/canvasAnimation/sunlight/index.js rename to vue/full/src/plugin/canvasAnimation/sunlight/index.js diff --git a/vue/src/plugin/imageCompress/cjpeg.js b/vue/full/src/plugin/imageCompress/cjpeg.js similarity index 100% rename from vue/src/plugin/imageCompress/cjpeg.js rename to vue/full/src/plugin/imageCompress/cjpeg.js diff --git a/vue/src/plugin/imageCompress/pngquant.js b/vue/full/src/plugin/imageCompress/pngquant.js similarity index 100% rename from vue/src/plugin/imageCompress/pngquant.js rename to vue/full/src/plugin/imageCompress/pngquant.js diff --git a/vue/src/plugin/imageCompress/util.js b/vue/full/src/plugin/imageCompress/util.js similarity index 100% rename from vue/src/plugin/imageCompress/util.js rename to vue/full/src/plugin/imageCompress/util.js diff --git a/vue/src/plugin/live2d/index.js b/vue/full/src/plugin/live2d/index.js similarity index 100% rename from vue/src/plugin/live2d/index.js rename to vue/full/src/plugin/live2d/index.js diff --git a/vue/src/plugin/webgl/fluid/Material.js b/vue/full/src/plugin/webgl/fluid/Material.js similarity index 100% rename from vue/src/plugin/webgl/fluid/Material.js rename to vue/full/src/plugin/webgl/fluid/Material.js diff --git a/vue/src/plugin/webgl/fluid/Pointer.js b/vue/full/src/plugin/webgl/fluid/Pointer.js similarity index 100% rename from vue/src/plugin/webgl/fluid/Pointer.js rename to vue/full/src/plugin/webgl/fluid/Pointer.js diff --git a/vue/src/plugin/webgl/fluid/Program.js b/vue/full/src/plugin/webgl/fluid/Program.js similarity index 100% rename from vue/src/plugin/webgl/fluid/Program.js rename to vue/full/src/plugin/webgl/fluid/Program.js diff --git a/vue/src/plugin/webgl/fluid/config.js b/vue/full/src/plugin/webgl/fluid/config.js similarity index 100% rename from vue/src/plugin/webgl/fluid/config.js rename to vue/full/src/plugin/webgl/fluid/config.js diff --git a/vue/src/plugin/webgl/fluid/factory.js b/vue/full/src/plugin/webgl/fluid/factory.js similarity index 100% rename from vue/src/plugin/webgl/fluid/factory.js rename to vue/full/src/plugin/webgl/fluid/factory.js diff --git a/vue/src/plugin/webgl/fluid/index.js b/vue/full/src/plugin/webgl/fluid/index.js similarity index 100% rename from vue/src/plugin/webgl/fluid/index.js rename to vue/full/src/plugin/webgl/fluid/index.js diff --git a/vue/full/src/plugin/webgl/fluid/obj.js b/vue/full/src/plugin/webgl/fluid/obj.js new file mode 100644 index 0000000..9988129 --- /dev/null +++ b/vue/full/src/plugin/webgl/fluid/obj.js @@ -0,0 +1,547 @@ +'use strict' +import { + createDoubleFBO, + createFBO, + downloadURI, + framebufferToTexture, + generateColor, + getResolution, + getWebGLContext, + isMobile, + normalizeColor, + normalizeTexture, + resizeCanvas, + scaleByPixelRatio, + textureToCanvas, + updatePointerDownData, + updatePointerMoveData, + updatePointerUpData, + wrap +} from "./util" +import factory from './factory' +import config from './config' +import Pointer from './Pointer' + +export default class WebGlFluid { + constructor(canvas) { + this.pointers = [new Pointer()] + this.splatStack = [] + this.bloomFrameBuffers = [] + this.lastUpdateTime = Date.now() + this.colorUpdateTimer = 0.0 + + this.canvas = canvas + const {gl, ext} = getWebGLContext(canvas) + this.gl = gl + this.ext = ext + + if (isMobile()) { + config.DYE_RESOLUTION = 512 + } + if (!ext.supportLinearFiltering) { + config.DYE_RESOLUTION = 512 + config.SHADING = false + config.BLOOM = false + config.SUNRAYS = false + } + + this.blit = (() => { + gl.bindBuffer(gl.ARRAY_BUFFER, gl.createBuffer()) + gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([-1, -1, -1, 1, 1, 1, 1, -1]), gl.STATIC_DRAW) + gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, gl.createBuffer()) + gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, new Uint16Array([0, 1, 2, 0, 2, 3]), gl.STATIC_DRAW) + gl.vertexAttribPointer(0, 2, gl.FLOAT, false, 0, 0) + gl.enableVertexAttribArray(0) + + return destination => { + gl.bindFramebuffer(gl.FRAMEBUFFER, destination) + gl.drawElements(gl.TRIANGLES, 6, gl.UNSIGNED_SHORT, 0) + } + })() + + this.factory = factory(gl, ext) + + this.rAF = null + this.stopSign = false + + this.loop = this.loop.bind(this) + this.onMousedown = this.onMousedown.bind(this) + this.onMousemove = this.onMousemove.bind(this) + this.onMouseup = this.onMouseup.bind(this) + this.onTouchstart = this.onTouchstart.bind(this) + this.onTouchmove = this.onTouchmove.bind(this) + this.onTouchend = this.onTouchend.bind(this) + this.onKeydown = this.onKeydown.bind(this) + + this.start() + } + + start() { + this.resize() + this.updateKeywords() + this.initFrameBuffers() + this.multipleSplats(~~(Math.random() * 20) + 5) + this.loop() + + this.canvas.addEventListener('mousedown', this.onMousedown) + this.canvas.addEventListener('mousemove', this.onMousemove) + window.addEventListener('mouseup', this.onMouseup) + + this.canvas.addEventListener('touchstart', this.onTouchstart) + this.canvas.addEventListener('touchmove', this.onTouchmove) + window.addEventListener('touchend', this.onTouchend) + + window.addEventListener('keydown', this.onKeydown) + } + + stop() { + this.canvas.removeAllListeners() + window.removeListener('mouseup', this.onMouseup) + window.removeListener('touchend', this.onTouchend) + window.removeListener('keydown', this.onKeydown) + this.stopSign = true + this.gl.getExtension('WEBGL_lose_context').loseContext() + } + + loop() { + if (this.stopSign) { + this.rAF && window.cancelAnimationFrame(this.rAF) + return + } + const dt = this.calcDeltaTime() + if (this.resize()) this.initFrameBuffers() + this.updateColors(dt) + this.applyInputs() + if (!config.PAUSED) this.step(dt) + this.render(null) + this.rAF = window.requestAnimationFrame(this.loop) + } + + resize() { + return resizeCanvas(this.canvas) + } + + onMousedown(e) { + const posX = scaleByPixelRatio(e.offsetX) + const posY = scaleByPixelRatio(e.offsetY) + let pointer = this.pointers.find(p => p.id === -1) + if (!pointer) pointer = new Pointer() + updatePointerDownData(this.canvas, pointer, -1, posX, posY) + } + + onMousemove(e) { + const posX = scaleByPixelRatio(e.offsetX) + const posY = scaleByPixelRatio(e.offsetY) + updatePointerMoveData(this.canvas, this.pointers[0], posX, posY) + } + + onMouseup() { + updatePointerUpData(this.pointers[0]) + } + + onTouchstart(e) { + e.preventDefault() + const touches = e.targetTouches + while (touches.length >= this.pointers.length) this.pointers.push(new Pointer()) + for (let i = 0; i < touches.length; i++) { + let posX = scaleByPixelRatio(touches[i].pageX) + let posY = scaleByPixelRatio(touches[i].pageY) + updatePointerDownData(this.canvas, this.pointers[i + 1], touches[i].identifier, posX, posY) + } + } + + onTouchmove(e) { + e.preventDefault() + const touches = e.targetTouches + for (let i = 0; i < touches.length; i++) { + const posX = scaleByPixelRatio(touches[i].pageX) + const posY = scaleByPixelRatio(touches[i].pageY) + updatePointerMoveData(this.canvas, this.pointers[i + 1], posX, posY) + } + } + + onTouchend(e) { + for (const {identifier} of e.changedTouches) { + const pointer = this.pointers.find(p => p.id === identifier) + updatePointerUpData(pointer) + } + } + + onKeydown(e) { + if (e.code === 'KeyP') config.PAUSED = !config.PAUSED + if (e.key === ' ') this.splatStack.push(~~(Math.random() * 20) + 5) + if (e.key === 's') this.captureScreenShot() + } + + initFrameBuffers() { + const simRes = getResolution(this.gl, config.SIM_RESOLUTION) + const dyeRes = getResolution(this.gl, config.DYE_RESOLUTION) + + const texType = this.ext.halfFloatTexType + const rgba = this.ext.formatRGBA + const rg = this.ext.formatRG + const r = this.ext.formatR + const filtering = this.ext.supportLinearFiltering ? this.gl.LINEAR : this.gl.NEAREST + + if (this.dye == null) this.dye = createDoubleFBO(this.gl, dyeRes.width, dyeRes.height, rgba.internalFormat, rgba.format, texType, filtering) + else this.dye = this.resizeDoubleFBO(this.dye, dyeRes.width, dyeRes.height, rgba.internalFormat, rgba.format, texType, filtering) + + if (this.velocity == null) this.velocity = createDoubleFBO(this.gl, simRes.width, simRes.height, rg.internalFormat, rg.format, texType, filtering) + else this.velocity = this.resizeDoubleFBO(this.velocity, simRes.width, simRes.height, rg.internalFormat, rg.format, texType, filtering) + + this.divergence = createFBO(this.gl, simRes.width, simRes.height, r.internalFormat, r.format, texType, this.gl.NEAREST) + this.curl = createFBO(this.gl, simRes.width, simRes.height, r.internalFormat, r.format, texType, this.gl.NEAREST) + this.pressure = createDoubleFBO(this.gl, simRes.width, simRes.height, r.internalFormat, r.format, texType, this.gl.NEAREST) + + this.initBloomFrameBuffers() + this.initSunraysFrameBuffers() + } + + initBloomFrameBuffers() { + let res = getResolution(this.gl, config.BLOOM_RESOLUTION) + + const texType = this.ext.halfFloatTexType + const rgba = this.ext.formatRGBA + const filtering = this.ext.supportLinearFiltering ? this.gl.LINEAR : this.gl.NEAREST + + this.bloom = createFBO(this.gl, res.width, res.height, rgba.internalFormat, rgba.format, texType, filtering) + + this.bloomFrameBuffers.length = 0 + for (let i = 0; i < config.BLOOM_ITERATIONS; i++) { + let width = res.width >> (i + 1) + let height = res.height >> (i + 1) + + if (width < 2 || height < 2) break + + let fbo = createFBO(this.gl, width, height, rgba.internalFormat, rgba.format, texType, filtering) + this.bloomFrameBuffers.push(fbo) + } + } + + initSunraysFrameBuffers() { + let res = getResolution(this.gl, config.SUNRAYS_RESOLUTION) + + const texType = this.ext.halfFloatTexType + const r = this.ext.formatR + const filtering = this.ext.supportLinearFiltering ? this.gl.LINEAR : this.gl.NEAREST + + this.sunrays = createFBO(this.gl, res.width, res.height, r.internalFormat, r.format, texType, filtering) + this.sunraysTemp = createFBO(this.gl, res.width, res.height, r.internalFormat, r.format, texType, filtering) + } + + resizeFBO(target, w, h, internalFormat, format, type, param) { + let newFBO = createFBO(this.gl, w, h, internalFormat, format, type, param) + this.factory.copyProgram.bind(this.gl) + this.gl.uniform1i(this.factory.copyProgram.uniforms.uTexture, target.attach(0)) + this.blit(newFBO.fbo) + return newFBO + } + + resizeDoubleFBO(target, w, h, internalFormat, format, type, param) { + if (target.width === w && target.height === h) return target + target.read = this.resizeFBO(target.read, w, h, internalFormat, format, type, param) + target.write = createFBO(this.gl, w, h, internalFormat, format, type, param) + target.width = w + target.height = h + target.texelSizeX = 1.0 / w + target.texelSizeY = 1.0 / h + return target + } + + updateKeywords() { + const displayKeywords = [] + config.SHADING && displayKeywords.push('SHADING') + config.BLOOM && displayKeywords.push('BLOOM') + config.SUNRAYS && displayKeywords.push('SUNRAYS') + this.factory.displayMaterial.setKeywords(this.gl, displayKeywords) + } + + calcDeltaTime() { + const now = Date.now() + this.lastUpdateTime = now + return Math.min((now - this.lastUpdateTime) / 1000, 0.016666) + } + + updateColors(dt) { + if (!config.COLORFUL) return + + this.colorUpdateTimer += dt * config.COLOR_UPDATE_SPEED + if (this.colorUpdateTimer >= 1) { + this.colorUpdateTimer = wrap(this.colorUpdateTimer, 0, 1) + this.pointers.forEach(p => p.color = generateColor()) + } + } + + applyInputs() { + if (this.splatStack.length > 0) this.multipleSplats(this.splatStack.pop()) + + this.pointers.forEach(p => { + if (p.moved) { + p.moved = false + this.splatPointer(p) + } + }) + } + + step(dt) { + const gl = this.gl + + gl.disable(gl.BLEND) + gl.viewport(0, 0, this.velocity.width, this.velocity.height) + + this.factory.curlProgram.bind(gl) + gl.uniform2f(this.factory.curlProgram.uniforms.texelSize, this.velocity.texelSizeX, this.velocity.texelSizeY) + gl.uniform1i(this.factory.curlProgram.uniforms.uVelocity, this.velocity.read.attach(0)) + this.blit(this.curl.fbo) + + this.factory.vorticityProgram.bind(gl) + gl.uniform2f(this.factory.vorticityProgram.uniforms.texelSize, this.velocity.texelSizeX, this.velocity.texelSizeY) + gl.uniform1i(this.factory.vorticityProgram.uniforms.uVelocity, this.velocity.read.attach(0)) + gl.uniform1i(this.factory.vorticityProgram.uniforms.uCurl, this.curl.attach(1)) + gl.uniform1f(this.factory.vorticityProgram.uniforms.curl, config.CURL) + gl.uniform1f(this.factory.vorticityProgram.uniforms.dt, dt) + this.blit(this.velocity.write.fbo) + this.velocity.swap() + + this.factory.divergenceProgram.bind(gl) + gl.uniform2f(this.factory.divergenceProgram.uniforms.texelSize, this.velocity.texelSizeX, this.velocity.texelSizeY) + gl.uniform1i(this.factory.divergenceProgram.uniforms.uVelocity, this.velocity.read.attach(0)) + this.blit(this.divergence.fbo) + + this.factory.clearProgram.bind(gl) + gl.uniform1i(this.factory.clearProgram.uniforms.uTexture, this.pressure.read.attach(0)) + gl.uniform1f(this.factory.clearProgram.uniforms.value, config.PRESSURE) + this.blit(this.pressure.write.fbo) + this.pressure.swap() + + this.factory.pressureProgram.bind(gl) + gl.uniform2f(this.factory.pressureProgram.uniforms.texelSize, this.velocity.texelSizeX, this.velocity.texelSizeY) + gl.uniform1i(this.factory.pressureProgram.uniforms.uDivergence, this.divergence.attach(0)) + for (let i = 0; i < config.PRESSURE_ITERATIONS; i++) { + gl.uniform1i(this.factory.pressureProgram.uniforms.uPressure, this.pressure.read.attach(1)) + this.blit(this.pressure.write.fbo) + this.pressure.swap() + } + + this.factory.gradienSubtractProgram.bind(gl) + gl.uniform2f(this.factory.gradienSubtractProgram.uniforms.texelSize, this.velocity.texelSizeX, this.velocity.texelSizeY) + gl.uniform1i(this.factory.gradienSubtractProgram.uniforms.uPressure, this.pressure.read.attach(0)) + gl.uniform1i(this.factory.gradienSubtractProgram.uniforms.uVelocity, this.velocity.read.attach(1)) + this.blit(this.velocity.write.fbo) + this.velocity.swap() + + this.factory.advectionProgram.bind(gl) + gl.uniform2f(this.factory.advectionProgram.uniforms.texelSize, this.velocity.texelSizeX, this.velocity.texelSizeY) + if (!this.ext.supportLinearFiltering) { + gl.uniform2f(this.factory.advectionProgram.uniforms.dyeTexelSize, this.velocity.texelSizeX, this.velocity.texelSizeY) + } + let velocityId = this.velocity.read.attach(0) + gl.uniform1i(this.factory.advectionProgram.uniforms.uVelocity, velocityId) + gl.uniform1i(this.factory.advectionProgram.uniforms.uSource, velocityId) + gl.uniform1f(this.factory.advectionProgram.uniforms.dt, dt) + gl.uniform1f(this.factory.advectionProgram.uniforms.dissipation, config.VELOCITY_DISSIPATION) + this.blit(this.velocity.write.fbo) + this.velocity.swap() + + gl.viewport(0, 0, this.dye.width, this.dye.height) + + if (!this.ext.supportLinearFiltering) { + gl.uniform2f(this.factory.advectionProgram.uniforms.dyeTexelSize, this.dye.texelSizeX, this.dye.texelSizeY) + } + gl.uniform1i(this.factory.advectionProgram.uniforms.uVelocity, this.velocity.read.attach(0)) + gl.uniform1i(this.factory.advectionProgram.uniforms.uSource, this.dye.read.attach(1)) + gl.uniform1f(this.factory.advectionProgram.uniforms.dissipation, config.DENSITY_DISSIPATION) + this.blit(this.dye.write.fbo) + this.dye.swap() + } + + render(target) { + const gl = this.gl + + if (config.BLOOM) { + this.applyBloom(this.dye.read, this.bloom) + } + if (config.SUNRAYS) { + this.applySunrays(this.dye.read, this.dye.write, this.sunrays) + this.blur(this.sunrays, this.sunraysTemp, 1) + } + + if (target == null || !config.TRANSPARENT) { + gl.blendFunc(gl.ONE, gl.ONE_MINUS_SRC_ALPHA) + gl.enable(gl.BLEND) + } + else gl.disable(gl.BLEND) + + let width = target == null ? gl.drawingBufferWidth : target.width + let height = target == null ? gl.drawingBufferHeight : target.height + gl.viewport(0, 0, width, height) + + let fbo = target == null ? null : target.fbo + if (!config.TRANSPARENT) this.drawColor(fbo, normalizeColor(config.BACK_COLOR)) + if (target == null && config.TRANSPARENT) this.drawCheckerboard(fbo) + this.drawDisplay(fbo, width, height) + } + + drawColor(fbo, color) { + this.factory.colorProgram.bind(this.gl) + this.gl.uniform4f(this.factory.colorProgram.uniforms.color, color.r, color.g, color.b, 1) + this.blit(fbo) + } + + drawCheckerboard(fbo) { + this.factory.checkerboardProgram.bind(this.gl) + this.gl.uniform1f(this.factory.checkerboardProgram.uniforms.aspectRatio, this.canvas.width / this.canvas.height) + this.blit(fbo) + } + + drawDisplay(fbo, width, height) { + const gl = this.gl + + this.factory.displayMaterial.bind(gl) + if (config.SHADING) gl.uniform2f(this.factory.displayMaterial.uniforms.texelSize, 1.0 / width, 1.0 / height) + gl.uniform1i(this.factory.displayMaterial.uniforms.uTexture, this.dye.read.attach(0)) + if (config.BLOOM) { + gl.uniform1i(this.factory.displayMaterial.uniforms.uBloom, this.bloom.attach(1)) + } + if (config.SUNRAYS) gl.uniform1i(this.factory.displayMaterial.uniforms.uSunrays, this.sunrays.attach(3)) + this.blit(fbo) + } + + applyBloom(source, destination) { + if (this.bloomFrameBuffers.length < 2) return + + const gl = this.gl + + let last = destination + + gl.disable(gl.BLEND) + this.factory.bloomPrefilterProgram.bind(gl) + let knee = config.BLOOM_THRESHOLD * config.BLOOM_SOFT_KNEE + 0.0001 + let curve0 = config.BLOOM_THRESHOLD - knee + let curve1 = knee * 2 + let curve2 = 0.25 / knee + gl.uniform3f(this.factory.bloomPrefilterProgram.uniforms.curve, curve0, curve1, curve2) + gl.uniform1f(this.factory.bloomPrefilterProgram.uniforms.threshold, config.BLOOM_THRESHOLD) + gl.uniform1i(this.factory.bloomPrefilterProgram.uniforms.uTexture, source.attach(0)) + gl.viewport(0, 0, last.width, last.height) + this.blit(last.fbo) + + this.factory.bloomBlurProgram.bind(gl) + for (let i = 0; i < this.bloomFrameBuffers.length; i++) { + let dest = this.bloomFrameBuffers[i] + gl.uniform2f(this.factory.bloomBlurProgram.uniforms.texelSize, last.texelSizeX, last.texelSizeY) + gl.uniform1i(this.factory.bloomBlurProgram.uniforms.uTexture, last.attach(0)) + gl.viewport(0, 0, dest.width, dest.height) + this.blit(dest.fbo) + last = dest + } + + gl.blendFunc(gl.ONE, gl.ONE) + gl.enable(gl.BLEND) + + for (let i = this.bloomFrameBuffers.length - 2; i >= 0; i--) { + let baseTex = this.bloomFrameBuffers[i] + gl.uniform2f(this.factory.bloomBlurProgram.uniforms.texelSize, last.texelSizeX, last.texelSizeY) + gl.uniform1i(this.factory.bloomBlurProgram.uniforms.uTexture, last.attach(0)) + gl.viewport(0, 0, baseTex.width, baseTex.height) + this.blit(baseTex.fbo) + last = baseTex + } + + gl.disable(gl.BLEND) + this.factory.bloomFinalProgram.bind(gl) + gl.uniform2f(this.factory.bloomFinalProgram.uniforms.texelSize, last.texelSizeX, last.texelSizeY) + gl.uniform1i(this.factory.bloomFinalProgram.uniforms.uTexture, last.attach(0)) + gl.uniform1f(this.factory.bloomFinalProgram.uniforms.intensity, config.BLOOM_INTENSITY) + gl.viewport(0, 0, destination.width, destination.height) + this.blit(destination.fbo) + } + + applySunrays(source, mask, destination) { + const gl = this.gl + gl.disable(gl.BLEND) + this.factory.sunraysMaskProgram.bind(gl) + gl.uniform1i(this.factory.sunraysMaskProgram.uniforms.uTexture, source.attach(0)) + gl.viewport(0, 0, mask.width, mask.height) + this.blit(mask.fbo) + + this.factory.sunraysProgram.bind(gl) + gl.uniform1f(this.factory.sunraysProgram.uniforms.weight, config.SUNRAYS_WEIGHT) + gl.uniform1i(this.factory.sunraysProgram.uniforms.uTexture, mask.attach(0)) + gl.viewport(0, 0, destination.width, destination.height) + this.blit(destination.fbo) + } + + blur(target, temp, iterations) { + const gl = this.gl + this.factory.blurProgram.bind(gl) + for (let i = 0; i < iterations; i++) { + gl.uniform2f(this.factory.blurProgram.uniforms.texelSize, target.texelSizeX, 0.0) + gl.uniform1i(this.factory.blurProgram.uniforms.uTexture, target.attach(0)) + this.blit(temp.fbo) + + gl.uniform2f(this.factory.blurProgram.uniforms.texelSize, 0.0, target.texelSizeY) + gl.uniform1i(this.factory.blurProgram.uniforms.uTexture, temp.attach(0)) + this.blit(target.fbo) + } + } + + splatPointer(pointer) { + let dx = pointer.deltaX * config.SPLAT_FORCE + let dy = pointer.deltaY * config.SPLAT_FORCE + this.splat(pointer.texcoordX, pointer.texcoordY, dx, dy, pointer.color) + } + + multipleSplats(amount) { + for (let i = 0; i < amount; i++) { + const color = generateColor() + color.r *= 10.0 + color.g *= 10.0 + color.b *= 10.0 + const x = Math.random() + const y = Math.random() + const dx = 1000 * (Math.random() - 0.5) + const dy = 1000 * (Math.random() - 0.5) + this.splat(x, y, dx, dy, color) + } + } + + splat(x, y, dx, dy, color) { + const gl = this.gl + gl.viewport(0, 0, this.velocity.width, this.velocity.height) + this.factory.splatProgram.bind(gl) + gl.uniform1i(this.factory.splatProgram.uniforms.uTarget, this.velocity.read.attach(0)) + gl.uniform1f(this.factory.splatProgram.uniforms.aspectRatio, this.canvas.width / this.canvas.height) + gl.uniform2f(this.factory.splatProgram.uniforms.point, x, y) + gl.uniform3f(this.factory.splatProgram.uniforms.color, dx, dy, 0.0) + gl.uniform1f(this.factory.splatProgram.uniforms.radius, this.correctRadius(config.SPLAT_RADIUS / 100.0)) + this.blit(this.velocity.write.fbo) + this.velocity.swap() + + gl.viewport(0, 0, this.dye.width, this.dye.height) + gl.uniform1i(this.factory.splatProgram.uniforms.uTarget, this.dye.read.attach(0)) + gl.uniform3f(this.factory.splatProgram.uniforms.color, color.r, color.g, color.b) + this.blit(this.dye.write.fbo) + this.dye.swap() + } + + correctRadius(radius) { + const aspectRatio = this.canvas.width / this.canvas.height + if (aspectRatio > 1) radius *= aspectRatio + return radius + } + + captureScreenShot() { + const gl = this.gl + let res = getResolution(gl, config.CAPTURE_RESOLUTION) + let target = createFBO(gl, res.width, res.height, this.ext.formatRGBA.internalFormat, this.ext.formatRGBA.format, this.ext.halfFloatTexType, gl.NEAREST) + this.render(target) + + let texture = framebufferToTexture(gl, target) + texture = normalizeTexture(texture, target.width, target.height) + + const dataUri = textureToCanvas(texture, target.width, target.height).toDataURL() + downloadURI('fluid.png', dataUri) + URL.revokeObjectURL(dataUri) + } +} diff --git a/vue/src/plugin/webgl/fluid/shader.js b/vue/full/src/plugin/webgl/fluid/shader.js similarity index 100% rename from vue/src/plugin/webgl/fluid/shader.js rename to vue/full/src/plugin/webgl/fluid/shader.js diff --git a/vue/src/plugin/webgl/fluid/util.js b/vue/full/src/plugin/webgl/fluid/util.js similarity index 100% rename from vue/src/plugin/webgl/fluid/util.js rename to vue/full/src/plugin/webgl/fluid/util.js diff --git a/vue/src/router/define.js b/vue/full/src/router/define.js similarity index 100% rename from vue/src/router/define.js rename to vue/full/src/router/define.js diff --git a/vue/src/router/guardian/accessControl.js b/vue/full/src/router/guardian/accessControl.js similarity index 100% rename from vue/src/router/guardian/accessControl.js rename to vue/full/src/router/guardian/accessControl.js diff --git a/vue/src/router/guardian/avoidReuse.js b/vue/full/src/router/guardian/avoidReuse.js similarity index 100% rename from vue/src/router/guardian/avoidReuse.js rename to vue/full/src/router/guardian/avoidReuse.js diff --git a/vue/src/router/guardian/iframe.js b/vue/full/src/router/guardian/iframe.js similarity index 100% rename from vue/src/router/guardian/iframe.js rename to vue/full/src/router/guardian/iframe.js diff --git a/vue/src/router/guardian/index.js b/vue/full/src/router/guardian/index.js similarity index 100% rename from vue/src/router/guardian/index.js rename to vue/full/src/router/guardian/index.js diff --git a/vue/src/router/guardian/nprogress.js b/vue/full/src/router/guardian/nprogress.js similarity index 100% rename from vue/src/router/guardian/nprogress.js rename to vue/full/src/router/guardian/nprogress.js diff --git a/vue/src/router/guardian/setTitle.js b/vue/full/src/router/guardian/setTitle.js similarity index 100% rename from vue/src/router/guardian/setTitle.js rename to vue/full/src/router/guardian/setTitle.js diff --git a/vue/src/router/index.js b/vue/full/src/router/index.js similarity index 100% rename from vue/src/router/index.js rename to vue/full/src/router/index.js diff --git a/vue/src/router/module/admin/child/default.js b/vue/full/src/router/module/admin/child/default.js similarity index 100% rename from vue/src/router/module/admin/child/default.js rename to vue/full/src/router/module/admin/child/default.js diff --git a/vue/src/router/module/admin/child/message.js b/vue/full/src/router/module/admin/child/message.js similarity index 100% rename from vue/src/router/module/admin/child/message.js rename to vue/full/src/router/module/admin/child/message.js diff --git a/vue/src/router/module/admin/child/purchase.js b/vue/full/src/router/module/admin/child/purchase.js similarity index 100% rename from vue/src/router/module/admin/child/purchase.js rename to vue/full/src/router/module/admin/child/purchase.js diff --git a/vue/src/router/module/admin/child/sell.js b/vue/full/src/router/module/admin/child/sell.js similarity index 100% rename from vue/src/router/module/admin/child/sell.js rename to vue/full/src/router/module/admin/child/sell.js diff --git a/vue/src/router/module/admin/child/stock.js b/vue/full/src/router/module/admin/child/stock.js similarity index 100% rename from vue/src/router/module/admin/child/stock.js rename to vue/full/src/router/module/admin/child/stock.js diff --git a/vue/src/router/module/admin/child/system.js b/vue/full/src/router/module/admin/child/system.js similarity index 100% rename from vue/src/router/module/admin/child/system.js rename to vue/full/src/router/module/admin/child/system.js diff --git a/vue/src/router/module/admin/index.js b/vue/full/src/router/module/admin/index.js similarity index 100% rename from vue/src/router/module/admin/index.js rename to vue/full/src/router/module/admin/index.js diff --git a/vue/src/router/module/dev/child/uploadFileDev.js b/vue/full/src/router/module/dev/child/uploadFileDev.js similarity index 100% rename from vue/src/router/module/dev/child/uploadFileDev.js rename to vue/full/src/router/module/dev/child/uploadFileDev.js diff --git a/vue/src/router/module/dev/index.js b/vue/full/src/router/module/dev/index.js similarity index 100% rename from vue/src/router/module/dev/index.js rename to vue/full/src/router/module/dev/index.js diff --git a/vue/src/router/module/doc/index.js b/vue/full/src/router/module/doc/index.js similarity index 100% rename from vue/src/router/module/doc/index.js rename to vue/full/src/router/module/doc/index.js diff --git a/vue/src/router/module/example/child/component.js b/vue/full/src/router/module/example/child/component.js similarity index 100% rename from vue/src/router/module/example/child/component.js rename to vue/full/src/router/module/example/child/component.js diff --git a/vue/src/router/module/example/child/cool.js b/vue/full/src/router/module/example/child/cool.js similarity index 100% rename from vue/src/router/module/example/child/cool.js rename to vue/full/src/router/module/example/child/cool.js diff --git a/vue/src/router/module/example/child/directive.js b/vue/full/src/router/module/example/child/directive.js similarity index 100% rename from vue/src/router/module/example/child/directive.js rename to vue/full/src/router/module/example/child/directive.js diff --git a/vue/src/router/module/example/child/globalMethod.js b/vue/full/src/router/module/example/child/globalMethod.js similarity index 100% rename from vue/src/router/module/example/child/globalMethod.js rename to vue/full/src/router/module/example/child/globalMethod.js diff --git a/vue/src/router/module/example/child/icon.js b/vue/full/src/router/module/example/child/icon.js similarity index 100% rename from vue/src/router/module/example/child/icon.js rename to vue/full/src/router/module/example/child/icon.js diff --git a/vue/src/router/module/example/child/iframe.js b/vue/full/src/router/module/example/child/iframe.js similarity index 100% rename from vue/src/router/module/example/child/iframe.js rename to vue/full/src/router/module/example/child/iframe.js diff --git a/vue/src/router/module/example/child/test.js b/vue/full/src/router/module/example/child/test.js similarity index 100% rename from vue/src/router/module/example/child/test.js rename to vue/full/src/router/module/example/child/test.js diff --git a/vue/src/router/module/example/index.js b/vue/full/src/router/module/example/index.js similarity index 100% rename from vue/src/router/module/example/index.js rename to vue/full/src/router/module/example/index.js diff --git a/vue/src/router/module/index.js b/vue/full/src/router/module/index.js similarity index 100% rename from vue/src/router/module/index.js rename to vue/full/src/router/module/index.js diff --git a/vue/src/router/util.js b/vue/full/src/router/util.js similarity index 100% rename from vue/src/router/util.js rename to vue/full/src/router/util.js diff --git a/vue/src/store/index.js b/vue/full/src/store/index.js similarity index 100% rename from vue/src/store/index.js rename to vue/full/src/store/index.js diff --git a/vue/src/store/module/app.js b/vue/full/src/store/module/app.js similarity index 100% rename from vue/src/store/module/app.js rename to vue/full/src/store/module/app.js diff --git a/vue/src/store/module/dataCache.js b/vue/full/src/store/module/dataCache.js similarity index 100% rename from vue/src/store/module/dataCache.js rename to vue/full/src/store/module/dataCache.js diff --git a/vue/src/store/module/message.js b/vue/full/src/store/module/message.js similarity index 100% rename from vue/src/store/module/message.js rename to vue/full/src/store/module/message.js diff --git a/vue/src/store/module/needSearch.js b/vue/full/src/store/module/needSearch.js similarity index 100% rename from vue/src/store/module/needSearch.js rename to vue/full/src/store/module/needSearch.js diff --git a/vue/src/store/module/resource.js b/vue/full/src/store/module/resource.js similarity index 100% rename from vue/src/store/module/resource.js rename to vue/full/src/store/module/resource.js diff --git a/vue/src/store/module/socket.js b/vue/full/src/store/module/socket.js similarity index 100% rename from vue/src/store/module/socket.js rename to vue/full/src/store/module/socket.js diff --git a/vue/src/store/module/user.js b/vue/full/src/store/module/user.js similarity index 100% rename from vue/src/store/module/user.js rename to vue/full/src/store/module/user.js diff --git a/vue/src/store/util.js b/vue/full/src/store/util.js similarity index 100% rename from vue/src/store/util.js rename to vue/full/src/store/util.js diff --git a/vue/src/util/auth.js b/vue/full/src/util/auth.js similarity index 100% rename from vue/src/util/auth.js rename to vue/full/src/util/auth.js diff --git a/vue/src/util/browser.js b/vue/full/src/util/browser.js similarity index 100% rename from vue/src/util/browser.js rename to vue/full/src/util/browser.js diff --git a/vue/src/util/element-ui/elForm.js b/vue/full/src/util/element-ui/elForm.js similarity index 100% rename from vue/src/util/element-ui/elForm.js rename to vue/full/src/util/element-ui/elForm.js diff --git a/vue/src/util/element-ui/elMenu.js b/vue/full/src/util/element-ui/elMenu.js similarity index 100% rename from vue/src/util/element-ui/elMenu.js rename to vue/full/src/util/element-ui/elMenu.js diff --git a/vue/src/util/element-ui/elTree.js b/vue/full/src/util/element-ui/elTree.js similarity index 100% rename from vue/src/util/element-ui/elTree.js rename to vue/full/src/util/element-ui/elTree.js diff --git a/vue/src/util/excel/common.js b/vue/full/src/util/excel/common.js similarity index 100% rename from vue/src/util/excel/common.js rename to vue/full/src/util/excel/common.js diff --git a/vue/src/util/excel/exceljs.js b/vue/full/src/util/excel/exceljs.js similarity index 100% rename from vue/src/util/excel/exceljs.js rename to vue/full/src/util/excel/exceljs.js diff --git a/vue/src/util/excel/index.js b/vue/full/src/util/excel/index.js similarity index 100% rename from vue/src/util/excel/index.js rename to vue/full/src/util/excel/index.js diff --git a/vue/src/util/file.js b/vue/full/src/util/file.js similarity index 100% rename from vue/src/util/file.js rename to vue/full/src/util/file.js diff --git a/vue/src/util/index.js b/vue/full/src/util/index.js similarity index 100% rename from vue/src/util/index.js rename to vue/full/src/util/index.js diff --git a/vue/src/util/math.js b/vue/full/src/util/math.js similarity index 100% rename from vue/src/util/math.js rename to vue/full/src/util/math.js diff --git a/vue/src/util/message.js b/vue/full/src/util/message.js similarity index 100% rename from vue/src/util/message.js rename to vue/full/src/util/message.js diff --git a/vue/src/util/observable.js b/vue/full/src/util/observable.js similarity index 100% rename from vue/src/util/observable.js rename to vue/full/src/util/observable.js diff --git a/vue/src/util/route.js b/vue/full/src/util/route.js similarity index 100% rename from vue/src/util/route.js rename to vue/full/src/util/route.js diff --git a/vue/src/util/secret.js b/vue/full/src/util/secret.js similarity index 100% rename from vue/src/util/secret.js rename to vue/full/src/util/secret.js diff --git a/vue/src/util/storage.js b/vue/full/src/util/storage.js similarity index 100% rename from vue/src/util/storage.js rename to vue/full/src/util/storage.js diff --git a/vue/src/util/tree.js b/vue/full/src/util/tree.js similarity index 100% rename from vue/src/util/tree.js rename to vue/full/src/util/tree.js diff --git a/vue/src/util/validate.js b/vue/full/src/util/validate.js similarity index 100% rename from vue/src/util/validate.js rename to vue/full/src/util/validate.js diff --git a/vue/src/util/vue.js b/vue/full/src/util/vue.js similarity index 100% rename from vue/src/util/vue.js rename to vue/full/src/util/vue.js diff --git a/vue/src/util/worker.js b/vue/full/src/util/worker.js similarity index 100% rename from vue/src/util/worker.js rename to vue/full/src/util/worker.js diff --git a/vue/src/view/_app/403.vue b/vue/full/src/view/_app/403.vue similarity index 100% rename from vue/src/view/_app/403.vue rename to vue/full/src/view/_app/403.vue diff --git a/vue/src/view/_app/404.vue b/vue/full/src/view/_app/404.vue similarity index 100% rename from vue/src/view/_app/404.vue rename to vue/full/src/view/_app/404.vue diff --git a/vue/src/view/_app/500.vue b/vue/full/src/view/_app/500.vue similarity index 100% rename from vue/src/view/_app/500.vue rename to vue/full/src/view/_app/500.vue diff --git a/vue/src/view/_app/login/LoginForm.vue b/vue/full/src/view/_app/login/LoginForm.vue similarity index 100% rename from vue/src/view/_app/login/LoginForm.vue rename to vue/full/src/view/_app/login/LoginForm.vue diff --git a/vue/src/view/_app/login/RegisterForm.vue b/vue/full/src/view/_app/login/RegisterForm.vue similarity index 100% rename from vue/src/view/_app/login/RegisterForm.vue rename to vue/full/src/view/_app/login/RegisterForm.vue diff --git a/vue/src/view/_app/login/SetAnimation.vue b/vue/full/src/view/_app/login/SetAnimation.vue similarity index 100% rename from vue/src/view/_app/login/SetAnimation.vue rename to vue/full/src/view/_app/login/SetAnimation.vue diff --git a/vue/src/view/_app/login/index.vue b/vue/full/src/view/_app/login/index.vue similarity index 100% rename from vue/src/view/_app/login/index.vue rename to vue/full/src/view/_app/login/index.vue diff --git a/vue/src/view/_app/login/style.scss b/vue/full/src/view/_app/login/style.scss similarity index 100% rename from vue/src/view/_app/login/style.scss rename to vue/full/src/view/_app/login/style.scss diff --git a/vue/src/view/_app/redirect.vue b/vue/full/src/view/_app/redirect.vue similarity index 100% rename from vue/src/view/_app/redirect.vue rename to vue/full/src/view/_app/redirect.vue diff --git a/vue/src/view/_common/DetailPage/index.vue b/vue/full/src/view/_common/DetailPage/index.vue similarity index 100% rename from vue/src/view/_common/DetailPage/index.vue rename to vue/full/src/view/_common/DetailPage/index.vue diff --git a/vue/src/view/_common/DetailPage/style.scss b/vue/full/src/view/_common/DetailPage/style.scss similarity index 100% rename from vue/src/view/_common/DetailPage/style.scss rename to vue/full/src/view/_common/DetailPage/style.scss diff --git a/vue/src/view/_common/ExceptionPage/index.vue b/vue/full/src/view/_common/ExceptionPage/index.vue similarity index 100% rename from vue/src/view/_common/ExceptionPage/index.vue rename to vue/full/src/view/_common/ExceptionPage/index.vue diff --git a/vue/src/view/_common/ExceptionPage/style.scss b/vue/full/src/view/_common/ExceptionPage/style.scss similarity index 100% rename from vue/src/view/_common/ExceptionPage/style.scss rename to vue/full/src/view/_common/ExceptionPage/style.scss diff --git a/vue/src/view/_common/ListPage/autoAdaptHeightMixin.js b/vue/full/src/view/_common/ListPage/autoAdaptHeightMixin.js similarity index 100% rename from vue/src/view/_common/ListPage/autoAdaptHeightMixin.js rename to vue/full/src/view/_common/ListPage/autoAdaptHeightMixin.js diff --git a/vue/src/view/_common/ListPage/index.vue b/vue/full/src/view/_common/ListPage/index.vue similarity index 100% rename from vue/src/view/_common/ListPage/index.vue rename to vue/full/src/view/_common/ListPage/index.vue diff --git a/vue/src/view/_common/SkeletonPage/index.vue b/vue/full/src/view/_common/SkeletonPage/index.vue similarity index 100% rename from vue/src/view/_common/SkeletonPage/index.vue rename to vue/full/src/view/_common/SkeletonPage/index.vue diff --git a/vue/src/view/_common/SkeletonPage/style.scss b/vue/full/src/view/_common/SkeletonPage/style.scss similarity index 100% rename from vue/src/view/_common/SkeletonPage/style.scss rename to vue/full/src/view/_common/SkeletonPage/style.scss diff --git a/vue/src/view/admin/index/component/DailyFinishOrderStat.vue b/vue/full/src/view/admin/index/component/DailyFinishOrderStat.vue similarity index 100% rename from vue/src/view/admin/index/component/DailyFinishOrderStat.vue rename to vue/full/src/view/admin/index/component/DailyFinishOrderStat.vue diff --git a/vue/src/view/admin/index/component/DailyProfitStat.vue b/vue/full/src/view/admin/index/component/DailyProfitStat.vue similarity index 100% rename from vue/src/view/admin/index/component/DailyProfitStat.vue rename to vue/full/src/view/admin/index/component/DailyProfitStat.vue diff --git a/vue/src/view/admin/index/component/PanelGroup/PanelGroupItem.vue b/vue/full/src/view/admin/index/component/PanelGroup/PanelGroupItem.vue similarity index 100% rename from vue/src/view/admin/index/component/PanelGroup/PanelGroupItem.vue rename to vue/full/src/view/admin/index/component/PanelGroup/PanelGroupItem.vue diff --git a/vue/src/view/admin/index/component/PanelGroup/index.vue b/vue/full/src/view/admin/index/component/PanelGroup/index.vue similarity index 100% rename from vue/src/view/admin/index/component/PanelGroup/index.vue rename to vue/full/src/view/admin/index/component/PanelGroup/index.vue diff --git a/vue/src/view/admin/index/component/TotalProfitGoods.vue b/vue/full/src/view/admin/index/component/TotalProfitGoods.vue similarity index 100% rename from vue/src/view/admin/index/component/TotalProfitGoods.vue rename to vue/full/src/view/admin/index/component/TotalProfitGoods.vue diff --git a/vue/src/view/admin/index/indexPage.vue b/vue/full/src/view/admin/index/indexPage.vue similarity index 100% rename from vue/src/view/admin/index/indexPage.vue rename to vue/full/src/view/admin/index/indexPage.vue diff --git a/vue/src/view/admin/message/manage/EditDialog.vue b/vue/full/src/view/admin/message/manage/EditDialog.vue similarity index 100% rename from vue/src/view/admin/message/manage/EditDialog.vue rename to vue/full/src/view/admin/message/manage/EditDialog.vue diff --git a/vue/src/view/admin/message/manage/indexPage.vue b/vue/full/src/view/admin/message/manage/indexPage.vue similarity index 100% rename from vue/src/view/admin/message/manage/indexPage.vue rename to vue/full/src/view/admin/message/manage/indexPage.vue diff --git a/vue/src/view/admin/message/user/AutoHidden.vue b/vue/full/src/view/admin/message/user/AutoHidden.vue similarity index 100% rename from vue/src/view/admin/message/user/AutoHidden.vue rename to vue/full/src/view/admin/message/user/AutoHidden.vue diff --git a/vue/src/view/admin/message/user/MessageStream.vue b/vue/full/src/view/admin/message/user/MessageStream.vue similarity index 100% rename from vue/src/view/admin/message/user/MessageStream.vue rename to vue/full/src/view/admin/message/user/MessageStream.vue diff --git a/vue/src/view/admin/message/user/indexPage.vue b/vue/full/src/view/admin/message/user/indexPage.vue similarity index 100% rename from vue/src/view/admin/message/user/indexPage.vue rename to vue/full/src/view/admin/message/user/indexPage.vue diff --git a/vue/src/view/admin/purchase/inbound/component/OrderSelector.vue b/vue/full/src/view/admin/purchase/inbound/component/OrderSelector.vue similarity index 100% rename from vue/src/view/admin/purchase/inbound/component/OrderSelector.vue rename to vue/full/src/view/admin/purchase/inbound/component/OrderSelector.vue diff --git a/vue/src/view/admin/purchase/inbound/detailPage.vue b/vue/full/src/view/admin/purchase/inbound/detailPage.vue similarity index 100% rename from vue/src/view/admin/purchase/inbound/detailPage.vue rename to vue/full/src/view/admin/purchase/inbound/detailPage.vue diff --git a/vue/src/view/admin/purchase/inbound/indexPage.vue b/vue/full/src/view/admin/purchase/inbound/indexPage.vue similarity index 100% rename from vue/src/view/admin/purchase/inbound/indexPage.vue rename to vue/full/src/view/admin/purchase/inbound/indexPage.vue diff --git a/vue/src/view/admin/purchase/order/component/CategorySelector.vue b/vue/full/src/view/admin/purchase/order/component/CategorySelector.vue similarity index 100% rename from vue/src/view/admin/purchase/order/component/CategorySelector.vue rename to vue/full/src/view/admin/purchase/order/component/CategorySelector.vue diff --git a/vue/src/view/admin/purchase/order/component/SupplierSelector.vue b/vue/full/src/view/admin/purchase/order/component/SupplierSelector.vue similarity index 100% rename from vue/src/view/admin/purchase/order/component/SupplierSelector.vue rename to vue/full/src/view/admin/purchase/order/component/SupplierSelector.vue diff --git a/vue/src/view/admin/purchase/order/detailPage.vue b/vue/full/src/view/admin/purchase/order/detailPage.vue similarity index 100% rename from vue/src/view/admin/purchase/order/detailPage.vue rename to vue/full/src/view/admin/purchase/order/detailPage.vue diff --git a/vue/src/view/admin/purchase/order/indexPage.vue b/vue/full/src/view/admin/purchase/order/indexPage.vue similarity index 100% rename from vue/src/view/admin/purchase/order/indexPage.vue rename to vue/full/src/view/admin/purchase/order/indexPage.vue diff --git a/vue/src/view/admin/sell/order/component/CustomerSelector.vue b/vue/full/src/view/admin/sell/order/component/CustomerSelector.vue similarity index 100% rename from vue/src/view/admin/sell/order/component/CustomerSelector.vue rename to vue/full/src/view/admin/sell/order/component/CustomerSelector.vue diff --git a/vue/src/view/admin/sell/order/component/StockSelector.vue b/vue/full/src/view/admin/sell/order/component/StockSelector.vue similarity index 100% rename from vue/src/view/admin/sell/order/component/StockSelector.vue rename to vue/full/src/view/admin/sell/order/component/StockSelector.vue diff --git a/vue/src/view/admin/sell/order/detailPage.vue b/vue/full/src/view/admin/sell/order/detailPage.vue similarity index 100% rename from vue/src/view/admin/sell/order/detailPage.vue rename to vue/full/src/view/admin/sell/order/detailPage.vue diff --git a/vue/src/view/admin/sell/order/indexPage.vue b/vue/full/src/view/admin/sell/order/indexPage.vue similarity index 100% rename from vue/src/view/admin/sell/order/indexPage.vue rename to vue/full/src/view/admin/sell/order/indexPage.vue diff --git a/vue/src/view/admin/sell/outbound/component/OrderSelector.vue b/vue/full/src/view/admin/sell/outbound/component/OrderSelector.vue similarity index 100% rename from vue/src/view/admin/sell/outbound/component/OrderSelector.vue rename to vue/full/src/view/admin/sell/outbound/component/OrderSelector.vue diff --git a/vue/src/view/admin/sell/outbound/component/StockSelector.vue b/vue/full/src/view/admin/sell/outbound/component/StockSelector.vue similarity index 100% rename from vue/src/view/admin/sell/outbound/component/StockSelector.vue rename to vue/full/src/view/admin/sell/outbound/component/StockSelector.vue diff --git a/vue/src/view/admin/sell/outbound/detailPage.vue b/vue/full/src/view/admin/sell/outbound/detailPage.vue similarity index 100% rename from vue/src/view/admin/sell/outbound/detailPage.vue rename to vue/full/src/view/admin/sell/outbound/detailPage.vue diff --git a/vue/src/view/admin/sell/outbound/indexPage.vue b/vue/full/src/view/admin/sell/outbound/indexPage.vue similarity index 100% rename from vue/src/view/admin/sell/outbound/indexPage.vue rename to vue/full/src/view/admin/sell/outbound/indexPage.vue diff --git a/vue/src/view/admin/stock/current/DetailDialog.vue b/vue/full/src/view/admin/stock/current/DetailDialog.vue similarity index 100% rename from vue/src/view/admin/stock/current/DetailDialog.vue rename to vue/full/src/view/admin/stock/current/DetailDialog.vue diff --git a/vue/src/view/admin/stock/current/indexPage.vue b/vue/full/src/view/admin/stock/current/indexPage.vue similarity index 100% rename from vue/src/view/admin/stock/current/indexPage.vue rename to vue/full/src/view/admin/stock/current/indexPage.vue diff --git a/vue/src/view/admin/system/category/component/Form.vue b/vue/full/src/view/admin/system/category/component/Form.vue similarity index 100% rename from vue/src/view/admin/system/category/component/Form.vue rename to vue/full/src/view/admin/system/category/component/Form.vue diff --git a/vue/src/view/admin/system/category/component/List.vue b/vue/full/src/view/admin/system/category/component/List.vue similarity index 100% rename from vue/src/view/admin/system/category/component/List.vue rename to vue/full/src/view/admin/system/category/component/List.vue diff --git a/vue/src/view/admin/system/category/indexPage.vue b/vue/full/src/view/admin/system/category/indexPage.vue similarity index 100% rename from vue/src/view/admin/system/category/indexPage.vue rename to vue/full/src/view/admin/system/category/indexPage.vue diff --git a/vue/src/view/admin/system/customer/EditDialog.vue b/vue/full/src/view/admin/system/customer/EditDialog.vue similarity index 100% rename from vue/src/view/admin/system/customer/EditDialog.vue rename to vue/full/src/view/admin/system/customer/EditDialog.vue diff --git a/vue/src/view/admin/system/customer/indexPage.vue b/vue/full/src/view/admin/system/customer/indexPage.vue similarity index 100% rename from vue/src/view/admin/system/customer/indexPage.vue rename to vue/full/src/view/admin/system/customer/indexPage.vue diff --git a/vue/src/view/admin/system/department/component/EditDialog.vue b/vue/full/src/view/admin/system/department/component/EditDialog.vue similarity index 100% rename from vue/src/view/admin/system/department/component/EditDialog.vue rename to vue/full/src/view/admin/system/department/component/EditDialog.vue diff --git a/vue/src/view/admin/system/department/component/OrgTreeView.vue b/vue/full/src/view/admin/system/department/component/OrgTreeView.vue similarity index 100% rename from vue/src/view/admin/system/department/component/OrgTreeView.vue rename to vue/full/src/view/admin/system/department/component/OrgTreeView.vue diff --git a/vue/src/view/admin/system/department/component/ZoomControl.vue b/vue/full/src/view/admin/system/department/component/ZoomControl.vue similarity index 100% rename from vue/src/view/admin/system/department/component/ZoomControl.vue rename to vue/full/src/view/admin/system/department/component/ZoomControl.vue diff --git a/vue/src/view/admin/system/department/indexPage.vue b/vue/full/src/view/admin/system/department/indexPage.vue similarity index 100% rename from vue/src/view/admin/system/department/indexPage.vue rename to vue/full/src/view/admin/system/department/indexPage.vue diff --git a/vue/src/view/admin/system/menu/common.js b/vue/full/src/view/admin/system/menu/common.js similarity index 100% rename from vue/src/view/admin/system/menu/common.js rename to vue/full/src/view/admin/system/menu/common.js diff --git a/vue/src/view/admin/system/menu/indexPage.vue b/vue/full/src/view/admin/system/menu/indexPage.vue similarity index 100% rename from vue/src/view/admin/system/menu/indexPage.vue rename to vue/full/src/view/admin/system/menu/indexPage.vue diff --git a/vue/src/view/admin/system/role/EditDialog.vue b/vue/full/src/view/admin/system/role/EditDialog.vue similarity index 100% rename from vue/src/view/admin/system/role/EditDialog.vue rename to vue/full/src/view/admin/system/role/EditDialog.vue diff --git a/vue/src/view/admin/system/role/indexPage.vue b/vue/full/src/view/admin/system/role/indexPage.vue similarity index 100% rename from vue/src/view/admin/system/role/indexPage.vue rename to vue/full/src/view/admin/system/role/indexPage.vue diff --git a/vue/src/view/admin/system/supplier/EditDialog.vue b/vue/full/src/view/admin/system/supplier/EditDialog.vue similarity index 100% rename from vue/src/view/admin/system/supplier/EditDialog.vue rename to vue/full/src/view/admin/system/supplier/EditDialog.vue diff --git a/vue/src/view/admin/system/supplier/indexPage.vue b/vue/full/src/view/admin/system/supplier/indexPage.vue similarity index 100% rename from vue/src/view/admin/system/supplier/indexPage.vue rename to vue/full/src/view/admin/system/supplier/indexPage.vue diff --git a/vue/src/view/admin/system/user/component/DepartmentSelector.vue b/vue/full/src/view/admin/system/user/component/DepartmentSelector.vue similarity index 100% rename from vue/src/view/admin/system/user/component/DepartmentSelector.vue rename to vue/full/src/view/admin/system/user/component/DepartmentSelector.vue diff --git a/vue/src/view/admin/system/user/component/EditDialog.vue b/vue/full/src/view/admin/system/user/component/EditDialog.vue similarity index 100% rename from vue/src/view/admin/system/user/component/EditDialog.vue rename to vue/full/src/view/admin/system/user/component/EditDialog.vue diff --git a/vue/src/view/admin/system/user/component/RoleSelector.vue b/vue/full/src/view/admin/system/user/component/RoleSelector.vue similarity index 100% rename from vue/src/view/admin/system/user/component/RoleSelector.vue rename to vue/full/src/view/admin/system/user/component/RoleSelector.vue diff --git a/vue/src/view/admin/system/user/indexPage.vue b/vue/full/src/view/admin/system/user/indexPage.vue similarity index 100% rename from vue/src/view/admin/system/user/indexPage.vue rename to vue/full/src/view/admin/system/user/indexPage.vue diff --git a/vue/src/view/admin/userCenter/component/Account.vue b/vue/full/src/view/admin/userCenter/component/Account.vue similarity index 100% rename from vue/src/view/admin/userCenter/component/Account.vue rename to vue/full/src/view/admin/userCenter/component/Account.vue diff --git a/vue/src/view/admin/userCenter/component/Avatar.vue b/vue/full/src/view/admin/userCenter/component/Avatar.vue similarity index 100% rename from vue/src/view/admin/userCenter/component/Avatar.vue rename to vue/full/src/view/admin/userCenter/component/Avatar.vue diff --git a/vue/src/view/admin/userCenter/component/LoginHistory.vue b/vue/full/src/view/admin/userCenter/component/LoginHistory.vue similarity index 100% rename from vue/src/view/admin/userCenter/component/LoginHistory.vue rename to vue/full/src/view/admin/userCenter/component/LoginHistory.vue diff --git a/vue/src/view/admin/userCenter/component/UserAction.vue b/vue/full/src/view/admin/userCenter/component/UserAction.vue similarity index 100% rename from vue/src/view/admin/userCenter/component/UserAction.vue rename to vue/full/src/view/admin/userCenter/component/UserAction.vue diff --git a/vue/src/view/admin/userCenter/component/UserCard.vue b/vue/full/src/view/admin/userCenter/component/UserCard.vue similarity index 100% rename from vue/src/view/admin/userCenter/component/UserCard.vue rename to vue/full/src/view/admin/userCenter/component/UserCard.vue diff --git a/vue/src/view/admin/userCenter/indexPage.vue b/vue/full/src/view/admin/userCenter/indexPage.vue similarity index 100% rename from vue/src/view/admin/userCenter/indexPage.vue rename to vue/full/src/view/admin/userCenter/indexPage.vue diff --git a/vue/src/view/dev/uploadFileDev.vue b/vue/full/src/view/dev/uploadFileDev.vue similarity index 100% rename from vue/src/view/dev/uploadFileDev.vue rename to vue/full/src/view/dev/uploadFileDev.vue diff --git a/vue/src/view/example/component/regionSelectorPage.vue b/vue/full/src/view/example/component/regionSelectorPage.vue similarity index 100% rename from vue/src/view/example/component/regionSelectorPage.vue rename to vue/full/src/view/example/component/regionSelectorPage.vue diff --git a/vue/src/view/example/component/skeletonPage.vue b/vue/full/src/view/example/component/skeletonPage.vue similarity index 100% rename from vue/src/view/example/component/skeletonPage.vue rename to vue/full/src/view/example/component/skeletonPage.vue diff --git a/vue/src/view/example/component/treeSelectPage.vue b/vue/full/src/view/example/component/treeSelectPage.vue similarity index 100% rename from vue/src/view/example/component/treeSelectPage.vue rename to vue/full/src/view/example/component/treeSelectPage.vue diff --git a/vue/src/view/example/component/uploadPage.vue b/vue/full/src/view/example/component/uploadPage.vue similarity index 100% rename from vue/src/view/example/component/uploadPage.vue rename to vue/full/src/view/example/component/uploadPage.vue diff --git a/vue/src/view/example/cool/fluidPage.vue b/vue/full/src/view/example/cool/fluidPage.vue similarity index 100% rename from vue/src/view/example/cool/fluidPage.vue rename to vue/full/src/view/example/cool/fluidPage.vue diff --git a/vue/src/view/example/cool/l2dPage.vue b/vue/full/src/view/example/cool/l2dPage.vue similarity index 100% rename from vue/src/view/example/cool/l2dPage.vue rename to vue/full/src/view/example/cool/l2dPage.vue diff --git a/vue/src/view/example/directive/dragDialogPage.vue b/vue/full/src/view/example/directive/dragDialogPage.vue similarity index 100% rename from vue/src/view/example/directive/dragDialogPage.vue rename to vue/full/src/view/example/directive/dragDialogPage.vue diff --git a/vue/src/view/example/directive/ripplePage.vue b/vue/full/src/view/example/directive/ripplePage.vue similarity index 100% rename from vue/src/view/example/directive/ripplePage.vue rename to vue/full/src/view/example/directive/ripplePage.vue diff --git a/vue/src/view/example/globalMethod/bottomTipPage.vue b/vue/full/src/view/example/globalMethod/bottomTipPage.vue similarity index 100% rename from vue/src/view/example/globalMethod/bottomTipPage.vue rename to vue/full/src/view/example/globalMethod/bottomTipPage.vue diff --git a/vue/src/view/example/globalMethod/guidePage.vue b/vue/full/src/view/example/globalMethod/guidePage.vue similarity index 100% rename from vue/src/view/example/globalMethod/guidePage.vue rename to vue/full/src/view/example/globalMethod/guidePage.vue diff --git a/vue/src/view/example/globalMethod/imageViewerPage.vue b/vue/full/src/view/example/globalMethod/imageViewerPage.vue similarity index 100% rename from vue/src/view/example/globalMethod/imageViewerPage.vue rename to vue/full/src/view/example/globalMethod/imageViewerPage.vue diff --git a/vue/src/view/example/globalMethod/messagePage.vue b/vue/full/src/view/example/globalMethod/messagePage.vue similarity index 100% rename from vue/src/view/example/globalMethod/messagePage.vue rename to vue/full/src/view/example/globalMethod/messagePage.vue diff --git a/vue/src/view/example/globalMethod/signaturePage.vue b/vue/full/src/view/example/globalMethod/signaturePage.vue similarity index 100% rename from vue/src/view/example/globalMethod/signaturePage.vue rename to vue/full/src/view/example/globalMethod/signaturePage.vue diff --git a/vue/src/view/example/globalMethod/verifyPage.vue b/vue/full/src/view/example/globalMethod/verifyPage.vue similarity index 100% rename from vue/src/view/example/globalMethod/verifyPage.vue rename to vue/full/src/view/example/globalMethod/verifyPage.vue diff --git a/vue/src/view/example/icon/element-icon.js b/vue/full/src/view/example/icon/element-icon.js similarity index 100% rename from vue/src/view/example/icon/element-icon.js rename to vue/full/src/view/example/icon/element-icon.js diff --git a/vue/src/view/example/icon/indexPage.vue b/vue/full/src/view/example/icon/indexPage.vue similarity index 100% rename from vue/src/view/example/icon/indexPage.vue rename to vue/full/src/view/example/icon/indexPage.vue diff --git a/vue/src/view/example/test/cache/detailPage.vue b/vue/full/src/view/example/test/cache/detailPage.vue similarity index 100% rename from vue/src/view/example/test/cache/detailPage.vue rename to vue/full/src/view/example/test/cache/detailPage.vue diff --git a/vue/src/view/example/test/develop/component/ApiSpeedTest.vue b/vue/full/src/view/example/test/develop/component/ApiSpeedTest.vue similarity index 100% rename from vue/src/view/example/test/develop/component/ApiSpeedTest.vue rename to vue/full/src/view/example/test/develop/component/ApiSpeedTest.vue diff --git a/vue/src/view/example/test/develop/component/ExportExcelTest.vue b/vue/full/src/view/example/test/develop/component/ExportExcelTest.vue similarity index 100% rename from vue/src/view/example/test/develop/component/ExportExcelTest.vue rename to vue/full/src/view/example/test/develop/component/ExportExcelTest.vue diff --git a/vue/src/view/example/test/develop/component/ImageCompressTest.vue b/vue/full/src/view/example/test/develop/component/ImageCompressTest.vue similarity index 100% rename from vue/src/view/example/test/develop/component/ImageCompressTest.vue rename to vue/full/src/view/example/test/develop/component/ImageCompressTest.vue diff --git a/vue/src/view/example/test/develop/component/WebsocketTest.vue b/vue/full/src/view/example/test/develop/component/WebsocketTest.vue similarity index 100% rename from vue/src/view/example/test/develop/component/WebsocketTest.vue rename to vue/full/src/view/example/test/develop/component/WebsocketTest.vue diff --git a/vue/src/view/example/test/develop/indexPage.vue b/vue/full/src/view/example/test/develop/indexPage.vue similarity index 100% rename from vue/src/view/example/test/develop/indexPage.vue rename to vue/full/src/view/example/test/develop/indexPage.vue diff --git a/vue/vue.config.js b/vue/full/vue.config.js similarity index 100% rename from vue/vue.config.js rename to vue/full/vue.config.js diff --git a/vue/template/.gitignore b/vue/template/.gitignore new file mode 100644 index 0000000..929eb65 --- /dev/null +++ b/vue/template/.gitignore @@ -0,0 +1,22 @@ +.DS_Store +node_modules +/dist +/test + +# local env files +.env.local +.env.*.local + +# Log files +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# Editor directories and files +.idea +.vscode +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/vue/template/babel.config.js b/vue/template/babel.config.js new file mode 100644 index 0000000..c94e729 --- /dev/null +++ b/vue/template/babel.config.js @@ -0,0 +1,5 @@ +module.exports = { + presets: [ + '@vue/cli-plugin-babel/preset' + ] +} diff --git a/vue/template/element-ui-personal/component/Menu/MenuItem.vue b/vue/template/element-ui-personal/component/Menu/MenuItem.vue new file mode 100644 index 0000000..cbe6fa7 --- /dev/null +++ b/vue/template/element-ui-personal/component/Menu/MenuItem.vue @@ -0,0 +1,74 @@ + + + diff --git a/vue/template/element-ui-personal/component/Menu/Submenu.vue b/vue/template/element-ui-personal/component/Menu/Submenu.vue new file mode 100644 index 0000000..f83a589 --- /dev/null +++ b/vue/template/element-ui-personal/component/Menu/Submenu.vue @@ -0,0 +1,250 @@ + diff --git a/vue/template/element-ui-personal/component/Menu/mixin.js b/vue/template/element-ui-personal/component/Menu/mixin.js new file mode 100644 index 0000000..71201c5 --- /dev/null +++ b/vue/template/element-ui-personal/component/Menu/mixin.js @@ -0,0 +1,53 @@ +/** + * 在原基础上增加了 inlineIndent 属性,用于确定每级节点的单位缩进距离 + */ +export default { + inject: ['rootMenu'], + + props: { + inlineIndent: {type: Number, default: 20} + }, + + computed: { + indexPath() { + const path = [this.index] + let parent = this.$parent + while (parent.$options.componentName !== 'ElMenu') { + if (parent.index) { + path.unshift(parent.index) + } + parent = parent.$parent + } + return path + }, + + parentMenu() { + let parent = this.$parent + while ( + parent && + ['ElMenu', 'ElSubmenu'].indexOf(parent.$options.componentName) === -1 + ) { + parent = parent.$parent + } + return parent + }, + + paddingStyle() { + if (this.rootMenu.mode !== 'vertical') return {} + + let padding = this.inlineIndent + + if (!this.rootMenu.collapse) { + let parent = this.$parent + while (parent && parent.$options.componentName !== 'ElMenu') { + if (parent.$options.componentName === 'ElSubmenu') { + padding += this.inlineIndent + } + parent = parent.$parent + } + } + + return {'padding-left': `${padding}px`} + } + } +} diff --git a/vue/template/element-ui-personal/component/Message/index.js b/vue/template/element-ui-personal/component/Message/index.js new file mode 100644 index 0000000..ecb2913 --- /dev/null +++ b/vue/template/element-ui-personal/component/Message/index.js @@ -0,0 +1,101 @@ +import Vue from 'vue' +import Main from './main.vue' +import {PopupManager} from 'element-ui/lib/utils/popup' +import {isVNode} from 'element-ui/lib/utils/vdom' + +let MessageConstructor = Vue.extend(Main) + +let instance +let instances = [] +let seed = 1 + +//键:options.type+'|'+options.message,值:message实例 +let groups = {} + +const Message = function (options) { + options = options || {} + if (typeof options === 'string') { + options = {message: options} + } + if (!options.type) { + options.type = 'info' + } + const group = options.type + '|' + options.message + const originalMessage = groups[group] + //若不是新的message + if (originalMessage) { + //旧实例的badge+1,并重新计时(如果有的话) + originalMessage.badge++ + originalMessage.clearTimer(true) + originalMessage.startTimer() + return originalMessage + } + + let userOnClose = options.onClose + let id = 'message_' + seed++ + + options.onClose = function () { + Message.close(id, userOnClose) + } + instance = new MessageConstructor({data: options}) + instance.id = id + instance.group = group + if (isVNode(instance.message)) { + instance.$slots.default = [instance.message] + instance.message = null + } + instance.$mount() + document.body.appendChild(instance.$el) + let verticalOffset = options.offset || 20 + instances.forEach(item => { + verticalOffset += item.$el.offsetHeight + 16 + }) + instance.verticalOffset = verticalOffset + instance.visible = true + instance.$el.style.zIndex = PopupManager.nextZIndex() + instances.push(instance) + groups[group] = instance + return instance +}; + +['success', 'warning', 'info', 'error'].forEach(type => { + Message[type] = options => { + if (typeof options === 'string') { + options = {message: options} + } + options.type = type + return Message(options) + } +}) + +Message.close = function (id, userOnClose) { + let len = instances.length + let index = -1 + let removedHeight + for (let i = 0; i < len; i++) { + if (id === instances[i].id) { + removedHeight = instances[i].$el.offsetHeight + index = i + if (typeof userOnClose === 'function') { + userOnClose(instances[i]) + } + delete groups[instances[i].group] + instances.splice(i, 1) + break + } + } + if (len <= 1 || index === -1 || index > instances.length - 1) return + for (let i = index; i < len - 1; i++) { + let dom = instances[i].$el + dom.style.top = + parseInt(dom.style.top, 10) - removedHeight - 16 + 'px' + } +} + +Message.closeAll = function () { + for (let i = instances.length - 1; i >= 0; i--) { + instances[i].close() + } +} + +export default Message diff --git a/vue/template/element-ui-personal/component/Message/main.vue b/vue/template/element-ui-personal/component/Message/main.vue new file mode 100644 index 0000000..305fe91 --- /dev/null +++ b/vue/template/element-ui-personal/component/Message/main.vue @@ -0,0 +1,110 @@ + + + diff --git a/vue/template/element-ui-personal/index.js b/vue/template/element-ui-personal/index.js new file mode 100644 index 0000000..1845aea --- /dev/null +++ b/vue/template/element-ui-personal/index.js @@ -0,0 +1,13 @@ +import MenuItem from "./component/Menu/MenuItem" +import Submenu from "./component/Menu/Submenu" +import Message from "./component/Message" + +const components = [MenuItem, Submenu] + +export default function (Vue) { + components.forEach(component => { + Vue.component(component.name, component) + }) + + Vue.prototype.$message = Message +} diff --git a/vue/template/element-ui-personal/style/index.scss b/vue/template/element-ui-personal/style/index.scss new file mode 100644 index 0000000..3424bf5 --- /dev/null +++ b/vue/template/element-ui-personal/style/index.scss @@ -0,0 +1 @@ +@import "./message.scss"; diff --git a/vue/template/element-ui-personal/style/message.scss b/vue/template/element-ui-personal/style/message.scss new file mode 100644 index 0000000..2ec0823 --- /dev/null +++ b/vue/template/element-ui-personal/style/message.scss @@ -0,0 +1,58 @@ +.el-message { + overflow: visible; + + &__badge { + animation: el-message-badge .42s; + padding: 4px 8px; + position: absolute; + box-shadow: 0 1px 3px rgba(#000, .2), 0 1px 1px rgba(#000, .14), 0 2px 1px -1px rgba(#000, .12); + background-color: $--color-danger; + color: #ffffff; + border-radius: 4px; + top: -10px; + left: -10px; + font-size: 12px; + line-height: 12px; + } + + &__progress { + z-index: -1; + position: absolute; + height: 3px; + bottom: 0; + left: 10px; + right: 10px; + animation: el-message-progress linear; + background: currentColor; + opacity: .3; + transform-origin: 0 50%; + transform: scaleX(0); + } +} + +@keyframes el-message-badge { + 15% { + transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg) + } + 30% { + transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg) + } + 45% { + transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg) + } + 60% { + transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg) + } + 75% { + transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg) + } +} + +@keyframes el-message-progress { + 0% { + transform: scaleX(1) + } + 100% { + transform: scaleX(0) + } +} diff --git a/vue/template/package.json b/vue/template/package.json new file mode 100644 index 0000000..aec9ec6 --- /dev/null +++ b/vue/template/package.json @@ -0,0 +1,49 @@ +{ + "name": "my", + "version": "0.1.0", + "private": true, + "scripts": { + "serve": "vue-cli-service serve", + "build": "vue-cli-service build", + "svgo": "svgo -f src/asset/icon/svg --config=src/asset/icon/svgo.yml" + }, + "dependencies": { + "axios": "^0.19.2", + "codemirror": "^5.56.0", + "core-js": "^3.6.5", + "decimal.js": "^10.2.0", + "element-ui": "^2.13.2", + "js-md5": "^0.7.3", + "normalize.css": "^8.0.1", + "nprogress": "^0.2.0", + "pako": "^1.0.11", + "socket.io-client": "^2.3.0", + "vue": "^2.6.11", + "vue-count-to": "^1.0.13", + "vue-cropper": "^0.5.4", + "vue-router": "^3.3.4", + "vuex": "^3.4.0" + }, + "devDependencies": { + "@vue/cli-plugin-babel": "^4.4.6", + "@vue/cli-service": "^4.4.6", + "body-parser": "^1.19.0", + "compression-webpack-plugin": "^5.0.2", + "sass": "^1.26.10", + "sass-loader": "^8.0.2", + "svg-sprite-loader": "^4.3.0", + "svgo": "^1.3.2", + "vue-template-compiler": "^2.6.11", + "webpack-bundle-analyzer": "^3.6.1", + "webpack-theme-color-replacer": "^1.3.14" + }, + "postcss": { + "plugins": { + "autoprefixer": {} + } + }, + "browserslist": [ + "> 1%", + "last 2 versions" + ] +} diff --git a/vue/template/public/favicon.ico b/vue/template/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..df36fcfb72584e00488330b560ebcf34a41c64c2 GIT binary patch literal 4286 zcmds*O-Phc6o&64GDVCEQHxsW(p4>LW*W<827=Unuo8sGpRux(DN@jWP-e29Wl%wj zY84_aq9}^Am9-cWTD5GGEo#+5Fi2wX_P*bo+xO!)p*7B;iKlbFd(U~_d(U?#hLj56 zPhFkj-|A6~Qk#@g^#D^U0XT1cu=c-vu1+SElX9NR;kzAUV(q0|dl0|%h|dI$%VICy zJnu2^L*Te9JrJMGh%-P79CL0}dq92RGU6gI{v2~|)p}sG5x0U*z<8U;Ij*hB9z?ei z@g6Xq-pDoPl=MANPiR7%172VA%r)kevtV-_5H*QJKFmd;8yA$98zCxBZYXTNZ#QFk2(TX0;Y2dt&WitL#$96|gJY=3xX zpCoi|YNzgO3R`f@IiEeSmKrPSf#h#Qd<$%Ej^RIeeYfsxhPMOG`S`Pz8q``=511zm zAm)MX5AV^5xIWPyEu7u>qYs?pn$I4nL9J!=K=SGlKLXpE<5x+2cDTXq?brj?n6sp= zphe9;_JHf40^9~}9i08r{XM$7HB!`{Ys~TK0kx<}ZQng`UPvH*11|q7&l9?@FQz;8 zx!=3<4seY*%=OlbCbcae?5^V_}*K>Uo6ZWV8mTyE^B=DKy7-sdLYkR5Z?paTgK-zyIkKjIcpyO z{+uIt&YSa_$QnN_@t~L014dyK(fOOo+W*MIxbA6Ndgr=Y!f#Tokqv}n<7-9qfHkc3 z=>a|HWqcX8fzQCT=dqVbogRq!-S>H%yA{1w#2Pn;=e>JiEj7Hl;zdt-2f+j2%DeVD zsW0Ab)ZK@0cIW%W7z}H{&~yGhn~D;aiP4=;m-HCo`BEI+Kd6 z={Xwx{TKxD#iCLfl2vQGDitKtN>z|-AdCN|$jTFDg0m3O`WLD4_s#$S literal 0 HcmV?d00001 diff --git a/vue/template/public/index.html b/vue/template/public/index.html new file mode 100644 index 0000000..efa8b3f --- /dev/null +++ b/vue/template/public/index.html @@ -0,0 +1,27 @@ + + + + + + + + + <%= webpackConfig.name %> + + +
+
+ +

资源加载中......

+
+
+ + + + + + + + + + diff --git a/vue/template/public/static/img/dot1.png b/vue/template/public/static/img/dot1.png new file mode 100644 index 0000000000000000000000000000000000000000..ab5dd81098e069a4d72fe133f1470a302a0118d4 GIT binary patch literal 7207 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 literal 0 HcmV?d00001 diff --git a/vue/template/public/static/img/dot2.png b/vue/template/public/static/img/dot2.png new file mode 100644 index 0000000000000000000000000000000000000000..14cf520a67d5527ece22d1c260b9c33d7bcc722c GIT binary patch literal 690 zcmeAS@N?(olHy`uVBq!ia0vp^8X(NU3?z3ec*FxKmUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UIIDo0X`wFKADA@nwn~AYF1WO>gwu1ww9Kb1{eUj5QdJ9PH1Q-kgct)4J3hT zAj*Iw&=@dJ6DST;4^aS72{Z>{0>nUw;XuU@22dqL79vtEBRm6WmR3oSUob<=7v9iK zQ=hzV7nYpD{K)Fx+8UK*jAv~(y_tFL*7WJ`YinO`p4on`qvO`?;yXS-Pfhl8aSX9I z-5T0nc36QYWZBy{d(+ER|Nj3jYS_!$8&@Dy+;HqA!;0Hw|8KnMs*ZeP*8f+mXxqO% z31{`LT5(GIiW&J{n;;-QIZ*n#<)#B)j!W+^owY+zYQ~$6wDip>5|7z(o_+aXpYmZr zpY?`sXCJNMz7}Z5a%bw>jV}_n*4Gs8*ca`acCTGo|LTK%2fyw*_;uUK*LnWT{y+9> zzVIwao-drmbjUE7bxll9Ad8`#cEigvRGLBb1D)-~+r)|s2N$yIxy%NcfAp|DkpXK(S#i&>HI!u5dE&!v|q zTi&`Hd{$reVav@wKODlBwak3fa_e)9hoio;V35YFz!2#!bK@l|bP5emyG<_ijrq|L zZIHVBLQI@S)Dyn5OK+JL?^s=W-}GB=ZF>8)GOxxO-k^`?3N>SrUzN7EdEC5a81JTh zODQ#_pXp}v;ltY|SWOeE@_dl2u6@>T9_zFzX@bAsd%UTyzjm`aad-Wy*NdmTetdI> b-9HAubEm~>tt&-rd>gTe~DWM4fD0~v! literal 0 HcmV?d00001 diff --git a/vue/template/public/static/img/dot3.png b/vue/template/public/static/img/dot3.png new file mode 100644 index 0000000000000000000000000000000000000000..6234e9fd79d5a47b909605ffff552b5cdbe38795 GIT binary patch literal 1893 zcmW+$2~ZSg79Nh_T$CedP#{dnA<+;hvI4{O^nJ|0AcsRZ4T`P-0i^_m1Uw)*z!Gi> zM_CfUP>KQuN`hb_ha$lhO;FGQ0b!JIn29J$hywd2Ro#ET{`% z5ctk;90$83^kW#3VW2G#1CkIBEK3j+j*}RMV^BcR7(_S;)PWvB(GZIe1jiZJrfC)! z6NCiEDM-aI5`#>FK%r1el7@0^6`@rP0o01c1cIO_iu;PhD8m3rv9>>sVz_n}ha3Ww zLI`~z(-*-YN9c<}D~e{cglH{c;1AFs08ju9Y!st7%YqevO92fWxY8_0z;FU^!4P-{ ztDzE@h{f37h&Y%7K7dO=63k&3j^#KMCB&$9C>$ptp$fr(2@ZKQD;DE00*a)yc^oXD zoe+yr@E-sPiUM6g7{vJ^D9n_TNEn*sScya;1)U7dpfC)Y@%Hfr^J$8qX<8)4e1szK z5D}w*1LlELX!rM6fhk_C6T1v&B{3y9AcU9EEVr@|n(67h(Ksp^%9|_TijtSl&owt& zwN$)`k~hOrJ|CqlQ>tw=^Q&dbd&;ua$vQQn$QWqQC^QX|18TK!GE=1((5UYzRyCRG zIt`*KL)1B|j`!*^RgMFb>P#f3PIWKD?3oUnaaKa%yS(qF%3q(i3pamh>|AO#)S5Wb znm84a_&P5CaoEVa!B*jujGy=u(J0G2F0s;k^BgXS16RotRbL`6lzP z<>y1yd!N@U7(3^niIQIf-*sDU+xXQ-*B4AYdil(LhvI!HDyQM-l>W8k1C<}-6&RUr zmsd0x?tUSl14K(PqpygRKhLG)#Y)Nlx>uA4T;*#Qm)mNUr3>yW3!ZNJrM2&e_@A;i zR#s*>B>i%6D&J>R;^pI7e)fnmxzeN4^VWc>(APlbv$?l!$FJ`_d{Femr>40UdT}=l*%}$xa~@scT|NEBBsp z|Imb97ujl<=JBF7D#g}qLdV0-Ki%L8ujlOPUB@ps#wGi?@YkX)jLsPSBuFeg+#e@s zu_rpWBF^uHn{+B%Sf3A4(-g5kU7AWrSmf>GB5h;C&lnM2kwblp`a#7bI`rtS*2SqT%x~PT(XDN~BbwMISvr0&=c;AUlb*AK z5{LP~Q#KC#brvDK$}Q$yMb}iUR1(xzl+O1?j2~UFG%^0r-8o63OXOd_+kVG|dZwGo zcl;>rJnv1!+$VZ1o>@75MIMD=75X^l*=+C18E^Eq7TmU7>-09XN%IZrr>oY^riLfv z#}#_CnTBocHF8sIi8;FY7Tve>P0Q~Oi%%s)mrG7xnDfwouwm`Tvcx^2N!OA;3nP}C zQ-e#8pjJh4j#D?fSB2+43+y^{Yvt~V`|bZ+uo^igyP0BrQn`0fnzii#8vWJ3$9BAL zWa+30`{B9ckg(vI$L>y%)tXMbMTvuLUgOEo;?B9I)}-&Z)CzXi=1#lVOS0S|vgOQ| zMf@y0WaR3w3psRk$Y5)95B|mkz$n?uyxEZ0fMx`gFzR z|E(LIu^N9I@#$Q=T}N(X{BITF>ZiO>%_&*`+e2+vrjCAcQ#F-ddt}9L_uJMg&xv}0 z`{Tie@n0r0volr4A`Q~NOKllyeO>o+YF3{uk%VPgR{zzva(VJ$Lw18Fy0Rl_ef<}s z1@YrM^XIzHZI>6>B~L8)%uFjYhW)GVhei&mEW$Q9s*dfcEy<-{4?jt7S^l=_;%ryK zwWRLWRI6px(w3IxKe9Kf`4#s=(^u~o{71g~NpDg~*xHPji)}||{P9phC=#{kPMX#}pxYg;Y Y&vbMAFWRfAL+~%-N$3Eok%-CqKe^})(EtDd literal 0 HcmV?d00001 diff --git a/vue/template/public/static/img/dot4.png b/vue/template/public/static/img/dot4.png new file mode 100644 index 0000000000000000000000000000000000000000..da8971b25551efdac215cf6dabc2ab4979ed7724 GIT binary patch literal 1847 zcmW+$30PBS7LC+c**aK3jXRxypcMoZEZYo}y)?9t$Mn`}2> zu~_E8L4M)zwln-Uz5(OSy+Jg*)*tiv(1*op_}X+;%!c*4`0zkqR^8yvmn@c%%}1ep z|4>;R!!Q^|5F`Zwq)0?j@K6$oL?95r5lJ#QPBM&yBtuNfB@!Y40u)5RgrcBm zB!Zx@3As|K6!?%N31}oqQxuJ2I7vzfAS7aNQUr++LKJAjZe(O6K}ab8rwx&ijuRvy zl|nj-5di+XPzoZE-N8Vn~01AE{DVo?+qfItx-OArKu1F=McpfI5gT|fbzHq--SNm49{lt?1ML<}>i z5DHPy1Ww^3#fMIT)j~`FbDno#J9X0ry@j%oUMXOd^Fh4hktY+LCKEa8EBC)(y|jfX(ony0l&$YyYa#dtli7o>Eh%3 z?$wot2b2dcM8=K@#ssMg722s1tOr{&tNrp-QO^w3G&%OS@#NUo=itrRy3aU{NvB8a_6p{?>pC(xi^p> zYi??8R`n=x`0X1rIFIN*bDU?D9lB=Q7Sy|)*KYj&F7`-0u|BrJT5oODJLUfJ&EcSG z>v$~3RB|Axy=HRe-Sa<8jGajfi0^3O23?TUL!%K8XvM5w@5an{o0Z+|Sw@$;^2UA?ZeGRZHsZCZC^;{`|md=)&~}ie}rp z+}T{G{FqbQIcYoW6CWj^SYhQIOPBsm8oCYh?Vf(C@{%^`~+*xc+v_5B@pV&HCu3fQ?t#Hnu_b;ku94t3CDC#_L;T(#Nav zZ>3fH{5FNCRa{5oPxS$={fLK~-d1Q~Uu;o$cW+#;3(q|8YA+`*xnKPCCU2I4Q`cRc$9wi;!mxI)OM?fj5D5L>FulCs^&kcMvE^O%nvOG zBqSe9OJ!X&cCv3(S4>A|Qs2A?P+jqG+`7O1PgZLEVTJ}+7?L}8OVypAZr1} zk^5|HYi-9MPwV0p^2KC8=aOga{d+4iT=k7EOjUd<`Lc2yyvtDD0j=+sxF z{7zim@t$Cg`fEEi}~BP>#Sr}j9!wX0-#@$^>SvS{1r{P2j@ mJ9*{PEAr*JKtg!SdyQ?p$v>*g(NquLE>^HV&#%sxN&gMl;XMEV literal 0 HcmV?d00001 diff --git a/vue/template/public/static/img/fileType/doc.png b/vue/template/public/static/img/fileType/doc.png new file mode 100644 index 0000000000000000000000000000000000000000..fddc6674c0869af50534856f4613dcc105fcae3d GIT binary patch literal 41672 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 KHK{Q2!2dr>S>N~o literal 0 HcmV?d00001 diff --git a/vue/template/public/static/img/fileType/pdf.png b/vue/template/public/static/img/fileType/pdf.png new file mode 100644 index 0000000000000000000000000000000000000000..95e2ca292798d461bd163254b23aa7f9e4b590d2 GIT binary patch literal 29448 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 R{2<`xmcFT8v95FE{{axaitYda literal 0 HcmV?d00001 diff --git a/vue/template/public/static/img/fileType/ppt.png b/vue/template/public/static/img/fileType/ppt.png new file mode 100644 index 0000000000000000000000000000000000000000..1a4609bb972a55f4d5fd3d176caf76bec07f50f6 GIT binary patch literal 42472 zcmXV1cQ_l~_f8^4YEwn6AXZVet7@;HC|X*(6h+nEBr&Q+ZADSERux56Q6sTct)jMy znOYS)A>!xreSXh#^Cb75oadhNo^#K6&$;pUjrHiST)zSU0OQ!EegFVN*MA>ipV!By06=Mk zzP84LV7nb#>P+*s$)kn~6=kS^&Q&&z2TWicW-$RBZH-WNv9S`tHpPl7AE(tRHGn!- z-v}76ZnRAS%TE4?$eu0YT22gK$h@T*O#St=y8hpgk#NS3r@P}L%^SkILuZg+HQ=rY z_8i<=h&o}#BS6R_6D%Kz;zFOOxQ5Q06AdyQ$j|#tSZEU3kt&h+7Zsya!;i4=>o$H7 zl~b3*WE7t_LkHPy)L7QzNjr37he_?|hVVf6f^0L?Y?+Q;=xGmc#pRqR3%WdU)gIi4!_V;i_WST>D`xa9j~EY= zQX^}rpk`T+I{querqWXV9f4==)L41cVPHD^)V_!tKz(vk;p;ImgeOcxqqu$%v4v{j`7 zpM-(XD$8oj*bKlQ&yK$<9!Ka8|Ij0|o6C`o#{QFj}8Ms?Sm z3amAX#lcW1Xj?{HnS#!KHcx72Uxq$|e&Q^Y=*I#UT8f^8B~HRmt9UdP8TJmW`ClLm zt-zkon7?Wawr0f@%(3|JedXu>sbfJJygeg^`*dVqN8bkS-#sNxxMFIAB@Pyi{M>qeB&9|rUNOW z7HJmNH^uvwq(N&v5H`f5*sLl~7KI^{IaIaWmnJf);vP+K|JX%Gt-h>*I{)y1+mWuP zuaDDX4>DBWKU9y;JCRvlSJ3HvRdXZ$-S4Z?vi6$upmyOxF8OmIZR4=`r=xVg{Brrj z%~)fMo<)6pYs9QnET-8juZz#=r76@*GKO%^&_oJe=g%C0a87{{UDr*o3k3VKg3$|1 z*)6I`{V8VxFNPkGCcoXerug}F^um^d=lB=GX^$hJ)Xj(VYxxDYyDg}EZZSIXox!p} zwi&*d5G45$^|_Qq%#MXHr-7xq=m3y)LXy5j`9cK+yRr%jl1bO{hGM^dl`APJf%5YM z)6&xLCnv9Vv!v1t?w5z-SseB58s0Y#8+jI&K~dS|y6p$gJp-AkxA~q3SG-DX^biaV_KY$4m{_|Pz+i=cO`)%apZ(Sxt(~Re zHsezDnv60z$;I#3ur2xB=_og+CyjjsS;$w$)O)GEk{{P|+L>*b{vIICz^D2;kzGmv z1_S?+mL}z~5*y3+WotWJ3{M6E&gfPT1|{6~Bm6{2q%~yfyOMI(X)u?tE?E5Hdq-`X zD!Kp(*BSUTF(C&N78bmD6H-?PiHrYXAD^78_uv7yfPf=S91Vd;xwJi#*i;+BnU1@^ zViI!AXQe=A|MVC9(JU=Ff>&$16_^cT(~W%)DYeIJpk>{m#pTq+V7LEhJ+x<9i%)#W?o*cvBZak z(c!$7;->qLKaI$W$D5-CmE%`e0^?Uhl36PMw7_F3weeOrh4M#aVZHn$o7MUs2AzZ) zYskt`?XyOffvp!pnN#mz2`9x&%L4oL`>MrG%W0XJn*9zn4!F}IJXPD33)K6k-@0RB zRzbiv;Wt$nWMCId31Spb;a8wFh`9l`Q)G$%8MYi;sOKHh?*uP+z$SL!A+Xj~o+kJH zN_wwlnf!e%ebRIvliIp8Z1|I|c+qvqS9;8{A6S;lR3fJ?AFn59{72!@hY zXu>K%nrAAn`%P2$9lM=qLhJ8>LbLS#jvCN#K7h2_{v5w6l~ROYW1cP-2%lA>Dg4IR zS<}~rk63wiEm^lc#D@?^N6|(|xEr-|v1%)Dw83ugJX{%opDGPgGw8SW;pJM^pGZ*J~!BfOtf51@3D$Yb;WBRj;h&gFyG%X$wbYIn? z*?4@dV_{c^FiOp=K+rf{a(*_Dt>KOKrPT81+n6P8t8Nj*il6}?E%O0waOJw4LY+mTKuHgx@KZ~u;be=>?&i#+uR*>ek

VvS_^=5?U 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%0DS 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 literal 0 HcmV?d00001 diff --git a/vue/template/public/static/img/fileType/rar.png b/vue/template/public/static/img/fileType/rar.png new file mode 100644 index 0000000000000000000000000000000000000000..d13ec4c0159599b48e8f8ab467c770d62deba564 GIT binary patch literal 28509 zcmZ5{XH*m47wshUE?qhTQdF8WkrFyc?qzHnLAR_)i z48235^d5RbLh|DOy-)8$Rx)d4)}4Fil)d*k_ld2wDI2pOGXMZ=H_VLe0RTk(2?7}D zsbB7qRsR33qU=o#fV$tp>(mR{0DUWc0Qi*6Lh_-bUNc3Q-HHML_MU$qP+xe}9RLX1 zzhR{Bc;9ooli|MbWWMON|3oYIo*_CH_ppHUpBiuGq2hut#oLsnPZ&S_UPZ|=+b zUH#7AZ19)whgWt+R!x_yIqe@}YKlC~*qSa?L7g?7EEP+cNoVc#1J!)?r?*7&tOv>@ z@klj%$Hmde>ht!Qiysuts{=QDE|CtEoc>ZA|AzBp3(L>LDg&LB^WdIwA zLI%roIqc;~wP(#oN3t^{*E-#1jJFdhZ`#a36Lm^0e=vNWTnWhtS6@aJagBN zoix>eoTH48HUA0Y_7`(Z;GcAi7HdDB`33{$ZGP1b!@U?#O~N!-0lX=2ACy4f#eNEA zJ7fzRS`8_!C$?MCB(0BWv*E7vI)D-wX-X(we=5^eeNZk~*eWdY@xHhp9#Wpu%rRQ+ z@2947rPCyDU?AvZmNQpV^X2hZA*&EiW*S^i5V6>9?r(fx69;`eTAEo@+#ItKt}ZK z73-k=-~#{fB04LMQWt}oCja^Xu9Vy_dQe(tnhg5Lz@1=FB+%~7te1rx5JwlkF#O`s zsFqWZ>}iw^=^uGdYxHeKH!+gW&#M3ZVRqxXC7!AM&7=i`Zr0mysBZRgHpbMa{^9V1 z#y45tU!G4BA&*9+%WaSQUNtb|V0!9wqx(DE@8XZEkzB92abs^lyd-3{3NG9ill|K1 zB!2H@5&CHrt|_Vg#mJ3$23I+#!Ig3-4}+Dvo*IHTSmGCfxsCP;c&QwSVfqyo%a+w3 zO<7Xnwera+2rSYTt1}dR0Q&tdMNrQ_?j7w5HoYdEKa{3BdQFwE9QuY82VK2lb>&R^ z3wLK$vEjRE>X5G5R|?Xv%QM46%j==q#S#ly?{IOS?UveVbG7A)_A4&-cw94LYsy&1 z&zT3`ig@t*%E$7FhcRQHtH`3?FQinmgC$8RPu5y5)a$Y9Z9va9y�j@`hj<^NvF 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 + + + + + + + + + + + + + 保 存 + + + + + + + + + diff --git a/vue/template/src/view/admin/system/role/EditDialog.vue b/vue/template/src/view/admin/system/role/EditDialog.vue new file mode 100644 index 0000000..6c2e0aa --- /dev/null +++ b/vue/template/src/view/admin/system/role/EditDialog.vue @@ -0,0 +1,202 @@ + + + diff --git a/vue/template/src/view/admin/system/role/indexPage.vue b/vue/template/src/view/admin/system/role/indexPage.vue new file mode 100644 index 0000000..89f75b4 --- /dev/null +++ b/vue/template/src/view/admin/system/role/indexPage.vue @@ -0,0 +1,179 @@ + + + diff --git a/vue/template/src/view/admin/system/supplier/EditDialog.vue b/vue/template/src/view/admin/system/supplier/EditDialog.vue new file mode 100644 index 0000000..b2a0d77 --- /dev/null +++ b/vue/template/src/view/admin/system/supplier/EditDialog.vue @@ -0,0 +1,167 @@ + + + diff --git a/vue/template/src/view/admin/system/supplier/indexPage.vue b/vue/template/src/view/admin/system/supplier/indexPage.vue new file mode 100644 index 0000000..256968f --- /dev/null +++ b/vue/template/src/view/admin/system/supplier/indexPage.vue @@ -0,0 +1,203 @@ + + + diff --git a/vue/template/src/view/admin/system/user/component/DepartmentSelector.vue b/vue/template/src/view/admin/system/user/component/DepartmentSelector.vue new file mode 100644 index 0000000..bb40da5 --- /dev/null +++ b/vue/template/src/view/admin/system/user/component/DepartmentSelector.vue @@ -0,0 +1,39 @@ + + + diff --git a/vue/template/src/view/admin/system/user/component/EditDialog.vue b/vue/template/src/view/admin/system/user/component/EditDialog.vue new file mode 100644 index 0000000..da34911 --- /dev/null +++ b/vue/template/src/view/admin/system/user/component/EditDialog.vue @@ -0,0 +1,172 @@ + + + diff --git a/vue/template/src/view/admin/system/user/component/RoleSelector.vue b/vue/template/src/view/admin/system/user/component/RoleSelector.vue new file mode 100644 index 0000000..f372ec2 --- /dev/null +++ b/vue/template/src/view/admin/system/user/component/RoleSelector.vue @@ -0,0 +1,43 @@ + + + diff --git a/vue/template/src/view/admin/system/user/indexPage.vue b/vue/template/src/view/admin/system/user/indexPage.vue new file mode 100644 index 0000000..cf441a2 --- /dev/null +++ b/vue/template/src/view/admin/system/user/indexPage.vue @@ -0,0 +1,230 @@ + + + diff --git a/vue/template/src/view/admin/userCenter/component/Account.vue b/vue/template/src/view/admin/userCenter/component/Account.vue new file mode 100644 index 0000000..4a36e3e --- /dev/null +++ b/vue/template/src/view/admin/userCenter/component/Account.vue @@ -0,0 +1,93 @@ + + + diff --git a/vue/template/src/view/admin/userCenter/component/Avatar.vue b/vue/template/src/view/admin/userCenter/component/Avatar.vue new file mode 100644 index 0000000..a461b56 --- /dev/null +++ b/vue/template/src/view/admin/userCenter/component/Avatar.vue @@ -0,0 +1,136 @@ + + + + + diff --git a/vue/template/src/view/admin/userCenter/component/LoginHistory.vue b/vue/template/src/view/admin/userCenter/component/LoginHistory.vue new file mode 100644 index 0000000..c3f8b4b --- /dev/null +++ b/vue/template/src/view/admin/userCenter/component/LoginHistory.vue @@ -0,0 +1,62 @@ + + + diff --git a/vue/template/src/view/admin/userCenter/component/UserAction.vue b/vue/template/src/view/admin/userCenter/component/UserAction.vue new file mode 100644 index 0000000..22d3ad0 --- /dev/null +++ b/vue/template/src/view/admin/userCenter/component/UserAction.vue @@ -0,0 +1,63 @@ + + + diff --git a/vue/template/src/view/admin/userCenter/component/UserCard.vue b/vue/template/src/view/admin/userCenter/component/UserCard.vue new file mode 100644 index 0000000..5e50e6c --- /dev/null +++ b/vue/template/src/view/admin/userCenter/component/UserCard.vue @@ -0,0 +1,98 @@ + + + + + diff --git a/vue/template/src/view/admin/userCenter/indexPage.vue b/vue/template/src/view/admin/userCenter/indexPage.vue new file mode 100644 index 0000000..365ac7b --- /dev/null +++ b/vue/template/src/view/admin/userCenter/indexPage.vue @@ -0,0 +1,48 @@ + + + diff --git a/vue/template/src/view/dev/uploadFileDev.vue b/vue/template/src/view/dev/uploadFileDev.vue new file mode 100644 index 0000000..04d4f03 --- /dev/null +++ b/vue/template/src/view/dev/uploadFileDev.vue @@ -0,0 +1,9 @@ + + + diff --git a/vue/template/src/view/example/component/regionSelectorPage.vue b/vue/template/src/view/example/component/regionSelectorPage.vue new file mode 100644 index 0000000..cf1f5c2 --- /dev/null +++ b/vue/template/src/view/example/component/regionSelectorPage.vue @@ -0,0 +1,41 @@ + + + diff --git a/vue/template/src/view/example/component/skeletonPage.vue b/vue/template/src/view/example/component/skeletonPage.vue new file mode 100644 index 0000000..358c0da --- /dev/null +++ b/vue/template/src/view/example/component/skeletonPage.vue @@ -0,0 +1,64 @@ + + + + + diff --git a/vue/template/src/view/example/component/treeSelectPage.vue b/vue/template/src/view/example/component/treeSelectPage.vue new file mode 100644 index 0000000..01ed505 --- /dev/null +++ b/vue/template/src/view/example/component/treeSelectPage.vue @@ -0,0 +1,40 @@ + + + diff --git a/vue/template/src/view/example/component/uploadPage.vue b/vue/template/src/view/example/component/uploadPage.vue new file mode 100644 index 0000000..ff443a9 --- /dev/null +++ b/vue/template/src/view/example/component/uploadPage.vue @@ -0,0 +1,59 @@ + + + diff --git a/vue/template/src/view/example/cool/fluidPage.vue b/vue/template/src/view/example/cool/fluidPage.vue new file mode 100644 index 0000000..8ff7fef --- /dev/null +++ b/vue/template/src/view/example/cool/fluidPage.vue @@ -0,0 +1,57 @@ + + + diff --git a/vue/template/src/view/example/cool/l2dPage.vue b/vue/template/src/view/example/cool/l2dPage.vue new file mode 100644 index 0000000..686d4dc --- /dev/null +++ b/vue/template/src/view/example/cool/l2dPage.vue @@ -0,0 +1,36 @@ + + + diff --git a/vue/template/src/view/example/directive/dragDialogPage.vue b/vue/template/src/view/example/directive/dragDialogPage.vue new file mode 100644 index 0000000..303f37b --- /dev/null +++ b/vue/template/src/view/example/directive/dragDialogPage.vue @@ -0,0 +1,25 @@ + + + diff --git a/vue/template/src/view/example/directive/ripplePage.vue b/vue/template/src/view/example/directive/ripplePage.vue new file mode 100644 index 0000000..5e040ec --- /dev/null +++ b/vue/template/src/view/example/directive/ripplePage.vue @@ -0,0 +1,57 @@ + + + + + diff --git a/vue/template/src/view/example/globalMethod/bottomTipPage.vue b/vue/template/src/view/example/globalMethod/bottomTipPage.vue new file mode 100644 index 0000000..f422d77 --- /dev/null +++ b/vue/template/src/view/example/globalMethod/bottomTipPage.vue @@ -0,0 +1,18 @@ + + + diff --git a/vue/template/src/view/example/globalMethod/guidePage.vue b/vue/template/src/view/example/globalMethod/guidePage.vue new file mode 100644 index 0000000..2d86325 --- /dev/null +++ b/vue/template/src/view/example/globalMethod/guidePage.vue @@ -0,0 +1,64 @@ + + + + + diff --git a/vue/template/src/view/example/globalMethod/imageViewerPage.vue b/vue/template/src/view/example/globalMethod/imageViewerPage.vue new file mode 100644 index 0000000..d13a878 --- /dev/null +++ b/vue/template/src/view/example/globalMethod/imageViewerPage.vue @@ -0,0 +1,33 @@ + + + diff --git a/vue/template/src/view/example/globalMethod/messagePage.vue b/vue/template/src/view/example/globalMethod/messagePage.vue new file mode 100644 index 0000000..b57d91a --- /dev/null +++ b/vue/template/src/view/example/globalMethod/messagePage.vue @@ -0,0 +1,26 @@ + + + diff --git a/vue/template/src/view/example/globalMethod/signaturePage.vue b/vue/template/src/view/example/globalMethod/signaturePage.vue new file mode 100644 index 0000000..1c74e3d --- /dev/null +++ b/vue/template/src/view/example/globalMethod/signaturePage.vue @@ -0,0 +1,31 @@ + + + diff --git a/vue/template/src/view/example/globalMethod/verifyPage.vue b/vue/template/src/view/example/globalMethod/verifyPage.vue new file mode 100644 index 0000000..e06228e --- /dev/null +++ b/vue/template/src/view/example/globalMethod/verifyPage.vue @@ -0,0 +1,25 @@ + + + diff --git a/vue/template/src/view/example/icon/element-icon.js b/vue/template/src/view/example/icon/element-icon.js new file mode 100644 index 0000000..b3fcd96 --- /dev/null +++ b/vue/template/src/view/example/icon/element-icon.js @@ -0,0 +1,15 @@ +const originHtml = `

  • el-icon-platform-eleme
  • el-icon-eleme
  • el-icon-delete-solid
  • el-icon-delete
  • el-icon-s-tools
  • el-icon-setting
  • el-icon-user-solid
  • el-icon-user
  • el-icon-phone
  • el-icon-phone-outline
  • el-icon-more
  • el-icon-more-outline
  • el-icon-star-on
  • el-icon-star-off
  • el-icon-s-goods
  • el-icon-goods
  • el-icon-warning
  • el-icon-warning-outline
  • el-icon-question
  • el-icon-info
  • el-icon-remove
  • el-icon-circle-plus
  • el-icon-success
  • el-icon-error
  • el-icon-zoom-in
  • el-icon-zoom-out
  • el-icon-remove-outline
  • el-icon-circle-plus-outline
  • el-icon-circle-check
  • el-icon-circle-close
  • el-icon-s-help
  • el-icon-help
  • el-icon-minus
  • el-icon-plus
  • el-icon-check
  • el-icon-close
  • el-icon-picture
  • el-icon-picture-outline
  • el-icon-picture-outline-round
  • el-icon-upload
  • el-icon-upload2
  • el-icon-download
  • el-icon-camera-solid
  • el-icon-camera
  • el-icon-video-camera-solid
  • el-icon-video-camera
  • el-icon-message-solid
  • el-icon-bell
  • el-icon-s-cooperation
  • el-icon-s-order
  • el-icon-s-platform
  • el-icon-s-fold
  • el-icon-s-unfold
  • el-icon-s-operation
  • el-icon-s-promotion
  • el-icon-s-home
  • el-icon-s-release
  • el-icon-s-ticket
  • el-icon-s-management
  • el-icon-s-open
  • el-icon-s-shop
  • el-icon-s-marketing
  • el-icon-s-flag
  • el-icon-s-comment
  • el-icon-s-finance
  • el-icon-s-claim
  • el-icon-s-custom
  • el-icon-s-opportunity
  • el-icon-s-data
  • el-icon-s-check
  • el-icon-s-grid
  • el-icon-menu
  • el-icon-share
  • el-icon-d-caret
  • el-icon-caret-left
  • el-icon-caret-right
  • el-icon-caret-bottom
  • el-icon-caret-top
  • el-icon-bottom-left
  • el-icon-bottom-right
  • el-icon-back
  • el-icon-right
  • el-icon-bottom
  • el-icon-top
  • el-icon-top-left
  • el-icon-top-right
  • el-icon-arrow-left
  • el-icon-arrow-right
  • el-icon-arrow-down
  • el-icon-arrow-up
  • el-icon-d-arrow-left
  • el-icon-d-arrow-right
  • el-icon-video-pause
  • el-icon-video-play
  • el-icon-refresh
  • el-icon-refresh-right
  • el-icon-refresh-left
  • el-icon-finished
  • el-icon-sort
  • el-icon-sort-up
  • el-icon-sort-down
  • el-icon-rank
  • el-icon-loading
  • el-icon-view
  • el-icon-c-scale-to-original
  • el-icon-date
  • el-icon-edit
  • el-icon-edit-outline
  • el-icon-folder
  • el-icon-folder-opened
  • el-icon-folder-add
  • el-icon-folder-remove
  • el-icon-folder-delete
  • el-icon-folder-checked
  • el-icon-tickets
  • el-icon-document-remove
  • el-icon-document-delete
  • el-icon-document-copy
  • el-icon-document-checked
  • el-icon-document
  • el-icon-document-add
  • el-icon-printer
  • el-icon-paperclip
  • el-icon-takeaway-box
  • el-icon-search
  • el-icon-monitor
  • el-icon-attract
  • el-icon-mobile
  • el-icon-scissors
  • el-icon-umbrella
  • el-icon-headset
  • el-icon-brush
  • el-icon-mouse
  • el-icon-coordinate
  • el-icon-magic-stick
  • el-icon-reading
  • el-icon-data-line
  • el-icon-data-board
  • el-icon-pie-chart
  • el-icon-data-analysis
  • el-icon-collection-tag
  • el-icon-film
  • el-icon-suitcase
  • el-icon-suitcase-1
  • el-icon-receiving
  • el-icon-collection
  • el-icon-files
  • el-icon-notebook-1
  • el-icon-notebook-2
  • el-icon-toilet-paper
  • el-icon-office-building
  • el-icon-school
  • el-icon-table-lamp
  • el-icon-house
  • el-icon-no-smoking
  • el-icon-smoking
  • el-icon-shopping-cart-full
  • el-icon-shopping-cart-1
  • el-icon-shopping-cart-2
  • el-icon-shopping-bag-1
  • el-icon-shopping-bag-2
  • el-icon-sold-out
  • el-icon-sell
  • el-icon-present
  • el-icon-box
  • el-icon-bank-card
  • el-icon-money
  • el-icon-coin
  • el-icon-wallet
  • el-icon-discount
  • el-icon-price-tag
  • el-icon-news
  • el-icon-guide
  • el-icon-male
  • el-icon-female
  • el-icon-thumb
  • el-icon-cpu
  • el-icon-link
  • el-icon-connection
  • el-icon-open
  • el-icon-turn-off
  • el-icon-set-up
  • el-icon-chat-round
  • el-icon-chat-line-round
  • el-icon-chat-square
  • el-icon-chat-dot-round
  • el-icon-chat-dot-square
  • el-icon-chat-line-square
  • el-icon-message
  • el-icon-postcard
  • el-icon-position
  • el-icon-turn-off-microphone
  • el-icon-microphone
  • el-icon-close-notification
  • el-icon-bangzhu
  • el-icon-time
  • el-icon-odometer
  • el-icon-crop
  • el-icon-aim
  • el-icon-switch-button
  • el-icon-full-screen
  • el-icon-copy-document
  • el-icon-mic
  • el-icon-stopwatch
  • el-icon-medal-1
  • el-icon-medal
  • el-icon-trophy
  • el-icon-trophy-1
  • el-icon-first-aid-kit
  • el-icon-discover
  • el-icon-place
  • el-icon-location
  • el-icon-location-outline
  • el-icon-location-information
  • el-icon-add-location
  • el-icon-delete-location
  • el-icon-map-location
  • el-icon-alarm-clock
  • el-icon-timer
  • el-icon-watch-1
  • el-icon-watch
  • el-icon-lock
  • el-icon-unlock
  • el-icon-key
  • el-icon-service
  • el-icon-mobile-phone
  • el-icon-bicycle
  • el-icon-truck
  • el-icon-ship
  • el-icon-basketball
  • el-icon-football
  • el-icon-soccer
  • el-icon-baseball
  • el-icon-wind-power
  • el-icon-light-rain
  • el-icon-lightning
  • el-icon-heavy-rain
  • el-icon-sunrise
  • el-icon-sunrise-1
  • el-icon-sunset
  • el-icon-sunny
  • el-icon-cloudy
  • el-icon-partly-cloudy
  • el-icon-cloudy-and-sunny
  • el-icon-moon
  • el-icon-moon-night
  • el-icon-dish
  • el-icon-dish-1
  • el-icon-food
  • el-icon-chicken
  • el-icon-fork-spoon
  • el-icon-knife-fork
  • el-icon-burger
  • el-icon-tableware
  • el-icon-sugar
  • el-icon-dessert
  • el-icon-ice-cream
  • el-icon-hot-water
  • el-icon-water-cup
  • el-icon-coffee-cup
  • el-icon-cold-drink
  • el-icon-goblet
  • el-icon-goblet-full
  • el-icon-goblet-square
  • el-icon-goblet-square-full
  • el-icon-refrigerator
  • el-icon-grape
  • el-icon-watermelon
  • el-icon-cherry
  • el-icon-apple
  • el-icon-pear
  • el-icon-orange
  • el-icon-coffee
  • el-icon-ice-tea
  • el-icon-ice-drink
  • el-icon-milk-tea
  • el-icon-potato-strips
  • el-icon-lollipop
  • el-icon-ice-cream-square
  • el-icon-ice-cream-round
` + +function transfer(html) { + let parent = document.createElement('span') + parent.innerHTML = html + let child = parent.childNodes[0] + let list = child.getElementsByTagName('i') + let result = [] + for (let i = 0; i < list.length; i++) { + result[i] = list[i].className + } + return result +} + +export default transfer(originHtml) diff --git a/vue/template/src/view/example/icon/indexPage.vue b/vue/template/src/view/example/icon/indexPage.vue new file mode 100644 index 0000000..d4403f7 --- /dev/null +++ b/vue/template/src/view/example/icon/indexPage.vue @@ -0,0 +1,53 @@ + + + + + diff --git a/vue/template/src/view/example/test/cache/detailPage.vue b/vue/template/src/view/example/test/cache/detailPage.vue new file mode 100644 index 0000000..3e1959e --- /dev/null +++ b/vue/template/src/view/example/test/cache/detailPage.vue @@ -0,0 +1,17 @@ + + + diff --git a/vue/template/src/view/example/test/develop/component/ApiSpeedTest.vue b/vue/template/src/view/example/test/develop/component/ApiSpeedTest.vue new file mode 100644 index 0000000..a25837b --- /dev/null +++ b/vue/template/src/view/example/test/develop/component/ApiSpeedTest.vue @@ -0,0 +1,55 @@ + + + diff --git a/vue/template/src/view/example/test/develop/component/ExportExcelTest.vue b/vue/template/src/view/example/test/develop/component/ExportExcelTest.vue new file mode 100644 index 0000000..8f3f250 --- /dev/null +++ b/vue/template/src/view/example/test/develop/component/ExportExcelTest.vue @@ -0,0 +1,59 @@ + + + diff --git a/vue/template/src/view/example/test/develop/component/ImageCompressTest.vue b/vue/template/src/view/example/test/develop/component/ImageCompressTest.vue new file mode 100644 index 0000000..dbe61a4 --- /dev/null +++ b/vue/template/src/view/example/test/develop/component/ImageCompressTest.vue @@ -0,0 +1,219 @@ + + + + + diff --git a/vue/template/src/view/example/test/develop/component/WebsocketTest.vue b/vue/template/src/view/example/test/develop/component/WebsocketTest.vue new file mode 100644 index 0000000..d299cb8 --- /dev/null +++ b/vue/template/src/view/example/test/develop/component/WebsocketTest.vue @@ -0,0 +1,63 @@ + + + diff --git a/vue/template/src/view/example/test/develop/indexPage.vue b/vue/template/src/view/example/test/develop/indexPage.vue new file mode 100644 index 0000000..330a9c8 --- /dev/null +++ b/vue/template/src/view/example/test/develop/indexPage.vue @@ -0,0 +1,20 @@ + + + diff --git a/vue/template/vue.config.js b/vue/template/vue.config.js new file mode 100644 index 0000000..e6cf55a --- /dev/null +++ b/vue/template/vue.config.js @@ -0,0 +1,95 @@ +'use strict' +const path = require('path') +const settings = require('./src/config') +const CompressionWebpackPlugin = require('compression-webpack-plugin') +const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin +const ThemeColorReplacer = require('webpack-theme-color-replacer') +const forElementUI = require('webpack-theme-color-replacer/forElementUI') + +const EMPTY_PLUGIN = {apply: () => ({})} + +function resolve(dir) { + return path.join(__dirname, dir) +} + +// All configuration item explanations can be find in https://cli.vuejs.org/config/ +module.exports = { + publicPath: settings.contextPath, + outputDir: 'dist', + assetsDir: 'static', + runtimeCompiler: true, + lintOnSave: false, + productionSourceMap: settings.isDev, + parallel: true, + devServer: { + port: process.env.port || 8079, + contentBasePublicPath: settings.contextPath, + open: true, + overlay: { + warnings: true, + errors: true + }, + proxy: + settings.useMock + ? null + : { + [settings.apiPrefix]: { + target: 'http://localhost:8081', //后台接口域名 + ws: true, //如果要代理 websockets,配置这个参数 + secure: false, //如果是https接口,需要配置这个参数 + changeOrigin: true, //是否跨域 + pathRewrite: { + [`^${settings.apiPrefix}`]: '' + } + } + }, + before(app) { + require('./mock')(app) + } + }, + configureWebpack: { + name: settings.title, + resolve: { + alias: { + '@': resolve('src'), + '@ele': resolve('element-ui-personal') + } + }, + plugins: [ + new ThemeColorReplacer({ + fileName: 'css/theme-colors.[contenthash:8].css', + matchColors: forElementUI.getElementUISeries('#1890ff'), + changeSelector: forElementUI.changeSelector, + injectCss: true + }), + new CompressionWebpackPlugin({ + filename: '[path].gz[query]', + algorithm: 'gzip', + test: new RegExp('\\.(js|css)$'), //匹配文件名 + threshold: 10 * 1024, //对10K以上的数据进行压缩 + minRatio: 0.8, + deleteOriginalAssets: false, //是否删除源文件 + }), + settings.isDev ? EMPTY_PLUGIN : new BundleAnalyzerPlugin() + ] + }, + chainWebpack(config) { + config.plugins.delete('preload') + config.plugins.delete('prefetch') + + // set svg-sprite-loader + config.module + .rule('svg') + .exclude.add(resolve('src/asset/icon')) + .end() + config.module + .rule('icons') + .test(/\.svg$/) + .include.add(resolve('src/asset/icon')) + .end() + .use('svg-sprite-loader') + .loader('svg-sprite-loader') + .options({symbolId: 'icon-[name]'}) + .end() + } +}