Merge remote-tracking branch 'origin/master'

yangwl
Yangwl 2 months ago
commit 957d7968e7

@ -180,4 +180,14 @@ export function getProdLineList() {
method: 'get',
params: {}
});
}
}
export function getIdCardList(workorderCode){
const data={
workorderCode
}
return request({
url:'/plan/pro/workorder/getIdCardList',
method:'post',
data:data
})
}

@ -178,6 +178,17 @@ export function getWorkOrder(query) {
params: query
});
}
// 查询生产过程-工单列表
export function getPutInOrder(query) {
return request({
url: '/quality/qcInventory/getPutInOrder',
method: 'get',
params: query
});
}
// 查询入库订单列表
export function getProductWorkOrder(query) {
return request({

@ -313,14 +313,14 @@ export default {
setInterval(() => this.getAlarmData(), 1000 * 60);
this.poolNameList = JSON.parse(localStorage.getItem("POOL_NAME_LIST"));
this.poolName = localStorage.getItem("USER_POOL_NAME_CURRENT");
/**
//
this.getUnReadList();
//
this.timer = setInterval(() => {
setTimeout(this.getUnReadList(), 30000);
}, 30000);
**/
},
components: {
Breadcrumb,

@ -116,6 +116,20 @@
/>
</el-select>
</el-form-item>
<el-form-item label="创建时间" prop="createTime">
<el-date-picker
v-model="queryParams.createTimeArray"
type="daterange"
align="right"
unlink-panels
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
value-format="yyyy-MM-dd"
:picker-options="pickerOptions"
>
</el-date-picker>
</el-form-item>
<el-form-item v-if="false" label="循环周期" prop="planLoop">
<el-input
v-model="queryParams.planLoop"
@ -1029,6 +1043,7 @@ export default {
createTime: null,
updateBy: null,
updateTime: null,
createTimeArray: [],
loopStartArray: [],
orderStartArray: [],
orderEndArray: [],
@ -1119,6 +1134,7 @@ export default {
updateBy: null,
updateTime: null,
equ: { equipmentName: null },
createTimeArray: [],
loopStartArray: [],
orderStartArray: [],
orderEndArray: [],
@ -1133,6 +1149,7 @@ export default {
},
/** 重置按钮操作 */
resetQuery() {
this.queryParams.createTimeArray = [];
this.queryParams.loopStartArray = [];
this.queryParams.orderStartArray = [];
this.queryParams.orderEndArray = [];

@ -165,7 +165,7 @@
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item v-if="false" label="创建时间" prop="createTime">
<el-form-item label="创建时间" prop="createTime">
<el-date-picker
v-model="queryParams.createTimeArray"
type="daterange"

@ -148,7 +148,7 @@
v-model="queryParams.orderStart"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择检时间"
placeholder="请选择检时间"
>
</el-date-picker>
</el-form-item>
@ -314,6 +314,20 @@
>
</el-date-picker>
</el-form-item>
<el-form-item label="创建时间" prop="createTime">
<el-date-picker
v-model="queryParams.createTimeArray"
type="daterange"
align="right"
unlink-panels
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
value-format="yyyy-MM-dd"
:picker-options="pickerOptions"
>
</el-date-picker>
</el-form-item>
<el-form-item>
<el-button
type="primary"
@ -903,6 +917,7 @@ export default {
createTime: null,
updateBy: null,
updateTime: null,
createTimeArray:[],
loopStartArray: [],
orderStartArray: [],
orderEndArray: [],
@ -993,6 +1008,7 @@ export default {
createTime: null,
updateBy: null,
updateTime: null,
createTimeArray:[],
loopStartArray: [],
orderStartArray: [],
orderEndArray: [],
@ -1007,6 +1023,7 @@ export default {
},
/** 重置按钮操作 */
resetQuery() {
this.queryParams.createTimeArray = [];
this.queryParams.loopStartArray = [];
this.queryParams.orderStartArray = [];
this.queryParams.orderEndArray = [];

@ -178,6 +178,20 @@
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="保养类型" prop="upkeep">
<el-select
v-model="queryParams.upkeep"
placeholder="请选择保养类型"
clearable
>
<el-option
v-for="dict in dict.type.device_upkeep_type"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<el-form-item v-if="false" label="工单用时" prop="orderCostTime">
<el-input
v-model="queryParams.orderCostTime"
@ -272,6 +286,7 @@
</el-form-item>
<el-form-item label="循环范围开始" prop="planLoopStart">
<el-date-picker
style="width: 250px"
v-model="queryParams.loopStartArray"
type="daterange"
align="right"
@ -286,6 +301,7 @@
</el-form-item>
<el-form-item label="循环范围结束" prop="planLoopEnd">
<el-date-picker
style="width: 250px"
v-model="queryParams.loopEndArray"
type="daterange"
align="right"
@ -300,6 +316,7 @@
</el-form-item>
<el-form-item label="保养开始时间" prop="orderStart">
<el-date-picker
style="width: 250px"
v-model="queryParams.orderStartArray"
type="daterange"
align="right"
@ -314,6 +331,7 @@
</el-form-item>
<el-form-item label="保养结束时间" prop="orderEnd">
<el-date-picker
style="width: 250px"
v-model="queryParams.orderEndArray"
type="daterange"
align="right"
@ -326,19 +344,20 @@
>
</el-date-picker>
</el-form-item>
<el-form-item label="保养类型" prop="upkeep">
<el-select
v-model="queryParams.upkeep"
placeholder="请选择保养类型"
clearable
<el-form-item label="创建时间" prop="createTime">
<el-date-picker
style="width: 250px"
v-model="queryParams.createTimeArray"
type="daterange"
align="right"
unlink-panels
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
value-format="yyyy-MM-dd"
:picker-options="pickerOptions"
>
<el-option
v-for="dict in dict.type.device_upkeep_type"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-date-picker>
</el-form-item>
<el-form-item>
<el-button
@ -1002,6 +1021,7 @@ export default {
createTime: null,
updateBy: null,
updateTime: null,
createTimeArray:[],
loopStartArray: [],
orderStartArray: [],
orderEndArray: [],
@ -1108,6 +1128,7 @@ export default {
createTime: null,
updateBy: null,
updateTime: null,
createTimeArray:[],
loopStartArray: [],
orderStartArray: [],
orderEndArray: [],
@ -1122,6 +1143,7 @@ export default {
},
/** 重置按钮操作 */
resetQuery() {
this.queryParams.createTimeArray = [];
this.queryParams.loopEndArray = null;
this.queryParams.loopStartArray = null;
this.queryParams.orderEndArray = null;

@ -193,7 +193,7 @@
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item v-if="false" label="创建时间" prop="createTime">
<el-form-item label="创建时间" prop="createTime">
<el-date-picker
v-model="queryParams.createTimeArray"
type="daterange"

@ -286,6 +286,20 @@
>
</el-date-picker>
</el-form-item>
<el-form-item label="创建时间" prop="createTime">
<el-date-picker
v-model="queryParams.createTimeArray"
type="daterange"
align="right"
unlink-panels
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
value-format="yyyy-MM-dd"
:picker-options="pickerOptions"
>
</el-date-picker>
</el-form-item>
<el-form-item
v-if="false"
label-width="100px"
@ -1035,6 +1049,7 @@ export default {
createTime: null,
updateBy: null,
updateTime: null,
createTimeArray:[],
loopStartArray: [],
orderStartArray: [],
orderEndArray: [],
@ -1142,6 +1157,7 @@ export default {
updateBy: null,
updateTime: null,
equ: { equipmentName: null },
createTimeArray:[],
loopStartArray: [],
orderStartArray: [],
orderEndArray: [],
@ -1155,6 +1171,7 @@ export default {
},
/** 重置按钮操作 */
resetQuery() {
this.queryParams.createTimeArray = [],
this.queryParams.loopStartArray = [];
this.queryParams.orderStartArray = [];
this.queryParams.orderEndArray = [];

@ -277,6 +277,20 @@
:picker-options="pickerOptions">
</el-date-picker>
</el-form-item>
<el-form-item label="创建时间" prop="createTime">
<el-date-picker
v-model="queryParams.createTimeArray"
type="daterange"
align="right"
unlink-panels
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
value-format="yyyy-MM-dd"
:picker-options="pickerOptions"
>
</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>
@ -671,6 +685,7 @@ export default {
createTime: null,
updateBy: null,
updateTime: null,
createTimeArray:[],
loopStartArray: [],
orderStartArray: [],
orderEndArray: [],
@ -762,6 +777,7 @@ export default {
createTime: null,
updateBy: null,
updateTime: null,
createTimeArray:[],
loopStartArray: [],
orderStartArray: [],
orderEndArray: [],
@ -775,6 +791,7 @@ export default {
},
/** 重置按钮操作 */
resetQuery() {
this.queryParams.createTimeArray = [];
this.queryParams.loopStartArray = [];
this.queryParams.orderStartArray = [];
this.queryParams.orderEndArray = [];

@ -347,6 +347,20 @@
/>
</el-select>
</el-form-item>
<el-form-item label="创建时间" prop="createTime">
<el-date-picker
v-model="queryParams.createTimeArray"
type="daterange"
align="right"
unlink-panels
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
value-format="yyyy-MM-dd"
:picker-options="pickerOptions"
>
</el-date-picker>
</el-form-item>
<el-form-item>
<el-button
type="primary"
@ -1608,6 +1622,7 @@ export default {
updateBy: null,
updateTime: null,
equ: { equipmentName: null },
createTimeArray:[],
loopStartArray: [],
orderStartArray: [],
orderEndArray: [],
@ -2118,6 +2133,7 @@ export default {
updateBy: null,
updateTime: null,
equ: { equipmentName: null },
createTimeArray:[],
timeArray: [],
loopStartArray: [],
orderStartArray: [],
@ -2133,6 +2149,7 @@ export default {
},
/** 重置按钮操作 */
resetQuery() {
this.queryParams.createTimeArray = [],
this.queryParams.loopStartArray = [];
this.queryParams.orderStartArray = [];
this.queryParams.orderEndArray = [];

@ -185,7 +185,7 @@
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item v-if="false" label="创建时间" prop="createTime">
<el-form-item label="创建时间" prop="createTime">
<el-date-picker
v-model="queryParams.createTimeArray"
type="daterange"

@ -439,6 +439,8 @@
<el-table-column label="物料名称" width="280" align="left" prop="materialName"
:show-overflow-tooltip="true" />
<el-table-column label="BOM组件用量" width="150" align="left" prop="planQuantity" />
<el-table-column label="单位数量" align="center" prop="erfmg" />
<el-table-column label="条目单位" align="center" prop="erfme" />
<el-table-column label="实际用量" width="150" align="left" prop="quantity"
:show-overflow-tooltip="true">
<template slot-scope="scope">
@ -448,8 +450,6 @@
</el-table-column>
<el-table-column label="单位" width="50" align="center" prop="unit" />
<el-table-column label="反冲标识" align="center" prop="recoil" />
<el-table-column label="单位数量" align="center" prop="erfmg" />
<el-table-column label="条目单位" align="center" prop="erfme" />
<el-table-column label="sap项目编码" align="center" prop="rspos" />
<el-table-column label="仓库" width="150" align="center" prop="warehouseCode">
<template slot-scope="scope">

@ -187,6 +187,18 @@
>批次编辑
</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="info"
plain
icon="el-icon-printer"
size="mini"
:disabled="single"
@click="printIdCard"
v-hasPermi="['mes:pro:workorder:edit']"
>打印标识卡
</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
@ -719,6 +731,8 @@
<el-button @click="batchCancel"> </el-button>
</div>
</el-dialog>
<!--标识卡打印-->
<ItemPrintID ref="printID" @onSelected="printIdFunc"/>
</div>
</template>
@ -740,12 +754,16 @@ import {
getProdLineList
} from '@/api/plan/workorder'
import moment from 'moment';
import ItemPrintID from './printID.vue';
import { getProEquipment, getProRoutes, getProShifts,selectMaterielList} from '@/api/plan/order'
import {prototype} from "clipboard";
export default {
name: "Workorder",
dicts: ['product_type', 'workorder_type'],
components: {
ItemPrintID
},
data() {
return {
//
@ -1816,6 +1834,12 @@ export default {
return value;
},
editBatch() {
if(this.selectWork.status == 'w0'){
this.$modal.msgError("还未派发请到工单变更进行调整!");
return;
}
this.batchLoading = true;
const workOrdercode = this.codes[0];
getWorkOrderBatch(workOrdercode).then(response => {
@ -1961,15 +1985,18 @@ export default {
}, 222);
},
// @expand-change="getOpenNextLevel"
//
//getOpenNextLevel(row, column, event) {
// alert("1755getOpenNextLevel")
// getNextLevelWorkOrderList(tree.workorderCode).then((data) => {
// return resolve(data);
// });
//}
/**打印标识卡弹出框**/
printIdCard() {
this.$refs.printID.init("20021221552");
this.$refs.printID.showPrint();
this.$refs.printID.printDialogVisible = true;
},
//
printIdFunc(obj) {
this.form.userName = obj.code;
this.form.nickName = obj.name;
},
}
};
</script>

@ -0,0 +1,194 @@
<template>
<div class="app-container">
<el-dialog title="" :visible.sync="printDialogVisible" width="990px">
<div id="printFrom" class="my-print-box">
<div v-for="(item, index) in printData.idCardList" :key="index">
<el-form class="print-card">
<el-row>
<el-col :span="7">
<img src="@/assets/logo/lanjv.png" class="report-logo" />
</el-col>
<el-col :span="10" class="center-text">
<span>产品标识卡</span>
</el-col>
</el-row>
<div class="custom-divider"></div>
<el-row class="my-print-foot">
<el-col :offset="1" :span="10">
<div>产品名称: {{ printData.factory }}</div><br />
<div>批次号: {{ printData.factory }}</div><br />
<div>生产日期: {{ printData.factory }}</div><br />
<div>板次: {{ printData.factory }}</div><br />
<div>数量: {{ printData.factory }}</div>
</el-col>
<el-col :offset="1" :span="10">
<canvas :id="'qrcode-' + index" class="qrcode"></canvas>
</el-col>
</el-row>
</el-form>
<div style="clear: both; margin-bottom: 30px;"></div>
<div v-if="(index + 1) % 2 === 0" class="print-page"></div>
</div>
</div>
<span slot="footer" class="dialog-footer">
<el-button type="primary" @click="handlePrint(printData)"> </el-button>
</span>
</el-dialog>
</div>
</template>
<script>
import {
getIdCardList,
} from '@/api/plan/workorder';
import QRCode from 'qrcode';
export default {
name: "printID",
components: {
},
data() {
return {
idCardsNum: 1,
optType: undefined,
//
loading: true,
//
ids: [],
selectRow: {},
//
single: true,
//
multiple: true,
//
showSearch: true,
//
total: 0,
printDialogVisible: false,
//
printData: {
printable: "printFrom",
ignore: ["no-print"],
workCenter: "暂无数据",
factory: null,
idCardList: [],
//gridStyle:'border: 1px solid lightgray; margin-bottom: -1px;'
},
workorderCode: '',
//
refreshWorkerTable: true,
//
rules: {
},
tableIndex: "tableIndex",
};
},
created() {
},
mounted() {
//this.showPrint();
},
methods: {
init(workorderCode){
this.workorderCode = workorderCode;
},
// -
handlePrint(params) {
printJS({
printable: params.printable,
type: params.type || 'html',
maxWidth: 1500,
font_size: "", //
header: params.header, // '',
targetStyles: ['*'],
style: `
@page { margin: 30mm 10mm; }
.print-page { page-break-after: always; }
`,
ignoreElements: params.ignore || [],
});
},
// -
async showPrint() {
console.log('执行了打印预览');
let response = await getIdCardList(this.workorderCode,this.idCardNum);
this.printData.idCardList = response.idCards;
this.$nextTick(() => {
this.printData.idCardList.forEach((item, index) => {
const canvas = document.getElementById('qrcode-' + index);
QRCode.toCanvas(canvas, item, { width: 350,margin:1 }, function (error) {
if (error) console.error(error);
console.log('success!');
});
});
})
}
},
};
</script>
<style scoped>
.print-btn {
margin-bottom: 15px;
margin-left: 10px;
}
.center-text {
text-align: left;
font-size: 63px;
font-weight: 800;
color: black;
}
.report-logo {
margin-top: 15px;
margin-left: 15px;
height: 70px;
}
.button-container {
text-align: right;
margin-top: 10px;
margin-right: 10px;
}
.my-print-table {
font-size: 20px;
}
.my-print-foot {
font-size: 17px;
}
.my-print-foot2 {
font-size: 19px;
}
.my-print-box{
width:100%
}
.custom-divider {
width: 100%;
height: 1px;
background-color: #a5a4a4 !important;
margin: 20px 0 !important;
-webkit-print-color-adjust: exact;
}
.print-page {
page-break-after: always;
}
@media print {
.custom-divider {
width: 100%;
height: 1px;
background-color: #a5a4a4 !important;
margin: 20px 0 !important;
-webkit-print-color-adjust: exact;
}
}
</style>

@ -69,17 +69,6 @@
v-hasPermi="['quality:qcInventory:export']"
>导出</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="danger"
plain
icon="el-icon-magic-stick"
size="mini"
:disabled="single"
@click="handleUpdate"
v-hasPermi="['quality:qcInventory:edit']"
>审核编辑</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
@ -87,16 +76,16 @@
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="recordId" align="center" prop="recordId" v-if="false"/>
<el-table-column label="checkType" align="center" prop="checkType" v-if="false"/>
<el-table-column label="检验任务编号" align="center" prop="checkNo" width="100"/>
<el-table-column label="库存批次号" align="center" prop="incomeBatchNo" width="100"/>
<el-table-column label="物料号" align="center" prop="materialCode" width="80"/>
<el-table-column label="物料名称" align="center" prop="materialName" width="100"/>
<el-table-column label="检验任务编号" align="center" prop="checkNo" width="120"/>
<!--<el-table-column label="库存批次号" align="center" prop="incomeBatchNo" width="100"/>-->
<el-table-column label="物料号" align="center" prop="materialCode" width="120" :formatter="productCodeFormate"/>
<el-table-column label="物料名称" align="center" prop="materialName" width="150" :show-overflow-tooltip="true"/>
<el-table-column label="仓库编码" align="center" prop="supplierCode" width="90"/>
<el-table-column label="仓库名称" align="center" prop="supplierName" width="90"/>
<el-table-column label="检测地点" align="center" prop="checkLoc" width="100"/>
<el-table-column label="创建时间" align="center" prop="checkTime" width="100">
<!--<el-table-column label="检测地点" align="center" prop="checkLoc" width="100"/>-->
<el-table-column label="创建时间" align="center" prop="createTime" width="100">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.checkTime, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>
<span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>
</template>
</el-table-column>
<el-table-column label="检测状态" align="center" prop="checkStatus" >
@ -115,6 +104,25 @@
</template>
</el-table-column>
<el-table-column label="检验结果" align="center" prop="checkResult" />
<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="handleCheckProject(scope.row)"
v-hasPermi="['quality:qcWarehousing:edit']"
>检验</el-button>
<el-button
size="mini"
type="text"
icon="el-icon-magic-stick"
@click="handleCheckProjectM(scope.row)"
v-hasPermi="['quality:qcWarehousing:editM']"
>审核编辑</el-button>
</template>
</el-table-column>
</el-table>
<pagination
@ -147,24 +155,22 @@
</el-form-item>
</el-col>
<el-col :span="8">
<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-form-item label="订单号" prop="orderNo">
<el-input v-model="form.orderNo" placeholder="请选择订单号" >
<el-button slot="append" @click="handleSelectWorkOrder" icon="el-icon-search"></el-button>
</el-input>
</el-form-item>
</el-col>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="物料号" prop="materialCode">
<el-input v-model="form.materialCode" placeholder="请输入物料号" disabled/>
<el-col :span="8">
<el-form-item label="物料名称" prop="materialName">
<el-input v-model="form.materialName" placeholder="请输入物料名称" disabled/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="批次号" prop="incomeBatchNo">
<el-input v-model="form.incomeBatchNo" placeholder="请输入批次号">
</el-input>
<el-form-item label="物料号" prop="materialCode">
<el-input v-model="form.materialCode" placeholder="请输入物料号" disabled/>
</el-form-item>
</el-col>
<el-col :span="8">
@ -174,11 +180,14 @@
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="入库数量" prop="quality">
<el-input v-model="form.quality" placeholder="" disabled/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="仓库名称" prop="supplierName">
<el-input v-model="form.supplierName" placeholder="请选择供应商名称">
<el-button slot="append" @click="handleSelectSupplier" icon="el-icon-search"></el-button>
</el-input>
<el-input v-model="form.supplierName" placeholder="请选择供应商名称" disabled/>
</el-form-item>
</el-col>
<el-col :span="8">
@ -200,7 +209,6 @@
<el-input v-model="form.checkManCode" placeholder="请输入检测人工号" disabled/>
</el-form-item>
</el-col>
</el-row>
</el-form>
<div slot="footer" class="dialog-footer">
@ -208,16 +216,11 @@
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
<!--物料选择弹窗-->
<ItemSelectMaterial
ref="itemSelectMaterial"
@onSelected="onSelectMaterial"
></ItemSelectMaterial>
<!--供应商选择弹窗-->
<ItemSelectSupplier
ref="itemSelectSupplier"
@onSelected="onSelectSupplier"
></ItemSelectSupplier>
<!--订单选择弹窗-->
<ItemPutInOrder
ref="itemSelectPutInOrder"
@onSelected="onSelectPutInOrder"
></ItemPutInOrder>
<!--人员选择弹窗-->
<ItemSelectUser
ref="itemSelectUser"
@ -234,15 +237,14 @@
<script>
import { listQcInventory, getQcInventory, addQcInventory, updateQcInventory, delQcInventory } from "@/api/quality/qcInventory.js";
import { getCheckTypes } from "@/api/quality/qcProduce";
import ItemSelectMaterial from "./selectMaterial.vue"
import ItemSelectSupplier from "./selectSupplier";
import ItemPutInOrder from "./selectPutInOrder.vue";
import ItemSelectUser from "../qcIncome/selectUser.vue";
import ItemSelectProject from "../qcIncome/checkProjectType.vue";
import moment from 'moment';
import { getDefectTypeListByDefectType } from "@/api/quality/defectType.js";
export default {
name: "Inventory",
components: { ItemSelectMaterial,ItemSelectSupplier,ItemSelectUser,ItemSelectProject},
components: {ItemPutInOrder,ItemSelectUser,ItemSelectProject},
dicts: ["unit","check_status","check_result"],
data() {
return {
@ -333,12 +335,17 @@ export default {
};
},
created() {
this.getDate();
//this.getDate();
this.getList();
this.getCheckTypes();
this.handleDefectType();
},
methods: {
productCodeFormate(row, column, cellValue){
if(cellValue != null){
return cellValue.slice(7,18); //
}
},
/****/
getCheckTypes() {
getCheckTypes('inventory').then(response => {
@ -364,12 +371,12 @@ export default {
/** 查询库存检验列表 */
getList() {
this.loading = true;
console.log("--------"+this.queryParams)
if(this.queryParams.incomeTimeArray!=null && this.queryParams.incomeTimeArray.length>0){
this.queryParams.incomeTimeStart = moment(this.queryParams.incomeTimeArray[0]).format('YYYY-MM-DD HH:mm:ss');
this.queryParams.incomeTimeEnd = moment(this.queryParams.incomeTimeArray[1]).format('YYYY-MM-DD HH:mm:ss');
}else{
this.queryParams.incomeTimeStart = null;
this.queryParams.incomeTimeStart = null;
this.queryParams.incomeTimeEnd = null;
}
@ -522,14 +529,19 @@ export default {
this.form.materialCode = obj.code;
},
/**供应商选择弹出框**/
handleSelectSupplier() {
this.$refs.itemSelectSupplier.showFlag = true;
/**工单选择弹出框**/
handleSelectWorkOrder() {
this.$refs.itemSelectPutInOrder.showFlag = true;
},
//
onSelectSupplier(obj) {
this.form.supplierCode = obj.code;
this.form.supplierName = obj.name;
//
onSelectPutInOrder(obj) {
this.form.orderNo = obj.orderNo;
this.form.materialName = obj.materialName;
this.form.materialCode = obj.materialCode;
this.form.quality = obj.quality;
this.form.incomeTime = obj.incomeTime;
this.form.supplierName = obj.supplierName;//
this.form.supplierCode = obj.supplierCode;//
},
/**人员选择弹出框**/
@ -561,7 +573,12 @@ export default {
getDefectTypeListByDefectType(defectType).then(response => {
this.defectTypeList = response.rows;
});
}
},
//()
handleCheckProjectM(row){
this.$refs.itemSelectProject.showFlag = true;
this.$refs.itemSelectProject.init(row,'inventory');
},
}
};
</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.orderNo"
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="orderNo" width="120"/>
<el-table-column label="产品编码" align="left" prop="materialCode" width="180" />
<el-table-column label="产品名称" align="left" prop="materialName" width="180"/>
<el-table-column label="数量" align="left" prop="quality" width="100" />
<el-table-column label="仓库编码" align="left" prop="supplierCode"/>
<el-table-column label="仓库编名称" align="left" prop="supplierName" width="120"/>
<el-table-column label="入库日期" align="left" prop="incomeTime" :show-overflow-tooltip="true" width="120">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.incomeTime, '{y}-{m}-{d}') }}</span>
</template>
</el-table-column>
<el-table-column label="状态" align="left" prop="status" width="90"/>
</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="submitPutInOrderForm"> </el-button>
<el-button @click="showFlag=false"> </el-button>
</div>
</el-dialog>
</template>
<script>
import { getPutInOrder } from "@/api/quality/income";
export default {
name: "itemPutInOrder",
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;
getPutInOrder(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]
},
submitPutInOrderForm() {
this.$emit('onSelected', this.selectionRow);
this.showFlag = false;
}
}
};
</script>

@ -87,7 +87,7 @@
<el-table v-loading="loading" :data="tableList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="单位编码" align="center" prop="supplierCode" width="80"/>
<!--<el-table-column label="单位编码" align="center" prop="supplierCode" width="80"/>-->
<el-table-column prop="supplierName" label="单位名称" width="100" align="center"/>
<el-table-column prop="orderNo" label="订单编码" width="130" align="center"
:formatter="orderCodeFormate"

@ -4,6 +4,7 @@
<el-form-item label="来料月份" prop="incomeTimeYM">
<el-date-picker
v-model="queryParams.incomeTimeYM"
format="yyyy-MM"
type="month"
placeholder="选择月">
</el-date-picker>
@ -85,6 +86,7 @@
<script>
import { getIncomeTableList} from "@/api/quality/qcTable";
import ItemSelectSupplier from "./selectSupplier.vue";
import moment from 'moment';
export default {
name: "RfidProcess",
components: {ItemSelectSupplier},
@ -145,9 +147,12 @@ export default {
}
};
},
created() {
mounted(){
this.getDate();
this.getList();
},
created() {
},
methods: {
@ -167,6 +172,9 @@ export default {
/** 查询列表 */
getList() {
this.loading = true;
if(this.queryParams.incomeTimeYM!=null){
this.queryParams.yearMonth = moment(this.queryParams.incomeTimeYM).format('YYYY-MM');
}
getIncomeTableList(this.queryParams).then(response => {
this.incomeList = response.rows;
this.total = response.total;

@ -113,7 +113,7 @@ export default {
methods: {
getWorkcenterList(){
getWorkcenterList().then(data => {
this.options = data;
});
@ -132,7 +132,7 @@ export default {
var m = dd.getMonth() + 1;//
var d = dd.getDate();
return y + "-" + m;
},
},
/** 搜索按钮操作 */
handleQuery() {
this.getList();
@ -160,37 +160,25 @@ export default {
tooltip: {
trigger: 'axis'
},
legend: {
data: data.legendData//['Email', 'Union Ads', 'Video Ads', 'Direct', 'Search Engine']
},
grid: {
left: '3%',
right: '4%',
bottom: '3%',
containLabel: true
},
toolbox: {
feature: {
saveAsImage: {}
}
},
xAxis: {
type: 'category',
boundaryGap: false,
data: data.xAxis//['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
},
yAxis: {
type: 'value'
type: 'value',
axisLabel: {
formatter: '{value} %'
}
},
series: data.series
//[
// {
// name: 'Email',
// type: 'line',
//// stack: 'Total',
// data: [120, 132, 101, 134, 90, 230, 210]
// }
//]
series:
[
{
data: data.series[0].data,
type: 'line',
areaStyle: {}
}
]
},
true
)
@ -225,7 +213,7 @@ export default {
},
//
handleClose(tag) {
this.selectMaterielListtag.splice(this.selectMaterielListtag.indexOf(tag.componentName), 1);
var code = "";
var desc = "";

@ -0,0 +1,282 @@
<template>
<div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" label-width="68px" style="margin-bottom: 0px;">
<el-form-item label="月份" prop="ymArray">
<el-date-picker
v-model="queryParams.ymArray"
format="yyyy-MM"
type="monthrange"
range-separator="至"
start-placeholder="开始月份"
end-placeholder="结束月份">
</el-date-picker>
</el-form-item>
<el-form-item label="工作中心">
<el-select v-model="queryParams.workCenter" filterable placeholder="请选择工作中心">
<el-option
v-for="item in options"
:key="item.factoryCode"
:label="item.factoryName"
:value="item.factoryCode">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="产品">
<div class="tagbox">
<div class="tag" style="" placeholder="请选择产品">
<el-tag
:key="index"
class="tagitem"
v-for="(tag, index) in selectMaterielListtag"
closable
:disable-transitions="false"
@close="handleClose(tag)"
>
{{ tag.componentName }}
</el-tag>
</div>
<el-button
slot="append"
class="button1"
@click="handleSelectSupplier"
icon="el-icon-search"
></el-button>
<el-row style="display: none;">
<el-input type="input" v-model="queryParams.materialCode" placeholder="点击选择产品"/>
<el-input type="input" v-model="queryParams.materialName" placeholder="点击选择产品"/>
</el-row>
</div>
</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-row :gutter="20">
<el-col :sm="24" :lg="24">
<span style="font-size: 20px;margin: 40%;color: cadetblue;">{{title}}</span>
</el-col>
</el-row>
<el-row :gutter="20">
<div style="border: 1px solid #cfdee4;">
<div id="orderline" style="width:100%;height:500px"></div>
</div>
</el-row>
<!--产品物料选择弹窗-->
<ItemSelectMaterial
ref="itemSelectMaterial"
@onSelected="onSelectMaterial"
></ItemSelectMaterial>
</div>
</template>
<script>
import * as echarts from 'echarts'
require('echarts/theme/macarons')
import {getProduceChartData,getWorkcenterList} from "@/api/quality/qcTable";
import ItemSelectMaterial from "./selectMaterial.vue";
import moment from 'moment';
export default {
name: "produceLineChart",
components: { ItemSelectMaterial},
data() {
return {
title:"不良率统计",
//
queryParams: {
ymArray: [],
workorderId: null,
rfid: null,
factoryCode: null,
machineCode: null,
nowProcessId: null,
nextProcessId: null,
orderNum: null,
inTime: null,
outTime: null,
status: null,
shiftId: null,
productCode: null,
materialCode: '',
materialName: ''
},
options:null,
// listtag
selectMaterielListtag:[],
}
},
mounted(){
this.getDate();
this.getList()
this.getWorkcenterList();
},
methods: {
getWorkcenterList(){
getWorkcenterList().then(data => {
this.options = data;
});
this.queryParams.workCenter = this.options[0].factoryCode;
},
/**获取默认查询时间段**/
getDate() {
let start = this.Fungetdate (0)
let end = this.Fungetdate (0)
this.queryParams.ymArray.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;
},
/** 搜索按钮操作 */
handleQuery() {
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm("queryForm");
this.getDate();
this.handleQuery();
},
getList() {
if(this.queryParams.ymArray.length>0){
this.queryParams.ymArrayStart = moment(this.queryParams.ymArray[0]).format('YYYY-MM');
this.queryParams.ymArrayEnd = moment(this.queryParams.ymArray[1]).format('YYYY-MM');
}
let myChart = this.$echarts.init(document.getElementById('orderline'))
getProduceChartData(this.queryParams).then(data => {
myChart.setOption({
title: {
text: this.title
},
tooltip: {
trigger: 'axis'
},
legend: {
data: data.legendData//['Email', 'Union Ads', 'Video Ads', 'Direct', 'Search Engine']
},
grid: {
left: '3%',
right: '4%',
bottom: '3%',
containLabel: true
},
toolbox: {
feature: {
saveAsImage: {}
}
},
xAxis: {
type: 'category',
boundaryGap: false,
data: data.xAxis//['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
},
yAxis: {
type: 'value'
},
series: data.series
//[
// {
// name: 'Email',
// type: 'line',
//// stack: 'Total',
// data: [120, 132, 101, 134, 90, 230, 210]
// }
//]
},
true
)
})
},
/**供应商选择弹出框**/
handleSelectSupplier() {
this.$refs.itemSelectMaterial.showFlag = true;
},
//
onSelectMaterial(objs) {
var code = '';
var desc = '';
for (let i = 0; i < objs.length; i++) {
if(this.queryParams.materialCode.indexOf(objs[i].component)<0){
code = code + objs[i].component + ',';
this.selectMaterielListtag.push(objs[i])
}else{
this.$message({
message: objs[i].componentName+'已经选择',
type: 'warning'
})
}
if(this.queryParams.materialName.indexOf(objs[i].componentName)<0){
desc = desc + objs[i].componentName + ',';
}
}
this.queryParams.materialCode += code;
this.queryParams.materialName += desc;
},
//
handleClose(tag) {
this.selectMaterielListtag.splice(this.selectMaterielListtag.indexOf(tag.componentName), 1);
var code = "";
var desc = "";
for (let i = 0; i < this.selectMaterielListtag.length; i++) {
code = code + this.selectMaterielListtag[i].component + ",";
desc = desc + this.selectMaterielListtag[i].componentName + ",";
}
this.queryParams.materialCode = code;
this.queryParams.materialName = desc;
}
}
};
</script>
<style lang="scss" scoped>
.tagbox {
display: flex;
/* overflow: scroll; */
position: relative;
width: 80%;
padding-left: 26px;
margin-bottom: 15px;
.tagboxlabel{
width: 100px;
text-align: right;
vertical-align: middle;
font-size: 14px;
color: black;
line-height: 40px;
-webkit-box-sizing: border-box;
box-sizing: border-box;
margin-right: 12px;
}
.tag {
width: 720px;
border: 1px #DCDFE6 solid;
height: 60px;
padding: 5px 15px;
overflow-y: scroll;
.tagitem{
margin-left: 5px;
}
}
.button1{
width: 37px;
height: 37px;
position: absolute;
right: -39px;
top: 2px;
}
}
</style>

@ -58,7 +58,7 @@
</template>
</el-table-column>
<el-table-column prop="incomeBatchNo" label="批次" width="300" align="center"/>
<el-table-column prop="incomeTime" label="生产日期" width="100" align="center"/>
<el-table-column prop="incomeTimeStr" label="生产日期" width="100" align="center"/>
<el-table-column prop="materialName" label="产品名称"align="center"/>
<el-table-column prop="materialCode" label="产品编码" width="150" align="center"
:formatter="productCodeFormate"/>
@ -229,6 +229,13 @@ export default {
/** 查询备料单列表 */
getList() {
this.loading = true;
if(this.queryParams.incomeTime != null){
this.queryParams.incomeTimeStr = moment(this.queryParams.incomeTime).format('YYYY-MM-DD');
}
getXJCheckTableList(this.queryParams).then(response => {
this.prepareList = response.rows;
this.total = response.total;
@ -330,6 +337,7 @@ export default {
let sr = row;
this.queryParams.orderNo = sr.orderNo;
this.queryParams.shiftId = sr.shiftId;
getXJCheckTableDetail(this.queryParams).then(response => {
this.pOrderTableList = response;
this.openReport = true;

@ -1,6 +1,7 @@
<template>
<div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" label-width="100px" style="margin-bottom: 0px;">
<!--
<el-form-item label="订单编码" prop="orderNo">
<el-input
v-model="queryParams.orderNo"
@ -16,7 +17,7 @@
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
</el-form-item>-->
<el-form-item label="工单生产日期" prop="ymdms">
<el-date-picker clearable
v-model="queryParams.ymdms"
@ -121,20 +122,7 @@ export default {
tooltip: {
trigger: 'axis'
},
legend: {
data: data.legendData
},
grid: {
left: '3%',
right: '4%',
bottom: '3%',
containLabel: true
},
toolbox: {
feature: {
saveAsImage: {}
}
},
xAxis: {
type: 'category',
boundaryGap: false,
@ -146,7 +134,14 @@ export default {
formatter: '{value} %'
}
},
series: seriesResult
series:
[
{
data: data.series[0].data,
type: 'line',
areaStyle: {}
}
]
},
true
)

@ -0,0 +1,199 @@
<template>
<div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" label-width="100px" style="margin-bottom: 0px;">
<!--
<el-form-item label="订单编码" prop="orderNo">
<el-input
v-model="queryParams.orderNo"
placeholder="请输入订单编码"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="产品编号" prop="materialCode">
<el-input
v-model="queryParams.materialCode"
placeholder="请输入产品编号"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>-->
<el-form-item label="工单生产日期" prop="ymdms">
<el-date-picker clearable
v-model="queryParams.ymdms"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择工单生产日期"
style="width:205px"
>
</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>
</el-form>
<el-row :gutter="20">
<el-col :sm="24" :lg="24">
<span style="font-size: 20px;margin: 40%;color: cadetblue;">{{title}}</span>
</el-col>
</el-row>
<el-row :gutter="20">
<div style="border: 1px solid #cfdee4;">
<div id="orderline" style="width:100%;height:500px"></div>
</div>
</el-row>
</div>
</template>
<script>
import * as echarts from 'echarts'
require('echarts/theme/macarons')
import { getXJChartData} from "@/api/quality/qcTable";
import moment from "moment/moment";
export default {
name: "XJChart",
components: {},
data() {
return {
title:"巡检小时不良率折线图",
//
queryParams: {
ymdms: null,
workorderCode: null,
workorderName: null,
parentOrder: null,
orderId: null,
orderCode: null,
productId: null,
productCode: null,
prodType: null,
productName: null,
productSpc: null,
productDate: null,
createTimeStart:null,
createTimeEnd:null
}
}
},
mounted(){
this.getDate();
this.getList();
},
methods: {
/**获取默认查询时间段**/
getDate() {
let start = this.Fungetdate (0)
this.queryParams.ymdms =start
},
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;
},
/** 搜索按钮操作 */
handleQuery() {
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm("queryForm");
this.getDate();
this.handleQuery();
},
getList() {
let myChart = this.$echarts.init(document.getElementById('orderline'))
getXJChartData(this.queryParams).then(data => {
if(data == ''){
return
}
let seriesResult = data.series;
seriesResult.forEach(se => {
se.type = 'line';//bar//line
});
myChart.setOption({
tooltip: {
trigger: 'axis'
},
legend: {
data: data.legendData
},
grid: {
left: '3%',
right: '4%',
bottom: '3%',
containLabel: true
},
toolbox: {
feature: {
saveAsImage: {}
}
},
xAxis: {
type: 'category',
boundaryGap: false,
data: data.xAxisData
},
yAxis: {
type: 'value',
axisLabel: {
formatter: '{value} %'
}
},
series: seriesResult
},
true
)
})
}
}
};
</script>
<style lang="scss" scoped>
.tagbox {
display: flex;
/* overflow: scroll; */
position: relative;
width: 80%;
padding-left: 26px;
margin-bottom: 15px;
.tagboxlabel{
width: 100px;
text-align: right;
vertical-align: middle;
font-size: 14px;
color: black;
line-height: 40px;
-webkit-box-sizing: border-box;
box-sizing: border-box;
margin-right: 12px;
}
.tag {
width: 720px;
border: 1px #DCDFE6 solid;
height: 60px;
padding: 5px 15px;
overflow-y: scroll;
.tagitem{
margin-left: 5px;
}
}
.button1{
width: 37px;
height: 37px;
position: absolute;
right: -39px;
top: 2px;
}
}
</style>

@ -767,7 +767,7 @@ export default {
//()
handleCheckProjectM(row){
this.$refs.itemSelectProject.showFlag = true;
this.$refs.itemSelectProject.init(row,'material');
this.$refs.itemSelectProject.init(row,'product');
},
//

@ -448,6 +448,7 @@
append-to-body
>
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
<!--
<el-form-item label="标准效率" prop="iei">
<el-input-number
v-model="form.iei"
@ -459,6 +460,12 @@
v-model="form.manStandar"
style="width: 320px"
/>
</el-form-item>-->
<el-form-item label="仓库检验周期" prop="warehouseCycle">
<el-input-number
v-model="form.warehouseCycle"
style="width: 320px"
/>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
@ -820,9 +827,7 @@ export default {
this.reset();
const productId = row.productId || this.ids;
getProduct(productId).then((response) => {
this.form.id = response.data.id;
this.form.iei = response.data.iei;
this.form.manStandar = response.data.manStandar;
this.form = response.data;
this.form.productCode = response.data.productCode.slice(7,18);
console.log(this.form.productCode);
this.openAttached = true;

Loading…
Cancel
Save