Browse Source

备品备件 2023年3月1日 sxm

java8
[li_she] 3 years ago
parent
commit
9569edcdfa
  1. 38
      src/api/partspare/inventorystock.js
  2. 26
      src/api/partspare/partspare.js
  3. 4
      src/api/partspare/repairtransdetail.js
  4. 17
      src/api/partspare/resourcespare.js
  5. 4
      src/api/partspare/wareHouseEntity.js
  6. 465
      src/views/modules/partspare/inventorystock.vue
  7. 251
      src/views/modules/partspare/partspare-add-or-update.vue
  8. 606
      src/views/modules/partspare/partspare.vue
  9. 390
      src/views/modules/partspare/repairtransdetail.vue
  10. 149
      src/views/modules/partspare/resourcespare-add-or-update.vue
  11. 281
      src/views/modules/partspare/resourcespare.vue

38
src/api/partspare/inventorystock.js

@ -0,0 +1,38 @@
import { createAPI } from "@/utils/httpRequest.js";
import getLodop from '@/utils/LodopFuncs.js'
// 获取列表
export const getInventoryStockList = data => createAPI(`api/pms/inventorystock/getInventoryStockList`,'post',data)
// 打印
export function partSpareTemp(dataList) {
const LODOP = getLodop()
if (LODOP) {
console.log(dataList)
for (const row of dataList) {
LODOP.NewPage();
LODOP.SET_PRINT_PAGESIZE(0, 800, 600, "");
LODOP.SET_PRINT_STYLE("FontSize", 8);
LODOP.SET_PRINT_STYLE("LineHeight", -2);
// //内容,参数(上边距,左边距,内容显示宽度,内容显示高度)
LODOP.ADD_PRINT_BARCODE(3, 3, 105, 101, "QRCode", row.partNo);
//LODOP.ADD_PRINT_TEXT(140,8,140,130,"" +row.toolInstanceID );
LODOP.ADD_PRINT_TEXT(10, 100, 100, 20, "备品备件编码:");
LODOP.ADD_PRINT_TEXT(10, 189, 140, 21, row.partNo);
LODOP.ADD_PRINT_TEXT(29, 100, 100, 21, "备品备件名称:");
LODOP.ADD_PRINT_TEXT(29, 189, 140, 21, row.partDescription);
LODOP.ADD_PRINT_TEXT(50, 99, 100, 20, "计量单位:");
LODOP.ADD_PRINT_TEXT(50, 189, 141, 21, row.umid);
LODOP.ADD_PRINT_TEXT(95, 6, 68, 20, "规格型号:");
LODOP.ADD_PRINT_TEXT(95, 73, 241, 21, row.spec);
LODOP.ADD_PRINT_TEXT(69, 98, 92, 20, "库位编码:");
LODOP.ADD_PRINT_TEXT(70, 188, 141, 21, row.locationId);
}
// LODOP.PRINT_DESIGN();
LODOP.PREVIEW();
// LODOP.PRINT();
}
}

26
src/api/partspare/partspare.js

@ -0,0 +1,26 @@
import {createAPI} from "@/utils/httpRequest.js";
// 备品备件信息
// 获取列表
export const getPartSpareList = data => createAPI(`api/pms/partspare/getPartSpareList`, 'post', data)
// 明细
export const getPartSpareInfo = data => createAPI(`api/pms/partspare/getPartSpareInfo`, 'post', data)
// 保存信息
export const savePartSpare = data => createAPI(`api/pms/partspare/savePartSpare`, 'post', data)
// 修改信息
export const updatePartSpare = data => createAPI(`api/pms/partspare/updatePartSpare`, 'post', data)
// 删除信息
export const deletePartSpare = data => createAPI(`api/pms/partspare/deletePartSpare`, 'post', data)
// 修改在途信息
export const updatePartSpareInTransit = data => createAPI(`api/pms/partspare/updatePartSpareInTransit`, 'post', data)

4
src/api/partspare/repairtransdetail.js

@ -0,0 +1,4 @@
import { createAPI } from "@/utils/httpRequest.js";
// 获取列表
export const getRepairTransDetailList = data => createAPI(`api/pms/repairtransdetail/getRepairTransDetailList`,'post',data)

17
src/api/partspare/resourcespare.js

@ -0,0 +1,17 @@
import { createAPI } from "@/utils/httpRequest.js";
// 获取列表
export const getResourceSpareList = data => createAPI(`api/pms/resourcespare/getResourceSpareList`,'post',data)
// 详情
export const getResourceSpareInfo = data => createAPI(`api/pms/resourcespare/getResourceSpareInfo`,'post',data)
// 保存信息
export const saveResourceSpare = data => createAPI(`api/pms/resourcespare/saveResourceSpare`,'post',data)
// 编辑信息
export const updateResourceSpare = data => createAPI(`api/pms/resourcespare/updateResourceSpare`,'post',data)
// 删除信息
export const deleteResourceSpare = data => createAPI(`api/pms/resourcespare/deleteResourceSpare`,'post',data)

4
src/api/partspare/wareHouseEntity.js

@ -0,0 +1,4 @@
import { createAPI } from "@/utils/httpRequest.js";
// 获取列表
export const getWareHouseList = data => createAPI(`api/pms/wareHouse/getWareHouseList`,'post',data)

465
src/views/modules/partspare/inventorystock.vue

@ -0,0 +1,465 @@
<template>
<div class="mod-config">
<el-row>
<el-col :span="24">
<el-form :inline="true" label-position="top" >
<el-form-item label="备品备件编码">
<el-input v-model="queryForm.partNo" clearable></el-input>
</el-form-item>
<el-form-item label="备品备件名称">
<el-input v-model="queryForm.partDescription" clearable></el-input>
</el-form-item>
<el-form-item label="规格型号">
<el-input v-model="queryForm.spec" clearable></el-input>
</el-form-item>
<el-form-item label="序列号">
<el-input v-model="queryForm.batchNo" clearable></el-input>
</el-form-item>
<el-form-item label="仓库">
<el-select v-model="queryForm.warehouseId">
<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-form-item label="汇总方式">
<el-select v-model="queryForm.groupType">
<el-option value="0" label="料号+序号"></el-option>
<el-option value="1" label="料号"></el-option>
</el-select>
</el-form-item>
<el-form-item label=" ">
<el-button type="primary" @click="getDataList()">查询</el-button>
<el-button type="primary" :disabled="this.dataListSelections.length==0" @click="printList()">打印</el-button>
</el-form-item>
</el-form>
<el-form :inline="true" label-position="top" >
<el-form-item label="录入日期">
<el-date-picker
style="width: 145px"
v-model="queryForm.startFirstInDate"
type="date"
format="yyyy-MM-dd"
value-format="yyyy-MM-dd"
placeholder="选择日期">
</el-date-picker>
-
<el-date-picker
style="width: 145px"
v-model="queryForm.endFirstInDate"
type="date"
format="yyyy-MM-dd"
value-format="yyyy-MM-dd 23:59:59"
placeholder="选择日期">
</el-date-picker>
</el-form-item>
<el-form-item label="在库数量范围">
<el-input style="width: 145px" v-model="queryForm.startQtyOnHand" clearable></el-input>
-
<el-input style="width: 145px" v-model="queryForm.endQtyOnHand" clearable></el-input>
</el-form-item>
<el-form-item label="库位编码">
<el-input v-model="queryForm.warehouseId" clearable></el-input>
</el-form-item>
</el-form>
</el-col>
</el-row>
<el-table
:data="dataList"
border
:height="height"
v-loading="dataListLoading"
@selection-change="handleSelectionChange"
style="width: 100%;">
<el-table-column
v-if="queryForm.groupType==0"
type="selection"
header-align="center"
align="center"
width="50">
</el-table-column>
<el-table-column
v-for="(item,index) in columnList" :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>
<el-pagination
@size-change="sizeChangeHandle"
@current-change="currentChangeHandle"
:current-page="pageIndex"
:page-sizes="[20, 100, 500, 1000]"
:page-size="pageSize"
:total="totalPage"
layout="total, sizes, prev, pager, next, jumper">
</el-pagination>
</div>
</template>
<script>
import {
getInventoryStockList,partSpareTemp
} from '@/api/partspare/inventorystock.js'
import {
getWareHouseList,
} from '@/api/partspare/wareHouseEntity.js'
export default {
data() {
return {
queryForm: {
site: this.$store.state.user.site,
limit: 1,
page: '',
partNo: '',
partDescription: '',
spec: '',
batchNo: '',
warehouseId: '',
locationId: '',
startFirstInDate: '',
endFirstInDate: '',
startQtyOnHand: '',
endQtyOnHand: '',
groupType: '0',
active: 'Y',
},
dataList: [],
wareHouseList: [],
pageIndex: 1,
pageSize: 20,
totalPage: 0,
height: 200,
dataListLoading: false,
dataListSelections: [],
addOrUpdateVisible: false,
//
columnList: [],
//
arrayPart: [
{
columnProp: 'partNo',
headerAlign: "center",
align: "left",
columnLabel: '备品备件编码',
columnHidden: false,
columnImage: false,
columnSortable: true,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 140,
},
{
columnProp: 'partDescription',
headerAlign: "center",
align: "left",
columnLabel: '备品备件名称',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 140,
},
{
columnProp: 'warehouseId',
headerAlign: "center",
align: "left",
columnLabel: '仓库编码',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 140,
}, {
columnProp: 'locationId',
headerAlign: "center",
align: "left",
columnLabel: '库位编码',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 140,
}, {
columnProp: 'inQty',
headerAlign: "center",
align: "right",
columnLabel: '入库数量',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 140,
}, {
columnProp: 'outQty',
headerAlign: "center",
align: "right",
columnLabel: '出库数量',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 140,
}, {
columnProp: 'qtyOnHand',
headerAlign: "center",
align: "right",
columnLabel: '在库数量',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 140,
}, {
columnProp: 'spec',
headerAlign: "center",
align: "right",
columnLabel: '规格型号',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 140,
}],
// _
arrayColumns: [
{
columnProp: 'partNo',
headerAlign: "center",
align: "left",
columnLabel: '备品备件编码1',
columnHidden: false,
columnImage: false,
columnSortable: true,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 140,
},
{
columnProp: 'partDescription',
headerAlign: "center",
align: "left",
columnLabel: '备品备件名称',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 140,
},
{
columnProp: 'batchNo',
headerAlign: "center",
align: "left",
columnLabel: '序列号',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 140,
}, {
columnProp: 'warehouseId',
headerAlign: "center",
align: "left",
columnLabel: '仓库编码',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 140,
}, {
columnProp: 'locationId',
headerAlign: "center",
align: "left",
columnLabel: '库位编码',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 140,
}, {
columnProp: 'inQty',
headerAlign: "center",
align: "right",
columnLabel: '入库数量',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 140,
}, {
columnProp: 'outQty',
headerAlign: "center",
align: "right",
columnLabel: '出库数量',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 140,
}, {
columnProp: 'qtyOnHand',
headerAlign: "center",
align: "right",
columnLabel: '在库数量',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 140,
}, {
columnProp: 'spec',
headerAlign: "center",
align: "left",
columnLabel: '规格型号',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 140,
}, {
columnProp: 'partnerId',
headerAlign: "center",
align: "left",
columnLabel: '操作员',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 140,
}, {
columnProp: 'firstInDate',
headerAlign: "center",
align: "left",
columnLabel: '录入日期',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 140,
}]
}
},
watch: {
'queryForm.groupType': {
handler(newVal, oldVal) {
if (this.queryForm.groupType==0){
this.columnList = this.arrayColumns
}else {
this.columnList = this.arrayPart
}
},
deep: true,
immediate: true
}
},
activated() {
this.getDataList()
this.getWareHouseList()
},
mounted() {
this.$nextTick(() => {
this.height = window.innerHeight - 210
this.columnList = this.arrayColumns
})
},
methods: {
//
getWareHouseList(){
let wareHouse = {
site: this.$store.state.user.site,
active: 'Y',
warehousetype: "备品备件仓",
}
getWareHouseList(wareHouse).then(({data}) =>{
if (data.code == 0 && data.data){
this.wareHouseList = data.data
}
})
},
handleSelectionChange(val) {
this.dataListSelections = val;
},
//
printList(){
partSpareTemp(this.dataListSelections)
},
//
getDataList() {
this.dataListLoading = true
this.queryForm.page = this.pageIndex
this.queryForm.limit = this.pageSize
getInventoryStockList(this.queryForm).then(({data}) => {
if (data && data.code === 0) {
this.dataList = data.page.list
this.totalPage = data.page.totalCount
} else {
this.dataList = []
this.totalPage = 0
}
this.dataListLoading = false
})
},
//
sizeChangeHandle(val) {
this.pageSize = val
this.pageIndex = 1
this.getDataList()
},
//
currentChangeHandle(val) {
this.pageIndex = val
this.getDataList()
},
}
}
</script>

251
src/views/modules/partspare/partspare-add-or-update.vue

@ -0,0 +1,251 @@
<template>
<div class="mod-partspare">
<el-dialog
@close="closeDialog"
v-drag
:title=" !this.addOrUpdate ? '新增' : '修改'"
:close-on-click-modal="false"
width="500px"
:visible.sync="visible">
<el-form :inline="true" label-position="top" :model="dataForm" ref="dataForm"
@keyup.enter.native="dataFormSubmit()"
label-width="120px">
<el-form-item required label="备品备件编码" >
<el-input :disabled="addOrUpdate" v-model="dataForm.partNo"></el-input>
</el-form-item>
<el-form-item required label="备品备件名称">
<el-input v-model="dataForm.partDescription"></el-input>
</el-form-item>
<el-form-item required label="规格型号">
<el-input v-model="dataForm.spec"></el-input>
</el-form-item>
<el-form-item required label="产品组编码">
<el-input v-model="dataForm.groupId"></el-input>
</el-form-item>
<el-form-item required label="计价单位">
<el-input v-model="dataForm.averagePrice"></el-input>
</el-form-item>
<el-form-item required label="单价单位">
<el-input v-model="dataForm.umid"></el-input>
</el-form-item>
<el-form-item required label="预计使用寿命">
<el-input-number :min="0" style="width: 146px" v-model="dataForm.estUseQty" :step="2"
step-strictly></el-input-number>
</el-form-item>
<el-form-item required label="最高库存数量">
<el-input-number :min="0" style="width: 146px" v-model="dataForm.maxStock" :step="2"
step-strictly></el-input-number>
</el-form-item>
<el-form-item required label="最低库存数量">
<el-input-number :min="0" style="width: 146px" v-model="dataForm.minStock" :step="2"
step-strictly></el-input-number>
</el-form-item>
<el-form-item required label="状态">
<el-select v-model="dataForm.active">
<el-option value="Y" label="启用"></el-option>
<el-option value="N" label="禁用"></el-option>
</el-select>
</el-form-item>
<el-form-item required >
<span slot="label" style="" @click="getBaseList(110)"><a herf="#">供应商编码</a></span>
<el-input v-model="dataForm.supplierId"></el-input>
</el-form-item>
<el-form-item required>
<span slot="label" style="" @click="getBaseList(111)"><a herf="#">仓库编码</a></span>
<el-input v-model="dataForm.warehouseId"></el-input>
</el-form-item>
<el-form-item required>
<el-link v-if="dataForm.warehouseId" slot="label" @click="getBaseList(112)">库位编码</el-link>
<span v-if="!dataForm.warehouseId" slot="label">库位编码</span>
<el-input v-model="dataForm.locationId"></el-input>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button type="primary" @click="dataFormSubmit()">确定</el-button>
<el-button type="primary" @click="visible = false">取消</el-button>
</span>
</el-dialog>
<Chooselist ref="baseList" @getBaseData="getBaseData"></Chooselist>
</div>
</template>
<script>
import Chooselist from '@/views/modules/common/Chooselist_eam'
import {getPartSpareInfo, savePartSpare, updatePartSpare} from '@/api/partspare/partspare.js'
export default {
data() {
return {
visible: false,
dataForm: {
active: "Y",
averagePrice: '',
createdBy: '',
estUseQty: 0,
id: '',
locationId: '',
maxStock: 0,
minStock: 0,
partDescription: "",
partNo: '',
sCodeControlFlag: '',
site: this.$store.state.user.site,
spec: '',
supplierId: '',
umid: '',
warehouseId: '',
groupId:'',
},
addOrUpdate: false,
tagNo: 0,
}
},
components: {
Chooselist
},
methods: {
// S
getBaseList(val, type) {
this.tagNo = val
this.$nextTick(() => {
let strVal = ''
let conSql = ''
if (val === 110) {
strVal = this.dataForm.supplierId
}
if (val === 111) {
strVal = this.dataForm.warehouseId
}
if (val === 112) {
strVal = this.dataForm.locationId
let whereValue = this.dataForm.warehouseId ? "'" + this.dataForm.warehouseId + "'" : "'*'"
conSql = ' and warehouse_id = ' + whereValue
}
this.$refs.baseList.init(val, strVal, conSql)
})
},
/* 列表方法的回调 */
getBaseData(val) {
if (this.tagNo === 110) {
this.dataForm.supplierId = val.supplier_id
}
if (this.tagNo === 111) {
this.dataForm.warehouseId = val.warehouse_id
}
if (this.tagNo === 112) {
this.dataForm.locationId = val.location_id
}
},
init(row) {
this.addOrUpdate = row ? true : false
this.visible = true
this.$nextTick(() => {
if (this.addOrUpdate) {
this.dataForm.site = row.site
this.dataForm.partNo = row.partNo
getPartSpareInfo(this.dataForm).then(({data}) => {
if (data && data.code === 0) {
this.dataForm.active = data.partSpare.active
this.dataForm.averagePrice = data.partSpare.averagePrice
this.dataForm.createdBy = data.partSpare.createdBy
this.dataForm.umid = data.partSpare.umid
this.dataForm.minStock = data.partSpare.minStock
this.dataForm.maxStock = data.partSpare.maxStock
this.dataForm.supplierId = data.partSpare.supplierId
this.dataForm.createDate = data.partSpare.createDate
this.dataForm.lastUpdateBy = data.partSpare.lastUpdateBy
this.dataForm.estUseQty = data.partSpare.estUseQty
this.dataForm.sCodeControlFlag = data.partSpare.sCodeControlFlag
this.dataForm.locationId = data.partSpare.locationId
this.dataForm.warehouseId = data.partSpare.warehouseId
this.dataForm.partDescription = data.partSpare.partDescription
this.dataForm.partNo = data.partSpare.partNo
this.dataForm.site = data.partSpare.site
this.dataForm.spec = data.partSpare.spec
this.dataForm.groupId = data.partSpare.groupId
}
})
}
})
},
//
dataFormSubmit() {
if (!this.dataForm.partNo) {
this.$message.warning("备品备件编码不能为空!")
return;
}
if (!this.dataForm.partDescription) {
this.$message.warning("备品备件名称不能为空!")
return;
}
if (!this.dataForm.partNo) {
this.$message.warning("规格型号不能为空!")
return;
}
if (!this.dataForm.groupId) {
this.$message.warning("产品组编码不能为空")
return;
}
if (!this.dataForm.averagePrice) {
this.$message.warning("计价单位不能为空")
return;
}
if (!this.dataForm.umid) {
this.$message.warning("单价单位不能为空")
return;
}
if (!this.dataForm.estUseQty) {
this.$message.warning("预计使用寿命必须大于0")
return;
}
if (!this.dataForm.maxStock) {
this.$message.warning("最高库存数量必须大于0")
return;
}
if (this.dataForm.minStock != '') {
this.$message.warning("最低库存数量不能为空")
return;
}
if (!this.dataForm.supplierId) {
this.$message.warning("供应商编码不能为空")
return;
}
if (!this.dataForm.warehouseId) {
this.$message.warning("仓库编码不能为空")
return;
}
if (!this.dataForm.locationId) {
this.$message.warning("库位编码不能为空")
return;
}
if (this.addOrUpdate) {
updatePartSpare(this.dataForm).then(({data}) => {
if (data && data.code == 0) {
this.$message.success(data.msg)
this.visible = false
} else {
this.$message.warning(data.msg)
}
})
} else {
savePartSpare(this.dataForm).then(({data}) => {
if (data && data.code == 0) {
this.$message.success(data.msg)
this.visible = false
} else {
this.$message.warning(data.msg)
}
})
}
},
closeDialog() {
this.$nextTick(() => {
this.$emit('refreshDataList')
Object.assign(this.$data, this.$options.data.call(this));
})
},
}
}
</script>

606
src/views/modules/partspare/partspare.vue

@ -0,0 +1,606 @@
<template>
<div class="mod-config">
<el-row>
<el-col :span="24">
<el-form :inline="true" label-position="top" :model="queryForm" @keyup.enter.native="getDataList()">
<el-form-item label="备品备件编码">
<el-input v-model="queryForm.partNo" clearable></el-input>
</el-form-item>
<el-form-item label="备品备件名称">
<el-input v-model="queryForm.partDescription" clearable></el-input>
</el-form-item>
<el-form-item label="规格型号">
<el-input v-model="queryForm.spec" clearable></el-input>
</el-form-item>
<el-form-item label="状态">
<el-select v-model="queryForm.active">
<el-option value="" label="全部"></el-option>
<el-option value="Y" label="启用"></el-option>
<el-option value="N" label="禁用"></el-option>
</el-select>
</el-form-item>
<el-form-item label="仓库">
<el-select v-model="queryForm.warehouseId">
<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-form-item label=" ">
<el-button type="primary" @click="getDataList()">查询</el-button>
<el-button type="primary" @click="addOrUpdateHandle()">新增</el-button>
</el-form-item>
</el-form>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-table
:data="dataList"
border
:height="height"
v-loading="dataListLoading"
style="width: 100%;">
<el-table-column
v-for="(item,index) in columnList" :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
fixed="right"
header-align="center"
align="center"
width="150"
label="操作">
<template slot-scope="scope">
<el-link type="text" size="small" @click="getInTransit(scope.row)">在途信息</el-link>
<el-link type="text" size="small" @click="addOrUpdateHandle(scope.row)">| 修改</el-link>
<el-link type="text" size="small" @click="deleteHandle(scope.row)">| 删除</el-link>
</template>
</el-table-column>
</el-table>
<el-pagination
style="margin-top: -2px;"
@size-change="sizeChangeHandle"
@current-change="currentChangeHandle"
:current-page="pageIndex"
:page-sizes="[20, 100, 500, 1000]"
:page-size="pageSize"
:total="totalPage"
layout="total, sizes, prev, pager, next, jumper">
</el-pagination>
</el-col>
</el-row>
<!-- 弹窗,在途信息 -->
<el-dialog
@close="closeDialog"
v-drag
title="在途信息"
:close-on-click-modal="false"
width="300px"
:visible.sync="inTransitVisible">
<el-form label-position="top"
label-width="120px">
<el-form-item label="备品备件编码" prop="partNo">
<el-input :disabled="true" v-model="inTransit.partNo"></el-input>
</el-form-item>
<el-form-item label="在途信息">
<el-input type="textarea" v-model="inTransit.inTransitInfo"></el-input>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button style="margin-top: 30px" type="primary" @click="inTransitFormSubmit()">确定</el-button>
<el-button type="primary" @click="inTransitVisible = false">取消</el-button>
</span>
</el-dialog>
<!-- 弹窗, 新增 / 修改 -->
<add-or-update v-if="addOrUpdateVisible" ref="addOrUpdate" @refreshDataList="getDataList"></add-or-update>
</div>
</template>
<script>
import AddOrUpdate from './partspare-add-or-update'
import {
getPartSpareList, deletePartSpare, getPartSpareInfo, updatePartSpareInTransit
} from '@/api/partspare/partspare.js'
import {
getWareHouseList,
} from '@/api/partspare/wareHouseEntity.js'
export default {
data() {
return {
queryForm: {
site: this.$store.state.user.site,
partNo: '',
partDescription: '',
spec: '',
active: '',
warehouseId: '',
limit: 1,
page: '',
},
dataList: [],
wareHouseList: [],
pageIndex: 1,
pageSize: 20,
totalPage: 0,
height: 200,
dataListLoading: false,
dataListSelections: [],
inTransitVisible: false,
inTransit: {
site: this.$store.state.user.site,
partNo: '',
inTransitInfo: '',
userName: this.$store.state.user.name
},
addOrUpdateVisible: false,
//
columnList: [
{
userId: this.$store.state.user.name,
functionId: this.$route.meta.menuId,
serialNumber: 'toolDetail1101ToolId',
tableId: "toolOIRecord",
tableName: "common",
columnProp: 'site',
headerAlign: "center",
align: "left",
columnLabel: '工厂编号',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: 'left',
columnWidth: 140,
},
{
userId: this.$store.state.user.name,
functionId: this.$route.meta.menuId,
serialNumber: 'toolDetail1101ToolId',
tableId: "toolOIRecord",
tableName: "common",
columnProp: 'partNo',
headerAlign: "center",
align: "left",
columnLabel: '备品备件编码',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 140,
},
{
userId: this.$store.state.user.name,
functionId: this.$route.meta.menuId,
serialNumber: 'toolDetail1101ToolId',
tableId: "toolOIRecord",
tableName: "common",
columnProp: 'partDescription',
headerAlign: "center",
align: "left",
columnLabel: '备品备件名称',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 140,
},
{
userId: this.$store.state.user.name,
functionId: this.$route.meta.menuId,
serialNumber: 'toolDetail1101ToolId',
tableId: "toolOIRecord",
tableName: "common",
columnProp: 'spec',
headerAlign: "center",
align: "left",
columnLabel: '规格型号',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 140,
},
{
userId: this.$store.state.user.name,
functionId: this.$route.meta.menuId,
serialNumber: 'toolDetail1101ToolId',
tableId: "toolOIRecord",
tableName: "common",
columnProp: 'umid',
headerAlign: "center",
align: "left",
columnLabel: '单价单位',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 140,
},
{
userId: this.$store.state.user.name,
functionId: this.$route.meta.menuId,
serialNumber: 'toolDetail1101ToolId',
tableId: "toolOIRecord",
tableName: "common",
columnProp: 'remark',
headerAlign: "center",
align: "left",
columnLabel: '备注',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 140,
},
{
userId: this.$store.state.user.name,
functionId: this.$route.meta.menuId,
serialNumber: 'toolDetail1101ToolId',
tableId: "toolOIRecord",
tableName: "common",
columnProp: 'stock',
headerAlign: "center",
align: "left",
columnLabel: '库存数量',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 140,
},
{
userId: this.$store.state.user.name,
functionId: this.$route.meta.menuId,
serialNumber: 'toolDetail1101ToolId',
tableId: "toolOIRecord",
tableName: "common",
columnProp: 'stockInArrive',
headerAlign: "center",
align: "left",
columnLabel: '待检仓库库存数量',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 140,
},
{
userId: this.$store.state.user.name,
functionId: this.$route.meta.menuId,
serialNumber: 'toolDetail1101ToolId',
tableId: "toolOIRecord",
tableName: "common",
columnProp: 'stockInQuality',
headerAlign: "center",
align: "left",
columnLabel: '隔离仓库库存数量',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 140,
},
{
userId: this.$store.state.user.name,
functionId: this.$route.meta.menuId,
serialNumber: 'toolDetail1101ToolId',
tableId: "toolOIRecord",
tableName: "common",
columnProp: 'stockInConsignment',
headerAlign: "center",
align: "left",
columnLabel: '异地仓库库存数量',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 140,
},
{
userId: this.$store.state.user.name,
functionId: this.$route.meta.menuId,
serialNumber: 'toolDetail1101ToolId',
tableId: "toolOIRecord",
tableName: "common",
columnProp: 'stockInPicking',
headerAlign: "center",
align: "left",
columnLabel: '正常库存数量',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 140,
},
{
userId: this.$store.state.user.name,
functionId: this.$route.meta.menuId,
serialNumber: 'toolDetail1101ToolId',
tableId: "toolOIRecord",
tableName: "common",
columnProp: 'stockinActive',
headerAlign: "center",
align: "left",
columnLabel: '无效库存数量',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 140,
},
{
userId: this.$store.state.user.name,
functionId: this.$route.meta.menuId,
serialNumber: 'toolDetail1101ToolId',
tableId: "toolOIRecord",
tableName: "common",
columnProp: 'qtyonPo',
headerAlign: "center",
align: "left",
columnLabel: '在途订单数量',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 140,
},
{
userId: this.$store.state.user.name,
functionId: this.$route.meta.menuId,
serialNumber: 'toolDetail1101ToolId',
tableId: "toolOIRecord",
tableName: "common",
columnProp: 'minStock',
headerAlign: "center",
align: "left",
columnLabel: '最低库存数量',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 140,
},
{
userId: this.$store.state.user.name,
functionId: this.$route.meta.menuId,
serialNumber: 'toolDetail1101ToolId',
tableId: "toolOIRecord",
tableName: "common",
columnProp: 'averagePrice',
headerAlign: "center",
align: "right",
columnLabel: '单价',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 140,
},
{
userId: this.$store.state.user.name,
functionId: this.$route.meta.menuId,
serialNumber: 'toolDetail1101ToolId',
tableId: "toolOIRecord",
tableName: "common",
columnProp: 'estUseQty',
headerAlign: "center",
align: "right",
columnLabel: '预计使用寿命',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 140,
},
{
userId: this.$store.state.user.name,
functionId: this.$route.meta.menuId,
serialNumber: 'toolDetail1101ToolId',
tableId: "toolOIRecord",
tableName: "common",
columnProp: 'sCodeControlFlag',
headerAlign: "center",
align: "left",
columnLabel: '是否启用序列号管理',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 140,
},
{
userId: this.$store.state.user.name,
functionId: this.$route.meta.menuId,
serialNumber: 'toolDetail1101ToolId',
tableId: "toolOIRecord",
tableName: "common",
columnProp: 'safetyStock',
headerAlign: "center",
align: "left",
columnLabel: '安全库存数量',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 140,
}, {
userId: this.$store.state.user.name,
functionId: this.$route.meta.menuId,
serialNumber: 'toolDetail1101ToolId',
tableId: "toolOIRecord",
tableName: "common",
columnProp: 'active',
headerAlign: "center",
align: "left",
columnLabel: '状态',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 140,
},
],
}
},
components: {
AddOrUpdate
},
mounted() {
this.$nextTick(() => {
this.height = window.innerHeight - 170
})
},
activated() {
this.getDataList()
this.getWareHouseList()
},
methods: {
//
getWareHouseList() {
let wareHouse = {
site: this.$store.state.user.site,
active: 'Y',
warehousetype: "备品备件仓",
}
getWareHouseList(wareHouse).then(({data}) => {
if (data.code == 0 && data.data) {
this.wareHouseList = data.data
}
})
},
//
getDataList() {
this.dataListLoading = true
this.queryForm.page = this.pageIndex
this.queryForm.limit = this.pageSize
getPartSpareList(this.queryForm).then(({data}) => {
if (data && data.code === 0) {
this.dataList = data.page.list
this.totalPage = data.page.totalCount
} else {
this.dataList = []
this.totalPage = 0
}
this.dataListLoading = false
})
},
//
sizeChangeHandle(val) {
this.pageSize = val
this.pageIndex = 1
this.getDataList()
},
//
currentChangeHandle(val) {
this.pageIndex = val
this.getDataList()
},
// /
addOrUpdateHandle(row) {
this.addOrUpdateVisible = true
this.$nextTick(() => {
this.$refs.addOrUpdate.init(row)
})
},
//
deleteHandle(row) {
this.$confirm(`确定执行删除操作?`, '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
deletePartSpare(row).then(({data}) => {
if (data && data.code === 0) {
this.$message.success(data.msg)
this.getDataList()
} else {
this.$message.error(data.msg)
}
})
})
},
//
getInTransit(row) {
this.inTransitVisible = true
getPartSpareInfo(row).then(({data}) => {
if (data && data.code == 0) {
this.inTransit.partNo = data.partSpare.partNo
this.inTransit.inTransitInfo = data.partSpare.inTransitInfo
}
})
},
//
inTransitFormSubmit() {
updatePartSpareInTransit(this.inTransit).then(({data}) =>{
if (data && data.code == 0 ){
this.$message.success(data.msg)
this.inTransitVisible = false
}else {
this.$message.warning(data.msg)
}
})
},
closeDialog() {
}
}
}
</script>

390
src/views/modules/partspare/repairtransdetail.vue

@ -0,0 +1,390 @@
<template>
<div class="mod-config">
<el-row>
<el-col :span="24">
<el-form :inline="true" label-position="top" >
<el-form-item label="备品备件编码">
<el-input v-model="queryForm.partNo" clearable></el-input>
</el-form-item>
<el-form-item label="序列号">
<el-input v-model="queryForm.batchNo" clearable></el-input>
</el-form-item>
<el-form-item label="出库/入库">
<el-select v-model="queryForm.direction">
<el-option value="" label="全部"></el-option>
<el-option value="-" label="出库"></el-option>
<el-option value="+" label="入库"></el-option>
</el-select>
</el-form-item>
<el-form-item label="库位编码">
<el-input v-model="queryForm.locationId" clearable></el-input>
</el-form-item>
<el-form-item label="仓库">
<el-select v-model="queryForm.warehouseId">
<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-form-item label=" ">
<el-button type="primary" @click="getDataList()">查询</el-button>
</el-form-item>
</el-form>
<el-form :inline="true" label-position="top" >
<el-form-item label="操作日期">
<el-date-picker
style="width: 145px"
v-model="queryForm.startTransDate"
type="date"
format="yyyy-MM-dd"
value-format="yyyy-MM-dd"
placeholder="选择日期">
</el-date-picker>
-
<el-date-picker
style="width: 145px"
v-model="queryForm.endTransDate"
type="date"
format="yyyy-MM-dd"
value-format="yyyy-MM-dd 23:59:59"
placeholder="选择日期">
</el-date-picker>
</el-form-item>
<el-form-item label="设备编码">
<el-input v-model="queryForm.orderRef1" clearable></el-input>
</el-form-item>
<el-form-item label="操作员">
<el-input v-model="queryForm.userName" clearable></el-input>
</el-form-item>
<el-form-item label="供应商名称">
<el-input v-model="queryForm.supplierName" clearable></el-input>
</el-form-item>
</el-form>
</el-col>
</el-row>
<el-table
:data="dataList"
border
:height="height"
v-loading="dataListLoading"
style="width: 100%;">
<el-table-column
v-for="(item,index) in columnList" :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>
<el-pagination
@size-change="sizeChangeHandle"
@current-change="currentChangeHandle"
:current-page="pageIndex"
:page-sizes="[20, 100, 500, 1000]"
:page-size="pageSize"
:total="totalPage"
layout="total, sizes, prev, pager, next, jumper">
</el-pagination>
</div>
</template>
<script>
import {
getRepairTransDetailList,
} from '@/api/partspare/repairtransdetail.js'
import {
getWareHouseList,
} from '@/api/partspare/wareHouseEntity.js'
export default {
data() {
return {
queryForm: {
site: this.$store.state.user.site,
limit: 1,
page: '',
direction: '',
partNo: '',
batchNo: '',
warehouseId: '',
locationId: '',
orderRef1: '',
supplierName: '',
startTransDate: this.dayjs().format('YYYY-MM-DD'),
endTransDate: this.dayjs().format('YYYY-MM-DD 23:59:59'),
userName: '',
},
dataList: [],
wareHouseList: [],
pageIndex: 1,
pageSize: 10,
totalPage: 0,
height: 200,
dataListLoading: false,
dataListSelections: [],
addOrUpdateVisible: false,
//
columnList:[
{
columnProp: 'partNo',
headerAlign: "center",
align: "left",
columnLabel: '备品备件编码',
columnHidden: false,
columnImage: false,
columnSortable: true,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 140,
},
{
columnProp: 'partDescription',
headerAlign: "center",
align: "left",
columnLabel: '备品备件名称',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 140,
},
{
columnProp: 'spec',
headerAlign: "center",
align: "left",
columnLabel: '规格型号',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 140,
}, {
columnProp: 'batchNo',
headerAlign: "center",
align: "left",
columnLabel: '序列号',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 140,
}, {
columnProp: 'transType',
headerAlign: "center",
align: "left",
columnLabel: '记录类型',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 140,
}, {
columnProp: 'warehouseId',
headerAlign: "center",
align: "left",
columnLabel: '仓库编码',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 140,
}, {
columnProp: 'locationId',
headerAlign: "center",
align: "left",
columnLabel: '库位编码',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 140,
}, {
columnProp: 'orderRef1',
headerAlign: "center",
align: "left",
columnLabel: '机台编码',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 140,
} ,{
columnProp: 'supplierName',
headerAlign: "center",
align: "left",
columnLabel: '供应商名称',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 140,
},{
columnProp: 'transQty',
headerAlign: "center",
align: "right",
columnLabel: '数量',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 140,
},{
columnProp: 'remark',
headerAlign: "center",
align: "left",
columnLabel: '备注',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 140,
},{
columnProp: 'userName',
headerAlign: "center",
align: "left",
columnLabel: '操作员',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 140,
},{
columnProp: 'transDate',
headerAlign: "center",
align: "left",
columnLabel: '操作日期',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 140,
}],
}
},
activated() {
this.getDataList()
this.getWareHouseList()
},
mounted() {
this.$nextTick(() => {
this.height = window.innerHeight - 210
})
},
methods: {
//
getWareHouseList(){
let wareHouse = {
site: this.$store.state.user.site,
active: 'Y',
warehousetype: "备品备件仓",
}
getWareHouseList(wareHouse).then(({data}) =>{
if (data.code == 0 && data.data){
this.wareHouseList = data.data
}
})
},
//
getDataList() {
// this.dataListLoading = true
this.queryForm.page = this.pageIndex
this.queryForm.limit = this.pageSize
getRepairTransDetailList(this.queryForm).then(({data}) => {
if (data && data.code === 0) {
this.dataList = data.page.list
this.totalPage = data.page.totalCount
} else {
this.dataList = []
this.totalPage = 0
}
this.dataListLoading = false
})
},
//
sizeChangeHandle(val) {
this.pageSize = val
this.pageIndex = 1
this.getDataList()
},
//
currentChangeHandle(val) {
this.pageIndex = val
this.getDataList()
},
// /
addOrUpdateHandle(id) {
this.addOrUpdateVisible = true
this.$nextTick(() => {
this.$refs.addOrUpdate.init(id)
})
},
//
deleteHandle(id) {
var ids = id ? [id] : this.dataListSelections.map(item => {
return item.transno
})
this.$confirm(`确定对[id=${ids.join(',')}]进行[${id ? '删除' : '批量删除'}]操作?`, '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
this.$http({
url: this.$http.adornUrl('/pms/repairtransdetail/delete'),
method: 'post',
data: this.$http.adornData(ids, false)
}).then(({data}) => {
if (data && data.code === 0) {
this.$message({
message: '操作成功',
type: 'success',
duration: 1500,
onClose: () => {
this.getDataList()
}
})
} else {
this.$message.error(data.msg)
}
})
})
}
}
}
</script>

149
src/views/modules/partspare/resourcespare-add-or-update.vue

@ -0,0 +1,149 @@
<template>
<div>
<el-dialog
width="340px"
@close="closeDialog"
:title="!this.addOrUpdate ? '新增' : '修改'"
:close-on-click-modal="false"
:visible.sync="visible">
<el-form :model="dataForm" label-position="top" :inline="true" ref="dataForm"
@keyup.enter.native="dataFormSubmit()"
label-width="120px">
<el-form-item required>
<el-link @click="getBaseList(113)" slot="label">设备编码</el-link>
<el-input v-model="dataForm.resourceId"></el-input>
</el-form-item>
<el-form-item label="设备名称">
<el-input disabled v-model="dataForm.resourceName"></el-input>
</el-form-item>
<el-form-item required>
<el-link @click="getBaseList(114)" slot="label">备品备件编码</el-link>
<el-input v-model="dataForm.partNo"></el-input>
</el-form-item>
<el-form-item label="备品备件名称">
<el-input disabled v-model="dataForm.partDesc"></el-input>
</el-form-item>
<el-form-item required label="可用数量">
<el-input-number style="width: 146px" :min="0" v-model="dataForm.qtyUsable"></el-input-number>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button type="primary" @click="dataFormSubmit()">确定</el-button>
<el-button type="primary" @click="visible = false">取消</el-button>
</span>
</el-dialog>
<Chooselist ref="baseList" @getBaseData="getBaseData"></Chooselist>
</div>
</template>
<script>
import Chooselist from '@/views/modules/common/Chooselist_eam'
import {getResourceSpareInfo, saveResourceSpare, updateResourceSpare} from '@/api/partspare/resourcespare.js'
export default {
data() {
return {
visible: false,
dataForm: {
id: 0,
resourceId: '',
resourceIdOld: '',
resourceName: '',
partNo: '',
partNoOld: '',
partDesc: '',
qtyUsable: '',
delflag: '',
createdBy: '',
site: this.$store.state.user.site
},
addOrUpdate: false,
}
},
components: {
Chooselist
},
methods: {
// S
getBaseList(val, type) {
this.tagNo = val
this.$nextTick(() => {
let strVal = ''
let conSql = ''
if (val === 113) {
strVal = this.dataForm.resourceId
}
if (val === 114) {
strVal = this.dataForm.partNo
}
this.$refs.baseList.init(val, strVal, conSql)
})
},
/* 列表方法的回调 */
getBaseData(val) {
if (this.tagNo === 113) {
this.dataForm.resourceId = val.ObjectID
this.dataForm.resourceName = val.ObjectDesc
}
if (this.tagNo === 114) {
this.dataForm.partNo = val.part_no
this.dataForm.partDesc = val.part_description
}
},
init(row) {
this.addOrUpdate = row ? true : false
this.visible = true
this.$nextTick(() => {
if (this.addOrUpdate) {
this.dataForm.site = row.site
this.dataForm.resourceId = row.resourceId
this.dataForm.partNo = row.partNo
getResourceSpareInfo(this.dataForm).then(({data}) => {
if (data && data.code === 0) {
this.dataForm.resourceId = data.resourceSpare.resourceId
this.dataForm.resourceName = data.resourceSpare.resourceDesc
this.dataForm.partNo = data.resourceSpare.partNo
this.dataForm.partDesc = data.resourceSpare.partDescription
this.dataForm.site = data.resourceSpare.site
this.dataForm.qtyUsable = data.resourceSpare.qtyUsable
this.dataForm.resourceIdOld = data.resourceSpare.resourceId
this.dataForm.partNoOld = data.resourceSpare.partNo
}
})
}
})
},
//
dataFormSubmit() {
if (this.addOrUpdate) {
updateResourceSpare(this.dataForm).then(({data}) => {
if (data && data.code === 0) {
this.$message.success(data.msg)
this.visible = false
this.$emit('refreshDataList')
} else {
this.$message.error(data.msg)
}
})
} else {
saveResourceSpare(this.dataForm).then(({data}) => {
if (data && data.code === 0) {
this.$message.success(data.msg)
this.visible = false
this.$emit('refreshDataList')
} else {
this.$message.error(data.msg)
}
})
}
},
closeDialog() {
this.$nextTick(() => {
this.$emit('refreshDataList')
Object.assign(this.$data, this.$options.data.call(this));
})
},
}
}
</script>

281
src/views/modules/partspare/resourcespare.vue

@ -0,0 +1,281 @@
<template>
<div class="mod-config">
<el-row>
<el-col :span="24">
<el-form :inline="true" label-position="top" :model="queryForm" @keyup.enter.native="getDataList()">
<el-form-item label="设备编码">
<el-input v-model="queryForm.resourceId" clearable></el-input>
</el-form-item>
<el-form-item label="设备名称">
<el-input v-model="queryForm.resourceDesc" clearable></el-input>
</el-form-item>
<el-form-item label="备品备件编码">
<el-input v-model="queryForm.partNo" clearable></el-input>
</el-form-item>
<el-form-item label="备品备件名称">
<el-input v-model="queryForm.partDescription" clearable></el-input>
</el-form-item>
<el-form-item label=" ">
<el-button type="primary" @click="getDataList()">查询</el-button>
<el-button type="primary" @click="addOrUpdateHandle()">新增</el-button>
</el-form-item>
</el-form>
</el-col>
</el-row>
<el-table
:data="dataList"
border
:height="height"
v-loading="dataListLoading"
style="width: 100%;">
<el-table-column
v-for="(item,index) in columnList" :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
fixed="right"
header-align="center"
align="center"
width="120"
label="操作">
<template slot-scope="scope">
<el-link type="text" size="small" @click="addOrUpdateHandle(scope.row)">修改</el-link>
<el-link type="text" size="small" @click="deleteHandle(scope.row)">| 删除</el-link>
</template>
</el-table-column>
</el-table>
<el-pagination
style="margin-top: -2px;"
@size-change="sizeChangeHandle"
@current-change="currentChangeHandle"
:current-page="pageIndex"
:page-sizes="[20, 100, 500, 1000]"
:page-size="pageSize"
:total="totalPage"
layout="total, sizes, prev, pager, next, jumper">
</el-pagination>
<!-- 弹窗, 新增 / 修改 -->
<add-or-update v-if="addOrUpdateVisible" ref="addOrUpdate" @refreshDataList="getDataList"></add-or-update>
</div>
</template>
<script>
import AddOrUpdate from './resourcespare-add-or-update'
import {
getResourceSpareList,deleteResourceSpare
} from '@/api/partspare/resourcespare.js'
export default {
data() {
return {
queryForm: {
site :this.$store.state.user.site,
partNo :'',
partDescription : '',
resourceId : '',
resourceDesc : '',
limit: 1,
page: '',
},
dataList: [],
pageIndex: 1,
pageSize: 20,
totalPage: 0,
height: 200,
dataListLoading: false,
dataListSelections: [],
addOrUpdateVisible: false,
//
columnList: [
{
userId: this.$store.state.user.name,
functionId: this.$route.meta.menuId,
serialNumber: '*',
tableId: "*",
tableName: "*",
columnProp: 'resourceId',
headerAlign: "center",
align: "left",
columnLabel: '设备编码',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 140,
}, {
userId: this.$store.state.user.name,
functionId: this.$route.meta.menuId,
serialNumber: '*',
tableId: "*",
tableName: "*",
columnProp: 'resourceDesc',
headerAlign: "center",
align: "left",
columnLabel: '设备名称',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 140,
},
{
userId: this.$store.state.user.name,
functionId: this.$route.meta.menuId,
serialNumber: '*',
tableId: "*",
tableName: "*",
columnProp: 'partNo',
headerAlign: "center",
align: "left",
columnLabel: '备品备件编码',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 140,
},
{
userId: this.$store.state.user.name,
functionId: this.$route.meta.menuId,
serialNumber: '*',
tableId: "*",
tableName: "*",
columnProp: 'partDescription',
headerAlign: "center",
align: "left",
columnLabel: '备品备件名称',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 140,
},
{
userId: this.$store.state.user.name,
functionId: this.$route.meta.menuId,
serialNumber: '*',
tableId: "*",
tableName: "*",
columnProp: 'site',
headerAlign: "center",
align: "left",
columnLabel: '工厂编码',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 140,
},
{
userId: this.$store.state.user.name,
functionId: this.$route.meta.menuId,
serialNumber: '*',
tableId: "*",
tableName: "*",
columnProp: 'qtyUsable',
headerAlign: "center",
align: "left",
columnLabel: '可用数量',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 140,
},
],
}
},
components: {
AddOrUpdate
},
activated() {
this.getDataList()
},
mounted() {
this.$nextTick(() => {
this.height = window.innerHeight - 190
})
},
methods: {
//
getDataList() {
this.dataListLoading = true
this.queryForm.page = this.pageIndex
this.queryForm.limit = this.pageSize
getResourceSpareList(this.queryForm).then(({data}) => {
if (data && data.code === 0) {
this.dataList = data.page.list
this.totalPage = data.page.totalCount
} else {
this.dataList = []
this.totalPage = 0
}
this.dataListLoading = false
})
},
//
sizeChangeHandle(val) {
this.pageSize = val
this.pageIndex = 1
this.getDataList()
},
//
currentChangeHandle(val) {
this.pageIndex = val
this.getDataList()
},
// /
addOrUpdateHandle(row) {
this.addOrUpdateVisible = true
this.$nextTick(() => {
this.$refs.addOrUpdate.init(row)
})
},
//
deleteHandle(row) {
this.$confirm(`确定进行删除操作?`, '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
deleteResourceSpare(row).then(({data}) => {
if (data && data.code === 0) {
this.$message.success(data.msg)
this.getDataList()
} else {
this.$message.error(data.msg)
}
})
})
}
}
}
</script>
Loading…
Cancel
Save