装船外贸新需求

dev3
wuwx 2024-05-20 17:44:18 +08:00
parent 760d5fad98
commit 3440bde457
12 changed files with 1165 additions and 375 deletions

View File

@ -9,8 +9,8 @@
</view> </view>
<view class="navList"> <view class="navList">
<template v-for="(item,index) in navList"> <template v-for="(item,index) in navList">
<navigator :key="index" :url="item.path" open-type="redirect" class="item" @click="changeNav(index)"> <navigator :key="index" :url="item.path" open-type="redirect" class="item">
<view class="itemInfo" :class="item.type?'navActive':''"> <view class="itemInfo" :class="item.type?'navActive':''" @click="changeNav(index)">
<image :src="item.icon" mode="widthFix" v-if="item.type"></image> <image :src="item.icon" mode="widthFix" v-if="item.type"></image>
<image :src="item.smpId" mode="widthFix" v-if="!item.type"></image> <image :src="item.smpId" mode="widthFix" v-if="!item.type"></image>
<text>{{item.name}}</text> <text>{{item.name}}</text>
@ -145,21 +145,12 @@
required: true, required: true,
}, },
}, },
mounted() { created() {
this.navList = uni.getStorageSync('qxList') this.navList = uni.getStorageSync('qxList')
this.navList.map(item => { this.navList[uni.getStorageSync("navIndex")].type = true
item.type = false
if(item.name == '装船指令') {
item.path = '/pages/index/index'
item.icon = '../../static/images/theme/zcIcon1-1.png'
item.smpId = '../../static/images/theme/zcIcon1-2.png'
}
return item
})
this.loginObj = uni.getStorageSync('loginObj') this.loginObj = uni.getStorageSync('loginObj')
this.initData() this.initData()
this.activeIndex = uni.getStorageSync("selectPortIndex") this.activeIndex = uni.getStorageSync("selectPortIndex")
this.navList[uni.getStorageSync("navIndex")].type = true
this.getUser() this.getUser()
}, },
methods: { methods: {

View File

@ -2,7 +2,7 @@
"name" : "海通Pad", "name" : "海通Pad",
"appid" : "__UNI__F864E80", "appid" : "__UNI__F864E80",
"description" : "", "description" : "",
"versionName" : "1.0.0", "versionName" : "1.0.4",
"versionCode" : "100", "versionCode" : "100",
"transformPx" : false, "transformPx" : false,
/* 5+App */ /* 5+App */

View File

@ -43,6 +43,12 @@
"navigationBarTitleText": "指令" "navigationBarTitleText": "指令"
} }
}, },
{
"path": "pages/index/ladingNumber",
"style": {
"navigationBarTitleText": "提单号"
}
},
{ {
"path": "pages/index/instructDetails", "path": "pages/index/instructDetails",
"style": { "style": {

View File

@ -1682,7 +1682,7 @@
// //
getJobProgress() { getJobProgress() {
uni.request({ uni.request({
url: `${this.$local}/api/instruction/statistics/JobProgress?filterType=BRD_TYPE&target=UN_L&vvyId=${this.shipInfo.vvyId}`, url: `${this.$local}/api/instruction/statistics/JobProgress?filterType=BRD_TYPE&target=UN_L&vvyId=${this.shipInfo.vvyId}&size=5000&current=1`,
header: { header: {
'Content-Type': 'application/x-www-form-urlencoded', // 'Content-Type': 'application/x-www-form-urlencoded', //
'Authorization': `Bearer ${this.loginObj.access_token}` 'Authorization': `Bearer ${this.loginObj.access_token}`

View File

@ -759,20 +759,20 @@
this.qxList = uni.getStorageSync('qxList') this.qxList = uni.getStorageSync('qxList')
this.qxList.forEach(v => { this.qxList.forEach(v => {
if (v.code == "shipmentDirectives") { if (v.code == "shipmentDirectives") {
v.operates.forEach(e => { v.subMenus.forEach(e => {
if (e.code == "B1") { if (e.code == "shipmentDirectivesGeneral") {
this.zzlIsShwo = true this.zzlIsShwo = true
this.zzlName = e.name this.zzlName = e.name
} else if (e.code == "B2") { } else if (e.code == "shipmentDirectivesStowage") {
this.pztIsShow = true this.pztIsShow = true
this.pztName = e.name this.pztName = e.name
} else if (e.code == "B3") { } else if (e.code == "shipmentDirectivesSub") {
this.fzlIsShow = true this.fzlIsShow = true
this.fzlName = e.name this.fzlName = e.name
} else if (e.code == "B4") { } else if (e.code == "shipmentDirectivesSubGroup") {
this.bzzIsShow = true this.bzzIsShow = true
this.bzzName = e.name this.bzzName = e.name
} else if (e.code == "B5") { } else if (e.code == "shipmentDirectivesSite") {
this.cwtIsShow = true this.cwtIsShow = true
this.cwtName = e.name this.cwtName = e.name
} else if (e.code == "B6") { } else if (e.code == "B6") {
@ -1447,7 +1447,7 @@
// //
getJobProgress() { getJobProgress() {
uni.request({ uni.request({
url: `${this.$local}/api/instruction/statistics/JobProgress?filterType=${this.filterType}&target=N_L&vvyId=${this.shipInfo.vvyId}`, url: `${this.$local}/api/instruction/statistics/JobProgress?filterType=${this.filterType}&target=N_L&vvyId=${this.shipInfo.vvyId}&size=5000&current=1`,
header: { header: {
'Content-Type': 'application/x-www-form-urlencoded', // 'Content-Type': 'application/x-www-form-urlencoded', //
'Authorization': `Bearer ${this.loginObj.access_token}` 'Authorization': `Bearer ${this.loginObj.access_token}`

View File

@ -9,7 +9,7 @@
placeholder="请选择贸易类型" v-model="tradeName" @select="tradeSelect"></superwei-combox> --> placeholder="请选择贸易类型" v-model="tradeName" @select="tradeSelect"></superwei-combox> -->
<superwei-combox class="input" :candidates="shipList" :isJSON="true" keyName="vvyShip" <superwei-combox class="input" :candidates="shipList" :isJSON="true" keyName="vvyShip"
placeholder="请选择船名/航次" v-model="vvyShip" @select="shipSelect" placeholder="请选择船名/航次" v-model="vvyShip" @select="shipSelect"
@input="shipInput"></superwei-combox> @input="shipInput" clears @clearValue="clearValue"></superwei-combox>
<button class="btn" @click="onSearch"></button> <button class="btn" @click="onSearch"></button>
</view> </view>
<view class="rightInput" @click="screen"> <view class="rightInput" @click="screen">
@ -33,6 +33,7 @@
<p v-if="item.vvyStatus==0" class="dfs">{{item.vvyStatusName}}</p> <p v-if="item.vvyStatus==0" class="dfs">{{item.vvyStatusName}}</p>
<p v-if="item.vvyStatus==1" class="zyz">{{item.vvyStatusName}}</p> <p v-if="item.vvyStatus==1" class="zyz">{{item.vvyStatusName}}</p>
<p v-if="item.vvyStatus==2" class="ywc">{{item.vvyStatusName}}</p> <p v-if="item.vvyStatus==2" class="ywc">{{item.vvyStatusName}}</p>
<p v-if="item.vvyStatus==3" class="yks">{{item.vvyStatusName}}</p>
</view> </view>
</view> </view>
<view class="row"> <view class="row">
@ -122,10 +123,10 @@
value: "1", value: "1",
name: "外贸" name: "外贸"
}, },
{ // {
value: "2", // value: "2",
name: "内贸" // name: ""
} // }
], ],
vvyShip: "", vvyShip: "",
vvyId: "", vvyId: "",
@ -143,21 +144,8 @@
portObj: {}, portObj: {},
isMore: false, isMore: false,
dcList:[ dcList:[],
{ vvyStatus:'',
value: "0",
name: "未开始"
},
{
value: "1",
name: "作业中"
},
{
value: "2",
name: "已完成"
},
],
vvyStatus:'未开始',
operationDate:'', operationDate:'',
startDate:'', startDate:'',
endDate:'', endDate:'',
@ -189,7 +177,7 @@
}, },
mounted() { mounted() {
downloadPackage() downloadPackage()
this.initData() this.getDcList()
}, },
methods: { methods: {
// //
@ -221,6 +209,15 @@
} }
this.getShip() this.getShip()
}, },
//
clearValue() {
this.shipValue = ""
this.vvyId = ""
this.vvyShip = ""
this.shipId = ""
this.shipName = ""
this.getShip()
},
// //
getShip() { getShip() {
if (this.tradeName == '外贸') { if (this.tradeName == '外贸') {
@ -376,6 +373,28 @@
var d = dd.getDate() < 10 ? "0" + dd.getDate() : dd.getDate(); var d = dd.getDate() < 10 ? "0" + dd.getDate() : dd.getDate();
return y + "-" + m + "-" + d + ' 00:00:00'; return y + "-" + m + "-" + d + ' 00:00:00';
}, },
//
getDcList() {
uni.request({
url: this.$local + '/api/miniapp/typeRef/domain/VVY_STATUS',
header: {
'Content-Type': 'application/json', //
'Authorization': `Bearer ${this.loginObj.access_token}`
},
method: 'GET', //
success: (res) => {
if (res.data.status == 200) {
res.data.data.forEach(item => {
this.dcList.push({
value:item.ptrCode,
name:item.ptrDesc
})
})
this.initData()
}
}
})
}
} }
}; };
</script> </script>
@ -508,18 +527,22 @@
} }
.dfs { .dfs {
color: #0067CF; color: white;
background: #F1F8FF; background: #d9001b;
} }
.zyz { .zyz {
color: #04B578; color: white;
background: #E8FFF7; background: #1181fb;
} }
.ywc { .ywc {
color: #666666; color: white;
background: #F7F7F7; background: #70b603;
}
.yks {
color: white;
background: #f59a23;
} }
} }
} }

File diff suppressed because it is too large Load Diff

View File

@ -159,6 +159,8 @@
</uni-td> </uni-td>
</uni-tr> </uni-tr>
</uni-table> </uni-table>
<uni-pagination :show-icon="true" :total="total" :pageSize="10" :current="current"
@change="changePage" />
</view> </view>
</view> </view>
<!-- 弹出层 --> <!-- 弹出层 -->
@ -262,6 +264,9 @@
// //
objInfo: {}, objInfo: {},
//
total:20,
current:1
} }
}, },
components: { components: {
@ -296,7 +301,7 @@
getTableInfo() { getTableInfo() {
let url = "" let url = ""
if (this.objInfo.tradeName == 'W') { if (this.objInfo.tradeName == 'W') {
url = `${this.$local}/api/shipInstructions/goodsDetail/page?spsId=${this.objInfo.id}` url = `${this.$local}/api/shipInstructions/goodsDetail/page?spsId=${this.objInfo.id}&size=10&current=${this.current}`
} else if (this.objInfo.tradeName == 'N') { } else if (this.objInfo.tradeName == 'N') {
url = url =
`${this.$local}/api/domestic/load/command/pageForCargoDetails?splId=${this.objInfo.xqInfo.splId}&dlcId=${this.objInfo.jcInfo.dlcId}` `${this.$local}/api/domestic/load/command/pageForCargoDetails?splId=${this.objInfo.xqInfo.splId}&dlcId=${this.objInfo.jcInfo.dlcId}`
@ -310,6 +315,7 @@
method: 'GET', // method: 'GET', //
success: (res) => { success: (res) => {
if (res.data.status == 200) { if (res.data.status == 200) {
this.total = res.data.data.total
this.tableList = res.data.data.records this.tableList = res.data.data.records
console.log(this.tableList) console.log(this.tableList)
} }
@ -374,6 +380,11 @@
}, },
close() { close() {
this.$refs.popup.close() this.$refs.popup.close()
},
//
changePage(e) {
this.current = e.current
this.getTableInfo()
} }
} }
} }

View File

@ -0,0 +1,111 @@
<<template>
<view>
<head-view :title="title"></head-view>
<view class="content contentFixed">
<view class="liBox">
<view class="title">
<text>提单信息</text>
</view>
<uni-table stripe emptyText="暂无更多数据">
<!-- 表头行 -->
<uni-tr>
<uni-th width="10">序号</uni-th>
<uni-th width="15">提单号</uni-th>
<uni-th width="15">品牌</uni-th>
<uni-th width="15">车型</uni-th>
<uni-th width="15">车型明细</uni-th>
<uni-th width="10">数量</uni-th>
<uni-th width="18">场位</uni-th>
<uni-th width="10">待装数量</uni-th>
</uni-tr>
<!-- 表格数据行 -->
<uni-tr v-for="(item,index) in tableList" :key="index">
<uni-td>{{index + 1}}</uni-td>
<uni-td><text class="operate" @click="toDetails(item.spsId)">{{item.mnfBl}}</text></uni-td>
<uni-td>{{item.brdName}}</uni-td>
<uni-td>{{item.goodsTypeName}}</uni-td>
<uni-td>{{item.bvdName}}</uni-td>
<uni-td>{{item.amount}}</uni-td>
<uni-td>{{item.yardPos}}</uni-td>
<uni-td>{{item.readyLoadNum}}</uni-td>
</uni-tr>
</uni-table>
</view>
</view>
</view>
</template>
<script>
import HeadInfo from '@/components/head-info/head-info';
export default {
data() {
return {
loginObj: {},
title:'',
objInfo:{},
tableList:[]
}
},
components: {
HeadInfo
},
onLoad(options) {
this.objInfo = JSON.parse(decodeURIComponent(options.params))
this.loginObj = uni.getStorageSync('loginObj')
this.title = this.objInfo.shipInfo.spmIdDesc + ' / ' + this.objInfo.shipInfo.vvyName + ' ' + this.objInfo.CW
console.log(this.objInfo)
this.getQueryBillOfLading()
},
methods: {
//
getQueryBillOfLading() {
uni.request({
url: `${this.$local}/api/loadShipCommand/queryBillOfLading?lwpId=${this.objInfo.id}`,
header: {
'Content-Type': 'application/json', //
'Authorization': `Bearer ${this.loginObj.access_token}`
},
method: 'GET', //
success: (res) => {
if (res.data.status == 200) {
// console.log(res.data.data);
this.tableList = res.data.data
}
}
})
},
toDetails(id) {
let obj = {
id: id,
tradeName: "W",
shipInfo: this.objInfo.shipInfo
}
const params = encodeURIComponent(JSON.stringify(obj));
uni.navigateTo({
url: '/pages/index/instructDetails?params=' + params
})
},
}
}
</script>
<style lang="less" scoped>
.content {
padding: 16px;
.liBox {
width: 100%;
padding: 24px 16px 24px;
background-color: #fff;
.title {
display: flex;
margin-bottom: 20px;
font-size: 20px;
font-weight: 500;
}
.operate {
color: #2979ff;
}
}
}
</style>

View File

@ -56,33 +56,33 @@
</view> </view>
<view class="ul shiftUl"> <view class="ul shiftUl">
<template v-if="shiftInfo.length > 0"> <template v-if="shiftInfo.length > 0">
<view class="li" v-for="(item,index) in shiftInfo" :key="index" <view class="li" v-for="(item,index) in shiftInfo[0]" :key="index"
@click="lookShift(item,index)"> @click="lookShift(index)">
<view class="title"> <view class="title">
<image src="../../static/images/shipWork/hc.png" mode="widthFix"></image> <image src="../../static/images/shipWork/hc.png" mode="widthFix"></image>
<text>航次{{item[0].vvyName}}</text> <text>航次{{item.vvyName}}</text>
</view> </view>
<view class="shift" v-for="(item2,index2) in item[0].shiftArr" :key="index2"> <view class="shift" v-for="(item2,index2) in item.shiftArr" :key="index2">
<text>{{item2.pwcTypeName}}</text> <text>{{item2.pwcTypeName}}</text>
<text class="text">开始时间</text><text class="time">{{item2.workStartTime}}</text> <text class="text">开始时间</text><text class="time">{{item2.workStartTime}}</text>
<text class="text">结束时间</text><text class="time">{{item2.workEndTime}}</text> <text class="text">结束时间</text><text class="time">{{item2.workEndTime}}</text>
</view> </view>
<view class="status didNot" v-if="item[0].status == 0 || item[0].status == 'null'"> <view class="status didNot" v-if="item.status == 0 || item.status == 'null'">
<p>待提交</p> <p>待提交</p>
</view> </view>
<view class="status didNot" v-if="item[0].status == 1"> <view class="status didNot" v-if="item.status == 1">
<p>待审核</p> <p>待审核</p>
</view> </view>
<view class="status didNot" v-if="item[0].status == 2"> <view class="status didNot" v-if="item.status == 2">
<p>审批中</p> <p>审批中</p>
</view> </view>
<view class="status success" v-if="item[0].status == 3"> <view class="status success" v-if="item.status == 3">
<p>审核通过</p> <p>审核通过</p>
</view> </view>
<view class="status fail" v-if="item[0].status == 4"> <view class="status fail" v-if="item.status == 4">
<p>审核驳回</p> <p>审核驳回</p>
</view> </view>
<view class="status success" v-if="item[0].status == 5"> <view class="status success" v-if="item.status == 5">
<p>审核通过</p> <p>审核通过</p>
</view> </view>
</view> </view>
@ -242,8 +242,9 @@
}) })
} }
}, },
lookShift(item, index) { lookShift(index) {
uni.setStorageSync('shiftRow', item); let arr = this.shiftInfo[index]
uni.setStorageSync('shiftRow', arr);
uni.navigateTo({ uni.navigateTo({
url: `/pages/shipWork/shiftDetails` url: `/pages/shipWork/shiftDetails`
}) })

View File

@ -2,7 +2,7 @@
<view :class="['tab',{'tab-fixed':fixed}]"> <view :class="['tab',{'tab-fixed':fixed}]">
<scroll-view :class="['tab-bar',{'tab-bar-center':tabCenter}]" scroll-x="true" :scroll-into-view="scrollId" scroll-with-animation> <scroll-view :class="['tab-bar',{'tab-bar-center':tabCenter}]" scroll-x="true" :scroll-into-view="scrollId" scroll-with-animation>
<view v-for="(item,index) in tabList" class="tab-bar-item" :class="{'active':tabIndex==index}" :id="`tab_${index}`" :style="[{'padding':`0 ${tabSpacing}rpx`},tabIndex==index?activeTextStyle:defaultTextStyle]" :key="index" @click="putChange(item.name,index);tabChange(index)"> <view v-for="(item,index) in tabList" class="tab-bar-item" :class="{'active':tabIndex==index}" :id="`tab_${index}`" :style="[{'padding':`0 ${tabSpacing}rpx`},tabIndex==index?activeTextStyle:defaultTextStyle]" :key="index" @click="putChange(item.name,index);tabChange(index)">
<text class="txt">{{item.label}}</text> <text :class="[(index == 0 && flag1) || (index == 1 && flag2) ? 'txt' :'']">{{item.label}}</text>
<text class="active-line" v-if="tabIndex==index" :style="[activeLineStyle]"></text> <text class="active-line" v-if="tabIndex==index" :style="[activeLineStyle]"></text>
</view> </view>
</scroll-view> </scroll-view>
@ -51,6 +51,14 @@
}, },
activeLineStyle: { // 线 activeLineStyle: { // 线
type: [Object] type: [Object]
},
flag1:{
type: Boolean,
default: false
},
flag2:{
type: Boolean,
default: false
} }
}, },
data() { data() {
@ -218,4 +226,8 @@
padding: 20rpx 0; padding: 20rpx 0;
} }
} }
.txt::after {
content: "*";
color: red;
}
</style> </style>

View File

@ -7,6 +7,8 @@
<input class="superwei-combox__input" type="text" :placeholder="placeholder" <input class="superwei-combox__input" type="text" :placeholder="placeholder"
placeholder-class="superwei-combox__input-plac" v-model="inputVal" @input="onInput" @focus="onFocus" placeholder-class="superwei-combox__input-plac" v-model="inputVal" @input="onInput" @focus="onFocus"
@blur="onBlur" /> @blur="onBlur" />
<uni-icons v-if="clears" type="clear" size="14" color="#999" @click="clearValue">
</uni-icons>
<uni-icons :type="showSelector? 'top' : 'bottom'" size="14" color="#999" @click="toggleSelector"> <uni-icons :type="showSelector? 'top' : 'bottom'" size="14" color="#999" @click="toggleSelector">
</uni-icons> </uni-icons>
</view> </view>
@ -50,7 +52,7 @@
*/ */
export default { export default {
name: 'superweiCombox', name: 'superweiCombox',
emits: ['input', 'update:modelValue', 'select'], emits: ['input', 'update:modelValue', 'select','clearValue'],
props: { props: {
isAllowCreate: { isAllowCreate: {
type: Boolean, type: Boolean,
@ -102,6 +104,10 @@
type: String, type: String,
default: '无匹配项' default: '无匹配项'
}, },
clears:{
type: Boolean,
default: false
},
// #ifndef VUE3 // #ifndef VUE3
value: { value: {
type: [String, Number], type: [String, Number],
@ -241,6 +247,10 @@
this.$emit('input', this.inputVal) this.$emit('input', this.inputVal)
this.$emit('update:modelValue', this.inputVal) this.$emit('update:modelValue', this.inputVal)
}) })
},
clearValue() {
this.inputVal = ''
this.$emit('clearValue')
} }
} }
} }