pad-app/pages/discharge/instructDetails.vue

467 lines
11 KiB
Vue
Raw Normal View History

2023-09-23 20:16:54 +08:00
<template>
<view class="details">
<head-view :title="title"></head-view>
2023-11-01 18:40:05 +08:00
<view class="container contentFixed">
2023-09-23 20:16:54 +08:00
<view class="liBox">
<view class="title">
<image src="../../static/images/carInfo.png" mode="widthFix"></image>
<text>基本信息</text>
</view>
<view class="ul">
<view class="li">
<p>船名</p>
<text>{{objInfo.shipInfo.spmIdDesc}}</text>
</view>
<view class="li">
<p>航次</p>
<text>{{objInfo.shipInfo.vvyName}}</text>
</view>
<view class="li">
<p>泊位</p>
<text>{{objInfo.shipInfo.actualBerthageDesc}}</text>
</view>
</view>
</view>
<view class="liBox">
<view class="title">
<image src="../../static/images/goodsImg.png" mode="widthFix"></image>
<text>详细信息</text>
</view>
<view class="ul">
<view class="li">
<p>品牌</p>
<text>{{objInfo.xqInfo.brdName}}</text>
</view>
<view class="li">
<p>提单号</p>
<text>{{objInfo.xqInfo.mnfBl}}</text>
</view>
<view class="li">
<p>车型</p>
<text>{{objInfo.xqInfo.bvmName}}</text>
</view>
<view class="li">
<p>型号</p>
<text>{{objInfo.xqInfo.model}}</text>
</view>
<view class="li">
<p>数量</p>
<text>{{objInfo.xqInfo.amount}}</text>
</view>
<view class="li">
<p>场位</p>
<text>{{objInfo.xqInfo.yardPos}}</text>
</view>
</view>
</view>
<view class="liBox">
<view class="title">
<image src="../../static/images/goodsImg2.png" mode="widthFix"></image>
<text>货物明细</text>
</view>
<view class="formNr">
2023-12-22 17:48:52 +08:00
<uni-table stripe emptyText="暂无更多数据">
2023-09-23 20:16:54 +08:00
<!-- 表头行 -->
2023-12-22 17:48:52 +08:00
<uni-tr>
<uni-th width="10">序号</uni-th>
<uni-th width="22">车架号/条形码</uni-th>
<uni-th width="15">作业状态</uni-th>
<uni-th width="40">场位</uni-th>
<uni-th width="15">货物性质</uni-th>
<uni-th width="10">操作</uni-th>
2023-09-23 20:16:54 +08:00
</uni-tr>
<!-- 表格数据行 -->
<uni-tr v-for="(item,index) in tableList" :key="index">
2023-12-22 17:48:52 +08:00
<uni-td>{{index + 1}}</uni-td>
<uni-td>{{item.vinCode}}</uni-td>
<uni-td>{{item.workStatus}}</uni-td>
<uni-td>{{item.yardPos}}</uni-td>
<uni-td>{{item.natureFlagName}}</uni-td>
<uni-td>
2023-09-23 20:16:54 +08:00
<text class="operate" @click="open(item)"></text>
</uni-td>
</uni-tr>
</uni-table>
</view>
</view>
<!-- 弹出层 -->
<uni-popup ref="popup" :mask-click="false">
<view class="dialog">
<view class="dtitle">
<text>残损信息</text>
<uni-icons type="closeempty" size="30" @click="close"></uni-icons>
</view>
<view class="tableContant">
<view class="nr">
<text class="text">品牌:{{rowInfo.brdName}}</text>
<text class="text">车型:{{rowInfo.bvmName}}</text>
<text class="text">车架号/条形码:{{rowInfo.vinCode}}</text>
</view>
<view class="table" v-for="(item,index) in damagedList" :key="index">
<view class="title">
<view>质损发生环节: {{item.qdLinkName}}</view>
<view class="tag" v-if="item.godStatus != null">{{item.godStatus}}</view>
</view>
<view class="row">
<view class="col">
质损上报人员: {{item.qdReportPerson}}
</view>
<view class="col">
质损上报时间: {{item.qualityDamageTime}}
</view>
<view class="col">
质损发生位置: {{item.yardPos}}
</view>
</view>
<view class="row">
<view class="col">
质损概况: {{item.qualityDamageSituationName}}
</view>
<view class="col">
损坏情况: {{item.damageSituationName}}
</view>
<view class="col">
处置情况: {{item.disposalSituationName}}
</view>
</view>
<view class="imgRow">
<view class="name">
质损照片:
</view>
<view class="imgList">
<view class="img" v-for="(item2,index2) in item.damageImageList" :key="index2">
<image :src="item2" mode="widthFix"></image>
</view>
</view>
</view>
<view class="imgRow">
<view class="name">
车架号照片:
</view>
<view class="imgList">
<view class="img" v-for="(item2,index2) in item.vinCodeImageList" :key="index2">
<image :src="item2" mode="widthFix"></image>
</view>
</view>
</view>
</view>
</view>
</view>
</uni-popup>
</view>
</view>
</template>
<script>
import HeadInfo from '@/components/head-info/head-info';
export default {
data() {
return {
loginObj: {},
title: "货物详情",
id: "",
// 基本信息
basicInfo: {},
// 详细信息
detailInfo: {},
// 货物明细
tableList: [],
// 货物明细当前行信息
rowInfo: {},
// 残损信息列表
damagedList: [],
// 质损照片
damageImage: [],
// 车架号照片
vinCodeImage: [],
// 内贸详情数据
objInfo: {},
}
},
components: {
HeadInfo
},
onLoad(options) {
this.objInfo = JSON.parse(decodeURIComponent(options.params))
console.log(this.objInfo)
this.loginObj = uni.getStorageSync('loginObj')
this.getTableInfo()
},
methods: {
// 获取货物明细数据
getTableInfo() {
uni.request({
2023-11-01 18:40:05 +08:00
url: `${this.$local}/api/unload/command/pageForCargoDetails?suaId=${this.objInfo.xqInfo.suaId}&lwpId=${this.objInfo.jcInfo.lwpId}`,
2023-09-23 20:16:54 +08:00
header: {
'Content-Type': 'application/json', //自定义请求头信息
'Authorization': `Bearer ${this.loginObj.access_token}`
},
method: 'GET', //请求方式,必须为大写
success: (res) => {
if (res.data.status == 200) {
this.tableList = res.data.data.records
console.log(this.tableList)
}
}
})
},
open(item) {
this.rowInfo = item
console.log(item)
this.$refs.popup.open('center')
this.getDamaged(item.vinCode)
},
// 获取残损信息
getDamaged(vinCode) {
uni.request({
url: `${this.$local}/api/goodsQuality/damage/${vinCode}`,
header: {
'Content-Type': 'application/json', //自定义请求头信息
'Authorization': `Bearer ${this.loginObj.access_token}`
},
method: 'GET', //请求方式,必须为大写
success: (res) => {
if (res.data.status == 200) {
this.damagedList = res.data.data
this.damagedList.forEach((item, index) => {
item.damageImage.forEach((v, index2) => {
this.initImg(v, "1", index, index2)
})
item.vinCodeImage.forEach((v, index2) => {
this.initImg(v, "2", index, index2)
})
})
}
}
})
},
initImg(fileName, type, index, index2) {
uni.request({
url: `${this.$local}/api/file/url/?fileName=${fileName}`,
header: {
'Content-Type': 'application/json', //自定义请求头信息
'Authorization': `Bearer ${this.loginObj.access_token}`
},
method: 'GET', //请求方式,必须为大写
success: (res) => {
if (type == 1) {
this.damageImage.push(res.data)
this.$set(this.damagedList[index], "damageImageList", this.damageImage)
if (this.damagedList[index].damageImage.length == this.damageImage.length) {
this.damageImage = []
}
} else if (type == 2) {
this.vinCodeImage.push(res.data)
this.$set(this.damagedList[index], "vinCodeImageList", this.vinCodeImage)
if (this.damagedList[index].vinCodeImage.length == this.vinCodeImage.length) {
this.vinCodeImage = []
}
}
}
})
},
close() {
this.$refs.popup.close()
}
}
}
</script>
<style lang="less" scoped>
.details {
.container {
padding: 16px;
.liBox {
width: 100%;
padding: 24px 16px;
background-color: #fff;
margin-bottom: 16px;
.title {
display: flex;
margin-bottom: 20px;
image {
width: 24px;
height: 24px;
margin-top: 2px;
}
text {
font-size: 18px;
font-weight: bold;
margin-left: 10px;
}
}
.ul {
display: flex;
flex-wrap: wrap;
.li {
width: 32%;
margin-bottom: 12px;
display: flex;
font-size: 14px;
2023-11-13 10:11:34 +08:00
height: 20px;
line-height: 20px;
2023-09-23 20:16:54 +08:00
p {
color: #999;
}
text {
color: #23262E;
}
}
}
}
.formTitle {
padding-left: 10px;
border-left: 5px solid #2979ff;
font-size: 20px;
font-weight: bold;
}
.formNr {
2023-12-22 17:48:52 +08:00
/deep/.uni-table-th {
background-color: #f4f4f4;
color: #0B266A;
font-size: 15px;
.uni-table-th-content {
padding-left: 7.5px;
border-left: 1px solid #0B266A;
}
}
/deep/.uni-table-td {
padding-left: 15px;
2023-09-23 20:16:54 +08:00
}
.operate {
color: #2979ff;
}
}
}
}
.dialog {
width: 90vh;
height: 80vh;
background-color: #fff;
border-radius: 10px;
.dtitle {
width: 100%;
height: 60px;
line-height: 60px;
border-radius: 10px 10px 0 0;
padding: 0 20px;
font-size: 18px;
font-weight: 700;
background-color: #f9f9f9;
text-align: left;
display: flex;
justify-content: space-between;
}
.tableContant {
height: calc(80vh - 60px);
overflow-y: auto;
.nr {
padding: 0 20px;
height: 60px;
line-height: 60px;
display: flex;
justify-content: flex-start;
.text {
min-width: 120px;
text-align: left;
}
}
.table {
width: calc(100% - 40px);
margin: 0 20px 20px;
padding: 0 20px;
border-bottom: 1px solid #ebebeb;
.title {
height: 40px;
line-height: 40px;
font-weight: 900;
text-align: left;
display: flex;
justify-content: flex-start;
.tag {
width: 60px;
margin: 10px 15px 0;
border-radius: 3px;
height: 20px;
line-height: 20px;
font-weight: 400;
color: #fff;
text-align: center;
background-color: #108ee9;
}
}
.row {
width: 100%;
display: flex;
justify-content: space-between;
font-size: 18px;
height: 40px;
font-size: 10px;
.col {
width: 32%;
text-align: left;
}
}
.imgRow {
margin-bottom: 25rpx;
display: flex;
justify-content: flex-start;
.name {
width: 80px;
text-align: left;
font-size: 10px;
}
.imgList {
width: calc(100% - 80px);
display: flex;
justify-content: flex-start;
flex-wrap: wrap;
.img {
width: 100px;
margin-left: 10px;
margin-bottom: 10px;
}
}
}
}
}
}
</style>