Commit b679fa6a by LJM

Merge branch 'dev/ver/1.0.0'

parents a01ee440 86bdf3c2
......@@ -3491,6 +3491,11 @@
"integrity": "sha512-YpeKZngUmG65rLudJ4taU7VLkOCTMhNl/u4ctNC56LQS/zJTyNH0Lrtwm1tfTsbLlwvlfsA2d1c8vCf/Kh2KwQ==",
"dev": true
},
"china-division": {
"version": "2.7.0",
"resolved": "https://repo.huaweicloud.com/repository/npm/china-division/-/china-division-2.7.0.tgz",
"integrity": "sha512-4uUPAT+1WfqDh5jytq7omdCmHNk3j+k76zEG/2IqaGcYB90c2SwcixttcypdsZ3T/9tN1TTpBDoeZn+Yw/qBEA=="
},
"chokidar": {
"version": "3.5.1",
"resolved": "https://registry.npm.taobao.org/chokidar/download/chokidar-3.5.1.tgz?cache=0&sync_timestamp=1610719430924&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fchokidar%2Fdownload%2Fchokidar-3.5.1.tgz",
......@@ -5136,6 +5141,14 @@
"integrity": "sha1-hX4xDKAPC3XaTh22/w4HPMSpHd8=",
"dev": true
},
"element-china-area-data": {
"version": "6.1.0",
"resolved": "https://repo.huaweicloud.com/repository/npm/element-china-area-data/-/element-china-area-data-6.1.0.tgz",
"integrity": "sha512-IkpcjwQv2A/2AxFiSoaISZ+oMw1rZCPUSOg5sOCwT5jKc96TaawmKZeY81xfxXsO0QbKxU5LLc6AirhG52hUmg==",
"requires": {
"china-division": "^2.7.0"
}
},
"element-ui": {
"version": "2.15.13",
"resolved": "https://registry.npmjs.org/element-ui/-/element-ui-2.15.13.tgz",
......
......@@ -11,6 +11,7 @@
"axios": "^0.21.1",
"core-js": "^3.6.5",
"echarts": "^5.4.2",
"element-china-area-data": "^6.1.0",
"element-ui": "^2.15.13",
"vue": "^2.6.11",
"vue-clipboard2": "^0.3.1",
......
*上架有效期,*商品型号,*制造商,*寄售库存数量,安全库存,"*最小起订量
*上架有效期,*商品型号,*制造商,*寄售库存数量,安全库存,"*最小起订量
(MOQ)",标准包装量(MPQ),*递增量,封装,批次,大陆交期,香港交期,简短描述,物料编码,"*显示类型(猎芯精选)
说明:寄售SKU上传后将出现在猎芯网搜索结果的猎芯精选板块",含税销售价(RMB),美金销售价(USD),阶梯数量1,国内含税价1(¥),香港交货价1($),阶梯数量2,国内含税价2(¥),香港交货价2($),阶梯数量3,国内含税价3(¥),香港交货价3($),阶梯数量4,国内含税价4(¥),香港交货价4($),阶梯数量5,国内含税价5(¥),香港交货价5($),阶梯数量6,国内含税价6(¥),香港交货价6($),阶梯数量7,国内含税价7(¥),香港交货价7($),阶梯数量8,国内含税价8(¥),香港交货价8($),阶梯数量9,国内含税价9(¥),香港交货价9($)
2024/12/25,TLE6431K,JAK,1000,100,1000,1000,1,,2301,2-5工作日,7-10工作日,,,猎芯精选,10,,1000,10,1.5,,,,,,,,,,,,,,,,,,,,,,,,
*SKUID,*上架有效期,安全库存,标准包装量(MPQ),*递增量,封装,批次,大陆交期,香港交期,简短描述,物料编码,*显示类型(国内现货,国际现货,猎芯期货),含税销售价(RMB),美金销售价(USD),阶梯数量1,国内含税价1(¥),香港交货价1($),阶梯数量2,国内含税价2(¥),香港交货价2($),阶梯数量3,国内含税价3(¥),香港交货价3($),阶梯数量4,国内含税价4(¥),香港交货价4($),阶梯数量5,国内含税价5(¥),香港交货价5($),阶梯数量6,国内含税价6(¥),香港交货价6($),阶梯数量7,国内含税价7(¥),香港交货价7($),阶梯数量8,国内含税价8(¥),香港交货价8($),阶梯数量9,国内含税价9(¥),香港交货价9($)
*SKUID,*上架有效期,安全库存,标准包装量(MPQ),*递增量,封装,批次,大陆交期,香港交期,简短描述,物料编码,*显示类型(国内现货,国际现货,猎芯期货),含税销售价(RMB),美金销售价(USD),阶梯数量1,国内含税价1(¥),香港交货价1($),阶梯数量2,国内含税价2(¥),香港交货价2($),阶梯数量3,国内含税价3(¥),香港交货价3($),阶梯数量4,国内含税价4(¥),香港交货价4($),阶梯数量5,国内含税价5(¥),香港交货价5($),阶梯数量6,国内含税价6(¥),香港交货价6($),阶梯数量7,国内含税价7(¥),香港交货价7($),阶梯数量8,国内含税价8(¥),香港交货价8($),阶梯数量9,国内含税价9(¥),香港交货价9($)
,2024/12/25,,1000,1,,2301,2-5工作日,7-10工作日,,,国内现货,10,,1000,10,1.5,,,,,,,,,,,,,,,,,,,,,,,,
*SKUID,*ٻ
*SKUID,*ٻ
<template>
<div id="app">
<keep-alive exclude="InquireDetail,ListDetail,orderTrackGoodsDetail,orderTrackPurAdd,enter,list,inquire,quote,orderTrackInvoice,subAccount,subAccountAdd,subAccountEdit">
<keep-alive :exclude="excludeComponents">
<router-view class="router-view"></router-view>
</keep-alive>
</div>
</template>
<script>
export default {
name: 'app'
name: 'app',
data() {
return {
excludeComponents: [
// 详情页面
'InquireDetail',
'ListDetail',
'consignmentImportDetail',
'consignmentApplicationDetail',
'consignmentRecallDetail',
'reconciledBillDetail',
// 订单相关
'orderTrackGoodsDetail',
'orderTrackPurAdd',
'orderTrackInvoice',
// 账户相关
'subAccount',
'subAccountAdd',
'subAccountEdit',
// 其他页面
'enter',
'list',
'inquire',
'quote'
]
}
}
}
</script>
\ No newline at end of file
......@@ -55,6 +55,18 @@
<ul class="icon_lists dib-box">
<li class="dib">
<span class="icon iconfont">&#xe649;</span>
<div class="name">账单管理</div>
<div class="code-name">&amp;#xe649;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe73c;</span>
<div class="name">寄售管理</div>
<div class="code-name">&amp;#xe73c;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe609;</span>
<div class="name">数据统计</div>
<div class="code-name">&amp;#xe609;</div>
......@@ -216,9 +228,9 @@
<pre><code class="language-css"
>@font-face {
font-family: 'iconfont';
src: url('iconfont.woff2?t=1677120594046') format('woff2'),
url('iconfont.woff?t=1677120594046') format('woff'),
url('iconfont.ttf?t=1677120594046') format('truetype');
src: url('iconfont.woff2?t=1735796431398') format('woff2'),
url('iconfont.woff?t=1735796431398') format('woff'),
url('iconfont.ttf?t=1735796431398') format('truetype');
}
</code></pre>
<h3 id="-iconfont-">第二步:定义使用 iconfont 的样式</h3>
......@@ -245,6 +257,24 @@
<ul class="icon_lists dib-box">
<li class="dib">
<span class="icon iconfont iconzhangdanguanli"></span>
<div class="name">
账单管理
</div>
<div class="code-name">.iconzhangdanguanli
</div>
</li>
<li class="dib">
<span class="icon iconfont iconjishouguanli"></span>
<div class="name">
寄售管理
</div>
<div class="code-name">.iconjishouguanli
</div>
</li>
<li class="dib">
<span class="icon iconfont iconshujutongji"></span>
<div class="name">
数据统计
......@@ -489,6 +519,22 @@
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#iconzhangdanguanli"></use>
</svg>
<div class="name">账单管理</div>
<div class="code-name">#iconzhangdanguanli</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#iconjishouguanli"></use>
</svg>
<div class="name">寄售管理</div>
<div class="code-name">#iconjishouguanli</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#iconshujutongji"></use>
</svg>
<div class="name">数据统计</div>
......
@font-face {
font-family: "iconfont"; /* Project id 2537242 */
src: url('iconfont.woff2?t=1677120594046') format('woff2'),
url('iconfont.woff?t=1677120594046') format('woff'),
url('iconfont.ttf?t=1677120594046') format('truetype');
src: url('iconfont.woff2?t=1735796431398') format('woff2'),
url('iconfont.woff?t=1735796431398') format('woff'),
url('iconfont.ttf?t=1735796431398') format('truetype');
}
.iconfont {
......@@ -13,6 +13,14 @@
-moz-osx-font-smoothing: grayscale;
}
.iconzhangdanguanli:before {
content: "\e649";
}
.iconjishouguanli:before {
content: "\e73c";
}
.iconshujutongji:before {
content: "\e609";
}
......
......@@ -6,6 +6,20 @@
"description": "猎芯云芯系统前端",
"glyphs": [
{
"icon_id": "25187246",
"name": "账单管理",
"font_class": "zhangdanguanli",
"unicode": "e649",
"unicode_decimal": 58953
},
{
"icon_id": "28357630",
"name": "寄售管理",
"font_class": "jishouguanli",
"unicode": "e73c",
"unicode_decimal": 59196
},
{
"icon_id": "15187540",
"name": "数据统计",
"font_class": "shujutongji",
......
......@@ -54,7 +54,7 @@ html, body, #app {
.section {
width: 100%;
height: calc(100% - 80px);
background: url("../../images/bg.png?v=20230607") no-repeat center;
background: url("../../images/bg.png") no-repeat top center;
background-size: cover;
.section-wrap {
......
html,body,#app{height:100%}.user-box{height:100%}.user-box .head-box{height:80px;background:#FFFFFF}.user-box .head-box .head-wrap{width:1190px;height:100%;margin:0 auto}.user-box .head-box .head-wrap .logo{width:81px;height:39px}.user-box .head-box .head-wrap .logo img{width:81px;height:39px}.user-box .head-box .head-wrap .line{width:1px;height:22px;color:#e0e0e0;background:#E0E0E0;margin:0 13px 0 15px}.user-box .head-box .head-wrap .text .t1{font-size:15px;color:#333333;line-height:19px;margin-bottom:4px;font-weight:bold}.user-box .head-box .head-wrap .text .t2{font-size:13px;color:#666666;letter-spacing:10px;font-weight:bold}.user-box .section{width:100%;height:calc(100% - 80px);background:url("../../images/bg.png") no-repeat center;background-size:cover}.user-box .section .section-wrap{position:relative;width:1190px;height:100%;margin:0 auto}.user-box .section .section-wrap .login-box{position:absolute;right:0;top:133px;width:400px;height:367px;background:#FFFFFF;border-radius:8px}.user-box .section .section-wrap .login-box .tit{font-size:20px;color:#333333;text-align:center;margin:25px 0}.user-box .section .section-wrap .login-box .bar{width:342px;margin:0 auto}.user-box .section .section-wrap .login-box .bar .input-box{position:relative;width:328px;height:43px;background:#FFFFFF;border-radius:2px;border:1px solid #BEC9DF;margin-bottom:20px;transition:all .2s ease;padding-left:12px}.user-box .section .section-wrap .login-box .bar .input-box i.iconfont{padding:12px 0;font-size:20px;color:#a1acc1}.user-box .section .section-wrap .login-box .bar .input-box .inp{padding-left:9px;height:34px;font-size:14px;background:transparent;border-left:1px solid #BEC9DF;margin-left:12px;letter-spacing:1px}.user-box .section .section-wrap .login-box .bar .input-box .inp::-webkit-input-placeholder{color:#A1ACC1}.user-box .section .section-wrap .login-box .bar .input-box .eye{position:absolute;right:19px;top:13px;font-size:20px;color:#a1acc1}.user-box .section .section-wrap .login-box .bar .input-box:focus-within{border:1px solid #1969F9}.user-box .section .section-wrap .login-box .bar .input-box.error{border:1px solid #FF1D00}.user-box .section .section-wrap .login-box .bar .code-box .l input{width:210px;height:43px;line-height:43px;border-radius:2px;border:1px solid #BEC9DF;text-indent:17px;font-size:14px}.user-box .section .section-wrap .login-box .bar .code-box .l input::-webkit-input-placeholder{color:#A1ACC1}.user-box .section .section-wrap .login-box .bar .code-box .l input:focus{border:1px solid #1969F9}.user-box .section .section-wrap .login-box .bar .code-box.error .l input{border:1px solid #FF1D00}.user-box .section .section-wrap .login-box .bar .code-box .r{width:118px;height:43px;border-radius:2px;border:1px solid #BEC9DF}.user-box .section .section-wrap .login-box .bar .code-box .r img{width:100%;height:100%}.user-box .section .section-wrap .login-box .bar .text{position:relative;padding:11px 0;text-align:right}.user-box .section .section-wrap .login-box .bar .text .error{position:absolute;left:0;top:12px;font-size:12px;color:#f10909}.user-box .section .section-wrap .login-box .bar .text a{line-height:17px;font-size:12px;color:#999999}.user-box .section .section-wrap .login-box .bar .btn-submit{width:342px;height:42px;line-height:42px;text-align:center;background:#A1ACC1;border-radius:2px;font-size:20px;color:#ffffff;display:block;letter-spacing:10px;margin:0 auto;transition:all .2s ease}.user-box .section .section-wrap .login-box .bar .btn-submit.active{background:#1969F9}.user-box .section .section-wrap .login-box .bar .btn-submit:hover{background:#0050E0}
\ No newline at end of file
html,
body,
#app {
height: 100%;
}
.user-box {
height: 100%;
}
.user-box .head-box {
height: 80px;
background: #FFFFFF;
}
.user-box .head-box .head-wrap {
width: 1190px;
height: 100%;
margin: 0 auto;
}
.user-box .head-box .head-wrap .logo {
width: 81px;
height: 39px;
}
.user-box .head-box .head-wrap .logo img {
width: 81px;
height: 39px;
}
.user-box .head-box .head-wrap .line {
width: 1px;
height: 22px;
color: #e0e0e0;
background: #E0E0E0;
margin: 0 13px 0 15px;
}
.user-box .head-box .head-wrap .text .t1 {
font-size: 15px;
color: #333333;
line-height: 19px;
margin-bottom: 4px;
font-weight: bold;
}
.user-box .head-box .head-wrap .text .t2 {
font-size: 13px;
color: #666666;
letter-spacing: 10px;
font-weight: bold;
}
.user-box .section {
width: 100%;
height: calc(100% - 80px);
background: url("../../images/bg.png") no-repeat top center;
background-size: cover;
}
.user-box .section .section-wrap {
position: relative;
width: 1190px;
height: 100%;
margin: 0 auto;
}
.user-box .section .section-wrap .login-box {
position: absolute;
right: 0;
top: 133px;
width: 400px;
height: 367px;
background: #FFFFFF;
border-radius: 8px;
}
.user-box .section .section-wrap .login-box .tit {
font-size: 20px;
color: #333333;
text-align: center;
margin: 25px 0;
}
.user-box .section .section-wrap .login-box .bar {
width: 342px;
margin: 0 auto;
}
.user-box .section .section-wrap .login-box .bar .input-box {
position: relative;
width: 328px;
height: 43px;
background: #FFFFFF;
border-radius: 2px;
border: 1px solid #BEC9DF;
margin-bottom: 20px;
transition: all 0.2s ease;
padding-left: 12px;
}
.user-box .section .section-wrap .login-box .bar .input-box i.iconfont {
padding: 12px 0;
font-size: 20px;
color: #a1acc1;
}
.user-box .section .section-wrap .login-box .bar .input-box .inp {
padding-left: 9px;
height: 34px;
font-size: 14px;
background: transparent;
border-left: 1px solid #BEC9DF;
margin-left: 12px;
letter-spacing: 1px;
}
.user-box .section .section-wrap .login-box .bar .input-box .inp::-webkit-input-placeholder {
color: #A1ACC1;
}
.user-box .section .section-wrap .login-box .bar .input-box .eye {
position: absolute;
right: 19px;
top: 13px;
font-size: 20px;
color: #a1acc1;
}
.user-box .section .section-wrap .login-box .bar .input-box:focus-within {
border: 1px solid #1969F9;
}
.user-box .section .section-wrap .login-box .bar .input-box.error {
border: 1px solid #FF1D00;
}
.user-box .section .section-wrap .login-box .bar .code-box .l input {
width: 210px;
height: 43px;
line-height: 43px;
border-radius: 2px;
border: 1px solid #BEC9DF;
text-indent: 17px;
font-size: 14px;
}
.user-box .section .section-wrap .login-box .bar .code-box .l input::-webkit-input-placeholder {
color: #A1ACC1;
}
.user-box .section .section-wrap .login-box .bar .code-box .l input:focus {
border: 1px solid #1969F9;
}
.user-box .section .section-wrap .login-box .bar .code-box.error .l input {
border: 1px solid #FF1D00;
}
.user-box .section .section-wrap .login-box .bar .code-box .r {
width: 118px;
height: 43px;
border-radius: 2px;
border: 1px solid #BEC9DF;
}
.user-box .section .section-wrap .login-box .bar .code-box .r img {
width: 100%;
height: 100%;
}
.user-box .section .section-wrap .login-box .bar .text {
position: relative;
padding: 11px 0;
text-align: right;
}
.user-box .section .section-wrap .login-box .bar .text .error {
position: absolute;
left: 0;
top: 12px;
font-size: 12px;
color: #f10909;
}
.user-box .section .section-wrap .login-box .bar .text a {
line-height: 17px;
font-size: 12px;
color: #999999;
}
.user-box .section .section-wrap .login-box .bar .btn-submit {
width: 342px;
height: 42px;
line-height: 42px;
text-align: center;
background: #A1ACC1;
border-radius: 2px;
font-size: 20px;
color: #ffffff;
display: block;
letter-spacing: 10px;
margin: 0 auto;
transition: all 0.2s ease;
}
.user-box .section .section-wrap .login-box .bar .btn-submit.active {
background: #1969F9;
}
.user-box .section .section-wrap .login-box .bar .btn-submit:hover {
background: #0050E0;
}
/*# sourceMappingURL=index.min.css.map */
\ No newline at end of file
{"version":3,"sources":["index.less"],"names":[],"mappings":"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","file":"index.min.css"}
\ No newline at end of file
{"version":3,"sources":["index.less"],"names":[],"mappings":"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","file":"index.min.css"}
\ No newline at end of file
......@@ -9,7 +9,7 @@ html * {
}
html,
body {
font-family: PingFangSC-Regular, PingFang SC, 'Microsoft Yahei', sans-serif;
font-family: PingFangSC-Regular, PingFang SC, "Microsoft Yahei", sans-serif;
font-style: normal;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
......@@ -412,7 +412,7 @@ body {
text-align: center;
background: #FFFFFF;
border-radius: 50%;
content: '';
content: "";
display: block;
position: absolute;
top: -2px;
......@@ -473,6 +473,13 @@ body {
.prefix-icon-time-style {
display: none;
}
.section-page {
background: #FFFFFF;
border-radius: 4px;
padding: 20px;
height: calc(100vh - 96px);
box-sizing: border-box;
}
::-webkit-scrollbar {
width: 6px;
height: 6px;
......
{"version":3,"sources":["common.less"],"names":[],"mappings":"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","file":"common.min.css"}
\ No newline at end of file
{"version":3,"sources":["common.less"],"names":[],"mappings":"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","file":"common.min.css"}
\ No newline at end of file
......@@ -44,9 +44,26 @@ export default {
*
* @param arr
*/
isPurchasesValid : function (arr) {
isPurchasesValid: function (arr) {
return arr.every((item, index, array) =>
index === 0 ? true : item.purchases > array[index - 1].purchases
index === 0 ? true : item.purchases > array[index - 1].purchases
);
},
/**
* 新窗口打开
* @param url
*/
openNewWindow: function (url) {
var a = document.createElement("a");
if (a.click) { // 判断是否支持click方法
a.href = url;
a.target = '_blank';
a.style.display = 'none'; // 隐藏不必要的元素
document.body.appendChild(a);
a.click(); // 触发链接点击事件
document.body.removeChild(a);
} else { // click方法不可用时使用window.location.href跳转
window.location.href = url;
}
}
}
......@@ -484,7 +484,7 @@ export default {
* @param row
*/
handleClick(row) {
this.getLogs(507, '1168906660256142490');
this.getLogs(507, row.goods_id);
},
/**
* 查看日志详情
......@@ -792,6 +792,16 @@ export default {
});
return;
}
// 修改价格时检查是否只选择了一条数据
if (command == 4 && this.multipleSelection.length > 1) {
this.$message({
message: '只能选择一条数据',
type: 'warning'
});
return;
}
this.selectData = JSON.parse(JSON.stringify(this.multipleSelection));
if (command == 1) {
//修改库存弹窗
......
<template>
<div class="pagex">
<div class="section-page">
<!--搜索区-->
<el-form :inline="true" :model="formParam" ref="formParam" label-width="80px">
<el-form-item label="型号" prop="goods_name">
<el-autocomplete v-model="formParam.goods_name" :trigger-on-focus="false" @keyup.enter.native="onSubmit" :fetch-suggestions="querySearchAsync" placeholder="请输入型号" clearable></el-autocomplete>
</el-form-item>
<el-form-item label="类型" prop="type">
<el-select v-model="formParam.type" placeholder="全部" clearable>
<el-option label="全部" value=""></el-option>
<el-option label="寄售采购入库" value="1"></el-option>
<el-option label="寄售退货出库" value="2"></el-option>
</el-select>
</el-form-item>
<el-form-item label="状态" prop="status">
<el-select v-model="formParam.status" placeholder="全部" clearable>
<el-option label="全部" value="1"></el-option>
<el-option label="待付款申请" value="2"></el-option>
<el-option label="应付单进行中" value="3"></el-option>
<el-option label="完成" value="4"></el-option>
<el-option label="关闭" value="5"></el-option>
</el-select>
</el-form-item>
<el-form-item label="创建时间" prop="create_time">
<el-date-picker v-model="formParam.create_time" align="right" type="date" placeholder="请选择创建时间" value-format="yyyy-MM-dd"></el-date-picker>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="onSubmit">搜索</el-button>
<el-button @click="resetForm('formParam')">重置</el-button>
</el-form-item>
</el-form>
<!--列表区-->
<div class="data-box">
<el-table :data="list" border max-height="600" @selection-change="handleSelectionChange">
<el-table-column type="index" label="序号" width="50" align="center" fixed></el-table-column>
<el-table-column prop="order_no" label="应付单号" width="160" :show-overflow-tooltip="true" align="center"></el-table-column>
<el-table-column prop="goods_name" label="型号" min-width="140" :show-overflow-tooltip="true" align="center"></el-table-column>
<el-table-column prop="brand_name" label="品牌" min-width="140" :show-overflow-tooltip="true" align="center"></el-table-column>
<el-table-column prop="price_single" label="采购单价(含税)" width="150" :show-overflow-tooltip="true" align="center"></el-table-column>
<el-table-column prop="quantity" label="数量" width="80" :show-overflow-tooltip="true" align="center"></el-table-column>
<el-table-column prop="currency_val" label="币种" width="80" :show-overflow-tooltip="true" align="center"></el-table-column>
<el-table-column prop="payable_amount" label="应付金额" width="90" :show-overflow-tooltip="true" align="center"></el-table-column>
<el-table-column prop="unpaid_amount" label="未付金额" width="90" :show-overflow-tooltip="true" align="center"></el-table-column>
<el-table-column prop="paid_amount" label="已付金额" width="90" :show-overflow-tooltip="true" align="center"></el-table-column>
<el-table-column prop="paying_amount" label="付款中金额" width="100" :show-overflow-tooltip="true" align="center"></el-table-column>
<el-table-column prop="type" label="类型" width="80" :show-overflow-tooltip="true" align="center"></el-table-column>
<el-table-column prop="status" label="状态" width="80" :show-overflow-tooltip="true" align="center"></el-table-column>
<el-table-column prop="contact_name" label="对接人" width="100" :show-overflow-tooltip="true" align="center"></el-table-column>
<el-table-column prop="create_time" label="应付单创建时间" width="160" :show-overflow-tooltip="true" align="center"></el-table-column>
</el-table>
<el-pagination layout="total, sizes, prev, pager, next, jumper" :page-sizes="[10, 20, 50, 100, 200]" :total="total" @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="page"></el-pagination>
</div>
</div>
<Menu></Menu>
</div>
</template>
<script>
import Vue from 'vue';
import Menu from "@/components/menu.vue";
import {Autocomplete, Button, DatePicker, Descriptions, DescriptionsItem, Dialog, Divider, Dropdown, DropdownItem, DropdownMenu, Form, FormItem, Input, Link, Message, MessageBox, Option, Pagination, Popover, Select, Table, TableColumn, Tag, Tooltip} from 'element-ui'
Vue.prototype.$message = Message
Vue.prototype.$confirm = MessageBox.confirm;
Vue.use(Button).use(Link).use(Form).use(Select).use(Option).use(Input).use(FormItem).use(Dialog).use(Tooltip).use(Autocomplete).use(Popover).use(Tag).use(Divider);
Vue.use(DatePicker).use(Dropdown).use(DropdownMenu).use(DropdownItem).use(TableColumn).use(Table).use(Pagination).use(Descriptions).use(DescriptionsItem);
export default {
name: "allPayableBills",
data() {
return {
multipleSelection: [],
total: 0,
page: 1,
limit: 10,
list: [],
formParam: {
goods_name: '',
type: '',
status: '',
create_time: []
}
};
},
created() {
this.getData()
},
methods: {
getData() {
var params = Object.assign({}, this.formParam, {page: this.page, limit: this.limit});
this.$http('GET', "/api/bill/getUnPayBillList", params).then(res => {
if (res.code === 0) {
this.list = res.data.list || [];
this.total = Number(res.data.total) || 0;
} else {
this.$message({
message: res.msg,
type: 'error'
});
}
})
},
/**
* 型号监听
* @param queryString
* @param cb
*/
querySearchAsync(queryString, cb) {
if (!queryString) {
cb([]);
return;
}
this.$http('GET', "/api/search/getspu", {spu_name: queryString}).then(res => {
if (res.code == 0 && res.data.list?.length) {
const arr = res.data.list.map(item => ({
value: item.spu_name
}));
cb(arr);
} else {
cb([]);
}
}).catch(() => {
cb([]);
});
},
/**
* 搜索
*/
onSubmit() {
this.page = 1;
this.getData();
},
/**
* 重置表单
* @param formName
*/
resetForm(formName) {
this.formParam.date = '';
this.$refs[formName].resetFields();
},
/**
* 列表分页条数筛选监听
* @param val
*/
handleSizeChange(val) {
this.limit = val;
this.getData();
},
/**
* 列表分页输入页码监听
* @param val
*/
handleCurrentChange(val) {
this.page = val;
this.getData();
},
/**
* chebox 选择监听
* @param val
*/
handleSelectionChange(val) {
this.multipleSelection = val;
}
},
components: {
Menu
}
};
</script>
<style scoped>
</style>
\ No newline at end of file
<template>
<div class="pagex">
<div class="section-page">
<!--搜索区-->
<el-form :inline="true" :model="formParam" ref="formParam" label-width="80px">
<el-form-item label="账单号" prop="bill_sn">
<el-input v-model="formParam.bill_sn" placeholder="请输入账单号" @keyup.enter.native="submit" clearable></el-input>
</el-form-item>
<el-form-item label="创建时间" prop="create_time">
<el-date-picker v-model="formParam.create_time" align="right" type="date" placeholder="请选择创建时间" value-format="yyyy-MM-dd"></el-date-picker>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="onSubmit">搜索</el-button>
<el-button @click="resetForm('formParam')">重置</el-button>
</el-form-item>
</el-form>
<!--操作区-->
<div class="operation-area row verCenter bothSide">
<div class="operation-button row verCenter">
<el-dropdown @command="handleCommand">
<el-button type="primary">导出账单</el-button>
<el-dropdown-menu>
<el-dropdown-item command="1">导出PDF</el-dropdown-item>
<el-dropdown-item command="2">导出EXCEL</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
</div>
</div>
<!--列表区-->
<div class="data-box">
<el-table :data="list" border max-height="600" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="40" align="center" fixed></el-table-column>
<el-table-column type="index" label="序号" width="50" align="center" fixed></el-table-column>
<el-table-column prop="bill_sn" label="账单号" width="120" :show-overflow-tooltip="true" align="center">
<template slot-scope="scope">
<el-link type="primary" :underline="false" @click="$router.push({path: '/reconciledBillDetail', query: {bill_id: scope.row.bill_id,bill_sn:scope.row.bill_sn}})" style="font-size: 12px;">{{ scope.row.bill_sn }}</el-link>
</template>
</el-table-column>
<el-table-column prop="bill_name" label="账单名称" min-width="170" :show-overflow-tooltip="true" align="center"></el-table-column>
<el-table-column prop="total_amount" label="应付总金额" width="120" :show-overflow-tooltip="true" align="center"></el-table-column>
<el-table-column prop="unpaid_amount" label="未付总金额" width="120" :show-overflow-tooltip="true" align="center"></el-table-column>
<el-table-column prop="paid_amount" label="已付总金额" width="120" :show-overflow-tooltip="true" align="center"></el-table-column>
<el-table-column prop="paying_amount" label="付款中总金额" width="160" :show-overflow-tooltip="true" align="center"></el-table-column>
<el-table-column prop="contact_name" label="对接人" width="160" :show-overflow-tooltip="true" align="center"></el-table-column>
<el-table-column prop="create_name" label="创建人" width="160" :show-overflow-tooltip="true" align="center"></el-table-column>
<el-table-column prop="create_time" label="创建时间" width="160" :show-overflow-tooltip="true" align="center"></el-table-column>
<el-table-column prop="create_type" label="创建方式" width="80" :show-overflow-tooltip="true" align="center"></el-table-column>
</el-table>
<el-pagination layout="total, sizes, prev, pager, next, jumper" :page-sizes="[10, 20, 50, 100, 200]" :total="total" @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="page"></el-pagination>
</div>
</div>
<Menu></Menu>
</div>
</template>
<script>
import Vue from 'vue';
import Menu from "@/components/menu.vue";
import {Autocomplete, Button, DatePicker, Descriptions, DescriptionsItem, Dialog, Divider, Dropdown, DropdownItem, DropdownMenu, Form, FormItem, Input, Link, Message, MessageBox, Option, Pagination, Popover, Select, Table, TableColumn, Tag, Tooltip} from 'element-ui'
import {NODE_ENVS} from "@/ajax";
import Tool from "@/tool";
Vue.prototype.$message = Message
Vue.prototype.$confirm = MessageBox.confirm;
Vue.use(Button).use(Link).use(Form).use(Select).use(Option).use(Input).use(FormItem).use(Dialog).use(Tooltip).use(Autocomplete).use(Popover).use(Tag).use(Divider);
Vue.use(DatePicker).use(Dropdown).use(DropdownMenu).use(DropdownItem).use(TableColumn).use(Table).use(Pagination).use(Descriptions).use(DescriptionsItem);
export default {
name: "reconciledBill",
data() {
return {
multipleSelection: [],
total: 0,
page: 1,
limit: 10,
list: [],
formParam: {
bill_sn: '',
goods_name: '',
create_time: ''
}
};
},
created() {
this.getData()
},
methods: {
getData() {
var params = Object.assign({}, this.formParam, {page: this.page, limit: this.limit});
this.$http('GET', "/api/bill/getVerifiedBillList", params).then(res => {
if (res.code === 0) {
this.list = res.data.list || [];
this.total = Number(res.data.total) || 0;
} else {
this.$message({
message: res.msg,
type: 'error'
});
}
})
},
/**
* 型号监听
* @param queryString
* @param cb
*/
querySearchAsync(queryString, cb) {
if (!queryString) {
cb([]);
return;
}
this.$http('GET', "/api/search/getspu", {spu_name: queryString}).then(res => {
if (res.code == 0 && res.data.list?.length) {
const arr = res.data.list.map(item => ({
value: item.spu_name
}));
cb(arr);
} else {
cb([]);
}
}).catch(() => {
cb([]);
});
},
/**
* 操作按钮监听
*/
handleCommand(command) {
let bill_id = this.multipleSelection.map(item => item.bill_id).join(',');
if (!bill_id) {
this.$message({
message: '请选择账单',
type: 'warning'
});
return;
}
let url = NODE_ENVS + '/api/bill/exportVerifiedBill?bill_id=' + bill_id + '&token=' + Tool.getCookie('token') + '&type=' + command;
Tool.openNewWindow(url);
},
/**
* 搜索
*/
onSubmit() {
this.page = 1;
this.getData();
},
/**
* 重置表单
* @param formName
*/
resetForm(formName) {
this.formParam.date = '';
this.$refs[formName].resetFields();
},
/**
* 列表分页条数筛选监听
* @param val
*/
handleSizeChange(val) {
this.limit = val;
this.getData();
},
/**
* 列表分页输入页码监听
* @param val
*/
handleCurrentChange(val) {
this.page = val;
this.getData();
},
/**
* chebox 选择监听
* @param val
*/
handleSelectionChange(val) {
this.multipleSelection = val;
},
/**
* 已对账账单-导出(待采购系统确认)
*/
exportVerifiedBill() {
let bill_id = this.multipleSelection.map(item => item.bill_id).join(',');
let url = NODE_ENVS + '/api/bill/exportVerifiedBill?type=2&bill_id=' + bill_id + '&token=' + Tool.getCookie('token');
Tool.openNewWindow(url);
}
},
components: {
Menu
}
};
</script>
<style scoped>
</style>
\ No newline at end of file
<template>
<div class="pagex">
<div class="section-page">
<!-- 详情信息区 -->
<el-descriptions :column="3" border style="margin-bottom: 15px;">
<el-descriptions-item label="账单号">{{ detailData.bill_sn }}</el-descriptions-item>
<el-descriptions-item label="账单名称">{{ detailData.bill_name }}</el-descriptions-item>
<el-descriptions-item label="供应商名称">{{ detailData.supplier_name }}</el-descriptions-item>
<el-descriptions-item label="采购组织">{{ detailData.purchase_org }}</el-descriptions-item>
<el-descriptions-item label="币种">{{ detailData.currency_val }}</el-descriptions-item>
<el-descriptions-item label="应付总金额">{{ detailData.total_amount }}</el-descriptions-item>
<el-descriptions-item label="未付总金额">{{ detailData.unpaid_amount }}</el-descriptions-item>
<el-descriptions-item label="已付总金额">{{ detailData.paid_amount }}</el-descriptions-item>
<el-descriptions-item label="付款中总金额">{{ detailData.paying_amount }}</el-descriptions-item>
<el-descriptions-item label="创建日期">{{ detailData.create_time }}</el-descriptions-item>
<el-descriptions-item label="备注" :span="2">{{ detailData.remark }}</el-descriptions-item>
</el-descriptions>
<!--列表区-->
<div class="data-box">
<el-table :data="list" border max-height="600" @selection-change="handleSelectionChange">
<el-table-column type="index" label="序号" width="50" align="center" fixed></el-table-column>
<el-table-column prop="order_no" label="应付单号" width="180" :show-overflow-tooltip="true" align="center"></el-table-column>
<el-table-column prop="goods_name" label="型号" width="200" :show-overflow-tooltip="true" align="center"></el-table-column>
<el-table-column prop="brand_name" label="品牌" :show-overflow-tooltip="true" align="center"></el-table-column>
<el-table-column prop="price_single" label="采购单价(含税)" width="160" :show-overflow-tooltip="true" align="center"></el-table-column>
<el-table-column prop="quantity" label="数量" width="100" :show-overflow-tooltip="true" align="center"></el-table-column>
<el-table-column prop="currency_val" label="币种" width="80" :show-overflow-tooltip="true" align="center"></el-table-column>
<el-table-column prop="pay_amount" label="应付金额" width="100" :show-overflow-tooltip="true" align="center"></el-table-column>
<el-table-column prop="unpaid_amount" label="未付金额" width="100" :show-overflow-tooltip="true" align="center"></el-table-column>
<el-table-column prop="paid_amount" label="已付金额" width="100" :show-overflow-tooltip="true" align="center"></el-table-column>
<el-table-column prop="paying_amount" label="付款中金额" width="100" :show-overflow-tooltip="true" align="center"></el-table-column>
<el-table-column prop="type" label="类型" width="80" :show-overflow-tooltip="true" align="center"></el-table-column>
<el-table-column prop="status" label="状态" width="80" :show-overflow-tooltip="true" align="center"></el-table-column>
<el-table-column prop="create_time" label="应付单创建时间" width="160" :show-overflow-tooltip="true" align="center"></el-table-column>
</el-table>
<el-pagination layout="total, sizes, prev, pager, next, jumper" :page-sizes="[10, 20, 50, 100, 200]" :total="total" @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="page"></el-pagination>
</div>
</div>
<Menu></Menu>
</div>
</template>
<script>
import Vue from 'vue';
import Menu from "@/components/menu.vue";
import {Autocomplete, Button, Col, DatePicker, Descriptions, DescriptionsItem, Dialog, Divider, Dropdown, DropdownItem, DropdownMenu, Form, FormItem, Input, Link, Message, MessageBox, Option, Pagination, Popover, Row, Select, Table, TableColumn, Tag, Tooltip} from 'element-ui'
Vue.prototype.$message = Message
Vue.prototype.$confirm = MessageBox.confirm;
Vue.use(Button).use(Link).use(Form).use(Select).use(Option).use(Input).use(FormItem).use(Dialog).use(Tooltip).use(Autocomplete).use(Popover).use(Tag).use(Divider).use(Row).use(Col);
Vue.use(DatePicker).use(Dropdown).use(DropdownMenu).use(DropdownItem).use(TableColumn).use(Table).use(Pagination).use(Descriptions).use(DescriptionsItem);
export default {
name: "reconciledBillDetail",
data() {
return {
multipleSelection: [],
recall_id: '',
detailData: {},
total: 0,
page: 1,
limit: 10,
list: [],
bill_id: '',
bill_sn: ''
};
},
created() {
this.bill_id = this.$route.query.bill_id;
this.bill_sn = this.$route.query.bill_sn;
this.getData()
},
methods: {
getData() {
this.$http('GET', "/api/bill/getVerifiedBillDetail", {bill_id: this.bill_id, bill_sn: this.bill_sn, page: this.page, limit: this.limit}).then(res => {
if (res.code === 0) {
this.detailData = res.data.bill_info;
this.list = res.data.list;
this.total = res.data.total || 0;
} else {
this.$message.error(res.msg);
}
})
},
/**
* 型号监听
* @param queryString
* @param cb
*/
querySearchAsync(queryString, cb) {
if (!queryString) {
cb([]);
return;
}
this.$http('GET', "/api/search/getspu", {spu_name: queryString}).then(res => {
if (res.code == 0 && res.data.list?.length) {
const arr = res.data.list.map(item => ({
value: item.spu_name
}));
cb(arr);
} else {
cb([]);
}
}).catch(() => {
cb([]);
});
},
/**
* 搜索
*/
onSubmit() {
this.page = 1;
this.getData();
},
/**
* 重置表单
* @param formName
*/
resetForm(formName) {
this.formParam.date = '';
this.$refs[formName].resetFields();
},
/**
* 列表分页条数筛选监听
* @param val
*/
handleSizeChange(val) {
this.limit = val;
this.getData();
},
/**
* 列表分页输入页码监听
* @param val
*/
handleCurrentChange(val) {
this.page = val;
this.getData();
},
/**
* chebox 选择监听
* @param val
*/
handleSelectionChange(val) {
this.multipleSelection = val;
}
},
components: {
Menu
}
};
</script>
<style scoped>
</style>
\ No newline at end of file
<template>
<div class="pagex">
<div class="section-page">
<!--操作区-->
<div class="operation-area row verCenter bothSide">
<div class="operation-button row verCenter">
<el-upload action="/api/consignmentRecall/batchRecallUpload" :on-success="handleUploadSuccess" :on-error="handleUploadError" accept=".csv" :show-file-list="false">
<el-button size="small" type="primary">上传文件</el-button>
</el-upload>
<a href="/批量召回.csv" download style="text-decoration: none;margin-left: 10px;">
<el-button type="primary">下载模板</el-button>
</a>
</div>
<div class="text-tip row verCenter">
<i class="el-icon-warning"></i>
<span>上传需召回的商品后,点击【提交】可将状态为"成功"的全部数据生成寄售召回单</span>
</div>
</div>
<!--列表区-->
<div class="data-box">
<el-table :data="list" border max-height="600">
<el-table-column type="index" label="序号" width="50" align="center" fixed></el-table-column>
<el-table-column prop="sku_id" label="SKUID" :show-overflow-tooltip="true" align="center"></el-table-column>
<el-table-column prop="goods_name" label="型号" width="200" :show-overflow-tooltip="true" align="center"></el-table-column>
<el-table-column prop="brand_name" label="品牌" width="200" :show-overflow-tooltip="true" align="center"></el-table-column>
<el-table-column prop="useable_num" label="可用库存数量" width="200" :show-overflow-tooltip="true" align="center"></el-table-column>
<el-table-column prop="recall_num" label="申请召回数量" width="200" :show-overflow-tooltip="true" align="center"></el-table-column>
<el-table-column prop="status" label="状态" width="160" :show-overflow-tooltip="true" align="center">
<template slot-scope="scope">
<span :style="{ color: scope.row.status === 0 ? '#F56C6C' : '' }">{{ scope.row.status_val }}</span>
</template>
</el-table-column>
<el-table-column prop="remark" label="说明" width="250" :show-overflow-tooltip="true" align="center"></el-table-column>
</el-table>
</div>
<div v-if="is_flag" style="margin-top: 20px;">
<el-button size="small" type="primary" @click="batchRecallSubmit">提交</el-button>
<el-button size="small" type="primary" @click="batchRecallExportFailed">导出失败数据</el-button>
<el-button size="small" @click="$router.push({path: '/consignmentRecall'})">取 消</el-button>
</div>
</div>
<Menu ref="menu"></Menu>
</div>
</template>
<script>
import Vue from 'vue';
import Menu from "@/components/menu.vue";
import {Autocomplete, Button, DatePicker, Descriptions, DescriptionsItem, Dialog, Divider, Dropdown, DropdownItem, DropdownMenu, Form, FormItem, Input, Link, Message, MessageBox, Option, Pagination, Popover, Select, Table, TableColumn, Tag, Tooltip, Upload} from 'element-ui'
Vue.prototype.$message = Message
Vue.prototype.$confirm = MessageBox.confirm;
Vue.use(Button).use(Link).use(Form).use(Upload).use(Select).use(Option).use(Input).use(FormItem).use(Dialog).use(Tooltip).use(Autocomplete).use(Popover).use(Tag).use(Divider);
Vue.use(DatePicker).use(Dropdown).use(DropdownMenu).use(DropdownItem).use(TableColumn).use(Table).use(Pagination).use(Descriptions).use(DescriptionsItem);
export default {
name: "batchRecall",
data() {
return {
total: 0,
page: 1,
limit: 10,
list: [],
recall_upload_sn: '',//上传编号
is_flag: false
};
},
created() {
},
methods: {
/**
* 上传成功
* @param res
* @param file
* @param fileList
*/
handleUploadSuccess(res, file, fileList) {
if (res.code === 0) {
this.$message.success('上传成功');
if (res.data.list.length > 0) {
this.is_flag = true;
this.list = res.data.list || [];
this.total = Number(res.data.total) || 0;
}
} else {
this.$message.error(res.msg || '上传失败');
}
},
/**
* 上传失败
* @param err
* @param file
* @param fileList
*/
handleUploadError(err, file, fileList) {
this.$message.error('上传失败,请重试');
},
/**
* 批量召回-提交
*/
batchRecallSubmit() {
this.recall_upload_sn = this.list.filter(item => item.status === 1).map(item => item.recall_upload_sn);
this.$http('POST', "/api/consignmentRecall/batchRecallSubmit", {recall_upload_sn: this.recall_upload_sn}).then(res => {
if (res.code === 0) {
this.$message({
message: '操作成功',
type: 'success',
onClose: () => {
this.$refs.menu.closetab(this.$route.path);
setTimeout(() => {
if (this.$route.path !== '/consignmentRecall') {
this.$router.push({path: '/consignmentRecall'}).catch(err => {
if (err.name !== 'NavigationDuplicated') {
throw err;
}
});
}
}, 0);
}
});
} else {
this.$message.error(res.msg || '操作失败');
}
})
},
/**
* 批量召回-导出失败数据
*/
batchRecallExportFailed() {
this.recall_upload_sn = this.list.filter(item => item.status === 0).map(item => item.recall_upload_sn);
this.$http('POST', "/api/consignmentRecall/batchRecallExportFailed", {recall_upload_sn: this.recall_upload_sn}).then(res => {
if (res.code === 0) {
this.$message({
message: '操作成功',
type: 'success',
onClose: () => {
}
});
} else {
this.$message.error(res.msg || '操作失败');
}
})
}
},
components: {
Menu
}
};
</script>
<style scoped>
</style>
\ No newline at end of file
<template>
<div class="pagex">
<div class="section-page">
<!-- 详情信息区 -->
<el-descriptions :column="4" border style="margin-bottom: 15px; width: 1200px;">
<el-descriptions-item label="寄售申请单号">
<span style="font-weight: bold">{{ detailData.consignment_sn }}{{ detailData.consignment_status_val }}</span>
</el-descriptions-item>
<el-descriptions-item label="订单人员:">{{ detailData.order_uname || '-' }}</el-descriptions-item>
<el-descriptions-item label="发货状态:">{{ detailData.deliver_status_val }}</el-descriptions-item>
<el-descriptions-item label="入库状态:">{{ detailData.stock_in_status_val }}</el-descriptions-item>
</el-descriptions>
<!--操作区-->
<div class="operation-area row verCenter bothSide" style="margin-top: 20px;">
<div class="operation-button row verCenter">
<el-button type="danger" @click="deleteConsignmentItems">删除</el-button>
</div>
</div>
<!--列表区-->
<div class="data-box">
<el-table :data="list" border max-height="600" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="40" align="center" fixed></el-table-column>
<el-table-column prop="consignment_item_id" label="明细ID" width="80" :show-overflow-tooltip="true" align="center"></el-table-column>
<el-table-column prop="sku_id" label="SKUID" min-width="90" :show-overflow-tooltip="true" align="center"></el-table-column>
<el-table-column prop="goods_name" label="型号" min-width="90" :show-overflow-tooltip="true" align="center"></el-table-column>
<el-table-column prop="brand_name" label="品牌" width="160" :show-overflow-tooltip="true" align="center"></el-table-column>
<el-table-column prop="apply_num" label="申请寄售数量" width="160" :show-overflow-tooltip="true" align="center">
<template slot-scope="scope">
<template v-if="detailData.consignment_status === 0">
<el-input v-model.number="scope.row.apply_num" size="mini" @blur="updateConsignmentItems(scope.row.consignment_item_id, scope.row.apply_num)"></el-input>
</template>
<template v-else>
{{ scope.row.apply_num }}
</template>
</template>
</el-table-column>
<el-table-column prop="deliver_num" label="发货总数" width="100" :show-overflow-tooltip="true" align="center"></el-table-column>
<el-table-column prop="stock_in_num" label="入库总数" width="160" :show-overflow-tooltip="true" align="center"></el-table-column>
<el-table-column prop="not_stock_in_num" label="未入库总数" width="160" :show-overflow-tooltip="true" align="center"></el-table-column>
<el-table-column prop="date_code" label="批次" width="100" :show-overflow-tooltip="true" align="center"></el-table-column>
<el-table-column prop="consignment_item_status_val" label="状态" width="160" :show-overflow-tooltip="true" align="center"></el-table-column>
</el-table>
<el-pagination layout="total, sizes, prev, pager, next, jumper" :page-sizes="[10, 20, 50, 100, 200]" :total="total" @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="page"></el-pagination>
</div>
</div>
<Menu></Menu>
</div>
</template>
<script>
import Vue from 'vue';
import Menu from "@/components/menu.vue";
import {Autocomplete, Button, Col, DatePicker, Descriptions, DescriptionsItem, Dialog, Divider, Dropdown, DropdownItem, DropdownMenu, Form, FormItem, Input, Link, Message, MessageBox, Option, Pagination, Popover, Row, Select, Table, TableColumn, Tag, Tooltip} from 'element-ui'
Vue.prototype.$message = Message
Vue.prototype.$confirm = MessageBox.confirm;
Vue.use(Button).use(Link).use(Form).use(Select).use(Option).use(Input).use(FormItem).use(Dialog).use(Tooltip).use(Autocomplete).use(Popover).use(Tag).use(Divider).use(Row).use(Col);
Vue.use(DatePicker).use(Dropdown).use(DropdownMenu).use(DropdownItem).use(TableColumn).use(Table).use(Pagination).use(Descriptions).use(DescriptionsItem);
export default {
name: "consignmentApplicationDetail",
data() {
return {
multipleSelection: [],
consignment_id: '',
detailData: {},
total: 0,
page: 1,
limit: 10,
list: [],
};
},
created() {
this.consignment_id = this.$route.query.consignment_id;
this.getData()
},
methods: {
getData() {
this.$http('GET', "/api/consignment/getConsignmentDetail", {consignment_id: this.consignment_id, page: this.page, limit: this.limit}).then(res => {
if (res.code === 0) {
this.detailData = res.data;
this.list = res.data.items.list;
this.total = res.data.items.total || 0;
} else {
this.$message.error(res.msg);
}
})
},
/**
* 列表分页条数筛选监听
* @param val
*/
handleSizeChange(val) {
this.limit = val;
this.getData();
},
/**
* 列表分页输入页码监听
* @param val
*/
handleCurrentChange(val) {
this.page = val;
this.getData();
},
/**
* chebox 选择监听
* @param val
*/
handleSelectionChange(val) {
this.multipleSelection = val;
},
/**
* 删除寄售明细
*/
deleteConsignmentItems() {
if (this.multipleSelection.length === 0) {
this.$message.warning('请选择要删除的数据');
return;
}
// 提交审核:校验待提审状态
if (this.detailData.consignment_status != 0) {
this.$message.warning('只能选择待提审状态的数据');
return;
}
this.$confirm('确定删除已选择的商品明细?', '删除', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
let consignment_item_ids = this.multipleSelection.map(item => item.consignment_item_id).join(',');
this.$http('POST', "/api/consignment/deleteConsignmentItems", {consignment_item_ids: consignment_item_ids}).then(res => {
if (res.code === 0) {
this.$message({
message: '操作成功',
type: 'success',
onClose: () => {
this.getData();
}
});
} else {
this.$message.error(res.msg);
}
})
}).catch(() => {
console.log('已取消删除');
});
},
/**
* 更新明细寄售数量
*/
updateConsignmentItems(consignment_item_id, apply_num) {
if (!apply_num || apply_num <= 0) {
this.$message.warning('请输入有效的数量');
return;
}
this.$http('POST', "/api/consignment/updateConsignmentItems", {consignment_item_id: consignment_item_id, apply_num: apply_num}).then(res => {
if (res.code === 0) {
} else {
this.$message.error(res.msg);
}
})
}
},
components: {
Menu
}
};
</script>
<style scoped>
</style>
\ No newline at end of file
<template>
<div class="pagex">
<div class="section-page">
<!--搜索区-->
<el-form :inline="true" :model="formParam" ref="formParam" label-width="80px">
<el-form-item label="状态" prop="status">
<el-select v-model="formParam.status" placeholder="全部" clearable>
<el-option label="全部" value=""></el-option>
<el-option label="有效" value="1"></el-option>
<el-option label="失效" value="-1"></el-option>
</el-select>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="onSubmit">搜索</el-button>
<el-button @click="resetForm('formParam')">重置</el-button>
</el-form-item>
</el-form>
<!--列表区-->
<div class="data-box">
<el-table :data="list" border max-height="600" @selection-change="handleSelectionChange">
<el-table-column type="index" label="序号" width="50" align="center" fixed></el-table-column>
<el-table-column prop="contract_no" label="合同编号" :show-overflow-tooltip="true" align="center"></el-table-column>
<el-table-column prop="contract_file" label="合同文件" width="160" :show-overflow-tooltip="true" align="center">
<template slot-scope="scope">
<a v-if="scope.row.contract_file" :href="scope.row.contract_file" target="_blank" style="color: #409EFF">下载</a>
</template>
</el-table-column>
<el-table-column prop="status_name" label="状态" width="160" :show-overflow-tooltip="true" align="center"></el-table-column>
<el-table-column prop="commission_rate" label="抽佣比例(%)" width="160" :show-overflow-tooltip="true" align="center"></el-table-column>
<el-table-column prop="end_time" label="合同有效期" width="290" :show-overflow-tooltip="true" align="center"></el-table-column>
<el-table-column prop="check_date" label="对账日期" width="160" :show-overflow-tooltip="true" align="center"></el-table-column>
<el-table-column prop="update_time" label="更新时间" width="160" :show-overflow-tooltip="true" align="center"></el-table-column>
<el-table-column prop="create_name" label="创建人" width="160" :show-overflow-tooltip="true" align="center"></el-table-column>
<el-table-column prop="update_time" label="创建时间" width="160" :show-overflow-tooltip="true" align="center"></el-table-column>
</el-table>
<el-pagination layout="total, sizes, prev, pager, next, jumper" :page-sizes="[10, 20, 50, 100, 200]" :total="total" @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="page"></el-pagination>
</div>
</div>
<Menu></Menu>
</div>
</template>
<script>
import Vue from 'vue';
import Menu from "@/components/menu.vue";
import {Autocomplete, Button, DatePicker, Descriptions, DescriptionsItem, Dialog, Divider, Dropdown, DropdownItem, DropdownMenu, Form, FormItem, Input, Link, Message, MessageBox, Option, Pagination, Popover, Select, Table, TableColumn, Tag, Tooltip} from 'element-ui'
Vue.prototype.$message = Message
Vue.prototype.$confirm = MessageBox.confirm;
Vue.use(Button).use(Link).use(Form).use(Select).use(Option).use(Input).use(FormItem).use(Dialog).use(Tooltip).use(Autocomplete).use(Popover).use(Tag).use(Divider);
Vue.use(DatePicker).use(Dropdown).use(DropdownMenu).use(DropdownItem).use(TableColumn).use(Table).use(Pagination).use(Descriptions).use(DescriptionsItem);
export default {
name: "consignmentContract",
data() {
return {
multipleSelection: [],
total: 0,
page: 1,
limit: 10,
list: [],
formParam: {
status: ''
}
};
},
created() {
this.getData()
},
methods: {
getData() {
var params = Object.assign({}, this.formParam, {page: this.page, limit: this.limit});
this.$http('GET', "/api/consignmentContract/getConsignmentContractList", params).then(res => {
if (res.code === 0) {
this.list = res.data.list || [];
this.total = Number(res.data.total) || 0;
} else {
this.$message({
message: res.msg,
type: 'error'
});
}
})
},
/**
* 搜索
*/
onSubmit() {
this.page = 1;
this.getData();
},
/**
* 重置表单
* @param formName
*/
resetForm(formName) {
this.formParam.date = '';
this.$refs[formName].resetFields();
},
/**
* 列表分页条数筛选监听
* @param val
*/
handleSizeChange(val) {
this.limit = val;
this.getData();
},
/**
* 列表分页输入页码监听
* @param val
*/
handleCurrentChange(val) {
this.page = val;
this.getData();
},
/**
* chebox 选择监听
* @param val
*/
handleSelectionChange(val) {
this.multipleSelection = val;
}
},
components: {
Menu
}
};
</script>
<style scoped>
</style>
\ No newline at end of file
<template>
<div class="pagex">
<div class="section-page">
<!-- 详情信息区 -->
<el-descriptions :column="3" border style="margin-bottom: 15px;width: 1200px">
<el-descriptions-item label="导入总数">{{ itemListObj.total }}</el-descriptions-item>
<el-descriptions-item label="导入成功"><span class="alink">{{ itemListObj.suss_count }}</span></el-descriptions-item>
<el-descriptions-item label="导入失败"><span style="color: red">{{ itemListObj.error_count }}</span></el-descriptions-item>
<el-descriptions-item label="导入时间">{{ detailData.create_time }}</el-descriptions-item>
</el-descriptions>
<!--操作区-->
<div class="operation-area row" style="margin-top: 10px;">
<div class="operation-button row verCenter">
<el-button type="primary" @click="popupEvent(1)">提交寄售审核</el-button>
<el-button type="primary" @click="exportErrorItemList">导出失败文件</el-button>
</div>
</div>
<!--列表区-->
<div class="data-box">
<el-table :data="list" border max-height="600" @selection-change="handleSelectionChange">
<el-table-column fixed type="selection" width="40"></el-table-column>
<el-table-column prop="status" fixed label="状态" width="100" align="center">
<template slot-scope="scope">
<el-tag v-if="scope.row.status==1" type="danger">审核前失败</el-tag>
<el-tag v-else-if="scope.row.status==2" type="info">待审核</el-tag>
<el-tag v-else-if="scope.row.status==3" type="success">上传成功</el-tag>
<el-tag v-else-if="scope.row.status==4" type="warning">审核未通过</el-tag>
</template>
</el-table-column>
<el-table-column prop="error_msg" label="失败原因" min-width="150" :show-overflow-tooltip="true"></el-table-column>
<el-table-column prop="reject_msg" label="审核不通过原因" min-width="150" :show-overflow-tooltip="true"></el-table-column>
<el-table-column prop="goods_name" label="型号" min-width="150" :show-overflow-tooltip="true"></el-table-column>
<el-table-column prop="brand_name" label="品牌" min-width="150" :show-overflow-tooltip="true"></el-table-column>
<el-table-column prop="consignment_apply_stock" label="申请寄售库存" width="100"></el-table-column>
<el-table-column prop="consignment_safe_stock" label="安全库存" width="80"></el-table-column>
<el-table-column prop="moq" label="最小起订量" width="90"></el-table-column>
<el-table-column prop="mpq" label="标准包装量" width="90"></el-table-column>
<el-table-column prop="batch_sn" label="批次" width="80"></el-table-column>
<el-table-column prop="cn_delivery_time" label="大陆交期" width="90"></el-table-column>
<el-table-column prop="hk_delivery_time" label="香港交期" width="90"></el-table-column>
<el-table-column prop="sku_id" label="SKUID" width="200"></el-table-column>
</el-table>
<el-pagination layout="total, sizes, prev, pager, next, jumper" :page-sizes="[10, 20, 50, 100, 200]" :total="total" @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="page"></el-pagination>
</div>
</div>
<!--提交审核-->
<el-dialog title="提交审核" :close-on-click-modal="false" :visible.sync="dialogVisible_1" width="500px">
<p style="margin-bottom: 15px;margin-left: 80px;">请确定是否将选择的商品提交寄售审核?</p>
<el-form ref="form" label-width="80px">
<el-form-item label="附加说明">
<el-input type="textarea" v-model="remark"></el-input>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="dialogVisible_1 = false">取 消</el-button>
<el-button type="primary" @click="submitConsignmentAudit">确 定</el-button>
</div>
</el-dialog>
<Menu></Menu>
</div>
</template>
<script>
import Vue from 'vue';
import Menu from "@/components/menu.vue";
import {Descriptions, DescriptionsItem, Message, Pagination, Table, TableColumn, Tag, Tooltip, Upload} from 'element-ui'
import {NODE_ENVS} from "@/ajax";
import Tool from "@/tool";
Vue.prototype.$message = Message;
Vue.use(Pagination).use(TableColumn).use(Table).use(Tag).use(Descriptions).use(DescriptionsItem).use(Tooltip).use(Upload);
export default {
name: "consignmentImportDetail",
data() {
return {
detailData: {},
itemListObj: {},//明细数据
dialogVisible_1: false,
total: 0,
limit: 10,
page: 1,
list: [],
maxPrice: [],
id: '',
up_sn: '',
multipleSelection: [],
uploadUrl: NODE_ENVS + '/api/uploadSku/import',
remark: '',
sku_apply_num_json: [],
fileData: {
token: Tool.getCookie('token'),
type: 2//1覆盖 2新增
}
};
},
created() {
this.id = this.$route.query.id;
this.up_sn = this.$route.query.up_sn;
this.getInfo()
this.getList()
},
methods: {
/**
* 获取详情
*/
getInfo() {
this.$http('GET', "/api/uploadSku/info", {id: this.id}).then(res => {
if (res.code === 0) {
this.detailData = res.data
} else {
this.$message({
message: res.msg,
type: 'error'
});
}
})
},
/**
* 获取列表数据
*/
getList() {
this.$http('GET', "/api/uploadSku/itemList", {page: this.page, limit: this.limit, up_sn: this.up_sn, source: 12}).then(res => {
if (res.code === 0) {
this.list = res.data.list || [];
this.total = res.data.total || 0;
this.itemListObj = res.data;//明细数据
} else {
this.$message(res.msg);
}
})
},
/**
* 导出失败文件
*/
exportErrorItemList() {
let url = NODE_ENVS + '/api/uploadSku/exportErrorItemList?up_sn=' + this.up_sn + '&token=' + Tool.getCookie('token') + '&source=12';
Tool.openNewWindow(url);
},
/**
* 弹窗事件
*/
popupEvent(type) {
if (!this.multipleSelection.length) {
this.$message.warning('请选择数据');
return;
}
switch (type) {
case 1:
// 提交审核:校验待提审状态
const invalidVerify = this.multipleSelection.filter(item => item.status != 3);
if (invalidVerify.length) {
this.$message.warning('上传成功的才可提交寄售审核');
return;
}
this.sku_apply_num_json = this.multipleSelection.map(item => {
return {
sku_id: item.sku_id,
apply_num: item.consignment_apply_stock
}
});
this.dialogVisible_1 = true;
break;
}
},
/**
* 提交寄售审核
*/
submitConsignmentAudit() {
this.$http('POST', "/api/sku/submitConsignmentAudit", {sku_apply_num_json: JSON.stringify(this.sku_apply_num_json), remark: this.remark}).then(res => {
if (res.code === 0) {
this.$message({
message: '操作成功',
type: 'success',
onClose: () => {
this.dialogVisible_1 = false;
this.remark = '';
this.getList();
}
});
} else {
this.$message.error(res.msg || '操作失败');
}
})
},
/**
* 列表分页条数筛选监听
* @param val
*/
handleSizeChange(val) {
this.limit = val;
this.getList();
},
/**
* 列表分页输入页码监听
* @param val
*/
handleCurrentChange(val) {
this.page = val;
this.getList();
},
/**
* chebox 选择监听
* @param val
*/
handleSelectionChange(val) {
this.multipleSelection = val;
}
},
components: {
Menu
}
};
</script>
<style scoped>
</style>
\ No newline at end of file
<template>
<div class="pagex">
<div class="section-page">
<!-- 详情信息区 -->
<el-descriptions :column="4" border style="margin-bottom: 15px; width: 1200px;">
<el-descriptions-item label="寄售召回单号">
<span style="font-weight: bold">{{ detailData.recall_sn }}{{ detailData.recall_status_val }}</span>
</el-descriptions-item>
<el-descriptions-item label="订单人员:">{{ detailData.order_uname }}</el-descriptions-item>
<el-descriptions-item label="收货人:">{{ (detailData.supplier_address && detailData.supplier_address.contact) || '-' }}</el-descriptions-item>
<el-descriptions-item label="收货人电话:">{{ (detailData.supplier_address && detailData.supplier_address.mobile) || '-' }}</el-descriptions-item>
<el-descriptions-item label="收货地址:" :span="2">{{ (detailData.supplier_address && detailData.supplier_address.info) || '-' }}</el-descriptions-item>
</el-descriptions>
<!--列表区-->
<div class="data-box">
<el-table :data="list" border max-height="600" @selection-change="handleSelectionChange">
<el-table-column type="index" label="序号" width="50" align="center" fixed></el-table-column>
<el-table-column prop="recall_item_id" label="明细ID" width="100" :show-overflow-tooltip="true" align="center"></el-table-column>
<el-table-column prop="sku_id" label="SKUID" width="200" :show-overflow-tooltip="true" align="center"></el-table-column>
<el-table-column prop="goods_name" label="型号" :show-overflow-tooltip="true" align="center"></el-table-column>
<el-table-column prop="brand_name" label="品牌" :show-overflow-tooltip="true" align="center"></el-table-column>
<el-table-column prop="recall_num" label="申请召回数量" width="160" :show-overflow-tooltip="true" align="center"></el-table-column>
<el-table-column prop="stock_out_num" label="退货出库总数" width="160" :show-overflow-tooltip="true" align="center"></el-table-column>
<el-table-column prop="date_code" label="批次" width="160" :show-overflow-tooltip="true" align="center"></el-table-column>
</el-table>
<el-pagination layout="total, sizes, prev, pager, next, jumper" :page-sizes="[10, 20, 50, 100, 200]" :total="total" @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="page"></el-pagination>
</div>
</div>
<Menu></Menu>
</div>
</template>
<script>
import Vue from 'vue';
import Menu from "@/components/menu.vue";
import {Autocomplete, Button, Col, DatePicker, Descriptions, DescriptionsItem, Dialog, Divider, Dropdown, DropdownItem, DropdownMenu, Form, FormItem, Input, Link, Message, MessageBox, Option, Pagination, Popover, Row, Select, Table, TableColumn, Tag, Tooltip} from 'element-ui'
Vue.prototype.$message = Message
Vue.prototype.$confirm = MessageBox.confirm;
Vue.use(Button).use(Link).use(Form).use(Select).use(Option).use(Input).use(FormItem).use(Dialog).use(Tooltip).use(Autocomplete).use(Popover).use(Tag).use(Divider).use(Row).use(Col);
Vue.use(DatePicker).use(Dropdown).use(DropdownMenu).use(DropdownItem).use(TableColumn).use(Table).use(Pagination).use(Descriptions).use(DescriptionsItem);
export default {
name: "consignmentRecallDetail",
data() {
return {
multipleSelection: [],
recall_id: '',
detailData: {},
total: 0,
page: 1,
limit: 10,
list: [],
formParam: {
status: '',
date: ''
}
};
},
created() {
this.recall_id = this.$route.query.recall_id;
this.getData()
},
methods: {
getData() {
this.$http('GET', "/api/consignmentRecall/getConsignmentRecallDetail", {recall_id: this.recall_id, page: this.page, limit: this.limit}).then(res => {
if (res.code === 0) {
this.detailData = res.data;
this.list = res.data.items.list;
this.total = res.data.items.total || 0;
} else {
this.$message.error(res.msg);
}
})
},
/**
* 型号监听
* @param queryString
* @param cb
*/
querySearchAsync(queryString, cb) {
if (!queryString) {
cb([]);
return;
}
this.$http('GET', "/api/search/getspu", {spu_name: queryString}).then(res => {
if (res.code == 0 && res.data.list?.length) {
const arr = res.data.list.map(item => ({
value: item.spu_name
}));
cb(arr);
} else {
cb([]);
}
}).catch(() => {
cb([]);
});
},
/**
* 搜索
*/
onSubmit() {
this.page = 1;
this.getData();
},
/**
* 重置表单
* @param formName
*/
resetForm(formName) {
this.formParam.date = '';
this.$refs[formName].resetFields();
},
/**
* 列表分页条数筛选监听
* @param val
*/
handleSizeChange(val) {
this.limit = val;
this.getData();
},
/**
* 列表分页输入页码监听
* @param val
*/
handleCurrentChange(val) {
this.page = val;
this.getData();
},
/**
* chebox 选择监听
* @param val
*/
handleSelectionChange(val) {
this.multipleSelection = val;
}
},
components: {
Menu
}
};
</script>
<style scoped>
</style>
\ No newline at end of file
<template>
<div class="pagex">
<div class="section-page">
<!--搜索区-->
<el-form :inline="true" :model="formParam" ref="formParam" label-width="80px">
<el-form-item label="型号" prop="goods_name">
<el-autocomplete v-model="formParam.goods_name" :trigger-on-focus="false" @keyup.enter.native="onSubmit" :fetch-suggestions="querySearchAsync" placeholder="请输入型号" clearable></el-autocomplete>
</el-form-item>
<el-form-item label="SKUID" prop="sku_id">
<el-input v-model="formParam.sku_id" placeholder="请输入SKUID" @keyup.enter.native="submit" clearable></el-input>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="onSubmit">搜索</el-button>
<el-button @click="resetForm('formParam')">重置</el-button>
</el-form-item>
</el-form>
<!--操作区-->
<div class="operation-area row verCenter bothSide">
<div class="operation-button row verCenter">
<el-button type="primary" @click="addConsignmentReplenishment">补货</el-button>
</div>
<div class="text-tip row verCenter">
<i class="el-icon-warning"></i>
<span>该页面展示的数据为:“库存数量”+“在途库存”<“安全库存”的寄售商品,可在该页面发起补货</span>
</div>
</div>
<!--列表区-->
<div class="data-box">
<el-table :data="list" border max-height="600" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="40" align="center" fixed></el-table-column>
<el-table-column prop="sku_id" label="SKUID" min-width="250" :show-overflow-tooltip="true" align="center"></el-table-column>
<el-table-column prop="goods_name" label="型号" min-width="200" :show-overflow-tooltip="true" align="center"></el-table-column>
<el-table-column prop="brand_name" label="品牌" min-width="200" :show-overflow-tooltip="true" align="center"></el-table-column>
<el-table-column prop="stock" label="库存数量" width="200" :show-overflow-tooltip="true" align="center"></el-table-column>
<el-table-column prop="in_transit_stock" label="在途库存" width="200" :show-overflow-tooltip="true" align="center"></el-table-column>
<el-table-column prop="consignment_safe_stock" label="安全库存" width="200" :show-overflow-tooltip="true" align="center"></el-table-column>
</el-table>
<el-pagination layout="total, sizes, prev, pager, next, jumper" :page-sizes="[10, 20, 50, 100, 200]" :total="total" @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="page"></el-pagination>
</div>
</div>
<Menu></Menu>
</div>
</template>
<script>
import Vue from 'vue';
import Menu from "@/components/menu.vue";
import {Autocomplete, Button, DatePicker, Descriptions, DescriptionsItem, Dialog, Divider, Dropdown, DropdownItem, DropdownMenu, Form, FormItem, Input, Link, Message, MessageBox, Option, Pagination, Popover, Select, Table, TableColumn, Tag, Tooltip} from 'element-ui'
Vue.prototype.$message = Message
Vue.prototype.$confirm = MessageBox.confirm;
Vue.use(Button).use(Link).use(Form).use(Select).use(Option).use(Input).use(FormItem).use(Dialog).use(Tooltip).use(Autocomplete).use(Popover).use(Tag).use(Divider);
Vue.use(DatePicker).use(Dropdown).use(DropdownMenu).use(DropdownItem).use(TableColumn).use(Table).use(Pagination).use(Descriptions).use(DescriptionsItem);
export default {
name: "consignmentReplenishment",
data() {
return {
multipleSelection: [],
total: 0,
page: 1,
limit: 10,
list: [],
formParam: {
sku_id: '',
goods_name: ''
}
};
},
created() {
this.getData()
},
methods: {
getData() {
var params = Object.assign({}, this.formParam, {page: this.page, limit: this.limit});
this.$http('GET', "/api/consignmentReplenishment/getConsignmentReplenishmentList", params).then(res => {
if (res.code === 0) {
this.list = res.data.list || [];
this.total = Number(res.data.total) || 0;
} else {
this.$message({
message: res.msg,
type: 'error'
});
}
})
},
/**
* 型号监听
* @param queryString
* @param cb
*/
querySearchAsync(queryString, cb) {
if (!queryString) {
cb([]);
return;
}
this.$http('GET', "/api/search/getspu", {spu_name: queryString}).then(res => {
if (res.code == 0 && res.data.list?.length) {
const arr = res.data.list.map(item => ({
value: item.spu_name
}));
cb(arr);
} else {
cb([]);
}
}).catch(() => {
cb([]);
});
},
/**
* 搜索
*/
onSubmit() {
this.page = 1;
this.getData();
},
/**
* 重置表单
* @param formName
*/
resetForm(formName) {
this.formParam.date = '';
this.$refs[formName].resetFields();
},
/**
* 列表分页条数筛选监听
* @param val
*/
handleSizeChange(val) {
this.limit = val;
this.getData();
},
/**
* 列表分页输入页码监听
* @param val
*/
handleCurrentChange(val) {
this.page = val;
this.getData();
},
/**
* chebox 选择监听
* @param val
*/
handleSelectionChange(val) {
this.multipleSelection = val;
},
/**
* 提交补货申请
*/
addConsignmentReplenishment() {
if (!this.multipleSelection.length) {
this.$message.warning('请选择数据');
return;
}
let sku_ids = this.multipleSelection.map(item => item.sku_id).join(',');
this.$http('POST', "/api/consignmentReplenishment/addConsignmentReplenishment", {sku_ids: sku_ids}).then(res => {
if (res.code === 0) {
this.$message({
message: '操作成功',
type: 'success',
onClose: () => {
this.getData();
}
});
} else {
this.$message.error(res.msg || '操作失败');
}
})
}
},
components: {
Menu
}
};
</script>
<style scoped>
</style>
\ No newline at end of file
<template>
<div class="pagex">
<div class="section-page">
<!--搜索区-->
<el-form :inline="true" :model="formParam" ref="formParam" label-width="80px">
<el-form-item label="型号" prop="goods_name">
<el-autocomplete v-model="formParam.goods_name" :trigger-on-focus="false" @keyup.enter.native="onSubmit" :fetch-suggestions="querySearchAsync" placeholder="请输入型号" clearable></el-autocomplete>
</el-form-item>
<el-form-item label="类型" prop="types">
<el-select v-model="formParam.types" placeholder="全部" clearable multiple>
<el-option label="全部" value=""></el-option>
<el-option label="寄售入库" value="1"></el-option>
<el-option label="寄售退货入库" value="2"></el-option>
<el-option label="寄售出库" value="3"></el-option>
<el-option label="寄售召回出库" value="4"></el-option>
</el-select>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="onSubmit">搜索</el-button>
<el-button @click="resetForm('formParam')">重置</el-button>
</el-form-item>
</el-form>
<!-- 日期筛选-->
<div class="time-filter row verCenter bothSide">
<div></div>
<div class="filter-btns" style="text-align: right;">
<el-radio-group v-model="activeTimeBtn" @change="handleTimeFilter">
<el-radio-button :label="3">近3天</el-radio-button>
<el-radio-button :label="7">近7天</el-radio-button>
<el-radio-button :label="15">近15天</el-radio-button>
<el-radio-button :label="30">近30天</el-radio-button>
</el-radio-group>
</div>
</div>
<!--列表区-->
<div class="data-box">
<el-table :data="list" border max-height="600" @selection-change="handleSelectionChange">
<el-table-column type="index" label="序号" width="50" align="center" fixed></el-table-column>
<el-table-column prop="goods_name" label="型号" :show-overflow-tooltip="true" align="center"></el-table-column>
<el-table-column prop="brand_name" label="标准品牌" width="160" :show-overflow-tooltip="true" align="center"></el-table-column>
<el-table-column prop="wms_sn" label="单号" width="160" :show-overflow-tooltip="true" align="center"></el-table-column>
<el-table-column prop="type_val" label="类型" width="160" :show-overflow-tooltip="true" align="center"></el-table-column>
<el-table-column prop="stock_num" label="数量" width="160" :show-overflow-tooltip="true" align="center"></el-table-column>
<el-table-column prop="warehouse_name" label="仓库" width="160" :show-overflow-tooltip="true" align="center"></el-table-column>
<el-table-column prop="date_code" label="D/C" width="160" :show-overflow-tooltip="true" align="center"></el-table-column>
<el-table-column prop="supplier_name" label="供应商" width="160" :show-overflow-tooltip="true" align="center"></el-table-column>
<el-table-column prop="log_time" label="出入库时间" width="160" :show-overflow-tooltip="true" align="center"></el-table-column>
</el-table>
<el-pagination layout="total, sizes, prev, pager, next, jumper" :page-sizes="[10, 20, 50, 100, 200]" :total="total" @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="page"></el-pagination>
</div>
</div>
<Menu></Menu>
</div>
</template>
<script>
import Vue from 'vue';
import Menu from "@/components/menu.vue";
import {Autocomplete, Button, DatePicker, Descriptions, DescriptionsItem, Dialog, Divider, Dropdown, DropdownItem, DropdownMenu, Form, FormItem, Input, Link, Message, MessageBox, Option, Pagination, Popover, RadioButton, RadioGroup, Select, Table, TableColumn, Tag, Tooltip} from 'element-ui'
Vue.prototype.$message = Message
Vue.prototype.$confirm = MessageBox.confirm;
Vue.use(Button).use(Link).use(Form).use(Select).use(Option).use(Input).use(FormItem).use(Dialog).use(Tooltip).use(Autocomplete).use(Popover).use(Tag).use(Divider).use(RadioGroup).use(RadioButton);
Vue.use(DatePicker).use(Dropdown).use(DropdownMenu).use(DropdownItem).use(TableColumn).use(Table).use(Pagination).use(Descriptions).use(DescriptionsItem);
export default {
name: "inOutStockLog",
data() {
return {
multipleSelection: [],
total: 0,
page: 1,
limit: 10,
list: [],
formParam: {
goods_name: '',
types: [],
start_time: '',
end_time: ''
},
activeTimeBtn: 7
};
},
created() {
this.handleTimeFilter(7);
},
methods: {
getData() {
const params = {
...this.formParam,
page: this.page,
limit: this.limit,
types: this.formParam.types?.join(',') || ''
};
this.$http('GET', "/api/consignmentWmsLog/getConsignmentWmsLogList", params).then(res => {
if (res.code === 0) {
this.list = res.data.list || [];
this.total = Number(res.data.total) || 0;
} else {
this.$message({
message: res.msg,
type: 'error'
});
}
})
},
/**
* 型号监听
* @param queryString
* @param cb
*/
querySearchAsync(queryString, cb) {
if (!queryString) {
cb([]);
return;
}
this.$http('GET', "/api/search/getspu", {spu_name: queryString}).then(res => {
if (res.code == 0 && res.data.list?.length) {
const arr = res.data.list.map(item => ({
value: item.spu_name
}));
cb(arr);
} else {
cb([]);
}
}).catch(() => {
cb([]);
});
},
/**
* 搜索
*/
onSubmit() {
this.page = 1;
this.getData();
},
/**
* 重置表单
* @param formName
*/
resetForm(formName) {
this.activeTimeBtn = '';
this.formParam.start_time = '';
this.formParam.end_time = '';
this.$refs[formName].resetFields();
this.getData();
},
/**
* 列表分页条数筛选监听
* @param val
*/
handleSizeChange(val) {
this.limit = val;
this.getData();
},
/**
* 列表分页输入页码监听
* @param val
*/
handleCurrentChange(val) {
this.page = val;
this.getData();
},
/**
* chebox 选择监听
* @param val
*/
handleSelectionChange(val) {
this.multipleSelection = val;
},
/**
* 添加时间筛选处理方法
*/
handleTimeFilter() {
const days = this.activeTimeBtn;
// 计算开始时间和结束时间
const end = new Date();
const start = new Date();
start.setDate(start.getDate() - days);
// 格式化日期
this.formParam.start_time = this.formatDate(start);
this.formParam.end_time = this.formatDate(end);
// 重新获取数据
this.page = 1;
this.getData();
},
/**
* 格式化日期的辅助方法
* @param date
*/
formatDate(date) {
const year = date.getFullYear();
const month = String(date.getMonth() + 1).padStart(2, '0');
const day = String(date.getDate()).padStart(2, '0');
return `${year}-${month}-${day}`;
}
},
components: {
Menu
}
};
</script>
<style scoped>
.time-filter {
margin: 15px 0;
}
.filter-btns .el-radio-group {
margin-left: 0px !important;
}
</style>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment