jiangping
2023-08-18 40609a1bd11ce79445562ac23f16af23a48c3933
h5_standard/src/views/workOrder/workOrderReporting.vue
@@ -30,25 +30,28 @@
                </div>
                <template v-if="feedingData && feedingData.length > 0">
                    <van-swipe-cell v-for="(item, index) in feedingData" :key="index">
                        <div class="bg_list_item_num">
                            <div class="bg_list_item_num_item">
                                <!-- <span>{{item.code}}</span> -->
                                <div class="bg_list_item_num_item_wl">
                                    <span> {{ item.materialName }}{{ item.procedureName ? `&nbsp;|&nbsp;${item.procedureName}` : '' }}</span>
                                    <div class="bg_list_item_num_item_wl_lx">
                                        <span class="green" v-if="item.qualityType == 0">合格&nbsp;/&nbsp;</span>
                                        <span class="yellow" v-if="item.qualityType == 1">不良&nbsp;/&nbsp;</span>
                                        <span class="red" v-if="item.qualityType == 2">报废&nbsp;/&nbsp;</span>
                                        <span>{{ item.locationName }}</span>
                                        <span>{{ item.batch ? `&nbsp;/&nbsp;${item.batch}` : '' }}</span>
                        <div class="bg_list_item_h">
                            <div class="bg_list_item_num">
                                <div class="bg_list_item_num_item">
                                    <!-- <span>{{item.code}}</span> -->
                                    <div class="bg_list_item_num_item_wl">
                                        <span> {{ item.materialName }}{{ item.procedureName ? `&nbsp;|&nbsp;${item.procedureName}` : '' }}</span>
                                        <div class="bg_list_item_num_item_wl_lx">
                                            <span class="green" v-if="item.qualityType == 0">合格&nbsp;/&nbsp;</span>
                                            <span class="yellow" v-if="item.qualityType == 1">不良&nbsp;/&nbsp;</span>
                                            <span class="red" v-if="item.qualityType == 2">报废&nbsp;/&nbsp;</span>
                                            <span>{{ item.locationName }}</span>
                                            <span>{{ item.batch ? `&nbsp;/&nbsp;${item.batch}` : '' }}</span>
                                        </div>
                                    </div>
                                </div>
                                <div class="bg_list_item_num_item_sr">
                                    <input v-model="item.num" :disabled="!proxy.$auth('h5:workorderinput:update')" @blur="change(item.id, item.num, 'T', item.maxNum, item, item.unitAttribute)" type="number" />
                                    <span>{{item.unitName}}</span>
                                    <div class="bg_list_item_num_item_sr">
                                        <input v-model="item.num" :disabled="!proxy.$auth('h5:workorderinput:update')" @blur="change(item.id, item.num, 'T', item.maxNum, item, item.unitAttribute)" type="number" />
                                        <span>{{item.unitName}}</span>
                                    </div>
                                </div>
                            </div>
                        </div>
                        <template #right v-if="proxy.$auth('h5:workorderinput:delete')">
                            <van-button style="height: 100%;" square text="删除" @click="deleItem(item.id, 'T')" type="danger" />
                        </template>
@@ -70,48 +73,107 @@
                <!-- <template v-if="produceData && produceData.length > 0"> -->
                    <!-- v-for="(item, index) in produceData" :key="index" -->
                    <van-swipe-cell>
                        <div class="bg_list_item_num">
                            <div class="bg_list_item_num_item">
                                <span>良品数</span>
                                <div class="bg_list_item_num_item_sr">
                                    <!-- :disabled="!proxy.$auth('h5:workorderoutput:update')" -->
                                    <!-- @blur="change(item.id, item.num, 'C', item.maxNum, item)" -->
                                    <input type="number" v-model="produceFrom.qualified" @blur="changeCC('0', produceFrom.qualified, produceFrom.qualifiedId)" placeholder="请输入" />
                                    <span v-if="info.umodel">{{info.umodel.name}}</span>
                        <div class="bg_list_item_h">
                            <div class="bg_list_item_num">
                                <div class="bg_list_item_num_item">
                                    <span>良品数({{ info.umodel ? info.umodel.name : '' }})</span>
                                    <div class="bg_list_item_num_item_sr">
                                        <!-- :disabled="!proxy.$auth('h5:workorderoutput:update')" -->
                                        <!-- @blur="change(item.id, item.num, 'C', item.maxNum, item)" -->
                                        <input type="number" v-model="produceFrom.qualified" @blur="changeCC('0', produceFrom.qualified, produceFrom.qualifiedId)" placeholder="请输入" />
                                        <span v-if="info.umodel">{{info.umodel.name}}</span>
                                    </div>
                                </div>
                            </div>
                        </div>
                    </van-swipe-cell>
                    <van-swipe-cell>
                        <div class="bg_list_item_num">
                            <!-- @blur="change(item.id, item.num, 'C', item.maxNum, item)" -->
                            <div class="bg_list_item_num_item">
                                <span>不良数</span>
                                <div class="bg_list_item_num_item_sr">
                                    <!-- :disabled="!proxy.$auth('h5:workorderoutput:update')" -->
                                    <!-- @blur="change(item.id, item.num, 'C', item.maxNum, item)" -->
                                    <input type="number" v-model="produceFrom.undesirable" @blur="changeCC('1', produceFrom.undesirable, produceFrom.undesirableId)" placeholder="请输入" />
                                    <span v-if="info.umodel">{{info.umodel.name}}</span>
                        <div class="bg_list_item_h">
                            <div class="bg_list_item_num">
                                <!-- @blur="change(item.id, item.num, 'C', item.maxNum, item)" -->
                                <div class="bg_list_item_num_item">
                                    <span>不良数({{ info.umodel ? info.umodel.name : '' }})</span>
                                    <div class="bg_list_item_num_item_sr">
                                        <!-- :disabled="!proxy.$auth('h5:workorderoutput:update')" -->
                                        <!-- @blur="change(item.id, item.num, 'C', item.maxNum, item)" -->
                                        <input type="number" v-model="produceFrom.undesirable" @blur="changeCC('1', produceFrom.undesirable, produceFrom.undesirableId)" placeholder="请输入" />
                                        <span v-if="info.umodel">{{info.umodel.name}}</span>
                                    </div>
                                </div>
                            </div>
                        </div>
                    </van-swipe-cell>
                    <!-- <van-swipe-cell>
                        <div class="bg_list_item_num">
                            <div class="bg_list_item_num_item" @click="show = true">
                                <span>不良项</span>
                                <div class="bg_list_item_num_item_sr">
                                    <span>设置 ></span>
                    <van-swipe-cell v-if="produceFrom.undesirable > 0">
                        <div class="bg_list_item_h">
                            <div class="bg_list_item_num">
                                <div class="bg_list_item_num_item" @click="show = true">
                                    <span>不良项</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>
                    </van-swipe-cell> -->
                    </van-swipe-cell>
                <!-- </template>
                <template v-else>
                    <div class="kong">
                        <span>暂无数据</span>
                    </div>
                </template> -->
            </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 / 100}}元/{{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 class="bg_list_item">
                <div class="bg_list_item_top">
@@ -283,35 +345,48 @@
                </div>
            </div>
        </van-popup>
        <!-- 时间 -->
        <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>
        <!-- 选择不良项 -->
        <van-popup v-model:show="show" round position="bottom" :style="{ height: '53%' }">
        <van-popup v-model:show="show" round position="bottom">
            <div class="bl">
                <div class="bl_head">
                    <span @click="show = false">取消</span>
                    <img src="@/assets/icon/ic_close@2x.png" style="opacity: 0;" alt="" />
                    <span>不良项</span>
                    <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 12" :key="i">
                    <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="true" name="" id="" />
                            <span>有划痕</span>
                            <input type="checkbox" :checked="item.active" />
                            <span>{{ item.name }}</span>
                        </div>
                        <div class="bl_list_item_right">
                            <input type="number" placeholder="请输入" />
                            <input type="number" @click.stop v-model="item.num" placeholder="0" />
                        </div>
                    </div>
                </div>
                <div class="bl_footer" @click="onConfirm3">确认</div>
            </div>
        </van-popup>
    </div>
</template>
<script setup lang="ts">
    import { getCurrentInstance, nextTick, onMounted, ref, reactive } from 'vue'
    import { getCurrentInstance, nextTick, onMounted, ref, reactive, computed } from 'vue'
    import { useRouter, useRoute } from "vue-router"
    import { Dialog, Toast } from 'vant'
    import { REGULAR } from '@/utils/utils'
    import { categoryExtList, queryOne } from '@/apis/PlanningAPI'
    import {
        getBarcodeContent,
        queryById,
@@ -334,6 +409,61 @@
    const router = useRouter()
    const route = useRoute()
    let TimeShow = ref(false)
    let from: any = reactive({
        time: '',
        defective: [],
        defectiveName: ''
    })
    // 预计工资
    const expectedSalary = computed(() => {
        if (!infoBox.value) return 0;
        // 按件计算
        if (infoBox.value.type == 0) {
            if (!produceFrom.qualified) return 0
            if (infoBox.value.unqualified == 1) {   // 是否计入不良品
                let total = Number(produceFrom.qualified) + Number(produceFrom.undesirable)
                return (total * (infoBox.value.salary / 100)).toFixed(2) || 0
            } else {
                return (Number(produceFrom.qualified) * (infoBox.value.salary / 100)).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 (!produceFrom.qualified && !produceFrom.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)).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 = (produceFrom.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)).toFixed(2) || 0
                // return Number(from.qualified) * infoBox.value.salary;
            }
        // } else {
        //     console.log('按时长')
        // }
    })
    const loading = ref(false);
    const finished = ref(false);
    let show = ref(false)
@@ -345,13 +475,17 @@
        page: 0
    })
    let infoBox: any = ref(null)     // 工资绩效
    // 产出合格/不良
    let produceFrom = reactive({
    let produceFrom: any = reactive({
        qualifiedId: '',
        qualified: '',  // 合格
        undesirableId: '',
        undesirable: '' // 不良
    })
    let cateList:any = ref([])  // 不良项
    // 详情数据
    const info: any = ref({})
@@ -404,6 +538,70 @@
    // 控制报工统计
    const statistics = ref<boolean>(false)
    const changeChecked = (i: number) => {
        cateList.value[i].active = !cateList.value[i].active
    }
    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 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 onCancel2 = () => {
        TimeShow.value = false
    }
    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 !== produceFrom.undesirable) return Toast('不良数必须等于产出不良数')
        from.defective = arr
        from.defectiveName = name
        show.value = false
    }
    // 投料统计
    const tlTotal = (): string => {
        if (feedingData.value.length > 0) {
@@ -419,18 +617,19 @@
    // 修改产出
    const changeCC = (downType: string, num: number, recordId: string) => {
        if (!num) return
        console.log(produceFrom.qualified + produceFrom.undesirable)
        if ((produceFrom.qualified + produceFrom.undesirable) > info.value.planNum) {
            return Toast.fail({ message: '产出数量不能大于计划数量', duration: 2000 })
        }
        if (num >= 0) {
            dealWorkorderRecordStandard({
                downType, num, recordId, workorderId: route.query.id
            }).then(res => {
                if (res.code === 200) {
                    getOrocessRecordCC()
                }
            })
            from.defective = []
            from.defectiveName = ''
            // dealWorkorderRecordStandard({
            //     downType, num, recordId, workorderId: route.query.id
            // }).then(res => {
            //     if (res.code === 200) {
            //         getOrocessRecordCC()
            //     }
            // })
        } else {
            if (downType == 0) {
                produceFrom.qualified = 0
@@ -602,6 +801,17 @@
        queryById(route.query.id).then(res => {
            if (res.code === 200) {
                info.value = res.data
                // 获取工资绩效数据
                queryOne({
                    deleted: 0,
                    departId: res.data.factoryId,
                    materialId: res.data.materialId,
                    procedureId: res.data.procedureId
                }).then((result: any) => {
                    if (result.code === 200) {
                        infoBox.value = result.data
                    }
                })
            }
        })
    }
@@ -688,7 +898,7 @@
            if (res.code === 200 && type === 'T') {
                getOrocessRecords()
            } else if (res.code === 200 && type === 'C') {
                getOrocessRecordCC()
                // getOrocessRecordCC()
            }
        })
    }
@@ -698,6 +908,10 @@
        if (info.value.bomType === 1) {  // 拉式
            console.log('拉式')
            statisticsData.value = []
            if (produceFrom.qualified <= 0) {
                Toast.fail({ message: '产出明细不能为空' })
                return
            }
            if (info.value.hasBom === 0) {
                console.log('无bom')
                // let data: any = [
@@ -853,6 +1067,10 @@
                Toast.fail({ message: '投料明细不能为空' })
                return
            }
            if (produceFrom.qualified <= 0) {
                Toast.fail({ message: '产出明细不能为空' })
                return
            }
            statisticsData.value = []
            if (info.value.hasBom === 0) {
                console.log('无bom')
@@ -976,8 +1194,25 @@
    // 确认报工
    const submitBG = () => {
        if (!from.duration || from.duration <= 0) {
            return Toast('报工时长不能为空')
        }
        let createUnqualifiedDTOList = from.defective.map((item: any) => {
            return {
                categoryId: item.id,
                unQualifiedNum: item.num
            }
        })
        let createWorkorderRecordDTO = {
            workorderId: route.query.id,
            duration: from.duration,
            qualifiedNum: produceFrom.qualified ? produceFrom.qualified : 0,
            unQualifiedNum: produceFrom.undesirable ? produceFrom.undesirable : 0
        }
        // id: route.query.id
        comfirmDoneStandard({
            id: route.query.id
            createUnqualifiedDTOList,
            createWorkorderRecordDTO
        }).then(res => {
            if (res.code === 200) {
                Toast.success({ message: '报工成功', forbidClick: true, duration: 2000 })
@@ -992,7 +1227,8 @@
        pageDJs()
        queryByIds()
        getOrocessRecords()
        getOrocessRecordCC()
        getData()
        // getOrocessRecordCC()
    })
</script>
@@ -1002,6 +1238,59 @@
        /*height: 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;
                }
            }
        }
        .details_cz {
            width: 100%;
            padding: 30px;
@@ -1125,99 +1414,161 @@
                        }
                    }
                }
                .bg_list_item_num {
                .bg_list_item_h {
                    width: 100%;
                    background: white;
                    padding: 0 30px;
                    box-sizing: border-box;
                    .kong {
                        text-align: center;
                        font-size: 25px;
                        padding: 30px 0;
                        background: #ffffff;
                    }
                    .bg_list_item_num_item {
                    background: white;
                    .bg_list_item_num {
                        width: 100%;
                        min-height: 98px;
                        background: white;
                        display: flex;
                        justify-content: center;
                        align-items: center;
                        // height: 118px;
                        padding: 15px 0;
                        box-sizing: border-box;
                        justify-content: space-between;
                        border-bottom: 1px solid #E5E5E5;
                        border-bottom: 1PX solid #E5E5E5;
                        &:last-child {
                            border: none;
                            border: none !important;
                        }
                        .bg_list_item_num_item_wl {
                            flex-shrink: 0;
                        .kong {
                            text-align: center;
                            font-size: 25px;
                            padding: 30px 0;
                            background: #ffffff;
                        }
                        .bg_list_item_num_item {
                            width: 100%;
                            height: 100%;
                            display: flex;
                            flex-direction: column;
                            span {
                                font-size: 34px;
                                color: #222222;
                            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_wl_lx {
                                margin-top: 10px;
                                span {
                                    color: #222222;
                                    font-size: 28px;
                            .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;
                                    }
                                }
                            }
                        }
                        .warning {
                            color: $nav-stateColor5 !important;
                        }
                        .err {
                            color: $nav-stateColor4 !important;
                        }
                        span {
                            flex-shrink: 0;
                            overflow: hidden;
                            text-overflow: ellipsis;
                            white-space: nowrap;
                            .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;
                                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;
                            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
                            img {
                                width: 12px;
                                height: 24px;
                                margin-left: 20px;
                            }
                            span {
                                font-size: 28px;
                                font-weight: 400;
                                color: #666666;
                                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;
                                }
                            }
                        }
                    }
@@ -1423,12 +1774,15 @@
            }
        }
        .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;
@@ -1439,21 +1793,38 @@
                        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: 580px;
                height: calc(100% - 168px);
                overflow-y: scroll;
                margin-top: 30px;
                .bl_list_item {
                    width: 100%;
                    height: 60px;
                    height: 96px;
                    display: flex;
                    align-items: center;
                    justify-content: space-between;
                    margin-bottom: 20px;
                    border-bottom: 1PX solid #E5E5E5;
                    &:last-child {
                        margin-bottom: 0 !important;
                        border: none !important;
                    }
                    .bl_list_item_left {
                        flex: 1;
@@ -1462,6 +1833,7 @@
                        input {
                            width: 30px;
                            height: 30px;
                            border: 1PX solid #CCCCCC;
                            margin: 0 !important;
                        }
                        span {
@@ -1478,9 +1850,19 @@
                            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: 2px solid #999999
                            border: 1PX solid #CCCCCC;
                            &::-webkit-input-placeholder {
                                font-size: 28px;
                                font-family: PingFangSC-Regular, PingFang SC;
                                font-weight: 400;
                                color: #999999;
                            }
                        }
                    }
                }