| <template> | 
|     <div class="bg"> | 
|         <div class="bg_plan" @click="selectPlan"> | 
|             <div class="bg_plan_label" v-if="!from.processPlan"> | 
|                 <span><b>*</b>工序生产计划</span> | 
|             </div> | 
|             <div class="bg_plan_nr" v-else> | 
|                 <span>{{ from.processPlan.materialName }} | {{ from.processPlan.materialCode }} | {{ from.processPlan.produceName }}</span> | 
|                 <span>{{ from.processPlan.batch }}{{ from.processPlan.salesOrder ? ` / ${from.processPlan.salesOrder}` : '' }}</span> | 
|                 <span>计划时间:{{ from.processPlan.workPlanStartDate }} ~ {{ from.processPlan.workPlanEndDate }}</span> | 
|                 <span>计划进度:{{from.processPlan.num}}/{{from.processPlan.workorderDistributNum}}{{ from.processPlan.unitName }}</span> | 
|             </div> | 
|             <div class="bg_plan_label_val"> | 
|                 <span v-if="!from.processPlan">请选择</span> | 
|                 <img src="@/assets/icon/ic_ar@2x.png" alt="" /> | 
|             </div> | 
|         </div> | 
|         <div class="bg_list"> | 
|             <div class="bg_list_item"> | 
|                 <div class="bg_list_item_top"> | 
|                     <div class="bg_list_item_top_left"> | 
|                         <div class="bg_list_item_top_left_x"></div> | 
|                         <span>生产信息</span> | 
|                     </div> | 
|                 </div> | 
|                 <div class="bg_list_item_h"> | 
|                     <div class="bg_list_item_num" @click="openDev"> | 
|                         <div class="bg_list_item_num_item"> | 
|                             <span>生产设备</span> | 
|                             <div class="bg_list_item_num_item_sr"> | 
|                                 <span :style="{color: from.deviceName ? '#333' : ''}">{{from.deviceName ? from.deviceName : '请选择'}}</span> | 
|                                 <img src="@/assets/icon/ic_ar@2x.png" alt="" /> | 
|                             </div> | 
|                         </div> | 
|                     </div> | 
|                     <div class="bg_list_item_num" @click="userShow = true"> | 
|                         <div class="bg_list_item_num_item"> | 
|                             <span>生产人员</span> | 
|                             <div class="bg_list_item_num_item_sr"> | 
|                                 <span :style="{color: from.userName ? '#333' : ''}">{{from.userName ? from.userName : '请选择'}}</span> | 
|                                 <img src="@/assets/icon/ic_ar@2x.png" alt="" /> | 
|                             </div> | 
|                         </div> | 
|                     </div> | 
|                 </div> | 
|             </div> | 
|             <div class="bg_list_item"> | 
|                 <div class="bg_list_item_top"> | 
|                     <div class="bg_list_item_top_left"> | 
|                         <div class="bg_list_item_top_left_x"></div> | 
|                         <span>生产信息</span> | 
|                     </div> | 
|                     <div class="bg_list_item_top_right" @click="openMaterial" v-if="(hasBom == 1 && bomType != 1) || hasBom == 0"> | 
|                         <img src="@/assets/icon/gongdan_ic_shoudong@2x.png" alt="" /> | 
|                         <span>新增投料</span> | 
|                     </div> | 
|                 </div> | 
|                 <template v-if="wuList.length > 0 && !(hasBom == 1 && bomType == 1)"> | 
|                     <van-swipe-cell v-for="(item, index) in wuList" :key="index"> | 
|                         <div class="bg_list_item_h"> | 
|                             <div class="bg_list_item_num"> | 
|                                 <div class="bg_list_item_num_item"> | 
|                                     <div class="bg_list_item_num_item_wl"> | 
|                                         <span>{{ item.materialName }}{{ item.procedureName ? ` | ${item.procedureName}` : '' }}</span> | 
|                                         <div class="bg_list_item_num_item_wl_lx"> | 
|                                             <span class="green" v-if="item.qualityType == 0">合格 / </span> | 
|                                             <span class="yellow" v-if="item.qualityType == 1">不良 / </span> | 
|                                             <span class="red" v-if="item.qualityType == 2">报废 / </span> | 
|                                             <span>{{ item.locationName }} / </span> | 
|                                             <span>{{ item.batch }}</span> | 
|                                         </div> | 
|                                     </div> | 
|                                     <div class="bg_list_item_num_item_sr"> | 
|                                         <input type="number" v-model="item.num" @input="inputwl(index)" /> | 
|                                         <span>{{ item.unitName }}</span> | 
|                                     </div> | 
|                                 </div> | 
|                             </div> | 
|                         </div> | 
|                         <template #right> | 
|                             <van-button style="height: 100%;" @click="deleItem(index)" square text="删除" type="danger" /> | 
|                         </template> | 
|                     </van-swipe-cell> | 
|                 </template> | 
|                 <template v-else-if="wuList.length == 0 && !(hasBom == 1 && bomType == 1)"> | 
|                     <div class="kong"> | 
|                         <span>暂无数据</span> | 
|                     </div> | 
|                 </template> | 
|                 <div class="kong" v-if="hasBom == 1 && bomType == 1"> | 
|                     <span>当前工序无需投料</span> | 
|                 </div> | 
|             </div> | 
|             <div class="bg_list_item bottomval"> | 
|                 <div class="bg_list_item_top"> | 
|                     <div class="bg_list_item_top_left"> | 
|                         <div class="bg_list_item_top_left_x"></div> | 
|                         <span>产出明细</span> | 
|                     </div> | 
|                 </div> | 
|                 <div class="bg_list_item_h"> | 
|                     <div class="bg_list_item_num"> | 
|                         <div class="bg_list_item_num_item"> | 
|                             <span><b>*</b>良品数</span> | 
|                             <div class="bg_list_item_num_item_sr"> | 
|                                 <input type="number" v-model="from.qualified" @input="changeNum(1)" placeholder="请输入" /> | 
|                                 <span v-if="from.processPlan">{{from.processPlan.unitName}}</span> | 
|                             </div> | 
|                         </div> | 
|                     </div> | 
|                     <div class="bg_list_item_num"> | 
|                         <div class="bg_list_item_num_item"> | 
|                             <span>不良数</span> | 
|                             <div class="bg_list_item_num_item_sr"> | 
|                                 <input type="number" v-model="from.undesirable" @input="changeNum(2)" placeholder="请输入" /> | 
|                                 <span v-if="from.processPlan">{{from.processPlan.unitName}}</span> | 
|                             </div> | 
|                         </div> | 
|                     </div> | 
|                     <div class="bg_list_item_num" v-if="from.undesirable > 0"> | 
|                         <div class="bg_list_item_num_item" @click="show = true"> | 
|                             <span><b>*</b>不良项</span> | 
|                             <div class="bg_list_item_num_item_sr"> | 
|                                 <span class="wulll" :style="{color: from.defectiveName ? '#305ED5' : ''}">{{from.defectiveName ? from.defectiveName : '设置'}}</span> | 
|                                 <img src="@/assets/icon/ic_ar@2x.png" alt="" /> | 
|                             </div> | 
|                         </div> | 
|                     </div> | 
|                 </div> | 
|             </div> | 
|             <div class="bg_plan" @click="TimeShow = true"> | 
|                 <div class="bg_plan_label"> | 
|                     <span><b>*</b>报工时长</span> | 
|                 </div> | 
|                 <div class="bg_plan_label_val"> | 
|                     <span :style="{color: from.durationName ? '#333' : ''}">{{from.durationName ? from.durationName : '请选择'}}</span> | 
|                     <img src="@/assets/icon/ic_ar@2x.png" alt="" /> | 
|                 </div> | 
|             </div> | 
|             <div class="bg_list_item" v-if="infoBox"> | 
|                 <div class="bg_list_item_top"> | 
|                     <div class="bg_list_item_top_left"> | 
|                         <div class="bg_list_item_top_left_x"></div> | 
|                         <span>工资绩效</span> | 
|                     </div> | 
|                 </div> | 
|                 <div class="bg_list_item_h"> | 
|                     <div class="bg_list_item_num"> | 
|                         <div class="bg_list_item_num_item"> | 
|                             <span>计件方式</span> | 
|                             <div class="bg_list_item_num_item_list"> | 
|                                 <div class="bg_list_item_num_item_list_item active" v-if="infoBox.type == 0">计件</div> | 
|                                 <div class="bg_list_item_num_item_list_item active" v-if="infoBox.type == 1">计时</div> | 
|                             </div> | 
|                         </div> | 
|                     </div> | 
|                     <div class="bg_list_item_num"> | 
|                         <div class="bg_list_item_num_item"> | 
|                             <span>工资单价</span> | 
|                             <div class="bg_list_item_num_item_sr"> | 
|                                 <span class="color1">{{(infoBox.salary / 10 / 10).toFixed(2)}}元/{{infoBox.type == 0 ? '件' : '时'}}</span> | 
|                             </div> | 
|                         </div> | 
|                     </div> | 
|                     <div class="bg_list_item_num"> | 
|                         <div class="bg_list_item_num_item"> | 
|                             <span>预计工资</span> | 
|                             <div class="bg_list_item_num_item_sr"> | 
|                                 <span class="color1">{{expectedSalary}}元</span> | 
|                             </div> | 
|                         </div> | 
|                     </div> | 
|                     <div class="bg_list_item_num"> | 
|                         <div class="bg_list_item_num_item"> | 
|                             <span>达标率</span> | 
|                             <div class="bg_list_item_num_item_sr"> | 
|                                 <span class="color1">{{complianceRate}}%</span> | 
|                             </div> | 
|                         </div> | 
|                     </div> | 
|                 </div> | 
|             </div> | 
|         </div> | 
|         <!--  报工按钮  --> | 
|         <div class="bh_zw"></div> | 
|         <div class="bg_footer"> | 
|             <div class="bg_footer_submit1">继续报工</div> | 
|             <div class="bg_footer_submit" @click="submit">提交</div> | 
|         </div> | 
|         <!-- 选择不良项 --> | 
|         <van-popup v-model:show="show" round position="bottom"> | 
|             <div class="bl"> | 
|                 <div class="bl_head"> | 
|                     <img src="@/assets/icon/ic_close@2x.png" style="opacity: 0;" alt="" /> | 
|                     <span>不良项</span> | 
|                     <!-- <span>确认</span> --> | 
|                     <img src="@/assets/icon/ic_close@2x.png" @click="show = false" alt="" /> | 
|                 </div> | 
|                 <div class="bl_list"> | 
|                     <div class="bl_list_item" v-for="(item, i) in cateList" :key="i" @click="changeChecked(i)"> | 
|                         <div class="bl_list_item_left"> | 
|                             <input type="checkbox" :checked="item.active" /> | 
|                             <span>{{ item.name }}</span> | 
|                         </div> | 
|                         <div class="bl_list_item_right"> | 
|                             <input type="number" @click.stop v-model="item.num" placeholder="0" /> | 
|                         </div> | 
|                     </div> | 
|                 </div> | 
|                 <div class="bl_footer" @click="onConfirm3">确认</div> | 
|             </div> | 
|         </van-popup> | 
|         <!--  入库物料  --> | 
|         <MaterialY :show="show1" :plansId="String(plansId)" :ids="ids" :deviceId="String(deviceId)" @close="close" @value="getValue" /> | 
|         <!-- 设备 --> | 
|         <van-popup v-model:show="deviceShow" round position="bottom" :style="{ height: '50%' }"> | 
|             <van-picker | 
|                 :columns="deviceList" | 
|                 @confirm="onConfirm" | 
|                 @cancel="onCancel" | 
|                 :columns-field-names="customFieldName" | 
|             /> | 
|         </van-popup> | 
|         <!-- 人员 --> | 
|         <user :show="userShow" @close="onCancel1" @value="onConfirm1" /> | 
|         <!-- 时间 --> | 
|         <van-popup v-model:show="TimeShow" round position="bottom" :style="{ height: '50%' }"> | 
|             <van-datetime-picker | 
|                 v-model="from.time" | 
|                 type="time" | 
|                 title="选择时间" | 
|                 @confirm="onConfirm2" | 
|                 @cancel="onCancel2" | 
|             /> | 
|         </van-popup> | 
|     </div> | 
| </template> | 
|   | 
| <script setup lang="ts"> | 
|     import { onMounted, ref, reactive, getCurrentInstance, computed } from 'vue' | 
|     import { useRouter } from 'vue-router' | 
|     import { getDeviceByCondition, getFindAll, queryOne, autoWorkReport, getIdPlansExt, categoryExtList } from '@/apis/PlanningAPI' | 
|     import MaterialY from '@/components/newCom/MaterialY.vue' | 
|     import user from '@/components/newCom/user.vue' | 
|     import { Toast } from 'vant' | 
|   | 
|     const {$Bus} = getCurrentInstance().appContext.config.globalProperties  | 
|     const router = useRouter() | 
|     let show = ref(false) | 
|     let show1 = ref(false) | 
|     let TimeShow = ref(false) | 
|     let deviceId = ref('') | 
|     let plansId = ref('') | 
|     let ids = ref('') | 
|     let total: any = ref('')    // 可投数量 | 
|   | 
|     let from: any = reactive({ | 
|         processPlan: null, | 
|         deviceId: '', | 
|         deviceName: '', | 
|         userId: '', | 
|         userName: '', | 
|         qualified: '',  // 良品数 | 
|         undesirable: '', // 不良数 | 
|         duration: '', | 
|         durationName: '', | 
|         time: '', | 
|         defective: [], | 
|         defectiveName: '' | 
|     }) | 
|   | 
|     let infoBox: any = ref(null)     // 工资绩效 | 
|   | 
|     let bomType: any = ref('') | 
|     let hasBom: any = ref('') | 
|     let deviceShow = ref(false) | 
|     let deviceList = ref([]) | 
|     let cateList:any = ref([]) | 
|     const customFieldName = { | 
|         text: 'name' | 
|     }; | 
|     let userShow = ref(false) | 
|     let wuList = ref<Array<any>>([]) | 
|   | 
|     // 产出数量验证 | 
|     const changeNum = (type: number) => { | 
|         let num = total.value - (Number(from.qualified) + Number(from.undesirable)) | 
|         if (type == 2) { | 
|             from.defective = [] | 
|             from.defectiveName = '' | 
|         } | 
|         if (num < 0) { | 
|             Toast('产出数量不能大于可产出数量!') | 
|             if (type == 1) { | 
|                 from.qualified = '' | 
|             } else { | 
|                 from.undesirable = '' | 
|             } | 
|         } | 
|     } | 
|   | 
|     // 验证物料数量 | 
|     const inputwl = (i: number) => { | 
|         if (wuList.value[i].num > wuList.value[i].total) { | 
|             wuList.value[i].num = '' | 
|             Toast('投料数量不能大于库存数量') | 
|         } | 
|     } | 
|   | 
|     const changeChecked = (i: number) => { | 
|         cateList.value[i].active = !cateList.value[i].active | 
|     } | 
|   | 
|     const onConfirm3 = () => { | 
|         let isOpen = false | 
|         cateList.value.forEach((item: any, index: number) => { | 
|             if (item.active) { | 
|                 isOpen = true | 
|             } | 
|         }) | 
|         if (!isOpen) return Toast('请选择不良项') | 
|         let arr: any = [] | 
|         let total: any = 0 | 
|         let name: any = '' | 
|         cateList.value.forEach((item: any, index: number) => { | 
|             if (item.active) { | 
|                 if (item.num <= 0) { | 
|                     return Toast('不良数量必须大于0') | 
|                 } | 
|                 total = total += item.num | 
|                 arr.push(item) | 
|                 name += item.name + item.num + ';' | 
|             } | 
|         }) | 
|         if (total !== from.undesirable) return Toast('不良数必须等于产出不良数') | 
|         from.defective = arr | 
|         from.defectiveName = name | 
|         show.value = false | 
|     } | 
|   | 
|     const submit = () => { | 
|         if (!from.processPlan) return Toast('计划不能为空') | 
|         if (!from.deviceId) return Toast('设备不能为空') | 
|         if (!from.userId) return Toast('生产人员不能为空') | 
|         if (hasBom.value == 1 && bomType.value == 1) { | 
|             console.log('不需要投料') | 
|         } else { | 
|             if (!wuList.value.length === 0) return Toast('投料不能为空') | 
|         } | 
|         if (!from.qualified && !from.undesirable) { | 
|             return Toast('良品数与不良数不能同时为空') | 
|         } | 
|         // if (!from.qualified) return Toast('良品数不能为空') | 
|         // 有不良数 | 
|         if (from.undesirable > 0) { | 
|             if (from.defective.length === 0) return Toast('不良项不能为空') | 
|         } | 
|         if (!from.duration) return Toast('报工时长不能为空') | 
|         autoWorkReport({ | 
|             createWorkorderRecordDTO: { | 
|                 duration: from.duration, | 
|                 qualifiedNum: from.qualified ? from.qualified : 0, | 
|                 unQualifiedNum: from.undesirable ? from.undesirable : 0 | 
|             }, | 
|             plansId: from.processPlan.id, | 
|             proGroupId: deviceId.value, | 
|             proUserList: [from.userId], | 
|             recordList: wuList.value.map((item: any) => { | 
|                 return { | 
|                     wstockId: item.id, | 
|                     num: item.num | 
|                 } | 
|             }), | 
|             createUnqualifiedDTOList: from.defective.map((item: any) => { | 
|                 return { | 
|                     categoryId: item.id, | 
|                     unQualifiedNum: item.num | 
|                 } | 
|             }) | 
|         }).then(res => { | 
|             if (res.code === 200) { | 
|                 Toast.success({message: '报工成功!'}) | 
|                 setTimeout(() => { | 
|                     router.go(-1) | 
|                 }, 2000); | 
|             } | 
|         }) | 
|     } | 
|   | 
|     // 预计工资 | 
|     const expectedSalary = computed(() => { | 
|         if (!infoBox.value) return 0; | 
|         // 按件计算 | 
|         if (infoBox.value.type == 0) { | 
|             if (!from.qualified) return 0 | 
|             if (infoBox.value.unqualified == 1) {   // 是否计入不良品 | 
|                 let total = Number(from.qualified) + Number(from.undesirable) | 
|                 return (total * (infoBox.value.salary / 10 / 10)).toFixed(2) || 0 | 
|             } else { | 
|                 return (Number(from.qualified) * (infoBox.value.salary / 10 / 10)).toFixed(2) || 0 | 
|             } | 
|         } else { | 
|             if (!from.duration) return 0; | 
|             let h = (from.duration / 60 / 60).toFixed(2) | 
|             return (Number(h) * (infoBox.value.salary / 10 / 10)).toFixed(2) || 0 | 
|         } | 
|     }) | 
|   | 
|     // 达标率 | 
|     const complianceRate = computed(() => { | 
|         if (!infoBox.value) return 0; | 
|         if (!from.qualified && !from.undesirable) return 0; | 
|         if (!from.duration) return 0; | 
|         // 按件计算 | 
|         // if (infoBox.value.type == 0) { | 
|             if (infoBox.value.unqualified == 1) {   // 是否计入不良品 | 
|                 let a = ((Number(from.qualified) + Number(from.undesirable)) / (from.duration / 60 / 60)).toFixed(2) | 
|                 let b = (infoBox.value.num / (infoBox.value.times / 60 / 60)).toFixed(2) | 
|                 console.log(a) | 
|                 console.log(b) | 
|                 return ((Number(a) / Number(b)) * 100).toFixed(2) || 0 | 
|                 // let total = (Number(from.qualified) + Number(from.undesirable)) / ((from.duration * 60 * 60) * infoBox.value.num / ) | 
|                 // return total * infoBox.value.salary; | 
|             } else { | 
|                 let a = (from.qualified / (from.duration / 60 / 60)).toFixed(2) | 
|                 let b = (infoBox.value.num / (infoBox.value.times / 60 / 60)).toFixed(2) | 
|                 console.log(a) | 
|                 console.log(b) | 
|                 return ((Number(a) / Number(b)) * 100).toFixed(2) || 0 | 
|                 // return Number(from.qualified) * infoBox.value.salary; | 
|             } | 
|         // } else { | 
|         //     console.log('按时长') | 
|         // } | 
|     }) | 
|   | 
|     const deleItem = (index: number) => { | 
|         if (wuList.value.length === 1) return Toast('至少保留一项内容') | 
|         wuList.value.splice(index, 1) | 
|     } | 
|     const openDev = () => { | 
|         if (!from.processPlan) return Toast('请先选择工序生产计划') | 
|         deviceShow.value = true | 
|     } | 
|     const openMaterial = () => { | 
|         if (!plansId.value) return Toast('请先选择工序生产计划') | 
|         if (!deviceId.value) return Toast('请先选择生产设备') | 
|         show1.value = true | 
|     } | 
|     const onConfirm1 = (e: any) => { | 
|         from.userId = e.userId | 
|         from.userName = e.name | 
|         userShow.value = false | 
|     } | 
|     const onConfirm2 = (e: string) => { | 
|         let h = Number(e.substring(0, 2)) | 
|         let m = Number(e.substring(3, 5)) | 
|         let s = 0 | 
|         if (h > 0) { | 
|             s += h * 60 * 60 | 
|         } | 
|         if (m > 0) { | 
|             s += m * 60 | 
|         } | 
|         from.duration = s | 
|         from.durationName = `${h}小时${m}分钟` | 
|         TimeShow.value = false | 
|     } | 
|     const onCancel1 = () => { | 
|         userShow.value = false | 
|     } | 
|     const onCancel2 = () => { | 
|         TimeShow.value = false | 
|     } | 
|     const onConfirm = (e: any) => { | 
|         from.deviceId = e.id | 
|         from.deviceName = e.name | 
|         deviceId.value = e.id | 
|         from.userId = '' | 
|         from.userName = '' | 
|         // getFindAll({ | 
|         //     deviceId: e.id, | 
|         //     planId: from.processPlan.id | 
|         // }).then(res => { | 
|         //     if (res.code === 200) { | 
|         //         res.data.forEach((item: any) => { | 
|         //             item.name = item.umodel.name + '-' + item.tmodel.name | 
|         //         }) | 
|         //         userList.value = res.data | 
|         //     } | 
|         // }) | 
|         deviceShow.value = false | 
|     } | 
|     const onCancel = () => { | 
|         deviceShow.value = false | 
|     } | 
|   | 
|     const selectPlan = () => { | 
|         router.push({ name: 'processPlans' }) | 
|     } | 
|   | 
|     const close = () => { | 
|         show1.value = false | 
|     } | 
|     const getData = () => { | 
|         categoryExtList({ | 
|             cateType: "3" | 
|         }).then(res => { | 
|             if (res.code === 200) { | 
|                 res.data.forEach((item: any) => { | 
|                     item.active = false | 
|                     item.num = '' | 
|                 }) | 
|                 cateList.value = res.data | 
|             } | 
|         }) | 
|     } | 
|     // 选择物料 | 
|     const getValue = (val: any) => { | 
|         let obj = JSON.parse(JSON.stringify(val)) | 
|         obj.total = val.num | 
|         wuList.value.unshift(obj) | 
|         let arr = wuList.value.map((item: any) => item.id) | 
|         ids.value = arr.join(',') | 
|         show1.value = false | 
|     } | 
|   | 
|     onMounted(() => { | 
|         getData() | 
|         $Bus.on('callback', (res: any)=>{ | 
|             from.processPlan = res | 
|             plansId.value = res.id | 
|             from.deviceId = '' | 
|             from.deviceName = '' | 
|             deviceId.value = '' | 
|             from.userId = '' | 
|             from.userName = '' | 
|             total.value = res.num - res.workorderDistributNum | 
|             // 获取设备 | 
|             getDeviceByCondition({ procedureId: res.procedureId }) | 
|                 .then(res1 => { | 
|                     if (res1.code === 200) { | 
|                         deviceId.value = res1.data[0].id | 
|                         from.deviceId = res1.data[0].id | 
|                         from.deviceName = res1.data[0].name | 
|                         deviceList.value = res1.data | 
|                     } | 
|                 }) | 
|             // 获取类型 | 
|             getIdPlansExt(res.id) | 
|                 .then(res2 => { | 
|                     if (res2.code === 200) { | 
|                         bomType.value = res2.data.bomType | 
|                         hasBom.value = res2.data.hasBom | 
|                     } | 
|                 }) | 
|             // 获取工资绩效数据 | 
|             queryOne({ | 
|                 deleted: 0, | 
|                 departId: res.factoryId, | 
|                 materialId: res.materialId, | 
|                 procedureId: res.procedureId | 
|             }).then(result => { | 
|                 if (result.code === 200) { | 
|                     infoBox.value = result.data | 
|                 } | 
|             }) | 
|         }) | 
|     }) | 
| </script> | 
|   | 
| <style lang="scss" scoped> | 
|     .bg { | 
|         width: 100%; | 
|         position: absolute; | 
|         background: #F7F7F7; | 
|         .bg_plan { | 
|             width: 100%; | 
|             // height: 98px; | 
|             padding: 30px; | 
|             box-sizing: border-box; | 
|             background: #FFFFFF; | 
|             margin-bottom: 40px; | 
|             display: flex; | 
|             align-items: center; | 
|             justify-content: space-between; | 
|             span { | 
|                 font-size: 30px; | 
|                 font-family: PingFangSC-Regular, PingFang SC; | 
|                 font-weight: 400; | 
|                 color: #222222; | 
|                 b { | 
|                     color: red; | 
|                 } | 
|             } | 
|             .bg_plan_nr { | 
|                 display: flex; | 
|                 flex-direction: column; | 
|                 span { | 
|                     font-size: 24px; | 
|                     font-family: PingFangSC-Regular, PingFang SC; | 
|                     font-weight: 400; | 
|                     color: #666666; | 
|                     margin-top: 20px; | 
|                     &:first-child { | 
|                         font-size: 32px; | 
|                         font-family: PingFangSC-Medium, PingFang SC; | 
|                         font-weight: 500; | 
|                         color: #333333; | 
|                         margin-top: 0 !important; | 
|                     } | 
|                 } | 
|             } | 
|             .bg_plan_label_val { | 
|                 display: flex; | 
|                 align-items: center; | 
|                 span { | 
|                     font-size: 28px; | 
|                     font-family: PingFangSC-Regular, PingFang SC; | 
|                     font-weight: 400; | 
|                     color: #999999; | 
|                 } | 
|                 img { | 
|                     width: 12px; | 
|                     height: 24px; | 
|                     margin-left: 20px; | 
|                 } | 
|             } | 
|         } | 
|         .bg_list { | 
|             width: 100%; | 
|             display: flex; | 
|             flex-direction: column; | 
|             .bottomval { | 
|                 margin-bottom: 20px !important; | 
|             } | 
|             .bg_list_item { | 
|                 display: flex; | 
|                 flex-direction: column; | 
|                 margin-bottom: 40px; | 
|                 .kong { | 
|                     text-align: center; | 
|                     padding: 30px 0; | 
|                     background: #ffffff; | 
|                     font-size: 25px; | 
|                     span { | 
|                         color: #474747; | 
|                     } | 
|                 } | 
|                 .bg_list_item_top { | 
|                     display: flex; | 
|                     align-items: center; | 
|                     justify-content: space-between; | 
|                     padding-left: 30px; | 
|                     padding-right: 30px; | 
|                     margin-bottom: 30px; | 
|                     .bg_list_item_top_left { | 
|                         display: flex; | 
|                         align-items: center; | 
|                         .left { | 
|                             margin-left: 12px; | 
|                             font-size: 28px; | 
|                         } | 
|                         .warning { | 
|                             width: 8px; | 
|                             height: 30px; | 
|                             border-radius: 2px; | 
|                             margin-right: 12px; | 
|                             background: $nav-stateColor5 !important; | 
|                         } | 
|                         .error { | 
|                             width: 8px; | 
|                             height: 30px; | 
|                             border-radius: 2px; | 
|                             margin-right: 12px; | 
|                             background: $nav-stateColor4 !important; | 
|                         } | 
|                         .bg_list_item_top_left_x { | 
|                             width: 8px; | 
|                             height: 30px; | 
|                             background: $nav-color; | 
|                             border-radius: 2px; | 
|                             margin-right: 12px; | 
|                         } | 
|                         span { | 
|                             font-size: 32px; | 
|                             font-weight: 500; | 
|                             color: #222222; | 
|                             display: flex; | 
|                             align-items: center; | 
|                         } | 
|                     } | 
|                     .bg_list_item_top_right { | 
|                         display: flex; | 
|                         align-items: center; | 
|                         img { | 
|                             width: 28px; | 
|                             height: 28px; | 
|                             margin-right: 12px; | 
|                         } | 
|                         span { | 
|                             font-size: 28px; | 
|                             font-weight: 400; | 
|                             color: $nav-color; | 
|                         } | 
|                     } | 
|                 } | 
|                 .top { | 
|                     margin-top: 20px !important; | 
|                 } | 
|                 .bg_list_item_h { | 
|                     width: 100%; | 
|                     padding: 0 30px; | 
|                     box-sizing: border-box; | 
|                     background: white; | 
|                     .bg_list_item_num { | 
|                         width: 100%; | 
|                         min-height: 98px; | 
|                         background: white; | 
|                         display: flex; | 
|                         justify-content: center; | 
|                         align-items: center; | 
|                         border-bottom: 1PX solid #E5E5E5; | 
|                         &:last-child { | 
|                             border: none !important; | 
|                         } | 
|                         .kong { | 
|                             text-align: center; | 
|                             font-size: 25px; | 
|                             padding: 30px 0; | 
|                             background: #ffffff; | 
|                         } | 
|                         .bg_list_item_num_item { | 
|                             width: 100%; | 
|                             height: 100%; | 
|                             display: flex; | 
|                             align-items: center; | 
|                             // height: 118px; | 
|                             padding: 15px 0; | 
|                             box-sizing: border-box; | 
|                             justify-content: space-between; | 
|                             border-bottom: 1px solid #E5E5E5; | 
|                             &:last-child { | 
|                                 border: none; | 
|                             } | 
|                             .bg_list_item_num_item_list { | 
|                                 display: flex; | 
|                                 align-items: center; | 
|                                 .active { | 
|                                     background: #305ED5 !important; | 
|                                     color: #FFFFFF !important; | 
|                                 } | 
|                                 .bg_list_item_num_item_list_item { | 
|                                     width: 116px; | 
|                                     height: 62px; | 
|                                     line-height: 62px; | 
|                                     text-align: center; | 
|                                     background: #F2F2F2; | 
|                                     border-radius: 8px; | 
|                                     font-size: 26px; | 
|                                     font-family: PingFangSC-Regular, PingFang SC; | 
|                                     font-weight: 400; | 
|                                     color: #333333; | 
|                                     margin-right: 20px; | 
|                                     &:last-child { | 
|                                         margin: 0 !important; | 
|                                     } | 
|                                 } | 
|                             } | 
|                             .bg_list_item_num_item_wl { | 
|                                 flex-shrink: 0; | 
|                                 display: flex; | 
|                                 flex-direction: column; | 
|                                 span { | 
|                                     font-size: 34px; | 
|                                     color: #222222; | 
|                                 } | 
|                                 .bg_list_item_num_item_wl_lx { | 
|                                     margin-top: 10px; | 
|                                     span { | 
|                                         color: #222222; | 
|                                         font-size: 28px; | 
|                                     } | 
|                                 } | 
|                             } | 
|                             .warning { | 
|                                 color: $nav-stateColor5 !important; | 
|                             } | 
|                             .err { | 
|                                 color: $nav-stateColor4 !important; | 
|                             } | 
|                             img { | 
|                                 width: 12px; | 
|                                 height: 24px; | 
|                                 margin-left: 20px; | 
|                             } | 
|                             span { | 
|                                 flex-shrink: 0; | 
|                                 overflow: hidden; | 
|                                 text-overflow: ellipsis; | 
|                                 white-space: nowrap; | 
|                                 b { | 
|                                     font-size: 30px; | 
|                                     color: red; | 
|                                     margin-right: 5px; | 
|                                 } | 
|                                 .warning { | 
|                                     color: $nav-stateColor5 !important; | 
|                                     margin-right: 5px; | 
|                                 } | 
|                                 .err { | 
|                                     color: $nav-stateColor4 !important; | 
|                                     margin-right: 5px; | 
|                                 } | 
|                                 &:nth-child(1) { | 
|                                     font-size: 30px; | 
|                                     font-weight: 400; | 
|                                     color: #222222; | 
|                                 } | 
|                                 &:nth-child(2) { | 
|                                     font-size: 28px; | 
|                                     font-weight: 400; | 
|                                     color: #333333; | 
|                                     flex-shrink: 0; | 
|                                 } | 
|                             } | 
|                             .bg_list_item_num_item_sr { | 
|                                 flex: 1; | 
|                                 display: flex; | 
|                                 align-items: center; | 
|                                 justify-content: flex-end; | 
|                                 .color1 { | 
|                                     font-size: 28px; | 
|                                     font-family: PingFangSC-Regular, PingFang SC; | 
|                                     font-weight: 400; | 
|                                     color: #333333; | 
|                                 } | 
|                                 input::-webkit-input-placeholder { | 
|                                     font-size: 28px; | 
|                                 } | 
|                                 input { | 
|                                     text-align: right; | 
|                                     width: 180px; | 
|                                     height: 60px; | 
|                                     border-radius: 8px; | 
|                                     border: 1PX solid #E5E5E5; | 
|                                     margin-right: 20px; | 
|                                     font-size: 28px; | 
|                                     font-weight: 400; | 
|                                     color: #333333; | 
|                                     padding: 0 30px; | 
|                                 } | 
|                                 .wulll { | 
|                                     width: 400px; | 
|                                     text-align: right; | 
|                                     overflow: hidden; | 
|                                     white-space: nowrap; | 
|                                     text-overflow: ellipsis; | 
|                                 } | 
|                                 span { | 
|                                     font-size: 28px; | 
|                                     font-family: PingFangSC-Regular, PingFang SC; | 
|                                     font-weight: 400; | 
|                                     color: #999999; | 
|                                 } | 
|                             } | 
|                         } | 
|                     } | 
|                 } | 
|             } | 
|         } | 
|         .bh_zw { | 
|             height: 160px; | 
|         } | 
|         .bg_footer { | 
|             position: fixed; | 
|             bottom: 0; | 
|             left: 0; | 
|             width: 100%; | 
|             z-index: 9; | 
|             padding: 0 30px 60px 30px; | 
|             box-sizing: border-box; | 
|             display: flex; | 
|             align-items: center; | 
|             justify-content: space-between; | 
|             .bg_footer_submit1 { | 
|                 width: 334px; | 
|                 height: 88px; | 
|                 line-height: 88px; | 
|                 text-align: center; | 
|                 background: #FFFFFF; | 
|                 box-shadow: 0px 0px 12px 0px rgba(0,0,0,0.08); | 
|                 border-radius: 8px; | 
|                 font-size: 30px; | 
|                 font-family: PingFangSC-Medium, PingFang SC; | 
|                 font-weight: 500; | 
|                 color: #305ED5; | 
|             } | 
|             .bg_footer_submit { | 
|                 width: 334px; | 
|                 height: 88px; | 
|                 background: $nav-color; | 
|                 box-shadow: 0 0 12px 0 rgba(0, 0, 0, 0.08); | 
|                 border-radius: 8px; | 
|                 font-size: 30px; | 
|                 font-weight: 500; | 
|                 color: #FFFFFF; | 
|                 display: flex; | 
|                 align-items: center; | 
|                 justify-content: center; | 
|             } | 
|         } | 
|         .bl { | 
|             width: 100%; | 
|             height: 800px; | 
|             padding: 30px; | 
|             box-sizing: border-box; | 
|             display: flex; | 
|             flex-direction: column; | 
|             .bl_head { | 
|                 width: 100%; | 
|                 height: 50px; | 
|                 display: flex; | 
|                 align-items: center; | 
|                 justify-content: space-between; | 
|                 span { | 
|                     font-size: 28px; | 
|                     color: #222222; | 
|                     &:nth-child(2) { | 
|                         font-size: 32px !important; | 
|                     } | 
|                 } | 
|                 img { | 
|                     width: 28px; | 
|                     height: 28px; | 
|                 } | 
|             } | 
|             .bl_footer { | 
|                 width: 100%; | 
|                 height: 88px; | 
|                 line-height: 88px; | 
|                 text-align: center; | 
|                 background: #305ED5; | 
|                 border-radius: 8px; | 
|                 font-size: 32px; | 
|                 font-family: PingFangSC-Medium, PingFang SC; | 
|                 font-weight: 500; | 
|                 color: #FFFFFF; | 
|                 margin-top: 30px; | 
|             } | 
|             .bl_list { | 
|                 width: 100%; | 
|                 height: calc(100% - 168px); | 
|                 overflow-y: scroll; | 
|                 margin-top: 30px; | 
|                 .bl_list_item { | 
|                     width: 100%; | 
|                     height: 96px; | 
|                     display: flex; | 
|                     align-items: center; | 
|                     justify-content: space-between; | 
|                     border-bottom: 1PX solid #E5E5E5; | 
|                     &:last-child { | 
|                         border: none !important; | 
|                     } | 
|                     .bl_list_item_left { | 
|                         flex: 1; | 
|                         display: flex; | 
|                         align-items: center; | 
|                         input { | 
|                             width: 30px; | 
|                             height: 30px; | 
|                             border: 1PX solid #CCCCCC; | 
|                             margin: 0 !important; | 
|                         } | 
|                         span { | 
|                             font-size: 30px; | 
|                             color: #222222; | 
|                             margin-left: 10px; | 
|                         } | 
|                     } | 
|                     .bl_list_item_right { | 
|                         flex: 1; | 
|                         height: 50px; | 
|                         text-align: right; | 
|                         input { | 
|                             padding-left: 5px; | 
|                             width: 160px; | 
|                             height: 100%; | 
|                             padding: 0 30px; | 
|                             box-sizing: border-box; | 
|                             text-align: right; | 
|                             font-size: 28px; | 
|                             color: #333333; | 
|                             border-radius: 10px; | 
|                             border: 1PX solid #CCCCCC; | 
|                             &::-webkit-input-placeholder { | 
|                                 font-size: 28px; | 
|                                 font-family: PingFangSC-Regular, PingFang SC; | 
|                                 font-weight: 400; | 
|                                 color: #999999; | 
|                             } | 
|                         } | 
|                     } | 
|                 } | 
|             } | 
|         } | 
|     } | 
| </style> |