修改bug

master
sunzehua 6 months ago
parent 7ecd616222
commit 8374150b80

@ -7,12 +7,12 @@ VUE_APP_TYPE = 'hechuan'
# 打包部署的三个端 客户端customer 和川端hechuan 运营端djy
# 和川大简云正式
# VUE_APP_API_BASE_URL=http://47.104.85.216:12345/api
# VUE_APP_SOCKET_BASE_URL=http://47.104.85.216:12345
VUE_APP_API_BASE_URL=http://47.104.85.216:12345/api
VUE_APP_SOCKET_BASE_URL=http://47.104.85.216:12345
# 和川大简云测试
VUE_APP_API_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:35100
# VUE_APP_SOCKET_BASE_URL=http://60.209.125.238:35100
# 客户端测试
# VUE_APP_API_BASE_URL=http://60.209.125.238:30813

@ -131,7 +131,13 @@ export function ValidateCreateBookingOrder(parameter) {
params: parameter
})
}
export function getAvailableCtnsBySlot(parameter) {
return axios({
url: '/BookingSlot/getAvailableCtnsBySlot',
method: 'get',
params: parameter
})
}
export function slotSendEmail(parameter) {
return axios({
url: '/BookingSlot/SendEmail',
@ -140,5 +146,42 @@ export function slotSendEmail(parameter) {
})
}
export function BookingLabelSave(parameter) {
return axios({
url: 'BookingLabel/Save',
method: 'post',
data: parameter
})
}
export function BookingLabelPageList(parameter) {
return axios({
url: 'BookingLabel/PageList',
method: 'post',
data: parameter
})
}
export function BookingLabelDelete(parameter) {
return axios({
url: 'BookingLabel/Delete',
method: 'post',
data: parameter
})
}
export function BookingLabelList(parameter) {
return axios({
url: 'BookingLabel/List',
method: 'get',
params: parameter
})
}
export function BookingLabelBind(parameter) {
return axios({
url: 'BookingLabel/Bind',
method: 'post',
data: parameter
})
}

@ -558,3 +558,28 @@ export function GetBookingOrder(parameter) {
params: parameter
})
}
export function GetToShipSelect(parameter) {
return axios({
url: '/TaskManageRollingNomination/GetToShipSelect',
method: 'get',
params: parameter
})
}
export function GetRollingNominationNoticeReview(parameter) {
return axios({
url: '/TaskManageRollingNomination/GetRollingNominationNoticeReview',
method: 'post',
data: parameter
})
}
export function SendRollingNominationNotice(parameter) {
return axios({
url: '/TaskManageRollingNomination/SendRollingNominationNotice',
method: 'post',
data: parameter
})
}

@ -134,6 +134,30 @@
</a-form-item>
</a-col>
</a-row>
<a-row v-if="type==='B'">
<a-col :span="8">
<a-form-item label="SHIPPER" :label-col="formItemLayout.labelCol2" :wrapper-col="formItemLayout.wrapperCol2">
<a-input v-model="CreateData.SHIPPER"></a-input>
</a-form-item>
</a-col>
<a-col :span="8">
<a-form-item label="品名" :label-col="formItemLayout.labelCol2" :wrapper-col="formItemLayout.wrapperCol2">
<a-input v-model="CreateData.GOODSNAME"></a-input>
</a-form-item>
</a-col>
<a-col :span="8">
<a-form-item label="卖价" :label-col="formItemLayout.labelCol2" :wrapper-col="formItemLayout.wrapperCol2">
<a-input-number style="width: 100%;" :precision="2" v-model="CreateData.GOODSNAME"></a-input-number>
</a-form-item>
</a-col>
</a-row>
<a-row v-if="type==='B'">
<a-col :span="8">
<a-form-item label="销售日期" :label-col="formItemLayout.labelCol2" :wrapper-col="formItemLayout.wrapperCol2">
<a-date-picker style="width: 100%;" v-model="CreateData.SALE_TIME" />
</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">
@ -238,7 +262,8 @@
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'
import moment from 'moment'
import { getAvailableCtnsBySlot, CreateBooking0rder } from '@/api/modular/main/CompanySiteaccount'
let timer
export default {
components: {
@ -365,9 +390,10 @@ export default {
this.userInfoList = []
this.$forceUpdate()
this.CreateData = {}
this.CreateData.SALE_TIME = moment().format('YYYY-MM-DD HH:mm:ss')
this.SlotVisible = true
this.spinning = true
ValidateCreateBookingOrder({ id: row.id }).then(res => {
getAvailableCtnsBySlot({ slotId: row.id }).then(res => {
if (res.success) {
this.slotEdit = row
} else {

@ -24,9 +24,15 @@ export const sortMixin = {
let itemToMove = list.splice(indexToMove, 1)[0];
list.unshift(itemToMove);
}
const arr = JSON.parse(JSON.stringify(this.columns))
this.columns = JSON.parse(JSON.stringify(list))
this.columns.forEach((item, index) => {
arr.forEach(ite => {
if (item.field === ite.field) {
item.width = ite.width
this.$set(this.columns, index, item)
}
})
})
this.$forceUpdate()
this.editColumnsSave(this.columns)

@ -44,6 +44,7 @@ const booking = {
shipagencyInitList: [],
saleInitList: [],
opInitList: [],
subOpInitList: [],
docInitList: [],
custserviceInitList: [],
routeInitList: [],
@ -446,6 +447,7 @@ const booking = {
case 'user':
allData['saleInitList'] = $data
allData['opInitList'] = $data
allData['subOpInitList'] = $data
allData['docInitList'] = $data
allData['custserviceInitList'] = $data
allData['routeInitList'] = $data

@ -3,17 +3,17 @@
<a-spin :spinning="flowLoad">
<div class="list-box" @click="handleDetail">
<div class="list-box-title">
<span>提单号{{ flowData.blNo }}</span>
<div>{{ flowData.carrier }}</div>
<span>提单号:{{ flowData.blNo }}</span>
<div style="margin: 0 10px;">{{ flowData.carrier }}</div>
<span style="display: flex;align-items: center;">
<img src="./u1041.svg" alt=""> 起运港:{{ flowData.routingInfoList ? flowData.routingInfoList[0].loading : '-'
}}
<a-icon style="margin: 0 15px;" type="swap-right" />
<img src="./u1041.svg" alt=""> 目的港{{ flowData.routingInfoList ? flowData.routingInfoList[0].discharging :
<img src="./u1041.svg" alt=""> 目的港:{{ flowData.routingInfoList ? flowData.routingInfoList[0].discharging :
'-' }}</span>
<div>船名{{ flowData.vslNameEn }}</div>
<div>航次{{ flowData.voy }}</div>
<span style="cursor: pointer;color: blue;" >详情<a-icon
<div style="margin: 0 10px;">船名:{{ flowData.vslNameEn }}</div>
<div>航次:{{ flowData.voy }}</div>
<span style="cursor: pointer;color: blue;margin-left: 10px;" >详情<a-icon
type="appstore"
theme="filled" /></span>
</div>
@ -73,9 +73,9 @@
</a-table> -->
</div>
<div class="box-right-title">
<span style="width: 150px">动态</span>
<span style="width: 130px">动态</span>
<span style="width: 190px">时间</span>
<span style="width: 150px;margin-right: 20px;">地点</span>
<span style="width: 130px;margin-right: 10px;">地点</span>
<span style="width: 150px">船名航次</span>
</div>
<div
@ -90,10 +90,10 @@
<div class="time-line" :style="{ background: index == timeList.length - 1 ? 'none' : '' }"></div>
</div>
<div style="display: flex;align-items: center;padding: 15px 0;">
<div style="width: 150px;">{{ item.statusCnName }}</div>
<div style="width: 130px;">{{ item.statusCnName }}</div>
<div style="width: 200px;" v-if="item.isEst == 'N'">{{ item.statusTime }} <span class="tag"></span> </div>
<div style="width: 200px;" v-else>{{ item.statusTime }} <span class="tag" style="background: #FFF2E6;color: #ff8d1a;"></span> </div>
<div style="width: 150px;word-wrap: break-word;margin-right: 20px;">{{ item.statusPlace }}</div>
<div style="width: 130px;word-wrap: break-word;margin-right: 10px;">{{ item.statusPlace }}</div>
<div style="width: 150px;font-size: 12px;word-break: break-all;" v-if="item.vslName">{{ item.vslName }} / {{ item.voy }}</div>
<div style="width: 150px;font-size: 12px;word-break: break-all;" v-if="!item.vslName">-</div>
</div>
@ -476,11 +476,13 @@ export default {
padding-top: 10px;
min-height: 100vh;
padding-left: 15px;
min-width: 100vw;
padding-bottom: 200px;
}
.list-box {
background: white;
width: 950px;
// width: 950px;
color: #17181a;
font-weight: 400;
@ -490,7 +492,6 @@ export default {
border-bottom: 1px solid rgb(168, 177, 192);
display: flex;
align-items: center;
justify-content: space-between;
img {
margin-right: 5px;
@ -508,7 +509,7 @@ export default {
overflow-x: auto;
align-content: center;
padding-bottom: 70px;
padding-left: 50px;
padding-left: 20px;
width: 100%;
.cont-box {
display: flex;
@ -607,7 +608,7 @@ export default {
.main-box {
background: white;
width: 950px;
// width: 950px;
margin-top: 50px;
display: flex;
@ -631,7 +632,7 @@ export default {
.box-right {
padding-top: 20px;
margin-left: 30px;
margin-left: 15px;
width: 80%;
padding-right: 10px;
color: #17181a;

@ -558,7 +558,26 @@
</a-col>
</a-row>
<a-row :gutter="10">
<a-col :xs="24" :sm="9" :md="9" :lg="9" :xl="8">
<a-col :xs="24" :sm="9" :md="9" :lg="9" :xl="4">
<a-form-model-item
class="from-label"
label="分单操作"
:labelCol="{span:8}"
:wrapperCol="{span:16}"
has-feedback
prop="subOp">
<selectView
type="subOp"
:defaultVal="details.subOp"
searchApi="GetSysUserPage"
:searchQuery="{ name: '' }"
:showLabel="['name']"
:openSearch="true"
@change="getSelectViewRes">
</selectView>
</a-form-model-item>
</a-col>
<a-col :xs="24" :sm="9" :md="9" :lg="9" :xl="7">
<a-form-model-item
class="from-label"
label="操作备注"
@ -573,7 +592,7 @@
@getInputChange="inputChange" />
</a-form-model-item>
</a-col>
<a-col :xs="24" :sm="9" :md="9" :lg="9" :xl="8">
<a-col :xs="24" :sm="9" :md="9" :lg="9" :xl="7">
<a-form-model-item
class="from-label"
label="单证备注"
@ -588,7 +607,7 @@
@getInputChange="inputChange" />
</a-form-model-item>
</a-col>
<a-col :xs="24" :sm="6" :md="6" :lg="6" :xl="8">
<a-col :xs="24" :sm="6" :md="6" :lg="6" :xl="6">
<a-form-model-item
class="from-label"
label="申请箱使"
@ -1278,7 +1297,7 @@ export default {
} else if (type === 'shipagency') {
this.details.shipagency = res.name || ''
this.details.shipagencyid = res.code || ''
} else if (['sale', 'op', 'doc', 'custservice', 'route', 'lineManage'].includes(type)) {
} else if (['sale', 'op', 'doc', 'custservice', 'route', 'lineManage', 'subOp'].includes(type)) {
this.details[type] = res.name || ''
if (type == 'lineManage') {
this.details.lineManage = res.name || ''

@ -1052,31 +1052,36 @@
width="1300px"
v-model="cabinSpaceFlag"
title="引入舱位">
<a-form :model="cabinQueryForm" :label-col="{ span: 6 }" :wrapper-col="{ span: 18 }">
<a-form :model="cabinQueryForm" :label-col="{ span: 8 }" :wrapper-col="{ span: 16 }">
<a-row>
<a-col :span="6">
<a-col :span="5">
<a-form-item label="装货地">
<a-input v-model="cabinQueryForm.placereceipt" allow-clear placeholder="请输入装货地" />
</a-form-item>
</a-col>
<a-col :span="6">
<a-col :span="5">
<a-form-item label="交货地">
<a-input v-model="cabinQueryForm.placedelivery" allow-clear placeholder="请输入交货地" />
</a-form-item>
</a-col>
<a-col :span="6">
<a-col :span="5">
<a-form-item label="船名">
<a-input v-model="cabinQueryForm.VESSEL" allow-clear placeholder="请输入船名" />
</a-form-item>
</a-col>
<a-col :span="6">
<a-col :span="5">
<a-form-item label="订舱编号">
<a-input v-model="cabinQueryForm.SLOT_BOOKING_NO" allow-clear placeholder="请输入订舱编号" />
</a-form-item>
</a-col>
<a-col :span="4">
<a-form-item label="航次">
<a-input v-model="cabinQueryForm.VOYNO" allow-clear placeholder="请输入航次" />
</a-form-item>
</a-col>
</a-row>
<a-row>
<a-col :span="6">
<a-col :span="5">
<a-form-item label="承运模式">
<a-select v-model="cabinQueryForm.CARRIAGE_TYPE">
<a-select-option value="DIRECT_SHIP">
@ -1088,7 +1093,7 @@
</a-select>
</a-form-item>
</a-col>
<a-col :span="6">
<a-col :span="5">
<a-form-item label="订舱方式">
<a-select v-model="cabinQueryForm.BOOKING_SLOT_TYPE">
<a-select-option value="CONTRACT_ORDER">
@ -1100,7 +1105,7 @@
</a-select>
</a-form-item>
</a-col>
<a-col :span="6">
<a-col :span="5">
<a-form-item label="箱型箱量">
<a-select
mode="multiple"
@ -1113,7 +1118,7 @@
</a-select>
</a-form-item>
</a-col>
<a-col :span="6">
<a-col :span="5">
<div class="model-btn-list" style="margin-bottom: 0px;margin-left: 38px;margin-top: 3px;">
<a-button class="btn" type="primary" @click="getCabinList"></a-button>
<a-button class="btn" style="margin-left: 8px" @clikc="refshCabin"></a-button>
@ -1125,7 +1130,9 @@
:row-selection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange, type: 'radio', }"
:scroll="{ x: 1200, y: 500 }"
size="small"
:pagination="false"
:pagination="paginationCab"
:loading="cabLoad"
@change="tablePaginationChangeCab"
:columns="cabinColums"
:data-source="cabinList">
<div slot="vessel" slot-scope="text,record">{{ record.vessel }}/{{ record.voyno }}</div>
@ -1225,6 +1232,7 @@ export default {
cabinLoad: false,
cabinShow: true,
boxRemaining: '',
cabLoad: false,
boxTotal: '',
selectedRowKeys: [],
tearFlag: false,
@ -1408,6 +1416,13 @@ export default {
pageSizeOptions: ['1', '10', '20', '40', '80', '100'],
pageSize: 10
},
paginationCab: {
current: 1,
total: 0, //
showSizeChanger: true,
pageSizeOptions: ['1', '10', '20', '40', '80', '100'],
pageSize: 20
},
hisColums: [
{
title: '创建人',
@ -1847,9 +1862,12 @@ export default {
if (this.cabinQueryForm.ctN_STAT) {
this.cabinQueryForm.ctN_STAT = this.cabinQueryForm.ctN_STAT.join(',')
}
this.cabLoad = true
this.cabinQueryForm.PageSize = this.paginationCab.PageSize
this.cabinQueryForm.PageNo = this.paginationCab.current
BookingSlotGetAvailableSlots(this.cabinQueryForm).then(res => {
if (res.success) {
res.data.forEach(item => {
res.data.items.forEach(item => {
item.ctN_STAT = ''
if (item.ctnList) {
item.ctnListCopy = JSON.parse(JSON.stringify(item.ctnList))
@ -1859,10 +1877,12 @@ export default {
ite.maxNum = JSON.parse(JSON.stringify(ite.ctnnum))
})
})
this.cabinList = res.data
this.cabinList = res.data.items
this.paginationCab.total = res.data.totalCount
} else {
this.$message.error(res.message)
}
this.cabLoad = false
})
},
onSelectChange(selectedRowKeys) {
@ -1980,6 +2000,11 @@ export default {
this.pagination.pageSize = pagination.pageSize
this.getList()
},
tablePaginationChangeCab(pagination) {
this.paginationCab.current = pagination.current
this.paginationCab.pageSize = pagination.pageSize
this.getCabinList()
},
handleSearch() {
this.getList()
},
@ -2413,6 +2438,7 @@ export default {
this.getVgmLink()
} else if (type === 'cabinSpace') {
this.cabinSpaceFlag = true
this.cabinList = []
this.getCabinList()
}
},
@ -2881,7 +2907,15 @@ export default {
this.$emit('copy')
},
addChild() {
if (process.env.VUE_APP_TYPE === 'hechuan') {
if (!this.details.hblno) {
this.$message.error('请输入分提单号')
} else {
this.$emit('addSedList')
}
} else {
this.$emit('addSedList')
}
},
downLoadFile(type, type2) {
if (!this.id || !this.initCabinFrom.id) {

@ -657,6 +657,10 @@ export default {
this.$message.error('请输入分提单号')
return false
}
if (!this.editDetails.foreignAgent) {
this.$message.error('请输入境外代理')
return false
}
let basicFrom = true
this.$refs.basicInfo.$refs.basicFrom.validate((valid, err) => {
console.log(err)

@ -194,7 +194,7 @@ export default {
},
form: {},
firstFlag: false,
country:[],
country: [],
sortMixinForm: {
column: 'CabinInventory_list_column',
setting: 'CabinInventorySetting',
@ -248,7 +248,7 @@ export default {
title: '取消库存',
align: 'center',
width: '100',
field: 'portdischarge'
field: 'canceL_NUM'
},
{
title: '收货地',
@ -274,6 +274,12 @@ export default {
width: '100',
field: 'placedelivery'
},
{
title: '卸货港国家',
align: 'center',
width: '100',
field: 'portdischargE_COUNTRY'
},
{
title: 'WEEK',
align: 'center',
@ -370,7 +376,7 @@ export default {
title: '取消库存',
align: 'center',
width: '100',
field: 'portdischarge'
field: 'canceL_NUM'
},
{
title: '收货地',
@ -396,6 +402,12 @@ export default {
width: '100',
field: 'placedelivery'
},
{
title: '卸货港国家',
align: 'center',
width: '100',
field: 'portdischargE_COUNTRY'
},
{
title: 'WEEK',
align: 'center',
@ -549,7 +561,6 @@ export default {
contracT_NO: row.contracT_NO,
portloadid: row.portloadid,
portdischargeid: row.portdischargeid,
placedelivery: row.placedelivery,
bookinG_SLOT_TYPE: row.bookinG_SLOT_TYPE,
carrierid: row.carrierid
}

@ -94,7 +94,7 @@
</a-col>
<a-col :span="6">
<a-form-model-item label="卖价">
<a-input v-model="item.sellinG_PRICE" size="small" />
<a-input-number :precision="2" v-model="item.sellinG_PRICE" size="small" />
</a-form-model-item>
</a-col>
<a-col :span="6">
@ -261,7 +261,7 @@
</a-col>
<a-col :span="6">
<a-form-model-item label="weeKAT">
<a-input v-model="form.weeK_AT" />
<a-input-number style="width: 100%;" :precision="0" v-model="form.weeK_AT" />
</a-form-model-item>
</a-col>
<a-col :span="6">
@ -271,7 +271,7 @@
</a-col>
<a-col :span="6">
<a-form-model-item label="计费时间">
<a-input v-model="form.pricE_CALCULATION_DATE" />
<a-date-picker show-time v-model="form.pricE_CALCULATION_DATE" />
</a-form-model-item>
</a-col>
</a-row>

@ -162,6 +162,20 @@
</a-select>
</a-form-item>
</a-col>
<a-col :span="4">
<a-form-item label="标签">
<a-select
mode="multiple"
style="width: 100%"
:filter-option="filterOption"
v-model="form.labelIdArray"
>
<a-select-option v-for="(item, i) in labelList" :key="i" :value="item.id">
{{ item.name }}
</a-select-option>
</a-select>
</a-form-item>
</a-col>
</a-row>
</a-form>
</div>
@ -179,6 +193,7 @@
<a-button type="primary">导入</a-button>
</a-upload>
<a-button type="danger">作废</a-button>
<a-button type="primary" style="margin-left: 100px;" @click="handleLabel"></a-button>
<!-- <a-button type="primary" @click="handleSendAll"></a-button> -->
</div>
<div>
@ -240,6 +255,9 @@
<template #etd="{ row }">
<span>{{ row.etd ? row.etd.substring(0, 10) : '' }}</span>
</template>
<template #labelList="{ row }">
<a-tag :color="item.color" v-for="(item, index) in row.labelList" :key="index">{{ item.name }}</a-tag>
</template>
<template #pager>
<vxe-pager
@ -252,6 +270,20 @@
</template>
</vxe-grid>
</a-card>
<a-modal width="800px" @ok="handleSubmitLabel" v-model="visible" title="分配标签" @cancel="visible = false">
<a-spin :spinning="labelLoad">
<a-select
mode="multiple"
style="width: 100%"
:filter-option="filterOption"
v-model="labelIdArray"
>
<a-select-option v-for="(item, i) in labelList" :key="i" :value="item.id">
{{ item.name }}
</a-select-option>
</a-select>
</a-spin>
</a-modal>
<generation ref="generation"></generation>
</div>
</template>
@ -261,7 +293,9 @@ import {
BookingSlotDelete,
ImportSlotFromFile,
CreateBooking0rder,
slotSendEmail
slotSendEmail,
BookingLabelList,
BookingLabelBind
} from '@/api/modular/main/CompanySiteaccount'
import { mapGetters } from 'vuex'
import {
@ -292,12 +326,15 @@ export default {
labelField: 'sloT_BOOKING_NO'
},
loading: false,
labelList: [],
setVisible: false,
labelIdArray: [],
CreateData: {
customerContactId: []
},
UserList: [],
customerByList: [],
visible: false,
CustomerList: [],
SlotVisible: false,
userInfoList: [],
@ -327,6 +364,7 @@ export default {
STATUS: '1'
},
slotEdit: {},
labelLoad: false,
ColumnsQuery: [],
columns: [
{
@ -334,6 +372,13 @@ export default {
width: 60,
noDraggable: true
},
{
title: '标签',
align: 'center',
width: '100',
field: 'labelList',
slots: { default: 'labelList' }
},
{
title: '订舱编号',
align: 'center',
@ -448,6 +493,18 @@ export default {
width: '180',
field: 'placedelivery'
},
{
title: '装货港',
align: 'center',
width: '180',
field: 'portload'
},
{
title: '卸货港',
align: 'center',
width: '180',
field: 'portdischarge'
},
{
title: '箱型箱量',
align: 'center',
@ -502,7 +559,7 @@ export default {
{
title: '重量(KGS)',
align: 'center',
width: '100',
width: '120',
sortable: true,
field: 'WEIGHKGS'
},
@ -620,6 +677,13 @@ export default {
width: 60,
noDraggable: true
},
{
title: '标签',
align: 'center',
width: '100',
field: 'labelList',
slots: { default: 'labelList' }
},
{
title: '订舱编号',
align: 'center',
@ -734,6 +798,18 @@ export default {
width: '180',
field: 'placedelivery'
},
{
title: '装货港',
align: 'center',
width: '180',
field: 'portload'
},
{
title: '卸货港',
align: 'center',
width: '180',
field: 'portdischarge'
},
{
title: '箱型箱量',
align: 'center',
@ -788,7 +864,7 @@ export default {
{
title: '重量(KGS)',
align: 'center',
width: '100',
width: '120',
sortable: true,
field: 'WEIGHKGS'
},
@ -918,6 +994,9 @@ export default {
},
mounted() {
this.getConfigStart()
BookingLabelList({ scope: 1 }).then(res => {
this.labelList = res.data
})
},
methods: {
FnTurnD(data) {
@ -936,6 +1015,25 @@ export default {
return false
}
},
handleSubmitLabel() {
const select = this.$refs.table.getCheckboxRecords()
const pkIdArr = select.map((item, index) => {
return item.id
})
const data = {
labelIdArray: this.labelIdArray,
businessIdArray: pkIdArr
}
BookingLabelBind(data).then(res => {
if (res.success) {
this.$message.success('分配成功')
this.visible = false
this.getList()
} else {
this.$message.error(res.message)
}
})
},
customRequest(data) {
this.isUpload = true;
this.percent = 0;
@ -981,7 +1079,7 @@ export default {
const arr = ['salE_TIME', 'sellinG_PRICE', 'goodsname', 'shipper', 'sale', 'custservice', 'customername']
const fields = [];
const cellValue = row[column.property];
if ((cellValue && !arr.includes(column.property)) || column.type === 'checkbox' || column.field === 'caozuo') {
if ((!arr.includes(column.property)) || column.type === 'checkbox' || column.field === 'caozuo') {
const prevRow = visibleData[_rowIndex - 1];
let nextRow = visibleData[_rowIndex + 1];
if (prevRow && prevRow.id === row.id) {
@ -1013,6 +1111,27 @@ export default {
this.CustomerList = res.data.rows
})
},
handleLabel() {
const select = this.$refs.table.getCheckboxRecords()
const pkIdArr = select.map((item, index) => {
return item.id
})
if (pkIdArr.length === 0) {
this.$message.error('请选择要分配的数据')
return false
}
this.visible = true
this.labelLoad = true
BookingLabelList({ scope: 1 }).then(res => {
this.labelList = res.data
this.labelLoad = false
})
},
filterOption(input, option) {
return (
option.componentOptions.children[0].text.toLowerCase().indexOf(input.toLowerCase()) >= 0
);
},
ChangeCustomer(e) {
this.customerByList = []
this.CreateData.customerContactId = []

@ -0,0 +1,566 @@
<template>
<div>
<a-card :bordered="false" :bodyStyle="tstyle">
<div class="table-page-search-wrapper" :class="advanced ? 'Open' : 'Close'">
<a-form :model="form" :label-col="{ span: 7 }" :wrapper-col="{ span: 17 }">
<a-row>
<a-col :span="6">
<a-form-item label="标签名称">
<a-input v-model="form.name" allow-clear placeholder="请输入标签名称" />
</a-form-item>
</a-col>
<a-col :span="6">
<a-form-item label="标签使用范围">
<a-select v-model="form.scope">
<a-select-option :value="1">
舱位
</a-select-option>
</a-select>
</a-form-item>
</a-col>
</a-row>
</a-form>
</div>
</a-card>
<a-card :bordered="false">
<div style="margin-bottom: 10px;display: flex;justify-content: space-between;">
<div>
<a-button type="primary" @click="handleAdd"></a-button>
</div>
<div>
<a-button type="primary" @click="getList"></a-button>
<a-button style="margin-left: 8px" @click="init"></a-button>
<!-- <tableSort @columnChange="handleColumnChange" :columns="columns" :columnsAll="columnsAll"></tableSort> -->
</div>
</div>
<vxe-grid
:data="loadData"
stripe
resizable
round
ref="table"
border
:columns="columns"
:loading="loading"
:height="tableHeight"
empty-text="没有更多数据了!">
<template #caozuo="{ row }">
<a-icon type="form" style="cursor: pointer;" @click="handleEdit(row)" :style="{ color: '#13c2c2' }" />
<a-popconfirm
title="请确认删除?"
ok-text="是"
cancel-text="否"
@confirm="e => {
confirm(e, row)
}
">
<a-icon type="delete" style="margin: 0 8px;" :style="{ color: '#13c2c2' }" />
</a-popconfirm>
</template>
<template #scope="{ row }">
<span v-if="row.scope == 1"></span>
</template>
<template #pager>
<vxe-pager
:current-page="queryParam.PageNo"
:page-size="queryParam.pageSize"
:total="queryParam.totalCount"
:layouts="['PrevPage', 'JumpNumber', 'NextPage', 'FullJump', 'Sizes', 'Total']"
@page-change="tablePaginationChange">
</vxe-pager>
</template>
</vxe-grid>
<a-modal width="800px" @ok="handleOk" v-model="visible" :title="title" @cancel="visible = false">
<a-row style="margin-bottom: 15px;">
<span style="display: inline-block;width: 120px;">标签名称</span><a-input
style="display: inline-block;width: 80%;"
v-model="labelData.name"
size="small"></a-input>
</a-row>
<a-row>
<span style="display: inline-block;width: 115px;">标签使用范围</span> <a-select
size="small"
style="display: inline-block;width: 80%;"
v-model="labelData.scope">
<a-select-option :value="1">
舱位
</a-select-option>
</a-select>
</a-row>
<a-row>
<span style="display: inline-block;width: 120px;">选择颜色</span>
<a-input style="display: inline-block;width: 10%;margin-top: 15px;" type="color" v-model="labelData.color"></a-input>
</a-row>
</a-modal>
</a-card>
</div>
</template>
<script>
import {
BookingLabelPageList,
BookingLabelDelete,
ImportSlotFromFile,
CreateBooking0rder,
slotSendEmail,
BookingLabelSave
} from '@/api/modular/main/CompanySiteaccount'
import { mapGetters } from 'vuex'
import { DjyCustomerSuggest, GetSysUserPage, DjyCustomerContacts } from '@/api/modular/main/BookingLedger'
import columnSetting from '@/components/tableColumnSetting'
import tableSort from '@/components/tableSort'
import generation from '@/components/generation'
export default {
components: {
columnSetting, tableSort, generation
},
computed: {
...mapGetters([
'ctnallList'
])
},
data() {
return {
TypeData: [],
// /
advanced: false,
tableHeight: 0,
expandConfig: {
labelField: 'sloT_BOOKING_NO'
},
labelData: {
scope: 1
},
loading: false,
setVisible: false,
CreateData: {
customerContactId: []
},
visible: false,
UserList: [],
customerByList: [],
title: '',
CustomerList: [],
SlotVisible: false,
userInfoList: [],
setVisible1: false,
fetching: false,
queryParam: {
PageNo: 1,
pageSize: 10,
totalCount: 1
},
bookingServiceItem: [],
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 }
},
form: {
STATUS: '1'
},
slotEdit: {},
ColumnsQuery: [],
columns: [
{
title: '标签名称',
align: 'center',
field: 'name'
},
{
title: '标签使用范围',
align: 'center',
field: 'scope',
slots: { default: 'scope' }
},
{
title: '操作',
align: 'center',
field: 'caozuo',
slots: { default: 'caozuo' },
width: 100
}
],
tstyle: { 'padding-bottom': '0px', 'margin-bottom': '10px' },
// Promise
loadData: []
}
},
created() {
this.tableHeight = document.body.clientHeight - 320
},
mounted() {
this.getList()
},
methods: {
FnTurnD(data) {
let Rdata = ''
this.TypeData.forEach(item => {
if (item.code == data) {
Rdata = item.name
}
})
return Rdata
},
expandVisibleMethod({ row }) {
if (row.bookingSlotSaleInfoList && row.bookingSlotSaleInfoList.length > 0) {
return true
} else {
return false
}
},
customRequest(data) {
this.isUpload = true;
this.percent = 0;
const formData = new FormData()
formData.append('file', data.file)
this.loading = true
ImportSlotFromFile(formData, (percent) => this.setUploadProcess(percent)).then((res) => {
if (res.data.succ) {
this.$message.success('上传成功')
this.getList()
} else {
this.$message.error('上传失败:' + res.data.msg)
}
})
},
checkboxChangeEvent() {
console.log('== 选中,取消选中 ==', this.$refs.table.getCheckboxRecords())
},
toggleAdvanced() {
this.advanced = !this.advanced
},
handledbclick(row) {
},
handleSendAll() {
const select = this.$refs.table.getCheckboxRecords()
const pkIdArr = select.map((item, index) => {
return item.id
})
if (pkIdArr.length == 0) {
this.$message.error('请选择要发送的记录')
return false
}
slotSendEmail(pkIdArr).then(res => {
if (res.data.succ) {
this.$message.success('发送成功')
} else {
this.$message.error(res.data.msg)
}
})
},
tablePaginationChange({ currentPage, pageSize }) {
this.queryParam.PageNo = currentPage
this.queryParam.PageSize = pageSize
this.queryParam.pageNo = currentPage
this.queryParam.pageSize = pageSize
this.getList()
},
handleOpenSlot(row) {
this.$refs.generation.init(row)
},
init() {
this.form = {}
},
handlePageChange({ currentPage, pageSize }) {
this.queryParam.PageNo = currentPage
this.queryParam.pageSize = pageSize
this.getList()
},
SearchCustomer(e) {
DjyCustomerSuggest({ keyword: e, type: 'consignor' }).then(res => {
this.CustomerList = res.data.rows
})
},
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
})
},
getList() {
this.loading = true
this.form.pageSize = this.queryParam.pageSize
this.form.PageNo = this.queryParam.PageNo
BookingLabelPageList(this.form).then(res => {
if (res.success) {
this.loadData = res.data.items
this.queryParam.PageNo = res.data.pageNo
this.queryParam.pageSize = res.data.pageSize
this.queryParam.totalCount = res.data.totalCount
} else {
this.$message.error(res.message)
}
this.loading = false
})
},
switchingDate() {
const obj = JSON.parse(JSON.stringify(this.queryParam))
return obj
},
confirm(e, data) {
this.DjyWebsiteAccountConfigDeleteTenant(data)
},
DjyWebsiteAccountConfigDeleteTenant(record) {
BookingLabelDelete([record.id]).then(res => {
if (res.success) {
this.$message.success('删除成功')
this.getList()
} else {
this.$message.error(`删除失败,${res.message}`)
}
})
},
ChangeCustomerList(e) {
this.customerByList.forEach(item => {
if (item.id == e) {
this.CreateData.customerContactName = item.name
}
})
},
handleOk1() {
const projectList = []
this.bookingServiceItem.forEach(item => {
if (item.isYield) {
projectList.push(item.serviceProjectCode)
}
})
const ApiData = {
slotId: this.slotEdit.id,
projectList,
...this.CreateData
}
console.log(ApiData)
CreateBooking0rder(ApiData).then(res => {
if (res.success) {
this.SlotVisible = false
this.$message.success(res.message)
} else {
this.$message.error(res.message)
}
})
},
SearchUser(e) {
console.log(e)
// consignor
// booking_agent
GetSysUserPage({ name: e }).then(res => {
this.UserList = res.data
})
},
ChangeUser(e, Tname) {
this.UserList.forEach(item => {
if (item.id == e) {
console.log(e)
this.CreateData[Tname] = item.name
}
})
},
handleOk() {
if (!this.labelData.name) {
this.$message.error('请输入标签名称')
return false
}
const data = {
...this.labelData
}
BookingLabelSave(data).then(res => {
if (res.success) {
this.$message.success('操作成功')
this.getList()
this.visible = false
} else {
this.$message.error(res.message)
}
})
},
handleAdd() {
this.visible = true
this.title = '新增标签'
this.labelData = {
scope: 1
}
},
handleChangeUser(val) {
const arr = []
this.customerByList.forEach(item => {
val.forEach(ite => {
if (item.id == ite) {
arr.push(item)
}
})
})
this.userInfoList = arr
},
handleEdit(row) {
this.visible = true
this.labelData = JSON.parse(JSON.stringify(row))
this.title = '编辑标签'
}
}
}
</script>
<style lang="less" scoped>
@import url('../BookingLedger/detail/style/rightContent.less');
.table-operator {
margin-bottom: 18px;
}
button {
margin-right: 8px;
}
.Open {}
.Close {
height: 45px;
overflow: hidden;
}
.vxe-table--render-default .vxe-body--row.row--stripe {
background: #f5f9fe;
}
.ant-card-body {
padding-top: 10px;
}
.nav-box {
padding: 0 10px;
.nav {
display: inline-block;
margin-right: 8px;
cursor: pointer;
border: 1px solid rgba(255, 255, 255, 0);
padding: 0 10px;
height: 28px;
line-height: 26px;
.iconfont {
margin-right: 6px;
}
&:hover {
border: 1px solid rgba(255, 255, 255, 0);
border-radius: 4px;
}
&:nth-of-type(1) {
.iconfont {
color: #1d8aff;
}
&:hover {
background: #fff;
box-shadow: 0 0 10px #eee;
}
}
&:nth-of-type(2) {
.iconfont {
color: #865ef8;
}
&:hover {
background: #fff;
box-shadow: 0 0 10px #eee;
}
}
&:nth-of-type(3) {
.iconfont {
color: #ff9702;
}
&:hover {
background: #fff;
box-shadow: 0 0 10px #eee;
}
}
&:nth-of-type(4) {
.iconfont {
color: #1d8aff;
}
&:hover {
background: #fff;
box-shadow: 0 0 10px #eee;
}
}
&:nth-of-type(5) {
.iconfont {
color: #ff1062;
}
&:hover {
background: #fff;
box-shadow: 0 0 10px #eee;
}
}
&:nth-of-type(6) {
.iconfont {
color: #1ebeca;
}
&:hover {
background: #fff;
box-shadow: 0 0 10px #eee;
}
}
&:nth-of-type(7) {
.iconfont {
color: #82c93d;
}
&:hover {
background: #fff;
box-shadow: 0 0 10px #eee;
}
}
&:nth-of-type(8) {
.iconfont {
color: #1d8aff;
}
&:hover {
background: #fff;
box-shadow: 0 0 10px #eee;
}
}
}
}
/deep/ .ant-form-item {
margin-bottom: 0px !important;
}
</style>

@ -16,11 +16,13 @@
</div>
<div class="content">
<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 class="row">
<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 class="row">
<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-date-picker show-time v-model="manualDeadLineDate" />
</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>
</template>
<script>
@ -413,25 +460,42 @@ import {
SaveDetai1Container,
PushShareLink,
GenShareLink,
GetUserFeedBack
GetUserFeedBack,
GetToShipSelect,
GetRollingNominationNoticeReview,
SendRollingNominationNotice
} from '@/api/modular/main/TaskmanageList'
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 {
data() {
return {
CustomerList: [],
CreateData: {},
ctnCode: '',
sendFlag: false,
toShipPKId: '',
manualDeadLineDate: '',
templateId: 0,
ctnChangeFlag: false,
UserId: '',
confirmDeadLine: '',
dateFlag: false,
sendLoad: false,
tempList: [],
fromToList: [],
selectedRowKeys: [],
carrierId: '',
value: '',
sendShip: {
fromShip: {},
toShipList: []
},
selectedRowKeysTable: [],
getloadDetailList: [],
tableLoad: false,
@ -778,6 +842,7 @@ export default {
ctnFlag: false,
userRow: '',
userFlag: false,
sendHtml: '',
totalCtn: '',
rollingPlanList: [],
nominationId: '',
@ -847,15 +912,55 @@ export default {
})
},
handleSendNotice() {
const newList = Array.from(new Set(this.selectedRowKeysTable))
console.log(this.selectedRowKeysTable, newList)
PushShareLink(newList).then(res => {
const data = {
cateCode: 'rolling_nomination_notice_template',
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) {
this.$message.success('操作成功')
this.sendHtml = res.data.ext
} else {
this.$message.error(res.data.msg)
}
})
})
.catch(error => {
console.error('Error fetching data:', error);
});
},
handleRefshPage() {
this.getList()
@ -890,26 +995,29 @@ export default {
onSelectChangeTable(selectedRowKeys) {
this.selectedRowKeysTable = selectedRowKeys;
},
handleClick(index) {
this.sendShip.toShipList.forEach(item => {
item.active = false
})
this.sendShip.toShipList[index].active = true
this.$forceUpdate()
},
handleSaveDate() {
if (!this.manualDeadLineDate) {
this.$message.warning('请先选择')
return false
}
this.tableLoad = true
const data = {
dispatchBatchId: this.dateRow.batchId,
isRenew: true,
manualDeadLineDate: this.manualDeadLineDate
taskId: this.$route.query.taskPKId,
templateId: this.templateId,
fromShipPKId: this.sendShip.fromShip.pkId,
toShipPKId: this.toShipPKId
}
GenShareLink(data).then(res => {
this.sendLoad = true
SendRollingNominationNotice(data).then(res => {
if (res.data.succ) {
this.$message.success('操作成功')
this.dateFlag = false
this.getList()
this.$message.success('发送成功')
this.sendFlag = false
} else {
this.$message.error(res.data.msg)
}
this.tableLoad = false
this.sendLoad = false
})
},
mergeCells(text, data, key, index) {
@ -1087,6 +1195,42 @@ export default {
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) {
this.tableLoad = true
TaskManageRolingWominationGetUrl({ dispatchBatchId: row.batchId }).then(res => {
@ -1249,6 +1393,7 @@ export default {
display: flex;
align-items: center;
margin-top: 15px;
.box {
.box-title {
@ -1280,7 +1425,6 @@ export default {
font-size: 13px;
color: black;
padding: 5px;
height: 88px;
img {
margin-right: 5px;
@ -1291,13 +1435,17 @@ export default {
align-items: center;
margin-bottom: 5px;
}
&.active {
border: 1px solid rgb(45, 45, 218);
}
}
.middle {
background: rgba(202, 249, 130, 1);
text-align: center;
height: 88px;
min-width:65px;
min-width: 65px;
font-size: 18px;
margin-top: 31px;
line-height: 88px;
@ -1307,7 +1455,7 @@ export default {
background: yellow;
text-align: center;
height: 88px;
min-width:35px;
min-width: 35px;
font-size: 18px;
margin-top: 31px;
line-height: 88px;
@ -1400,4 +1548,13 @@ export default {
color: green;
}
}
.send-left {
border-right: 1px dashed rgb(185, 184, 184);
padding-right: 10px;
}
/deep/ .ant-radio-button-wrapper {
height: auto !important;
}
</style>

@ -3,9 +3,8 @@
title="新增配置"
:width="1100"
:visible="visible"
:confirmLoading="confirmLoading"
@ok="handleSubmit"
@cancel="handleCancel"
:confirmLoading="confirmLoading"
>
<a-spin :spinning="confirmLoading">
<a-form :form="form">
@ -226,6 +225,11 @@
</a-row>
</a-form>
</a-spin>
<template slot="footer">
<a-button type="danger" @click="handleCancel"></a-button>
<a-button type="primary" @click="handleCopySave"></a-button>
<a-button type="primary" @click="handleSubmit"></a-button>
</template>
</a-modal>
</template>
@ -312,7 +316,96 @@ export default {
this.yardData = res.data
})
},
handleCopySave() {
const {
form: { validateFields }
} = this
this.confirmLoading = true
validateFields((errors, values) => {
console.log(values)
if (!errors) {
for (const key in values) {
if (typeof values[key] === 'object' && !(values[key] === null)) {
values[key] = JSON.stringify(values[key])
}
}
if (this.portLoadingData.length) {
this.portLoadingData.forEach(item => {
if (item.code == values.portLoadingId) {
values.portLoading = item.enName
}
})
}
if (this.portTransitData.length) {
this.portTransitData.forEach(item => {
if (item.code == values.portTransitId) {
values.portTransit = item.enName
}
})
}
if (this.portDischargeData.length) {
this.portDischargeData.forEach(item => {
if (item.code == values.portDischargeId) {
values.portDischarge = item.enName
}
})
}
if (this.carrierData.length) {
this.carrierData.forEach(item => {
if (item.code == values.carrierid) {
values.carrier = item.cnName
}
})
}
if (this.yardData.length) {
this.yardData.forEach(item => {
if (item.code == values.yardCode) {
values.yard = item.name
}
})
}
DjyVesselInfoServiceAddOrUpdate(values)
.then(res => {
if (res.success) {
this.$message.success('新增成功')
this.confirmLoading = false
this.$emit('ok', values)
this.edit(values)
} else {
this.$message.error(`新增失败,${res.message}`)
}
})
.finally(res => {
this.confirmLoading = false
})
} else {
this.confirmLoading = false
}
})
},
edit(record) {
this.data = record
setTimeout(() => {
this.form.setFieldsValue({
vessel: record.vessel,
voyno: record.voyno,
portTransitId: record.portTransitId,
portDischargeId: record.portDischargeId,
portTransit: record.portTransit,
portDischarge: record.portDischarge,
etd: record.etd,
closingDate: record.closingDate,
eta: record.eta,
yard: record.yard,
ygtETD: record.ygtETD,
yardCode: record.yardCode,
atd: record.atd,
carrierid: record.carrierid,
voynoInside: record.voynoInside,
closeDocTime: record.closeDocTime
})
}, 100)
},
/**
* 提交表单
*/

Loading…
Cancel
Save