|
|
@ -16,11 +16,13 @@
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div class="content">
|
|
|
|
<div class="content">
|
|
|
|
<div class="row">
|
|
|
|
<div class="row">
|
|
|
|
<img src="../../../../assets/icons/u1041.svg" alt="">船名/航次:{{ item.fromShip.vessel }} / {{ item.fromShip.voyNo }}
|
|
|
|
<img src="../../../../assets/icons/u1041.svg" alt="">船名/航次:{{ item.fromShip.vessel }} / {{
|
|
|
|
|
|
|
|
item.fromShip.voyNo }}
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div class="row">
|
|
|
|
<div class="row">
|
|
|
|
<img src="../../../../assets/icons/u1043.svg" alt="">{{ item.fromShip.port }}
|
|
|
|
<img src="../../../../assets/icons/u1043.svg" alt="">{{ item.fromShip.port }}
|
|
|
|
<img src="../../../../assets/icons/u1044.svg" style="margin-left: 20px;" alt="">ETD:{{ item.fromShip.etd }}
|
|
|
|
<img src="../../../../assets/icons/u1044.svg" style="margin-left: 20px;" alt="">ETD:{{ item.fromShip.etd
|
|
|
|
|
|
|
|
}}
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div class="row">
|
|
|
|
<div class="row">
|
|
|
|
<img src="../../../../assets/icons/u1046.svg" alt="">{{ item.fromShip.terminal }}
|
|
|
|
<img src="../../../../assets/icons/u1046.svg" alt="">{{ item.fromShip.terminal }}
|
|
|
@ -391,6 +393,51 @@
|
|
|
|
<a-modal title="最后期限" width="600px" @ok="handleSaveDate" @cancel="dateFlag = false" v-model="dateFlag">
|
|
|
|
<a-modal title="最后期限" width="600px" @ok="handleSaveDate" @cancel="dateFlag = false" v-model="dateFlag">
|
|
|
|
<a-date-picker show-time v-model="manualDeadLineDate" />
|
|
|
|
<a-date-picker show-time v-model="manualDeadLineDate" />
|
|
|
|
</a-modal>
|
|
|
|
</a-modal>
|
|
|
|
|
|
|
|
<a-modal title="发送通知" :maskClosable="false" width="1200px" @cancel="sendFlag = false" v-model="sendFlag">
|
|
|
|
|
|
|
|
<a-spin :spinning="sendLoad">
|
|
|
|
|
|
|
|
<div style="display: flex;align-content: center;">
|
|
|
|
|
|
|
|
<div class="send-left" style="margin-right: 30px;">
|
|
|
|
|
|
|
|
<a-radio-group @change="handleChangeRadio" v-model="templateId">
|
|
|
|
|
|
|
|
<div style="margin-bottom: 10px;" v-for="(item, index) in tempList" :key="index">
|
|
|
|
|
|
|
|
<a-radio :value="item.id">
|
|
|
|
|
|
|
|
{{ item.displayName }}
|
|
|
|
|
|
|
|
</a-radio>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
</a-radio-group>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<div class="right">
|
|
|
|
|
|
|
|
<div class="top" style="color: black">
|
|
|
|
|
|
|
|
<span style="font-weight: bold;margin-right: 20px">原船</span>
|
|
|
|
|
|
|
|
<span>船名/航次:{{ sendShip.fromShip.vessel }} / {{ sendShip.fromShip.voyNo }}</span>
|
|
|
|
|
|
|
|
<span style="margin: 0 10px;">ETD:{{ sendShip.fromShip.etd ? sendShip.fromShip.etd.substring(0, 10) : ''
|
|
|
|
|
|
|
|
}}</span>
|
|
|
|
|
|
|
|
<span>{{ sendShip.fromShip.terminal }}</span>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<a-radio-group
|
|
|
|
|
|
|
|
@change="handleChangeRadio1"
|
|
|
|
|
|
|
|
v-model="toShipPKId"
|
|
|
|
|
|
|
|
style="margin-top: 15px"
|
|
|
|
|
|
|
|
button-style="solid">
|
|
|
|
|
|
|
|
<a-radio-button v-for="(toData, index) in sendShip.toShipList" :key="index" :value="toData.pkId">
|
|
|
|
|
|
|
|
<div style="font-size: 13px;line-height: 20px;">新船:{{ index + 1 }}VslCode:{{ toData.vslCode }} String:{{
|
|
|
|
|
|
|
|
toData.shipString }}</div>
|
|
|
|
|
|
|
|
<div style="font-size: 13px;line-height: 20px;">船名/航次:{{ toData.vessel }} / {{ toData.voyNo }}</div>
|
|
|
|
|
|
|
|
<div style="font-size: 13px;line-height: 20px;">{{ toData.terminal }}</div>
|
|
|
|
|
|
|
|
<div style="font-size: 13px;line-height: 20px;">ETD:{{ toData.etd ? toData.etd.substring(0, 10) : '' }}
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
</a-radio-button>
|
|
|
|
|
|
|
|
</a-radio-group>
|
|
|
|
|
|
|
|
<div style="font-size: 15px;font-weight: bold;margin-top: 20px;border-bottom: 1px solid rgb(203 198 198);">
|
|
|
|
|
|
|
|
预甩通知</div>
|
|
|
|
|
|
|
|
<div style="margin-top: 20px;" v-html="sendHtml"></div>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
</a-spin>
|
|
|
|
|
|
|
|
<template slot="footer">
|
|
|
|
|
|
|
|
<a-button type="danger" @click="sendFlag = false">取消</a-button>
|
|
|
|
|
|
|
|
<a-button type="primary" @click="handleSaveDate">发送</a-button>
|
|
|
|
|
|
|
|
</template>
|
|
|
|
|
|
|
|
</a-modal>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</template>
|
|
|
|
</template>
|
|
|
|
<script>
|
|
|
|
<script>
|
|
|
@ -413,25 +460,42 @@ import {
|
|
|
|
SaveDetai1Container,
|
|
|
|
SaveDetai1Container,
|
|
|
|
PushShareLink,
|
|
|
|
PushShareLink,
|
|
|
|
GenShareLink,
|
|
|
|
GenShareLink,
|
|
|
|
GetUserFeedBack
|
|
|
|
GetUserFeedBack,
|
|
|
|
|
|
|
|
GetToShipSelect,
|
|
|
|
|
|
|
|
GetRollingNominationNoticeReview,
|
|
|
|
|
|
|
|
SendRollingNominationNotice
|
|
|
|
} from '@/api/modular/main/TaskmanageList'
|
|
|
|
} from '@/api/modular/main/TaskmanageList'
|
|
|
|
import { mapGetters } from 'vuex'
|
|
|
|
import { mapGetters } from 'vuex'
|
|
|
|
import { DjyCustomerSuggest, GetSysUserPage, DjyCustomerContacts } from '@/api/modular/main/BookingLedger'
|
|
|
|
import {
|
|
|
|
|
|
|
|
DjyCustomerSuggest,
|
|
|
|
|
|
|
|
GetSysUserPage,
|
|
|
|
|
|
|
|
DjyCustomerContacts,
|
|
|
|
|
|
|
|
BookingOrderPrintTemplateWithHistoryList
|
|
|
|
|
|
|
|
} from '@/api/modular/main/BookingLedger'
|
|
|
|
export default {
|
|
|
|
export default {
|
|
|
|
data() {
|
|
|
|
data() {
|
|
|
|
return {
|
|
|
|
return {
|
|
|
|
CustomerList: [],
|
|
|
|
CustomerList: [],
|
|
|
|
CreateData: {},
|
|
|
|
CreateData: {},
|
|
|
|
ctnCode: '',
|
|
|
|
ctnCode: '',
|
|
|
|
|
|
|
|
sendFlag: false,
|
|
|
|
|
|
|
|
toShipPKId: '',
|
|
|
|
manualDeadLineDate: '',
|
|
|
|
manualDeadLineDate: '',
|
|
|
|
|
|
|
|
templateId: 0,
|
|
|
|
ctnChangeFlag: false,
|
|
|
|
ctnChangeFlag: false,
|
|
|
|
UserId: '',
|
|
|
|
UserId: '',
|
|
|
|
confirmDeadLine: '',
|
|
|
|
confirmDeadLine: '',
|
|
|
|
dateFlag: false,
|
|
|
|
dateFlag: false,
|
|
|
|
|
|
|
|
sendLoad: false,
|
|
|
|
|
|
|
|
tempList: [],
|
|
|
|
fromToList: [],
|
|
|
|
fromToList: [],
|
|
|
|
selectedRowKeys: [],
|
|
|
|
selectedRowKeys: [],
|
|
|
|
carrierId: '',
|
|
|
|
carrierId: '',
|
|
|
|
value: '',
|
|
|
|
value: '',
|
|
|
|
|
|
|
|
sendShip: {
|
|
|
|
|
|
|
|
fromShip: {},
|
|
|
|
|
|
|
|
toShipList: []
|
|
|
|
|
|
|
|
},
|
|
|
|
selectedRowKeysTable: [],
|
|
|
|
selectedRowKeysTable: [],
|
|
|
|
getloadDetailList: [],
|
|
|
|
getloadDetailList: [],
|
|
|
|
tableLoad: false,
|
|
|
|
tableLoad: false,
|
|
|
@ -778,6 +842,7 @@ export default {
|
|
|
|
ctnFlag: false,
|
|
|
|
ctnFlag: false,
|
|
|
|
userRow: '',
|
|
|
|
userRow: '',
|
|
|
|
userFlag: false,
|
|
|
|
userFlag: false,
|
|
|
|
|
|
|
|
sendHtml: '',
|
|
|
|
totalCtn: '',
|
|
|
|
totalCtn: '',
|
|
|
|
rollingPlanList: [],
|
|
|
|
rollingPlanList: [],
|
|
|
|
nominationId: '',
|
|
|
|
nominationId: '',
|
|
|
@ -847,15 +912,55 @@ export default {
|
|
|
|
})
|
|
|
|
})
|
|
|
|
},
|
|
|
|
},
|
|
|
|
handleSendNotice() {
|
|
|
|
handleSendNotice() {
|
|
|
|
const newList = Array.from(new Set(this.selectedRowKeysTable))
|
|
|
|
const data = {
|
|
|
|
console.log(this.selectedRowKeysTable, newList)
|
|
|
|
cateCode: 'rolling_nomination_notice_template',
|
|
|
|
PushShareLink(newList).then(res => {
|
|
|
|
printType: 20
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
this.sendFlag = true
|
|
|
|
|
|
|
|
this.sendLoad = true
|
|
|
|
|
|
|
|
const request1 = BookingOrderPrintTemplateWithHistoryList(data);
|
|
|
|
|
|
|
|
const request2 = GetToShipSelect({ taskPkId: this.$route.query.taskPKId });
|
|
|
|
|
|
|
|
Promise.all([request1, request2])
|
|
|
|
|
|
|
|
.then(([res1, res2]) => {
|
|
|
|
|
|
|
|
if (res1.success) {
|
|
|
|
|
|
|
|
this.tempList = res1.data;
|
|
|
|
|
|
|
|
if (res1.data.length > 0) {
|
|
|
|
|
|
|
|
this.templateId = res1.data[0].id;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
this.$message.error(res1.message);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (res2.data.succ) {
|
|
|
|
|
|
|
|
if (res2.data.ext.length > 0) {
|
|
|
|
|
|
|
|
this.sendShip = res2.data.ext[0];
|
|
|
|
|
|
|
|
if (res2.data.ext[0].toShipList.length > 0) {
|
|
|
|
|
|
|
|
this.toShipPKId = res2.data.ext[0].toShipList[0].pkId;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
this.sendShip = {};
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
this.$message.error(res2.data.msg);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
const data1 = {
|
|
|
|
|
|
|
|
taskId: this.$route.query.taskPKId,
|
|
|
|
|
|
|
|
templateId: this.templateId,
|
|
|
|
|
|
|
|
fromShipPKId: this.sendShip.fromShip.pkId,
|
|
|
|
|
|
|
|
toShipPKId: this.toShipPKId
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
GetRollingNominationNoticeReview(data1).then(res => {
|
|
|
|
|
|
|
|
this.sendLoad = false;
|
|
|
|
if (res.data.succ) {
|
|
|
|
if (res.data.succ) {
|
|
|
|
this.$message.success('操作成功')
|
|
|
|
this.sendHtml = res.data.ext
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
this.$message.error(res.data.msg)
|
|
|
|
this.$message.error(res.data.msg)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
})
|
|
|
|
})
|
|
|
|
|
|
|
|
})
|
|
|
|
|
|
|
|
.catch(error => {
|
|
|
|
|
|
|
|
console.error('Error fetching data:', error);
|
|
|
|
|
|
|
|
});
|
|
|
|
},
|
|
|
|
},
|
|
|
|
handleRefshPage() {
|
|
|
|
handleRefshPage() {
|
|
|
|
this.getList()
|
|
|
|
this.getList()
|
|
|
@ -890,26 +995,29 @@ export default {
|
|
|
|
onSelectChangeTable(selectedRowKeys) {
|
|
|
|
onSelectChangeTable(selectedRowKeys) {
|
|
|
|
this.selectedRowKeysTable = selectedRowKeys;
|
|
|
|
this.selectedRowKeysTable = selectedRowKeys;
|
|
|
|
},
|
|
|
|
},
|
|
|
|
|
|
|
|
handleClick(index) {
|
|
|
|
|
|
|
|
this.sendShip.toShipList.forEach(item => {
|
|
|
|
|
|
|
|
item.active = false
|
|
|
|
|
|
|
|
})
|
|
|
|
|
|
|
|
this.sendShip.toShipList[index].active = true
|
|
|
|
|
|
|
|
this.$forceUpdate()
|
|
|
|
|
|
|
|
},
|
|
|
|
handleSaveDate() {
|
|
|
|
handleSaveDate() {
|
|
|
|
if (!this.manualDeadLineDate) {
|
|
|
|
|
|
|
|
this.$message.warning('请先选择')
|
|
|
|
|
|
|
|
return false
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
this.tableLoad = true
|
|
|
|
|
|
|
|
const data = {
|
|
|
|
const data = {
|
|
|
|
dispatchBatchId: this.dateRow.batchId,
|
|
|
|
taskId: this.$route.query.taskPKId,
|
|
|
|
isRenew: true,
|
|
|
|
templateId: this.templateId,
|
|
|
|
manualDeadLineDate: this.manualDeadLineDate
|
|
|
|
fromShipPKId: this.sendShip.fromShip.pkId,
|
|
|
|
|
|
|
|
toShipPKId: this.toShipPKId
|
|
|
|
}
|
|
|
|
}
|
|
|
|
GenShareLink(data).then(res => {
|
|
|
|
this.sendLoad = true
|
|
|
|
|
|
|
|
SendRollingNominationNotice(data).then(res => {
|
|
|
|
if (res.data.succ) {
|
|
|
|
if (res.data.succ) {
|
|
|
|
this.$message.success('操作成功')
|
|
|
|
this.$message.success('发送成功')
|
|
|
|
this.dateFlag = false
|
|
|
|
this.sendFlag = false
|
|
|
|
this.getList()
|
|
|
|
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
this.$message.error(res.data.msg)
|
|
|
|
this.$message.error(res.data.msg)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
this.tableLoad = false
|
|
|
|
this.sendLoad = false
|
|
|
|
})
|
|
|
|
})
|
|
|
|
},
|
|
|
|
},
|
|
|
|
mergeCells(text, data, key, index) {
|
|
|
|
mergeCells(text, data, key, index) {
|
|
|
@ -1087,6 +1195,42 @@ export default {
|
|
|
|
this.spinning = false
|
|
|
|
this.spinning = false
|
|
|
|
})
|
|
|
|
})
|
|
|
|
},
|
|
|
|
},
|
|
|
|
|
|
|
|
handleChangeRadio(val) {
|
|
|
|
|
|
|
|
const data1 = {
|
|
|
|
|
|
|
|
taskId: this.$route.query.taskPKId,
|
|
|
|
|
|
|
|
templateId: val.target.value,
|
|
|
|
|
|
|
|
fromShipPKId: this.sendShip.fromShip.pkId,
|
|
|
|
|
|
|
|
toShipPKId: this.toShipPKId
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
this.sendLoad = true
|
|
|
|
|
|
|
|
GetRollingNominationNoticeReview(data1).then(res => {
|
|
|
|
|
|
|
|
this.sendLoad = false;
|
|
|
|
|
|
|
|
if (res.data.succ) {
|
|
|
|
|
|
|
|
this.sendHtml = res.data.ext
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
this.$message.error(res.data.msg)
|
|
|
|
|
|
|
|
this.sendHtml = ''
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
})
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
handleChangeRadio1(val) {
|
|
|
|
|
|
|
|
const data1 = {
|
|
|
|
|
|
|
|
taskId: this.$route.query.taskPKId,
|
|
|
|
|
|
|
|
templateId: this.templateId,
|
|
|
|
|
|
|
|
fromShipPKId: this.sendShip.fromShip.pkId,
|
|
|
|
|
|
|
|
toShipPKId: val.target.value
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
this.sendLoad = true
|
|
|
|
|
|
|
|
GetRollingNominationNoticeReview(data1).then(res => {
|
|
|
|
|
|
|
|
this.sendLoad = false;
|
|
|
|
|
|
|
|
if (res.data.succ) {
|
|
|
|
|
|
|
|
this.sendHtml = res.data.ext
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
this.$message.error(res.data.msg)
|
|
|
|
|
|
|
|
this.sendHtml = ''
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
})
|
|
|
|
|
|
|
|
},
|
|
|
|
handleCopy(row) {
|
|
|
|
handleCopy(row) {
|
|
|
|
this.tableLoad = true
|
|
|
|
this.tableLoad = true
|
|
|
|
TaskManageRolingWominationGetUrl({ dispatchBatchId: row.batchId }).then(res => {
|
|
|
|
TaskManageRolingWominationGetUrl({ dispatchBatchId: row.batchId }).then(res => {
|
|
|
@ -1249,6 +1393,7 @@ export default {
|
|
|
|
display: flex;
|
|
|
|
display: flex;
|
|
|
|
align-items: center;
|
|
|
|
align-items: center;
|
|
|
|
margin-top: 15px;
|
|
|
|
margin-top: 15px;
|
|
|
|
|
|
|
|
|
|
|
|
.box {
|
|
|
|
.box {
|
|
|
|
|
|
|
|
|
|
|
|
.box-title {
|
|
|
|
.box-title {
|
|
|
@ -1280,7 +1425,6 @@ export default {
|
|
|
|
font-size: 13px;
|
|
|
|
font-size: 13px;
|
|
|
|
color: black;
|
|
|
|
color: black;
|
|
|
|
padding: 5px;
|
|
|
|
padding: 5px;
|
|
|
|
height: 88px;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
img {
|
|
|
|
img {
|
|
|
|
margin-right: 5px;
|
|
|
|
margin-right: 5px;
|
|
|
@ -1291,13 +1435,17 @@ export default {
|
|
|
|
align-items: center;
|
|
|
|
align-items: center;
|
|
|
|
margin-bottom: 5px;
|
|
|
|
margin-bottom: 5px;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
&.active {
|
|
|
|
|
|
|
|
border: 1px solid rgb(45, 45, 218);
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.middle {
|
|
|
|
.middle {
|
|
|
|
background: rgba(202, 249, 130, 1);
|
|
|
|
background: rgba(202, 249, 130, 1);
|
|
|
|
text-align: center;
|
|
|
|
text-align: center;
|
|
|
|
height: 88px;
|
|
|
|
height: 88px;
|
|
|
|
min-width:65px;
|
|
|
|
min-width: 65px;
|
|
|
|
font-size: 18px;
|
|
|
|
font-size: 18px;
|
|
|
|
margin-top: 31px;
|
|
|
|
margin-top: 31px;
|
|
|
|
line-height: 88px;
|
|
|
|
line-height: 88px;
|
|
|
@ -1307,7 +1455,7 @@ export default {
|
|
|
|
background: yellow;
|
|
|
|
background: yellow;
|
|
|
|
text-align: center;
|
|
|
|
text-align: center;
|
|
|
|
height: 88px;
|
|
|
|
height: 88px;
|
|
|
|
min-width:35px;
|
|
|
|
min-width: 35px;
|
|
|
|
font-size: 18px;
|
|
|
|
font-size: 18px;
|
|
|
|
margin-top: 31px;
|
|
|
|
margin-top: 31px;
|
|
|
|
line-height: 88px;
|
|
|
|
line-height: 88px;
|
|
|
@ -1400,4 +1548,13 @@ export default {
|
|
|
|
color: green;
|
|
|
|
color: green;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
.send-left {
|
|
|
|
|
|
|
|
border-right: 1px dashed rgb(185, 184, 184);
|
|
|
|
|
|
|
|
padding-right: 10px;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/deep/ .ant-radio-button-wrapper {
|
|
|
|
|
|
|
|
height: auto !important;
|
|
|
|
|
|
|
|
}
|
|
|
|
</style>
|
|
|
|
</style>
|
|
|
|