pad-app/pages/shipWork/brandDetails.vue

640 lines
15 KiB
Vue

<template>
<view class="brandDetails">
<head-view :title="title" url="/pages/shipWork/documentList"></head-view>
<view class="container contentFixed">
<view class="topBox">
<view class="leftInput">
<uni-easyinput suffixIcon="search" v-model="searchValue" placeholder="品牌/提单号"
@iconClick="iconClick"></uni-easyinput>
</view>
<text @click="screen">筛选</text>
</view>
<uni-drawer ref="showRight" mode="right" :mask-click="false">
<view class="scroll-view">
<scroll-view class="scroll-view-box" scroll-y="true">
<view class="drawerTop" @click="back">
<image src="../../static/images/leftJt.png" mode=""></image>
<text>返回</text>
</view>
<view class="drawerTitle">
型号
</view>
<view class="selectBox">
<template v-if="modelList.length > 0">
<view class="boxContent" v-for="(item,index) in modelList" :key="index"
:class="{active:activeIndex == index}" @click="clickModel(item,index)">
{{item.text}}
</view>
</template>
<template v-else>
<p>暂无数据</p>
</template>
</view>
<view class="drawerTitle">
品牌
</view>
<superwei-combox :candidates="brdList" :isJSON="true" keyName="text" placeholder="请选择品牌"
v-model="brdName" @select="brdSelect"></superwei-combox>
<view class="drawerTitle">
车型
</view>
<superwei-combox :candidates="bvmList" :isJSON="true" keyName="text" placeholder="请选择车型"
v-model="bvmName" @select="bvmSelect"></superwei-combox>
<view class="drawerTitle">
港口
</view>
<superwei-combox :candidates="potList" :isJSON="true" keyName="text" placeholder="请选择港口"
v-model="potName" @select="potSelect"></superwei-combox>
<view class="drawerTitle">
重量
</view>
<view class="qjBox">
<uni-easyinput v-model="minTon" class="input" type="number"></uni-easyinput>
<text>吨</text>
<text> - </text>
<uni-easyinput v-model="maxTon" class="input" type="number"></uni-easyinput>
<text>吨</text>
</view>
<view class="drawerTitle">
</view>
<view class="qjBox">
<uni-easyinput v-model="minWidth" class="input" type="number"></uni-easyinput>
<text>m</text>
<text> - </text>
<uni-easyinput v-model="maxWidth" class="input" type="number"></uni-easyinput>
<text>m</text>
</view>
<view class="drawerTitle">
</view>
<view class="qjBox">
<uni-easyinput v-model="minHeight" class="input" type="number"></uni-easyinput>
<text>m</text>
<text> - </text>
<uni-easyinput v-model="maxHeight" class="input" type="number"></uni-easyinput>
<text>m</text>
</view>
<view class="bottomBtn">
<view class="btn czBtn" @click="reset">
重置
</view>
<view class="btn qrBtn" @click="confirm">
确认
</view>
</view>
</scroll-view>
</view>
</uni-drawer>
<template v-if=" listInfo.length> 0">
<view class="ul">
<view class="li" v-for="(item,index) in listInfo" :key="index" @click="togoCar(item)">
<view class="liTitle">
<image class="titleImg" src="../../static/images/zlIcon.png" mode="widthFix">
</image>
<p>品牌:{{item.brdName}}</p>
</view>
<view class="liContent">
<p>提单号:{{item.mnfBl}}</p>
<p>源类型:{{item.sourceType}}</p>
<p>场位:{{item.yardPos}}</p>
<p>数量:{{item.amount}}</p>
<p>航次:{{item.vvyName}}</p>
<p>港口:{{item.potName}}</p>
<p>报关状态:{{item.customsDeclareStatus}}</p>
<p>车型:{{item.bvmName}}</p>
<p>报关单号:{{item.customsDeclareNo}}</p>
<p>车型明细:{{item.bvdName}}</p>
<p>货代:{{item.agentName}}</p>
</view>
</view>
</view>
<view class="pageBox" v-if="total > 0">
<uni-pagination :show-icon="true" :total="total" :pageSize="pageSize" :current="current"
@change="changePage" />
</view>
</template>
<o-empty v-else height="70vh" bg="#fff" />
</view>
</view>
</template>
<script>
import sqlite from "../../common/sqlite.js"
import api from "../../common/api.js"
export default {
data() {
return {
title: "船名 - 品牌明细",
searchValue: "",
listInfo: [],
allList: [],
vtpId: "",
// 抽屉内容
// 型号
modelId: "",
modelName: "",
modelList: [],
activeIndex: -1,
// 品牌
brdId: "",
brdName: "",
brdList: [],
// 车型
bvmId: "",
bvmName: "",
bvmList: [],
// 港口
potId: "",
potName: "",
potList: [],
// 最小吨
minTon: "",
// 最大吨
maxTon: "",
// 最小宽度
minWidth: "",
// 最大宽度
maxWidth: "",
// 最小高度
minHeight: "",
// 最大高度
maxHeight: "",
// 分页
total: 0,
pageSize: 3,
current: 1,
}
},
mounted() {
let title = uni.getStorageSync('shipWorkTitle')
this.title = `${title} / 品牌明细 `
this.vtpId = uni.getStorageSync('vtpId')
this.executeSql1('shipmentShipLoadPlansRespList')
this.executeSql1('shipInfoTable')
},
methods: {
// 查
executeSql1(tableName) {
let sql = `select * from ${tableName} WHERE vtpId = '${this.vtpId}'`
sqlite.executeSqlCeshi(sql).then((value) => {
// 在resolve时执行的回调函数
if (tableName == "shipInfoTable") {
this.shipInfo = value[0]
} else {
this.allList = value
this.total = value.length
let newArr = this.getMapping(value, this.pageSize)
this.listInfo = newArr[this.current - 1];
this.listInfo.forEach(v => {
if (v.brdName == "null") {
this.$set(v, "brdName", "-")
}
if (v.mnfBl == "null") {
this.$set(v, "mnfBl", "-")
}
if (v.sourceType == "null") {
this.$set(v, "sourceType", "-")
}
if (v.yardPos == "null") {
this.$set(v, "yardPos", "-")
}
if (v.vvyName == "null") {
this.$set(v, "vvyName", "-")
}
if (v.customsDeclareStatus == "null") {
this.$set(v, "customsDeclareStatus", "-")
}
if (v.bvmName == "null") {
this.$set(v, "bvmName", "-")
}
if (v.amount == "null") {
this.$set(v, "amount", "-")
}
if (v.potName == "null") {
this.$set(v, "potName", "-")
}
if (v.customsDeclareNo == "null") {
this.$set(v, "customsDeclareNo", "-")
}
if (v.bvdName == "null") {
this.$set(v, "bvdName", "-")
}
if (v.agentName == "null") {
this.$set(v, "agentName", "-")
}
if (v.weight == "null") {
this.$set(v, "weight", null)
}
if (v.carHeight == "null") {
this.$set(v, "carHeight", null)
}
if (v.carLength == "null") {
this.$set(v, "carLength", null)
}
if (v.carWidth == "null") {
this.$set(v, "carWidth", null)
}
})
this.allList.forEach(v => {
// 型号
if (v.model != "null") {
this.modelList.push({
id: v.model,
text: v.model
})
}
// 品牌
if (v.brdId != "null" && v.brdName != "null") {
this.brdList.push({
id: v.brdId,
text: v.brdName
})
}
// 车型
if (v.bvmId != "null" && v.bvmName != "null") {
this.bvmList.push({
id: v.bvmId,
text: v.bvmName
})
}
// 港口
if (v.potId != "null" && v.potName != "null") {
this.potList.push({
id: v.potId,
text: v.potName
})
}
})
this.modelList = api.arrFrom(this.modelList, "text")
this.brdList = api.arrFrom(this.brdList, "text")
this.bvmList = api.arrFrom(this.bvmList, "text")
this.potList = api.arrFrom(this.potList, "text")
console.log(this.allList)
}
}).catch((error) => {
// 在reject时执行的回调函数
console.error(error);
});
},
// 分页切割数组(数组,分割个数)
getMapping(list, num) {
let len = list.length
let newList = []
if (len) {
var chunk = num
for (var i = 0, j = len; i < j; i += chunk) {
newList.push(list.slice(i, i + chunk))
}
}
return newList
},
changePage(e) {
this.current = e.current;
this.executeSql1('shipmentShipLoadPlansRespList')
},
// 点击搜索右侧图标
iconClick() {
if (this.searchValue != "") {
let listIndexArr = []
let newArr = []
this.allList.forEach((v, index) => {
if (v.brdName.indexOf(this.searchValue) != -1 || v.mnfBl.indexOf(this.searchValue) != -1) {
listIndexArr.push(index)
}
})
if (listIndexArr.length > 0) {
listIndexArr.forEach((v, index) => {
newArr.push(this.allList[v])
})
this.listInfo = newArr
} else {
this.listInfo = []
}
} else {
this.executeSql1('shipmentShipLoadPlansRespList')
}
},
// 点击筛选
screen() {
this.$refs.showRight.open();
},
// 返回
back() {
this.$refs.showRight.close();
},
// 点击型号
clickModel(item, index) {
this.activeIndex = index
},
// 品牌下拉
brdSelect(e) {
this.brdId = e.id
this.brdName = e.text
},
// 车型下拉
bvmSelect(e) {
this.bvmId = e.id
this.bvmName = e.text
},
// 港口下拉
potSelect(e) {
this.potId = e.id
this.potName = e.text
},
// 重置
reset() {
this.modelId = ""
this.modelName = ""
this.activeIndex = -1
this.brdId = ""
this.brdName = ""
this.bvmId = ""
this.bvmName = ""
this.potId = ""
this.potName = ""
this.minTon = ""
this.maxTon = ""
this.minWidth = ""
this.maxWidth = ""
this.minHeight = ""
this.maxHeight = ""
},
// 确认
confirm() {
this.$refs.showRight.close();
let arr = []
if (this.modelId == "" && this.modelName == "" && this.brdId == "" && this.brdName == "" && this.bvmId ==
"" && this.bvmName == "" && this.potId == "" && this.potName == "" && this.minTon == "" && this
.maxTon == "" && this.minWidth == "" && this.maxWidth == "" && this.minHeight == "" && this
.maxHeight == "") {
this.executeSql1('shipmentShipLoadPlansRespList')
} else {
this.allList.forEach(v => {
if (this.modelName == v.model) {
arr.push(v)
}
if (this.brdName == v.brdName) {
arr.push(v)
}
if (this.bvmName == v.bvmName) {
arr.push(v)
}
if (this.potName == v.potName) {
arr.push(v)
}
if (this.minTon != "" && this.maxTon) {
if (this.minTon <= Number(v.weight) && this.maxTon >= Number(v.weight)) {
arr.push(v)
}
}
if (this.minWidth != "" && this.maxWidth) {
if (this.minWidth <= Number(v.carWidth) && this.maxWidth >= Number(v.carWidth)) {
arr.push(v)
}
}
if (this.minHeight != "" && this.maxHeight) {
if (this.minHeight <= Number(v.carHeight) && this.maxHeight >= Number(v.carHeight)) {
arr.push(v)
}
}
})
for (let i = 0; i < arr.length; i++) {
for (let j = i + 1; j < arr.length; j++) {
if (arr[i].webId == arr[j].webId) {
arr.splice(j, 1);
j--;
}
}
}
this.total = arr.length
if (arr.length > 0) {
let newArr = this.getMapping(arr, this.pageSize)
this.listInfo = newArr[this.current - 1];
} else {
this.listInfo = arr
}
}
},
// 跳转车型明细
togoCar(item) {
let obj = {
id: item.webId,
}
const params = encodeURIComponent(JSON.stringify(obj));
uni.navigateTo({
url: `/pages/shipWork/carDetails?params=${params}`
})
},
}
}
</script>
<style lang="less" scoped>
.brandDetails {
.container {
padding-bottom: 30px;
background-color: #F6F7F9;
.topBox {
width: 100%;
display: flex;
justify-content: space-between;
background: #FAFAFA;
border-top: 1px solid #EEEEEE;
border-bottom: 1px solid #EEEEEE;
padding: 5px 10px;
.leftInput {
width: 400px;
}
/deep/.uni-easyinput {
width: 400px;
/deep/.content-clear-icon {
padding-right: 16px;
}
}
/deep/.is-input-border {
border-radius: 18.5px;
}
text {
margin-right: 10px;
color: #2979ff;
line-height: 36px;
}
}
/deep/.uni-drawer__content {
width: 300px;
}
.scroll-view {
/* #ifndef APP-NVUE */
width: 100%;
height: 100%;
/* #endif */
flex: 1
}
// 处理抽屉内容滚动
.scroll-view-box {
flex: 1;
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
padding: 0 16px 80px;
.drawerTop {
display: flex;
margin-top: 24px;
margin-bottom: 30px;
image {
width: 10px;
height: 14px;
margin-right: 10px;
margin-top: 6px;
}
text {
font-size: 20px;
color: #23262E;
font-weight: bold;
}
}
.drawerTitle {
font-size: 14px;
color: #23262E;
margin: 8px 0;
}
.selectBox {
display: flex;
flex-wrap: wrap;
.boxContent {
width: 76px;
height: 32px;
text-align: center;
display: flex;
flex-direction: column;
justify-content: center;
border-radius: 4px;
border: 1px solid #EEEEEE;
color: #23262E;
line-height: 14px;
margin-right: 10px;
margin-bottom: 18px;
}
.active {
background-color: rgba(0, 103, 207, .05);
color: #0267CF;
}
p {
width: 100%;
height: 40px;
line-height: 40px;
text-align: center;
background-color: #f7f7f7;
}
}
.qjBox {
display: flex;
justify-content: space-between;
/deep/.uni-easyinput {
width: 96px;
flex: none;
}
/deep/.uni-easyinput__content {
width: 96px;
}
text {
line-height: 35px;
}
}
.bottomBtn {
width: 100%;
height: 60px;
display: flex;
justify-content: space-between;
padding: 12px 16px;
background: #FFFFFF;
box-shadow: 0 -3px 7px 0 rgba(0, 0, 0, 0.10);
position: fixed;
bottom: 0px;
right: 0px;
.btn {
width: 116px;
height: 36px;
font-size: 16px;
text-align: center;
line-height: 36px;
border-radius: 4px;
}
.czBtn {
color: #0067CF;
border: 1px solid #0067CF;
}
.qrBtn {
color: #fff;
background: #0067CF;
}
}
}
.ul {
padding: 16px;
.li {
background-color: #fff;
padding: 16px;
border-radius: 8px;
.liTitle {
display: flex;
font-size: 16px;
color: #23262E;
font-weight: bold;
.titleImg {
width: 18px;
height: 18px;
margin-right: 5px;
margin-top: 2px;
}
}
.liContent {
display: flex;
flex-wrap: wrap;
p {
width: 22%;
margin: 10px;
color: rgba(0, 0, 0, .5);
}
}
}
}
}
}
</style>