|
|
|
@ -195,7 +195,7 @@
|
|
|
|
|
<template #goodsStatusList="{ row }">
|
|
|
|
|
<div class="goods-status">
|
|
|
|
|
<div class="goods-status-left">
|
|
|
|
|
<template v-for="(status, sindex) in row.goodsStatusList" >
|
|
|
|
|
<template v-for="(status, sindex) in row.goodsStatusList">
|
|
|
|
|
<a-popover placement="top" :key="sindex" v-show="status.finishTime || status.remark">
|
|
|
|
|
<div slot="content">
|
|
|
|
|
<div v-if="status.finishTime">时间:{{ status.finishTime }}</div>
|
|
|
|
@ -246,7 +246,7 @@
|
|
|
|
|
<p v-if="RecentlyCarrierData.length" class="Awrapper">最近使用 <span class="line"></span></p>
|
|
|
|
|
<div class="group-label" v-if="RecentlyCarrierData.length">
|
|
|
|
|
<a-radio :style="radioStyle" :value="item.code" v-for="item in RecentlyCarrierData" :key="item.code">
|
|
|
|
|
<img class="radio-logo" :src="require(`@/assets/logo/${item.code}.png`)" />
|
|
|
|
|
<img class="radio-logo" :src="item.ImgSrc" />
|
|
|
|
|
<!-- {{ item.code }} -->
|
|
|
|
|
{{ item.cnName }}
|
|
|
|
|
</a-radio>
|
|
|
|
@ -256,8 +256,7 @@
|
|
|
|
|
<p class="Awrapper">{{ e }}<span class="line"></span></p>
|
|
|
|
|
<div class="group-label">
|
|
|
|
|
<a-radio :style="radioStyle" :value="item.code" v-for="item in RcarrierData[e]" :key="item.code">
|
|
|
|
|
<img class="radio-logo" :src="require(`@/assets/logo/${item.code}.png`)" />
|
|
|
|
|
<!-- {{ item.code }} -->
|
|
|
|
|
<img class="radio-logo" :src="item.ImgSrc" />
|
|
|
|
|
{{ item.cnName }}
|
|
|
|
|
</a-radio>
|
|
|
|
|
</div>
|
|
|
|
@ -305,9 +304,13 @@
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<!-- v-show="goodStatusShow" -->
|
|
|
|
|
<div class="goods-hovers-list" :class="{'hide-goods-hover': !goodStatusShow}" :style="{ top: `${goodStatusScreenY}px`, left: `${goodStatusScreenX}px` }" >
|
|
|
|
|
<div
|
|
|
|
|
class="goods-hovers-list"
|
|
|
|
|
:class="{ 'hide-goods-hover': !goodStatusShow }"
|
|
|
|
|
:style="{ top: `${goodStatusScreenY}px`, left: `${goodStatusScreenX}px` }"
|
|
|
|
|
>
|
|
|
|
|
<div class="title">货运动态</div>
|
|
|
|
|
<template v-for="(goodStatusItem, gindex) in goodStatusData" >
|
|
|
|
|
<template v-for="(goodStatusItem, gindex) in goodStatusData">
|
|
|
|
|
<template v-if="goodStatusItem.finishTime || goodStatusItem.remark">
|
|
|
|
|
<a-popover placement="top" :key="gindex">
|
|
|
|
|
<div slot="content">
|
|
|
|
@ -315,11 +318,15 @@
|
|
|
|
|
<div v-if="goodStatusItem.remark">备注:{{ goodStatusItem.remark }}</div>
|
|
|
|
|
<div v-if="goodStatusItem.extData">显示天数:{{ goodStatusItem.extData }}</div>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="goods-btn" :class="{ 'active': goodStatusItem.finishTime || goodStatusItem.remark }">{{ goodStatusItem.statusName }}</div>
|
|
|
|
|
<div class="goods-btn" :class="{ active: goodStatusItem.finishTime || goodStatusItem.remark }">
|
|
|
|
|
{{ goodStatusItem.statusName }}
|
|
|
|
|
</div>
|
|
|
|
|
</a-popover>
|
|
|
|
|
</template>
|
|
|
|
|
<template v-else>
|
|
|
|
|
<div class="goods-btn" :key="gindex" :class="{ 'active': goodStatusItem.finishTime || goodStatusItem.remark }">{{ goodStatusItem.statusName }}</div>
|
|
|
|
|
<div class="goods-btn" :key="gindex" :class="{ active: goodStatusItem.finishTime || goodStatusItem.remark }">
|
|
|
|
|
{{ goodStatusItem.statusName }}
|
|
|
|
|
</div>
|
|
|
|
|
</template>
|
|
|
|
|
</template>
|
|
|
|
|
</div>
|
|
|
|
@ -676,7 +683,7 @@ export default {
|
|
|
|
|
computed: {
|
|
|
|
|
...mapGetters(['bookingList', 'bookingGridOptions'])
|
|
|
|
|
},
|
|
|
|
|
beforeRouteLeave (to, from, next) {
|
|
|
|
|
beforeRouteLeave(to, from, next) {
|
|
|
|
|
// const copyArr = JSON.parse(JSON.stringify(this.gridOptions.data))
|
|
|
|
|
// const first = copyArr.splice(0, 20)
|
|
|
|
|
this.setBookingGridOptions(this.gridOptions)
|
|
|
|
@ -703,7 +710,7 @@ export default {
|
|
|
|
|
// }
|
|
|
|
|
next()
|
|
|
|
|
},
|
|
|
|
|
beforeRouteEnter (to, from, next) {
|
|
|
|
|
beforeRouteEnter(to, from, next) {
|
|
|
|
|
next(vm => {
|
|
|
|
|
vm.upDate()
|
|
|
|
|
})
|
|
|
|
@ -716,7 +723,7 @@ export default {
|
|
|
|
|
},
|
|
|
|
|
methods: {
|
|
|
|
|
...mapActions(['setBookingList', 'setBookingGridOptions']),
|
|
|
|
|
createdInit () {
|
|
|
|
|
createdInit() {
|
|
|
|
|
this.showColumns = JSON.parse(JSON.stringify(initData.columns))
|
|
|
|
|
this.formAllData = JSON.parse(JSON.stringify(initData.condAllData))
|
|
|
|
|
this.fromTableAllData = JSON.parse(JSON.stringify(initData.columnsAllData))
|
|
|
|
@ -725,23 +732,27 @@ export default {
|
|
|
|
|
this.getConfigUser(true)
|
|
|
|
|
this.getCarrier()
|
|
|
|
|
},
|
|
|
|
|
onresize () {
|
|
|
|
|
onresize() {
|
|
|
|
|
window.onresize = () => {
|
|
|
|
|
this.screenWidth = document.body.clientWidth
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
upDate () {
|
|
|
|
|
upDate() {
|
|
|
|
|
if (Object.keys(this.gridOptions).length > 0) {
|
|
|
|
|
if (Object.keys(this.bookingGridOptions).length === 0) { return false }
|
|
|
|
|
if (Object.keys(this.bookingGridOptions).length === 0) {
|
|
|
|
|
return false
|
|
|
|
|
}
|
|
|
|
|
const newData = JSON.parse(JSON.stringify(this.bookingGridOptions))
|
|
|
|
|
if (newData && newData.data.length > this.gridOptions.data.length) {
|
|
|
|
|
console.log('这里插入最新舱单', newData.data.length, this.gridOptions.data.length)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
upDate1 () {
|
|
|
|
|
upDate1() {
|
|
|
|
|
if (Object.keys(this.gridOptions).length > 0) {
|
|
|
|
|
if (Object.keys(this.bookingGridOptions).length === 0) { return false }
|
|
|
|
|
if (Object.keys(this.bookingGridOptions).length === 0) {
|
|
|
|
|
return false
|
|
|
|
|
}
|
|
|
|
|
const newData = JSON.parse(JSON.stringify(this.bookingGridOptions))
|
|
|
|
|
// 默认取前十条或者前N条,暂时屏蔽
|
|
|
|
|
if (this.bookingGridOptions.data && this.bookingGridOptions.data.length > 0) {
|
|
|
|
@ -879,7 +890,7 @@ export default {
|
|
|
|
|
getConfigUser(isInit = false) {
|
|
|
|
|
// 请求自定义: 查询表单 表头 页码
|
|
|
|
|
const query = {
|
|
|
|
|
typeArr: ['booking_list_cond', 'booking_list_column']
|
|
|
|
|
typeArr: ['booking_list_cond', 'booking_list_column']
|
|
|
|
|
}
|
|
|
|
|
DjyUserConfigMulti(this.$qs.stringify(query, { arrayFormat: 'repeat' })).then(res => {
|
|
|
|
|
const $data = {}
|
|
|
|
@ -939,6 +950,15 @@ export default {
|
|
|
|
|
}
|
|
|
|
|
Object.keys(Obj).forEach(e => {
|
|
|
|
|
Obj[e].forEach(item => {
|
|
|
|
|
RData[item].forEach((Ai, AiIndex) => {
|
|
|
|
|
let imgSrc = ''
|
|
|
|
|
try {
|
|
|
|
|
imgSrc = require(`@/assets/logo/${Ai.code}.png`)
|
|
|
|
|
} catch (error) {
|
|
|
|
|
imgSrc = require('@/assets/logo/default.png')
|
|
|
|
|
}
|
|
|
|
|
RData[item][AiIndex].ImgSrc = imgSrc
|
|
|
|
|
})
|
|
|
|
|
Data[e].push(...RData[item])
|
|
|
|
|
})
|
|
|
|
|
})
|
|
|
|
@ -971,7 +991,7 @@ export default {
|
|
|
|
|
console.log(err)
|
|
|
|
|
})
|
|
|
|
|
},
|
|
|
|
|
setFormData (data, isReset = false, isInit = false) {
|
|
|
|
|
setFormData(data, isReset = false, isInit = false) {
|
|
|
|
|
if (Object.keys(data).length > 0 && JSON.parse(data.configJson).length) {
|
|
|
|
|
const arr = JSON.parse(data.configJson)
|
|
|
|
|
const nowData = []
|
|
|
|
@ -1025,7 +1045,7 @@ export default {
|
|
|
|
|
}
|
|
|
|
|
this.$forceUpdate()
|
|
|
|
|
},
|
|
|
|
|
setTableList (data) {
|
|
|
|
|
setTableList(data) {
|
|
|
|
|
if (Object.keys(data).length > 0 && JSON.parse(data.configJson).length) {
|
|
|
|
|
this.formTableData = JSON.parse(data.configJson)
|
|
|
|
|
const nowTableArr = this.formTableData.map((item, index) => {
|
|
|
|
@ -1057,7 +1077,7 @@ export default {
|
|
|
|
|
this.$forceUpdate()
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
setPageSize (data) {
|
|
|
|
|
setPageSize(data) {
|
|
|
|
|
if (data && JSON.parse(data.configJson)) {
|
|
|
|
|
this.gridOptions.pagerConfig.pageSize = JSON.parse(data.configJson).pageSize
|
|
|
|
|
this.$forceUpdate()
|
|
|
|
@ -1506,7 +1526,7 @@ export default {
|
|
|
|
|
this.remarkShow = false
|
|
|
|
|
this.remarkData = null
|
|
|
|
|
},
|
|
|
|
|
goodStatusclick (e, data) {
|
|
|
|
|
goodStatusclick(e, data) {
|
|
|
|
|
if (!this.goodStatusShow) {
|
|
|
|
|
this.goodStatusHover(e, data)
|
|
|
|
|
} else {
|
|
|
|
@ -1721,17 +1741,17 @@ export default {
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
getSelectFirst ({ form, index, value }) {
|
|
|
|
|
getSelectFirst({ form, index, value }) {
|
|
|
|
|
const fun = this.emnuSelectApi(form.label)
|
|
|
|
|
if (fun) {
|
|
|
|
|
this.getFromSelectData(fun).then((data) => {
|
|
|
|
|
this.getFromSelectData(fun).then(data => {
|
|
|
|
|
this.formData[index].dataList = data
|
|
|
|
|
this.$refs[`fromlabel-${form.label}`][0].$data.dataList = data
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
removeMoreFun () {
|
|
|
|
|
removeMoreFun() {
|
|
|
|
|
const select = this.$refs.xGrid.getCheckboxRecords()
|
|
|
|
|
if (select.length === 0) {
|
|
|
|
|
this.$message.error('请选择操作订单')
|
|
|
|
@ -1742,28 +1762,29 @@ export default {
|
|
|
|
|
})
|
|
|
|
|
this.deleteBookingOrder(removeArr)
|
|
|
|
|
},
|
|
|
|
|
removeFun (data) {
|
|
|
|
|
removeFun(data) {
|
|
|
|
|
this.deleteBookingOrder([data.id])
|
|
|
|
|
},
|
|
|
|
|
deleteBookingOrder (arr) {
|
|
|
|
|
DeleteBookingOrder(arr.toString()).then(res => {
|
|
|
|
|
if (res.success) {
|
|
|
|
|
this.$message.success('删除成功')
|
|
|
|
|
this.gridOptions.data = this.gridOptions.data.filter(item => !arr.includes(item.id))
|
|
|
|
|
this.gridOptions.pagerConfig.total = this.gridOptions.pagerConfig.total - arr.length
|
|
|
|
|
this.$forceUpdate()
|
|
|
|
|
} else {
|
|
|
|
|
this.$message.error(res.message)
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
.catch(err => {
|
|
|
|
|
console.log(err)
|
|
|
|
|
})
|
|
|
|
|
deleteBookingOrder(arr) {
|
|
|
|
|
DeleteBookingOrder(arr.toString())
|
|
|
|
|
.then(res => {
|
|
|
|
|
if (res.success) {
|
|
|
|
|
this.$message.success('删除成功')
|
|
|
|
|
this.gridOptions.data = this.gridOptions.data.filter(item => !arr.includes(item.id))
|
|
|
|
|
this.gridOptions.pagerConfig.total = this.gridOptions.pagerConfig.total - arr.length
|
|
|
|
|
this.$forceUpdate()
|
|
|
|
|
} else {
|
|
|
|
|
this.$message.error(res.message)
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
.catch(err => {
|
|
|
|
|
console.log(err)
|
|
|
|
|
})
|
|
|
|
|
},
|
|
|
|
|
cancelRemove () {
|
|
|
|
|
cancelRemove() {
|
|
|
|
|
console.log('== 取消 ==')
|
|
|
|
|
},
|
|
|
|
|
pageClick (e) {
|
|
|
|
|
pageClick() {
|
|
|
|
|
this.goodStatusShow = false
|
|
|
|
|
this.goodStatusData = null
|
|
|
|
|
},
|
|
|
|
@ -2294,17 +2315,17 @@ export default {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 货物状态
|
|
|
|
|
.goods-status{
|
|
|
|
|
.goods-status {
|
|
|
|
|
width: 100%;
|
|
|
|
|
display: flex;
|
|
|
|
|
height: 48px;
|
|
|
|
|
.goods-status-left{
|
|
|
|
|
.goods-status-left {
|
|
|
|
|
flex: 1;
|
|
|
|
|
overflow: hidden;
|
|
|
|
|
height: 48px;
|
|
|
|
|
text-overflow: ellipsis;
|
|
|
|
|
white-space: nowrap;
|
|
|
|
|
.goods-tip{
|
|
|
|
|
.goods-tip {
|
|
|
|
|
font-size: 12px;
|
|
|
|
|
margin: 0 4px;
|
|
|
|
|
cursor: pointer;
|
|
|
|
@ -2314,11 +2335,11 @@ export default {
|
|
|
|
|
color: @primary-color;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
.goods-status-right{
|
|
|
|
|
.goods-status-right {
|
|
|
|
|
width: 30px;
|
|
|
|
|
text-align: center;
|
|
|
|
|
height: 48px;
|
|
|
|
|
i{
|
|
|
|
|
i {
|
|
|
|
|
color: @primary-color;
|
|
|
|
|
cursor: pointer;
|
|
|
|
|
height: 48px;
|
|
|
|
@ -2327,9 +2348,10 @@ export default {
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.dzRemark, .czRemark{
|
|
|
|
|
.dzRemark,
|
|
|
|
|
.czRemark {
|
|
|
|
|
display: block;
|
|
|
|
|
text-align:left;
|
|
|
|
|
text-align: left;
|
|
|
|
|
width: 100%;
|
|
|
|
|
overflow: hidden;
|
|
|
|
|
text-overflow: ellipsis;
|
|
|
|
@ -2411,7 +2433,7 @@ export default {
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
.goods-hovers-list{
|
|
|
|
|
.goods-hovers-list {
|
|
|
|
|
max-height: 400px;
|
|
|
|
|
position: fixed;
|
|
|
|
|
top: 0;
|
|
|
|
@ -2426,15 +2448,15 @@ export default {
|
|
|
|
|
white-space: normal;
|
|
|
|
|
text-align: left;
|
|
|
|
|
z-index: 999 !important;
|
|
|
|
|
transition: .5s all;
|
|
|
|
|
transition: 0.5s all;
|
|
|
|
|
display: block;
|
|
|
|
|
opacity: 1;
|
|
|
|
|
&.hide-goods-hover{
|
|
|
|
|
&.hide-goods-hover {
|
|
|
|
|
display: none;
|
|
|
|
|
opacity: 0;
|
|
|
|
|
}
|
|
|
|
|
// overflow: auto;
|
|
|
|
|
&::before{
|
|
|
|
|
&::before {
|
|
|
|
|
content: '';
|
|
|
|
|
float: left;
|
|
|
|
|
width: 0;
|
|
|
|
@ -2456,11 +2478,11 @@ export default {
|
|
|
|
|
font-weight: 600;
|
|
|
|
|
}
|
|
|
|
|
.goods-btn {
|
|
|
|
|
display:inline-block;
|
|
|
|
|
display: inline-block;
|
|
|
|
|
font-size: 12px;
|
|
|
|
|
color: #666;
|
|
|
|
|
word-break: break-all;
|
|
|
|
|
width:82px;
|
|
|
|
|
width: 82px;
|
|
|
|
|
height: 28px;
|
|
|
|
|
line-height: 28px;
|
|
|
|
|
border-radius: 4px;
|
|
|
|
@ -2469,7 +2491,7 @@ export default {
|
|
|
|
|
text-align: center;
|
|
|
|
|
margin: 0 2px 8px;
|
|
|
|
|
cursor: pointer;
|
|
|
|
|
&.active{
|
|
|
|
|
&.active {
|
|
|
|
|
color: @primary-color;
|
|
|
|
|
border: 1px solid @primary-color;
|
|
|
|
|
}
|
|
|
|
@ -2507,13 +2529,13 @@ export default {
|
|
|
|
|
font-size: 100px;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
.pono{
|
|
|
|
|
.pono {
|
|
|
|
|
text-align: left;
|
|
|
|
|
}
|
|
|
|
|
/deep/ .vxe-header--row th{
|
|
|
|
|
/deep/ .vxe-header--row th {
|
|
|
|
|
text-align: left !important;
|
|
|
|
|
}
|
|
|
|
|
/deep/ .vxe-cell--title{
|
|
|
|
|
/deep/ .vxe-cell--title {
|
|
|
|
|
width: 100%;
|
|
|
|
|
text-align: left;
|
|
|
|
|
}
|
|
|
|
|