Merge branch 'yyw' of gitee.com:hzchunfen/erp into fix-release-1.0.0/yjc-migrate
This commit is contained in:
commit
53ac852284
1
public/dist/css/147.2c867641.css
vendored
Normal file
1
public/dist/css/147.2c867641.css
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
#nprogress{pointer-events:none}#nprogress .bar{background:#29d;position:fixed;z-index:1031;top:0;left:0;width:100%;height:2px}#nprogress .peg{display:block;position:absolute;right:0;width:100px;height:100%;box-shadow:0 0 10px #29d,0 0 5px #29d;opacity:1;transform:rotate(3deg) translateY(-4px)}#nprogress .spinner{display:block;position:fixed;z-index:1031;top:15px;right:15px}#nprogress .spinner-icon{width:18px;height:18px;box-sizing:border-box;border:2px solid transparent;border-top-color:#29d;border-left-color:#29d;border-radius:50%;animation:nprogress-spinner .4s linear infinite}.nprogress-custom-parent{overflow:hidden;position:relative}.nprogress-custom-parent #nprogress .bar,.nprogress-custom-parent #nprogress .spinner{position:absolute}@keyframes nprogress-spinner{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.searchBox[data-v-1f518a10]{display:flex;align-items:center;flex-wrap:wrap;white-space:nowrap}.searchBox .row[data-v-1f518a10]{font-size:14px;margin-bottom:20px;margin-right:15px;display:flex;align-items:center}.bgBox[data-v-1f518a10]{position:relative;border-radius:5px;background-color:#f5f2f2;margin-bottom:15px;padding:15px 30px 15px 0}.bgBox .close[data-v-1f518a10]{color:red;position:absolute;right:5px;top:5px;font-size:20px;cursor:pointer}.btn[data-v-1f518a10]{display:flex;align-items:center;font-size:14px;color:#409eff;cursor:pointer;width:-moz-fit-content;width:fit-content}
|
||||||
@ -1 +1 @@
|
|||||||
#nprogress{pointer-events:none}#nprogress .bar{background:#29d;position:fixed;z-index:1031;top:0;left:0;width:100%;height:2px}#nprogress .peg{display:block;position:absolute;right:0;width:100px;height:100%;box-shadow:0 0 10px #29d,0 0 5px #29d;opacity:1;transform:rotate(3deg) translateY(-4px)}#nprogress .spinner{display:block;position:fixed;z-index:1031;top:15px;right:15px}#nprogress .spinner-icon{width:18px;height:18px;box-sizing:border-box;border:2px solid transparent;border-top-color:#29d;border-left-color:#29d;border-radius:50%;animation:nprogress-spinner .4s linear infinite}.nprogress-custom-parent{overflow:hidden;position:relative}.nprogress-custom-parent #nprogress .bar,.nprogress-custom-parent #nprogress .spinner{position:absolute}@keyframes nprogress-spinner{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.backimg[data-v-78f587bf]{width:100%;height:1080px;background-image:url(../img/%E7%BB%84%2032.a17892e3.png);background-repeat:no-repeat;background-size:100%;position:relative}.sign[data-v-78f587bf]{width:400px;height:500px;position:absolute;top:270px;right:300px}.sign .row[data-v-78f587bf]{margin-bottom:20px}.sign .title[data-v-78f587bf]{width:125px;height:23px;font-size:22px;font-family:BigruixianBlackGBV1\.0;font-weight:400;line-height:23px;color:#2b53ec;opacity:1}.sign .manage[data-v-78f587bf]{margin-top:19px;margin-bottom:50px}.sign .manage img[data-v-78f587bf]{margin-right:20px}.sign .manage span[data-v-78f587bf]{width:340px;height:57px;font-size:54px;font-family:BigruixianBlackGBV1\.0;font-weight:400;line-height:57px;color:#2b53ec;opacity:1}.sign .title-1[data-v-78f587bf]{width:70px;height:35px;font-size:35px;font-family:Source Han Sans CN;font-weight:500;line-height:60px;color:#393939;opacity:1;margin-bottom:35px}.sign .el-button[data-v-78f587bf]{width:400px;height:45px;background:#2b53ec;border-radius:5px;margin-top:40px}.sign .el-checkbox[data-v-78f587bf]{color:#2b53ec}
|
#nprogress{pointer-events:none}#nprogress .bar{background:#29d;position:fixed;z-index:1031;top:0;left:0;width:100%;height:2px}#nprogress .peg{display:block;position:absolute;right:0;width:100px;height:100%;box-shadow:0 0 10px #29d,0 0 5px #29d;opacity:1;transform:rotate(3deg) translateY(-4px)}#nprogress .spinner{display:block;position:fixed;z-index:1031;top:15px;right:15px}#nprogress .spinner-icon{width:18px;height:18px;box-sizing:border-box;border:2px solid transparent;border-top-color:#29d;border-left-color:#29d;border-radius:50%;animation:nprogress-spinner .4s linear infinite}.nprogress-custom-parent{overflow:hidden;position:relative}.nprogress-custom-parent #nprogress .bar,.nprogress-custom-parent #nprogress .spinner{position:absolute}@keyframes nprogress-spinner{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.backimg[data-v-561481f2]{width:100%;height:1080px;background-image:url(../img/%E7%BB%84%2032.a17892e3.png);background-repeat:no-repeat;background-size:100%;position:relative}.sign[data-v-561481f2]{width:400px;height:500px;position:absolute;top:270px;right:300px}.sign .row[data-v-561481f2]{margin-bottom:20px}.sign .title[data-v-561481f2]{width:125px;height:23px;font-size:22px;font-family:BigruixianBlackGBV1\.0;font-weight:400;line-height:23px;color:#2b53ec;opacity:1}.sign .manage[data-v-561481f2]{margin-top:19px;margin-bottom:50px}.sign .manage img[data-v-561481f2]{margin-right:20px}.sign .manage span[data-v-561481f2]{width:340px;height:57px;font-size:54px;font-family:BigruixianBlackGBV1\.0;font-weight:400;line-height:57px;color:#2b53ec;opacity:1}.sign .title-1[data-v-561481f2]{width:70px;height:35px;font-size:35px;font-family:Source Han Sans CN;font-weight:500;line-height:60px;color:#393939;opacity:1;margin-bottom:35px}.sign .el-button[data-v-561481f2]{width:400px;height:45px;background:#2b53ec;border-radius:5px;margin-top:40px}.sign .el-checkbox[data-v-561481f2]{color:#2b53ec}
|
||||||
@ -1 +1 @@
|
|||||||
#nprogress{pointer-events:none}#nprogress .bar{background:#29d;position:fixed;z-index:1031;top:0;left:0;width:100%;height:2px}#nprogress .peg{display:block;position:absolute;right:0;width:100px;height:100%;box-shadow:0 0 10px #29d,0 0 5px #29d;opacity:1;transform:rotate(3deg) translateY(-4px)}#nprogress .spinner{display:block;position:fixed;z-index:1031;top:15px;right:15px}#nprogress .spinner-icon{width:18px;height:18px;box-sizing:border-box;border:2px solid transparent;border-top-color:#29d;border-left-color:#29d;border-radius:50%;animation:nprogress-spinner .4s linear infinite}.nprogress-custom-parent{overflow:hidden;position:relative}.nprogress-custom-parent #nprogress .bar,.nprogress-custom-parent #nprogress .spinner{position:absolute}@keyframes nprogress-spinner{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.searchBox[data-v-2a9ed9ee]{display:flex;align-items:center;flex-wrap:wrap;white-space:nowrap}.searchBox .row[data-v-2a9ed9ee]{font-size:14px;margin-bottom:20px;margin-right:15px;display:flex;align-items:center}.opaBox[data-v-2a9ed9ee]{margin-bottom:15px}.bgBox[data-v-2a9ed9ee]{position:relative;border-radius:5px;background-color:#f5f2f2;margin-bottom:15px;padding:15px 30px 15px 0}.bgBox .close[data-v-2a9ed9ee]{color:red;position:absolute;right:5px;top:5px;font-size:20px;cursor:pointer}.btn[data-v-2a9ed9ee]{display:flex;align-items:center;font-size:14px;color:#409eff;cursor:pointer;width:-moz-fit-content;width:fit-content}
|
#nprogress{pointer-events:none}#nprogress .bar{background:#29d;position:fixed;z-index:1031;top:0;left:0;width:100%;height:2px}#nprogress .peg{display:block;position:absolute;right:0;width:100px;height:100%;box-shadow:0 0 10px #29d,0 0 5px #29d;opacity:1;transform:rotate(3deg) translateY(-4px)}#nprogress .spinner{display:block;position:fixed;z-index:1031;top:15px;right:15px}#nprogress .spinner-icon{width:18px;height:18px;box-sizing:border-box;border:2px solid transparent;border-top-color:#29d;border-left-color:#29d;border-radius:50%;animation:nprogress-spinner .4s linear infinite}.nprogress-custom-parent{overflow:hidden;position:relative}.nprogress-custom-parent #nprogress .bar,.nprogress-custom-parent #nprogress .spinner{position:absolute}@keyframes nprogress-spinner{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.searchBox[data-v-b907944a]{display:flex;align-items:center;flex-wrap:wrap;white-space:nowrap}.searchBox .row[data-v-b907944a]{font-size:14px;margin-bottom:20px;margin-right:15px;display:flex;align-items:center}.opaBox[data-v-b907944a]{margin-bottom:15px}.bgBox[data-v-b907944a]{position:relative;border-radius:5px;background-color:#f5f2f2;margin-bottom:15px;padding:15px 30px 15px 0}.bgBox .close[data-v-b907944a]{color:red;position:absolute;right:5px;top:5px;font-size:20px;cursor:pointer}.btn[data-v-b907944a]{display:flex;align-items:center;font-size:14px;color:#409eff;cursor:pointer;width:-moz-fit-content;width:fit-content}
|
||||||
1
public/dist/css/465.162dccfd.css
vendored
Normal file
1
public/dist/css/465.162dccfd.css
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
.skuBox[data-v-4a07331a]{border:1px solid #e5e5e5;border-radius:5px;padding:15px 0;margin-bottom:15px;background-color:#f3f3f3}.skuBox .tit[data-v-4a07331a]{padding-left:40px;font-weight:600;font-size:15px;margin-bottom:15px}.el-upload--picture-card[data-v-4a07331a]{width:50px;height:50px}.el-form-item[data-v-4a07331a]{margin-left:40px}.avatar-uploader .el-upload[data-v-4a07331a]{border:1px dashed #d9d9d9;border-radius:6px;cursor:pointer;position:relative;overflow:hidden}.avatar-uploader .el-upload[data-v-4a07331a]:hover{border-color:#409eff}.avatar-uploader-icon[data-v-4a07331a]{font-size:28px;color:#8c939d;width:148px;height:148px;line-height:148px;text-align:center}.avatar[data-v-4a07331a]{width:148px;height:148px;display:block}
|
||||||
1
public/dist/css/52.656e76ca.css
vendored
1
public/dist/css/52.656e76ca.css
vendored
@ -1 +0,0 @@
|
|||||||
.table[data-v-136cb538]{margin-top:20px;position:relative}.btn[data-v-136cb538]{float:right}.flex[data-v-136cb538]{display:flex;align-items:center}.goodBox .Img[data-v-136cb538]{width:50px;height:50px;margin-right:12px;border-radius:4px}.goodBox .tit[data-v-136cb538]{color:#000;font-size:13px}.confirmbtn[data-v-136cb538]{width:114px;height:44px;border-radius:3px;margin-top:21px;margin-bottom:8px}.import-right[data-v-136cb538]{margin-top:30px}.import-right a[data-v-136cb538]{text-decoration:none;color:#000}[data-v-136cb538] .btn11{padding:0;width:14px;height:14px}[data-v-136cb538] .btn11 img{width:100%;height:100%}.page[data-v-136cb538]{margin-top:20px}.searchBox[data-v-136cb538]{display:flex;align-items:center;flex-wrap:wrap;white-space:nowrap}.searchBox .row[data-v-136cb538]{font-size:14px;margin-bottom:20px;margin-right:15px;display:flex;align-items:center}.titBox[data-v-136cb538]{display:flex;align-items:center}.red[data-v-136cb538]{color:red}
|
|
||||||
@ -1 +1 @@
|
|||||||
#nprogress{pointer-events:none}#nprogress .bar{background:#29d;position:fixed;z-index:1031;top:0;left:0;width:100%;height:2px}#nprogress .peg{display:block;position:absolute;right:0;width:100px;height:100%;box-shadow:0 0 10px #29d,0 0 5px #29d;opacity:1;transform:rotate(3deg) translateY(-4px)}#nprogress .spinner{display:block;position:fixed;z-index:1031;top:15px;right:15px}#nprogress .spinner-icon{width:18px;height:18px;box-sizing:border-box;border:2px solid transparent;border-top-color:#29d;border-left-color:#29d;border-radius:50%;animation:nprogress-spinner .4s linear infinite}.nprogress-custom-parent{overflow:hidden;position:relative}.nprogress-custom-parent #nprogress .bar,.nprogress-custom-parent #nprogress .spinner{position:absolute}@keyframes nprogress-spinner{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.searchBox[data-v-4769713c]{display:flex;align-items:center;flex-wrap:wrap;white-space:nowrap}.searchBox .row[data-v-4769713c]{font-size:14px;margin-bottom:20px;margin-right:15px;display:flex;align-items:center}.opaBox[data-v-4769713c]{margin-bottom:15px}.bgBox[data-v-4769713c]{position:relative;border-radius:5px;background-color:#f5f2f2;margin-bottom:15px;padding:15px 30px 1px 0}.bgBox .close[data-v-4769713c]{color:red;position:absolute;right:5px;top:5px;font-size:20px;cursor:pointer}.btn[data-v-4769713c]{display:flex;align-items:center;font-size:14px;color:#409eff;cursor:pointer;width:-moz-fit-content;width:fit-content}
|
#nprogress{pointer-events:none}#nprogress .bar{background:#29d;position:fixed;z-index:1031;top:0;left:0;width:100%;height:2px}#nprogress .peg{display:block;position:absolute;right:0;width:100px;height:100%;box-shadow:0 0 10px #29d,0 0 5px #29d;opacity:1;transform:rotate(3deg) translateY(-4px)}#nprogress .spinner{display:block;position:fixed;z-index:1031;top:15px;right:15px}#nprogress .spinner-icon{width:18px;height:18px;box-sizing:border-box;border:2px solid transparent;border-top-color:#29d;border-left-color:#29d;border-radius:50%;animation:nprogress-spinner .4s linear infinite}.nprogress-custom-parent{overflow:hidden;position:relative}.nprogress-custom-parent #nprogress .bar,.nprogress-custom-parent #nprogress .spinner{position:absolute}@keyframes nprogress-spinner{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.searchBox[data-v-7638a0e4]{display:flex;align-items:center;flex-wrap:wrap;white-space:nowrap}.searchBox .row[data-v-7638a0e4]{font-size:14px;margin-bottom:20px;margin-right:15px;display:flex;align-items:center}.opaBox[data-v-7638a0e4]{margin-bottom:15px}.bgBox[data-v-7638a0e4]{position:relative;border-radius:5px;background-color:#f5f2f2;margin-bottom:15px;padding:15px 30px 1px 0}.bgBox .close[data-v-7638a0e4]{color:red;position:absolute;right:5px;top:5px;font-size:20px;cursor:pointer}.btn[data-v-7638a0e4]{display:flex;align-items:center;font-size:14px;color:#409eff;cursor:pointer;width:-moz-fit-content;width:fit-content}
|
||||||
1
public/dist/css/691.de1fc96e.css
vendored
Normal file
1
public/dist/css/691.de1fc96e.css
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
.el-upload--picture-card[data-v-253f0fda]{width:50px;height:50px}.avatar-uploader .el-upload[data-v-253f0fda]{border:1px dashed #d9d9d9;border-radius:6px;cursor:pointer;position:relative;overflow:hidden}.avatar-uploader .el-upload[data-v-253f0fda]:hover{border-color:#409eff}.avatar-uploader-icon[data-v-253f0fda]{font-size:28px;color:#8c939d;width:148px;height:148px;line-height:148px;text-align:center}.avatar[data-v-253f0fda]{width:148px;height:148px;display:block}.shop-sku-img[data-v-253f0fda]{display:flex}.shop-sku-img .shop[data-v-253f0fda]{margin-right:20px;margin-bottom:20px}.shop-sku-img .shop .shop-name[data-v-253f0fda]{text-align:center}
|
||||||
@ -1 +1 @@
|
|||||||
#nprogress{pointer-events:none}#nprogress .bar{background:#29d;position:fixed;z-index:1031;top:0;left:0;width:100%;height:2px}#nprogress .peg{display:block;position:absolute;right:0;width:100px;height:100%;box-shadow:0 0 10px #29d,0 0 5px #29d;opacity:1;transform:rotate(3deg) translateY(-4px)}#nprogress .spinner{display:block;position:fixed;z-index:1031;top:15px;right:15px}#nprogress .spinner-icon{width:18px;height:18px;box-sizing:border-box;border:2px solid transparent;border-top-color:#29d;border-left-color:#29d;border-radius:50%;animation:nprogress-spinner .4s linear infinite}.nprogress-custom-parent{overflow:hidden;position:relative}.nprogress-custom-parent #nprogress .bar,.nprogress-custom-parent #nprogress .spinner{position:absolute}@keyframes nprogress-spinner{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.searchBox[data-v-3b8fe34f]{display:flex;align-items:center;flex-wrap:wrap;white-space:nowrap;.row[data-v-3b8fe34f]{font-size:14px;margin-bottom:20px;margin-right:15px;display:flex;align-items:center}}.opaBox[data-v-3b8fe34f]{margin-bottom:15px}.btn[data-v-3b8fe34f]{float:right}[data-v-3b8fe34f] .cell{display:flex;align-items:center}.commodityimg[data-v-3b8fe34f]{width:59px;height:59px;background:hsla(0,0%,89%,.39);opacity:1;display:block;margin-right:12px}.Img[data-v-3b8fe34f]{width:100%;height:100%}[data-v-3b8fe34f] .btn11{padding:0;width:14px;height:14px}[data-v-3b8fe34f] .btn11 img{width:100%;height:100%}.page[data-v-3b8fe34f]{margin-top:20px}
|
#nprogress{pointer-events:none}#nprogress .bar{background:#29d;position:fixed;z-index:1031;top:0;left:0;width:100%;height:2px}#nprogress .peg{display:block;position:absolute;right:0;width:100px;height:100%;box-shadow:0 0 10px #29d,0 0 5px #29d;opacity:1;transform:rotate(3deg) translateY(-4px)}#nprogress .spinner{display:block;position:fixed;z-index:1031;top:15px;right:15px}#nprogress .spinner-icon{width:18px;height:18px;box-sizing:border-box;border:2px solid transparent;border-top-color:#29d;border-left-color:#29d;border-radius:50%;animation:nprogress-spinner .4s linear infinite}.nprogress-custom-parent{overflow:hidden;position:relative}.nprogress-custom-parent #nprogress .bar,.nprogress-custom-parent #nprogress .spinner{position:absolute}@keyframes nprogress-spinner{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.searchBox[data-v-b3d4720a]{display:flex;align-items:center;flex-wrap:wrap;white-space:nowrap;.row[data-v-b3d4720a]{font-size:14px;margin-bottom:20px;margin-right:15px;display:flex;align-items:center}}.opaBox[data-v-b3d4720a]{margin-bottom:15px}.btn[data-v-b3d4720a]{float:right}[data-v-b3d4720a] .cell{display:flex;align-items:center}.commodityimg[data-v-b3d4720a]{width:59px;height:59px;background:hsla(0,0%,89%,.39);opacity:1;display:block;margin-right:12px}.Img[data-v-b3d4720a]{width:100%;height:100%}[data-v-b3d4720a] .btn11{padding:0;width:14px;height:14px}[data-v-b3d4720a] .btn11 img{width:100%;height:100%}.page[data-v-b3d4720a]{margin-top:20px}
|
||||||
1
public/dist/css/806.6c9d1a3b.css
vendored
1
public/dist/css/806.6c9d1a3b.css
vendored
@ -1 +0,0 @@
|
|||||||
.el-upload--picture-card[data-v-ff99f10e]{width:50px;height:50px}.avatar-uploader .el-upload[data-v-ff99f10e]{border:1px dashed #d9d9d9;border-radius:6px;cursor:pointer;position:relative;overflow:hidden}.avatar-uploader .el-upload[data-v-ff99f10e]:hover{border-color:#409eff}.avatar-uploader-icon[data-v-ff99f10e]{font-size:28px;color:#8c939d;width:148px;height:148px;line-height:148px;text-align:center}.avatar[data-v-ff99f10e]{width:148px;height:148px;display:block}.shop-sku-img[data-v-ff99f10e]{display:flex}.shop-sku-img .shop[data-v-ff99f10e]{margin-right:20px;margin-bottom:20px}.shop-sku-img .shop .shop-name[data-v-ff99f10e]{text-align:center}
|
|
||||||
1
public/dist/css/810.0abac56a.css
vendored
1
public/dist/css/810.0abac56a.css
vendored
@ -1 +0,0 @@
|
|||||||
.skuBox[data-v-3cee7459]{border:1px solid #e5e5e5;border-radius:5px;padding:15px 0;margin-bottom:15px;background-color:#f3f3f3}.skuBox .tit[data-v-3cee7459]{padding-left:40px;font-weight:600;font-size:15px;margin-bottom:15px}.el-upload--picture-card[data-v-3cee7459]{width:50px;height:50px}.el-form-item[data-v-3cee7459]{margin-left:40px}.avatar-uploader .el-upload[data-v-3cee7459]{border:1px dashed #d9d9d9;border-radius:6px;cursor:pointer;position:relative;overflow:hidden}.avatar-uploader .el-upload[data-v-3cee7459]:hover{border-color:#409eff}.avatar-uploader-icon[data-v-3cee7459]{font-size:28px;color:#8c939d;width:148px;height:148px;line-height:148px;text-align:center}.avatar[data-v-3cee7459]{width:148px;height:148px;display:block}
|
|
||||||
1
public/dist/css/812.4c5ea71e.css
vendored
Normal file
1
public/dist/css/812.4c5ea71e.css
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
.skuBox[data-v-4de310da]{border:1px solid #e5e5e5;border-radius:5px;padding:15px 0;margin-bottom:15px;background-color:#f3f3f3}.skuBox .tit[data-v-4de310da]{padding-left:40px;font-weight:600;font-size:15px;margin-bottom:15px}.skuBox[data-v-3dbf163e]{border:1px solid #e5e5e5;border-radius:5px;padding:15px 0;margin-bottom:15px;background-color:#f3f3f3}.skuBox .tit[data-v-3dbf163e]{padding-left:40px;font-weight:600;font-size:15px;margin-bottom:15px}.table[data-v-a2f1dd48]{margin-top:20px;position:relative}.btn[data-v-a2f1dd48]{float:right}.flex[data-v-a2f1dd48]{display:flex;align-items:center}.goodBox .Img[data-v-a2f1dd48]{width:50px;height:50px;margin-right:12px;border-radius:4px}.goodBox .tit[data-v-a2f1dd48]{color:#000;font-size:13px}.confirmbtn[data-v-a2f1dd48]{width:114px;height:44px;border-radius:3px;margin-top:21px;margin-bottom:8px}.import-right[data-v-a2f1dd48]{margin-top:30px}.import-right a[data-v-a2f1dd48]{text-decoration:none;color:#000}[data-v-a2f1dd48] .btn11{padding:0;width:14px;height:14px}[data-v-a2f1dd48] .btn11 img{width:100%;height:100%}.page[data-v-a2f1dd48]{margin-top:20px}.searchBox[data-v-a2f1dd48]{display:flex;align-items:center;flex-wrap:wrap;white-space:nowrap}.searchBox .row[data-v-a2f1dd48]{font-size:14px;margin-bottom:20px;margin-right:15px;display:flex;align-items:center}.titBox[data-v-a2f1dd48]{display:flex;align-items:center}.red[data-v-a2f1dd48]{color:red}
|
||||||
@ -1 +1 @@
|
|||||||
#nprogress{pointer-events:none}#nprogress .bar{background:#29d;position:fixed;z-index:1031;top:0;left:0;width:100%;height:2px}#nprogress .peg{display:block;position:absolute;right:0;width:100px;height:100%;box-shadow:0 0 10px #29d,0 0 5px #29d;opacity:1;transform:rotate(3deg) translateY(-4px)}#nprogress .spinner{display:block;position:fixed;z-index:1031;top:15px;right:15px}#nprogress .spinner-icon{width:18px;height:18px;box-sizing:border-box;border:2px solid transparent;border-top-color:#29d;border-left-color:#29d;border-radius:50%;animation:nprogress-spinner .4s linear infinite}.nprogress-custom-parent{overflow:hidden;position:relative}.nprogress-custom-parent #nprogress .bar,.nprogress-custom-parent #nprogress .spinner{position:absolute}@keyframes nprogress-spinner{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.searchBox[data-v-c963a484]{display:flex;align-items:center;flex-wrap:wrap;white-space:nowrap}.searchBox .row[data-v-c963a484]{font-size:14px;margin-bottom:20px;margin-right:15px;display:flex;align-items:center}.opaBox[data-v-c963a484]{margin-bottom:15px}.bgBox[data-v-c963a484]{position:relative;border-radius:5px;background-color:#f5f2f2;margin-bottom:15px;padding:15px 30px 15px 0}.bgBox .close[data-v-c963a484]{color:red;position:absolute;right:5px;top:5px;font-size:20px;cursor:pointer}.btn[data-v-c963a484]{display:flex;align-items:center;font-size:14px;color:#409eff;cursor:pointer;width:-moz-fit-content;width:fit-content}
|
#nprogress{pointer-events:none}#nprogress .bar{background:#29d;position:fixed;z-index:1031;top:0;left:0;width:100%;height:2px}#nprogress .peg{display:block;position:absolute;right:0;width:100px;height:100%;box-shadow:0 0 10px #29d,0 0 5px #29d;opacity:1;transform:rotate(3deg) translateY(-4px)}#nprogress .spinner{display:block;position:fixed;z-index:1031;top:15px;right:15px}#nprogress .spinner-icon{width:18px;height:18px;box-sizing:border-box;border:2px solid transparent;border-top-color:#29d;border-left-color:#29d;border-radius:50%;animation:nprogress-spinner .4s linear infinite}.nprogress-custom-parent{overflow:hidden;position:relative}.nprogress-custom-parent #nprogress .bar,.nprogress-custom-parent #nprogress .spinner{position:absolute}@keyframes nprogress-spinner{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.searchBox[data-v-823b7d84]{display:flex;align-items:center;flex-wrap:wrap;white-space:nowrap}.searchBox .row[data-v-823b7d84]{font-size:14px;margin-bottom:20px;margin-right:15px;display:flex;align-items:center}.opaBox[data-v-823b7d84]{margin-bottom:15px}.bgBox[data-v-823b7d84]{position:relative;border-radius:5px;background-color:#f5f2f2;margin-bottom:15px;padding:15px 30px 15px 0}.bgBox .close[data-v-823b7d84]{color:red;position:absolute;right:5px;top:5px;font-size:20px;cursor:pointer}.btn[data-v-823b7d84]{display:flex;align-items:center;font-size:14px;color:#409eff;cursor:pointer;width:-moz-fit-content;width:fit-content}
|
||||||
2
public/dist/index.html
vendored
2
public/dist/index.html
vendored
@ -1 +1 @@
|
|||||||
<!doctype html><html lang=""><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><link rel="icon" href="favicon.ico"><title>erp</title><script defer="defer" src="js/chunk-vendors.04652b46.js"></script><script defer="defer" src="js/app.f773b79c.js"></script><link href="css/chunk-vendors.77489a8d.css" rel="stylesheet"><link href="css/app.7e37f273.css" rel="stylesheet"></head><body><noscript><strong>We're sorry but erp doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"></div></body></html>
|
<!doctype html><html lang=""><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><link rel="icon" href="favicon.ico"><title>erp</title><script defer="defer" src="js/chunk-vendors.04652b46.js"></script><script defer="defer" src="js/app.da342744.js"></script><link href="css/chunk-vendors.77489a8d.css" rel="stylesheet"><link href="css/app.7e37f273.css" rel="stylesheet"></head><body><noscript><strong>We're sorry but erp doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"></div></body></html>
|
||||||
2
public/dist/js/147.97be836f.js
vendored
Normal file
2
public/dist/js/147.97be836f.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
public/dist/js/147.97be836f.js.map
vendored
Normal file
1
public/dist/js/147.97be836f.js.map
vendored
Normal file
File diff suppressed because one or more lines are too long
2
public/dist/js/200.1a2e4aeb.js
vendored
Normal file
2
public/dist/js/200.1a2e4aeb.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
public/dist/js/200.1a2e4aeb.js.map
vendored
Normal file
1
public/dist/js/200.1a2e4aeb.js.map
vendored
Normal file
File diff suppressed because one or more lines are too long
2
public/dist/js/292.25ac0e82.js
vendored
Normal file
2
public/dist/js/292.25ac0e82.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
public/dist/js/292.25ac0e82.js.map
vendored
Normal file
1
public/dist/js/292.25ac0e82.js.map
vendored
Normal file
File diff suppressed because one or more lines are too long
2
public/dist/js/298.28d8451a.js
vendored
2
public/dist/js/298.28d8451a.js
vendored
File diff suppressed because one or more lines are too long
1
public/dist/js/298.28d8451a.js.map
vendored
1
public/dist/js/298.28d8451a.js.map
vendored
File diff suppressed because one or more lines are too long
2
public/dist/js/465.630ca1a8.js
vendored
Normal file
2
public/dist/js/465.630ca1a8.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
public/dist/js/465.630ca1a8.js.map
vendored
Normal file
1
public/dist/js/465.630ca1a8.js.map
vendored
Normal file
File diff suppressed because one or more lines are too long
2
public/dist/js/47.13983981.js
vendored
2
public/dist/js/47.13983981.js
vendored
File diff suppressed because one or more lines are too long
1
public/dist/js/47.13983981.js.map
vendored
1
public/dist/js/47.13983981.js.map
vendored
File diff suppressed because one or more lines are too long
2
public/dist/js/52.f7a2ed17.js
vendored
2
public/dist/js/52.f7a2ed17.js
vendored
File diff suppressed because one or more lines are too long
1
public/dist/js/52.f7a2ed17.js.map
vendored
1
public/dist/js/52.f7a2ed17.js.map
vendored
File diff suppressed because one or more lines are too long
2
public/dist/js/555.238f8a05.js
vendored
2
public/dist/js/555.238f8a05.js
vendored
File diff suppressed because one or more lines are too long
1
public/dist/js/555.238f8a05.js.map
vendored
1
public/dist/js/555.238f8a05.js.map
vendored
File diff suppressed because one or more lines are too long
2
public/dist/js/617.3e63da06.js
vendored
Normal file
2
public/dist/js/617.3e63da06.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
public/dist/js/617.3e63da06.js.map
vendored
Normal file
1
public/dist/js/617.3e63da06.js.map
vendored
Normal file
File diff suppressed because one or more lines are too long
2
public/dist/js/644.72f1270e.js
vendored
2
public/dist/js/644.72f1270e.js
vendored
File diff suppressed because one or more lines are too long
1
public/dist/js/644.72f1270e.js.map
vendored
1
public/dist/js/644.72f1270e.js.map
vendored
File diff suppressed because one or more lines are too long
2
public/dist/js/691.c4036076.js
vendored
Normal file
2
public/dist/js/691.c4036076.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
public/dist/js/691.c4036076.js.map
vendored
Normal file
1
public/dist/js/691.c4036076.js.map
vendored
Normal file
File diff suppressed because one or more lines are too long
2
public/dist/js/702.43d335b0.js
vendored
Normal file
2
public/dist/js/702.43d335b0.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
public/dist/js/702.43d335b0.js.map
vendored
Normal file
1
public/dist/js/702.43d335b0.js.map
vendored
Normal file
File diff suppressed because one or more lines are too long
2
public/dist/js/768.0b6af51a.js
vendored
2
public/dist/js/768.0b6af51a.js
vendored
File diff suppressed because one or more lines are too long
1
public/dist/js/768.0b6af51a.js.map
vendored
1
public/dist/js/768.0b6af51a.js.map
vendored
File diff suppressed because one or more lines are too long
2
public/dist/js/806.1bc2203c.js
vendored
2
public/dist/js/806.1bc2203c.js
vendored
File diff suppressed because one or more lines are too long
1
public/dist/js/806.1bc2203c.js.map
vendored
1
public/dist/js/806.1bc2203c.js.map
vendored
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
2
public/dist/js/810.4ec1659b.js
vendored
2
public/dist/js/810.4ec1659b.js
vendored
File diff suppressed because one or more lines are too long
1
public/dist/js/810.4ec1659b.js.map
vendored
1
public/dist/js/810.4ec1659b.js.map
vendored
File diff suppressed because one or more lines are too long
2
public/dist/js/812.d9984fe9.js
vendored
Normal file
2
public/dist/js/812.d9984fe9.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
public/dist/js/812.d9984fe9.js.map
vendored
Normal file
1
public/dist/js/812.d9984fe9.js.map
vendored
Normal file
File diff suppressed because one or more lines are too long
2
public/dist/js/849.307fe005.js
vendored
Normal file
2
public/dist/js/849.307fe005.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
public/dist/js/849.307fe005.js.map
vendored
Normal file
1
public/dist/js/849.307fe005.js.map
vendored
Normal file
File diff suppressed because one or more lines are too long
1
public/dist/js/967.02e369f7.js.map
vendored
1
public/dist/js/967.02e369f7.js.map
vendored
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
1
public/dist/js/967.1e40c1e4.js.map
vendored
Normal file
1
public/dist/js/967.1e40c1e4.js.map
vendored
Normal file
File diff suppressed because one or more lines are too long
2
public/dist/js/app.da342744.js
vendored
Normal file
2
public/dist/js/app.da342744.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
public/dist/js/app.da342744.js.map
vendored
Normal file
1
public/dist/js/app.da342744.js.map
vendored
Normal file
File diff suppressed because one or more lines are too long
2
public/dist/js/app.f773b79c.js
vendored
2
public/dist/js/app.f773b79c.js
vendored
File diff suppressed because one or more lines are too long
1
public/dist/js/app.f773b79c.js.map
vendored
1
public/dist/js/app.f773b79c.js.map
vendored
File diff suppressed because one or more lines are too long
8
resources/frontend/src/api/supplyChain.js
vendored
8
resources/frontend/src/api/supplyChain.js
vendored
@ -39,6 +39,14 @@ export function getPurchaseLog(params) {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function examinePurchase(data) {
|
||||||
|
return http({
|
||||||
|
url: "/api/purchase_record/purchase_batch_check",
|
||||||
|
method: "post",
|
||||||
|
data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
export function addPurchaseLog(data) {
|
export function addPurchaseLog(data) {
|
||||||
return http({
|
return http({
|
||||||
url: "/api/supplier/purchase_record",
|
url: "/api/supplier/purchase_record",
|
||||||
|
|||||||
198
resources/frontend/src/components/Goods/add.vue
Normal file
198
resources/frontend/src/components/Goods/add.vue
Normal file
@ -0,0 +1,198 @@
|
|||||||
|
<template>
|
||||||
|
<el-dialog :visible.sync="show" title="新增商品" width="900px" @close="closeDialog" :close-on-click-modal="false">
|
||||||
|
<el-form label-width="120px" :inline="true">
|
||||||
|
<el-form-item label="商品品种/品类:">
|
||||||
|
<treeselect
|
||||||
|
:options="treeList"
|
||||||
|
style="width: 200px;"
|
||||||
|
:disable-branch-nodes="true"
|
||||||
|
:show-count="true"
|
||||||
|
:normalizer="normalizer"
|
||||||
|
placeholder="请选择品种"
|
||||||
|
v-model="type_id">
|
||||||
|
<div slot="value-label" slot-scope="{ node }">{{ parseLabel(node) }}</div>
|
||||||
|
</treeselect>
|
||||||
|
</el-form-item>
|
||||||
|
<div v-for="(item, i) in skus" :key="i" class="skuBox">
|
||||||
|
|
||||||
|
<div class="tit">规格{{ i + 1 }}</div>
|
||||||
|
|
||||||
|
<el-form-item label="规格名称:">
|
||||||
|
<el-input placeholder="规格名称" v-model="item.title"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="颜色/特性:">
|
||||||
|
<el-input placeholder="颜色/特性" v-model="item.attribute"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="商品状态:">
|
||||||
|
<el-select v-model="item.status" placeholder="下架(默认)" style="width: 200px;">
|
||||||
|
<el-option v-for="it in options" :key="it.id" :label="it.label" :value="it.id">
|
||||||
|
</el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="商品成本:">
|
||||||
|
<el-input v-model="item.cost" placeholder="商品成本">
|
||||||
|
</el-input>
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<el-form-item label="可售库存:">
|
||||||
|
<el-input v-model="item.sale_stock" placeholder="可售库存">
|
||||||
|
</el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="最终编码:">
|
||||||
|
<el-input v-model="item.external_sku_id" placeholder="不输入自动生成"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="">
|
||||||
|
<el-button type="danger" @click="handleDelete(i)" size="mini" icon="el-icon-delete">删除</el-button>
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<el-form-item>
|
||||||
|
<el-button type="success" @click="toAddSku()" icon="el-icon-plus">增加规格</el-button>
|
||||||
|
</el-form-item>
|
||||||
|
</div>
|
||||||
|
</el-form>
|
||||||
|
|
||||||
|
<span slot="footer" class="dialog-footer">
|
||||||
|
<el-button type="primary" @click="handleSave()" :loading="loading">保存</el-button>
|
||||||
|
<el-button plain @click="cancel()">取消</el-button>
|
||||||
|
</span>
|
||||||
|
|
||||||
|
</el-dialog>
|
||||||
|
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { addGoods } from '@/api/goods.js'
|
||||||
|
import { goods_types } from '@/api/rankingData.js'
|
||||||
|
import Treeselect from '@riophae/vue-treeselect'
|
||||||
|
import '@riophae/vue-treeselect/dist/vue-treeselect.css'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
components: { Treeselect },
|
||||||
|
props: {
|
||||||
|
show: {
|
||||||
|
type: Boolean,
|
||||||
|
default: () => {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
showDialog: false,
|
||||||
|
treeList: [],
|
||||||
|
skus: [],
|
||||||
|
type_id: null,
|
||||||
|
options: [
|
||||||
|
{ id: 0, label: "下架" },
|
||||||
|
{ id: 1, label: "在售" }
|
||||||
|
],
|
||||||
|
loading: false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
getGoodsTypes() {
|
||||||
|
let params = {
|
||||||
|
parent_id: 0
|
||||||
|
}
|
||||||
|
goods_types(params).then((res) => {
|
||||||
|
this.treeList = JSON.parse(JSON.stringify(res.data.data).replace(/name/g, "label"))
|
||||||
|
})
|
||||||
|
},
|
||||||
|
// 添加商品
|
||||||
|
handleSave() {
|
||||||
|
this.loading = true
|
||||||
|
let skus = this.skus
|
||||||
|
let params = {
|
||||||
|
type_id: this.type_id || '',
|
||||||
|
goods_id: '',
|
||||||
|
skus: skus
|
||||||
|
}
|
||||||
|
addGoods(params).then((res) => {
|
||||||
|
this.$message({ message: '商品添加成功!', type: 'success' })
|
||||||
|
this.loading = false
|
||||||
|
this.closeDialog()
|
||||||
|
this.$emit('complete')
|
||||||
|
}).catch(() => {
|
||||||
|
this.loading = false
|
||||||
|
})
|
||||||
|
},
|
||||||
|
toAddSku() {
|
||||||
|
if(!this.type_id) {
|
||||||
|
this.$message({ message: "请选择商品品种/品类", type: "error" })
|
||||||
|
return
|
||||||
|
}
|
||||||
|
this.handleAdd()
|
||||||
|
},
|
||||||
|
handleAdd() {
|
||||||
|
let sku = {
|
||||||
|
title: '',
|
||||||
|
external_sku_id: '',
|
||||||
|
status: 0,
|
||||||
|
num: 0,
|
||||||
|
cost: 0,
|
||||||
|
sale_stock: 9999,
|
||||||
|
reserve: 0,
|
||||||
|
attribute: ''
|
||||||
|
}
|
||||||
|
this.skus.push(sku)
|
||||||
|
},
|
||||||
|
handleDelete(index) {
|
||||||
|
this.skus.splice(index, 1)
|
||||||
|
},
|
||||||
|
cancel() {
|
||||||
|
this.closeDialog()
|
||||||
|
},
|
||||||
|
normalizer(node) {
|
||||||
|
if ((!node.children || (node.children && node.children.length == 0)) && node.level == 1) {
|
||||||
|
node.isDisabled = true
|
||||||
|
}
|
||||||
|
return node
|
||||||
|
},
|
||||||
|
parseLabel(node) {
|
||||||
|
let text = ''
|
||||||
|
text += node.parentNode ? node.parentNode.label + ' / ' : ''
|
||||||
|
text += node.raw ? node.raw.label : ''
|
||||||
|
return text
|
||||||
|
},
|
||||||
|
closeDialog() {
|
||||||
|
this.showDialog = false
|
||||||
|
this.$emit('close')
|
||||||
|
}
|
||||||
|
},
|
||||||
|
watch: {
|
||||||
|
show: {
|
||||||
|
handler(newVal, oldVal) {
|
||||||
|
if (newVal) {
|
||||||
|
this.skus = []
|
||||||
|
this.showDialog = true
|
||||||
|
this.handleAdd()
|
||||||
|
this.getGoodsTypes()
|
||||||
|
}
|
||||||
|
},
|
||||||
|
deep: true,
|
||||||
|
immediate: true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped lang="scss">
|
||||||
|
.skuBox{
|
||||||
|
border: 1px solid #e5e5e5;
|
||||||
|
border-radius: 5px;
|
||||||
|
padding: 15px 0;
|
||||||
|
margin-bottom: 15px;
|
||||||
|
background-color: #f3f3f3;
|
||||||
|
.tit{
|
||||||
|
padding-left: 40px;
|
||||||
|
font-weight: 600;
|
||||||
|
font-size: 15px;
|
||||||
|
margin-bottom: 15px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
</style>
|
||||||
194
resources/frontend/src/components/Goods/edit.vue
Normal file
194
resources/frontend/src/components/Goods/edit.vue
Normal file
@ -0,0 +1,194 @@
|
|||||||
|
<template>
|
||||||
|
<el-dialog :visible.sync="show" title="编辑商品" width="900px" @close="closeDialog" :close-on-click-modal="false">
|
||||||
|
<el-form label-width="120px" :inline="true">
|
||||||
|
<el-form-item label="商品品种/品类:">
|
||||||
|
<treeselect
|
||||||
|
:options="treeList"
|
||||||
|
style="width: 200px;"
|
||||||
|
:disable-branch-nodes="true"
|
||||||
|
:show-count="true"
|
||||||
|
:normalizer="normalizer"
|
||||||
|
placeholder="请选择品种"
|
||||||
|
v-model="goodsInfo.goods.type_id">
|
||||||
|
<div slot="value-label" slot-scope="{ node }">{{ parseLabel(node) }}</div>
|
||||||
|
</treeselect>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="规格名称:">
|
||||||
|
<el-input placeholder="规格名称" v-model="goodsInfo.title"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="最终编码:">
|
||||||
|
<el-input v-model="goodsInfo.external_sku_id" placeholder="不输入自动生成" disabled></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="颜色/特性:">
|
||||||
|
<el-input placeholder="颜色/特性" v-model="goodsInfo.attribute"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="商品状态:">
|
||||||
|
<el-select v-model="goodsInfo.status" placeholder="下架(默认)" style="width: 200px;">
|
||||||
|
<el-option v-for="it in options" :key="it.id" :label="it.label" :value="it.id">
|
||||||
|
</el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="商品成本:">
|
||||||
|
<el-input v-model="goodsInfo.cost" placeholder="商品成本">
|
||||||
|
</el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="在售库存:">
|
||||||
|
<el-input v-model="goodsInfo.sale_stock" placeholder="可售库存"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
|
||||||
|
<span slot="footer" class="dialog-footer">
|
||||||
|
<el-button type="primary" @click="handleSave()" :loading="loading">保存</el-button>
|
||||||
|
<el-button plain @click="cancel()">取消</el-button>
|
||||||
|
</span>
|
||||||
|
|
||||||
|
</el-dialog>
|
||||||
|
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { updateGoods, checkGoods } from '@/api/goods.js'
|
||||||
|
import { goods_types } from '@/api/rankingData.js'
|
||||||
|
import Treeselect from '@riophae/vue-treeselect'
|
||||||
|
import '@riophae/vue-treeselect/dist/vue-treeselect.css'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
components: { Treeselect },
|
||||||
|
props: {
|
||||||
|
show: {
|
||||||
|
type: Boolean,
|
||||||
|
default: () => {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
id: {
|
||||||
|
type: Number,
|
||||||
|
default: () => {
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
goods_id: 0,
|
||||||
|
showDialog: false,
|
||||||
|
treeList: [],
|
||||||
|
skus: [],
|
||||||
|
type_id: null,
|
||||||
|
options: [
|
||||||
|
{ id: '下架', label: '下架' },
|
||||||
|
{ id: '在售', label: '在售' }
|
||||||
|
],
|
||||||
|
loading: false,
|
||||||
|
goodsInfo: {
|
||||||
|
goods: {
|
||||||
|
type_id: null
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
getGoodsTypes() {
|
||||||
|
let params = {
|
||||||
|
parent_id: 0
|
||||||
|
}
|
||||||
|
goods_types(params).then((res) => {
|
||||||
|
this.treeList = JSON.parse(JSON.stringify(res.data.data).replace(/name/g, "label"))
|
||||||
|
})
|
||||||
|
},
|
||||||
|
// 添加商品
|
||||||
|
handleSave() {
|
||||||
|
this.loading = true
|
||||||
|
let goods = {
|
||||||
|
title: this.goodsInfo.goods.title,
|
||||||
|
img_url: this.goodsInfo.goods.img_url,
|
||||||
|
type_id: this.goodsInfo.goods.type_id || '',
|
||||||
|
brand_id: this.goodsInfo.goods.brand_id,
|
||||||
|
goods_code: this.goodsInfo.goods.goods_code
|
||||||
|
}
|
||||||
|
let sku = {
|
||||||
|
title: this.goodsInfo.title,
|
||||||
|
external_sku_id: this.goodsInfo.external_sku_id,
|
||||||
|
status: this.goodsInfo.status,
|
||||||
|
num: this.goodsInfo.num,
|
||||||
|
cost: this.goodsInfo.cost,
|
||||||
|
sale_stock: this.goodsInfo.sale_stock,
|
||||||
|
thumb_url: this.goodsInfo.thumb_url,
|
||||||
|
attribute: this.goodsInfo.attribute
|
||||||
|
}
|
||||||
|
if (sku.status == '下架') {
|
||||||
|
sku.status = 0
|
||||||
|
} else if (sku.status == '在售') {
|
||||||
|
sku.status = 1
|
||||||
|
}
|
||||||
|
let params = {
|
||||||
|
goods_id: this.goodsInfo.goods_id,
|
||||||
|
goods,
|
||||||
|
sku
|
||||||
|
}
|
||||||
|
updateGoods(this.goods_id, params).then((res) => {
|
||||||
|
this.$message({ type: 'success', message: '编辑成功' })
|
||||||
|
this.loading = false
|
||||||
|
this.closeDialog()
|
||||||
|
this.$emit('complete')
|
||||||
|
}).catch(() => {
|
||||||
|
this.loading = false
|
||||||
|
})
|
||||||
|
},
|
||||||
|
getGoodsInfo() {
|
||||||
|
checkGoods(this.goods_id).then((res) => {
|
||||||
|
this.goodsInfo = res.data.data
|
||||||
|
this.goodsInfo.goods.type_id = this.goodsInfo.goods.type_id || null
|
||||||
|
})
|
||||||
|
},
|
||||||
|
cancel() {
|
||||||
|
this.closeDialog()
|
||||||
|
},
|
||||||
|
normalizer(node) {
|
||||||
|
if ((!node.children || (node.children && node.children.length == 0)) && node.level == 1) {
|
||||||
|
node.isDisabled = true
|
||||||
|
}
|
||||||
|
return node
|
||||||
|
},
|
||||||
|
parseLabel(node) {
|
||||||
|
let text = ''
|
||||||
|
text += node.parentNode ? node.parentNode.label + ' / ' : ''
|
||||||
|
text += node.raw ? node.raw.label : ''
|
||||||
|
return text
|
||||||
|
},
|
||||||
|
closeDialog() {
|
||||||
|
this.showDialog = false
|
||||||
|
this.$emit('close')
|
||||||
|
}
|
||||||
|
},
|
||||||
|
watch: {
|
||||||
|
id(newVal, oldVal) {
|
||||||
|
this.goods_id = newVal
|
||||||
|
},
|
||||||
|
show(newVal, oldVal) {
|
||||||
|
if (newVal) {
|
||||||
|
this.showDialog = true
|
||||||
|
this.getGoodsInfo()
|
||||||
|
this.getGoodsTypes()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped lang="scss">
|
||||||
|
.skuBox{
|
||||||
|
border: 1px solid #e5e5e5;
|
||||||
|
border-radius: 5px;
|
||||||
|
padding: 15px 0;
|
||||||
|
margin-bottom: 15px;
|
||||||
|
background-color: #f3f3f3;
|
||||||
|
.tit{
|
||||||
|
padding-left: 40px;
|
||||||
|
font-weight: 600;
|
||||||
|
font-size: 15px;
|
||||||
|
margin-bottom: 15px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
</style>
|
||||||
11
resources/frontend/src/router/list.js
vendored
11
resources/frontend/src/router/list.js
vendored
@ -142,17 +142,22 @@ const list = [
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: "PURCHASE_RECORD",
|
path: "PURCHASE_RECORD",
|
||||||
name: "入库采购",
|
name: "商品采购",
|
||||||
component: () => import("../views/supplyChain/procureLog.vue")
|
component: () => import("../views/supplyChain/procureLog.vue")
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
path: "PURCHASE_RECORD_CHECK",
|
||||||
|
name: "质检入库",
|
||||||
|
component: () => import("../views/supplyChain/procureCheck.vue")
|
||||||
|
},
|
||||||
{
|
{
|
||||||
path: "LOSS_RECORD",
|
path: "LOSS_RECORD",
|
||||||
name: "报损记录",
|
name: "仓库报损",
|
||||||
component: () => import("../views/supplyChain/lossRecord.vue")
|
component: () => import("../views/supplyChain/lossRecord.vue")
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: "DAILY_STOCK_RECORD",
|
path: "DAILY_STOCK_RECORD",
|
||||||
name: "每日盘点记录",
|
name: "库存盘点",
|
||||||
component: () => import("../views/supplyChain/dailyStock.vue")
|
component: () => import("../views/supplyChain/dailyStock.vue")
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|||||||
@ -76,6 +76,7 @@
|
|||||||
console.log(res.data.roles)
|
console.log(res.data.roles)
|
||||||
if(res.data.roles && res.data.roles[0]) {
|
if(res.data.roles && res.data.roles[0]) {
|
||||||
localStorage.setItem("roleName", res.data.roles[0].name)
|
localStorage.setItem("roleName", res.data.roles[0].name)
|
||||||
|
localStorage.setItem("userId", res.data.id)
|
||||||
this.$message({
|
this.$message({
|
||||||
message: "成功登录,欢迎来到后台管理系统",
|
message: "成功登录,欢迎来到后台管理系统",
|
||||||
type: "success"
|
type: "success"
|
||||||
|
|||||||
@ -40,6 +40,7 @@
|
|||||||
<div slot="value-label" slot-scope="{ node }">{{ parseLabel(node) }}</div>
|
<div slot="value-label" slot-scope="{ node }">{{ parseLabel(node) }}</div>
|
||||||
</treeselect>
|
</treeselect>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
<!-- <el-form-item label="商品品牌:">
|
<!-- <el-form-item label="商品品牌:">
|
||||||
<el-select v-model="form.brand_id" placeholder="商品品牌" filterable :disabled="disabled">
|
<el-select v-model="form.brand_id" placeholder="商品品牌" filterable :disabled="disabled">
|
||||||
<el-option v-for="item in brandList" :key="item.id" :label="item.name" :value="item.id">
|
<el-option v-for="item in brandList" :key="item.id" :label="item.name" :value="item.id">
|
||||||
@ -52,6 +53,9 @@
|
|||||||
<el-form-item label="规格名称:">
|
<el-form-item label="规格名称:">
|
||||||
<el-input placeholder="规格名称" v-model="item.title"></el-input>
|
<el-input placeholder="规格名称" v-model="item.title"></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
<el-form-item label="颜色/特性:">
|
||||||
|
<el-input placeholder="颜色/特性" v-model="item.attribute"></el-input>
|
||||||
|
</el-form-item>
|
||||||
<el-form-item label="商品状态:">
|
<el-form-item label="商品状态:">
|
||||||
<el-select v-model="item.status" placeholder="下架(默认)">
|
<el-select v-model="item.status" placeholder="下架(默认)">
|
||||||
<el-option v-for="it in options" :key="it.id" :label="it.label" :value="it.id">
|
<el-option v-for="it in options" :key="it.id" :label="it.label" :value="it.id">
|
||||||
@ -117,7 +121,7 @@
|
|||||||
img_url: "",
|
img_url: "",
|
||||||
type_id: null, // Treeselect组件要求空值为null
|
type_id: null, // Treeselect组件要求空值为null
|
||||||
brand_id: "",
|
brand_id: "",
|
||||||
goods_code: "",
|
goods_code: ""
|
||||||
},
|
},
|
||||||
// 商品状态
|
// 商品状态
|
||||||
options: [
|
options: [
|
||||||
@ -227,7 +231,8 @@
|
|||||||
num: 0,
|
num: 0,
|
||||||
cost: 0,
|
cost: 0,
|
||||||
sale_stock: 9999,
|
sale_stock: 9999,
|
||||||
reserve: 0
|
reserve: 0,
|
||||||
|
attribute: ''
|
||||||
};
|
};
|
||||||
this.skus.push(sku);
|
this.skus.push(sku);
|
||||||
},
|
},
|
||||||
|
|||||||
@ -41,7 +41,7 @@
|
|||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column prop="num" label="组合数量"></el-table-column>
|
<el-table-column prop="num" label="组合数量"></el-table-column>
|
||||||
<el-table-column label="实际库存">
|
<el-table-column label="剩余库存">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<span v-if="!scope.row.children">{{ scope.row.stock }}</span>
|
<span v-if="!scope.row.children">{{ scope.row.stock }}</span>
|
||||||
</template>
|
</template>
|
||||||
@ -96,24 +96,24 @@
|
|||||||
<el-form-item label="商品编码" prop="external_sku_id">
|
<el-form-item label="商品编码" prop="external_sku_id">
|
||||||
<el-input v-model="dynamicValidateForm.external_sku_id"></el-input>
|
<el-input v-model="dynamicValidateForm.external_sku_id"></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item v-for="(item, index) in dynamicValidateForm.combination_goods" :label="'子商品' + index"
|
<el-form-item v-for="(item, index) in dynamicValidateForm.combination_goods" :label="'花材' + (index + 1)"
|
||||||
:key="item.item_id" :prop="'combination_goods.' + index + '.item_id'" :rules="{
|
:key="item.item_id" :prop="'combination_goods.' + index + '.item_id'" :rules="{
|
||||||
required: true, message: '子商品不能为空', trigger: 'blur'
|
required: true, message: '子商品不能为空', trigger: 'blur'
|
||||||
}">
|
}">
|
||||||
<el-col :span="8">
|
<div style="display: flex;align-items: center;">
|
||||||
<el-select v-model="item.item_id" filterable remote reserve-keyword placeholder="请选择子商品"
|
<el-select v-model="item.item_id" filterable remote reserve-keyword placeholder="请选择子商品"
|
||||||
:remote-method="remoteMethod" :loading="remoteLoading">
|
:remote-method="remoteMethod" :loading="remoteLoading" style="width: 240px;">
|
||||||
<el-option v-for="sku in skus" :key="sku.id" :label="sku.title" :value="sku.id"></el-option>
|
<el-option v-for="sku in skus" :key="sku.id" :label="sku.title" :value="sku.id"></el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-col>
|
<el-input v-model="item.item_num" placeholder="数量" style="width: 120px;margin: 0 10px"></el-input>
|
||||||
<el-col :span="2">
|
<el-button type="danger" size="mini" @click.prevent="removeItem(index)">删除</el-button>
|
||||||
<el-input v-model="item.item_num" placeholder="数量"></el-input>
|
</div>
|
||||||
</el-col>
|
</el-form-item>
|
||||||
<el-button type="danger" @click.prevent="removeItem(index)">删除</el-button>
|
<el-form-item label=" ">
|
||||||
|
<el-button @click="addItem" icon="el-icon-plus">添加花材</el-button>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-button type="primary" @click="submitForm('dynamicValidateForm')">提交</el-button>
|
<el-button type="primary" @click="submitForm('dynamicValidateForm')">提交</el-button>
|
||||||
<el-button @click="addItem">添加子商品</el-button>
|
|
||||||
<el-button @click="resetForm('dynamicValidateForm')">重置</el-button>
|
<el-button @click="resetForm('dynamicValidateForm')">重置</el-button>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
|
|||||||
@ -38,6 +38,7 @@
|
|||||||
<div slot="value-label" slot-scope="{ node }">{{ parseLabel(node) }}</div>
|
<div slot="value-label" slot-scope="{ node }">{{ parseLabel(node) }}</div>
|
||||||
</treeselect>
|
</treeselect>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
<!-- <el-form-item label="商品品牌:">
|
<!-- <el-form-item label="商品品牌:">
|
||||||
<el-select v-model="goodsData.goods.brand_id" placeholder="商品品牌" filterable>
|
<el-select v-model="goodsData.goods.brand_id" placeholder="商品品牌" filterable>
|
||||||
<el-option v-for="item in brand" :key="item.id" :label="item.name" :value="item.id">
|
<el-option v-for="item in brand" :key="item.id" :label="item.name" :value="item.id">
|
||||||
@ -52,6 +53,9 @@
|
|||||||
<el-form-item label="最终编码:">
|
<el-form-item label="最终编码:">
|
||||||
<el-input v-model="goodsData.external_sku_id" placeholder="规格编码" disabled></el-input>
|
<el-input v-model="goodsData.external_sku_id" placeholder="规格编码" disabled></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
<el-form-item label="颜色/特性:">
|
||||||
|
<el-input placeholder="颜色/特性" v-model="goodsData.attribute"></el-input>
|
||||||
|
</el-form-item>
|
||||||
<el-form-item label="商品状态:">
|
<el-form-item label="商品状态:">
|
||||||
<el-select v-model="goodsData.status">
|
<el-select v-model="goodsData.status">
|
||||||
<el-option v-for="item in options" :key="item.id" :label="item.label" :value="item.id">
|
<el-option v-for="item in options" :key="item.id" :label="item.label" :value="item.id">
|
||||||
@ -126,6 +130,7 @@ export default {
|
|||||||
sale_stock: '',
|
sale_stock: '',
|
||||||
external_sku_id: "",
|
external_sku_id: "",
|
||||||
thumb_url: [],
|
thumb_url: [],
|
||||||
|
attribute: '',
|
||||||
goods: {
|
goods: {
|
||||||
img_url: "",
|
img_url: "",
|
||||||
title: "",
|
title: "",
|
||||||
@ -243,7 +248,8 @@ export default {
|
|||||||
num: this.goodsData.num,
|
num: this.goodsData.num,
|
||||||
cost: this.goodsData.cost,
|
cost: this.goodsData.cost,
|
||||||
sale_stock: this.goodsData.sale_stock,
|
sale_stock: this.goodsData.sale_stock,
|
||||||
thumb_url: this.goodsData.thumb_url
|
thumb_url: this.goodsData.thumb_url,
|
||||||
|
attribute: this.goodsData.attribute
|
||||||
};
|
};
|
||||||
if (sku.status == "下架") {
|
if (sku.status == "下架") {
|
||||||
sku.status = 0;
|
sku.status = 0;
|
||||||
|
|||||||
@ -84,7 +84,7 @@
|
|||||||
|
|
||||||
<!-- 表格 -->
|
<!-- 表格 -->
|
||||||
<el-table v-loading="loading" ref="multipleTable" border :data="tableData" class="table" tooltip-effect="dark"
|
<el-table v-loading="loading" ref="multipleTable" border :data="tableData" class="table" tooltip-effect="dark"
|
||||||
style="width: 100%" @selection-change="handleSelectionChange" max-height="1500">
|
style="width: 100%" @selection-change="handleSelectionChange">
|
||||||
<!-- 多选框 -->
|
<!-- 多选框 -->
|
||||||
<el-table-column type="selection" align="center"></el-table-column>
|
<el-table-column type="selection" align="center"></el-table-column>
|
||||||
<el-table-column label="商品信息" width="300">
|
<el-table-column label="商品信息" width="300">
|
||||||
@ -94,19 +94,19 @@
|
|||||||
<div>
|
<div>
|
||||||
<div class="tit">{{ scope.row.name }}</div>
|
<div class="tit">{{ scope.row.name }}</div>
|
||||||
<p>{{ scope.row.external_sku_id }}</p>
|
<p>{{ scope.row.external_sku_id }}</p>
|
||||||
<p>{{ scope.row.goods && scope.row.goods.updated_at }}</p>
|
<p>{{ scope.row.updated_at }}</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="品类/品种" align="center">
|
<!-- <el-table-column label="品类/品种" align="center">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<div v-if="scope.row.goods && scope.row.goods.type">
|
<div v-if="scope.row.goods && scope.row.goods.type">
|
||||||
<span>{{ scope.row.goods.type.parent_type ? scope.row.goods.type.parent_type.name : '-' }} / </span>
|
<span>{{ scope.row.goods.type.parent_type ? scope.row.goods.type.parent_type.name : '-' }} / </span>
|
||||||
<span>{{ scope.row.goods.type.name || '-' }}</span>
|
<span>{{ scope.row.goods.type.name || '-' }}</span>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column> -->
|
||||||
<!-- <el-table-column label="规格" prop="title"></el-table-column> -->
|
<!-- <el-table-column label="规格" prop="title"></el-table-column> -->
|
||||||
<!-- <el-table-column label="品牌">
|
<!-- <el-table-column label="品牌">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
@ -126,9 +126,9 @@
|
|||||||
</template>
|
</template>
|
||||||
</el-table-column> -->
|
</el-table-column> -->
|
||||||
|
|
||||||
<el-table-column prop="cost" sortable label="成本" align="center">
|
<el-table-column prop="cost" label="成本" align="center">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<div class="flex">
|
<div class="flex" style="justify-content: center;">
|
||||||
<div v-if="isShow">
|
<div v-if="isShow">
|
||||||
<el-input v-model="scope.row.cost"></el-input>
|
<el-input v-model="scope.row.cost"></el-input>
|
||||||
</div>
|
</div>
|
||||||
@ -179,7 +179,7 @@
|
|||||||
</template>
|
</template>
|
||||||
</el-table-column> -->
|
</el-table-column> -->
|
||||||
|
|
||||||
<!-- <el-table-column sortable label="销量" align="center">
|
<el-table-column sortable label="销量" align="center">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<span>{{ scope.row.order_goods_num }}</span>
|
<span>{{ scope.row.order_goods_num }}</span>
|
||||||
<el-popover placement="right-start" trigger="hover"
|
<el-popover placement="right-start" trigger="hover"
|
||||||
@ -192,7 +192,7 @@
|
|||||||
<i class="el-icon-view" slot="reference" style="padding-left: 5px;"></i>
|
<i class="el-icon-view" slot="reference" style="padding-left: 5px;"></i>
|
||||||
</el-popover>
|
</el-popover>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column> -->
|
</el-table-column>
|
||||||
|
|
||||||
<!-- <el-table-column sortable label="损耗">
|
<!-- <el-table-column sortable label="损耗">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
@ -227,7 +227,7 @@
|
|||||||
</template>
|
</template>
|
||||||
</el-table-column> -->
|
</el-table-column> -->
|
||||||
|
|
||||||
<el-table-column prop="stock" sortable label="当前实际库存" align="center"></el-table-column>
|
<el-table-column prop="yesterday_num" label="实际库存" align="center"></el-table-column>
|
||||||
<el-table-column prop="sale_stock" label="可售库存">
|
<el-table-column prop="sale_stock" label="可售库存">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<div class="titBox" v-if="scope.row.edit">
|
<div class="titBox" v-if="scope.row.edit">
|
||||||
@ -237,14 +237,18 @@
|
|||||||
</div>
|
</div>
|
||||||
<div v-else>{{scope.row.sale_stock}}
|
<div v-else>{{scope.row.sale_stock}}
|
||||||
<span style="color: #409eff;margin-left: 5px;cursor: pointer;font-size: 15px;"
|
<span style="color: #409eff;margin-left: 5px;cursor: pointer;font-size: 15px;"
|
||||||
@click="showEdit(scope.row, scope.$index)">
|
@click="openSaleEdit(scope.row, scope.$index)">
|
||||||
<i class="el-icon-edit"></i>
|
<i class="el-icon-edit"></i>
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
|
<el-table-column label="剩余库存" sortable align="center" prop="stock">
|
||||||
<el-table-column align="center">
|
<template slot-scope="scope">
|
||||||
|
<span :class="scope.row.stock * 1 < 0 ? 'red' : ''">{{ scope.row.stock }}</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<!-- <el-table-column align="center">
|
||||||
<template slot="header" slot-scope="scope">
|
<template slot="header" slot-scope="scope">
|
||||||
<span>销存比例</span>
|
<span>销存比例</span>
|
||||||
<el-tooltip class="item" effect="dark" content="当前库存/当天7点盘点的库存" placement="top">
|
<el-tooltip class="item" effect="dark" content="当前库存/当天7点盘点的库存" placement="top">
|
||||||
@ -254,7 +258,7 @@
|
|||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<span :class="scope.row.sale_ratio * 1 < 20 ? 'red' : ''">{{ scope.row.sale_ratio }}%</span>
|
<span :class="scope.row.sale_ratio * 1 < 20 ? 'red' : ''">{{ scope.row.sale_ratio }}%</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column> -->
|
||||||
|
|
||||||
<!-- <el-table-column prop="address" sortable label="盘点">
|
<!-- <el-table-column prop="address" sortable label="盘点">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
@ -272,12 +276,10 @@
|
|||||||
<el-table-column prop="status" label="状态" align="center"></el-table-column>
|
<el-table-column prop="status" label="状态" align="center"></el-table-column>
|
||||||
<el-table-column label="操作" align="center" width="120" v-if="is_admin">
|
<el-table-column label="操作" align="center" width="120" v-if="is_admin">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<div style="text-align: center;width: 100%;">
|
<!-- <el-button type="text" @click="ejectstock(scope.row)">库存</el-button> -->
|
||||||
<!-- <el-button type="text" @click="ejectstock(scope.row)">库存</el-button> -->
|
<el-button type="text" @click="handleEdit(scope.row.id)">编辑</el-button>
|
||||||
<el-button type="text" @click="handleEdit(scope.row.id)">编辑</el-button>
|
<!-- <el-button type="text" @click="goodslog(scope.row)">记录</el-button> -->
|
||||||
<!-- <el-button type="text" @click="goodslog(scope.row)">记录</el-button> -->
|
<!-- <el-button type="text" @click="deleteSku(scope.row)">删除</el-button> -->
|
||||||
<!-- <el-button type="text" @click="deleteSku(scope.row)">删除</el-button> -->
|
|
||||||
</div>
|
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table>
|
</el-table>
|
||||||
@ -285,16 +287,21 @@
|
|||||||
|
|
||||||
<!-- 底部按钮 -->
|
<!-- 底部按钮 -->
|
||||||
<div class="footerBtn" v-show="isShow || stock">
|
<div class="footerBtn" v-show="isShow || stock">
|
||||||
<el-button type="primary" class="confirmbtn" @click="cancel()">取消</el-button>
|
<el-button type="primary" class="confirmbtn" @click="cancel()">取消</el-button>
|
||||||
<el-button type="primary" class="confirmbtn" @click="onSubmit()">保存</el-button>
|
<el-button type="primary" class="confirmbtn" @click="onSubmit()">保存</el-button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- 分页功能 -->
|
<!-- 分页功能 -->
|
||||||
<div class="page-pagination">
|
<div class="page-pagination">
|
||||||
<el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange"
|
<el-pagination
|
||||||
:current-page="current_page" :page-sizes="[10, 30, 50, 100, 200]" :page-size="per_page"
|
@size-change="handleSizeChange"
|
||||||
layout="total, sizes, prev, pager, next, jumper" :total="Paginationdata.total">
|
@current-change="handleCurrentChange"
|
||||||
</el-pagination>
|
:current-page="current_page"
|
||||||
|
:page-sizes="[10, 30, 50, 100, 200]"
|
||||||
|
:page-size="per_page"
|
||||||
|
layout="total, sizes, prev, pager, next, jumper"
|
||||||
|
:total="Paginationdata.total">
|
||||||
|
</el-pagination>
|
||||||
</div>
|
</div>
|
||||||
</el-card>
|
</el-card>
|
||||||
|
|
||||||
@ -302,13 +309,12 @@
|
|||||||
<el-dialog title="库存修改" :visible.sync="ejectstock1" width="30%" :close-on-click-modal="false">
|
<el-dialog title="库存修改" :visible.sync="ejectstock1" width="30%" :close-on-click-modal="false">
|
||||||
<el-table :data="ommodityInventory" tooltip-effect="dark" style="width: 100%">
|
<el-table :data="ommodityInventory" tooltip-effect="dark" style="width: 100%">
|
||||||
<el-table-column prop="two_days_ago_num" label="2天前库存">
|
<el-table-column prop="two_days_ago_num" label="2天前库存">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<div>
|
<div>
|
||||||
<el-input v-model="scope.row.two_days_ago_num" :disabled="true">
|
<el-input v-model="scope.row.two_days_ago_num" :disabled="true"></el-input>
|
||||||
</el-input>
|
<el-input v-model="scope.row.two_days_ago_num"></el-input>
|
||||||
<el-input v-model="scope.row.two_days_ago_num"></el-input>
|
</div>
|
||||||
</div>
|
</template>
|
||||||
</template>
|
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column prop="yesterday_num" label="1天前库存">
|
<el-table-column prop="yesterday_num" label="1天前库存">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
@ -432,6 +438,12 @@
|
|||||||
</span>
|
</span>
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
|
|
||||||
|
<!-- 新增商品 -->
|
||||||
|
<add-goods :show="showAdd" @close="showAdd = false" @complete="refreshList"></add-goods>
|
||||||
|
|
||||||
|
<!-- 编辑商品 -->
|
||||||
|
<edit-goods :show="showEdit" :id="curId" @close="showEdit = false" @complete="refreshList"></edit-goods>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@ -442,9 +454,11 @@
|
|||||||
import { orderRest } from "@/api/shop"
|
import { orderRest } from "@/api/shop"
|
||||||
import Treeselect from '@riophae/vue-treeselect'
|
import Treeselect from '@riophae/vue-treeselect'
|
||||||
import '@riophae/vue-treeselect/dist/vue-treeselect.css'
|
import '@riophae/vue-treeselect/dist/vue-treeselect.css'
|
||||||
|
import addGoods from "@/components/Goods/add.vue"
|
||||||
|
import editGoods from "@/components/Goods/edit.vue"
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
components: { Treeselect },
|
components: { Treeselect, addGoods, editGoods },
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
editPriceId: '', //参考售价的id
|
editPriceId: '', //参考售价的id
|
||||||
@ -540,7 +554,10 @@
|
|||||||
chooseList: [],
|
chooseList: [],
|
||||||
showUpdate: false,
|
showUpdate: false,
|
||||||
commitLoading: false,
|
commitLoading: false,
|
||||||
is_admin: localStorage.getItem('roleName') == '超级管理员' || localStorage.getItem('roleName') == '系统管理员'
|
is_admin: localStorage.getItem('roleName') == '超级管理员' || localStorage.getItem('roleName') == '系统管理员',
|
||||||
|
showAdd: false,
|
||||||
|
showEdit: false,
|
||||||
|
curId: 0
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
@ -553,7 +570,9 @@
|
|||||||
},
|
},
|
||||||
// 列表编辑
|
// 列表编辑
|
||||||
handleEdit(id) {
|
handleEdit(id) {
|
||||||
this.$router.push({ path: "EDIT_GOODS", query: { id: id } })
|
// this.$router.push({ path: "EDIT_GOODS", query: { id: id } })
|
||||||
|
this.curId = id
|
||||||
|
this.showEdit = true
|
||||||
},
|
},
|
||||||
|
|
||||||
// 获取商品列表
|
// 获取商品列表
|
||||||
@ -675,7 +694,11 @@
|
|||||||
},
|
},
|
||||||
// 新增商品跳转
|
// 新增商品跳转
|
||||||
addNewgoods() {
|
addNewgoods() {
|
||||||
this.$router.push("/ADDGOODS")
|
// this.$router.push("/ADDGOODS")
|
||||||
|
this.showAdd = true
|
||||||
|
},
|
||||||
|
refreshList() {
|
||||||
|
this.handleChoose(this.current_page)
|
||||||
},
|
},
|
||||||
|
|
||||||
//分页功能
|
//分页功能
|
||||||
@ -1088,7 +1111,7 @@
|
|||||||
this.commitLoading = false
|
this.commitLoading = false
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
showEdit(row, index) {
|
openSaleEdit(row, index) {
|
||||||
this.$set(this.tableData[index], 'edit', true)
|
this.$set(this.tableData[index], 'edit', true)
|
||||||
this.$set(this.tableData[index], 'sale_stock_old', row.sale_stock)
|
this.$set(this.tableData[index], 'sale_stock_old', row.sale_stock)
|
||||||
},
|
},
|
||||||
|
|||||||
@ -57,16 +57,23 @@
|
|||||||
<el-dialog title="新增" :visible.sync="dialogVisible" width="500px">
|
<el-dialog title="新增" :visible.sync="dialogVisible" width="500px">
|
||||||
<div v-for="(item, index) in inventoryOrders" :key="index" class="bgBox">
|
<div v-for="(item, index) in inventoryOrders" :key="index" class="bgBox">
|
||||||
<div class="close" @click="delItem(index)"><i class="el-icon-delete-solid"></i></div>
|
<div class="close" @click="delItem(index)"><i class="el-icon-delete-solid"></i></div>
|
||||||
<el-form label-width="90px">
|
<el-form label-width="90px" label-position="right">
|
||||||
<el-form-item label="商品编码:">
|
<el-form-item label="商品名称:">
|
||||||
<el-input v-model="item.external_sku_id" clearable></el-input>
|
<el-select v-model="item.external_sku_id" filterable remote reserve-keyword placeholder="商品名称" clearable
|
||||||
|
:remote-method="remoteMethod" :loading="searchLoading">
|
||||||
|
<el-option v-for="it in goodsList" :key="it.external_sku_id" :label="it.title" :value="it.external_sku_id">
|
||||||
|
</el-option>
|
||||||
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
<!-- <el-form-item label="商品编码:">
|
||||||
|
<el-input v-model="item.external_sku_id" clearable></el-input>
|
||||||
|
</el-form-item> -->
|
||||||
<el-form-item label="盘点库存:">
|
<el-form-item label="盘点库存:">
|
||||||
<el-input v-model="item.inventory" clearable></el-input>
|
<el-input v-model="item.inventory" clearable></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
</div>
|
</div>
|
||||||
<div class="btn" @click="addItem()"><i class="el-icon-plus"></i>添加标签</div>
|
<div class="btn" @click="addItem()"><i class="el-icon-plus"></i>添加记录</div>
|
||||||
<span slot="footer" class="dialog-footer">
|
<span slot="footer" class="dialog-footer">
|
||||||
<el-button @click="dialogVisible = false">取 消</el-button>
|
<el-button @click="dialogVisible = false">取 消</el-button>
|
||||||
<el-button type="primary" @click="commitSupplier" :loading="commitloading">确 定</el-button>
|
<el-button type="primary" @click="commitSupplier" :loading="commitloading">确 定</el-button>
|
||||||
@ -93,6 +100,7 @@
|
|||||||
<script>
|
<script>
|
||||||
import { getDailyStock, batchAddDailyStock } from "@/api/supplyChain"
|
import { getDailyStock, batchAddDailyStock } from "@/api/supplyChain"
|
||||||
import axios from "axios"
|
import axios from "axios"
|
||||||
|
import { goodsSkusList } from "@/api/goods"
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
data() {
|
data() {
|
||||||
@ -111,6 +119,8 @@ export default {
|
|||||||
},
|
},
|
||||||
addTime: [],
|
addTime: [],
|
||||||
showImport: false,
|
showImport: false,
|
||||||
|
goodsList: [],
|
||||||
|
searchLoading: false,
|
||||||
fileList: []
|
fileList: []
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -211,6 +221,21 @@ export default {
|
|||||||
} else {
|
} else {
|
||||||
this.$message.error("请先上传文件")
|
this.$message.error("请先上传文件")
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
remoteMethod(query) {
|
||||||
|
if (query !== '') {
|
||||||
|
this.searchLoading = true
|
||||||
|
setTimeout(() => {
|
||||||
|
this.searchLoading = false
|
||||||
|
goodsSkusList(query).then((res) => {
|
||||||
|
this.goodsList = res.data.filter(item => {
|
||||||
|
return item.title.toLowerCase().indexOf(query.toLowerCase()) > -1
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}, 200)
|
||||||
|
} else {
|
||||||
|
this.goodsList = []
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
|
|||||||
@ -62,9 +62,9 @@
|
|||||||
</div>
|
</div>
|
||||||
</el-card>
|
</el-card>
|
||||||
|
|
||||||
<el-dialog title="新增" :visible.sync="dialogVisible" width="500px">
|
<el-dialog title="新增" :visible.sync="dialogVisible" width="900px">
|
||||||
<el-form label-width="90px">
|
<el-form label-width="90px" :inline="true">
|
||||||
<el-form-item label="采购人">
|
<el-form-item label="采购人:">
|
||||||
<el-select v-model="curInfo.buyer_id" clearable filterable ref="userBatchRef">
|
<el-select v-model="curInfo.buyer_id" clearable filterable ref="userBatchRef">
|
||||||
<el-option v-for="item in usersList" :key="item.id" :label="item.name" :value="item.id">
|
<el-option v-for="item in usersList" :key="item.id" :label="item.name" :value="item.id">
|
||||||
</el-option>
|
</el-option>
|
||||||
@ -73,25 +73,39 @@
|
|||||||
</el-form>
|
</el-form>
|
||||||
<div v-for="(item, index) in lossOrders" :key="index" class="bgBox">
|
<div v-for="(item, index) in lossOrders" :key="index" class="bgBox">
|
||||||
<div class="close" @click="delItem(index)"><i class="el-icon-delete-solid"></i></div>
|
<div class="close" @click="delItem(index)"><i class="el-icon-delete-solid"></i></div>
|
||||||
<el-form label-width="90px">
|
<el-form label-width="90px" :inline="true">
|
||||||
<el-form-item label="商品编码">
|
<el-form-item label="商品名称:">
|
||||||
|
<el-select v-model="item.external_sku_id" filterable remote reserve-keyword placeholder="商品名称" clearable
|
||||||
|
:remote-method="remoteMethod" :loading="searchLoading">
|
||||||
|
<el-option v-for="it in goodsList" :key="it.external_sku_id" :label="it.title" :value="it.external_sku_id">
|
||||||
|
</el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<!-- <el-form-item label="商品编码:">
|
||||||
<el-input v-model="item.external_sku_id" clearable></el-input>
|
<el-input v-model="item.external_sku_id" clearable></el-input>
|
||||||
|
</el-form-item> -->
|
||||||
|
<el-form-item label="数量:">
|
||||||
|
<el-input v-model="item.num" clearable @input="changeInput(index, item)"></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="数量">
|
<el-form-item label="成本:">
|
||||||
<el-input v-model="item.num" clearable></el-input>
|
<el-input v-model="item.cost" clearable @input="changeInput(index, item)" style="width: 215px;">
|
||||||
|
<template slot="append">元</template>
|
||||||
|
</el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="成本">
|
<el-form-item label="商品总价:">
|
||||||
<el-input v-model="item.cost" clearable></el-input>
|
<el-input v-model="item.total_price" style="width: 215px;">
|
||||||
|
<template slot="append">元</template>
|
||||||
|
</el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="报损原因">
|
<el-form-item label="报损原因:">
|
||||||
<el-input v-model="item.reason" clearable></el-input>
|
<el-input v-model="item.reason" clearable></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="报损现象">
|
<el-form-item label="报损现象:">
|
||||||
<el-input v-model="item.phenomenon" clearable></el-input>
|
<el-input v-model="item.phenomenon" clearable></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
</div>
|
</div>
|
||||||
<div class="btn" @click="addItem()"><i class="el-icon-plus"></i>添加标签</div>
|
<div class="btn" @click="addItem()"><i class="el-icon-plus"></i>添加记录</div>
|
||||||
<span slot="footer" class="dialog-footer">
|
<span slot="footer" class="dialog-footer">
|
||||||
<el-button @click="dialogVisible = false">取 消</el-button>
|
<el-button @click="dialogVisible = false">取 消</el-button>
|
||||||
<el-button type="primary" @click="commitBatchLoss" :loading="commitloading">确 定</el-button>
|
<el-button type="primary" @click="commitBatchLoss" :loading="commitloading">确 定</el-button>
|
||||||
@ -100,20 +114,34 @@
|
|||||||
|
|
||||||
<el-dialog title="编辑" :visible.sync="editDialog" width="500px">
|
<el-dialog title="编辑" :visible.sync="editDialog" width="500px">
|
||||||
<el-form label-width="90px">
|
<el-form label-width="90px">
|
||||||
<el-form-item label="商品编码">
|
<el-form-item label="采购人">
|
||||||
<el-input v-model="curInfo.external_sku_id" clearable></el-input>
|
<el-select v-model="curInfo.buyer_user_id" clearable filterable ref="userRef">
|
||||||
|
<el-option v-for="item in usersList" :key="item.id" :label="item.name" :value="item.id">
|
||||||
|
</el-option>
|
||||||
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
<el-form-item label="商品名称">
|
||||||
|
<el-select v-model="curInfo.external_sku_id" filterable remote reserve-keyword placeholder="商品名称" clearable
|
||||||
|
:remote-method="editRemoteMethod" :loading="searchLoading">
|
||||||
|
<el-option v-for="it in editGoodsList" :key="it.external_sku_id" :label="it.title" :value="it.external_sku_id">
|
||||||
|
</el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<!-- <el-form-item label="商品编码">
|
||||||
|
<el-input v-model="curInfo.external_sku_id" clearable></el-input>
|
||||||
|
</el-form-item> -->
|
||||||
<el-form-item label="数量">
|
<el-form-item label="数量">
|
||||||
<el-input v-model="curInfo.num" disabled></el-input>
|
<el-input v-model="curInfo.num" disabled></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="成本">
|
<el-form-item label="成本">
|
||||||
<el-input v-model="curInfo.cost" clearable></el-input>
|
<el-input v-model="curInfo.cost" clearable>
|
||||||
|
<template slot="append">元</template>
|
||||||
|
</el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="采购人">
|
<el-form-item label="商品总价">
|
||||||
<el-select v-model="curInfo.buyer_id" clearable filterable ref="userRef">
|
<el-input v-model="curInfo.total_price" disabled>
|
||||||
<el-option v-for="item in usersList" :key="item.id" :label="item.name" :value="item.id">
|
<template slot="append">元</template>
|
||||||
</el-option>
|
</el-input>
|
||||||
</el-select>
|
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="报损原因">
|
<el-form-item label="报损原因">
|
||||||
<el-input v-model="curInfo.reason" clearable></el-input>
|
<el-input v-model="curInfo.reason" clearable></el-input>
|
||||||
@ -149,6 +177,7 @@
|
|||||||
import { getLossLog, batchAddLossLog, updateLossLog } from "@/api/supplyChain"
|
import { getLossLog, batchAddLossLog, updateLossLog } from "@/api/supplyChain"
|
||||||
import axios from "axios"
|
import axios from "axios"
|
||||||
import { userList } from "@/api/user"
|
import { userList } from "@/api/user"
|
||||||
|
import { goodsSkusList } from "@/api/goods"
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
data() {
|
data() {
|
||||||
@ -170,7 +199,10 @@ export default {
|
|||||||
fileList: [],
|
fileList: [],
|
||||||
usersList: [],
|
usersList: [],
|
||||||
lossOrders: [],
|
lossOrders: [],
|
||||||
editDialog: false
|
editDialog: false,
|
||||||
|
goodsList: [],
|
||||||
|
searchLoading: false,
|
||||||
|
editGoodsList: []
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
@ -207,12 +239,13 @@ export default {
|
|||||||
// 新增供应商
|
// 新增供应商
|
||||||
handleAdd() {
|
handleAdd() {
|
||||||
this.curInfo = {
|
this.curInfo = {
|
||||||
buyer_id: ''
|
buyer_id: localStorage.getItem("userId")
|
||||||
}
|
}
|
||||||
this.lossOrders = [{
|
this.lossOrders = [{
|
||||||
external_sku_id: '',
|
external_sku_id: '',
|
||||||
num: '',
|
num: '',
|
||||||
cost: '',
|
cost: '',
|
||||||
|
total_price: '',
|
||||||
reason: '',
|
reason: '',
|
||||||
phenomenon: ''
|
phenomenon: ''
|
||||||
}]
|
}]
|
||||||
@ -226,13 +259,19 @@ export default {
|
|||||||
external_sku_id: '',
|
external_sku_id: '',
|
||||||
num: '',
|
num: '',
|
||||||
cost: '',
|
cost: '',
|
||||||
|
total_price: '',
|
||||||
reason: '',
|
reason: '',
|
||||||
phenomenon: ''
|
phenomenon: ''
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
handleEdit(row) {
|
handleEdit(row) {
|
||||||
this.curInfo = JSON.parse(JSON.stringify(row))
|
this.curInfo = JSON.parse(JSON.stringify(row))
|
||||||
this.dialogVisible = true
|
this.editGoodsList = [{
|
||||||
|
external_sku_id: row.external_sku_id,
|
||||||
|
title: row.goods_sku && row.goods_sku.name
|
||||||
|
}]
|
||||||
|
this.curInfo.total_price = (row.cost * 1) * (row.num * 1)
|
||||||
|
this.editDialog = true
|
||||||
},
|
},
|
||||||
commitBatchLoss() {
|
commitBatchLoss() {
|
||||||
this.commitloading = true
|
this.commitloading = true
|
||||||
@ -325,6 +364,39 @@ export default {
|
|||||||
userList(params).then((res) => {
|
userList(params).then((res) => {
|
||||||
this.usersList = res.data.data
|
this.usersList = res.data.data
|
||||||
})
|
})
|
||||||
|
},
|
||||||
|
changeInput(index, row) {
|
||||||
|
this.$set(this.lossOrders[index], 'total_price', ((row.num * 1) * (row.cost * 1)))
|
||||||
|
},
|
||||||
|
remoteMethod(query) {
|
||||||
|
if (query !== '') {
|
||||||
|
this.searchLoading = true
|
||||||
|
setTimeout(() => {
|
||||||
|
this.searchLoading = false
|
||||||
|
goodsSkusList(query).then((res) => {
|
||||||
|
this.goodsList = res.data.filter(item => {
|
||||||
|
return item.title.toLowerCase().indexOf(query.toLowerCase()) > -1
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}, 200)
|
||||||
|
} else {
|
||||||
|
this.goodsList = []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
editRemoteMethod(query) {
|
||||||
|
if (query !== '') {
|
||||||
|
this.searchLoading = true
|
||||||
|
setTimeout(() => {
|
||||||
|
this.searchLoading = false
|
||||||
|
goodsSkusList(query).then((res) => {
|
||||||
|
this.editGoodsList = res.data.filter(item => {
|
||||||
|
return item.title.toLowerCase().indexOf(query.toLowerCase()) > -1
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}, 200)
|
||||||
|
} else {
|
||||||
|
this.editGoodsList = []
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
|
|||||||
224
resources/frontend/src/views/supplyChain/procureCheck.vue
Normal file
224
resources/frontend/src/views/supplyChain/procureCheck.vue
Normal file
@ -0,0 +1,224 @@
|
|||||||
|
<template>
|
||||||
|
<div class="pageBox">
|
||||||
|
<div class="cardBox">
|
||||||
|
<div class="searchBox">
|
||||||
|
<div class="row">
|
||||||
|
<span>商品名称:</span>
|
||||||
|
<el-input v-model="filter.title" clearable></el-input>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<span>商品编码:</span>
|
||||||
|
<el-input v-model="filter.external_sku_id" clearable></el-input>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<span>创建时间:</span>
|
||||||
|
<el-date-picker
|
||||||
|
v-model="addTime"
|
||||||
|
type="datetimerange"
|
||||||
|
range-separator="-"
|
||||||
|
start-placeholder="开始时间"
|
||||||
|
end-placeholder="结束时间"
|
||||||
|
value-format="yyyy-MM-dd HH:mm:ss"
|
||||||
|
style="width: 340px">
|
||||||
|
</el-date-picker>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<span>审核状态:</span>
|
||||||
|
<el-select v-model="filter.status" placeholder="请选择" clearable>
|
||||||
|
<el-option v-for="item in statusList" :key="item.id" :label="item.name" :value="item.id">
|
||||||
|
</el-option>
|
||||||
|
</el-select>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<el-button type="primary" icon="el-icon-search" @click="handleSearch">筛选</el-button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<el-card>
|
||||||
|
<el-table v-loading="loading" :data="procureList" style="width: 100%" border>
|
||||||
|
<el-table-column prop="goods_sku.id" label="商品id" width="80" align="center" />
|
||||||
|
<el-table-column prop="goods_sku.name" label="商品名称" />
|
||||||
|
<el-table-column prop="external_sku_id" label="商品编码" />
|
||||||
|
<el-table-column prop="num" label="采购数量" />
|
||||||
|
<el-table-column prop="cost" label="采购成本" />
|
||||||
|
<el-table-column prop="buyer_name" label="采购人名称" />
|
||||||
|
<!-- <el-table-column prop="status" label="状态" /> -->
|
||||||
|
<el-table-column prop="expire_time" label="到货时间" />
|
||||||
|
<el-table-column prop="supplier_name" label="供应商">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<span v-if="scope.row.supplier_name">{{ scope.row.supplier_name }}({{scope.row.supplier_id}})</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="状态">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<span v-if="scope.row.status == 0">待审核</span>
|
||||||
|
<span v-else-if="scope.row.status == 1" style="color: #6DD230;">审核通过</span>
|
||||||
|
<span v-else-if="scope.row.status == 2" style="color: #f00;">审核不通过</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column prop="date" label="采购时间" align="center" />
|
||||||
|
<el-table-column label="操作" width="120" align="center">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<el-button type="primary" v-if="scope.row.status != 1" plain @click="toExamine(scope.row)" icon="el-icon-s-check" size="mini">审核</el-button>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
<div class="page-pagination">
|
||||||
|
<el-pagination
|
||||||
|
@size-change="handleSizeChange"
|
||||||
|
@current-change="handleCurrentChange"
|
||||||
|
:current-page="page"
|
||||||
|
:page-sizes="[15, 30, 50, 100]"
|
||||||
|
:page-size="pageSize"
|
||||||
|
layout="prev, pager, next, jumper, sizes, total"
|
||||||
|
:total="total">
|
||||||
|
</el-pagination>
|
||||||
|
</div>
|
||||||
|
</el-card>
|
||||||
|
|
||||||
|
<el-dialog title="审核" :visible.sync="dialogVisible" width="500px">
|
||||||
|
<el-form label-width="90px">
|
||||||
|
<el-form-item label="审核状态:">
|
||||||
|
<el-radio-group v-model="curInfo.status">
|
||||||
|
<el-radio :label="1">审核通过</el-radio>
|
||||||
|
<el-radio :label="2">审核不通过</el-radio>
|
||||||
|
</el-radio-group>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
<span slot="footer" class="dialog-footer">
|
||||||
|
<el-button @click="dialogVisible = false">取 消</el-button>
|
||||||
|
<el-button type="primary" @click="commitCheck" :loading="commitloading">确 定</el-button>
|
||||||
|
</span>
|
||||||
|
</el-dialog>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { getPurchaseLog, examinePurchase } from "@/api/supplyChain"
|
||||||
|
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
loading: false,
|
||||||
|
page: 1,
|
||||||
|
pageSize: 15,
|
||||||
|
total: 0,
|
||||||
|
procureList: [],
|
||||||
|
filter: {
|
||||||
|
title: '',
|
||||||
|
external_sku_id: '',
|
||||||
|
status: ''
|
||||||
|
},
|
||||||
|
addTime: [],
|
||||||
|
curInfo: {},
|
||||||
|
commitloading: false,
|
||||||
|
dialogVisible: false,
|
||||||
|
statusList: [
|
||||||
|
{ id: 0, name: '待审核' },
|
||||||
|
{ id: 1, name: '审核通过' },
|
||||||
|
{ id: 2, name: '审核不通过' }
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
fetchList() {
|
||||||
|
this.loading = true
|
||||||
|
let params = {
|
||||||
|
page: this.page,
|
||||||
|
per_page: this.pageSize,
|
||||||
|
...this.filter,
|
||||||
|
start_time: this.addTime ? this.addTime[0] : '',
|
||||||
|
end_time: this.addTime ? this.addTime[1] : ''
|
||||||
|
}
|
||||||
|
getPurchaseLog(params).then((res) => {
|
||||||
|
this.procureList = res.data.data
|
||||||
|
this.total = res.data.meta.total
|
||||||
|
this.loading = false
|
||||||
|
}).catch(() => {
|
||||||
|
this.loading = false
|
||||||
|
})
|
||||||
|
},
|
||||||
|
handleSizeChange(val) {
|
||||||
|
this.page = 1
|
||||||
|
this.pageSize = val
|
||||||
|
this.fetchList()
|
||||||
|
},
|
||||||
|
handleCurrentChange(val) {
|
||||||
|
this.page = val
|
||||||
|
this.fetchList()
|
||||||
|
},
|
||||||
|
handleSearch() {
|
||||||
|
this.page = 1
|
||||||
|
this.fetchList()
|
||||||
|
},
|
||||||
|
toExamine(row) {
|
||||||
|
this.curInfo = JSON.parse(JSON.stringify(row))
|
||||||
|
this.dialogVisible = true
|
||||||
|
},
|
||||||
|
commitCheck() {
|
||||||
|
if(!this.curInfo.status) {
|
||||||
|
this.$message({ type: "error", message: "请选择审核状态" })
|
||||||
|
return
|
||||||
|
}
|
||||||
|
this.commitloading = true
|
||||||
|
let params = {
|
||||||
|
purchaseOrders: [{
|
||||||
|
id: this.curInfo.id,
|
||||||
|
status: this.curInfo.status
|
||||||
|
}]
|
||||||
|
}
|
||||||
|
examinePurchase(params).then((res) => {
|
||||||
|
this.$message({ type: "success", message: "操作成功!" })
|
||||||
|
this.commitloading = false
|
||||||
|
this.dialogVisible = false
|
||||||
|
this.fetchList()
|
||||||
|
}).catch(() => {
|
||||||
|
this.commitloading = false
|
||||||
|
})
|
||||||
|
}
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
this.fetchList()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.searchBox{
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
white-space: nowrap;
|
||||||
|
.row{
|
||||||
|
font-size: 14px;
|
||||||
|
margin-bottom: 20px;
|
||||||
|
margin-right: 15px;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.bgBox{
|
||||||
|
position: relative;
|
||||||
|
border-radius: 5px;
|
||||||
|
background-color: #f5f2f2;
|
||||||
|
margin-bottom: 15px;
|
||||||
|
padding: 15px 30px 15px 0;
|
||||||
|
.close{
|
||||||
|
color: #f00;
|
||||||
|
position: absolute;
|
||||||
|
right: 5px;
|
||||||
|
top: 5px;
|
||||||
|
font-size: 20px;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.btn{
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
font-size: 14px;
|
||||||
|
color: #409eff;
|
||||||
|
cursor: pointer;
|
||||||
|
width: fit-content;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@ -22,6 +22,13 @@
|
|||||||
style="width: 340px">
|
style="width: 340px">
|
||||||
</el-date-picker>
|
</el-date-picker>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<span>审核状态:</span>
|
||||||
|
<el-select v-model="filter.status" placeholder="请选择" clearable>
|
||||||
|
<el-option v-for="item in statusList" :key="item.id" :label="item.name" :value="item.id">
|
||||||
|
</el-option>
|
||||||
|
</el-select>
|
||||||
|
</div>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<el-button type="primary" icon="el-icon-search" @click="handleSearch">筛选</el-button>
|
<el-button type="primary" icon="el-icon-search" @click="handleSearch">筛选</el-button>
|
||||||
</div>
|
</div>
|
||||||
@ -40,13 +47,20 @@
|
|||||||
<el-table-column prop="cost" label="采购成本" />
|
<el-table-column prop="cost" label="采购成本" />
|
||||||
<el-table-column prop="buyer_name" label="采购人名称" />
|
<el-table-column prop="buyer_name" label="采购人名称" />
|
||||||
<!-- <el-table-column prop="status" label="状态" /> -->
|
<!-- <el-table-column prop="status" label="状态" /> -->
|
||||||
<el-table-column prop="expire_time" label="保质期时间" />
|
<el-table-column prop="expire_time" label="到货时间" />
|
||||||
<el-table-column prop="supplier_name" label="供应商">
|
<el-table-column prop="supplier_name" label="供应商">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<span v-if="scope.row.supplier_name">{{ scope.row.supplier_name }}({{scope.row.supplier_id}})</span>
|
<span v-if="scope.row.supplier_name">{{ scope.row.supplier_name }}({{scope.row.supplier_id}})</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column prop="date" label="采购时间" align="center" />
|
<el-table-column prop="date" label="采购时间" align="center" />
|
||||||
|
<el-table-column label="状态">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<span v-if="scope.row.status == 0">待审核</span>
|
||||||
|
<span v-else-if="scope.row.status == 1" style="color: #6DD230;">审核通过</span>
|
||||||
|
<span v-else-if="scope.row.status == 2" style="color: #f00;">审核不通过</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
<el-table-column label="操作" width="120" align="center">
|
<el-table-column label="操作" width="120" align="center">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<el-button type="primary" @click="handleEdit(scope.row)" icon="el-icon-edit" size="mini">编辑</el-button>
|
<el-button type="primary" @click="handleEdit(scope.row)" icon="el-icon-edit" size="mini">编辑</el-button>
|
||||||
@ -66,15 +80,15 @@
|
|||||||
</div>
|
</div>
|
||||||
</el-card>
|
</el-card>
|
||||||
|
|
||||||
<el-dialog title="新增" :visible.sync="dialogVisible" width="500px">
|
<el-dialog title="新增" :visible.sync="dialogVisible" width="900px">
|
||||||
<el-form label-width="90px">
|
<el-form label-width="90px" :inline="true">
|
||||||
<el-form-item label="采购人">
|
<el-form-item label="采购人:">
|
||||||
<el-select v-model="curInfo.buyer_user_id" clearable filterable ref="userBatchRef">
|
<el-select v-model="curInfo.buyer_user_id" clearable filterable ref="userBatchRef">
|
||||||
<el-option v-for="item in usersList" :key="item.id" :label="item.name" :value="item.id">
|
<el-option v-for="item in usersList" :key="item.id" :label="item.name" :value="item.id">
|
||||||
</el-option>
|
</el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="供应商">
|
<el-form-item label="供应商:">
|
||||||
<el-select v-model="curInfo.supplier_id" clearable filterable ref="supplierBatchRef">
|
<el-select v-model="curInfo.supplier_id" clearable filterable ref="supplierBatchRef">
|
||||||
<el-option v-for="item in supplierList" :key="item.id" :label="item.supplier_name" :value="item.id">
|
<el-option v-for="item in supplierList" :key="item.id" :label="item.supplier_name" :value="item.id">
|
||||||
</el-option>
|
</el-option>
|
||||||
@ -83,17 +97,31 @@
|
|||||||
</el-form>
|
</el-form>
|
||||||
<div v-for="(item, index) in purchaseOrders" :key="index" class="bgBox">
|
<div v-for="(item, index) in purchaseOrders" :key="index" class="bgBox">
|
||||||
<div class="close" @click="delItem(index)"><i class="el-icon-delete-solid"></i></div>
|
<div class="close" @click="delItem(index)"><i class="el-icon-delete-solid"></i></div>
|
||||||
<el-form label-width="90px">
|
<el-form label-width="90px" :inline="true">
|
||||||
<el-form-item label="商品编码">
|
<el-form-item label="商品名称:">
|
||||||
<el-input v-model="item.external_sku_id" clearable></el-input>
|
<el-select v-model="item.external_sku_id" filterable remote reserve-keyword placeholder="商品名称" clearable
|
||||||
|
:remote-method="remoteMethod" :loading="searchLoading">
|
||||||
|
<el-option v-for="it in goodsList" :key="it.external_sku_id" :label="it.title" :value="it.external_sku_id">
|
||||||
|
</el-option>
|
||||||
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="数量">
|
<!-- <el-form-item label="商品编码:">
|
||||||
<el-input v-model="item.num" clearable></el-input>
|
<el-input v-model="item.external_sku_id" disabled></el-input>
|
||||||
|
</el-form-item> -->
|
||||||
|
<el-form-item label="数量:">
|
||||||
|
<el-input v-model="item.num" clearable @input="changeInput(index, item)"></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="成本">
|
<el-form-item label="成本:">
|
||||||
<el-input v-model="item.cost" clearable></el-input>
|
<el-input v-model="item.cost" clearable @input="changeInput(index, item)" style="width: 215px;">
|
||||||
|
<template slot="append">元</template>
|
||||||
|
</el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="采购日期">
|
<el-form-item label="商品总价:">
|
||||||
|
<el-input v-model="item.total_price" style="width: 215px;">
|
||||||
|
<template slot="append">元</template>
|
||||||
|
</el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="采购日期:">
|
||||||
<el-date-picker
|
<el-date-picker
|
||||||
v-model="item.date"
|
v-model="item.date"
|
||||||
type="date"
|
type="date"
|
||||||
@ -102,9 +130,18 @@
|
|||||||
value-format="yyyy-MM-dd">
|
value-format="yyyy-MM-dd">
|
||||||
</el-date-picker>
|
</el-date-picker>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
<el-form-item label="到货时间:">
|
||||||
|
<el-date-picker
|
||||||
|
v-model="item.arrived_time"
|
||||||
|
type="datetime"
|
||||||
|
placeholder="选择日期"
|
||||||
|
format="yyyy-MM-dd hh:mm:ss"
|
||||||
|
value-format="yyyy-MM-dd hh:mm:ss">
|
||||||
|
</el-date-picker>
|
||||||
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
</div>
|
</div>
|
||||||
<div class="btn" @click="addItem()"><i class="el-icon-plus"></i>添加标签</div>
|
<div class="btn" @click="addItem()"><i class="el-icon-plus"></i>添加采购商品</div>
|
||||||
<span slot="footer" class="dialog-footer">
|
<span slot="footer" class="dialog-footer">
|
||||||
<el-button @click="dialogVisible = false">取 消</el-button>
|
<el-button @click="dialogVisible = false">取 消</el-button>
|
||||||
<el-button type="primary" @click="commitAddPurchase" :loading="commitloading">确 定</el-button>
|
<el-button type="primary" @click="commitAddPurchase" :loading="commitloading">确 定</el-button>
|
||||||
@ -113,17 +150,8 @@
|
|||||||
|
|
||||||
<el-dialog title="编辑" :visible.sync="editDialog" width="600px">
|
<el-dialog title="编辑" :visible.sync="editDialog" width="600px">
|
||||||
<el-form label-width="90px">
|
<el-form label-width="90px">
|
||||||
<el-form-item label="商品编码">
|
|
||||||
<el-input v-model="curInfo.external_sku_id" disabled></el-input>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="数量">
|
|
||||||
<el-input v-model="curInfo.num" disabled></el-input>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="成本">
|
|
||||||
<el-input v-model="curInfo.cost" disabled></el-input>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="采购人">
|
<el-form-item label="采购人">
|
||||||
<el-select v-model="curInfo.buyer_user_id" clearable filterable ref="userRef">
|
<el-select v-model="curInfo.buyer_user_id" clearable filterable ref="userRef" disabled>
|
||||||
<el-option v-for="item in usersList" :key="item.id" :label="item.name" :value="item.id">
|
<el-option v-for="item in usersList" :key="item.id" :label="item.name" :value="item.id">
|
||||||
</el-option>
|
</el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
@ -134,6 +162,27 @@
|
|||||||
</el-option>
|
</el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
<el-form-item label="商品名称">
|
||||||
|
<el-select v-model="curInfo.external_sku_id" filterable remote reserve-keyword placeholder="商品名称" clearable
|
||||||
|
:remote-method="editRemoteMethod" :loading="searchLoading">
|
||||||
|
<el-option v-for="it in editGoodsList" :key="it.external_sku_id" :label="it.title" :value="it.external_sku_id">
|
||||||
|
</el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<!-- <el-form-item label="商品编码">
|
||||||
|
<el-input v-model="curInfo.external_sku_id" disabled></el-input>
|
||||||
|
</el-form-item> -->
|
||||||
|
<el-form-item label="数量">
|
||||||
|
<el-input v-model="curInfo.num" disabled></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="成本">
|
||||||
|
<el-input v-model="curInfo.cost" disabled></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="商品总价">
|
||||||
|
<el-input v-model="curInfo.total_price" disabled>
|
||||||
|
<template slot="append">元</template>
|
||||||
|
</el-input>
|
||||||
|
</el-form-item>
|
||||||
<el-form-item label="采购时间">
|
<el-form-item label="采购时间">
|
||||||
<el-date-picker
|
<el-date-picker
|
||||||
v-model="curInfo.date"
|
v-model="curInfo.date"
|
||||||
@ -143,6 +192,15 @@
|
|||||||
value-format="yyyy-MM-dd">
|
value-format="yyyy-MM-dd">
|
||||||
</el-date-picker>
|
</el-date-picker>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
<el-form-item label="到期时间">
|
||||||
|
<el-date-picker
|
||||||
|
v-model="curInfo.arrived_time"
|
||||||
|
type="datetime"
|
||||||
|
placeholder="到货时间"
|
||||||
|
format="yyyy-MM-dd hh:mm:ss"
|
||||||
|
value-format="yyyy-MM-dd hh:mm:ss">
|
||||||
|
</el-date-picker>
|
||||||
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
<span slot="footer" class="dialog-footer">
|
<span slot="footer" class="dialog-footer">
|
||||||
<el-button @click="editDialog = false">取 消</el-button>
|
<el-button @click="editDialog = false">取 消</el-button>
|
||||||
@ -172,6 +230,8 @@
|
|||||||
import { getPurchaseLog, updatePurchaseLog, getSupplier, batchAddPurchaseLog } from "@/api/supplyChain"
|
import { getPurchaseLog, updatePurchaseLog, getSupplier, batchAddPurchaseLog } from "@/api/supplyChain"
|
||||||
import axios from "axios"
|
import axios from "axios"
|
||||||
import { userList } from "@/api/user"
|
import { userList } from "@/api/user"
|
||||||
|
import { goodsSkusList } from "@/api/goods"
|
||||||
|
import dayjs from 'dayjs'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
data() {
|
data() {
|
||||||
@ -183,7 +243,8 @@ export default {
|
|||||||
procureList: [],
|
procureList: [],
|
||||||
filter: {
|
filter: {
|
||||||
title: '',
|
title: '',
|
||||||
external_sku_id: ''
|
external_sku_id: '',
|
||||||
|
status: ''
|
||||||
},
|
},
|
||||||
addTime: [],
|
addTime: [],
|
||||||
commitloading: false,
|
commitloading: false,
|
||||||
@ -194,7 +255,15 @@ export default {
|
|||||||
usersList: [],
|
usersList: [],
|
||||||
supplierList: [],
|
supplierList: [],
|
||||||
purchaseOrders: [],
|
purchaseOrders: [],
|
||||||
editDialog: false
|
editDialog: false,
|
||||||
|
goodsList: [],
|
||||||
|
searchLoading: false,
|
||||||
|
statusList: [
|
||||||
|
{ id: 0, name: '待审核' },
|
||||||
|
{ id: 1, name: '审核通过' },
|
||||||
|
{ id: 2, name: '审核不通过' }
|
||||||
|
],
|
||||||
|
editGoodsList: []
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
@ -231,14 +300,16 @@ export default {
|
|||||||
// 新增供应商
|
// 新增供应商
|
||||||
handleAdd() {
|
handleAdd() {
|
||||||
this.curInfo = {
|
this.curInfo = {
|
||||||
buyer_user_id: '',
|
buyer_user_id: localStorage.getItem("userId"),
|
||||||
supplier_id: ''
|
supplier_id: ''
|
||||||
}
|
}
|
||||||
this.purchaseOrders = [{
|
this.purchaseOrders = [{
|
||||||
external_sku_id: '',
|
external_sku_id: '',
|
||||||
num: '',
|
num: '',
|
||||||
cost: '',
|
cost: '',
|
||||||
date: ''
|
total_price: '',
|
||||||
|
date: dayjs().format('YYYY-MM-DD'),
|
||||||
|
arrived_time: ''
|
||||||
}]
|
}]
|
||||||
this.dialogVisible = true
|
this.dialogVisible = true
|
||||||
},
|
},
|
||||||
@ -250,11 +321,18 @@ export default {
|
|||||||
external_sku_id: '',
|
external_sku_id: '',
|
||||||
num: '',
|
num: '',
|
||||||
cost: '',
|
cost: '',
|
||||||
date: ''
|
total_price: '',
|
||||||
|
date: dayjs().format('YYYY-MM-DD'),
|
||||||
|
arrived_time: ''
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
handleEdit(row) {
|
handleEdit(row) {
|
||||||
this.curInfo = JSON.parse(JSON.stringify(row))
|
this.curInfo = JSON.parse(JSON.stringify(row))
|
||||||
|
this.editGoodsList = [{
|
||||||
|
external_sku_id: row.external_sku_id,
|
||||||
|
title: row.goods_sku && row.goods_sku.name
|
||||||
|
}]
|
||||||
|
this.curInfo.total_price = (row.cost * 1) * (row.num * 1)
|
||||||
this.editDialog = true
|
this.editDialog = true
|
||||||
},
|
},
|
||||||
commitAddPurchase() {
|
commitAddPurchase() {
|
||||||
@ -367,6 +445,39 @@ export default {
|
|||||||
getSupplier(params).then((res) => {
|
getSupplier(params).then((res) => {
|
||||||
this.supplierList = res.data.data
|
this.supplierList = res.data.data
|
||||||
})
|
})
|
||||||
|
},
|
||||||
|
remoteMethod(query) {
|
||||||
|
if (query !== '') {
|
||||||
|
this.searchLoading = true
|
||||||
|
setTimeout(() => {
|
||||||
|
this.searchLoading = false
|
||||||
|
goodsSkusList(query).then((res) => {
|
||||||
|
this.goodsList = res.data.filter(item => {
|
||||||
|
return item.title.toLowerCase().indexOf(query.toLowerCase()) > -1
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}, 200)
|
||||||
|
} else {
|
||||||
|
this.goodsList = []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
changeInput(index, row) {
|
||||||
|
this.$set(this.purchaseOrders[index], 'total_price', ((row.num * 1) * (row.cost * 1)))
|
||||||
|
},
|
||||||
|
editRemoteMethod(query) {
|
||||||
|
if (query !== '') {
|
||||||
|
this.searchLoading = true
|
||||||
|
setTimeout(() => {
|
||||||
|
this.searchLoading = false
|
||||||
|
goodsSkusList(query).then((res) => {
|
||||||
|
this.editGoodsList = res.data.filter(item => {
|
||||||
|
return item.title.toLowerCase().indexOf(query.toLowerCase()) > -1
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}, 200)
|
||||||
|
} else {
|
||||||
|
this.editGoodsList = []
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user