货无忧
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

1323 lines
31 KiB

<template>
<BasicContainer ref="basicContainer" :option="option" :leftClick="leftClick">
<template #head>
<view class="head">
<!-- 顶部 -->
<view class="head_top">
<input type="text" v-model="details.searchCode" placeholder="请输入包条码" class="head_top_search" />
<view class="button" @click="handleSearch">确认</view>
</view>
<!-- tabBar选项卡 -->
<view class="tabBar">
<view :class="{'tabBar-item': true, 'active': tabBarCode === 1}" @click="handleTabBarCode(1)">
有数据
</view>
<view :class="{'tabBar-item': true, 'active': tabBarCode === 2}" @click="handleTabBarCode(2)">
无数据
</view>
</view>
<!-- 控件 -->
<view class="control">
<template v-if="!showControl">
<view class="button" @click.stop="handleShowControl(1)" v-show="!showControl && tabBarCode === 1">状态修改
</view>
<view class="button" @click.stop="handleShowControl(2)" v-show="!showControl">批量删除</view>
<view class="button" @click.stop="handleShowControl(3)" v-show="!showControl">批量上架</view>
<view class="button" @click.stop="handleShowControl(4)" v-show="!showControl">批量盘点</view>
</template>
<template v-else>
<view class="button" @click.stop="handleCheckAll">全选</view>
<view class="button" @click.stop="handleInvertSelection">反选</view>
<view class="button" @click.stop="handleClose">
取消
</view>
<view class="button" @click.stop="handleConFirm">
确认
</view>
</template>
</view>
<view class="checkInfo">
<view class="checkInfo_item">
<text>已盘数量/总数:</text>
<text>{{details.scanNum + '/' + details.renderList.length}}</text>
</view>
<view class="checkInfo_item">
<!-- 随机盘点 -->
<template v-if="details.pageType === 1">
<text>订单号:</text>
<text>{{details.scanNum + '/' + details.totalNum}}</text>
</template>
<!-- 按库位盘点 -->
<template v-else-if="details.pageType === 2">
<text>订单号:</text>
<text>{{details.scanNum + '/' + details.totalNum}}</text>
</template>
<!-- 按合同号盘点 -->
<template v-else-if="details.pageType === 3">
<text>合同号:</text>
<text>{{details.scanNum + '/' + details.totalNum}}</text>
</template>
<!-- 按托盘盘点 -->
<template v-else-if="details.pageType === 4">
<text>托盘码:</text>
<text>{{details.pageInfos.trayCode}}</text>
</template>
</view>
</view>
</view>
</template>
<template #body>
<!-- 主体内容 -->
<view class="main">
<!-- 有数据 -->
<template v-if="tabBarCode === 1">
<block v-for="item in details.renderList" :key="item">
<!-- 订制品 -->
<view :class="{
'main_render': true,
'active': false,
'delete': false,
'edit': false
}">
<view @click.stop="handleItemChoose(item)" v-show="showControl">
<!-- 被选中 -->
<image v-show="item.isChoose" src="@/static/ck.png" class="main_render_checkImg" mode="">
</image>
<!-- 不被选中 -->
<image v-show="!item.isChoose" src="@/static/nock.png" class="main_render_checkImg" mode="">
</image>
</view>
<view class="main_render_container">
<view class="main_render_item">
<view>
包条码: {{item.orderPackageCode || '暂无数据'}}
</view>
<view :style="{color : (item.isManuallyAdd ? '#f00' : '#000')}" @click="editOrderCode(item)">
合同号: {{item.orderCode || '暂无数据'}}
</view>
</view>
<view class="main_render_item">
<view>
库位: {{item.positionCode || '暂无数据'}}
</view>
<view>
状态: {{details.stateArr.find(val => val.code === (item.cargoName)).title || '暂无数据'}}
</view>
</view>
<view class="main_render_item">
<view class="">
类型: <text
class="main_render_item_type">{{details.typeArr.find(val => val.code === Number(item.state)).title}}</text>
</view>
<view class="">
盘点状态:
<text :class="{
'main_render_item_type': true,
'active': Number(item.questStatus) !== 1
}">
{{details.checkStatus.find(val => val.code === Number(item.questStatus)).title}}
</text>
</view>
<view class="button_box">
<view class="button" @click="handleState(item)">
处理
</view>
<view class="button" @click="handleItemUp(item)">
上架
</view>
</view>
</view>
</view>
</view>
</block>
</template>
<!-- 无数据 -->
<template v-else>
<block v-for="item in details.stockList" :key="item">
<!-- 订制品 -->
<view :class="{
'main_render': true,
'active': false,
'delete': false,
'edit': false
}">
<view @click.stop="handleItemChoose(item)" v-show="showControl">
<!-- 被选中 -->
<image v-show="item.isChoose" src="@/static/ck.png" class="main_render_checkImg" mode="">
</image>
<!-- 不被选中 -->
<image v-show="!item.isChoose" src="@/static/nock.png" class="main_render_checkImg" mode="">
</image>
</view>
<view class="main_render_container">
<view class="main_render_item">
<view>
包条码: {{item.orderPackageCode || '暂无数据'}}
</view>
<view :style="{color : (item.isManuallyAdd ? '#f00' : '#000')}" @click="editOrderCode(item)">
合同号: {{item.orderCode || '暂无数据'}}
</view>
</view>
<view class="main_render_item">
<view>
库位: {{item.positionCode || '暂无数据'}}
</view>
<view>
状态: {{details.stateArr.find(val => val.code === (item.cargoName)).title || '暂无数据'}}
</view>
</view>
<view class="main_render_item">
<view class="">
类型: <text
class="main_render_item_type">{{details.typeArr.find(val => val.code === Number(item.state)).title}}</text>
</view>
<view class="">
盘点状态:
<text :class="{
'main_render_item_type': true,
'active': Number(item.questStatus) !== 1
}">
{{details.checkStatus.find(val => val.code === Number(item.questStatus)).title}}
</text>
</view>
<view class="button_box">
<view class="button" @click="handleState(item)">
处理
</view>
<view class="button" @click="handleItemUp(item)">
上架
</view>
</view>
</view>
</view>
</view>
</block>
</template>
<!-- 提交 -->
<button @click="submitCheck" class="submitButton" type="primary">提交盘点</button>
</view>
</template>
</BasicContainer>
<!-- 弹出层 -- 上架 -->
<PopUp ref="popUp_Up">
<view class="popUpTitle">
请扫描新的库位码,如果该货物已在其它库位,使用该功能会重新绑定库位
</view>
<input class="popUpInput" v-model="details.scancode" type="text" placeholder="请扫描货位码" disabled />
<view class="popUpInfo">
货位信息: {{details.positionInfo.positionCode || '暂无数据'}}
</view>
</PopUp>
<!-- 弹出层 -- 状态修改 -->
<PopUp ref="popUp_EditState">
<view class="popUp_EditState_container">
<block v-for="item in details.stateArr" :key="item">
<view class="popUp_row">
<view class="popUp_row_item" @click.stop="handleCheck(item)">
<!-- 被选中 -->
<image v-show="item.isCheck" src="@/static/check.png" class="popUp_row_checkImg" mode=""></image>
<!-- 不被选中 -->
<image v-show="!item.isCheck" src="@/static/nocheck.png" class="popUp_row_checkImg" mode="">
</image>
<view class="popUp_row_title">{{item.title}}</view>
</view>
<!-- 输入框 -->
<input v-show="tabBarCode === 2" class="input" type="text" :disabled="item.disabled"
v-model="item.value" />
</view>
</block>
</view>
</PopUp>
<!-- 弹出层 -- 删除 / 盘点 -->
<PopUp ref="popUp_Handle"></PopUp>
<!-- 弹出层 -- 新增 -->
<PopUp ref="popUp_Add">
<input class="popUpInput" v-model="details.addInfo.orderCode" type="text" placeholder="请输入合同号" />
</PopUp>
<!-- #ifdef APP -->
<saomiao2 :ishidestop="scanState !== 0"></saomiao2>
<!-- #endif -->
</template>
<script setup lang="ts">
import {
onShow,
onLoad,
onHide
} from '@dcloudio/uni-app'
import { reactive, toRefs, ref, onMounted } from "vue";
import utils from '@/utils/utils.js';
import {
getWarehouseTaskgetTaskConInfo,
postWarehouseTaskSelectPackageInfo,
postWarehouseTaskQuestDetailAllocation,
postWarehouseTaskAddDataInfo
} from '@/api/user.js';
import useSystemSettingsStore from '@/store/useSystemSettingsStore';
import { storeToRefs } from 'pinia';
const { scanState } = storeToRefs(useSystemSettingsStore())
const option = reactive({
/** 页面标题 */
title: '',
/** 页面是否有数据, 默认为有 (暂时没用) */
haveData: true,
/** 页面数据是否加载完毕, (暂时无用) */
isEnd: true,
/** 页面刷新 */
async pullDownRefreshInitPage() {
details.scanNum = 0
return await initPage()
}
})
const details = reactive({
/** 页面级数据 */
pageInfos: {},
/** 页面类型 1: 随机盘点; 2: 按库位盘点; 3: 按合同号盘点; 4: 按托盘盘点; */
pageType: 1,
/** 选项卡页码 */
tabBarCode: 1,
/** 搜索的码值 */
searchCode: '',
/** 是否显示控件 */
showControl: false,
/** 扫描后的值 */
scancode: '',
/** 页面渲染数组 */
renderList: [],
/** 有包条数据的数组 -- 定制品 + 部分库存品 */
orderList: [],
/** 无包条数据的数组 -- 零担 + 部分库存品 */
stockList: [{
cargoName: 10, questStatus: 0, state: 2
}],
/** 批量处理类型 1: 状态修改; 2: 批量删除; 3: 批量上架; 4: 批量盘点 */
handleType: 1,
/** 是否扫描 */
isScan: true,
/** 上架扫描 */
upScan: false,
/** 在库状态字典 */
stateArr: [
{
title: '在库',
isCheck: true,
value: 1,
code: 10,
disabled: true,
name: 'stockNum'
},
{
title: '破损',
isCheck: false,
value: 0,
code: 20,
disabled: true,
name: 'wornNum'
},
{
title: '丢失',
isCheck: false,
value: 0,
code: 30,
disabled: true,
name: 'lossNum'
},
{
title: '不可修复',
isCheck: false,
value: 0,
code: 40,
disabled: true,
name: 'noRepairNum'
},
{
title: '配送',
isCheck: false,
value: 0,
code: 50,
disabled: true,
name: 'deliveNum'
},
{
title: '未入库',
isCheck: false,
value: 0,
code: 60,
disabled: true,
name: 'noReceivedNum'
}
],
/** 盘点状态字典表 */
checkStatus: [
{ code: 0, title: '待盘点' },
{ code: 1, title: '已盘点' },
{ code: 2, title: '未盘点' },
{ code: 3, title: '已排除' },
],
/** 类型字典表 */
typeArr: [
{ code: 1, title: '定制品' },
{ code: 2, title: '库存品' },
{ code: 3, title: '零担' },
],
/** 总数 */
totalNum: 0,
/** 已扫数量 */
scanNum: 0,
/** 上架时的库位信息 */
positionInfo: {
/** 库位码 */
positionCode: '',
/** 库位ID */
allocationId: ''
},
/** 新增内容 */
addInfo: {
/** 合同号 */
orderCode: ''
}
})
// 获取组件实例
/** 基本组件 */
const basicContainer = ref(null)
/** 弹出层 -- 上架 */
const popUp_Up = ref(null)
/** 弹出层 -- 状态修改 */
const popUp_EditState = ref(null)
/** 弹出层 -- 删除 / 盘点 */
const popUp_Handle = ref(null)
/** 弹出层 -- 新增 */
const popUp_Add = ref(null)
// 页面初始化执行回调
onLoad((info) => {
console.log('info :>> ', info);
const infos = JSON.parse(info.info)
console.log('object :>> ', JSON.parse(info.info));
option.title = infos.title
details.pageType = infos.pageType
details.pageInfos = infos
})
onShow(() => {
// #ifdef APP
// 开启监听扫描
uni.$off('scancodedate')
uni.$on('scancodedate', function (code) {
if (code) {
// 获取扫描的值
details.scancode = code
// 是否进行上架扫描
if (details.upScan) scanUp()
// 是否匹配数据
else if (details.isScan) scandata()
}
})
// #endif
// 初始化请求页面数据
// initPage()
const timer = setTimeout(() => {
basicContainer.value.startPullDownRefresh()
// 清除定时器
clearTimeout(timer)
}, 200)
})
/** 请求页面数据 */
async function initPage() {
try {
const queryData = {
typeState: 1,
type: 2,
questType: details.pageType,
code: details.pageInfos.trayCode,
questId: details.pageInfos.questId,
questNum: details.pageInfos.questNum,
}
const res = await getWarehouseTaskgetTaskConInfo(queryData)
const { code, data } = res
if (code !== 200) return
data.list.forEach(val => {
if (!val.cargoName) val.cargoName = 10
})
details.orderList = data.list || []
details.renderList = details.orderList
console.log('res :>> ', res);
} catch (e) {
//TODO handle the exception
} finally {
return null
}
}
/** 扫描后执行的回调 -- 对比包件码 */
async function scandata() {
// 是否扫描到已有包条
let _flag = false
for (let i = 0; i <= details.renderList.length - 1; i++) {
const _item = details.renderList[i]
console.log(i)
// 匹配包条码, 包条码一致时更改状态
if (details.scancode === _item.orderPackageCode) {
if (Number(_item.questStatus) === 1) {
uni.showToast({
title: '重复扫描',
icon: 'none'
})
// #ifdef APP
utils.ttsspke('重复扫描')
// #endif
_flag = true
break
}
_item.questStatus = 1
_flag = true
details.scanNum++
// #ifdef APP
utils.ttsspke(details.scanNum + '件')
// #endif
// 退出循环
break
}
}
// 扫到已有包条退出函数
if (_flag) return
try {
uni.showLoading({
title: '数据加载中',
mask: true
});
const queryData = {
code: details.scancode,
questId: details.pageInfos.questId,
questNum: details.pageInfos.questNum
}
// 查询包条码
const res = await postWarehouseTaskSelectPackageInfo(queryData)
console.log('res :>> ', res);
const { code, data } = res
// 当后台查询出数据时直接添加
if (code === 200 && data && data.length !== 0) {
data.forEach(val => {
val.questStatus = 1
details.scanNum++
val.isNew = true
if (!val.cargoName) val.cargoName = 10
})
details.orderList = [...data, ...details.orderList]
details.renderList = details.orderList
// #ifdef APP
utils.ttsspke(details.scanNum + '件')
// #endif
} else {
details.addInfo.orderCode = ''
// 手动录入新增
popUp_Add.value.setDetails({
title: '新增',
showPopUp: true,
success() {
const _order = {
orderPackageCode: details.scancode,
questStatus: 1,
orderCode: details.addInfo.orderCode,
positionCode: '',
cargoName: 10,
isChoose: false,
/** 为手动添加 */
isManuallyAdd: true
}
details.orderList.push(_order)
details.renderList = details.orderList
details.scanNum++
popUp_Add.value.details.showPopUp = false
}
})
}
} catch (err) {
console.log('err :>> ', err);
//TODO handle the exception
} finally {
uni.hideLoading()
}
}
/** 扫描后执行的回调 -- 上架时扫描货位码 */
async function scanUp() {
try {
uni.showLoading({
title: '数据加载中',
mask: true
});
const queryData = {
questId: details.pageInfos.questId,
allocationId: details.scancode
}
const res = await postWarehouseTaskQuestDetailAllocation(queryData)
const { code, data } = res
if (code === 200 && data) details.positionInfo = data
else {
details.positionInfo.positionCode = ''
details.positionInfo.allocationId = ''
}
} catch (e) {
//TODO handle the exception
} finally {
uni.hideLoading()
}
}
// 改变选项卡激活状态
function handleTabBarCode(code : number) {
details.tabBarCode = code
}
/** 搜索 */
const handleSearch = () => {
details.scancode = details.searchCode
scandata()
}
/** 修改合同号 */
const editOrderCode = (item : any) => {
// 是否为手动添加, 手动添加才能更改
if (!item.isManuallyAdd) return
details.addInfo.orderCode = item.orderCode
popUp_Add.value.setDetails({
title: '修改合同号',
showPopUp: true,
success() {
item.orderCode = details.addInfo.orderCode
details.addInfo.orderCode = ''
popUp_Add.value.details.showPopUp = false
}
})
}
/** 开启控件区 */
const handleShowControl = (_type : number) => {
details.showControl = true
// 更改控件区操控类型
details.handleType = _type
// #ifdef APP
switch (_type) {
case 1:
utils.ttsspke('状态修改')
break
case 2:
utils.ttsspke('批量删除')
break
case 3:
utils.ttsspke('批量上架')
break
case 4:
utils.ttsspke('批量盘点')
break
}
// #endif
}
/** 重置处理状态 */
const initState = (cargoName ?: number) => {
if (cargoName) {
// 根据指定值激活状态
details.stateArr.forEach((val) => {
if (val.code === cargoName) {
val.isCheck = true
val.value = 1
} else {
val.isCheck = false
val.value = 0
}
})
} else {
// 没有传入指定值, 重置处理状态
details.stateArr.forEach((val, index) => {
if (index === 0) {
val.isCheck = true
val.value = 1
} else {
val.isCheck = false
val.value = 0
}
})
}
}
/** 取消当前操作 */
const handleClose = () => {
details.showControl = false
// #ifdef APP
utils.ttsspke('取消当前操作')
// #endif
}
/** 批量修改状态 */
const batchEditState = () => {
console.log('修改')
// 重置状态
initState()
// details.showControl = true
popUp_EditState.value.setDetails({
title: '状态修改',
confirmText: '确认修改',
showPopUp: true,
success() {
const _value = details.stateArr.find(val => val.isCheck)
for (let i = 0; i <= details.renderList.length - 1; i++) {
const _item = details.renderList[i]
if (_item.isChoose) {
_item.cargoName = _value.code
// 改变盘点状态
_item.questStatus = 1
details.scanNum++
}
// 重置选中状态
_item.isChoose = false
}
// 关闭弹窗
popUp_EditState.value.details.showPopUp = false
// 改变盘点状态
details.showControl = false
console.log('111 :>> ', 111);
}
})
}
/** 批量删除 */
const batchDelete = () => {
// 开启弹窗
popUp_Handle.value.setDetails({
title: '批量删除',
showPopUp: true,
confirmText: '确认删除',
success() {
details.renderList = details.renderList.filter(val => !val.isChoose)
details.orderList = details.renderList
details.scanNum = details.renderList.reduce((curr, item) => {
if (item.questStatus === 1) return curr += 1
return curr
}, 0)
popUp_Handle.value.details.showPopUp = false
details.showControl = false
}
})
}
/** 批量上架 */
const batchUp = () => {
// 清空扫描的值
details.scancode = ''
// 开启上架扫描
details.upScan = true
// 开启弹窗
popUp_Up.value.setDetails({
title: '批量上架',
showPopUp: true,
confirmText: '确认上架',
success() {
const { positionCode, allocationId } = details.positionInfo
let content = ''
if (positionCode) {
for (let i = 0; i <= details.renderList.length - 1; i++) {
const _item = details.renderList[i]
if (_item.isChoose) {
// 改变库位信息
_item.allocationId = allocationId
_item.positionCode = positionCode
// 改变盘点状态
details.renderList[i].questStatus = 1
// 改变已盘点数
details.scanNum++
}
// 重置选中状态
_item.isChoose = false
}
content = '上架成功'
} else content = '上架失败, 库位数据有误'
uni.showToast({
title: content,
icon: 'none'
})
// #ifdef APP
utils.ttsspke(content)
// #endif
// 重置库位信息
details.positionInfo.allocationId = ''
details.positionInfo.positionCode = ''
// 关闭弹出层
popUp_Up.value.details.showPopUp = false
details.showControl = false
details.upScan = false
},
close() {
popUp_Up.value.details.showPopUp = false
details.upScan = false
}
})
}
/** 批量盘点 */
const batchCheck = () => {
// 开启弹窗
popUp_Handle.value.setDetails({
title: '批量盘点',
showPopUp: true,
confirmText: '确认盘点',
success() {
for (let i = 0; i <= details.renderList.length - 1; i++) {
const _item = details.renderList[i]
if (_item.isChoose) {
// 改变盘点状态
details.renderList[i].questStatus = 1
// 改变已盘点数
details.scanNum++
}
// 重置选中状态
_item.isChoose = false
}
popUp_Handle.value.details.showPopUp = false
details.showControl = false
}
})
}
/** 全选 */
const handleCheckAll = () => {
if (details.renderList.length === 0) return
for (let i = 0; i < details.renderList.length; i++) {
details.renderList[i].isChoose = true
}
}
/** 反选 */
const handleInvertSelection = () => {
if (details.renderList.length === 0) return
for (let i = 0; i < details.renderList.length; i++) {
details.renderList[i].isChoose = !details.renderList[i].isChoose
}
}
/** 复选框 */
const handleItemChoose = (_item : any) => {
_item.isChoose = !_item.isChoose
}
/** 状态修改弹窗内按钮点击 -- 单选 */
const handleCheck = (_item : any) => {
if (details.tabBarCode === 1) {
// 有数据的情况
for (let i = 0; i < details.stateArr.length; i++) {
const _value = details.stateArr[i]
_value.value = 0
_value.isCheck = false
}
_item.isCheck = true
_item.value = 1
if (_item.title === '破损' || _item.title === '不可修复') details.stateArr[0].value = 1
} else {
console.log('details.stateArr[0].value :>> ', details.stateArr[0].value);
// 无数据
// 当在库数为0时, 不能选择破损或不可修复
if (details.stateArr[0].value === 0 && _item.title === '破损' || details.stateArr[0].value === 0 && _item.title === '不可修复') return
_item.isCheck = !_item.isCheck
_item.disabled = !_item.isCheck
if (_item.disabled && _item.code !== details.stateArr[0].code) _item.value = 0
}
}
/** 处理 */
const handleState = (_item : any) => {
// 重置状态
initState(_item.cargoName)
popUp_EditState.value.setDetails({
title: '状态修改',
confirmText: '确认修改',
showPopUp: true,
success() {
const _value = details.stateArr.find(val => val.isCheck)
if (tabBarCode.value === 1) {
_item.cargoName = _value.code
// 改变盘点状态
} else {
details.stateArr.forEach(val => {
if (val.isCheck && Number(val.value) !== 0) _value[val.name] = Number(val.value)
})
console.log('_value :>> ', _value);
}
_item.questStatus = 1
// 改变已盘点数
details.scanNum++
// 关闭弹窗
popUp_EditState.value.details.showPopUp = false
console.log('111 :>> ', 111);
}
})
}
/** 上架 */
const handleItemUp = (_item : any) => {
// 获取库位码
details.scancode = _item.allocationId
details.positionInfo.positionCode = _item.positionCode
// 开启上架扫描
details.upScan = true
popUp_Up.value.setDetails({
title: '上架',
confirmText: '确认上架',
showPopUp: true,
success() {
let content = ''
const { allocationId, positionCode } = details.positionInfo
if (positionCode) {
_item.allocationId = allocationId
_item.positionCode = positionCode
// 更改上架状态
_item.questStatus = 1
// 改变已盘点数
details.scanNum++
content = '上架成功'
} else content = '上架失败, 库位数据有误'
uni.showToast({
title: content,
icon: 'none'
})
// #ifdef APP
utils.ttsspke(content)
// #endif
// 重置库位数据
details.positionInfo.positionCode = ''
details.positionInfo.allocationId = ''
// 关闭上架扫描
popUp_Up.value.details.showPopUp = false
details.upScan = false
},
close() {
popUp_Up.value.details.showPopUp = false
details.upScan = false
}
})
}
/** 左侧返回按钮 */
const leftClick = () => {
popUp_Handle.value.setDetails({
title: '有数据未提交, 是否返回',
showPopUp: true,
confirmText: '确认返回 ',
success() {
uni.navigateBack()
}
})
}
/** 确认 */
const handleConFirm = () => {
switch (details.handleType) {
case 1: // 批量修改状态
batchEditState()
break;
case 2: // 批量删除
batchDelete()
break;
case 3: // 批量上架
batchUp()
break;
case 4: // 批量盘点
batchCheck()
break;
}
}
/** 提交盘点*/
const submitCheck = async () => {
try {
// 开启loading动画
uni.showLoading({
title: '提交中',
mask: true
})
// 提交信息
const submitData = {
questId: details.pageInfos.questId,
questNum: details.pageInfos.questNum,
// 在库的ids数组
questDetailIds: [],
// 其它类型组成的数组
questDetailList: []
}
details.orderList.forEach(val => {
// 不是新增的且状态为在库
if (!val.isManuallyAdd && !val.isNew && Number(val.cargoName) === 10) {
submitData.questDetailIds.push(val.id)
} else {
const _item = {
/** 在库数量 */
stockNum: 1,
/** 丢失数量 */
lossNum: 0,
/** 配送数量 */
deliveNum: 0,
/** 破损数量 */
wornNum: 0,
/** 不可修复数量 */
noRepairNum: 0,
/** 未入库数量 */
noReceivedNum: 0,
/** 上架后的库位id */
allocationId: val.allocationId,
questId: details.pageInfos.questId,
orderCode: val.orderCode,
orderId: val.orderId,
questType: details.pageType,
questTarget: val.state
}
const _whiteCodeArr = [10, 20, 40]
if (!_whiteCodeArr.includes(Number(val.cargoName))) _item.stockNum = 0
const _key = details.stateArr.find(value => value.code === val.cargoName).name
// 对状态赋值
_item[_key] = 1
submitData.questDetailList.push(_item)
}
})
console.log('details.orderList :>> ', details.orderList);
// postWarehouseTaskAddDataInfo()
} catch (err) {
console.log('err :>> ', err);
//TODO handle the exception
} finally {
// 关闭Loading动画
uni.hideLoading()
}
}
const {
pageType,
showControl,
tabBarCode
} = toRefs(details)
</script>
<style lang="scss" scoped>
$buttonColor: #d3832a;
// 本页按钮样式
.button {
font-size: 28upx;
padding: 10upx 20upx;
border: 1upx solid $buttonColor;
background-color: #fff;
color: #d3832a;
border-radius: 5upx;
// zoom: 90%;
}
.main,
.head {
padding: 10upx;
font-size: 28upx; // 本页字体大小
}
.head {
background: #fff;
}
.head_top {
display: flex;
// align-items: center;
justify-content: space-between;
margin: 10upx 0;
// 顶部搜索框
&_search {
flex: 1;
padding-left: 20upx;
margin-right: 20upx;
box-sizing: border-box;
height: 28upx * 2;
border-radius: 28upx;
border: 1upx solid #000;
}
.button {
background-color: $buttonColor;
color: #fff;
padding: 0 60upx;
display: inline-flex;
align-items: center;
}
}
// tabBar选项卡
.tabBar {
display: flex;
justify-content: space-evenly;
margin-bottom: 10upx;
&-item {
position: relative;
flex: 1;
flex-basis: 0;
padding: 20upx 0;
text-align: center;
&::after {
content: '';
position: absolute;
bottom: 0;
left: 50%;
display: block;
width: 0;
box-sizing: border-box;
background: #d3832a;
height: 4upx;
transition: all 0.5s;
}
&.active::after {
left: 0;
width: 100%;
}
}
}
// 控件区
.control {
margin-top: 20upx;
display: flex;
justify-content: space-between;
.controlList {
display: flex;
.button {
margin: 0 5upx;
&:last-child {
margin-right: 0;
}
}
}
}
// 盘点数据
.checkInfo {
font-size: 28upx;
zoom: 0.9;
margin: 20upx 0 10upx;
display: flex;
color: #666;
&_item {
width: 40%;
display: inline-flex;
align-items: center;
>text:first-child {
margin-right: 10upx;
}
}
}
// 渲染
.main_render {
display: flex;
background: #fff;
padding: 10upx;
zoom: 0.85;
overflow: hidden;
position: relative;
margin-bottom: 10upx;
border-radius: 10upx;
$renderWidth: 80upx;
// 已盘状态
&.active {
border: 1upx solid #16d46b;
box-shadow: 0 0 10upx #16d46b;
}
// 删除状态
&.delete {
border: 1upx solid #f55;
box-shadow: 0 0 10upx #f55;
}
// 修改状态
&.edit {
border: 1upx solid #3c9cff;
box-shadow: 0 0 10upx #3c9cff;
}
// main_render_checkImg
&_checkImg {
width: 64upx;
height: 64upx;
}
// main_render_container
&_container {
flex: 1;
}
// main_render_item
&_item {
display: flex;
justify-content: space-between;
align-items: flex-start;
margin-top: 20upx;
&:first-child {
margin-top: 0;
}
&>view {
flex: 1;
flex-basis: 1;
word-break: break-all
}
// main_render_item_type
&_type {
display: inline-block;
background: #3c9cff;
color: #fff;
padding: 5upx 10upx;
border-radius: 5upx;
&.active {
background: #f55;
}
}
.button_box {
display: inline-flex;
justify-content: space-evenly;
}
.button {
zoom: 0.9;
}
}
}
// 弹出层提示信息
.popUpTitle {
font-size: 28upx;
color: #666;
zoom: 0.9;
}
// 弹出层内的输入框
.popUpInput {
border: 4upx solid #eee;
padding: 10upx;
border-radius: 10upx;
margin-top: 30upx;
}
// 上架货位信息
.popUpInfo {
margin-top: 20upx;
font-size: 28upx;
color: #666;
zoom: 0.9;
}
.popUp_EditState_container {
// height: 40vh;
margin-top: 60upx;
width: 100%;
display: flex;
flex-wrap: wrap;
}
// 状态处理
.popUp_row {
width: 50%;
display: flex;
justify-content: space-between;
align-items: center;
font-size: 28upx;
zoom: 0.9;
margin-bottom: 20upx;
// popUp_row_item
&_item {
width: 50%;
display: flex;
}
// popUp_row_checkImg
&_checkImg {
width: 40upx;
height: 40upx;
}
// popUp_row_title
&_title {
flex: 1;
padding-left: 10upx;
}
.input {
width: 50%;
height: 32upx;
}
}
// 提交按钮
.submitButton {
position: fixed;
color: #fff;
background-color: $buttonColor;
width: 40%;
bottom: 30upx;
left: 50%;
transform: translateX(-50%);
font-size: 30upx;
}
</style>