pad-app/pages/shipWork/index.vue

670 lines
19 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<template>
<view class="app">
<head-info></head-info>
<view class="container">
<side-bar path='3'></side-bar>
<view class="content">
<view class="form">
<view class="select">
<superwei-combox :candidates="shipList" :isJSON="true" keyName="spmName" placeholder="请选择船名航次"
v-model="shipName" @input="input_json" @select="select_json"></superwei-combox>
</view>
<button class="searchBtn" type="default" @click="search">搜索</button>
<button class="searchBtn" type="default" @click="isOpen">判断</button>
<button class="searchBtn" type="default" @click="open">打开</button>
<button class="searchBtn" type="default" @click="createTable">创建</button>
<button class="searchBtn" type="default" @click="dropTable">删除表</button>
<button class="searchBtn" type="default" @click="dropData">删除数据</button>
<button class="searchBtn" type="default" @click="add">新增</button>
<button class="searchBtn" type="default" @click="executeSql1('messageRespList')">查询</button>
</view>
<view class="itemList">
<template v-if="itemList.length > 0">
<view v-for="(item, index) in itemList" :key="index" class="item" @click="toGo(item)">
<view class="title">
<view class="name">
{{item.spmName}}
</view>
</view>
<view class="table">
<view class="row">
<view class="nitem">
进口航次: <text>{{item.inVvyName}}</text>
</view>
<view class="nitem">
进口贸易类型: <text>{{item.inTradeTypeName}}</text>
</view>
</view>
<view class="row">
<view class="nitem">
出口航次: <text>{{item.outVvyName}}</text>
</view>
<view class="nitem">
出口贸易类型: <text>{{item.outTradeTypeName}}</text>
</view>
</view>
<view class="row">
<view class="nitem">
计划泊位: <text>{{item.planBerthageName}}</text>
</view>
<view class="nitem">
实际泊位: <text>{{item.actualBerthageName}}</text>
</view>
</view>
<view class="row">
<view class="nitem">
<text>{{item.uploadStatusDesc}}</text>
<text>{{item.uploadTime}}</text>
</view>
<!-- <view class="nitem" v-if="item==1">
<text class="green">●</text> 已下载
<text>2023/09/21 12:00</text>
</view>
<view class="nitem" v-if="item==2">
<text>●</text> 未下载
</view>
<view class="nitem" v-if="item==1">
<text class="green">●</text> 已上传
<text>2023/09/21 12:00</text>
</view>
<view class="nitem" v-if="item==2">
<text>●</text> 未上传
</view> -->
</view>
<view class="footer">
<view class="footer">
<button class="fitem" type="default" @click.stop="download(item)">下载</button>
<button class="fitem" type="default" @click.stop="upload(item)">上传</button>
</view>
</view>
</view>
</view>
</template>
<o-empty v-else height="70vh" bg="#f5f6fa" />
</view>
<view class="pageBox" v-if="itemList.length > 0">
<uni-pagination :show-icon="true" :total="total" :pageSize="pageSize" :current="current"
@change="changePage" />
</view>
</view>
</view>
</view>
</template>
<script>
import SideBar from '@/components/sider-bar/slider-bar';
import HeadInfo from '@/components/head-info/head-info';
import sqlite from "../../common/sqlite.js"
import tableList from "../../common/createDataTable.js"
import api from "../../common/api.js"
import {
v4 as uuidv4
} from 'uuid';
export default {
data() {
return {
// 港口
pamValue: "",
// pamList: [],
// 船名航次
shipName: "",
shipValue: '',
shipList: [],
shipInput: "",
itemList: [],
// 分页
total: 0,
pageSize: 4,
current: 1,
shipInfo: {},
workList: [{
agentId: "1",
agentName: "华图供应链管理(天津)有限公司",
amount: "100",
brdId: "1",
brdName: "特斯拉1",
bvdId: "1",
bvdName: "无动力半挂车",
bvmId: "1",
bvmName: "轿车",
carHeight: "100",
carLength: "111",
carWidth: "123",
customsDeclareNo: "BG09759724",
customsDeclareStatus: "未报关",
mnfBl: "TD85875876",
potId: "1",
potName: "巴塞罗那",
sourceType: "新能源",
vvyId: "1",
vvyName: "HC8595986",
yardPos: "C4区15道*2,16道*2",
},
{
agentId: "1",
agentName: "华图供应链管理(天津)有限公司",
amount: "100",
brdId: "1",
brdName: "特斯拉2",
bvdId: "1",
bvdName: "无动力半挂车",
bvmId: "1",
bvmName: "轿车",
carHeight: "100",
carLength: "111",
carWidth: "123",
customsDeclareNo: "BG09759724",
customsDeclareStatus: "未报关",
mnfBl: "TD85875876",
potId: "1",
potName: "巴塞罗那",
sourceType: "新能源",
vvyId: "1",
vvyName: "HC8595986",
yardPos: "C4区15道*2,16道*2",
}
]
}
},
components: {
SideBar,
HeadInfo,
},
mounted() {
this.pamValue = uni.getStorageSync('portObj').portId
this.shipInfo = uni.getStorageSync('shipInfo').voyageScheduleDataList
},
methods: {
open() {
plus.sqlite.openDatabase({
name: 'dianji_chat',
path: '_doc/dianji_chat.db',
success: function(e) {
console.log('打开数据库成功')
},
fail: function(e) {
console.log(e, '打开数据库失败')
}
});
},
isOpen() {
let res = plus.sqlite.isOpenDatabase({
name: 'dianji_chat',
path: '_doc/dianji_chat.db',
});
if (res) {
uni.showToast({
icon: 'none',
title: '数据库已打开'
});
return;
} else {
uni.showToast({
icon: 'none',
title: '数据库未打开'
});
return;
}
},
createTable() {
tableList.createAllTable()
},
dropTable() {
console.log('删除表');
let sql = 'DROP TABLE shipmentShipLoadPlansRespList;'
this.executeSql(sql)
},
dropData() {
let sql = "delete from shipmentShipLoadPlansRespList"
this.executeSql(sql)
},
add() {
let data = this.shipInfo
data.forEach(v => {
let date = new Date().getTime()
let str = String(date)
v["id"] = Number(str.slice(str.length - 5))
})
let dbTable = 'messageRespList'
let sql = '';
for (let i = 0; i < data.length; i++) {
sql = "insert into " + dbTable + " values('" + data[i].id + "','" + data[i].berthStatus + "')";
this.executeSql(sql)
console.log(data[i].id)
}
},
// 查
executeSql(sql) {
sqlite.executeSqlCeshi(sql).then((value) => {
// 在resolve时执行的回调函数
// this.sqlData = value
console.log(value); // 输出Hello, World!
}).catch((error) => {
// 在reject时执行的回调函数
console.error(error);
});
},
executeSql1(tableName) {
let sql = 'select * from ' + tableName
this.executeSql(sql)
},
// 获取船的数据
initData() {
uni.request({
url: this.$local + '/api/shipOperate/select?pamId=' + this.pamValue + "&vvyId=" + this
.shipValue,
header: {
'Content-Type': 'application/json' //自定义请求头信息
},
method: 'GET', //请求方式,必须为大写
success: (res) => {
console.log('接口返回------', res);
if (res.statusCode === 200) {
this.total = res.data.data.records.length
let newArr = this.getMapping(res.data.data.records, this.pageSize)
this.itemList = newArr[this.current - 1];
}
}
})
},
// 分页切割数组(数组,分割个数)
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.initData()
},
// 获取船名航次下拉数据
getShip() {
uni.request({
url: this.$local + '/api/shipOperate/queryShipmentVoyageData?key=' + this.shipInput,
header: {
'Content-Type': 'application/json' //自定义请求头信息
},
method: 'GET', //请求方式,必须为大写
success: (res) => {
console.log('接口返回------', res);
if (res.statusCode === 200) {
this.shipList = res.data.data
}
}
})
},
// 船名航次下拉模糊查询
input_json(e) {
this.shipInput = e;
this.getShip();
},
// 船名航次下拉选项
select_json(e) {
this.shipValue = e.vvyId
this.shipName = e.spmName
},
// 点击搜索
search() {
this.itemList = [{
uploadTime: "2022-12-11 12:00:08",
uploadStatusDesc: "已上传",
actualBerthageName: "3",
planBerthageName: "4",
outTradeTypeName: "5",
outVvyName: "6",
inTradeTypeName: "7",
inVvyName: "8"
}]
// this.initData()
},
// 下载
download(item) {
// 下载创建单证内的表
tableList.createAllTable()
let webStatus = 0
let sql = ""
for (let i = 0; i < this.workList.length; i++) {
let date = new Date().getTime()
let webId = uuidv4()
let webDate = api.getDate(date)
sql =
`insert into shipmentShipLoadPlansRespList values('${webId}','${this.workList[i].agentId}','${this.workList[i].agentName}',
'${this.workList[i].amount}','${this.workList[i].brdId}','${this.workList[i].brdName}','${this.workList[i].bvdId}','${this.workList[i].bvdName}','${this.workList[i].bvmId}',
'${this.workList[i].bvmName}','${this.workList[i].carHeight}','${this.workList[i].carLength}','${this.workList[i].carWidth}',
'${this.workList[i].customsDeclareNo}','${this.workList[i].customsDeclareStatus}','${this.workList[i].mnfBl}','${this.workList[i].potId}','${this.workList[i].potName}',
'${this.workList[i].sourceType}','${this.workList[i].vvyId}','${this.workList[i].vvyName}','${this.workList[i].yardPos}',
'${webStatus}','${webDate}')`
this.executeSql(sql)
}
// let ids = []
// if (item.inVvyId != null && item.outVvyId == null) {
// ids.push(item.inVvyId)
// } else if (item.outVvyId != null && item.inVvyId == null) {
// ids.push(item.outVvyId)
// } else if (item.inVvyId != null && item.outVvyId != null) {
// ids.push(item.inVvyId)
// ids.push(item.outVvyId)
// }
// console.log(ids)
// uni.request({
// url: this.$local + '/api/shipOperate/download?vvyIds=' + ids,
// header: {
// 'Content-Type': 'application/json' //自定义请求头信息
// },
// method: 'GET', //请求方式,必须为大写
// success: (res) => {
// console.log('接口返回------', res);
// if (res.statusCode == 200) {
// // 存储数据
// uni.setStorageSync('shipInfo', res.data.data);
// }
// }
// })
},
// 上传
upload(item) {
let workDataInfo = {
"adviserLayoutReqList": [{
"altId": "33333333333",
"bthId": "2f166d975bdc58e6a461e3d01de11289",
"createTime": "",
"createUser": "",
"endTime": "2023-07-14 10:00",
"loaderType": "装货",
"personNumber": 10,
"pwcType": "123321",
"remark": "12312312",
"sparePart": 10,
"startTime": "2023-07-13 12:00",
"tenantId": "",
"termcd": "",
"updateTime": "",
"updateUser": "",
"valid": "",
"vehicleSize": 20,
"version": "",
"vvyId": "6cb63df0526f20ecbaa43795774a1299"
}],
"conditionReqList": [{
"operationDate": "2023-07-14",
"remark": "123123",
"type": "2321312",
"vacId": "333333",
"vvyId": "6cb63df0526f20ecbaa43795774a1299"
}],
"consultationReqList": [{
"bthId": "2f166d975bdc58e6a461e3d01de11289",
"handlingType": "装货",
"operationDate": "2023-07-14",
"spareNumber": "12",
"vehiclesNumber": "22",
"vqcId": "123132132131321",
"vvyId": "6cb63df0526f20ecbaa43795774a1299"
}],
"delAlIds": [],
"delCsIds": [],
"delCtIds": [],
"delLnIds": [],
"delMfIds": [],
"delPmIds": [],
"delSauIds": [],
"delSiIds": [],
"delSoiIds": [],
"delSrmIds": [],
"delSsIds": [],
"delSwmIds": [],
"inVvyId": "6cb63df0526f20ecbaa43795774a1299",
"loadUnloadNoticeReqList": [{
"sluId": "11111",
"vbtId": "22222222",
"vvyId": "6cb63df0526f20ecbaa43795774a1299",
"workDate": "2023-07-14"
}],
"outVvyId": "6cb63df0526f20ecbaa43795774a1299",
"personMessageReqList": [{
"bthId": "2f166d975bdc58e6a461e3d01de11289",
"jobEndTime": "2023-7-14 10:00",
"jobStartTime": "2023-7-13 12:00",
"pmeId": "111",
"remark": "123123123remark",
"shipPerson": 0,
"termcd": "2222",
"valid": "33333",
"vbtId": "44444",
"vvyId": "6cb63df0526f20ecbaa43795774a1299",
"weatherType": "晴",
"workSuite": 0
}],
"shipmentAttachUnmoorReqList": [{
"attachTime": "2023-07-13 12:00",
"bthId": "2f166d975bdc58e6a461e3d01de11289",
"createTime": "",
"createUser": "",
"noProductBerthTime": "2023-07-13 12:00",
"remark": "23123123",
"sauId": "333333",
"shiftingBerthTime": "2023-07-13 12:00",
"shipDeadWeight": 30,
"tenantId": "11122222",
"termcd": "111222",
"unmoorTime": "2023-07-13 12:00",
"updateTime": "2023-07-13 12:00",
"updateUser": "111111",
"valid": "2222222",
"version": 20,
"vvyId": "6cb63df0526f20ecbaa43795774a1299"
}],
"shipmentMafiListReqList": [{
"loadType": "卸货",
"mafiBarcode": "000002",
"pamId": "ac9b606e04a2bc71b876914a64ccb0b6",
"size": 10,
"smlId": "1111",
"type": "FULL",
"vtpId": "222222",
"vvyId": "6cb63df0526f20ecbaa43795774a1299",
"workDate": "2023-07-14"
}],
"shipmentOtherInfoReqList": [{
"auxRemark": "111111",
"endTm": "2023-07-14 10:00:00",
"genNum": 20,
"remark": "12312321",
"soiId": "222222",
"startTm": "2023-07-13 12:00:00",
"tecNum": 30,
"volume": 20,
"vvyId": "6cb63df0526f20ecbaa43795774a1299",
"waitRemark": "123123",
"weight": 40,
"workRemark": "1231231"
}],
"shipmentRetallyMessageReqList": [{
"remId": "123123",
"retallyReqDTOS": [{
"remId": "1231231312",
"retallyDetailReqDTOS": [{
"carType": "中型车",
"goodsNumber": 10,
"goodsVolume": 20,
"goodsWeight": 30,
"retallyEndTime": "2023-07-14 10:00:00",
"retallyOrigin": "123123",
"retallyStartTime": "2023-07-13 12:00:00",
"retallyTerminus": "1231321",
"reyId": "1231321",
"rydId": "23123123"
}],
"retallyType": "",
"reyId": ""
}],
"vvyId": "6cb63df0526f20ecbaa43795774a1299"
}],
"shipmentSafetyInspectionReqList": [{
"importExport": "1231312",
"remark": "123123",
"spmId": "32131",
"tradeType": "123213",
"type": "123123",
"uploadStatus": "未上传",
"url": [],
"vsiId": "123123",
"vvyId": "6cb63df0526f20ecbaa43795774a1299"
}],
"shipmentShipSupplyReqList": [{
"sssId": "",
"stopBerthage": "2f166d975bdc58e6a461e3d01de11289",
"supplyAmount": 8,
"supplyDate": "2023-07-14",
"supplyType": "",
"vvyId": "6cb63df0526f20ecbaa43795774a1299",
"vvyName": "511I"
}],
"shipmentWorkMessageReqList": [{
"loadType": "自装",
"pwcType": "123",
"remark": "132311231",
"vvyId": "6cb63df0526f20ecbaa43795774a1299",
"wkmId": "123123",
"workEndTime": "2023-07-13 10:00:00",
"workStartTime": "2023-07-13 12:00:00",
"workMessageDetailReqDTOS": [{
"carType": "中型车",
"goodsNumber": 3,
"loadingType": "自装",
"remark": "",
"tenantId": "",
"termcd": "",
"valid": "",
"wkdId": "",
"wkmId": ""
}],
}],
"vtpId": "123123"
}
uni.request({
url: this.$local + '/api/shipOperate/upload',
data: workDataInfo,
header: {
'Content-Type': 'application/json' //自定义请求头信息
},
method: 'POST', //请求方式,必须为大写
success: (res) => {
console.log('接口返回------', res);
}
})
},
toGo(item) {
uni.navigateTo({
url: `/pages/shipWork/documentList`
})
}
}
};
</script>
<style lang="less" scoped>
.container {
background-color: #f5f6fa;
display: flex;
min-height: calc(100vh - 44px - 40px);
}
.content {
padding: 20px;
min-height: calc(100vh - 44px - 40px);
.form {
display: flex;
.select {
width: 200px;
margin-right: 20px;
}
.input {
width: 200px;
height: 35px;
line-height: 35px;
margin-left: 15px;
}
.searchBtn {
height: 35px;
line-height: 35px;
margin-left: 0;
}
}
.itemList {
width: 100%;
display: flex;
justify-content: flex-start;
flex-wrap: wrap;
/deep/.o-empty {
width: 100%;
margin-top: 15px;
}
.item {
width: 49%;
margin-top: 15px;
margin-right: 2%;
border: 1px solid #c9cacb;
.title {
display: flex;
justify-content: space-between;
font-size: 21px;
padding: 10px 20px;
font-weight: 700;
}
.row {
display: flex;
justify-content: space-between;
font-size: 14px;
padding: 10px 20px;
.nitem {
width: 46%;
.text {
color: #929292;
}
}
}
.footer {
width: 100%;
display: flex;
justify-content: space-around;
.fitem {
flex: 1;
margin: 10px 20px;
background-color: #fff;
}
}
}
.item:nth-child(2n) {
margin-right: 0;
}
}
.pageBox {
margin-top: 20px;
}
}
</style>