This commit is contained in:
2026-03-11 14:52:32 +08:00
commit 688e46e1a6
105 changed files with 16711 additions and 0 deletions

263
pages/index/addDelivery.vue Normal file
View File

@@ -0,0 +1,263 @@
<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>