3 changed files with 1069 additions and 0 deletions
-
9src/api/partspare/purchaseOrder.js
-
690src/views/modules/partspare/inventoryStockPurchasing.vue
-
370src/views/modules/partspare/purchaseOrder.vue
@ -0,0 +1,9 @@ |
|||
import {createAPI} from "../../utils/httpRequest"; |
|||
|
|||
export const saveBatchPurchaseOrder = (data) =>createAPI(`purchase/order/batch/save`, 'post', data) |
|||
|
|||
export const queryPurchaseOrder = (data) =>createAPI(`purchase/order/${data.no}/${data.size}`, 'post', data) |
|||
|
|||
export const cancelPurchaseOrder = (data) =>createAPI(`purchase/order/cancel`, 'post', data) |
|||
|
|||
export const closePurchaseOrder = (data) =>createAPI(`purchase/order/close`, 'post', data) |
|||
@ -0,0 +1,690 @@ |
|||
<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:'库存和在途', |
|||
}, |
|||
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> |
|||
@ -0,0 +1,370 @@ |
|||
<script> |
|||
import {getAllBuList} from "../../../api/factory/site"; |
|||
import {cancelPurchaseOrder, queryPurchaseOrder} from "../../../api/partspare/purchaseOrder"; |
|||
|
|||
export default { |
|||
name: "purchaseOrder", |
|||
data(){ |
|||
return{ |
|||
span:3, |
|||
queryParams: { |
|||
site: this.$store.state.user.site, |
|||
buNo: '', |
|||
partNo: '', |
|||
partDescription: '', |
|||
status: '', |
|||
startDate:null, |
|||
endDate:null, |
|||
no:1, |
|||
size:50, |
|||
}, |
|||
buList: [], |
|||
dataList: [], |
|||
queryLoading: false, |
|||
total:0, |
|||
columns:[ |
|||
{ |
|||
userId: this.$store.state.user.name, |
|||
functionId: 200101107, |
|||
serialNumber: '200101107Table1BuDesc', |
|||
tableId: '200101107Table1', |
|||
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: 200101107, |
|||
serialNumber: '200101107Table1PurchaseOrderNo', |
|||
tableId: '200101107Table1', |
|||
tableName: '备品备件采购表', |
|||
columnProp: 'purchaseOrderNo', |
|||
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: 200101107, |
|||
serialNumber: '200101107Table1PartNo', |
|||
tableId: '200101107Table1', |
|||
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: 200101107, |
|||
serialNumber: '200101107Table1PartDescription', |
|||
tableId: '200101107Table1', |
|||
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: 200101107, |
|||
serialNumber: '200101107Table1Qty', |
|||
tableId: '200101107Table1', |
|||
tableName: '备品备件采购表', |
|||
columnProp: 'qty', |
|||
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: 200101107, |
|||
serialNumber: '200101107Table1UmId', |
|||
tableId: '200101107Table1', |
|||
tableName: '备品备件采购表', |
|||
columnProp: 'umId', |
|||
headerAlign: 'center', |
|||
align: 'left', |
|||
columnLabel: '单位', |
|||
columnHidden: false, |
|||
columnImage: false, |
|||
columnSortable: false, |
|||
sortLv: 0, |
|||
status: true, |
|||
fixed: '', |
|||
columnWidth: 60 |
|||
}, |
|||
{ |
|||
userId: this.$store.state.user.name, |
|||
functionId: 200101107, |
|||
serialNumber: '200101107Table1Status', |
|||
tableId: '200101107Table1', |
|||
tableName: '备品备件采购表', |
|||
columnProp: 'status', |
|||
headerAlign: 'center', |
|||
align: 'center', |
|||
columnLabel: '状态', |
|||
columnHidden: false, |
|||
columnImage: false, |
|||
columnSortable: false, |
|||
sortLv: 0, |
|||
status: true, |
|||
fixed: '', |
|||
columnWidth: 80 |
|||
}, |
|||
{ |
|||
userId: this.$store.state.user.name, |
|||
functionId: 200101107, |
|||
serialNumber: '200101107Table1CreateTime', |
|||
tableId: '200101107Table1', |
|||
tableName: '备品备件采购表', |
|||
columnProp: 'createTime', |
|||
headerAlign: 'center', |
|||
align: 'center', |
|||
columnLabel: '下单时间', |
|||
columnHidden: false, |
|||
columnImage: false, |
|||
columnSortable: false, |
|||
sortLv: 0, |
|||
status: true, |
|||
fixed: '', |
|||
columnWidth: 140 |
|||
}, |
|||
{ |
|||
userId: this.$store.state.user.name, |
|||
functionId: 200101107, |
|||
serialNumber: '200101107Table1CreateBy', |
|||
tableId: '200101107Table1', |
|||
tableName: '备品备件采购表', |
|||
columnProp: 'createBy', |
|||
headerAlign: 'center', |
|||
align: 'left', |
|||
columnLabel: '下单人', |
|||
columnHidden: false, |
|||
columnImage: false, |
|||
columnSortable: false, |
|||
sortLv: 0, |
|||
status: true, |
|||
fixed: '', |
|||
columnWidth: 80 |
|||
}, |
|||
], |
|||
} |
|||
}, |
|||
methods:{ |
|||
getBuList() { |
|||
let tempData = { |
|||
username: this.$store.state.user.name, |
|||
} |
|||
getAllBuList(tempData).then(({data}) => { |
|||
if (data && data.code === 0) { |
|||
this.buList = data.rows |
|||
} |
|||
}) |
|||
}, |
|||
handleQuery(){ |
|||
this.queryLoading = true |
|||
queryPurchaseOrder(this.queryParams).then(({data})=>{ |
|||
if (data && data.code === 0) { |
|||
this.dataList = data.rows |
|||
this.total = data.total |
|||
}else { |
|||
this.$message.warning(data.msg) |
|||
} |
|||
this.queryLoading = false |
|||
}).catch((error)=>{ |
|||
this.$message.error(error) |
|||
this.queryLoading = false |
|||
}) |
|||
}, |
|||
handleQueryBySize(val){ |
|||
this.queryParams.size = val; |
|||
this.handleQuery(); |
|||
}, |
|||
handleQueryByPage(val){ |
|||
this.queryParams.no = val; |
|||
this.handleQuery(); |
|||
}, |
|||
handleCancel(row){ |
|||
this.$confirm('确定取消该采购订单吗?',{ |
|||
confirmButtonText: '确定', |
|||
cancelButtonText: '取消', |
|||
type: 'warning' |
|||
}).then(()=>{ |
|||
cancelPurchaseOrder(row).then(({data})=>{ |
|||
if (data && data.code === 0) { |
|||
this.$message.success(data.msg) |
|||
this.handleQuery() |
|||
}else { |
|||
this.$message.warning(data.msg) |
|||
} |
|||
}).catch((error)=>{ |
|||
this.$message.error(error) |
|||
}) |
|||
}) |
|||
}, |
|||
handleClose(row){ |
|||
|
|||
} |
|||
}, |
|||
watch:{ |
|||
queryLoading(newVal,oldVal){ |
|||
if (newVal === true){ |
|||
setTimeout(()=>{ |
|||
this.queryLoading=false |
|||
},3000) |
|||
} |
|||
} |
|||
}, |
|||
created() { |
|||
this.getBuList(); |
|||
this.handleQuery(); |
|||
console.log(this.$route.meta.menuId) |
|||
} |
|||
} |
|||
</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="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-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*2"> |
|||
<el-form-item label="下单日期"> |
|||
<el-date-picker |
|||
style="width: 47.5%" |
|||
v-model="queryParams.startDate" |
|||
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.endDate" |
|||
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"> |
|||
<el-form-item label="状态"> |
|||
<el-select v-model="queryParams.status" placeholder="请选择" style="width: 100%"> |
|||
<el-option label="全部" value=""> </el-option> |
|||
<el-option label="已取消" value="已取消"> </el-option> |
|||
<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-button type="primary" @click="handleQuery">查询</el-button> |
|||
</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"> |
|||
<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-column label="操作" align="center" width="100"> |
|||
<template slot-scope="scope"> |
|||
<a v-if="scope.row.status === '进行中'" @click="handleCancel(scope.row)">取消</a> |
|||
<!-- <a @click="handleClose(scope.row)">关闭</a>--> |
|||
</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> |
|||
</div> |
|||
</template> |
|||
|
|||
<style scoped> |
|||
|
|||
</style> |
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue