Files
delivery_admin_app/pages/index/addDelivery.vue
2026-03-11 14:52:32 +08:00

263 lines
6.9 KiB
Vue
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<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>