装船外贸新需求

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 class="navList">
<template v-for="(item,index) in navList">
<navigator :key="index" :url="item.path" open-type="redirect" class="item" @click="changeNav(index)">
<view class="itemInfo" :class="item.type?'navActive':''">
<navigator :key="index" :url="item.path" open-type="redirect" class="item">
<view class="itemInfo" :class="item.type?'navActive':''" @click="changeNav(index)">
<image :src="item.icon" mode="widthFix" v-if="item.type"></image>
<image :src="item.smpId" mode="widthFix" v-if="!item.type"></image>
<text>{{item.name}}</text>
@ -145,21 +145,12 @@
required: true,
},
},
mounted() {
created() {
this.navList = uni.getStorageSync('qxList')
this.navList.map(item => {
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.navList[uni.getStorageSync("navIndex")].type = true
this.loginObj = uni.getStorageSync('loginObj')
this.initData()
this.activeIndex = uni.getStorageSync("selectPortIndex")
this.navList[uni.getStorageSync("navIndex")].type = true
this.getUser()
},
methods: {

View File

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

View File

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

View File

@ -1682,7 +1682,7 @@
//
getJobProgress() {
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: {
'Content-Type': 'application/x-www-form-urlencoded', //
'Authorization': `Bearer ${this.loginObj.access_token}`

View File

@ -759,20 +759,20 @@
this.qxList = uni.getStorageSync('qxList')
this.qxList.forEach(v => {
if (v.code == "shipmentDirectives") {
v.operates.forEach(e => {
if (e.code == "B1") {
v.subMenus.forEach(e => {
if (e.code == "shipmentDirectivesGeneral") {
this.zzlIsShwo = true
this.zzlName = e.name
} else if (e.code == "B2") {
} else if (e.code == "shipmentDirectivesStowage") {
this.pztIsShow = true
this.pztName = e.name
} else if (e.code == "B3") {
} else if (e.code == "shipmentDirectivesSub") {
this.fzlIsShow = true
this.fzlName = e.name
} else if (e.code == "B4") {
} else if (e.code == "shipmentDirectivesSubGroup") {
this.bzzIsShow = true
this.bzzName = e.name
} else if (e.code == "B5") {
} else if (e.code == "shipmentDirectivesSite") {
this.cwtIsShow = true
this.cwtName = e.name
} else if (e.code == "B6") {
@ -1447,7 +1447,7 @@
//
getJobProgress() {
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: {
'Content-Type': 'application/x-www-form-urlencoded', //
'Authorization': `Bearer ${this.loginObj.access_token}`

View File

@ -9,7 +9,7 @@
placeholder="请选择贸易类型" v-model="tradeName" @select="tradeSelect"></superwei-combox> -->
<superwei-combox class="input" :candidates="shipList" :isJSON="true" keyName="vvyShip"
placeholder="请选择船名/航次" v-model="vvyShip" @select="shipSelect"
@input="shipInput"></superwei-combox>
@input="shipInput" clears @clearValue="clearValue"></superwei-combox>
<button class="btn" @click="onSearch"></button>
</view>
<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==1" class="zyz">{{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 class="row">
@ -122,10 +123,10 @@
value: "1",
name: "外贸"
},
{
value: "2",
name: "内贸"
}
// {
// value: "2",
// name: ""
// }
],
vvyShip: "",
vvyId: "",
@ -143,21 +144,8 @@
portObj: {},
isMore: false,
dcList:[
{
value: "0",
name: "未开始"
},
{
value: "1",
name: "作业中"
},
{
value: "2",
name: "已完成"
},
],
vvyStatus:'未开始',
dcList:[],
vvyStatus:'',
operationDate:'',
startDate:'',
endDate:'',
@ -189,7 +177,7 @@
},
mounted() {
downloadPackage()
this.initData()
this.getDcList()
},
methods: {
//
@ -221,6 +209,15 @@
}
this.getShip()
},
//
clearValue() {
this.shipValue = ""
this.vvyId = ""
this.vvyShip = ""
this.shipId = ""
this.shipName = ""
this.getShip()
},
//
getShip() {
if (this.tradeName == '外贸') {
@ -376,6 +373,28 @@
var d = dd.getDate() < 10 ? "0" + dd.getDate() : dd.getDate();
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>
@ -508,18 +527,22 @@
}
.dfs {
color: #0067CF;
background: #F1F8FF;
color: white;
background: #d9001b;
}
.zyz {
color: #04B578;
background: #E8FFF7;
color: white;
background: #1181fb;
}
.ywc {
color: #666666;
background: #F7F7F7;
color: white;
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-tr>
</uni-table>
<uni-pagination :show-icon="true" :total="total" :pageSize="10" :current="current"
@change="changePage" />
</view>
</view>
<!-- 弹出层 -->
@ -262,6 +264,9 @@
//
objInfo: {},
//
total:20,
current:1
}
},
components: {
@ -296,7 +301,7 @@
getTableInfo() {
let url = ""
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') {
url =
`${this.$local}/api/domestic/load/command/pageForCargoDetails?splId=${this.objInfo.xqInfo.splId}&dlcId=${this.objInfo.jcInfo.dlcId}`
@ -310,6 +315,7 @@
method: 'GET', //
success: (res) => {
if (res.data.status == 200) {
this.total = res.data.data.total
this.tableList = res.data.data.records
console.log(this.tableList)
}
@ -374,6 +380,11 @@
},
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 class="ul shiftUl">
<template v-if="shiftInfo.length > 0">
<view class="li" v-for="(item,index) in shiftInfo" :key="index"
@click="lookShift(item,index)">
<view class="li" v-for="(item,index) in shiftInfo[0]" :key="index"
@click="lookShift(index)">
<view class="title">
<image src="../../static/images/shipWork/hc.png" mode="widthFix"></image>
<text>航次{{item[0].vvyName}}</text>
<text>航次{{item.vvyName}}</text>
</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 class="text">开始时间</text><text class="time">{{item2.workStartTime}}</text>
<text class="text">结束时间</text><text class="time">{{item2.workEndTime}}</text>
</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>
</view>
<view class="status didNot" v-if="item[0].status == 1">
<view class="status didNot" v-if="item.status == 1">
<p>待审核</p>
</view>
<view class="status didNot" v-if="item[0].status == 2">
<view class="status didNot" v-if="item.status == 2">
<p>审批中</p>
</view>
<view class="status success" v-if="item[0].status == 3">
<view class="status success" v-if="item.status == 3">
<p>审核通过</p>
</view>
<view class="status fail" v-if="item[0].status == 4">
<view class="status fail" v-if="item.status == 4">
<p>审核驳回</p>
</view>
<view class="status success" v-if="item[0].status == 5">
<view class="status success" v-if="item.status == 5">
<p>审核通过</p>
</view>
</view>
@ -242,8 +242,9 @@
})
}
},
lookShift(item, index) {
uni.setStorageSync('shiftRow', item);
lookShift(index) {
let arr = this.shiftInfo[index]
uni.setStorageSync('shiftRow', arr);
uni.navigateTo({
url: `/pages/shipWork/shiftDetails`
})

View File

@ -2,7 +2,7 @@
<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>
<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>
</view>
</scroll-view>
@ -51,6 +51,14 @@
},
activeLineStyle: { // 线
type: [Object]
},
flag1:{
type: Boolean,
default: false
},
flag2:{
type: Boolean,
default: false
}
},
data() {
@ -218,4 +226,8 @@
padding: 20rpx 0;
}
}
.txt::after {
content: "*";
color: red;
}
</style>

View File

@ -7,6 +7,8 @@
<input class="superwei-combox__input" type="text" :placeholder="placeholder"
placeholder-class="superwei-combox__input-plac" v-model="inputVal" @input="onInput" @focus="onFocus"
@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>
</view>
@ -50,7 +52,7 @@
*/
export default {
name: 'superweiCombox',
emits: ['input', 'update:modelValue', 'select'],
emits: ['input', 'update:modelValue', 'select','clearValue'],
props: {
isAllowCreate: {
type: Boolean,
@ -102,6 +104,10 @@
type: String,
default: '无匹配项'
},
clears:{
type: Boolean,
default: false
},
// #ifndef VUE3
value: {
type: [String, Number],
@ -241,6 +247,10 @@
this.$emit('input', this.inputVal)
this.$emit('update:modelValue', this.inputVal)
})
},
clearValue() {
this.inputVal = ''
this.$emit('clearValue')
}
}
}
@ -376,4 +386,4 @@
.superwei-combox__no-border {
border: none;
}
</style>
</style>