You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
udiwms-vue-frame/src/views/inventory/InvMAOrderModify.vue

574 lines
19 KiB
Vue

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<template>
<div>
<el-card style="margin: 5px;margin-top: -20px">
<el-form :model="formData" ref="dataForm" label-width="100px" style="margin-bottom: -15px">
<el-button-group style="display: flex;margin: 0px 0 10px 80%; height: 35px">
<el-button
type="primary"
:disabled="this.detailList.length > 0"
@click.native="selectInvProduct()"
>录入产品
</el-button>
<el-button
type="primary"
@click.native="saveMAOrder()"
>保存
</el-button>
</el-button-group>
<el-row>
<el-col :span="10">
<el-form-item class="query-form-item" label="养护记录号:">
<el-input v-model="formData.orderId"
auto-complete="off"
:disabled="true"
style="width: 90%"
clearable
></el-input>
</el-form-item>
</el-col>
<el-col :span="10">
<el-form-item class="query-form-item" label="养护日期:">
<el-input v-model="formData.createTime"
auto-complete="off"
:disabled="true"
style="width: 90%"
clearable
></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="10">
<el-form-item class="query-form-item" label="养护仓库:">
<el-select v-model="formData.invCode" placeholder="养护仓库信息"
:disabled="detailList.length >0 "
@change="invChange"
style="width: 90%;"
clearable>
<el-option
v-for="item in warehouseList"
:key="item.name"
:label="item.name"
:value="item.code">
<span style="float: left">{{ item.name }}</span>
<span style="float: right; color: #8492a6; font-size: 13px">{{ item.parentName }}</span>
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="10">
<el-form-item class="query-form-item" label="养护货位:">
<el-select v-model="formData.invSpaceCode" placeholder="养护货位信息"
:disabled="detailList.length >0 "
style="width: 90%"
clearable>
<el-option
v-for="item in spaceList"
:key="item.name"
:label="item.name"
:value="item.code">
<span style="float: left">{{ item.name }}</span>
<span style="float: right; color: #8492a6; font-size: 13px">{{ item.code }}</span>
</el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="18">
<el-form-item class="query-form-item" label="扫码录入:">
<el-input
id="inputer"
@focus="getInputFocus($event)"
@keypress.enter.native="enterKey($event)"
ref='inputRef'
style="ime-mode:disabled"
type="tel"
v-model="formData.code"
></el-input>
</el-form-item>
</el-col>
<el-col :span="2">
<el-button
type="primary"
size="mini"
@click.native.stop="addCode()"
style="margin-left: 15px"
>添加
</el-button>
</el-col>
</el-row>
<el-table v-loading="loading" :data="detailList" style="width: 100%;margin-top: 20px;"
highlight-current-row
border max-height="300" height="300">
<el-table-column label="序号" type="index" width="50"></el-table-column>
<el-table-column label="条码" width="180" prop="code" show-overflow-tooltip></el-table-column>
<el-table-column width="150" label="产品通用名" prop="productName" show-overflow-tooltip></el-table-column>
<el-table-column width="150" label="规格型号" prop="ggxh" show-overflow-tooltip></el-table-column>
<el-table-column width="150" label="批次号" prop="batchNo"></el-table-column>
<el-table-column width="150" label="养护数量" prop="count"></el-table-column>
<el-table-column width="150" label="养护状态" prop="maintenanceStatus">
<template slot-scope="scope">
<el-radio :disabled="scope.$index !== currentIndex" v-model="scope.row.maStatus"
:label="0">未养护
</el-radio>
<el-radio :disabled="scope.$index !== currentIndex" v-model="scope.row.maStatus"
:label="1">已养护
</el-radio>
</template>
</el-table-column>
<el-table-column width="150" label="设备状态" prop="deviceStatus">
<template slot-scope="scope">
<el-radio :disabled="scope.$index !== currentIndex" v-model="scope.row.deviceStatus" :label="1">
正常
</el-radio>
<el-radio :disabled="scope.$index !== currentIndex" v-model="scope.row.deviceStatus" :label="0">
</el-radio>
</template>
</el-table-column>
<el-table-column width="200" label="养护备注" prop="remark">
<template slot-scope="scope">
<el-input :disabled="scope.$index !== currentIndex" v-model="scope.row.remark"></el-input>
</template>
</el-table-column>
<el-table-column label="生产日期(yyMMdd)" prop="productionDate"></el-table-column>
<el-table-column label="失效日期(yyMMdd)" prop="expireDate"
show-overflow-tooltip></el-table-column>
<el-table-column label="注册/备案凭证号" prop="zczbhhzbapzbh"
show-overflow-tooltip></el-table-column>
<el-table-column label="生产企业" prop="ylqxzcrbarmc"
show-overflow-tooltip></el-table-column>
<el-table-column label="操作">
<template slot-scope="scope">
<el-button
type="text"
size="small"
@click.stop="true"
@click.native="editOrderDetail(scope.$index, scope.row)"
>编辑
</el-button
>
<el-button
type="text"
size="small"
@click.stop="true"
@click.native="updateOrderDetail(scope.row)"
>保存
</el-button
>
<el-button
type="text"
size="small"
@click.stop="true"
@click.native="deleteOrderDetail(scope.$index, scope.row)"
>减一
</el-button
>
</template>
</el-table-column>
</el-table>
</el-form>
</el-card>
<el-dialog
title="库存产品录入"
:visible.sync="selectInvProductVisible"
:close-on-click-modal="false"
:close-on-press-escape="false"
width="85%"
v-if="selectInvProductVisible"
:append-to-body='true'
>
<el-form :inline="true" :model="filterQuery" size="mini">
<el-row>
<el-form-item class="query-form-item" label="产品标识DI:">
<el-input v-model="filterQuery.nameCode" placeholder="产品标识DI" clearable></el-input>
</el-form-item>
<el-form-item class="query-form-item" label="产品名称:">
<el-input v-model="filterQuery.cpmctymc" placeholder="产品名称" clearable></el-input>
</el-form-item>
<el-form-item class="query-form-item" label="批次号:">
<el-input v-model="filterQuery.batchNo" placeholder="批次号" clearable></el-input>
</el-form-item>
<el-form-item>
<el-button-group>
<el-button type="primary" icon="el-icon-refresh" @click="onReset"></el-button>
<el-button type="primary" icon="search" @click="queryInvProductsList"
>查询
</el-button
>
<el-button type="primary" icon="search" @click="combine">确定</el-button>
</el-button-group>
</el-form-item>
</el-row>
</el-form>
<el-table v-loading="loading" :data="productList" style="width: 100%"
highlight-current-row="false"
:row-key="getRowKeys"
@selection-change="handleSelectionChange"
ref="multipleTable">
<el-table-column
type="selection"
:reserve-selection="true"
width="55">
</el-table-column>
<el-table-column label="序号" type="index"></el-table-column>
<el-table-column label="产品标识" prop="nameCode"></el-table-column>
<el-table-column label="产品名称" prop="cpmctymc"></el-table-column>
<el-table-column label="规格型号" prop="ggxh"></el-table-column>
<el-table-column label="批次号" prop="batchNo"></el-table-column>
<el-table-column label="生产日期" prop="productionDate" width="120"></el-table-column>
<el-table-column label="失效日期" prop="expireDate" width="120"></el-table-column>
</el-table>
<pagination
v-show="productTotal>0"
:total="productTotal"
:limit.sync="filterQuery.limit"
:page.sync="filterQuery.page"
@pagination="queryInvProducts"
></pagination>
</el-dialog>
</div>
</template>
<script>
import {getInvListByUser} from "@/api/system/invWarehouse";
import {getInvSpaceList} from "@/api/inventory/invSpace";
import {
addInvMAOrder,
addInvMAOrderDetail,
batchAddDetail,
updateInvMAOrderDetail,
updateInvMAOrder,
deleteInvMAOrderDetail,
getInvMAOrderDetailList
} from "@/api/inventory/invMAOrder";
import {getInvMAProducts} from "@/api/inventory/invPorduct";
import {isBlank} from "@/utils/strUtil";
export default {
props: {
maOrder: {
type: Object,
required: true,
},
closeDialog: {
type: Function,
required: true,
},
},
data() {
return {
filterQuery: {
nameCode: null,
cpmctymc: null,
batchNo: null,
invCode: null,
invSpaceCode: null,
page: 1,
limit: 10
},
productList: [],
productTotal: 0,
warehouseList: [],
spaceList: [],
formData: {
orderId: null,
createTime: null,
invCode: null,
invSpaceCode: null,
status: 0,
code: null,
},
detailList: [],
loading: false,
scanText: "扫码录入",
currentIndex: -1,
selectInvProductVisible: false,
multiProduct: []
}
},
methods: {
getInvList() {
getInvListByUser().then((res) => {
if (res.code === 20000) {
this.warehouseList = res.data || [];
if (!isBlank(this.maOrder.invSpaceCode)) {
this.invChange();
this.formData.invSpaceCode = this.maOrder.invSpaceCode;
}
}
});
},
invChange() {
this.formData.invSpaceCode = null;
this.spaceList = [];
let params = {invWarehouseCode: this.formData.invCode, status: 1};
getInvSpaceList(params).then((res) => {
this.spaceList = res.data.list || [];
});
},
selectInvProduct() {
if (isBlank(this.formData.invCode)) {
this.$message.error("请选择养护仓库");
return;
}
//保存或更新养护记录仓库信息
this.saveOrder();
this.onReset();
this.selectInvProductVisible = true;
},
saveMAOrder() {
this.saveOrder();
this.closeDialog();
},
saveOrder(code) {
if (isBlank(this.formData.invCode)) {
this.$message.warning("请选择养护仓库");
return;
}
if (!isBlank(this.formData.orderId)) {
//更新单据
updateInvMAOrder(this.formData).then((res) => {
if (!isBlank(this.formData.code)) {
//判断此条码在列表中是否存在,如果已存在则表示已添加
let flag = false;
for (let i = 0; i < this.detailList.length; i++) {
if (this.detailList[i].code === this.formData.code) {
flag = true;
break;
}
}
//此条码未保存,关闭弹窗之前调用接口添加详情记录
if (!flag) {
//扫码添加库存养护记录详情
let params = {
orderIdFk: this.formData.orderId,
code: this.formData.code
};
addInvMAOrderDetail(params).then((res) => {
if (res.code === 20000) {
this.$message.success("添加成功");
this.getList();
} else {
this.$message.error(res.message);
}
});
}
}
}).catch((error) => {
this.$message.error("更新单据信息失败");
})
} else {
addInvMAOrder(this.formData).then((res) => {
if (res.code === 20000) {
this.formData.orderId = res.data.orderId;
this.formData.createTime = res.data.createTime;
if (!isBlank(code)) {
//扫码添加库存养护记录详情
let params = {
orderIdFk: this.formData.orderId,
code: this.formData.code
}
addInvMAOrderDetail(params).then((res) => {
if (res.code === 20000) {
this.$message.success("添加成功");
this.getList();
} else {
this.$message.error(res.message);
}
});
}
} else {
this.$message.error(res.message);
}
});
}
},
getInputFocus(event) {
event.currentTarget.select();
},
enterKey(event) {
this.addCode();
this.$refs.inputRef.focus();
this.$refs.inputRef.select();
},
addCode() {
if (isBlank(this.formData.invCode)) {
this.$message.warning("请先选择养护仓库");
return;
}
if (isBlank(this.formData.code)) {
this.$message.error("请输入或扫描条码")
return;
}
if (isBlank(this.formData.orderId)) {
this.saveOrder(this.formData.code);
return;
}
if (this.detailList.length === 0) {
this.saveOrder();
} else {
//扫码添加库存养护记录详情
let params = {
orderIdFk: this.formData.orderId,
code: this.formData.code
};
addInvMAOrderDetail(params).then((res) => {
if (res.code === 20000) {
this.$message.success("添加成功");
this.getList();
} else {
this.$message.error(res.message);
}
});
}
},
deleteOrderDetail(index, row) {
if (row.count === 1) {
this.$confirm('此产品养护数量为1减一后将删除此产品养护记录是否继续?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
this.formData.code = null;
let params = {id: row.id};
deleteInvMAOrderDetail(params).then((res) => {
if (res.code === 20000) {
this.$message.success("删除成功");
this.getList();
}
})
}).catch(() => {
});
} else {
this.formData.code = null;
let params = {id: row.id};
deleteInvMAOrderDetail(params).then((res) => {
if (res.code === 20000) {
this.$message.success("删除成功");
this.getList();
}
})
}
},
getList() {
let params = {orderIdFk: this.formData.orderId};
getInvMAOrderDetailList(params).then((res) => {
if (res.code === 20000) {
this.detailList = res.data.list || [];
}
})
},
updateOrderDetail(row) {
updateInvMAOrderDetail(row).then((res) => {
if (res.code === 20000) {
this.$message.success("保存成功")
this.getList();
}
})
},
editOrderDetail(index, row) {
this.currentIndex = index;
},
onReset() {
this.filterQuery = {
nameCode: null,
cpmctymc: null,
batchNo: null,
invCode: null,
invSpaceCode: null,
page: 1,
limit: 10
};
this.multiProduct = [];
this.queryInvProducts();
},
handleCurrentChange(val) {
this.filterQuery.page = val;
this.queryInvProducts();
},
queryInvProductsList() {
this.filterQuery.page = 1;
this.queryInvProducts();
},
queryInvProducts() {
this.filterQuery.invCode = this.formData.invCode;
this.filterQuery.invSpaceCode = this.formData.invSpaceCode;
getInvMAProducts(this.filterQuery).then((res) => {
if (res.code === 20000) {
this.productList = res.data.list || [];
this.productTotal = res.data.total || 0;
} else {
this.$message.error(res.message);
this.productList = [];
this.productTotal = 0;
}
}).catch((error) => {
this.$message.error(error.message);
this.productList = [];
this.productTotal = 0;
});
},
combine() {
if (this.multiProduct.length === 0) {
this.$message.error("请选择养护产品");
return;
}
let invProductIds = [];
this.multiProduct.forEach(item => {
invProductIds.push(item.id);
});
let params = {
orderIdFk: this.formData.orderId,
invProductIds: invProductIds
};
batchAddDetail(params).then((res) => {
if (res.code === 20000) {
this.$message.success("录入成功");
this.selectInvProductVisible = false;
this.getList();
} else {
this.$message.error(res.message);
}
}).catch((error) => {
this.$message.error(error.message);
})
},
getRowKeys(row) {
return row.id;
},
handleSelectionChange(selectedRows) {
this.multiProduct = [];
selectedRows.forEach(item => {
this.multiProduct.push(item);
});
},
},
created() {
this.getInvList();
if (null !== this.maOrder && !isBlank(this.maOrder.orderId)) {
this.formData.orderId = this.maOrder.orderId;
this.formData.createTime = this.maOrder.createTime;
this.formData.invCode = this.maOrder.invCode;
this.formData.invSpaceCode = this.maOrder.invSpaceCode;
this.getList();
}
},
};
</script>