修改bug

master
sunzehua 7 months ago
parent 1cf6ff214d
commit 943e1c306c

12
.env

@ -1,9 +1,9 @@
NODE_ENV=production NODE_ENV=production
VUE_APP_PREVIEW=true VUE_APP_PREVIEW=true
# VUE_APP_TYPE = 'customer' # VUE_APP_TYPE = 'customer'
# VUE_APP_TYPE = 'hechuan' VUE_APP_TYPE = 'hechuan'
# VUE_APP_TYPE = 'yunyingduan' # VUE_APP_TYPE = 'yunyingduan'
VUE_APP_TYPE = 'gangjie' # VUE_APP_TYPE = 'gangjie'
# 打包部署的三个端 客户端customer 和川端hechuan 运营端djy # 打包部署的三个端 客户端customer 和川端hechuan 运营端djy
# 和川大简云正式 # 和川大简云正式
@ -11,8 +11,8 @@ VUE_APP_TYPE = 'gangjie'
# VUE_APP_SOCKET_BASE_URL=http://47.104.85.216:12345 # VUE_APP_SOCKET_BASE_URL=http://47.104.85.216:12345
# 和川大简云测试 # 和川大简云测试
# VUE_APP_API_BASE_URL=http://60.209.125.238:35100 VUE_APP_API_BASE_URL=http://60.209.125.238:35100
# VUE_APP_SOCKET_BASE_URL=http://60.209.125.238:35100 VUE_APP_SOCKET_BASE_URL=http://60.209.125.238:35100
# 客户端测试 # 客户端测试
# VUE_APP_API_BASE_URL=http://60.209.125.238:30813 # VUE_APP_API_BASE_URL=http://60.209.125.238:30813
@ -23,8 +23,8 @@ VUE_APP_TYPE = 'gangjie'
# VUE_APP_SOCKET_BASE_URL=http://60.209.125.238:30814 # VUE_APP_SOCKET_BASE_URL=http://60.209.125.238:30814
# 港捷 # 港捷
VUE_APP_API_BASE_URL=http://118.190.144.189:5001 # VUE_APP_API_BASE_URL=http://118.190.144.189:5001
VUE_APP_SOCKET_BASE_URL=http://118.190.144.189:5001 # VUE_APP_SOCKET_BASE_URL=http://118.190.144.189:5001
# 客户端正式 # 客户端正式
# VUE_APP_API_BASE_URL=http://118.190.144.189:6001 # VUE_APP_API_BASE_URL=http://118.190.144.189:6001

@ -0,0 +1,506 @@
<template>
<a-modal v-model="SlotVisible" title="生成方式选择" @ok="handleOk1" width="40%">
<a-spin :spinning="spinning">
<a-form class="Editing">
<a-radio-group v-model="CreateData.generateMethod" v-if="type == 'A'">
<a-radio value="UPD_BOOKING">
更新订舱
</a-radio>
<a-radio value="GEN_BOOKING_SLOT">
直接生成舱位和订舱
</a-radio>
<a-radio value="GEN_BOOKING">
只生成订舱
</a-radio>
<a-radio value="GEN_SLOT">
只生成舱位
</a-radio>
<a-radio value="GEN_EXIST_BOOKING">
匹配已有订舱
</a-radio>
</a-radio-group>
<!-- <a-checkbox style="margin-top: 10px;" v-model="CreateData.isDirectSend"></a-checkbox> -->
<a-row>
<a-col :span="16">
<a-form-item label="委托单位:" :label-col="formItemLayout.labelCol3" :wrapper-col="formItemLayout.wrapperCol3">
<a-select
show-search
v-model="CreateData.customerId"
:default-active-first-option="false"
:show-arrow="false"
:filter-option="false"
:not-found-content="null"
@search="SearchCustomer"
@change="ChangeCustomer">
<a-select-option v-for="(item, index) in CustomerList" :key="index" :value="item.id">
{{ item.shortName }}
</a-select-option>
</a-select>
</a-form-item>
</a-col>
<a-col :span="8">
<a-spin :spinning="fetching">
<a-form-item label="联系人:" :label-col="formItemLayout.labelCol2" :wrapper-col="formItemLayout.wrapperCol2">
<a-select
show-search
mode="multiple"
v-model="CreateData.customerContactId"
:default-active-first-option="false"
:show-arrow="false"
:filter-option="false"
:not-found-content="null"
@change="handleChangeUser"
@search="SearchUser">
<a-select-option v-for="item in customerByList" :key="item.id" :value="item.id">
{{ item.name }}
</a-select-option>
</a-select>
</a-form-item>
</a-spin>
</a-col>
</a-row>
<a-row style="padding-left: 20px;margin-bottom: 10px">
<span style="margin-right: 10px;" v-for="(item, index) in userInfoList" :key="index">
{{ item.name }} {{ item.email }}
</span>
</a-row>
<a-row>
<a-col :span="8">
<a-form-item label="销售:" :label-col="formItemLayout.labelCol2" :wrapper-col="formItemLayout.wrapperCol2">
<a-select
show-search
v-model="CreateData.saleId"
:default-active-first-option="false"
:show-arrow="false"
:filter-option="false"
:not-found-content="null"
@search="SearchUser"
@change="e => {
ChangeUser(e, 'saleName')
}
">
<a-select-option v-for="item in UserList" :key="item.id" :value="item.id">
{{ item.name }}
</a-select-option>
</a-select>
</a-form-item>
</a-col>
<a-col :span="8">
<a-form-item label="操作:" :label-col="formItemLayout.labelCol2" :wrapper-col="formItemLayout.wrapperCol2">
<a-select
show-search
v-model="CreateData.opId"
:default-active-first-option="false"
:show-arrow="false"
:filter-option="false"
:not-found-content="null"
@search="SearchUser"
@change="e => {
ChangeUser(e, 'opName')
}
">
<a-select-option v-for="item in UserList" :key="item.id" :value="item.id">
{{ item.name }}
</a-select-option>
</a-select>
</a-form-item>
</a-col>
<a-col :span="8">
<a-form-item label="单证:" :label-col="formItemLayout.labelCol2" :wrapper-col="formItemLayout.wrapperCol2">
<a-select
show-search
v-model="CreateData.docId"
:default-active-first-option="false"
:show-arrow="false"
:filter-option="false"
:not-found-content="null"
@search="SearchUser"
@change="e => {
ChangeUser(e, 'docName')
}
">
<a-select-option v-for="item in UserList" :key="item.id" :value="item.id">
{{ item.name }}
</a-select-option>
</a-select>
</a-form-item>
</a-col>
</a-row>
<a-row>
<a-col :span="8">
<a-form-item label="客服:" :label-col="formItemLayout.labelCol2" :wrapper-col="formItemLayout.wrapperCol2">
<a-select
show-search
v-model="CreateData.custserviceId"
:default-active-first-option="false"
:show-arrow="false"
:filter-option="false"
:not-found-content="null"
@search="SearchUser"
@change="e => {
ChangeUser(e, 'custserviceName')
}
">
<a-select-option v-for="item in UserList" :key="item.id" :value="item.id">
{{ item.name }}
</a-select-option>
</a-select>
</a-form-item>
</a-col>
<a-col :span="8">
<a-form-item label="航线操作:" :label-col="formItemLayout.labelCol2" :wrapper-col="formItemLayout.wrapperCol2">
<a-select
show-search
v-model="CreateData.routeID"
:default-active-first-option="false"
:show-arrow="false"
:filter-option="false"
:not-found-content="null"
@search="SearchUser"
@change="e => {
ChangeUser(e, 'route')
}
">
<a-select-option v-for="item in UserList" :key="item.id" :value="item.id">
{{ item.name }}
</a-select-option>
</a-select>
</a-form-item>
</a-col>
<a-col :span="8">
<a-form-item label="航线管理:" :label-col="formItemLayout.labelCol2" :wrapper-col="formItemLayout.wrapperCol2">
<a-select
show-search
v-model="CreateData.lineManageID"
:default-active-first-option="false"
:show-arrow="false"
:filter-option="false"
:not-found-content="null"
@search="SearchUser"
@change="e => {
ChangeUser(e, 'lineManage')
}
">
<a-select-option v-for="item in UserList" :key="item.id" :value="item.id">
{{ item.name }}
</a-select-option>
</a-select>
</a-form-item>
</a-col>
</a-row>
<a-row>
<a-col :span="16">
<a-form-item label="操作备注:" :label-col="formItemLayout.labelCol3" :wrapper-col="formItemLayout.wrapperCol3">
<a-input v-model="CreateData.czRemark" />
</a-form-item>
</a-col>
</a-row>
<a-row>
<a-col :span="16">
<a-form-item label="申请箱使:" :label-col="formItemLayout.labelCol3" :wrapper-col="formItemLayout.wrapperCol3">
<a-input v-model="CreateData.shenQingXiangShi" />
</a-form-item>
</a-col>
</a-row>
<a-row>
<a-col :span="16">
<a-form-item label="服务项目:" :label-col="formItemLayout.labelCol3" :wrapper-col="formItemLayout.wrapperCol3">
<div class="content">
<div
class="items"
v-for="(serive, sindex) in bookingServiceItem"
:key="sindex"
:class="{ active: serive.isYield }"
@click="saveService(serive)">
{{ serive.serviceProjectName }}
</div>
</div>
</a-form-item>
</a-col>
</a-row>
</a-form>
</a-spin>
</a-modal>
</template>
<script>
import { DjyCustomerSuggest, GetSysUserPage, DjyCustomerContacts, DjyCustomerdetail } from '@/api/modular/main/BookingLedger'
import { GetProjectList, CreateBookingAndSlot, GetBookingOrder } from '@/api/modular/main/TaskmanageList'
import { mapGetters } from 'vuex'
import { ValidateCreateBookingOrder, CreateBooking0rder } from '@/api/modular/main/CompanySiteaccount'
export default {
data() {
return {
SlotVisible: false,
formItemLayout: {
labelCol1: { span: 6 },
wrapperCol1: { span: 18 },
labelCol2: { span: 8 },
wrapperCol2: { span: 16 },
labelCol3: { span: 4 },
wrapperCol3: { span: 20 },
labelCol4: { span: 8 },
wrapperCol4: { span: 16 },
labelCol5: { span: 14 },
wrapperCol5: { span: 10 },
labelCol6: { span: 8 },
wrapperCol6: { span: 16 }
},
CreateData: {
saleId: '',
opId: '',
docId: '',
custserviceId: ''
},
CustomerList: [],
UserList: [],
fetching: false,
spinning: false,
customerByList: [],
type: '',
userInfoList: [],
slotEdit: {},
bookingServiceItem: []
};
},
computed: {
...mapGetters([
'userInfo'
])
},
mounted() {
DjyCustomerSuggest({ keyword: '', type: 'consignor' }).then(res => {
this.CustomerList = res.data.rows
})
GetProjectList().then(res => {
res.data.forEach(item => {
item.isYield = false
})
this.bookingServiceItem = res.data
})
GetSysUserPage().then(res => {
this.UserList = res.data
})
},
methods: {
handleOk1() {
if (this.type == 'A') {
this.handleOkA()
} else {
const projectList = []
this.bookingServiceItem.forEach(item => {
if (item.isYield) {
projectList.push(item.serviceProjectCode)
}
})
const ApiData = {
slotId: this.slotEdit.id,
projectList,
...this.CreateData
}
this.spinning = true
CreateBooking0rder(ApiData).then(res => {
if (res.success) {
this.SlotVisible = false
this.$message.success(res.message)
} else {
this.$message.error(res.message)
}
this.spinning = false
})
}
},
saveService(data) {
data.isYield = !data.isYield
},
init1() {
this.CreateData = {
generateMethod: 'GEN_BOOKING',
customerList: [],
isDirectSend: false
}
this.UserList.forEach(item => {
if (item.id == this.userInfo.id) {
this.CreateData.opId = item.id
this.CreateData.opName = item.name
}
})
this.type = 'A'
this.userInfoList = []
this.$forceUpdate()
this.SlotVisible = true
},
init(row) {
this.type = 'B'
this.userInfoList = []
this.$forceUpdate()
this.CreateData = {}
this.SlotVisible = true
this.spinning = true
ValidateCreateBookingOrder({ id: row.id }).then(res => {
if (res.success) {
this.slotEdit = row
} else {
this.$message.error(res.message)
}
this.spinning = false
})
},
init2() {
this.SlotVisible = true
this.spinning = true
this.userInfoList = []
this.$forceUpdate()
this.type = 'A'
GetBookingOrder({ taskPkId: this.$route.query.taskPKId }).then(res => {
if (res.data.ext) {
this.CreateData = {
generateMethod: 'UPD_BOOKING',
customerList: [],
isDirectSend: false,
...res.data.ext
}
} else {
this.CreateData = {
generateMethod: 'UPD_BOOKING',
customerList: [],
isDirectSend: false
}
}
this.spinning = false
})
},
handleOkA() {
const projectList = []
this.bookingServiceItem.forEach(item => {
if (item.isYield) {
projectList.push(item.serviceProjectCode)
}
})
const ApiData = {
bcTaskId: this.$route.query.taskPKId,
projectList,
...this.CreateData
}
if (this.CreateData.customerList.length > 0) {
const arr = []
this.customerByList.forEach(item => {
this.CreateData.customerList.forEach(ite => {
if (ite == item.id) {
arr.push({
customerContactId: item.id,
customerContactName: item.name
})
}
})
})
ApiData.customerContactList = arr
}
this.spinning = true
console.log(ApiData)
CreateBookingAndSlot(ApiData).then(res => {
if (res.data.succ) {
this.visible = false
this.$message.success(res.data.msg)
} else {
this.$message.error(res.data.msg)
}
this.spinning = false
})
},
SearchCustomer(e) {
DjyCustomerSuggest({ keyword: e, type: 'consignor' }).then(res => {
this.CustomerList = res.data.rows
})
},
handleChangeUser(val) {
const arr = []
this.customerByList.forEach(item => {
val.forEach(ite => {
if (item.id == ite) {
arr.push(item)
}
})
})
this.userInfoList = arr
},
SearchUser(e) {
GetSysUserPage({ name: e }).then(res => {
this.UserList = res.data
})
},
ChangeUser(e, Tname) {
this.UserList.forEach(item => {
if (item.id == e) {
this.CreateData[Tname] = item.name
}
})
},
ChangeCustomer(e) {
this.customerByList = []
this.CreateData.customerContactId = []
this.CustomerList.forEach(item => {
if (item.id == e) {
this.CreateData.customerName = item.shortName
}
})
this.fetching = true
// DjyCustomerContacts({ customerId: e }).then(res => {
// if (res.success) {
// this.customerByList = res.data
// } else {
// this.$message.error(res.message)
// }
// this.fetching = false
// })
DjyCustomerdetail({ id: e }).then(res => {
if (res.success) {
this.customerByList = res.data.contacts
if (res.data.custserviceid) {
this.CreateData.custserviceId = Number(res.data.custserviceid)
this.CreateData.custserviceName = res.data.doc
} else {
this.CreateData.custserviceId = ''
this.CreateData.custserviceName = ''
}
if (res.data.docid) {
this.CreateData.docId = Number(res.data.docid)
this.CreateData.docName = res.data.custservice
} else {
this.CreateData.docId = ''
this.CreateData.docName = ''
}
if (res.data.opid) {
this.CreateData.opId = Number(res.data.opid)
this.CreateData.opName = res.data.op
} else {
this.CreateData.opId = ''
this.CreateData.opName = ''
}
if (res.data.saleid) {
this.CreateData.saleId = Number(res.data.saleid)
this.CreateData.saleName = res.data.sale
} else {
this.CreateData.saleId = ''
this.CreateData.saleName = ''
}
this.$forceUpdate()
} else {
this.$message.error(res.message)
}
this.fetching = false
})
}
}
};
</script>
<style lang="less" scoped>
@import url('../../views/main/BookingLedger/detail/style/rightContent.less');
/deep/ .ant-form-item {
margin-bottom: 0px !important;
}
</style>

@ -69,6 +69,7 @@ export const sortMixin = {
const query = { const query = {
typeArr: [this.sortMixinForm.column, this.sortMixinForm.page, this.sortMixinForm.sort] typeArr: [this.sortMixinForm.column, this.sortMixinForm.page, this.sortMixinForm.sort]
} }
this.loading = true
DjyUserConfigMulti(this.$qs.stringify(query)).then(res => { DjyUserConfigMulti(this.$qs.stringify(query)).then(res => {
const arr = [] const arr = []
res.data.forEach(item => { res.data.forEach(item => {
@ -181,6 +182,8 @@ export const sortMixin = {
} }
this.queryParam.PageNo = currentPage this.queryParam.PageNo = currentPage
this.queryParam.PageSize = pageSize this.queryParam.PageSize = pageSize
this.queryParam.pageNo = currentPage
this.queryParam.pageSize = pageSize
this.getList() this.getList()
}, },
} }

@ -64,10 +64,11 @@
</div> </div>
</a-card> </a-card>
<a-card :bordered="false"> <a-card :bordered="false">
<div style="margin-bottom: 10px;display: flex;justify-content: space-between;"> <div style="margin-bottom: 10px;display: flex;justify-content: flex-end;">
<div> <div>
<a-button type="primary" @click="FnGetData"></a-button> <a-button type="primary" @click="getList"></a-button>
<a-button style="margin-left: 8px" @click="init"></a-button> <a-button style="margin-left: 8px" @click="init"></a-button>
<tableSort @columnChange="handleColumnChange" :columns="columns" :columnsAll="columnsAll"></tableSort>
</div> </div>
</div> </div>
@ -160,44 +161,38 @@ export default {
align: 'center', align: 'center',
width: '160', width: '160',
field: 'vessel', field: 'vessel',
fixed: 'left',
slots: { default: 'vessel' } slots: { default: 'vessel' }
}, },
{ {
title: '订舱抬头', title: '订舱抬头',
align: 'center', align: 'center',
width: '160', width: '160',
field: 'bookinG_PARTY', field: 'bookinG_PARTY'
fixed: 'left'
}, },
{ {
title: '合约号', title: '合约号',
align: 'center', align: 'center',
width: '160', width: '160',
field: 'contracT_NO', field: 'contracT_NO'
fixed: 'left'
}, },
{ {
title: '订舱方式', title: '订舱方式',
align: 'center', align: 'center',
width: '160', width: '160',
field: 'bookinG_SLOT_TYPE_NAME', field: 'bookinG_SLOT_TYPE_NAME'
fixed: 'left'
}, },
{ {
title: '总库存', title: '总库存',
align: 'center', align: 'center',
width: '100', width: '100',
field: 'totaL_ORDERS', field: 'totaL_ORDERS'
fixed: 'left'
}, },
{ {
title: '剩余库存', title: '剩余库存',
align: 'center', align: 'center',
width: '100', width: '100',
field: 'remaiN_CTNS_NUM', field: 'remaiN_CTNS_NUM',
slots: { default: 'remaiN_CTNS_NUM' }, slots: { default: 'remaiN_CTNS_NUM' }
fixed: 'left'
}, },
{ {
title: '取消库存', title: '取消库存',
@ -205,12 +200,133 @@ export default {
width: '100', width: '100',
field: 'portdischarge' field: 'portdischarge'
}, },
{
title: '发货地',
align: 'center',
width: '100',
field: 'placedelivery'
},
{
title: '收货地',
align: 'center',
width: '100',
field: 'placereceipt'
},
{
title: 'WEEK',
align: 'center',
width: '150',
field: 'weeK_AT'
},
{
title: '航线',
align: 'center',
width: '100',
field: 'lanename'
},
{
title: '箱型箱量',
align: 'center',
width: '100',
field: 'ctN_STAT'
},
{
title: '剩余箱型箱量',
align: 'center',
width: '110',
field: 'remaiN_CTN_STAT'
},
{
title: 'ETD',
align: 'center',
width: '100',
field: 'etd',
slots: { default: 'etd' }
},
{
title: 'ETA',
align: 'center',
width: '100',
field: 'eta',
slots: { default: 'eta' }
},
{
title: '船公司',
align: 'center',
width: '150',
field: 'carrier'
},
{
title: '操作',
align: 'center',
field: 'caozuo',
slots: { default: 'caozuo' },
width: 100,
fixed: 'right'
}
],
columnsAll: [
{
title: '船名/航次',
align: 'center',
width: '160',
field: 'vessel',
slots: { default: 'vessel' }
},
{
title: '订舱抬头',
align: 'center',
width: '160',
field: 'bookinG_PARTY'
},
{
title: '合约号',
align: 'center',
width: '160',
field: 'contracT_NO'
},
{
title: '订舱方式',
align: 'center',
width: '160',
field: 'bookinG_SLOT_TYPE_NAME'
},
{
title: '总库存',
align: 'center',
width: '100',
field: 'totaL_ORDERS'
},
{
title: '剩余库存',
align: 'center',
width: '100',
field: 'remaiN_CTNS_NUM',
slots: { default: 'remaiN_CTNS_NUM' }
},
{
title: '取消库存',
align: 'center',
width: '100',
field: 'portdischarge'
},
{
title: '发货地',
align: 'center',
width: '100',
field: 'placedelivery'
},
{
title: '收货地',
align: 'center',
width: '100',
field: 'placereceipt'
},
{ {
title: 'WEEK', title: 'WEEK',
align: 'center', align: 'center',
width: '150', width: '150',
field: 'weeK_AT', field: 'weeK_AT'
fixed: 'left'
}, },
{ {
title: '航线', title: '航线',
@ -266,7 +382,7 @@ export default {
}, },
created() { }, created() { },
mounted() { mounted() {
this.FnGetData() this.getConfigStart()
}, },
methods: { methods: {
FnTurnD(data) { FnTurnD(data) {
@ -287,12 +403,12 @@ export default {
handlePageChange({ currentPage, pageSize }) { handlePageChange({ currentPage, pageSize }) {
this.queryParam.currentPage = currentPage this.queryParam.currentPage = currentPage
this.queryParam.pageSize = pageSize this.queryParam.pageSize = pageSize
this.FnGetData() this.getList()
}, },
FnGetData() { getList() {
this.loading = true this.loading = true
this.form.pageSize = this.queryParam.pageSize this.form.pageSize = this.queryParam.pageSize
this.form.PageNo = this.queryParam.currentPage this.form.PageNo = this.queryParam.PageNo
if (this.form.ctN_STAT) { if (this.form.ctN_STAT) {
this.form.ctN_STAT = this.form.ctN_STAT.join(',') this.form.ctN_STAT = this.form.ctN_STAT.join(',')
} }
@ -317,6 +433,8 @@ export default {
vessel: row.vessel, vessel: row.vessel,
voyno: row.voyno, voyno: row.voyno,
contracT_NO: row.contracT_NO, contracT_NO: row.contracT_NO,
placereceipt: row.placereceipt,
placedelivery: row.placedelivery,
bookinG_SLOT_TYPE: row.bookinG_SLOT_TYPE, bookinG_SLOT_TYPE: row.bookinG_SLOT_TYPE,
carrierid: row.carrierid carrierid: row.carrierid
} }
@ -324,7 +442,7 @@ export default {
BookingSlotRefreshStock(data).then(res => { BookingSlotRefreshStock(data).then(res => {
if (res.success) { if (res.success) {
this.$message.success('刷新成功') this.$message.success('刷新成功')
this.FnGetData() this.getList()
} else { } else {
this.$message.error(res.message) this.$message.error(res.message)
this.loading = false this.loading = false

@ -230,209 +230,7 @@
</template> </template>
</vxe-grid> </vxe-grid>
</a-card> </a-card>
<a-modal v-model="SlotVisible" title="生成方式选择" @ok="handleOk1" width="40%"> <generation ref="generation"></generation>
<a-form class="Editing">
<!-- <a-checkbox style="margin-top: 10px;" v-model="CreateData.isDirectSend"></a-checkbox> -->
<a-row>
<a-col :span="16">
<a-form-item label="委托单位:" :label-col="formItemLayout.labelCol3" :wrapper-col="formItemLayout.wrapperCol3">
<a-select
show-search
v-model="CreateData.customerId"
:default-active-first-option="false"
:show-arrow="false"
:filter-option="false"
:not-found-content="null"
@search="SearchCustomer"
@change="ChangeCustomer">
<a-select-option v-for="(item, index) in CustomerList" :key="index" :value="item.id">
{{ item.shortName }}
</a-select-option>
</a-select>
</a-form-item>
</a-col>
<a-col :span="8">
<a-spin :spinning="fetching">
<a-form-item label="联系人:" :label-col="formItemLayout.labelCol2" :wrapper-col="formItemLayout.wrapperCol2">
<a-select
show-search
mode="multiple"
v-model="CreateData.customerContactId"
:default-active-first-option="false"
:show-arrow="false"
:filter-option="false"
:not-found-content="null"
@change="handleChangeUser"
@search="SearchUser">
<a-select-option v-for="item in customerByList" :key="item.id" :value="item.id">
{{ item.name }}
</a-select-option>
</a-select>
</a-form-item>
</a-spin>
</a-col>
</a-row>
<a-row style="padding-left: 20px;margin-bottom: 10px">
<span style="margin-right: 10px;" v-for="(item, index) in userInfoList" :key="index">
{{ item.name }} {{ item.email }}
</span>
</a-row>
<a-row>
<a-col :span="8">
<a-form-item label="销售:" :label-col="formItemLayout.labelCol2" :wrapper-col="formItemLayout.wrapperCol2">
<a-select
show-search
v-model="CreateData.saleId"
:default-active-first-option="false"
:show-arrow="false"
:filter-option="false"
:not-found-content="null"
@search="SearchUser"
@change="e => {
ChangeUser(e, 'saleName')
}
">
<a-select-option v-for="item in UserList" :key="item.id" :value="item.id">
{{ item.name }}
</a-select-option>
</a-select>
</a-form-item>
</a-col>
<a-col :span="8">
<a-form-item label="操作:" :label-col="formItemLayout.labelCol2" :wrapper-col="formItemLayout.wrapperCol2">
<a-select
show-search
v-model="CreateData.opId"
:default-active-first-option="false"
:show-arrow="false"
:filter-option="false"
:not-found-content="null"
@search="SearchUser"
@change="e => {
ChangeUser(e, 'opName')
}
">
<a-select-option v-for="item in UserList" :key="item.id" :value="item.id">
{{ item.name }}
</a-select-option>
</a-select>
</a-form-item>
</a-col>
<a-col :span="8">
<a-form-item label="单证:" :label-col="formItemLayout.labelCol2" :wrapper-col="formItemLayout.wrapperCol2">
<a-select
show-search
v-model="CreateData.docId"
:default-active-first-option="false"
:show-arrow="false"
:filter-option="false"
:not-found-content="null"
@search="SearchUser"
@change="e => {
ChangeUser(e, 'docName')
}
">
<a-select-option v-for="item in UserList" :key="item.id" :value="item.id">
{{ item.name }}
</a-select-option>
</a-select>
</a-form-item>
</a-col>
</a-row>
<a-row>
<a-col :span="8">
<a-form-item label="客服:" :label-col="formItemLayout.labelCol2" :wrapper-col="formItemLayout.wrapperCol2">
<a-select
show-search
v-model="CreateData.custserviceId"
:default-active-first-option="false"
:show-arrow="false"
:filter-option="false"
:not-found-content="null"
@search="SearchUser"
@change="e => {
ChangeUser(e, 'custserviceName')
}
">
<a-select-option v-for="item in UserList" :key="item.id" :value="item.id">
{{ item.name }}
</a-select-option>
</a-select>
</a-form-item>
</a-col>
<a-col :span="8">
<a-form-item label="航线操作:" :label-col="formItemLayout.labelCol2" :wrapper-col="formItemLayout.wrapperCol2">
<a-select
show-search
v-model="CreateData.routeID"
:default-active-first-option="false"
:show-arrow="false"
:filter-option="false"
:not-found-content="null"
@search="SearchUser"
@change="e => {
ChangeUser(e, 'route')
}
">
<a-select-option v-for="item in UserList" :key="item.id" :value="item.id">
{{ item.name }}
</a-select-option>
</a-select>
</a-form-item>
</a-col>
<a-col :span="8">
<a-form-item label="航线管理:" :label-col="formItemLayout.labelCol2" :wrapper-col="formItemLayout.wrapperCol2">
<a-select
show-search
v-model="CreateData.lineManageID"
:default-active-first-option="false"
:show-arrow="false"
:filter-option="false"
:not-found-content="null"
@search="SearchUser"
@change="e => {
ChangeUser(e, 'lineManage')
}
">
<a-select-option v-for="item in UserList" :key="item.id" :value="item.id">
{{ item.name }}
</a-select-option>
</a-select>
</a-form-item>
</a-col>
</a-row>
<a-row>
<a-col :span="16">
<a-form-item label="操作备注:" :label-col="formItemLayout.labelCol3" :wrapper-col="formItemLayout.wrapperCol3">
<a-input v-model="CreateData.czRemark" />
</a-form-item>
</a-col>
</a-row>
<a-row>
<a-col :span="16">
<a-form-item label="申请箱使:" :label-col="formItemLayout.labelCol3" :wrapper-col="formItemLayout.wrapperCol3">
<a-input v-model="CreateData.shenQingXiangShi" />
</a-form-item>
</a-col>
</a-row>
<a-row>
<a-col :span="16">
<a-form-item label="服务项目:" :label-col="formItemLayout.labelCol3" :wrapper-col="formItemLayout.wrapperCol3">
<div class="content">
<div
class="items"
v-for="(serive, sindex) in bookingServiceItem"
:key="sindex"
:class="{ active: serive.isYield }"
@click="saveService(serive)">
{{ serive.serviceProjectName }}
</div>
</div>
</a-form-item>
</a-col>
</a-row>
</a-form>
</a-modal>
</div> </div>
</template> </template>
<script> <script>
@ -441,7 +239,6 @@ import {
BookingSlotDelete, BookingSlotDelete,
ImportSlotFromFile, ImportSlotFromFile,
CreateBooking0rder, CreateBooking0rder,
ValidateCreateBookingOrder,
slotSendEmail slotSendEmail
} from '@/api/modular/main/CompanySiteaccount' } from '@/api/modular/main/CompanySiteaccount'
import { mapGetters } from 'vuex' import { mapGetters } from 'vuex'
@ -452,9 +249,10 @@ import { DjyCustomerSuggest, GetSysUserPage, DjyCustomerContacts } from '@/api/m
import columnSetting from '@/components/tableColumnSetting' import columnSetting from '@/components/tableColumnSetting'
import tableSort from '@/components/tableSort' import tableSort from '@/components/tableSort'
import { sortMixin } from '@/mixin/index'; import { sortMixin } from '@/mixin/index';
import generation from '@/components/generation'
export default { export default {
components: { components: {
columnSetting, tableSort columnSetting, tableSort,generation
}, },
mixins: [sortMixin], mixins: [sortMixin],
computed: { computed: {
@ -1024,18 +822,6 @@ export default {
created() { }, created() { },
mounted() { mounted() {
this.getConfigStart() this.getConfigStart()
GetProjectList().then(res => {
res.data.forEach(item => {
item.isYield = false
})
this.bookingServiceItem = res.data
})
GetSysUserPage().then(res => {
this.UserList = res.data
})
DjyCustomerSuggest({ keyword: '', type: 'consignor' }).then(res => {
this.CustomerList = res.data.rows
})
}, },
methods: { methods: {
FnTurnD(data) { FnTurnD(data) {
@ -1089,17 +875,7 @@ export default {
}) })
}, },
handleOpenSlot(row) { handleOpenSlot(row) {
this.userInfoList = [] this.$refs.generation.init(row)
this.$forceUpdate()
this.CreateData = {}
ValidateCreateBookingOrder({ id: row.id }).then(res => {
if (res.success) {
this.slotEdit = row
this.SlotVisible = true
} else {
this.$message.error(res.message)
}
})
}, },
init() { init() {
this.form = {} this.form = {}

@ -594,6 +594,7 @@
</a-form-item> </a-form-item>
</a-form> </a-form>
</a-modal> </a-modal>
<generation ref="generation"></generation>
<a-modal v-model="compareResultFlag" :footer="null"> <a-modal v-model="compareResultFlag" :footer="null">
<div v-for="(item, index) in compareResultList" :key="index"> <div v-for="(item, index) in compareResultList" :key="index">
<span> {{ item.fieldName }}{{ item.reqVal }}</span> <span> {{ item.fieldName }}{{ item.reqVal }}</span>
@ -618,9 +619,13 @@ import {
ReCompareResult, ReCompareResult,
GetBookingOrder GetBookingOrder
} from '@/api/modular/main/TaskmanageList' } from '@/api/modular/main/TaskmanageList'
import generation from '@/components/generation'
import { mapGetters } from 'vuex' import { mapGetters } from 'vuex'
import { DjyCustomerSuggest, GetSysUserPage, DjyCustomerContacts } from '@/api/modular/main/BookingLedger' import { DjyCustomerSuggest, GetSysUserPage, DjyCustomerContacts } from '@/api/modular/main/BookingLedger'
export default { export default {
components: {
generation
},
data() { data() {
return { return {
CustomerList: [], CustomerList: [],
@ -907,27 +912,7 @@ export default {
data.isYield = !data.isYield data.isYield = !data.isYield
}, },
OpenModal() { OpenModal() {
this.visible = true this.$refs.generation.init2()
this.openLoading = true
this.userInfoList = []
this.$forceUpdate()
GetBookingOrder({ taskPkId: this.$route.query.taskPKId }).then(res => {
if (res.data.ext) {
this.CreateData = {
generateMethod: 'UPD_BOOKING',
customerList: [],
isDirectSend: false,
...res.data.ext
}
} else {
this.CreateData = {
generateMethod: 'UPD_BOOKING',
customerList: [],
isDirectSend: false
}
}
this.openLoading = false
})
}, },
getList() { getList() {
this.spinning = true this.spinning = true
@ -955,19 +940,7 @@ export default {
this.ChangeFileRadio() this.ChangeFileRadio()
}) })
GetProjectList().then(res => {
res.data.forEach(item => {
item.isYield = false
})
this.bookingServiceItem = res.data
})
GetSysUserPage().then(res => {
this.UserList = res.data
})
DjyCustomerSuggest({ keyword: '', type: 'consignor' }).then(res => {
this.CustomerList = res.data.rows
})
}, },
OpenUser() { OpenUser() {
this.UserId = '' this.UserId = ''

@ -296,225 +296,7 @@
</a-col> </a-col>
</a-row> </a-row>
</a-spin> </a-spin>
<a-modal v-model="visible" title="生成方式选择" @ok="handleOk" width="40%"> <generation ref="generation"></generation>
<a-radio-group v-model="CreateData.generateMethod">
<a-radio value="GEN_BOOKING_SLOT">
直接生成舱位和订舱
</a-radio>
<a-radio value="GEN_BOOKING">
只生成订舱
</a-radio>
<a-radio value="GEN_SLOT">
只生成舱位
</a-radio>
<a-radio value="GEN_EXIST_BOOKING">
匹配已有订舱
</a-radio>
</a-radio-group>
<!-- <a-checkbox style="margin-top: 10px;" v-model="CreateData.isDirectSend"></a-checkbox> -->
<p class="modaltitle">订舱录入</p>
<a-form class="Editing">
<a-row>
<a-col :span="16">
<a-form-item label="委托单位:" :label-col="formItemLayout.labelCol3" :wrapper-col="formItemLayout.wrapperCol3">
<a-select
show-search
v-model="CreateData.customerId"
:default-active-first-option="false"
:show-arrow="false"
:filter-option="false"
:not-found-content="null"
@search="SearchCustomer"
@change="ChangeCustomer">
<a-select-option v-for="(item, index) in CustomerList" :key="index" :value="item.id">
{{ item.shortName }}
</a-select-option>
</a-select>
</a-form-item>
</a-col>
<a-col :span="8">
<a-spin :spinning="fetching">
<a-form-item label="联系人:" :label-col="formItemLayout.labelCol2" :wrapper-col="formItemLayout.wrapperCol2">
<a-select
show-search
mode="multiple"
v-model="CreateData.customerList"
:default-active-first-option="false"
:show-arrow="false"
:filter-option="false"
@change="handleChangeUser"
:not-found-content="fetching ? undefined : null"
@search="SearchUser"
>
<a-select-option v-for="item in customerByList" :key="item.id" :value="item.id">
{{ item.name }}
</a-select-option>
</a-select>
</a-form-item>
</a-spin>
</a-col>
</a-row>
<a-row style="padding-left: 20px;margin-bottom: 10px">
<span style="margin-right: 10px;" v-for="(item, index) in userInfoList" :key="index">
{{ item.name }} {{ item.email }}
</span>
</a-row>
<a-row>
<a-col :span="8">
<a-form-item label="销售:" :label-col="formItemLayout.labelCol2" :wrapper-col="formItemLayout.wrapperCol2">
<a-select
show-search
v-model="CreateData.saleId"
:default-active-first-option="false"
:show-arrow="false"
:filter-option="false"
:not-found-content="null"
@search="SearchUser"
@change="e => {
ChangeUser(e, 'saleName')
}
">
<a-select-option v-for="item in UserList" :key="item.id" :value="item.id">
{{ item.name }}
</a-select-option>
</a-select>
</a-form-item>
</a-col>
<a-col :span="8">
<a-form-item label="操作:" :label-col="formItemLayout.labelCol2" :wrapper-col="formItemLayout.wrapperCol2">
<a-select
show-search
v-model="CreateData.opId"
:default-active-first-option="false"
:show-arrow="false"
:filter-option="false"
:not-found-content="null"
@search="SearchUser"
@change="e => {
ChangeUser(e, 'opName')
}
">
<a-select-option v-for="item in UserList" :key="item.id" :value="item.id">
{{ item.name }}
</a-select-option>
</a-select>
</a-form-item>
</a-col>
<a-col :span="8">
<a-form-item label="单证:" :label-col="formItemLayout.labelCol2" :wrapper-col="formItemLayout.wrapperCol2">
<a-select
show-search
v-model="CreateData.docId"
:default-active-first-option="false"
:show-arrow="false"
:filter-option="false"
:not-found-content="null"
@search="SearchUser"
@change="e => {
ChangeUser(e, 'docName')
}
">
<a-select-option v-for="item in UserList" :key="item.id" :value="item.id">
{{ item.name }}
</a-select-option>
</a-select>
</a-form-item>
</a-col>
</a-row>
<a-row>
<a-col :span="8">
<a-form-item label="客服:" :label-col="formItemLayout.labelCol2" :wrapper-col="formItemLayout.wrapperCol2">
<a-select
show-search
v-model="CreateData.custserviceId"
:default-active-first-option="false"
:show-arrow="false"
:filter-option="false"
:not-found-content="null"
@search="SearchUser"
@change="e => {
ChangeUser(e, 'custserviceName')
}
">
<a-select-option v-for="item in UserList" :key="item.id" :value="item.id">
{{ item.name }}
</a-select-option>
</a-select>
</a-form-item>
</a-col>
<a-col :span="8">
<a-form-item label="航线操作:" :label-col="formItemLayout.labelCol2" :wrapper-col="formItemLayout.wrapperCol2">
<a-select
show-search
v-model="CreateData.routeID"
:default-active-first-option="false"
:show-arrow="false"
:filter-option="false"
:not-found-content="null"
@search="SearchUser"
@change="e => {
ChangeUser(e, 'route')
}
">
<a-select-option v-for="item in UserList" :key="item.id" :value="item.id">
{{ item.name }}
</a-select-option>
</a-select>
</a-form-item>
</a-col>
<a-col :span="8">
<a-form-item label="航线管理:" :label-col="formItemLayout.labelCol2" :wrapper-col="formItemLayout.wrapperCol2">
<a-select
show-search
v-model="CreateData.lineManageID"
:default-active-first-option="false"
:show-arrow="false"
:filter-option="false"
:not-found-content="null"
@search="SearchUser"
@change="e => {
ChangeUser(e, 'lineManage')
}
">
<a-select-option v-for="item in UserList" :key="item.id" :value="item.id">
{{ item.name }}
</a-select-option>
</a-select>
</a-form-item>
</a-col>
</a-row>
<a-row>
<a-col :span="16">
<a-form-item label="操作备注:" :label-col="formItemLayout.labelCol3" :wrapper-col="formItemLayout.wrapperCol3">
<a-input v-model="CreateData.czRemark" />
</a-form-item>
</a-col>
</a-row>
<a-row>
<a-col :span="16">
<a-form-item label="申请箱使:" :label-col="formItemLayout.labelCol3" :wrapper-col="formItemLayout.wrapperCol3">
<a-input v-model="CreateData.shenQingXiangShi" />
</a-form-item>
</a-col>
</a-row>
<a-row>
<a-col :span="16">
<a-form-item label="服务项目:" :label-col="formItemLayout.labelCol3" :wrapper-col="formItemLayout.wrapperCol3">
<div class="content">
<div
class="items"
v-for="(serive, sindex) in bookingServiceItem"
:key="sindex"
:class="{ active: serive.isYield }"
@click="saveService(serive)">
{{ serive.serviceProjectName }}
</div>
</div>
</a-form-item>
</a-col>
</a-row>
</a-form>
</a-modal>
<a-modal v-model="UserVisible" title="转移任务" @ok="UserhandleOk"> <a-modal v-model="UserVisible" title="转移任务" @ok="UserhandleOk">
<a-form> <a-form>
<a-form-item label="接收人:" :label-col="formItemLayout.labelCol1" :wrapper-col="formItemLayout.wrapperCol1"> <a-form-item label="接收人:" :label-col="formItemLayout.labelCol1" :wrapper-col="formItemLayout.wrapperCol1">
@ -547,8 +329,12 @@ import {
TaskManageBCSendEmai1 TaskManageBCSendEmai1
} from '@/api/modular/main/TaskmanageList' } from '@/api/modular/main/TaskmanageList'
import { mapGetters } from 'vuex' import { mapGetters } from 'vuex'
import generation from '@/components/generation'
import { DjyCustomerSuggest, GetSysUserPage, DjyCustomerContacts } from '@/api/modular/main/BookingLedger' import { DjyCustomerSuggest, GetSysUserPage, DjyCustomerContacts } from '@/api/modular/main/BookingLedger'
export default { export default {
components: {
generation
},
data() { data() {
return { return {
CustomerList: [], CustomerList: [],
@ -776,35 +562,10 @@ export default {
this.ChangeFileRadio() this.ChangeFileRadio()
}) })
GetProjectList().then(res => {
res.data.forEach(item => {
item.isYield = false
})
this.bookingServiceItem = res.data
})
GetSysUserPage().then(res => {
this.UserList = res.data
})
DjyCustomerSuggest({ keyword: '', type: 'consignor' }).then(res => {
this.CustomerList = res.data.rows
})
}, },
OpenModal() { OpenModal() {
this.CreateData = { this.$refs.generation.init1()
generateMethod: 'GEN_BOOKING',
customerList: [],
isDirectSend: false
}
this.UserList.forEach(item => {
if (item.id == this.userInfo.id) {
this.CreateData.opId = item.id
this.CreateData.opName = item.name
}
})
this.userInfoList = []
this.$forceUpdate()
this.visible = true
}, },
handleChangeUser(val) { handleChangeUser(val) {
const arr = [] const arr = []

@ -18,7 +18,7 @@ export default {
{ field: 'taskSource', width: 100, title: '任务来源', showHeaderOverflow: true, sortable: true, slots: { default: 'taskScource' } }, { field: 'taskSource', width: 100, title: '任务来源', showHeaderOverflow: true, sortable: true, slots: { default: 'taskScource' } },
{ field: 'createdUserName', width: 100, title: '接收人', showHeaderOverflow: true, sortable: true }, { field: 'createdUserName', width: 100, title: '接收人', showHeaderOverflow: true, sortable: true },
{ field: 'complateDealName', width: 100, title: '完成方式', showHeaderOverflow: true, sortable: true }, { field: 'complateDealName', width: 100, title: '完成方式', showHeaderOverflow: true, sortable: true },
{ field: 'operate', title: '操作', width: 80, noDraggable: true, slots: { default: 'operate' }, fixed: 'right', resizable: false } { field: 'operate', title: '操作', width: 100, noDraggable: true, slots: { default: 'operate' }, fixed: 'right', resizable: false }
], ],
columnsAllData: [ columnsAllData: [
{ type: 'checkbox', width: 60, noDraggable: true }, { type: 'checkbox', width: 60, noDraggable: true },
@ -40,7 +40,7 @@ export default {
{ field: 'createdUserName', width: 100, title: '接收人', showHeaderOverflow: true, sortable: true }, { field: 'createdUserName', width: 100, title: '接收人', showHeaderOverflow: true, sortable: true },
{ field: 'complateDealName', width: 100, title: '完成方式', showHeaderOverflow: true, sortable: true }, { field: 'complateDealName', width: 100, title: '完成方式', showHeaderOverflow: true, sortable: true },
{ field: 'needArriveTime', width: 150, title: '要求送达时间', showHeaderOverflow: true, sortable: true }, { field: 'needArriveTime', width: 150, title: '要求送达时间', showHeaderOverflow: true, sortable: true },
{ field: 'operate', title: '操作', width: 80, noDraggable: true, slots: { default: 'operate' }, fixed: 'right', resizable: false } { field: 'operate', title: '操作', width: 100, noDraggable: true, slots: { default: 'operate' }, fixed: 'right', resizable: false }
], ],
// ==== 表单部分 ==== // ==== 表单部分 ====
condAllData: [ condAllData: [

@ -11,46 +11,46 @@
</div> </div>
</a-col> </a-col>
</a-row> </a-row>
<div class="main-box"> <div class="main-box" v-for="(item, index) in form.fromToList" :key="index">
<div class="box"> <div class="box">
<div class="box-title"> <div class="box-title">
<img src="../../../../assets/icons/u991.svg" alt="">原船 <img src="../../../../assets/icons/u991.svg" alt="">原船
</div> </div>
<div class="content"> <div class="content">
<div class="row"> <div class="row">
<img src="../../../../assets/icons/u1041.svg" alt="">船名/航次{{ form.from.vessel }} / {{ form.from.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="">{{ form.from.port }} <img src="../../../../assets/icons/u1043.svg" alt="">{{ item.fromShip.port }}
<img src="../../../../assets/icons/u1044.svg" style="margin-left: 20px;" alt="">ETD{{ form.from.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="">{{ form.from.terminal }} <img src="../../../../assets/icons/u1046.svg" alt="">{{ item.fromShip.terminal }}
</div> </div>
</div> </div>
</div> </div>
<div class="middle">换船</div> <div class="middle">换船</div>
<div v-for="(toData, index1) in item.toShipList" :key="index1" style="display: flex;align-items: center;">
<div class="middleOr" v-if="index1 !== 0"></div>
<div class="box"> <div class="box">
<div class="box-title"> <div class="box-title">
<img src="../../../../assets/icons/u993.svg" alt="">新船 <img src="../../../../assets/icons/u993.svg" alt="">新船{{ index1 + 1 }}
VslCode:{{ toData.vslCode }} String:{{ toData.shipString }}
</div> </div>
<div class="content"> <div class="content">
<div class="row"> <div class="row">
<img src="../../../../assets/icons/u1041.svg" alt="">船名/航次{{ form.to.vessel }} / {{ form.to.voyNo }} <img src="../../../../assets/icons/u1041.svg" alt="">船名/航次{{ toData.vessel }} / {{ toData.voyNo }}
</div> </div>
<div class="row"> <div class="row">
<img src="../../../../assets/icons/u1043.svg" alt="">{{ form.to.port }} <img src="../../../../assets/icons/u1043.svg" alt="">{{ toData.port }}
<img src="../../../../assets/icons/u1044.svg" style="margin-left: 20px;" alt="">ETD{{ <img src="../../../../assets/icons/u1044.svg" style="margin-left: 20px;" alt="">ETD{{
form.to.etd ? form.to.etd : '-' }} toData.etd ? toData.etd : '-' }}
</div> </div>
<div class="row"> <div class="row">
<img src="../../../../assets/icons/u1046.svg" alt="">{{ form.to.terminal }} <img src="../../../../assets/icons/u1046.svg" alt="">{{ toData.terminal }}
</div> </div>
</div> </div>
</div> </div>
<div style="margin-left: 20px;">
Batch Transfer* <br>
<span style="background-color: yellow;"> {{ form.to.batchTransfer }}</span>
</div> </div>
</div> </div>
<div class="main-title"> <div class="main-title">
@ -130,7 +130,8 @@ export default {
from: {}, from: {},
to: {}, to: {},
loadDetailList: [], loadDetailList: [],
rollingPlanList: [] rollingPlanList: [],
fromToList: []
}, },
opinion: {}, opinion: {},
confirmDeadLine: '', confirmDeadLine: '',
@ -265,6 +266,12 @@ export default {
align: 'center', align: 'center',
width: '120px' width: '120px'
}, },
{
title: 'equipmentNumber',
dataIndex: 'equipmentNumber',
align: 'center',
width: '150px'
},
{ {
title: 'Shipment', title: 'Shipment',
dataIndex: 'shipment', dataIndex: 'shipment',
@ -343,7 +350,6 @@ export default {
userFlag: false, userFlag: false,
totalCtn: '', totalCtn: '',
rollingPlanList: [], rollingPlanList: [],
toData: {},
openRow: {}, openRow: {},
getLoad: false, getLoad: false,
rollingTouchDoubleRollRemark: '', rollingTouchDoubleRollRemark: '',
@ -556,18 +562,16 @@ export default {
shareGetinfo(ApiData).then(res => { shareGetinfo(ApiData).then(res => {
if (res.data.succ) { if (res.data.succ) {
this.form = res.data.ext this.form = res.data.ext
if (!this.form.from) {
this.form.from = {}
}
if (!this.form.to) {
this.form.to = {}
}
if (!this.form.rollingPlanList) { if (!this.form.rollingPlanList) {
this.form.rollingPlanList = [] this.form.rollingPlanList = []
} }
if (!this.form.loadDetailList) { if (!this.form.loadDetailList) {
this.form.loadDetailList = [] this.form.loadDetailList = []
} }
if (!this.form.fromToList) {
this.form.fromToList = []
}
this.$forceUpdate() this.$forceUpdate()
} else { } else {
this.$message.error(res.data.msg) this.$message.error(res.data.msg)
@ -721,15 +725,14 @@ export default {
.main-box { .main-box {
display: flex; display: flex;
align-items: center; align-items: center;
margin-top: 15px;
.box { .box {
width: 25%;
.box-title { .box-title {
display: flex; display: flex;
align-items: center; align-items: center;
margin-bottom: 10px; margin-bottom: 10px;
font-size: 12px;
img { img {
margin-right: 10px; margin-right: 10px;
} }
@ -767,10 +770,20 @@ export default {
} }
.middle { .middle {
width: 200px;
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;
font-size: 18px;
margin-top: 31px;
line-height: 88px;
}
.middleOr {
background: yellow;
text-align: center;
height: 88px;
min-width:35px;
font-size: 18px; font-size: 18px;
margin-top: 31px; margin-top: 31px;
line-height: 88px; line-height: 88px;

@ -9,28 +9,31 @@
</div> </div>
</a-col> </a-col>
</a-row> </a-row>
<div class="main-box"> <div class="main-box" v-for="(item, index) in fromToList" :key="index">
<div class="box"> <div class="box">
<div class="box-title"> <div class="box-title">
<img src="../../../../assets/icons/u991.svg" alt="">原船 <img src="../../../../assets/icons/u991.svg" alt="">原船
</div> </div>
<div class="content"> <div class="content">
<div class="row"> <div class="row">
<img src="../../../../assets/icons/u1041.svg" alt="">船名/航次{{ fromData.vessel }} / {{ fromData.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="">{{ fromData.port }} <img src="../../../../assets/icons/u1043.svg" alt="">{{ item.fromShip.port }}
<img src="../../../../assets/icons/u1044.svg" style="margin-left: 20px;" alt="">ETD{{ fromData.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="">{{ fromData.terminal }} <img src="../../../../assets/icons/u1046.svg" alt="">{{ item.fromShip.terminal }}
</div> </div>
</div> </div>
</div> </div>
<div class="middle">换船</div> <div class="middle">换船</div>
<div v-for="(toData, index1) in item.toShipList" :key="index1" style="display: flex;align-items: center;">
<div class="middleOr" v-if="index1 !== 0"></div>
<div class="box"> <div class="box">
<div class="box-title"> <div class="box-title">
<img src="../../../../assets/icons/u993.svg" alt="">新船 <img src="../../../../assets/icons/u993.svg" alt="">新船{{ index1 + 1 }}
VslCode:{{ toData.vslCode }} String:{{ toData.shipString }}
</div> </div>
<div class="content"> <div class="content">
<div class="row"> <div class="row">
@ -39,7 +42,7 @@
<div class="row"> <div class="row">
<img src="../../../../assets/icons/u1043.svg" alt="">{{ toData.port }} <img src="../../../../assets/icons/u1043.svg" alt="">{{ toData.port }}
<img src="../../../../assets/icons/u1044.svg" style="margin-left: 20px;" alt="">ETD{{ <img src="../../../../assets/icons/u1044.svg" style="margin-left: 20px;" alt="">ETD{{
fromData.etd ? fromData.etd : '-' }} toData.etd ? toData.etd : '-' }}
</div> </div>
<div class="row"> <div class="row">
<img src="../../../../assets/icons/u1046.svg" alt="">{{ toData.terminal }} <img src="../../../../assets/icons/u1046.svg" alt="">{{ toData.terminal }}
@ -47,6 +50,7 @@
</div> </div>
</div> </div>
</div> </div>
</div>
<div class="main-title"> <div class="main-title">
<img src="../../../../assets/icons/u1224.svg" alt="">Rolling Plan <img src="../../../../assets/icons/u1224.svg" alt="">Rolling Plan
<span style="margin-left: 30px;background: yellow;padding: 0 5px;">before {{ confirmDeadLine }}</span> <span style="margin-left: 30px;background: yellow;padding: 0 5px;">before {{ confirmDeadLine }}</span>
@ -424,6 +428,7 @@ export default {
UserId: '', UserId: '',
confirmDeadLine: '', confirmDeadLine: '',
dateFlag: false, dateFlag: false,
fromToList: [],
selectedRowKeys: [], selectedRowKeys: [],
carrierId: '', carrierId: '',
value: '', value: '',
@ -616,6 +621,12 @@ export default {
align: 'center', align: 'center',
width: '120px' width: '120px'
}, },
{
title: 'equipmentNumber',
dataIndex: 'equipmentNumber',
align: 'center',
width: '150px'
},
{ {
title: 'Place of Receipt', title: 'Place of Receipt',
dataIndex: 'placeOfReceipt', dataIndex: 'placeOfReceipt',
@ -686,6 +697,7 @@ export default {
dataIndex: 'groupName', dataIndex: 'groupName',
align: 'center', align: 'center',
width: '100px', width: '100px',
fixed: 'right',
scopedSlots: { customRender: 'groupName' }, scopedSlots: { customRender: 'groupName' },
customRender: (value, row, index) => { customRender: (value, row, index) => {
const obj = { const obj = {
@ -760,7 +772,7 @@ export default {
bookingServiceItem: [], bookingServiceItem: [],
pdfUrl: '', pdfUrl: '',
UserList: [], UserList: [],
fromData: {},
loadDetailList: [], loadDetailList: [],
ctnLoading: false, ctnLoading: false,
ctnFlag: false, ctnFlag: false,
@ -769,7 +781,7 @@ export default {
totalCtn: '', totalCtn: '',
rollingPlanList: [], rollingPlanList: [],
nominationId: '', nominationId: '',
toData: {},
dateRow: {}, dateRow: {},
openRow: {}, openRow: {},
getLoad: false, getLoad: false,
@ -1059,8 +1071,7 @@ export default {
TaskManageRollingNominationGetInfoByTaskId(ApiData).then(res => { TaskManageRollingNominationGetInfoByTaskId(ApiData).then(res => {
if (res.success) { if (res.success) {
this.data = res.data.preBillList this.data = res.data.preBillList
this.toData = res.data.to ? res.data.to : {} this.fromToList = res.data.fromToList
this.fromData = res.data.from ? res.data.from : {}
this.carrierId = res.data.carrierId this.carrierId = res.data.carrierId
this.rollingPlanList = res.data.rollingPlanList this.rollingPlanList = res.data.rollingPlanList
this.loadDetailList = res.data.loadDetailList this.loadDetailList = res.data.loadDetailList
@ -1237,14 +1248,14 @@ export default {
.main-box { .main-box {
display: flex; display: flex;
align-items: center; align-items: center;
margin-top: 15px;
.box { .box {
width: 25%;
.box-title { .box-title {
display: flex; display: flex;
align-items: center; align-items: center;
margin-bottom: 10px; margin-bottom: 10px;
font-size: 12px;
img { img {
margin-right: 10px; margin-right: 10px;
@ -1283,10 +1294,20 @@ export default {
} }
.middle { .middle {
width: 200px;
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;
font-size: 18px;
margin-top: 31px;
line-height: 88px;
}
.middleOr {
background: yellow;
text-align: center;
height: 88px;
min-width:35px;
font-size: 18px; font-size: 18px;
margin-top: 31px; margin-top: 31px;
line-height: 88px; line-height: 88px;

Loading…
Cancel
Save