<template>
|
<div class="inspection">
|
<div class="inspection_list">
|
<div class="inspection_list_item">
|
<span>检验类型</span>
|
<!-- <div class="right">
|
<div class="right_item" :class="{ 'active': item.active }" v-for="(item, index) in status" :key="index" @click="changeItem(index, item.id)">{{item.name}}</div>
|
</div> -->
|
<div class="right">
|
<div class="right_item active">巡线</div>
|
<!-- <div class="right_item active" v-if="form.status == '1'">巡检</div>
|
<div class="right_item active" v-if="form.status == '2'">完工检</div> -->
|
</div>
|
</div>
|
</div>
|
<div class="x"></div>
|
<div class="inspection_list">
|
<div class="inspection_list_item" @click="jumpGD">
|
<span>检验工单</span>
|
<div class="right1">
|
<span :style="form.gdmc ? 'color: #000;' : ''">{{ form.gdmc ? form.gdmc : '点击选择检验工单'}}</span>
|
<van-icon name="arrow" color="#999999" size="18" />
|
</div>
|
</div>
|
<div class="inspection_list_item" v-if="form.gdmc">
|
<span>计划数量</span>
|
<div class="right1">
|
<span style="color: black;">{{data.info.planNum}}{{data.info.umodel ? data.info.umodel.name : ''}}</span>
|
</div>
|
</div>
|
<!-- <div class="inspection_list_item" @click="openGZ">
|
<span>检验工装</span>
|
<div class="right1">
|
<span :style="form.jygzmc ? 'color: #000' : ''">{{ form.jygzmc ? form.jygzmc : '点击选择检验工装'}}</span>
|
<van-icon name="arrow" color="#999999" size="18" />
|
</div>
|
</div> -->
|
</div>
|
<div class="x"></div>
|
<div class="inspection_list">
|
<div class="inspection_list_item">
|
<span>良品数</span>
|
<div class="right1">
|
<input type="number" v-model="form.hgsl" placeholder="0" />
|
<span class="dw" v-if="data.info.umodel">{{data.info.umodel.name}}</span>
|
</div>
|
</div>
|
<div class="inspection_list_item">
|
<span>不良数量</span>
|
<div class="right1">
|
<input type="number" v-model="form.blsl" placeholder="0" />
|
<span class="dw" v-if="data.info.umodel">{{data.info.umodel.name}}</span>
|
</div>
|
</div>
|
<!-- <div class="inspection_list_item" @click="openBLGZ" v-show="form.blsl > 0">
|
<span>不良工装</span>
|
<div class="right1">
|
<span :style="form.blgzmc ? 'color: #000;' : ''">{{ form.blgzmc ? form.blgzmc : '点击选择工装'}}</span>
|
<van-icon name="arrow" color="#999999" size="18" />
|
</div>
|
</div> -->
|
<div class="inspection_list_item" @click="openBL" v-show="form.blsl > 0">
|
<span>不良说明</span>
|
<div class="right1">
|
<span :style="form.blsm ? 'color: #000;' : ''">{{ form.blsm ? form.blsm : '点击选择不良原因'}}</span>
|
<van-icon name="arrow" color="#999999" size="18" />
|
</div>
|
</div>
|
</div>
|
<div class="inspection_footer">
|
<button class="inspection_footer_sub" @click="submit" v-preventReClick>提交</button>
|
</div>
|
<!-- 不良说明 -->
|
<van-popup v-model:show="data.show1" position="bottom" round :style="{ height: '50%' }">
|
<van-picker
|
title="请选择不良说明"
|
:columns="data.columns1"
|
@confirm="onConfirm1"
|
@cancel="onCancel1"
|
/>
|
</van-popup>
|
<!-- 工装 -->
|
<Tooling :show="gzShow1" :classification="true" :statusname="'1,2,3'" :attribute="Attribute.HG" @close="close1" @value="getValue1" />
|
<!-- 不良工装 -->
|
<Tooling :show="gzShow" :attribute="Attribute.BF + ',' + Attribute.BL" @close="close" @value="getValue" />
|
</div>
|
</template>
|
|
<script setup lang="ts">
|
import { ref, reactive, onMounted, onActivated } from 'vue'
|
import { useRouter } from "vue-router"
|
import { Toast } from 'vant'
|
import { REGULAR } from '@/utils/utils'
|
import { Attribute } from '@/enum'
|
import { createStandard } from '@/apis/QualityAPI'
|
import { checkAllList, getListByCondition, toolingQueryById } from "@/apis/WorkOrderAPI"
|
import Tooling from '@/components/common/Tooling.vue'
|
|
const router = useRouter()
|
|
let gzShow = ref<boolean>(false)
|
|
let gzShow1 = ref<boolean>(false)
|
|
let data = reactive<any>({
|
info: {},
|
show1: false,
|
columns: [],
|
columns1: []
|
})
|
|
let form = reactive({
|
status: '0',
|
gdid: '',
|
gdmc: '',
|
jygz: '',
|
jygzmc: '',
|
hgsl: 0,
|
blsl: 0,
|
blgz: '',
|
blgzmc: '',
|
blsm: '',
|
dw: ''
|
})
|
|
let status = ref<Array<object>>([
|
{ id: '0', name: '巡线', active: true },
|
{ id: '1', name: '巡检', active: false },
|
{ id: '2', name: '完工检', active: false }
|
])
|
|
// 关闭不良工装
|
const close = () => {
|
gzShow.value = false
|
}
|
|
// 关闭工装
|
const close1 = () => {
|
gzShow1.value = false
|
}
|
|
// 获取不良工装数据
|
const getValue = (item: any) => {
|
form.blgzmc = item.code
|
form.blgz = item.id
|
gzShow.value = false
|
}
|
|
// 获取工装数据
|
const getValue1 = (item: any) => {
|
form.dw = item.umodelData
|
form.jygz = item.id
|
form.jygzmc = item.code
|
gzShow1.value = false
|
}
|
|
// 打开检验工装
|
const openGZ = () => {
|
gzShow1.value = true
|
}
|
|
// 去选择设备
|
const jumpGD = () => {
|
router.push({ name: 'selectWorkOrder' })
|
}
|
|
const openBL = () => {
|
data.show1 = true
|
}
|
|
const openBLGZ = () => {
|
gzShow.value = true
|
}
|
|
const onConfirm1 = (value: any): void => {
|
form.blsm = value.text
|
data.show1 = false
|
}
|
|
const onCancel1 = () => {
|
data.show1 = false
|
}
|
|
// 切换状态
|
const changeItem = (i: number, id: string): void => {
|
status.value.forEach((item: any, index: number) => {
|
item.active = i === index;
|
})
|
form.status = id
|
}
|
|
// 提交
|
const submit = () => {
|
if (!form.gdid) return Toast.fail({ message: '工单不能为空' })
|
// if (!form.jygz) return Toast.fail({ message: '检验工装不能为空' })
|
if (form.hgsl || form.blsl) {
|
if (form.hgsl) {
|
if (form.dw == '0') { // 整数
|
if (!REGULAR.positiveInteger.test(form.hgsl as never)) return Toast.fail({ message: '良品数量只能为正整数' })
|
} else if (form.dw == '1') { // 小数
|
if (!REGULAR.number.test(form.hgsl as never)) {
|
return Toast.fail({ message: '良品数量只能为正整数或四位小数' })
|
}
|
}
|
}
|
if (form.blsl) {
|
if (form.dw == '0') { // 整数
|
if (!REGULAR.positiveInteger.test(form.blsl as never)) return Toast.fail({ message: '不良数量只能为正整数' })
|
} else if (form.dw == '1') { // 小数
|
if (!REGULAR.number.test(form.blsl as never)) {
|
return Toast.fail({ message: '不良数量只能为正整数或四位小数' })
|
}
|
}
|
}
|
} else {
|
return Toast.fail({ message: '良品和不良不能同时为空' })
|
}
|
let total = (form.hgsl ? form.hgsl : 0) + (form.blsl ? form.blsl : 0)
|
if (total > data.info.planNum) {
|
return Toast.fail({ message: '合格不良相加不能超过计划数量' })
|
}
|
if (Number(form.blsl) > 0) {
|
// if (!form.blgz) return Toast.fail({ message: '不良工装不能为空' })
|
if (!form.blsm) return Toast.fail({ message: '不良说明不能为空' })
|
}
|
createStandard({
|
workorderId: form.gdid,
|
// appliancesId: form.jygz,
|
qualifiedNum: form.hgsl ? form.hgsl : 0,
|
unqualifiedNum: form.blsl ? form.blsl : 0,
|
// qualifiedApplianceId: form.blgz,
|
checkInfo: form.blsm,
|
checkType: form.status
|
}).then(res => {
|
if (res.code === 200) {
|
Toast.success({ message: '检验成功!', duration: 2000, forbidClick: true })
|
setTimeout(() => {
|
router.go(-1)
|
}, 2000)
|
}
|
})
|
}
|
|
// 不良原因数据
|
const checkAllLists = () => {
|
checkAllList({ bmodelCateType: '3' })
|
.then(res => {
|
if (res.code === 200) {
|
res.data.forEach((item: any) => {
|
data.columns1.push({ text: item.combinationName, id: item.id })
|
})
|
}
|
})
|
}
|
|
// 查询不良/报废工装
|
const getListByConditions1 = () => {
|
data.columns2 = []
|
getListByCondition({
|
smodelLabel: 'APPLIANCE_OFFTEST,APPLIANCE_USELESS'
|
}).then(res => {
|
if (res.code === 200) {
|
res.data.forEach((item: any) => {
|
data.columns2.push({ text: '[' + item.smodelCode + '] ' + item.code, id: item.id })
|
})
|
}
|
})
|
}
|
|
// 获取所有工装
|
const toolingQueryByIds = () => {
|
data.columns3 = []
|
toolingQueryById({})
|
.then(res => {
|
if (res.code === 200) {
|
res.data.forEach((item: any) => {
|
data.columns3.push({ text: item.code, id: item.id })
|
})
|
}
|
})
|
}
|
|
onMounted(() => {
|
checkAllLists()
|
// /productionInspection/manualInspection
|
// getListByConditions1()
|
// toolingQueryByIds()
|
})
|
|
onActivated(() => {
|
let res: any = localStorage.getItem('workOder')
|
if (res) {
|
form.gdmc = JSON.parse(res).mmodel.name + '-' + JSON.parse(res).pgmodel.name
|
form.gdid = JSON.parse(res).id
|
data.info = JSON.parse(res)
|
localStorage.removeItem('workOder')
|
}
|
})
|
</script>
|
|
<style lang="scss" scoped>
|
.inspection {
|
width: 100%;
|
height: 100%;
|
position: absolute;
|
background: #F7F7F7;
|
.x {
|
height: 20px;
|
}
|
.inspection_list {
|
padding: 0 30px;
|
background: white;
|
.inspection_list_item {
|
height: 98px;
|
display: flex;
|
align-items: center;
|
justify-content: space-between;
|
border-bottom: 1PX solid #E5E5E5;
|
&:last-child {
|
border: none;
|
}
|
span {
|
font-size: 30px;
|
font-weight: 400;
|
color: #222222;
|
}
|
.right1 {
|
display: flex;
|
align-items: center;
|
span {
|
font-size: 28px;
|
font-weight: 400;
|
color: #999999;
|
margin-right: 10px;
|
}
|
input {
|
width: 180px;
|
height: 60px;
|
border-radius: 8px;
|
border: 1PX solid #CCCCCC;
|
margin-right: 10px;
|
padding: 0 30px;
|
box-sizing: border-box;
|
font-size: 28px;
|
}
|
input::-webkit-input-placeholder {
|
font-size: 28px;
|
font-weight: 400;
|
color: #999999;
|
}
|
.dw {
|
font-size: 28px;
|
font-weight: 400;
|
color: #666666;
|
}
|
}
|
.right {
|
display: flex;
|
align-items: center;
|
.active {
|
background: $nav-color !important;
|
color: #ffffff !important;
|
}
|
.right_item {
|
padding: 18px 32px;
|
background: #F2F2F2;
|
border-radius: 8px;
|
font-size: 26px;
|
font-weight: 400;
|
color: #333333;
|
display: flex;
|
align-items: center;
|
justify-content: center;
|
margin-left: 20px;
|
}
|
}
|
}
|
}
|
.inspection_footer {
|
position: fixed;
|
bottom: 0;
|
left: 0;
|
width: calc(100% - 60px);
|
padding: 30px 30px 68px 30px;
|
background: #F7F7F7;
|
.inspection_footer_sub {
|
width: 100%;
|
height: 88px;
|
background: #4275FC;
|
box-shadow: 0 0 12px 0 rgba(0,0,0,0.0800);
|
border-radius: 8px;
|
font-size: 30px;
|
font-weight: 500;
|
color: #FFFFFF;
|
display: flex;
|
align-items: center;
|
justify-content: center;
|
border: none;
|
}
|
}
|
}
|
</style>
|