pad-app/pages/index/instruct.vue

904 lines
21 KiB
Vue
Raw Normal View History

2023-07-06 17:08:59 +08:00
<template>
<view class="app">
2023-07-12 18:06:16 +08:00
<head-view v-show="current!=2" title="船名/航次"></head-view>
<head-info v-show="current==2"></head-info>
2023-07-06 17:08:59 +08:00
<view class="content">
<view class="form">
<view class="input">
2023-07-24 16:14:37 +08:00
<superwei-combox class="input" :candidates="mnfBlList" :isJSON="true" keyName="mnfBl"
placeholder="提单号" v-model="mnfBl" @input="mnfBlInput" @select="mnfBlSelect"></superwei-combox>
2023-07-06 17:08:59 +08:00
</uni-easyinput>
</view>
2023-07-12 18:06:16 +08:00
<view class="select" v-show="current!=0">
2023-07-24 16:14:37 +08:00
<uni-data-select v-model="harbour" :localdata="harbourRange" @change="change('harbour')"
placeholder="港区">
2023-07-06 17:08:59 +08:00
</uni-data-select>
</view>
2023-07-12 18:06:16 +08:00
<view class="select" v-show="current!=0">
2023-07-24 16:14:37 +08:00
<uni-data-select v-model="type" :localdata="typeRange" @change="change('type')" placeholder="贸易类型">
2023-07-06 17:08:59 +08:00
</uni-data-select>
</view>
2023-07-24 16:14:37 +08:00
<view class="input">
<superwei-combox class="input" :candidates="brandList" :isJSON="true" keyName="brdName"
placeholder="品牌" v-model="brdName" @input="brandInput" @select="brandSelect"></superwei-combox>
</uni-easyinput>
2023-07-06 17:08:59 +08:00
</view>
2023-07-12 18:06:16 +08:00
<view class="select" v-show="current!=0">
2023-07-24 16:14:37 +08:00
<superwei-combox class="input" :candidates="bvmList" :isJSON="true" keyName="bvmName"
placeholder="车型" v-model="bvmName" @input="bvmInput" @select="bvmSelect"></superwei-combox>
</uni-easyinput>
2023-07-06 17:08:59 +08:00
</view>
<view class="select">
2023-07-24 16:14:37 +08:00
<superwei-combox class="input" :candidates="potList" :isJSON="true" keyName="potName"
placeholder="港口" v-model="potName" @input="potInput" @select="potSelect"></superwei-combox>
</uni-easyinput>
2023-07-06 17:08:59 +08:00
</view>
2023-07-12 18:06:16 +08:00
<view class="select" v-show="current!=0">
2023-07-24 16:14:37 +08:00
<uni-data-select v-model="status" :localdata="statusRange" @change="change('status')"
placeholder="计划状态">
2023-07-06 17:08:59 +08:00
</uni-data-select>
</view>
2023-07-24 16:14:37 +08:00
<button class="btn" @click="screen" v-show='current==0'>筛选</button>
<button class="btn" @click="onSearch"></button>
2023-07-06 17:08:59 +08:00
</view>
2023-07-24 16:14:37 +08:00
<fjj-condition ref='condition' @touchmove.stop color="#4D7BFE" :list="menuList" :defaultValue="defaultValue"
@result="resultConditon" />
2023-07-06 17:08:59 +08:00
<view class="uni-list">
<radio-group class="group" @change="radioChange">
<label class="uni-list-cell uni-list-cell-pd" v-for="(item, index) in items" :key="item.value">
<view>
<radio :value="item.value" :checked="index === current" />{{item.name}}
</view>
</label>
</radio-group>
</view>
<view class="buttonlist">
2023-07-12 18:06:16 +08:00
<button v-show="current==0" class="button" type="default"></button>
<button v-show="current!=2" class="button" type="default"></button>
2023-07-06 17:08:59 +08:00
<button class="button" type="default">刷新</button>
2023-07-12 18:06:16 +08:00
<button v-show="current==2" class="button" type="default"></button>
2023-07-06 17:08:59 +08:00
</view>
2023-07-12 18:06:16 +08:00
<view class="itemList" v-show="current==0">
<view class="exp" v-for="(item,index) in itemList" :key="item.index">
<view class="item">
<view class="rowHead" v-show="active==1">
<radio :value="item.value" />
2023-07-10 09:27:39 +08:00
</view>
2023-07-12 18:06:16 +08:00
<view class="row">
<view class="col weight">
船舱层数5层3舱
</view>
<view class="col">
数量1,000
</view>
<view class="col">
港口厦门港
</view>
2023-07-10 09:27:39 +08:00
</view>
2023-07-12 18:06:16 +08:00
<view class="row">
<view class="col weight">
计划状态已发送
</view>
<view class="col">
负责人我是一个负责人
</view>
<view class="col">
发送时间2023/09/09 16:00
</view>
2023-07-10 09:27:39 +08:00
</view>
2023-07-12 18:06:16 +08:00
<view class="rowFoot">
<view class="col">
装船进度
</view>
<view class="col">
<view class="progress-box">
<van-progress :percentage="itemSum(item.sum)" :pivot-text="'60/' + item.sum" />
</view>
</view>
2023-07-10 09:27:39 +08:00
</view>
2023-07-12 18:06:16 +08:00
<view class="fs blue">
2023-07-21 17:28:30 +08:00
<text v-show="active==1" @click="onSend"></text>
2023-07-12 18:06:16 +08:00
<text v-show="active==2">{{item.status}}</text>
2023-07-10 09:27:39 +08:00
</view>
2023-07-12 18:06:16 +08:00
</view>
<view class="details">
<uni-icons v-show="itemActive != index" class="jt" type="top" size="24" color="#108ee9"
@click="isActive(index)"></uni-icons>
<view class="itemDetails" v-show="itemActive == index">
<view class="row" v-for="cell in item.xq">
<view class="cell">
TD90959749495
</view>
<view class="cell">
中转港厦门港
</view>
<view class="cell">
数量100
</view>
<view class="cell">
品牌特斯拉
</view>
<view class="cell">
车型电动车
</view>
<view class="cell">
型号特斯拉plus
</view>
2023-07-24 16:14:37 +08:00
<view class="cell blue" @click="toDetails(item.xq)">
2023-07-12 18:06:16 +08:00
详情
</view>
</view>
<uni-icons class="jt" type="bottom" size="24" color="#108ee9"
@click="itemActive = '-1'"></uni-icons>
2023-07-10 09:27:39 +08:00
</view>
</view>
2023-07-12 18:06:16 +08:00
</view>
</view>
<view class="tablist" v-show="current==1">
2023-07-24 16:14:37 +08:00
<view class="tab" :class="active==0?'active':''" type="default" @click="tabChange(0)"></view>
<view class="tab" :class="active==1?'active':''" type="default" @click="tabChange(1)"></view>
2023-07-12 18:06:16 +08:00
</view>
<view class="itemList" v-show="current==1">
<view class="exp" v-for="(item,index) in itemList" :key="item.index">
<view class="item">
<view class="rowHead" v-if="active==1">
<radio :value="item.value" />
2023-07-10 09:27:39 +08:00
</view>
2023-07-12 18:06:16 +08:00
<view class="row">
<view class="col weight">
船舱层数5层3舱
</view>
<view class="col">
数量1,000
</view>
<view class="col">
港口厦门港
2023-07-10 09:27:39 +08:00
</view>
</view>
2023-07-12 18:06:16 +08:00
<view class="row">
<view class="col weight">
计划状态已发送
</view>
<view class="col">
负责人我是一个负责人
</view>
<view class="col">
发送时间2023/09/09 16:00
</view>
</view>
<view class="rowFoot">
<view class="col">
装船进度
</view>
<view class="col">
<view class="progress-box">
<van-progress :percentage="itemSum(item.sum)" :pivot-text="'60/' + item.sum" />
</view>
</view>
</view>
<view class="fs blue">
2023-07-24 16:14:37 +08:00
<text v-show="active==0" @click="onSend"></text>
<text v-show="active==1" @click="onPause(item.status)">{{item.status}}</text>
2023-07-12 18:06:16 +08:00
</view>
</view>
<view class="details">
<uni-icons v-show="itemActive != index" class="jt" type="top" size="24" color="#108ee9"
@click="isActive(index)"></uni-icons>
<view class="itemDetails" v-show="itemActive == index">
<view class="row" v-for="cell in item.xq">
<view class="cell">
TD90959749495
</view>
<view class="cell">
中转港厦门港
</view>
<view class="cell">
数量100
</view>
<view class="cell">
品牌特斯拉
</view>
<view class="cell">
车型电动车
</view>
<view class="cell">
型号特斯拉plus
</view>
2023-07-24 16:14:37 +08:00
<view class="cell blue" @click="toDetails(item.xq)">
2023-07-12 18:06:16 +08:00
详情
</view>
</view>
<uni-icons class="jt" type="bottom" size="24" color="#108ee9"
@click="itemActive = '-1'"></uni-icons>
</view>
2023-07-10 09:27:39 +08:00
</view>
</view>
</view>
2023-07-12 18:06:16 +08:00
<view class="currentList" v-show="current==2">
<view class="imgLi">
<image src="@/static/images/u176.png" mode="widthFix">
</view>
<view class="title">
第一层
</view>
<view class="nr">
<text class="text">是否可调夹板: </text>
<text class="text">是否有跳板: 双尾跳</text>
</view>
<view class="imgLi">
<image src="@/static/images/u86.png" mode="widthFix">
</view>
<view class="tableHead">
<text>明细(100)</text>
<uni-icons class="jt" type="bottom" size="24"></uni-icons>
</view>
<uni-table border stripe emptyText="暂无更多数据">
<!-- 表头行 -->
<uni-tr class="gray">
<uni-th align="center" width="20">提单号</uni-th>
<uni-th align="center" width="20">港口</uni-th>
<uni-th align="center" width="20">品牌</uni-th>
<uni-th align="center" width="20">车型</uni-th>
<uni-th align="center" width="20">型号</uni-th>
<uni-th align="center" width="20">车型明细</uni-th>
<uni-th align="center" width="20">数量</uni-th>
<uni-th align="center" width="20"></uni-th>
<uni-th align="center" width="20"></uni-th>
<uni-th align="center" width="20"></uni-th>
<uni-th align="center" width="20">位置</uni-th>
</uni-tr>
<!-- 表格数据行 -->
<uni-tr>
<uni-td>1123</uni-td>
<uni-td>2</uni-td>
<uni-td>3</uni-td>
<uni-td>4</uni-td>
<uni-td>1</uni-td>
<uni-td>2</uni-td>
<uni-td>3</uni-td>
<uni-td>4</uni-td>
<uni-td>1</uni-td>
<uni-td>2</uni-td>
<uni-td>3</uni-td>
</uni-tr>
</uni-table>
</view>
2023-07-06 17:08:59 +08:00
</view>
</view>
</template>
<script>
2023-07-21 17:28:30 +08:00
import {
mapActions
} from 'vuex'
2023-07-06 17:08:59 +08:00
import HeadView from '@/components/head-view/head-view.vue';
2023-07-12 18:06:16 +08:00
import HeadInfo from '@/components/head-info/head-info';
2023-07-24 16:14:37 +08:00
let timers = null;
2023-07-06 17:08:59 +08:00
export default {
data() {
return {
2023-07-24 16:14:37 +08:00
id: "", // 进入页面的初始id
menuList: [], // 筛选框
defaultValue: {},
mnfBl: '', // 提单号
mnfBlItem: {},
mnfBlList: [],
brdId: '', // 品牌
brdName: '', // 品牌
brandItem: {},
brandList: [],
harbour: '', // 港区
harbourRange: [{
value: 1,
text: '全部'
}, {
value: 2,
text: '内贸'
}, {
value: 3,
text: '外贸'
}],
type: '', // 贸易类型
typeRange: [{
value: 1,
text: '全部'
}, {
value: 2,
text: '内贸'
}, {
value: 3,
text: '外贸'
}],
bvmName: '', // 车型
bvmItem: {},
bvmList: [],
potName: '', // 港口
potItem: {},
potList: [],
status: '', // 贸易类型
statusRange: [{
value: 1,
text: '待发送'
}, {
value: 2,
text: '已发送'
}, {
value: 3,
text: '待作业'
}, {
value: 4,
text: '作业中'
}, {
value: 5,
text: '暂停'
}, {
value: 6,
text: '已完成'
}],
2023-07-06 17:08:59 +08:00
value: '',
2023-07-12 18:06:16 +08:00
itemList: [],
2023-07-21 17:28:30 +08:00
range: [1],
items: [{
value: '1',
name: '总指令',
checked: 'true'
},
{
value: '2',
name: '分指令'
},
{
value: '3',
name: '配载图'
},
{
value: '4',
name: '场位图'
},
],
current: 0,
active: 1,
itemActive: -1,
}
},
computed: {
itemSum() {
return function(item) {
let sum = (60 / item) * 100
return sum
};
}
},
onLoad() {
this.id = this.$route.query.id;
this.loadSumOrder() // 总指令:分页查询
2023-07-24 16:14:37 +08:00
setTimeout(() => {
this.menuList = [{
'title': '计划状态',
'type': 'custom',
'key': 'custom1',
'isMutiple': false, //多选
'detailList': [{
title: '待发送',
value: "1",
isSelected: true
}, {
title: '已发送',
value: "2",
}, {
title: '待作业',
value: "3",
}, {
title: '作业中',
value: "4",
}, {
title: '暂停',
value: "5",
}, {
title: '已完成',
value: "6",
}],
}, {
'title': '按车型',
'type': 'custom',
'key': 'custom2',
'isMutiple': true, //多选
'detailList': [{
title: '车型1',
value: "1",
}, {
title: '车型2',
value: "2",
}, {
title: '车型3',
value: "3",
}, {
title: '车型4',
value: "4",
}],
}]
this.defaultValue = {
custom1: ['1'],
custom5: 1,
};
}, 2000)
2023-07-21 17:28:30 +08:00
},
components: {
HeadView,
HeadInfo
},
methods: {
...mapActions([
'majax',
'najax'
]),
2023-07-24 16:14:37 +08:00
onSearch() {
console.log('搜索');
console.log(this.potName);
},
// 点击筛选
screen() {
this.$refs.condition.visibleDrawer = true;
},
resultConditon(obj) {
this.$refs.condition.visibleDrawer = false;
this.hasChoose = obj.hasChoose;
console.log(obj);
},
2023-07-21 17:28:30 +08:00
loadSumOrder() {
let data = {}
data.bvmId = this.id
this.majax({
url: this.$local + "/api/shipInstructions/page",
params: data,
method: 'GET'
}).then(res => {
2023-07-24 16:14:37 +08:00
// this.itemList = res.data.records
2023-07-21 17:28:30 +08:00
})
// 模拟
this.itemList = [{ //已发送
2023-07-12 18:06:16 +08:00
sum: 300,
xq: 2
},
{
sum: 600,
xq: 3
},
{
sum: 900,
xq: 1
},
{
sum: 100,
xq: 2
},
{
sum: 200,
xq: 2
}
2023-07-21 17:28:30 +08:00
]
},
loadOtherOrder() {
let data = {}
data.bvmId = this.id
2023-07-24 16:14:37 +08:00
data.sendStatus = this.active // 未发生0已发送1
2023-07-21 17:28:30 +08:00
this.majax({
url: this.$local + "/api/shipInstructions/pageCommandForBranch",
params: data,
method: 'GET'
}).then(res => {
2023-07-24 16:14:37 +08:00
// this.itemList = res.data.records
2023-07-21 17:28:30 +08:00
})
// 模拟分指令
this.itemList = [{ //已发送
2023-07-12 18:06:16 +08:00
sum: 100,
xq: 2,
status: '暂停'
},
{
sum: 300,
xq: 3,
status: '重新发送'
},
{
sum: 200,
xq: 1,
status: '重新发送'
},
{
sum: 500,
xq: 2,
status: '暂停'
},
{
sum: 800,
xq: 2,
status: '暂停'
}
2023-07-21 17:28:30 +08:00
]
2023-07-24 16:14:37 +08:00
console.log(2);
console.log(this.itemList);
2023-07-21 17:28:30 +08:00
},
2023-07-12 18:06:16 +08:00
tabChange(tag) {
this.active = tag
2023-07-24 16:14:37 +08:00
if (this.active == 0) {
this.loadOtherOrder()
console.log(0);
2023-07-12 18:06:16 +08:00
} else {
2023-07-24 16:14:37 +08:00
this.loadOtherOrder()
console.log(1);
2023-07-12 18:06:16 +08:00
}
},
2023-07-24 16:14:37 +08:00
change(e) {
console.log(e);
console.log(this.harbour);
},
2023-07-06 17:08:59 +08:00
radioChange: function(evt) {
for (let i = 0; i < this.items.length; i++) {
if (this.items[i].value === evt.detail.value) {
this.current = i;
2023-07-24 16:14:37 +08:00
switch (this.current) {
case 0:
this.loadSumOrder()
break;
case 1:
this.loadOtherOrder()
break;
default:
}
2023-07-06 17:08:59 +08:00
break;
}
}
2023-07-24 16:14:37 +08:00
2023-07-12 18:06:16 +08:00
},
isActive(e) {
this.itemActive = e
},
2023-07-21 17:28:30 +08:00
// 发送指令
onSend() {
let data = {}
this.majax({
url: this.$local + "/api/shipInstructions/commandSendForBranch",
params: data,
method: 'GET'
}).then(res => {
console.log(res);
})
},
// 重新发送指令
onReissued() {
let data = {}
this.majax({
url: this.$local + "/api/shipInstructions/commandReissuedForBranch",
params: data,
method: 'GET'
}).then(res => {
console.log(res);
})
2023-07-24 16:14:37 +08:00
console.log('重新发送');
2023-07-21 17:28:30 +08:00
},
// 暂停指令
2023-07-24 16:14:37 +08:00
onPause(tag) {
if (tag == '暂停') {
let data = {}
data.lwpId = '111'
this.majax({
url: this.$local + "/api/shipInstructions/commandPause",
params: data,
method: 'GET'
}).then(res => {
console.log(res);
})
console.log('暂停');
} else if (tag == '重新发送') {
this.onReissued()
}
},
// 提单号
mnfBlInput(e) {
clearTimeout(timers)
timers = setTimeout(() => {
this.getMnfBl(e)
}, 500)
},
mnfBlSelect(e) {
this.shipItem = e
},
// 获取提单号
getMnfBl(keyWords) {
2023-07-21 17:28:30 +08:00
let data = {}
2023-07-24 16:14:37 +08:00
data.ieType = 'I' // I进口 E出口 暂无法区分
data.key = keyWords
data.pamId = this.id
2023-07-21 17:28:30 +08:00
this.majax({
2023-07-24 16:14:37 +08:00
url: this.$local + "/api/shipInstructions/queryByKey",
2023-07-21 17:28:30 +08:00
params: data,
method: 'GET'
}).then(res => {
2023-07-24 16:14:37 +08:00
this.mnfBlList = res.data
})
// 模拟
this.mnfBlList = [{
id: 1123,
mnfBl: '测试提单号'
}]
},
// 品牌
brandInput(e) {
clearTimeout(timers)
timers = setTimeout(() => {
this.getBrand(e)
}, 500)
},
brandSelect(e) {
this.brandItem = e
this.brdId = e.brdId
},
// 获取品牌
getBrand(keyWords) {
let data = {}
data.brdName = keyWords
this.majax({
url: this.$local + "/api/miniapp/queryBrand",
params: data,
method: 'GET'
}).then(res => {
this.brandList = res.data
})
// 模拟
this.brandList = [{
brdId: 1123,
brdName: '测试品牌'
}]
},
// 港口
potInput(e) {
clearTimeout(timers)
timers = setTimeout(() => {
this.getPot(e)
}, 500)
},
potSelect(e) {
this.potItem = e
this.potId = e.potId
},
// 获取港口
getPot(keyWords) {
let data = {}
data.potCnname = keyWords
this.majax({
url: this.$local + "/api/miniapp/port",
params: data,
method: 'GET'
}).then(res => {
this.potList = res.data
})
// 模拟
this.potList = [{
potId: 1123,
potName: '测试港口'
}]
},
// 车型
bvmInput(e) {
clearTimeout(timers)
timers = setTimeout(() => {
this.getBvm(e)
}, 500)
},
bvmSelect(e) {
this.bvmItem = e
},
// 获取车型
getBvm(keyWords) {
let data = {}
data.key = keyWords
this.majax({
url: this.$local + "/api/miniapp/port",
params: data,
method: 'GET'
}).then(res => {
this.bvmList = res.data
2023-07-21 17:28:30 +08:00
})
2023-07-24 16:14:37 +08:00
// 模拟
this.bvmList = [{
bvmId: 1123,
bvmName: '测试车型'
}]
2023-07-21 17:28:30 +08:00
},
2023-07-24 16:14:37 +08:00
toDetails(id) {
2023-07-12 18:06:16 +08:00
uni.navigateTo({
2023-07-24 16:14:37 +08:00
url: '/pages/index/instructDetails?id=' + id
2023-07-12 18:06:16 +08:00
})
2023-07-06 17:08:59 +08:00
}
}
};
</script>
<style>
2023-07-12 18:06:16 +08:00
.blue {
color: #108ee9;
}
2023-07-06 17:08:59 +08:00
.content {
padding: 20px;
2023-07-12 18:06:16 +08:00
background-color: #fff;
2023-07-06 17:08:59 +08:00
.form {
display: flex;
.select {
2023-07-24 16:14:37 +08:00
width: 150px;
margin-right: 20px;
2023-07-06 17:08:59 +08:00
}
.input {
2023-07-24 16:14:37 +08:00
width: 150px;
2023-07-06 17:08:59 +08:00
height: 35px;
line-height: 35px;
2023-07-24 16:14:37 +08:00
margin-right: 20px;
}
.btn {
width: 60px;
height: 35px;
line-height: 35px;
margin: 0 20px 0 0;
2023-07-06 17:08:59 +08:00
}
}
.uni-list {
margin-top: 20px;
.group {
width: 360px;
height: 50px;
display: flex;
justify-content: space-between;
}
}
.buttonlist {
width: 340px;
.button {
2023-07-12 18:06:16 +08:00
display: inline-block;
2023-07-06 17:08:59 +08:00
width: 100px;
height: 40px;
line-height: 40px;
2023-07-12 18:06:16 +08:00
margin-right: 20rpx;
2023-07-06 17:08:59 +08:00
}
}
.tablist {
width: 175px;
height: 60px;
line-height: 60px;
font-size: 21px;
display: flex;
justify-content: space-between;
.tabs {
width: 80px;
height: 60px;
border-bottom: 2rpx solid #ebebeb;
}
.active {
color: #1890ff;
border-bottom: 2rpx solid #1890ff;
}
}
2023-07-10 09:27:39 +08:00
.itemList {
margin-top: 30px;
2023-07-12 18:06:16 +08:00
.exp {
2023-07-10 09:27:39 +08:00
border-bottom: 2px solid #e9e9e9;
2023-07-12 18:06:16 +08:00
text-align: center;
padding-bottom: 10px;
2023-07-10 09:27:39 +08:00
2023-07-12 18:06:16 +08:00
.item {
height: 110px;
padding: 20px 20px 0;
2023-07-10 09:27:39 +08:00
display: flex;
justify-content: space-between;
2023-07-12 18:06:16 +08:00
text-align: left;
.weight {
font-weight: 900;
}
.rowHead {
width: 4%;
}
.row {
width: 28%;
flex-direction: column;
display: flex;
justify-content: space-between;
}
.rowFoot {
width: 34%;
flex-direction: column;
display: flex;
justify-content: space-around;
}
.fs {
width: 6%;
text-align: right;
line-height: 110px;
}
2023-07-10 09:27:39 +08:00
}
2023-07-12 18:06:16 +08:00
.details {
padding: 20px;
.itemDetails {
border-top: 2px dotted #7d7d7d;
.row {
display: flex;
justify-content: space-between;
height: 50px;
line-height: 50px;
}
}
}
}
}
.currentList {
width: 85%;
margin: 10px auto;
.tableHead {
margin-top: 10px;
height: 50px;
line-height: 50px;
background-color: #fff;
display: flex;
justify-content: space-between;
padding: 0 12px;
font-size: 20px;
border: 1px solid #f2f2f2;
}
.gray {
background-color: #f9f9f9;
}
.imgLi {
margin-bottom: 5px;
}
.title {
line-height: 50px;
font-size: 21px;
font-weight: 900;
}
.nr {
font-size: 16px;
.text {
display: inline-block;
margin-right: 50px;
2023-07-10 09:27:39 +08:00
}
}
}
2023-07-06 17:08:59 +08:00
}
2023-07-12 18:06:16 +08:00
</style>