| | |
| | | </div> |
| | | <van-swipe-cell v-for="(item, index) in list" :key="index"> |
| | | <div class="rework_qd_list"> |
| | | <div class="rework_qd_item" @click="openL(index)"> |
| | | <div class="rework_qd_item" @click="openL(index)" v-if="location"> |
| | | <span><b>*</b>入库货位</span> |
| | | <div class="rework_qd_item_right"> |
| | | <span :class="item.locationName ? 'black' : ''">{{item.locationName ? item.locationName : '请选择'}}</span> |
| | |
| | | <van-icon name="arrow" size="20" color="#999999" /> |
| | | </div> |
| | | </div> |
| | | <!-- <div class="rework_qd_item" v-if="form.type != 25"> |
| | | <span>生产工序</span> |
| | | <div class="rework_qd_item_right"> |
| | | <span :class="item.procedureName ? 'black' : ''">{{item.procedureName ? item.procedureName : '请选择'}}</span> |
| | | <van-icon name="arrow" size="20" color="#999999" /> |
| | | <template v-if="form.type !== 25"> |
| | | <div class="rework_qd_item" v-if="item.hasBom !== 0" @click="openGX(index)"> |
| | | <span>生产工序</span> |
| | | <div class="rework_qd_item_right"> |
| | | <span :class="item.procedureName ? 'black' : ''">{{item.procedureName ? item.procedureName : '请选择'}}</span> |
| | | <van-icon name="arrow" size="20" color="#999999" /> |
| | | </div> |
| | | </div> |
| | | </div> --> |
| | | </template> |
| | | <div class="rework_qd_item" @click="openQ(index)"> |
| | | <span><b>*</b>质量属性</span> |
| | | <div class="rework_qd_item_right"> |
| | |
| | | <Quality :show="qualityShow" @close="close2" @value="getValue2" /> |
| | | <!-- 选择货位 --> |
| | | <Location :show="locationShow" :list="locationList" @close="close3" @value="getValue3" /> |
| | | <!-- 工序 --> |
| | | <ProductionProcess :show="productionShow" :list="productionList" @close="close4" @value="getValue4" /> |
| | | <!-- 单据类型 --> |
| | | <van-popup v-model:show="typeShow" position="bottom" :style="{ height: '50%' }"> |
| | | <van-popup v-model:show="typeShow" round position="bottom" :style="{ height: '50%' }"> |
| | | <van-picker |
| | | :columns="columns" |
| | | @confirm="onConfirm1" |
| | |
| | | import { onMounted, ref, reactive } from 'vue' |
| | | import { useRouter } from 'vue-router' |
| | | import { Toast } from 'vant' |
| | | import { createForStandard, getListByWarehouseId, wOutBoundForStockUp } from '@/apis/WorkOrderAPI' |
| | | import { getListByWarehouseId, wOutBoundForStockUp } from '@/apis/WorkOrderAPI' |
| | | import { getListByMaterialId } from '@/apis/ExWarehouse' |
| | | import Warehouse from '@/components/common/Warehouse.vue' |
| | | import Material from '@/components/newCom/Material.vue' |
| | | import Quality from '@/components/newCom/quality.vue' |
| | | import Location from '@/components/newCom/location.vue' |
| | | import ProductionProcess from '@/components/newCom/productionProcess.vue' |
| | | |
| | | const router = useRouter() |
| | | // 表单数据 |
| | |
| | | }) |
| | | |
| | | let locationList: any = ref([]) |
| | | let location: any = ref(true) |
| | | let productionList: any = ref([]) |
| | | |
| | | let i = ref(0) |
| | | |
| | |
| | | { |
| | | batch: '', |
| | | locationId: '', |
| | | locationIdLabel: '', |
| | | locationName: '', |
| | | materialId: '', |
| | | materialName: '', |
| | | num: '', |
| | | hasBom: '', |
| | | procedureId: '', |
| | | procedureName: '', |
| | | qualityType: '', |
| | |
| | | let qualityShow = ref<boolean>(false) |
| | | let locationShow = ref<boolean>(false) |
| | | let typeShow = ref<boolean>(false) |
| | | let productionShow = ref<boolean>(false) |
| | | |
| | | // 打开选择物料 |
| | | const openMaterial = (index: number) => { |
| | |
| | | } |
| | | // 打开选择物料 |
| | | const openQ = (index: number) => { |
| | | if (list.value[index].locationIdLabel == 'APPLIANCE_ONTEST' || list.value[index].locationIdLabel == 'APPLIANCE_OFFTEST' || list.value[index].locationIdLabel == 'APPLIANCE_USELESS') { |
| | | return |
| | | } |
| | | i.value = index |
| | | qualityShow.value = true |
| | | } |
| | | // 打开工序 |
| | | const openGX = (index: number) => { |
| | | if (!list.value[index].materialId) return Toast('请先选择入库物料') |
| | | i.value = index |
| | | productionShow.value = true |
| | | } |
| | | // 打开选择货位 |
| | | const openL = (index: number) => { |
| | |
| | | locationShow.value = true |
| | | } |
| | | const addItem = () => { |
| | | // if (!form.warehouseId) return Toast('请选择入库仓库') |
| | | if (!form.warehouseId) return Toast('请选择入库仓库') |
| | | list.value.push({ |
| | | batch: '', |
| | | locationId: '', |
| | | locationName: '', |
| | | locationId: list.value[list.value.length - 1].locationId, |
| | | locationName: list.value[list.value.length - 1].locationName, |
| | | locationIdLabel: list.value[list.value.length - 1].locationIdLabel, |
| | | materialId: '', |
| | | materialName: '', |
| | | num: '', |
| | | hasBom: '', |
| | | procedureId: '', |
| | | procedureName: '', |
| | | qualityType: '', |
| | | qualityTypeName: '', |
| | | qualityType: list.value[list.value.length - 1].qualityType, |
| | | qualityTypeName: list.value[list.value.length - 1].qualityTypeName, |
| | | unitId: '', |
| | | unitName: '' |
| | | }) |
| | |
| | | const onConfirm1 = (value: any) => { |
| | | form.typeName = value.name |
| | | form.type = value.id |
| | | if (value.id == 25) { |
| | | list.value.forEach(item => { |
| | | item.procedureId = '' |
| | | item.procedureName = '' |
| | | }) |
| | | } |
| | | typeShow.value = false |
| | | }; |
| | | const onCancel = () => { |
| | |
| | | if (!list.value[i].locationId) return Toast(`第${i+1}项入库货位不能为空`) |
| | | if (!list.value[i].materialId) return Toast(`第${i+1}项入库物料不能为空`) |
| | | if (!list.value[i].qualityType) return Toast(`第${i+1}项质量属性不能为空`) |
| | | if (!list.value[i].num || list.value[i].num == '' || list.value[i].num == 0) { |
| | | if (list.value[i].num <= 0) { |
| | | return Toast(`第${i + 1}项入库数量必须大于0`) |
| | | } |
| | | } |
| | |
| | | // 删除 |
| | | const dele = (index: any) => { |
| | | if (list.value.length === 1) { |
| | | Toast('至少保留一条工装信息') |
| | | // Toast('至少保留一条工装信息') |
| | | Toast('至少保留一条物流清单信息') |
| | | return |
| | | } |
| | | list.value.splice(index, 1) |
| | |
| | | const close3 = (): void => { |
| | | locationShow.value = false |
| | | } |
| | | // 关闭货位选择弹框 |
| | | const close4 = (): void => { |
| | | productionShow.value = false |
| | | } |
| | | // 选择仓库回调 |
| | | const getValue = (item: any): void => { |
| | | form.warehouseName = item.name |
| | |
| | | .then(res => { |
| | | if (res.code === 200) { |
| | | locationList.value = res.data |
| | | list.value.forEach(item => { |
| | | item.locationId = '' |
| | | item.locationName = '' |
| | | }) |
| | | if (res.data.length === 1) { |
| | | location.value = false |
| | | list.value.forEach(item => { |
| | | item.locationId = res.data[0].id |
| | | item.locationName = res.data[0].unionName |
| | | }) |
| | | list.value[i.value].locationIdLabel = res.data[0].label |
| | | if (res.data[0].label === 'APPLIANCE_ONTEST') { |
| | | list.value[i.value].qualityType = '0' |
| | | list.value[i.value].qualityTypeName = '合格' |
| | | } else if (res.data[0].label === 'APPLIANCE_OFFTEST') { |
| | | list.value[i.value].qualityType = '1' |
| | | list.value[i.value].qualityTypeName = '不良' |
| | | } else if (res.data[0].label === 'APPLIANCE_USELESS') { |
| | | list.value[i.value].qualityType = '2' |
| | | list.value[i.value].qualityTypeName = '报废' |
| | | } |
| | | } else { |
| | | location.value = true |
| | | list.value.forEach(item => { |
| | | item.locationId = res.data[0].id |
| | | item.locationName = res.data[0].unionName |
| | | }) |
| | | // list.value.forEach(item => { |
| | | // item.locationId = '' |
| | | // item.locationName = '' |
| | | // }) |
| | | } |
| | | } |
| | | }) |
| | | warehouseShow.value = false |
| | | } |
| | | // 选择物料 |
| | | const getValue1 = (item: any): void => { |
| | | console.log(item) |
| | | list.value[i.value].materialName = item.mmodelUnionName |
| | | list.value[i.value].materialId = item.id |
| | | list.value[i.value].unitId = item.unitId |
| | | list.value[i.value].hasBom = item.hasBom |
| | | list.value[i.value].unitName = item.umodelName |
| | | // 获取物料下工序 |
| | | getListByMaterialId({ |
| | | materialId: item.id |
| | | }).then(res => { |
| | | if (res.code === 200) { |
| | | productionList.value = res.data |
| | | list.value[i.value].procedureId = '' |
| | | list.value[i.value].procedureName = '' |
| | | } |
| | | }) |
| | | materialsShow.value = false |
| | | } |
| | | // 选择质量属性 |
| | |
| | | const getValue3 = (item: any): void => { |
| | | list.value[i.value].locationId = item.id |
| | | list.value[i.value].locationName = item.unionName |
| | | list.value[i.value].qualityType = '' |
| | | list.value[i.value].qualityTypeName = '' |
| | | list.value[i.value].locationIdLabel = item.label |
| | | if (item.label === 'APPLIANCE_ONTEST') { |
| | | list.value[i.value].qualityType = '0' |
| | | list.value[i.value].qualityTypeName = '合格' |
| | | } else if (item.label === 'APPLIANCE_OFFTEST') { |
| | | list.value[i.value].qualityType = '1' |
| | | list.value[i.value].qualityTypeName = '不良' |
| | | } else if (item.label === 'APPLIANCE_USELESS') { |
| | | list.value[i.value].qualityType = '2' |
| | | list.value[i.value].qualityTypeName = '报废' |
| | | } |
| | | locationShow.value = false |
| | | } |
| | | // 选择工序 |
| | | const getValue4 = (item: any): void => { |
| | | list.value[i.value].procedureId = item.id |
| | | list.value[i.value].procedureName = item.name |
| | | productionShow.value = false |
| | | } |
| | | onMounted(() => { |
| | | // 获取工装信息 |
| | | // getLKInfo(route.query.id as string) |