You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
691 lines
22 KiB
691 lines
22 KiB
<script>
|
|
import {getWareHouseList} from "../../../api/partspare/wareHouseEntity";
|
|
import {getAllBuList} from "../../../api/factory/site";
|
|
import {getInventoryStockList} from "../../../api/partspare/inventorystock";
|
|
import {saveBatchPurchaseOrder} from "../../../api/partspare/purchaseOrder";
|
|
import {Decimal} from "decimal.js";
|
|
|
|
export default {
|
|
name: "inventoryStockPurchasing",
|
|
data(){
|
|
return{
|
|
span:3,
|
|
queryParams: {
|
|
site: this.$store.state.user.site,
|
|
limit: 50,
|
|
page: 1,
|
|
partNo: '',
|
|
partDescription: '',
|
|
spec: '',
|
|
batchNo: '',
|
|
warehouseId: '',
|
|
locationId: '',
|
|
startFirstInDate: '',
|
|
endFirstInDate: '',
|
|
startQtyOnHand: '',
|
|
endQtyOnHand: '',
|
|
groupType: '0',
|
|
active: 'Y',
|
|
safetyStock: '不安全',
|
|
buNo: '',
|
|
securityMethod:'库存和在途',
|
|
searchType:'PO',
|
|
},
|
|
buList:[],
|
|
wareHouseList:[],
|
|
dataList: [],
|
|
queryLoading: false,
|
|
total:0,
|
|
columns:[
|
|
{
|
|
userId: this.$store.state.user.name,
|
|
functionId: 200101106,
|
|
serialNumber: '200101106Table1BuDesc',
|
|
tableId: '200101106Table1',
|
|
tableName: '备品备件采购表',
|
|
columnProp: 'buDesc',
|
|
headerAlign: 'center',
|
|
align: 'center',
|
|
columnLabel: 'BU',
|
|
columnHidden: false,
|
|
columnImage: false,
|
|
columnSortable: false,
|
|
sortLv: 0,
|
|
status: true,
|
|
fixed: '',
|
|
columnWidth: 80
|
|
},
|
|
{
|
|
userId: this.$store.state.user.name,
|
|
functionId: 200101106,
|
|
serialNumber: '200101106Table1PartNo',
|
|
tableId: '200101106Table1',
|
|
tableName: '备品备件采购表',
|
|
columnProp: 'partNo',
|
|
headerAlign: 'center',
|
|
align: 'left',
|
|
columnLabel: '备品备件编码',
|
|
columnHidden: false,
|
|
columnImage: false,
|
|
columnSortable: false,
|
|
sortLv: 0,
|
|
status: true,
|
|
fixed: '',
|
|
columnWidth: 120
|
|
},
|
|
{
|
|
userId: this.$store.state.user.name,
|
|
functionId: 200101106,
|
|
serialNumber: '200101106Table1PartDescription',
|
|
tableId: '200101106Table1',
|
|
tableName: '备品备件采购表',
|
|
columnProp: 'partDescription',
|
|
headerAlign: 'center',
|
|
align: 'left',
|
|
columnLabel: '备品备件名称',
|
|
columnHidden: false,
|
|
columnImage: false,
|
|
columnSortable: false,
|
|
sortLv: 0,
|
|
status: true,
|
|
fixed: '',
|
|
columnWidth: 160
|
|
},
|
|
{
|
|
userId: this.$store.state.user.name,
|
|
functionId: 200101106,
|
|
serialNumber: '200101106Table1BatchNo',
|
|
tableId: '200101106Table1',
|
|
tableName: '备品备件采购表',
|
|
columnProp: 'batchNo',
|
|
headerAlign: 'center',
|
|
align: 'left',
|
|
columnLabel: '序列号',
|
|
columnHidden: false,
|
|
columnImage: false,
|
|
columnSortable: false,
|
|
sortLv: 0,
|
|
status: true,
|
|
fixed: '',
|
|
columnWidth: 100
|
|
},
|
|
{
|
|
userId: this.$store.state.user.name,
|
|
functionId: 200101106,
|
|
serialNumber: '200101106Table1WarehouseId',
|
|
tableId: '200101106Table1',
|
|
tableName: '备品备件采购表',
|
|
columnProp: 'warehouseId',
|
|
headerAlign: 'center',
|
|
align: 'left',
|
|
columnLabel: '仓库编码',
|
|
columnHidden: false,
|
|
columnImage: false,
|
|
columnSortable: false,
|
|
sortLv: 0,
|
|
status: true,
|
|
fixed: '',
|
|
columnWidth: 100
|
|
},
|
|
{
|
|
userId: this.$store.state.user.name,
|
|
functionId: 200101106,
|
|
serialNumber: '200101106Table1LocationId',
|
|
tableId: '200101106Table1',
|
|
tableName: '备品备件采购表',
|
|
columnProp: 'locationId',
|
|
headerAlign: 'center',
|
|
align: 'left',
|
|
columnLabel: '货位编码',
|
|
columnHidden: false,
|
|
columnImage: false,
|
|
columnSortable: false,
|
|
sortLv: 0,
|
|
status: true,
|
|
fixed: '',
|
|
columnWidth: 100
|
|
},
|
|
{
|
|
userId: this.$store.state.user.name,
|
|
functionId: 200101106,
|
|
serialNumber: '200101106Table1UmId',
|
|
tableId: '200101106Table1',
|
|
tableName: '备品备件采购表',
|
|
columnProp: 'umid',
|
|
headerAlign: 'center',
|
|
align: 'left',
|
|
columnLabel: '单位',
|
|
columnHidden: false,
|
|
columnImage: false,
|
|
columnSortable: false,
|
|
sortLv: 0,
|
|
status: true,
|
|
fixed: '',
|
|
columnWidth: 80
|
|
},
|
|
{
|
|
userId: this.$store.state.user.name,
|
|
functionId: 200101106,
|
|
serialNumber: '200101106Table1QtyOnHand',
|
|
tableId: '200101106Table1',
|
|
tableName: '备品备件采购表',
|
|
columnProp: 'qtyOnHand',
|
|
headerAlign: 'center',
|
|
align: 'right',
|
|
columnLabel: '在库数量',
|
|
columnHidden: false,
|
|
columnImage: false,
|
|
columnSortable: false,
|
|
sortLv: 0,
|
|
status: true,
|
|
fixed: '',
|
|
columnWidth: 80
|
|
},
|
|
{
|
|
userId: this.$store.state.user.name,
|
|
functionId: 200101106,
|
|
serialNumber: '200101106Table1MinStock',
|
|
tableId: '200101106Table1',
|
|
tableName: '备品备件采购表',
|
|
columnProp: 'minStock',
|
|
headerAlign: 'center',
|
|
align: 'right',
|
|
columnLabel: '最低库存数量',
|
|
columnHidden: false,
|
|
columnImage: false,
|
|
columnSortable: false,
|
|
sortLv: 0,
|
|
status: true,
|
|
fixed: '',
|
|
columnWidth: 100
|
|
},
|
|
{
|
|
userId: this.$store.state.user.name,
|
|
functionId: 200101106,
|
|
serialNumber: '200101106Table1QtyOfPo',
|
|
tableId: '200101106Table1',
|
|
tableName: '备品备件采购表',
|
|
columnProp: 'qtyOfPo',
|
|
headerAlign: 'center',
|
|
align: 'right',
|
|
columnLabel: '在途订单数量',
|
|
columnHidden: false,
|
|
columnImage: false,
|
|
columnSortable: false,
|
|
sortLv: 0,
|
|
status: true,
|
|
fixed: '',
|
|
columnWidth: 100
|
|
},
|
|
{
|
|
userId: this.$store.state.user.name,
|
|
functionId: 200101106,
|
|
serialNumber: '200101106Table1PartnerId',
|
|
tableId: '200101106Table1',
|
|
tableName: '备品备件采购表',
|
|
columnProp: 'partnerId',
|
|
headerAlign: 'center',
|
|
align: 'left',
|
|
columnLabel: '操作员',
|
|
columnHidden: false,
|
|
columnImage: false,
|
|
columnSortable: false,
|
|
sortLv: 0,
|
|
status: true,
|
|
fixed: '',
|
|
columnWidth: 100
|
|
},
|
|
{
|
|
userId: this.$store.state.user.name,
|
|
functionId: 200101106,
|
|
serialNumber: '200101106Table1FirstInDate',
|
|
tableId: '200101106Table1',
|
|
tableName: '备品备件采购表',
|
|
columnProp: 'firstInDate',
|
|
headerAlign: 'center',
|
|
align: 'center',
|
|
columnLabel: '录入日期',
|
|
columnHidden: false,
|
|
columnImage: false,
|
|
columnSortable: false,
|
|
sortLv: 0,
|
|
status: true,
|
|
fixed: '',
|
|
columnWidth: 150
|
|
},
|
|
],
|
|
columns2:[
|
|
{
|
|
userId: this.$store.state.user.name,
|
|
functionId: 200101106,
|
|
serialNumber: '200101106Table1BuDesc',
|
|
tableId: '200101106Table1',
|
|
tableName: '备品备件采购表',
|
|
columnProp: 'buDesc',
|
|
headerAlign: 'center',
|
|
align: 'center',
|
|
columnLabel: 'BU',
|
|
columnHidden: false,
|
|
columnImage: false,
|
|
columnSortable: false,
|
|
sortLv: 0,
|
|
status: true,
|
|
fixed: '',
|
|
columnWidth: 80
|
|
},
|
|
{
|
|
userId: this.$store.state.user.name,
|
|
functionId: 200101106,
|
|
serialNumber: '200101106Table1PartNo',
|
|
tableId: '200101106Table1',
|
|
tableName: '备品备件采购表',
|
|
columnProp: 'partNo',
|
|
headerAlign: 'center',
|
|
align: 'left',
|
|
columnLabel: '备品备件编码',
|
|
columnHidden: false,
|
|
columnImage: false,
|
|
columnSortable: false,
|
|
sortLv: 0,
|
|
status: true,
|
|
fixed: '',
|
|
columnWidth: 120
|
|
},
|
|
{
|
|
userId: this.$store.state.user.name,
|
|
functionId: 200101106,
|
|
serialNumber: '200101106Table1PartDescription',
|
|
tableId: '200101106Table1',
|
|
tableName: '备品备件采购表',
|
|
columnProp: 'partDescription',
|
|
headerAlign: 'center',
|
|
align: 'left',
|
|
columnLabel: '备品备件名称',
|
|
columnHidden: false,
|
|
columnImage: false,
|
|
columnSortable: false,
|
|
sortLv: 0,
|
|
status: true,
|
|
fixed: '',
|
|
columnWidth: 160
|
|
},
|
|
{
|
|
userId: this.$store.state.user.name,
|
|
functionId: 200101106,
|
|
serialNumber: '200101106Table1QtyOnHand',
|
|
tableId: '200101106Table1',
|
|
tableName: '备品备件采购表',
|
|
columnProp: 'qtyOnHand',
|
|
headerAlign: 'center',
|
|
align: 'right',
|
|
columnLabel: '在库数量',
|
|
columnHidden: false,
|
|
columnImage: false,
|
|
columnSortable: false,
|
|
sortLv: 0,
|
|
status: true,
|
|
fixed: '',
|
|
columnWidth: 80
|
|
},
|
|
{
|
|
userId: this.$store.state.user.name,
|
|
functionId: 200101106,
|
|
serialNumber: '200101106Table1MinStock',
|
|
tableId: '200101106Table1',
|
|
tableName: '备品备件采购表',
|
|
columnProp: 'minStock',
|
|
headerAlign: 'center',
|
|
align: 'right',
|
|
columnLabel: '最低库存数量',
|
|
columnHidden: false,
|
|
columnImage: false,
|
|
columnSortable: false,
|
|
sortLv: 0,
|
|
status: true,
|
|
fixed: '',
|
|
columnWidth: 100
|
|
},
|
|
{
|
|
userId: this.$store.state.user.name,
|
|
functionId: 200101106,
|
|
serialNumber: '200101106Table1QtyOfPo',
|
|
tableId: '200101106Table1',
|
|
tableName: '备品备件采购表',
|
|
columnProp: 'qtyOfPo',
|
|
headerAlign: 'center',
|
|
align: 'right',
|
|
columnLabel: '在途订单数量',
|
|
columnHidden: false,
|
|
columnImage: false,
|
|
columnSortable: false,
|
|
sortLv: 0,
|
|
status: true,
|
|
fixed: '',
|
|
columnWidth: 100
|
|
},
|
|
],
|
|
selectionDataList:[],
|
|
purchaseVisible:false,
|
|
purchaseLoading:false,
|
|
}
|
|
},
|
|
methods:{
|
|
handleQuery(){
|
|
this.queryLoading = true
|
|
getInventoryStockList(this.queryParams).then(({data}) => {
|
|
if (data && data.code === 0) {
|
|
this.dataList = data.page.list
|
|
this.total = data.page.totalCount
|
|
} else {
|
|
this.dataList = []
|
|
this.total = 0
|
|
}
|
|
this.queryLoading = false
|
|
}).catch((error)=>{
|
|
this.$message.error(error)
|
|
this.queryLoading = false
|
|
})
|
|
},
|
|
getWareHouseList(){
|
|
let wareHouse = {
|
|
site: this.$store.state.user.site,
|
|
active: 'Y',
|
|
warehousetype: "备品备件仓",
|
|
}
|
|
getWareHouseList(wareHouse).then(({data}) =>{
|
|
if (data && data.code === 0){
|
|
this.wareHouseList = data.data
|
|
}
|
|
})
|
|
},
|
|
getBuList() {
|
|
let tempData = {
|
|
username: this.$store.state.user.name,
|
|
}
|
|
getAllBuList(tempData).then(({data}) => {
|
|
if (data && data.code === 0) {
|
|
this.buList = data.rows
|
|
}
|
|
})
|
|
},
|
|
handleQueryBySize(val){
|
|
this.queryParams.limit = val
|
|
this.handleQuery()
|
|
},
|
|
handleQueryByPage(val){
|
|
this.queryParams.page = val
|
|
this.handleQuery()
|
|
},
|
|
rowStyle({row}){
|
|
// 当前行在库数量
|
|
let qtyOnHand = row.qtyOnHand
|
|
// 当前行最低库存数量
|
|
let minStock = row.minStock
|
|
// 在途数量
|
|
let qtyOfPo = row.qtyOfPo
|
|
// 累计数量
|
|
if (this.queryParams.securityMethod === '库存和在途'){
|
|
qtyOnHand += qtyOfPo
|
|
}
|
|
|
|
// 区分不同的样式对应不同的颜色
|
|
if (qtyOnHand <= minStock) {
|
|
return { 'background-color': '#D8ECF1', cursor: 'pointer' }
|
|
}
|
|
},
|
|
handleSelectionChange(val) {
|
|
let qty = 0;
|
|
this.selectionDataList = val.map(item => {
|
|
if (new Decimal(item.minStock).toNumber() > new Decimal(item.qtyOnHand).toNumber()){
|
|
qty = new Decimal(item.minStock).sub(new Decimal(item.qtyOnHand)).toNumber()
|
|
}
|
|
return {
|
|
...item,
|
|
purchaseQty: qty,
|
|
}
|
|
});
|
|
},
|
|
handlePurchase(){
|
|
if (this.selectionDataList.length === 0) {
|
|
this.$message.warning('请选择需要采购的备件')
|
|
return
|
|
}
|
|
this.purchaseVisible = true
|
|
},
|
|
handlePurchaseSave(){
|
|
let params = this.selectionDataList.map((item)=>{
|
|
return {
|
|
...item,
|
|
buNo:item.citemCode,
|
|
inventoryStockId: item.id,
|
|
id:null,
|
|
qty: item.purchaseQty,
|
|
}
|
|
})
|
|
this.purchaseLoading = true
|
|
saveBatchPurchaseOrder(params).then(({data})=>{
|
|
if (data && data.code === 0) {
|
|
this.handleQuery();
|
|
this.$refs.table.clearSelection();
|
|
this.purchaseVisible = false;
|
|
this.$message.success(data.msg)
|
|
}else {
|
|
this.$message.error(data.msg)
|
|
}
|
|
this.purchaseLoading = false
|
|
}).catch((error)=>{
|
|
this.$message.error(error)
|
|
this.purchaseLoading = false
|
|
})
|
|
}
|
|
|
|
},
|
|
watch:{
|
|
queryLoading(newVal, oldVal){
|
|
if (newVal === true){
|
|
setTimeout(()=>{
|
|
this.queryLoading = false
|
|
},3000)
|
|
}
|
|
},
|
|
purchaseLoading(newVal, oldVal){
|
|
if (newVal === true){
|
|
setTimeout(()=>{
|
|
this.purchaseLoading = false
|
|
},3000)
|
|
}
|
|
}
|
|
},
|
|
created() {
|
|
this.getBuList()
|
|
this.getWareHouseList()
|
|
this.handleQuery()
|
|
},
|
|
}
|
|
</script>
|
|
|
|
<template>
|
|
<div class="box-container">
|
|
<el-form label-position="top" :model="queryParams" style="max-width: 1200px">
|
|
<el-row :gutter="10">
|
|
<el-col :span="span">
|
|
<el-form-item label="备品备件编码">
|
|
<el-input v-model="queryParams.partNo" clearable></el-input>
|
|
</el-form-item>
|
|
</el-col>
|
|
<el-col :span="span">
|
|
<el-form-item label="备品备件名称">
|
|
<el-input v-model="queryParams.partDescription" clearable></el-input>
|
|
</el-form-item>
|
|
</el-col>
|
|
<el-col :span="span">
|
|
<el-form-item label="规格型号">
|
|
<el-input v-model="queryParams.spec" clearable></el-input>
|
|
</el-form-item>
|
|
</el-col>
|
|
<el-col :span="span">
|
|
<el-form-item label="序列号">
|
|
<el-input v-model="queryParams.batchNo" clearable></el-input>
|
|
</el-form-item>
|
|
</el-col>
|
|
<el-col :span="span">
|
|
<el-form-item label="仓库">
|
|
<el-select v-model="queryParams.warehouseId" style="width: 100%">
|
|
<el-option value="" label="全部"></el-option>
|
|
<el-option v-for="(item,index) in wareHouseList "
|
|
:key="item.warehouseId" :value="item.warehouseId" :label="item.warehouseName"></el-option>
|
|
</el-select>
|
|
</el-form-item>
|
|
</el-col>
|
|
<el-col :span="span">
|
|
<el-form-item label="汇总方式">
|
|
<el-select v-model="queryParams.groupType" style="width: 100%">
|
|
<el-option value="0" label="料号+序号"></el-option>
|
|
<el-option value="1" label="料号"></el-option>
|
|
</el-select>
|
|
</el-form-item>
|
|
</el-col>
|
|
<el-col :span="span*2">
|
|
<el-form-item label=" ">
|
|
<el-button type="primary" @click="handleQuery">查询</el-button>
|
|
<el-button type="primary" @click="handlePurchase">采购</el-button>
|
|
</el-form-item>
|
|
</el-col>
|
|
<el-col :span="span*2">
|
|
<el-form-item label="录入日期">
|
|
<el-date-picker
|
|
style="width: 47.5%"
|
|
v-model="queryParams.startFirstInDate"
|
|
type="date"
|
|
format="yyyy-MM-dd"
|
|
value-format="yyyy-MM-dd"
|
|
placeholder="选择日期">
|
|
</el-date-picker>
|
|
<span style="text-align: center">-</span>
|
|
<el-date-picker
|
|
style="width: 47.5%"
|
|
v-model="queryParams.endFirstInDate"
|
|
type="date"
|
|
format="yyyy-MM-dd"
|
|
value-format="yyyy-MM-dd 23:59:59"
|
|
placeholder="选择日期">
|
|
</el-date-picker>
|
|
</el-form-item>
|
|
</el-col>
|
|
<el-col :span="span*2">
|
|
<el-form-item label="在库数量范围">
|
|
<el-input style="width: 47.5%" v-model="queryParams.startQtyOnHand" clearable></el-input>
|
|
<span style="text-align: center">-</span>
|
|
<el-input style="width: 47.5%" v-model="queryParams.endQtyOnHand" clearable></el-input>
|
|
</el-form-item>
|
|
</el-col>
|
|
<el-col :span="span">
|
|
<el-form-item label="货位编码">
|
|
<el-input v-model="queryParams.startQtyOnHand" clearable></el-input>
|
|
</el-form-item>
|
|
</el-col>
|
|
<el-col :span="span">
|
|
<el-form-item label="BU">
|
|
<el-select v-model="queryParams.buNo" placeholder="请选择" style="width: 100%">
|
|
<el-option label="全部" value=""> </el-option>
|
|
<el-option
|
|
v-for = "i in buList"
|
|
:key = "i.buNo"
|
|
:label = "i.buDesc"
|
|
:value = "i.buNo">
|
|
</el-option>
|
|
</el-select>
|
|
</el-form-item>
|
|
</el-col>
|
|
<el-col :span="span">
|
|
<el-form-item label="安全库存汇总方式">
|
|
<el-select v-model="queryParams.securityMethod" style="width: 100%">
|
|
<el-option label="库存数量" value="库存"></el-option>
|
|
<el-option label="(库存+在途)数量" value="库存和在途"></el-option>
|
|
</el-select>
|
|
</el-form-item>
|
|
</el-col>
|
|
<el-col :span="span">
|
|
<el-form-item label=" ">
|
|
<el-checkbox v-model="queryParams.safetyStock" true-label="不安全" false-label="" @change="handleQuery">仅显示低于安全库存的备件</el-checkbox>
|
|
</el-form-item>
|
|
</el-col>
|
|
</el-row>
|
|
</el-form>
|
|
<div style="height: calc(100% - 120px)">
|
|
<el-table :data="dataList" border
|
|
height="100%" ref="table"
|
|
v-loading="queryLoading"
|
|
:row-style="rowStyle"
|
|
@selection-change="handleSelectionChange">
|
|
<el-table-column
|
|
type="selection"
|
|
header-align="center"
|
|
align="center"
|
|
width="50">
|
|
</el-table-column>
|
|
<el-table-column
|
|
v-for="(item,index) in columns" :key="index"
|
|
:sortable="item.columnSortable"
|
|
:prop="item.columnProp"
|
|
:header-align="item.headerAlign"
|
|
:show-overflow-tooltip="item.showOverflowTooltip"
|
|
:align="item.align"
|
|
:fixed="item.fixed===''?false:item.fixed"
|
|
:min-width="item.columnWidth"
|
|
:label="item.columnLabel">
|
|
<template slot-scope="scope">
|
|
<span v-if="!item.columnHidden">{{ scope.row[item.columnProp] }}</span>
|
|
<span v-if="item.columnImage"><img :src="scope.row[item.columnProp]" style="width: 100px; height: 80px"/></span>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table>
|
|
</div>
|
|
<el-pagination
|
|
style="margin-top: 5px"
|
|
@size-change="handleQueryBySize"
|
|
@current-change="handleQueryByPage"
|
|
:current-page="queryParams.page"
|
|
:page-sizes="[50, 100, 500, 1000]"
|
|
:page-size="queryParams.limit"
|
|
:total="total"
|
|
layout="total, sizes, prev, pager, next, jumper">
|
|
</el-pagination>
|
|
|
|
|
|
|
|
<el-dialog :visible.sync="purchaseVisible" title="待创建采购订单备件清单" :close-on-click-modal="false" width="1000px" v-drag>
|
|
<div class="rq">
|
|
<el-table :data="selectionDataList" border height="400px">
|
|
<el-table-column
|
|
v-for="(item,index) in columns2" :key="index"
|
|
:sortable="item.columnSortable"
|
|
:prop="item.columnProp"
|
|
:header-align="item.headerAlign"
|
|
:show-overflow-tooltip="item.showOverflowTooltip"
|
|
:align="item.align"
|
|
:fixed="item.fixed===''?false:item.fixed"
|
|
:min-width="item.columnWidth"
|
|
:label="item.columnLabel">
|
|
<template slot-scope="scope">
|
|
<span v-if="!item.columnHidden">{{ scope.row[item.columnProp] }}</span>
|
|
<span v-if="item.columnImage"><img :src="scope.row[item.columnProp]" style="width: 100px; height: 80px"/></span>
|
|
</template>
|
|
</el-table-column>
|
|
<el-table-column label="采购数量" align="center" min-width="100">
|
|
<template slot-scope="{row,$index}">
|
|
<el-input-number style="width: 100%;" :min="0" :controls="false" :step="0" v-model="selectionDataList[$index].purchaseQty"></el-input-number>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table>
|
|
</div>
|
|
<el-footer style="text-align: center;line-height: 1;height: 30px;margin-top: 10px">
|
|
<el-button type="primary" :loading="purchaseLoading" @click="handlePurchaseSave">保存</el-button>
|
|
<el-button type="primary" @click="purchaseVisible = false">关闭</el-button>
|
|
</el-footer>
|
|
</el-dialog>
|
|
</div>
|
|
</template>
|
|
|
|
<style scoped>
|
|
</style>
|