| <template> | 
|     <div class="rework"> | 
|         <div class="rework_list"> | 
|             <div class="rework_list_item"> | 
|                 <span>当前工厂</span> | 
|                 <div class="rework_list_item_right"> | 
|                     <span style="color:#000">{{ tempFactoryName }}</span> | 
|                 </div> | 
|             </div> | 
|             <div class="rework_list_item"> | 
|                 <span>出库仓库</span> | 
|                 <div class="rework_list_item_right"> | 
|                     <span style="color:#000">{{ tempWarhouseName }}</span> | 
|                 </div> | 
|             </div> | 
|             <div class="rework_list_item" @click="warehouseShow = true"> | 
|                 <span>入库仓库</span> | 
|                 <div class="rework_list_item_right"> | 
|                     <span :class="form.warehouseName ? 'black' : ''">{{form.warehouseName ? form.warehouseName : '请点击选择类型'}}</span> | 
|                     <van-icon name="arrow" size="20" color="#999999" /> | 
|                 </div> | 
|             </div> | 
|             <div class="rework_list_item"> | 
|                 <span>报废原因</span> | 
|                 <div class="rework_list_item_right"> | 
|                     <input type="text" style="text-align:right" v-model="form.reason" placeholder="请输入报废原因" /> | 
|                 </div> | 
|             </div> | 
|         </div> | 
|         <div class="rework_qd"> | 
|             <div class="rework_qd_title"> | 
|                 <div class="x"></div> | 
|                 <span>{{'报废工装清单(' + list.length + ')'}}</span> | 
|             </div> | 
|             <van-swipe-cell v-for="(item, index) in list" :key="index"> | 
|                 <div class="rework_qd_item"> | 
|                     <div class="rework_qd_item_i"> | 
|                         <span class="black">{{ item.code }}:</span><span class="black">{{ item.num + item.umodelName }}</span> | 
|                     </div> | 
|                     <div class="rework_qd_item_i"> | 
|                         <span>物料信息:</span><span>{{ item.mmodelName + ' | ' + item.mmodelCode }}</span> | 
|                     </div> | 
|                     <div class="rework_qd_item_i"> | 
|                         <span>批次号:</span><span>{{ item.batch ?? '-' }}</span> | 
|                     </div> | 
|                     <div class="rework_qd_item_i"> | 
|                       <span>生产工序:</span><span>{{ item.pmodelName }}</span> | 
|                     </div> | 
|                 </div> | 
|                 <template #right> | 
|                     <van-button style="height: 100%;" square type="danger" text="删除" @click="dele(index)" /> | 
|                 </template> | 
|             </van-swipe-cell> | 
|         </div> | 
|         <div class="rework_zw"></div> | 
|         <div class="rework_footer"> | 
|             <div class="rework_footer_add" @click="open">扫码添加工装</div> | 
|             <div style="width: 22px;"></div> | 
|             <button class="rework_footer_submit" @click="onConfirm">提交</button> | 
|         </div> | 
|         <v-ScanCode | 
|             :openCode="openCode" | 
|             :infos="['请扫描工装码']" | 
|             @closePopup="closePopup" | 
|             @onDecode="onDecode"> | 
|         </v-ScanCode> | 
|       <Warehouse :show="warehouseShow" :systemDicDataId="'6,7'" @close="close" @value="getValue" /> | 
|     </div> | 
| </template> | 
|   | 
| <script setup lang="ts"> | 
|   import { onMounted, ref, reactive } from 'vue' | 
|   import { useRoute, useRouter } from "vue-router" | 
|   import { Toast } from 'vant' | 
|   import { getBarcodeContent, getListByCondition, createSingle } from '@/apis/WorkOrderAPI' | 
|   import { QRCodeType } from "@/enum" | 
|   import Warehouse from '@/components/common/Warehouse.vue' | 
|   | 
|   | 
|     const route = useRoute() | 
|     const router = useRouter() | 
|     // 表单数据 | 
|     let form = reactive({ | 
|         warehouseName: '', | 
|         warehouseId: '', | 
|         reason: '' | 
|     }) | 
|   | 
|     // 报废清单 | 
|     let list = ref<Array<any>>([]) | 
|     let warehouseShow = ref<boolean>(false) | 
|   | 
|     let tempFactoryName = ref<string>() | 
|     let tempFactoryId = ref<string>() | 
|     let tempWarhouseName= ref<string>() | 
|     let tempWarhouseId = ref<string>() | 
|   | 
|     let openCode = ref<boolean>(false) | 
|     // 提交 | 
|     const onConfirm = async (value: any) => { | 
|   | 
|          let res = await createSingle({ | 
|             type: 3, | 
|             factoryId: tempFactoryId.value, | 
|             tempFactoryName: tempFactoryName.value, | 
|             warehouseOutId: tempWarhouseId.value, | 
|             warehouseId: form.warehouseId, | 
|             content: form.reason, | 
|             applianceIdList: list.value.map((item, index, arr) => { return item.id }) | 
|         }) | 
|   | 
|         if (res.code === 200) { | 
|           Toast.success({ message: '申请成功,等待审批!', duration: 2000, forbidClick: true }) | 
|           setTimeout(() => { | 
|             router.back() | 
|           }, 2000) | 
|         } else { | 
|           Toast.fail({ message: res.message }) | 
|         } | 
|     } | 
|   | 
|     // 删除 | 
|     const dele = (index: any) => { | 
|       if (list.value.length === 1) { | 
|      //   Toast('至少保留一条工装信息') | 
|         Toast('至少保留一条物流清单信息') | 
|         return | 
|       } | 
|       list.value.splice(index, 1) | 
|     } | 
|     // 关闭扫码框 | 
|     const closePopup = (): void => { | 
|         openCode.value = false | 
|     } | 
|     // 扫码回调 | 
|     const onDecode = async (data: string[]): Promise<void> => { | 
|         console.log(data) | 
|         openCode.value = false | 
|         let res = await getBarcodeContent({ | 
|             barcode: data[0] | 
|         }) | 
|         if (res.code === 200) { | 
|             if (res.data.barcodeType === QRCodeType.GZ) { | 
|                 // 查看是否已有工装 | 
|                 for (let i = 0; i < list.value.length; i++) { | 
|                     if (list.value[i].id === res.data.id) { | 
|                         Toast.fail({ message: '不能扫描重复的工装' }) | 
|                         return | 
|                     } | 
|                 } | 
|                 // 获取工装详情 | 
|                 let lk = await getListByCondition({ id: res.data.id }) | 
|                 if (lk.code === 200) { | 
|                     if (lk.data[0].qualityType === 2) { | 
|                         console.log(tempFactoryId.value, lk.data[0].pmodelOrgId) | 
|                         console.log(tempWarhouseId.value, lk.data[0].warehouseId) | 
|                         if (tempFactoryId.value === lk.data[0].pmodelOrgId &&  tempWarhouseId.value === lk.data[0].warehouseId) { | 
|                           list.value.push(lk.data[0]) | 
|                         } else { | 
|                           Toast.fail({ message: '请扫描相同仓库的工装' }) | 
|                         } | 
|                     } else { | 
|                         Toast.fail({ message: '请扫描质量属性为报废的工装', duration: 2000 }) | 
|                     } | 
|                 } | 
|             } else { | 
|                 Toast.fail({ message: '请扫描正确的工装码' }) | 
|             } | 
|         } | 
|   | 
|     } | 
|     // 打开扫码 | 
|     const open = (): void => { | 
|         openCode.value = true | 
|     } | 
|     // 关闭仓库选择弹框 | 
|     const close = (): void => { | 
|       warehouseShow.value = false | 
|     } | 
|     // 选择仓库回调 | 
|     const getValue = (item: any): void => { | 
|       console.log(item) | 
|       form.warehouseName = item.name | 
|       form.warehouseId = item.id | 
|       warehouseShow.value = false | 
|     } | 
|   | 
|     const getLKInfo = async (id: string | number): Promise<void> => { | 
|         let res = await getListByCondition({ id }) | 
|         if (res.code === 200) { | 
|             if (res.data[0].qualityType === 2) { | 
|                 list.value.push(res.data[0]) | 
|                 tempFactoryName.value = res.data[0].dpmodelName | 
|                 tempFactoryId.value = res.data[0].pmodelOrgId | 
|                 tempWarhouseName.value = res.data[0].whmodelName | 
|                 tempWarhouseId.value = res.data[0].warehouseId | 
|             } else { | 
|                 Toast.fail({ message: '请扫描质量属性为报废的工装', duration: 2000 }) | 
|             } | 
|         } | 
|     } | 
|   onMounted(() => { | 
|     // 获取工装信息 | 
|     getLKInfo(route.query.id as string) | 
|   }) | 
| </script> | 
|   | 
| <style lang="scss" scoped> | 
|     .rework { | 
|         width: 100%; | 
|         height: 100%; | 
|         position: absolute; | 
|         .rework_list { | 
|             display: flex; | 
|             flex-direction: column; | 
|             background: white; | 
|             margin-top: 20px; | 
|             .rework_list_item { | 
|                 display: flex; | 
|                 align-items: center; | 
|                 justify-content: space-between; | 
|                 height: 98px; | 
|                 padding: 0 30px; | 
|                 border-bottom: 1PX solid #E5E5E5; | 
|                 &:last-child { | 
|                     border: none; | 
|                 } | 
|                 span { | 
|                     font-size: 30px; | 
|                     font-weight: 400; | 
|                     color: #222222; | 
|                     flex-shrink: 0; | 
|                 } | 
|                 .rework_list_item_right { | 
|                     display: flex; | 
|                     align-items: center; | 
|                     span { | 
|                         font-size: 28px; | 
|                         font-weight: 400; | 
|                         color: #999999; | 
|                     } | 
|                     .black { | 
|                         color: black !important; | 
|                     } | 
|                     input { | 
|                         width: 230px; | 
|                         font-size: 28px; | 
|                         border: none; | 
|                     } | 
|                     input::-webkit-input-placeholder { /* WebKit browsers */ | 
|                         font-size: 28px; | 
|                         font-weight: 400; | 
|                         color: #B2B2B2; | 
|                     } | 
|                 } | 
|             } | 
|         } | 
|         .rework_qd { | 
|             margin-top: 40px; | 
|             .rework_qd_title { | 
|                 display: flex; | 
|                 align-items: center; | 
|                 padding: 0 30px 30px 30px; | 
|                 span { | 
|                     font-size: 32px; | 
|                     font-weight: 500; | 
|                     color: #222222; | 
|                 } | 
|                 .x { | 
|                     width: 8px; | 
|                     height: 30px; | 
|                     background: #4275FC; | 
|                     border-radius: 2px; | 
|                     margin-right: 12px; | 
|                 } | 
|             } | 
|             .rework_qd_item { | 
|                 background: #ffffff; | 
|                 padding: 30px; | 
|                 display: flex; | 
|                 flex-direction: column; | 
|                 margin-bottom: 30px; | 
|                 &:last-child { | 
|                     margin-bottom: 0 !important; | 
|                 } | 
|                 .rework_qd_item_i { | 
|                     display: flex; | 
|                     align-items: center; | 
|                     margin-bottom: 30px; | 
|                     &:last-child { | 
|                         margin-bottom: 0!important; | 
|                     } | 
|                     .black { | 
|                         font-size: 30px!important; | 
|                         font-weight: 400!important; | 
|                         color: #222222!important; | 
|                     } | 
|                     span { | 
|                         &:first-child { | 
|                             font-size: 26px; | 
|                             font-weight: 400; | 
|                             color: #666666; | 
|                         } | 
|                         &:last-child { | 
|                             font-size: 26px; | 
|                             font-weight: 400; | 
|                             color: #333333; | 
|                         } | 
|                     } | 
|                 } | 
|             } | 
|         } | 
|         .rework_zw { | 
|             height: 168px; | 
|         } | 
|         .rework_footer { | 
|             width: calc(100% - 60px); | 
|             position: fixed; | 
|             bottom: 0; | 
|             display: flex; | 
|             align-items: center; | 
|             justify-content: space-between; | 
|             padding: 0 30px 68px 30px; | 
|             .rework_footer_add { | 
|                 flex: 1; | 
|                 height: 88px; | 
|                 font-size: 30px; | 
|                 font-weight: 500; | 
|                 color: $nav-color; | 
|                 background: #FFFFFF; | 
|                 box-shadow: 0 0 12px 0 rgba(0,0,0,0.0800); | 
|                 border-radius: 8px; | 
|                 display: flex; | 
|                 align-items: center; | 
|                 justify-content: center; | 
|             } | 
|             .rework_footer_submit { | 
|                 flex: 1; | 
|                 height: 88px; | 
|                 font-size: 30px; | 
|                 font-weight: 500; | 
|                 color: #ffffff; | 
|                 background: $nav-color; | 
|                 box-shadow: 0 0 12px 0 rgba(0,0,0,0.0800); | 
|                 border-radius: 8px; | 
|                 display: flex; | 
|                 align-items: center; | 
|                 justify-content: center; | 
|                 border: none; | 
|             } | 
|         } | 
|     } | 
| </style> |