修改问题

master
sunzehua 1 year ago
parent 8b1023912d
commit bd656fb63d

@ -1082,3 +1082,50 @@ export function yardLetterYardHis (parameter) {
params: parameter
})
}
export function GetSeryiceProjectList (parameter) {
return axios({
url: '/BookingValueAdded/GetServiceProjectList',
method: 'post',
data: parameter
})
}
export function SaveServiceProject (parameter) {
return axios({
url: '/BookingValueAdded/SaveServiceProject',
method: 'post',
data: parameter
})
}
export function CancelSeryiceProject (parameter) {
return axios({
url: '/BookingValueAdded/CancelServiceProject',
method: 'post',
data: parameter
})
}
export function GetServiceStatusList (parameter) {
return axios({
url: '/BookingValueAdded/GetServiceStatusList',
method: 'post',
data: parameter
})
}
export function SaveServiceStatus (parameter) {
return axios({
url: '/BookingValueAdded/SaveServiceStatus',
method: 'post',
data: parameter
})
}
export function CancelServiceStatus (parameter) {
return axios({
url: '/BookingValueAdded/CancelServiceStatus',
method: 'post',
data: parameter
})
}

@ -48,7 +48,7 @@ export default {
onEdit(targetKey, action) {
const _that = this
if (targetKey.includes('BookingDetail')) {
console.log(Object.keys(this.needSavePages).includes(targetKey), this.needSavePages[targetKey].details, this.needSavePages[targetKey].hbList)
console.log(Object.keys(this.needSavePages).includes(targetKey), this.needSavePages[targetKey], this.needSavePages[targetKey])
if (
Object.keys(this.needSavePages).includes(targetKey) &&
(this.needSavePages[targetKey].details || this.needSavePages[targetKey].hbList)

@ -37,6 +37,7 @@ const constantRouterComponents = {
TaskOriginalLost: () => import('@/views/main/Taskmanage/TaskOriginalLost'),
TaskChangeShip: () => import('@/views/main/Taskmanage/TaskChangeShip'),
BcFileDetail: () => import('@/views/main/Taskmanage/BcFileDetail'),
BookingDetailTest: () => import('@/views/main/BookingLedger/detail/BookingDetailTest'),
BookingCustomerDetail: () => import('@/views/main/BookingCustomerLedger/detail')
}

@ -28,6 +28,7 @@ const getters = {
ctnallList: state => state.booking.ctnallList,
copyPages: state => state.booking.copyPages,
saveNeedNumber: state => state.booking.saveNeedNumber,
deleteId: state => state.booking.deleteId,
saveNeedCar: state => state.booking.saveNeedCar,
lineList: state => state.booking.lineList,
bookingInitData: state => state.booking.bookingInitData,

@ -20,6 +20,7 @@ const booking = {
copyPages: { number: 0, path: '' },
yardList: [],
saveNeedNumber: '',
deleteId:'',
saveFlag: false,
packageList: [],
issuetypeList: [],
@ -109,6 +110,9 @@ const booking = {
SET_SAVENEEDNUMBER: (state, id) => {
state.saveNeedNumber = id
},
SET_DELETEID: (state, id) => {
state.deleteId = id
},
SET_SAVENEEDCar: (state, id) => {
state.saveNeedCar = id
}

File diff suppressed because it is too large Load Diff

@ -1190,9 +1190,6 @@ export default {
})
.then(res => {
if (res.success) {
if (res.data.statuslog) {
res.data.statuslog = res.data.statuslog.reverse()
}
this.$set(this, 'bookingDetails', { ...this.bookingDetails, ...res.data })
setTimeout(() => {
this.checkSaveFun({ type: 'details', hasChange: false })
@ -1800,6 +1797,7 @@ export default {
const removeIcon = document.getElementsByClassName('ant-tabs-tab-active')[0].getElementsByTagName('i')[0]
removeIcon.click()
this.$forceUpdate()
this.$store.commit('SET_DELETEID', this.bookingDetails.id)
} else {
this.$message.error(res.message)
}

@ -818,6 +818,11 @@ export default {
this.details.goodsname = res.goodsNameEN || ''
} else if (type === 'cargoid') {
this.details.cargoid = res.code || ''
if (res.code == 'R') {
this.rules['description'][0].required = true
} else {
this.rules['description'][0].required = false
}
} else if (['kindpkgs'].includes(type)) {
this.details.kindpkgs = res['name'] || ''
const enCapitalRes = this.SetTOTALNO(this.details.pkgs)

@ -114,6 +114,7 @@
:details="editDetails"
:rules="tableRules"
isParent="parent"
@changectnall="changectnall"
@changeDetail="changeDetailFun"
@changeTotal="changeTotalFun"
@changeCtnInfo="changeCtnInfoFun">
@ -583,7 +584,7 @@ export default {
var o2keys = Object.keys(object2)
if (o2keys.length !== o1keys.length) return false
for (let i = 0; i <= o1keys.length - 1; i++) {
let key = o1keys[i]
const key = o1keys[i]
if (!o2keys.includes(key)) return false
if (object2[key] !== object1[key]) return false
}
@ -598,13 +599,27 @@ export default {
this.editDetails.kgs = val || this.editDetails.kgs
} else if (type === 'totalPkgs') {
this.editDetails.pkgs = val || this.editDetails.pkgs
const enCapitalRes = this.$refs.cargoInfo.SetTOTALNO(this.editDetails.pkgs)
this.editDetails.totalno = enCapitalRes
} else if (type === 'totalCbm') {
this.editDetails.cbm = val || this.editDetails.cbm
}
},
changectnall(arr) {
let str = ''
arr.forEach((item, index) => {
str += item.ctnall + '*' + item.ctnnum
if (index != arr.length - 1) {
str += '/'
}
})
this.editDetails.cntrtotal = str
},
changeCtnInfoFun({ type, val }) {
if (type === 'kindpkgs') {
this.editDetails.kindpkgs = val
const enCapitalRes = this.$refs.cargoInfo.SetTOTALNO(this.editDetails.pkgs)
this.editDetails.totalno = enCapitalRes
}
},
bookingOrderSave() {

@ -145,6 +145,15 @@
color: #fff;
}
}
.items1{
border: 0px ;
padding:0px ;
margin: 0px ;
margin-right: 5px;
&.active {
padding: 0 8px;
}
}
.remark {
padding-bottom: 8px;
display: flex;

@ -11,7 +11,7 @@
<a-col
:md="6"
:lg="6"
:xl="!advanced?3:4"
:xl="!advanced ? 3 : 4"
:key="findex"
v-show="(findex < 6 && !advanced) || advanced"
class="from-label">
@ -29,7 +29,7 @@
</a-form-item>
</a-col>
</template>
<a-col style="padding: 0px;" :xl="!advanced?6:8" :lg="24" :md="24" :sm="24">
<a-col style="padding: 0px;" :xl="!advanced ? 6 : 8" :lg="24" :md="24" :sm="24">
<span
class="table-page-search-submitButtons"
:style="(advanced && { float: 'right', overflow: 'hidden' }) || {}">
@ -94,9 +94,9 @@
<div class="nav"><i class="iconfont icon-shanchu2"></i>删除</div>
</a-popconfirm>
<div class="nav"><i class="iconfont icon-shishijifei"></i>定时订舱</div>
<div class="nav" @click="handleRefshYZ">
<!-- <div class="nav" @click="handleRefshYZ">
<a-spin :spinning="refshYZloading"><i class="iconfont icon-shishijifei"></i>刷新运踪</a-spin>
</div>
</div> -->
<div class="nav"><i class="iconfont icon-xiaopiaodayin"></i>小票状态</div>
<div class="nav" @click="openTraceModel"><i class="iconfont icon-yunshu1"></i>运踪订阅</div>
<div class="nav">
@ -141,7 +141,7 @@
v-bind="gridOptions"
row-class-name="line-box"
:height="tableHeight"
:row-config="{ isHover: true,isCurrent: true }"
:row-config="{ isHover: true, isCurrent: true }"
:checkbox_config="{ checkField: 'checked' }"
:checkbox-config="{ highlight: true }"
:scroll-x="{ gt: 10, oSize: 10, enabled: false }"
@ -206,7 +206,11 @@
</template>
<template #atd="{ row, rowIndex }">
<a-spin :spinning="row.atdLoading">
<a-icon v-if="!row.atd" style="cursor: pointer;" @click="handleRefshAtd(row, rowIndex)" type="reload" />
<a-icon
v-if="!row.atd"
style="cursor: pointer;"
@click="handleRefshAtd(row, rowIndex)"
type="reload" />
<span v-if="row.atd"> {{ row.atd.substring(0, 10) }}</span>
</a-spin>
</template>
@ -229,9 +233,16 @@
</template>
<template #bookstatus="{ row, column, rowIndex }">
<div style="display: flex;align-items: center;">
<a-icon v-if="row.isBookingYZ!=0" style="cursor: pointer;color: rgb(7, 231, 56);" @click="handleRefshYZOnce(row, rowIndex)" type="reload" />
<a-icon
v-if="row.isBookingYZ != 0"
style="cursor: pointer;color: rgb(7, 231, 56);"
@click="handleRefshYZOnce(row, rowIndex)"
type="reload" />
<a-spin :spinning="row.refshYzitemLoad">
<div :style="row.isBookingYZ==0?'padding-left:14px':''" class="billtrace-box" :class="column.resizeWidth > 240 ? 'normal-box' : 'flex-box'">
<div
:style="row.isBookingYZ == 0 ? 'padding-left:14px' : ''"
class="billtrace-box"
:class="column.resizeWidth > 240 ? 'normal-box' : 'flex-box'">
<div
class="billtrace-btn"
v-for="(btn, bindex) in row.bookstatus"
@ -348,25 +359,43 @@
{{ row.dzRemark }}
</template>
<div style="display: flex;align-items: center;">
<a-input @blur="getBlurMark(row,'rowDzMark')" @focus="getFocusMark(row,'rowDzMark')" style="margin-top: 0px;" v-model="row.dzRemark">
<a-input
@blur="getBlurMark(row, 'rowDzMark')"
@focus="getFocusMark(row, 'rowDzMark')"
style="margin-top: 0px;"
v-model="row.dzRemark">
</a-input>
<a-icon v-show="row.rowDzMark" style="cursor: pointer;margin-left: 5px;color:#36cfc9;" @mousedown.native="handleSaveMark(row,1)" type="check-circle" theme="filled" />
<a-icon
v-show="row.rowDzMark"
style="cursor: pointer;margin-left: 5px;color:#36cfc9;"
@mousedown.native="handleSaveMark(row, 1)"
type="check-circle"
theme="filled" />
</div>
</a-popover>
</a-spin>
</template>
<template #czRemark="{ row }">
<div >
<div>
<a-spin :spinning="row.czmarkLoading">
<a-popover placement="topLeft">
<template slot="content">
{{ row.czRemark }}
</template>
<div style="display: flex;align-items: center;">
<a-input @blur="getBlurMark(row,'rowCzMark')" @focus="getFocusMark(row,'rowCzMark')" style="margin-top: 0px;" v-model="row.czRemark">
<a-input
@blur="getBlurMark(row, 'rowCzMark')"
@focus="getFocusMark(row, 'rowCzMark')"
style="margin-top: 0px;"
v-model="row.czRemark">
</a-input>
<a-icon v-show="row.rowCzMark" style="cursor: pointer;margin-left: 5px;color:#36cfc9;" @mousedown.native="handleSaveMark(row,2)" type="check-circle" theme="filled" />
<a-icon
v-show="row.rowCzMark"
style="cursor: pointer;margin-left: 5px;color:#36cfc9;"
@mousedown.native="handleSaveMark(row, 2)"
type="check-circle"
theme="filled" />
</div>
</a-popover>
</a-spin>
@ -374,16 +403,25 @@
</template>
<template #shenQingXiangShi="{ row }">
<div >
<div>
<a-spin :spinning="row.sqxsLoading">
<a-popover placement="topLeft">
<template slot="content">
{{ row.shenQingXiangShi }}
</template>
<div style="display: flex;align-items: center;">
<a-input @blur="getBlurMark(row,'rowSqxs')" @focus="getFocusMark(row,'rowSqxs')" style="margin-top: 0px;" v-model="row.shenQingXiangShi">
<a-input
@blur="getBlurMark(row, 'rowSqxs')"
@focus="getFocusMark(row, 'rowSqxs')"
style="margin-top: 0px;"
v-model="row.shenQingXiangShi">
</a-input>
<a-icon v-show="row.rowSqxs" style="cursor: pointer;margin-left: 5px;color:#36cfc9;" @mousedown.native="handleSaveMark(row,4)" type="check-circle" theme="filled" />
<a-icon
v-show="row.rowSqxs"
style="cursor: pointer;margin-left: 5px;color:#36cfc9;"
@mousedown.native="handleSaveMark(row, 4)"
type="check-circle"
theme="filled" />
</div>
</a-popover>
</a-spin>
@ -391,16 +429,25 @@
</template>
<template #pono="{ row }">
<div >
<div>
<a-spin :spinning="row.ponoLoading">
<a-popover placement="topLeft">
<template slot="content">
{{ row.pono }}
</template>
<div style="display: flex;align-items: center;">
<a-input @blur="getBlurMark(row,'rowPono')" @focus="getFocusMark(row,'rowPono')" style="margin-top: 0px;" v-model="row.pono">
<a-input
@blur="getBlurMark(row, 'rowPono')"
@focus="getFocusMark(row, 'rowPono')"
style="margin-top: 0px;"
v-model="row.pono">
</a-input>
<a-icon v-show="row.rowPono" style="cursor: pointer;margin-left: 5px;color:#36cfc9;" @mousedown.native="handleSaveMark(row,5)" type="check-circle" theme="filled" />
<a-icon
v-show="row.rowPono"
style="cursor: pointer;margin-left: 5px;color:#36cfc9;"
@mousedown.native="handleSaveMark(row, 5)"
type="check-circle"
theme="filled" />
</div>
</a-popover>
</a-spin>
@ -414,9 +461,18 @@
{{ row.custno }}
</template>
<div style="display: flex;align-items: center;">
<a-input @blur="getBlurMark(row,'rowCustno')" @focus="getFocusMark(row,'rowCustno')" style="margin-top: 0px;" v-model="row.custno">
<a-input
@blur="getBlurMark(row, 'rowCustno')"
@focus="getFocusMark(row, 'rowCustno')"
style="margin-top: 0px;"
v-model="row.custno">
</a-input>
<a-icon v-show="row.rowCustno" style="cursor: pointer;margin-left: 5px;color:#36cfc9;" @mousedown.native="handleSaveMark(row,3)" type="check-circle" theme="filled" />
<a-icon
v-show="row.rowCustno"
style="cursor: pointer;margin-left: 5px;color:#36cfc9;"
@mousedown.native="handleSaveMark(row, 3)"
type="check-circle"
theme="filled" />
</div>
</a-popover>
</a-spin>
@ -982,7 +1038,7 @@ export default {
}
},
computed: {
...mapGetters(['bookingList', 'bookingGridOptions', 'firstFlag', 'saveNeedNumber'])
...mapGetters(['bookingList', 'bookingGridOptions', 'firstFlag', 'saveNeedNumber', 'deleteId'])
},
beforeRouteLeave(to, from, next) {
this.setBookingGridOptions(this.gridOptions)
@ -1000,17 +1056,31 @@ export default {
handler(nD, oD) {
if (nD.name === 'booking_ledger') {
if (this.saveNeedNumber !== null) {
let index = 0
let index = -1
this.gridOptions.data.forEach((ite, inde) => {
if (ite.id === this.saveNeedNumber) {
index = inde
}
})
this.getListByone(this.saveNeedNumber, index)
if (index !== -1) {
this.getListByone(this.saveNeedNumber, index)
}
}
if (this.firstFlag && this.saveNeedNumber === null) {
if (this.firstFlag && this.saveNeedNumber === null && !this.deleteId) {
this.getList(this.searchData)
}
if (this.deleteId !== null) {
let index = -1
this.gridOptions.data.forEach((ite, inde) => {
if (ite.id === this.deleteId) {
index = inde
}
})
console.log(index)
if (index !== -1) {
this.gridOptions.data.splice(index, 1)
}
}
this.setInBookingDetailsSave(false)
}
}
@ -3643,10 +3713,11 @@ export default {
}
</style>
<style lang="less">
.vxe-table--render-default .vxe-body--row.row--current{
background: #9be945!important;
.vxe-table--render-default .vxe-body--row.row--current {
background: #9be945 !important;
}
.vxe-table--render-default{
.vxe-table--render-default {
color: black;
}
</style>

@ -11,9 +11,9 @@
<a-col
:md="6"
:lg="6"
:xl="4"
:xl="!advanced?3:4"
:key="findex"
v-show="(findex < 4 && !advanced) || advanced"
v-show="(findex < 6 && !advanced) || advanced"
class="from-label">
<a-form-item style="padding-left: 10px; padding-right: 10px" :label="formLabel.title">
<formLabel
@ -29,7 +29,7 @@
</a-form-item>
</a-col>
</template>
<a-col :xl="formBtnCol || (!advanced && 8)" :lg="24" :md="24" :sm="24">
<a-col style="padding: 0px;" :xl="!advanced?6:8" :lg="24" :md="24" :sm="24">
<span
class="table-page-search-submitButtons"
:style="(advanced && { float: 'right', overflow: 'hidden' }) || {}">
@ -95,7 +95,8 @@
</a-popconfirm>
<div class="nav"><i class="iconfont icon-shishijifei"></i>定时订舱</div>
<div class="nav" @click="handleRefshYZ">
<a-spin :spinning="refshYZloading"><i class="iconfont icon-shishijifei"></i>刷新运踪</a-spin></div>
<a-spin :spinning="refshYZloading"><i class="iconfont icon-shishijifei"></i>刷新运踪</a-spin>
</div>
<div class="nav"><i class="iconfont icon-xiaopiaodayin"></i>小票状态</div>
<div class="nav" @click="openTraceModel"><i class="iconfont icon-yunshu1"></i>运踪订阅</div>
<div class="nav">
@ -126,7 +127,7 @@
</template>
<template #tools>
<div class="right BookTopButton">
<span class="tab-btn" @click="tableRefresh">
<span class="tab-btn" @click="tableRefreshFirst">
<a-icon type="redo" :style="{ fontSize: '14px', transform: 'rotate(278deg)' }" />
</span>
<span class="tab-btn" @click="tableHeaderEdit">
@ -140,9 +141,11 @@
v-bind="gridOptions"
row-class-name="line-box"
:height="tableHeight"
:row-config="{ isHover: true,isCurrent: true }"
:checkbox_config="{ checkField: 'checked' }"
:checkbox-config="{ highlight: true }"
:scroll-x="{ gt: 10, oSize: 10, enabled: false }"
:scroll-y="{ gt: 20, oSize: 20, enabled: true }"
:scroll-y="{ gt: 10, oSize: 1, enabled: true }"
@page-change="handlePageChange"
@cell-dblclick="handledbclick"
:sort-config="{ sortMethod: customSortMethod }"
@ -156,14 +159,9 @@
<a-icon class="CSMblnoCopy" type="copy" @click="FnCopy(row.mblno)" />
</div>
</template>
<template #pono="{ row }">
<div class="pono">
{{ row.pono }}
</div>
</template>
<template #IsVGM="{ row }">
<div v-if="row.isVGM" style="text-align: center;">
<a-popover placement="topLeft" >
<a-popover placement="topLeft">
<div slot="content">{{ row.isVGM }}</div>
<i class="iconfont icon-chenggong flag-icon"></i>
</a-popover>
@ -171,7 +169,7 @@
</template>
<template #IsZZFX="{ row }">
<div v-if="row.isZZFX" style="text-align: center;">
<a-popover placement="topLeft" >
<a-popover placement="topLeft">
<div slot="content">{{ row.isZZFX }}</div>
<i class="iconfont icon-chenggong flag-icon"></i>
</a-popover>
@ -179,7 +177,7 @@
</template>
<template #IsCanDan="{ row }">
<div v-if="row.isCanDan" style="text-align: center;">
<a-popover placement="topLeft" >
<a-popover placement="topLeft">
<div slot="content">{{ row.isCanDan }}</div>
<i class="iconfont icon-chenggong flag-icon"></i>
</a-popover>
@ -187,7 +185,6 @@
</template>
<template #bsstatusname="{ row }">
<div :style="{ backgroundColor: row.bsstatusnameColor }"> {{ row.bsstatusname }}</div>
<!-- <div>{{ row.bsstatusname }}</div> -->
</template>
<template #vessel="{ row }">
<div class="vessel">{{ row.vessel }}</div>
@ -207,8 +204,11 @@
<template #ygtETD="{ row }">
<div class="etd" v-if="row.ygtETD">{{ row.ygtETD.substring(0, 10) }}</div>
</template>
<template #atd="{ row }">
<div class="atd" v-if="row.atd">{{ row.atd.substring(0, 10) }}</div>
<template #atd="{ row, rowIndex }">
<a-spin :spinning="row.atdLoading">
<a-icon v-if="!row.atd" style="cursor: pointer;" @click="handleRefshAtd(row, rowIndex)" type="reload" />
<span v-if="row.atd"> {{ row.atd.substring(0, 10) }}</span>
</a-spin>
</template>
<template #issuedate="{ row }">
<div class="atd" v-if="row.issuedate">{{ row.issuedate.substring(0, 10) }}</div>
@ -227,34 +227,41 @@
<vxe-button class="operate-btn" type="text" icon="vxe-icon-delete"></vxe-button>
</a-popconfirm>
</template>
<!-- <template #bookstatus="{ row }">
<span class="book-btn" v-for="(btn,bindex) in row.bookstatus" :class="btn.staCode" :key="bindex"> {{ enmuBookingBtn(btn.staCode) }}<i>/</i></span>
</template> -->
<template #bookstatus="{ row, column }">
<div class="billtrace-box" :class="column.resizeWidth > 240 ? 'normal-box' : 'flex-box'">
<div class="billtrace-btn" v-for="(btn, bindex) in row.bookstatus" :class="btn.staCode" :key="bindex">
<a-popover placement="topLeft" v-if="btn.staTime">
<div slot="content">{{ btn.staTime }}</div>
<span :class="{ active: btn.isChecked }">{{ enmuBookingBtn(btn.staCode) }}</span>
</a-popover>
<span :class="{ active: btn.isChecked }" v-else>{{ enmuBookingBtn(btn.staCode) }}</span>
<i class="iconfont icon-xiaoyoujiantou" :class="{ hide: bindex === row.bookstatus.length - 1 }"></i>
</div>
<template #bookstatus="{ row, column, rowIndex }">
<div style="display: flex;align-items: center;">
<a-icon v-if="row.isBookingYZ!=0" style="cursor: pointer;color: rgb(7, 231, 56);" @click="handleRefshYZOnce(row, rowIndex)" type="reload" />
<a-spin :spinning="row.refshYzitemLoad">
<div :style="row.isBookingYZ==0?'padding-left:14px':''" class="billtrace-box" :class="column.resizeWidth > 240 ? 'normal-box' : 'flex-box'">
<div
class="billtrace-btn"
v-for="(btn, bindex) in row.bookstatus"
:class="btn.staCode"
:key="bindex">
<a-popover placement="topLeft" v-if="btn.staTime">
<div slot="content">{{ btn.staTime }}</div>
<span :class="{ active: btn.isChecked }">{{ enmuBookingBtn(btn.staCode) }}</span>
</a-popover>
<span :class="{ active: btn.isChecked }" v-else>{{ enmuBookingBtn(btn.staCode) }}</span>
<i
class="iconfont icon-xiaoyoujiantou"
:class="{ hide: bindex === row.bookstatus.length - 1 }"></i>
</div>
</div>
</a-spin>
</div>
</template>
<template #statuslogs="{ row, column }">
<div v-if="row.statuslogs1">
<div
v-if="row.statuslogs1.length > 0">
<div class="billtrace-btn1" >
<a-popover placement="topLeft" >
<div v-if="row.statuslogs1.length > 0">
<div class="billtrace-btn1">
<a-popover placement="topLeft">
<div slot="content">
<div>
<span class="txfcSpan" style="width: 120px;">箱号</span>
<span class="txfcSpan">提箱</span>
<span class="txfcSpan">返场</span>
</div>
<div v-for="(item,index) in row.statuslogs1" :key="index">
<div v-for="(item, index) in row.statuslogs1" :key="index">
<span class="txfcSpan" style="width: 120px;">{{ item.cntrno }}</span>
<span class="txfcSpan">{{ item.txopTime }}</span>
<span class="txfcSpan">{{ item.fcopTime }}</span>
@ -268,7 +275,6 @@
</div>
</template>
<template #bookremark="{ row }">
<!-- @mouseover="remarkhover($event, row)" -->
<div class="bookremark" @mouseover="remarkhover($event, row)" @mouseleave="remarkLeave($event, row)">
<span class="reamrk-label">
<template v-for="remark in row.bookremark">
@ -336,21 +342,86 @@
</template>
<template #dzRemark="{ row }">
<div v-if="row.dzRemark">
<a-popover placement="topLeft" :content="row.dzRemark">
<span class="dzRemark">{{ row.dzRemark }}</span>
<a-spin :spinning="row.dzmarkLoading">
<a-popover placement="topLeft">
<template slot="content">
{{ row.dzRemark }}
</template>
<div style="display: flex;align-items: center;">
<a-input @blur="getBlurMark(row,'rowDzMark')" @focus="getFocusMark(row,'rowDzMark')" style="margin-top: 0px;" v-model="row.dzRemark">
</a-input>
<a-icon v-show="row.rowDzMark" style="cursor: pointer;margin-left: 5px;color:#36cfc9;" @mousedown.native="handleSaveMark(row,1)" type="check-circle" theme="filled" />
</div>
</a-popover>
</div>
</a-spin>
</template>
<template #czRemark="{ row }">
<div v-if="row.czRemark">
<a-popover placement="topLeft" :content="row.czRemark">
<span class="czRemark">{{ row.czRemark }}</span>
</a-popover>
<div >
<a-spin :spinning="row.czmarkLoading">
<a-popover placement="topLeft">
<template slot="content">
{{ row.czRemark }}
</template>
<div style="display: flex;align-items: center;">
<a-input @blur="getBlurMark(row,'rowCzMark')" @focus="getFocusMark(row,'rowCzMark')" style="margin-top: 0px;" v-model="row.czRemark">
</a-input>
<a-icon v-show="row.rowCzMark" style="cursor: pointer;margin-left: 5px;color:#36cfc9;" @mousedown.native="handleSaveMark(row,2)" type="check-circle" theme="filled" />
</div>
</a-popover>
</a-spin>
</div>
</template>
<template #shenQingXiangShi="{ row }">
<div >
<a-spin :spinning="row.sqxsLoading">
<a-popover placement="topLeft">
<template slot="content">
{{ row.shenQingXiangShi }}
</template>
<div style="display: flex;align-items: center;">
<a-input @blur="getBlurMark(row,'rowSqxs')" @focus="getFocusMark(row,'rowSqxs')" style="margin-top: 0px;" v-model="row.shenQingXiangShi">
</a-input>
<a-icon v-show="row.rowSqxs" style="cursor: pointer;margin-left: 5px;color:#36cfc9;" @mousedown.native="handleSaveMark(row,4)" type="check-circle" theme="filled" />
</div>
</a-popover>
</a-spin>
</div>
</template>
<template #pono="{ row }">
<div >
<a-spin :spinning="row.ponoLoading">
<a-popover placement="topLeft">
<template slot="content">
{{ row.pono }}
</template>
<div style="display: flex;align-items: center;">
<a-input @blur="getBlurMark(row,'rowPono')" @focus="getFocusMark(row,'rowPono')" style="margin-top: 0px;" v-model="row.pono">
</a-input>
<a-icon v-show="row.rowPono" style="cursor: pointer;margin-left: 5px;color:#36cfc9;" @mousedown.native="handleSaveMark(row,5)" type="check-circle" theme="filled" />
</div>
</a-popover>
</a-spin>
</div>
</template>
<template #custno="{ row }">
<a-spin :spinning="row.custnoLoading">
<a-popover placement="topLeft">
<template slot="content">
{{ row.custno }}
</template>
<div style="display: flex;align-items: center;">
<a-input @blur="getBlurMark(row,'rowCustno')" @focus="getFocusMark(row,'rowCustno')" style="margin-top: 0px;" v-model="row.custno">
</a-input>
<a-icon v-show="row.rowCustno" style="cursor: pointer;margin-left: 5px;color:#36cfc9;" @mousedown.native="handleSaveMark(row,3)" type="check-circle" theme="filled" />
</div>
</a-popover>
</a-spin>
</template>
<template #empty>
<span class="no-data">
<i class="iconfont icon-queshengye_zanwushuju"></i>
@ -487,7 +558,7 @@
:formAllData="formMoreTableData"
:sortLabelList="sortLabelList"
:firstSort="{ 'label': tableOrderLabel, 'type': tableOrderType }"
:maxNum="30"
:maxNum="999"
type="table"
@ok="submitTableForm"
@sortList="submitSort"
@ -748,6 +819,7 @@
</a-form-item>
</a-form>
</a-modal>
</a-spin>
</div>
</template>
@ -760,7 +832,7 @@ import importBcMore from './modules/importBcMore'
import {
PageDataByBooking,
SendTrace,
GetVessellist,
getVesselInfoService,
GetPortlist,
GetPortloadlist,
BookingOrderBachUpdate,
@ -783,8 +855,9 @@ import {
downloadDraft,
checkUpdateManifestNo,
singleBCFileRead,
GetToDoBCList,
RefreshBillTrace
refreshSailingDate,
RefreshBillTrace,
SaveDataInList
} from '@/api/modular/main/BookingLedger'
import initData from './modules/initData'
@ -813,10 +886,14 @@ export default {
return {
spinning: false,
isUpload: false,
markFlag: false,
marktitle: '',
refshYZloading: false,
nowFirst: false,
copyMoreForm: this.$form.createForm(this, { number: '' }),
copyMoreFlag: false,
percent: 0,
refshYzOnce: false,
TaskShippingOrderCompareVisible: false,
TaskShippingOrderCompareData: {
showDetailList: ''
@ -832,6 +909,8 @@ export default {
formBtnCol: 8,
formBtnLoading: false,
setVisible: false,
editRow: {},
editRowData: {},
showColumns: null,
importBcData: {},
gridOptions: {
@ -855,11 +934,6 @@ export default {
},
columns: JSON.parse(JSON.stringify(initData.columns)),
data: []
// treeConfig: {
// transform: true,
// rowField: 'index',
// parentField: 'parentId',
// },
},
formTableData: JSON.parse(JSON.stringify(initData.columns)),
fromTableAllData: null,
@ -908,33 +982,11 @@ export default {
}
},
computed: {
...mapGetters(['bookingList', 'bookingGridOptions'])
...mapGetters(['bookingList', 'bookingGridOptions', 'firstFlag', 'saveNeedNumber'])
},
beforeRouteLeave(to, from, next) {
// const copyArr = JSON.parse(JSON.stringify(this.gridOptions.data))
// const first = copyArr.splice(0, 20)
this.setBookingGridOptions(this.gridOptions)
// this.gridOptions = {
// border: false,
// resizable: true,
// showOverflow: true,
// loading: false,
// stripe: true,
// round: true,
// autoResize: true,
// align: 'left',
// columnConfig: { resizable: true },
// importConfig: {},
// exportConfig: {},
// pagerConfig: {
// total: 0,
// currentPage: 1,
// pageSize: 10,
// pageSizes: [10, 20, 50, 100, 200, 500]
// },
// columns: this.gridOptions.columns,
// data: first
// }
this.$store.commit('SET_SAVENEEDNUMBER', null)
next()
},
beforeRouteEnter(to, from, next) {
@ -942,6 +994,28 @@ export default {
vm.upDate()
})
},
watch: {
'$route': {
deep: true,
handler(nD, oD) {
if (nD.name === 'booking_ledger') {
if (this.saveNeedNumber !== null) {
let index = 0
this.gridOptions.data.forEach((ite, inde) => {
if (ite.id === this.saveNeedNumber) {
index = inde
}
})
this.getListByone(this.saveNeedNumber, index)
}
if (this.firstFlag && this.saveNeedNumber === null) {
this.getList(this.searchData)
}
this.setInBookingDetailsSave(false)
}
}
}
},
created() {
this.createdInit()
},
@ -949,7 +1023,7 @@ export default {
this.onresize()
},
methods: {
...mapActions(['setBookingList', 'setBookingGridOptions']),
...mapActions(['setBookingList', 'setBookingGridOptions', 'setInBookingDetailsSave']),
createdInit() {
this.showColumns = JSON.parse(JSON.stringify(initData.columns))
this.formAllData = JSON.parse(JSON.stringify(initData.condAllData))
@ -961,6 +1035,70 @@ export default {
bcClose() {
this.bcObj = {}
},
getListByone(listId, listIndex) {
PageDataByBooking({ id: listId }).then(res => {
const item = res.data.items[0]
const bookstatus = [
{ staCode: 'sta_cangdan', isChecked: false },
{ staCode: 'sta_haifang', isChecked: false },
{ staCode: 'sta_zhuangzai', isChecked: false },
{ staCode: 'sta_mafang', isChecked: false },
{ staCode: 'sta_zhuangchuan', isChecked: false },
{ staCode: 'sta_atd', isChecked: false }
]
if (item.bookstatus.length > 0) {
bookstatus.map((book, bindex) => {
item.bookstatus.map((ite, index) => {
if (ite.staCode === book.staCode) {
bookstatus[bindex] = ite
bookstatus[bindex].isChecked = true
}
})
})
}
if (item.bsstatusname) {
const arr = JSON.parse(localStorage.getItem('pro__DICT_TYPE_TREE_DATA'))
if (arr) {
let arrColor = ''
arr.value.forEach(ite => {
if (ite.code == 'booking_goods_status') {
arrColor = ite
}
})
if (arrColor) {
arrColor.children.forEach(ite => {
if (ite.name == item.bsstatusname) {
item.bsstatusnameColor = ite.remark
}
})
}
}
}
item.bookstatus = bookstatus
item.refshYzitemLoad = false
item.dzmarkLoading = false
item.czmarkLoading = false
item.custnoLoading = false
item.sqxsLoading = false
item.ponoLoading = false
item.rowCzMark = false
item.rowSqxs = false
item.rowPono = false
item.rowCustno = false
item.rowDzMark = false
item.atdLoading = false
let hasGoods = 0
item.goodsStatusList.map((gitem, gindex) => {
if (gitem.finishTime || gitem.remark) {
hasGoods++
}
})
item.hasGoods = hasGoods
this.$set(this.gridOptions.data, listIndex, item)
this.$refs.xGrid.reloadData(this.gridOptions.data)
this.$refs.xGrid.setCurrentRow(this.gridOptions.data[listIndex])
})
},
handleSubmitCopyMore(e) {
e.preventDefault();
this.copyMoreForm.validateFields((err, values) => {
@ -979,7 +1117,6 @@ export default {
const pkIdArr = select.map((item, index) => {
return item.id
})
console.log(pkIdArr)
const formData = new FormData()
formData.append('file', file)
formData.append('bookingOrderId', pkIdArr[0])
@ -1160,7 +1297,7 @@ export default {
this.WebVessel = data
}
GetVessellist({ KeyWord: data }).then((res) => {
getVesselInfoService({ KeyWord: data }).then((res) => {
this.vesselData = res.data
})
},
@ -1274,11 +1411,15 @@ export default {
this.$message.warning('请先选择')
return false
} else {
const data = {
ids: arr.join(',')
}
let str = ''
arr.forEach((item, index) => {
str += 'Ids=' + item
if (index != arr.length - 1) {
str += '&'
}
})
this.refshYZloading = true
RefreshBillTrace(data).then(res => {
RefreshBillTrace(str).then(res => {
if (res.success) {
this.refshYZloading = false
this.$message.success('操作成功')
@ -1289,6 +1430,41 @@ export default {
})
}
},
handleRefshYZOnce(row, rowIndex) {
row.refshYzitemLoad = true
RefreshBillTrace('ids=' + row.id).then(res => {
if (res.success) {
PageDataByBooking({ id: row.id }).then(ress => {
const item = ress.data.items[0]
row.refshYzitemLoad = false
const bookstatus = [
{ staCode: 'sta_cangdan', isChecked: false },
{ staCode: 'sta_haifang', isChecked: false },
{ staCode: 'sta_zhuangzai', isChecked: false },
{ staCode: 'sta_mafang', isChecked: false },
{ staCode: 'sta_zhuangchuan', isChecked: false },
{ staCode: 'sta_atd', isChecked: false }
]
if (item.bookstatus.length > 0) {
bookstatus.map((book, bindex) => {
item.bookstatus.map((ite, index) => {
if (ite.staCode === book.staCode) {
bookstatus[bindex] = ite
bookstatus[bindex].isChecked = true
}
})
})
}
row.bookstatus = bookstatus
row.statuslogs1 = item.statuslogs1
this.$message.success('操作成功')
})
} else {
row.refshYzitemLoad = false
this.$message.error(res.message)
}
})
},
setSort(item) {
if (Array.isArray(JSON.parse(item.configJson))) {
this.sortLabelList = JSON.parse(item.configJson)
@ -1297,6 +1473,14 @@ export default {
const sort = JSON.parse(item.configJson)[0].descSort
this.tableOrderLabel = key || ''
this.tableOrderType = sort ? 'desc' : 'asc'
const newArr = []
this.sortLabelList.forEach(item => {
newArr.push({
sortField: item.sortField,
descSort: item.descSort
})
})
this.searchData.multisort = newArr
this.$refs.xGrid.sort(key, sort)
} else {
this.tableOrderLabel = ''
@ -1446,11 +1630,40 @@ export default {
if (!item.slots && item.field === 'bsstatusname') {
item.slots = { 'default': 'bsstatusname' }
}
if (item.field === 'zhanCangFlag') {
item.width = 35
}
if (item.field === 'custno') {
item.slots = { 'default': 'custno' }
}
if (item.field === 'shenQingXiangShi') {
item.slots = { 'default': 'shenQingXiangShi' }
}
if (item.field === 'pono') {
item.slots = { 'default': 'pono' }
}
if (item.label === 'LINENAME') {
item.field = 'lineName'
}
if (item.label === 'ETA') {
item.title = '目的港ETA'
}
if (item.label === 'isVGM') {
item.title = 'VGM'
item.width = 60
}
if (item.label === 'IsZZFX') {
item.title = '装载'
item.width = 50
}
if (item.label === 'IsCanDan') {
item.title = '舱单'
item.width = 50
}
})
console.log(this.formTableData, 123123)
const nowTableArr = this.formTableData.map((item, index) => {
if (item.field === 'operate') {
item.width = 110
item.width = 60
}
return item.field
})
@ -1519,6 +1732,16 @@ export default {
})
})
},
handleOpenMark(row, type) {
if (type === 1) {
this.marktitle = '单证备注'
} else {
this.marktitle = '操作备注'
}
this.editRow = row
this.editRowData = JSON.parse(JSON.stringify(row))
this.markFlag = true
},
handlePageChange({ currentPage, pageSize }) {
if (this.gridOptions.pagerConfig.pageSize !== pageSize) {
this.editPageSizeSave(pageSize)
@ -1561,6 +1784,15 @@ export default {
},
tableRefresh() {
const data = { ...this.formRes }
this.nowFirst = false
data.multisort = this.searchData.multisort
this.searchData = JSON.parse(JSON.stringify(data))
this.init(this.searchData)
this.formRes = data
},
tableRefreshFirst() {
const data = { ...this.formRes }
this.nowFirst = true
data.multisort = this.searchData.multisort
this.searchData = JSON.parse(JSON.stringify(data))
this.init(this.searchData)
@ -1673,7 +1905,18 @@ export default {
this.init()
})
},
handleRefshAtd(row, index) {
row.atdLoading = true
refreshSailingDate({ id: row.id }).then(res => {
if (res.success) {
row.atdLoading = false
row.atd = res.data.atd
} else {
this.$message.error(res.message)
row.atdLoading = false
}
})
},
formChange(data) {
const { form, value } = data
if (form.type === 'input') {
@ -1765,16 +2008,22 @@ export default {
const arr = this.searchData.MBLNO.split(/|,/)
query.MBLNO = arr.toString()
}
const firstFlag = JSON.parse(localStorage.getItem('pro__FIRSTFLAG')).value
if (firstFlag) {
const firstFlag = this.firstFlag
if (firstFlag || this.nowFirst) {
query.firstFlag = true
}
if ((!queryParam.multisort || queryParam.multisort.length === 0) && this.tableOrderLabel && this.tableOrderType) {
if ((!this.searchData.multisort || this.searchData.multisort.length === 0) &&
(!queryParam.multisort || queryParam.multisort.length === 0) &&
this.tableOrderLabel && this.tableOrderType) {
query.multisort = [{
sortField: this.tableOrderLabel,
descSort: this.tableOrderType === 'desc'
}]
}
if (this.searchData.multisort && this.searchData.multisort.length > 0) {
query.multisort = this.searchData.multisort
}
PageDataByBooking(query)
.then((res) => {
if (res.success) {
@ -1783,7 +2032,6 @@ export default {
newBookingList = this.bookingList
}
const _data = res.data.items.map((item, index) => {
this.$set(newBookingList, item.id, item)
item.index = (currentPage - 1) * pageSize + index
const bookstatus = [
{ staCode: 'sta_cangdan', isChecked: false },
@ -1822,6 +2070,18 @@ export default {
}
}
item.bookstatus = bookstatus
item.refshYzitemLoad = false
item.atdLoading = false
item.rowDzMark = false
item.rowCzMark = false
item.rowCustno = false
item.rowSqxs = false
item.rowPono = false
item.czmarkLoading = false
item.custnoLoading = false
item.dzmarkLoading = false
item.sqxsLoading = false
item.ponoLoading = false
let hasGoods = 0
item.goodsStatusList.map((gitem, gindex) => {
if (gitem.finishTime || gitem.remark) {
@ -1829,11 +2089,12 @@ export default {
}
})
item.hasGoods = hasGoods
this.$set(newBookingList, item.id, item)
return item
})
this.$set(this.gridOptions.pagerConfig, 'columns', JSON.parse(JSON.stringify(initData.columns)))
this.$set(this.gridOptions, 'data', [..._data])
const startTime = Date.now()
this.$refs.xGrid.reloadData(_data).then(() => {
this.$set(this.gridOptions, 'loading', false)
})
@ -1852,7 +2113,7 @@ export default {
this.$forceUpdate()
}
this.ResetType = true
localStorage.setItem('pro__FIRSTFLAG', false)
this.$store.commit('SET_FIRSTFLAG', false)
})
.catch((err) => {
console.log(err)
@ -1914,6 +2175,43 @@ export default {
addCancel() {
this.addVisible = false
},
handleSaveMark(row, type, file) {
const data = {
Id: row.id
}
if (type === 1) {
row.dzmarkLoading = true
data.dzRemark = row.dzRemark
}
if (type === 2) {
row.czmarkLoading = true
data.czRemark = row.czRemark
}
if (type === 3) {
row.custnoLoading = true
data.custno = row.custno
}
if (type === 4) {
row.sqxsLoading = true
data.shenQingXiangShi = row.shenQingXiangShi
}
if (type === 5) {
row.ponoLoading = true
data.pono = row.pono
}
SaveDataInList(data).then(res => {
if (res.success) {
this.$message.success('修改成功')
} else {
this.$message.error(res.message)
}
row.dzmarkLoading = false
row.czmarkLoading = false
row.custnoLoading = false
row.sqxsLoading = false
row.ponoLoading = false
})
},
//
formSetting() {
@ -1990,6 +2288,12 @@ export default {
pressEnterFun() {
this.tableRefresh()
},
getFocusMark(row, file) {
row[file] = true
},
getBlurMark(row, file) {
row[file] = false
},
remarkhover(e, data) {
if (data.bookremark.length > 0) {
const maxWidth = window.innerWidth
@ -2183,7 +2487,7 @@ export default {
emnuCompleteApi(type) {
switch (type) {
case 'VESSEL':
return GetVessellist
return getVesselInfoService
case 'CUSTOMERNAME':
return DjyCustomerSuggest
case 'FORWARDER':
@ -2299,16 +2603,24 @@ export default {
ExcuteShippingOrderCompareBatch(arr)
.then((res) => {
if (res.success) {
this.spinning = false
if (!res.data.succ) {
this.spinning = false
this.$message.success(res.data.msg)
} else {
if (res.data.extra) {
this.TaskShippingOrderCompareData = res.data.extra
this.TaskShippingOrderCompareData.total = res.data.total
this.TaskShippingOrderCompareVisible = true
PageDataByBooking({ id: data.id }).then(ress => {
const itme = ress.data.items[0]
this.spinning = false
data.lstShipOrderCompareRlt = itme.lstShipOrderCompareRlt
data.lstShipOrderCompareMode = itme.lstShipOrderCompareMode
data.lstShipOrderCompareDate = itme.lstShipOrderCompareDate
})
} else {
this.$message.success(res.data.msg)
this.spinning = false
}
}
} else {
@ -2700,6 +3012,8 @@ export default {
/*列表操作按钮颜色 */
/deep/ .operate-btn {
color: @primary-color;
width: 19px;
margin: 0 !important;
}
/deep/ .operate-btn:hover {
@ -2760,7 +3074,7 @@ export default {
span {
// flex: 1;
text-align: right;
color: #999;
color: black;
}
i {
@ -2797,51 +3111,54 @@ export default {
text-align: center;
justify-content: center;
}
.billtrace-btn {
font-size: 12px;
height: 16px;
width: 30%;
display: flex;
font-size: 12px;
height: 16px;
width: 30%;
display: flex;
span {
flex: 1;
text-align: right;
color: #999;
}
span {
flex: 1;
text-align: right;
color: #999;
}
i {
font-size: 12px;
color: #ccc;
flex: 1;
text-align: center;
i {
font-size: 12px;
color: #ccc;
flex: 1;
text-align: center;
&.hide {
opacity: 0;
}
&.hide {
opacity: 0;
}
}
.active {
cursor: pointer;
// color: @primary-color;
color: #ff9702;
font-weight: bold;
}
.active {
cursor: pointer;
// color: @primary-color;
color: #ff9702;
font-weight: bold;
}
&:nth-of-type(3) {
i {
opacity: 0;
}
&:nth-of-type(3) {
i {
opacity: 0;
}
}
.billtrace-btn1{
}
.billtrace-btn1 {
font-size: 12px;
.active {
cursor: pointer;
// color: @primary-color;
color: #ff9702 !important;
font-weight: bold;
font-size: 12px;
}
cursor: pointer;
// color: @primary-color;
color: #ff9702 !important;
font-weight: bold;
font-size: 12px;
}
}
/deep/ .ant-form-item {
@ -3274,22 +3591,6 @@ export default {
flex: 1;
}
// &:nth-child(3) {
// flex: 2;
// margin: 0 1rem;
// padding-left: 0.5rem;
// &.TaskShippingOrderCompareMainThird {
// background: #facd91;
// border: 1px solid red;
// }
// }
// &.TaskShippingOrderCompareMainThird {
// flex: 2;
// background: #facd91;
// border: 1px solid red;
// margin: 0 1rem;
// padding-left: 0.5rem;
// }
}
&.BoxNo {
@ -3305,24 +3606,6 @@ export default {
}
}
// .form-box{
// .form-main{
// float: left;
// margin-right: 10px;
// display: flex;
// width: 16%;
// overflow: hidden;
// .form-label{
// display: inline-block;
// margin-right: 10px;
// }
// .form-content{
// flex: 1;
// }
// }
// .more-btn{
// }
// }
.bcfile-title {
border-bottom: 1px dashed black;
padding-bottom: 5px;
@ -3343,13 +3626,27 @@ export default {
justify-content: space-between;
}
}
.txfcSpan{
.txfcSpan {
width: 140px;
display: inline-block;
}
.flag-icon{
.flag-icon {
color: #1d8aff;
cursor: pointer;
font-size: 20px;
}
/deep/ .vxe-table--render-default .vxe-body--row.row--checked {
background: #fff3e0 !important;
}
</style>
<style lang="less">
.vxe-table--render-default .vxe-body--row.row--current{
background: #9be945!important;
}
.vxe-table--render-default{
color: black;
}
</style>

Loading…
Cancel
Save