pad-app/pages/shipWork/mixSign.vue

1837 lines
43 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="mixSign">
<head-view :title="title" url="/pages/shipWork/mixWork"></head-view>
<view class="contentFixedr">
<custom-tabs type="c1" :value="tabsValue" @change="tabsChange">
<custom-tab-pane :label="item.name" v-for="(item, index) in tabsList" :name="'c1_' + index" :key="index">
<view></view>
<view style="padding: 16px; padding-bottom: 0;">
<view class="container">
<view class="head">
<view class="leftHead">
<image id="HT-logo" src="../../static/images/theme/logo.png" mode="widthFix" />
</view>
<view class="rightHead">
<text class="p">上海海通国际汽车码头有限公司</text>
<text>SHANGHAI HAITONG INTERNATIONAL AUTOMOTIVE TERMINAL CO. LTD.</text>
</view>
</view>
<view class="headTItle">
<view class="titleLeft"></view>
<view class="title">
<view class="p">海通码头装卸和杂项作业单</view>
<text>SHANGHAI HARBOUR BUREAU STEVEDORE WORKING RECORD</text>
</view>
<view class="titleRight">
<view>
<text>编号/N0:</text>
<text>QR-7.5.1-01-05-M</text>
</view>
</view>
</view>
<view class="ul">
<view class="li">
<text>Name of ship:</text><text>{{ shipInfo.vslEnname }}</text>
</view>
<view class="li">
<text>Voy No:</text><text>{{ vvyName }}</text>
</view>
<view class="li">
<text>Weather:</text><text>{{ tqInfo }}</text>
</view>
<view class="li">
<text>Date:</text><text>{{ dateId }}</text>
</view>
<view class="li">
<text>Gangs:</text><text>{{ zyzsInfo }}</text>
</view>
<view class="li">
<text>Foreman:</text><text>{{ dcrsInfo }}</text>
</view>
<!-- <view class="li">
<p>Berthed at Haitong:</p><text>{{bwInfo}}</text>
</view> -->
<view class="li">
<text>Foreman Working time:</text><text>{{ RYSJ[0].minStartTime |
textFilter }}-{{ RYSJ[0].maxEndTime | textFilter }}</text>
</view>
<view class="li">
<text>Berthed at Haitong:</text><text>
<checkbox-group>
<label>
1
<checkbox style="margin: 0 10px 0 5px" value="cb"
:checked="bwInfo == '一泊位'" />
</label>
<label>
2
<checkbox style="margin: 0 10px 0 5px" value="cb"
:checked="bwInfo == '二泊位'" />
</label>
<label>
3
<checkbox style="margin: 0 10px 0 5px" value="cb"
:checked="bwInfo == '三泊位'" />
</label>
<label>
4
<checkbox style="margin: 0 10px 0 5px" value="cb"
:checked="bwInfo == '四泊位'" />
</label>
<label>
5
<checkbox style="margin: 0 10px 0 5px" value="cb"
:checked="bwInfo == '五泊位'" />
</label>
</checkbox-group>
</text>
</view>
</view>
<view class="rowOne">
<view class="left">
<view class="cell">
</view>
<view class="cell cellY">
<view class="item bo_b">
Working time
</view>
<view class="item cellX">
<view class="item bo_r">
From
</view>
<view>
To
</view>
</view>
</view>
<view class="cellB cellY bo_r">
<view class="item bo_b">
Kind Of Works
</view>
<view>
Loading/UnLoading
</view>
</view>
</view>
<view class="right cellX">
<view class="itemLeft bo_r">
B/L
</view>
<view class="itemRight cellY">
<view class="bo_b">
Handling method
</view>
<view class="cellX">
<text class="bo_r">Ro/Ro</text>
<text class="bo_r">PortDevices</text>
<text>Others</text>
</view>
</view>
</view>
</view>
<view class="rowTwo" v-for="(item2, index2) in shiftInfo1" :key="index2 + 'shift'">
<view class="left bo_r">
<view class="cell bo_r">
First Shift
</view>
<view class="cell cellX">
<view class="item bo_r">
{{ item2.workStartTime | textFilter }}
</view>
<view class="item bo_r">
{{ item2.workEndTime | textFilter }}
</view>
</view>
<view class="cellY">
<view class="item" v-for="(item3, index3) in item2.infoArr" :key="index3">
车型:{{ item3.carTypeName }},数量:{{ item3.goodsNumber }}
</view>
</view>
</view>
<view class="right cellX">
<view class="itemLeft bo_r">
</view>
<view class="itemRight">
<!-- 没办法画个格子 -->
<view class="gezi">
<view></view>
<view></view>
<view></view>
</view>
<view class="itemList bo_b" v-for="(item3, index3) in item2.infoArr"
:key="index3">
<view class="item">
<view class="text" v-show="item3.loadingType == 'RO'">√</view>
</view>
<view class="item">
<view class="text" v-show="item3.loadingType == 'PR'">√</view>
</view>
<view class="item">
<view class="text" v-show="item3.loadingType == 'OT'">√</view>
</view>
</view>
</view>
</view>
</view>
<view class="rowTwo" v-if="shiftInfo1.length == 0">
<view class="left bo_r">
<view class="cell bo_r">
First Shift
</view>
<view class="cell cellX">
<view class="item bo_r">
</view>
<view class="item bo_r">
</view>
</view>
<view class="cellY">
<view class="item">
</view>
</view>
</view>
<view class="right cellX">
<view class="itemLeft bo_r">
</view>
<view class="itemRight">
<!-- 没办法画个格子 -->
<view class="gezi">
<view></view>
<view></view>
<view></view>
</view>
<view class="itemList bo_b">
<view class="item">
</view>
<view class="item">
</view>
<view class="item">
</view>
</view>
</view>
</view>
</view>
<view class="rowTwo" v-for="(item2, index2) in shiftInfo2" :key="index2 + 'shift'">
<view class="left bo_r">
<view class="cell bo_r">
Second Shift
</view>
<view class="cell cellX">
<view class="item bo_r">
{{ item2.workStartTime | textFilter }}
</view>
<view class="item bo_r">
{{ item2.workEndTime | textFilter }}
</view>
</view>
<view class="cellY">
<view class="item" v-for="(item3, index3) in item2.infoArr" :key="index3">
车型:{{ item3.carTypeName }},数量:{{ item3.goodsNumber }}
</view>
</view>
</view>
<view class="right cellX">
<view class="itemLeft bo_r">
</view>
<view class="itemRight">
<!-- 没办法画个格子 -->
<view class="gezi">
<view></view>
<view></view>
<view></view>
</view>
<view class="itemList bo_b" v-for="(item3, index3) in item2.infoArr"
:key="index3">
<view class="item">
<view class="text" v-show="item3.loadingType == 'RO'">√</view>
</view>
<view class="item">
<view class="text" v-show="item3.loadingType == 'PR'">√</view>
</view>
<view class="item">
<view class="text" v-show="item3.loadingType == 'OT'">√</view>
</view>
</view>
</view>
</view>
</view>
<view class="rowTwo" v-if="shiftInfo2.length == 0">
<view class="left bo_r">
<view class="cell bo_r">
Second Shift
</view>
<view class="cell cellX">
<view class="item bo_r">
</view>
<view class="item bo_r">
</view>
</view>
<view class="cellY">
<view class="item">
</view>
</view>
</view>
<view class="right cellX">
<view class="itemLeft bo_r">
</view>
<view class="itemRight">
<!-- 没办法画个格子 -->
<view class="gezi">
<view></view>
<view></view>
<view></view>
</view>
<view class="itemList bo_b">
<view class="item">
</view>
<view class="item">
</view>
<view class="item">
</view>
</view>
</view>
</view>
</view>
<view class="rowTwo" v-for="(item2, index2) in shiftInfo3" :key="index2 + 'shift'">
<view class="left bo_r">
<view class="cell bo_r">
Third Shift
</view>
<view class="cell cellX">
<view class="item bo_r">
{{ item2.workStartTime | textFilter }}
</view>
<view class="item bo_r">
{{ item2.workEndTime | textFilter }}
</view>
</view>
<view class="cellY">
<view class="item" v-for="(item3, index3) in item2.infoArr" :key="index3">
车型:{{ item3.carTypeName }},数量:{{ item3.goodsNumber }}
</view>
</view>
</view>
<view class="right cellX">
<view class="itemLeft bo_r">
</view>
<view class="itemRight">
<!-- 没办法画个格子 -->
<view class="gezi">
<view></view>
<view></view>
<view></view>
</view>
<view class="itemList bo_b" v-for="(item3, index3) in item2.infoArr"
:key="index3">
<view class="item">
<view class="text" v-show="item3.loadingType == 'RO'">√</view>
</view>
<view class="item">
<view class="text" v-show="item3.loadingType == 'PR'">√</view>
</view>
<view class="item">
<view class="text" v-show="item3.loadingType == 'OT'">√</view>
</view>
</view>
</view>
</view>
</view>
<view class="rowTwo" v-if="shiftInfo3.length == 0">
<view class="left bo_r">
<view class="cell bo_r">
Third Shift
</view>
<view class="cell cellX">
<view class="item bo_r">
</view>
<view class="item bo_r">
</view>
</view>
<view class="cellY">
<view class="item">
</view>
</view>
</view>
<view class="right cellX">
<view class="itemLeft bo_r">
</view>
<view class="itemRight">
<!-- 没办法画个格子 -->
<view class="gezi">
<view></view>
<view></view>
<view></view>
</view>
<view class="itemList bo_b">
<view class="item">
</view>
<view class="item">
</view>
<view class="item">
</view>
</view>
</view>
</view>
</view>
<view class="rowThree">
<view class="title bo_r bo_b">
Rehangdling翻舱
</view>
<view class="fclist">
<view class="fcbt">
<view class="bt">
<view class="kind bo_r">
Kind of Rehangdling
</view>
<view class="date">
<view class="cellY bo_r">
<view class="bo_b">DK/H</view>
<view class="cellX">
<view class="bo_r">From</view>
<view>To</view>
</view>
</view>
<view class="cellY bo_r">
<view class="bo_b">Working time</view>
<view class="cellX">
<view class="bo_r">From</view>
<view>To</view>
</view>
</view>
</view>
<view class="weight">
<view class="cellY">
<view class="bo_b">Weight/Measure</view>
<view class="cellX">
<view class="bo_r">Vehicle type/Quantity</view>
<view>Total W/M</view>
</view>
</view>
</view>
</view>
</view>
<view class="fcbt">
<view class="bt">
<view class="kind bo_r">
Shift Of Pier
</view>
<view class="ceY">
<view class="concat" v-if="fcArr1.length == 0">
<view class="date">
<view class="item bo_r">
<view class="sz bo_r"></view>
<view class="sz"></view>
</view>
<view class="item">
<view class="sz bo_r"></view>
<view class="sz bo_r"></view>
</view>
</view>
<view class="weight cellX">
<view class="text bo_r">
</view>
<view class="text">
</view>
</view>
</view>
<view class="concat" v-else v-for="(item, index) in fcArr1" :key="index">
<view class="date">
<view class="item bo_r">
<view class="sz bo_r">{{ item.retallyOrigin }}</view>
<view class="sz">{{ item.retallyOrigin }}</view>
</view>
<view class="item">
<view class="sz bo_r">{{ item.retallyStartTime | textFilter }}
</view>
<view class="sz bo_r">{{ item.retallyEndTime | textFilter }}
</view>
</view>
</view>
<view class="weight cellX">
<view class="text bo_r">
车型:{{ item.carTypeName }},数量:{{ item.goodsNumber }}
</view>
<view class="text">
重量:{{ item.goodsWeight }},体积:{{ item.goodsVolume }}
</view>
</view>
</view>
</view>
</view>
</view>
<view class="fcbt">
<view class="bt">
<view class="kind bo_r">
Shift Of Dock
</view>
<view class="ceY">
<view class="concat" v-if="fcArr2.length == 0">
<view class="date">
<view class="item bo_r">
<view class="sz bo_r"></view>
<view class="sz"></view>
</view>
<view class="item">
<view class="sz bo_r"></view>
<view class="sz bo_r"></view>
</view>
</view>
<view class="weight cellX">
<view class="text bo_r">
</view>
<view class="text">
</view>
</view>
</view>
<view class="concat" v-else v-for="(item, index) in fcArr2" :key="index">
<view class="date">
<view class="item bo_r">
<view class="sz bo_r">{{ item.retallyOrigin }}</view>
<view class="sz">{{ item.retallyOrigin }}</view>
</view>
<view class="item">
<view class="sz bo_r">{{ item.retallyStartTime | textFilter }}
</view>
<view class="sz bo_r">{{ item.retallyEndTime | textFilter }}
</view>
</view>
</view>
<view class="weight cellX">
<view class="text bo_r">
车型:{{ item.carTypeName }},数量:{{ item.goodsNumber }}
</view>
<view class="text">
重量:{{ item.goodsWeight }},体积:{{ item.goodsVolume }}
</view>
</view>
</view>
</view>
</view>
</view>
<view class="fcbt">
<view class="bt">
<view class="kind bo_r">
Reloading
</view>
<view class="ceY">
<view class="concat" v-if="fcArr3.length == 0">
<view class="date">
<view class="item bo_r">
<view class="sz bo_r"></view>
<view class="sz"></view>
</view>
<view class="item">
<view class="sz bo_r"></view>
<view class="sz bo_r"></view>
</view>
</view>
<view class="weight cellX">
<view class="text bo_r">
</view>
<view class="text">
</view>
</view>
</view>
<view class="concat" v-else v-for="(item, index) in fcArr3" :key="index">
<view class="date">
<view class="item bo_r">
<view class="sz bo_r">{{ item.retallyOrigin }}</view>
<view class="sz">{{ item.retallyOrigin }}</view>
</view>
<view class="item">
<view class="sz bo_r">{{ item.retallyStartTime }}</view>
<view class="sz bo_r">{{ item.retallyEndTime }}</view>
</view>
</view>
<view class="weight cellX">
<view class="text bo_r">
车型:{{ item.carTypeName }},数量:{{ item.goodsNumber }}
</view>
<view class="text">
重量:{{ item.goodsWeight }},体积:{{ item.goodsVolume }}
</view>
</view>
</view>
</view>
</view>
</view>
</view>
</view>
<view class="rowFour">
<view class="row">
<view class="title bo_l bo_r">
</view>
<view class="kind bo_r">
Reason
</view>
<view class="date">
<view class="bo_r">Tech Stev</view>
<view class="bo_r">Men</view>
<view class="bo_r">From</view>
<view class="bo_r">To</view>
</view>
<view class="weight bo_r">
Weight/Measure
</view>
</view>
<view class="rowC">
<view class="title bo_l bo_r">
Extra Labour
</view>
<view class="kind bo_r">
</view>
<view class="date">
<view class="cellY">
<view class="sz bo_b">{{ JSGR[0].totalTecNum }}</view>
<view class="sz"></view>
</view>
<view class="cellY">
<view class="sz bo_b"></view>
<view class="sz">{{ PTGR[0].totalGenNum }}</view>
</view>
<view class="cellY">
<view class="sz bo_b">{{ JSGR[0].minStartTime | textFilter }}</view>
<view class="sz">{{ PTGR[0].minStartTimePt | textFilter }}</view>
</view>
<view class="cellY">
<view class="sz bo_b">{{ JSGR[0].maxEndTime | textFilter }}</view>
<view class="sz">{{ PTGR[0].maxEndTimePt | textFilter }}</view>
</view>
</view>
<view class="weight cellY bo_r">
<view class="sz bo_b">{{ JSGR[0].totalWeight }}/{{ JSGR[0].totalvolume }}</view>
<view class="sz">{{ PTGR[0].totalWeightPt }}/{{ PTGR[0].totalvolumePt }}</view>
</view>
</view>
<view class="row">
<view class="title bo_l bo_r">
Stand by
</view>
<view class="rownr bo_r">
{{ JSGR[0].allWaitRemark }}
</view>
</view>
<view class="row">
<view class="title bo_l bo_r">
Remark
</view>
<view class="rownr bo_r">
{{ JSGR[0].allAuxRemark }}
</view>
</view>
</view>
</view>
<view class="signBox">
<view class="signContent">
<view class="signTitle">
<p>指导员:</p>
<p>Foreman:</p>
</view>
<view class="signInfo" v-if="zdySign.url == ''" @click="togoSign('0')">
去签名
</view>
<view class="signImg" v-else @click="togoSign('0')">
<image :src="zdySign.url"></image>
<!-- <text class="del" @click="delSign(zdySign.id)">删除</text> -->
</view>
</view>
<view class="row"></view>
<view class="signContent">
<view class="signTitle">
<p>船长/大副:</p>
<p>Capt/Chief Mate:</p>
</view>
<view class="signInfo" v-if="czSign.url == ''" @click="togoSign('1')">
去签名
</view>
<view class="signImg" v-else @click="togoSign('1')">
<image :src="czSign.url"></image>
<!-- <text class="del" @click="delSign(czSign.id)">删除</text> -->
</view>
</view>
</view>
</view>
</custom-tab-pane>
</custom-tabs>
</view>
<uni-popup ref="delPopup" type="dialog">
<uni-popup-dialog type="error" confirmText="确定" title="通知" content="是否删除此条数据"
@confirm="delConfirm"></uni-popup-dialog>
</uni-popup>
</view>
</template>
<script>
import sqlite from "../../common/sqlite.js"
import api from "../../common/api.js"
export default {
data() {
return {
title: "杂项单证签名",
tabsValue: 0,
tabsList: [],
vvyId: "",
vvyName: "",
webId: "",
aIdList: [],
aId: "",
vtpId: "",
// 时间段数组
timeArr: [],
// 一天开始时间
startTime: "",
// 一天结束时间
endTime: "",
// 人员信息
peopleInfo: {},
peopleList: [],
peopleArr: [],
tqInfo: "",
bwArr: [],
bwInfo: "",
zyzsInfo: 0,
dcrsInfo: 0,
// 单证数量
tabsArr: [],
gbArr: [],
// 船舶信息
shipInfo: {},
shiftInfo: [],
shiftInfo1: [],
shiftInfo2: [],
shiftInfo3: [],
// 翻仓信息
fcList: [],
fcArr1: [],
fcArr2: [],
fcArr3: [],
// 其他信息
qtList: [],
qtArr: [],
// 签名信息
zdySign: {
url: "",
id: ""
},
dateId: "",
czSign: {
url: "",
id: ""
},
delId: "",
PTGR: [],
JSGR: [],
RYSJ: []
}
},
onLoad(option) {
if ('params' in option) {
this.tabsValue = JSON.parse(decodeURIComponent(option.params)).tabsValue
}
},
mounted() {
this.vtpId = uni.getStorageSync('vtpId')
let that = this
that.executeSql2()
that.executeSql('shipInfoTable')
that.aaa()
setTimeout(function () {
that.fcList.forEach(v => {
let endT = v.retallyEndTime.slice(0, 10)
if (endT == that.dateId) {
if (v.retallyTypeName == '舱内翻') {
that.fcArr1.push(v)
} else if (v.retallyTypeName == '舱外翻') {
that.fcArr2.push(v)
} else if (v.retallyTypeName == '货物重装') {
that.fcArr3.push(v)
}
}
})
that.qtList.forEach(v => {
let endT = ""
if (v.endTm != "") {
endT = v.endTm.slice(0, 10)
} else if (v.endTmPt != "") {
endT = v.endTmPt.slice(0, 10)
}
if (endT == that.dateId) {
that.qtArr.push(v)
}
})
if (that.qtArr.length == 0) {
that.qtArr.push({})
}
that.shiftInfo.forEach(v => {
let arr = api.arrFrom(v.infoArr, "webId")
that.$set(v, "infoArr", arr)
if(v.pwcTypeName == '一工班') {
that.shiftInfo1.push(v)
} else if(v.pwcTypeName == '二工班'){
that.shiftInfo2.push(v)
} else if(v.pwcTypeName == '三工班') {
that.shiftInfo3.push(v)
}
})
that.peopleList.forEach(v => {
let endT = v.jobEndTime.slice(0, 10)
if (endT == that.dateId) {
that.peopleArr.push(v)
}
})
that.tqInfo = that.peopleArr[0].weatherType
that.peopleArr.forEach(v => {
that.zyzsInfo += Number(v.workSuite)
that.dcrsInfo += Number(v.shipPerson)
that.bwArr.push(v.bthIdName)
})
that.bwInfo = that.bwArr.join(",")
}, 300)
},
filters: {
textFilter(value) {
let split_s = value.split(" ")
let result = split_s[1].split(":")
let date = split_s[0].split("-")
let sum = result[0] + ":" + result[1] + "(" + date[2] + ")"
return sum
}
},
methods: {
// 查船舶信息/人员信息
executeSql(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.peopleInfo = value[0]
}
}).catch((error) => {
// 在reject时执行的回调函数
console.error(error);
});
},
// 查工班信息
executeSql2(type) {
let sql = `SELECT
strftime('%Y-%m-%d %H:00:00', datetime(workEndTime, '0 day', 'start of day', '+22 hours')) || ',' || strftime('%Y-%m-%d %H:00:00', datetime(workEndTime, '1 day', 'start of day', '+22 hours')) AS work_shift
FROM workMessageRespList WHERE workMessageRespList.vtpId='${this.vtpId}'
GROUP BY work_shift
UNION SELECT strftime('%Y-%m-%d %H:00:00', datetime(workEndTime, '-1 day', 'start of day', '+22 hours')) || ',' || strftime('%Y-%m-%d %H:00:00', datetime(workEndTime, '0 day', 'start of day', '+22 hours')) AS work_shift
FROM workMessageRespList WHERE workMessageRespList.vtpId='${this.vtpId}'
GROUP BY work_shift;`
sqlite.executeSqlCeshi(sql).then((value) => {
this.timeArr = value
value.forEach((v, index) => {
console.log('v', v);
this.startTime = v.work_shift.split(",")[0]
this.endTime = v.work_shift.split(",")[1]
let sql2 =
`Select COUNT(*),pwcTypeName,vvyId,vvyName,MIN(workStartTime) AS workStartTime, MAX(workEndTime)
AS workEndTime FROM (SELECT * FROM workMessageRespList WHERE workStartTime>='${this.startTime}' and
workEndTime<'${this.endTime}' and workMessageRespList.vtpId='${this.vtpId}')
GROUP BY pwcTypeName ORDER BY workStartTime asc;`
this.executeSql22(sql2, index)
let sql3 = `SELECT * FROM retallyMessageRespList WHERE retallyMessageRespList.retallyStartTime>='${this.startTime}' and
retallyMessageRespList.retallyEndTime<'${this.endTime}' and vtpId = '${this.vtpId}'`
this.executeSql3(sql3)
// let sql4 = `SELECT * FROM infoRespList WHERE infoRespList.startTm>='${this.startTime}' and
// infoRespList.endTm<'${this.endTime}' and vtpId = '${this.vtpId}'`
// 普通工人查询
let sql4 = `SELECT MIN(startTmPt) AS minStartTimePt,MAX(endTmPt) AS maxEndTimePt,SUM(genNum) AS totalGenNum,SUM(weightPt) AS totalWeightPt,SUM(volumePt) AS totalvolumePt,GROUP_CONCAT(waitRemark, ', ') AS allWaitRemark,GROUP_CONCAT(auxRemark, ', ') AS allAuxRemark
FROM infoRespList WHERE vtpId = '${this.vtpId}' AND startTmPt>='${this.startTime}' AND endTmPt<='${this.endTime}'`
this.executeSql4(sql4)
let sql5 = `SELECT * FROM messageRespList WHERE messageRespList.jobStartTime>='${this.startTime}' and
messageRespList.jobEndTime<'${this.endTime}' and vtpId = '${this.vtpId}'`
this.executeSql6(sql5)
// 技术工人查询
let sql6 = `SELECT MIN(startTm) AS minStartTime,MAX(endTm) AS maxEndTime,SUM(tecNum) AS totalTecNum,SUM(weight) AS totalWeight,SUM(volume) AS totalvolume,GROUP_CONCAT(waitRemark, ', ') AS allWaitRemark,GROUP_CONCAT(auxRemark, ', ') AS allAuxRemark
FROM infoRespList WHERE vtpId = '${this.vtpId}' AND startTm>='${this.startTime}'AND endTm<='${this.endTime}'`
this.executeSql7(sql6)
// 人员信息作业时间
let sql7 = `SELECT MIN(jobStartTime) AS minStartTime,MAX(jobEndTime) AS maxEndTime
FROM messageRespList
WHERE vtpId = '${this.vtpId}'
AND jobStartTime>='${this.startTime}'
AND jobEndTime<='${this.endTime}'`
this.executeSql8(sql7)
})
let that = this
setTimeout(function () {
if (type != 0) {
that.tabsArr.forEach((v, index) => {
let _index = index + 1
that.$set(v, "name", `杂项单证${_index}`)
})
}
that.tabsList = that.tabsArr
that.shiftInfo = that.tabsList[that.tabsValue].shiftArr
that.shiftList = that.tabsList[that.tabsValue].shiftArr
that.vvyId = that.tabsList[0].shiftArr[0].vvyId
that.vvyName = that.tabsList[0].shiftArr[0].vvyName
let dateId = that.tabsList[that.tabsValue].shiftArr[0].workEndTime
that.dateId = dateId.slice(0, 10)
that.executeSql5()
that.shiftList.forEach(v => {
that.executeSql222(v.workStartTime, v.workEndTime, v.pwcTypeName)
})
setTimeout(function () {
that.shiftList = that.shiftList
}, 100)
}, 100)
}).catch((error) => {
// 在reject时执行的回调函数
console.error(error);
});
},
executeSql22(sql, index) {
sqlite.executeSqlCeshi(sql).then((value) => {
if (value.length > 0) {
this.tabsArr.push({
shiftArr: value
})
}
}).catch((error) => {
// 在reject时执行的回调函数
console.error(error);
});
},
executeSql222(sTime, eTime, pwcTypeName) {
let sql = `SELECT * FROM workMessageRespList
WHERE workStartTime>='${sTime}'
and workEndTime<='${eTime}'
and workMessageRespList.vtpId='${this.vtpId}'
and workMessageRespList.pwcTypeName='${pwcTypeName}';`
sqlite.executeSqlCeshi(sql).then((value) => {
this.gbArr.push(...value)
this.shiftInfo.forEach((i, index) => {
this.$set(i, "infoArr", [])
this.gbArr.forEach((v, index2) => {
if (i.pwcTypeName == v.pwcTypeName) {
this.aaa(v.webId, index)
}
})
})
}).catch((error) => {
// 在reject时执行的回调函数
console.error(error);
});
},
aaa(id, index) {
let sql =
`SELECT * FROM workMessageRespInfoList WHERE workMessageRespInfoList.contactId = '${id}'`
sqlite.executeSqlCeshi(sql).then((value) => {
// this.$set(this.gbArr[index], "infoArr", value)
this.shiftInfo[index].infoArr.push(...value)
}).catch((error) => {
// 在reject时执行的回调函数
console.error(error);
});
},
// 查翻仓信息
executeSql3(sql) {
sqlite.executeSqlCeshi(sql).then((value) => {
if (value.length > 0) {
this.fcList.push(...value)
}
this.fcList = api.arrFrom(this.fcList, "webId")
}).catch((error) => {
// 在reject时执行的回调函数
console.error(error);
});
},
// 查普通工人信息
executeSql4(sql) {
sqlite.executeSqlCeshi(sql).then((value) => {
// 在resolve时执行的回调函数
if (value.length > 0) {
this.PTGR.push(...value)
}
}).catch((error) => {
// 在reject时执行的回调函数
console.error(error);
});
},
// 查技术工人信息
executeSql7(sql) {
sqlite.executeSqlCeshi(sql).then((value) => {
// 在resolve时执行的回调函数
if (value.length > 0) {
this.JSGR.push(...value)
}
}).catch((error) => {
// 在reject时执行的回调函数
console.error(error);
});
},
// 人员信息作业时间
executeSql8(sql) {
sqlite.executeSqlCeshi(sql).then((value) => {
// 在resolve时执行的回调函数
if (value.length > 0) {
this.RYSJ.push(...value)
}
}).catch((error) => {
// 在reject时执行的回调函数
console.error(error);
});
},
// 查人员信息
executeSql6(sql) {
sqlite.executeSqlCeshi(sql).then((value) => {
// 在resolve时执行的回调函数
console.log('value', value);
if (value.length > 0) {
this.peopleList.push(...value)
}
this.peopleList = api.arrFrom(this.peopleList, "pmeId")
}).catch((error) => {
// 在reject时执行的回调函数
console.error(error);
});
},
// 查单证签字表
executeSql5() {
let sql = `select * from workSignTable WHERE bizId = '${this.dateId}';`
sqlite.executeSqlCeshi(sql).then((value) => {
// 在resolve时执行的回调函数
let zdyList = []
let czList = []
if (value.length > 0) {
value.forEach(v => {
if (v.sort == 0) {
this.zdySign = {
url: v.signFile,
id: v.webId
}
zdyList.push(v)
} else {
this.czSign = {
url: v.signFile,
id: v.webId
}
czList.push(v)
}
})
}
if (zdyList.length == 0) {
this.zdySign = {
url: "",
id: ""
}
}
if (czList.length == 0) {
this.czSign = {
url: "",
id: ""
}
}
}).catch((error) => {
// 在reject时执行的回调函数
console.error(error);
});
},
// 删除当前签名
delSign(id) {
this.$refs.delPopup.open()
this.delId = id
},
// 弹框删除
delConfirm() {
let sql = `DELETE FROM workSignTable WHERE webId = '${this.delId}';`
sqlite.executeSqlCeshi(sql).then((value) => {
// 在resolve时执行的回调函数
this.executeSql5()
}).catch((error) => {
// 在reject时执行的回调函数
console.error(error);
});
},
// 点击标签
tabsChange(e) {
this.tabsValue = e.value
this.shiftList = this.tabsList[e.value].shiftArr
this.dateId = this.tabsList[e.value].shiftArr[0].workEndTime.slice(0, 10)
this.vvyName = this.tabsList[e.value].shiftArr[0].vvyName
this.gbArr = []
this.tabsArr = []
this.tabsList = []
this.shiftList = []
this.shiftInf = []
this.fcArr1 = []
this.fcArr2 = []
this.fcArr3 = []
this.qtArr = []
this.peopleArr = []
this.tqInfo = ""
this.zyzsInfo = 0
this.dcrsInfo = 0
this.bwArr = []
this.shiftInfo1 = []
this.shiftInfo2 = []
this.shiftInfo3 = []
this.bwInfo = ""
this.executeSql2(0)
this.executeSql5()
setTimeout(() => {
this.shiftInfo.forEach(v => {
let arr = api.arrFrom(v.infoArr, "webId")
this.$set(v, "infoArr", arr)
if(v.pwcTypeName == '一工班') {
this.shiftInfo1.push(v)
} else if(v.pwcTypeName == '二工班'){
this.shiftInfo2.push(v)
} else if(v.pwcTypeName == '三工班') {
this.shiftInfo3.push(v)
}
})
},300)
this.fcList.forEach(v => {
let endT = v.retallyEndTime.slice(0, 10)
if (endT == this.dateId) {
if (v.retallyTypeName == '舱内翻') {
this.fcArr1.push(v)
} else if (v.retallyTypeName == '舱外翻') {
this.fcArr2.push(v)
} else if (v.retallyTypeName == '货物重装') {
this.fcArr3.push(v)
}
}
})
this.qtList.forEach(v => {
let endT = ""
if (v.endTm != "") {
endT = v.endTm.slice(0, 10)
} else if (v.endTmPt != "") {
endT = v.endTmPt.slice(0, 10)
}
if (endT == this.dateId) {
this.qtArr.push(v)
}
})
if (this.qtArr.length == 0) {
this.qtArr.push({})
}
this.peopleList.forEach(v => {
let endT = v.jobEndTime.slice(0, 10)
if (endT == this.dateId) {
this.peopleArr.push(v)
}
})
this.tqInfo = this.peopleArr[0].weatherType
this.peopleArr.forEach(v => {
this.zyzsInfo += Number(v.workSuite)
this.dcrsInfo += Number(v.shipPerson)
this.bwArr.push(v.bthIdName)
})
this.bwInfo = this.bwArr.join(",")
},
// 点击签名
togoSign(signType) {
let obj = {
id: this.dateId,
url: "mixSign",
signType: Number(signType), // 0 指导员 1 船长/大副
signTable: "2",
tabsValue: this.tabsValue,
vvyId: this.vvyId,
}
const params = encodeURIComponent(JSON.stringify(obj));
uni.navigateTo({
url: `/pages/shipWork/sign?params=${params}`
})
},
}
}
</script>
<style lang="less" scoped>
@import "../../style/css/main-dz.css";
.contentFixedr {
margin-top: 68px !important;
/deep/.tab .tab-bar {
height: 66px;
line-height: 66px;
position: relative;
}
/deep/.tab .tab-bar-item {
height: 66px;
line-height: 66px;
font-size: 18px;
color: #23262E;
font-weight: bold;
font-family: PingFangSC-Semibold;
padding: 0 24px !important;
}
/deep/.tab .tab-bar-item.active {
color: #0067CF
}
/deep/.tab .tab-bar-item .active-line {
color: #0067CF;
width: 54px;
height: 4px;
}
/deep/.tab-pane {
width: 100%;
}
/deep/.tab .tab-cont {
padding-bottom: 0;
}
}
.container {
padding: 0px 16px;
background: #FFFFFF;
border-radius: 8px;
.head {
height: 85px;
padding: 16px 0;
margin: 0 8px;
border-bottom: 1px solid #999;
display: flex;
justify-content: space-between;
.rightHead {
display: flex;
flex-direction: column;
justify-content: center;
text-align: right;
.p {
font-size: 22px;
color: #0052A4;
font-weight: bold;
}
text {
font-size: 14px;
color: #666666;
}
}
}
.headTItle {
display: flex;
justify-content: space-around;
padding: 24px 0;
margin: 0 8px;
border-bottom: 1px solid #EEEEEE;
.title {
flex: 3;
text-align: center;
.p {
font-size: 24px;
color: #23262E;
font-weight: bold;
}
text {
font-size: 18px;
color: #23262E;
}
}
.titleLeft {
flex: 1;
}
.titleRight {
flex: 1;
display: flex;
flex-direction: column;
justify-content: flex-end;
text:first-child {
font-size: 14px;
color: #666666;
}
text:last-child {
font-size: 18px;
color: #0052A4;
font-weight: bold;
}
}
}
.ul {
display: flex;
justify-content: flex-start;
flex-wrap: wrap;
padding: 15px 0;
.li {
width: 33.33%;
display: flex;
justify-content: center;
text {
color: #23262E;
font-weight: bold;
font-size: 14px;
width: 50%;
}
text:first-child {
text-align: right;
}
}
.li:last-child {
width: 66.67%;
text {
width: 75%;
}
text:first-child {
width: 25%;
}
}
}
table {
margin-bottom: 0 !important;
}
}
.bo_r {
border-right: 1px solid #000;
}
.bo_b {
border-bottom: 1px solid #000;
}
.bo_l {
border-left: 1px solid #000;
}
.cellX {
display: flex;
}
.rowOne {
width: 100%;
height: 60px;
display: flex;
justify-content: space-between;
border: 1px solid #000;
border-bottom: 0;
text-align: center;
background-color: #e9e9e9;
.left {
width: 55%;
display: flex;
.cell {
width: 25%;
border-right: 1px solid #000;
}
.cellY {
display: flex;
flex-direction: column;
.item {
height: 30px;
line-height: 30px;
}
.cellX {
height: 30px;
line-height: 30px;
display: flex;
justify-content: space-around;
view {
width: 50%;
}
}
}
.cellB {
width: 50%;
view {
height: 30px;
line-height: 30px;
}
}
}
.right {
width: 45%;
text-align: center;
.itemLeft {
width: 30%;
line-height: 60px;
}
.cellY {
height: 30px;
line-height: 30px;
display: flex;
flex-direction: column;
}
.itemRight {
width: 70%;
text {
width: 33.3333%;
}
}
}
}
.rowTwo {
width: 100%;
display: flex;
justify-content: space-between;
border: 1px solid #000;
border-bottom: 0;
text-align: center;
.left {
width: 55%;
display: flex;
min-height: 30px;
line-height: 30px;
.cell {
width: 25%;
vertical-align: middle;
}
.cellX {
display: flex;
justify-content: space-between;
.item {
width: 50%;
}
}
.cellY {
width: 50%;
text-align: center;
.item {
width: 100%;
line-height: 30px;
border-bottom: 1px solid #000;
}
.item:last-child {
border-bottom: 0;
}
}
}
.right {
width: 45%;
line-height: 30px;
.itemLeft {
width: 30%;
}
.itemRight {
width: 70%;
position: relative;
.gezi {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
display: flex;
view {
width: 33.33%;
border-right: 1px solid #000;
}
view:last-child {
width: 33.34%;
border-right: 0;
}
}
.itemList {
width: 100%;
height: auto;
display: flex;
.item {
width: 33.3333%;
}
}
.itemList:last-child {
border: 0;
}
}
}
}
.rowThree {
display: flex;
border: 1px solid #000;
border-bottom: 0;
text-align: center;
.title {
// 0.55*0.25
width: 13.75%;
line-height: 30px;
}
.fclist {
display: flex;
width: 86.25%;
flex-direction: column;
.fcbt {
line-height: 30px;
text-align: center;
border-bottom: 1px solid #000;
.bt {
display: flex;
.kind {
width: 15.96%;
}
.ceY {
width: 84.04%;
.concat {
width: 100%;
min-height: 30px;
display: flex;
border-bottom: 1px solid #000;
.date {
width: 37.84%;
}
.weight {
width: 62.16%;
}
}
.concat:last-child {
border-bottom: 0;
}
}
.date {
width: 31.8%;
display: flex;
.item {
width: 50%;
display: flex;
.sz {
width: 50%;
}
}
.cellY {
width: 100%;
.cellX view {
width: 50%;
}
}
}
.weight {
width: 52.24%;
.text {
width: 50%;
}
.cellX view {
width: 50%;
}
}
}
}
}
}
.rowFour {
text-align: center;
line-height: 30px;
.row {
display: flex;
height: 30px;
width: 100%;
border-bottom: 1px solid #000;
}
.rowC {
display: flex;
height: 60px;
width: 100%;
border-bottom: 1px solid #000;
.date {
.sz {
height: 30px;
width: 100%;
border-right: 1px solid #000;
}
}
}
.title {
// 0.55*0.25
width: 13.75%;
}
.kind {
width: 13.78%;
}
.rownr {
// 0.55*0.25
width: 86.25%;
}
.date {
width: 27.45%;
display: flex;
justify-content: space-around;
view {
width: 25%;
}
}
.weight {
width: 45%;
text-align: center;
.sz {
height: 30px;
}
}
}
.headZx {
background: #E9E9E9;
}
.t-zx td {
height: 36px;
}
/deep/.uni-scroll-view-content {
display: flex;
}
.rowBox {
width: calc(100% - 1px);
display: flex;
border: 1px solid #000;
box-sizing: border-box;
.name {
border-right: 1px solid #000;
width: 200px;
text-align: center;
display: flex;
flex-direction: column;
justify-content: center;
padding: 10px;
}
.time {
border-right: 1px solid #000;
width: 203px;
text-align: center;
display: flex;
flex-direction: column;
justify-content: center;
}
.infoBox {
width: calc(100% - 476px);
display: flex;
flex-direction: column;
justify-items: center;
.iBox {
flex: 1;
display: flex;
border-top: 1px solid #000;
border-bottom: 1px solid #000;
.carCss {
border-right: 1px solid #000;
width: 209px;
text-align: center;
display: flex;
flex-direction: column;
justify-content: center;
}
.remark {
border-right: 1px solid #000;
width: 63px;
text-align: center;
display: flex;
flex-direction: column;
justify-content: center;
}
.gx {
border-right: 1px solid #000;
width: 61px;
text-align: center;
display: flex;
flex-direction: column;
justify-content: center;
}
.ro {
width: 87.5px;
}
.pr {
width: 139px;
}
.ot {
width: 90px;
border: none;
}
}
.iBox:first-child {
border-top: none;
}
.iBox:last-child {
border-bottom: none;
}
}
}
.signBox {
width: 100%;
height: 66px;
background: #FFFFFF;
border: 1px solid #E1E5ED;
box-shadow: 0 -1px 4px 0 rgba(0, 0, 0, 0.05);
display: flex;
justify-content: flex-end;
padding: 0 70px;
.row {
width: 1px;
height: 30px;
background-color: #ccc;
margin-top: 18px;
}
.signContent {
display: flex;
margin: 0 54px;
.signTitle {
display: flex;
flex-direction: column;
justify-content: center;
text-align: right;
}
.signInfo {
display: flex;
flex-direction: column;
justify-content: center;
font-size: 18px;
color: #0052A4;
margin-left: 16px;
}
.signImg {
width: 100px;
height: 54px;
margin-top: 5px;
margin-left: 10px;
}
}
.signContent:last-child {
margin-right: 0;
}
}
</style>