| | |
| | | </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 ? ` | ${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 ? ` / ${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 ? ` | ${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 ? ` / ${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> |
| | |
| | | <!-- <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"> |
| | |
| | | </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, |
| | |
| | | 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) |
| | |
| | | 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({}) |
| | |
| | | // 控制报工统计 |
| | | 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) { |
| | |
| | | // 修改产出 |
| | | 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 |
| | |
| | | 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 |
| | | } |
| | | }) |
| | | } |
| | | }) |
| | | } |
| | |
| | | if (res.code === 200 && type === 'T') { |
| | | getOrocessRecords() |
| | | } else if (res.code === 200 && type === 'C') { |
| | | getOrocessRecordCC() |
| | | // getOrocessRecordCC() |
| | | } |
| | | }) |
| | | } |
| | |
| | | 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 = [ |
| | |
| | | Toast.fail({ message: '投料明细不能为空' }) |
| | | return |
| | | } |
| | | if (produceFrom.qualified <= 0) { |
| | | Toast.fail({ message: '产出明细不能为空' }) |
| | | return |
| | | } |
| | | statisticsData.value = [] |
| | | if (info.value.hasBom === 0) { |
| | | console.log('无bom') |
| | |
| | | |
| | | // 确认报工 |
| | | 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 }) |
| | |
| | | pageDJs() |
| | | queryByIds() |
| | | getOrocessRecords() |
| | | getOrocessRecordCC() |
| | | getData() |
| | | // getOrocessRecordCC() |
| | | }) |
| | | </script> |
| | | |
| | |
| | | /*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; |
| | |
| | | } |
| | | } |
| | | } |
| | | .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; |
| | | } |
| | | } |
| | | } |
| | | } |
| | |
| | | } |
| | | } |
| | | .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; |
| | |
| | | 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; |
| | |
| | | input { |
| | | width: 30px; |
| | | height: 30px; |
| | | border: 1PX solid #CCCCCC; |
| | | margin: 0 !important; |
| | | } |
| | | span { |
| | |
| | | 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; |
| | | } |
| | | } |
| | | } |
| | | } |