<template> <div class="outboundManage"> <div class="head-title"> 出库管理 <el-button style="float:right" size="small" @click="outapplyfor" type="primary">出库申请 </el-button> </div> <div class="content"> <div style="margin-bottom:20px"> <span>供应商</span> <el-select style="margin:0 10px" class="w200" @change="msg.pageIndex=1,getList()" v-model="msg.SupplierId" size="small" placeholder="请选择"> <el-option label="不限" :value="0"></el-option> <el-option v-for="item in SupplierData" :key="item.Id" :label="item.Name" :value="item.ID"> </el-option> </el-select> <span>订单号</span> <div class="searchInput" style="width:250px"> <el-input @keyup.enter.native="msg.pageIndex=1,getList()" style="display:inline-block;width:225px;height:30px" placeholder="请输入订单号搜索" v-model="msg.OrderNo" @clear="msg.pageIndex=1,getList()" size="small" clearable> </el-input> <span @click="msg.pageIndex=1,getList()" class="el-icon-search" style="color:#979dad;font-size:14px;position:relative;top:1px"></span> </div> <span>下单时间</span> <el-date-picker v-model="dateList" @change="msg.pageIndex=1,getList()" size="small" type="datetimerange" range-separator="至" value-format="yyyy-MM-dd HH:mm:ss" start-placeholder="开始日期" end-placeholder="结束日期"> </el-date-picker> <span style="margin-left: 5px">商品名称</span> <div class="searchInput" style="width:250px"> <el-input @keyup.enter.native="msg.pageIndex=1,getList()" style="display:inline-block;width:225px;height:30px" placeholder="请输入商品名称搜索" v-model="msg.GoodsName" @clear="msg.pageIndex=1,getList()" size="small" clearable> </el-input> <span @click="msg.pageIndex=1,getList()" class="el-icon-search" style="color:#979dad;font-size:14px;position:relative;top:1px"></span> </div> <el-checkbox v-model="msg.IsOut" :true-label="1" :false-label="0" style="margin-left: 15px" @change="msg.pageIndex=1,getList()">售后出库</el-checkbox> </div> <el-table :data="tableData" v-loading="loading" border style="width: 100%" @selection-change="handleSelectionChange"> <el-table-column type="selection" width="55" style="text-align:center;"> </el-table-column> <el-table-column prop="OrderNo" label="订单号" width="220"> </el-table-column> <el-table-column prop="GoodsName" label="商品名称" width="300px" style="font-size:11px"> <template slot-scope="scope"> <div> <span style="font-size:11px"> {{scope.row.GoodsName}} </span> </div> </template> </el-table-column> <el-table-column prop="Specification" label="商品规格"> <template slot-scope="scope"> <div> <span style="font-size:11px"> {{scope.row.Specification}} </span> </div> </template> </el-table-column> <el-table-column prop="Number" label="购买数量" width="100px"> </el-table-column> <el-table-column prop="Number" label="出库商品" width="300px" style="font-size:11px"> <template slot-scope="scope"> <div> <span style="font-size:11px"> {{scope.row.NewGoodsName}} </span> <el-tooltip class="item" effect="dark" content="修改商品" placement="top"> <img @click="editGoods(scope.row,scope.$index)" src="../../assets/img/userman/edit1.png" alt=""> </el-tooltip> </div> </template> </el-table-column> <el-table-column prop="Number" label="出库规格" width="250px"> <template slot-scope="scope"> <div style="color:'#409eff'"> <span class="el-tag el-tag--small el-tag--light" style="top: 5px; position: relative; margin-right: 5px;max-width:250px; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; "> {{scope.row.NewSpecification}} </span> <el-tooltip class="item" effect="dark" content="修改规格" placement="top"> <img @click="costBtn(scope.row,scope.$index)" src="../../assets/img/userman/edit1.png" alt=""> </el-tooltip> </div> </template> </el-table-column> <el-table-column prop="Number" label="出库数量" width="150px"> <template slot-scope="scope"> <el-input class="w100" size="small" type="number" v-model="scope.row.NewNumber" placeholder="请输入" :disabled="ERPEmpId==0 ? true: false" :min="0"></el-input> </template> </el-table-column> </el-table> <el-pagination style="text-align:right" background @current-change="handleCurrentChange" :page-size="msg.pageSize" :current-page.sync="msg.pageIndex" layout="prev, pager, next" :total="total"> </el-pagination> </div> <!-- 规格选择 --> <el-dialog custom-class="app-add-cat" title="出库规格选择" :visible.sync="AtterDig" width="1100px"> <div class="temp_content" v-if="SpecList.length>0"> <span class="el-tag el-tag--small el-tag--light AttrList" :style="{color: item.IScheck == true?'#409eff':'#000'}" v-for="(item,index) in SpecList" :key="index" @click="chooseAttr(index)"> <span>{{item.SpecificationName}}</span> </span> </div> <span slot="footer" class="dialog-footer"> <el-button size="small" @click="AtterDig = false">取 消</el-button> <el-button @click="chooseA" size="small" type="primary">确 定</el-button> </span> </el-dialog> <!-- 商品选择 --> <el-dialog custom-class="app-add-cat" title="出库商品选择" :visible.sync="Egoods" width="1100px"> <el-form :inline="true" label-width="80px"> <el-form-item label="商品"> <el-select size="small" v-model="Goodsobj.NewGoodsId" @change="getSpecification" :filter-method="ChangeListName" filterable style="display:inline-block;width:600px;" placeholder="请选择"> <el-option v-for="item in GoodsList" :key="item.Id" :label="item.Name" :value="item.Id"> </el-option> </el-select> </el-form-item> </el-form> <el-form :inline="true" label-width="80px"> <el-form-item label="商品规格"> <el-select size="small" v-model="Goodsobj.NewSpecificationSort" @change="getSort" style="display:inline-block;width:300px;" placeholder="请选择"> <el-option v-for="item in SpecificationList" :key="item.SpecificationKey" :label="item.SpecificationName" :value="item.SpecificationKey"> </el-option> </el-select> </el-form-item> <el-form-item> <el-button type="primary" size="small" @click="addGoods">添加</el-button> </el-form-item> </el-form> <el-table :data="tableData2" v-loading="loading" border style="width: 100%"> <el-table-column prop="NewGoodsName" label="商品名称"> </el-table-column> <el-table-column prop="Number" label="出库规格" width="250px"> <template slot-scope="scope"> <div style="color:'#409eff'"> <span class="el-tag el-tag--small el-tag--light" style="top: 5px; position: relative; margin-right: 5px;max-width:250px; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; "> {{scope.row.NewSpecification}} </span> </div> </template> </el-table-column> <el-table-column prop="Number" label="出库数量" width="150px"> <template slot-scope="scope"> <el-input class="w100" size="small" type="number" v-model="scope.row.NewNumber" placeholder="请输入" :disabled="ERPEmpId==0 ? true: false" :min="0"></el-input> </template> </el-table-column> <el-table-column prop="Number" label="操作" width="100px"> <template slot-scope="scope"> <div> <el-tooltip class="item" effect="dark" content="删除" placement="top"> <img @click="editGoods2(scope.row,scope.$index)" src="../../assets/img/userman/del.png" alt=""> </el-tooltip> </div> </template> </el-table-column> </el-table> <span slot="footer" class="dialog-footer"> <el-button size="small" @click="Egoods = false,tableData2=[]">取 消</el-button> <el-button @click="chooseB" size="small" type="primary">确 定</el-button> </span> </el-dialog> </div> </template> <script> export default { data() { return { loading: false, Egoods: false, tableData: [], total: 0, outobj: { ID: 0, IsOut:0, //吴大春新增字段 WarehouseOutGoodsList: [], }, msg: { pageIndex: 1, pageSize: 15, SupplierId: 0, OrderNo: '', StartTime: '', EndTime: '', GoodsName: '', IsOut: 0 //吴大春新增字段 }, goodsmsg: { pageIndex: 1, pageSize: 5, Name: '', GoodsStatus: 0, IsSelectSellOut: 0, CategoryIds: '', Id: '', StartTime: '', EndTime: '', OrderBy: 0, }, ERPEmpId: 0, SpecList: [], AtterDig: false, outindex: {}, SupplierData: [], //供应商data dateList: [], //日期 GoodsList: [], //商品列表 Goodsobj: { Id: 0, OrderNo: 0, GoodsId: '', GoodsName: '', Number: 0, Specification: '', SpecificationSort: '', NewSpecification: '', NewSpecificationSort: "", NewNumber: 1, IScheck: false, }, SpecificationList: [], tableData2: [], editGoodsindex: 0, } }, created() { let currentUser = this.getLocalStorage() this.ERPEmpId = currentUser.ERPEmpId }, mounted() { this.getList(); this.getAllSupplier() }, methods: { getList() { if (this.dateList && this.dateList.length > 0) { this.msg.StartTime = this.dateList[0]; this.msg.EndTime = this.dateList[1]; } else { this.msg.StartTime = ''; this.msg.EndTime = ''; } this.loading = true; this.assetsApipost("/api/WarehouseOut/GetNoOutOrderGoodsList", this.msg, res => { this.loading = false; if (res.data.resultCode == 1) { // this.tableData = res.data.data; this.total = res.data.data.count; this.tableData = res.data.data.pageData; } else { this.Error(res.data.message); } }) }, handleCurrentChange(val) { this.msg.pageIndex = val; this.getList(); }, handleSelectionChange(val) { var selectRow = JSON.parse(JSON.stringify(val)); let array = []; selectRow.forEach(x => { let obj = {} obj.OrderGoodsId = x.Id; array.push(obj) }); this.outobj.WarehouseOutGoodsList = array; }, unique(arr) { for (var i = 0, len = arr.length; i < len; i++) { for (var j = i + 1, len = arr.length; j < len; j++) { if (arr[i].NewGoodsId === arr[j].NewGoodsId && arr[i].NewSpecificationSort === arr[j] .NewSpecificationSort && arr[i].OrderGoodsId === arr[j].OrderGoodsId) { arr.splice(j, 1); j--; // 每删除一个数j的值就减1 len--; // j值减小时len也要相应减1(减少循环次数,节省性能) } } } return arr; }, outapplyfor() { let that = this if (that.ERPEmpId == 0) { that.Error('您还未授权,暂不能出库'); } else { if (that.outobj.WarehouseOutGoodsList.length == 0) { that.Info('请选择商品'); return } let array = [] let showtip = false this.outobj.WarehouseOutGoodsList.forEach(x => { this.tableData.forEach(j => { if (x.OrderGoodsId == j.Id) { let obj = {} obj.OrderGoodsId = j.Id; obj.NewSpecificationSort = j.NewSpecificationSort; obj.NewNumber = j.NewNumber; obj.NewGoodsName = j.NewGoodsName; obj.NewGoodsId = j.NewGoodsId; array.push(obj) if (j.NewNumber == '' || j.NewNumber == 0) { showtip = true } } }) }) if (showtip == true) { that.Error('出库数量大于0'); return } array = this.unique(array) this.outobj.WarehouseOutGoodsList = array; this.outobj.IsOut=1; that.$confirm('是否申请出库?', '提示', { confirmButtonText: '确定', cancelButtonText: '取消', type: 'warning' }).then(() => { that.loading = true; that.assetsApipost("/api/WarehouseOut/SetWarehouseOutApply", that.outobj, res => { that.loading = false; if (res.data.resultCode == 1) { that.Success(res.data.message); that.outobj.WarehouseOutGoodsList = [] that.getList(); } else { that.Error(res.data.message); } }) }).catch(() => { }); } }, changeNum(row, val) { if (val == '' || val == 0) { //当输入 空和0 的时候做的处理 this.tableData.forEach(x => { if (x.Id == row.Id) { x.NewNumber = 0 } }); } }, costBtn(obj, index) { this.outindex = index if (this.ERPEmpId == 0) { this.Error('您还未授权,不能修改规格'); } else { this.assetsApipost("/api/WarehouseOut/GetSuppliesMaterialList", { GoodsId: obj.GoodsId }, res => { if (res.data.resultCode == 1) { this.SpecList = res.data.data; this.SpecList.forEach(x => { x.IScheck = false; if (x.SpecificationKey == obj.NewSpecificationSort) { x.IScheck = true; } }) this.AtterDig = true } else { this.Error(res.data.message); } }) } }, getSpecification(val) { //给Goodsobj赋值 this.GoodsList.forEach(x => { if (x.Id == val) { this.Goodsobj.NewGoodsId = x.Id; this.Goodsobj.NewGoodsName = x.Name; } }) //获取规则列表 this.assetsApipost("/api/WarehouseOut/GetSuppliesMaterialList", { GoodsId: val }, res => { if (res.data.resultCode == 1) { this.SpecificationList = res.data.data; } else { this.Error(res.data.message); } }) }, getSort(val) { this.SpecificationList.forEach(x => { if (x.SpecificationKey == val) { this.Goodsobj.NewSpecification = x.SpecificationName; this.Goodsobj.NewSpecificationSort = x.SpecificationKey; } }) }, editGoods(obj, index) { if (this.ERPEmpId == 0) { this.Error('您还未授权,不能修改商品'); } else { this.Egoods = true; this.editGoodsindex = index this.Goodsobj = obj this.Goodsobj.NewGoodsId = ''; this.Goodsobj.NewSpecificationSort = ''; } }, ChangeListName(val) { this.goodsmsg.Name = val; this.getgoodsList(); }, getgoodsList() { if (this.goodsmsg.Id == '') { this.goodsmsg.Id = 0; } this.apipost("/api/product/GetProductGoodsPageList", this.goodsmsg, res => { if (res.data.resultCode == 1) { let pageData = res.data.data.pageData; this.GoodsList = pageData } }) }, chooseB() { //删除当前的对象 把tableData2数组插入当前的位置 this.tableData2.unshift(this.editGoodsindex, 0) this.tableData.splice(this.editGoodsindex, 1) Array.prototype.splice.apply(this.tableData, this.tableData2); this.Egoods = false; this.tableData2 = [] }, chooseAttr(index) { this.SpecList.forEach((x, i) => { x.IScheck = false; if (index == i) { x.IScheck = true; } }) this.$forceUpdate(); }, //添加商品的时候选择商品 addGoods() { let that = this let obj = Object.assign({}, that.Goodsobj) if (obj.NewGoodsId == '') { this.Error('请选择商品') return } if (obj.NewSpecificationSort == '') { this.Error('请选择规格') return } that.tableData2.push(obj) that.Goodsobj.NewGoodsId = ''; that.Goodsobj.NewSpecificationSort = ''; that.Goodsobj.NewNumber = 1; }, editGoods2(row, index) { this.tableData2.splice(index, 1) }, chooseA() { this.SpecList.forEach((x, i) => { if (x.IScheck == true) { this.tableData[this.outindex].NewSpecification = x.SpecificationName this.tableData[this.outindex].NewSpecificationSort = x.SpecificationKey } }) this.AtterDig = false }, //获取供应商 getAllSupplier() { this.apipost("/api/Supplier/GetSupplierAllList", {}, res => { if (res.data.resultCode == 1) { this.SupplierData = res.data.data; } }) }, } }; </script> <style> .outboundManage .content { background: #fff; margin-top: 10px; padding: 20px; -webkit-box-sizing: border-box; box-sizing: border-box; } .outboundManage .AttrList { margin-top: 10px; position: relative; margin-right: 15px; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; cursor: pointer; } </style>