|
|
@@ -7,70 +7,159 @@
|
|
|
<div class="container-fluid" id="list">
|
|
|
<div class="card col-md-8 offset-md-2">
|
|
|
<div class="card-body">
|
|
|
- <div class="form-group row">
|
|
|
- <label class="col-3 col-form-label text-right" >单据号</label>
|
|
|
- <input v-model="process.wms_code" class="form-control col-6 " :class="error.wms_code && error.wms_code.length>0 ? 'is-invalid' :''">
|
|
|
- <input class="btn btn-info col-2" type="button" @click="addProcessContent()" value="新增库单据">
|
|
|
- <span v-if="error.wms_code && error.wms_code.length>0" class="invalid-feedback col-8 offset-3 mt-0" role="alert">
|
|
|
- <strong>@{{ error.wms_code[0] }}</strong>
|
|
|
- </span>
|
|
|
- </div>
|
|
|
- <div class="form-group row" v-if="processContents.length>0" v-for="processContent in processContents" >
|
|
|
- <div class="col-8 offset-md-3 pl-0 pt-2 border rounded" :style="processContent.addBtnShow?'': 'opacity:0.88;background-color:#f5f5f5;transform:scale(0.9)'">
|
|
|
- <div class="row pt-2">
|
|
|
- <label class="col-3 col-form-label text-right">单据号@{{ processContent.i }}</label>
|
|
|
- <b class="col-8">@{{ processContent.wms_code }}</b>
|
|
|
- </div>
|
|
|
- <div class="row pt-2" v-if="processContent.addBtnShow">
|
|
|
- <label class="col-3 col-form-label text-right">选择商品</label>
|
|
|
- <span class=" col-9 input-group" style="max-height: 150px; overflow-y: scroll;border-radius:5px;opacity:1.5;text-align: center;">
|
|
|
- <ul class="list-group tooltipTarget" title="双击选择商品" style="width: 100%" onselectstart="return false;">
|
|
|
- <li v-for="commodity in processContent.commodities" :id="commodity.id" class="list-group-item list-group-item-action p-0 m-0"
|
|
|
- @dblclick="selectedCommodity(commodity,processContent.wms_code)" :class="processContent.commodity_id && processContent.commodity_id==commodity.id && processContent.lineNo==commodity.lineNo? 'active' :''">
|
|
|
- <p class="form-inline" style="cursor: default;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;"><small style="overflow: hidden;" :title="commodity.name" class="text-left text-info col-6">@{{ commodity.name }}</small>
|
|
|
- <small class="text-left col-6" style="overflow: hidden;">
|
|
|
- <a v-for="barcode in commodity.barcodes">@{{ barcode.code }} </a>
|
|
|
- </small></p></li>
|
|
|
- </ul>
|
|
|
- </span>
|
|
|
+ <div class="row">
|
|
|
+ <div class="col-6 rounded mb-2 border" style="background: #efe3d9;">
|
|
|
+ <div class="form-group row mt-2">
|
|
|
+ <label class="col-2 text-right mt-2">原料单据</label>
|
|
|
+ <input class="form-control col-7" v-model="process.wms_code">
|
|
|
+ <button class="btn btn-info btn-sm col-2" type="button" @click="addProcessContent(false)"> 新增库单据</button>
|
|
|
</div>
|
|
|
- <div class="row pt-2">
|
|
|
- <label class="col-3 col-form-label text-right">商品名</label>
|
|
|
- <b class="col-8">@{{ processContent.commodity_name }}</b>
|
|
|
- </div>
|
|
|
- <div class="row pt-2">
|
|
|
- <label class="col-3 col-form-label text-right">条码</label>
|
|
|
- <ul class="p-0 m-0 ml-3 list-unstyled list-inline" v-if="processContent.commodity_barcodes && processContent.commodity_barcodes.length>0">
|
|
|
- <li v-for="barcode in processContent.commodity_barcodes"><small>@{{ barcode.code }}</small></li>
|
|
|
- </ul>
|
|
|
- </div>
|
|
|
-
|
|
|
- <div class="row pt-2">
|
|
|
- <label class="col-3 col-form-label text-right">SKU</label>
|
|
|
- <b class="col-8">@{{ processContent.commodity_sku }}</b>
|
|
|
+ <div class="form-group row">
|
|
|
+ <div class="col-10 offset-1 pl-0 pt-2 border rounded bg-light">
|
|
|
+ <div class="row pt-2 small"><label class="col-3 text-right" >单据号</label>
|
|
|
+ <b class="col-8" v-if="processContents.length>0 && processContents[0].addBtnShow && !processContents[0].is_full">@{{ processContents[0].wms_code }}</b></div> <!---->
|
|
|
+ <div class="row pt-2" v-if="processContents.length>0 && processContents[0].addBtnShow && !processContents[0].is_full">
|
|
|
+ <span class="col-12 text-center text-muted small">双击选择商品:</span>
|
|
|
+ <span class=" col-11 offset-1 input-group" style=" border-radius: 5px; opacity: 1.5; text-align: center;">
|
|
|
+ <ul onselectstart="return false;" class="list-group tooltipTarget" style="width: 100%; max-height: 130px; overflow-y: scroll;">
|
|
|
+ <li v-for="commodity in processContents[0].commodities" :id="commodity.id" :style="{'background-color':processContents[0].commodity_id==commodity.id ? '#9fcdff':''}"
|
|
|
+ @dblclick="selectedCommodity(commodity,processContents[0].wms_code)" class="list-group-item list-group-item-action p-0 m-0">
|
|
|
+ <div class="form-inline" style="cursor: default; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;">
|
|
|
+ <small :title="commodity.name" class="text-left text-primary col-6 tooltipTarget" style="overflow: hidden;">@{{ commodity.name }}</small>
|
|
|
+ <small class="text-left col-6"><a v-for="barcode in commodity.barcodes">@{{ barcode.code }} </a></small>
|
|
|
+ </div>
|
|
|
+ </li>
|
|
|
+ </ul>
|
|
|
+ </span>
|
|
|
+ </div>
|
|
|
+ <div class="row pt-2 small"><label class="col-3 text-right">商品名</label>
|
|
|
+ <b v-if="processContents.length>0 && processContents[0].addBtnShow && !processContents[0].is_full" class="col-8">@{{ processContents[0].commodity_name }}</b>
|
|
|
+ </div>
|
|
|
+ <div class="row pt-2 small"><label class="col-3 text-right">条码</label>
|
|
|
+ <ul class="p-0 m-0 ml-2 list-unstyled list-inline" v-if="processContents.length>0 && processContents[0].addBtnShow && !processContents[0].is_full && processContents[0].commodity_barcodes && processContents[0].commodity_barcodes.length>0">
|
|
|
+ <li v-for="barcode in processContents[0].commodity_barcodes"><small>@{{ barcode.code }}</small></li>
|
|
|
+ </ul>
|
|
|
+ </div>
|
|
|
+ <div class="row pt-2 small"><label class="col-3 text-right">SKU</label>
|
|
|
+ <b v-if="processContents.length>0 && processContents[0].addBtnShow && !processContents[0].is_full" class="col-8">@{{ processContents[0].commodity_sku }}</b></div>
|
|
|
+ <div class="row pt-2 small"><label class="col-3 text-right">单据类型</label>
|
|
|
+ <select v-if="processContents.length>0 && processContents[0].addBtnShow && !processContents[0].is_full"
|
|
|
+ v-model="processContents[0].bill_type" class="col-8 form-control form-control-sm">
|
|
|
+ <option value="移库单">移库单</option>
|
|
|
+ <option value="入库单">入库单</option>
|
|
|
+ <option value="出库单">出库单</option>
|
|
|
+ </select></div>
|
|
|
+ <div class="row pt-2 small"><label class="col-3 text-right">数量</label>
|
|
|
+ <input v-if="processContents.length>0 && processContents[0].addBtnShow && !processContents[0].is_full" v-model="processContents[0].amount" type="text" class="form-control form-control-sm col-8">
|
|
|
+ </div>
|
|
|
+ <div class="col-8 offset-2 pt-2 pb-2">
|
|
|
+ <input type="button" v-if="processContents.length>0 && processContents[0].addBtnShow && !processContents[0].is_full"
|
|
|
+ @click="confirmStore(processContents[0].wms_code,processContents[0].commodity_id,processContents[0].amount)"
|
|
|
+ value="确定新增" class="btn btn-primary btn-sm form-control form-control-sm">
|
|
|
+ </div>
|
|
|
+ <div class="col-8 offset-2 pt-2 pb-2">
|
|
|
+ <input v-if="processContents.length>0 && processContents[0].addBtnShow && !processContents[0].is_full" type="button" @click="deleteProcessContent(processContents[0].wms_code)" value="删除" class="btn btn-danger form-control">
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
- <div class="row pt-2">
|
|
|
- <label class="col-3 col-form-label text-right">单据类型</label>
|
|
|
- <select disabled v-model="processContent.bill_type" class="col-8 form-control"
|
|
|
- :class="processContentError[processContent.wms_code] && processContentError[processContent.wms_code].bill_type ? 'is-invalid' :''">
|
|
|
- <option value="移库单">移库单</option>
|
|
|
- <option value="入库单">入库单</option>
|
|
|
- <option value="出库单">出库单</option>
|
|
|
- </select>
|
|
|
+ <div class="form-group row">
|
|
|
+ <div class="col-10 offset-1 p-1 border rounded bg-light" v-for="processContent in processContents" v-if="!processContent.addBtnShow && !processContent.is_full">
|
|
|
+ <div class="col-12 border">
|
|
|
+ <div class="row small" @mouseover="is_delBtn=true;" @mouseleave="is_delBtn=false;">
|
|
|
+ <span class="font-weight-bold">单据号:</span>
|
|
|
+ <span class="font-weight-bold">@{{ processContent.wms_code }}</span>
|
|
|
+ <span class="ml-2 text-muted">单据类型:</span>
|
|
|
+ <span class=" text-muted">@{{ processContent.bill_type }}</span>
|
|
|
+ <span class="ml-2 font-weight-bold">商品名:</span>
|
|
|
+ <span class="font-weight-bold">@{{ processContent.commodity_name }}</span>
|
|
|
+ <span class="ml-2 text-muted">SKU:</span>
|
|
|
+ <span class=" text-muted">@{{ processContent.commodity_sku }}</span>
|
|
|
+ <span class="ml-2 font-weight-bold">数量:</span>
|
|
|
+ <span class="font-weight-bold">@{{ processContent.amount }}</span>
|
|
|
+ <span class="ml-2 text-muted">条码:</span>
|
|
|
+ <span class="text-muted"><small v-if="processContent.commodity_barcodes && processContent.commodity_barcodes.length>0"
|
|
|
+ v-for="barcode in processContent.commodity_barcodes">@{{ barcode.code }}</small></span>
|
|
|
+ <button v-if="is_delBtn" @click="deleteProcessContent(processContent.wms_code,processContent.commodity_id)" class="btn btn-sm btn-danger" style="position: absolute;right: 0;bottom: 0">删除</button>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
- <div class="row pt-2">
|
|
|
- <label class="col-3 col-form-label text-right">数量</label>
|
|
|
- <input :readonly="!processContent.addBtnShow" v-model="processContent.amount" type="text" class="form-control col-8"
|
|
|
- :class="processContentError[processContent.wms_code] && processContentError[processContent.wms_code].amount ? 'is-invalid' :''">
|
|
|
- <span v-if="processContentError[processContent.wms_code] && processContentError[processContent.wms_code].amount" class="invalid-feedback col-8 offset-3 mt-0" role="alert">
|
|
|
- <strong>@{{ processContentError[processContent.wms_code].amount[0] }}</strong>
|
|
|
- </span>
|
|
|
+ </div>
|
|
|
+ <div class="col-6 rounded mb-2 border" style="background: #ccd7dc;">
|
|
|
+ <div class="form-group row mt-2">
|
|
|
+ <label class="col-2 text-right mt-2">成品单据</label>
|
|
|
+ <input class="form-control col-7" v-model="process.wms_code_full">
|
|
|
+ <button class="btn btn-info btn-sm col-2" type="button" @click="addProcessContent(true)"> 新增库单据</button>
|
|
|
</div>
|
|
|
- <div class="col-8 offset-2 pt-2" v-if="processContent.addBtnShow">
|
|
|
- <input type="button" @click="confirmStore(processContent.wms_code,processContent.commodity_id,processContent.amount)" value="确定新增" class="btn btn-primary form-control">
|
|
|
+ <div class="form-group row">
|
|
|
+ <div class="col-10 offset-1 pl-0 pt-2 border rounded bg-light">
|
|
|
+ <div class="row pt-2 small"><label class="col-3 text-right" >单据号</label>
|
|
|
+ <b class="col-8" v-if="processContents.length>0 && processContents[0].addBtnShow && processContents[0].is_full">@{{ processContents[0].wms_code }}</b></div> <!---->
|
|
|
+ <div class="row pt-2" v-if="processContents.length>0 && processContents[0].addBtnShow && processContents[0].is_full">
|
|
|
+ <span class="col-12 text-center text-muted small">双击选择商品:</span>
|
|
|
+ <span class=" col-11 offset-1 input-group" style=" border-radius: 5px; opacity: 1.5; text-align: center;">
|
|
|
+ <ul onselectstart="return false;" class="list-group tooltipTarget" style="width: 100%; max-height: 130px; overflow-y: scroll;">
|
|
|
+ <li v-for="commodity in processContents[0].commodities" :id="commodity.id" :style="{'background-color':processContents[0].commodity_id==commodity.id ? '#9fcdff':''}"
|
|
|
+ @dblclick="selectedCommodity(commodity,processContents[0].wms_code)" class="list-group-item list-group-item-action p-0 m-0">
|
|
|
+ <div class="form-inline" style="cursor: default; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;">
|
|
|
+ <small :title="commodity.name" class="text-left text-info col-6" style="overflow: hidden;">@{{ commodity.name }}</small>
|
|
|
+ <small class="text-left col-6"><a v-for="barcode in commodity.barcodes">@{{ barcode.code }} </a></small>
|
|
|
+ </div>
|
|
|
+ </li>
|
|
|
+ </ul>
|
|
|
+ </span>
|
|
|
+ </div>
|
|
|
+ <div class="row pt-2 small"><label class="col-3 text-right">商品名</label>
|
|
|
+ <b v-if="processContents.length>0 && processContents[0].addBtnShow && processContents[0].is_full" class="col-8">@{{ processContents[0].commodity_name }}</b>
|
|
|
+ </div>
|
|
|
+ <div class="row pt-2 small"><label class="col-3 text-right">条码</label>
|
|
|
+ <ul class="p-0 m-0 ml-2 list-unstyled list-inline" v-if="processContents.length>0 && processContents[0].addBtnShow && processContents[0].is_full && processContents[0].commodity_barcodes && processContents[0].commodity_barcodes.length>0">
|
|
|
+ <li v-for="barcode in processContents[0].commodity_barcodes"><small>@{{ barcode.code }}</small></li>
|
|
|
+ </ul>
|
|
|
+ </div>
|
|
|
+ <div class="row pt-2 small"><label class="col-3 text-right">SKU</label>
|
|
|
+ <b v-if="processContents.length>0 && processContents[0].addBtnShow && processContents[0].is_full" class="col-8">@{{ processContents[0].commodity_sku }}</b></div>
|
|
|
+ <div class="row pt-2 small"><label class="col-3 text-right">单据类型</label>
|
|
|
+ <select v-if="processContents.length>0 && processContents[0].addBtnShow && processContents[0].is_full"
|
|
|
+ v-model="processContents[0].bill_type" class="col-8 form-control form-control-sm">
|
|
|
+ <option value="移库单">移库单</option>
|
|
|
+ <option value="入库单">入库单</option>
|
|
|
+ <option value="出库单">出库单</option>
|
|
|
+ </select></div>
|
|
|
+ <div class="row pt-2 small"><label class="col-3 text-right">数量</label>
|
|
|
+ <input v-if="processContents.length>0 && processContents[0].addBtnShow && processContents[0].is_full" v-model="processContents[0].amount" type="text" class="form-control form-control-sm col-8">
|
|
|
+ </div>
|
|
|
+ <div class="col-8 offset-2 pt-2 pb-2">
|
|
|
+ <input type="button" v-if="processContents.length>0 && processContents[0].addBtnShow && processContents[0].is_full"
|
|
|
+ @click="confirmStore(processContents[0].wms_code,processContents[0].commodity_id,processContents[0].amount)"
|
|
|
+ value="确定新增" class="btn btn-primary btn-sm form-control form-control-sm">
|
|
|
+ </div>
|
|
|
+ <div class="col-8 offset-2 pt-2 pb-2">
|
|
|
+ <input v-if="processContents.length>0 && processContents[0].addBtnShow && processContents[0].is_full" type="button" @click="deleteProcessContent(processContents[0].wms_code)" value="删除" class="btn btn-danger form-control">
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
- <div class="col-8 offset-2 pt-2 pb-2">
|
|
|
- <input type="button" @click="deleteProcessContent(processContent.wms_code)" value="删除" class="btn btn-danger form-control">
|
|
|
+ <div class="form-group row">
|
|
|
+ <div class="col-10 offset-1 p-1 border rounded bg-light" v-for="processContent in processContents" v-if="!processContent.addBtnShow && processContent.is_full">
|
|
|
+ <div class="col-12 border">
|
|
|
+ <div class="row small" style="position: relative" @mouseover="is_delBtn=true;" @mouseleave="is_delBtn=false;">
|
|
|
+ <span class="font-weight-bold">单据号:</span>
|
|
|
+ <span class="font-weight-bold">@{{ processContent.wms_code }}</span>
|
|
|
+ <span class="ml-2 text-muted">单据类型:</span>
|
|
|
+ <span class=" text-muted">@{{ processContent.bill_type }}</span>
|
|
|
+ <span class="ml-2 font-weight-bold">商品名:</span>
|
|
|
+ <span class="font-weight-bold">@{{ processContent.commodity_name }}</span>
|
|
|
+ <span class="ml-2 text-muted">SKU:</span>
|
|
|
+ <span class=" text-muted">@{{ processContent.commodity_sku }}</span>
|
|
|
+ <span class="ml-2 font-weight-bold">数量:</span>
|
|
|
+ <span class="font-weight-bold">@{{ processContent.amount }}</span>
|
|
|
+ <span class="ml-2 text-muted">条码:</span>
|
|
|
+ <span class="text-muted"><small v-if="processContent.commodity_barcodes && processContent.commodity_barcodes.length>0"
|
|
|
+ v-for="barcode in processContent.commodity_barcodes">@{{ barcode.code }}</small></span>
|
|
|
+ <button v-if="is_delBtn" @click="deleteProcessContent(processContent.wms_code,processContent.commodity_id)" class="btn btn-sm btn-danger" style="position: absolute;right: 0;bottom: 0">删除</button>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
@@ -134,7 +223,7 @@
|
|
|
let vueList=new Vue({
|
|
|
el:'#list',
|
|
|
data:{
|
|
|
- process:{wms_code:'',owner_id:'',process_method_id:'',unit_price:'',remark:'',amount:''},
|
|
|
+ process:{wms_code:'',owner_id:'',process_method_id:'',unit_price:'',remark:'',amount:'',wms_code_full:''},
|
|
|
error:{wms_code:[],owner_id:[],process_method_id:[],unit_price:[],amount:[]},
|
|
|
processContentError:[],
|
|
|
processContents:[],
|
|
|
@@ -147,7 +236,7 @@
|
|
|
selectedTutorials:[],
|
|
|
msg:false,
|
|
|
commodityIds:[],
|
|
|
-
|
|
|
+ is_delBtn:false,
|
|
|
},
|
|
|
watch:{
|
|
|
processContents:{
|
|
|
@@ -164,9 +253,10 @@
|
|
|
},
|
|
|
methods:{
|
|
|
//新增库单据
|
|
|
- addProcessContent(){
|
|
|
+ addProcessContent(is_full){
|
|
|
let _this=this;
|
|
|
let wms_code=_this.process.wms_code;
|
|
|
+ if (is_full) wms_code=_this.process.wms_code_full;
|
|
|
if (!wms_code){
|
|
|
tempTip.setDuration(3000);
|
|
|
tempTip.show('未输入单据号!');
|
|
|
@@ -219,6 +309,7 @@
|
|
|
processContent['amount']='';
|
|
|
processContent['lineNo']='';
|
|
|
processContent['addBtnShow']=true;
|
|
|
+ processContent['is_full']=is_full;
|
|
|
_this.processContents.unshift(processContent);
|
|
|
}).catch(function (err) {
|
|
|
if (_this.msg)_this.msg=false;
|
|
|
@@ -239,6 +330,11 @@
|
|
|
tempTip.show("尚未填写数量!");
|
|
|
return;
|
|
|
}
|
|
|
+ if (isNaN(amount)) {
|
|
|
+ tempTip.setDuration(2000);
|
|
|
+ tempTip.show("数量必须为数字!");
|
|
|
+ return;
|
|
|
+ }
|
|
|
let _this=this;
|
|
|
_this.processContents.every(function (processContent) {
|
|
|
if (processContent.wms_code==wms_code) {
|
|
|
@@ -250,10 +346,10 @@
|
|
|
});
|
|
|
},
|
|
|
//删除新增
|
|
|
- deleteProcessContent(wms_code){
|
|
|
+ deleteProcessContent(wms_code,commodity_id){
|
|
|
let _this=this;
|
|
|
_this.processContents.every(function (processContent,i) {
|
|
|
- if (processContent.wms_code==wms_code) {
|
|
|
+ if (processContent.wms_code===wms_code&&processContent.commodity_id===commodity_id) {
|
|
|
_this.processContents.splice(i,1);
|
|
|
_this.commodityIds.splice(_this.commodityIds.indexOf(processContent.commodity_id),1);
|
|
|
return false;
|