| <template> | 
|     <div class="desc"> | 
|         <div class="desc_info"> | 
|             <div class="desc_info_title"> | 
|                 <span>{{ info.title }}</span> | 
|                 <span class="yellow" v-if="info.status === 0">待审核</span> | 
|                 <span class="green" v-else-if="info.status === 1">审批通过</span> | 
|                 <span class="red" v-else-if="info.status === 2">审批未通过</span> | 
|                 <span class="red" v-else-if="info.status === 3">审批终止</span> | 
|             </div> | 
|             <div class="desc_info_company">{{store.state.userInfo.rootDepartment.name}}</div> | 
|             <div class="desc_info_box"> | 
|                 <div class="desc_info_box_item"> | 
|                     <span>申请编号:</span> | 
|                     <span>{{ info.code }}</span> | 
|                 </div> | 
|                 <div class="desc_info_box_item"> | 
|                     <span>申请日期:</span> | 
|                     <span>{{ info.createTime }}</span> | 
|                 </div> | 
|                 <div class="desc_info_box_item"> | 
|                     <span>申请类型:</span> | 
|                     <span v-if="info.type === 0">不良返工</span> | 
|                     <span v-if="info.type === 1">客退</span> | 
|                     <span v-if="info.type === 2">客返</span> | 
|                     <span v-if="info.type === 3">报废申请</span> | 
|                 </div> | 
|                 <div class="desc_info_box_item"> | 
|                     <span>返修工序:</span> | 
|                     <span>{{ info.backProcedureName }}</span> | 
|                 </div> | 
|                 <div class="desc_info_box_item"> | 
|                     <span>不良原因:</span> | 
|                     <span>{{ info.content }}</span> | 
|                 </div> | 
|                 <div class="desc_info_box_item"> | 
|                     <span>申请人:</span> | 
|                     <span>{{ info.createUserName }} / {{ info.departmentName }}</span> | 
|                 </div> | 
|             </div> | 
|         </div> | 
|         <div class="desc_qd"> | 
|             <div class="desc_qd_header"> | 
|                 <div class="desc_qd_header_x"></div> | 
|                 <span>返工工装清单({{info.detailList ? info.detailList.length : '0'}})</span> | 
|             </div> | 
|             <template v-if="info && info.detailList && info.detailList.length > 0"> | 
|                 <div class="desc_qd_info" v-for="(item, index) in info.detailList" :key="index"> | 
|                     <div class="desc_qd_info_item"> | 
|                         <span class="black">工装信息:{{ item.applianceCode }} / </span> | 
|                         <span class="black">{{ item.num }}{{ item.unitName }}</span> | 
|                     </div> | 
|                     <div class="desc_qd_info_item"> | 
|                         <span>物料信息:</span> | 
|                         <span>{{ item.materialName }} | {{ item.materialCode }}</span> | 
|                     </div> | 
|                     <div class="desc_qd_info_item"> | 
|                         <span>批次号:</span> | 
|                         <span>{{ item.batch }}</span> | 
|                     </div> | 
|                     <div class="desc_qd_info_item"> | 
|                         <span>生产工序:</span> | 
|                         <span>{{ item.procedureName }}</span> | 
|                     </div> | 
|                 </div> | 
|             </template> | 
|             <div class="desc_qd_not" v-else>暂无工装</div> | 
|         </div> | 
|         <div class="desc_process"> | 
|             <div class="desc_process_title"> | 
|                 <div class="desc_process_title_x"></div> | 
|                 <span>流程</span> | 
|             </div> | 
|             <div class="desc_process_content" v-if="info.recordList && info.recordList.length > 0"> | 
|                 <div class="item" v-for="(item, index) in info.recordList" :key="index"> | 
|                     <div class="item_left"> | 
|                         <div class="item_x" v-if="info.recordList.length - 1 !== index"></div> | 
|                         <div class="item_left_img"> | 
|                             <p>{{item.userModel ? item.userModel.name.substr(0, 1) : '-'}}</p> | 
|                             <img src="../../assets/icon/ic_pass@2x.png" alt="" v-if="item.operationResult === 'AGREE'" /> | 
|                             <img src="../../assets/icon/ic_notpass@2x.png" alt="" v-else-if="item.operationResult === 'REFUSE'" /> | 
|                             <img src="../../assets/icon/ic_shenhe@2x.png" alt="" v-else-if="item.operationResult === 'NONE'" /> | 
|                         </div> | 
|                         <div class="item_left_text"> | 
|                             <span>{{index === 0 ? '发起申请' : '审批人'}}</span> | 
|                             <span>{{item.userModel ? item.userModel.name : '-'}}</span> | 
|                         </div> | 
|                     </div> | 
|                     <div class="item_right">{{item.date}}</div> | 
|                 </div> | 
|             </div> | 
|             <div class="notfound" v-else>暂无数据</div> | 
|         </div> | 
|     </div> | 
| </template> | 
|   | 
| <script setup lang="ts"> | 
|     import { getsqdInfo } from '@/apis/WorkOrderAPI' | 
|     import { useRoute } from "vue-router" | 
|     import { useStore } from "vuex" | 
|     import { ref, onMounted } from 'vue' | 
|   | 
|     const route = useRoute() | 
|   | 
|     const store = useStore() | 
|   | 
|     let info = ref<object>({}) | 
|   | 
|     const getsqdInfos = () => { | 
|         getsqdInfo(route.query.id) | 
|             .then(res => { | 
|                 if (res.code === 200) { | 
|                     info.value = res.data | 
|                 } | 
|             }) | 
|     } | 
|   | 
|     onMounted(() => { | 
|         getsqdInfos() | 
|     }) | 
| </script> | 
|   | 
| <style lang="scss" scoped> | 
| .desc { | 
|     position: absolute; | 
|     top: 0; | 
|     width: 100%; | 
|     height: 100%; | 
|     .desc_info { | 
|         padding: 30px; | 
|         background: #ffffff; | 
|         .desc_info_title { | 
|             display: flex; | 
|             align-items: center; | 
|             justify-content: space-between; | 
|             span { | 
|                 &:first-child { | 
|                     font-size: 32px; | 
|                     font-weight: 500; | 
|                     color: #333333; | 
|                 } | 
|                 &:last-child { | 
|                     font-size: 26px; | 
|                     font-weight: 400; | 
|                     color: #F5A400; | 
|                 } | 
|             } | 
|         } | 
|         .desc_info_company { | 
|             font-size: 24px; | 
|             font-weight: 400; | 
|             color: #666666; | 
|             margin: 24px 0; | 
|         } | 
|         .desc_info_box { | 
|             padding: 24px 30px; | 
|             background: #F7F7F7; | 
|             border-radius: 16px; | 
|             display: flex; | 
|             flex-direction: column; | 
|             .desc_info_box_item { | 
|                 display: flex; | 
|                 align-items: center; | 
|                 margin-bottom: 24px; | 
|                 &:last-child { | 
|                     margin-bottom: 0 !important; | 
|                 } | 
|                 span { | 
|                     font-size: 26px; | 
|                     font-weight: 400; | 
|                     &:first-child { | 
|                         color: #666666; | 
|                     } | 
|                     &:last-child { | 
|                         color: #222222; | 
|                     } | 
|                 } | 
|             } | 
|         } | 
|     } | 
|     .desc_qd { | 
|         margin-top: 40px; | 
|         .desc_qd_not { | 
|             width: 100%; | 
|             height: 150px; | 
|             background: white; | 
|             display: flex; | 
|             align-items: center; | 
|             justify-content: center; | 
|             font-size: 28px; | 
|             color: black; | 
|             margin-top: 30px; | 
|         } | 
|         .desc_qd_header { | 
|             display: flex; | 
|             align-items: center; | 
|             padding: 0 30px; | 
|             .desc_qd_header_x { | 
|                 width: 8px; | 
|                 height: 30px; | 
|                 background: #4275FC; | 
|                 border-radius: 2px; | 
|                 margin-right: 12px; | 
|             } | 
|             span { | 
|                 font-size: 32px; | 
|                 font-weight: 500; | 
|                 color: #222222; | 
|             } | 
|         } | 
|         .desc_qd_info { | 
|             background: white; | 
|             padding: 30px; | 
|             margin-top: 30px; | 
|             .desc_qd_info_item { | 
|                 display: flex; | 
|                 align-items: center; | 
|                 margin-bottom: 24px; | 
|                 &:last-child { | 
|                     margin-bottom: 0; | 
|                 } | 
|                 .black { | 
|                     font-size: 28px !important; | 
|                     font-weight: 400 !important; | 
|                     color: #222222 !important; | 
|                 } | 
|                 span { | 
|                     font-size: 26px; | 
|                     font-weight: 400; | 
|                     &:first-child { | 
|                         color: #666666; | 
|                     } | 
|                     &:last-child { | 
|                         color: #333333; | 
|                     } | 
|                 } | 
|             } | 
|         } | 
|     } | 
|     .desc_process { | 
|         margin-top: 40px; | 
|         .desc_process_title { | 
|             display: flex; | 
|             align-items: center; | 
|             padding: 0 30px; | 
|             span { | 
|                 font-size: 32px; | 
|                 font-weight: 500; | 
|                 color: #222222; | 
|             } | 
|             .desc_process_title_x { | 
|                 margin-right: 12px; | 
|                 width: 8px; | 
|                 height: 30px; | 
|                 background: #4275FC; | 
|                 border-radius: 2px; | 
|             } | 
|         } | 
|         .notfound { | 
|             width: 100%; | 
|             height: 200px; | 
|             background: white; | 
|             display: flex; | 
|             align-items: center; | 
|             justify-content: center; | 
|             font-size: 24px; | 
|             color: black; | 
|             margin-top: 30px; | 
|         } | 
|         .desc_process_content { | 
|             padding: 30px; | 
|             background: white; | 
|             margin-top: 30px; | 
|             .item { | 
|                 display: flex; | 
|                 justify-content: space-between; | 
|                 margin-bottom: 60px; | 
|                 &:last-child { | 
|                     margin-bottom: 0 !important; | 
|                 } | 
|                 .item_left { | 
|                     display: flex; | 
|                     align-items: center; | 
|                     position: relative; | 
|                     .item_x { | 
|                         position: absolute; | 
|                         bottom: -100%; | 
|                         left: 38px; | 
|                         height: 150px; | 
|                         border-right: 2PX solid #E5E5E5; | 
|                     } | 
|                     .item_left_img { | 
|                         width: 76px; | 
|                         height: 76px; | 
|                         background: #4275FC; | 
|                         border: 4px solid #FFFFFF; | 
|                         position: relative; | 
|                         border-radius: 50%; | 
|                         display: flex; | 
|                         align-content: center; | 
|                         justify-content: center; | 
|                         white-space: nowrap; | 
|                         p { | 
|                             font-size: 22px; | 
|                             font-weight: 400; | 
|                             color: #FFFFFF; | 
|                         } | 
|                         img { | 
|                             position: absolute; | 
|                             bottom: 0; | 
|                             right: 0; | 
|                             width: 28px; | 
|                             height: 28px; | 
|                         } | 
|                     } | 
|                     .item_left_text { | 
|                         display: flex; | 
|                         flex-direction: column; | 
|                         span { | 
|                             margin-left: 20px; | 
|                             &:first-child { | 
|                                 font-size: 28px; | 
|                                 font-weight: 400; | 
|                                 color: #111111; | 
|                             } | 
|                             &:last-child { | 
|                                 font-size: 24px; | 
|                                 font-weight: 400; | 
|                                 color: #999999; | 
|                                 margin-top: 10px; | 
|                             } | 
|                         } | 
|                     } | 
|                 } | 
|                 .item_right { | 
|                     font-size: 24px; | 
|                     font-weight: 400; | 
|                     color: #999999; | 
|                 } | 
|             } | 
|         } | 
|     } | 
| } | 
| </style> |