263 lines
6.9 KiB
Vue
263 lines
6.9 KiB
Vue
<template>
|
||
<view class="container">
|
||
<z-paging ref="pagingRef" class="containerBox" v-model="listData" :default-page-size="queryParams.pageSize"
|
||
@query="queryList">
|
||
<view class="box">
|
||
<view v-for="(item, index) in listData" :key="index" @tap="changeSelect(index)" class="item"
|
||
:style="index == selectIndex ? 'border: #199793 4rpx solid;' : ''">
|
||
<uv-icon v-show="index == selectIndex" class="selectIcon" color="#199793" size="20"
|
||
name="checkbox-mark"></uv-icon>
|
||
<view class="title">单据号:{{ item.billNo }}</view>
|
||
<view><text>出库类型:</text>{{ item.operationTypeName }}</view>
|
||
<view><text>理货员:</text>{{ item.operatorName }}</view>
|
||
<view><text>施工队:</text>{{ item.teamName }}</view>
|
||
<view><text>出库时间:</text>{{ parseTime(item.operationTime) }}</view>
|
||
<view class="more" v-show="!item.showMore" @tap="openMore(index)">
|
||
<view>详细信息</view>
|
||
<uv-icon name="arrow-right" color="#A4A6A7" size="28rpx" style="margin-left: 10rpx;"></uv-icon>
|
||
</view>
|
||
</view>
|
||
</view>
|
||
|
||
|
||
</z-paging>
|
||
<view class="btn">
|
||
<uv-button type="primary" text="确定" size="large" style="width: 48%;" @tap="toAddHandDelivery">录 入 配 送 货
|
||
物</uv-button>
|
||
<uv-button type="primary" text="确定" size="large" style="width: 48%;" class="mainBtn" @tap="openMore(selectIndex)">选 择 配 送 货
|
||
物</uv-button>
|
||
</view>
|
||
|
||
<uv-modal ref="modalRef" title="单据明细" class="modalInfo" confirmText="确定" showCancelButton @close="closeModal" @confirm="confirmSelected"
|
||
:closeOnClickOverlay="false" asyncClose>
|
||
<view class="box">
|
||
<view v-for="items in detailList" class="item" :style="items.selected ? 'border-color: #2979ff;' : ''" @tap="changeSelected(items)">
|
||
<uv-icon v-show="items.selected" class="selectIcon" color="#2979ff" size="20" name="checkbox-mark"></uv-icon>
|
||
<view><text>订单编号:</text>{{ items.sapNo }}</view>
|
||
<view><text>项目描述:</text>{{ items.xmMs }}</view>
|
||
<view><text>项目号:</text>{{ items.xmNo }}</view>
|
||
<view><text>物料号:</text>{{ items.wlNo }}</view>
|
||
<view><text>物料描述:</text>{{ items.wlMs }}</view>
|
||
<view><text>供应商名称:</text>{{ items.gysMc }}</view>
|
||
<view><text>存放位置:</text>{{ items.pcode || "-" }}</view>
|
||
<view><text>身份码:</text>{{ items.entityId || "-" }}</view>
|
||
<view><text>备注:</text>{{ items.remark || '-' }}</view>
|
||
</view>
|
||
</view>
|
||
</uv-modal>
|
||
</view>
|
||
</template>
|
||
|
||
<script setup>
|
||
import { ref, computed } from "vue";
|
||
import { onLoad, onShow, onPageScroll } from "@dcloudio/uni-app";
|
||
import { selectInfo } from "@/api/index"
|
||
// selectInfoDetail
|
||
|
||
|
||
const selectIndex = ref(0)
|
||
const changeSelect = (index) => {
|
||
selectIndex.value = index
|
||
}
|
||
|
||
const queryParams = ref({
|
||
pageNum: 1,
|
||
pageSize: 10
|
||
})
|
||
const pagingRef = ref(null)
|
||
const listData = ref([])
|
||
// 获取列表
|
||
const queryList = (pageNo, pageSize) => {
|
||
queryParams.value.pageNum = pageNo
|
||
console.log(pageNo, pageSize, queryParams.value)
|
||
selectInfo(queryParams.value).then(res => {
|
||
console.log(res.data)
|
||
res.data.forEach(e => {
|
||
e.showMore = false;
|
||
e.recordList.forEach(e => {
|
||
e.totalWeight = e.realQty * e.weightKg
|
||
e.totalVolume = e.realQty * e.volumeM3
|
||
e.rkRecordId = e.id
|
||
e.selected = false
|
||
})
|
||
});
|
||
pagingRef.value.complete(res.data)
|
||
}).catch(res => {
|
||
pagingRef.value.complete(false)
|
||
})
|
||
}
|
||
|
||
// const getDetail = (index) => {
|
||
// return new Promise((resolve, reject) => {
|
||
// if (listData.value[index].detailList.length > 0) {
|
||
// detailList.value = listData.value[index].detailList
|
||
// resolve("完成")
|
||
// } else {
|
||
// selectInfoDetail({ billNoCk: listData.value[index].billNoCk }).then(res => {
|
||
// res.rows.forEach(e => {
|
||
// e.totalWeight = e.realQty * e.weightKg
|
||
// e.totalVolume = e.realQty * e.volumeM3
|
||
// })
|
||
// detailList.value = res.rows
|
||
// listData.value[index].detailList = res.rows
|
||
// resolve()
|
||
// }).catch(res => {
|
||
// reject(res)
|
||
// })
|
||
// }
|
||
// })
|
||
// }
|
||
|
||
// 跳转至录入货物信息页面
|
||
const toAddHandDelivery = () => {
|
||
uni.navigateTo({
|
||
url: '/pages/index/addHandDelivery',
|
||
})
|
||
}
|
||
|
||
|
||
|
||
// 打开弹窗
|
||
const detailList = ref([])
|
||
const openMore = async (index) => {
|
||
// await getDetail(index)
|
||
console.log(listData.value[index])
|
||
detailList.value = listData.value[index].recordList
|
||
modalRef.value.open()
|
||
};
|
||
|
||
// 弹窗
|
||
const modalRef = ref()
|
||
|
||
const changeSelected = (items) => {
|
||
items.selected = !items.selected
|
||
}
|
||
|
||
const closeModal = () => {
|
||
console.log("关闭")
|
||
listData.value[selectIndex.value].showMore = false
|
||
}
|
||
|
||
|
||
|
||
const confirmSelected = async () => {
|
||
// await getDetail(selectIndex.value)
|
||
let selectedList = JSON.parse(JSON.stringify(listData.value[selectIndex.value]))
|
||
selectedList.detailList = selectedList.recordList.filter(e => e.selected)
|
||
if (selectedList.detailList.length == 0) {
|
||
uni.showToast({
|
||
title: "请选择货物信息",
|
||
icon: "none"
|
||
})
|
||
modalRef.value.closeLoading()
|
||
return
|
||
}
|
||
uni.navigateTo({
|
||
url: '/pages/index/addDeliveryInfo',
|
||
success: function(res) {
|
||
// 通过eventChannel向被打开页面传送数据
|
||
res.eventChannel.emit('acceptData', { data: selectedList })
|
||
modalRef.value.close()
|
||
}
|
||
})
|
||
}
|
||
|
||
onLoad(() => {
|
||
})
|
||
|
||
onShow(() => {
|
||
pagingRef.value?.reload()
|
||
})
|
||
|
||
|
||
</script>
|
||
|
||
<style scoped lang="scss">
|
||
.container {
|
||
position: relative;
|
||
|
||
.containerBox {
|
||
padding: 32rpx;
|
||
padding-bottom: 120rpx;
|
||
|
||
|
||
|
||
}
|
||
.btn {
|
||
position: fixed;
|
||
width: calc(100vw - 64rpx);
|
||
bottom: 0;
|
||
left: 32rpx;
|
||
z-index: 99;
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: space-between;
|
||
}
|
||
|
||
}
|
||
|
||
.box {
|
||
|
||
// background-color: #ebebeb;
|
||
// background-color: #f5f5f5;
|
||
// padding-top: 20rpx;
|
||
.item {
|
||
border: #969696 4rpx solid;
|
||
padding: 20rpx;
|
||
margin-top: 20rpx;
|
||
line-height: 50rpx;
|
||
font-size: 28rpx;
|
||
border-radius: 8rpx;
|
||
color: #333;
|
||
position: relative;
|
||
|
||
|
||
|
||
.title {
|
||
font-size: 32rpx;
|
||
font-weight: bold;
|
||
display: flex;
|
||
align-items: center;
|
||
}
|
||
|
||
text {
|
||
color: #666;
|
||
}
|
||
|
||
.more {
|
||
color: #A4A6A7;
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: flex-end;
|
||
}
|
||
}
|
||
}
|
||
.selectIcon {
|
||
position: absolute;
|
||
top: 10rpx;
|
||
right: 10rpx;
|
||
}
|
||
|
||
.modalInfo {
|
||
.box {
|
||
width: 100%;
|
||
max-height: 60vh;
|
||
overflow: auto;
|
||
.item {
|
||
background: #efefef;
|
||
padding: 20rpx;
|
||
margin-top: 20rpx;
|
||
line-height: 50rpx;
|
||
font-size: 28rpx;
|
||
border-radius: 8rpx;
|
||
color: #333;
|
||
border: 2rpx solid #efefef;
|
||
position: relative;
|
||
}
|
||
}
|
||
}
|
||
|
||
::v-deep uni-toast {
|
||
z-index: 30000 !important;
|
||
}
|
||
</style> |