<template>
|
<view class="page">
|
<view class="finishProductIn-locno-bg" />
|
<u-navbar title="核磅单号" :background="background" :border-bottom="false" :title-bold="true" title-color="#000"
|
back-icon-color="#000" />
|
<view class="finishProductIn-locno-search">
|
<u-search v-model="keywords" shape="square" bg-color="rgba(250,252,255,0.36)" :show-action="false"
|
placeholder="请输入核磅单号" @clear="search" @custom="search" @search="search">
|
</u-search>
|
</view>
|
<view class="wrap">
|
<scroll-view class="finishProductIn-locno-scroll-list" scroll-y="true" @scrolltolower="getmoreList()">
|
<u-skeleton v-if="isLoading && list.length === 0" type="list" :row="5" :loading="isLoading" />
|
<u-cell-group class="finishProductIn-locno-scroll-list-group" :border="false">
|
<view v-if="list.length === 0 && !isLoading" class="empty-tips">
|
<text>暂无数据</text>
|
</view>
|
<view class="content" v-for="(item, index) in list" :key="item.verificationNo" :index="index"
|
@click="selectNo(item)">
|
<view class="content-header">
|
<view class="content-header-title">{{ index + 1 }}</view>
|
</view>
|
<view class="content-body">
|
<view class="row-list">
|
<view class="_label">
|
<view class="_label-icon-1"> </view>
|
<view class="_label-name">核榜单号:</view>
|
</view>
|
<view class="_content">
|
{{ item.verificationNo }}
|
</view>
|
</view>
|
<view class="row-list">
|
<view class="_label">
|
<view class="_label-icon-2"> </view>
|
<view class="_label-name">产品类型:</view>
|
</view>
|
<view class="_content">
|
{{ formatProductType(item.productType) }}
|
</view>
|
</view>
|
<view class="row-list">
|
<view class="_label">
|
<view class="_label-icon-3"> </view>
|
<view class="_label-name">车牌号:</view>
|
</view>
|
<view class="_content">
|
{{ item.licensePlate }}
|
</view>
|
</view>
|
<view class="row-list">
|
<view class="_label">
|
<view class="_label-icon-1"> </view>
|
<view class="_label-name">发货通知1:</view>
|
</view>
|
<view class="_content">
|
{{ item.shippingNoticeNo1 }}
|
</view>
|
</view>
|
<view class="row-list">
|
<view class="_label">
|
<view class="_label-icon-2"> </view>
|
<view class="_label-name">客户名称1:</view>
|
</view>
|
<view class="_content">
|
{{ item.customerName1 }}
|
</view>
|
</view>
|
<view class="row-list">
|
<view class="_label">
|
<view class="_label-icon-1"> </view>
|
<view class="_label-name">发货通知2:</view>
|
</view>
|
<view class="_content">
|
{{ item.shippingNoticeNo2 }}
|
</view>
|
</view>
|
<view class="row-list">
|
<view class="_label">
|
<view class="_label-icon-2"> </view>
|
<view class="_label-name">客户名称2:</view>
|
</view>
|
<view class="_content">
|
{{ item.customerName2 }}
|
</view>
|
</view>
|
<view class="row-list">
|
<view class="_label">
|
<view class="_label-icon-3"> </view>
|
<view class="_label-name">生产车间:</view>
|
</view>
|
<view class="_content">
|
{{ item.workshop }}
|
</view>
|
</view>
|
<view class="row-list">
|
<view class="_label">
|
<view class="_label-icon-1"> </view>
|
<view class="_label-name">司磅员:</view>
|
</view>
|
<view class="_content">
|
{{ item.weighingOperator }}
|
</view>
|
</view>
|
<view class="row-list">
|
<view class="_label">
|
<view class="_label-icon-2"> </view>
|
<view class="_label-name">叉车司机:</view>
|
</view>
|
<view class="_content">
|
{{ item.forkliftOperator }}
|
</view>
|
</view>
|
</view>
|
</view>
|
</u-cell-group>
|
<view class="loadmore" @click="getmoreList()">
|
<u-loadmore :status="status" :load-text="loadText" @loadmore="getmoreList()" />
|
</view>
|
</scroll-view>
|
</view>
|
<view class="plus-button" @click="openCreateWriteOffForm">
|
<text class="plus-sign">+</text>
|
</view>
|
</view>
|
</template>
|
<script>
|
import content_bg from "@/static/custom/finishProductIn/locNoBg.png";
|
export default {
|
data() {
|
return {
|
background: {
|
backgroundImage: `url(${content_bg})`,
|
backgroundAttachment: "fixed",
|
backgroundSize: "100% auto",
|
backgroundRepeat: "no-repeat",
|
},
|
keywords: "",
|
list: [],
|
total: 0,
|
pageNum: 1,
|
pageSize: 10,
|
status: 'loading',
|
isLoading: false,
|
loadText: {
|
loadmore: "加载更多...",
|
loading: "努力加载中...",
|
nomore: "没有更多了",
|
},
|
};
|
},
|
onLoad() {
|
this.getlist();
|
},
|
onShow() {
|
this.getlist();
|
},
|
methods: {
|
//创建核销单
|
openCreateWriteOffForm() {
|
uni.navigateTo({
|
url: '/pages/wareHouse/nuclearScale/createwriteoffform'
|
})
|
},
|
getmoreList() {
|
if (this.pageSize >= this.total) {
|
this.status = "nomore";
|
return;
|
}
|
this.isLoading = true;
|
this.status = "loading";
|
setTimeout(() => {
|
this.pageSize += this.pageSize;
|
this.getlist();
|
}, 1000);
|
},
|
getlist() {
|
this.isLoading = true;
|
this.$u.api.NuclearScaleEntry
|
.getWeighingOrder({
|
current: this.pageNum,
|
size: this.pageSize
|
})
|
.then((res) => {
|
this.handleListResponse(res);
|
})
|
.catch((err) => {
|
this.handleApiError(err);
|
})
|
.finally(() => {
|
this.isLoading = false;
|
});
|
},
|
|
getmoreList() {
|
if (this.isLoading || this.pageSize >= this.total) {
|
return;
|
}
|
this.isLoading = true;
|
this.status = "loading";
|
setTimeout(() => {
|
this.pageSize += this.pageSize;
|
this.getlist();
|
}, 500);
|
},
|
|
// 搜索相关方法
|
search(value) {
|
if (value) {
|
this.list = [];
|
this.pageSize = 10;
|
this.isLoading = true;
|
this.$u.api.NuclearScaleEntry
|
.getWeighingOrder({
|
current: this.pageNum,
|
size: this.pageSize,
|
verificationNo: value,
|
})
|
.then((res) => {
|
this.handleListResponse(res);
|
})
|
.catch((err) => {
|
this.handleApiError(err);
|
})
|
.finally(() => {
|
this.isLoading = false;
|
});
|
} else {
|
this.getlist();
|
}
|
},
|
|
// 工具方法
|
handleListResponse(res) {
|
console.log('API Response:', res);
|
console.log('Response Code:', res.code);
|
console.log('Response Data:', res.data);
|
console.log('Response Records:', res.data ? res.data.records : 'res.data is undefined');
|
|
if (res.code != 0) {
|
uni.showToast({
|
title: res.msg || '获取数据失败',
|
icon: 'none'
|
});
|
return;
|
}
|
|
if (!res.data) {
|
console.error('res.data is undefined');
|
uni.showToast({
|
title: '数据格式错误',
|
icon: 'none'
|
});
|
return;
|
}
|
|
this.list = res.data.records || [];
|
this.total = res.data.total || 0;
|
this.status = this.pageSize >= this.total ? "nomore" : "loadmore";
|
},
|
|
handleApiError(err) {
|
console.error('API请求失败:', err);
|
uni.showToast({
|
title: '网络异常,请稍后重试',
|
icon: 'none'
|
});
|
},
|
formatProductType(type) {
|
const productTypeMap = {
|
1: '导体',
|
2: '铜杆',
|
3: '导体2.6'
|
};
|
return productTypeMap[type] || type;
|
},
|
selectNo(no) {
|
this.refreshLastPage(no);
|
},
|
|
//刷新上一个页面
|
refreshLastPage(no) {
|
// 告知 A.vue 更新数据
|
// 获取页面栈
|
let pages = getCurrentPages();
|
|
// 获取上一页栈
|
let prevPage = pages[pages.length - 2];
|
|
// 触发上一页 upData 函数(并携带参数)
|
prevPage.$vm.setNo(no);
|
|
// 返回上一页
|
uni.navigateBack({
|
delta: 1,
|
});
|
},
|
},
|
};
|
</script>
|
<style lang="scss" scoped>
|
.plus-button {
|
width: 40px;
|
height: 40px;
|
border-radius: 50%;
|
background-color: #007aff;
|
display: flex;
|
justify-content: center;
|
align-items: center;
|
position: fixed;
|
bottom: 40px;
|
right: 10px;
|
z-index: 100;
|
}
|
|
.plus-sign {
|
color: white;
|
font-size: 50px;
|
position: relative;
|
bottom: 4px;
|
|
}
|
|
.finishProductIn-locno-bg {
|
background-color: #f6f9ff;
|
background-image: url("~@/static/custom/finishProductIn/locNoBg.png");
|
// background: linear-gradient(180deg,rgba(206,227,254,1),rgba(206,227,254,1) 20%,rgba(206,227,254,0.5) 40%,rgba(206,227,254,0.25) 60%,rgba(206,227,254,0.08) 80%,rgba(206,227,254,0));
|
padding: 0 20rpx;
|
background-attachment: fixed;
|
background-size: 100% auto;
|
background-repeat: no-repeat;
|
position: fixed;
|
top: 0;
|
bottom: 0;
|
width: 100%;
|
z-index: -1;
|
}
|
|
.finishProductIn-locno-search {
|
padding: 40rpx 30rpx 20rpx 30rpx;
|
}
|
|
.wrap .finishProductIn-locno-scroll-list {
|
height: calc(100vh - var(--window-top, 0) - var(--window-bottom, 0) - 242rpx);
|
width: 100%;
|
min-height: 300rpx; /* 添加最小高度确保元素始终可见 */
|
}
|
|
.finishProductIn-locno-scroll-list-group {
|
::v-deep .u-cell-item-box {
|
background-color: rgba(250, 252, 255, 0.36) !important;
|
padding: 0rpx 30rpx;
|
}
|
|
.content {
|
font-size: 12px;
|
background-color: #ffffff;
|
box-sizing: border-box;
|
border-radius: 10rpx;
|
margin: 0rpx 0rpx 16rpx;
|
padding: 20rpx 8rpx;
|
box-shadow: none;
|
display: flex;
|
align-items: center;
|
|
.content-header {
|
width: 40rpx;
|
height: 90rpx;
|
display: flex;
|
align-items: center;
|
|
.content-header-icon {
|
background-image: url("~@/static/custom/moveWareHouse/header_icon.png");
|
background-size: 100% auto;
|
background-repeat: no-repeat;
|
height: 28rpx;
|
width: 28rpx;
|
}
|
|
.content-header-title {
|
margin-left: 11rpx;
|
font-size: 26rpx;
|
font-weight: bold;
|
color: #3d52f5;
|
}
|
}
|
|
.content-body {
|
flex: 1;
|
background: #f5f9ff;
|
border-radius: 10rpx;
|
padding: 0rpx 23rpx;
|
|
.row-list {
|
height: 60rpx;
|
display: flex;
|
flex-direction: row;
|
padding: 0px;
|
align-items: center;
|
}
|
|
.row-list ._label {
|
display: flex;
|
flex: 0.8;
|
color: #909399;
|
align-items: center;
|
|
._label-icon-1 {
|
background-image: url("~@/static/custom/moveWareHouse/label-icon-1.png");
|
background-size: 100% auto;
|
background-repeat: no-repeat;
|
height: 26rpx;
|
width: 26rpx;
|
}
|
|
._label-icon-2 {
|
background-image: url("~@/static/custom/moveWareHouse/label-icon-2.png");
|
background-size: 100% auto;
|
background-repeat: no-repeat;
|
height: 26rpx;
|
width: 26rpx;
|
}
|
|
._label-icon-3 {
|
background-image: url("~@/static/custom/moveWareHouse/label-icon-3.png");
|
background-size: 100% auto;
|
background-repeat: no-repeat;
|
height: 26rpx;
|
width: 26rpx;
|
}
|
|
._label-name {
|
margin-left: 11rpx;
|
font-size: 26rpx;
|
font-weight: 500;
|
color: #666666;
|
}
|
}
|
|
.row-list ._content {
|
flex: 1.5;
|
text-align: right;
|
color: #909399;
|
font-size: 24rpx;
|
}
|
|
.row-list .s1 {
|
color: #d35651;
|
}
|
}
|
}
|
}
|
</style>
|