张同海 1 year ago
commit 85260612f5

@ -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

@ -83,6 +83,7 @@
:details="bookingDetails"
:rules="tableRules"
isParent="parent"
@changectnall="changectnall"
@changeDetail="changeDetailFun"
@changeTotal="changeTotalFun"
@changeCtnInfo="changeCtnInfoFun">
@ -1189,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 })
@ -1297,7 +1295,7 @@ export default {
let tableErrTip = ''
this.bookingDetails.ctnInputs.map((item, index) => {
Object.keys(item).map((label, lindex) => {
if (this.tableRules[label] && this.tableRules[label].required && !item[label]) {
if (this.tableRules[label] && this.tableRules[label].required && item[label] === '') {
tableErrTip = `${tableErrTip} 序号${index + 1}${this.tableRules[label].title}未填写,`
}
})
@ -1778,6 +1776,16 @@ export default {
this.bookingDetails.totalno = enCapitalRes
}
},
changectnall(arr) {
let str = ''
arr.forEach((item, index) => {
str += item.ctnall + '*' + item.ctnnum
if (index != arr.length - 1) {
str += '/'
}
})
this.bookingDetails.cntrtotal = str
},
removeOrderFun() {
DeleteBookingOrder(this.bookingDetails.id)
.then(res => {
@ -1789,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)

@ -188,6 +188,27 @@ export default {
this.tableData[rowIndex].ctnall = data.name
this.tableData[rowIndex].ctncode = data.code
row['ctnall'] = data.name
var map = {};
var dest = [];
for (var i = 0; i < this.tableData.length; i++) {
var ai = this.tableData[i];
if (!map[ai.ctnall]) {
dest.push({
ctnall: ai.ctnall,
ctnnum: ai.ctnnum
});
map[ai.ctnall] = ai;
} else {
for (var j = 0; j < dest.length; j++) {
var dj = dest[j];
if (dj.ctnall == ai.ctnall) {
dj.ctnnum = (parseFloat(dj.ctnnum) + parseFloat(ai.ctnnum)).toString();
break;
}
}
}
};
this.changeEmit1(dest)
this.$forceUpdate()
} else {
row['ctnall'] = ''
@ -322,7 +343,7 @@ export default {
}
})
}
this.$emit('changeCtnInfo', { type: 'kindpkgs', val: row['kindpkgs'] })
this.changeEmit(row)
}}
on-focus={(val) => {
this.kindpkgsViewIndex = rowIndex
@ -798,6 +819,29 @@ export default {
}
}
}
if (column.field === 'ctnnum') {
const map = {};
const dest = [];
for (var i = 0; i < this.tableData.length; i++) {
var ai = this.tableData[i];
if (!map[ai.ctnall]) {
dest.push({
ctnall: ai.ctnall,
ctnnum: ai.ctnnum
});
map[ai.ctnall] = ai;
} else {
for (var j = 0; j < dest.length; j++) {
var dj = dest[j];
if (dj.ctnall == ai.ctnall) {
dj.ctnnum = (parseFloat(dj.ctnnum) + parseFloat(ai.ctnnum)).toString();
break;
}
}
}
};
this.changeEmit1(dest)
}
},
cellValueChange: ({ row, column }) => { }
},
@ -1178,9 +1222,9 @@ export default {
this.id = this.$route.query.id
}
if (this.$route.name === 'BookingDetail') {
if (this.$route.name === 'BookingDetail') {
this.init()
}
}
}
},
totalKgs() {
@ -1256,9 +1300,9 @@ export default {
setTimeout(() => {
if (document.getElementsByClassName('ve-table-cell-selection')) {
const activeDom = document.getElementsByClassName('ve-table-cell-selection')[0].firstChild
if (this.isDOM(activeDom)) {
activeDom.click()
}
if (this.isDOM(activeDom)) {
activeDom.click()
}
}
}, 200)
}
@ -1272,6 +1316,9 @@ export default {
keydown(e) {
console.log(e)
},
changeEmit(row) {
this.$emit('changeCtnInfo', { type: 'kindpkgs', val: row['kindpkgs'] })
},
isDOM(item) {
// HTMLELement使HTMLElementDOMODM使
return typeof HTMLElement === 'function'
@ -1533,6 +1580,9 @@ export default {
}
this.childTableData.push(data)
},
changeEmit1(arr) {
this.$emit('changectnall', arr)
},
removeChildData() {
this.selectChildArr.map((item, index) => {
this.childTableData.map((oitem, oindex) => {
@ -1588,11 +1638,32 @@ export default {
if (type) {
const data = JSON.parse(res.data)
if (data.length == this.tableData.length) {
console.log(this.tableData, data)
data.forEach((item, index) => {
this.tableData[index].sealno = item.SEALNO
this.tableData[index].cntrno = item.CNTRNO
this.tableData[index].ctnnum = 1
})
const map = {};
const dest = [];
for (var i = 0; i < this.tableData.length; i++) {
var ai = this.tableData[i];
if (!map[ai.ctnall]) {
dest.push({
ctnall: ai.ctnall,
ctnnum: ai.ctnnum
});
map[ai.ctnall] = ai;
} else {
for (var j = 0; j < dest.length; j++) {
var dj = dest[j];
if (dj.ctnall == ai.ctnall) {
dj.ctnnum = (parseFloat(dj.ctnnum) + parseFloat(ai.ctnnum)).toString();
break;
}
}
}
};
this.changeEmit1(dest)
} else {
this.$message.error('箱量与场站不一致')
}
@ -1622,27 +1693,27 @@ export default {
const data = JSON.parse(res.data)
const addTable = []
const cntrnoArr = []
let kindpkgsOld = ''
const kindpkgsOld = ''
this.tableData = []
const lastNum = this.tableData.length > 0 ? Number(this.tableData[this.tableData.length - 1].rowKey) + 1 : 0
data.map((item, index) => {
const _data = {
rowKey: lastNum + index,
ctnall: item.CTNALL,
ctnnum: '1',
cntrno: item.CNTRNO,
sealno: item.SEALNO,
ctncode: item.CtnCode,
pkgs: item.PKGS,
kindpkgs: kindpkgsOld || item.KINDPKGS,
kgs: item.KGS,
cbm: item.CBM,
tareweight: item.TAREWEIGHT,
weightype: '',
weighkgs: '',
weighdate: item.WEIGHDATE
}
addTable.push(_data)
const _data = {
rowKey: lastNum + index,
ctnall: item.CTNALL,
ctnnum: '1',
cntrno: item.CNTRNO,
sealno: item.SEALNO,
ctncode: item.CtnCode,
pkgs: item.PKGS,
kindpkgs: kindpkgsOld || item.KINDPKGS,
kgs: item.KGS,
cbm: item.CBM,
tareweight: item.TAREWEIGHT,
weightype: '',
weighkgs: '',
weighdate: item.WEIGHDATE
}
addTable.push(_data)
})
this.tableData = [...this.tableData, ...addTable]
@ -1778,7 +1849,7 @@ export default {
} else {
cntrnoArr.push(this.tableData[i].cntrno)
}
}
}
const lastNum = this.tableData.length > 0 ? Number(this.tableData[this.tableData.length - 1].rowKey) + 1 : 0
data.map((item, index) => {
if (cntrnoArr.includes(item.CNTRNO)) {
@ -1821,7 +1892,7 @@ export default {
addTable.push(_data)
}
})
console.log(this.tableData,addTable)
console.log(this.tableData, addTable)
this.tableData = [...this.tableData, ...addTable]
this.$forceUpdate()
} else {

@ -216,16 +216,16 @@
@getInputChange="inputChange" />
</a-form-model-item>
</a-col>
<a-col :span="6">
<a-col :span="7">
<a-form-model-item
class="from-label yarn-label"
label="场站"
:labelCol="{ xs: { span: 24 },
sm: { span: 5 },
md: { span: 5 }}"
sm: { span: 4 },
md: { span: 4 }}"
:wrapperCol="{ xs: { span: 24 },
sm: { span: 19 },
md: { span: 19 }}"
sm: { span: 20 },
md: { span: 20 }}"
has-feedback
style="overflow: visible"
prop="yard">
@ -244,7 +244,7 @@
</div>
</a-form-model-item>
</a-col>
<a-col :span="6">
<a-col :span="5">
<a-form-model-item
class="from-label"
label="场站费自结"

@ -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>

@ -160,7 +160,7 @@
</div>
</a-form-model>
<template slot="footer">
<a-button @click="conditFlag = false">
<a-button @click="mexActionFlag = false">
关闭
</a-button>
<a-button type="primary" @click="handleAddMexAction">

@ -200,7 +200,8 @@ export default {
total: 0, //
showSizeChanger: true,
pageSizeOptions: ['1', '10', '20', '40', '80', '100'],
pageSize: 10
pageSize: 10,
showTotal: total => `共有 ${total} 条数据`
}
}
},

@ -203,7 +203,7 @@
</div>
<div class="title">
<span>触发器</span>
<a @click="baseAddFlag = true"></a>
<a @click="handlePushBase(1)"></a>
</div>
<div class="statBox" v-if="activeForm.statusTriggerList && activeForm.statusTriggerList.length > 0">
<div class="status" v-for="(item, index) in activeForm.statusTriggerList" :key="index">
@ -258,6 +258,18 @@
<a-select-option value="STRING">字符串</a-select-option>
</a-select>
</a-form-model-item>
<div class="title">
<span>触发器</span>
<a @click="handlePushBase(2)"></a>
</div>
<div class="statBox" v-if="subActiveForm.statusTriggerList && subActiveForm.statusTriggerList.length > 0">
<div class="status" v-for="(item, index) in subActiveForm.statusTriggerList" :key="index">
<span class="name">{{ item.statusTriggerName }}</span>
<span class="action">
<a-icon type="delete" @click="handleDelBase(index)" style="cursor: pointer;" />
</span>
</div>
</div>
</a-form-model>
</div>
<template slot="footer">
@ -355,7 +367,8 @@
<div class="top">
<div class="line" :class="{ active: item.isYield == 1 }"></div>
<div class="point" :class="{ active: item.isYield == 1 }"></div>
<div class="line" v-if="index != timeForm.activitiesList.length - 1" :class="{ active: item.isYield == 1 }"></div>
<div class="line" v-if="index != timeForm.activitiesList.length - 1" :class="{ active: item.isYield == 1 }">
</div>
</div>
<div class="bottom">
<div :title="item.showName + item.actDate">{{ item.showName }}</div>
@ -399,7 +412,7 @@
<a @click="handleAddCondition"></a>
</div>
<div>
<div class="condit" v-for="(item, index) in editConditForm.conditList" :key="index">
<div class="condit" v-for="(item, index) in editConditForm.conditionList" :key="index">
<div class="conditRow">
<span>满足条件</span>
<a v-if="item.showName" @click="handleOpenCondIt(index)" class="blur">{{ item.showName }}</a>
@ -527,7 +540,7 @@
</div>
</a-form-model>
<template slot="footer">
<a-button @click="conditFlag = false">
<a-button @click="mexActionFlag = false">
关闭
</a-button>
<a-button type="primary" @click="handleAddMexAction">
@ -565,7 +578,8 @@ export default {
mexActionIndex: 0,
mexActionFlag: false,
subActiveForm: {
sortNo: 1
sortNo: 1,
statusTriggerList: []
},
mextActionList: [],
conditFlag: false,
@ -607,10 +621,11 @@ export default {
addItemFlag: false,
visible: false,
subType: 'add',
baseType: 0,
type: 'add',
index: '',
editConditForm: {
conditList: []
conditionList: []
},
activeFlag: false,
timeFlag: false,
@ -669,7 +684,7 @@ export default {
}
},
handleAddCondition() {
this.editConditForm.conditList.push({ operType: '' })
this.editConditForm.conditionList.push({ operType: '' })
},
handleDelMexAct(index) {
this.mexActionForm.nextActList.splice(index, 1)
@ -682,10 +697,10 @@ export default {
name = item.name
}
})
this.editConditForm.conditList[this.condItIndex].nextActionType = this.mexActionForm.nextActionType
this.editConditForm.conditList[this.condItIndex].nextActionTypeName = name
this.editConditForm.conditionList[this.condItIndex].nextActionType = this.mexActionForm.nextActionType
this.editConditForm.conditionList[this.condItIndex].nextActionTypeName = name
if (this.mexActionForm.nextActList.length > 0) {
this.editConditForm.conditList[this.condItIndex].nextActList = this.mexActionForm.nextActList
this.editConditForm.conditionList[this.condItIndex].nextActList = this.mexActionForm.nextActList
}
this.mexActionFlag = false
} else {
@ -695,7 +710,7 @@ export default {
handleAppend(item, index) {
CreateLiquidExpression(item).then(res => {
if (res.data.succ) {
this.editConditForm.conditList[index].liquidExpression = res.data.ext
this.editConditForm.conditionList[index].liquidExpression = res.data.ext
this.$forceUpdate()
} else {
this.$message.error(res.data.msg)
@ -736,8 +751,8 @@ export default {
this.conditActName = item.showName
}
})
this.editConditForm.conditList[this.condItIndex].showName = this.conditActName
this.editConditForm.conditList[this.condItIndex].serviceActivitiesID = this.conditAct
this.editConditForm.conditionList[this.condItIndex].showName = this.conditActName
this.editConditForm.conditionList[this.condItIndex].serviceActivitiesID = this.conditAct
this.conditFlag = false
} else {
this.$message.warning('请选择流程活动')
@ -789,6 +804,9 @@ export default {
if (!item.subList) {
item.subList = []
}
if (!item.statusTriggerList) {
item.statusTriggerList = []
}
})
} else {
res.data.ext.statusSkuList = []
@ -824,6 +842,18 @@ export default {
this.subType = 'add'
},
handleEditStatus(item, index) {
const arr = []
this.activeList.forEach(ite => {
if (item == item.pkId) {
arr.push(1)
}
})
if (arr.length == 0) {
this.activeList.push({
pkId: item.pkId,
showName: item.showName
})
}
this.activeForm = JSON.parse(JSON.stringify(item))
this.type = 'edit'
this.activeFlag = true
@ -848,26 +878,50 @@ export default {
},
handleIntoBase() {
if (this.base) {
let name = ''
const arr = []
this.activeForm.statusTriggerList.forEach(item => {
if (item.pkId == this.base) {
arr.push(1)
}
})
if (arr.length == 0) {
this.baseList.forEach(item => {
if (item.pkId === this.base) {
name = item.statusTriggerName
if (this.baseType == 1) {
let name = ''
const arr = []
this.activeForm.statusTriggerList.forEach(item => {
if (item.pkId == this.base) {
arr.push(1)
}
})
this.activeForm.statusTriggerList.push({
pkId: this.base,
statusTriggerName: name
})
this.baseAddFlag = false
if (arr.length == 0) {
this.baseList.forEach(item => {
if (item.pkId === this.base) {
name = item.statusTriggerName
}
})
this.activeForm.statusTriggerList.push({
pkId: this.base,
statusTriggerName: name
})
this.baseAddFlag = false
} else {
this.$message.warning('请勿添加重复触发器')
}
} else {
this.$message.warning('请勿添加重复触发器')
let name = ''
const arr = []
this.subActiveForm.statusTriggerList.forEach(item => {
if (item.pkId == this.base) {
arr.push(1)
}
})
if (arr.length == 0) {
this.baseList.forEach(item => {
if (item.pkId === this.base) {
name = item.statusTriggerName
}
})
this.subActiveForm.statusTriggerList.push({
pkId: this.base,
statusTriggerName: name
})
this.baseAddFlag = false
} else {
this.$message.warning('请勿添加重复触发器')
}
}
} else {
this.$message.warning('请选择')
@ -902,6 +956,10 @@ export default {
}
})
},
handlePushBase(type) {
this.baseAddFlag = true
this.baseType = type
},
handleSaveSubActive() {
this.$refs.subActiveForm.validate(valid => {
if (valid) {
@ -945,11 +1003,11 @@ export default {
addBase() {
this.addEditBaseFlag = true
this.editConditForm = {
conditList: []
conditionList: []
}
},
handleDelAddCondit(index) {
this.editConditForm.conditList.splice(index, 1)
this.editConditForm.conditionList.splice(index, 1)
},
handleSaveActive() {
this.$refs.activeForm.validate(valid => {

@ -248,7 +248,8 @@ export default {
total: 0, //
showSizeChanger: true,
pageSizeOptions: ['1', '10', '20', '40', '80', '100'],
pageSize: 10
pageSize: 10,
showTotal: total => `共有 ${total} 条数据`
}
}
},

@ -194,7 +194,8 @@ export default {
total: 0, //
showSizeChanger: true,
pageSizeOptions: ['1', '10', '20', '40', '80', '100'],
pageSize: 10
pageSize: 10,
showTotal: total => `共有 ${total} 条数据`
}
}
},

@ -199,7 +199,8 @@ export default {
total: 0, //
showSizeChanger: true,
pageSizeOptions: ['1', '10', '20', '40', '80', '100'],
pageSize: 10
pageSize: 10,
showTotal: total => `共有 ${total} 条数据`
}
}
},

Loading…
Cancel
Save