新增白坯检验

master
FCD 1 month ago
parent d3eb6225f4
commit 31211a94d7

@ -695,6 +695,14 @@
"navigationStyle": "custom",
"navigationBarTextStyle": "white"
}
},
{
"path": "pages/quality/BpCheck/index",
"style": {
"navigationBarTitleText": "白坯检验",
"navigationStyle": "custom",
"navigationBarTextStyle": "white"
}
}

@ -0,0 +1,281 @@
<template>
<view class="page-product-receipt">
<page-head title="白坯检验" />
<u-form id="form" class="page-form" ref="form" label-width="180rpx">
<u-form-item required label="日期">
<u-input @click="showCalendar = true" placeholder="请选择日期" v-model="form.checkDate" :clearable="true" readonly :disabled="true" />
<u-icon name="close-circle-fill" @click="clearDate" color="rgb(96, 98, 102)" size="28"></u-icon>
</u-form-item>
<u-form-item required label="物料清单">
<u-input @click="clickShowList" v-model="form.materialName" placeholder="请选择物料清单" :show-action="false" readonly :disabled="true"></u-input>
<u-icon name="close-circle-fill" @click="clearMaterial" color="rgb(96, 98, 102)" size="28"></u-icon>
</u-form-item>
<u-form-item required label="检查数量">
<u-input placeholder="请输入检查数量PC" v-model="form.checkNum" :show-action="false"></u-input>
</u-form-item>
<u-form-item required label="是否合格">
<jPicker sureColor="#ff0000" moren="请选择是否合格" @bindpicker="selectIsQualified" showKey="key" valKey="value" :val="form.isQualified" :options="optionResults" />
</u-form-item>
<u-form-item label="不良数量">
<u-input placeholder="请输入不良数量PC" v-model="form.badNum" :show-action="false"></u-input>
</u-form-item>
<u-form-item label="不良选项">
<jPicker sureColor="#ff0000" moren="请选择不良选项" @bindpicker="selectBadItem" showKey="className" valKey="id" :val="form.badItem" :options="optionDefects" />
</u-form-item>
<u-form-item label="不合格原因">
<u-input placeholder="请填写不合格原因" v-model="form.remark" :show-action="false"></u-input>
</u-form-item>
</u-form>
<view id="button" class="bottom-bar">
<u-button type="primary" @click="submit" >提交</u-button>
</view>
<u-calendar v-model="showCalendar" :mode="'date'" @change="changeDate"></u-calendar>
<u-popup id="popup" v-model="showList" mode="center" width="90%" height="60%">
<scroll-view id="list" scroll-y="true" :style="{ height: listHeight + 'px' }" :lower-threshold="50">
<u-form class="list">
<view v-if="list.length > 0">
<view class="list-item" v-for="(item, index) in list" :key="index" @click="clickItem(index)" >
<lj-list-row label="物料编号:" :value="item.materialCode" />
<lj-list-row label="白坯名称:" :value="item.materialName" />
</view>
</view>
<view v-else> </view>
</u-form>
</scroll-view>
</u-popup>
</view>
</template>
<script lang="ts">
import PageHead from "@/components/lanju/page-head/index.vue";
import LjListRow from "@/components/lanju/lj-list-row/index.vue";
import JPicker from "@/components/J-Picker/jPicker.vue";
import {getCheckBpList, getQcDefectTypeClassList, submitCheckResult} from "@/pages/quality/BpCheck/model";
import {BasePage} from "@/components/base/page";
import {Component} from "vue-property-decorator";
import {removeLeadingZeros} from "@/utils/tool";
import {session} from "@/store/modules/session";
@Component({
methods: { removeLeadingZeros },
components: {
JPicker,
LjListRow,
PageHead
},
})
export default class checkBp extends BasePage {
userinfo: any = uni.getStorageSync('userinfo');
form = {
checkDate:undefined,
materialCode:undefined,
materialName:undefined,
checkNum:undefined,
badNum:undefined,
isQualified:undefined,
badItem:undefined,
remark:undefined,
createBy: this.userinfo.userName,
createUserName: this.userinfo.nickName,
factoryCode: session.FactoryCode,
}
resetForm = {
checkDate:undefined,
materialCode:undefined,
materialName:undefined,
checkNum:undefined,
badNum:undefined,
isQualified:undefined,
badItem:undefined,
remark:undefined,
createBy: this.userinfo.userName,
createUserName: this.userinfo.nickName,
factoryCode: session.FactoryCode,
}
showCalendar = false
showList = false
listHeight = 500
list = []
optionResults =[
{ key:"合格", value: "Y" },
{ key:"不合格", value: "N" },
]
optionDefects = []
rules = {
checkDate:"请选择日期",
materialCode:"请选择物料",
checkNum:"请填写检查数量",
isQualified:"请选择是否合格"
}
unqualifiedRules = {
badNum:"请填写不良数量",
badItem:"请选择不良项"
}
onReady() {
getQcDefectTypeClassList(
{defectCode:"20240822001"}
).then(res=>{
if (res){
for (const item of res.rows){
if (item.remark === "白坯专用"){
this.optionDefects.push(item)
}
}
}
})
}
clickItem(e){
this.form.materialCode = this.list[e].materialCode
this.form.materialName = this.list[e].materialName
setTimeout(()=>{
this.showList = false
},200)
}
changeDate(e){
this.form.checkDate = e.result;
this.clearMaterial()
getCheckBpList(this.form).then(res=>{
this.list = res
})
}
clearDate(){
this.form.checkDate = ""
this.clearMaterial()
}
clearMaterial(){
this.form.materialCode = ""
this.form.materialName = ""
}
clickShowList(){
if (!this.form.checkDate){
uni.showToast({
title: '请选择日期',
icon: 'none',
});
return;
}
this.showList = true
}
submit(){
console.log(this.form)
for (const key in this.form){
if (!this.form[key] && this.rules[key]){
uni.showToast({
title: this.rules[key],
icon: 'none',
});
return;
}
}
//
if (this.form.isQualified === "N"){
for (const key in this.form){
if (!this.form[key] && this.unqualifiedRules[key]){
uni.showToast({
title: this.unqualifiedRules[key],
icon: 'none',
});
return;
}
}
}
submitCheckResult(this.form).then(res=>{
if (res.code === 200){
uni.showToast({
title: "提交成功",
icon: 'success',
mask: true,
duration: 1000
});
setTimeout(() => {
this.form = this.resetForm;
}, 1000);
}
})
}
selectIsQualified(res : any){
this.form.isQualified = res.pickerName.value
if (this.form.isQualified === "Y"){
this.form.badNum = 0
}else {
this.form.badNum = undefined
}
}
selectBadItem(res : any){
this.form.badItem = res.pickerName.id
}
}
</script>
<style scoped lang="scss">
.list {
background-color: #fff;
margin-top: 20rpx;
padding: 20rpx 20rpx 25rpx;
border-radius: 10rpx;
color: #8d8989;
.list-item {
padding: 20rpx;
margin-bottom: 10rpx;
}
/* 奇数行背景色 */
.list-item:nth-child(odd) {
background-color: #ffffff;
}
/* 偶数行背景色 */
.list-item:nth-child(even) {
background-color: #f5f5f5;
}
.list-item:hover{
box-shadow: 0 0 0 3px #0c7bf3;
}
}
::v-deep .list-item {
width: 100% !important;
}
</style>

@ -0,0 +1,18 @@
import http from '@/utils/request';
import { url } from '@/utils/url';
export function getCheckBpList(data: any): Promise<any> {
return http.get(url.lanjuquality.checkBp.getCheckBpList, {
params: data,
});
}
export function getQcDefectTypeClassList(data: any): Promise<any> {
return http.get(url.lanjuquality.checkBp.getQcDefectTypeClassList, {
params: data,
});
}
export function submitCheckResult(data: any): Promise<any> {
return http.post(url.lanjuquality.checkBp.submitCheckResult, data);
}

@ -4,4 +4,30 @@
background-size: 100% 600rpx;
padding: 118rpx 30rpx 162rpx;
min-height: 100%;
}
}
//
.page-form {
background-color: #fff;
margin-top: 10px;
padding: 30rpx;
border-radius: 10rpx;
box-shadow: 0 0 20rpx 0 rgba(128, 128, 128, 0.2);
.u-form-item {
line-height: 35rpx;
}
}
//
.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;
}

@ -388,5 +388,10 @@ export const url = {
getQcWaitCheckSampleTaskList: qianzhuione + '/quality/qc-check-sample-task/wait-list',
updateQcCheckSampleTask: qianzhuione + '/quality/qc-check-sample-task',
},
checkBp: {
getCheckBpList: qianzhuione + '/quality/checkBp/checkBpList',
getQcDefectTypeClassList: qianzhuione + '/quality/defectClass/list',
submitCheckResult: qianzhuione + '/quality/checkBp/submitCheckResult',
}
},
};

Loading…
Cancel
Save