Merge remote-tracking branch 'origin/master'

master
Yangwl 6 months ago
commit 7ce36c0478

@ -7,3 +7,11 @@ export function listReportWorks(query) {
params: query
});
}
export function getProductTraceList(query) {
return request({
url: '/mes/reportWorks/getProductTrace',
method: 'get',
params: query
});
}

@ -1,8 +1,8 @@
import request from '@/utils/request'
export function getDefectValue(belongToDetail) {
export function getDefectValue(belongToDetail,checkType) {
return request({
url: '/quality/qcCheckTaskDefect/getDefectValue/' + belongToDetail,
url: '/quality/qcCheckTaskDefect/getDefectValue/' + belongToDetail+'/'+checkType,
method: 'get',
});
}

@ -150,9 +150,9 @@ export function commitCheckResult(data) {
})
}
export function getDefectList(defectType) {
export function getDefectList(checkType) {
const data = {
defectType
checkType
}
return request({
url: '/quality/qcIncome/getDefectList',
@ -243,4 +243,25 @@ export function getWarehouseList(query) {
method: 'get',
params: query
});
}
export function getClassInfoListByCheckType(query) {
return request({
url: '/quality/defectClass/getClassInfoListByCheckType',
method: 'get',
params: query
});
}
//状态修改
export function submitCheckPics(recordId,fileList) {
const data = {
recordId,
fileList
}
return request({
url: '/quality/qcIncome/submitCheckPics',
method: 'put',
data: data
})
}

@ -9,6 +9,13 @@ export function listPut(query) {
});
}
export function handleUpdateSAP102(data) {
return request({
url: '/wms/odsRawOrderIn/handleUpdateSAP102',
method: 'post',
data: data
});
}
// 查询成品生产入库详细
export function getPut(id) {
return request({

@ -314,14 +314,14 @@ export default {
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);
if(process.env.VUE_APP_BASE_API !='/dev-api'){
//
this.getUnReadList();
//
this.timer = setInterval(() => {
setTimeout(this.getUnReadList(), 30000);
}, 30000);
}
},
components: {
Breadcrumb,

@ -2524,6 +2524,7 @@ export default {
message: "提交成功!",
type: "success",
});
this.getList();
}
});
},

@ -0,0 +1,284 @@
<template>
<div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch"
label-width="100px">
<el-form-item label="产品类型" prop="materialCode">
<el-select v-model="queryParams.prodType" placeholder="请选择" @change="changeTableType">
<el-option
v-for="item in tableTypeOptions"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="产品编号" prop="productCode">
<el-input
v-model="queryParams.materialCode"
placeholder="请输入产品编号"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="产品名称" prop="productDescZh">
<el-input
v-model="queryParams.productDescZh"
placeholder="请输入产品名称"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="产品英文名称" prop="productDescEn">
<el-input
v-model="queryParams.productDescEn"
placeholder="请输入产品英文名称"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="产品名称" prop="productDescZh">
<el-input
v-model="queryParams.productDescZh"
placeholder="请输入产品名称"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="品类" prop="productGroupName" label-width="120px">
<el-input
v-model="queryParams.productGroupName"
placeholder="请输入品类名称"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="检验标准" prop="standarNo">
<el-input
v-model="queryParams.standarNo"
placeholder="请输入检验标准"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="时间" prop="incomeTimeArray">
<el-date-picker
v-model="queryParams.incomeTimeArray"
format="yyyy-MM-dd"
type="daterange"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
/>
</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="10" class="mb8">
<el-col :span="1.5">
<el-button
type="warning"
plain
icon="el-icon-download"
size="mini"
@click="handleExport"
>导出</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="traceList" @selection-change="handleSelectionChange" height="500px">
<!-- 序号 -->
<el-table-column type="index" width="50" align="center" :index="indexMethod" label="序号" fixed/>
<el-table-column label="产品编码" width="110" align="center" prop="productCode" :formatter="productCodeFormate" fixed/>
<el-table-column label="产品名称" width="200" align="center" prop="productDescZh" :show-overflow-tooltip="true" fixed/>
<el-table-column label="产品英文名称" width="150" align="center" prop="productDescEn" :show-overflow-tooltip="true" v-if="!showColumn"/>
<el-table-column label="最大批次数量" width="120" align="center" prop="batchMax" v-if="!showColumn"/>
<el-table-column label="卡板装载量" width="110" align="center" prop="palletNum" />
<el-table-column label="箱码规格" width="120" align="center" prop="spec" v-if="!showColumn"/>
<el-table-column label="品类" width="140" align="center" prop="productGroupName" v-if="!showColumn"/>
<el-table-column label="子母单比例" width="100" align="center" prop="unity" v-if="!showColumn"/>
<el-table-column label="检验标准" width="110" align="center" prop="standarNo"/>
<el-table-column label="箱型" width="50" align="center" prop="boxType" v-if="!showColumn"/>
<el-table-column label="垛型" width="50" align="center" prop="packType" v-if="!showColumn"/>
<el-table-column label="CPK品类" width="140" align="center" prop="cpkTypeName" v-if="!showColumn"/>
<el-table-column label="产线分配" width="400" align="left" prop="lineNames" v-if="!showColumn"/>
<el-table-column label="检验周期" align="center" prop="warehouseCycle" v-if="showColumn"/>
<el-table-column label="区位" width="140" align="center" prop="waNames" v-if="showColumn"/>
<el-table-column label="最近7次上载MES时间" width="600" align="left" prop="onLineTimes" :show-overflow-tooltip="true"/>
</el-table>
<pagination
v-show="total>0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
</div>
</template>
<script>
import { getProductTraceList} from "@/api/mes/reportWorks";
import moment from "moment/moment";
export default {
name: "ProductTrace",
dicts: ["check_type","qms_category"],
components: {},
data() {
return {
showColumn:false,
//
loading: true,
//
ids: [],
checkTypeList: [],
//
single: true,
//
multiple: true,
//
showSearch: true,
//
total: 0,
// CPK
traceList: [],
projectNoOptions: [],
//
title: "",
//
open: false,
//
queryParams: {
pageNum: 1,
pageSize: 10,
typeCode: null,
checkType: null,
factoryCode: null,
materialCode: null,
materialName: null,
upVal: null,
downVal: null,
prodType: 'cp',
incomeTimeArray: [],
ymArrayStart: null,
ymArrayEnd: null,
},
//
form: {downVal:0,upVal:0},
//
rules: {
},
tableTypeOptions: [{
value: 'cp',
label: '成品'
}, {
value: 'bc',
label: '包材'
}]
}
},
created() {
this.getDate();
this.getList();
},
methods: {
/**获取默认查询时间段**/
getDate() {
let start = this.Fungetdate(0);
let end = this.Fungetdate(1);
this.queryParams.incomeTimeArray.push(start, end);
this.getList();
},
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;
},
changeTableType(val){
if(val == 'bc'){
this.showColumn = true;
}else{
this.showColumn = false;
}
},
/** 查询物料检验标准列表 */
getList() {
this.loading = true;
if (this.queryParams.incomeTimeArray.length > 0) {
this.queryParams.ymArrayStart = moment(this.queryParams.incomeTimeArray[0]).format("YYYY-MM-DD");
this.queryParams.ymArrayEnd = moment(this.queryParams.incomeTimeArray[1]).format("YYYY-MM-DD");
}
getProductTraceList(this.queryParams).then(response => {
this.traceList = response.rows;
this.total = response.total;
this.loading = false;
});
},
//
cancel() {
this.open = false;
this.reset();
},
//
reset() {
this.form = {
id: null,
typeCode: null,
checkType: null,
createBy: null,
createTime: null,
updateBy: null,
updateTime: null,
factoryCode: null,
delFlag: null,
materialCode: null,
materialName: null,
upVal: null,
downVal: 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.id)
this.single = selection.length !== 1
this.multiple = !selection.length
},
/** 导出按钮操作 */
handleExport() {
this.download('mes/reportWorks/getProductTraceExport', {
...this.queryParams
}, `productTrace_${new Date().getTime()}.xlsx`)
},
//
indexMethod(index) {
return index + 1;
},
//
productCodeFormate(row, column, cellValue) {
if (cellValue != null) {
return cellValue.slice(7, 18); //
}
}
}
};
</script>

@ -1033,7 +1033,6 @@ export default {
},
// -
handleUpdateDown(row) {
var statusesArray = this.statuses;
for (var i = 0; i < statusesArray.length; i++) {
if (statusesArray[i] != 'w0') {//

@ -4,7 +4,7 @@
v-if="showFlag"
:visible.sync="showFlag"
:modal= false
width="1400px"
width="1300px"
>
<el-row :gutter="20">
<el-col :span="24" :xs="24">
@ -51,26 +51,24 @@
</el-select>
</el-form-item>
</el-col>
<el-col :span="14">
<el-form-item v-if="form.startOA == '1'" label="不合格描述" prop="remark">
<el-input type='textarea' v-model="form.remark" placeholder="请输入不合格描述" />
</el-form-item>
</el-col>
-->
<el-col :span="14">
<el-form-item label="不合格描述" prop="remarkCode">
<!-- <el-input type='textarea' v-model="form.remark" placeholder="请输入不合格描述" /> -->
<el-select v-model="form.remarkCode" placeholder="请选择不合格描述" clearable>
-->
<el-col :span="6">
<el-form-item label="缺陷分类" prop="remarkCode">
<el-select v-model="form.remarkCode" placeholder="请选择缺陷分类" clearable>
<el-option
v-for="dict in remarkList"
:key="dict.dictValue"
:label="dict.dictLabel"
:value="dict.dictValue"
v-for="dict in classInfoList"
:key="dict.id"
:label="dict.className"
:value="dict.id"
></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="备注描述" prop="attr3">
<el-input type='textarea' v-model="form.attr3" placeholder="请输入备注描述" />
</el-form-item>
</el-col>
</el-row>
</el-form>
@ -79,9 +77,9 @@
</el-table-column>
<!-- 序号 -->
<el-table-column label="检测规则Id" align="left" prop="recordId" v-if="false"/>
<el-table-column label="检测规则编码" align="left" prop="projectNo" width="120"/>
<el-table-column label="检验规则名称" align="left" prop="ruleName" width="300"/>
<el-table-column label="检验规则属性" align="left" prop="propertyCode" width="120" >
<el-table-column label="检测规则编码" align="left" prop="projectNo" width="120" fixed/>
<el-table-column label="检验规则名称" align="left" prop="ruleName" width="150" :show-overflow-tooltip="true" fixed/>
<el-table-column label="规则属性" align="left" prop="propertyCode" width="80" fixed>
<template slot-scope="scope">
<dict-tag
:options="dict.type.qc_rule_prop"
@ -92,22 +90,29 @@
<el-table-column label="检验方式" align="left" prop="checkMode" width="150" :show-overflow-tooltip="true"/>
<el-table-column label="检验工具" align="left" prop="checkTool" />
<el-table-column label="检验标准" align="left" prop="checkStandard" width="150" :show-overflow-tooltip="true"/>
<!--
<el-table-column label="上差值" align="left" prop="upperDiff" v-if="this.typeCode == 'material' || this.typeCode == 'product'"/>
<el-table-column label="下差值" align="left" prop="downDiff" v-if="this.typeCode == 'material' || this.typeCode == 'product'"/>
<el-table-column label="单位" align="left" prop="unitCode" width="80"/>
<el-table-column label="样本量编码" align="left" prop="sampleCode" width="80" v-if="this.typeCode == 'material' || this.typeCode == 'product'"/>
<el-table-column label="抽样数量" align="left" prop="sampleQuality" width="80" v-if="this.typeCode == 'material' || this.typeCode == 'product'"/>
<el-table-column label="单位" align="left" prop="unitCode" width="80"/>-->
<el-table-column label="样本量编码" align="left" prop="sampleCode" width="90" v-if="this.typeCode == 'material' || this.typeCode == 'product'"/>
<!--<el-table-column label="抽样数量" align="left" prop="sampleQuality" width="80" v-if="this.typeCode == 'material' || this.typeCode == 'product'"/>-->
<el-table-column label="检测水平" align="left" prop="checkLevel" width="80" v-if="this.typeCode == 'material' || this.typeCode == 'product'"/>
<el-table-column label="接受质量限" align="left" prop="sampleAql" width="80" v-if="this.typeCode == 'material' || this.typeCode == 'product'"/>
<el-table-column label="接受质量限" align="left" prop="sampleAql" width="90" v-if="this.typeCode == 'material' || this.typeCode == 'product'"/>
<el-table-column label="检测结果" key="status" align="center" prop="status" width="90" v-if="this.viewStatus == '1' ">
</el-table-column>
<el-table-column label="测量值" align="left" prop="actualValue" width="120"/>
<el-table-column label="抽样数量" align="left" prop="sampleQuality" width="110">
<template slot-scope="scope">
<el-input v-model="scope.row.sampleQuality" placeholder="请输入抽样数量" type="number"/>
</template>
</el-table-column>
<el-table-column label="不良描述" align="left" prop="remark" width="120">
<template slot-scope="scope">
<el-input v-model="scope.row.remark" placeholder="请输入不良描述" />
</template>
</el-table-column>
<el-table-column label="不良类型" align="left" prop="defectCode" width="120">
<el-table-column label="不良类型" align="left" prop="defectCode" width="100">
<template slot-scope="scope">
<el-button
size="mini"
@ -138,6 +143,17 @@
></el-switch>
</template>
</el-table-column>
<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-picture"
@click="handleShowPic(scope.row)"
v-hasPermi="['quality:qcIncome:edit']"
>查看</el-button>
</template>
</el-table-column>
</el-table>
<pagination
@ -187,7 +203,7 @@
<el-form-item
v-for="(domain, index) in dynamicValidateForm.domains"
:label="'测量值' + index"
:label="'测量值' + (index+1)"
:key="domain.key"
:prop="'domains.' + index + '.value'"
:rules="{
@ -204,41 +220,107 @@
<el-button @click="handleResetForm()"></el-button>
</el-form-item>
</el-form>
</el-dialog>
</el-dialog>
<el-dialog title="不良类型" :visible.sync="defectOpen" width="600px" append-to-body>
<el-form :model="defectForm" ref="defectForm" label-width="100px" class="demo-dynamic">
<el-dialog title="不良类型" :visible.sync="defectOpen" width="600px" append-to-body>
<el-form :model="defectForm" ref="defectForm" label-width="100px" class="demo-dynamic">
<el-form-item
v-for="(item, index) in defectForm.defectItems"
:label="item.defectSubclass"
:key="index"
:prop="`defectItems.${index}.noOkQuality`"
:rules="{
required: true, message: '不良类型不能为空', trigger: 'blur'
}"
>
<el-input type="number" v-model="item.noOkQuality" placeholder="请输入不良数量" />
<el-row :gutter="20">
<el-col :span="10">
<el-input type="number" v-model="item.noOkQuality" placeholder="请输入不良数量"/>
</el-col>
<el-col :span="10">
<el-select placeholder="请选择缺陷分类" clearable v-model="item.classId">
<el-option
v-for="dict in item.classList"
:key="dict.id"
:label="dict.className"
:value="dict.id"
/>
</el-select>
</el-col>
</el-row>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="submitDefectForm('defectForm')"></el-button>
<el-button @click="resetDefectForm('defectForm')"></el-button>
</el-form-item>
</el-form>
</el-dialog>
</div>
</el-dialog>
<!--图片预览弹窗-->
<el-dialog title="检验图片" :visible.sync="picValueOpen" width="700px" append-to-body>
<el-upload
:action="uploadUrl"
:headers="uploadHeaders"
:on-success="handleUploadSuccess"
list-type="picture-card"
:file-list="fileList"
>
<i slot="default" class="el-icon-plus"></i>
<div slot="file" slot-scope="{file}">
<img
class="el-upload-list__item-thumbnail"
:src="file.url" alt=""
>
<span class="el-upload-list__item-actions">
<span
class="el-upload-list__item-preview"
@click="handlePictureCardPreview(file)"
>
<i class="el-icon-zoom-in"></i>
</span>
<span
v-if="!disabled"
class="el-upload-list__item-delete"
@click="handleDownload(file)"
>
<i class="el-icon-download"></i>
</span>
<span
v-if="!disabled"
class="el-upload-list__item-delete"
@click="handleRemove(file)"
>
<i class="el-icon-delete"></i>
</span>
</span>
</div>
</el-upload>
<br/>
<el-button size="small" type="primary" @click="submitPicForm"></el-button>
</el-dialog>
<el-dialog :visible.sync="dialogVisible">
<img width="100%" :src="dialogImageUrl" alt="">
</el-dialog>
</div>
</template>
<script>
import { getCkeckProjectList,changeCheckDetailStatus,getIncome,commitActualValue,
commitCheckResult,getDefectList,getWeightValue,getnoOkVals,getAutoJudge
commitCheckResult,getDefectInfoList,getWeightValue,getnoOkVals,getAutoJudge,getClassInfoListByCheckType,
submitCheckPics
} from "@/api/quality/income";
import { getDefectValue, commitDefectValue, updateDefectValue} from "@/api/quality/checkTaskDefect";
import { getDictData,} from "@/api/system/dict/data";
import { getToken } from "@/utils/auth";
export default {
name: "itemSelectUser",
dicts: ["qc_rule_prop","material_type_oa","material_from_oa","sample_level","sample_aql"],
data() {
return {
fileList:[],
uploadList: [],
uploadUrl: process.env.VUE_APP_BASE_API + "/file/upload",
uploadHeaders: {
Authorization: "Bearer " + getToken(),
},
dialogImageUrl: '',
dialogVisible: false,
disabled: false,
viewStatus : '0',
showFlag: false,
dyloading: false,
@ -255,7 +337,7 @@ export default {
// BOM
itemList: null,
qcCheckTaskDetails: [],
remarkList: [],
classInfoList: [],
//
bomCode: undefined,
defaultProps: {
@ -282,8 +364,14 @@ export default {
sampleAql:null,
checkLevel:null
},
dynamicPicForm:{
domains: [{
value: ''
}],
},
//
valueOpen: false,
picValueOpen: false,
//id
recordId:'',
weight: null,
@ -293,7 +381,6 @@ export default {
typeCode:'',
//
defectOpen: false,
updateFlag: false,
//
defectList:[],
defectForm: {
@ -302,34 +389,28 @@ export default {
defectCode: '',
noOkQuality: 0,
belongToDetail: '',
belongTo: ''
belongTo: '',
classId:'',
classList:[]
}
]
},
rules: {
},
downDiff:null,
upperDiff:null,
aqlNoOkVal:0,
sampleCode: null,
checkLevel:null
checkLevel:null,
checkType:''
};
},
created() {
this.getDefect();
this.handleGetDictData();
//this.handleGetDictData();
},
methods: {
getDefect(){
getDefectList(this.typeCode).then(response => {
this.defectList = response;
this.defectForm.defectItems = this.defectList.map(item => ({
defectSubclass: item.defectSubclass,
defectCode: item.defectCode,
noOkQuality: 0
}));
});
},
init(rowdata,typeCode){
this.data=rowdata;
this.queryParams.belongTo = this.data.recordId;
@ -342,7 +423,7 @@ export default {
this.queryParams.pageSize = 10;
this.getCheckInfo();
this.getList();
this.getDefect();
this.handleGetDictData();
},
view(rowdata,typeCode){
@ -356,7 +437,7 @@ export default {
this.queryParams.pageSize = 10;
this.getCheckInfo();
this.getList();
this.getDefect();
this.handleGetDictData();
},
/** 查询表格列表*/
@ -371,12 +452,9 @@ export default {
},
handleGetDictData() {
const query = {
dictType: 'unqualified_remark',
}
getDictData(query).then(response => {
getClassInfoListByCheckType({checkType:this.checkType}).then(response => {
if (response.code === 200) {
this.remarkList = response.data;
this.classInfoList = response.data;
}
});
},
@ -450,7 +528,7 @@ export default {
supplierCode: this.data.supplierCode,
supplierName: this.data.supplierName,
quality: this.data.quality,
unit: this.data.unit,
unit: this.data.unit
}
//
const finalData = {...this.form,...data}
@ -504,24 +582,19 @@ export default {
},
/** 不良类型弹窗 */
handleDefectType(row) {
this.defectForm.defectItems.forEach(item => {
item.belongToDetail = row.recordId;
item.belongTo = row.belongTo;
item.noOkQuality = 0;
});
getDefectValue(row.recordId).then(response => {
getDefectValue(row.recordId,this.checkType).then(response => {
let values = response.rows;
if(values.length > 0){
this.defectForm.defectItems = values.map(item => ({
//qc_check_task_defectrecordId
recordId: item.recordId,
belongTo: this.queryParams.belongTo,
belongToDetail: row.recordId,
defectSubclass: item.defectSubclass,
defectCode: item.defectCode,
noOkQuality: item.noOkQuality,
classId: item.classId,
classList: item.classList
}));
this.updateFlag = true;
}else{
this.updateFlag = false;
}
this.defectOpen = true;
});
@ -536,7 +609,6 @@ export default {
let values = this.dynamicValidateForm.domains;
var actualValues = values.map(item => item.value);
if(this.typeCode=='material' || this.typeCode =='product'){//
debugger
//(使)
getAutoJudge(this.quality,
this.dynamicValidateForm.checkLevel,
@ -596,7 +668,6 @@ export default {
const formData = this.defectForm.defectItems;
if (valid) {
//
if(!this.updateFlag) {
commitDefectValue(formData).then(response => {
if(response.code === 200) {
this.$modal.msgSuccess("提交成功");
@ -607,27 +678,11 @@ export default {
this.defectOpen = false;
this.getDefect();
});
}else {
console.log(formData);
updateDefectValue(formData).then(response => {
if(response.code === 200) {
this.$modal.msgSuccess("修改成功");
}else {
this.$modal.msgError(response.msg);
}
this.defectForm.defectItems = [];
this.defectOpen = false;
this.getDefect();
});
}
} else {
//
console.log('error submit!!');
return false;
}
});
},
resetDefectForm() {
@ -663,6 +718,59 @@ export default {
setSampleAql(sampleAql){
this.sampleAql = sampleAql;
},
/** 检测图片弹窗操作 */
handleShowPic(row) {
var i=0;
this.handleResetPic();
this.picValueOpen = true;
this.recordId = row.recordId;
const files = row.fileUrls;
files.map(item => (
this.fileList.push({
uid: i++,
url: item
})
))
},
handleResetPic() {
this.dynamicPicForm.domains = [{ value: ''}];
},
handleRemove(file) {
this.fileList = this.fileList.filter(item => item !== file);
},
handlePictureCardPreview(file) {
this.dialogImageUrl = file.url;
this.dialogVisible = true;
},
handleDownload(file) {
window.location.href = file.url
},
handleUploadSuccess(res, file) {
if (res.code === 200) {
this.uploadList.push({ name: res.data.name, url: res.data.url });
} else {
this.number--;
this.$modal.closeLoading();
this.$modal.msgError(res.msg);
this.$refs.fileUpload.handleRemove(file);
}
},
submitPicForm() {
var picValues = '';
if(this.uploadList.length>0){
this.uploadList.map(item => picValues=picValues+item.url+',');
};
if(this.fileList.length>0){
this.fileList.map(item => picValues=picValues+item.url+',');
};
submitCheckPics(this.recordId,picValues).then(response => {
this.$modal.msgSuccess("提交成功");
this.picValueOpen = false;
this.getList();
});
},
}
};
</script>

@ -151,7 +151,7 @@ export default {
},
//
handleClose() {
const obj = { path: "/system/role" };
const obj = { path: "/op/system/role" };
this.$tab.closeOpenPage(obj);
},
/** 搜索按钮操作 */

@ -19,7 +19,7 @@
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="库位编码" prop="wlCode">
<el-input
v-model="queryParams.wlCode"
@ -68,7 +68,7 @@
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="单位" prop="userDefined1">
<el-input
v-model="queryParams.userDefined1"
@ -118,18 +118,18 @@
<el-table-column label="区域编号" align="center" prop="regionCode" v-if="false" />
<el-table-column label="库区" align="center" prop="waCode" />
<el-table-column label="库存类型BP白胚" align="center" prop="storageType" v-if="false" />
<el-table-column label="库位编码" align="center" prop="wlCode" />
<el-table-column label="物料号" align="center" prop="materialCode" />
<el-table-column label="物料描述" align="center" prop="materialDesc" />
<el-table-column label="总数量" align="center" prop="amount" />
<el-table-column label="冻结数量" align="center" prop="storageAmount" />
<el-table-column label="占用数量" align="center" prop="occupyAmount" />
<el-table-column label="入库批次号" align="center" prop="productBatch" v-if="false" />
<el-table-column label="单位" align="center" prop="userDefined1" />
<el-table-column label="SAP库位" align="center" prop="userDefined2" />
<!-- <el-table-column label="SAP库位" align="center" prop="userDefined2" />-->
<el-table-column label="备用3" align="center" prop="userDefined3" v-if="false" />
<el-table-column label="备用4" align="center" prop="userDefined4"v-if="false" />
@ -139,11 +139,11 @@
<el-table-column label="备用8" align="center" prop="userDefined8"v-if="false" />
<el-table-column label="备用9" align="center" prop="userDefined9" v-if="false" />
<el-table-column label="备用10" align="center" prop="userDefined10" v-if="false" />
<el-table-column label="创建时间" align="center" prop="gmtCreate" width="180">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.gmtCreate, '{y}-{m}-{d}') }}</span>
</template>
</el-table-column>
<!-- <el-table-column label="创建时间" align="center" prop="gmtCreate" width="180">-->
<!-- <template slot-scope="scope">-->
<!-- <span>{{ parseTime(scope.row.gmtCreate, '{y}-{m}-{d}') }}</span>-->
<!-- </template>-->
<!-- </el-table-column>-->
<el-table-column label="最后更新人" align="center" prop="lastModifiedBy" width="100"/>
<el-table-column label="最后更新时间" align="center" prop="gmtModified" width="180">
<template slot-scope="scope">
@ -152,7 +152,7 @@
</el-table-column>
<el-table-column label="有效标记" align="center" prop="activeFlag" v-if="false" />
<el-table-column label="工厂号" align="center" prop="factoryCode" />
<el-table-column label="SAP工厂号" align="center" prop="sapFactoryCode" width="100"/>
<!-- <el-table-column label="SAP工厂号" align="center" prop="sapFactoryCode" width="100"/>-->
</el-table>

@ -43,15 +43,6 @@
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<!-- <el-form-item label="库位" prop="wlCode">-->
<!-- <el-input-->
<!-- v-model="queryParams.wlCode"-->
<!-- placeholder="请输入库位"-->
<!-- clearable-->
<!-- @keyup.enter.native="handleQuery"-->
<!-- />-->
<!-- </el-form-item>-->
<el-form-item label="物料号" prop="materialCode">
<el-input
v-model="queryParams.materialCode"
@ -69,18 +60,6 @@
/>
</el-form-item>
<!-- <el-form-item label="数量" prop="amount">-->
<!-- <el-input-->
<!-- v-model="queryParams.amount"-->
<!-- placeholder="请输入数量"-->
<!-- clearable-->
<!-- @keyup.enter.native="handleQuery"-->
<!-- />-->
<!-- </el-form-item>-->
<el-form-item label="送货时间" prop="gmtCreate">
<el-date-picker clearable
v-model="queryParams.gmtCreate"
@ -89,15 +68,6 @@
placeholder="请选择创建时间">
</el-date-picker>
</el-form-item>
<!-- <el-form-item label="工厂号" prop="factoryCode">-->
<!-- <el-input-->
<!-- v-model="queryParams.factoryCode"-->
<!-- placeholder="请输入工厂号"-->
<!-- clearable-->
<!-- @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>
@ -114,40 +84,48 @@
</el-col>
<el-col :span="1.5">
<el-button
type="danger"
type="primary"
plain
icon="el-icon-remove"
size="mini"
:disabled="batchSingle"
@click="handleRemoveBatch(row)"
v-hasPermi="['mes:pro:workorder:edit']"
@click="handleRemoveBatch()"
>删除
</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="matetowsnList" @selection-change="handleSelectionChange">
<div>
<el-table v-loading="loading" :data="matetowsnList" @selection-change="handleSelectionChange"
:summary-method="getSummary"
:show-summary="true"
:summary-align="'center'"
>
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="唯一序列号" align="center" prop="mateOrderInSnId" v-if="false" />
<el-table-column label="送货时间" align="center" prop="gmtCreate" width="180">
<el-table-column label="送货时间" align="center" prop="gmtCreate" width="100">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.gmtCreate, '{y}-{m}-{d}') }}</span>
</template>
</el-table-column>
<el-table-column label="送货单" align="center" prop="poNo" width="100"/>
<el-table-column label="采购单" align="center" prop="orderNo" width="100"/>
<el-table-column label="标识卡" align="center" prop="wlCode" width="300"/>
<el-table-column label="批次" align="center" prop="userDefined2" width="300"/>
<el-table-column label="物料号" align="center" prop="materialCode" width="200">
<el-table-column label="物料号" align="center" prop="materialCode" width="120">
<template slot-scope="scope">
<span>{{ formatProductCode(scope.row.materialCode) }}</span>
</template>
</el-table-column>
<el-table-column label="物料描述" align="center" prop="materialDesc" width="300"/>
<el-table-column label="物料描述" align="center" prop="materialDesc" width="300"/>
<el-table-column label="送货单" align="center" prop="poNo" width="100"/>
<el-table-column label="采购单" align="center" prop="orderNo" width="100"/>
<el-table-column label="批次" align="center" prop="userDefined2" width="100"/>
<el-table-column label="入库数量" align="center" prop="amount" />
<el-table-column label="出库数量" align="center" prop="outNumber" />
<el-table-column label="剩余数量" align="center">
<template slot-scope="scope">
<span>{{ scope.row.amount - (scope.row.outNumber || 0) }}</span>
</template>
</el-table-column>
<el-table-column label="状态" align="center" prop="status">
<template slot-scope="scope">
<span v-if="scope.row.outNumber === 0 || scope.row.outNumber === null"></span>
@ -155,7 +133,7 @@
<span v-else></span>
</template>
</el-table-column>
<!-- <el-table-column label="托盘号" align="center" prop="sn" />-->
<el-table-column label="标识卡" align="center" prop="wlCode" width="300"/>
<el-table-column label="仓库" align="center" prop="whCode" />
<el-table-column label="库区" align="center" prop="waCode" />
<el-table-column label="备用1" align="center" prop="userDefined1" v-if="false" />
@ -173,17 +151,10 @@
<span>{{ parseTime(scope.row.gmtCreate, '{y}-{m}-{d}') }}</span>
</template>
</el-table-column>
<!-- <el-table-column label="更新人" align="center" prop="lastModifiedBy" />-->
<!-- <el-table-column label="更新时间" align="center" prop="gmtModified" width="180">-->
<!-- <template slot-scope="scope">-->
<!-- <span>{{ parseTime(scope.row.gmtModified, '{y}-{m}-{d}') }}</span>-->
<!-- </template>-->
<!-- </el-table-column>-->
<el-table-column label="有效标记" align="center" prop="activeFlag"v-if="false" />
<el-table-column label="工厂号" align="center" prop="factoryCode" />
</el-table>
</div>
<pagination
v-show="total>0"
:total="total"
@ -555,6 +526,31 @@ export default {
if (!code) return code; // null undefined
return code.replace(/^0{1,7}/, ''); // 170
},
// getSummary(data) {
// const totalAmount = data.reduce((sum, row) => sum + (row.amount || 0), 0);
// const totalOutNumber = data.reduce((sum, row) => sum + (row.outNumber || 0), 0);
// const totalRemaining = totalAmount - totalOutNumber;
// return [
// { amount: totalAmount, outNumber: totalOutNumber, remaining: totalRemaining },
// ];
// },
getSummary(param) {
const { columns, data } = param;
const totalAmount = data.reduce((sum, row) => sum + (row.amount || 0), 0);
const totalOutNumber = data.reduce((sum, row) => sum + (row.outNumber || 0), 0);
const totalRemaining = totalAmount - totalOutNumber;
const summary = columns.map((column, index) => {
if (index === 7) { // ""8
return totalAmount;
} else if (index === 8) { // ""9
return totalOutNumber;
}else if (index === 9) { // ""9
return totalRemaining;
}
return ''; //
});
return summary;
},
handlequeryform() {
this.showMaterialDialog = true; //
this.fetchMaterials(); //
@ -630,10 +626,12 @@ export default {
console.log("Materials processed");
this.showMaterialDialog = false; //
},
handleRemoveBatch(row) {
handleRemoveBatch() {
const ids = this.ids;
let postData = this.ids.map(id => ({ mateOrderInSnId: id }));
console.log(postData)
this.$modal.confirm('是否确认删除标识卡编号为"' + wlCode + '"的数据项?').then(function() {
return Removecard();
return Removecard(postData);
}).then(() => {
this.editBatch();
this.$modal.msgSuccess("删除成功");

@ -72,8 +72,8 @@
<span v-else-if="scope.row.orderStatus === '2'">完成</span>
</template>
</el-table-column>
<el-table-column label="类型" align="center" prop="userDefined3" />
<el-table-column label="类型" align="center" prop="userDefined6" />
<el-table-column label="成品中心" align="center" prop="userDefined3" />
<el-table-column label="sap过账状态" align="center" prop="userDefined10">
<template slot-scope="scope">
@ -124,11 +124,11 @@
</el-col>
</el-row>
<el-row :gutter="10" class="mb8">
<el-col :span="6">
<el-form-item label="总账科目编号">
<el-input v-model="queryParams1.accountingSubject" placeholder="总账科目编号"></el-input>
</el-form-item>
</el-col>
<!-- <el-col :span="6">-->
<!-- <el-form-item label="总账科目编号">-->
<!-- <el-input v-model="queryParams1.accountingSubject" placeholder="总账科目编号"></el-input>-->
<!-- </el-form-item>-->
<!-- </el-col>-->
<el-col :span="6">
<el-form-item label="收货方">
<el-input v-model="queryParams1.receiver" placeholder="收货方"></el-input>

@ -257,6 +257,17 @@
v-hasPermi="['wms:put:edit']"
>过账</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="success"
plain
icon="el-icon-edit"
size="mini"
:disabled="single"
@click="handleUpdateSAP102"
v-hasPermi="['wms:odsRawOrderIn:edit']"
>102冲销</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="danger"
@ -489,7 +500,7 @@
</template>
<script>
import { listPut, getPut, delPut, addPut, updatePut ,SAPPut} from "@/api/wms/put";
import { listPut, getPut, handleUpdateSAP102,delPut, addPut, updatePut ,SAPPut} from "@/api/wms/put";
export default {
name: "Put",
@ -664,6 +675,32 @@ export default {
//
this.dialogVisible = true;
},
// handleUpdateSAP102(row) {
// // ids
// const ids = row.id || this.ids;
//
// //
// if (!this.ids || this.ids.length === 0) {
// this.$message.error("");
// return;
// }
//
// //
// this.dialogVisible = true;
// },
handleUpdateSAP102(row) {
this.reset();
//qualityStatus
const id = this.ids[0]
let postData = this.ids.map(id => ({ id: id }));
this.$modal.confirm('是否进行过账').then(function() {
return handleUpdateSAP102(JSON.stringify(postData));
}).then(() => {
this.getList();
this.$modal.msgSuccess("过账完成");
}).catch(() => {});
},
confirmSelection() {
if (!this.selectedType) {
this.$message.error("请选择库存类型");

@ -89,11 +89,11 @@
<el-table-column label="入库单号" align="center" prop="orderCode" />
<el-table-column label="型号编码" align="center" prop="materialCode" />
<el-table-column label="型号名称" align="center" prop="materialDesc" />
<el-table-column label="日期" align="center" prop="planDate" width="180">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.planDate, '{y}-{m}-{d}') }}</span>
</template>
</el-table-column>
<!-- <el-table-column label="日期" align="center" prop="planDate" width="180">-->
<!-- <template slot-scope="scope">-->
<!-- <span>{{ parseTime(scope.row.planDate, '{y}-{m}-{d}') }}</span>-->
<!-- </template>-->
<!-- </el-table-column>-->
<el-table-column label="单位" align="center" prop="unit" />
<el-table-column label="数量" align="center" prop="realityNumber" />
<el-table-column label="状态" align="center" prop="orderStatus" />
@ -101,23 +101,23 @@
<el-table-column label="产线名称" align="center" prop="productionLineDesc" />
<el-table-column label="产线编号" align="center" prop="productionLineCode" />
<el-table-column label="库位" align="center" prop="locCode" />
<el-table-column label="备注" align="center" prop="Remark" />
<el-table-column label="创建人" align="center" prop="createBy" />
<el-table-column label="创建时间" align="center" prop="createDate" width="180">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.createDate, '{y}-{m}-{d}') }}</span>
</template>
</el-table-column>
<el-table-column label="最后更新人" align="center" prop="lastUpdateBy" />
<el-table-column label="最后更新时间" align="center" prop="lastUpdateDate" width="180">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.lastUpdateDate, '{y}-{m}-{d}') }}</span>
</template>
</el-table-column>
<!-- <el-table-column label="创建时间" align="center" prop="createDate" width="180">-->
<!-- <template slot-scope="scope">-->
<!-- <span>{{ parseTime(scope.row.createDate, '{y}-{m}-{d}') }}</span>-->
<!-- </template>-->
<!-- </el-table-column>-->
<!-- <el-table-column label="最后更新人" align="center" prop="lastUpdateBy" />-->
<!-- <el-table-column label="最后更新时间" align="center" prop="lastUpdateDate" width="180">-->
<!-- <template slot-scope="scope">-->
<!-- <span>{{ parseTime(scope.row.lastUpdateDate, '{y}-{m}-{d}') }}</span>-->
<!-- </template>-->
<!-- </el-table-column>-->
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
</el-table-column>
</el-table>

Loading…
Cancel
Save