You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1589 lines
51 KiB
Vue

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<template>
<view class="page-product-receipt">
<view class="header" :style="{ backgroundColor: `rgba(250, 53, 52, ${scrollTop / 100})` }">
<view class="left">
<u-icon class="icon" name="arrow-left" @click="uni.navigateBack({})" />
</view>
<view class="title">质量检验</view>
<view class="right"></view>
</view>
<u-form class="form" ref="form" label-width="180rpx">
<!-- 订单 -->
<!-- <u-form-item label="检验节点"> -->
<jPicker sureColor="#ff0000" :moren="moren" @bindpicker="selectProductlocCode" showKey="label" valKey="value" :val="selectList.value" :options="model.selectList" />
<!-- <u-input @blur="onblur()" @focus="onfocus" @click="onclick" :border="true" v-model="selectvalue" placeholder="请选择检验节点" style="overflow: hidden" /> -->
<!-- </u-form-item> -->
</u-form>
<u-form class="form" ref="form" label-width="180rpx" style="margin-top: 10px" v-show="selectList.value != 'checkTypeLL'">
<!-- 订单 -->
<!-- <u-form-item label="检验节点"> -->
<jPicker sureColor="#ff0000" :moren="moren4" @bindpicker="selectProductlocCode3" showKey="label" valKey="value" :val="selectList1.value" :options="model.selectList1" />
<!-- <u-input @blur="onblur()" @focus="onfocus" @click="onclick" :border="true" v-model="selectvalue" placeholder="请选择检验节点" style="overflow: hidden" /> -->
<!-- </u-form-item> -->
</u-form>
<view class="scroll">
<view v-for="item in list" :key="item.id">
<u-form style="margin-top: 10rpx" class="form2">
<view class="list">
<view class="righttitle">
<view class="boder-icon-top zhuangtai" data-state="0">{{ item.checkStatus == 0 ? '待检验' : '检验完成' }}</view>
</view>
<view class="row-list">
<view class="list-item">批次号: </view>
<view> {{ item.incomeBatchNo }} </view>
</view>
<view class="row-list">
<view class="list-item"> 任务号: </view>
<view> {{ item.checkNo }} </view>
</view>
<view class="row-list">
<view class="list-item"> 订单号: </view>
<view> {{ item.workorderCodeSap }} </view>
</view>
<view class="row-list">
<view class="list-item"> 物料号: </view>
<view> {{ item.materialCode }} </view>
</view>
<view class="row-list">
<view class="list-item" style="white-space: nowrap"> 物料名称: </view>
<view> {{ item.materialName }} </view>
</view>
<view class="row-list">
<view class="list-item"> 创建时间: </view>
<view> {{ item.createTime }} </view>
</view>
<view class="row-list">
<view class="row-list-item">
<view class="list-item"> 数量: </view>
<view> {{ item.quality }} </view>
</view>
</view>
<view class="row-list">
<view class="row-list-item">
<view class="list-item"> 检验位置: </view>
<view> {{ item.checkLocName }} </view>
</view>
</view>
<view a:if="true" class="righttitle">
<view @click.stop="onPass(item)" class="boder-icon-rigth"> 处理 </view>
</view>
</view>
</u-form>
</view>
</view>
<view>
<u-popup v-model="show" mode="center" width="98%" :closeable="true">
<view class="selectlist">
<div class="item-name">
<div class="quest">检验项目 :</div>
<div class="details">
<div v-if="!isshow3">批次号 : {{ clickitem.incomeBatchNo }}</div>
<div style="display: flex; white-space: nowrap" v-if="isshow3">批次号 :<jPicker v-if="isshow3" sureColor="#ff0000" :moren="moren2" @bindpicker="selectProductlocCode1" showKey="label" valKey="value" :val="incomeBatchNo.value" :options="model.locList" /></div>
</div>
<div class="details">
<div>订单号 : {{ clickitem.orderNo }}</div>
</div>
<div class="details">
<div>物料号 : {{ clickitem.materialCode }}</div>
</div>
<div class="details">
<div>物料名称 : {{ clickitem.materialName }}</div>
</div>
<div class="details">
<div>数量 : {{ clickitem.quality }}</div>
<div style="margin-left: 30px">检验状态 : {{ clickitem.checkStatus == 0 ? '待检验' : '检验完成' }}</div>
</div>
<div class="details">
<div>检验位置 : {{ clickitem.checkLocName }}</div>
</div>
</div>
<!-- <div style="text-align: center">
<u-button style="width: 100%; height: 35px; margin: auto" @click="onOk" size="mini" type="primary">同步信息</u-button>
</div> -->
<view class="item" v-for="(item, index) in detaillistceshi" :key="index">
<div class="item1">项目名称: {{ item.ruleName }}</div>
<div style="font-weight: 600; margin-bottom: 3px">检查标准: {{ item.checkStandard }}</div>
<div class="item1 item2 item3" v-if="item.propertyCode == '0'">
<div class="item1">检查结果: {{ item.itemMethod }}</div>
<div class="select">
<u-radio-group v-model="item.status" @change="radioGroupChange(item, item.status, index)">
<u-radio @change="radioChange" v-for="(n, indexn) in listselect" :key="indexn" :name="n.type" :disabled="n.disabled">
{{ n.name }}
</u-radio>
</u-radio-group>
</div>
</div>
<div class="item1 item2" style="width: 100%" v-if="item.propertyCode == '1'">
<div class="input-box" id="input-box1" style="display: flex; align-items: center">
实际值:
<input class="input" v-model="item.actualValue" @focus="focus(item, item.actualValue, index)" type="text" name="" id="" />
单位:mm
</div>
<view v-if="item.weight == '1'" @click.stop="WeightInfo(item)" class="boder-icon-rigth1"> 自动获取 </view>
</div>
<div class="item1" style="color: #000; position: relative">
<!-- <div class="item1">检查结果: {{ item.itemMethod }}</div> -->
<div class="Overlay" @click="focustype(item, item.actualValue, index)" style="width: 100%; height: 100%; position: absolute; top: 0; left: 0; z-index: 666"></div>
<!-- <jPicker style="border: 1px solid #ffffff; color: #000" :moren="moren3" @bindpicker="selectProductlocCode2(index, $event)" showKey="label" valKey="value" :val="item.defectCode" :options="model.locList1" /> -->
<u-input placeholder="请输入不合格数量" :disabled="item.defectName == null ? true : true" style="background: #fafafa; border: 1px dashed #e2e2e2; margin-top: 10px" :border="true" v-model="item.defectNames" />
</div>
<div class="item1" style="color: #000; position: relative" v-show="!(selectList.value == 'checkTypeSC' || selectList.value == 'checkTypeSCXJ')">
<div class="item1">抽样数量: {{ item.itemMethod }}</div>
<!-- <jPicker style="border: 1px solid #ffffff; color: #000" :moren="moren3" @bindpicker="selectProductlocCode2(index, $event)" showKey="label" valKey="value" :val="item.defectCode" :options="model.locList1" /> -->
<u-input placeholder="请输入抽样数量" type="number" style="background: #fafafa; border: 1px dashed #e2e2e2; margin-top: 10px" :border="true" v-model="item.sampleQuality" />
</div>
<div class="item1 item2 item3" v-if="item.propertyCode == '1'">
<div>检查结果:</div>
<div class="select">
<u-radio-group v-model="item.status" @change="radioGroupChange(item, item.status, index)">
<u-radio @change="radioChange" v-for="(n, indexn) in listselect" :key="indexn" :name="n.type" :disabled="n.disabled">
{{ n.name }}
</u-radio>
</u-radio-group>
</div>
</div>
<uni-icons type="scan" size="35" @click="scanCodeOne" style="color: #0b9eff; margin: auto; padding: 22rpx"></uni-icons>
<!-- <uni-icons type="scan" size="35" @click="scanCodeOne3" style="color: #0b9eff; margin: auto; padding: 22rpx"></uni-icons> -->
<!-- <uni-icons type="scan" size="35" @click="scanCodeOne2" style="color: #0b9eff; margin: auto; padding: 22rpx"></uni-icons> -->
<div class="upload-name">
<!-- <div class="name">检查标准:{{ form.item5 }}</div> -->
<!-- <u-upload :before-upload="beforeUpload" ref="uUpload" :fileList="fileList" @on-error='errorUpload($event)' :action="action" @on-remove="removePic($event, item)" @on-success="successUpload($event)" :deletable="true"></u-upload> -->
<scroll-view class="scroll-view_H" scroll-x="true" :scroll-left="scrollLeft(item.files)">
<view class="photoList">
<view class="itemBox photoBox" v-for="(img, index1) in item.files" :key="index1">
<view class="closeBtn" @click="deleteImg(index, index1)">
<image class="img" src="../../../static/images/iconCloseGray.svg" mode="scaleToFill"></image>
</view>
<image class="img" :src="img" mode="aspectFit" @click="showScreenImg(index1, item.files)"></image>
</view>
<view class="itemBox chooseBtn" @click="chooseImg(index, item.files)">
<view class="inner">
<image class="img" src="../../../static/images/upload-pic-icon.svg" mode="scaleToFill"></image>
<text class="desc">添加照片</text>
</view>
</view>
</view>
</scroll-view>
</div>
<!-- remark:不合格描述 -->
<div class="item1">不合格描述:</div>
<u-input style="background: #fafafa; border: 1px dashed #e2e2e2; padding: 10px 5px" v-model="item.remark" placeholder="" type="textarea" />
</view>
</view>
<!-- sampleQuality抽样数量
noOkQuality:不合格数量(只来料、入库有)
aNoOkqualityA类不良只过程有
bNoOkqualityB类不良只过程有
cNoOkqualityC类不良只过程有 -->
<u-form class="Belowsform3" ref="form" label-width="230rpx" label-position="left">
<div class="" v-show="selectList.value == 'checkTypeSC'">
<u-form-item label="首检原因:">
<u-input v-model="formdata.reason" placeholder="" />
</u-form-item>
</div>
<u-form-item label="抽样数量:" v-show="selectList.value == 'checkTypeSC' || selectList.value == 'checkTypeSCXJ'">
<u-input v-model="formdata.sampleQuality" placeholder="" type="number" />
</u-form-item>
<u-form-item :label="item.defectSubclass" v-for="(item, index) in detaillistdefects" :key="index">
<u-input :disabled="item.noOkQuality == null ? true : true" v-model="item.noOkQuality" placeholder="" type="number" />
</u-form-item>
<div class="" v-show="selectList.value == 'checkTypeLL'">
<u-form-item label="最终判定:">
<!-- <u-input v-model="formdata.checkResult" placeholder="" type="text" /> -->
<u-radio-group v-model="formdata.checkResult" @change="changeradio1(formdata.checkResult)">
<u-radio v-for="(n, indexn) in listselectdetermine" :key="indexn" :name="n.type" :disabled="n.disabled">
{{ n.name }}
</u-radio>
</u-radio-group>
</u-form-item>
<div v-show="formdata.checkResult == 'N'">
<u-form-item label="是否发起oa:">
<u-radio-group v-model="formdata.startOA">
<u-radio v-for="(n, indexn) in listselectoa" :key="indexn" :name="n.type" :disabled="n.disabled">
{{ n.name }}
</u-radio>
</u-radio-group>
</u-form-item>
<u-form-item label="不合格描述:">
<u-input style="background: #fafafa; border: 1px dashed #e2e2e2; padding: 10px 5px" v-model="formdata.remark" placeholder="" type="textarea" />
</u-form-item>
<u-form-item label="来料类别:">
<jPicker sureColor="#ff0000" :moren="moren5" @bindpicker="selectProductlocCode4" showKey="label" valKey="value" :val="selectmaterialType.value" :options="model.locList2" />
</u-form-item>
<u-form-item label="物料来源:">
<jPicker sureColor="#ff0000" :moren="moren6" @bindpicker="selectProductlocCode5" showKey="label" valKey="value" :val="selectmaterialFromList.value" :options="model.locList3" />
</u-form-item>
</div>
</div>
<!-- <u-form-item v-if="isshow1" label="不合格数量:">
<u-input v-model="formdata.noOkQuality" placeholder="" type="number" />
</u-form-item>
<u-form-item v-if="isshow3" label="A类不良:">
<u-input v-model="formdata.aNoOkquality" placeholder="" type="number" />
</u-form-item>
<u-form-item v-if="isshow3" label="B类不良:">
<u-input v-model="formdata.bNoOkquality" placeholder="" type="number" />
</u-form-item>
<u-form-item v-if="isshow3" label="C类不良:">
<u-input v-model="formdata.cNoOkquality" placeholder="" type="number" />
</u-form-item> -->
</u-form>
<view class="poupbutton" style="margin-top: 10px">
<div>
<u-button style="width: 100px; height: 35px" @click="onOk" size="mini" type="primary">提交</u-button>
</div>
<div>
<u-button style="width: 100px; height: 35px" size="mini" type="error" @click="nopoup">取消</u-button>
</div>
</view>
</u-popup>
<view v-if="show" class="mask"></view>
</view>
<!-- <u-select v-model="showselect" mode="mutil-column-auto" :list="selectlist"></u-select> -->
<u-modal v-model="isshow" class="modal" :show-cancel-button="true" :show-title="false" @cancel="cancel" @confirm="confirm">
<div class="tagsbox">
<u-tag v-for="(item, index) in tagslist" class="tags" :key="index" :text="item" type="info" closeable @close="tagClick(index)" />
</div>
<div class="upload-name">
<div>
<u-input :border="true" v-model="tagsvalue" :focus="isfocus" style="overflow: hidden" />
</div>
<div>
<u-button style="width: 100px; height: 35px; margin-left: 5px" @click="ontagsadd" size="mini" type="primary">测量值增加</u-button>
</div>
</div>
<div class="upload-name" v-show="isgetAutoJudge">
<jPicker style="border: 1px solid #dcdfe6; padding: 8px 18px" sureColor="#ff0000" :moren="moren7" @bindpicker="selectProductlocCode6" showKey="label" valKey="value" :val="selectList4.value" :options="model.locList4" />
</div>
<div class="upload-name" v-show="isgetAutoJudge">
<jPicker style="border: 1px solid #dcdfe6; padding: 8px 18px" sureColor="#ff0000" :moren="moren8" @bindpicker="selectProductlocCode7" showKey="label" valKey="value" :val="selectList5.value" :options="model.locList5" />
</div>
</u-modal>
<badtype sureColor="#ff0000" ref="babtype" :showtype="isshowtype" @bindtypelist="selectbabTypelist" showKey="label" valKey="value" :options="model.locList1" />
<u-toast ref="uToast" />
</view>
</template>
<script lang="ts">
import { Component } from 'vue-property-decorator';
import { BasePage } from '@/components/base/page';
import jPicker from '@/components/J-Picker/jPicker.vue';
import badtype from '@/components/bad-type/bad-type.vue';
import model from './model';
import { session } from '@/store/modules/session';
const mpaasScanModule: any = uni.requireNativePlugin('Mpaas-Scan-Module');
@Component({
components: {
jPicker,
badtype,
},
})
export default class PurchaseWHSRM extends BasePage {
model = model;
moren = '请选择检验节点';
moren2 = '请选择批次号';
moren3 = '请选择不良分类';
moren4 = '请选择检验位置';
moren5 = '请选择来料类别';
moren6 = '请选择物料来源';
moren7 = '请选择接受质量限';
moren8 = '请选择检测水平';
list: any = [];
show = false;
showselect = false;
isshow = false;
form3: any = {
barCodewl: '',
};
listselect: any = [
{
type: 'Y',
name: '',
radiovalue: null,
},
{
type: 'N',
name: '',
radiovalue: null,
},
{
type: 'O',
name: '',
radiovalue: null,
},
];
listselectoa: any = [
{
type: 1,
name: '',
radiovalue: null,
},
{
type: 0,
name: '',
radiovalue: null,
},
];
listselectdetermine: any = [
{
type: 'Y',
name: '',
radiovalue: null,
},
{
type: 'N',
name: '',
radiovalue: null,
},
];
selectList: any = {};
selectList1: any = {};
selectList2: any = {};
selectList4: any = {};
selectList5: any = {};
defectCodeList: any = {};
// remove: any = {};
// async onReady() {
// await this.model.queryLocation();
// this.remove = this.model.WlList[0];
// }
// selectItem(e: any) {
// this.remove = e.pickerName;
// }
orderNo: any = '';
//
WeightInfolist: any = [];
detailList: any = [];
equipmentindex: any = [];
tagsvalue: any = '';
tagslist: any = [];
detailsinfo: any = [];
nodelist: any = '';
nodelist1: any = '';
detaillistceshi: any = [];
detaillistdefects: any = [];
clickitem: any = '';
formdata: any = {
sampleQuality: null,
noOkQuality: null,
aNoOkquality: null,
bNoOkquality: null,
cNoOkquality: null,
checkResult: null,
materialType: null,
materialFrom: null,
remark: null,
startOA: null,
reason: null,
};
isvalue = false;
isvalue2 = false;
isvalue3 = false;
isquality = false;
isgetAutoJudge = false;
isfocus = false;
isshow1 = false;
isshow2 = false;
isshow3 = false;
incomeBatchNo: any = {};
files: any = [];
DefectListPDAlist: any = [];
defectCodelist: any = [];
imgurl: any = 'http://lj08.cn/21001871815240307020600048115350';
//
isshowtype = false;
//
getmaterialType: any = [];
selectmaterialType: any = {};
//
getmaterialFromList: any = [];
selectmaterialFromList: any = {};
//
// mpaasScan
//
tagClick(index) {
this.tagslist.splice(index, 1);
}
//
ontagsadd() {
if (this.tagsvalue == '' || this.tagsvalue == undefined) {
// this.customToast('');
(this.$refs.uToast as any).show({
title: '',
type: 'default',
});
return;
}
this.tagslist.push(this.tagsvalue);
// this.isfocus = false;
// this.$nextTick(() => {
// this.isfocus = true;
// });
}
// 页面加载
async onLoad(options) {
uni.$on('scanCodeData', (data) => {
let str = `${data.code}`;
let recData = JSON.parse(str);
console.log(recData, 'assdasdasdasdad cc');
this.scanCodeOne2;
// 现在你可以使用 recData 进行进一步的处理
});
this.getselectlist();
if (options.listitem) {
let str = decodeURIComponent(options.listitem);
if (str) {
this.detailsinfo = JSON.parse(str);
this.selectList.value = this.detailsinfo.checkType;
this.getDefectListPDA();
let query = {
factoryCode: session.PoolName,
checkManCode: session.userName,
checkStatus: 0,
checkType: this.detailsinfo.checkType,
checkLoc: this.selectList1.value,
};
await this.model.getCheckTaskListall(query);
this.list = this.model.CheckTaskListall;
}
}
}
// 获取下拉
async getselectlist() {
await this.model.getCheckType();
await this.model.getcheckLocList();
await this.model.getsampleaqlList();
await this.model.getsamplelevelList();
this.nodelist = this.model.orderNoItemList;
this.nodelist1 = this.model.orderNoItemList1;
}
async getDefectListPDA() {
let query1 = {
factoryCode: session.PoolName,
checkType: this.selectList.value,
};
await this.model.getDefectListPDA(query1);
this.defectCodelist = [];
this.DefectListPDAlist = this.model.locList1;
this.DefectListPDAlist.forEach((item) => {
let a: any = {};
a.label = item.label;
a.defectCode = item.value;
a.numberall = 0;
this.defectCodelist.push(a);
});
}
async getmaterialTypePDA() {
await this.model.getmaterialTypePDA();
this.getmaterialType = this.model.locList2;
}
// 自动取数
async WeightInfo(item) {
let query = {
factoryCode: session.PoolName,
recordId: item.recordId,
};
await this.model.getWeightInfo(query);
// let actualValue = '["111","111"]'
// item.actualValue = actualValue
this.WeightInfolist = this.model.WeightInfoList;
if (this.WeightInfolist.msg) {
item.actualValue = this.WeightInfolist.msg;
}
}
async getmaterialFromListPDA() {
await this.model.getmaterialFromListPDA();
this.getmaterialFromList = this.model.locList3;
}
async onPass(item) {
this.clickitem = item;
let query1 = {
factoryCode: session.PoolName,
workorderCode: this.clickitem.orderNo,
};
this.getDefectListPDA();
this.getmaterialFromListPDA();
this.getmaterialTypePDA();
if (this.selectList.value == 'checkTypeLL') {
this.formdata.startOA = 1;
}
await this.model.getBatchList(query1);
let labelname = this.selectList.value;
if (labelname == 'checkTypeSCXJ') {
this.isshow3 = true;
if (item.incomeBatchNo) {
this.incomeBatchNo.value = item.incomeBatchNo;
}
} else {
this.isshow3 = false;
}
let belongTo = item.recordId;
let query = {
factoryCode: session.PoolName,
belongTo: belongTo,
checkType: this.selectList.value,
};
await this.model.getCheckTaskList(query);
if (this.clickitem.sampleQuality != null) {
this.formdata.sampleQuality = this.clickitem.sampleQuality;
} else {
this.formdata.sampleQuality = null;
}
this.detaillistceshi = this.model.CheckTaskList.qcCheckTaskDetails;
this.detaillistdefects = this.model.CheckTaskList.defects;
this.detaillistdefects.forEach((item) => {
if (item.noOkQuality == null) {
item.noOkQuality = 0;
}
});
this.detaillistdefects.forEach((item) => {
if (item.sampleQuality == null) {
item.sampleQuality = 0;
}
});
this.detaillistceshi.forEach((item) => {
item.factoryCode = session.PoolName;
item.checkType = this.selectList.value;
item.orderCode = this.clickitem.orderNo;
item.files = [];
item.babtype = this.defectCodelist;
item.defectlabel = null;
});
this.determine();
// if (this.detaillistceshi.some((item) => item.status === 'Y')) {
// this.formdata.checkResult = '合格'
// }
// if (this.detaillistceshi.some((item) => item.status === 'N')) {
// this.formdata.checkResult = '不合格'
// }
this.show = true;
}
// 最终判定是否合格
determine() {
if (this.detaillistceshi.some((item) => item.status === 'Y')) {
this.formdata.checkResult = 'Y';
}
if (this.detaillistceshi.some((item) => item.status === 'N')) {
this.formdata.checkResult = 'N';
}
}
radioGroupChange(item, value, index) {
console.log(item, value, index, '切换单选框');
this.determine();
}
radioChange(e) {
console.log(e);
}
// 判定选择
changeradio1(checkResult) {
console.log(checkResult);
}
async selectProductlocCode(e: any) {
this.selectList = e.pickerName;
let query = {
factoryCode: session.PoolName,
checkManCode: session.userName,
checkStatus: 0,
checkType: this.selectList.value,
checkLoc: this.selectList1.value,
};
this.getDefectListPDA();
await this.model.getCheckTaskListall(query);
this.list = this.model.CheckTaskListall;
console.log(this.selectList.value, 'assdasdasdasdad cc');
// let params = {
// productionState: this.productCodelocList.value.toString(),
// };
// await this.model.getpalletLocation(params); //参数成型区2烘房3
}
async selectbabTypelist(babtypelist, index) {
this.detaillistceshi[index].babtype = babtypelist;
let defectCode = [];
let defectQuality = [];
let defectlabel = [];
// a.label = item.label;
// a.defectCode = item.value;
// a.numberall = 0;
babtypelist.forEach((item) => {
if (item.numberall != 0) {
let a = item.label + ':' + item.numberall;
defectCode.push(item.defectCode);
defectQuality.push(item.numberall);
defectlabel.push(a);
}
});
this.detaillistceshi[index].defectCodes = defectCode.join(',');
this.detaillistceshi[index].defectQualitys = defectQuality.join(',');
this.detaillistceshi[index].defectNames = defectlabel.join(',');
const mergedObject = {};
for (let index = 0; index < this.detaillistceshi.length; index++) {
this.detaillistceshi[index].babtype.forEach((obj) => {
const { numberall, defectCode } = obj;
if (!mergedObject[defectCode]) {
mergedObject[defectCode] = parseInt(numberall);
} else {
mergedObject[defectCode] += parseInt(numberall);
}
});
}
const array3 = Object.keys(mergedObject).map((defectCode) => ({
defectCode,
value: mergedObject[defectCode],
}));
for (let index = 0; index < array3.length; index++) {
this.detaillistdefects.forEach((item) => {
if (item.defectCode == array3[index].defectCode) {
if (item.noOkQuality == null) {
item.noOkQuality = 0;
}
item.noOkQuality = array3[index].value;
}
});
}
}
async selectProductlocCode1(e: any) {
this.incomeBatchNo = e.pickerName;
}
async selectProductlocCode3(e: any) {
this.selectList1 = e.pickerName;
let query = {
factoryCode: session.PoolName,
checkManCode: session.userName,
checkStatus: 0,
checkType: this.selectList.value,
checkLoc: this.selectList1.value,
};
this.getDefectListPDA();
await this.model.getCheckTaskListall(query);
this.list = this.model.CheckTaskListall;
}
async selectProductlocCode4(e: any) {
this.selectmaterialType = e.pickerName;
this.formdata.materialType = this.selectmaterialType.value;
}
async selectProductlocCode5(e: any) {
this.selectmaterialFromList = e.pickerName;
this.formdata.materialFrom = this.selectmaterialFromList.value;
}
async selectProductlocCode6(e: any) {
this.selectList4 = e.pickerName;
this.detaillistceshi[this.equipmentindex[0]].sampleAql = this.selectList4.value;
}
async selectProductlocCode7(e: any) {
this.selectList5 = e.pickerName;
this.detaillistceshi[this.equipmentindex[0]].checkLevel = this.selectList5.value;
}
focustype(item, value, index) {
this.isfocus = false;
this.$nextTick(() => {
this.isfocus = true;
});
(this.$refs.babtype as any).open(item, index);
}
focus(item, value, index) {
if (this.detaillistceshi[index].upperDiff == null && this.detaillistceshi[index].downDiff == null) {
this.isgetAutoJudge = false;
} else {
if (this.selectList.value == 'checkTypeLL' || this.selectList.value == 'checkTypeCP') {
this.isgetAutoJudge = true;
}
}
if (this.detaillistceshi[index].actualValue) {
this.tagslist = JSON.parse(this.detaillistceshi[index].actualValue);
this.selectList4.value = this.detaillistceshi[index].sampleAql;
this.selectList5.value = this.detaillistceshi[index].checkLevel;
} else {
this.tagslist = [];
this.detaillistceshi[index].sampleAql = null;
this.detaillistceshi[index].checkLevel = null;
// this.selectList4.value = this.detaillistceshi[index].sampleAql;
// this.selectList5.value = this.detaillistceshi[index].checkLevel;
}
this.isfocus = false;
this.$nextTick(() => {
this.isfocus = true;
});
this.equipmentindex = [];
this.tagsvalue = null;
this.equipmentindex.push(index);
this.isshow = true;
}
nopoup() {
this.show = false;
this.form3.barCodewl = '';
}
async getlist() {
let query = {
factoryCode: session.PoolName,
checkManCode: session.userName,
checkStatus: 0,
checkType: this.selectList.value,
checkLoc: this.selectList1.value,
};
await this.model.getCheckTaskListall(query);
this.list = this.model.CheckTaskListall;
}
//点击收货按钮,录入批次(或系统自动生成)、数量、托盘码进行收货。
async onOk() {
this.isvalue = false;
this.isvalue2 = false;
this.isvalue3 = false;
this.isquality = false;
let typeCode = '';
this.nodelist.forEach((item) => {
if (this.selectList.value == item.orderCode) {
typeCode = item.typeCode;
}
});
this.detaillistceshi.forEach((item) => {
if (item.propertyCode == 1) {
if (item.actualValue == null || item.actualValue == '') {
this.isvalue = true;
}
}
});
// this.detaillistceshi.forEach((item) => {
// if (item.defectCode == null || item.defectCode == '') {
// this.isvalue2 = true;
// }
// });
// this.detaillistceshi.forEach((item) => {
// if (item.defectQuality == null || item.defectQuality == '') {
// this.isvalue3 = true;
// }
// });
this.detaillistdefects.forEach((item) => {
if (item.noOkQuality === null || item.noOkQuality === '') {
this.isquality = true;
}
});
if (this.selectList.value == 'checkTypeSC') {
if (this.isvalue) {
(this.$refs.uToast as any).show({
title: '实际测量值不能为空',
type: 'default',
});
return;
}
}
if (this.selectList.value == 'checkTypeSC') {
if (this.formdata.reason === null || this.formdata.reason === '') {
(this.$refs.uToast as any).show({
title: '首检原因不能为空',
type: 'default',
});
return;
}
}
// if (this.isvalue2) {
// (this.$refs.uToast as any).show({
// title: '请选择不良分类',
// type: 'default',
// });
// return;
// }
// if (this.isvalue3) {
// (this.$refs.uToast as any).show({
// title: '不合格数量不能为空',
// type: 'default',
// });
// return;
// }
if (this.formdata.sampleQuality === null || this.formdata.sampleQuality === '') {
(this.$refs.uToast as any).show({
title: '抽样数量不能为空',
type: 'default',
});
return;
}
if (this.formdata.checkResult == 'N') {
if (this.formdata.remark === null || this.formdata.remark === '') {
(this.$refs.uToast as any).show({
title: '不合格描述不能为空',
type: 'default',
});
return;
}
}
if (this.selectList.value == 'checkTypeLL') {
if (this.formdata.checkResult == 'N') {
if (this.formdata.materialType === null || this.formdata.materialType === '') {
(this.$refs.uToast as any).show({
title: '请选择来料类别',
type: 'default',
});
return;
}
if (this.formdata.materialFrom === null || this.formdata.materialFrom === '') {
(this.$refs.uToast as any).show({
title: '请选择物料来源',
type: 'default',
});
return;
}
}
}
// if (this.isquality) {
// (this.$refs.uToast as any).show({
// title: '数量不能为空',
// type: 'default',
// });
// return;
// }
let incomeBatchNo = '';
if (this.isshow3) {
if (this.incomeBatchNo.value == '' || this.incomeBatchNo.value == undefined) {
(this.$refs.uToast as any).show({
title: '批次号不能为空',
type: 'default',
});
return;
}
incomeBatchNo = this.incomeBatchNo.value;
} else {
incomeBatchNo = this.clickitem.incomeBatchNo;
}
// for (let index = 0; index < this.defectCodelist.length; index++) {
// this.defectCodelist[index].numberall = 0;
// this.detaillistceshi.forEach((item) => {
// if (item.defectCode == this.defectCodelist[index].defectCode) {
// this.defectCodelist[index].numberall += parseInt(item.defectQuality);
// }
// });
// }
// for (let index = 0; index < this.defectCodelist.length; index++) {
// this.detaillistdefects.forEach((item) => {
// if (item.defectCode == this.defectCodelist[index].defectCode) {
// item.noOkQuality = this.defectCodelist[index].numberall;
// }
// });
// }
this.detaillistceshi.forEach((item) => {
if (item.files.length > 0) {
item.files = [];
} else {
item.files = [];
}
});
let query = {
sampleQuality: this.formdata.sampleQuality,
updateBy: session.userName,
factoryCode: session.PoolName,
updateByName: session.nickName,
typeCode: typeCode,
checkType: this.selectList.value,
orderCode: this.clickitem.orderNo,
workorderCodeSap: this.clickitem.workorderCodeSap,
qcCheckTaskDetails: this.detaillistceshi,
defects: this.detaillistdefects,
// 检验编码
checkNo: this.clickitem.checkNo,
// 批次编码
incomeBatchNo: incomeBatchNo,
//物料编号
materialCode: this.clickitem.materialCode,
// 物料名称
materialName: this.clickitem.materialName,
// 供应商编码
supplierCode: this.clickitem.supplierCode,
// 供应商名称
supplierName: this.clickitem.supplierName,
// 来料数量
quality: this.clickitem.quality,
// 单位
unit: this.clickitem.unit,
//是否发起oa
startOA: this.formdata.startOA,
// 最终判定结果
checkResult: this.formdata.checkResult,
// 不合格措述
remark: this.formdata.remark,
// 来料类别
materialType: this.formdata.materialType,
// 物料来源
materialFrom: this.formdata.materialFrom,
// 物料来源
reason: this.formdata.reason,
};
console.log(query, this.formdata);
await this.model.commitCheckTaskList(query);
if (this.model.SubmitCode.code == '200') {
(this.$refs.uToast as any).show({
title: '成功',
type: 'default',
});
this.show = false;
this.getlist();
this.clear();
} else {
(this.$refs.uToast as any).show({
title: '失败',
type: 'default',
});
}
}
clear() {
this.formdata.sampleQuality = null;
}
confirm() {
if (this.tagslist.length <= 0) {
this.detaillistceshi[this.equipmentindex[0]].actualValue = null;
} else {
this.detaillistceshi[this.equipmentindex[0]].actualValue = JSON.stringify(this.tagslist);
if (this.isgetAutoJudge) {
this.getAutoJudgelist();
}
}
this.tagsvalue = null;
}
async getAutoJudgelist() {
let query1 = {
factoryCode: session.PoolName,
sampleQuality: this.clickitem.quality,
checkLevel: this.selectList5.value,
sampleAql: this.selectList4.value,
actualValues: this.tagslist,
upperDiff: this.detaillistceshi[this.equipmentindex[0]].upperDiff,
downDiff: this.detaillistceshi[this.equipmentindex[0]].downDiff,
};
await this.model.getAutoJudge(query1);
// sampleCode:样本量编码
// sampleQuality:样本数量
// status:是否台格合格N不合格
if (this.model.getAutoJudgeList.data) {
this.detaillistceshi[this.equipmentindex[0]].status = this.model.getAutoJudgeList.data.status;
this.detaillistceshi[this.equipmentindex[0]].sampleCode = this.model.getAutoJudgeList.data.sampleCode;
this.detaillistceshi[this.equipmentindex[0]].sampleQuality = this.model.getAutoJudgeList.data.sampleQuality;
this.detaillistceshi[this.equipmentindex[0]].sampleAql = this.selectList4.value;
this.detaillistceshi[this.equipmentindex[0]].checkLevel = this.selectList5.value;
}
}
// factoryCode:工厂编码sampleQuality checkLevel:检测水平sampleaq1:接受质量限actualValue:[]实际测量值upperDiff:上限downDiff:下限
cancel() {
this.isshow = false;
this.tagsvalue = null;
this.detaillistceshi[this.equipmentindex[0]].sampleAql = null;
this.detaillistceshi[this.equipmentindex[0]].checkLevel = null;
}
//查询货单关联采购单信息
// 照片上传
scrollLeft(files) {
return 222 * (files.length + 1);
}
showScreenImg(i, files) {
let list = files;
uni.previewImage({
current: i,
urls: list,
// loop: true
});
}
chooseImg(index, files) {
uni.chooseImage({
count: 9, //默认9
// sizeType: ['original', 'compressed'], //可以指定是原图还是压缩图,默认二者都有
sourceType: ['album', 'camera'],
success: (res) => {
// uni.showLoading();
let tempFilePaths: any = res.tempFilePaths;
// (this.$refs.uToast as any).show({
// title: '成功',
// type: 'success',
// });
// uni.navigateBack({});
// } else {
// (this.$refs.uToast as any).show({
// title: '失败',
// type: 'error',
// });
tempFilePaths.map((item) => {
uni.uploadFile({
url: 'http://192.168.202.20:9000/prod-api/file/upload',
// url: '/prod-api/file/upload',
// url: '/dev-api/file/upload',
fileType: 'image',
filePath: item,
header: {
Authorization: 'Bearer ' + session.user?.access_token,
// 'cosmo-env-sitecode': this.$store.state.siteCode
},
name: 'file',
// formData: {
// materialCode: this.materialObj.materialCode,
// },
success: (res) => {
uni.hideLoading();
if (!res.data) {
// this.$refs.toastRef.show({
// type:"error",
// text:res.msg
// })
return;
}
let data = JSON.parse(res.data);
files = [...files, data.data.url];
this.detaillistceshi[index].files = files;
this.detaillistceshi[index].fileListStr = files.join(',');
//this.filesName = [...this.filesName,data.fileName];
//this.picUrls = this.files.join(",");
//this.picNames = this.filesName.join(",");
uni.hideLoading();
},
fail: () => {
uni.hideLoading();
},
});
});
},
});
}
deleteImg(index, index1) {
this.detaillistceshi[index].files.splice(index1, 1);
this.detaillistceshi[index].fileListStr = this.detaillistceshi[index].files.join(',');
}
// "resp_message":"success""res_presult":"http://li08.cn/21001871815240307020600048115350""res_pcode":1000}
scanCodeOne() {
// http://lj08.cn/21201501124240221021300171390045
mpaasScanModule.mpaasScan(
{
// 扫码识别类型参数可多选qrCode、barCode
// 如不设置,默认识别所有扫码类型,可能有些许影响识别效率
scanType: ['qrCode', 'barCode'],
// 是否隐藏相册默认false不隐藏
hideAlbum: false,
},
(ret) => {
// uni.showModal({
// title: '扫码结果',
// // 返回值中,有三个参数 resp_code、resp_message、resp_result
// // resp_code 表示返回结果值10用户取消11其他错误1000成功
// // resp_message 表示返回结果信息
// // resp_result 表示扫码结果,只有成功才会有返回
// content: JSON.stringify(ret),
// showCancel: false,
// confirmText: '确定',
// });
if (ret.resp_message == 'success') {
uni.navigateTo({
url: `/pages/quality/Materialinspection/web?listitem=` + encodeURIComponent(ret.resp_result),
});
} else {
this.customToast(ret.resp_result);
}
},
);
}
scanCodeOne3() {
// http://lj08.cn/21201501124240221021300171390045
uni.scanCode({
scanType: ['qrCode', 'barCode'],
success: (res) => {
this.orderNo = res.result;
uni.navigateTo({
url: `/pages/quality/Materialinspection/web?listitem=` + encodeURIComponent(res.result),
});
},
fail(result) {
this.customToast(result);
},
});
}
scanCodeOne2() {
// http://lj08.cn/21201501124240221021300171390045
let result: any = 'https://wx.hlcode.cn/?id=NEVVLoo';
uni.navigateTo({
url: `/pages/quality/Materialinspection/web?listitem=` + encodeURIComponent(result),
});
}
}
</script>
<style lang="scss" scoped>
.boder-icon-rigth1 {
border: 1rpx solid #5a9cf8;
width: 200rpx;
text-align: center;
background: #5a9cf8;
color: #ffffff;
margin-top: 5px;
padding: 5px;
}
.page-product-receipt {
background: #f2f2f2 linear-gradient(0deg, #f2f2f2 0%, #f8262c 51%, #d9001b 100%) no-repeat;
background-size: 100% 600rpx;
padding: 118rpx 30rpx 162rpx;
min-height: 100%;
.header {
position: fixed;
top: 0rpx;
left: 0;
right: 0;
z-index: 99;
display: flex;
height: 120rpx;
line-height: 88rpx;
color: #fff;
font-size: 34rpx;
font-weight: 500;
text-align: center;
padding: 45rpx 0rpx 0rpx;
.title {
flex: 3;
}
.left,
.right {
flex: 1;
}
.icon {
display: flex;
justify-content: center;
align-items: center;
width: 88rpx;
height: 88rpx;
}
}
.form {
background-color: #fff;
padding: 40rpx;
border-radius: 10rpx;
box-shadow: 0 0 20rpx 0 rgba(128, 128, 128, 0.2);
.u-form-item {
padding: 30rpx 0;
line-height: 35rpx;
.Transfer {
width: 280rpx;
height: 64rpx;
background: rgb(242, 242, 242);
border-radius: 110rpx;
}
}
.single {
width: 100%;
height: 100rpx;
display: flex;
.single-left {
width: 80%;
height: 100%;
display: flex;
view {
width: 142rpx;
height: 100%;
line-height: 100rpx;
}
}
.single-right {
button {
margin-top: 15rpx;
width: 140rpx;
height: 70rpx;
background-color: #fa3534;
}
}
}
.row {
display: flex;
flex-direction: row;
justify-content: space-around;
flex: 1;
}
}
.scroll {
// margin-top: 120rpx;
// padding-left: 30rpx;
// padding-right: 16rpx;
// margin-bottom: 20rpx;
// overflow: scroll;
// padding-top: 20rpx;
.form2 {
background-color: #fff;
padding: 0rpx 25rpx 25rpx;
border-radius: 10rpx;
box-shadow: 0 0 20rpx 0 rgba(128, 128, 128, 0.2);
color: #8d8989;
.row-list {
display: flex;
flex-direction: row;
justify-content: space-between;
.row-list-item {
display: flex;
flex-direction: row;
justify-content: space-between;
width: 40%;
}
.list-item {
display: flex;
flex-direction: row;
flex: 1;
}
}
.righttitle {
display: flex;
justify-content: flex-end;
.boder-icon-rigth {
border: 1rpx solid #fa3534;
width: 130rpx;
text-align: center;
background: #fa3534;
color: #ffffff;
margin-top: 10px;
}
.zhuangtai {
background: #a7a0a04a;
width: 224rpx;
margin-right: -27rpx;
border: 2rpx solid #a7a0a04a;
border-radius: 12rpx;
text-align: center;
margin-bottom: 10rpx;
}
.zhuangtai[data-state='1'] {
color: green;
}
.zhuangtai[data-state='0'] {
color: blue;
}
}
}
}
.bottom-bar {
position: fixed;
bottom: 0;
left: 0;
right: 0;
z-index: 99;
background: #ffffff;
box-shadow: 0 1rpx 20rpx 0 rgba(128, 128, 128, 0.2);
padding: 20rpx;
}
.button-bar {
}
.photoList {
display: flex;
padding-top: 12rpx;
.chooseBtn {
width: 202rpx;
height: 202rpx;
background: #fafafa;
border-radius: 12rpx;
border: 2rpx dashed #e2e2e2;
display: flex;
justify-content: center;
align-items: center;
.inner {
text-align: center;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
}
.desc {
font-size: 28rpx;
font-weight: 400;
color: #24252a;
line-height: 40rpx;
}
.img {
width: 50rpx;
height: 50rpx;
margin-bottom: 6rpx;
}
}
.photoBox {
width: 202rpx;
height: 202rpx;
background: #fafafa;
border-radius: 12rpx;
position: relative;
.closeBtn {
position: absolute;
top: -12rpx;
right: -12rpx;
z-index: 2;
width: 36rpx;
height: 36rpx;
.img {
width: 36rpx;
height: 36rpx;
}
}
.img {
width: 202rpx;
height: 202rpx;
border-radius: 12rpx;
}
}
.itemBox {
flex: 0 0 202rpx;
margin-right: 20rpx;
&:last-child {
margin-right: 0;
}
}
// /deep/ .remarksBox textarea {
// font-size: 24rpx;
// }
}
.poupbutton {
display: flex;
justify-content: space-around;
}
.mask {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-color: rgba(0, 0, 0, 0.5); /* 半透明的黑色背景 */
z-index: 9999; /* 确保遮罩层在最上层 */
}
.selectlist {
margin-top: 15px;
border-radius: 5px;
// border: rgba(121, 121, 121, 1) solid 1px;
// background-color: #ffffff;
padding: 7px 8px 7px 12px;
box-sizing: border-box;
.item-name {
.quest {
// width: 367px;
// border-radius: 5px;
// border: rgba(121, 121, 121, 1) solid 1px;
// background-color: #ffffff;
padding: 7px 8px 7px 12px;
box-sizing: border-box;
text-align: center;
font-size: 18px;
}
.details {
display: flex;
font-size: 15px;
// justify-content: space-between;
align-items: center;
margin-bottom: 8px;
}
}
.single-left {
display: flex;
// align-items: center;
// justify-content: space-around;
text-align: center;
margin-top: 12px;
margin-bottom: 20px;
border: 1px solid #eee;
}
.item {
margin-top: 15px;
width: 344px;
border-radius: 5px;
border: rgba(121, 121, 121, 1) solid 1px;
// background-color: #ffffff;
padding: 7px 8px 7px 8px;
box-sizing: border-box;
.item1 {
margin-bottom: 3px;
white-space: 1px;
font-size: 15px;
font-weight: 600;
}
.item2 {
display: flex;
align-items: center;
// justify-content: space-between;
.select {
font-size: 15px;
font-weight: 400;
display: flex;
// margin-left: 19px;
}
.input-box {
font-size: 13px;
font-weight: 400;
display: flex;
align-content: center;
margin-top: 2px;
.input {
font-size: 12px;
width: 56%;
padding: 1px 8px;
height: 27px;
box-sizing: border-box;
border: 1px solid #b6b6b6;
margin-left: 6px;
display: inline-block;
margin-right: 6px;
border-radius: 4px;
position: relative;
}
}
}
.item3 {
display: flex;
align-content: center;
justify-content: space-between;
}
}
}
.modal {
.upload-name {
padding: 6px 20px;
display: flex;
justify-content: space-between;
.name {
font-size: 17px;
font-weight: 600;
}
}
.tagsbox {
padding: 10px 20px;
.tags {
margin-right: 5px;
}
}
}
.Belowsform3 {
background-color: #fff;
padding: 7px 8px 7px 12px;
.u-form-item {
line-height: 35rpx;
font-size: 16px;
}
.photoList {
display: flex;
padding-top: 12rpx;
.chooseBtn {
width: 202rpx;
height: 202rpx;
background: #fafafa;
border-radius: 12rpx;
border: 2rpx dashed #e2e2e2;
display: flex;
justify-content: center;
align-items: center;
.inner {
text-align: center;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
}
.desc {
font-size: 28rpx;
font-weight: 400;
color: #24252a;
line-height: 40rpx;
}
.img {
width: 50rpx;
height: 50rpx;
margin-bottom: 6rpx;
}
}
.photoBox {
width: 202rpx;
height: 202rpx;
background: #fafafa;
border-radius: 12rpx;
position: relative;
.closeBtn {
position: absolute;
top: -12rpx;
right: -12rpx;
z-index: 2;
width: 36rpx;
height: 36rpx;
.img {
width: 36rpx;
height: 36rpx;
}
}
.img {
width: 202rpx;
height: 202rpx;
border-radius: 12rpx;
}
}
.itemBox {
flex: 0 0 202rpx;
margin-right: 20rpx;
&:last-child {
margin-right: 0;
}
}
}
}
::v-deep .input1 .u-input__input {
//background: rgb(233 231 231 / 38%);
background-color: #f0f0f0;
}
::v-deep .uni-input-placeholder {
font-weight: 500;
left: 10px;
}
::v-deep .uni-textarea-placeholder {
font-weight: 500;
}
::v-deep .Belowsform3 .uni-input-input {
width: 97%;
border: 1px solid #dcdfe6;
}
}
</style>