├── vue-project ├── src │ ├── App.vue │ ├── views │ │ ├── NotPage.vue │ │ ├── Reception │ │ │ ├── Notice.vue │ │ │ ├── Recommend.vue │ │ │ └── Comment.vue │ │ ├── FrontPage │ │ │ ├── Cotta.vue │ │ │ ├── Hat.vue │ │ │ ├── Shoes.vue │ │ │ ├── Socks.vue │ │ │ ├── OuterWear.vue │ │ │ ├── Trousers.vue │ │ │ ├── DownJackets.vue │ │ │ ├── FirstPage.vue │ │ │ └── Index.vue │ │ ├── Order │ │ │ ├── Delivery.vue │ │ │ └── ReceiptOrder.vue │ │ └── Person │ │ │ ├── Personal.vue │ │ │ └── Change.vue │ ├── utils │ │ ├── request.js │ │ └── xlsxutil.js │ ├── api │ │ ├── NoticeFile │ │ │ └── file.js │ │ ├── GoodsShow │ │ │ └── goodsShow.js │ │ ├── login.js │ │ ├── Express │ │ │ └── express.js │ │ ├── User │ │ │ └── user.js │ │ ├── AfterSaleOrder │ │ │ └── afterSaleOrder.js │ │ ├── Recommend │ │ │ └── recommend.js │ │ ├── Supplier │ │ │ └── supplier.js │ │ ├── Carousel │ │ │ └── carousel.js │ │ ├── Comment │ │ │ └── comment.js │ │ ├── Admin │ │ │ └── admin.js │ │ ├── Order │ │ │ └── order.js │ │ └── Goods │ │ │ └── goodsList.js │ ├── assets │ │ ├── logo.svg │ │ └── base.css │ ├── store │ │ ├── index.js │ │ └── modules │ │ │ └── loginAccount.js │ ├── main.js │ ├── components │ │ ├── BreadCrumb.vue │ │ ├── CommentTable.vue │ │ ├── Dialog.vue │ │ └── ReceiptDialog.vue │ └── permission.js ├── public │ ├── favicon.ico │ └── tinymce │ │ ├── plugins │ │ ├── help │ │ │ └── img │ │ │ │ └── logo.png │ │ ├── emoticons │ │ │ ├── img │ │ │ │ ├── smiley-cry.gif │ │ │ │ ├── smiley-cool.gif │ │ │ │ ├── smiley-frown.gif │ │ │ │ ├── smiley-kiss.gif │ │ │ │ ├── smiley-sealed.gif │ │ │ │ ├── smiley-smile.gif │ │ │ │ ├── smiley-wink.gif │ │ │ │ ├── smiley-yell.gif │ │ │ │ ├── smiley-innocent.gif │ │ │ │ ├── smiley-laughing.gif │ │ │ │ ├── smiley-embarassed.gif │ │ │ │ ├── smiley-money-mouth.gif │ │ │ │ ├── smiley-surprised.gif │ │ │ │ ├── smiley-tongue-out.gif │ │ │ │ ├── smiley-undecided.gif │ │ │ │ └── smiley-foot-in-mouth.gif │ │ │ └── plugin.min.js │ │ ├── hr │ │ │ └── plugin.min.js │ │ ├── print │ │ │ └── plugin.min.js │ │ ├── directionality │ │ │ └── plugin.min.js │ │ ├── nonbreaking │ │ │ └── plugin.min.js │ │ ├── code │ │ │ └── plugin.min.js │ │ ├── colorpicker │ │ │ └── plugin.min.js │ │ ├── save │ │ │ └── plugin.min.js │ │ ├── pagebreak │ │ │ └── plugin.min.js │ │ ├── anchor │ │ │ └── plugin.min.js │ │ ├── noneditable │ │ │ └── plugin.min.js │ │ ├── tabfocus │ │ │ └── plugin.min.js │ │ ├── visualblocks │ │ │ └── plugin.min.js │ │ ├── contextmenu │ │ │ └── plugin.min.js │ │ ├── preview │ │ │ └── plugin.min.js │ │ ├── autoresize │ │ │ └── plugin.min.js │ │ ├── autolink │ │ │ └── plugin.min.js │ │ ├── fullscreen │ │ │ └── plugin.min.js │ │ ├── advlist │ │ │ └── plugin.min.js │ │ ├── insertdatetime │ │ │ └── plugin.min.js │ │ ├── bbcode │ │ │ └── plugin.min.js │ │ ├── autosave │ │ │ └── plugin.min.js │ │ ├── toc │ │ │ └── plugin.min.js │ │ ├── importcss │ │ │ └── plugin.min.js │ │ ├── codesample │ │ │ └── css │ │ │ │ └── prism.css │ │ └── legacyoutput │ │ │ └── plugin.min.js │ │ └── skins │ │ └── lightgray │ │ ├── img │ │ ├── trans.gif │ │ ├── anchor.gif │ │ ├── loader.gif │ │ └── object.gif │ │ ├── fonts │ │ ├── tinymce.eot │ │ ├── tinymce.ttf │ │ ├── tinymce.woff │ │ ├── tinymce-small.eot │ │ ├── tinymce-small.ttf │ │ ├── tinymce-mobile.woff │ │ └── tinymce-small.woff │ │ ├── content.mobile.min.css │ │ ├── content.inline.min.css │ │ └── content.min.css ├── .vscode │ └── extensions.json ├── server │ ├── public │ │ └── uploads │ │ │ ├── 1675328360581.jpg │ │ │ ├── 1675328375320.jpg │ │ │ ├── 1675328382297.jpg │ │ │ ├── 1675328395960.jpg │ │ │ ├── 1675328420019.jpg │ │ │ ├── 1675328424567.jpg │ │ │ ├── 1675328429837.jpg │ │ │ ├── 1675328435974.jpg │ │ │ ├── 1675328463624.jpg │ │ │ ├── 1675328478294.jpg │ │ │ ├── 1675328484666.jpg │ │ │ ├── 1675328489836.jpg │ │ │ ├── 1675328495906.jpg │ │ │ ├── 1675328500135.jpg │ │ │ ├── 1675328503896.jpg │ │ │ ├── 1675328508196.jpg │ │ │ ├── 1675328524851.jpg │ │ │ ├── 1675328528450.jpg │ │ │ ├── 1675328531837.jpg │ │ │ ├── 1675328535426.jpg │ │ │ ├── 1675328539207.jpg │ │ │ ├── 1675328543834.jpg │ │ │ ├── 1675335937863.jpg │ │ │ ├── 1675335938939.jpg │ │ │ ├── 1675336489554.jpg │ │ │ ├── 1675336744285.jpg │ │ │ ├── 1675336765408.jpg │ │ │ ├── 1675336776854.jpg │ │ │ ├── 1675337168483.jpg │ │ │ ├── 1675337181295.jpg │ │ │ ├── 1675473823131.jpg │ │ │ ├── 1675473956833.jpg │ │ │ ├── 1675474048973.jpg │ │ │ ├── 1675474382889.jpg │ │ │ ├── 1675474389203.jpg │ │ │ ├── 1675474393807.jpg │ │ │ ├── 1675475128674.jpg │ │ │ ├── 1675476054032.jpg │ │ │ ├── 1675478095987.jpg │ │ │ ├── 1676637123930.jpg │ │ │ ├── 1676637124978.jpg │ │ │ ├── 1676637125177.jpg │ │ │ ├── 1676637125352.jpg │ │ │ ├── 1676637266064.jpg │ │ │ ├── 1676637709087.jpg │ │ │ ├── 1676637781813.jpg │ │ │ ├── 1676638141242.jpg │ │ │ ├── 1676638586475.jpg │ │ │ ├── 1676638587335.jpg │ │ │ ├── 1676638587502.jpg │ │ │ ├── 1676638587670.jpg │ │ │ ├── 1676638634665.jpg │ │ │ ├── 1676638673610.jpg │ │ │ ├── 1676640973814.jpg │ │ │ ├── 1676642557752.jpg │ │ │ ├── 1677163516717.jpg │ │ │ ├── 1677389084484.jpg │ │ │ ├── 1677398483002.jpg │ │ │ ├── 1677400055616.jpg │ │ │ ├── 1677401124577.jpg │ │ │ ├── 1677401254476.jpg │ │ │ ├── 1677401297822.jpg │ │ │ ├── 1677401454405.jpg │ │ │ ├── 1677401492556.jpg │ │ │ ├── 1677401509216.jpg │ │ │ ├── 1677401517176.jpg │ │ │ ├── 1680415476799.jpg │ │ │ ├── 1680415533904.jpg │ │ │ ├── 1680415558302.jpg │ │ │ ├── 1680415627999.jpg │ │ │ ├── 1680415690210.jpg │ │ │ ├── 1680415847181.jpg │ │ │ ├── 1680415900459.jpg │ │ │ ├── 1683284845863.jpg │ │ │ ├── 1683284853005.jpg │ │ │ ├── 1684556899601.jpg │ │ │ ├── 1684562086093.jpg │ │ │ ├── 1684563360918.jpg │ │ │ ├── 1684563479333.jpg │ │ │ ├── 1685073635745.jpg │ │ │ ├── 1685073645189.jpg │ │ │ ├── 1685073706549.jpg │ │ │ ├── 1685073728269.jpg │ │ │ ├── 1685073823312.jpg │ │ │ ├── 1685073830612.jpg │ │ │ ├── 1685075004233.jpg │ │ │ ├── 1685075014687.jpg │ │ │ ├── 1685075037677.jpg │ │ │ ├── 1685075045108.jpg │ │ │ ├── 1685075080421.jpg │ │ │ ├── 1685075090360.jpg │ │ │ ├── 1685075129708.jpg │ │ │ ├── 1685075139414.jpg │ │ │ ├── 1685090964047.jpg │ │ │ ├── 1685090968386.jpg │ │ │ ├── 1685090974299.jpg │ │ │ ├── 1685190372895.jpg │ │ │ ├── 1685190393390.jpg │ │ │ ├── 1685190399783.jpg │ │ │ ├── 1685190414559.jpg │ │ │ ├── 1685191168554.jpg │ │ │ ├── 1685191172630.jpg │ │ │ ├── 1685191178576.jpg │ │ │ ├── 1685191203414.jpg │ │ │ ├── 1685191273518.jpg │ │ │ ├── 1685191280191.jpg │ │ │ ├── 1685193366435.jpg │ │ │ ├── 1685193373406.jpg │ │ │ ├── 1685193394660.jpg │ │ │ ├── 1685193450101.jpg │ │ │ ├── 1685193464558.jpg │ │ │ ├── 1685193527174.jpg │ │ │ ├── 1685193534944.jpg │ │ │ ├── 1685193935292.jpg │ │ │ ├── 1685193939621.jpg │ │ │ ├── 1685193953276.jpg │ │ │ ├── 1685244335599.jpg │ │ │ ├── 1685244408517.jpg │ │ │ └── 1685244496941.jpg │ ├── api │ │ ├── db │ │ │ └── index.js │ │ ├── admin │ │ │ ├── admin.js │ │ │ ├── deleAdmin.js │ │ │ ├── editAdmin.js │ │ │ ├── changePass.js │ │ │ └── addAdmin.js │ │ ├── carousel │ │ │ ├── carousel.js │ │ │ ├── deleteCarousel.js │ │ │ ├── editCarousel.js │ │ │ └── addCarousel.js │ │ ├── supplier │ │ │ ├── supplier.js │ │ │ ├── deleteSupplier.js │ │ │ ├── editSupplier.js │ │ │ └── addSupplier.js │ │ ├── recommend │ │ │ ├── recommend.js │ │ │ ├── deleteRecommend.js │ │ │ ├── editRecommend.js │ │ │ └── addRecommend.js │ │ ├── goods │ │ │ ├── goodsType.js │ │ │ ├── goodsSizeType.js │ │ │ ├── goodsBrandType.js │ │ │ ├── batchDeleteGoods.js │ │ │ ├── deleteGoods.js │ │ │ ├── getGoodsById.js │ │ │ ├── deleteGoodsType.js │ │ │ ├── goodsShow.js │ │ │ ├── editGoodsType.js │ │ │ ├── addGoodsType.js │ │ │ ├── editGoods.js │ │ │ ├── addGoods.js │ │ │ └── goodsInfo.js │ │ ├── order │ │ │ ├── expressType.js │ │ │ ├── getIssueOrderState.js │ │ │ ├── deleteOrder.js │ │ │ ├── getOrderByOrderNumber.js │ │ │ ├── orderSuccess.js │ │ │ ├── shippedOrder.js │ │ │ ├── goodsNumberChange.js │ │ │ ├── issueOrderStateChange.js │ │ │ ├── editIssueOrder.js │ │ │ ├── issueOrder.js │ │ │ ├── getReceiptOrder.js │ │ │ ├── addReceiptOrder.js │ │ │ ├── editReceiptOrder.js │ │ │ └── addIssueOrder.js │ │ ├── comment │ │ │ ├── deleteComment.js │ │ │ ├── getComment.js │ │ │ ├── addComment.js │ │ │ └── editComment.js │ │ ├── notice │ │ │ └── addFile.js │ │ ├── afterSaleOrder │ │ │ ├── deleteAfterSaleOrder.js │ │ │ ├── addAfterSaleOrder.js │ │ │ └── getAfterSaleOrder.js │ │ ├── express │ │ │ ├── deleteExpress.js │ │ │ ├── editExpress.js │ │ │ └── addExpress.js │ │ ├── login │ │ │ ├── userLogin.js │ │ │ └── login.js │ │ └── user │ │ │ ├── editUser.js │ │ │ ├── addUser.js │ │ │ └── user.js │ └── app.js ├── .prettierrc.json ├── .gitignore ├── index.html ├── .eslintrc.cjs ├── vite.config.js └── package.json └── README.md /vue-project/src/App.vue: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /vue-project/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheShy222/OMBMS/HEAD/vue-project/public/favicon.ico -------------------------------------------------------------------------------- /vue-project/.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | "recommendations": ["Vue.volar", "Vue.vscode-typescript-vue-plugin"] 3 | } 4 | -------------------------------------------------------------------------------- /vue-project/server/public/uploads/1675328360581.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheShy222/OMBMS/HEAD/vue-project/server/public/uploads/1675328360581.jpg -------------------------------------------------------------------------------- /vue-project/server/public/uploads/1675328375320.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheShy222/OMBMS/HEAD/vue-project/server/public/uploads/1675328375320.jpg -------------------------------------------------------------------------------- /vue-project/server/public/uploads/1675328382297.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheShy222/OMBMS/HEAD/vue-project/server/public/uploads/1675328382297.jpg -------------------------------------------------------------------------------- /vue-project/server/public/uploads/1675328395960.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheShy222/OMBMS/HEAD/vue-project/server/public/uploads/1675328395960.jpg -------------------------------------------------------------------------------- /vue-project/server/public/uploads/1675328420019.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheShy222/OMBMS/HEAD/vue-project/server/public/uploads/1675328420019.jpg -------------------------------------------------------------------------------- /vue-project/server/public/uploads/1675328424567.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheShy222/OMBMS/HEAD/vue-project/server/public/uploads/1675328424567.jpg -------------------------------------------------------------------------------- /vue-project/server/public/uploads/1675328429837.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheShy222/OMBMS/HEAD/vue-project/server/public/uploads/1675328429837.jpg -------------------------------------------------------------------------------- /vue-project/server/public/uploads/1675328435974.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheShy222/OMBMS/HEAD/vue-project/server/public/uploads/1675328435974.jpg -------------------------------------------------------------------------------- /vue-project/server/public/uploads/1675328463624.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheShy222/OMBMS/HEAD/vue-project/server/public/uploads/1675328463624.jpg -------------------------------------------------------------------------------- /vue-project/server/public/uploads/1675328478294.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheShy222/OMBMS/HEAD/vue-project/server/public/uploads/1675328478294.jpg -------------------------------------------------------------------------------- /vue-project/server/public/uploads/1675328484666.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheShy222/OMBMS/HEAD/vue-project/server/public/uploads/1675328484666.jpg -------------------------------------------------------------------------------- /vue-project/server/public/uploads/1675328489836.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheShy222/OMBMS/HEAD/vue-project/server/public/uploads/1675328489836.jpg -------------------------------------------------------------------------------- /vue-project/server/public/uploads/1675328495906.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheShy222/OMBMS/HEAD/vue-project/server/public/uploads/1675328495906.jpg -------------------------------------------------------------------------------- /vue-project/server/public/uploads/1675328500135.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheShy222/OMBMS/HEAD/vue-project/server/public/uploads/1675328500135.jpg -------------------------------------------------------------------------------- /vue-project/server/public/uploads/1675328503896.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheShy222/OMBMS/HEAD/vue-project/server/public/uploads/1675328503896.jpg -------------------------------------------------------------------------------- /vue-project/server/public/uploads/1675328508196.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheShy222/OMBMS/HEAD/vue-project/server/public/uploads/1675328508196.jpg -------------------------------------------------------------------------------- /vue-project/server/public/uploads/1675328524851.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheShy222/OMBMS/HEAD/vue-project/server/public/uploads/1675328524851.jpg -------------------------------------------------------------------------------- /vue-project/server/public/uploads/1675328528450.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheShy222/OMBMS/HEAD/vue-project/server/public/uploads/1675328528450.jpg -------------------------------------------------------------------------------- /vue-project/server/public/uploads/1675328531837.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheShy222/OMBMS/HEAD/vue-project/server/public/uploads/1675328531837.jpg -------------------------------------------------------------------------------- /vue-project/server/public/uploads/1675328535426.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheShy222/OMBMS/HEAD/vue-project/server/public/uploads/1675328535426.jpg -------------------------------------------------------------------------------- /vue-project/server/public/uploads/1675328539207.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheShy222/OMBMS/HEAD/vue-project/server/public/uploads/1675328539207.jpg -------------------------------------------------------------------------------- /vue-project/server/public/uploads/1675328543834.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheShy222/OMBMS/HEAD/vue-project/server/public/uploads/1675328543834.jpg -------------------------------------------------------------------------------- /vue-project/server/public/uploads/1675335937863.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheShy222/OMBMS/HEAD/vue-project/server/public/uploads/1675335937863.jpg -------------------------------------------------------------------------------- /vue-project/server/public/uploads/1675335938939.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheShy222/OMBMS/HEAD/vue-project/server/public/uploads/1675335938939.jpg -------------------------------------------------------------------------------- /vue-project/server/public/uploads/1675336489554.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheShy222/OMBMS/HEAD/vue-project/server/public/uploads/1675336489554.jpg -------------------------------------------------------------------------------- /vue-project/server/public/uploads/1675336744285.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheShy222/OMBMS/HEAD/vue-project/server/public/uploads/1675336744285.jpg -------------------------------------------------------------------------------- /vue-project/server/public/uploads/1675336765408.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheShy222/OMBMS/HEAD/vue-project/server/public/uploads/1675336765408.jpg -------------------------------------------------------------------------------- /vue-project/server/public/uploads/1675336776854.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheShy222/OMBMS/HEAD/vue-project/server/public/uploads/1675336776854.jpg -------------------------------------------------------------------------------- /vue-project/server/public/uploads/1675337168483.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheShy222/OMBMS/HEAD/vue-project/server/public/uploads/1675337168483.jpg -------------------------------------------------------------------------------- /vue-project/server/public/uploads/1675337181295.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheShy222/OMBMS/HEAD/vue-project/server/public/uploads/1675337181295.jpg -------------------------------------------------------------------------------- /vue-project/server/public/uploads/1675473823131.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheShy222/OMBMS/HEAD/vue-project/server/public/uploads/1675473823131.jpg -------------------------------------------------------------------------------- /vue-project/server/public/uploads/1675473956833.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheShy222/OMBMS/HEAD/vue-project/server/public/uploads/1675473956833.jpg -------------------------------------------------------------------------------- /vue-project/server/public/uploads/1675474048973.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheShy222/OMBMS/HEAD/vue-project/server/public/uploads/1675474048973.jpg -------------------------------------------------------------------------------- /vue-project/server/public/uploads/1675474382889.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheShy222/OMBMS/HEAD/vue-project/server/public/uploads/1675474382889.jpg -------------------------------------------------------------------------------- /vue-project/server/public/uploads/1675474389203.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheShy222/OMBMS/HEAD/vue-project/server/public/uploads/1675474389203.jpg -------------------------------------------------------------------------------- /vue-project/server/public/uploads/1675474393807.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheShy222/OMBMS/HEAD/vue-project/server/public/uploads/1675474393807.jpg -------------------------------------------------------------------------------- /vue-project/server/public/uploads/1675475128674.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheShy222/OMBMS/HEAD/vue-project/server/public/uploads/1675475128674.jpg -------------------------------------------------------------------------------- /vue-project/server/public/uploads/1675476054032.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheShy222/OMBMS/HEAD/vue-project/server/public/uploads/1675476054032.jpg -------------------------------------------------------------------------------- /vue-project/server/public/uploads/1675478095987.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheShy222/OMBMS/HEAD/vue-project/server/public/uploads/1675478095987.jpg -------------------------------------------------------------------------------- /vue-project/server/public/uploads/1676637123930.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheShy222/OMBMS/HEAD/vue-project/server/public/uploads/1676637123930.jpg -------------------------------------------------------------------------------- /vue-project/server/public/uploads/1676637124978.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheShy222/OMBMS/HEAD/vue-project/server/public/uploads/1676637124978.jpg -------------------------------------------------------------------------------- /vue-project/server/public/uploads/1676637125177.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheShy222/OMBMS/HEAD/vue-project/server/public/uploads/1676637125177.jpg -------------------------------------------------------------------------------- /vue-project/server/public/uploads/1676637125352.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheShy222/OMBMS/HEAD/vue-project/server/public/uploads/1676637125352.jpg -------------------------------------------------------------------------------- /vue-project/server/public/uploads/1676637266064.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheShy222/OMBMS/HEAD/vue-project/server/public/uploads/1676637266064.jpg -------------------------------------------------------------------------------- /vue-project/server/public/uploads/1676637709087.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheShy222/OMBMS/HEAD/vue-project/server/public/uploads/1676637709087.jpg -------------------------------------------------------------------------------- /vue-project/server/public/uploads/1676637781813.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheShy222/OMBMS/HEAD/vue-project/server/public/uploads/1676637781813.jpg -------------------------------------------------------------------------------- /vue-project/server/public/uploads/1676638141242.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheShy222/OMBMS/HEAD/vue-project/server/public/uploads/1676638141242.jpg -------------------------------------------------------------------------------- /vue-project/server/public/uploads/1676638586475.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheShy222/OMBMS/HEAD/vue-project/server/public/uploads/1676638586475.jpg -------------------------------------------------------------------------------- /vue-project/server/public/uploads/1676638587335.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheShy222/OMBMS/HEAD/vue-project/server/public/uploads/1676638587335.jpg -------------------------------------------------------------------------------- /vue-project/server/public/uploads/1676638587502.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheShy222/OMBMS/HEAD/vue-project/server/public/uploads/1676638587502.jpg -------------------------------------------------------------------------------- /vue-project/server/public/uploads/1676638587670.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheShy222/OMBMS/HEAD/vue-project/server/public/uploads/1676638587670.jpg -------------------------------------------------------------------------------- /vue-project/server/public/uploads/1676638634665.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheShy222/OMBMS/HEAD/vue-project/server/public/uploads/1676638634665.jpg -------------------------------------------------------------------------------- /vue-project/server/public/uploads/1676638673610.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheShy222/OMBMS/HEAD/vue-project/server/public/uploads/1676638673610.jpg -------------------------------------------------------------------------------- /vue-project/server/public/uploads/1676640973814.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheShy222/OMBMS/HEAD/vue-project/server/public/uploads/1676640973814.jpg -------------------------------------------------------------------------------- /vue-project/server/public/uploads/1676642557752.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheShy222/OMBMS/HEAD/vue-project/server/public/uploads/1676642557752.jpg -------------------------------------------------------------------------------- /vue-project/server/public/uploads/1677163516717.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheShy222/OMBMS/HEAD/vue-project/server/public/uploads/1677163516717.jpg -------------------------------------------------------------------------------- /vue-project/server/public/uploads/1677389084484.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheShy222/OMBMS/HEAD/vue-project/server/public/uploads/1677389084484.jpg -------------------------------------------------------------------------------- /vue-project/server/public/uploads/1677398483002.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheShy222/OMBMS/HEAD/vue-project/server/public/uploads/1677398483002.jpg -------------------------------------------------------------------------------- /vue-project/server/public/uploads/1677400055616.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheShy222/OMBMS/HEAD/vue-project/server/public/uploads/1677400055616.jpg -------------------------------------------------------------------------------- /vue-project/server/public/uploads/1677401124577.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheShy222/OMBMS/HEAD/vue-project/server/public/uploads/1677401124577.jpg -------------------------------------------------------------------------------- /vue-project/server/public/uploads/1677401254476.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheShy222/OMBMS/HEAD/vue-project/server/public/uploads/1677401254476.jpg -------------------------------------------------------------------------------- /vue-project/server/public/uploads/1677401297822.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheShy222/OMBMS/HEAD/vue-project/server/public/uploads/1677401297822.jpg -------------------------------------------------------------------------------- /vue-project/server/public/uploads/1677401454405.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheShy222/OMBMS/HEAD/vue-project/server/public/uploads/1677401454405.jpg -------------------------------------------------------------------------------- /vue-project/server/public/uploads/1677401492556.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheShy222/OMBMS/HEAD/vue-project/server/public/uploads/1677401492556.jpg -------------------------------------------------------------------------------- /vue-project/server/public/uploads/1677401509216.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheShy222/OMBMS/HEAD/vue-project/server/public/uploads/1677401509216.jpg -------------------------------------------------------------------------------- /vue-project/server/public/uploads/1677401517176.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheShy222/OMBMS/HEAD/vue-project/server/public/uploads/1677401517176.jpg -------------------------------------------------------------------------------- /vue-project/server/public/uploads/1680415476799.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheShy222/OMBMS/HEAD/vue-project/server/public/uploads/1680415476799.jpg -------------------------------------------------------------------------------- /vue-project/server/public/uploads/1680415533904.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheShy222/OMBMS/HEAD/vue-project/server/public/uploads/1680415533904.jpg -------------------------------------------------------------------------------- /vue-project/server/public/uploads/1680415558302.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheShy222/OMBMS/HEAD/vue-project/server/public/uploads/1680415558302.jpg -------------------------------------------------------------------------------- /vue-project/server/public/uploads/1680415627999.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheShy222/OMBMS/HEAD/vue-project/server/public/uploads/1680415627999.jpg -------------------------------------------------------------------------------- /vue-project/server/public/uploads/1680415690210.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheShy222/OMBMS/HEAD/vue-project/server/public/uploads/1680415690210.jpg -------------------------------------------------------------------------------- /vue-project/server/public/uploads/1680415847181.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheShy222/OMBMS/HEAD/vue-project/server/public/uploads/1680415847181.jpg -------------------------------------------------------------------------------- /vue-project/server/public/uploads/1680415900459.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheShy222/OMBMS/HEAD/vue-project/server/public/uploads/1680415900459.jpg -------------------------------------------------------------------------------- /vue-project/server/public/uploads/1683284845863.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheShy222/OMBMS/HEAD/vue-project/server/public/uploads/1683284845863.jpg -------------------------------------------------------------------------------- /vue-project/server/public/uploads/1683284853005.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheShy222/OMBMS/HEAD/vue-project/server/public/uploads/1683284853005.jpg -------------------------------------------------------------------------------- /vue-project/server/public/uploads/1684556899601.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheShy222/OMBMS/HEAD/vue-project/server/public/uploads/1684556899601.jpg -------------------------------------------------------------------------------- /vue-project/server/public/uploads/1684562086093.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheShy222/OMBMS/HEAD/vue-project/server/public/uploads/1684562086093.jpg -------------------------------------------------------------------------------- /vue-project/server/public/uploads/1684563360918.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheShy222/OMBMS/HEAD/vue-project/server/public/uploads/1684563360918.jpg -------------------------------------------------------------------------------- /vue-project/server/public/uploads/1684563479333.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheShy222/OMBMS/HEAD/vue-project/server/public/uploads/1684563479333.jpg -------------------------------------------------------------------------------- /vue-project/server/public/uploads/1685073635745.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheShy222/OMBMS/HEAD/vue-project/server/public/uploads/1685073635745.jpg -------------------------------------------------------------------------------- /vue-project/server/public/uploads/1685073645189.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheShy222/OMBMS/HEAD/vue-project/server/public/uploads/1685073645189.jpg -------------------------------------------------------------------------------- /vue-project/server/public/uploads/1685073706549.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheShy222/OMBMS/HEAD/vue-project/server/public/uploads/1685073706549.jpg -------------------------------------------------------------------------------- /vue-project/server/public/uploads/1685073728269.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheShy222/OMBMS/HEAD/vue-project/server/public/uploads/1685073728269.jpg -------------------------------------------------------------------------------- /vue-project/server/public/uploads/1685073823312.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheShy222/OMBMS/HEAD/vue-project/server/public/uploads/1685073823312.jpg -------------------------------------------------------------------------------- /vue-project/server/public/uploads/1685073830612.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheShy222/OMBMS/HEAD/vue-project/server/public/uploads/1685073830612.jpg -------------------------------------------------------------------------------- /vue-project/server/public/uploads/1685075004233.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheShy222/OMBMS/HEAD/vue-project/server/public/uploads/1685075004233.jpg -------------------------------------------------------------------------------- /vue-project/server/public/uploads/1685075014687.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheShy222/OMBMS/HEAD/vue-project/server/public/uploads/1685075014687.jpg -------------------------------------------------------------------------------- /vue-project/server/public/uploads/1685075037677.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheShy222/OMBMS/HEAD/vue-project/server/public/uploads/1685075037677.jpg -------------------------------------------------------------------------------- /vue-project/server/public/uploads/1685075045108.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheShy222/OMBMS/HEAD/vue-project/server/public/uploads/1685075045108.jpg -------------------------------------------------------------------------------- /vue-project/server/public/uploads/1685075080421.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheShy222/OMBMS/HEAD/vue-project/server/public/uploads/1685075080421.jpg -------------------------------------------------------------------------------- /vue-project/server/public/uploads/1685075090360.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheShy222/OMBMS/HEAD/vue-project/server/public/uploads/1685075090360.jpg -------------------------------------------------------------------------------- /vue-project/server/public/uploads/1685075129708.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheShy222/OMBMS/HEAD/vue-project/server/public/uploads/1685075129708.jpg -------------------------------------------------------------------------------- /vue-project/server/public/uploads/1685075139414.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheShy222/OMBMS/HEAD/vue-project/server/public/uploads/1685075139414.jpg -------------------------------------------------------------------------------- /vue-project/server/public/uploads/1685090964047.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheShy222/OMBMS/HEAD/vue-project/server/public/uploads/1685090964047.jpg -------------------------------------------------------------------------------- /vue-project/server/public/uploads/1685090968386.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheShy222/OMBMS/HEAD/vue-project/server/public/uploads/1685090968386.jpg -------------------------------------------------------------------------------- /vue-project/server/public/uploads/1685090974299.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheShy222/OMBMS/HEAD/vue-project/server/public/uploads/1685090974299.jpg -------------------------------------------------------------------------------- /vue-project/server/public/uploads/1685190372895.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheShy222/OMBMS/HEAD/vue-project/server/public/uploads/1685190372895.jpg -------------------------------------------------------------------------------- /vue-project/server/public/uploads/1685190393390.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheShy222/OMBMS/HEAD/vue-project/server/public/uploads/1685190393390.jpg -------------------------------------------------------------------------------- /vue-project/server/public/uploads/1685190399783.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheShy222/OMBMS/HEAD/vue-project/server/public/uploads/1685190399783.jpg -------------------------------------------------------------------------------- /vue-project/server/public/uploads/1685190414559.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheShy222/OMBMS/HEAD/vue-project/server/public/uploads/1685190414559.jpg -------------------------------------------------------------------------------- /vue-project/server/public/uploads/1685191168554.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheShy222/OMBMS/HEAD/vue-project/server/public/uploads/1685191168554.jpg -------------------------------------------------------------------------------- /vue-project/server/public/uploads/1685191172630.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheShy222/OMBMS/HEAD/vue-project/server/public/uploads/1685191172630.jpg -------------------------------------------------------------------------------- /vue-project/server/public/uploads/1685191178576.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheShy222/OMBMS/HEAD/vue-project/server/public/uploads/1685191178576.jpg -------------------------------------------------------------------------------- /vue-project/server/public/uploads/1685191203414.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheShy222/OMBMS/HEAD/vue-project/server/public/uploads/1685191203414.jpg -------------------------------------------------------------------------------- /vue-project/server/public/uploads/1685191273518.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheShy222/OMBMS/HEAD/vue-project/server/public/uploads/1685191273518.jpg -------------------------------------------------------------------------------- /vue-project/server/public/uploads/1685191280191.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheShy222/OMBMS/HEAD/vue-project/server/public/uploads/1685191280191.jpg -------------------------------------------------------------------------------- /vue-project/server/public/uploads/1685193366435.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheShy222/OMBMS/HEAD/vue-project/server/public/uploads/1685193366435.jpg -------------------------------------------------------------------------------- /vue-project/server/public/uploads/1685193373406.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheShy222/OMBMS/HEAD/vue-project/server/public/uploads/1685193373406.jpg -------------------------------------------------------------------------------- /vue-project/server/public/uploads/1685193394660.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheShy222/OMBMS/HEAD/vue-project/server/public/uploads/1685193394660.jpg -------------------------------------------------------------------------------- /vue-project/server/public/uploads/1685193450101.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheShy222/OMBMS/HEAD/vue-project/server/public/uploads/1685193450101.jpg -------------------------------------------------------------------------------- /vue-project/server/public/uploads/1685193464558.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheShy222/OMBMS/HEAD/vue-project/server/public/uploads/1685193464558.jpg -------------------------------------------------------------------------------- /vue-project/server/public/uploads/1685193527174.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheShy222/OMBMS/HEAD/vue-project/server/public/uploads/1685193527174.jpg -------------------------------------------------------------------------------- /vue-project/server/public/uploads/1685193534944.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheShy222/OMBMS/HEAD/vue-project/server/public/uploads/1685193534944.jpg -------------------------------------------------------------------------------- /vue-project/server/public/uploads/1685193935292.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheShy222/OMBMS/HEAD/vue-project/server/public/uploads/1685193935292.jpg -------------------------------------------------------------------------------- /vue-project/server/public/uploads/1685193939621.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheShy222/OMBMS/HEAD/vue-project/server/public/uploads/1685193939621.jpg -------------------------------------------------------------------------------- /vue-project/server/public/uploads/1685193953276.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheShy222/OMBMS/HEAD/vue-project/server/public/uploads/1685193953276.jpg -------------------------------------------------------------------------------- /vue-project/server/public/uploads/1685244335599.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheShy222/OMBMS/HEAD/vue-project/server/public/uploads/1685244335599.jpg -------------------------------------------------------------------------------- /vue-project/server/public/uploads/1685244408517.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheShy222/OMBMS/HEAD/vue-project/server/public/uploads/1685244408517.jpg -------------------------------------------------------------------------------- /vue-project/server/public/uploads/1685244496941.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheShy222/OMBMS/HEAD/vue-project/server/public/uploads/1685244496941.jpg -------------------------------------------------------------------------------- /vue-project/public/tinymce/plugins/help/img/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheShy222/OMBMS/HEAD/vue-project/public/tinymce/plugins/help/img/logo.png -------------------------------------------------------------------------------- /vue-project/public/tinymce/skins/lightgray/img/trans.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheShy222/OMBMS/HEAD/vue-project/public/tinymce/skins/lightgray/img/trans.gif -------------------------------------------------------------------------------- /vue-project/public/tinymce/skins/lightgray/img/anchor.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheShy222/OMBMS/HEAD/vue-project/public/tinymce/skins/lightgray/img/anchor.gif -------------------------------------------------------------------------------- /vue-project/public/tinymce/skins/lightgray/img/loader.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheShy222/OMBMS/HEAD/vue-project/public/tinymce/skins/lightgray/img/loader.gif -------------------------------------------------------------------------------- /vue-project/public/tinymce/skins/lightgray/img/object.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheShy222/OMBMS/HEAD/vue-project/public/tinymce/skins/lightgray/img/object.gif -------------------------------------------------------------------------------- /vue-project/public/tinymce/skins/lightgray/fonts/tinymce.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheShy222/OMBMS/HEAD/vue-project/public/tinymce/skins/lightgray/fonts/tinymce.eot -------------------------------------------------------------------------------- /vue-project/public/tinymce/skins/lightgray/fonts/tinymce.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheShy222/OMBMS/HEAD/vue-project/public/tinymce/skins/lightgray/fonts/tinymce.ttf -------------------------------------------------------------------------------- /vue-project/public/tinymce/skins/lightgray/fonts/tinymce.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheShy222/OMBMS/HEAD/vue-project/public/tinymce/skins/lightgray/fonts/tinymce.woff -------------------------------------------------------------------------------- /vue-project/public/tinymce/plugins/emoticons/img/smiley-cry.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheShy222/OMBMS/HEAD/vue-project/public/tinymce/plugins/emoticons/img/smiley-cry.gif -------------------------------------------------------------------------------- /vue-project/public/tinymce/plugins/emoticons/img/smiley-cool.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheShy222/OMBMS/HEAD/vue-project/public/tinymce/plugins/emoticons/img/smiley-cool.gif -------------------------------------------------------------------------------- /vue-project/public/tinymce/plugins/emoticons/img/smiley-frown.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheShy222/OMBMS/HEAD/vue-project/public/tinymce/plugins/emoticons/img/smiley-frown.gif -------------------------------------------------------------------------------- /vue-project/public/tinymce/plugins/emoticons/img/smiley-kiss.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheShy222/OMBMS/HEAD/vue-project/public/tinymce/plugins/emoticons/img/smiley-kiss.gif -------------------------------------------------------------------------------- /vue-project/public/tinymce/plugins/emoticons/img/smiley-sealed.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheShy222/OMBMS/HEAD/vue-project/public/tinymce/plugins/emoticons/img/smiley-sealed.gif -------------------------------------------------------------------------------- /vue-project/public/tinymce/plugins/emoticons/img/smiley-smile.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheShy222/OMBMS/HEAD/vue-project/public/tinymce/plugins/emoticons/img/smiley-smile.gif -------------------------------------------------------------------------------- /vue-project/public/tinymce/plugins/emoticons/img/smiley-wink.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheShy222/OMBMS/HEAD/vue-project/public/tinymce/plugins/emoticons/img/smiley-wink.gif -------------------------------------------------------------------------------- /vue-project/public/tinymce/plugins/emoticons/img/smiley-yell.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheShy222/OMBMS/HEAD/vue-project/public/tinymce/plugins/emoticons/img/smiley-yell.gif -------------------------------------------------------------------------------- /vue-project/public/tinymce/skins/lightgray/fonts/tinymce-small.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheShy222/OMBMS/HEAD/vue-project/public/tinymce/skins/lightgray/fonts/tinymce-small.eot -------------------------------------------------------------------------------- /vue-project/public/tinymce/skins/lightgray/fonts/tinymce-small.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheShy222/OMBMS/HEAD/vue-project/public/tinymce/skins/lightgray/fonts/tinymce-small.ttf -------------------------------------------------------------------------------- /vue-project/public/tinymce/plugins/emoticons/img/smiley-innocent.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheShy222/OMBMS/HEAD/vue-project/public/tinymce/plugins/emoticons/img/smiley-innocent.gif -------------------------------------------------------------------------------- /vue-project/public/tinymce/plugins/emoticons/img/smiley-laughing.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheShy222/OMBMS/HEAD/vue-project/public/tinymce/plugins/emoticons/img/smiley-laughing.gif -------------------------------------------------------------------------------- /vue-project/public/tinymce/skins/lightgray/fonts/tinymce-mobile.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheShy222/OMBMS/HEAD/vue-project/public/tinymce/skins/lightgray/fonts/tinymce-mobile.woff -------------------------------------------------------------------------------- /vue-project/public/tinymce/skins/lightgray/fonts/tinymce-small.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheShy222/OMBMS/HEAD/vue-project/public/tinymce/skins/lightgray/fonts/tinymce-small.woff -------------------------------------------------------------------------------- /vue-project/public/tinymce/plugins/emoticons/img/smiley-embarassed.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheShy222/OMBMS/HEAD/vue-project/public/tinymce/plugins/emoticons/img/smiley-embarassed.gif -------------------------------------------------------------------------------- /vue-project/public/tinymce/plugins/emoticons/img/smiley-money-mouth.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheShy222/OMBMS/HEAD/vue-project/public/tinymce/plugins/emoticons/img/smiley-money-mouth.gif -------------------------------------------------------------------------------- /vue-project/public/tinymce/plugins/emoticons/img/smiley-surprised.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheShy222/OMBMS/HEAD/vue-project/public/tinymce/plugins/emoticons/img/smiley-surprised.gif -------------------------------------------------------------------------------- /vue-project/public/tinymce/plugins/emoticons/img/smiley-tongue-out.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheShy222/OMBMS/HEAD/vue-project/public/tinymce/plugins/emoticons/img/smiley-tongue-out.gif -------------------------------------------------------------------------------- /vue-project/public/tinymce/plugins/emoticons/img/smiley-undecided.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheShy222/OMBMS/HEAD/vue-project/public/tinymce/plugins/emoticons/img/smiley-undecided.gif -------------------------------------------------------------------------------- /vue-project/public/tinymce/plugins/emoticons/img/smiley-foot-in-mouth.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TheShy222/OMBMS/HEAD/vue-project/public/tinymce/plugins/emoticons/img/smiley-foot-in-mouth.gif -------------------------------------------------------------------------------- /vue-project/src/views/NotPage.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 12 | 13 | -------------------------------------------------------------------------------- /vue-project/.prettierrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "tabWidth": 4, 3 | "useTabs": false, 4 | "semi": false, 5 | "singleQuote": true, 6 | "TrailingComma": "all", 7 | "bracketSpacing": true, 8 | "jsxBracketSameLine": false, 9 | "arrowParens": "avoid" 10 | } -------------------------------------------------------------------------------- /vue-project/src/utils/request.js: -------------------------------------------------------------------------------- 1 | import axios from 'axios' 2 | /** 3 | * 创建axios实例 4 | * 封装baseURL 5 | */ 6 | const axiosInstance = axios.create({ 7 | baseURL: 'http://127.0.0.1:8888', // 服务根地址 8 | timeout: 3000, // 超时时间 9 | }) 10 | 11 | export default axiosInstance -------------------------------------------------------------------------------- /vue-project/public/tinymce/skins/lightgray/content.mobile.min.css: -------------------------------------------------------------------------------- 1 | .tinymce-mobile-unfocused-selections .tinymce-mobile-unfocused-selection{position:absolute;display:inline-block;background-color:green;opacity:.5}body{-webkit-text-size-adjust:none}body img{max-width:96vw}body table img{max-width:95%} -------------------------------------------------------------------------------- /vue-project/server/api/db/index.js: -------------------------------------------------------------------------------- 1 | let mysql = require('mysql') 2 | 3 | let db = mysql.createPool({ 4 | host: '127.0.0.1', //数据库IP地址 5 | user: 'root', //数据库登录账号 6 | password: '123456', //数据库登录密码 7 | database: 'pc' //要操作的数据库 8 | }) 9 | 10 | module.exports = db 11 | -------------------------------------------------------------------------------- /vue-project/src/api/NoticeFile/file.js: -------------------------------------------------------------------------------- 1 | import axiosInstance from '@/utils/request.js' 2 | /** 3 | * 商品信息接口 4 | */ 5 | export const RequestAddFile = (file) => { 6 | return axiosInstance({ 7 | method: 'post', 8 | url: '/addFile', 9 | data: { 10 | file 11 | } 12 | }) 13 | } -------------------------------------------------------------------------------- /vue-project/src/api/GoodsShow/goodsShow.js: -------------------------------------------------------------------------------- 1 | import axiosInstance from '@/utils/request.js' 2 | /** 3 | * 商品信息接口 4 | */ 5 | export const RequestGoodsShow = (type) => { 6 | return axiosInstance({ 7 | method: 'get', 8 | url: '/goodsShow', 9 | params:{ 10 | type 11 | } 12 | }) 13 | } -------------------------------------------------------------------------------- /vue-project/src/assets/logo.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /vue-project/server/api/admin/admin.js: -------------------------------------------------------------------------------- 1 | let db = require('../db/index.js') 2 | //获取管理员列表 3 | exports.get=(req,res)=>{ 4 | let sql=`select * from admin` 5 | db.query(sql,(err,data)=>{ 6 | if (err) { 7 | return res.send('错误:' + err.message) 8 | } 9 | res.send({ 10 | code: 1, 11 | list:data 12 | }) 13 | }) 14 | } -------------------------------------------------------------------------------- /vue-project/server/api/carousel/carousel.js: -------------------------------------------------------------------------------- 1 | let db = require('../db/index.js') 2 | //获取管理员列表 3 | exports.get=(req,res)=>{ 4 | let sql=`select * from carousel` 5 | db.query(sql,(err,data)=>{ 6 | if (err) { 7 | return res.send('错误:' + err.message) 8 | } 9 | res.send({ 10 | code: 1, 11 | list:data 12 | }) 13 | }) 14 | } -------------------------------------------------------------------------------- /vue-project/server/api/supplier/supplier.js: -------------------------------------------------------------------------------- 1 | let db = require('../db/index.js') 2 | //获取供应商列表 3 | exports.get=(req,res)=>{ 4 | let sql=`select * from supplier` 5 | db.query(sql,(err,data)=>{ 6 | if (err) { 7 | return res.send('错误:' + err.message) 8 | } 9 | res.send({ 10 | code: 1, 11 | list:data 12 | }) 13 | }) 14 | } -------------------------------------------------------------------------------- /vue-project/server/api/recommend/recommend.js: -------------------------------------------------------------------------------- 1 | let db = require('../db/index.js') 2 | //获取管理员列表 3 | exports.get=(req,res)=>{ 4 | let sql=`select * from recommend` 5 | db.query(sql,(err,data)=>{ 6 | if (err) { 7 | return res.send('错误:' + err.message) 8 | } 9 | res.send({ 10 | code: 1, 11 | list:data 12 | }) 13 | }) 14 | } -------------------------------------------------------------------------------- /vue-project/src/api/login.js: -------------------------------------------------------------------------------- 1 | import axiosInstance from '@/utils/request.js' 2 | /** 3 | * 登录接口 4 | */ 5 | export const RequestLogin = (name, password,identity) => { 6 | return axiosInstance({ 7 | method: 'post', 8 | url: '/login', 9 | data: { 10 | name, 11 | password, 12 | identity 13 | } 14 | }) 15 | } -------------------------------------------------------------------------------- /vue-project/server/api/goods/goodsType.js: -------------------------------------------------------------------------------- 1 | let db = require('../db/index.js') 2 | 3 | exports.get = (req, res) => { 4 | let sql = `select * from goodstype` 5 | db.query(sql, (err, data) => { 6 | if(err) { 7 | return res.send('错误:' + err.message) 8 | } 9 | res.send({ 10 | code:1, 11 | list:data 12 | }) 13 | }) 14 | } -------------------------------------------------------------------------------- /vue-project/server/api/order/expressType.js: -------------------------------------------------------------------------------- 1 | let db = require('../db/index.js') 2 | 3 | exports.get = (req, res) => { 4 | let sql=`select * from expressType` 5 | db.query(sql, (err, data) => { 6 | if(err) { 7 | return res.send('错误:' + err.message) 8 | } 9 | res.send({ 10 | code:1, 11 | list:data, 12 | }) 13 | }) 14 | } -------------------------------------------------------------------------------- /vue-project/server/api/goods/goodsSizeType.js: -------------------------------------------------------------------------------- 1 | let db = require('../db/index.js') 2 | 3 | exports.get = (req, res) => { 4 | let sql = `select * from goodsSizeType` 5 | db.query(sql, (err, data) => { 6 | if(err) { 7 | return res.send('错误:' + err.message) 8 | } 9 | res.send({ 10 | code:1, 11 | list:data 12 | }) 13 | }) 14 | } -------------------------------------------------------------------------------- /vue-project/server/api/goods/goodsBrandType.js: -------------------------------------------------------------------------------- 1 | let db = require('../db/index.js') 2 | 3 | exports.get = (req, res) => { 4 | let sql = `select * from goodsBrandType` 5 | db.query(sql, (err, data) => { 6 | if(err) { 7 | return res.send('错误:' + err.message) 8 | } 9 | res.send({ 10 | code:1, 11 | list:data 12 | }) 13 | }) 14 | } -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 完成搭建页面完成,实现管理员登录功能 2 | 完成用户的查看与编辑功能,以及优质用户筛选,管理员的查看功能 3 | 完成管理员的增加,删除,修改功能, 4 | 完成商品的增删查改功能以及搜索批量删除导出excel功能 5 | 完成出库订单的添加、搜索、编辑、分页、发货功能,并实现商品库存实时更新 6 | 完成商品种类功能,实现基本curd操作,优化登录功能和服务器 7 | 完成轮播图的curd操作,公告发布模块,新增用户功能 8 | 完成供应商模块,实现curd操作 9 | 完成物流配送方式的curd操作,并封装了一个弹框组件 10 | 完成入库订单的curd操作,为了合理性,未写删除功能,同时又封装了一次弹框组件 11 | 完成评论模块的curd操作,对表格展示数据以及弹框封装成了组件 12 | 完成推荐模块 13 | 完成退货订单模块 14 | 完成不同管理员权限 15 | 完成首页数据可视化展示 -------------------------------------------------------------------------------- /vue-project/server/api/admin/deleAdmin.js: -------------------------------------------------------------------------------- 1 | let db = require('../db/index.js') 2 | //获取管理员列表 3 | exports.get=(req,res)=>{ 4 | let id=req.query.id 5 | let sql=`delete from admin where id=${id}` 6 | db.query(sql,(err,data)=>{ 7 | if (err) { 8 | return res.send('错误:' + err.message) 9 | } 10 | res.send({ 11 | code: 1, 12 | msg:'删除成功' 13 | }) 14 | }) 15 | } -------------------------------------------------------------------------------- /vue-project/server/api/goods/batchDeleteGoods.js: -------------------------------------------------------------------------------- 1 | let db = require('../db/index.js') 2 | exports.get = (req, res) => { 3 | let ids = req.query.ids 4 | let sql = `delete from goodsinfo where id in (${ids})` 5 | db.query(sql, (err, data) => { 6 | if (err) { 7 | return res.send('错误:' + err.message) 8 | } 9 | res.send({ 10 | code: 1, 11 | msg: "批量删除数据成功" 12 | }) 13 | }) 14 | } 15 | -------------------------------------------------------------------------------- /vue-project/server/api/order/getIssueOrderState.js: -------------------------------------------------------------------------------- 1 | let db = require('../db/index.js') 2 | 3 | exports.get = (req, res) => { 4 | let sql=`select * from issueOrder where state='未发货'` 5 | db.query(sql, (err, data) => { 6 | if(err) { 7 | return res.send('错误:' + err.message) 8 | } 9 | res.send({ 10 | code:1, 11 | sending:data.length, 12 | }) 13 | }) 14 | } -------------------------------------------------------------------------------- /vue-project/server/api/supplier/deleteSupplier.js: -------------------------------------------------------------------------------- 1 | let db = require('../db/index.js') 2 | //获取供应商列表 3 | exports.delete = (req, res) => { 4 | let id = req.query.id 5 | let sql = `delete from supplier where supplierid=${id}` 6 | db.query(sql, (err, data) => { 7 | if (err) { 8 | return res.send('错误:' + err.message) 9 | } 10 | res.send({ 11 | code: 1, 12 | msg: 'success' 13 | }) 14 | }) 15 | } -------------------------------------------------------------------------------- /vue-project/server/api/comment/deleteComment.js: -------------------------------------------------------------------------------- 1 | let db = require('../db/index.js') 2 | //获取管理员列表 3 | exports.delete=(req,res)=>{ 4 | let id=req.query.commentId 5 | let sql=`delete from comment where commentId=${id}` 6 | db.query(sql,(err,data)=>{ 7 | if (err) { 8 | return res.send('错误:' + err.message) 9 | } 10 | res.send({ 11 | code: 1, 12 | msg:'success' 13 | }) 14 | }) 15 | } -------------------------------------------------------------------------------- /vue-project/server/api/carousel/deleteCarousel.js: -------------------------------------------------------------------------------- 1 | let db = require('../db/index.js') 2 | //获取管理员列表 3 | exports.get=(req,res)=>{ 4 | let id=req.query.carouselid 5 | let sql=`delete from carousel where carouselid=${id}` 6 | db.query(sql,(err,data)=>{ 7 | if (err) { 8 | return res.send('错误:' + err.message) 9 | } 10 | res.send({ 11 | code: 1, 12 | msg:'success' 13 | }) 14 | }) 15 | } -------------------------------------------------------------------------------- /vue-project/server/api/goods/deleteGoods.js: -------------------------------------------------------------------------------- 1 | let db = require('../db/index.js') 2 | 3 | exports.get = (req, res) => { 4 | let id = req.query.id 5 | let sql = `delete from goodsInfo where id=${id}` 6 | db.query(sql, (err, data) => { 7 | if (err) { 8 | return res.send('错误:' + err.message) 9 | } 10 | res.send({ 11 | code: 1, 12 | msg: 'success' 13 | }) 14 | }) 15 | } -------------------------------------------------------------------------------- /vue-project/server/api/goods/getGoodsById.js: -------------------------------------------------------------------------------- 1 | let db = require('../db/index.js') 2 | 3 | exports.get = (req, res) => { 4 | let id = req.query.id 5 | let sql = `select * from goodsinfo where id=${id}` 6 | db.query(sql, (err, data) => { 7 | if (err) { 8 | return res.send('错误:' + err.message) 9 | } 10 | res.send({ 11 | code: 1, 12 | list: data 13 | }) 14 | }) 15 | } -------------------------------------------------------------------------------- /vue-project/server/api/goods/deleteGoodsType.js: -------------------------------------------------------------------------------- 1 | let db = require('../db/index.js') 2 | 3 | exports.get = (req, res) => { 4 | let id = req.query.id 5 | let sql = `delete from goodsType where id=${id}` 6 | db.query(sql, (err, data) => { 7 | if (err) { 8 | return res.send('错误:' + err.message) 9 | } 10 | res.send({ 11 | code: 1, 12 | msg: 'success' 13 | }) 14 | }) 15 | } -------------------------------------------------------------------------------- /vue-project/.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | pnpm-debug.log* 8 | lerna-debug.log* 9 | 10 | node_modules 11 | .DS_Store 12 | dist 13 | dist-ssr 14 | coverage 15 | *.local 16 | 17 | /cypress/videos/ 18 | /cypress/screenshots/ 19 | 20 | # Editor directories and files 21 | .vscode/* 22 | !.vscode/extensions.json 23 | .idea 24 | *.suo 25 | *.ntvs* 26 | *.njsproj 27 | *.sln 28 | *.sw? 29 | -------------------------------------------------------------------------------- /vue-project/server/api/recommend/deleteRecommend.js: -------------------------------------------------------------------------------- 1 | let db = require('../db/index.js') 2 | 3 | exports.delete = (req, res) => { 4 | let id = req.query.id 5 | let sql = `delete from recommend where id=${id}` 6 | db.query(sql, (err, data) => { 7 | if (err) { 8 | return res.send('错误:' + err.message) 9 | } 10 | res.send({ 11 | code: 1, 12 | msg: 'success' 13 | }) 14 | }) 15 | } -------------------------------------------------------------------------------- /vue-project/src/store/index.js: -------------------------------------------------------------------------------- 1 | import { createStore } from 'vuex' 2 | import loginAccount from "./modules/loginAccount" 3 | import createPersistedState from 'vuex-persistedstate' 4 | // 创建store对象 5 | const store = createStore({ 6 | modules: { 7 | loginAccount 8 | }, 9 | // 集成插件 10 | plugins:[createPersistedState({ 11 | storage:sessionStorage, 12 | key:'storekey' 13 | })] 14 | }) 15 | 16 | export default store 17 | -------------------------------------------------------------------------------- /vue-project/public/tinymce/plugins/hr/plugin.min.js: -------------------------------------------------------------------------------- 1 | !function(){"use strict";var n=tinymce.util.Tools.resolve("tinymce.PluginManager"),t=function(n){n.addCommand("InsertHorizontalRule",function(){n.execCommand("mceInsertContent",!1,"
")})},o=function(n){n.addButton("hr",{icon:"hr",tooltip:"Horizontal line",cmd:"InsertHorizontalRule"}),n.addMenuItem("hr",{icon:"hr",text:"Horizontal line",cmd:"InsertHorizontalRule",context:"insert"})};n.add("hr",function(n){t(n),o(n)})}(); -------------------------------------------------------------------------------- /vue-project/server/api/notice/addFile.js: -------------------------------------------------------------------------------- 1 | let db = require('../db/index.js') 2 | exports.post = (req, res) => { 3 | let file=JSON.parse(JSON.stringify(req.body)).file 4 | let sql = `insert into noticefile values ('${file}')` 5 | db.query(sql, (err, data) => { 6 | if(err) { 7 | return res.send('错误:' + err.message) 8 | } 9 | res.send({ 10 | code:1, 11 | msg:'success' 12 | }) 13 | }) 14 | } -------------------------------------------------------------------------------- /vue-project/server/api/order/deleteOrder.js: -------------------------------------------------------------------------------- 1 | let db = require('../db/index.js') 2 | 3 | exports.get = (req, res) => { 4 | let orderNumber=req.query.orderNumber 5 | let sql=`delete from issueOrder where orderNumber=${orderNumber}` 6 | db.query(sql, (err, data) => { 7 | if(err) { 8 | return res.send('错误:' + err.message) 9 | } 10 | res.send({ 11 | code:1, 12 | msg:'success' 13 | }) 14 | }) 15 | } -------------------------------------------------------------------------------- /vue-project/server/api/afterSaleOrder/deleteAfterSaleOrder.js: -------------------------------------------------------------------------------- 1 | let db = require('../db/index.js') 2 | //获取管理员列表 3 | exports.delete=(req,res)=>{ 4 | let orderNumber=req.query.orderNumber 5 | let sql=`delete from aftersaleorder where orderNumber='${orderNumber}'` 6 | db.query(sql,(err,data)=>{ 7 | if (err) { 8 | return res.send('错误:' + err.message) 9 | } 10 | res.send({ 11 | code: 1, 12 | msg:'删除成功' 13 | }) 14 | }) 15 | } -------------------------------------------------------------------------------- /vue-project/server/api/express/deleteExpress.js: -------------------------------------------------------------------------------- 1 | let db = require('../db/index.js') 2 | 3 | exports.delete = (req, res) => { 4 | let id = req.query.id 5 | let sql = `delete from expresstype where id=${id}` 6 | console.log(sql); 7 | db.query(sql, (err, data) => { 8 | if (err) { 9 | return res.send('错误:' + err.message) 10 | } 11 | res.send({ 12 | code: 1, 13 | msg: 'success' 14 | }) 15 | }) 16 | } -------------------------------------------------------------------------------- /vue-project/server/api/order/getOrderByOrderNumber.js: -------------------------------------------------------------------------------- 1 | let db = require('../db/index.js') 2 | 3 | exports.get = (req, res) => { 4 | let orderNumber=req.query.orderNumber 5 | let sql=`select * from issueOrder where orderNumber=${orderNumber}` 6 | db.query(sql, (err, data) => { 7 | if(err) { 8 | return res.send('错误:' + err.message) 9 | } 10 | res.send({ 11 | code:1, 12 | list:data, 13 | }) 14 | }) 15 | } -------------------------------------------------------------------------------- /vue-project/server/api/order/orderSuccess.js: -------------------------------------------------------------------------------- 1 | let db = require('../db/index.js') 2 | 3 | exports.get = (req, res) => { 4 | let orderNumber=req.query.orderNumber 5 | let sql=`select * from issueOrder where phoneNumber=${orderNumber} and state='未发货'` 6 | db.query(sql, (err, data) => { 7 | if(err) { 8 | return res.send('错误:' + err.message) 9 | } 10 | res.send({ 11 | code:1, 12 | list:data, 13 | }) 14 | }) 15 | } -------------------------------------------------------------------------------- /vue-project/server/api/order/shippedOrder.js: -------------------------------------------------------------------------------- 1 | let db = require('../db/index.js') 2 | 3 | exports.get = (req, res) => { 4 | let orderNumber=req.query.orderNumber 5 | let sql=`select * from issueOrder where phoneNumber=${orderNumber} and state='已发货'` 6 | db.query(sql, (err, data) => { 7 | if(err) { 8 | return res.send('错误:' + err.message) 9 | } 10 | res.send({ 11 | code:1, 12 | list:data, 13 | }) 14 | }) 15 | } -------------------------------------------------------------------------------- /vue-project/server/api/goods/goodsShow.js: -------------------------------------------------------------------------------- 1 | let db = require('../db/index.js') 2 | 3 | exports.get = (req, res) => { 4 | let categoryId = req.query.categoryId 5 | let sql = `select * from goodsinfo where type=(select type from goodstype where id=${categoryId})` 6 | db.query(sql, (err, data) => { 7 | if (err) { 8 | return res.send('错误:' + err.message) 9 | } 10 | res.send({ 11 | code: 1, 12 | list: data 13 | }) 14 | }) 15 | } -------------------------------------------------------------------------------- /vue-project/public/tinymce/plugins/print/plugin.min.js: -------------------------------------------------------------------------------- 1 | !function(){"use strict";var t=tinymce.util.Tools.resolve("tinymce.PluginManager"),n=tinymce.util.Tools.resolve("tinymce.Env"),i=function(t){t.addCommand("mcePrint",function(){n.ie&&n.ie<=11?t.getDoc().execCommand("print",!1,null):t.getWin().print()})},e=function(t){t.addButton("print",{title:"Print",cmd:"mcePrint"}),t.addMenuItem("print",{text:"Print",cmd:"mcePrint",icon:"print"})};t.add("print",function(t){i(t),e(t),t.addShortcut("Meta+P","","mcePrint")})}(); -------------------------------------------------------------------------------- /vue-project/src/main.js: -------------------------------------------------------------------------------- 1 | import { createApp } from 'vue' 2 | import App from './App.vue' 3 | import router from './router' 4 | import store from './store' 5 | import './assets/base.css' 6 | import './permission.js' //登录认证 7 | import * as ElementPlusIconsVue from '@element-plus/icons-vue' 8 | const app = createApp(App) 9 | for (const [key, component] of Object.entries(ElementPlusIconsVue)) { 10 | app.component(key, component) 11 | } 12 | app.use(router) 13 | app.use(store) 14 | app.mount('#app') 15 | 16 | -------------------------------------------------------------------------------- /vue-project/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 线上商城后台管理系统 9 | 10 | 11 | 12 | 13 | 14 |
15 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /vue-project/server/app.js: -------------------------------------------------------------------------------- 1 | let express = require('express') 2 | let app = express() 3 | let cors = require('cors') 4 | app.use(express.static('public')) 5 | let bodyParser = require('body-parser') 6 | let router = require('./router.js') 7 | app.use(bodyParser.json()); //配置解析,用于解析json和urlencoded格式的数据 8 | app.use(bodyParser.urlencoded({ extended: false })); 9 | app.use(cors()) //配置跨域 10 | app.use(router) //配置路由 11 | app.listen(8888, () => { 12 | console.log('本地服务器启动成功>>>>'); 13 | }) 14 | -------------------------------------------------------------------------------- /vue-project/server/api/carousel/editCarousel.js: -------------------------------------------------------------------------------- 1 | let db = require('../db/index.js') 2 | //获取管理员列表 3 | exports.post=(req,res)=>{ 4 | let id=req.body.carouselid 5 | let url = 'http://localhost:8888/uploads/' + req.file.filename 6 | let sql=`update carousel set url='${url}' where carouselid=${id}` 7 | db.query(sql,(err,data)=>{ 8 | if (err) { 9 | return res.send('错误:' + err.message) 10 | } 11 | res.send({ 12 | code: 1, 13 | msg:'success' 14 | }) 15 | }) 16 | } -------------------------------------------------------------------------------- /vue-project/server/api/order/goodsNumberChange.js: -------------------------------------------------------------------------------- 1 | let db = require('../db/index.js') 2 | 3 | exports.post = (req, res) => { 4 | let number=req.body.formData.number 5 | let id=req.body.formData.id 6 | let sql=`update goodsInfo set reserve=reserve-${number} where id=${id}` 7 | db.query(sql, (err, data) => { 8 | if(err) { 9 | return res.send('错误:' + err.message) 10 | } 11 | res.send({ 12 | code:1, 13 | msg:'商品数量更新成功' 14 | }) 15 | }) 16 | } -------------------------------------------------------------------------------- /vue-project/server/api/goods/editGoodsType.js: -------------------------------------------------------------------------------- 1 | let db = require('../db/index.js') 2 | 3 | exports.post = (req, res) => { 4 | let id = req.body.id 5 | let type=req.body.type 6 | let sample = 'http://localhost:8888/uploads/' + req.file.filename 7 | let sql = `update goodsType set type='${type}',sample='${sample}' where id=${id}` 8 | db.query(sql, (err, data) => { 9 | if (err) { 10 | return res.send('错误:' + err.message) 11 | } 12 | res.send({ 13 | code: 1, 14 | msg: "修改数据成功" 15 | }) 16 | }) 17 | } 18 | -------------------------------------------------------------------------------- /vue-project/server/api/express/editExpress.js: -------------------------------------------------------------------------------- 1 | let db = require('../db/index.js') 2 | 3 | exports.put = (req, res) => { 4 | let data = req.body 5 | let logo = 'http://localhost:8888/uploads/' + req.file.filename 6 | let sql = `update expresstype set type='${data.type}',logo='${logo}' where id=${data.id}` 7 | db.query(sql, (err, data) => { 8 | if(err) { 9 | return res.send('错误:' + err.message) 10 | } 11 | res.send({ 12 | code:1, 13 | msg:'success' 14 | }) 15 | }) 16 | } -------------------------------------------------------------------------------- /vue-project/server/api/order/issueOrderStateChange.js: -------------------------------------------------------------------------------- 1 | let db = require('../db/index.js') 2 | 3 | exports.post = (req, res) => { 4 | let orderNumber=req.body.orderNumber 5 | let expressType=req.body.expressType 6 | let sql=`update issueOrder set state='已发货',express='${expressType}' where orderNumber='${orderNumber}'` 7 | db.query(sql, (err, data) => { 8 | if(err) { 9 | return res.send('错误:' + err.message) 10 | } 11 | res.send({ 12 | code:1, 13 | msg:'发货成功' 14 | }) 15 | }) 16 | } -------------------------------------------------------------------------------- /vue-project/server/api/carousel/addCarousel.js: -------------------------------------------------------------------------------- 1 | let db = require('../db/index.js') 2 | //获取管理员列表 3 | exports.post = (req, res) => { 4 | let id = Number(Date.now().toString().slice(-6)) 5 | let url = 'http://localhost:8888/uploads/' + req.file.filename 6 | let sql = `insert into carousel values (${id},'${url}')` 7 | db.query(sql, (err, data) => { 8 | if (err) { 9 | return res.send('错误:' + err.message) 10 | } 11 | res.send({ 12 | code: 1, 13 | msg: 'success', 14 | }) 15 | }) 16 | } 17 | -------------------------------------------------------------------------------- /vue-project/server/api/recommend/editRecommend.js: -------------------------------------------------------------------------------- 1 | let db = require('../db/index.js') 2 | 3 | exports.put = (req, res) => { 4 | let data = req.body 5 | let url = 'http://localhost:8888/uploads/' + req.file.filename 6 | let sql = `update recommend set url='${url}',name='${data.name}',price=${data.price} where id=${data.id}` 7 | db.query(sql, (err, data) => { 8 | if(err) { 9 | return res.send('错误:' + err.message) 10 | } 11 | res.send({ 12 | code:1, 13 | msg:'success' 14 | }) 15 | }) 16 | } -------------------------------------------------------------------------------- /vue-project/server/api/express/addExpress.js: -------------------------------------------------------------------------------- 1 | let db = require('../db/index.js') 2 | 3 | exports.post = (req, res) => { 4 | let data = req.body 5 | let id = Number(Date.now().toString().slice(-6)) 6 | let logo = 'http://localhost:8888/uploads/' + req.file.filename 7 | let sql = `insert into expresstype values (${id},'${data.type}','${logo}')` 8 | db.query(sql, (err, data) => { 9 | if(err) { 10 | return res.send('错误:' + err.message) 11 | } 12 | res.send({ 13 | code:1, 14 | msg:'success' 15 | }) 16 | }) 17 | } -------------------------------------------------------------------------------- /vue-project/server/api/goods/addGoodsType.js: -------------------------------------------------------------------------------- 1 | let db = require('../db/index.js') 2 | 3 | exports.post = (req, res) => { 4 | let id = Number(Date.now().toString().slice(-6)) 5 | let type=req.body.type 6 | let sample='http://localhost:8888/uploads/' + req.file.filename 7 | let sql = `insert into goodstype values (${id},'${type}','${sample}')` 8 | db.query(sql, (err, data) => { 9 | if(err) { 10 | return res.send('错误:' + err.message) 11 | } 12 | res.send({ 13 | code:1, 14 | msg:'success' 15 | }) 16 | }) 17 | } -------------------------------------------------------------------------------- /vue-project/server/api/afterSaleOrder/addAfterSaleOrder.js: -------------------------------------------------------------------------------- 1 | let db = require('../db/index.js') 2 | 3 | exports.post = (req, res) => { 4 | let data = req.body.formData 5 | let orderNumber = Date.now() 6 | let sql = `insert into aftersaleorder values ('${orderNumber}','${data.cause}','${data.detail}',${data.phoneNumber},'${data.express}',${data.price})` 7 | db.query(sql, (err, data) => { 8 | if(err) { 9 | return res.send('错误:' + err.message) 10 | } 11 | res.send({ 12 | code:1, 13 | msg:'success' 14 | }) 15 | }) 16 | } -------------------------------------------------------------------------------- /vue-project/server/api/admin/editAdmin.js: -------------------------------------------------------------------------------- 1 | let db = require('../db/index.js') 2 | //获取管理员列表 3 | exports.post=(req,res)=>{ 4 | let name=req.body.name 5 | let pass=req.body.password 6 | let id=req.body.id 7 | let headimg = 'http://localhost:8888/uploads/' + req.file.filename 8 | let sql=`update admin set name='${name}',password='${pass}',headimg='${headimg}' where id=${id}` 9 | db.query(sql,(err,data)=>{ 10 | if (err) { 11 | return res.send('错误:' + err.message) 12 | } 13 | res.send({ 14 | code: 1, 15 | msg:'修改成功' 16 | }) 17 | }) 18 | } -------------------------------------------------------------------------------- /vue-project/server/api/admin/changePass.js: -------------------------------------------------------------------------------- 1 | let db = require('../db/index.js') 2 | //获取管理员列表 3 | exports.post = (req, res) => { 4 | let newpass = req.body.password 5 | let id = req.body.id 6 | let headimg = 'http://localhost:8888/uploads/' + req.file.filename 7 | let sql = `update admin set password='${newpass}',headimg='${headimg}' where id=${id}` 8 | db.query(sql, (err, data) => { 9 | if (err) { 10 | return res.send('错误:' + err.message) 11 | } 12 | res.send({ 13 | code: 1, 14 | msg: '修改成功', 15 | }) 16 | }) 17 | } 18 | -------------------------------------------------------------------------------- /vue-project/server/api/recommend/addRecommend.js: -------------------------------------------------------------------------------- 1 | let db = require('../db/index.js') 2 | 3 | exports.post = (req, res) => { 4 | let data = req.body 5 | let id = Number(Date.now().toString().slice(-6)) 6 | let url = 'http://localhost:8888/uploads/' + req.file.filename 7 | let sql = `insert into recommend values (${id},'${url}','${data.name}',${data.price})` 8 | db.query(sql, (err, data) => { 9 | if(err) { 10 | return res.send('错误:' + err.message) 11 | } 12 | res.send({ 13 | code:1, 14 | msg:'success' 15 | }) 16 | }) 17 | } -------------------------------------------------------------------------------- /vue-project/server/api/admin/addAdmin.js: -------------------------------------------------------------------------------- 1 | let db = require('../db/index.js') 2 | exports.post = (req, res) => { 3 | let id =Number(Date.now().toString().slice(-6)) 4 | let name = req.body.name 5 | let pass = req.body.password 6 | let headimg = 'http://localhost:8888/uploads/' + req.file.filename 7 | let job = req.body.job 8 | let sql = `insert into admin values (${id},'${name}','${pass}','${headimg}','${job}')` 9 | db.query(sql, (err, data) => { 10 | if (err) { 11 | return res.send('错误:' + err.message) 12 | } 13 | res.send({ 14 | code: 1, 15 | msg: "添加数据成功" 16 | }) 17 | } 18 | ) 19 | } -------------------------------------------------------------------------------- /vue-project/server/api/goods/editGoods.js: -------------------------------------------------------------------------------- 1 | let db = require('../db/index.js') 2 | 3 | exports.post = (req, res) => { 4 | let data = req.body 5 | let id=req.body.id 6 | let picture = 'http://localhost:8888/uploads/' + req.file.filename 7 | let sql = `update goodsInfo set goodsShelves=${data.goodsShelves},type='${data.type}',brand='${data.brand}',picture='${picture}',price=${data.price},detail='${data.detail}',reserve=${data.reserve} where id=${id}` 8 | db.query(sql, (err, data) => { 9 | if (err) { 10 | return res.send('错误:' + err.message) 11 | } 12 | res.send({ 13 | code: 1, 14 | msg: "修改数据成功" 15 | }) 16 | }) 17 | } 18 | -------------------------------------------------------------------------------- /vue-project/server/api/login/userLogin.js: -------------------------------------------------------------------------------- 1 | let db = require('../db/index.js') 2 | 3 | exports.post = (req, res) => { 4 | let phoneNumber =Number(req.body.phoneNumber) 5 | let pass = req.body.password 6 | let sql = `select * from userinfo where phoneNumber=${phoneNumber} and password='${pass}'` 7 | db.query(sql, (err, data) => { 8 | if (err) { 9 | return res.send('错误:' + err.message) 10 | } 11 | if(data.length>0){ 12 | res.send({ 13 | code: 1, 14 | msg: "登录成功", 15 | list:data 16 | }) 17 | }else{ 18 | res.send({ 19 | code: -1, 20 | msg: "账号或密码错误" 21 | }) 22 | } 23 | }) 24 | } 25 | -------------------------------------------------------------------------------- /vue-project/server/api/user/editUser.js: -------------------------------------------------------------------------------- 1 | let db = require('../db/index.js') 2 | 3 | exports.post = (req, res) => { 4 | let name=req.body.user.name 5 | let phoneNumber=req.body.user.phoneNumber 6 | let address=req.body.user.address 7 | let integral=req.body.user.integral 8 | let id=req.body.user.id 9 | let sql=`update userinfo set name='${name}',phoneNumber=${phoneNumber},address='${address}',integral=${integral} where id=${id}` 10 | db.query(sql, (err, result) => { 11 | if (err) { 12 | return res.send('错误:' + err.message) 13 | } 14 | res.send({ 15 | code: 1, 16 | msg: '修改成功' 17 | }) 18 | }) 19 | } -------------------------------------------------------------------------------- /vue-project/.eslintrc.cjs: -------------------------------------------------------------------------------- 1 | /* eslint-env node */ 2 | require('@rushstack/eslint-patch/modern-module-resolution') 3 | 4 | module.exports = { 5 | root: true, 6 | extends: [ 7 | 'plugin:vue/vue3-essential', 8 | 'eslint:recommended', 9 | // '@vue/eslint-config-prettier' 10 | ], 11 | parserOptions: { 12 | ecmaVersion: 'latest', 13 | }, 14 | rules: { 15 | semi: ['error', 'never'], // 不使用分号结束 16 | quotes: ['error', 'single'], // 使用单引号 17 | eqeqeq: 'error', // === 18 | 'vue/no-unused-vars': 'error', 19 | 'vue/multi-word-component-names':'off', 20 | 'vue/no-reserved-component-names':'off' 21 | }, 22 | } -------------------------------------------------------------------------------- /vue-project/server/api/goods/addGoods.js: -------------------------------------------------------------------------------- 1 | let db = require('../db/index.js') 2 | 3 | exports.post = (req, res) => { 4 | let data = req.body 5 | let id = Number(Date.now().toString().slice(-6)) 6 | let picture = 'http://localhost:8888/uploads/' + req.file.filename 7 | let sql = `insert into goodsinfo values (${id},'${data.goodsId}','${data.size}','${data.brand}','${picture}',${data.price},'${data.detail}',${data.reserve},${data.goodsShelves},'${data.type}')` 8 | db.query(sql, (err, data) => { 9 | if(err) { 10 | return res.send('错误:' + err.message) 11 | } 12 | res.send({ 13 | code:1, 14 | msg:'success' 15 | }) 16 | }) 17 | } -------------------------------------------------------------------------------- /vue-project/server/api/order/editIssueOrder.js: -------------------------------------------------------------------------------- 1 | let db = require('../db/index.js') 2 | 3 | exports.post = (req, res) => { 4 | let orderNumber=req.body.formData.orderNumber 5 | let name=req.body.formData.name 6 | let phoneNumber=req.body.formData.phoneNumber 7 | let address=req.body.formData.address 8 | let size=req.body.formData.size 9 | let sql=`update issueOrder set name='${name}',phoneNumber=${phoneNumber},address='${address}',size='${size}' where orderNumber='${orderNumber}'` 10 | db.query(sql, (err, data) => { 11 | if(err) { 12 | return res.send('错误:' + err.message) 13 | } 14 | res.send({ 15 | code:1, 16 | msg:'编辑数据成功' 17 | }) 18 | }) 19 | } -------------------------------------------------------------------------------- /vue-project/vite.config.js: -------------------------------------------------------------------------------- 1 | import { fileURLToPath, URL } from 'node:url' 2 | import vue from '@vitejs/plugin-vue' 3 | import { defineConfig } from 'vite' 4 | import AutoImport from 'unplugin-auto-import/vite' 5 | import Components from 'unplugin-vue-components/vite' 6 | import { ElementPlusResolver } from 'unplugin-vue-components/resolvers' 7 | // https://vitejs.dev/config/ 8 | export default defineConfig({ 9 | plugins: [ 10 | AutoImport({ 11 | resolvers: [ElementPlusResolver()], 12 | }), 13 | Components({ 14 | resolvers: [ElementPlusResolver()], 15 | }), 16 | vue() 17 | ], 18 | resolve: { 19 | alias: { 20 | '@': fileURLToPath(new URL('./src', import.meta.url)) 21 | } 22 | } 23 | }) 24 | -------------------------------------------------------------------------------- /vue-project/server/api/goods/goodsInfo.js: -------------------------------------------------------------------------------- 1 | let db = require('../db/index.js') 2 | 3 | exports.get = (req, res) => { 4 | let id = req.query.searchId 5 | let sql = '' 6 | if (id) { 7 | sql = `select * from goodsinfo where goodsid='${id}'` 8 | } else { 9 | sql = `select * from goodsinfo` 10 | } 11 | db.query(sql, (err, result) => { 12 | if (err) { 13 | return res.send('错误:' + err.message) 14 | } 15 | let pageSize = Number(req.query.pageSize) 16 | let pageNo = Number(req.query.pageNo) 17 | let data = result.slice((pageNo - 1) * pageSize, (pageNo - 1) * pageSize + pageSize) 18 | res.send({ 19 | code: 1, 20 | total: result.length, 21 | list: data, 22 | }) 23 | } 24 | ) 25 | } -------------------------------------------------------------------------------- /vue-project/server/api/order/issueOrder.js: -------------------------------------------------------------------------------- 1 | let db = require('../db/index.js') 2 | 3 | exports.get = (req, res) => { 4 | let id = req.query.searchId 5 | let sql='' 6 | if(id){ 7 | sql = `select * from issueOrder where orderNumber='${id}'` 8 | }else{ 9 | sql = `select * from issueOrder` 10 | } 11 | console.log(sql); 12 | db.query(sql, (err, result) => { 13 | if(err) { 14 | return res.send('错误:' + err.message) 15 | } 16 | let pageSize=Number(req.query.pageSize) 17 | let pageNo=Number(req.query.pageNo) 18 | let data=result.slice((pageNo-1)*pageSize,(pageNo-1)*pageSize+pageSize) 19 | res.send({ 20 | code:1, 21 | total:result.length, 22 | list:data, 23 | }) 24 | }) 25 | } -------------------------------------------------------------------------------- /vue-project/server/api/supplier/editSupplier.js: -------------------------------------------------------------------------------- 1 | let db = require('../db/index.js') 2 | //获取供应商列表 3 | exports.put=(req,res)=>{ 4 | let id=req.body.supplier.supplierid 5 | let name=req.body.supplier.name 6 | let phoneNumber=req.body.supplier.phoneNumber 7 | let address=req.body.supplier.address 8 | let mainbusiness=req.body.supplier.mainbusiness 9 | let ltt=req.body.supplier.ltt 10 | ltt=ltt.slice(0,10) 11 | let sql=`update supplier set name='${name}',phoneNumber='${phoneNumber}',address='${address}',mainbusiness='${mainbusiness}',ltt='${ltt}' where supplierid=${id}` 12 | db.query(sql,(err,data)=>{ 13 | if (err) { 14 | return res.send('错误:' + err.message) 15 | } 16 | res.send({ 17 | code: 1, 18 | msg:'success' 19 | }) 20 | }) 21 | } -------------------------------------------------------------------------------- /vue-project/server/api/order/getReceiptOrder.js: -------------------------------------------------------------------------------- 1 | let db = require('../db/index.js') 2 | 3 | exports.get = (req, res) => { 4 | let orderNumber=req.query.searchId 5 | let sql='' 6 | if(orderNumber){ 7 | sql = `select * from receiptOrder where orderNumber=${orderNumber}` 8 | }else{ 9 | sql = `select * from receiptOrder` 10 | } 11 | db.query(sql, (err, result) => { 12 | if(err) { 13 | return res.send('错误:' + err.message) 14 | } 15 | let pageSize=Number(req.query.pageSize) 16 | let pageNo=Number(req.query.pageNo) 17 | let data=result.slice((pageNo-1)*pageSize,(pageNo-1)*pageSize+pageSize) 18 | res.send({ 19 | code:1, 20 | total:result.length, 21 | list:data, 22 | }) 23 | }) 24 | } -------------------------------------------------------------------------------- /vue-project/server/api/order/addReceiptOrder.js: -------------------------------------------------------------------------------- 1 | let db = require('../db/index.js') 2 | 3 | exports.post = (req, res) => { 4 | let orderNumber = Number(Date.now().toString().slice(-8)) 5 | let name=req.body.formData.name 6 | let phoneNumber=req.body.formData.phoneNumber 7 | let goodsId=req.body.formData.goodsId 8 | let size=req.body.formData.size 9 | let number=req.body.formData.number 10 | let price=req.body.formData.price 11 | let sql=`insert into receiptOrder values (${orderNumber},'${name}',${phoneNumber},'${goodsId}','${size}',${number},${price})` 12 | db.query(sql, (err, data) => { 13 | if(err) { 14 | return res.send('错误:' + err.message) 15 | } 16 | res.send({ 17 | code:1, 18 | msg:'添加数据成功' 19 | }) 20 | }) 21 | } -------------------------------------------------------------------------------- /vue-project/server/api/supplier/addSupplier.js: -------------------------------------------------------------------------------- 1 | let db = require('../db/index.js') 2 | //获取供应商列表 3 | exports.post = (req, res) => { 4 | let id = Number(Date.now().toString().slice(-6)) 5 | let name = req.body.supplier.name 6 | let phoneNumber = req.body.supplier.phoneNumber 7 | let address = req.body.supplier.address 8 | let mainbusiness = req.body.supplier.mainbusiness 9 | let ltt = req.body.supplier.ltt 10 | ltt = ltt.slice(0, 10) 11 | let sql = `insert into supplier values (${id},'${name}','${phoneNumber}','${address}','${mainbusiness}','${ltt}')` 12 | db.query(sql, (err, data) => { 13 | if (err) { 14 | return res.send('错误:' + err.message) 15 | } 16 | res.send({ 17 | code: 1, 18 | msg: 'success', 19 | }) 20 | }) 21 | } 22 | -------------------------------------------------------------------------------- /vue-project/server/api/user/addUser.js: -------------------------------------------------------------------------------- 1 | let db = require('../db/index.js') 2 | 3 | exports.post = (req, res) => { 4 | let id = Number(Date.now().toString().slice(-6)) 5 | let name = req.body.user.name 6 | let phoneNumber = req.body.user.phoneNumber 7 | let password = req.body.user.password 8 | let address = req.body.user.address 9 | let integral = req.body.user.integral 10 | let sql = `insert into userinfo values(${id},'${name}',${phoneNumber},'${password}','${address}',${integral},'https://img0.baidu.com/it/u=2270256597,1763841447&fm=253&fmt=auto&app=138&f.JPEG')` 11 | db.query(sql, (err, result) => { 12 | if (err) { 13 | return res.send('错误:' + err.message) 14 | } 15 | res.send({ 16 | code: 1, 17 | msg: '添加成功' 18 | }) 19 | }) 20 | } -------------------------------------------------------------------------------- /vue-project/src/api/Express/express.js: -------------------------------------------------------------------------------- 1 | import axiosInstance from '@/utils/request.js' 2 | /** 3 | * 添加物流方式接口 4 | */ 5 | export const RequestAddExpress = (formData) => { 6 | return axiosInstance({ 7 | method: 'post', 8 | url: '/addExpress', 9 | headers: { "Content-Type": 'multipart/form-data' }, 10 | data: formData 11 | }) 12 | } 13 | /** 14 | * 编辑物流方式接口 15 | */ 16 | export const RequestEditExpress = (formData) => { 17 | return axiosInstance({ 18 | method: 'put', 19 | url: '/editExpress', 20 | headers: { "Content-Type": 'multipart/form-data' }, 21 | data: formData 22 | }) 23 | } 24 | /** 25 | * 删除物流方式接口 26 | */ 27 | export const RequestDeleteExpress = (id) => { 28 | return axiosInstance({ 29 | method: 'delete', 30 | url: '/deleteExpress', 31 | params: { 32 | id 33 | } 34 | }) 35 | } -------------------------------------------------------------------------------- /vue-project/server/api/comment/getComment.js: -------------------------------------------------------------------------------- 1 | let db = require('../db/index.js') 2 | 3 | exports.get = (req, res) => { 4 | let id = req.query.searchId 5 | let sql = '' 6 | if (id) { 7 | sql = `select * from comment where commentId=${id}` 8 | } else { 9 | sql = `select * from comment` 10 | } 11 | db.query(sql, (err, result) => { 12 | if (err) { 13 | return res.send('错误:' + err.message) 14 | } 15 | let pageSize = Number(req.query.pageSize) 16 | let pageNo = Number(req.query.pageNo) 17 | let data = result.slice( 18 | (pageNo - 1) * pageSize, 19 | (pageNo - 1) * pageSize + pageSize 20 | ) 21 | res.send({ 22 | code: 1, 23 | total: result.length, 24 | list: data, 25 | }) 26 | }) 27 | } 28 | -------------------------------------------------------------------------------- /vue-project/server/api/order/editReceiptOrder.js: -------------------------------------------------------------------------------- 1 | let db = require('../db/index.js') 2 | 3 | exports.put = (req, res) => { 4 | let orderNumber=req.body.formData.orderNumber 5 | let name=req.body.formData.name 6 | let phoneNumber=req.body.formData.phoneNumber 7 | let goodsId=req.body.formData.goodsId 8 | let size=req.body.formData.size 9 | let number=req.body.formData.number 10 | let price=req.body.formData.price 11 | let sql=`update receiptOrder set name='${name}',phoneNumber=${phoneNumber},goodsId='${goodsId}',size='${size}',number=${number},price=${price} where orderNumber=${orderNumber}` 12 | db.query(sql, (err, data) => { 13 | if(err) { 14 | return res.send('错误:' + err.message) 15 | } 16 | res.send({ 17 | code:1, 18 | msg:'更新数据成功' 19 | }) 20 | }) 21 | } -------------------------------------------------------------------------------- /vue-project/server/api/afterSaleOrder/getAfterSaleOrder.js: -------------------------------------------------------------------------------- 1 | let db = require('../db/index.js') 2 | 3 | exports.get = (req, res) => { 4 | let orderNumber = req.query.searchId 5 | let sql = '' 6 | if (orderNumber) { 7 | sql = `select * from aftersaleorder where orderNumber='${orderNumber}'` 8 | } else { 9 | sql = `select * from aftersaleorder` 10 | } 11 | db.query(sql, (err, result) => { 12 | if (err) { 13 | return res.send('错误:' + err.message) 14 | } 15 | let pageSize = Number(req.query.pageSize) 16 | let pageNo = Number(req.query.pageNo) 17 | let data = result.slice((pageNo - 1) * pageSize, (pageNo - 1) * pageSize + pageSize) 18 | res.send({ 19 | code: 1, 20 | total: result.length, 21 | list: data, 22 | }) 23 | } 24 | ) 25 | } -------------------------------------------------------------------------------- /vue-project/server/api/comment/addComment.js: -------------------------------------------------------------------------------- 1 | let db = require('../db/index.js') 2 | //添加评论 3 | exports.post=(req,res)=>{ 4 | let id = req.body.id 5 | let name = req.body.name 6 | let commentId =Number(Date.now().toString().slice(-6)) 7 | let content = req.body.content 8 | let commentImg = 'http://localhost:8888/uploads/' + req.file.filename 9 | let likes = req.body.likes 10 | let orderNumber = req.body.orderNumber 11 | let detail = req.body.detail 12 | let size = req.body.size 13 | let sql=`insert into comment values (${id},'${name}',${commentId},'${content}','${commentImg}',${likes},${orderNumber},'${detail}','${size}')` 14 | db.query(sql,(err,data)=>{ 15 | if (err) { 16 | return res.send('错误:' + err.message) 17 | } 18 | res.send({ 19 | code: 1, 20 | msg:'success' 21 | }) 22 | }) 23 | } -------------------------------------------------------------------------------- /vue-project/src/store/modules/loginAccount.js: -------------------------------------------------------------------------------- 1 | const loginAccount = { 2 | namespaced: true, 3 | // 内存中 4 | state: { 5 | loginAccount: null, 6 | }, 7 | mutations: { 8 | SAVE(state, loginAccount) { 9 | state.loginAccount = loginAccount // 保存内存 10 | localStorage.setItem('loginAccount', JSON.stringify(loginAccount)) // 持久化存储 11 | }, 12 | }, 13 | actions: { 14 | save({ commit }, loginAccount) { 15 | commit('SAVE', loginAccount) 16 | }, 17 | }, 18 | getters: { 19 | loginAccount: state => { 20 | if (state.loginAccount) { 21 | return state.loginAccount 22 | } else { 23 | let loginAccount = localStorage.getItem('loginAccount') 24 | return JSON.parse(loginAccount) 25 | } 26 | } 27 | } 28 | } 29 | export default loginAccount 30 | -------------------------------------------------------------------------------- /vue-project/src/api/User/user.js: -------------------------------------------------------------------------------- 1 | import axiosInstance from '@/utils/request.js' 2 | /** 3 | * 用户信息接口 4 | */ 5 | export const RequestUsersInfo = (pageSize,pageNo,searchId,asc,desc) => { 6 | return axiosInstance({ 7 | method: 'get', 8 | url: '/usersInfo', 9 | params:{ 10 | pageSize, 11 | pageNo, 12 | searchId, 13 | asc, 14 | desc 15 | } 16 | }) 17 | } 18 | /** 19 | * 添加用户信息接口 20 | */ 21 | export const RequestAddUser = (user) => { 22 | return axiosInstance({ 23 | method: 'post', 24 | url: '/addUser', 25 | data:{ 26 | user 27 | } 28 | }) 29 | } 30 | /** 31 | * 编辑用户信息接口 32 | */ 33 | export const RequestEditUser = (user) => { 34 | return axiosInstance({ 35 | method: 'post', 36 | url: '/editUser', 37 | data:{ 38 | user 39 | } 40 | }) 41 | } -------------------------------------------------------------------------------- /vue-project/public/tinymce/plugins/directionality/plugin.min.js: -------------------------------------------------------------------------------- 1 | !function(){"use strict";var t=tinymce.util.Tools.resolve("tinymce.PluginManager"),c=tinymce.util.Tools.resolve("tinymce.util.Tools"),e=function(t,e){var i,n=t.dom,o=t.selection.getSelectedBlocks();o.length&&(i=n.getAttrib(o[0],"dir"),c.each(o,function(t){n.getParent(t.parentNode,'*[dir="'+e+'"]',n.getRoot())||n.setAttrib(t,"dir",i!==e?e:null)}),t.nodeChanged())},i=function(t){t.addCommand("mceDirectionLTR",function(){e(t,"ltr")}),t.addCommand("mceDirectionRTL",function(){e(t,"rtl")})},n=function(e){var i=[];return c.each("h1 h2 h3 h4 h5 h6 div p".split(" "),function(t){i.push(t+"[dir="+e+"]")}),i.join(",")},o=function(t){t.addButton("ltr",{title:"Left to right",cmd:"mceDirectionLTR",stateSelector:n("ltr")}),t.addButton("rtl",{title:"Right to left",cmd:"mceDirectionRTL",stateSelector:n("rtl")})};t.add("directionality",function(t){i(t),o(t)})}(); -------------------------------------------------------------------------------- /vue-project/src/api/AfterSaleOrder/afterSaleOrder.js: -------------------------------------------------------------------------------- 1 | import axiosInstance from '@/utils/request.js' 2 | 3 | export const RequestGetAfterSaleOrder = (pageSize, pageNo, searchId) => { 4 | return axiosInstance({ 5 | method: 'get', 6 | url: '/getAfterSaleOrder', 7 | params: { 8 | pageSize, 9 | pageNo, 10 | searchId, 11 | }, 12 | }) 13 | } 14 | export const RequestAddAfterSaleOrder = formData => { 15 | return axiosInstance({ 16 | method: 'post', 17 | url: '/addAfterSaleOrder', 18 | data: { 19 | formData, 20 | }, 21 | }) 22 | } 23 | export const RequestDeleteAfterSaleOrder = orderNumber => { 24 | return axiosInstance({ 25 | method: 'delete', 26 | url: '/deleteAfterSaleOrder', 27 | params: { 28 | orderNumber, 29 | }, 30 | }) 31 | } 32 | -------------------------------------------------------------------------------- /vue-project/server/api/comment/editComment.js: -------------------------------------------------------------------------------- 1 | let db = require('../db/index.js') 2 | //添加评论 3 | exports.put=(req,res)=>{ 4 | let id = req.body.id 5 | let name = req.body.name 6 | let commentId =req.body.commentId 7 | let content = req.body.content 8 | let commentImg = 'http://localhost:8888/uploads/' + req.file.filename 9 | let likes = req.body.likes 10 | let orderNumber = req.body.orderNumber 11 | let detail = req.body.detail 12 | let size = req.body.size 13 | let sql=`update comment set id=${id},name='${name}',content='${content}',commentImg='${commentImg}',likes=${likes},orderNumber=${orderNumber},detail='${detail}',size='${size}' where commentId=${commentId}` 14 | db.query(sql,(err,data)=>{ 15 | if (err) { 16 | return res.send('错误:' + err.message) 17 | } 18 | res.send({ 19 | code: 1, 20 | msg:'success' 21 | }) 22 | }) 23 | } -------------------------------------------------------------------------------- /vue-project/server/api/login/login.js: -------------------------------------------------------------------------------- 1 | let db = require('../db/index.js') 2 | 3 | exports.post = (req, res) => { 4 | let name = req.body.name 5 | let pass = req.body.password 6 | let identity=req.body.identity 7 | let sql='' 8 | if(identity==0){ 9 | sql = `select * from admin where name='${name}' and password='${pass}' and job='系统管理员'` 10 | }else if(identity==1){ 11 | sql = `select * from admin where name='${name}' and password='${pass}' and job='前台网页管理员'` 12 | }else{ 13 | sql = `select * from admin where name='${name}' and password='${pass}' and job='超级管理员'` 14 | } 15 | db.query(sql, (err, data) => { 16 | if (err) { 17 | return res.send('错误:' + err.message) 18 | } 19 | if(data.length>0){ 20 | res.send({ 21 | code: 1, 22 | msg: "登录成功", 23 | resultInfo:data 24 | }) 25 | }else{ 26 | res.send({ 27 | code: -1, 28 | msg: "账号或密码错误" 29 | }) 30 | } 31 | }) 32 | } 33 | -------------------------------------------------------------------------------- /vue-project/src/api/Recommend/recommend.js: -------------------------------------------------------------------------------- 1 | import axiosInstance from '@/utils/request.js' 2 | /** 3 | * 推荐接口 4 | */ 5 | export const RequestRecommend = () => { 6 | return axiosInstance({ 7 | method: 'get', 8 | url: '/getRecommend', 9 | }) 10 | } 11 | export const RequestDeleteRecommend = id => { 12 | return axiosInstance({ 13 | method: 'delete', 14 | url: '/deleteRecommend', 15 | params: { 16 | id, 17 | }, 18 | }) 19 | } 20 | export const RequestAddRecommend = formData => { 21 | return axiosInstance({ 22 | method: 'post', 23 | url: '/addRecommend', 24 | headers: { 'Content-Type': 'multipart/form-data' }, 25 | data: formData, 26 | }) 27 | } 28 | export const RequestEditRecommend = formData => { 29 | return axiosInstance({ 30 | method: 'put', 31 | url: '/editRecommend', 32 | headers: { 'Content-Type': 'multipart/form-data' }, 33 | data: formData, 34 | }) 35 | } 36 | -------------------------------------------------------------------------------- /vue-project/src/components/BreadCrumb.vue: -------------------------------------------------------------------------------- 1 | 7 | 8 | 34 | 35 | 36 | -------------------------------------------------------------------------------- /vue-project/public/tinymce/plugins/nonbreaking/plugin.min.js: -------------------------------------------------------------------------------- 1 | !function(){"use strict";var n=tinymce.util.Tools.resolve("tinymce.PluginManager"),i=function(n,e){var t,i=(t=n).plugins.visualchars&&t.plugins.visualchars.isEnabled()?' ':" ";n.insertContent(function(n,e){for(var t="",i=0;i { 6 | return axiosInstance({ 7 | method: 'get', 8 | url: '/getSupplier', 9 | }) 10 | } 11 | /** 12 | * 添加供应商 13 | */ 14 | export const RequestAddSupplier = (supplier) => { 15 | return axiosInstance({ 16 | method: 'post', 17 | url: '/addSupplier', 18 | data: { 19 | supplier 20 | } 21 | }) 22 | } 23 | /** 24 | * 删除供应商 25 | */ 26 | export const RequestDeleteSupplier = (id) => { 27 | return axiosInstance({ 28 | method: 'delete', 29 | url: '/deleteSupplier', 30 | params: { 31 | id 32 | } 33 | }) 34 | } 35 | /** 36 | * 编辑供应商 37 | */ 38 | export const RequestEditSupplier = (supplier) => { 39 | return axiosInstance({ 40 | method: 'put', 41 | url: '/editSupplier', 42 | data: { 43 | supplier 44 | } 45 | }) 46 | } -------------------------------------------------------------------------------- /vue-project/public/tinymce/plugins/code/plugin.min.js: -------------------------------------------------------------------------------- 1 | !function(){"use strict";var t=tinymce.util.Tools.resolve("tinymce.PluginManager"),n=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),o=function(t){return t.getParam("code_dialog_width",600)},i=function(t){return t.getParam("code_dialog_height",Math.min(n.DOM.getViewPort().h-200,500))},c=function(t,n){t.focus(),t.undoManager.transact(function(){t.setContent(n)}),t.selection.setCursorLocation(),t.nodeChanged()},d=function(t){return t.getContent({source_view:!0})},e=function(n){var t=o(n),e=i(n);n.windowManager.open({title:"Source code",body:{type:"textbox",name:"code",multiline:!0,minWidth:t,minHeight:e,spellcheck:!1,style:"direction: ltr; text-align: left"},onSubmit:function(t){c(n,t.data.code)}}).find("#code").value(d(n))},u=function(t){t.addCommand("mceCodeEditor",function(){e(t)})},a=function(t){t.addButton("code",{icon:"code",tooltip:"Source code",onclick:function(){e(t)}}),t.addMenuItem("code",{icon:"code",text:"Source code",onclick:function(){e(t)}})};t.add("code",function(t){return u(t),a(t),{}})}(); -------------------------------------------------------------------------------- /vue-project/src/api/Carousel/carousel.js: -------------------------------------------------------------------------------- 1 | import axiosInstance from '@/utils/request.js' 2 | /** 3 | * 轮播图接口 4 | */ 5 | export const RequestCarousel = () => { 6 | return axiosInstance({ 7 | method: 'get', 8 | url: '/getCarousel', 9 | }) 10 | } 11 | /** 12 | * 添加轮播图接口 13 | */ 14 | export const RequestAddCarousel = (formData) => { 15 | return axiosInstance({ 16 | method: 'post', 17 | url: '/addCarousel', 18 | headers: { "Content-Type": 'multipart/form-data'}, 19 | data: formData 20 | }) 21 | } 22 | /** 23 | * 删除轮播接口 24 | */ 25 | export const RequestDeleteCarousel = (carouselid) => { 26 | return axiosInstance({ 27 | method: 'get', 28 | url: '/deleteCarousel', 29 | params:{ 30 | carouselid 31 | } 32 | }) 33 | } 34 | /** 35 | * 编辑轮播图接口 36 | */ 37 | export const RequestEditCarousel = (formData) => { 38 | return axiosInstance({ 39 | method: 'post', 40 | url: '/editCarousel', 41 | headers: { "Content-Type": 'multipart/form-data'}, 42 | data: formData 43 | }) 44 | } -------------------------------------------------------------------------------- /vue-project/server/api/user/user.js: -------------------------------------------------------------------------------- 1 | let db = require('../db/index.js') 2 | 3 | exports.get = (req, res) => { 4 | let phoneNumber = req.query.searchId 5 | let asc = req.query.asc 6 | let desc = req.query.desc 7 | if (phoneNumber) { 8 | sql = `select * from userinfo where phoneNumber='${phoneNumber}'` 9 | } 10 | else if (asc) { 11 | sql = `select * from userinfo order by integral asc` 12 | } 13 | else if (desc) { 14 | sql = `select * from userinfo order by integral desc` 15 | } 16 | else { 17 | sql = `select * from userinfo` 18 | } 19 | db.query(sql, (err, result) => { 20 | if (err) { 21 | return res.send('错误:' + err.message) 22 | } 23 | let pageSize = Number(req.query.pageSize) 24 | let pageNo = Number(req.query.pageNo) 25 | let data = result.slice((pageNo - 1) * pageSize, (pageNo - 1) * pageSize + pageSize) 26 | res.send({ 27 | code: 1, 28 | total: result.length, 29 | list: data, 30 | }) 31 | }) 32 | } -------------------------------------------------------------------------------- /vue-project/public/tinymce/plugins/emoticons/plugin.min.js: -------------------------------------------------------------------------------- 1 | !function(){"use strict";var t=tinymce.util.Tools.resolve("tinymce.PluginManager"),e=tinymce.util.Tools.resolve("tinymce.util.Tools"),n=[["cool","cry","embarassed","foot-in-mouth"],["frown","innocent","kiss","laughing"],["money-mouth","sealed","smile","surprised"],["tongue-out","undecided","wink","yell"]],i=function(i){var o;return o='',e.each(n,function(t){o+="",e.each(t,function(t){var e=i+"/img/smiley-"+t+".gif";o+=''}),o+=""}),o+="
"},o=function(a,t){var e=i(t);a.addButton("emoticons",{type:"panelbutton",panel:{role:"application",autohide:!0,html:e,onclick:function(t){var e,i,o,n=a.dom.getParent(t.target,"a");n&&(e=a,i=n.getAttribute("data-mce-url"),o=n.getAttribute("data-mce-alt"),e.insertContent(e.dom.createHTML("img",{src:i,alt:o})),this.hide())}},tooltip:"Emoticons"})};t.add("emoticons",function(t,e){o(t,e)})}(); -------------------------------------------------------------------------------- /vue-project/server/api/order/addIssueOrder.js: -------------------------------------------------------------------------------- 1 | let db = require('../db/index.js') 2 | 3 | exports.post = (req, res) => { 4 | let orderNumber = Date.now().toString() 5 | let number=req.body.formData.number 6 | let totalPrice=req.body.formData.totalPrice 7 | let name=req.body.formData.name 8 | let phoneNumber=req.body.formData.phoneNumber 9 | let address=req.body.formData.address 10 | let id=req.body.formData.id 11 | let price=req.body.formData.price 12 | let size=req.body.formData.size 13 | let detail=req.body.formData.detail 14 | let url=req.body.formData.url 15 | let state=req.body.formData.state || '未发货' 16 | let sql=`insert into issueOrder values ('${orderNumber}',${id},${number},${totalPrice},'${name}',${phoneNumber},'${address}',${price},'${size}','${detail}','${url}','${state}','暂无')` 17 | db.query(sql, (err, data) => { 18 | if(err) { 19 | return res.send('错误:' + err.message) 20 | } 21 | res.send({ 22 | code:1, 23 | list:data, 24 | msg:'添加数据成功' 25 | }) 26 | }) 27 | } -------------------------------------------------------------------------------- /vue-project/src/api/Comment/comment.js: -------------------------------------------------------------------------------- 1 | import axiosInstance from '@/utils/request.js' 2 | /** 3 | * 评论接口 4 | */ 5 | export const RequestComment = (pageSize, pageNo, searchId) => { 6 | return axiosInstance({ 7 | method: 'get', 8 | url: '/getComment', 9 | params: { 10 | pageSize, 11 | pageNo, 12 | searchId, 13 | }, 14 | }) 15 | } 16 | /** 17 | * 添加评论接口 18 | */ 19 | export const RequestAddComment = formData => { 20 | return axiosInstance({ 21 | method: 'post', 22 | url: '/addComment', 23 | headers: { 'Content-Type': 'multipart/form-data' }, 24 | data: formData, 25 | }) 26 | } 27 | /** 28 | * 编辑评论接口 29 | */ 30 | export const RequestEditComment = formData => { 31 | return axiosInstance({ 32 | method: 'put', 33 | url: '/editComment', 34 | headers: { 'Content-Type': 'multipart/form-data' }, 35 | data: formData, 36 | }) 37 | } 38 | /** 39 | * 删除评论接口 40 | */ 41 | export const RequestDeleteComment = commentId => { 42 | return axiosInstance({ 43 | method: 'delete', 44 | url: '/deleteComment', 45 | params: { 46 | commentId, 47 | }, 48 | }) 49 | } 50 | -------------------------------------------------------------------------------- /vue-project/src/api/Admin/admin.js: -------------------------------------------------------------------------------- 1 | import axiosInstance from '@/utils/request.js' 2 | /** 3 | * 管理员信息接口 4 | */ 5 | export const RequestAdminsInfo = () => { 6 | return axiosInstance({ 7 | method: 'get', 8 | url: '/adminsInfo', 9 | }) 10 | } 11 | /** 12 | * 添加管理员接口 13 | */ 14 | export const RequestAddAdmin = (formData) => { 15 | return axiosInstance({ 16 | method: 'post', 17 | url: '/addAdmin', 18 | headers: { "Content-Type": 'multipart/form-data'}, 19 | data: formData 20 | }) 21 | } 22 | /** 23 | * 删除管理员接口 24 | */ 25 | export const RequestdeleAdmin = (id) => { 26 | return axiosInstance({ 27 | method: 'get', 28 | url: '/deleAdmin', 29 | params: { 30 | id 31 | } 32 | }) 33 | } 34 | /** 35 | * 编辑管理员接口 36 | */ 37 | export const RequestEditAdmin = (formData) => { 38 | return axiosInstance({ 39 | method: 'post', 40 | url: '/editAdmin', 41 | headers: { "Content-Type": 'multipart/form-data'}, 42 | data: formData 43 | }) 44 | } 45 | 46 | /** 47 | * 修改密码接口 48 | */ 49 | export const RequestChangePass = (formData) => { 50 | return axiosInstance({ 51 | method: 'post', 52 | url: '/changePass', 53 | headers: { "Content-Type": 'multipart/form-data'}, 54 | data: formData 55 | }) 56 | } 57 | 58 | 59 | -------------------------------------------------------------------------------- /vue-project/src/views/Reception/Notice.vue: -------------------------------------------------------------------------------- 1 | 8 | 39 | 40 | 43 | -------------------------------------------------------------------------------- /vue-project/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "vue-project", 3 | "version": "0.0.0", 4 | "private": true, 5 | "scripts": { 6 | "dev": "vite --host", 7 | "build": "vite build", 8 | "preview": "vite preview", 9 | "lint": "eslint . --ext .vue,.js,.jsx,.cjs,.mjs --fix --ignore-path .gitignore" 10 | }, 11 | "dependencies": { 12 | "@element-plus/icons-vue": "^2.0.10", 13 | "axios": "^1.2.2", 14 | "body-parser": "^1.20.1", 15 | "cors": "^2.8.5", 16 | "echarts": "^4.9.0", 17 | "element-plus": "2.1", 18 | "express": "^4.18.2", 19 | "file-saver": "^2.0.5", 20 | "lodash-es": "^4.17.21", 21 | "multer": "^1.4.5-lts.1", 22 | "mysql": "^2.18.1", 23 | "nrm": "^1.2.5", 24 | "vue": "^3.2.45", 25 | "vue-router": "^4.1.6", 26 | "vuex": "^4.0.2", 27 | "vuex-persistedstate": "^4.1.0", 28 | "xlsx": "^0.17.0" 29 | }, 30 | "devDependencies": { 31 | "@rushstack/eslint-patch": "^1.1.4", 32 | "@vitejs/plugin-vue": "^4.0.0", 33 | "@vue/eslint-config-prettier": "^7.0.0", 34 | "eslint": "^8.22.0", 35 | "eslint-plugin-vue": "^9.3.0", 36 | "prettier": "^2.7.1", 37 | "sass": "^1.57.1", 38 | "unplugin-auto-import": "^0.12.1", 39 | "unplugin-vue-components": "^0.22.12", 40 | "vite": "^4.0.0" 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /vue-project/src/permission.js: -------------------------------------------------------------------------------- 1 | import router from './router' 2 | /** 3 | * 全局前置导航守卫 beforeEach 4 | * 只要路由跳转都会执行 5 | * to: 即将要进入的目标 6 | from: 当前导航正要离开的路由 7 | login -> home 8 | return false 不放行 9 | 业务: 统一登录身份认证 10 | 登录身份认证 11 | => 没有登录的情况不允许访问需要登录的页面 12 | 如何实现? 13 | 1. 登录成功,保存成功的登录状态 14 | 2. 在前置导航守卫中判断保存的登录状态是否存在, 15 | 如果存在,表示登录成功,放行 return true 16 | 如果不存在, 更优雅,重定向到登录界面 17 | */ 18 | router.beforeEach((to, from) => { 19 | // 1. 加入白名单: 有些路由是不需要登录身份认证 path: /login , / 20 | if (to.path === '/login' || to.path==='/frontPage' || to.path==='/IndexF' ||to.path==='/category/shoes' || to.path==='/category/outerWear' || to.path==='/category/cotta' || to.path==='/category/socks' ||to.path==='/category/hat' ||to.path==='/category/downJackets' || to.path==='/category/trousers') { 21 | return true //放行 22 | } 23 | // 2. 登录认证 24 | let admin = localStorage.getItem('loginAccount') 25 | if (admin) { 26 | return true // 放行 27 | } else { 28 | // 如果不存在, 更优雅,重定向到登录界面 29 | ElMessage({ 30 | message: '你没有权限访问!', 31 | type: 'error', 32 | }) 33 | router.replace({ path: '/login' }) 34 | } 35 | }) 36 | -------------------------------------------------------------------------------- /vue-project/src/views/FrontPage/Cotta.vue: -------------------------------------------------------------------------------- 1 | 11 | 12 | 32 | 33 | -------------------------------------------------------------------------------- /vue-project/src/views/FrontPage/Hat.vue: -------------------------------------------------------------------------------- 1 | 11 | 12 | 32 | 33 | -------------------------------------------------------------------------------- /vue-project/src/views/FrontPage/Shoes.vue: -------------------------------------------------------------------------------- 1 | 11 | 12 | 32 | 33 | -------------------------------------------------------------------------------- /vue-project/src/views/FrontPage/Socks.vue: -------------------------------------------------------------------------------- 1 | 11 | 12 | 32 | 33 | -------------------------------------------------------------------------------- /vue-project/src/views/FrontPage/OuterWear.vue: -------------------------------------------------------------------------------- 1 | 11 | 12 | 32 | 33 | -------------------------------------------------------------------------------- /vue-project/src/views/FrontPage/Trousers.vue: -------------------------------------------------------------------------------- 1 | 11 | 12 | 32 | 33 | -------------------------------------------------------------------------------- /vue-project/src/views/FrontPage/DownJackets.vue: -------------------------------------------------------------------------------- 1 | 11 | 12 | 32 | 33 | -------------------------------------------------------------------------------- /vue-project/public/tinymce/plugins/colorpicker/plugin.min.js: -------------------------------------------------------------------------------- 1 | !function(){"use strict";var e=tinymce.util.Tools.resolve("tinymce.PluginManager"),l=tinymce.util.Tools.resolve("tinymce.util.Color"),a=function(e,n){e.find("#preview")[0].getEl().style.background=n},o=function(e,n){var i=l(n),t=i.toRgb();e.fromJSON({r:t.r,g:t.g,b:t.b,hex:i.toHex().substr(1)}),a(e,i.toHex())},t=function(e,n,i){var t=e.windowManager.open({title:"Color",items:{type:"container",layout:"flex",direction:"row",align:"stretch",padding:5,spacing:10,items:[{type:"colorpicker",value:i,onchange:function(){var e=this.rgb();t&&(t.find("#r").value(e.r),t.find("#g").value(e.g),t.find("#b").value(e.b),t.find("#hex").value(this.value().substr(1)),a(t,this.value()))}},{type:"form",padding:0,labelGap:5,defaults:{type:"textbox",size:7,value:"0",flex:1,spellcheck:!1,onchange:function(){var e,n,i=t.find("colorpicker")[0];if(e=this.name(),n=this.value(),"hex"===e)return o(t,n="#"+n),void i.value(n);n={r:t.find("#r").value(),g:t.find("#g").value(),b:t.find("#b").value()},i.value(n),o(t,n)}},items:[{name:"r",label:"R",autofocus:1},{name:"g",label:"G"},{name:"b",label:"B"},{name:"hex",label:"#",value:"000000"},{name:"preview",type:"container",border:1}]}]},onSubmit:function(){n("#"+t.toJSON().hex)}});o(t,i)};e.add("colorpicker",function(i){i.settings.color_picker_callback||(i.settings.color_picker_callback=function(e,n){t(i,e,n)})})}(); -------------------------------------------------------------------------------- /vue-project/public/tinymce/plugins/save/plugin.min.js: -------------------------------------------------------------------------------- 1 | !function(){"use strict";var n=tinymce.util.Tools.resolve("tinymce.PluginManager"),t=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),a=tinymce.util.Tools.resolve("tinymce.util.Tools"),o=function(n){return n.getParam("save_enablewhendirty",!0)},c=function(n){return!!n.getParam("save_onsavecallback")},i=function(n){return!!n.getParam("save_oncancelcallback")},r=function(n,e){n.notificationManager.open({text:n.translate(e),type:"error"})},e=function(n){var e;if(e=t.DOM.getParent(n.id,"form"),!o(n)||n.isDirty()){if(n.save(),c(n))return n.execCallback("save_onsavecallback",n),void n.nodeChanged();e?(n.setDirty(!1),e.onsubmit&&!e.onsubmit()||("function"==typeof e.submit?e.submit():r(n,"Error: Form submit field collision.")),n.nodeChanged()):r(n,"Error: No form element found.")}},l=function(n){var e=a.trim(n.startContent);i(n)?n.execCallback("save_oncancelcallback",n):(n.setContent(e),n.undoManager.clear(),n.nodeChanged())},d=function(n){n.addCommand("mceSave",function(){e(n)}),n.addCommand("mceCancel",function(){l(n)})},s=function(t){return function(n){var e=n.control;t.on("nodeChange dirty",function(){e.disabled(o(t)&&!t.isDirty())})}},u=function(n){n.addButton("save",{icon:"save",text:"Save",cmd:"mceSave",disabled:!0,onPostRender:s(n)}),n.addButton("cancel",{text:"Cancel",icon:!1,cmd:"mceCancel",disabled:!0,onPostRender:s(n)}),n.addShortcut("Meta+S","","mceSave")};n.add("save",function(n){u(n),d(n)})}(); -------------------------------------------------------------------------------- /vue-project/public/tinymce/plugins/pagebreak/plugin.min.js: -------------------------------------------------------------------------------- 1 | !function(){"use strict";var e=tinymce.util.Tools.resolve("tinymce.PluginManager"),a=tinymce.util.Tools.resolve("tinymce.Env"),n=function(e){return e.getParam("pagebreak_separator","\x3c!-- pagebreak --\x3e")},i=function(e){return e.getParam("pagebreak_split_block",!1)},t=function(){return"mce-pagebreak"},r=function(){return''},c=function(c){var o=n(c),a=new RegExp(o.replace(/[\?\.\*\[\]\(\)\{\}\+\^\$\:]/g,function(e){return"\\"+e}),"gi");c.on("BeforeSetContent",function(e){e.content=e.content.replace(a,r())}),c.on("PreInit",function(){c.serializer.addNodeFilter("img",function(e){for(var a,n,t=e.length;t--;)if((n=(a=e[t]).attr("class"))&&-1!==n.indexOf("mce-pagebreak")){var r=a.parent;if(c.schema.getBlockElements()[r.name]&&i(c)){r.type=3,r.value=o,r.raw=!0,a.remove();continue}a.type=3,a.value=o,a.raw=!0}})})},o=r,g=t,u=function(e){e.addCommand("mcePageBreak",function(){e.settings.pagebreak_split_block?e.insertContent("

"+o()+"

"):e.insertContent(o())})},m=function(a){a.on("ResolveName",function(e){"IMG"===e.target.nodeName&&a.dom.hasClass(e.target,g())&&(e.name="pagebreak")})},s=function(e){e.addButton("pagebreak",{title:"Page break",cmd:"mcePageBreak"}),e.addMenuItem("pagebreak",{text:"Page break",icon:"pagebreak",cmd:"mcePageBreak",context:"insert"})};e.add("pagebreak",function(e){u(e),s(e),c(e),m(e)})}(); -------------------------------------------------------------------------------- /vue-project/public/tinymce/plugins/anchor/plugin.min.js: -------------------------------------------------------------------------------- 1 | !function(){"use strict";var t=tinymce.util.Tools.resolve("tinymce.PluginManager"),a=function(t){return/^[A-Za-z][A-Za-z0-9\-:._]*$/.test(t)},e=function(t){var e=t.selection.getNode();return"A"===e.tagName&&""===t.dom.getAttrib(e,"href")?e.id||e.name:""},i=function(t,e){var n=t.selection.getNode();"A"===n.tagName&&""===t.dom.getAttrib(n,"href")?(n.removeAttribute("name"),n.id=e,t.undoManager.add()):(t.focus(),t.selection.collapse(!0),t.execCommand("mceInsertContent",!1,t.dom.createHTML("a",{id:e})))},n=function(r){var t=e(r);r.windowManager.open({title:"Anchor",body:{type:"textbox",name:"id",size:40,label:"Id",value:t},onsubmit:function(t){var e,n,o=t.data.id;e=r,(a(n=o)?(i(e,n),0):(e.windowManager.alert("Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores."),1))&&t.preventDefault()}})},o=function(t){t.addCommand("mceAnchor",function(){n(t)})},r=function(o){return function(t){for(var e=0;e"===r){var a=o.lastIndexOf("<",e);if(-1!==a&&-1!==o.substring(a,e).indexOf('contenteditable="false"'))return t}return''+i.dom.encode("string"==typeof n[1]?n[1]:n[0])+""}},n=function(n){var t,e,r="contenteditable";t=" "+c.trim(u(n))+" ",e=" "+c.trim(l(n))+" ";var a=s(t),i=s(e),o=f(n);n.on("PreInit",function(){0 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 21 | 编辑 22 | 删除 23 | 24 | 25 | 26 | 27 | 41 | 42 | 48 | -------------------------------------------------------------------------------- /vue-project/public/tinymce/plugins/contextmenu/plugin.min.js: -------------------------------------------------------------------------------- 1 | !function(){"use strict";var o=function(t){var n=t,e=function(){return n};return{get:e,set:function(t){n=t},clone:function(){return o(e())}}},t=tinymce.util.Tools.resolve("tinymce.PluginManager"),i=function(t){return{isContextMenuVisible:function(){return t.get()}}},r=function(t){return t.settings.contextmenu_never_use_native},u=function(t){return t.getParam("contextmenu","link openlink image inserttable | cell row column deletetable")},l=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),s=function(t){return l.DOM.select(t.settings.ui_container)[0]},a=function(t,n){return{x:t,y:n}},f=function(t,n,e){return a(t.x+n,t.y+e)},m=function(t,n){if(t&&"static"!==l.DOM.getStyle(t,"position",!0)){var e=l.DOM.getPos(t),o=e.x-t.scrollLeft,i=e.y-t.scrollTop;return f(n,-o,-i)}return f(n,0,0)},c=function(t,n){if(t.inline)return m(s(t),a((u=n).pageX,u.pageY));var e,o,i,r,u,c=(e=t.getContentAreaContainer(),o=a((r=n).clientX,r.clientY),i=l.DOM.getPos(e),f(o,i.x,i.y));return m(s(t),c)},g=tinymce.util.Tools.resolve("tinymce.ui.Factory"),v=tinymce.util.Tools.resolve("tinymce.util.Tools"),y=function(t,n,e,o){null===o.get()?o.set(function(e,n){var t,o,i=[];o=u(e),v.each(o.split(/[ ,]/),function(t){var n=e.menuItems[t];"|"===t&&(n={text:t}),n&&(n.shortcut="",i.push(n))});for(var r=0;r 2 | 3 | 4 | 5 | 6 | 7 | 8 |

商品推荐专区

9 |
    10 |
  • 11 | 12 |

    {{ item.name }}

    13 |

    {{ item.price }}

    14 |
  • 15 |
16 | 17 | 18 | 48 | 49 | -------------------------------------------------------------------------------- /vue-project/public/tinymce/plugins/preview/plugin.min.js: -------------------------------------------------------------------------------- 1 | !function(){"use strict";var e=tinymce.util.Tools.resolve("tinymce.PluginManager"),r=tinymce.util.Tools.resolve("tinymce.Env"),c=function(e){return parseInt(e.getParam("plugin_preview_width","650"),10)},a=function(e){return parseInt(e.getParam("plugin_preview_height","500"),10)},s=function(e){return e.getParam("content_style","")},d=tinymce.util.Tools.resolve("tinymce.util.Tools"),l=function(t){var n="",i=t.dom.encode,e=s(t);n+='',e&&(n+='"),d.each(t.contentCSS,function(e){n+=''});var o=t.settings.body_id||"tinymce";-1!==o.indexOf("=")&&(o=(o=t.getParam("body_id","","hash"))[t.id]||o);var r=t.settings.body_class||"";-1!==r.indexOf("=")&&(r=(r=t.getParam("body_class","","hash"))[t.id]||"");var c=t.settings.directionality?' dir="'+t.settings.directionality+'"':"";return""+n+'"+t.getContent()+' 88 | 89 | -------------------------------------------------------------------------------- /vue-project/public/tinymce/plugins/bbcode/plugin.min.js: -------------------------------------------------------------------------------- 1 | !function(){"use strict";var o=tinymce.util.Tools.resolve("tinymce.PluginManager"),t=tinymce.util.Tools.resolve("tinymce.util.Tools"),e=function(e){e=t.trim(e);var o=function(o,t){e=e.replace(o,t)};return o(/(.*?)<\/a>/gi,"[url=$1]$2[/url]"),o(/(.*?)<\/font>/gi,"[code][color=$1]$2[/color][/code]"),o(/(.*?)<\/font>/gi,"[quote][color=$1]$2[/color][/quote]"),o(/(.*?)<\/font>/gi,"[code][color=$1]$2[/color][/code]"),o(/(.*?)<\/font>/gi,"[quote][color=$1]$2[/color][/quote]"),o(/(.*?)<\/span>/gi,"[color=$1]$2[/color]"),o(/(.*?)<\/font>/gi,"[color=$1]$2[/color]"),o(/(.*?)<\/span>/gi,"[size=$1]$2[/size]"),o(/(.*?)<\/font>/gi,"$1"),o(//gi,"[img]$1[/img]"),o(/(.*?)<\/span>/gi,"[code]$1[/code]"),o(/(.*?)<\/span>/gi,"[quote]$1[/quote]"),o(/(.*?)<\/strong>/gi,"[code][b]$1[/b][/code]"),o(/(.*?)<\/strong>/gi,"[quote][b]$1[/b][/quote]"),o(/(.*?)<\/em>/gi,"[code][i]$1[/i][/code]"),o(/(.*?)<\/em>/gi,"[quote][i]$1[/i][/quote]"),o(/(.*?)<\/u>/gi,"[code][u]$1[/u][/code]"),o(/(.*?)<\/u>/gi,"[quote][u]$1[/u][/quote]"),o(/<\/(strong|b)>/gi,"[/b]"),o(/<(strong|b)>/gi,"[b]"),o(/<\/(em|i)>/gi,"[/i]"),o(/<(em|i)>/gi,"[i]"),o(/<\/u>/gi,"[/u]"),o(/(.*?)<\/span>/gi,"[u]$1[/u]"),o(//gi,"[u]"),o(/]*>/gi,"[quote]"),o(/<\/blockquote>/gi,"[/quote]"),o(/
/gi,"\n"),o(//gi,"\n"),o(/
/gi,"\n"),o(/

/gi,""),o(/<\/p>/gi,"\n"),o(/ |\u00a0/gi," "),o(/"/gi,'"'),o(/</gi,"<"),o(/>/gi,">"),o(/&/gi,"&"),e},i=function(e){e=t.trim(e);var o=function(o,t){e=e.replace(o,t)};return o(/\n/gi,"
"),o(/\[b\]/gi,""),o(/\[\/b\]/gi,""),o(/\[i\]/gi,""),o(/\[\/i\]/gi,""),o(/\[u\]/gi,""),o(/\[\/u\]/gi,""),o(/\[url=([^\]]+)\](.*?)\[\/url\]/gi,'$2'),o(/\[url\](.*?)\[\/url\]/gi,'$1'),o(/\[img\](.*?)\[\/img\]/gi,''),o(/\[color=(.*?)\](.*?)\[\/color\]/gi,'$2'),o(/\[code\](.*?)\[\/code\]/gi,'$1 '),o(/\[quote.*?\](.*?)\[\/quote\]/gi,'$1 '),e};o.add("bbcode",function(){return{init:function(o){o.on("beforeSetContent",function(o){o.content=i(o.content)}),o.on("postProcess",function(o){o.set&&(o.content=i(o.content)),o.get&&(o.content=e(o.content))})}}})}(); -------------------------------------------------------------------------------- /vue-project/public/tinymce/plugins/autosave/plugin.min.js: -------------------------------------------------------------------------------- 1 | !function(a){"use strict";var i=function(t){var e=t,n=function(){return e};return{get:n,set:function(t){e=t},clone:function(){return i(n())}}},t=tinymce.util.Tools.resolve("tinymce.PluginManager"),r=tinymce.util.Tools.resolve("tinymce.util.LocalStorage"),o=tinymce.util.Tools.resolve("tinymce.util.Tools"),u=function(t,e){var n=t||e,r=/^(\d+)([ms]?)$/.exec(""+n);return(r[2]?{s:1e3,m:6e4}[r[2]]:1)*parseInt(n,10)},s=function(t){var e=t.getParam("autosave_prefix","tinymce-autosave-{path}{query}{hash}-{id}-");return e=(e=(e=(e=e.replace(/\{path\}/g,a.document.location.pathname)).replace(/\{query\}/g,a.document.location.search)).replace(/\{hash\}/g,a.document.location.hash)).replace(/\{id\}/g,t.id)},c=function(t,e){var n=t.settings.forced_root_block;return""===(e=o.trim(void 0===e?t.getBody().innerHTML:e))||new RegExp("^<"+n+"[^>]*>((\xa0| |[ \t]|]*>)+?|)|
$","i").test(e)},f=function(t){var e=parseInt(r.getItem(s(t)+"time"),10)||0;return!((new Date).getTime()-e>u(t.settings.autosave_retention,"20m")&&(l(t,!1),1))},l=function(t,e){var n=s(t);r.removeItem(n+"draft"),r.removeItem(n+"time"),!1!==e&&t.fire("RemoveDraft")},m=function(t){var e=s(t);!c(t)&&t.isDirty()&&(r.setItem(e+"draft",t.getContent({format:"raw",no_events:!0})),r.setItem(e+"time",(new Date).getTime().toString()),t.fire("StoreDraft"))},v=function(t){var e=s(t);f(t)&&(t.setContent(r.getItem(e+"draft"),{format:"raw"}),t.fire("RestoreDraft"))},d=function(t,e){var n=u(t.settings.autosave_interval,"30s");e.get()||(setInterval(function(){t.removed||m(t)},n),e.set(!0))},g=function(t){t.undoManager.transact(function(){v(t),l(t)}),t.focus()};function y(r){for(var o=[],t=1;t { 6 | return axiosInstance({ 7 | method: 'get', 8 | url: '/goodsInfo', 9 | params:{ 10 | pageSize, 11 | pageNo, 12 | searchId, 13 | } 14 | }) 15 | } 16 | /** 17 | * 获取商品种类接口 18 | */ 19 | export const RequestGoodsType = () => { 20 | return axiosInstance({ 21 | method: 'get', 22 | url: '/goodsType', 23 | }) 24 | } 25 | /** 26 | * 获取商品品牌种类接口 27 | */ 28 | export const RequestGoodsBrandType = () => { 29 | return axiosInstance({ 30 | method: 'get', 31 | url: '/goodsBrandType', 32 | }) 33 | } 34 | /** 35 | * 获取商品尺码接口 36 | */ 37 | export const RequestGoodsSizeType = () => { 38 | return axiosInstance({ 39 | method: 'get', 40 | url: '/goodsSizeType', 41 | }) 42 | } 43 | /** 44 | * 添加商品接口 45 | */ 46 | export const RequestAddGoods = (formData) => { 47 | return axiosInstance({ 48 | method: 'post', 49 | url: '/addGoods', 50 | headers: { "Content-Type": 'multipart/form-data'}, 51 | data: formData 52 | }) 53 | } 54 | /** 55 | * 删除商品接口 56 | */ 57 | export const RequestDeleteGoods = (id,size) => { 58 | return axiosInstance({ 59 | method: 'get', 60 | url: '/deleteGoods', 61 | params:{ 62 | id, 63 | size 64 | } 65 | }) 66 | } 67 | /** 68 | * 批量删除商品接口 69 | */ 70 | export const RequestBatchDelete = (ids) => { 71 | return axiosInstance({ 72 | method: 'get', 73 | url: '/batchDeleteGoods', 74 | params:{ 75 | ids 76 | } 77 | }) 78 | } 79 | /** 80 | * 编辑商品接口 81 | */ 82 | export const RequestEditGoods = (formData) => { 83 | return axiosInstance({ 84 | method: 'post', 85 | url: '/editGoods', 86 | headers: { "Content-Type": 'multipart/form-data'}, 87 | data: formData 88 | }) 89 | } 90 | /** 91 | * 添加商品种类接口 92 | */ 93 | export const RequestAddGoodsType = (formData) => { 94 | return axiosInstance({ 95 | method: 'post', 96 | url: '/addGoodsType', 97 | headers: { "Content-Type": 'multipart/form-data'}, 98 | data: formData 99 | }) 100 | } 101 | /** 102 | * 编辑商品种类接口 103 | */ 104 | export const RequestEditGoodsType = (formData) => { 105 | return axiosInstance({ 106 | method: 'post', 107 | url: '/editGoodsType', 108 | headers: { "Content-Type": 'multipart/form-data'}, 109 | data: formData 110 | }) 111 | } 112 | /** 113 | * 编辑商品种类接口 114 | */ 115 | export const RequestDeleteGoodsType = (id) => { 116 | return axiosInstance({ 117 | method: 'get', 118 | url: '/deleteGoodsType', 119 | params:{ 120 | id 121 | } 122 | }) 123 | } -------------------------------------------------------------------------------- /vue-project/public/tinymce/plugins/toc/plugin.min.js: -------------------------------------------------------------------------------- 1 | !function(){"use strict";var e,n,t=tinymce.util.Tools.resolve("tinymce.PluginManager"),s=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),f=tinymce.util.Tools.resolve("tinymce.util.I18n"),i=tinymce.util.Tools.resolve("tinymce.util.Tools"),l=function(t){return t.getParam("toc_class","mce-toc")},m=function(t){var e=t.getParam("toc_header","h2");return/^h[1-6]$/.test(e)?e:"h2"},c=function(t){var e=parseInt(t.getParam("toc_depth","3"),10);return 1<=e&&e<=9?e:3},a=(e="mcetoc_",n=0,function(){var t=(new Date).getTime().toString(32);return e+t+(n++).toString(32)}),v=function(n){var o=l(n),t=m(n),e=function(t){var e,n=[];for(e=1;e<=t;e++)n.push("h"+e);return n.join(",")}(c(n)),r=n.$(e);return r.length&&/^h[1-9]$/i.test(t)&&(r=r.filter(function(t,e){return!n.dom.hasClass(e.parentNode,o)})),i.map(r,function(t){return{id:t.id?t.id:a(),level:parseInt(t.nodeName.replace(/^H/i,""),10),title:n.$.text(t),element:t}})},d=function(t){var e,n,o,r,i,c,l,a="",d=v(t),u=function(t){var e,n=9;for(e=0;e","<"+i+' contenteditable="true">'+s.DOM.encode(c)+l),e=0;e";else for(n=u;n

  • ";if(a+=''+o.title+"",r!==o.level&&r)for(n=o.level;r
  • ";else a+="
  • ",r||(a+="");u=o.level}return a},u=function(t){var e=l(t),n=t.$("."+e);n.length&&t.undoManager.transact(function(){n.html(d(t))})},o={hasHeaders:function(t){return 0'+n+"")):u(t)},updateToc:u},r=function(t){t.addCommand("mceInsertToc",function(){o.insertToc(t)}),t.addCommand("mceUpdateToc",function(){o.updateToc(t)})},h=function(t){var n=t.$,o=l(t);t.on("PreProcess",function(t){var e=n("."+o,t.node);e.length&&(e.removeAttr("contentEditable"),e.find("[contenteditable]").removeAttr("contentEditable"))}),t.on("SetContent",function(){var t=n("."+o);t.length&&(t.attr("contentEditable",!1),t.children(":first-child").attr("contentEditable",!0))})},g=function(n){return function(t){var e=t.control;n.on("LoadContent SetContent change",function(){e.disabled(n.readonly||!o.hasHeaders(n))})}},T=function(t){var e;t.addButton("toc",{tooltip:"Table of Contents",cmd:"mceInsertToc",icon:"toc",onPostRender:g(t)}),t.addButton("tocupdate",{tooltip:"Update",cmd:"mceUpdateToc",icon:"reload"}),t.addMenuItem("toc",{text:"Table of Contents",context:"insert",cmd:"mceInsertToc",onPostRender:g(t)}),t.addContextToolbar((e=t,function(t){return t&&e.dom.is(t,"."+l(e))&&e.getBody().contains(t)}),"tocupdate")};t.add("toc",function(t){r(t),T(t),h(t)})}(); -------------------------------------------------------------------------------- /vue-project/public/tinymce/plugins/importcss/plugin.min.js: -------------------------------------------------------------------------------- 1 | !function(){"use strict";var e=tinymce.util.Tools.resolve("tinymce.PluginManager"),d=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),v=tinymce.util.Tools.resolve("tinymce.EditorManager"),h=tinymce.util.Tools.resolve("tinymce.Env"),y=tinymce.util.Tools.resolve("tinymce.util.Tools"),o=function(e){return e.getParam("importcss_merge_classes")},n=function(e){return e.getParam("importcss_exclusive")},_=function(e){return e.getParam("importcss_selector_converter")},r=function(e){return e.getParam("importcss_selector_filter")},i=function(e){return e.getParam("importcss_groups")},u=function(e){return e.getParam("importcss_append")},l=function(e){return e.getParam("importcss_file_filter")},a=function(t){return"string"==typeof t?function(e){return-1!==e.indexOf(t)}:t instanceof RegExp?function(e){return t.test(e)}:t},f=function(f,e,m){var g=[],n={};function p(e,t){var n,r,i,c=e.href;if(r=c,i=h.cacheSuffix,"string"==typeof r&&(r=r.replace("?"+i,"").replace("&"+i,"")),(c=r)&&m(c,t)&&(o=c,u=(s=f).settings,!(l=!1!==u.skin&&(u.skin||"lightgray"))||o!==(u.skin_url?s.documentBaseURI.toAbsolute(u.skin_url):v.baseURL+"/skins/"+l)+"/content"+(s.inline?".inline":"")+".min.css")){var s,o,u,l;y.each(e.imports,function(e){p(e,!0)});try{n=e.cssRules||e.rules}catch(a){}y.each(n,function(e){e.styleSheet?p(e.styleSheet,!0):e.selectorText&&y.each(e.selectorText.split(","),function(e){g.push(y.trim(e))})})}}y.each(f.contentCSS,function(e){n[e]=!0}),m||(m=function(e,t){return t||n[e]});try{y.each(e.styleSheets,function(e){p(e)})}catch(t){}return g},x=function(e,t){var n,r=/^(?:([a-z0-9\-_]+))?(\.[a-z0-9_\-\.]+)$/i.exec(t);if(r){var i=r[1],c=r[2].substr(1).split(".").join(" "),s=y.makeMap("a,img");return r[1]?(n={title:t},e.schema.getTextBlockElements()[i]?n.block=i:e.schema.getBlockElements()[i]||s[i.toLowerCase()]?n.selector=i:n.inline=i):r[2]&&(n={inline:"span",title:t.substr(1),classes:c}),!1!==o(e)?n.classes=c:n.attributes={"class":c},n}},T=function(e,t){return null===t||!1!==n(e)},c=x,t=function(h){h.on("renderFormatsMenu",function(e){var t,p={},c=a(r(h)),v=e.control,s=(t=i(h),y.map(t,function(e){return y.extend({},e,{original:e,selectors:{},filter:a(e.filter),item:{text:e.title,menu:[]}})})),o=function(e,t){if(f=e,g=p,!(T(h,m=t)?f in g:f in m.selectors)){u=e,a=p,T(h,l=t)?a[u]=!0:l.selectors[u]=!0;var n=(c=(i=h).plugins.importcss,s=e,((o=t)&&o.selector_converter?o.selector_converter:_(i)?_(i):function(){return x(i,s)}).call(c,s,o));if(n){var r=n.name||d.DOM.uniqueId();return h.formatter.register(r,n),y.extend({},v.settings.itemDefaults,{text:n.title,format:r})}}var i,c,s,o,u,l,a,f,m,g;return null};u(h)||v.items().remove(),y.each(f(h,e.doc||h.getDoc(),a(l(h))),function(n){if(-1===n.indexOf(".mce-")&&(!c||c(n))){var e=(r=s,i=n,y.grep(r,function(e){return!e.filter||e.filter(i)}));if(0 code[class*="language-"], 58 | pre[class*="language-"] { 59 | background: #f5f2f0; 60 | } 61 | 62 | /* Inline code */ 63 | :not(pre) > code[class*="language-"] { 64 | padding: .1em; 65 | border-radius: .3em; 66 | } 67 | 68 | .token.comment, 69 | .token.prolog, 70 | .token.doctype, 71 | .token.cdata { 72 | color: slategray; 73 | } 74 | 75 | .token.punctuation { 76 | color: #999; 77 | } 78 | 79 | .namespace { 80 | opacity: .7; 81 | } 82 | 83 | .token.property, 84 | .token.tag, 85 | .token.boolean, 86 | .token.number, 87 | .token.constant, 88 | .token.symbol, 89 | .token.deleted { 90 | color: #905; 91 | } 92 | 93 | .token.selector, 94 | .token.attr-name, 95 | .token.string, 96 | .token.char, 97 | .token.builtin, 98 | .token.inserted { 99 | color: #690; 100 | } 101 | 102 | .token.operator, 103 | .token.entity, 104 | .token.url, 105 | .language-css .token.string, 106 | .style .token.string { 107 | color: #a67f59; 108 | background: hsla(0, 0%, 100%, .5); 109 | } 110 | 111 | .token.atrule, 112 | .token.attr-value, 113 | .token.keyword { 114 | color: #07a; 115 | } 116 | 117 | .token.function { 118 | color: #DD4A68; 119 | } 120 | 121 | .token.regex, 122 | .token.important, 123 | .token.variable { 124 | color: #e90; 125 | } 126 | 127 | .token.important, 128 | .token.bold { 129 | font-weight: bold; 130 | } 131 | .token.italic { 132 | font-style: italic; 133 | } 134 | 135 | .token.entity { 136 | cursor: help; 137 | } 138 | 139 | -------------------------------------------------------------------------------- /vue-project/src/views/Person/Personal.vue: -------------------------------------------------------------------------------- 1 | 30 | 31 | 86 | 87 | 100 | -------------------------------------------------------------------------------- /vue-project/src/utils/xlsxutil.js: -------------------------------------------------------------------------------- 1 | import XLSX from 'xlsx' 2 | import fs from 'file-saver' 3 | import { cloneDeep } from 'lodash-es' 4 | 5 | const s2ab = (s) => { 6 | var buf 7 | if (typeof ArrayBuffer !== 'undefined') { 8 | buf = new ArrayBuffer(s.length) 9 | var view = new Uint8Array(buf) 10 | for (var i = 0; i !== s.length; ++i) view[i] = s.charCodeAt(i) & 0xff 11 | return buf 12 | } else { 13 | buf = new Array(s.length) 14 | for (var i = 0; i !== s.length; ++i) buf[i] = s.charCodeAt(i) & 0xff 15 | return buf 16 | } 17 | } 18 | 19 | // 自动分析dom元素导出excel 20 | export function excelExport(table, filename) { 21 | // workbook, 22 | const wb = XLSX.utils.table_to_book(table) 23 | 24 | /* Export to file (start a download) */ 25 | const defaultCellStyle = { 26 | font: { name: 'Verdana', sz: 13, color: 'FF00FF88' }, 27 | fill: { fgColor: { rgb: 'FFFFAA00' } }, 28 | } 29 | const wopts = { 30 | bookType: 'xlsx', 31 | bookSST: false, 32 | type: 'binary', 33 | cellStyle: true, 34 | defaultCellStyle: defaultCellStyle, 35 | showGridLines: false, 36 | } 37 | const wbout = XLSX.write(wb, wopts) 38 | const blob = new Blob([s2ab(wbout)], { type: 'application/octet-stream' }) 39 | fs.saveAs(blob, filename+'.xlsx') 40 | } 41 | 42 | // 使用数据导出excel 43 | export function excelExport2(data, headers, filename) { 44 | const json = cloneDeep(data) 45 | 46 | json.forEach(item => { 47 | for(let key in item){ 48 | if(headers.hasOwnProperty(key)){ 49 | item[headers[key]] = item[key] 50 | } 51 | delete item[key] 52 | } 53 | }) 54 | 55 | // excel 对象 56 | const wb = XLSX.utils.book_new() 57 | const ws = XLSX.utils.json_to_sheet(json, {header: Object.values(headers)}) 58 | wb.SheetNames.push(filename) 59 | wb.Sheets[filename] = ws 60 | const defaultCellStyle = { 61 | font: { name: 'Verdana', sz: 13, color: 'FF00FF88' }, 62 | fill: { fgColor: { rgb: 'FFFFAA00' } }, 63 | } 64 | const wopts = { 65 | bookType: 'xlsx', 66 | bookSST: false, 67 | type: 'binary', 68 | cellStyle: true, 69 | defaultCellStyle: defaultCellStyle, 70 | showGridLines: false, 71 | } 72 | const wbout = XLSX.write(wb, wopts) 73 | const blob = new Blob([s2ab(wbout)], { type: 'application/octet-stream' }) 74 | fs.saveAs(blob, filename+'.xlsx') 75 | } 76 | 77 | // excel导入 78 | export function excelImport(file, output) { 79 | const type = file.name.split('.')[1] 80 | const fileType = ['xlsx', 'xlc', 'xlm', 'xls', 'xlt'].some( 81 | (item) => item === type 82 | ) 83 | if (!fileType) { 84 | ElMessage.error('格式错误!请重新选择') 85 | return 86 | } 87 | 88 | const reader = new FileReader(file) 89 | reader.readAsArrayBuffer(file, 'utf-8') 90 | reader.onloadend = function (e) { 91 | const data = e.target.result 92 | /* Parse file */ 93 | // workbook 94 | const wb = XLSX.read(data, { 95 | type: 'buffer', 96 | }) 97 | // worksheet 98 | const ws = wb.Sheets[wb.SheetNames[0]] 99 | const htmlstr = XLSX.utils.sheet_to_html(ws) 100 | /* Generate HTML */ 101 | output.innerHTML = htmlstr 102 | } 103 | } 104 | -------------------------------------------------------------------------------- /vue-project/public/tinymce/plugins/legacyoutput/plugin.min.js: -------------------------------------------------------------------------------- 1 | !function(){"use strict";var e=tinymce.util.Tools.resolve("tinymce.PluginManager"),o=tinymce.util.Tools.resolve("tinymce.util.Tools"),t=function(a){a.settings.inline_styles=!1,a.on("init",function(){var e,t,n,i;e=a,t="p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img",n=o.explode(e.settings.font_size_style_values),i=e.schema,e.formatter.register({alignleft:{selector:t,attributes:{align:"left"}},aligncenter:{selector:t,attributes:{align:"center"}},alignright:{selector:t,attributes:{align:"right"}},alignjustify:{selector:t,attributes:{align:"justify"}},bold:[{inline:"b",remove:"all"},{inline:"strong",remove:"all"},{inline:"span",styles:{fontWeight:"bold"}}],italic:[{inline:"i",remove:"all"},{inline:"em",remove:"all"},{inline:"span",styles:{fontStyle:"italic"}}],underline:[{inline:"u",remove:"all"},{inline:"span",styles:{textDecoration:"underline"},exact:!0}],strikethrough:[{inline:"strike",remove:"all"},{inline:"span",styles:{textDecoration:"line-through"},exact:!0}],fontname:{inline:"font",attributes:{face:"%value"}},fontsize:{inline:"font",attributes:{size:function(e){return o.inArray(n,e.value)+1}}},forecolor:{inline:"font",attributes:{color:"%value"}},hilitecolor:{inline:"font",styles:{backgroundColor:"%value"}}}),o.each("b,i,u,strike".split(","),function(e){i.addValidElements(e+"[*]")}),i.getElementRule("font")||i.addValidElements("font[face|size|color|style]"),o.each(t.split(","),function(e){var t=i.getElementRule(e);t&&(t.attributes.align||(t.attributes.align={},t.attributesOrder.push("align")))})})},n=function(i){i.addButton("fontsizeselect",function(){var o=[],e=i.settings.fontsizeFormats||"8pt=1 10pt=2 12pt=3 14pt=4 18pt=5 24pt=6 36pt=7";return i.$.each(e.split(" "),function(e,t){var n=t,i=t,a=t.split("=");1 2 | 3 | 新增 4 | 刷新 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 编辑 18 | 22 | 25 | 26 | 27 | 28 | 29 | 34 | 40 | 41 | 42 | 43 | 101 | 102 | 103 | -------------------------------------------------------------------------------- /vue-project/src/views/Person/Change.vue: -------------------------------------------------------------------------------- 1 | 28 | 29 | 93 | 94 | 105 | -------------------------------------------------------------------------------- /vue-project/public/tinymce/skins/lightgray/content.inline.min.css: -------------------------------------------------------------------------------- 1 | .word-wrap{word-wrap:break-word;-ms-word-break:break-all;word-break:break-all;word-break:break-word;-ms-hyphens:auto;-moz-hyphens:auto;-webkit-hyphens:auto;hyphens:auto}.mce-content-body .mce-reset{margin:0;padding:0;border:0;outline:0;vertical-align:top;background:transparent;text-decoration:none;color:black;font-family:Arial;font-size:11px;text-shadow:none;float:none;position:static;width:auto;height:auto;white-space:nowrap;cursor:inherit;line-height:normal;font-weight:normal;text-align:left;-webkit-tap-highlight-color:transparent;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box;direction:ltr;max-width:none}.mce-object{border:1px dotted #3A3A3A;background:#D5D5D5 url(img/object.gif) no-repeat center}.mce-preview-object{display:inline-block;position:relative;margin:0 2px 0 2px;line-height:0;border:1px solid gray}.mce-preview-object[data-mce-selected="2"] .mce-shim{display:none}.mce-preview-object .mce-shim{position:absolute;top:0;left:0;width:100%;height:100%;background:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)}figure.align-left{float:left}figure.align-right{float:right}figure.image.align-center{display:table;margin-left:auto;margin-right:auto}figure.image{display:inline-block;border:1px solid gray;margin:0 2px 0 1px;background:#f5f2f0}figure.image img{margin:8px 8px 0 8px}figure.image figcaption{margin:6px 8px 6px 8px;text-align:center}.mce-toc{border:1px solid gray}.mce-toc h2{margin:4px}.mce-toc li{list-style-type:none}.mce-pagebreak{cursor:default;display:block;border:0;width:100%;height:5px;border:1px dashed #666;margin-top:15px;page-break-before:always}@media print{.mce-pagebreak{border:0}}.mce-item-anchor{cursor:default;display:inline-block;-webkit-user-select:all;-webkit-user-modify:read-only;-moz-user-select:all;-moz-user-modify:read-only;user-select:all;user-modify:read-only;width:9px !important;height:9px !important;border:1px dotted #3A3A3A;background:#D5D5D5 url(img/anchor.gif) no-repeat center}.mce-nbsp,.mce-shy{background:#AAA}.mce-shy::after{content:'-'}.mce-match-marker{background:#AAA;color:#fff}.mce-match-marker-selected{background:#3399ff;color:#fff}.mce-spellchecker-word{border-bottom:2px solid rgba(208,2,27,0.5);cursor:default}.mce-spellchecker-grammar{border-bottom:2px solid #008000;cursor:default}.mce-item-table,.mce-item-table td,.mce-item-table th,.mce-item-table caption{border:1px dashed #BBB}td[data-mce-selected],th[data-mce-selected]{background-color:#2276d2 !important}.mce-edit-focus{outline:1px dotted #333}.mce-content-body *[contentEditable=false] *[contentEditable=true]:focus{outline:2px solid #2276d2}.mce-content-body *[contentEditable=false] *[contentEditable=true]:hover{outline:2px solid #2276d2}.mce-content-body *[contentEditable=false][data-mce-selected]{outline:2px solid #2276d2}.mce-content-body.mce-content-readonly *[contentEditable=true]:focus,.mce-content-body.mce-content-readonly *[contentEditable=true]:hover{outline:none}.mce-content-body *[data-mce-selected="inline-boundary"]{background:#bfe6ff}.mce-content-body .mce-item-anchor[data-mce-selected]{background:#D5D5D5 url(img/anchor.gif) no-repeat center}.mce-content-body hr{cursor:default}.mce-content-body table{-webkit-nbsp-mode:normal}.ephox-snooker-resizer-bar{background-color:#2276d2;opacity:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ephox-snooker-resizer-cols{cursor:col-resize}.ephox-snooker-resizer-rows{cursor:row-resize}.ephox-snooker-resizer-bar.ephox-snooker-resizer-bar-dragging{opacity:.2}.mce-content-body{line-height:1.3} -------------------------------------------------------------------------------- /vue-project/src/components/Dialog.vue: -------------------------------------------------------------------------------- 1 | 19 | 97 | 98 | -------------------------------------------------------------------------------- /vue-project/src/views/Order/ReceiptOrder.vue: -------------------------------------------------------------------------------- 1 | 35 | 36 | 110 | 111 | 116 | -------------------------------------------------------------------------------- /vue-project/public/tinymce/skins/lightgray/content.min.css: -------------------------------------------------------------------------------- 1 | body{background-color:#FFFFFF;color:#000000;font-family:Verdana,Arial,Helvetica,sans-serif;font-size:14px;line-height:1.3;scrollbar-3dlight-color:#F0F0EE;scrollbar-arrow-color:#676662;scrollbar-base-color:#F0F0EE;scrollbar-darkshadow-color:#DDDDDD;scrollbar-face-color:#E0E0DD;scrollbar-highlight-color:#F0F0EE;scrollbar-shadow-color:#F0F0EE;scrollbar-track-color:#F5F5F5}td,th{font-family:Verdana,Arial,Helvetica,sans-serif;font-size:14px}.word-wrap{word-wrap:break-word;-ms-word-break:break-all;word-break:break-all;word-break:break-word;-ms-hyphens:auto;-moz-hyphens:auto;-webkit-hyphens:auto;hyphens:auto}.mce-content-body .mce-reset{margin:0;padding:0;border:0;outline:0;vertical-align:top;background:transparent;text-decoration:none;color:black;font-family:Arial;font-size:11px;text-shadow:none;float:none;position:static;width:auto;height:auto;white-space:nowrap;cursor:inherit;line-height:normal;font-weight:normal;text-align:left;-webkit-tap-highlight-color:transparent;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box;direction:ltr;max-width:none}.mce-object{border:1px dotted #3A3A3A;background:#D5D5D5 url(img/object.gif) no-repeat center}.mce-preview-object{display:inline-block;position:relative;margin:0 2px 0 2px;line-height:0;border:1px solid gray}.mce-preview-object[data-mce-selected="2"] .mce-shim{display:none}.mce-preview-object .mce-shim{position:absolute;top:0;left:0;width:100%;height:100%;background:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)}figure.align-left{float:left}figure.align-right{float:right}figure.image.align-center{display:table;margin-left:auto;margin-right:auto}figure.image{display:inline-block;border:1px solid gray;margin:0 2px 0 1px;background:#f5f2f0}figure.image img{margin:8px 8px 0 8px}figure.image figcaption{margin:6px 8px 6px 8px;text-align:center}.mce-toc{border:1px solid gray}.mce-toc h2{margin:4px}.mce-toc li{list-style-type:none}.mce-pagebreak{cursor:default;display:block;border:0;width:100%;height:5px;border:1px dashed #666;margin-top:15px;page-break-before:always}@media print{.mce-pagebreak{border:0}}.mce-item-anchor{cursor:default;display:inline-block;-webkit-user-select:all;-webkit-user-modify:read-only;-moz-user-select:all;-moz-user-modify:read-only;user-select:all;user-modify:read-only;width:9px !important;height:9px !important;border:1px dotted #3A3A3A;background:#D5D5D5 url(img/anchor.gif) no-repeat center}.mce-nbsp,.mce-shy{background:#AAA}.mce-shy::after{content:'-'}.mce-match-marker{background:#AAA;color:#fff}.mce-match-marker-selected{background:#3399ff;color:#fff}.mce-spellchecker-word{border-bottom:2px solid rgba(208,2,27,0.5);cursor:default}.mce-spellchecker-grammar{border-bottom:2px solid #008000;cursor:default}.mce-item-table,.mce-item-table td,.mce-item-table th,.mce-item-table caption{border:1px dashed #BBB}td[data-mce-selected],th[data-mce-selected]{background-color:#2276d2 !important}.mce-edit-focus{outline:1px dotted #333}.mce-content-body *[contentEditable=false] *[contentEditable=true]:focus{outline:2px solid #2276d2}.mce-content-body *[contentEditable=false] *[contentEditable=true]:hover{outline:2px solid #2276d2}.mce-content-body *[contentEditable=false][data-mce-selected]{outline:2px solid #2276d2}.mce-content-body.mce-content-readonly *[contentEditable=true]:focus,.mce-content-body.mce-content-readonly *[contentEditable=true]:hover{outline:none}.mce-content-body *[data-mce-selected="inline-boundary"]{background:#bfe6ff}.mce-content-body .mce-item-anchor[data-mce-selected]{background:#D5D5D5 url(img/anchor.gif) no-repeat center}.mce-content-body hr{cursor:default}.mce-content-body table{-webkit-nbsp-mode:normal}.ephox-snooker-resizer-bar{background-color:#2276d2;opacity:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ephox-snooker-resizer-cols{cursor:col-resize}.ephox-snooker-resizer-rows{cursor:row-resize}.ephox-snooker-resizer-bar.ephox-snooker-resizer-bar-dragging{opacity:.2} -------------------------------------------------------------------------------- /vue-project/src/views/Reception/Comment.vue: -------------------------------------------------------------------------------- 1 | 44 | 45 | 128 | 129 | 131 | -------------------------------------------------------------------------------- /vue-project/src/components/ReceiptDialog.vue: -------------------------------------------------------------------------------- 1 | 48 | 122 | 123 | -------------------------------------------------------------------------------- /vue-project/src/views/FrontPage/Index.vue: -------------------------------------------------------------------------------- 1 | 58 | 77 | 78 | --------------------------------------------------------------------------------