pad-app/pages/shipWork/peopleAdd.vue

580 lines
15 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="peopleAdd">
<head-view :title="title" url="/pages/shipWork/mixWork"></head-view>
<view class="container contentFixed">
<view class="info">
<view class="ul">
<view class="li">
<text>船名</text>
<text>{{shipInfo.vslCnname}}</text>
</view>
<view class="li">
<p><text class="required" v-if="obj.state != 'look'">*</text>航次:</p>
<uni-data-select v-model="hcValue" :localdata="hcList" @change="hcChange"
v-if="obj.state != 'look'"></uni-data-select>
<text v-else>{{peopleRow.vvyName}}</text>
</view>
<view class="li">
<p>进出口:</p>
<text>{{importExportFlagName}}</text>
</view>
<view class="li">
<p>贸易类型:</p>
<text>{{spmTradeName}}</text>
</view>
<view class="li">
<p><text class="required" v-if="obj.state != 'look'">*</text>天气:</p>
<!-- <uni-data-select v-model="tqValue" :localdata="tqList" @change="tqChange"
v-if="obj.state != 'look'"></uni-data-select> -->
<!-- <uni-easyinput v-if="obj.state != 'look'" v-model="tqTextValue"
placeholder="请输入"></uni-easyinput> -->
<!-- <text v-else>{{peopleRow.weatherType}}</text> -->
<text>{{ tqTextValue }}</text>
</view>
<view class="li">
<p><text class="required" v-if="obj.state != 'look'">*</text>泊位:</p>
<uni-data-select v-model="bwValue" :localdata="bwList" @change="bwChange"
v-if="obj.state != 'look'"></uni-data-select>
<text v-else>{{peopleRow.bthIdName}}</text>
</view>
<view class="li">
<p><text class="required" v-if="obj.state != 'look'">*</text>作业组数:</p>
<uni-number-box @change="workChange" v-model="workValue" :max="1000000000"
v-if="obj.state != 'look'" />
<text v-else>{{peopleRow.workSuite}}</text>
</view>
<view class="li">
<p><text class="required" v-if="obj.state != 'look'">*</text>单船人数:</p>
<uni-number-box @change="shipChange" v-model="shipValue" :max="1000000000"
v-if="obj.state != 'look'" />
<text v-else>{{peopleRow.shipPerson}}</text>
</view>
<view class="li">
<p><text class="required" v-if="obj.state != 'look'">*</text>作业时间:</p>
<template v-if="flag">
<uni-datetime-picker v-model="datetime" type="datetimerange" rangeSeparator="-"
@change="changeLog" v-if="obj.state != 'look'" :hide-second="true" :border="false" />
<text v-else>{{startTime}} - {{endTime}}</text>
</template>
</view>
</view>
<view class="btnList">
<view class="btn qx" @click="cancel">取消</view>
<template v-if="status == 0 || status == 4 || status == 5 || status == 'null'">
<view class="btn sc" v-if="obj.state == 'look'" @click="del">删除</view>
<view class="btn bc" v-if="obj.state == 'look'" @click="toGo('edit')">编辑</view>
<view class="btn bc" v-if="obj.state == 'add' || obj.state == 'edit'" @click="save">保存</view>
</template>
</view>
</view>
<uni-popup ref="popup" type="dialog">
<uni-popup-dialog type="error" confirmText="确定" title="通知" content="是否删除此条数据"
@confirm="delConfirm"></uni-popup-dialog>
</uni-popup>
</view>
<LotusLoading :lotusLoadingData="lotusLoadingData"></LotusLoading>
</view>
</template>
<script>
import sqlite from "../../common/sqlite.js"
import api from "../../common/api.js"
import LotusLoading from "../../components/Winglau14-lotusLoading/Winglau14-LotusLoading.vue";
import {
v4 as uuidv4
} from 'uuid';
export default {
data() {
return {
title: "",
shipInfo: {},
peopleRow: {},
peopleRowIndex: 0,
obj: {},
vtpId: "",
// 航次下拉框
hcValue: "",
hcTextValue: "",
hcList: [],
// 泊位下拉框
bwValue: "",
bwTextValue: "",
bwList: [],
// 天气下拉框
tqValue: "",
tqTextValue: "",
tqList: [],
// 作业组数
workValue: 0,
// 单船人数
shipValue: 0,
// 作业时间
datetime: ['', ''],
startTime: "",
endTime: "",
// 开始时间
beginDate: "",
// 结束时间
endDate: "",
flag: true,
lotusLoadingData: {
isShow: false //设置显示加载中组件true显示false隐藏
},
// 审核状态
status: 0,
// 删除人员信息id
delPmIds: [],
vvyInfo: [],
importExportFlagName: "",
spmTradeName: "",
// 下拉数据
optionData: [],
}
},
onLoad(options) {
if ('params' in options) {
// 获取传递的对象参数使用decodeURIComponent解码并转为对象
this.obj = JSON.parse(decodeURIComponent(options.params))
}
},
mounted() {
this.vtpId = uni.getStorageSync('vtpId')
this.delPmIds = uni.getStorageSync("delPmIds")
this.executeSql1('shipOption')
this.executeSql1("shipInfoTable")
this.executeSql1("voyageScheduleDataDetailRespDTOList")
this.executeSql1("shipmentBasicShiftList")
this.executeSql1("messageRespList")
if (this.obj.state == "edit") {
this.title = "编辑人员信息"
} else if (this.obj.state == "look") {
this.title = "查看人员信息"
} else {
this.title = "新增人员信息"
}
let that = this
setTimeout(() => {
if (that.obj.state == 'edit' || that.obj.state == 'look') {
that.getRow();
}
}, 100)
},
methods: {
// 查
executeSql1(tableName) {
let sql = `select * from ${tableName} WHERE vtpId = '${this.vtpId}';`
sqlite.executeSqlCeshi(sql).then((value) => {
// 在resolve时执行的回调函数
if (tableName == 'shipOption') {
this.optionData = value
this.getShip()
} else if (tableName == 'shipInfoTable') {
this.shipInfo = value[0]
} else if (tableName == 'voyageScheduleDataDetailRespDTOList') {
this.vvyInfo = value
value.forEach((v, index) => {
this.hcList.push({
text: v.vvyName,
value: v.vvyId
})
})
} else if (tableName == "shipmentBasicShiftList") {
this.beginDate = value[0].beginTime
this.endDate = value[2].endTime
} else if(tableName == "messageRespList") {
console.log('value',value);
}
}).catch((error) => {
// 在reject时执行的回调函数
console.error(error);
});
},
// 获取船只信息
getShip() {
// 船舶下拉数据
let bwOption = []
this.optionData.forEach((v, index) => {
if (v.dictionariesName == 'bthList') {
bwOption.push(v)
}
})
bwOption.forEach((v, index) => {
this.bwList.push({
text: v.ptrDesc,
value: v.ptrCode
})
})
// // 天气下拉数据
// let tqOption = []
// this.optionData.forEach((v, index) => {
// if (v.dictionariesName == 'weather') {
// tqOption.push(v)
// }
// })
// tqOption.forEach((v, index) => {
// this.tqList.push({
// text: v.weatherType,
// value: v.weatherTypeDesc
// })
// })
},
// 获取当前行信息
getRow() {
this.peopleRow = uni.getStorageSync('peopleRow');
this.hcValue = this.peopleRow.vvyId
this.hcTextValue = this.peopleRow.vvyName
if (this.peopleRow.weatherId != undefined) {
this.tqValue = this.peopleRow.weatherId
} else {
this.tqValue = ""
}
this.tqTextValue = this.peopleRow.weatherType
this.bwValue = this.peopleRow.bthId
this.bwTextValue = this.peopleRow.bthIdName
this.workValue = this.peopleRow.workSuite
this.shipValue = this.peopleRow.shipPerson
this.datetime = [this.peopleRow.jobStartTime, this.peopleRow.jobEndTime]
this.startTime = this.peopleRow.jobStartTime
this.endTime = this.peopleRow.jobEndTime
this.importExportFlagName = this.peopleRow.importExportFlagName
this.status = this.peopleRow.status
this.vvyInfo.forEach(v => {
if (this.hcValue == v.vvyId) {
this.spmTradeName = v.tradeTypeName
}
})
},
// 航次下拉
hcChange(e) {
this.hcValue = e;
this.hcList.forEach(v => {
if (v.value == e) {
this.hcTextValue = v.text
}
})
this.vvyInfo.forEach(v => {
if (v.vvyId == e) {
this.importExportFlagName = v.importExportFlagName
this.spmTradeName = v.tradeTypeName
}
})
},
// 泊位下拉
bwChange(e) {
this.bwValue = e;
this.bwList.forEach(v => {
if (v.value == e) {
this.bwTextValue = v.text
}
})
},
// // 天气下拉
// tqChange(e) {
// this.tqValue = e;
// this.tqList.forEach(v => {
// if (v.value == e) {
// this.tqTextValue = v.text
// }
// })
// },
// 作业组数
workChange(val) {
this.workValue = val;
},
// 单船人数
shipChange(val) {
this.shipValue = val;
},
// 作业时间
changeLog(e) {
this.lotusLoadingData.isShow = true
// 选择开始结束时间时分
let sTime = e[0].slice(e[0].length - 5)
let eTime = e[1].slice(e[1].length - 5)
// 获取开始结束时间年月日
let sYMD = e[0].split(' ')[0]
let eYMD = e[1].split(' ')[0]
// 获取开始结束时间时分转数字
let nsTime = Number((sTime.split(':')).join(''))
let neTime = Number((eTime.split(':')).join(''))
// 获取限定范围开始结束时间时分转数字
let xsTime = Number((this.beginDate.split(':')).join(''))
let xeTime = Number((this.endDate.split(':')).join(''))
let that = this
if (sYMD != eYMD) {
if (nsTime >= xsTime && neTime <= xeTime) {
that.datetime = e
that.startTime = e[0]
that.endTime = e[1]
} else {
that.datetime = ["", ""]
that.startTime = ""
that.endTime = ""
that.flag = false
setTimeout(function() {
that.flag = true
that.lotusLoadingData.isShow = false
}, 200)
uni.showToast({
title: `请输入正确的作业时间范围`,
icon: 'none',
duration: 2000
})
}
} else {
if (neTime <= xeTime) {
that.flag = true
that.datetime = e
that.startTime = e[0]
that.endTime = e[1]
that.lotusLoadingData.isShow = false
} else {
that.datetime = ["", ""]
that.startTime = ""
that.endTime = ""
that.flag = false
setTimeout(function() {
that.flag = true
that.lotusLoadingData.isShow = false
}, 200)
uni.showToast({
title: `请输入正确的作业时间范围`,
icon: 'none',
duration: 2000
})
}
}
},
// 取消
cancel() {
uni.navigateTo({
url: '/pages/shipWork/mixWork'
})
},
// 弹框删除
delConfirm() {
let sql = `DELETE FROM messageRespList WHERE pmeId = '${this.peopleRow.pmeId}';`
this.executeSql(sql)
let reg = RegExp(/-/)
if (reg.test(this.peopleRow.pmeId) == false) {
this.delPmIds.push(this.peopleRow.pmeId)
uni.setStorageSync('delPmIds', this.delPmIds);
}
uni.navigateTo({
url: '/pages/shipWork/mixWork'
})
},
// 删除
del() {
this.$refs.popup.open()
},
// 保存
save() {
if(!this.hcValue) {
uni.showModal({
title: '提示',
showCancel: false,
content: '请输入航次!'
})
return
}
if(!this.tqTextValue) {
uni.showModal({
title: '提示',
showCancel: false,
content: '请输入天气!'
})
return
}
if(!this.bwValue) {
uni.showModal({
title: '提示',
showCancel: false,
content: '请输入泊位!'
})
return
}
if (this.datetime[0] == "") {
uni.showModal({
title: '提示',
showCancel: false,
content: '请输入作业时间!'
})
return
}
let date = new Date().getTime()
let pmeId = uuidv4()
let webStatus = 0
let webDate = api.getDate(date)
if (this.obj.state == "edit") {
let sql =
`UPDATE messageRespList SET bthId = '${this.bwValue}',bthIdName = '${this.bwTextValue}',
jobStartTime = '${this.startTime}',jobEndTime = '${this.endTime}',shipPerson = '${this.shipValue}',
vvyId = '${this.hcValue}',vvyName = '${this.hcTextValue}',weatherType = '${this.tqTextValue}',
weatherTypeDesc = '${this.tqTextValue}',workSuite = '${this.workValue}',webStatus = '${webStatus}',
importExportFlagName = '${this.importExportFlagName}',webDate = '${webDate}' WHERE pmeId = '${this.peopleRow.pmeId}';`
this.executeSql(sql)
} else if (this.obj.state == "add") {
let sql =
`insert into messageRespList values('${pmeId}','${this.vtpId}','${this.bwValue}','${this.bwTextValue}',
'${this.startTime}','${this.endTime}','${this.shipValue}','${this.hcValue}','${this.hcTextValue}','${this.tqTextValue}',
'${this.tqTextValue}','${this.workValue}','${this.importExportFlagName}','${0}','${webStatus}','${webDate}')`
this.executeSql(sql)
}
uni.navigateTo({
url: '/pages/shipWork/mixWork'
})
},
// 编辑
toGo(state) {
this.obj.state = state;
const params = encodeURIComponent(JSON.stringify(this.obj));
uni.navigateTo({
url: `/pages/shipWork/peopleAdd?params=${params}`
})
},
executeSql(sql) {
sqlite.executeSqlCeshi(sql).then((value) => {
// 在resolve时执行的回调函数
// console.log(value);
}).catch((error) => {
// 在reject时执行的回调函数
console.error(error);
});
},
}
}
</script>
<style lang="less" scoped>
.peopleAdd {
.container {
padding: 16px;
background-color: #F6F7F9;
.info {
background-color: #fff;
}
.ul {
display: flex;
flex-wrap: wrap;
justify-content: space-between;
.li {
width: 49%;
display: flex;
justify-content: space-between;
border-bottom: 1px solid #EEEEEE;
padding: 0 16px;
height: 56px;
line-height: 56px;
.required {
color: red;
margin-right: 5px;
}
/deep/.uni-numbox {
border: 1px solid #ccc;
box-sizing: border-box;
height: 38px;
margin-top: 8px;
}
/deep/.uni-numbox-btns {
padding: 0 14px;
box-sizing: border-box;
}
/deep/.uni-numbox__value {
width: 100px;
height: 35px;
line-height: 35px;
background-color: #fff !important;
}
/deep/.uni-date-x .icon-calendar {
display: none;
}
/deep/.uni-date {
flex: none;
width: 52%;
text-align: right;
display: flex;
flex-direction: column;
justify-content: center;
}
/deep/.uni-date-x {
height: 38px;
}
/deep/.uni-stat__select {
flex: none;
width: 30%;
}
/deep/.uni-select {
border: none;
}
/deep/.uni-select__input-text {
text-align: right;
padding-right: 10px;
}
/deep/.is-input-border {
margin-top: 8px;
height: 40px;
}
}
}
.btnList {
position: fixed;
bottom: 0;
left: 0;
right: 0;
height: 80px;
background-color: #fff;
display: flex;
justify-content: center;
box-shadow: 0 -3px 7px 0 rgba(0, 0, 0, 0.10);
.btn {
margin: 15.5px 17px;
width: 200px;
height: 49px;
border-radius: 2px;
font-size: 18px;
text-align: center;
line-height: 49px;
}
.qx {
background-color: #eee;
}
.sc {
background-color: #E50101;
color: #fff;
}
.bc {
color: #fff;
background: #0067CF;
}
}
}
}
</style>