Merge remote-tracking branch 'origin/master'

master
wws 2 years ago
commit 82edc0bc71

@ -42,3 +42,12 @@ export function delSparePartsApplicationRecord(applyId) {
method: 'delete'
});
}
// 查询当前维修单备件申领记录列表
export function listRepairSparePartsRecord(query) {
return request({
url: '/device/sparePartsApplicationRecord/listRepairSparePartsRecord',
method: 'get',
params: query
});
}

@ -105,4 +105,53 @@ export function getProShifts() {
url: '/mes/reportWork/getProShifts/',
method: 'get'
})
}
// 查询人员列表
export function getMesListUser(query) {
return request({
url: '/mes/reportWork/getMesListUser',
method: 'get',
params: query
});
}
//查询工单列表
export function getMesListWorkOrder(query) {
return request({
url: '/mes/reportWork/getMesListWorkOrder',
method: 'get',
params: query
});
}
//查询线体列表
export function getMesListEquip(query) {
return request({
url: '/mes/reportWork/getMesListEquip',
method: 'get',
params: query
});
}
//报工按钮
export function reportSap(reportCode) {
const data = {
reportCode
}
return request({
url: '/mes/reportWork/reportSap',
method: 'put',
data: data
});
}
// 查询物料管理列表
export function getMesListBom(query) {
return request({
url: '/mes/reportWorkConsume/getMesListBom',
method: 'get',
params: query
});
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.7 MiB

After

Width:  |  Height:  |  Size: 1.5 MiB

@ -192,15 +192,6 @@
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="工厂号" prop="factoryCode">
<el-input
v-model="form.factoryCode"
placeholder="请输入工厂号"
style="width: 300px"
/>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="班组人员" prop="teamPerson">
<el-input

@ -1002,9 +1002,13 @@
/>
</el-form-item>
</el-row>
<el-form-item label="故障图片" prop="orderPicture">
<el-input v-model="form.orderPicture" placeholder="请输入故障图片" />
</el-form-item>
<el-row>
<el-col :span="24">
<el-form-item label="故障图片" prop="orderPicture">
<FileUpload v-model="form.fileList" />
</el-form-item>
</el-col>
</el-row>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
@ -1034,6 +1038,9 @@ export default {
dicts: ["device_order_source"],
data() {
return {
//
fileList: [],
//
equipmentCodeOption: [],
//
loading: true,
@ -1146,7 +1153,26 @@ export default {
//
form: {},
//
rules: {},
rules: {
equipmentCode: [
{ required: true, message: "设备编码不能为空", trigger: "blur" },
],
orderBreakdownTime: [
{ required: true, message: "故障时间不能为空", trigger: "blur" },
],
orderTime: [
{ required: true, message: "报修时间不能为空", trigger: "blur" },
],
orderRepairman: [
{ required: true, message: "报修人不能为空", trigger: "blur" },
],
orderDesc: [
{ required: true, message: "故障描述不能为空", trigger: "blur" },
],
orderConnection: [
{ required: true, message: "联系方式不能为空", trigger: "blur" },
],
},
};
},
created() {
@ -1194,6 +1220,7 @@ export default {
//
reset() {
this.form = {
fileList: "",
orderId: null,
orderCode: null,
equipmentCode: null,
@ -1247,6 +1274,16 @@ export default {
const orderId = row.orderId || this.ids;
getFaultReport(orderId).then((response) => {
this.form = response.data;
if (response.data.files != null) {
var newFiles = [];
response.data.files.forEach((item) => {
var newFile = {};
newFile.name = item.fileName;
newFile.url = item.fileAddress;
newFiles.push(newFile);
});
this.form.fileList = newFiles;
}
this.open = true;
this.title = "修改故障报修";
});

@ -908,7 +908,7 @@
</el-col>
</div>
<!-- 处理结果 -->
<div v-if="this.repairRecordSteps == 1" class="step-body">
<div v-if="this.repairRecordSteps == 1" class="step-body" @mousemove = "handleMouseout">
<el-row :gutter="10" class="mb8">
<el-col :span="24">
<el-form-item label="原因分析" prop="workReason">
@ -950,7 +950,7 @@
placeholder="请选择维修状态"
@change="$forceUpdate()"
clearable
style="width: 220px"
style="width: 195px"
@keyup.enter.native="handleQuery"
>
<el-option
@ -997,12 +997,13 @@
style="width: 195px"
value-format="yyyy-MM-dd HH:mm:ss"
placeholder="请选择结束维修时间"
></el-date-picker>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="维修用时" prop="workCostTime">
<el-input v-model="form.workCostTime" style="width: 195px">
<el-input v-model="form.workCostTime" style="width: 195px" >
</el-input>
</el-form-item>
</el-col>
@ -1028,7 +1029,7 @@
</div>
<!-- 使用备件领用记录 -->
<div v-if="this.repairRecordSteps == 2" class="step-body">
<SelectSpareParts :optType="optType"></SelectSpareParts>
<ItemSelectSpareParts :optType="optType" :workCode="form.workCode" :equipmentCode="form.equipmentCode" v-if="form.workCode !=null"></ItemSelectSpareParts>
</div>
</el-form>
<div slot="footer" class="dialog-footer">
@ -1064,11 +1065,11 @@ import { getMaintenanceTeamList } from "@/api/device/equTeam";
import ItemSelect from "./selectSingleEquipment.vue";
import ItemSelectPerson from "./selectSinglePerson.vue";
import { Message } from "element-ui";
import SelectSpareParts from "./selectSpareParts.vue";
import ItemSelectSpareParts from "./selectSpareParts.vue";
export default {
name: " RepairOrder",
components: { ItemSelect, ItemSelectPerson, SelectSpareParts },
components: { ItemSelect, ItemSelectPerson, ItemSelectSpareParts },
data() {
return {
//
@ -1169,31 +1170,35 @@ export default {
],
//
pickerOptions: {
shortcuts: [{
text: '最近一周',
onClick(picker) {
const end = new Date();
const start = new Date();
start.setTime(start.getTime() - 3600 * 1000 * 24 * 7);
picker.$emit('pick', [start, end]);
}
}, {
text: '最近一个月',
onClick(picker) {
const end = new Date();
const start = new Date();
start.setTime(start.getTime() - 3600 * 1000 * 24 * 30);
picker.$emit('pick', [start, end]);
}
}, {
text: '最近三个月',
onClick(picker) {
const end = new Date();
const start = new Date();
start.setTime(start.getTime() - 3600 * 1000 * 24 * 90);
picker.$emit('pick', [start, end]);
}
}]
shortcuts: [
{
text: "最近一周",
onClick(picker) {
const end = new Date();
const start = new Date();
start.setTime(start.getTime() - 3600 * 1000 * 24 * 7);
picker.$emit("pick", [start, end]);
},
},
{
text: "最近一个月",
onClick(picker) {
const end = new Date();
const start = new Date();
start.setTime(start.getTime() - 3600 * 1000 * 24 * 30);
picker.$emit("pick", [start, end]);
},
},
{
text: "最近三个月",
onClick(picker) {
const end = new Date();
const start = new Date();
start.setTime(start.getTime() - 3600 * 1000 * 24 * 90);
picker.$emit("pick", [start, end]);
},
},
],
},
//
form: {},
@ -1206,6 +1211,13 @@ export default {
this.getTeamList();
},
methods: {
// -
handleMouseout(){
console.log("打印维修时间")
if(this.form.workEndTime != null && this.form.workStartTime != null){
this.form.workCostTime = this.form.workEndTime - this.form.workStartTime;
}
},
//
stepLast() {
this.repairRecordSteps--;
@ -1223,7 +1235,6 @@ export default {
this.loading = false;
});
},
/** 查询维修工单列表 */
getTeamList() {
this.loading = true;
@ -1295,9 +1306,9 @@ export default {
resetQuery() {
this.resetForm("queryForm");
//
this.queryParams.workPlanTimeArray = [],
this.queryParams.workPlanDownTimeArray = [],
this.handleQuery();
(this.queryParams.workPlanTimeArray = []),
(this.queryParams.workPlanDownTimeArray = []),
this.handleQuery();
},
//
handleSelectionSparePartsChange(selection) {

@ -7,9 +7,10 @@
plain
icon="el-icon-plus"
size="mini"
@click="handleAdd"
@click="handleSelectSparePartsLedger"
v-hasPermi="['device:sparePartsApplicationRecord:add']"
>新增</el-button>
<ItemSelectSparePartsLedger ref="itemSelectSparePartsLedger" @onSelected="selectSparePartsLedger" ></ItemSelectSparePartsLedger>
</el-col>
<el-col :span="1.5">
<el-button
@ -40,13 +41,12 @@
<el-table-column type="selection" width="55" align="center" />
<!-- 序号 -->
<el-table-column type="index" width="90" align="center" :index="indexMethod" label="序号"/>
<el-table-column label="出库单号" align="center" prop="applyCode" />
<el-table-column label="维修单号" align="center" prop="workCode" width="150"/>
<el-table-column label="使用设备" align="center" prop="spareUseEquipment" />
<el-table-column label="备品备件编码" align="center" prop="spareCode" width="120"/>
<el-table-column label="备品备件名称" align="center" prop="spareName" width="120"/>
<el-table-column label="规格型号" align="center" prop="spareModel" width="150"/>
<el-table-column label="数量" align="center" prop="spareQuantity" />
<el-table-column label="使用组线" align="center" prop="spareGroupLine" />
<el-table-column label="使用设备" align="center" prop="spareUseEquipment" />
<el-table-column label="领用时间" align="center" prop="applyTime" width="180">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.applyTime) }}</span>
@ -54,7 +54,6 @@
</el-table-column>
<el-table-column label="申领人" align="center" prop="applyPeople" width="80"/>
<el-table-column label="批准人" align="center" prop="applyApprovePeople" width="80"/>
<el-table-column label="工厂号" align="center" prop="factoryCode" />
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button
@ -84,49 +83,11 @@
/>
<!-- 添加或修改申领记录对话框 -->
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
<el-dialog :title="title" :visible.sync="open" width="1000px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-form-item label="出库单号" prop="applyCode">
<el-input v-model="form.applyCode" placeholder="请输入出库单号" />
</el-form-item>
<el-form-item label="备品备件编码" prop="spareCode">
<el-input v-model="form.spareCode" placeholder="请输入备品备件编码" />
</el-form-item>
<el-form-item label="备品备件名称" prop="spareName">
<el-input v-model="form.spareName" placeholder="请输入备品备件名称" />
</el-form-item>
<el-form-item label="规格型号" prop="spareModel">
<el-input v-model="form.spareModel" placeholder="请输入规格型号" />
</el-form-item>
<el-form-item label="数量" prop="spareQuantity">
<el-input v-model="form.spareQuantity" placeholder="请输入数量" />
</el-form-item>
<el-form-item label="使用组线" prop="spareGroupLine">
<el-input v-model="form.spareGroupLine" placeholder="请输入使用组线" />
</el-form-item>
<el-form-item label="使用设备" prop="spareUseEquipment">
<el-input v-model="form.spareUseEquipment" placeholder="请输入使用设备" />
</el-form-item>
<el-form-item label="领用时间" prop="applyTime">
<el-date-picker clearable
v-model="form.applyTime"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择领用时间">
</el-date-picker>
</el-form-item>
<el-form-item label="申领人" prop="applyPeople">
<el-input v-model="form.applyPeople" placeholder="请输入申领人" />
</el-form-item>
<el-form-item label="批准人" prop="applyApprovePeople">
<el-input v-model="form.applyApprovePeople" placeholder="请输入批准人" />
</el-form-item>
<el-form-item label="工厂号" prop="factoryCode">
<el-input v-model="form.factoryCode" placeholder="请输入工厂号" />
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button type="primary" @click="submitAddForm"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
@ -134,10 +95,12 @@
</template>
<script>
import { listSparePartsApplicationRecord, getSparePartsApplicationRecord, delSparePartsApplicationRecord, addSparePartsApplicationRecord, updateSparePartsApplicationRecord } from "@/api/device/sparePartsApplicationRecord";
import { listSparePartsApplicationRecord, getSparePartsApplicationRecord, delSparePartsApplicationRecord, addSparePartsApplicationRecord, updateSparePartsApplicationRecord , listRepairSparePartsRecord } from "@/api/device/sparePartsApplicationRecord";
import ItemSelectSparePartsLedger from "./selectSparePartsLedger.vue";
export default {
name: "SelectSpareParts",
components: { ItemSelectSparePartsLedger },
data() {
return {
//
@ -162,6 +125,9 @@ export default {
queryParams: {
pageNum: 1,
pageSize: 10,
workCode: this.workCode,
equipmentCode: this.equipmentCode,
applyType: null,
applyCode: null,
spareCode: null,
spareName: null,
@ -213,10 +179,19 @@ export default {
}
};
},
props: {
equipmentCode: undefined,
workCode: undefined,
optType: undefined,
},
created() {
this.getList();
},
methods: {
//
handleSelectSparePartsLedger() {
this.$refs.itemSelectSparePartsLedger.showFlag = true;
},
//
indexMethod(index) {
return index + 1;
@ -224,7 +199,7 @@ export default {
/** 查询申领记录列表 */
getList() {
this.loading = true;
listSparePartsApplicationRecord(this.queryParams).then(response => {
listRepairSparePartsRecord(this.queryParams).then(response => {
this.sparePartsApplicationRecordList = response.rows;
this.total = response.total;
this.loading = false;
@ -238,6 +213,9 @@ export default {
//
reset() {
this.form = {
workCode: this.workCode,
equipmentCode: this.equipmentCode,
applyType: null,
applyId: null,
applyCode: null,
spareCode: null,
@ -314,6 +292,22 @@ export default {
}
});
},
//
selectSparePartsLedger(obj){
console.log("接收参数",obj[0]);
//使
this.form.spareCode = obj[0].materialCode;
this.form.spareName = obj[0].materialDesc;
this.form.spareModel = obj[0].spareMode;
this.form.spareUseEquipment = this.queryParams.equipmentCode;
this.form.spareQuantity = obj[0].spareQuantity;
this.form.workCode = this.queryParams.workCode;
addSparePartsApplicationRecord(this.form).then(response => {
this.$modal.msgSuccess("新增成功");
this.open = false;
this.getList();
});
},
/** 删除按钮操作 */
handleDelete(row) {
const applyIds = row.applyId || this.ids;

@ -0,0 +1,266 @@
<template>
<el-dialog title="备品备件选择"
v-if="showFlag"
:visible.sync="showFlag"
:modal= false
width="1100px"
center
:before-close="cancel"
>
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="98px">
<el-form-item label="备品备件号" prop="materialCode">
<el-input
v-model="queryParams.materialCode"
placeholder="请输入备品备件号"
clearable
@keyup.enter.native="handleQuery"
style="width:150px"
/>
</el-form-item>
<el-form-item label="备件类型" prop="spareType">
<el-select v-model="queryParams.spareType" placeholder="请选择备件类型" @keyup.enter.native="handleQuery" @change="$forceUpdate()" clearable style="width:150px">
<el-option v-for="item in options" :key="item.spareType" :label="item.label" :value="item.spareType"></el-option>
</el-select>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery"></el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery"></el-button>
</el-form-item>
<el-row :gutter="10" class="mb8">
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="sparePartsLedgerList" @selection-change="handleSelectionChange" ref="multipleTable">
<el-table-column type="selection" width="55" align="center" />
<!-- 序号 -->
<el-table-column type="index" width="90" align="center" :index="indexMethod" label="序号"/>
<el-table-column label="备品备件号" align="center" prop="materialCode" width="120"/>
<el-table-column label="备品备件描述" align="center" prop="materialDesc" width="120"/>
<el-table-column label="备品备件类型" align="center" prop="spareType" width="120"/>
<el-table-column label="规格型号" align="center" prop="spareMode" />
<el-table-column label="库存总数量" align="center" prop="amount" />
<el-table-column label="库存冻结数量" align="center" prop="storageAmount" />
<el-table-column label="库存可用数量" align="center" prop="availableQuantity" >
<template slot-scope="scope">
<span>{{ scope.row.amount-scope.row.storageAmount}}</span>
</template>
</el-table-column>
<el-table-column label="领用数量" align="center" prop="spareQuantity">
<template slot-scope="scope">
<el-input size="small" v-model="scope.row.spareQuantity" @change="handleEdit(scope.$index,scope.row)"></el-input>
</template>
</el-table-column>
</el-table>
<pagination
v-show="total>0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
</template>
<script>
import { listSparePartsLedger, getSparePartsLedger, delSparePartsLedger, addSparePartsLedger, updateSparePartsLedger } from "@/api/device/sparePartsLedger";
export default {
name: "SparePartsLedger",
data() {
return {
//
showFlag:false,
//
loading: true,
//
ids: [],
//
single: true,
//
multiple: true,
//
showSearch: true,
//
total: 0,
//
sparePartsLedgerList: [],
//
title: "",
//
open: false,
//
queryParams: {
pageNum: 1,
pageSize: 10,
storageId: null,
whCode: null,
regionCode: null,
waCode: null,
storageType: null,
wlCode: null,
materialCode: null,
materialDesc: null,
amount: null,
storageAmount: null,
occupyAmount: null,
lpn: null,
productBatch: null,
receiveDate: null,
productDate: null,
userDefined1: null,
userDefined2: null,
userDefined3: null,
userDefined4: null,
userDefined5: null,
userDefined6: null,
userDefined7: null,
userDefined8: null,
userDefined9: null,
userDefined10: null,
gmtCreate: null,
lastModifiedBy: null,
gmtModified: null,
activeFlag: null,
factoryCode: null,
sapFactoryCode: null,
wlName: null,
spareUseLife: null,
spareName: null,
spareMode: null,
spareManufacturer: null,
spareSupplier: null,
spareReplacementCycle: null,
spareMeasurementUnit: null,
spareConversionUnit: null,
spareConversionRatio: null,
spareInventoryFloor: null,
spareInventoryUpper: null
},
options: [{
spareType: "专用",
label: '专用'
}, {
spareType: "通用",
label: '通用'
}],
//
form: {},
//
rules: {
storageId: [
{ required: true, message: "唯一序列不能为空", trigger: "blur" }
],
}
};
},
created() {
this.getList();
},
methods: {
handleEdit(index, row) {
console.log('row:',index, row);
console.log('storageId:',row.storageId) //name
},
//
indexMethod(index) {
return index + 1;
},
/** 查询备品备件台账管理列表 */
getList() {
this.loading = true;
listSparePartsLedger(this.queryParams).then(response => {
this.sparePartsLedgerList = response.rows;
this.total = response.total;
this.loading = false;
});
},
//
cancel() {
this.showFlag = false;
this.reset();
},
//
reset() {
this.form = {
storageId: null,
whCode: null,
regionCode: null,
waCode: null,
storageType: null,
wlCode: null,
materialCode: null,
materialDesc: null,
amount: null,
storageAmount: null,
occupyAmount: null,
lpn: null,
productBatch: null,
receiveDate: null,
productDate: null,
userDefined1: null,
userDefined2: null,
userDefined3: null,
userDefined4: null,
userDefined5: null,
userDefined6: null,
userDefined7: null,
userDefined8: null,
userDefined9: null,
userDefined10: null,
createBy: null,
gmtCreate: null,
lastModifiedBy: null,
gmtModified: null,
activeFlag: null,
factoryCode: null,
sapFactoryCode: null,
wlName: null,
delFlag: null,
spareUseLife: null,
spareName: null,
spareMode: null,
spareManufacturer: null,
spareSupplier: null,
spareReplacementCycle: null,
spareMeasurementUnit: null,
spareConversionUnit: null,
spareConversionRatio: null,
spareInventoryFloor: null,
spareInventoryUpper: null
};
this.resetForm("form");
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm("queryForm");
this.handleQuery();
},
//
handleSelectionChange(selection) {
this.ids = selection.map(item => item.storageId)
this.single = selection.length!==1
this.multiple = !selection.length
},
/** 提交按钮 */
submitForm(){
console.log('data:',this.sparePartsLedgerList);
console.log("选择的数据",this.$refs.multipleTable.selection);
this.$emit('onSelected',this.$refs.multipleTable.selection);
this.showFlag = false;
},
}
};
</script>

@ -1,14 +1,15 @@
<template>
<!-- 组线批准人隐藏出库单号 -->
<div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="98px">
<el-form-item label="出库单号" prop="applyCode">
<!-- <el-form-item label="出库单号" prop="applyCode">
<el-input
v-model="queryParams.applyCode"
placeholder="请输入出库单号"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
</el-form-item> -->
<el-form-item label="备品备件编码" prop="spareCode">
<el-input
v-model="queryParams.spareCode"
@ -41,14 +42,14 @@
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="使用组线" prop="spareGroupLine">
<!-- <el-form-item label="使用组线" prop="spareGroupLine">
<el-input
v-model="queryParams.spareGroupLine"
placeholder="请输入使用组线"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
</el-form-item> -->
<el-form-item label="使用设备" prop="spareUseEquipment">
<el-input
v-model="queryParams.spareUseEquipment"
@ -65,14 +66,14 @@
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="批准人" prop="applyApprovePeople">
<!-- <el-form-item label="批准人" prop="applyApprovePeople">
<el-input
v-model="queryParams.applyApprovePeople"
placeholder="请输入批准人"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
</el-form-item> -->
<el-form-item label="领用时间" prop="applyTime">
<el-date-picker
v-model="queryParams.applyTimeArray"
@ -142,20 +143,20 @@
<el-table-column type="selection" width="55" align="center" />
<!-- 序号 -->
<el-table-column type="index" width="90" align="center" :index="indexMethod" label="序号"/>
<el-table-column label="出库单号" align="center" prop="applyCode" />
<el-table-column label="备品备件编码" align="center" prop="spareCode" width="120"/>
<el-table-column label="备品备件名称" align="center" prop="spareName" width="120"/>
<el-table-column label="规格型号" align="center" prop="spareModel" width="150"/>
<el-table-column label="数量" align="center" prop="spareQuantity" />
<el-table-column label="使用组线" align="center" prop="spareGroupLine" />
<el-table-column label="使用设备" align="center" prop="spareUseEquipment" />
<el-table-column label="出库单号" align="center" prop="applyCode" />
<el-table-column label="规格型号" align="center" prop="spareModel" width="150"/>
<el-table-column label="领用数量" align="center" prop="spareQuantity" />
<!-- <el-table-column label="使用组线" align="center" prop="spareGroupLine" /> -->
<el-table-column label="领用时间" align="center" prop="applyTime" width="180">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.applyTime) }}</span>
</template>
</el-table-column>
<el-table-column label="申领人" align="center" prop="applyPeople" width="80"/>
<el-table-column label="批准人" align="center" prop="applyApprovePeople" width="80"/>
<!-- <el-table-column label="批准人" align="center" prop="applyApprovePeople" width="80"/> -->
<el-table-column label="工厂号" align="center" prop="factoryCode" />
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
@ -187,45 +188,79 @@
<!-- 添加或修改申领记录对话框 -->
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-form-item label="出库单号" prop="applyCode">
<el-input v-model="form.applyCode" placeholder="请输入出库单号" />
<el-form ref="form" :model="form" :rules="rules" label-width="110px">
<!-- <el-form-item label="出库单号" prop="applyCode">
<el-input v-model="form.applyCode" placeholder="请输入出库单号" style="width: 280px"/>
</el-form-item> -->
<el-form-item label="使用设备" prop="spareUseEquipment">
<el-input v-model="form.spareUseEquipment" placeholder="请输选择使用设备" style="width: 280px">
<el-button
slot="append"
@click="handleSelectEquipment"
icon="el-icon-search"
></el-button>
</el-input>
<ItemSelectEquipment ref="itemSelectEquipment" @onSelected="onItemSelectedEquipment">
</ItemSelectEquipment>
</el-form-item>
<el-form-item label="备品备件编码" prop="spareCode">
<el-input v-model="form.spareCode" placeholder="请输入备品备件编码" />
<el-input v-model="form.spareCode" placeholder="请选择备品备件编码" style="width: 280px">
<el-button
slot="append"
@click="handleSelectSparePartsLedger"
icon="el-icon-search"
></el-button>
</el-input>
<ItemSelectSparePartsLedger ref="itemSelectSparePartsLedger" @onSelected="onItemSelectedSparePartsLedger">
</ItemSelectSparePartsLedger>
</el-form-item>
<el-form-item label="备品备件名称" prop="spareName">
<el-input v-model="form.spareName" placeholder="请输入备品备件名称" />
<el-input v-model="form.spareName" placeholder="请选择备品备件名称" style="width: 280px"/>
</el-form-item>
<el-form-item label="规格型号" prop="spareModel">
<el-input v-model="form.spareModel" placeholder="请输入规格型号" />
<el-input v-model="form.spareModel" placeholder="请选择规格型号" style="width: 280px"/>
</el-form-item>
<el-form-item label="库存总数量" prop="amount">
<el-input v-model="form.amount" style="width: 280px" disabled/>
</el-form-item>
<el-form-item label="冻结数量" prop="storageAmount">
<el-input v-model="form.storageAmount" style="width: 280px" disabled/>
</el-form-item>
<el-form-item label="库存可用数量" prop="availableQuantity">
<el-input v-model="form.availableQuantity" style="width: 280px" disabled/>
</el-form-item>
<el-form-item label="数量" prop="spareQuantity">
<el-input v-model="form.spareQuantity" placeholder="请输入数量" />
</el-form-item>
<el-form-item label="使用组线" prop="spareGroupLine">
<el-input v-model="form.spareGroupLine" placeholder="请输入使用组线" />
</el-form-item>
<el-form-item label="使用设备" prop="spareUseEquipment">
<el-input v-model="form.spareUseEquipment" placeholder="请输入使用设备" />
<el-input v-model="form.spareQuantity" placeholder="请输入数量" style="width: 280px"/>
</el-form-item>
<!-- <el-form-item label="使用组线" prop="spareGroupLine">
<el-input v-model="form.spareGroupLine" placeholder="请选择使用组线" style="width: 280px"/>
</el-form-item> -->
<el-form-item label="领用时间" prop="applyTime">
<el-date-picker clearable
v-model="form.applyTime"
type="date"
value-format="yyyy-MM-dd"
type="datetime"
value-format="yyyy-MM-dd HH:mm:ss"
style="width: 280px"
placeholder="请选择领用时间">
</el-date-picker>
</el-form-item>
<el-form-item label="申领人" prop="applyPeople">
<el-input v-model="form.applyPeople" placeholder="请输入申领人" />
</el-form-item>
<el-form-item label="批准人" prop="applyApprovePeople">
<el-input v-model="form.applyApprovePeople" placeholder="请输入批准人" />
</el-form-item>
<el-form-item label="工厂号" prop="factoryCode">
<el-input v-model="form.factoryCode" placeholder="请输入工厂号" />
<el-input v-model="form.applyPeople" placeholder="请选择申领人" style="width: 280px">
<el-button
slot="append"
@click="handleSelectPerson"
icon="el-icon-search"
></el-button>
</el-input>
<ItemSelectPerson
ref="itemSelectPerson"
@onSelected="onItemSelectedPerson"
>
</ItemSelectPerson>
</el-form-item>
<!-- <el-form-item label="批准人" prop="applyApprovePeople">
<el-input v-model="form.applyApprovePeople" placeholder="请选择批准人" style="width: 280px"/>
</el-form-item> -->
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
@ -237,9 +272,13 @@
<script>
import { listSparePartsApplicationRecord, getSparePartsApplicationRecord, delSparePartsApplicationRecord, addSparePartsApplicationRecord, updateSparePartsApplicationRecord } from "@/api/device/sparePartsApplicationRecord";
import ItemSelectPerson from "./selectSinglePerson.vue";
import ItemSelectEquipment from "./selectSingleEquipment.vue";
import ItemSelectSparePartsLedger from "./selectSparePartsLedger.vue";
export default {
name: "SparePartsApplicationRecord",
components: { ItemSelectPerson ,ItemSelectEquipment,ItemSelectSparePartsLedger},
data() {
return {
//
@ -312,6 +351,24 @@ export default {
form: {},
//
rules: {
spareCode: [
{ required: true, message: "备品备件编码不能为空", trigger: "blur" }
],
spareName: [
{ required: true, message: "备品备件名称不能为空", trigger: "blur" }
],
spareModel: [
{ required: true, message: "规格型号不能为空", trigger: "blur" }
],
spareQuantity: [
{ required: true, message: "数量不能为空", trigger: "blur" }
],
applyTime: [
{ required: true, message: "领用时间不能为空", trigger: "blur" }
],
applyPeople: [
{ required: true, message: "申领人不能为空", trigger: "blur" }
],
}
};
},
@ -319,6 +376,35 @@ export default {
this.getList();
},
methods: {
//
handleSelectSparePartsLedger() {
this.$refs.itemSelectSparePartsLedger.showFlag = true;
},
//
onItemSelectedSparePartsLedger(obj) {
this.form.spareCode = obj[0].materialCode;
this.form.spareName = obj[0].materialDesc;
this.form.spareModel = obj[0].spareMode;
this.form.amount = obj[0].amount;
this.form.storageAmount = obj[0].storageAmount;
this.form.availableQuantity = obj[0].amount - obj[0].storageAmount;
},
//
handleSelectEquipment() {
this.$refs.itemSelectEquipment.showFlag = true;
},
//
onItemSelectedEquipment(obj) {
this.form.spareUseEquipment = obj;
},
//
handleSelectPerson() {
this.$refs.itemSelectPerson.showFlag = true;
},
//
onItemSelectedPerson(obj) {
this.form.applyPeople = obj;
},
//
indexMethod(index) {
return index + 1;
@ -407,11 +493,18 @@ export default {
this.getList();
});
} else {
addSparePartsApplicationRecord(this.form).then(response => {
if(this.form.amount - this.form.storageAmount < this.form.spareQuantity){
this.$message({
message: "您填入的领用数量大于库存可用数量!",
type: "warning",
});
}else{
addSparePartsApplicationRecord(this.form).then(response => {
this.$modal.msgSuccess("新增成功");
this.open = false;
this.getList();
});
}
}
}
});

@ -0,0 +1,246 @@
<template>
<el-dialog title="设备选择"
v-if="showFlag"
:visible.sync="showFlag"
:modal= false
width="1100px"
center
:before-close="cancelEquipmentForm"
>
<el-row :gutter="20">
<!--分类数据-->
<el-col :span="5" :xs="24">
<el-card >
<span>请选择设备类型</span>
<div class="head-container" style="text-align: center">
<el-tree
:data="treeData1"
:props = "{id:'equipmentTypeCode',label:'equipmentTypeName'}"
node-key="id"
:expand-on-click-node="false"
:filter-node-method="filterNode"
ref="tree"
default-expand-all
@node-click="handleNodeClick"
/>
</div>
</el-card>
</el-col>
<!--设备数据-->
<el-col :span="19" :xs="24">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="设备编码" prop="itemCode">
<el-input
v-model="queryParams.itemCode"
placeholder="请输入设备编码"
clearable
style="width: 240px"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="设备名称" prop="itemName">
<el-input
v-model="queryParams.itemName"
placeholder="请输入设备名称"
clearable
style="width: 240px"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery"></el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery"></el-button>
</el-form-item>
</el-form>
<el-table v-loading="loading" :data="itemList" @selection-change="handleEquipmentSelectionChange" ref="myTable">
<el-table-column width="50" align="center" type="selection">
<!-- <template v-slot="scope">
<el-radio v-model="selectedItemId" :label="scope.row.itemId" @change="handleRowChange(scope.row)">{{""}}</el-radio>
</template> -->
</el-table-column>
<!-- 序号 -->
<el-table-column type="index" width="90" align="center" :index="indexMethod" label="序号"></el-table-column>
<el-table-column label="设备编码" align="center" key="itemCode" prop="equipmentCode" v-if="columns[0].visible" >
</el-table-column>
<el-table-column label="设备类型编码" align="center" key="itemTypeCode" prop="equipmentTypeCode" v-if="columns[2].visible" >
</el-table-column>
<el-table-column label="设备名称" align="left" key="itemName" prop="equipmentName" v-if="columns[1].visible" :show-overflow-tooltip="true" />
</el-table>
<pagination
v-show="total > 0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
</el-col>
</el-row>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitEquipmentForm"> </el-button>
<el-button @click="cancelEquipmentForm"> </el-button>
</div>
</el-dialog>
</template>
<script>
import { getEquipmentList,getEquipmentTypeList} from "@/api/device/faultReport";
import { treeselect } from "@/api/wms/equipment";
import { Message } from 'element-ui'
export default {
name: "MdItemSingle",
// components: { Treeselect },
data() {
return {
treeData1:[],
showFlag:false,
//
selectedItemId: undefined,
selectedRows: undefined,
//
single: true,
//
multiple: true,
//
showSearch: true,
//
total:0,
//
itemList: null,
//
itemTypeOptions: undefined,
//
equipmentTypeCode: undefined,
//
queryParams: {
pageNum: 1,
pageSize: 10,
itemName: undefined,
equipmentTypeCode: undefined,
itemTypeId: 0,
itemCodeGet: '',
itemCode : undefined,
},
//
columns: [
{ key: 0, label: `设备编码`, visible: true },
{ key: 1, label: `设备名称`, visible: true },
{ key: 2, label: `设备类型`, visible: true },
]
};
},
created() {
this.getList();
this.getEquipmentType();
},
methods: {
//
reset() {
this.form = {
itemId: null,
itemCode: this.processId,
itemType: null,
};
this.resetForm("form");
},
handleEquipmentSelectionChange (val) {
this.itemList = val
},
//
indexMethod(index){
return index+1 ;
},
/** 查询设备编码列表*/
getList() {
this.loading = true;
getEquipmentList(this.queryParams).then(response => {
this.itemList = response.rows;
this.total = response.total;
this.loading = false;
}
);
},
/** 查询分类下拉树结构 */
getEquipmentType() {
getEquipmentTypeList().then(response => {
console.log(response.rows);
this.treeData1 = response.rows;
console.log(this.treeData1);
});
},
//
filterNode(value, data) {
console.log(value, data);
if (!value) return true;
return data.label.indexOf(value) !== -1;
},
//
handleNodeClick(data) {
console.log('id',data.id);
this.queryParams.equipmentTypeCode = data.equipmentTypeCode;
console.log(this.equipmentTypeCode);
this.handleQuery();
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.queryParams.equipmentTypeCode = null;
this.resetForm("queryForm");
this.handleQuery();
},
//
handleEquipmentSelectionChange(selection) {
this.ids = selection.map(item => item.equipmentCode);
this.single = selection.length!==1;
this.multiple = !selection.length;
console.log("多选框",this.ids);
},
submitEquipmentForm() {
const data = this.ids;
if(data.length >1){
Message.warning("只能选择一个备件使用机器,请勿选择多个!");
}else{
const equipmentCode = data.toString();
if(this.queryParams.itemCodeGet == ""){
this.queryParams.itemCodeGet = equipmentCode;
}else{
this.queryParams.itemCodeGet = this.queryParams.itemCodeGet + ','+ equipmentCode;
}
this.selectedRows = this.queryParams.itemCodeGet;
this.$emit('onSelected', this.selectedRows);
this.queryParams.equipmentTypeCode = null;
this.getList();
console.log('111111',this.queryParams.equipmentTypeCode);
this.showFlag = false;
this.queryParams.itemCodeGet = "";
}
},
cancelEquipmentForm(){
this.queryParams.equipmentTypeCode = null;
this.getList();
console.log('111111',this.queryParams.equipmentTypeCode);
this.showFlag = false;
}
}
};
</script>

@ -0,0 +1,186 @@
<template>
<el-dialog title="人员选择"
v-if="showFlag"
:visible.sync="showFlag"
:modal= false
width="800px"
center
:before-close="cancelEquipmentForm"
>
<el-row :gutter="20">
<!--人员数据-->
<el-col :span="24">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="人员编码" prop="itemCode">
<el-input
v-model="queryParams.itemCode"
placeholder="请输入人员编码"
clearable
style="width: 150px"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="人员名称" prop="itemName">
<el-input
v-model="queryParams.itemName"
placeholder="请输入人员名称"
clearable
style="width: 150px"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery"></el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery"></el-button>
</el-form-item>
</el-form>
<el-table v-loading="loading" :data="itemList" @selection-change="handleEquipmentSelectionChange" ref="myTable">
<el-table-column width="50" align="center" type="selection"></el-table-column>
<!-- 序号 -->
<el-table-column type="index" width="90" align="center" :index="indexMethod" label="序号"></el-table-column>
<el-table-column label="人员编码" align="center" key="itemCode" prop="userName" v-if="columns[0].visible" ></el-table-column>
<el-table-column label="人员名称" align="left" key="itemName" prop="nickName" v-if="columns[1].visible" :show-overflow-tooltip="true" />
<el-table-column label="部门编码" align="center" prop="postCode" v-if="columns[2].visible" ></el-table-column>
<el-table-column label="部门名称" align="center" prop="postName" v-if="columns[3].visible" ></el-table-column>
</el-table>
<pagination
v-show="total > 0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
</el-col>
</el-row>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitPersonForm"> </el-button>
<el-button @click="cancelEquipmentForm"> </el-button>
</div>
</el-dialog>
</template>
<script>
import { getMaintenancePersonList} from "@/api/device/repairOrder";
import { Message } from 'element-ui'
export default {
name: "MdItemSingle",
data() {
return {
treeData1:[],
showFlag:false,
//
selectedItemId: undefined,
selectedRows: undefined,
//
single: true,
//
multiple: true,
//
showSearch: true,
//
total:0,
//
itemList: null,
//
queryParams: {
pageNum: 1,
pageSize: 10,
itemName: undefined,
itemCodeGet: '',
itemCode : undefined,
},
//
columns: [
{ key: 0, label: `人员编码`, visible: true },
{ key: 1, label: `人员名称`, visible: true },
{ key: 2, label: `部门编码`, visible: true },
{ key: 3, label: `部门名称`, visible: true },
]
};
},
created() {
this.getList();
},
methods: {
//
reset() {
this.form = {
itemId: null,
itemCode: this.processId,
itemType: null,
};
this.resetForm("form");
},
handleEquipmentSelectionChange (val) {
this.itemList = val;
},
//
indexMethod(index){
return index+1 ;
},
//
/** 查询设备编码列表*/
getList() {
this.loading = true;
getMaintenancePersonList(this.queryParams).then(response => {
this.itemList = response.rows;
this.total = response.total;
this.loading = false;
}
);
},
//
handleNodeClick(data) {
console.log('id',data.id);
this.queryParams.equipmentTypeCode = data.equipmentTypeCode;
console.log(this.equipmentTypeCode);
this.handleQuery();
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.queryParams.equipmentTypeCode = null;
this.resetForm("queryForm");
this.handleQuery();
},
//
handleEquipmentSelectionChange(selection) {
this.ids = selection.map(item => item.nickName);
this.single = selection.length!==1;
this.multiple = !selection.length;
console.log("多选框",this.ids);
},
submitPersonForm() {
const data = this.ids;
const nickName = data.toString();
if(data.length >1){
Message.warning("只能选择一个维修人,请勿选择多个!");
}else{
if(this.queryParams.itemCodeGet == ""){
this.queryParams.itemCodeGet = nickName;
}
this.selectedRows = this.queryParams.itemCodeGet;
this.$emit('onSelected', this.selectedRows);
this.getList();
this.showFlag = false;
this.queryParams.itemCodeGet = "";
}
}
}
};
</script>

@ -0,0 +1,361 @@
<template>
<el-dialog
title="备品备件选择"
v-if="showFlag"
:visible.sync="showFlag"
:modal="false"
width="1100px"
center
:before-close="cancel"
>
<el-form
:model="queryParams"
ref="queryForm"
size="small"
:inline="true"
v-show="showSearch"
label-width="98px"
>
<el-form-item label="备品备件号" prop="materialCode">
<el-input
v-model="queryParams.materialCode"
placeholder="请输入备品备件号"
clearable
@keyup.enter.native="handleQuery"
style="width: 150px"
/>
</el-form-item>
<el-form-item label="备件类型" prop="spareType">
<el-select
v-model="queryParams.spareType"
placeholder="请选择备件类型"
@keyup.enter.native="handleQuery"
@change="$forceUpdate()"
clearable
style="width: 150px"
>
<el-option
v-for="item in options"
:key="item.spareType"
:label="item.label"
:value="item.spareType"
></el-option>
</el-select>
</el-form-item>
<el-form-item>
<el-button
type="primary"
icon="el-icon-search"
size="mini"
@click="handleQuery"
>搜索</el-button
>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery"
>重置</el-button
>
</el-form-item>
<el-row :gutter="10" class="mb8">
<right-toolbar
:showSearch.sync="showSearch"
@queryTable="getList"
></right-toolbar>
</el-row>
<el-table
v-loading="loading"
:data="sparePartsLedgerList"
@selection-change="handleSelectionChange"
ref="multipleTable"
>
<el-table-column type="selection" width="55" align="center" />
<!-- 序号 -->
<el-table-column
type="index"
width="90"
align="center"
:index="indexMethod"
label="序号"
/>
<el-table-column
label="备品备件号"
align="center"
prop="materialCode"
width="120"
/>
<el-table-column
label="备品备件描述"
align="center"
prop="materialDesc"
width="120"
/>
<el-table-column
label="备品备件类型"
align="center"
prop="spareType"
width="120"
/>
<el-table-column label="规格型号" align="center" prop="spareMode" />
<el-table-column label="库存总数量" align="center" prop="amount" />
<el-table-column
label="库存冻结数量"
align="center"
prop="storageAmount"
/>
<el-table-column
label="库存可用数量"
align="center"
prop="availableQuantity"
>
<template slot-scope="scope">
<span>{{ scope.row.amount - scope.row.storageAmount }}</span>
</template>
</el-table-column>
<el-table-column label="领用数量" align="center" prop="spareQuantity">
<template slot-scope="scope">
<el-input
size="small"
v-model="scope.row.spareQuantity"
@change="handleEdit(scope.$index, scope.row)"
></el-input>
</template>
</el-table-column>
</el-table>
<pagination
v-show="total > 0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
</template>
<script>
import {
listSparePartsLedger,
getSparePartsLedger,
delSparePartsLedger,
addSparePartsLedger,
updateSparePartsLedger,
} from "@/api/device/sparePartsLedger";
export default {
name: "SparePartsLedger",
data() {
return {
//
showFlag: false,
//
loading: true,
//
ids: [],
//
single: true,
//
multiple: true,
//
showSearch: true,
//
total: 0,
//
sparePartsLedgerList: [],
//
title: "",
//
open: false,
//
queryParams: {
pageNum: 1,
pageSize: 10,
storageId: null,
whCode: null,
regionCode: null,
waCode: null,
storageType: null,
wlCode: null,
materialCode: null,
materialDesc: null,
amount: null,
storageAmount: null,
occupyAmount: null,
lpn: null,
productBatch: null,
receiveDate: null,
productDate: null,
userDefined1: null,
userDefined2: null,
userDefined3: null,
userDefined4: null,
userDefined5: null,
userDefined6: null,
userDefined7: null,
userDefined8: null,
userDefined9: null,
userDefined10: null,
gmtCreate: null,
lastModifiedBy: null,
gmtModified: null,
activeFlag: null,
factoryCode: null,
sapFactoryCode: null,
wlName: null,
spareUseLife: null,
spareName: null,
spareMode: null,
spareManufacturer: null,
spareSupplier: null,
spareReplacementCycle: null,
spareMeasurementUnit: null,
spareConversionUnit: null,
spareConversionRatio: null,
spareInventoryFloor: null,
spareInventoryUpper: null,
},
options: [
{
spareType: "专用",
label: "专用",
},
{
spareType: "通用",
label: "通用",
},
],
//
form: {},
//
rules: {
storageId: [
{ required: true, message: "唯一序列不能为空", trigger: "blur" },
],
},
};
},
created() {
this.getList();
},
methods: {
handleEdit(index, row) {
console.log("row:", index, row);
console.log("storageId:", row.storageId); //name
},
//
indexMethod(index) {
return index + 1;
},
/** 查询备品备件台账管理列表 */
getList() {
this.loading = true;
listSparePartsLedger(this.queryParams).then((response) => {
this.sparePartsLedgerList = response.rows;
this.total = response.total;
this.loading = false;
});
},
//
cancel() {
this.showFlag = false;
this.reset();
},
//
reset() {
this.form = {
storageId: null,
whCode: null,
regionCode: null,
waCode: null,
storageType: null,
wlCode: null,
materialCode: null,
materialDesc: null,
amount: null,
storageAmount: null,
occupyAmount: null,
lpn: null,
productBatch: null,
receiveDate: null,
productDate: null,
userDefined1: null,
userDefined2: null,
userDefined3: null,
userDefined4: null,
userDefined5: null,
userDefined6: null,
userDefined7: null,
userDefined8: null,
userDefined9: null,
userDefined10: null,
createBy: null,
gmtCreate: null,
lastModifiedBy: null,
gmtModified: null,
activeFlag: null,
factoryCode: null,
sapFactoryCode: null,
wlName: null,
delFlag: null,
spareUseLife: null,
spareName: null,
spareMode: null,
spareManufacturer: null,
spareSupplier: null,
spareReplacementCycle: null,
spareMeasurementUnit: null,
spareConversionUnit: null,
spareConversionRatio: null,
spareInventoryFloor: null,
spareInventoryUpper: null,
};
this.resetForm("form");
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm("queryForm");
this.handleQuery();
},
//
handleSelectionChange(selection) {
this.ids = selection.map((item) => item.storageId);
this.single = selection.length !== 1;
this.multiple = !selection.length;
},
/** 提交按钮 */
submitForm() {
console.log("data:", this.sparePartsLedgerList);
console.log("选择的数据", this.$refs.multipleTable.selection);
if (this.$refs.multipleTable.selection.length > 1) {
this.$message({
message: "请勿选择多种备件!",
type: "warning",
});
// const number =
// this.$refs.multipleTable.selection.amount -
// this.$refs.multipleTable.selection.storageAmount;
// console.log("number", number);
// if (this.$refs.multipleTable.selection.spareQuantity > number) {
// this.$message({
// message: "",
// type: "warning",
// });
// }
} else {
this.$emit("onSelected", this.$refs.multipleTable.selection);
this.showFlag = false;
}
},
},
};
</script>

@ -10,14 +10,6 @@
style="width:150px"
/>
</el-form-item>
<el-form-item label="备品备件描述" prop="materialDesc">
<el-input
v-model="queryParams.materialDesc"
placeholder="请输入备品备件描述"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="规格型号" prop="spareMode">
<el-input
v-model="queryParams.spareMode"

@ -9,10 +9,10 @@
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="报工类型" prop="reportType">
<el-form-item label="生产订单编码" prop="orderCode">
<el-input
v-model="queryParams.reportType"
placeholder="请输入报工类型"
v-model="queryParams.orderCode"
placeholder="请输入生产订单编码"
clearable
@keyup.enter.native="handleQuery"
/>
@ -34,14 +34,45 @@
/>
</el-form-item>
</el-form-item>
<el-form-item label="产品名称" prop="productName">
<el-form-item label="产品名称" prop="productName">
<el-input
v-model="queryParams.productName"
placeholder="请输入产品名称"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
</el-form-item>
<el-form-item label="报工时间" prop="feedbackTimeArray">
<el-date-picker
v-model="queryParams.feedbackTimeArray"
format="yyyy-MM-dd"
type="datetimerange"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期">
</el-date-picker>
</el-form-item>
<el-form-item label="SAP报工结果" prop="uploadStatus">
<el-select v-model="queryParams.uploadStatus" placeholder="请选择结果" clearable>
<el-option
v-for="item in uploadStatusList"
:key="item.dictValue"
:label="item.dictLabel"
:value="item.dictValue">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="创建时间" prop="createTimeArray">
<el-date-picker
v-model="queryParams.createTimeArray"
format="yyyy-MM-dd HH:mm:ss"
type="datetimerange"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期">
</el-date-picker>
</el-form-item>
<el-form-item
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery"></el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery"></el-button>
</el-form-item>
@ -80,6 +111,28 @@
v-hasPermi="['mes:reportWork:remove']"
>删除</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="primary"
plain
icon="el-icon-s-claim"
size="mini"
:disabled="single"
@click="handleReport"
v-hasPermi="['mes:reportWork:edit']"
>报工SAP</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="info"
plain
icon="el-icon-s-release"
size="mini"
:disabled="single"
@click="handleReportConsume"
v-hasPermi="['mes:reportWork:edit']"
>物料损耗</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="warning"
@ -97,67 +150,46 @@
<el-table-column type="selection" align="center" />
<el-table-column label="报工单编号" align="center" prop="reportCode" width="120">
<template slot-scope="scope">
<el-button
type="text"
@click="handleView(scope.row)"
>{{scope.row.reportCode}}</el-button>
</template>
</el-table-column>
<el-table-column label="报工类型" align="center" prop="reportType" width="150"/>
<el-table-column label="生产工单编码" align="center" prop="workorderCode" width="200"/>
<el-table-column label="产品编码" align="center" prop="productCode" width="200"/>
<el-table-column label="产品名称" align="center" prop="productName" width="200"/>
<el-table-column label="规格型号" align="center" prop="spec" />
<el-table-column label="单位" align="center" prop="unit" />
<el-table-column label="排产数量" align="center" prop="quantity" />
<el-table-column label="本次报工数量" align="center" prop="quantityFeedback" width="100"/>
<el-table-column label="合格数量" align="center" prop="quantityQualified" :show-overflow-tooltip="true">
<template slot-scope="scope">
<div :style="{ color: scope.row.quantityQualified ? 'green' : 'green' }">
{{ scope.row.quantityQualified }}
</div>
</template>
</el-table-column>
<el-table-column label="不合格数量" align="center" prop="quantityUnqualified" width="100">
<template slot-scope="scope">
<div :style="{ color: scope.row.quantityUnqualified ? 'red' : 'red' }">
{{ scope.row.quantityUnqualified }}
</div>
</template>
</el-table-column>
<el-table-column label="报工人员" align="center" prop="userName" />
<el-table-column label="人员名称" align="center" prop="nickName" />
<el-table-column label="报工途径" align="center" prop="feedbackChannel" />
<el-table-column label="报工时间" align="center" prop="feedbackTime" width="180">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.feedbackTime, '{y}-{m}-{d}') }}</span>
<el-button
type="text"
@click="handleView(scope.row)"
>{{scope.row.reportCode}}</el-button>
</template>
</el-table-column>
<el-table-column label="录入人员" align="center" prop="recordUser" />
<el-table-column label="备注" align="center" prop="remark" />
<el-table-column label="报工类型" align="center" prop="reportType" width="100">
<template slot-scope="scope">
<dict-tag :options="dict.type.report_type" :value="scope.row.reportType"/>
</template>
</el-table-column>
<el-table-column label="工单编码" align="center" prop="workorderCode" width="130"/>
<el-table-column label="产品编码" align="center" prop="productCode" width="130"
:formatter="productCodeFormate"
/>
<el-table-column label="产品名称" align="center" prop="productName" width="200"/>
<el-table-column label="规格型号" align="center" prop="spec" />
<el-table-column label="排产数量(母)" align="center" prop="quantity" width="100"/>
<el-table-column label="单位" align="center" prop="unit" />
<el-table-column label="本次报工数量" align="center" prop="quantityFeedback" width="100"/>
<el-table-column label="报工时间" align="center" prop="feedbackTime" width="150"/><!--加时分秒生成报工单的逻辑要变切记-->
<!--
<el-table-column label="不合格数量" align="center" prop="quantityUnqualified" width="100">
<template slot-scope="scope">
<div :style="{ color: scope.row.quantityUnqualified ? 'red' : 'red' }">
{{ scope.row.quantityUnqualified }}
</div>
</template>
</el-table-column>-->
<el-table-column label="报工人" align="center" prop="nickName" />
<el-table-column label="工号" align="center" prop="userName" />
<el-table-column label="报工状态" align="center" prop="uploadStatus" width="100"/>
<el-table-column label="SAP报工时间" align="center" prop="uploadTime" width="150"/>
<el-table-column label="报工信息" align="center" prop="uploadMsg" width="100"/>
<el-table-column label="工时" align="center" prop="workTime" />
<el-table-column label="线体编码" align="center" prop="machineCode" />
<el-table-column label="线体名称" align="center" prop="machineName" />
<el-table-column label="班组编码" align="center" prop="teamCode" />
<el-table-column label="班次编码" align="center" prop="shiftCode" />
<!-- <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button
size="mini"
type="text"
icon="el-icon-edit"
@click="handleUpdate(scope.row)"
v-hasPermi="['mes:reportWork:edit']"
>修改</el-button>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
v-hasPermi="['mes:reportWork:remove']"
>删除</el-button>
</template>
</el-table-column> -->
<el-table-column label="班次编码" align="center" prop="shiftId" />
<el-table-column label="创建时间" align="center" prop="createTime" width="150"/>
</el-table>
<pagination
@ -171,155 +203,117 @@
<!-- 添加或修改报工报表对话框 -->
<el-dialog :title="title" :visible.sync="open" width="1200px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="110px">
<el-row>
<el-col :span="6">
<el-form-item label="报工单编号" prop="reportCode">
<el-input v-model="form.reportCode" placeholder="请输入报工单编号" />
<el-row>
<el-col :span="6">
<el-form-item label="报工单编号" prop="reportCode">
<el-input v-model="form.reportCode" placeholder="请输入报工单编号" disabled/>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="报工类型" prop="reportType">
<el-select v-model="form.reportType" placeholder="请选择报工类型" style="width:180px">
<el-option
v-for="dict in dict.type.report_work_type"
:key="dict.value"
:label="dict.label"
:value="dict.value"
></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="报工人员" prop="userName">
<el-input v-model="form.userName" placeholder="请输入报工人员" />
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="报工途径" prop="feedbackChannel">
<el-select v-model="form.feedbackChannel" placeholder="请选择报工途径" style="width:180px">
<el-option
v-for="dict in dict.type.report_work_channel"
:key="dict.value"
:label="dict.label"
:value="dict.value"
></el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
</el-col>
<el-col :span="6">
<el-form-item label="报工人员姓名" prop="nickName">
<el-input v-model="form.nickName" placeholder="请输入报工人员" >
<el-button slot="append" @click="handleSelectUser" icon="el-icon-search"></el-button>
</el-input>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="报工人员工号" prop="userName">
<el-input v-model="form.userName" placeholder="请输入报工人员" disabled/>
</el-form-item>
</el-col>
<el-col v-if="false">
<el-form-item label="默认">
<el-input v-model="form.reportType" disabled/>
<el-input v-model="form.feedbackChannel" disabled/>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="生产工单编码" prop="workorderCode">
<el-input v-model="form.workorderCode" placeholder="请选择生产工单" >
<el-button slot="append" @click="handleSelectWorkOrder" icon="el-icon-search"></el-button>
</el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="6">
<el-form-item label="生产工单编码" prop="workorderCode">
<el-input v-model="form.workorderCode" placeholder="请输入生产工单编码" />
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="产品编码" prop="productCode">
<el-input v-model="form.productCode" placeholder="请输入产品编码" />
<el-input v-model="form.productCode" placeholder="请输入产品编码" disabled/>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="产品名称" prop="productName">
<el-input v-model="form.productName" placeholder="请输入产品名称" />
<el-input v-model="form.productName" placeholder="请输入产品名称" disabled/>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="规格型号" prop="spec">
<el-input v-model="form.spec" placeholder="请输入内容" />
<el-input v-model="form.spec" placeholder="请输入内容" disabled/>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="班次编码" prop="shiftId" v-if="false">
<el-input v-model="form.shiftId" placeholder="请输入班次编码" />
</el-form-item>
<el-form-item label="班次名称" prop="shiftName">
<el-input v-model="form.shiftName" placeholder="请输入班次名称" disabled/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="6">
<el-form-item label="单位" prop="unit">
<el-input v-model="form.unit" placeholder="请输入单位" />
<el-form-item label="排产数量" prop="quantity">
<el-input v-model="form.quantity" disabled/>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="线体编码" prop="machineCode">
<el-input v-model="form.machineCode" placeholder="请输入线体编码" />
<el-form-item label="单位" prop="unit">
<el-input v-model="form.unit" placeholder="请输入单位" disabled/>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="线体名称" prop="machineName">
<el-input v-model="form.machineName" placeholder="请输入线体名称" />
<el-input v-model="form.machineName" placeholder="请选择线体名称">
<el-button slot="append" @click="handleSelectEquip" icon="el-icon-search"></el-button>
</el-input>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="线体编码" prop="machineCode">
<el-input v-model="form.machineCode" placeholder="请输入线体编码" disabled/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="6">
<el-form-item label="报工时间" prop="feedbackTime">
<el-date-picker clearable
v-model="form.feedbackTime"
type="date"
value-format="yyyy-MM-dd"
value-format="yyyy-MM-dd"
style="width: 180px"
placeholder="请选择报工时间">
</el-date-picker>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="6">
<el-form-item label="排产数量" prop="quantity">
<el-input-number
:min="0"
:step="1"
v-model="form.quantity"
style="width: 180px"
/>
</el-form-item>
<el-form-item label="本次报工数量" prop="quantityFeedback">
<el-input-number
:min="0"
:step="1"
v-model="form.quantityFeedback"
style="width: 180px"
/>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="本次报工数量" prop="quantityFeedback">
<el-input-number
:min="0"
:step="1"
v-model="form.quantityFeedback"
style="width: 180px"
/>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="合格数量" prop="quantityQualified">
<el-input-number
:min="0"
:step="1"
v-model="form.quantityQualified"
style="width: 180px"
/>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="不合格数量" prop="quantityUnqualified">
<el-input-number
:min="0"
:step="1"
v-model="form.quantityUnqualified"
style="width: 180px"
/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="6">
<el-form-item label="人员名称" prop="nickName">
<el-input v-model="form.nickName" placeholder="请输入人员名称" />
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="录入人员" prop="recordUser">
<el-input v-model="form.recordUser" placeholder="请输入录入人员" />
</el-form-item>
</el-col>
<el-col :span="6">
<el-col :span="6">
<el-form-item label="班组编码" prop="teamCode">
<el-input v-model="form.teamCode" placeholder="请输入班组编码" />
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="班次编码" prop="shiftCode">
<el-input v-model="form.shiftCode" placeholder="请输入班次编码" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
@ -329,53 +323,48 @@
</el-col>
</el-row>
</el-form>
<el-divider content-position="center" v-if="form.reportCode !=null"></el-divider>
<ReportWorkConsume v-if="form.reportCode !=null" :optType="optType" :reportCode="form.reportCode"></ReportWorkConsume>
<div v-if="optType =='reportConsume' || optType =='view'">
<el-divider content-position="center" v-if="form.reportCode !=null"></el-divider>
<ReportWorkConsume :reportCode="form.reportCode"
:productCode="form.productCode"
:workorderCode="form.workorderCode"
></ReportWorkConsume>
</div>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="cancel" v-if="optType =='view'"></el-button>
<el-button type="primary" @click="submitForm" v-else></el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
<!-- 添加或修改生产报工物料消耗对话框 -->
<el-dialog :title="title" :visible.sync="reportWorkConsunmOpen" width="1200px" append-to-body>
<el-table v-loading="loading" :data="reportWorkConsumeList">
<el-table-column type="selection" width="100" align="center" />
<el-table-column label="报工编码" align="center" prop="reportCode" />
<el-table-column label="工单编码" align="center" prop="workorderCode" />
<el-table-column label="物料编号" align="center" prop="materialCode" />
<el-table-column label="物料名称" align="center" prop="materialName" />
<el-table-column label="物料规格型号" align="center" prop="materialSpc" />
<el-table-column label="数量" align="center" prop="quantity" />
<el-table-column label="单位" align="center" prop="unit" />
<el-table-column label="备注" align="center" prop="remark" />
<el-table-column label="预留字段1" align="center" prop="attr1" />
<el-table-column label="预留字段2" align="center" prop="attr2" />
<el-table-column label="预留字段3" align="center" prop="attr3" />
<el-table-column label="预留字段4" align="center" prop="attr4" />
<el-table-column label="工厂编码" align="center" prop="factoryCode" />
</el-table>
<pagination
v-show="consumeTotal>0"
:total="consumeTotal"
:page.sync="consumeQueryParams.consumePageNum"
:limit.sync="consumeQueryParams.consumePageSize"
@pagination="getList"
/>
</el-dialog>
<!--人员选择弹窗-->
<ItemSelectUser
ref="itemSelectUser"
@onSelected="onSelectUser"
></ItemSelectUser>
<!--工单选择弹窗-->
<ItemSelectWorkOrder
ref="itemSelectWorkOrder"
@onSelected="onSelectWorkOrder"
></ItemSelectWorkOrder>
<!--线体选择弹窗-->
<ItemSelectEquip
ref="itemSelectEquip"
@onSelected="onSelectEquip"
></ItemSelectEquip>
</div>
</template>
<script>
import { listReportWork, getReportWork, delReportWork, addReportWork, updateReportWork } from "@/api/mes/reportWork";
import { listReportWork, getReportWork, delReportWork, addReportWork, updateReportWork,reportSap } from "@/api/mes/reportWork";
import ReportWorkConsume from "./reportWorkConsume.vue";
import ItemSelectUser from "./selectUser.vue";
import ItemSelectWorkOrder from "./selectWorkOrder.vue";
import ItemSelectEquip from "./selectEquip.vue";
import moment from 'moment';
export default {
name: "ReportWork",
dicts: ['report_work_type','report_work_channel'],
components: {ReportWorkConsume},
dicts: ['report_type'],
components: {ReportWorkConsume,ItemSelectUser,ItemSelectWorkOrder,ItemSelectEquip},
data() {
return {
optType: undefined,
@ -383,6 +372,7 @@ export default {
loading: true,
//
ids: [],
selectRow:{},
//
single: true,
//
@ -399,14 +389,15 @@ export default {
title: "",
//
open: false,
reportWorkConsunmOpen:false,
consumeQueryParams:{
consumePageNum:1,
consumePageSize:10,
reportCode:null,
},
consumeQueryParams:{
consumePageNum:1,
consumePageSize:10,
reportCode:null,
},
//
queryParams: {
createTimeArray: [],
feedbackTimeArray: [],
pageNum: 1,
pageSize: 10,
reportType: null,
@ -430,7 +421,7 @@ export default {
machineCode: null,
machineName: null,
teamCode: null,
shiftCode: null,
shiftId: null,
attr1: null,
attr2: null,
attr3: null,
@ -438,29 +429,67 @@ export default {
},
//
form: {},
uploadStatusList:[
{"dictLabel":"待报工","dictValue":"0"},
{"dictLabel":"报工成功","dictValue":"1"},
{"dictLabel":"报工失败","dictValue":"2"}
],
//
rules: {
reportType: [
{ required: true, message: "报工类型报工类型SELF自行报工、UNI统一报工不能为空", trigger: "change" }
workorderCode:[
{ required: true, message: "本次报工工单不能为空", trigger: "blur" }
],
quantityFeedback: [
{ required: true, message: "本次报工数量不能为空", trigger: "blur" }
],
quantityQualified: [
{ required: true, message: "合格数量不能为空", trigger: "blur" }
feedbackTime: [
{ required: true, message: "本次报工时间不能为空", trigger: "blur" }
],
quantityUnqualified: [
{ required: true, message: "不合格数量不能为空", trigger: "blur" }
machineName: [
{ required: true, message: "本次报工线体不能为空", trigger: "blur" }
],
teamCode: [
{ required: true, message: "本次报工班组不能为空", trigger: "blur" }
],
}
};
},
created() {
this.getList();
this.getDate();
},
methods: {
//
productCodeFormate(row, column, cellValue){
return cellValue.slice(7,18); //
},
/**获取默认查询时间段**/
getDate() {
let start = this.Fungetdate (0)
let end = this.Fungetdate (1)
this.queryParams.createTimeArray.push(start,end)
//this.queryParams.feedbackTimeArray.push(start,end)
},
Fungetdate (num) {
var dd = new Date();
dd.setDate(dd.getDate() + num);
var y = dd.getFullYear();
var m = dd.getMonth() + 1;//
var d = dd.getDate();
return y + "-" + m + "-" + d+" 00:00:00";
},
/** 查询报工报表列表 */
getList() {
if(this.queryParams.createTimeArray !=null && this.queryParams.createTimeArray.length>0){
this.queryParams.createTimeStart = moment(this.queryParams.createTimeArray[0]).format('YYYY-MM-DD HH:mm:ss');
this.queryParams.createTimeEnd = moment(this.queryParams.createTimeArray[1]).format('YYYY-MM-DD HH:mm:ss');
}
if(this.queryParams.feedbackTimeArray !=null && this.queryParams.feedbackTimeArray.length>0){
this.queryParams.feedbackTimeStart = moment(this.queryParams.feedbackTimeArray[0]).format('YYYY-MM-DD 00:00:00');
this.queryParams.feedbackTimeEnd = moment(this.queryParams.feedbackTimeArray[1]).format('YYYY-MM-DD 00:00:00');
}
this.loading = true;
listReportWork(this.queryParams).then(response => {
this.reportWorkList = response.rows;
@ -488,7 +517,7 @@ export default {
reset() {
this.form = {
id: null,
reportType: null,
reportType: 'UNI',
reportCode: null,
workorderCode: null,
productCode: null,
@ -501,7 +530,7 @@ export default {
quantityUnqualified: null,
userName: null,
nickName: null,
feedbackChannel: null,
feedbackChannel: 'PC',
feedbackTime: null,
recordUser: null,
status: null,
@ -510,7 +539,7 @@ export default {
machineCode: null,
machineName: null,
teamCode: null,
shiftCode: null,
shiftId: null,
attr1: null,
attr2: null,
attr3: null,
@ -535,6 +564,7 @@ export default {
//
handleSelectionChange(selection) {
this.ids = selection.map(item => item.id)
this.selectRow = selection
this.single = selection.length!==1
this.multiple = !selection.length
},
@ -548,6 +578,13 @@ export default {
/** 修改按钮操作 */
handleUpdate(row) {
this.reset();
this.optType = "edit";
let sr = this.selectRow[0];
if(sr.uploadStatus =='sap报工成功'){
this.$modal.msgError(`上传sap成功,不允许修改`);
return
}
const id = row.id || this.ids
getReportWork(id).then(response => {
this.form = response.data;
@ -577,6 +614,13 @@ export default {
},
/** 删除按钮操作 */
handleDelete(row) {
let sr = this.selectRow[0];
if(sr.uploadStatus =='sap报工成功'){
this.$modal.msgError(`上传sap成功,不允许删除`);
return
}
const ids = row.id || this.ids;
this.$modal.confirm('是否确认删除报工报表编号为"' + ids + '"的数据项?').then(function() {
return delReportWork(ids);
@ -585,12 +629,70 @@ export default {
this.$modal.msgSuccess("删除成功");
}).catch(() => {});
},
/** 报工按钮操作 */
handleReport(row) {
let sr = this.selectRow[0];
const code = sr.reportCode;
this.$modal.confirm('是否确认报工报表编号为"' + code + '"的数据项向sap报工').then(function() {
return reportSap(code);
}).then(() => {
this.getList();
this.$modal.msgSuccess("报工成功");
}).catch(() => {});
},
/** 物料损耗按钮操作 */
handleReportConsume(row) {
this.reset();
this.optType = "reportConsume";
let sr = this.selectRow[0];
const id = row.id || this.ids
getReportWork(id).then(response => {
this.form = response.data;
this.open = true;
this.title = "工单物料损耗";
});
},
/** 导出按钮操作 */
handleExport() {
this.download('mes/reportWork/export', {
...this.queryParams
}, `reportWork_${new Date().getTime()}.xlsx`)
}
},
/**人员选择弹出框**/
handleSelectUser() {
this.$refs.itemSelectUser.showFlag = true;
},
//
onSelectUser(obj) {
debugger
this.form.userName = obj.code;
this.form.nickName = obj.name;
},
/**工单选择弹出框**/
handleSelectWorkOrder() {
this.$refs.itemSelectWorkOrder.showFlag = true;
},
//
onSelectWorkOrder(obj) {
this.form.workorderCode = obj.workorderCode;
this.form.productName = obj.productName;
this.form.productCode = obj.productCode;
this.form.productSpc = obj.productSpc;
this.form.quantity = obj.quantitySplit;
this.form.unit = obj.unit;
this.form.shiftId = obj.shiftId;
this.form.shiftName = obj.shiftName;
},
/**线体选择弹出框**/
handleSelectEquip() {
this.$refs.itemSelectEquip.showFlag = true;
},
//线
onSelectEquip(obj) {
this.form.machineCode = obj.equipmentCode;
this.form.machineName = obj.equipmentName;
},
}
};
</script>

@ -8,7 +8,6 @@
icon="el-icon-plus"
size="mini"
@click="handleAdd"
v-hasPermi="['mes:reportWorkConsume:add']"
>新增</el-button>
</el-col>
<el-col :span="1.5">
@ -19,7 +18,6 @@
size="mini"
:disabled="single"
@click="handleUpdate"
v-hasPermi="['mes:reportWorkConsume:edit']"
>修改</el-button>
</el-col>
<el-col :span="1.5">
@ -30,9 +28,9 @@
size="mini"
:disabled="multiple"
@click="handleDelete"
v-hasPermi="['mes:reportWorkConsume:remove']"
>删除</el-button>
</el-col>
<!--
<el-col :span="1.5">
<el-button
type="warning"
@ -40,9 +38,8 @@
icon="el-icon-download"
size="mini"
@click="handleExport"
v-hasPermi="['mes:reportWorkConsume:export']"
>导出</el-button>
</el-col>
</el-col>-->
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
@ -51,11 +48,9 @@
<el-table-column label="工单编码" align="center" prop="workorderCode" width="200"/>
<el-table-column label="物料编号" align="center" prop="materialCode" width="200"/>
<el-table-column label="物料名称" align="center" prop="materialName" width="200"/>
<el-table-column label="物料规格型号" align="center" prop="materialSpc" width="200"/>
<el-table-column label="物料规格型号" align="center" prop="materialSpc" width="200" v-if="false"/>
<el-table-column label="数量" align="center" prop="quantity" />
<el-table-column label="单位" align="center" prop="unit" />
<el-table-column label="备注" align="center" prop="remark" />
<el-table-column label="工厂编码" align="center" prop="factoryCode" />
<el-table-column label="操作" v-if="optType !='view'" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button
@ -63,14 +58,12 @@
type="text"
icon="el-icon-edit"
@click="handleUpdate(scope.row)"
v-hasPermi="['mes:reportWorkConsume:edit']"
>修改</el-button>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
v-hasPermi="['mes:reportWorkConsume:remove']"
>删除</el-button>
</template>
</el-table-column>
@ -87,44 +80,58 @@
<!-- 添加或修改生产报工物料消耗对话框 -->
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-form-item label="工单编码" prop="workorderCode">
<el-input v-model="form.workorderCode" placeholder="请输入工单编码" />
<el-form-item label="工单号" prop="workorderCode">
<el-input v-model="form.workorderCode" placeholder="请输入物料编号" disabled/>
</el-form-item>
<el-form-item label="报工单号" prop="reportCode">
<el-input v-model="form.reportCode" placeholder="请输入物料编号" disabled/>
</el-form-item>
<el-form-item label="物料名称" prop="materialName">
<el-input v-model="form.materialName" placeholder="请选择物料名称">
<el-button slot="append" @click="handleSelectMaterial" icon="el-icon-search"></el-button>
</el-input>
</el-form-item>
<el-form-item label="物料编号" prop="materialCode">
<el-input v-model="form.materialCode" placeholder="请输入物料编号" />
<el-input v-model="form.materialCode" placeholder="请输入物料编号" disabled/>
</el-form-item>
<el-form-item label="物料名称" prop="materialName">
<el-input v-model="form.materialName" placeholder="请输入物料名称" />
</el-form-item>
<el-form-item label="物料规格型号" prop="materialSpc">
<el-input v-model="form.materialSpc" placeholder="请输入物料规格型号" />
<!--
<el-form-item label="规格型号" prop="materialSpc">
<el-input v-model="form.materialSpc" placeholder="请输入物料规格型号" disabled/>
</el-form-item>-->
<el-form-item label="单位" prop="unit">
<el-select v-model="form.unit" placeholder="请选择单位" width="100%">
<el-option
v-for="dict in dict.type.unit"
:key="dict.value"
:label="dict.label"
:value="dict.value"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="数量" prop="quantity">
<el-input v-model="form.quantity" placeholder="请输入数量" />
</el-form-item>
<el-form-item label="单位" prop="unit">
<el-input v-model="form.unit" placeholder="请输入单位" />
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-input v-model="form.remark" placeholder="请输入备注" />
</el-form-item>
<el-form-item label="工厂编码" prop="factoryCode">
<el-input v-model="form.factoryCode" placeholder="请输入工厂编码" />
<el-input type="number" v-model="form.quantity" placeholder="请输入数量" />
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
<!--物料选择弹窗-->
<ItemSelectMaterail
ref="itemSelectMaterial"
@onSelected="onSelectMaterial"
></ItemSelectMaterail>
</el-dialog>
</div>
</template>
<script>
import { listReportWorkConsume, getReportWorkConsume, delReportWorkConsume, addReportWorkConsume, updateReportWorkConsume } from "@/api/mes/reportWorkConsume";
import ItemSelectMaterail from "./selectMaterial.vue";
export default {
name: "ReportWorkConsume",
dicts: ["unit"],
components: {ItemSelectMaterail},
data() {
return {
//
@ -160,7 +167,8 @@ export default {
attr3: null,
attr4: null,
factoryCode: null,
reportCode :this.reportCode
reportCode :this.reportCode,
productCode: this.productCode
},
//
form: {},
@ -182,8 +190,10 @@ export default {
};
},
props: {
reportCode: null,
optType: undefined,
workorderCode:null,
productCode:null,
reportCode: null,
optType: undefined,
},
created() {
this.getList();
@ -225,7 +235,9 @@ export default {
updateBy: null,
updateTime: null,
factoryCode: null,
reportCode: this.reportCode
reportCode: this.reportCode,
productCode: this.productCode,
workorderCode: this.workorderCode
};
this.resetForm("form");
},
@ -296,7 +308,18 @@ export default {
this.download('mes/reportWorkConsume/export', {
...this.queryParams
}, `reportWorkConsume_${new Date().getTime()}.xlsx`)
}
},
/**物料选择弹出框**/
handleSelectMaterial() {
this.$refs.itemSelectMaterial.showFlag = true;
this.$refs.itemSelectMaterial.init(this.productCode);
},
//
onSelectMaterial(obj) {
this.form.materialCode = obj.component;
this.form.materialName = obj.componentName;
this.form.unit = obj.unit;
},
}
};
</script>

@ -0,0 +1,140 @@
<template>
<el-dialog title="线体选择"
v-if="showFlag"
:visible.sync="showFlag"
:modal= false
width="1000px"
>
<el-row :gutter="20">
<el-col :span="24" :xs="24">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="105px" align="center">
<el-form-item label="线体编码">
<el-input
v-model="queryParams.userCode"
placeholder="线体"
clearable
style="width: 240px"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="线体名称">
<el-input
v-model="queryParams.userName"
placeholder="线体名称"
clearable
style="width: 240px"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery"></el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery"></el-button>
</el-form-item>
</el-form>
<el-table v-loading="loading" :data="itemList" @selection-change="handleBomSelectionChange" ref="myTable" >
<el-table-column width="50" align="center" type="selection"/>
<el-table-column label="线体编码" align="left" prop="equipmentCode" :show-overflow-tooltip="true" />
<el-table-column label="线体名称" align="left" prop="equipmentName" :show-overflow-tooltip="true" />
</el-table>
<pagination
v-show="total>0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
</el-col>
</el-row>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitBomForm"> </el-button>
<el-button @click="showFlag=false"> </el-button>
</div>
</el-dialog>
</template>
<script>
import { getMesListEquip } from "@/api/mes/reportWork";
export default {
name: "itemSelectUser",
data() {
return {
showFlag:false,
//
selectedRows: {},
//
single: true,
//
multiple: true,
//
showSearch: true,
//
total: 0,
// BOM
itemList: null,
//
bomCode: undefined,
defaultProps: {
id: "id",
label: "label"
},
//
queryParams: {
pageNum: 1,
pageSize: 10,
userCode: '',
userName : ''
}
};
},
created() {
this.getList();
},
methods: {
/** 查询表格列表*/
getList() {
this.loading = true;
getMesListEquip(this.queryParams).then(response => {
this.itemList = response.rows;
this.total = response.total;
this.loading = false;
}
);
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm("queryForm");
this.handleQuery();
},
//
handleBomSelectionChange(selection) {
if(selection.length>1){
this.$modal.msgSuccess("只能选一个");
}
this.selectionRow = selection[0]
},
submitBomForm() {
this.$emit('onSelected', this.selectionRow);
this.showFlag = false;
this.queryParams.itemCodeGet = "";
}
}
};
</script>

@ -0,0 +1,158 @@
<template>
<el-dialog title="物料选择"
v-if="showFlag"
:visible.sync="showFlag"
:modal= false
width="1000px"
>
<el-row :gutter="20">
<el-col :span="24" :xs="24">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="90px" align="left">
<el-form-item label="物料编码">
<el-input
v-model="queryParams.component"
placeholder="物料编码"
clearable
style="width: 200px"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="物料名称">
<el-input
v-model="queryParams.componentName"
placeholder="物料名称"
clearable
style="width: 200px"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="物料组名称">
<el-input
v-model="queryParams.productGroupName"
placeholder="物料组名称"
clearable
style="width: 200px"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery"></el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery"></el-button>
</el-form-item>
</el-form>
<el-table v-loading="loading" :data="itemList" @selection-change="handleBomSelectionChange" ref="myTable" >
<el-table-column width="50" align="center" type="selection">
</el-table-column>
<!-- 序号 -->
<el-table-column label="物料编码" align="left" prop="component" :show-overflow-tooltip="true" />
<el-table-column label="物料名称" align="left" prop="componentName" :show-overflow-tooltip="true" />
<el-table-column label="物料单位" align="left" prop="unit" :show-overflow-tooltip="true" />
<el-table-column label="物料组" align="left" prop="productGroup" :show-overflow-tooltip="true" />
<el-table-column label="物料组名称" align="left" prop="productGroupName" :show-overflow-tooltip="true" />
</el-table>
<pagination
v-show="total>0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
</el-col>
</el-row>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitBomForm"> </el-button>
<el-button @click="showFlag=false"> </el-button>
</div>
</el-dialog>
</template>
<script>
import { getMesListBom } from "@/api/mes/reportWork";
export default {
name: "itemSelectMaterial",
data() {
return {
showFlag:false,
//
selectedRows: {},
//
single: true,
//
multiple: true,
//
showSearch: true,
//
total: 0,
// BOM
itemList: null,
//
bomCode: undefined,
defaultProps: {
id: "id",
label: "label"
},
//
queryParams: {
pageNum: 1,
pageSize: 10,
productCode: '',
component : '',
componentName : '',
productGroupName:''
},
selectionRow:{}
};
},
created() {
//this.getList();
},
methods: {
init(productCode){
this.queryParams.productCode = productCode;
this.getList();
},
/** 查询表格列表*/
getList() {
this.loading = true;
getMesListBom(this.queryParams).then(response => {
this.itemList = response.rows;
this.total = response.total;
this.loading = false;
}
);
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm("queryForm");
this.handleQuery();
},
//
handleBomSelectionChange(selection) {
if(selection.length>1){
this.$modal.msgSuccess("只能选一个");
}
this.selectionRow = selection[0]
},
submitBomForm() {
this.$emit('onSelected', this.selectionRow);
this.showFlag = false;
},
}
};
</script>

@ -0,0 +1,147 @@
<template>
<el-dialog title="人员选择"
v-if="showFlag"
:visible.sync="showFlag"
:modal= false
width="1000px"
>
<el-row :gutter="20">
<el-col :span="24" :xs="24">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="105px" align="center">
<el-form-item label="员工工号">
<el-input
v-model="queryParams.userCode"
placeholder="员工工号"
clearable
style="width: 240px"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="员工姓名">
<el-input
v-model="queryParams.userName"
placeholder="员工姓名"
clearable
style="width: 240px"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery"></el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery"></el-button>
</el-form-item>
</el-form>
<el-table v-loading="loading" :data="itemList" @selection-change="handleBomSelectionChange" ref="myTable" >
<el-table-column width="50" align="center" type="selection">
</el-table-column>
<!-- 序号 -->
<el-table-column label="员工ID" align="left" key="userId" prop="userId" :show-overflow-tooltip="true" />
<el-table-column label="员工工号" align="left" key="userCode" prop="userCode" :show-overflow-tooltip="true" />
<el-table-column label="员工姓名" align="left" key="userName" prop="userName" :show-overflow-tooltip="true" />
<el-table-column label="手机号" align="left" key="phonenumber" prop="phonenumber" :show-overflow-tooltip="true" />
</el-table>
<pagination
v-show="total>0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
</el-col>
</el-row>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitBomForm"> </el-button>
<el-button @click="showFlag=false"> </el-button>
</div>
</el-dialog>
</template>
<script>
import { getMesListUser } from "@/api/mes/reportWork";
export default {
name: "itemSelectUser",
data() {
return {
showFlag:false,
//
selectedRows: {},
//
single: true,
//
multiple: true,
//
showSearch: true,
//
total: 0,
// BOM
itemList: null,
//
bomCode: undefined,
defaultProps: {
id: "id",
label: "label"
},
//
queryParams: {
pageNum: 1,
pageSize: 10,
userCode: '',
userName : ''
}
};
},
created() {
this.getList();
},
methods: {
/** 查询表格列表*/
getList() {
this.loading = true;
getMesListUser(this.queryParams).then(response => {
this.itemList = response.rows;
this.total = response.total;
this.loading = false;
}
);
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm("queryForm");
this.handleQuery();
},
//
handleBomSelectionChange(selection) {
if(selection.length>1){
this.$modal.msgSuccess("只能选一个");
}
this.ids = selection[0].userCode;
this.idsName = selection[0].userName;
},
submitBomForm() {
this.selectedRows.code = this.ids;
this.selectedRows.name = this.idsName;
this.$emit('onSelected', this.selectedRows);
this.showFlag = false;
this.queryParams.itemCodeGet = "";
}
}
};
</script>

@ -0,0 +1,141 @@
<template>
<el-dialog title="工单选择"
v-if="showFlag"
:visible.sync="showFlag"
:modal= false
width="1000px"
>
<el-row :gutter="20">
<el-col :span="24" :xs="24">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="105px" align="left">
<el-form-item label="工单编号">
<el-input
v-model="queryParams.workorderCode"
placeholder="工单编号"
clearable
style="width: 240px"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery"></el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery"></el-button>
</el-form-item>
</el-form>
<el-table v-loading="loading" :data="itemList" @selection-change="handleBomSelectionChange" ref="myTable" >
<el-table-column width="50" align="center" type="selection"/>
<el-table-column label="生产日期" align="left" prop="productDate" width="100"/>
<el-table-column label="工单编号" align="left" prop="workorderCode" width="150"/>
<el-table-column label="订单编号" align="left" prop="orderCode" width="120"/>
<el-table-column label="产品编码" align="left" prop="productCode" width="180" />
<el-table-column label="产品名称" align="left" prop="productName" width="180"/>
<el-table-column label="规格型号" align="left" prop="productSpc" :show-overflow-tooltip="true" />
<el-table-column label="计划生产数量" align="left" prop="quantitySplit" width="100" />
<el-table-column label="单位" align="left" prop="unit" :show-overflow-tooltip="true" />
<el-table-column label="班次ID" align="left" prop="shiftId" :show-overflow-tooltip="true" v-if="false"/>
<el-table-column label="班次名称" align="left" prop="shiftName" :show-overflow-tooltip="true" />
<el-table-column label="生产线体" align="left" prop="prodLineCode" :show-overflow-tooltip="true" width="100"/>
</el-table>
<pagination
v-show="total>0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
</el-col>
</el-row>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitBomForm"> </el-button>
<el-button @click="showFlag=false"> </el-button>
</div>
</el-dialog>
</template>
<script>
import { getMesListWorkOrder } from "@/api/mes/reportWork";
export default {
name: "itemSelectWorkOrder",
data() {
return {
showFlag:false,
//
selectedRows: {},
//
single: true,
//
multiple: true,
//
showSearch: true,
//
total: 0,
// BOM
itemList: null,
//
bomCode: undefined,
defaultProps: {
id: "id",
label: "label"
},
//
queryParams: {
pageNum: 1,
pageSize: 10,
workorderCode: ''
},
selectionRow:{}
};
},
created() {
this.getList();
},
methods: {
/** 查询表格列表*/
getList() {
this.loading = true;
getMesListWorkOrder(this.queryParams).then(response => {
this.itemList = response.rows;
this.total = response.total;
this.loading = false;
}
);
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm("queryForm");
this.handleQuery();
},
//
handleBomSelectionChange(selection) {
if(selection.length>1){
this.$modal.msgSuccess("只能选一个");
}
this.selectionRow = selection[0]
},
submitBomForm() {
this.$emit('onSelected', this.selectionRow);
this.showFlag = false;
this.queryParams.itemCodeGet = "";
}
}
};
</script>

@ -1053,7 +1053,7 @@ export default {
changeRoute(routeCode) {
//
getProEquipment(routeCode).then(response => {
debugger
//
this.converCarNum = null;

@ -759,7 +759,6 @@ export default {
}).then(() => {
this.loading = false;
this.getList();
this.$modal.msgSuccess("下发成功");
}).catch(
function (e) {
if (e == 'cancel') {

@ -9,7 +9,7 @@
<!--BOM数据-->
<el-col :span="24" :xs="24">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="105px" align="center">
<el-form-item label="BOM物料编码" prop="itemCode">
<el-form-item label="物料编码" prop="itemCode">
<el-input
v-model="queryParams.component"
placeholder="请输入物料编码"
@ -18,7 +18,7 @@
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="产品名称" prop="itemName">
<el-form-item label="物料名称" prop="itemName">
<el-input
v-model="queryParams.componentName"
placeholder="请输入物料名称"

@ -152,12 +152,6 @@
/>
</el-form-item>
</el-col>
<!--
<el-col :span="12">
<el-form-item label="材料URL" prop="docUrl">
<el-input v-model="form.docUrl" placeholder="请输入材料URL" />
</el-form-item>
</el-col>-->
</el-row>
<el-row>
<el-col :span="24">

Loading…
Cancel
Save