<template>
|
<div class="page">
|
<!-- 入库(转库单) -->
|
<div class="page_info" v-if="info.wtransfer && type === QRCodeType.ZKD.toString()">
|
<div class="page_info_title" v-if="info.wtransfer.inPlandate">{{'计划入库日期:' + info.wtransfer.inPlandate }}</div>
|
<div class="page_info_title" v-else>{{'计划入库日期:' + info.wtransfer.planDate }}</div>
|
<div class="page_info_list">
|
<div class="page_info_list_item">
|
<div class="page_info_list_item_label">来源类型:</div>
|
<div class="page_info_list_item_nr" v-if="info.wtransfer.originType === 0">采购订单</div>
|
<div class="page_info_list_item_nr" v-else-if="info.wtransfer.originType === 1">生产工单</div>
|
<div class="page_info_list_item_nr" v-else-if="info.wtransfer.originType === 2">销售订单</div>
|
<div class="page_info_list_item_nr" v-else-if="info.wtransfer.originType === 3">转库单</div>
|
<div class="page_info_list_item_nr" v-else-if="info.wtransfer.originType === 4">盘点单</div>
|
<div class="page_info_list_item_nr" v-else>-</div>
|
</div>
|
<div class="page_info_list_item">
|
<div class="page_info_list_item_label">申请人员:</div>
|
<div class="page_info_list_item_nr" v-if="info.wtransfer.userName">{{ info.wtransfer.userName + '/' + info.wtransfer.userDepartName }}</div>
|
<div class="page_info_list_item_nr" v-else>{{ info.wtransfer.inUserName + '/' + info.wtransfer.inDepartName }}</div>
|
</div>
|
<div class="page_info_list_items">
|
<div class="page_info_list_item_label">来源单号:</div>
|
<div class="page_info_list_item_nr">{{ info.wtransfer.originCode ? info.wtransfer.originCode : '-' }}</div>
|
</div>
|
<div class="page_info_list_items">
|
<div class="page_info_list_item_label">申请时间:</div>
|
<div class="page_info_list_item_nr">{{ info.wtransfer.createTime ? info.wtransfer.createTime : '-' }}</div>
|
</div>
|
</div>
|
<div class="page_info_bz" v-if="info.wtransfer.abstracts">
|
<div class="page_info_bz_title">转库备注:</div>
|
<div class="page_info_bz_nr">{{ info.wtransfer.abstracts }}</div>
|
</div>
|
</div>
|
<!-- 入库(入库单) -->
|
<div class="page_info" v-if="info.woutbound && type === QRCodeType.RKD.toString()">
|
<div class="page_info_title">{{'计划入库日期:' + info.woutbound.planDate }}</div>
|
<div class="page_info_list">
|
<div class="page_info_list_item">
|
<div class="page_info_list_item_label">来源类型:</div>
|
<div class="page_info_list_item_nr" v-if="info.woutbound.originType === 0">采购订单</div>
|
<div class="page_info_list_item_nr" v-else-if="info.woutbound.originType === 1">生产工单</div>
|
<div class="page_info_list_item_nr" v-else-if="info.woutbound.originType === 2">销售订单</div>
|
<div class="page_info_list_item_nr" v-else-if="info.woutbound.originType === 3">转库单</div>
|
<div class="page_info_list_item_nr" v-else-if="info.woutbound.originType === 4">盘点单</div>
|
<div class="page_info_list_item_nr" v-else>-</div>
|
</div>
|
<div class="page_info_list_items">
|
<div class="page_info_list_item_label">来源单号:</div>
|
<div class="page_info_list_item_nr">{{ info.woutbound.originCode ? info.woutbound.originCode : '-' }}</div>
|
</div>
|
<div class="page_info_list_item">
|
<div class="page_info_list_item_label">申请人员:</div>
|
<div class="page_info_list_item_nr" v-if="info.woutbound.userName">{{ info.woutbound.userName + '/' + info.woutbound.userDepartName }}</div>
|
<div class="page_info_list_item_nr" v-else>{{ info.woutbound.inUserName + '/' + info.woutbound.inDepartName }}</div>
|
</div>
|
<div class="page_info_list_items">
|
<div class="page_info_list_item_label">申请时间:</div>
|
<div class="page_info_list_item_nr">{{ info.woutbound.createTime ? info.woutbound.createTime : '-' }}</div>
|
</div>
|
</div>
|
<div class="page_info_bz" v-if="info.woutbound.abstracts">
|
<div class="page_info_bz_title">转库备注:</div>
|
<div class="page_info_bz_nr">{{ info.woutbound.abstracts }}</div>
|
</div>
|
</div>
|
<div class="page_h"></div>
|
<!-- 打开选择工装 -->
|
<!-- <div class="switch" v-if="type === QRCodeType.ZKD.toString()">-->
|
<!-- <button @click="openxz">手动选择</button>-->
|
<!-- </div>-->
|
<!-- <div class="page_h" v-if="type === QRCodeType.ZKD.toString()"></div>-->
|
<!-- 待入库物料 -->
|
<van-collapse v-model="activeNames">
|
<!-- 转库单(多个仓库) -->
|
<template v-if="route.query.type == 7">
|
<van-collapse-item v-for="(item, index) in info.wtransferWarehouseList" :key="index" :name="index">
|
<template #title>
|
<div class="page_sfq"><img src="@/assets/icon/chuku_ic_cangku@2x.png" alt="" /> {{ item.warehouseName}}</div>
|
</template>
|
<div class="page_dck">
|
<div class="page_dck_title">
|
<div class="page_dck_title_x"></div>
|
<span>待入库物料</span>
|
</div>
|
</div>
|
<div class="page_content" v-for="(item1, idx) in item.wtransferDetailList" :key="idx">
|
<div class="page_content_title">
|
<div class="page_content_title_top">
|
<span v-if="item1.batch">{{ item1.materialName + ' | ' + item1.materialCode }}</span>
|
<span v-else>{{ item1.materialName + ' | ' + item1.materialCode }}</span>
|
<span>{{item1.outActnum}}{{item1.unitName}}</span>
|
</div>
|
<div class="page_content_title_bottom">
|
<span class="green" v-if="item1.qualityType === 0">合格 <span class="black">/</span> </span>
|
<span class="warning" v-else-if="item1.qualityType === 1">不良 <span class="black">/</span> </span>
|
<span class="error" v-else-if="item1.qualityType === 2">报废 <span class="black">/</span> </span>
|
<span v-else>- / </span>
|
<span>{{item1.procedureName ? item1.procedureName : '-'}} / </span>
|
<span>{{item1.batch ? item1.batch : '-'}}</span>
|
</div>
|
</div>
|
<!-- <div class="page_content_list" v-for="(item2, indx) in item1.wstockExtListVOList" :key="indx">-->
|
<!-- <div class="page_content_list_item">-->
|
<!-- <div class="page_content_list_item_label">入库货位:</div>-->
|
<!-- <div class="page_content_list_item_nr">{{item2.locationName}}</div>-->
|
<!-- </div>-->
|
<!-- <div class="page_content_list_items">-->
|
<!-- <div class="page_content_list_item_label">数量:</div>-->
|
<!-- <div class="page_content_list_item_nr">{{item2.num}}{{item2.unitName}}</div>-->
|
<!-- </div>-->
|
<!-- </div>-->
|
</div>
|
</van-collapse-item>
|
</template>
|
<!-- 入库单(单个仓库) -->
|
<template v-if="route.query.type == 9">
|
<van-collapse-item>
|
<template #title>
|
<div class="page_sfq" v-if="info.woutbound"><img src="@/assets/icon/chuku_ic_cangku@2x.png" alt="" /> {{ info.woutbound.warehouseName }}</div>
|
</template>
|
<div class="page_dck">
|
<div class="page_dck_title">
|
<div class="page_dck_title_x"></div>
|
<span>待入库物料</span>
|
</div>
|
</div>
|
<div class="page_content" v-for="(item, index) in info.woutboundDetailsWait" :key="index" :name="index">
|
<div class="page_content_title">
|
<div class="page_content_title_top">
|
<span v-if="item.batch">{{ item.materialName + ' | ' + item.materialCode }}</span>
|
<span v-else>{{ item.materialName + ' | ' + item.materialCode }}</span>
|
</div>
|
<div class="page_content_title_bottom">
|
<span class="green" v-if="item.qualityType === 0">合格 <span class="black">/</span> </span>
|
<span class="warning" v-else-if="item.qualityType === 1">不良 <span class="black">/</span> </span>
|
<span class="error" v-else-if="item.qualityType === 2">报废 <span class="black">/</span> </span>
|
<span v-else>- / </span>
|
<span>{{item.procedureName ? item.procedureName : '-'}} / </span>
|
<span>{{item.batch ? item.batch : '-'}}</span>
|
</div>
|
</div>
|
<div class="page_content_list">
|
<div class="page_content_list_item">
|
<div class="page_content_list_item_label">入库货位:</div>
|
<div class="page_content_list_item_nr">
|
{{item.locationName ? item.locationName : '-'}}
|
</div>
|
</div>
|
<div class="page_content_list_items">
|
<div class="page_content_list_item_label">数量:</div>
|
<div class="page_content_list_item_nr">{{item.num ? item.num : '-'}}{{item.unitName}}</div>
|
</div>
|
</div>
|
</div>
|
</van-collapse-item>
|
</template>
|
</van-collapse>
|
<div class="page_h"></div>
|
<div class="page_yxwl">
|
<div class="page_yxwl_title">
|
<div class="left">
|
<div class="page_yxwl_title_x"></div>
|
<span>已选择物料</span>
|
</div>
|
<div class="right" v-if="type === QRCodeType.ZKD.toString()" @click="openxz">
|
<img src="@/assets/icon/gongdan_ic_shoudong@2x.png" alt=""><span>手动入库</span>
|
</div>
|
</div>
|
<!-- 入库单(单个仓库) -->
|
<template v-if="route.query.type == 9 && info.woScanMaterialBeanList && info.woScanMaterialBeanList.length > 0">
|
<div class="page_yxwl_list">
|
<div class="page_yxwl_list_item" v-for="(item, index) in info.woScanMaterialBeanList" :key="index">
|
<div class="page_yxwl_list_item_top">
|
<!-- <div class="page_yxwl_list_item_top_left" v-if="item.batch">{{item.materialName}} | {{item.materialCode}}|{{item.batch}}</div>-->
|
<div class="page_yxwl_list_item_top_left">{{item.materialName}} | {{item.materialCode}}</div>
|
</div>
|
<div class="page_yxwl_list_item_sx">
|
<span class="green" v-if="item.qualityType === 0">合格 <span>/</span> </span>
|
<span class="warning" v-else-if="item.qualityType === 1">不良 <span>/</span> </span>
|
<span class="red" v-else-if="item.qualityType === 2">报废 <span>/</span> </span>
|
<span>{{item.procedureName ? item.procedureName : '-'}} <span>/</span> </span>
|
<span>{{item.batch ? item.batch : '-'}}</span>
|
</div>
|
<div class="page_yxwl_list_item_num">
|
<div class="dis">
|
<div class="item">
|
<div class="label">入库货位:</div>
|
<div class="nr">
|
<span>{{item.locationName ? item.locationName : '-'}}</span>
|
</div>
|
</div>
|
<div class="items">
|
<div class="label">数量:</div>
|
<div class="nr">
|
<input type="text" v-model="item.scanNum" placeholder="请输入" />
|
<span>{{item.unitName}}</span>
|
</div>
|
</div>
|
</div>
|
<div class="itemy" v-for="(item1, idx) in item.woutboundRedisCodeBeanList" :key="idx">
|
<div class="label">工装{{item1.scanCode}}:</div>
|
<div class="nr">{{item1.num}}{{item1.unitName}}</div>
|
<div class="dele" @click="dele(item1)">
|
<img src="@/assets/icon/chuku_ic_delete@2x.png" alt="" />
|
</div>
|
</div>
|
</div>
|
</div>
|
</div>
|
</template>
|
<!-- 转库单(多个仓库) -->
|
<template v-else-if="route.query.type == 7 && seleMateriaList.length > 0">
|
<!-- <template v-for="(item, index) in info.wtransferWarehouseList" :key="index"> -->
|
<div class="page_yxwl_list">
|
<div class="page_yxwl_list_item" v-for="(item1, idx) in seleMateriaList" :key="idx">
|
<div class="page_yxwl_list_item_top">
|
<!-- <div class="page_yxwl_list_item_top_left" v-if="item1.batch">{{item1.materialName}} | {{item1.materialCode}}|{{item1.batch}}</div>-->
|
<div class="page_yxwl_list_item_top_left">{{item1.materialName}} | {{item1.materialCode}}</div>
|
</div>
|
<div class="page_yxwl_list_item_sx">
|
<span class="green" v-if="item1.qualityType === 0">合格 <span>/</span> </span>
|
<span class="yellow" v-else-if="item1.qualityType === 1">不良 <span>/</span> </span>
|
<span class="red" v-else-if="item1.qualityType === 2">报废 <span>/</span> </span>
|
<span>{{item1.procedureName ? item1.procedureName : '-'}} <span>/</span> </span>
|
<span>{{item1.batch ? item1.batch : '-'}}</span>
|
</div>
|
<div class="page_yxwl_list_item_num">
|
<!-- <div class="dis">
|
<div class="item">
|
<div class="label">入库货位:</div>
|
<div class="nr">
|
<span>{{item1.locationName}}</span>
|
</div>
|
</div>
|
<div class="items">
|
<div class="label">数量:</div>
|
<div class="nr">
|
<input type="text" v-model="item1.outActnum" placeholder="请输入" />
|
<span>{{item1.unitName}}</span>
|
</div>
|
</div>
|
</div> -->
|
<div class="itemy">
|
<div class="itemy_item">
|
<div class="label">入库货位:</div>
|
<div class="nr">
|
<span>{{item1.locationName}}</span>
|
</div>
|
</div>
|
<div class="itemy_item">
|
<div class="label">数量:</div>
|
<div class="nr">
|
<!-- @input="inputNum(item1)" -->
|
<input type="number" v-model="item1.outActnum" placeholder="请输入" />
|
<span>{{item1.unitName}}</span>
|
</div>
|
</div>
|
<!-- @click="dele()" -->
|
<div class="dele" @click="dele(idx)">
|
<img src="@/assets/icon/chuku_ic_delete@2x.png" alt="" />
|
</div>
|
</div>
|
</div>
|
</div>
|
</div>
|
<!-- </template> -->
|
</template>
|
<div class="page_yxwl_kong" v-else>暂无数据</div>
|
</div>
|
<div class="page_zw"></div>
|
<!-- 提交按钮 -->
|
<div class="page_footer">
|
<!-- <div class="page_footer_qr" @click="scanCode">
|
<img src="@/assets/icon/daiban_btn_saoma@2x.png" alt="" />
|
<span>扫码入库</span>
|
</div> -->
|
<!-- <div style="width: 20px;"></div> -->
|
<div class="page_footer_ck" @click="submit">
|
<span>确认入库</span>
|
</div>
|
</div>
|
<!-- <v-ScanCode
|
:openCode="openCode"
|
:infos="smData.info"
|
:promptOrNot="false"
|
@closePopup="closePopup"
|
@onDecode="onDecode" /> -->
|
<!-- <v-ScanCode
|
:openCode="openCode1"
|
:infos="['请扫描货位码']"
|
@closePopup="closePopup1"
|
@onDecode="onDecode1" /> -->
|
<!-- 插入操作弹框 -->
|
<van-popup v-model:show="show" position="bottom" :closeable="true" :style="{ height: '60%' }" round>
|
<div class="smrk" v-if="itemData">
|
<div class="smrk_header">扫码入库</div>
|
<div class="smrk_content">
|
<div class="smrk_content_name">
|
<span v-if="itemData.batch">{{itemData.materialName}} | {{itemData.materialCode}} | {{itemData.batch}}</span>
|
<span v-else>{{itemData.materialName}} | {{itemData.materialCode}}</span>
|
<span>{{itemData.scanNum}}/{{itemData.total}}{{itemData.unitName}}</span>
|
</div>
|
<div class="smrk_content_sx">
|
<span class="green" v-if="itemData.qualityType === 0">合格 <span class="black">/</span> </span>
|
<span class="yellow" v-else-if="itemData.qualityType === 1">不良 <span class="black">/</span> </span>
|
<span class="error" v-else-if="itemData.qualityType === 2">报废 <span class="black">/</span> </span>
|
<span v-else>- / </span>
|
<span>{{itemData.procedureName ? itemData.procedureName : '-'}} / </span>
|
<span>{{itemData.batch ? itemData.batch : '-'}}</span>
|
</div>
|
<!-- 转库单 -->
|
<div class="smrk_content_gz" v-if="itemData.wtransferRedisCodeBeanList">
|
<div class="smrk_content_gz_item" v-for="(item, index) in itemData.wtransferRedisCodeBeanList" :key="index">
|
<span>{{item.scanCode}}:</span>
|
<span>{{item.num}}{{item.unitName}}</span>
|
</div>
|
</div>
|
<!-- 入库单 -->
|
<div class="smrk_content_gz" v-else-if="itemData.woutboundRedisCodeBeanList">
|
<div class="smrk_content_gz_item" v-for="(item, index) in itemData.woutboundRedisCodeBeanList" :key="index">
|
<span>{{item.scanCode}}:</span>
|
<span>{{item.num}}{{item.unitName}}</span>
|
</div>
|
</div>
|
</div>
|
<div class="smrk_footer">
|
<div class="smrk_footer_jx" @click="JXSM">继续扫码</div>
|
<div class="smrk_footer_bc" @click="submitTK">保存</div>
|
</div>
|
</div>
|
</van-popup>
|
<!-- 选择货位 -->
|
<Allocation :show="show1" :warehouseId="warehouseId" @close="closeBox" @value="getValue" />
|
<!-- 选择物料 -->
|
<MaterialIn :show="show2" :list="MateriaList" @close="closeBox1" @value="getValue1" />
|
</div>
|
</template>
|
|
<script setup lang="ts">
|
import { ref, reactive, onMounted, nextTick, watch } from 'vue'
|
import { useRoute, useRouter } from 'vue-router'
|
import { useStore } from "vuex"
|
import { Toast } from 'vant'
|
import { QRCodeType } from '@/enum'
|
import {
|
getList,
|
outScanAppliances,
|
getLocationInfo,
|
saveIn,
|
getInByWTransferId,
|
wTransferForInOut,
|
wOutBoundForInOut,
|
wOutBoundForUpload,
|
transferToInNew
|
} from '@/apis/ExWarehouse'
|
import { wTransferForInOutUpload } from '@/apis/ExWarehouse'
|
import { getBarcodeContent, getListByCondition, getListByWarehouseId } from '@/apis/WorkOrderAPI'
|
import { getDB } from '@/apis/agencyAPI'
|
// import vScanCode from '@/components/common/ScanCode.vue'
|
import Allocation from '@/components/common/allocation.vue'
|
import MaterialIn from '@/components/common/materialIn.vue'
|
|
const route = useRoute()
|
const store = useStore()
|
const router = useRouter()
|
|
let hwCode = ref<string>('')
|
let info: any = ref({})
|
let openCode1 = ref<boolean>(false)
|
let show = ref<boolean>(false) // 控制弹框打开
|
let show1 = ref<boolean>(false) // 控制弹框打开
|
|
let show2 = ref<boolean>(false) // 控制弹框打开
|
let MateriaList = ref<object[]>([]) // 物料
|
let seleMateriaList = ref<object[]>([]) // 已选物料
|
let location = ref<string | number>('') // 货位id
|
let locationName = ref<string | number>('') // 货位名称
|
|
let ids = ref<string>('')
|
let itemData: any = ref({}) // 已扫描数据
|
let warehouseId = ref<string>('') // 仓库编码
|
|
const activeNames = ref([0]) // 控制手风琴打开
|
|
let data: any = ref([]) // 详情数据
|
|
let selected: any = ref([]) // 已选数据
|
|
const whouseArray: any = ref([]) // 转库列表数据
|
|
let smData: any = reactive({ // 扫码记录后续操作数据
|
wz: [],
|
item: [],
|
info: []
|
})
|
|
const status = ref() // 0 待入库 1 已入库
|
|
const type: string = route.query.type as string // 7 转库单 9 入库单
|
|
// 控制扫码显示隐藏
|
const openCode = ref<boolean>(false)
|
|
// 修改入库数量
|
const inputNum = (item: any) => {
|
let totalNum = 0
|
seleMateriaList.value.forEach((element: any) => {
|
if (element.id === item.id) {
|
totalNum += Number(element.outActnum)
|
}
|
})
|
info.value.wtransferWarehouseList[0].wtransferDetailList.forEach((element: any) => {
|
if (element.materialId === item.materialId) {
|
if (element.outActnum < totalNum) {
|
item.outActnum = ''
|
Toast.fail({ message: '待入库数量不能小于已选择物料数量', duration: 2000 })
|
}
|
}
|
})
|
console.log(totalNum)
|
}
|
|
// 选择物料
|
const getValue1 = async (obj: any) => {
|
let val: any = JSON.parse(JSON.stringify(obj))
|
// 判断相同货位相同物料只能有一个
|
for (let i = 0; i < seleMateriaList.value.length; i++) {
|
if (seleMateriaList.value[i].locationId === location.value) {
|
if (seleMateriaList.value[i].qualityType == obj.qualityType &&
|
seleMateriaList.value[i].procedureId == obj.procedureId &&
|
seleMateriaList.value[i].batch == obj.batch &&
|
seleMateriaList.value[i].materialId == obj.materialId) {
|
Toast.fail({ message: '相同货位,同一个物料只能有一个', duration: 2000 })
|
show2.value = false
|
return
|
}
|
// if (val.materialId === seleMateriaList.value[i].materialId) {
|
// Toast.fail({ message: '相同货位,同一个物料只能有一个', duration: 2000 })
|
// show2.value = false
|
// return
|
// }
|
}
|
}
|
// 判断物料数量不能超出待入库数量
|
let materialNum = 0
|
let num = 0
|
seleMateriaList.value.forEach((item: any) => {
|
if (item.id === val.id) {
|
materialNum += Number(item.outActnum)
|
}
|
})
|
info.value.wtransferWarehouseList[0].wtransferDetailList.forEach((item: any) => {
|
if (item.id === val.id) {
|
num = item.outActnum - materialNum
|
}
|
})
|
val['outActnum'] = num
|
|
seleMateriaList.value.push({ ...val, locationId: location.value, locationName: locationName.value })
|
show2.value = false
|
}
|
|
// 提交工装
|
const getValue = async (val: any, i: number) => {
|
// for(let i = 0; i < seleMateriaList.value.length; i++) {
|
// if (seleMateriaList.value[i].locationId === val.id) {
|
// Toast.fail({ message: '不能重复选择货位', duration: 2000 })
|
// return
|
// }
|
// }
|
// 如果没有工装了,就收起弹框
|
// if (i === 0) {
|
show1.value = false
|
// }
|
location.value = val.id
|
locationName.value = val.unionName
|
show2.value = true
|
// let sweepHw = await getBarcodeContent({
|
// barcode: hwCode.value
|
// })
|
// if (sweepHw.code === 200) {
|
// if (sweepHw.data.barcodeType === QRCodeType.HW) {
|
// // show1.value = true
|
// let hw = await getLocationInfo(sweepHw.data.id)
|
// if (hw.code === 200) {
|
// let judge: string = ''
|
// info.value.wtransferWarehouseList.forEach((item: any) => {
|
// if (hw.data.warehouseId === item.warehouseId) {
|
// judge = ''
|
// outScanAppliances({
|
// barCode: val.prefix + val.code,
|
// pId: info.value.wtransfer.id,
|
// type: 1,
|
// warehouseId: hw.data.warehouseId,
|
// locationId: hw.data.id
|
// }).then(sweepGz => {
|
// if (sweepGz.code === 200) {
|
// item.wtransferDetailList.forEach(async (item1: any) => {
|
// if (sweepGz.data.materialId === item1.materialId && sweepGz.data.qualityType === item1.qualityType && sweepGz.data.procedureId === item1.procedureId && sweepGz.data.batch === item1.batch) {
|
// judge = ''
|
// let jsonBean = sweepGz.data
|
// jsonBean.wtransferDetailId = item1.id
|
// jsonBean.wtransferId = item1.transferId
|
// jsonBean.appliancesId = sweepGz.data.id
|
// jsonBean.warehouseId = item.warehouseId
|
// jsonBean.warehouseName = item.warehouseName
|
// jsonBean.locationId = hw.data.id
|
// jsonBean.locationName = hw.data.unionName
|
// let res = await wTransferForInOut({
|
// id: Number(route.query.id),
|
// wTransferType: 1,
|
// jsonBean: jsonBean,
|
// optType: 1
|
// })
|
// if (res.code === 200) {
|
// let open = await getInfo()
|
// Toast.success({ message: '操作成功' })
|
// return
|
// } else {
|
// return
|
// }
|
// // })
|
// } else {
|
// judge = 'wu'
|
// }
|
// })
|
// } else {
|
// return
|
// }
|
// })
|
// } else {
|
// judge = 'ck'
|
// }
|
// })
|
// if (judge === 'ck') {
|
// Toast.fail({ message: '仓库不一致' })
|
// } else if (judge === 'wu') {
|
// Toast.fail({ message: '未匹配到一致的数据' })
|
// }
|
// }
|
// } else {
|
// Toast({ message: '请扫描正确的货位码' })
|
// return
|
// }
|
// }
|
// show.value = false
|
}
|
|
const onDecode1 = async (datas: string[]) => {
|
let arr: any = []
|
if (info.value.wtransferRedisCodeBeanList.length !== 0) {
|
info.value.wtransferRedisCodeBeanList.forEach((element: any) => {
|
arr.push(element.appliancesId)
|
})
|
ids.value = arr.join(',')
|
} else {
|
ids.value = ''
|
}
|
hwCode.value = datas[0]
|
show1.value = true
|
openCode1.value = false
|
}
|
|
// 打开手动选择工装弹框
|
const openxz = () => {
|
// openCode1.value = true
|
getListByWarehouseId({ wareHouseId: warehouseId.value })
|
.then(res => {
|
if (res.code === 200) {
|
if (res.data.length === 1) {
|
location.value = res.data[0].id
|
locationName.value = res.data[0].unionName
|
show2.value = true
|
} else {
|
show1.value = true
|
}
|
}
|
})
|
|
}
|
|
const closeBox = () => {
|
show1.value = false
|
}
|
const closeBox1 = () => {
|
show2.value = false
|
}
|
|
// 获取详情
|
const getInfo = async (): Promise<boolean> => {
|
if (type === QRCodeType.ZKD.toString()) {
|
console.log('转库单')
|
let res = await wTransferForInOut({
|
id: Number(route.query.id),
|
wTransferType: 1
|
})
|
if (res.code === 200) {
|
info.value = res.data
|
warehouseId.value = res.data.wtransfer.inWarehouseId.toString()
|
MateriaList.value = res.data.wtransferWarehouseList[0].wtransferDetailList
|
return true
|
} else {
|
Toast.fail({ message: res.message, forbidClick: false, duration: 2000 })
|
setTimeout(() => {
|
router.go(-1)
|
}, 2000)
|
}
|
} else if (type === QRCodeType.RKD.toString()) {
|
console.log('入库单')
|
let res = await wOutBoundForInOut({
|
id: Number(route.query.id),
|
wOutboundType: 1
|
})
|
if (res.code === 200) {
|
info.value = res.data
|
return true
|
} else {
|
Toast.fail({ message: res.message, forbidClick: false, duration: 2000 })
|
setTimeout(() => {
|
router.go(-1)
|
}, 2000)
|
}
|
}
|
return false
|
}
|
|
|
// 打开扫码
|
const scanCode = (): void => {
|
if (type === QRCodeType.RKD.toString()){
|
if (info.value.warehouse && info.value.warehouse.useLocation === 1) {
|
smData.info = ['请扫描货位码', '请扫描工装码']
|
} else if (info.value.warehouse && info.value.warehouse.useLocation === 0) {
|
smData.info = ['请扫描工装码']
|
}
|
} else {
|
smData.info = ['请扫描货位码', '请扫描工装码']
|
}
|
openCode.value = true
|
}
|
|
// 弹框打开扫码
|
const JXSM = (): void => {
|
smData.info = ['请扫描工装码']
|
openCode.value = true
|
}
|
|
// 关闭扫码组件
|
const closePopup = (): void => {
|
openCode.value = false
|
}
|
|
// 关闭扫码组件
|
const closePopup1 = (): void => {
|
openCode1.value = false
|
}
|
|
// 提交入库
|
const submit = () => {
|
if (type === QRCodeType.ZKD.toString()) {
|
if (seleMateriaList.value.length > 0) {
|
let result = seleMateriaList.value.reduce((a: any, b: any) => {
|
if (a[b.id]) {
|
a[b.id].push(b);
|
} else {
|
a[b.id] = [b];
|
}
|
return a;
|
}, {});
|
for (let i = 0; i < info.value.wtransferWarehouseList[0].wtransferDetailList.length; i++) {
|
for (let a in result) {
|
if (info.value.wtransferWarehouseList[0].wtransferDetailList[i].id == a) {
|
let total = 0
|
for (let b = 0; b < result[a].length; b++) {
|
total = Number(total) + Number(result[a][b].outActnum)
|
}
|
if (!total || total <= 0) {
|
return Toast.fail({ message: '入库数量不能小于0', forbidClick: true, duration: 2000 })
|
}
|
if (total > info.value.wtransferWarehouseList[0].wtransferDetailList[i].outActnum) {
|
return Toast.fail({ message: '入库数量不能大于待入库数量', forbidClick: true, duration: 2000 })
|
}
|
}
|
}
|
}
|
let submitTransferInDetailDTOList: any = []
|
seleMateriaList.value.forEach((item: any) => {
|
submitTransferInDetailDTOList.push({
|
inNum: item.outActnum,
|
locationId: item.locationId,
|
wtransferDetailId: item.id
|
})
|
})
|
transferToInNew({
|
submitTransferInDetailDTOList,
|
wtransferId: route.query.id
|
}).then(res => {
|
if (res.code === 200) {
|
store.dispatch('getUpcomingNum')
|
Toast.success({ message: '操作成功', forbidClick: true, duration: 2000 })
|
setTimeout(() => {
|
if (route.query.Type == '4') { // 跳转完工入库详情
|
router.push({ name: 'completionDetails', query: { id: route.query.id, dbid: route.query.dbid, type: 7, isShow: 2 } })
|
return
|
}
|
router.replace({ name: 'wTransferDetail', query: { id: route.query.id } })
|
}, 2000)
|
}
|
})
|
} else {
|
Toast.fail({ message: '转入物料不能为空', forbidClick: true, duration: 2000 })
|
}
|
// wTransferForInOutUpload({
|
// id: info.value.wtransfer.id,
|
// wTransferType: 1
|
// }).then(res => {
|
// if (res.code === 200) {
|
// store.dispatch('getUpcomingNum')
|
// Toast.success({ message: '操作成功', forbidClick: true, duration: 2000 })
|
// setTimeout(() => {
|
// // router.go(-1)
|
// if (route.query.Type == '4') { // 跳转完工入库详情
|
// router.push({ name: 'completionDetails', query: { id: route.query.id, dbid: route.query.dbid, type: 7, isShow: 2 } })
|
// return
|
// }
|
// router.replace({ name: 'wTransferDetail', query: { id: route.query.id } })
|
// }, 2000)
|
// }
|
// })
|
} else if (type === QRCodeType.RKD.toString()) {
|
wOutBoundForUpload({
|
id: info.value.woutbound.id,
|
wOutboundType: 1
|
}).then(res => {
|
if (res.code === 200) {
|
store.dispatch('getUpcomingNum')
|
Toast.success({ message: '操作成功', forbidClick: true, duration: 2000 })
|
setTimeout(() => {
|
// router.go(-1)
|
router.replace({ name: 'wInboundDetail', query: { id: route.query.id } })
|
}, 2000)
|
}
|
})
|
}
|
}
|
|
// 删除操作
|
const dele = (i: number) => {
|
if (type === QRCodeType.ZKD.toString()) {
|
seleMateriaList.value.forEach((item: any, index: number) => {
|
if (i == index) {
|
seleMateriaList.value.splice(index, 1)
|
}
|
})
|
// wTransferForInOut({
|
// id: Number(route.query.id),
|
// wTransferType: 1,
|
// optType: 2,
|
// jsonBean: item
|
// }).then(res => {
|
// if (res.code === 200) {
|
// getInfo()
|
// }
|
// })
|
} else if (type === QRCodeType.RKD.toString()) {
|
wOutBoundForInOut({
|
id: Number(route.query.id),
|
wOutboundType: 1,
|
optType: 2,
|
jsonBean: item
|
}).then(res => {
|
if (res.code === 200) {
|
getInfo()
|
}
|
})
|
}
|
}
|
|
// 点击弹框保存
|
const submitTK = () => {
|
itemData.value = {}
|
show.value = false
|
}
|
|
// 获取扫码值
|
const onDecode = async (datas: string[]): Promise<void> => {
|
await nextTick(() => {
|
openCode.value = false
|
})
|
if (type == QRCodeType.RKD.toString()) { // 入库单
|
if (info.value.warehouse.useLocation === 0) { // 禁用货位
|
let type = await getBarcodeContent({
|
barcode: datas[0]
|
})
|
if (type.code === 200) {
|
if (type.data.barcodeType === QRCodeType.GZ) {
|
let gz = await getListByCondition({ id: type.data.id })
|
if (gz.code === 200) {
|
let open: boolean = false
|
let jsonBean: any = {}
|
jsonBean.woutboundId = Number(route.query.id)
|
jsonBean.appliancesId = gz.data[0].id
|
jsonBean.scanCode = datas[0]
|
jsonBean.warehouseId = info.value.warehouse.id
|
jsonBean.warehouseName = info.value.warehouse.name
|
jsonBean.materialId = gz.data[0].materialId
|
jsonBean.materialCode = gz.data[0].mmodelCode
|
jsonBean.materialName = gz.data[0].mmodelName
|
for(let i = 0; i < info.value.woutboundDetailsWait.length; i++) {
|
// 判断批次号和物料id工序是否一致
|
if (info.value.woutboundDetailsWait[i].batch === gz.data[0].batch && info.value.woutboundDetailsWait[i].materialId === gz.data[0].materialId && info.value.woutboundDetailsWait[i].procedureId === gz.data[0].procedureId) {
|
open = true
|
jsonBean.woutboundDetailId = info.value.woutboundDetailsWait[i].id
|
jsonBean.unitid = info.value.woutboundDetailsWait[i].unitId
|
jsonBean.unitName = info.value.woutboundDetailsWait[i].unitName
|
jsonBean.batch = info.value.woutboundDetailsWait[i].batch
|
jsonBean.num = info.value.woutboundDetailsWait[i].num
|
jsonBean.procedureId = info.value.woutboundDetailsWait[i].procedureId
|
jsonBean.procedureName = info.value.woutboundDetailsWait[i].pmodelName
|
jsonBean.qualityType = info.value.woutboundDetailsWait[i].qualityType
|
let submit = await wOutBoundForInOut({
|
id: Number(route.query.id),
|
wOutboundType: 1,
|
jsonBean: jsonBean,
|
optType: 1
|
})
|
if (submit.code === 200) {
|
console.log(submit)
|
getInfo()
|
}
|
}
|
}
|
if (!open) {
|
Toast.fail({ message: '数据不一致' })
|
}
|
}
|
} else {
|
Toast.fail({ message: '请扫描正确的工装码' })
|
}
|
}
|
return
|
}
|
if (smData.info.length === 1) { // 弹框里的继续扫码
|
let res = await outScanAppliances({
|
barCode: datas.join(' '),
|
pId: info.value.woutbound.id,
|
type: 3,
|
warehouseId: itemData.value.ckid,
|
locationId: itemData.value.locationId
|
})
|
if (res.code === 200) {
|
let judge: string = ''
|
if (itemData.value.materialId === res.data.materialId) {
|
judge = ''
|
info.value.woutboundDetailsWait.forEach((item: any) => {
|
if (itemData.value.materialId === item.materialId && res.data.qualityType == item.qualityType && res.data.procedureId == item.procedureId && res.data.batch == item.batch) {
|
judge = ''
|
let jsonBean = res.data
|
jsonBean.woutboundDetailId = item.id
|
jsonBean.woutboundId = item.outboundId
|
jsonBean.wtransferDetailId = item.id
|
jsonBean.wtransferId = item.transferId
|
jsonBean.appliancesId = res.data.id
|
jsonBean.warehouseId = info.value.woutbound.warehouseId
|
jsonBean.warehouseName = info.value.woutbound.warehouseName
|
jsonBean.locationId = itemData.value.locationId
|
jsonBean.locationName = itemData.value.locationName
|
wOutBoundForInOut({
|
id: Number(route.query.id),
|
wOutboundType: 1,
|
jsonBean: jsonBean,
|
optType: 1
|
}).then(async (resa) => {
|
if (resa.code === 200) {
|
let open = await getInfo()
|
if (open) {
|
info.value.woScanMaterialBeanList.forEach((yitem: any) => {
|
if (yitem.locationId === itemData.value.locationId) {
|
itemData.value = yitem
|
itemData.value.ckmc = info.value.woutbound.warehouseName
|
itemData.value.ckid = info.value.woutbound.warehouseId
|
itemData.value.wtransferDetailId = item.id
|
itemData.value.wtransferId = item.id
|
itemData.value.wtransferId = item.transferId
|
itemData.value.appliancesId = res.data.id
|
itemData.value.total = item.num
|
console.log('itemData', itemData.value)
|
}
|
})
|
}
|
} else {
|
return
|
}
|
})
|
} else {
|
judge = 'wu'
|
}
|
})
|
} else {
|
judge = 'ck'
|
}
|
if (judge === 'ck') {
|
Toast.fail({ message: '仓库不一致' })
|
} else if (judge === 'wu') {
|
Toast.fail({ message: '未匹配到一致的数据' })
|
}
|
}
|
} else if (smData.info.length === 2) { // 页面上的继续扫码
|
// 货位操作
|
let sweepHw = await getBarcodeContent({
|
barcode: datas[0]
|
})
|
if (sweepHw.code === 200) {
|
if (sweepHw.data.barcodeType === QRCodeType.HW) {
|
let hw = await getLocationInfo(sweepHw.data.id)
|
if (hw.code === 200) {
|
let judge: string = ''
|
if (info.value.woutbound.warehouseId === hw.data.warehouseId) {
|
judge = ''
|
for (let i = 0; i < info.value.woutboundDetailsWait.length; i++) {
|
if (info.value.woutboundDetailsWait[i].locationId ? info.value.woutboundDetailsWait[i].locationId === hw.data.id : true) {
|
judge = ''
|
let sweepGz = await outScanAppliances({
|
barCode: datas[1],
|
pId: info.value.woutbound.id,
|
type: 3,
|
warehouseId: hw.data.warehouseId,
|
locationId: hw.data.id
|
})
|
if (sweepGz.code === 200) {
|
for (let i = 0; i < info.value.woutboundDetailsWait.length; i++) {
|
// sweepGz.data.procedureId == info.value.woutboundDetailsWait[i].procedureId &&
|
if (info.value.woutboundDetailsWait[i].materialId === sweepGz.data.materialId && sweepGz.data.qualityType == info.value.woutboundDetailsWait[i].qualityType && sweepGz.data.batch == info.value.woutboundDetailsWait[i].batch) {
|
judge = ''
|
let jsonBean = sweepGz.data
|
jsonBean.woutboundDetailId = info.value.woutboundDetailsWait[i].id
|
jsonBean.woutboundId = info.value.woutboundDetailsWait[i].outboundId
|
jsonBean.appliancesId = sweepGz.data.id
|
jsonBean.locationId = hw.data.id
|
jsonBean.warehouseId = info.value.woutbound.warehouseId
|
jsonBean.warehouseName = info.value.woutbound.warehouseName
|
jsonBean.locationName = hw.data.unionName
|
console.log(jsonBean)
|
let tj = await wOutBoundForInOut({
|
id: Number(route.query.id),
|
wOutboundType: 1,
|
jsonBean: jsonBean,
|
optType: 1
|
})
|
if (tj.code === 200) {
|
let open = await getInfo()
|
if (open) {
|
info.value.woScanMaterialBeanList.forEach((yitem1: any) => {
|
if (yitem1.locationId === hw.data.id) {
|
itemData.value = yitem1
|
itemData.value.ckmc = info.value.woutbound.warehouseName
|
itemData.value.ckid = info.value.woutbound.warehouseId
|
itemData.value.wtransferDetailId = info.value.woutboundDetailsWait[i].id
|
itemData.value.wtransferId = info.value.woutboundDetailsWait[i].id
|
itemData.value.wtransferId = info.value.woutboundDetailsWait[i].transferId
|
itemData.value.appliancesId = sweepGz.data.id
|
itemData.value.total = info.value.woutboundDetailsWait[i].num
|
console.log('itemData', itemData.value)
|
nextTick(() => {
|
show.value = true
|
})
|
}
|
})
|
await nextTick(() => {
|
show.value = true
|
})
|
return
|
}
|
} else {
|
Toast({ message: tj.message })
|
return
|
}
|
} else {
|
judge = 'wu'
|
}
|
}
|
} else {
|
Toast({ message: sweepGz.message })
|
return
|
}
|
} else {
|
judge = 'wu'
|
}
|
}
|
} else {
|
judge = 'ck'
|
}
|
if (judge === 'ck') {
|
Toast.fail({ message: '仓库不一致' })
|
} else if (judge === 'wu') {
|
Toast.fail({ message: '未匹配到一致的数据' })
|
}
|
}
|
} else {
|
Toast({ message: '请扫描正确的货位码' })
|
return
|
}
|
} else {
|
Toast({ message: sweepHw.message })
|
return
|
}
|
}
|
} else if (type == QRCodeType.ZKD.toString()) { // 转库单
|
if (smData.info.length === 1) { // 弹框里的继续扫码
|
let res = await outScanAppliances({
|
barCode: datas.join(' '),
|
pId: info.value.wtransfer.id,
|
type: 1,
|
warehouseId: itemData.value.ckid,
|
locationId: itemData.value.locationId
|
})
|
if (res.code === 200) {
|
if (itemData.value.materialId === res.data.materialId) {
|
let judge: string = ''
|
info.value.wtransferWarehouseList.forEach((item: any) => {
|
if (itemData.value.ckid === item.warehouseId) { // 判断仓库是否一致
|
judge = ''
|
item.wtransferDetailList.forEach((item1: any) => {
|
if (itemData.value.materialId === item1.materialId && res.data.qualityType == item1.qualityType && res.data.procedureId == item1.procedureId && res.data.batch === item1.batch) { // 物料一致
|
judge = ''
|
let jsonBean = res.data
|
jsonBean.wtransferDetailId = item1.id
|
jsonBean.wtransferId = item1.transferId
|
jsonBean.appliancesId = res.data.id
|
jsonBean.warehouseId = item.warehouseId
|
jsonBean.warehouseName = item.warehouseName
|
jsonBean.locationId = itemData.value.locationId
|
jsonBean.locationName = itemData.value.locationName
|
wTransferForInOut({
|
id: Number(route.query.id),
|
wTransferType: 1,
|
jsonBean: jsonBean,
|
optType: 1
|
}).then(async (resa) => {
|
if (resa.code === 200) {
|
let open = await getInfo()
|
if (open) {
|
info.value.wtransferWarehouseList.forEach((yitem: any) => {
|
if (yitem.warehouseId === item.warehouseId) {
|
yitem.wtScanMaterialBeanList.forEach((yitem1: any) => {
|
if (yitem1.locationId === itemData.value.locationId) {
|
itemData.value = yitem1
|
itemData.value.ckmc = item.warehouseName
|
itemData.value.ckid = item.warehouseId
|
itemData.value.wtransferDetailId = item1.id
|
itemData.value.wtransferId = item1.id
|
itemData.value.wtransferId = item1.transferId
|
itemData.value.appliancesId = res.data.id
|
itemData.value.total = item1.outPlannum
|
}
|
})
|
}
|
})
|
return
|
}
|
} else {
|
return
|
}
|
})
|
} else {
|
judge = 'wu'
|
}
|
})
|
} else {
|
judge = 'ck'
|
}
|
})
|
if (judge === 'ck') {
|
Toast.fail({ message: '仓库不一致' })
|
} else if (judge === 'wu') {
|
Toast.fail({ message: '未匹配到一致的数据' })
|
}
|
} else {
|
Toast.fail({ message: '物料不一致' })
|
}
|
}
|
} else if (smData.info.length === 2) { // 页面上的继续扫码
|
// 货位操作
|
let sweepHw = await getBarcodeContent({
|
barcode: datas[0]
|
})
|
if (sweepHw.code === 200) {
|
if (sweepHw.data.barcodeType === QRCodeType.HW) {
|
let hw = await getLocationInfo(sweepHw.data.id)
|
if (hw.code === 200) {
|
let judge: string = ''
|
info.value.wtransferWarehouseList.forEach((item: any) => {
|
console.log(hw.data.warehouseId, item.warehouseId)
|
if (hw.data.warehouseId === item.warehouseId) {
|
judge = ''
|
outScanAppliances({
|
barCode: datas[1],
|
pId: info.value.wtransfer.id,
|
type: 1,
|
warehouseId: hw.data.warehouseId,
|
locationId: hw.data.id
|
}).then(sweepGz => {
|
if (sweepGz.code === 200) {
|
item.wtransferDetailList.forEach(async (item1: any) => {
|
if (sweepGz.data.materialId === item1.materialId && sweepGz.data.qualityType === item1.qualityType && sweepGz.data.procedureId === item1.procedureId && sweepGz.data.batch === item1.batch) {
|
judge = ''
|
let jsonBean = sweepGz.data
|
jsonBean.wtransferDetailId = item1.id
|
jsonBean.wtransferId = item1.transferId
|
jsonBean.appliancesId = sweepGz.data.id
|
jsonBean.warehouseId = item.warehouseId
|
jsonBean.warehouseName = item.warehouseName
|
jsonBean.locationId = hw.data.id
|
jsonBean.locationName = hw.data.unionName
|
let res = await wTransferForInOut({
|
id: Number(route.query.id),
|
wTransferType: 1,
|
jsonBean: jsonBean,
|
optType: 1
|
})
|
if (res.code === 200) {
|
let open = await getInfo()
|
if (open) {
|
info.value.wtransferWarehouseList.forEach((yitem: any) => {
|
if (yitem.warehouseId === item.warehouseId) {
|
yitem.wtScanMaterialBeanList.forEach((yitem1: any) => {
|
if (yitem1.locationId === hw.data.id) {
|
itemData.value = yitem1
|
itemData.value.ckmc = item.warehouseName
|
itemData.value.ckid = item.warehouseId
|
itemData.value.wtransferDetailId = item1.id
|
itemData.value.wtransferId = item1.id
|
itemData.value.wtransferId = item1.transferId
|
itemData.value.appliancesId = sweepGz.data.id
|
itemData.value.total = item1.outPlannum
|
console.log('itemData', itemData.value)
|
nextTick(() => {
|
show.value = true
|
})
|
}
|
})
|
}
|
})
|
return
|
}
|
} else {
|
return
|
}
|
// })
|
} else {
|
judge = 'wu'
|
}
|
})
|
} else {
|
return
|
}
|
})
|
} else {
|
judge = 'ck'
|
}
|
})
|
if (judge === 'ck') {
|
Toast.fail({ message: '仓库不一致' })
|
} else if (judge === 'wu') {
|
Toast.fail({ message: '未匹配到一致的数据' })
|
}
|
}
|
} else {
|
Toast({ message: '请扫描正确的货位码' })
|
return
|
}
|
}
|
}
|
}
|
}
|
|
// 获取待办详情(判断当前待办是否已处理)
|
const getDBs = async (id: string): Promise<any> => {
|
let res = await getDB(id)
|
if (res.code === 200) {
|
if (res.data.status === 1) {
|
if (type === '7') {
|
await router.replace({ name: 'wTransferDetail', query: { id: route.query.id } })
|
} else if (type === '9') {
|
await router.replace({ name: 'wInboundDetail', query: { id: route.query.id } })
|
}
|
} else {
|
await getInfo()
|
}
|
}
|
}
|
|
// 监听弹框
|
watch(() => show.value, (news) => {
|
if (!news) {
|
smData.wz = []
|
smData.item = []
|
}
|
}, { immediate: true })
|
|
onMounted(() => {
|
if (route.query.dbid) {
|
getDBs(route.query.dbid as string)
|
} else {
|
getInfo()
|
}
|
})
|
</script>
|
|
<style lang="scss" scoped>
|
.page {
|
width: 100%;
|
height: 100%;
|
position: absolute;
|
background: #F7F7F7;
|
.page_info {
|
padding: 30px;
|
background: #ffffff;
|
.page_info_title {
|
font-size: 32px;
|
font-weight: 500;
|
color: #4275FC;
|
}
|
.page_info_list {
|
display: flex;
|
flex-wrap: wrap;
|
margin: 30px 0 0 0;
|
.page_info_list_items {
|
width: 100%;
|
display: flex;
|
margin-top: 24px;
|
.page_info_list_item_label {
|
flex-shrink: 0;
|
font-size: 26px;
|
font-weight: 400;
|
color: #666666;
|
}
|
.page_info_list_item_nr {
|
flex: 1;
|
font-size: 26px;
|
font-weight: 400;
|
color: #222222;
|
}
|
}
|
.page_info_list_item {
|
width: 100%;
|
display: flex;
|
margin-top: 24px;
|
&:nth-child(1) {
|
margin-top: 0;
|
}
|
.page_info_list_item_label {
|
flex-shrink: 0;
|
font-size: 26px;
|
font-weight: 400;
|
color: #666666;
|
}
|
.page_info_list_item_nr {
|
flex: 1;
|
font-size: 26px;
|
font-weight: 400;
|
color: #222222;
|
}
|
}
|
}
|
.page_info_bz {
|
padding: 24px;
|
background: #F7F7F7;
|
.page_info_bz_title {
|
font-size: 26px;
|
font-weight: 500;
|
color: #222222;
|
margin-bottom: 20px;
|
}
|
.page_info_bz_nr {
|
font-size: 24px;
|
font-weight: 400;
|
color: #333333;
|
}
|
}
|
}
|
.page_h {
|
height: 20px;
|
}
|
.switch {
|
padding: 0 30px;
|
button {
|
width: 100%;
|
border: none;
|
height: 76px;
|
background: $nav-color;
|
border-radius: 36px;
|
font-size: 26px;
|
font-weight: 400;
|
color: #FFFFFF;
|
}
|
}
|
.page_sfq {
|
font-size: 32px;
|
font-weight: 500;
|
color: #222222;
|
display: flex;
|
align-items: center;
|
img {
|
width: 36px;
|
height: 36px;
|
margin-right: 16px;
|
}
|
}
|
.page_dck {
|
.page_dck_title {
|
display: flex;
|
align-items: center;
|
.page_dck_title_x {
|
width: 8px;
|
height: 30px;
|
background: #4275FC;
|
border-radius: 2px;
|
margin-right: 16px;
|
}
|
span {
|
font-size: 32px;
|
font-weight: 500;
|
color: #222222;
|
}
|
}
|
}
|
.page_content {
|
margin-top: 36px;
|
.page_content_title {
|
display: flex;
|
flex-direction: column;
|
margin-bottom: 10px;
|
.page_content_title_top {
|
display: flex;
|
align-items: center;
|
justify-content: space-between;
|
span {
|
&:nth-child(1) {
|
font-size: 30px;
|
font-weight: 500;
|
color: #222222;
|
}
|
&:nth-child(2) {
|
flex-shrink: 0;
|
font-size: 24px;
|
font-weight: 400;
|
color: #333333;
|
span {
|
font-size: 24px;
|
color: $nav-color;
|
}
|
}
|
}
|
}
|
.page_content_title_bottom {
|
.green {
|
color: $nav-stateColor7 !important;
|
.black {
|
color: black !important;
|
}
|
}
|
.warning {
|
color: $nav-stateColor5 !important;
|
.black {
|
color: black !important;
|
}
|
}
|
.error {
|
color: $nav-stateColor4 !important;
|
.black {
|
color: black !important;
|
}
|
}
|
span {
|
font-size: 24px;
|
font-weight: 400;
|
color: #666666;
|
}
|
}
|
}
|
.lineBorder {
|
border: none !important;
|
padding-bottom: 0 !important;
|
margin-bottom: 24px;
|
}
|
.page_content_list {
|
width: 100%;
|
display: flex;
|
align-items: center;
|
flex-wrap: wrap;
|
&:first-child {
|
margin: 0;
|
}
|
&:last-child {
|
border: none;
|
}
|
.page_content_list_nums {
|
width: 30%;
|
display: flex;
|
.page_content_list_num_label {
|
font-size: 26px;
|
font-weight: 400;
|
color: #666666;
|
}
|
.page_content_list_num_nr {
|
font-size: 26px;
|
font-weight: 400;
|
color: #222222;
|
}
|
}
|
.page_content_list_num {
|
width: 70%;
|
display: flex;
|
.page_content_list_num_label {
|
font-size: 26px;
|
font-weight: 400;
|
color: #666666;
|
}
|
.page_content_list_num_nr {
|
font-size: 26px;
|
font-weight: 400;
|
color: #222222;
|
}
|
}
|
.page_content_list_items {
|
width: 30%;
|
display: flex;
|
margin-top: 24px;
|
.page_content_list_item_label {
|
font-size: 26px;
|
font-weight: 400;
|
color: #666666;
|
flex-shrink: 0;
|
}
|
.page_content_list_item_nr {
|
font-size: 26px;
|
font-weight: 400;
|
color: #222222;
|
}
|
}
|
.page_content_list_item {
|
width: 70%;
|
display: flex;
|
.page_content_list_item_label {
|
font-size: 26px;
|
font-weight: 400;
|
color: #666666;
|
flex-shrink: 0;
|
}
|
.page_content_list_item_nr {
|
font-size: 26px;
|
font-weight: 400;
|
color: #222222;
|
}
|
}
|
}
|
}
|
.page_yxwl {
|
padding: 30px;
|
background: #ffffff;
|
.page_yxwl_title {
|
display: flex;
|
align-items: center;
|
justify-content: space-between;
|
.page_yxwl_title_x {
|
width: 8px;
|
height: 30px;
|
background: #4275FC;
|
border-radius: 2px;
|
margin-right: 16px;
|
}
|
span {
|
font-size: 32px;
|
font-weight: 500;
|
color: #222222;
|
}
|
.left {
|
display: flex;
|
align-items: center;
|
.page_yxwl_title_x {
|
width: 8px;
|
height: 30px;
|
background: #4275FC;
|
border-radius: 2px;
|
margin-right: 16px;
|
}
|
span {
|
font-size: 32px;
|
font-weight: 500;
|
color: #222222;
|
}
|
}
|
.right {
|
display: flex;
|
align-items: center;
|
img {
|
width: 28px;
|
height: 28px;
|
margin-right: 14px;
|
}
|
span {
|
font-size: 26px;
|
font-weight: 400;
|
color: #222222;
|
}
|
}
|
}
|
.page_yxwl_list {
|
display: flex;
|
flex-direction: column;
|
padding-bottom: 30px;
|
border-bottom: 1px solid #ececec;
|
&:last-child {
|
margin-bottom: 0;
|
border: none;
|
}
|
.page_yxwl_list_item {
|
margin-top: 28px;
|
.page_yxwl_list_item_top {
|
display: flex;
|
align-items: center;
|
justify-content: space-between;
|
.page_yxwl_list_item_top_left {
|
font-size: 30px;
|
font-weight: 500;
|
color: #222222;
|
}
|
}
|
.page_yxwl_list_item_sx {
|
display: flex;
|
align-items: center;
|
margin-top: 15px;
|
}
|
.page_yxwl_list_item_num {
|
display: flex;
|
flex-direction: column;
|
// margin-top: 30px;
|
&:first-child {
|
margin-top: 0;
|
}
|
.dis {
|
display: flex;
|
}
|
.itemy {
|
margin-top: 20px;
|
width: 100%;
|
display: flex;
|
align-items: center;
|
position: relative;
|
.itemy_item {
|
flex: 1;
|
display: flex;
|
align-items: center;
|
.label {
|
font-size: 26px;
|
font-weight: 400;
|
color: #666666;
|
flex-shrink: 0;
|
}
|
.nr {
|
font-size: 26px;
|
font-weight: 400;
|
color: #222222;
|
input {
|
width: 100px;
|
height: 35px;
|
border-radius: 8px;
|
border: 1PX solid #E5E5E5;
|
margin-right: 10px;
|
margin-left: 5px;
|
}
|
span {
|
font-size: 26px;
|
font-weight: 400;
|
color: #222222;
|
}
|
}
|
}
|
.dele {
|
position: absolute;
|
right: -30px;
|
width: 48px;
|
height: 48px;
|
img {
|
width: 100%;
|
height: 100%;
|
}
|
}
|
}
|
.items {
|
width: 50%;
|
display: flex;
|
align-items: center;
|
.label {
|
font-size: 26px;
|
font-weight: 400;
|
color: #666666;
|
flex-shrink: 0;
|
}
|
.nr {
|
font-size: 26px;
|
font-weight: 400;
|
color: #222222;
|
input {
|
width: 100px;
|
height: 40px;
|
margin-right: 10px;
|
}
|
span {
|
font-size: 26px;
|
font-weight: 400;
|
color: #222222;
|
}
|
}
|
}
|
.item {
|
width: 70%;
|
display: flex;
|
align-items: center;
|
.label {
|
font-size: 26px;
|
font-weight: 400;
|
color: #666666;
|
flex-shrink: 0;
|
}
|
.nr {
|
font-size: 26px;
|
font-weight: 400;
|
color: #222222;
|
input {
|
width: 100px;
|
height: 40px;
|
margin-right: 10px;
|
}
|
span {
|
font-size: 26px;
|
font-weight: 400;
|
color: #222222;
|
}
|
}
|
}
|
}
|
}
|
}
|
.page_yxwl_kong {
|
padding: 50px 0;
|
font-size: 25px;
|
display: flex;
|
align-items: center;
|
justify-content: center;
|
}
|
}
|
.page_zw {
|
height: 160px;
|
}
|
.page_footer {
|
width: calc(100% - 60px);
|
background: #F7F7F7;
|
display: flex;
|
align-items: center;
|
justify-content: space-between;
|
position: fixed;
|
bottom: 0;
|
left: 30px;
|
padding-bottom: 68px;
|
.page_footer_qr {
|
flex: 1;
|
height: 88px;
|
background: #fff;
|
box-shadow: 0 0 12px 0 rgba(0, 0, 0, 0.08);
|
border-radius: 8px;
|
font-size: 32px;
|
font-weight: 500;
|
color: $nav-color;
|
display: flex;
|
align-items: center;
|
justify-content: center;
|
img {
|
width: 30px;
|
height: 30px;
|
margin-right: 12px;
|
}
|
}
|
.page_footer_ck {
|
flex: 1;
|
height: 88px;
|
background: $nav-color;
|
box-shadow: 0 0 12px 0 rgba(0, 0, 0, 0.08);
|
border-radius: 8px;
|
font-size: 32px;
|
font-weight: 500;
|
color: #FFFFFF;
|
display: flex;
|
align-items: center;
|
justify-content: center;
|
}
|
}
|
.smrk {
|
width: 100%;
|
.smrk_header {
|
width: 100%;
|
height: 90px;
|
text-align: center;
|
line-height: 90px;
|
font-size: 30px;
|
font-weight: 500;
|
color: #222222;
|
}
|
.smrk_content {
|
padding: 30px;
|
.smrk_content_sx {
|
margin-bottom: 30px;
|
span {
|
color: #999999;
|
}
|
}
|
.smrk_content_name {
|
display: flex;
|
align-items: center;
|
justify-content: space-between;
|
margin-bottom: 10px;
|
span {
|
&:first-child {
|
font-size: 28px;
|
font-weight: 400;
|
color: #333333;
|
}
|
&:last-child {
|
font-size: 28px;
|
font-weight: 500;
|
color: $nav-color;
|
flex-shrink: 0;
|
}
|
}
|
}
|
.smrk_content_gz {
|
min-height: 600px;
|
overflow-y: scroll;
|
.smrk_content_gz_item {
|
margin-bottom: 30px;
|
span {
|
&:first-child {
|
font-size: 24px;
|
font-weight: 400;
|
color: #777777;
|
}
|
&:last-child {
|
font-size: 24px;
|
font-weight: 400;
|
color: #333333;
|
}
|
}
|
}
|
}
|
}
|
.smrk_footer {
|
position: fixed;
|
bottom: 0;
|
width: 100%;
|
padding: 0 30px 66px 30px;
|
box-sizing: border-box;
|
display: flex;
|
align-items: center;
|
justify-content: space-between;
|
.smrk_footer_jx {
|
width: 334px;
|
height: 88px;
|
background: #FFFFFF;
|
box-shadow: 0 0 12px 0 rgba(0, 0, 0, 0.08);
|
border-radius: 8px;
|
font-size: 30px;
|
font-weight: 500;
|
color: $nav-color;
|
display: flex;
|
align-items: center;
|
justify-content: center;
|
}
|
.smrk_footer_bc {
|
width: 334px;
|
height: 88px;
|
background: #4275FC;
|
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;
|
}
|
}
|
}
|
}
|
</style>
|