bonus-ui/src/views/foodManage/stockManage/warehouseIn/edit.vue

872 lines
41 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<div style="padding: 10px;background: #E5EBF6;min-height: 830px;">
<div style="background: #FFF;padding: 10px;border-radius: 10px;margin-bottom: 20px;">
<el-form :model="baseInfo" ref="baseInfo" :rules="baseRules" size="medium" :inline="true" label-width="110px">
<el-form-item label="入库单号" prop="intoCode">
<el-input v-model="baseInfo.intoCode" placeholder="入库单号自动生成" disabled maxlength="20" clearable style="width: 240px"/>
</el-form-item>
<el-form-item label="所属区域" prop="areaId">
<el-cascader v-model="baseInfo.areaId"
:options="treeAreaOptions" :filterable="true" style="width: 240px" :show-all-levels="false"
:disabled="materialList.length>0"
:props="{
emitPath: false,// 若设置 false则只返回该节点的值只返回最后选择的id
checkStrictly: false,//来设置父子节点取消选中关联,从而达到选择任意一级选项的目的
value:'id',label:'label'
}" @change="handleAreaChange">
</el-cascader>
</el-form-item>
<el-form-item label="货品仓库" prop="warehouseId">
<el-select v-model="baseInfo.warehouseId" clearable :disabled="materialList.length>0" placeholder="请选择货品仓库" style="width: 100%;">
<el-option v-for="item in wareHouseOptions"
:key="item.warehouseId"
:label="item.warehouseName"
:value="item.warehouseId"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="入库类型" prop="intoType">
<el-select v-model="baseInfo.intoType" placeholder="请选择入库类型" style="width: 240px;">
<el-option label="采购入库" value="1"></el-option>
<el-option label="退料入库" value="2"></el-option>
<el-option label="即入即出" value="4"></el-option>
</el-select>
</el-form-item>
<el-form-item label="入库时间" prop="intoDate">
<el-date-picker
v-model="baseInfo.intoDate"
type="datetime" align="right"
format="yyyy-MM-dd HH:mm:ss" style="width: 240px;"
:picker-options="pickerOptions" @change="baseInfo.intoDate=formatDateTime(baseInfo.intoDate)">
</el-date-picker>
</el-form-item>
<!-- <el-form-item label="备注" prop="remark">
<el-input v-model="baseInfo.remark" placeholder="请输入备注" maxlength="30" clearable style="width: 240px"/>
</el-form-item> -->
</el-form>
</div>
<div style="width: 100%;height: 450px;padding: 10px;border-radius: 10px;margin-bottom: 10px;background: #FFF;">
<div style="width: 100%;display: flex;justify-content: space-between;align-items: center;margin-bottom: 10px;">
<div>
货品入库信息
</div>
<div style="display: flex;align-items: center;">
<el-button type="primary" plain @click="addMaterial">添加货品</el-button>
<el-button type="primary" plain @click="importPurchaseOrder">导入采购订单</el-button>
<el-button type="danger" plain @click="delMaterial">删除</el-button>
</div>
</div>
<div style="width: 100%;height: 400px;overflow-y: auto;">
<el-table v-loading="loading" :data="materialList" ref="multipleTable" height="380" :row-key="(row)=>{return row.materialId}" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="50" align="center" :reserve-selection="true" />
<el-table-column label="序号" align="center" width="80" type="index" />
<!-- <el-table-column label="图片" align="center" prop="" :show-overflow-tooltip="true" /> -->
<el-table-column label="货品编码" align="center" prop="materialCode" :show-overflow-tooltip="true" />
<el-table-column label="货品名称" align="center" prop="materialName" :show-overflow-tooltip="true" />
<el-table-column label="货品类别" align="center" prop="materialTypeName" :show-overflow-tooltip="true" />
<el-table-column label="计量单位" align="center" prop="unitName" :show-overflow-tooltip="true" />
<el-table-column label="货品规格" align="center" prop="size" :show-overflow-tooltip="true">
</el-table-column>
<el-table-column label="供应商" align="center" prop="supplierId" :show-overflow-tooltip="true" width="150">
<template slot-scope="scope">
<el-select v-model="scope.row.supplierId" placeholder="请选择供应商" style="width: 100%;">
<el-option v-for="item in supplierOptions"
:key="item.supplierId"
:label="item.supplierName"
:value="item.supplierId"
></el-option>
</el-select>
</template>
</el-table-column>
<el-table-column label="生产日期" align="center" prop="productDate" :show-overflow-tooltip="true" width="160">
<template slot-scope="scope">
<el-date-picker
v-model="scope.row.productDate"
type="date" style="width: 100%;"
align="right" value-format="yyyy-MM-dd"
format="yyyy-MM-dd" @change="scope.row.productDate=formatDate(scope.row.productDate)"
:picker-options="pickerOptions3" >
</el-date-picker>
</template>
</el-table-column>
<el-table-column label="保质期截止日期" align="center" prop="expireTime" :show-overflow-tooltip="true" width="180">
<template slot-scope="scope">
<el-date-picker
v-model="scope.row.expireTime"
type="date" style="width: 100%;"
align="right" value-format="yyyy-MM-dd"
format="yyyy-MM-dd" @change="scope.row.expireTime=formatDate(scope.row.expireTime)"
:picker-options="pickerOptions2" >
</el-date-picker>
</template>
</el-table-column>
<el-table-column label="单价(元)" align="center" prop="unitPrice" :show-overflow-tooltip="true">
<template slot-scope="scope">
<span v-if="baseInfo.relateOrderGoodsId">{{ scope.row.unitPrice }}</span>
<el-input v-else v-model="scope.row.unitPrice" placeholder="请输入" maxlength="3" clearable @input="(v)=>(scope.row.unitPrice=v.replace(/[^\d.]/g, '').replace(/^(\d*\.\d{2}).*$/, '$1'))"/>
</template>
</el-table-column>
<el-table-column label="订货数量" align="center" prop="orderNum" :show-overflow-tooltip="true" v-if="baseInfo.relateOrderGoodsId">
<template slot-scope="scope">
<span>{{scope.row.orderNum}}</span>
</template>
</el-table-column>
<el-table-column label="已入库数量" align="center" prop="intoNum" :show-overflow-tooltip="true" v-if="baseInfo.relateOrderGoodsId">
<template slot-scope="scope">
<span>{{scope.row.intoNum}}</span>
</template>
</el-table-column>
<el-table-column label="本次入库数量" align="center" prop="purNum" :show-overflow-tooltip="true">
<template slot-scope="scope">
<el-input v-model="scope.row.purNum" placeholder="请输入" maxlength="3" clearable @change="patternValue(scope.row)"/>
</template>
</el-table-column>
</el-table>
</div>
</div>
<div style="width: 100%;height: 80px;padding: 10px;background: #FFF;border-radius: 10px;display: flex;align-items: center;justify-content: center;">
<el-button type="primary" plain @click="confirmSave" :loading="loadingBtn">保存草稿</el-button>
<el-button type="success" plain @click="confirmSubmit" :loading="loadingBtn">提交</el-button>
<el-button @click="jumpList">返回</el-button>
</div>
<!-- 选择菜品 -->
<el-dialog title="选择货品" :visible.sync="openDialog" width="65%" append-to-body >
<div style="width: 100%;height:620px;">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" label-width="68px">
<el-form-item label="货品类别" prop="materialTypeIds">
<el-cascader v-model="queryParams.materialTypeIds"
:options="materialTreeOptions" :filterable="true" style="width: 240px" :show-all-levels="false"
:props="{
multiple: true,
emitPath: false,// 若设置 false则只返回该节点的值只返回最后选择的id
checkStrictly: false,//来设置父子节点取消选中关联,从而达到选择任意一级选项的目的
value:'id',label:'categoryName'
}" collapse-tags>
</el-cascader>
</el-form-item>
<el-form-item label="货品编码" prop="materialCode">
<el-input v-model="queryParams.materialCode" placeholder="请输入货品编码" maxlength="20" clearable style="width: 240px"/>
</el-form-item>
<el-form-item label="货品名称" prop="materialName">
<el-input v-model="queryParams.materialName" placeholder="请输入货品名称" maxlength="20" clearable style="width: 240px"/>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
<el-table v-loading="loading" :data="tableListData" ref="multipleTable1" height="520" :row-key="(row)=>{return row.materialId}" @selection-change="handleSelectionChange2">
<el-table-column type="selection" width="50" align="center" :reserve-selection="true" />
<el-table-column label="序号" align="center" width="80" type="index">
<template slot-scope="scope">
<span>{{(queryParams.pageNum - 1) * queryParams.pageSize + scope.$index + 1}}</span>
</template>
</el-table-column>
<!-- <el-table-column label="图片" align="center" prop="" :show-overflow-tooltip="true" /> -->
<el-table-column label="货品编码" align="center" prop="materialCode" :show-overflow-tooltip="true" />
<el-table-column label="货品名称" align="center" prop="materialName" :show-overflow-tooltip="true" />
<el-table-column label="货品类别" align="center" prop="materialTypeName" :show-overflow-tooltip="true" />
<el-table-column label="计量单位" align="center" prop="unitName" :show-overflow-tooltip="true" />
<el-table-column label="货品规格" align="center" prop="size" :show-overflow-tooltip="true">
<!-- <template slot-scope="scope">
<span v-if="scope.row.salesMode==1">按份</span>
<span v-if="scope.row.salesMode==2">称重</span>
</template> -->
</el-table-column>
<el-table-column label="单价(元)" align="center" prop="unitPrice" :show-overflow-tooltip="true">
<template slot-scope="scope">
<span>{{ (scope.row.unitPrice/100).toFixed(2)||"" }}</span>
</template>
</el-table-column>
</el-table>
<pagination
v-show="total>0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
</div>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="confirmChosen">确 定</el-button>
<el-button @click="openDialog=false">取 消</el-button>
</div>
</el-dialog>
<!-- 导入 -->
<el-dialog title="导入采购订单" :visible.sync="openImportDialog" width="60%" append-to-body >
<div style="width: 100%;height:600px;">
<el-form :model="queryParams2" ref="queryForm2" size="small" :inline="true" label-width="100px">
<el-form-item label="采购单号" prop="orderGoodsCode">
<el-input v-model="queryParams2.orderGoodsCode" placeholder="请输入采购单号" maxlength="20" clearable style="width: 240px"/>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery2">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery2">重置</el-button>
</el-form-item>
</el-form>
<!-- :row-key="(row)=>{return row.fetchMaterialId}" @selection-change="handleSelectionChange3" -->
<el-table v-loading="loading2" :data="tableListData2" ref="multipleTable2" height="500">
<!-- <el-table-column type="selection" width="50" align="center" :reserve-selection="true" /> -->
<el-table-column label="序号" align="center" width="80" type="index">
<template slot-scope="scope">
<span>{{(queryParams2.pageNum - 1) * queryParams2.pageSize + scope.$index + 1}}</span>
</template>
</el-table-column>
<el-table-column label="采购单号" align="center" prop="orderGoodsCode" :show-overflow-tooltip="true" />
<el-table-column label="采购订单标题" align="center" prop="orderTitle" :show-overflow-tooltip="true"/>
<el-table-column label="采购总金额(元" align="center" prop="orderAmount" :show-overflow-tooltip="true" width="120">
<template slot-scope="scope">
<span>{{ (scope.row.orderAmount/100).toFixed(2) }}</span>
</template>
</el-table-column>
<el-table-column label="供应商" align="center" prop="supplierName" :show-overflow-tooltip="true" />
<el-table-column label="创建人" align="center" prop="createBy" :show-overflow-tooltip="true" />
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button size="mini" type="text"
@click="confirmImport(scope.row)" v-if="scope.row.orderStatus==3"
>导入</el-button>
</template>
</el-table-column>
</el-table>
<pagination
v-show="total2>0"
:total="total2"
:page.sync="queryParams2.pageNum"
:limit.sync="queryParams2.pageSize"
@pagination="getList2"
/>
</div>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="openImportDialog=false">确 定</el-button>
<el-button @click="openImportDialog=false"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import { imgUpLoadTwo } from '@/api/system/upload'
import { systemAreaTreeApi } from "@/api/base/stall";
import { systemMaterialTreeApi,getMaterialListApi,drpWareHousePageApi,supplierPageApi } from "@/api/foodManage/stockManage";
import { getWarehouseInInfoApi,addWarehouseInApi,editWarehouseInApi } from "@/api/foodManage/stockManage";
import { purchaseOrderPageApi,getPurchaseOrderInfoApi } from "@/api/foodManage/purchaseManage";
export default {
name: "WarehouseInEdit",
dicts: [],
data() {
return {
inRowData:{},//页面传参
loading:false,
loadingBtn:false,
baseInfo: {
contractType:undefined,
areaId:undefined,
canteenId:undefined,
intoDate:new Date()
},
// 表单校验
baseRules: {
areaId: [
{ required: true, message: "所属区域不能为空", trigger: "change" }
],
canteenId: [
{ required: true, message: "所属食堂不能为空", trigger: "change" }
],
stallId: [
{ required: true, message: "所属档口不能为空", trigger: "change" }
],
supplierId: [
{ required: true, message: "供应商不能为空", trigger: "change" }
],
intoDate: [
{ required: true, message: "入库时间不能为空", trigger: "change" }
],
warehouseId: [
{ required: true, message: "货品仓库不能为空", trigger: "change" }
],
intoType: [
{ required: true, message: "入库类型不能为空", trigger: "change" }
]
},
treeAreaOptions:[],
canteenOptions:[],
stallOptions:[],
supplierOptions:[],
wareHouseOptions:[],
pickerOptions: {
disabledDate(v) {
return v.getTime() < (new Date().getTime() - 86400000);// - 86400000是否包括当天
}
},
materialList:[],//货品信息-表格数据
batchIds:[],//货品信息-表格数据-多选
openDialog:false,
materialTreeOptions:[],
queryParams: { // 货品弹窗-货品表格-查询参数
pageNum: 1,
pageSize: 10,
},
pickerOptions2: {
disabledDate(v) {
return v.getTime() < (new Date().getTime() - 86400000) ||v.getTime() > (new Date().getTime() + 3600 * 1000 * 24 * 60);// - 86400000是否包括当天
}
},
pickerOptions3: {
disabledDate(v) {
return v.getTime() > (new Date().getTime() - 86400000) ||v.getTime() > (new Date().getTime() + 3600 * 1000 * 24 * 60);// - 86400000是否包括当天
}
},
total: 0, // 总条数
tableListData: [],//货品弹窗-货品表格数据
batchChosenMaterial:[],//货品弹窗-货品表格-选中的货品数组
noMaterial:false,
//导入功能
openImportDialog:false,
queryParams2: { // 货品弹窗-货品表格-查询参数
pageNum: 1,
pageSize: 10,
orderGoodsCode:null
},
loading2:false,
total2: 0, // 总条数
tableListData2: [],//导入弹窗-表格数据
importRow:{},//导入弹窗-表格数据-选中数据
materialDetailsData: [],//导入弹窗-明细数据
};
},
created() {
if(this.$route.query.inRowData){
this.inRowData = JSON.parse(this.$route.query.inRowData)
this.getContractInfo()
}
this.getAreaTreeData()
this.getMaterialTree()
},
watch:{
'$route.query.inRowData':function(newId, oldId) {
if(newId){
this.inRowData = JSON.parse(newId)
this.getContractInfo()
}else{
this.baseInfo={}
this.materialList=[]
}
},
},
methods: {
// 返回列表页
jumpList() {
const obj = { path: "/foodManage/stockManage/warehouseInEdit" };
this.$tab.closeOpenPage(obj);
this.$router.replace({ path: "/foodManage/stockManage/warehouseIn" }); // 要打开的页面
},
getContractInfo(){
console.log(this.inRowData)
let param = {
intoId:this.inRowData.intoId
}
//查询查询食堂下拉结构
getWarehouseInInfoApi(param).then((response) => {
this.baseInfo = response.data;
this.materialList = this.baseInfo.imsIntoInventoryDetailVOList;
// this.$set(this.baseInfo,'areaId',Number(response.data.areaId))
this.materialList.forEach(item=>{
this.$set(item,"unitPrice",Number(item.unitPrice)/100)
})
drpWareHousePageApi({ areaId:this.baseInfo.areaId }).then((response) => {
this.wareHouseOptions = response.rows||[];
// this.$set(this.baseInfo,'warehouseId',this.baseInfo.warehouseId)
});
supplierPageApi({ isPaging:1,areaIdList:[] }).then((response) => {
this.supplierOptions = response.rows||[];
});
});
},
//区域树
getAreaTreeData() {
systemAreaTreeApi({}).then((response) => {
this.treeAreaOptions = response.data;
if(this.treeAreaOptions.length>0){
this.$set(this.baseInfo,"areaId",this.getFirstChild(this.treeAreaOptions[0]).id)
this.handleAreaChange()
}
});
},
getFirstChild(node) {
if (!node.children || node.children.length === 0) {
return node; // 没有子节点或子节点为空,返回当前节点
} else {
return this.getFirstChild(node.children[0]); // 递归调用最后一个子节点
}
},
//选中区域-查询食堂
handleAreaChange(e){
this.getWareHouseData()
this.getSupplierData()
},
/** 查询供应商下拉结构 */
getWareHouseData() {
drpWareHousePageApi({ areaId:this.baseInfo.areaId }).then((response) => {
this.wareHouseOptions = response.rows||[];
if(this.wareHouseOptions.length>0){
this.$set(this.baseInfo,"warehouseId",this.wareHouseOptions[0].warehouseId)
}
});
},
/** 查询供应商下拉结构 */
getSupplierData() {
supplierPageApi({ isPaging:1,areaIdList:[] }).then((response) => {
this.supplierOptions = response.rows||[];
});
},
/** 查询货品类别下拉树结构 */
getMaterialTree() {
let param = {
// goodsType:1
}
systemMaterialTreeApi(param).then((response) => {
this.materialTreeOptions = response.data;
});
},
//选择日期范围
changeDateRange(e){
//this.formatDate(e[0])
},
// 多选框选中数据
handleSelectionChange(selection) {
this.batchIds = selection.map(item => item.materialId)
},
//删除货品
delMaterial(){
this.batchIds.forEach(ID=>{
let index = this.materialList.findIndex(v=>v.materialId==ID)
if(index>-1){
this.materialList.splice(index,1)
}
})
setTimeout(()=>{
this.$refs.multipleTable.clearSelection()
},300)
},
//添加货品
addMaterial(){
if(this.baseInfo.areaId!=undefined&&this.baseInfo.warehouseId!=undefined){
this.openDialog=true
this.resetQuery()
setTimeout(()=>{
this.$refs.multipleTable1.clearSelection()
},300)
}else{
this.$modal.msgError("请先选择区域,仓库");
}
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.queryParams = {
pageNum: 1,
pageSize: 10,
}
this.resetForm("queryForm");
this.handleQuery();
},
/** 查询列表 */
getList() {
this.loading = true;
let param = {
"pageSize": this.queryParams.pageSize,
"pageNum": this.queryParams.pageNum,
"areaId": this.baseInfo.areaId,
"warehouseId": this.baseInfo.warehouseId,
"materialName": this.queryParams.materialName,
"materialCode": this.queryParams.materialCode,
"materialTypeIds": this.queryParams.materialTypeIds,
}
getMaterialListApi(param).then(response => {
this.tableListData = response.rows;
this.total = Number(response.total);
this.loading = false;
});
},
handleSelectionChange2(selection) {
this.batchChosenMaterial = [];
selection.forEach(item=>{
let obj = Object.assign({}, item)
obj.unitPrice = item.unitPrice/100;
this.$set(obj,"purNum",0)
this.$set(obj,"supplierId",null)
this.batchChosenMaterial.push(obj)
})
},
confirmChosen(){
if(this.batchChosenMaterial.length>0){
this.loading = true
if(this.baseInfo.relateOrderGoodsId&&this.baseInfo.relateOrderGoodsId!=""){
this.$modal.confirm('是否确认覆盖货品明细?').then(() => {
this.baseInfo.relateOrderGoodsId = null
this.materialList = this.batchChosenMaterial
this.loading = false
this.openDialog=false
}).catch(() => {
this.loading = false
this.openDialog=false
});
}else{
let items = [...this.materialList,...this.batchChosenMaterial]
let uniqueItems = items.filter((item, index, array) => {
return array.findIndex((t) => (t.materialId === item.materialId)) === index;
});
this.materialList = uniqueItems;
setTimeout(()=>{
this.loading = false
this.openDialog=false
},500)
}
}
},
//保存草稿
confirmSave(){
this.$refs["baseInfo"].validate(valid => {
if (valid) {
let param = Object.assign({},this.baseInfo);
param.intoDate = this.formatDateTime(this.baseInfo.intoDate)
param.totalAmount=0
param.totalNum=0
param.status=1
param.imsIntoInventoryDetailAddList = []
this.noMaterial = false;
if(this.materialList.length>0){
this.materialList.forEach(item=>{
this.$set(item,"purNum",Number(item.purNum))
if(item.unitPrice==0 || item.purNum==0 || item.supplierId==null || !item.productDate|| !item.expireTime){
this.noMaterial = true
}else{
let obj = Object.assign({}, item)
obj.unitPrice = Number(obj.unitPrice)*100
obj.totalPrice = (Number(obj.unitPrice)*Number(obj.purNum))
param.totalAmount = param.totalAmount+obj.totalPrice;
param.totalNum = param.totalNum+Number(obj.purNum)
param.imsIntoInventoryDetailAddList.push(obj)
}
})
}
if(this.noMaterial){
if(this.baseInfo.relateOrderGoodsId&&this.baseInfo.relateOrderGoodsId!=""){
this.$modal.msgError("当前导入的采购订单无验收无法入库!");
}else{
this.$modal.msgError("表格数据请填写完整!");
}
}else{
this.noMaterial = true;
if(this.materialList.length>0){
this.noMaterial = false;
}
console.log(param)
if(this.noMaterial){
this.$modal.msgError("请添加货品!");
}else{
this.loadingBtn=true;
if (this.baseInfo.intoId != undefined) {
editWarehouseInApi(param).then((response) => {
this.$modal.msgSuccess("修改成功");
this.loadingBtn=false
this.jumpList()
}).catch(() => {
this.loadingBtn=false
});
} else {
addWarehouseInApi(param).then((response) => {
this.$modal.msgSuccess("保存成功");
this.loadingBtn=false
this.jumpList()
}).catch(() => {
this.loadingBtn=false
});
}
}
}
}
});
},
// 提交按钮
confirmSubmit(){
this.$refs["baseInfo"].validate(valid => {
if (valid) {
let param = Object.assign({},this.baseInfo);
param.intoDate = this.formatDateTime(this.baseInfo.intoDate)
param.totalAmount=0
param.totalNum=0
param.status=2
param.imsIntoInventoryDetailAddList = []
this.noMaterial = false;
if(this.materialList.length>0){
this.materialList.forEach(item=>{
this.$set(item,"purNum",Number(item.purNum))
if(item.unitPrice==0 || item.purNum==0 || item.supplierId==null || !item.productDate|| !item.expireTime){
this.noMaterial = true
}else{
let obj = Object.assign({}, item)
obj.unitPrice = Number(obj.unitPrice)*100
obj.totalPrice = (Number(obj.unitPrice)*Number(obj.purNum))
param.totalAmount = param.totalAmount+obj.totalPrice;
param.totalNum = param.totalNum+Number(obj.purNum)
param.imsIntoInventoryDetailAddList.push(obj)
}
})
}
if(this.noMaterial){
this.$modal.msgError("表格数据请填写完整!");
}else{
this.noMaterial = true;
if(this.materialList.length>0){
this.noMaterial = false;
}
console.log(param)
if(this.noMaterial){
this.$modal.msgError("请添加货品!");
}else{
this.loadingBtn=true;
if (this.baseInfo.intoId != undefined) {
editWarehouseInApi(param).then((response) => {
this.$modal.msgSuccess("修改成功");
this.loadingBtn=false
this.jumpList()
}).catch(() => {
this.loadingBtn=false
});
} else {
addWarehouseInApi(param).then((response) => {
this.$modal.msgSuccess("保存成功");
this.loadingBtn=false
this.jumpList()
}).catch(() => {
this.loadingBtn=false
});
}
}
}
}
});
},
//导入
importPurchaseOrder(){
if(this.baseInfo.areaId!=undefined&&this.baseInfo.warehouseId!=undefined){
this.openImportDialog=true
this.resetQuery2()
// setTimeout(()=>{
// this.$refs.multipleTable2.clearSelection()
// },300)
}else{
this.$modal.msgError("请先选择区域,仓库");
}
},
/** 搜索按钮操作 */
handleQuery2() {
this.queryParams2.pageNum = 1;
this.getList2();
},
/** 重置按钮操作 */
resetQuery2() {
this.queryParams2 = {
pageNum: 1,
pageSize: 10,
}
this.resetForm("queryForm2");
this.handleQuery2();
},
/** 查询列表 */
getList2() {
this.loading2 = true;
let param = {
"pageSize": this.queryParams2.pageSize,
"pageNum": this.queryParams2.pageNum,
"orderGoodsCode": this.queryParams2.orderGoodsCode,
"orderStatus":2,
"isInspect":0,
"ifAllInto":2,
"areaId": this.baseInfo.areaId,
"warehouseId": this.baseInfo.warehouseId,
"supplierId": this.baseInfo.deliverySupplierId,
}
purchaseOrderPageApi(param).then(response => {
this.tableListData2 = response.rows;
this.total2 = Number(response.total);
this.loading2 = false;
});
},
confirmImport(row){
console.log(row)
this.importRow = row;
let param = {
orderGoodsId:this.importRow.orderGoodsId
}
getPurchaseOrderInfoApi(param).then((response) => {
this.materialDetailsData = response.data.orderGoodsDetailList||[];
this.$modal.confirm('是否确认导入采购订单?').then(()=>{
if(this.materialDetailsData.length>0){
this.materialList = this.materialDetailsData;
this.materialList.forEach(item=>{
this.$set(item,"unitPrice",Number(item.singlePrice)/100)
this.$set(item,"supplierId",this.importRow.supplierId)
if(item.intoNum&&item.intoNum>0){
this.$set(item,"purNum",Number(item.totalQualifiedNum)-Number(item.intoNum))
}else{
this.$set(item,"purNum",Number(item.totalQualifiedNum))
}
})
this.baseInfo.relateOrderGoodsId = this.importRow.orderGoodsCode;
this.$set(this.baseInfo,"remark","导入采购订单")
setTimeout(()=>{
this.openImportDialog=false
},500)
}else{
this.$modal.msgError("采购订单明细无货品!");
}
}).catch(() => {});
});
},
patternValue(row){
row.purNum = row.purNum.replace(/[^\d.]/g, '').replace(/^(\d*\.\d{2}).*$/, '$1')
if(row.intoNum&&row.intoNum>0){
setTimeout(()=>{
if(Number(row.purNum)>(Number(row.totalQualifiedNum)-Number(row.intoNum))){
row.purNum = Number(row.totalQualifiedNum)-Number(row.intoNum)
}
},500)
}else{
setTimeout(()=>{
if(Number(row.purNum)>Number(row.totalQualifiedNum)){
row.purNum = Number(row.totalQualifiedNum)
}
},500)
}
},
//日期
formatDate(date) {
// 格式化为 YYYY-MM-DD
date = new Date(date)
const year = date.getFullYear();
const month = String(date.getMonth() + 1).padStart(2, '0'); // 月份从0开始
const day = String(date.getDate()).padStart(2, '0');
return `${year}-${month}-${day}`;
},
//日期时间
formatDateTime(date) {
// 格式化为 YYYY-MM-DD
date = new Date(date)
const year = date.getFullYear();
const month = String(date.getMonth() + 1).padStart(2, '0'); // 月份从0开始
const day = String(date.getDate()).padStart(2, '0');
const hours = date.getHours() < 10 ? '0' + date.getHours() : date.getHours()
const minutes = date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes()
const seconds = date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds()
return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;
}
}
};
</script>
<style scoped>
.dishes-card{
width: 20%;
height: 100%;
margin-right: 15px;
position: relative;
}
.body-card{
width: 96%;
margin: 10px auto;
display: flex;
flex-direction: column;
height: 300px;
overflow-y: auto;
}
.bottom-card{
width: 100%;
height: 60px;
display: flex;
align-items: center;
justify-content: center;
position: absolute;
bottom: 0;
}
.dialog-left{
width: 20%;
height: 100%;
}
.dish-name{
width: 100%;
height: 32px;
display: flex;
align-items: center;
cursor: pointer;
}
.dish-name:hover{
background-color:rgba(0, 0, 0, 0.1);
color: #4b80fd;
}
.dialog-center{
width: 10%;
height: 100%;
/* background: #4b80fd; */
border: 1px solid #ccc;
border-radius: 5px;
margin: 0 1%;
}
.dialog-center-header{
width: 100%;display: flex;align-items: center;justify-content: center;height: 60px;font-weight: bold;border-bottom: 1px solid #ccc;
}
.dialog-right{
width: 70%;
height: 100%;
}
.primary{
background: #1890ff!important;
color: #fff!important;
}
.dateTable{
width: 14%;
height: 40px;
color: #9a9da3;
display: flex;
align-items: center;
justify-content: center;
border: 1px solid #e6ebf5;
}
.dateTable2{
width: 14%;
height: 40px;
display: flex;
align-items: center;
justify-content: center;
background: #fff;
color:#000;
border: 1px solid #e6ebf5;
cursor: pointer;
}
.bgBlue{
width: 14%;
height: 40px;
display: flex;
align-items: center;
justify-content: center;
background: #0c6ccc;
color:#fff !important;
border: 1px solid #fff;
cursor: pointer;
}
</style>