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.
451 lines
10 KiB
451 lines
10 KiB
|
1 week ago
|
<template>
|
||
|
|
<view class="container">
|
||
|
|
<!-- 主内容区域 -->
|
||
|
|
<scroll-view class="content" scroll-y="true">
|
||
|
|
<!-- 托盘明细 -->
|
||
|
|
<view class="section">
|
||
|
|
<view class="section-header">
|
||
|
|
<text class="section-title">托盘明细</text>
|
||
|
|
</view>
|
||
|
|
<!-- 托盘明细 -->
|
||
|
|
<view class="list-container" v-if="item">
|
||
|
|
<view class="list-item">
|
||
|
|
<view class="item-header">
|
||
|
|
<text class="item-title">{{ item.assemcode }}</text>
|
||
|
|
<text class="status-badge" :class="getStatusClass(item.status)">{{item.status}}</text>
|
||
|
|
</view>
|
||
|
|
<view class="item-content">
|
||
|
|
<view class="detail-row">
|
||
|
|
<text class="label">工程编号:</text>
|
||
|
|
<text class="value">{{ item.project }}</text>
|
||
|
|
</view>
|
||
|
|
<view class="detail-row">
|
||
|
|
<text class="label">安装托盘表号:</text>
|
||
|
|
<text class="value">{{ item.instno }}</text>
|
||
|
|
</view>
|
||
|
|
<view class="detail-row">
|
||
|
|
<text class="label">制作图号:</text>
|
||
|
|
<text class="value">{{ item.dwgno }}</text>
|
||
|
|
</view>
|
||
|
|
<view class="detail-row">
|
||
|
|
<text class="label">分段号:</text>
|
||
|
|
<text class="value">{{ item.section }}</text>
|
||
|
|
</view>
|
||
|
|
<view class="detail-row">
|
||
|
|
<text class="label">规格:</text>
|
||
|
|
<text class="value">{{ item.spec }}</text>
|
||
|
|
</view>
|
||
|
|
<view class="detail-row">
|
||
|
|
<text class="label">材质:</text>
|
||
|
|
<text class="value">{{ item.grd }}</text>
|
||
|
|
</view>
|
||
|
|
<view class="detail-row">
|
||
|
|
<text class="label">数量:</text>
|
||
|
|
<text class="value">{{ item.qty }}</text>
|
||
|
|
</view>
|
||
|
|
<view class="detail-row">
|
||
|
|
<text class="label">重量:</text>
|
||
|
|
<text class="value">{{ item.weight }}</text>
|
||
|
|
</view>
|
||
|
|
<view class="detail-row">
|
||
|
|
<text class="label">表面处理:</text>
|
||
|
|
<text class="value">{{ item.treatment }}</text>
|
||
|
|
</view>
|
||
|
|
<view class="detail-row">
|
||
|
|
<text class="label">涂装代码:</text>
|
||
|
|
<text class="value">{{ item.paintcode }}</text>
|
||
|
|
</view>
|
||
|
|
<view class="detail-row">
|
||
|
|
<text class="label">状态日期:</text>
|
||
|
|
<text class="value">{{ item.statusDate }}</text>
|
||
|
|
</view>
|
||
|
|
<view class="detail-row">
|
||
|
|
<text class="label">制作单位:</text>
|
||
|
|
<text class="value">{{ item.manuDept }}</text>
|
||
|
|
</view>
|
||
|
|
<view class="detail-row">
|
||
|
|
<text class="label">处理单位:</text>
|
||
|
|
<text class="value">{{ item.treatDept }}</text>
|
||
|
|
</view>
|
||
|
|
<view class="detail-row">
|
||
|
|
<text class="label">配送单位:</text>
|
||
|
|
<text class="value">{{ item.deliverDept }}</text>
|
||
|
|
</view>
|
||
|
|
<view class="detail-row">
|
||
|
|
<text class="label">工装托盘编号:</text>
|
||
|
|
<text class="value">{{ item.palletNo }}</text>
|
||
|
|
</view>
|
||
|
|
<!-- <view class="detail-row">
|
||
|
|
<text class="label">工装托盘转运记录ID:</text>
|
||
|
|
<text class="value">{{ item.deliveryId }}</text>
|
||
|
|
</view> -->
|
||
|
|
<view class="detail-row">
|
||
|
|
<text class="label">配送单号:</text>
|
||
|
|
<text class="value">{{ item.deliveryNo }}</text>
|
||
|
|
</view>
|
||
|
|
<view class="detail-row">
|
||
|
|
<text class="label">配送车辆:</text>
|
||
|
|
<text class="value">{{ item.deliveryCar }}</text>
|
||
|
|
</view>
|
||
|
|
<view class="detail-row">
|
||
|
|
<text class="label">配送日期:</text>
|
||
|
|
<text class="value">{{ item.deliveryDate }}</text>
|
||
|
|
</view>
|
||
|
|
<view class="detail-row">
|
||
|
|
<text class="label">配送备注:</text>
|
||
|
|
<text class="value">{{ item.deliveryRemark }}</text>
|
||
|
|
</view>
|
||
|
|
<view class="detail-row">
|
||
|
|
<text class="label">需求日期:</text>
|
||
|
|
<text class="value">{{ item.requireRate }}</text>
|
||
|
|
</view>
|
||
|
|
<view class="detail-row">
|
||
|
|
<text class="label">需求单位代码:</text>
|
||
|
|
<text class="value">{{ retType(item.requireDepartCode,2) }}</text>
|
||
|
|
</view>
|
||
|
|
<view class="detail-row">
|
||
|
|
<text class="label">配送地址:</text>
|
||
|
|
<text class="value">{{ item.requireAddress }}</text>
|
||
|
|
</view>
|
||
|
|
<view class="detail-row">
|
||
|
|
<text class="label">接收人员:</text>
|
||
|
|
<text class="value">{{ item.requireName }}</text>
|
||
|
|
</view>
|
||
|
|
<view class="detail-row">
|
||
|
|
<text class="label">接收人员电话:</text>
|
||
|
|
<text class="value">{{ item.requirePhone }}</text>
|
||
|
|
</view>
|
||
|
|
<view class="detail-row">
|
||
|
|
<text class="label">实际接收日期:</text>
|
||
|
|
<text class="value">{{ item.receiveDate }}</text>
|
||
|
|
</view>
|
||
|
|
<view class="detail-row">
|
||
|
|
<text class="label">实际接收人员:</text>
|
||
|
|
<text class="value">{{ item.receiveName }}</text>
|
||
|
|
</view>
|
||
|
|
<view class="detail-row">
|
||
|
|
<text class="label">实际接收备注:</text>
|
||
|
|
<text class="value">{{ item.receiveRemark }}</text>
|
||
|
|
</view>
|
||
|
|
</view>
|
||
|
|
</view>
|
||
|
|
</view>
|
||
|
|
</view>
|
||
|
|
|
||
|
|
</scroll-view>
|
||
|
|
|
||
|
|
</view>
|
||
|
|
</template>
|
||
|
|
|
||
|
|
<script>
|
||
|
|
export default {
|
||
|
|
props: {
|
||
|
|
pallet: {
|
||
|
|
type: Object,
|
||
|
|
default: null
|
||
|
|
}
|
||
|
|
},
|
||
|
|
data() {
|
||
|
|
return {
|
||
|
|
item: null,
|
||
|
|
depts:[],
|
||
|
|
dicts:[],
|
||
|
|
status:[], // 状态
|
||
|
|
}
|
||
|
|
},
|
||
|
|
mounted() {
|
||
|
|
this._initDetail();
|
||
|
|
this.getTypes();
|
||
|
|
},
|
||
|
|
watch: {
|
||
|
|
pallet(data) {
|
||
|
|
this._initDetail(data);
|
||
|
|
},
|
||
|
|
deep: true, // 深度监听
|
||
|
|
immediate: true, // 初次监听即执行
|
||
|
|
},
|
||
|
|
methods: {
|
||
|
|
_initDetail(pallet = this.pallet) {
|
||
|
|
this.item=pallet;
|
||
|
|
this.$forceUpdate();
|
||
|
|
},
|
||
|
|
getTypes() {
|
||
|
|
//获取数据字典
|
||
|
|
this.gcs=[];
|
||
|
|
this.status=[];
|
||
|
|
var commondata = uni.getStorageSync("commondata");
|
||
|
|
if(commondata){
|
||
|
|
var data = JSON.parse(commondata);
|
||
|
|
if(data){
|
||
|
|
this.dicts=data.dicts;
|
||
|
|
this.depts=data.depts;
|
||
|
|
this.dicts.forEach(cell=>{
|
||
|
|
// console.log(cell.bmlb)
|
||
|
|
if("TPZT"==cell.bmlb){
|
||
|
|
// 托盘转运状态
|
||
|
|
this.status.push(cell);
|
||
|
|
}
|
||
|
|
if("SYZT"==cell.bmlb){
|
||
|
|
|
||
|
|
// 托盘转运状态
|
||
|
|
this.palletStatus.push(cell);
|
||
|
|
}
|
||
|
|
|
||
|
|
});
|
||
|
|
this.$forceUpdate();
|
||
|
|
}
|
||
|
|
}
|
||
|
|
else{
|
||
|
|
this.dicts=[];
|
||
|
|
this.depts=[];
|
||
|
|
this.status=[];
|
||
|
|
}
|
||
|
|
},
|
||
|
|
retType(type,str) {
|
||
|
|
var rets = '';
|
||
|
|
if(str==1){
|
||
|
|
// 状态
|
||
|
|
this.status.forEach((cell,idx)=>{
|
||
|
|
if(type==cell.bm){
|
||
|
|
rets=cell.bmsm;
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
});
|
||
|
|
}
|
||
|
|
else if(str==3){
|
||
|
|
// 使用状态
|
||
|
|
this.palletStatus.forEach((cell,idx)=>{
|
||
|
|
if(type==cell.bm){
|
||
|
|
rets=cell.bmsm;
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
});
|
||
|
|
}
|
||
|
|
else if(str==2){
|
||
|
|
// 部门
|
||
|
|
this.depts.forEach((cell,idx)=>{
|
||
|
|
if(type==cell.departCode){
|
||
|
|
rets=cell.departName;
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
});
|
||
|
|
}
|
||
|
|
if(!rets){
|
||
|
|
rets=type
|
||
|
|
}
|
||
|
|
return rets;
|
||
|
|
},
|
||
|
|
getStatusClass(status) {
|
||
|
|
switch (status) {
|
||
|
|
case '表面接收':
|
||
|
|
return 'status-waiting';
|
||
|
|
case '建立任务':
|
||
|
|
return 'status-delivered';
|
||
|
|
case '内表面接收':
|
||
|
|
return 'status-receivedf';
|
||
|
|
case '配盘完工':
|
||
|
|
return 'status-received';
|
||
|
|
case '配送出库':
|
||
|
|
return 'status-outbound';
|
||
|
|
case '完工转运':
|
||
|
|
return 'status-complete';
|
||
|
|
default:
|
||
|
|
return 'status-default';
|
||
|
|
}
|
||
|
|
},
|
||
|
|
|
||
|
|
}
|
||
|
|
}
|
||
|
|
</script>
|
||
|
|
|
||
|
|
<style lang="scss" scoped>
|
||
|
|
.container {
|
||
|
|
height: 100%;
|
||
|
|
background-color: #f5f5f5;
|
||
|
|
}
|
||
|
|
|
||
|
|
.navbar {
|
||
|
|
display: flex;
|
||
|
|
align-items: center;
|
||
|
|
height: 88rpx;
|
||
|
|
background-color: #fff;
|
||
|
|
padding: 0 30rpx;
|
||
|
|
box-sizing: border-box;
|
||
|
|
position: relative;
|
||
|
|
box-shadow: 0 2rpx 10rpx rgba(0, 0, 0, 0.1);
|
||
|
|
}
|
||
|
|
|
||
|
|
.nav-left,
|
||
|
|
.nav-right {
|
||
|
|
width: 60rpx;
|
||
|
|
display: flex;
|
||
|
|
align-items: center;
|
||
|
|
}
|
||
|
|
|
||
|
|
.nav-title {
|
||
|
|
flex: 1;
|
||
|
|
text-align: center;
|
||
|
|
font-size: 34rpx;
|
||
|
|
font-weight: bold;
|
||
|
|
color: #333;
|
||
|
|
}
|
||
|
|
|
||
|
|
.content {
|
||
|
|
height: calc(100%);
|
||
|
|
padding: 0;
|
||
|
|
box-sizing: border-box;
|
||
|
|
}
|
||
|
|
|
||
|
|
.section {
|
||
|
|
background-color: #fff;
|
||
|
|
border-radius: 16rpx;
|
||
|
|
margin-bottom: 20rpx;
|
||
|
|
overflow: hidden;
|
||
|
|
box-shadow: 0 4rpx 12rpx rgba(0, 0, 0, 0.05);
|
||
|
|
}
|
||
|
|
|
||
|
|
.section-header {
|
||
|
|
padding: 30rpx;
|
||
|
|
border-bottom: 1rpx solid #eee;
|
||
|
|
}
|
||
|
|
|
||
|
|
.section-title {
|
||
|
|
font-size: 32rpx;
|
||
|
|
font-weight: bold;
|
||
|
|
color: #333;
|
||
|
|
}
|
||
|
|
|
||
|
|
.info-card {
|
||
|
|
padding: 30rpx;
|
||
|
|
}
|
||
|
|
|
||
|
|
.info-row {
|
||
|
|
display: flex;
|
||
|
|
margin-bottom: 20rpx;
|
||
|
|
}
|
||
|
|
|
||
|
|
.info-row:last-child {
|
||
|
|
margin-bottom: 0;
|
||
|
|
}
|
||
|
|
|
||
|
|
.label {
|
||
|
|
width: 200rpx;
|
||
|
|
font-size: 28rpx;
|
||
|
|
color: #666;
|
||
|
|
line-height: 1.5;
|
||
|
|
}
|
||
|
|
|
||
|
|
.value {
|
||
|
|
flex: 1;
|
||
|
|
font-size: 28rpx;
|
||
|
|
color: #333;
|
||
|
|
line-height: 1.5;
|
||
|
|
}
|
||
|
|
|
||
|
|
.status-used {
|
||
|
|
color: #ff6b35;
|
||
|
|
}
|
||
|
|
|
||
|
|
.status-transit {
|
||
|
|
color: #4a90e2;
|
||
|
|
}
|
||
|
|
|
||
|
|
.list-container {
|
||
|
|
padding: 20rpx 30rpx 30rpx;
|
||
|
|
}
|
||
|
|
|
||
|
|
.list-item {
|
||
|
|
border: 1rpx solid #eee;
|
||
|
|
border-radius: 12rpx;
|
||
|
|
margin-bottom: 20rpx;
|
||
|
|
overflow: hidden;
|
||
|
|
}
|
||
|
|
|
||
|
|
.item-header {
|
||
|
|
display: flex;
|
||
|
|
flex-direction: row;
|
||
|
|
align-items: center;
|
||
|
|
padding: 20rpx 30rpx;
|
||
|
|
background-color: #f9f9f9;
|
||
|
|
}
|
||
|
|
|
||
|
|
.item-title {
|
||
|
|
display: flex;
|
||
|
|
flex: 1;
|
||
|
|
font-size: 30rpx;
|
||
|
|
font-weight: bold;
|
||
|
|
color: #333;
|
||
|
|
}
|
||
|
|
|
||
|
|
.item-content {
|
||
|
|
padding: 20rpx 30rpx;
|
||
|
|
}
|
||
|
|
|
||
|
|
.detail-row {
|
||
|
|
display: flex;
|
||
|
|
margin-bottom: 15rpx;
|
||
|
|
}
|
||
|
|
|
||
|
|
.detail-row:last-child {
|
||
|
|
margin-bottom: 0;
|
||
|
|
}
|
||
|
|
|
||
|
|
.image-grid {
|
||
|
|
display: grid;
|
||
|
|
grid-template-columns: repeat(3, 1fr);
|
||
|
|
gap: 20rpx;
|
||
|
|
padding: 30rpx;
|
||
|
|
}
|
||
|
|
|
||
|
|
.image-item {
|
||
|
|
border-radius: 12rpx;
|
||
|
|
overflow: hidden;
|
||
|
|
aspect-ratio: 1;
|
||
|
|
}
|
||
|
|
|
||
|
|
.image {
|
||
|
|
width: 100%;
|
||
|
|
height: 100%;
|
||
|
|
}
|
||
|
|
|
||
|
|
.status-badge {
|
||
|
|
padding: 6rpx 12rpx;
|
||
|
|
border-radius: 10rpx;
|
||
|
|
font-size: 24rpx;
|
||
|
|
color: #fff;
|
||
|
|
display: flex;
|
||
|
|
align-items: center;
|
||
|
|
margin-right: 10rpx;
|
||
|
|
}
|
||
|
|
|
||
|
|
.status-waiting {
|
||
|
|
background-color: #faad14;
|
||
|
|
}
|
||
|
|
|
||
|
|
.status-delivered {
|
||
|
|
background-color: #1890ff;
|
||
|
|
}
|
||
|
|
|
||
|
|
.status-receivedf {
|
||
|
|
background-color: #52c41a;
|
||
|
|
}
|
||
|
|
|
||
|
|
.status-received {
|
||
|
|
background-color: #18b566;
|
||
|
|
}
|
||
|
|
|
||
|
|
.status-outbound {
|
||
|
|
background-color: #fca600;
|
||
|
|
}
|
||
|
|
|
||
|
|
.status-complete {
|
||
|
|
background-color: #c191e8;
|
||
|
|
}
|
||
|
|
|
||
|
|
.status-default {
|
||
|
|
background-color: #f5f5f5;
|
||
|
|
color: #666666;
|
||
|
|
}
|
||
|
|
|
||
|
|
</style>
|