修复问题

master
sunzehua 7 months ago
parent 87ce657fd2
commit 53d1d1f2cb

@ -12,7 +12,7 @@ import { axios } from '@/utils/request'
* @author yubaoshan * @author yubaoshan
* @date 2020/5/26 19:06 * @date 2020/5/26 19:06
*/ */
export function login (parameter) { export function login(parameter) {
return axios({ return axios({
url: '/login', url: '/login',
method: 'post', method: 'post',
@ -26,12 +26,12 @@ export function login (parameter) {
* @author 蛋蛋 * @author 蛋蛋
* @date 2022/4/13 22:06 * @date 2022/4/13 22:06
*/ */
export function simulationTenantLogin(parameter){ export function simulationTenantLogin(parameter) {
return axios({ return axios({
url: '/simulationTenantLogin', url: '/simulationTenantLogin',
method: 'post', method: 'post',
data: parameter data: parameter
}) })
} }
/** /**
@ -40,7 +40,7 @@ export function simulationTenantLogin(parameter){
* @author yubaoshan * @author yubaoshan
* @date 2020/5/26 19:07 * @date 2020/5/26 19:07
*/ */
export function logout (parameter) { export function logout(parameter) {
return axios({ return axios({
url: '/logout', url: '/logout',
method: 'get', method: 'get',
@ -54,7 +54,7 @@ export function logout (parameter) {
* @author yubaoshan * @author yubaoshan
* @date 2020/5/26 19:08 * @date 2020/5/26 19:08
*/ */
export function getLoginUser (parameter) { export function getLoginUser(parameter) {
return axios({ return axios({
url: '/getLoginUser', url: '/getLoginUser',
method: 'get', method: 'get',
@ -68,7 +68,7 @@ export function getLoginUser (parameter) {
* @author yubaoshan * @author yubaoshan
* @date 2020/5/26 19:29 * @date 2020/5/26 19:29
*/ */
export function getSmsCaptcha (parameter) { export function getSmsCaptcha(parameter) {
return axios({ return axios({
url: '/getSmsCaptcha', url: '/getSmsCaptcha',
method: 'get', method: 'get',
@ -82,7 +82,7 @@ export function getSmsCaptcha (parameter) {
* @author Jax * @author Jax
* @date 2021/1/22 00:00 * @date 2021/1/22 00:00
*/ */
export function getCaptchaOpen (parameter) { export function getCaptchaOpen(parameter) {
return axios({ return axios({
url: '/getCaptchaOpen', url: '/getCaptchaOpen',
method: 'get', method: 'get',
@ -124,10 +124,18 @@ export function reqCheck(data) {
* @author yubaoshan * @author yubaoshan
* @date 2020/6/23 23:09 * @date 2020/6/23 23:09
*/ */
export function loginWithCode (parameter) { export function loginWithCode(parameter) {
return axios({ return axios({
url: '/loginWithCode', url: '/loginWithCode',
method: 'post', method: 'post',
params: parameter params: parameter
}) })
} }
export function ChangeLogin(parameter) {
return axios({
url: '/ChangeLogin',
method: 'post',
params: parameter
})
}

@ -59,6 +59,7 @@ import { ALL_APPS_MENU } from '@/store/mutation-types'
import Vue from 'vue' import Vue from 'vue'
import { message } from 'ant-design-vue/es' import { message } from 'ant-design-vue/es'
export default { export default {
name: 'GlobalHeader', name: 'GlobalHeader',
components: { components: {

@ -44,6 +44,13 @@
<span>账户设置</span> <span>账户设置</span>
</router-link> </router-link>
</a-menu-item> </a-menu-item>
<a-menu-divider v-if="userList.length>0" />
<a-menu-item key="2" v-if="userList.length>0">
<a href="javascript:;" @click="handleChangeUser">
<a-icon type="unordered-list" />
<span>切换租户</span>
</a>
</a-menu-item>
<a-menu-divider /> <a-menu-divider />
<a-menu-item key="3"> <a-menu-item key="3">
<a href="javascript:;" @click="handleLogout"> <a href="javascript:;" @click="handleLogout">
@ -54,13 +61,7 @@
</a-menu> </a-menu>
</a-dropdown> </a-dropdown>
</div> </div>
<a-modal <a-modal title="切换应用" :visible="visible" :footer="null" :confirm-loading="confirmLoading" @cancel="handleCancel">
title="切换应用"
:visible="visible"
:footer="null"
:confirm-loading="confirmLoading"
@cancel="handleCancel"
>
<a-form :form="form1"> <a-form :form="form1">
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="选择应用"> <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="选择应用">
<a-menu mode="inline" :default-selected-keys="this.defApp" style="border-bottom:0px;lineHeight:55px;"> <a-menu mode="inline" :default-selected-keys="this.defApp" style="border-bottom:0px;lineHeight:55px;">
@ -71,6 +72,13 @@
</a-form-item> </a-form-item>
</a-form> </a-form>
</a-modal> </a-modal>
<a-modal title="切换租户" :visible="userFlag" :footer="null" :confirm-loading="confirmLoading" @cancel="userFlag = false">
<a-table :loading="userLoad" :pagination="false" :columns="columns" :data-source="userList">
<span slot="action" slot-scope="text, record">
<a href="javascript:;" @click="switchUser(record)"></a>
</span>
</a-table>
</a-modal>
</div> </div>
</template> </template>
@ -98,6 +106,27 @@ export default {
data() { data() {
return { return {
production: config.production, production: config.production,
userFlag: false,
columns: [
{
title: '租户名称',
dataIndex: 'tenantName',
key: 'tenantName'
},
{
title: '账号名称',
dataIndex: 'userName',
key: 'userName'
},
{
title: '操作',
dataIndex: 'action',
key: 'action',
scopedSlots: { customRender: 'action' }
}
],
userList: [],
userLoad: false,
labelCol: { labelCol: {
xs: { span: 24 }, xs: { span: 24 },
sm: { span: 5 } sm: { span: 5 }
@ -112,7 +141,9 @@ export default {
defApp: [] defApp: []
} }
}, },
created() {
this.userList = this.userInfo.userAccountRelation ? JSON.parse(JSON.stringify(this.userInfo.userAccountRelation)) : []
},
computed: { computed: {
...mapGetters(['token', 'nickname', 'avatar', 'userInfo']) ...mapGetters(['token', 'nickname', 'avatar', 'userInfo'])
}, },
@ -121,11 +152,15 @@ export default {
await this.$socket.authenticate(this.token) await this.$socket.authenticate(this.token)
}, },
methods: { methods: {
...mapActions(['Logout', 'MenuChange']), ...mapActions(['Logout', 'MenuChange', 'changeUser']),
loadError() { loadError() {
console.log('加载失败失败失败') console.log('加载失败失败失败')
this.$store.commit('SET_AVATAR', '/avatar2.jpg') // this.$store.commit('SET_AVATAR', '/avatar2.jpg') //
}, },
switchUser(record) {
this.userLoad = true
this.changeUser(record)
},
handleLogout() { handleLogout() {
this.$confirm({ this.$confirm({
title: '提示', title: '提示',
@ -146,7 +181,7 @@ export default {
}) })
}) })
}, },
onCancel() {} onCancel() { }
}) })
}, },
@ -157,7 +192,13 @@ export default {
this.visible = true this.visible = true
this.defApp.push(Vue.ls.get(ALL_APPS_MENU)[0].code) this.defApp.push(Vue.ls.get(ALL_APPS_MENU)[0].code)
}, },
handleChangeUser() {
if (this.userList.length > 0) {
this.userFlag = true
} else {
this.$message.warning('暂无租户可切换')
}
},
switchApp(appCode) { switchApp(appCode) {
this.visible = false this.visible = false
this.defApp = [] this.defApp = []

@ -1,5 +1,5 @@
import Vue from 'vue' import Vue from 'vue'
import { login, getLoginUser, logout,loginWithCode } from '@/api/modular/system/loginManage' import { login, getLoginUser, logout, loginWithCode, ChangeLogin } from '@/api/modular/system/loginManage'
import { sysDictTypeTree } from '@/api/modular/system/dictManage' import { sysDictTypeTree } from '@/api/modular/system/dictManage'
import { sysMenuChange } from '@/api/modular/system/menuManage' import { sysMenuChange } from '@/api/modular/system/menuManage'
import { ACCESS_TOKEN, ALL_APPS_MENU, DICT_TYPE_TREE_DATA, NOTICE_RECEIVED } from '@/store/mutation-types' import { ACCESS_TOKEN, ALL_APPS_MENU, DICT_TYPE_TREE_DATA, NOTICE_RECEIVED } from '@/store/mutation-types'
@ -234,6 +234,35 @@ const user = {
}) })
}) })
}, },
changeUser({ commit, state }, record) {
ChangeLogin({ changeTo: record.id }).then(res => {
if (res.success) {
const token = res.data
logout(state.token).then(res => {
commit('SET_TOKEN', '')
commit('SET_ROLES', [])
commit('SET_BUTTONS', [])
commit('SET_ADMINTYPE', '')
commit('SET_INFO', null)
Vue.ls.remove(ACCESS_TOKEN)
Vue.ls.remove(ALL_APPS_MENU)
Vue.ls.remove(DICT_TYPE_TREE_DATA)
Vue.ls.remove('FIRSTFLAG')
localStorage.removeItem('formTableData');
localStorage.removeItem('bookingSetting');
localStorage.removeItem('booking_form_copy');
localStorage.removeItem('booking_form_yard');
localStorage.removeItem('vesselinfoSetting');
localStorage.removeItem('mskOrderSetting');
Vue.ls.set(ACCESS_TOKEN, token, 7 * 24 * 60 * 60 * 1000)
commit('SET_TOKEN', token)
location.reload();
})
} else {
this.$message.error(res.message)
}
})
},
// scoket订舱未读消息数量 // scoket订舱未读消息数量
scoketMessage({ commit, state }) { scoketMessage({ commit, state }) {
GetNumSum({ module: 'Booking' }) GetNumSum({ module: 'Booking' })
@ -280,31 +309,31 @@ const user = {
} }
}) })
}, },
// 跨平台登录 // 跨平台登录
LoginWithCode({ commit }, userInfo) { LoginWithCode({ commit }, userInfo) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
loginWithCode(userInfo) loginWithCode(userInfo)
.then(response => { .then(response => {
if (!response.success) { if (!response.success) {
reject(response) reject(response)
return return
} }
const result = response.data const result = response.data
console.log(response, 1111) console.log(response, 1111)
Vue.ls.set(ACCESS_TOKEN, result, 7 * 24 * 60 * 60 * 1000) Vue.ls.set(ACCESS_TOKEN, result, 7 * 24 * 60 * 60 * 1000)
Vue.ls.set('FIRSTFLAG', true, 7 * 24 * 60 * 60 * 1000) Vue.ls.set('FIRSTFLAG', true, 7 * 24 * 60 * 60 * 1000)
commit('SET_TOKEN', result) commit('SET_TOKEN', result)
commit('SET_LOADING', false) commit('SET_LOADING', false)
resolve() resolve()
}) })
.catch(error => { .catch(error => {
console.log(error) console.log(error)
reject(error) reject(error)
}) })
}) })
}, },
// 登出 // 登出
ClearnInfo({ commit, state }) { ClearnInfo({ commit, state }) {
return new Promise(resolve => { return new Promise(resolve => {
commit('SET_TOKEN', '') commit('SET_TOKEN', '')
commit('SET_ROLES', []) commit('SET_ROLES', [])

@ -349,7 +349,7 @@
v-if="!vesselFrom" v-if="!vesselFrom"
:openSearch="true" :openSearch="true"
@change="getSelectViewRes"></selectView> @change="getSelectViewRes"></selectView>
<selectView <selectView
class="copy-input" class="copy-input"
ref="vesselView" ref="vesselView"
type="vessel" type="vessel"
@ -411,7 +411,7 @@
:wrapperCol="wrapperCol2" :wrapperCol="wrapperCol2"
has-feedback has-feedback
prop="voyno"> prop="voyno">
<inputView type="voyno" :parentVal="details.voyno" @getInputChange="inputChange" /> <inputView type="voyno" :parentVal="details.voyno" @getInputChange="inputChange" />
</a-form-model-item> </a-form-model-item>
</a-col> </a-col>
</template> </template>
@ -959,7 +959,7 @@ export default {
}, },
computed: { computed: {
...mapGetters([ ...mapGetters([
'projectDict','vesselFrom' 'projectDict', 'vesselFrom'
]) ])
}, },
methods: { methods: {

@ -4,8 +4,10 @@
<a-card :bordered="false" :bodyStyle="{ padding: '10px 20px' }"> <a-card :bordered="false" :bodyStyle="{ padding: '10px 20px' }">
<div class="from-line"> <div class="from-line">
<div class="left" v-if="!isLockBooking"> <div class="left" v-if="!isLockBooking">
<a-button class="btn btn-add" type="primary" @click="addboxLine"> <span style="margin-right: 5px;" class="iconfont icon-zhizhishu"></span>添加</a-button> <a-button class="btn btn-add" type="primary" @click="addboxLine"> <span style="margin-right: 5px;"
<a-button class="btn btn-delete" @click="removeLine" :style="{ marginRight: '20px' }"><span style="margin-right: 5px;" class="iconfont icon-shanchu1"></span>删除</a-button> class="iconfont icon-zhizhishu"></span>添加</a-button>
<a-button class="btn btn-delete" @click="removeLine" :style="{ marginRight: '20px' }"><span
style="margin-right: 5px;" class="iconfont icon-shanchu1"></span>删除</a-button>
<a-button class="btn btn-more-name" type="primary" @click="openDialog" :disabled="tableData.length === 0"> <a-button class="btn btn-more-name" type="primary" @click="openDialog" :disabled="tableData.length === 0">
<a-icon type="appstore" />多品名 <a-icon type="appstore" />多品名
</a-button> </a-button>
@ -21,22 +23,15 @@
<a-button class="btn btn-weight" type="primary" @click="arrowsWeight"> <a-button class="btn btn-weight" type="primary" @click="arrowsWeight">
<a-icon type="arrows-alt" />展开箱量 <a-icon type="arrows-alt" />展开箱量
</a-button> </a-button>
<a-button class="btn btn-add" type="primary" @click="handleRefsh"><span style="margin-right: 5px;" class="iconfont icon-shuaxin"></span>刷新</a-button> <a-button class="btn btn-add" type="primary" @click="handleRefsh"><span style="margin-right: 5px;"
class="iconfont icon-shuaxin"></span>刷新</a-button>
</div> </div>
<div <div v-if="details.autoYardImport && !details.autoYardImport.isRead"
v-if="details.autoYardImport && !details.autoYardImport.isRead"
style="display: inline-block;margin-left: 10px;padding-top: 5px;"> style="display: inline-block;margin-left: 10px;padding-top: 5px;">
<a-icon <a-icon v-if="details.autoYardImport && details.autoYardImport.status == ''" @click="handleOpen"
v-if="details.autoYardImport && details.autoYardImport.status == '已导入'" type="check-circle" theme="filled" style="color: green;font-size: 19px;cursor: pointer;" />
@click="handleOpen" <a-icon v-if="details.autoYardImport && details.autoYardImport.status == ''" @click="handleOpen"
type="check-circle" type="exclamation-circle" theme="filled"
theme="filled"
style="color: green;font-size: 19px;cursor: pointer;" />
<a-icon
v-if="details.autoYardImport && details.autoYardImport.status == '未导入'"
@click="handleOpen"
type="exclamation-circle"
theme="filled"
style="color: rgb(197, 194, 16);font-size: 19px;cursor: pointer;" /> style="color: rgb(197, 194, 16);font-size: 19px;cursor: pointer;" />
</div> </div>
<div class="table-right"> <div class="table-right">
@ -49,18 +44,9 @@
</div> </div>
<div v-if="tableLoaded"> <div v-if="tableLoaded">
<!-- rowKeyFieldName="rowKey" --> <!-- rowKeyFieldName="rowKey" -->
<ve-table <ve-table :columns="columns" :table-data="tableData" borderY ref="tableRef" style="min-width: 970"
:columns="columns" :cell-autofill-option="cellAutofillOption" :editOption="editOption" :rowKeyFieldName="rowKeyName"
:table-data="tableData" :rowStyleOption="rowStyleOption" :checkbox-option="checkboxOption" :clipboard-option="clipboardOption"
borderY
ref="tableRef"
style="min-width: 970"
:cell-autofill-option="cellAutofillOption"
:editOption="editOption"
:rowKeyFieldName="rowKeyName"
:rowStyleOption="rowStyleOption"
:checkbox-option="checkboxOption"
:clipboard-option="clipboardOption"
:cellSelectionOption="cellSelectionOption" /> :cellSelectionOption="cellSelectionOption" />
<div class="table-no-data" v-if="tableData.length === 0"></div> <div class="table-no-data" v-if="tableData.length === 0"></div>
</div> </div>
@ -68,19 +54,10 @@
</a-card> </a-card>
</a-spin> </a-spin>
<a-modal <a-modal title="多品名维护" width="80%" :visible="moreVisible" :confirmLoading="moreModelconfirm" :maskClosable="false"
title="多品名维护"
width="80%"
:visible="moreVisible"
:confirmLoading="moreModelconfirm"
:maskClosable="false"
@cancel="handleModelCancel"> @cancel="handleModelCancel">
<div class="model-content"> <div class="model-content">
<ve-table <ve-table style="width: 100%" :columns="modelColumns" :table-data="tableData" :radio-option="radioOption"
style="width: 100%"
:columns="modelColumns"
:table-data="tableData"
:radio-option="radioOption"
row-key-field-name="rowKey" /> row-key-field-name="rowKey" />
<div class="model-botton-box"> <div class="model-botton-box">
<a-button class="btn" type="primary" @click="addChildData"></a-button> <a-button class="btn" type="primary" @click="addChildData"></a-button>
@ -88,15 +65,9 @@
<a-button class="btn" type="primary" @click="saveChildData"></a-button> <a-button class="btn" type="primary" @click="saveChildData"></a-button>
</div> </div>
<div class="model-child-table"> <div class="model-child-table">
<ve-table <ve-table :columns="childColumns" :table-data="childTableData" borderY
:columns="childColumns" :cell-autofill-option="cellAutofillOption" :editOption="editChildOption" rowKeyFieldName="rowKey"
:table-data="childTableData" :rowStyleOption="rowStyleOption" :checkbox-option="checkChildboxOption"
borderY
:cell-autofill-option="cellAutofillOption"
:editOption="editChildOption"
rowKeyFieldName="rowKey"
:rowStyleOption="rowStyleOption"
:checkbox-option="checkChildboxOption"
:clipboard-option="clipboardChildOption" /> :clipboard-option="clipboardChildOption" />
<div class="table-no-data" v-if="childTableData.length === 0"></div> <div class="table-no-data" v-if="childTableData.length === 0"></div>
</div> </div>
@ -635,7 +606,7 @@ export default {
return ( return (
<div> <div>
<span title={'回执成功 ' + row.vgmWeight + ' ' + row.vgmWeightUnit + ' ' + row.vgmWeightMethod} v-show={row.vgm && !row.isMissing} style="color:green;cursor:pointer;font-weight:bold"><a-icon type="check" /></span> <span title={'回执成功 ' + row.vgmWeight + ' ' + row.vgmWeightUnit + ' ' + row.vgmWeightMethod} v-show={row.vgm && !row.isMissing} style="color:green;cursor:pointer;font-weight:bold"><a-icon type="check" /></span>
<span title={'回执未成功' + row.submissionDeadLine } v-show={row.vgm && row.isMissing} style="color:red;cursor:pointer;font-weight:bold"><a-icon type="exclamation" /></span> <span title={'回执未成功' + row.submissionDeadLine} v-show={row.vgm && row.isMissing} style="color:red;cursor:pointer;font-weight:bold"><a-icon type="exclamation" /></span>
<span v-show={!row.vgm}>-</span> <span v-show={!row.vgm}>-</span>
</div> </div>
) )
@ -1919,6 +1890,12 @@ export default {
this.tableData = [] this.tableData = []
const lastNum = this.tableData.length > 0 ? Number(this.tableData[this.tableData.length - 1].rowKey) + 1 : 0 const lastNum = this.tableData.length > 0 ? Number(this.tableData[this.tableData.length - 1].rowKey) + 1 : 0
const yardSetArr = localStorage.getItem('booking_form_yard') ? JSON.parse(localStorage.getItem('booking_form_yard')) : [] const yardSetArr = localStorage.getItem('booking_form_yard') ? JSON.parse(localStorage.getItem('booking_form_yard')) : []
const arr = []
yardSetArr.forEach(item => {
if (item.code === 'VESSEL' || item.code === 'VOYNO') {
arr.push(1)
}
})
const ctnSetArr = [] const ctnSetArr = []
const infoSetArr = [] const infoSetArr = []
yardSetArr.forEach(item => { yardSetArr.forEach(item => {
@ -1967,19 +1944,42 @@ export default {
}) })
} }
this.tableData = [...this.tableData, ...addTable] this.tableData = [...this.tableData, ...addTable]
if (infoSetArr.length > 0) { if ((data[0].VESSEL || data[0].VOYNO) && (this.details.vessel || this.details.voyno) && arr.length > 0) {
const arr = [] const that = this
infoSetArr.forEach(item => { this.$confirm({
for (const key in data[0]) { title: '提示',
if (item.code === key) { content: '已经录入船名航次,是否要覆盖',
item.value = data[0][key] onOk() {
arr.push(item) if (infoSetArr.length > 0) {
const arr = []
infoSetArr.forEach(item => {
for (const key in data[0]) {
if (item.code === key) {
item.value = data[0][key]
arr.push(item)
}
}
})
that.$emit('getInfoSet', arr)
} }
that.$forceUpdate()
} }
}) });
this.$emit('getInfoSet', arr) } else {
if (infoSetArr.length > 0) {
const arr = []
infoSetArr.forEach(item => {
for (const key in data[0]) {
if (item.code === key) {
item.value = data[0][key]
arr.push(item)
}
}
})
this.$emit('getInfoSet', arr)
}
this.$forceUpdate()
} }
this.$forceUpdate()
} else { } else {
this.$message.error(res.message) this.$message.error(res.message)
} }

@ -317,7 +317,7 @@
<template #statuslogs="{ row, column }"> <template #statuslogs="{ row, column }">
<div v-if="row.statuslogs1"> <div v-if="row.statuslogs1">
<div v-if="row.statuslogs1.length > 0"> <div v-if="row.statuslogs1.length > 0">
<div class="billtrace-btn1"> <div class="billtrace-btn1" style="display: flex;align-items: center;">
<a-spin :spinning="row.webDataLoad"> <a-spin :spinning="row.webDataLoad">
<a-popover placement="topLeft"> <a-popover placement="topLeft">
<div slot="content"> <div slot="content">
@ -332,14 +332,19 @@
<span class="txfcSpan">{{ item.fcopTime }}</span> <span class="txfcSpan">{{ item.fcopTime }}</span>
</div> </div>
</div> </div>
<div @click="handleGetWebData(row, 'YARD')" :class="{ active: row.statuslogs1[0].txopTime }"> <div
@click="handleGetWebData(row, 'YARD')"
:class="{ active: row.statuslogs1[0].txopTime }">
提箱 提箱
</div> </div>
<div @click="handleGetWebData(row, 'YARD')" :class="{ active: row.statuslogs1[0].fcopTime }"> <div
@click="handleGetWebData(row, 'YARD')"
:class="{ active: row.statuslogs1[0].fcopTime }">
返场 返场
</div> </div>
</a-popover> </a-popover>
</a-spin> </a-spin>
<span style="margin-left: 10px;">未提{{ row.txopNumber }}/{{ row.statuslogs1.length }}</span>
</div> </div>
</div> </div>
</div> </div>
@ -2828,6 +2833,15 @@ export default {
}) })
}) })
} }
if (item.statuslogs1.length > 0) {
let num1 = item.statuslogs1.length
item.statuslogs1.forEach(item => {
if (item.txopTime) {
num1 -= 1
}
})
item.txopNumber = num1
}
if (item.bsstatusname) { if (item.bsstatusname) {
if (this.statusDIct) { if (this.statusDIct) {
this.statusDIct.forEach(ite => { this.statusDIct.forEach(ite => {

@ -156,19 +156,21 @@
:xl="4"> :xl="4">
<a-form-model-item <a-form-model-item
class="pre-from-label" class="pre-from-label"
label="船代11" label="船代"
prop="forwarder" prop="forwarder"
:labelCol="labelCol2" :labelCol="labelCol2"
:wrapperCol="wrapperCol2" :wrapperCol="wrapperCol2"
has-feedback> has-feedback>
<selectView <selectView
ref="shipagency"
type="shipagency" type="shipagency"
:defaultVal="orderDetails.forwarder" :defaultVal="orderDetails.forwarder"
searchApi="GetForwarderlist" searchApi="RelaPortLoadForwarderList"
:searchQuery="{ KeyWord: '' }" :searchQuery="{ forwarderCode: '',module:'Booking',portLoadCode:orderDetails.portloadid }"
:showLabel="['name', 'showCode']" :showLabel="['forwarder', 'forwarderCode']"
:openSearch="true" :openSearch="true"
@change="getSelectViewRes"></selectView> @change="getSelectViewRes"
></selectView>
</a-form-model-item> </a-form-model-item>
</a-col> </a-col>
<a-col :xs="12" :sm="12" :md="12" :lg="8" :xl="5"> <a-col :xs="12" :sm="12" :md="12" :lg="8" :xl="5">
@ -1974,6 +1976,7 @@ export default {
yard: $details.yard, yard: $details.yard,
ediCtn: [] ediCtn: []
} }
console.log($data)
if (!isHBL || type === 'enter') { if (!isHBL || type === 'enter') {
$details.ctnInputs.forEach((item) => { $details.ctnInputs.forEach((item) => {
$data.ediCtn.push({ $data.ediCtn.push({
@ -2328,7 +2331,7 @@ export default {
}, },
getSelectViewRes({ type, res }) { getSelectViewRes({ type, res }) {
if (['shipagency'].includes(type)) { if (['shipagency'].includes(type)) {
this.orderDetails.forwarder = res.name || '' this.orderDetails.forwarder = res.name || res.forwarder || ''
} else if (['shippername', 'notifypartyname', 'consigneename'].includes(type)) { } else if (['shippername', 'notifypartyname', 'consigneename'].includes(type)) {
this.orderDetails[type] = res.title || '' this.orderDetails[type] = res.title || ''
this.orderDetails[type.replace('name', 'addR1')] = res.content || '' this.orderDetails[type.replace('name', 'addR1')] = res.content || ''
@ -2387,6 +2390,7 @@ export default {
} else if (['portloadid', 'portdischargeid', 'placedeliveryid'].includes(type)) { } else if (['portloadid', 'portdischargeid', 'placedeliveryid'].includes(type)) {
this.orderDetails[type] = res['ediCode'] || '' this.orderDetails[type] = res['ediCode'] || ''
this.orderDetails[type.replace('id', '')] = res['enName'] || '' this.orderDetails[type.replace('id', '')] = res['enName'] || ''
this.orderDetails.forwarder = ''
} }
console.log('== 模糊搜索后的预定舱 ==', this.orderDetails) console.log('== 模糊搜索后的预定舱 ==', this.orderDetails)
}, },

@ -311,7 +311,7 @@
<template #statuslogs="{ row, column }"> <template #statuslogs="{ row, column }">
<div v-if="row.statuslogs1"> <div v-if="row.statuslogs1">
<div v-if="row.statuslogs1.length > 0"> <div v-if="row.statuslogs1.length > 0">
<div class="billtrace-btn1"> <div class="billtrace-btn1" style="display: flex;align-items: center;">
<a-spin :spinning="row.webDataLoad"> <a-spin :spinning="row.webDataLoad">
<a-popover placement="topLeft"> <a-popover placement="topLeft">
<div slot="content"> <div slot="content">
@ -338,6 +338,7 @@
</div> </div>
</a-popover> </a-popover>
</a-spin> </a-spin>
<span style="margin-left: 10px;">未提{{ row.txopNumber }}/{{ row.statuslogs1.length }}</span>
</div> </div>
</div> </div>
</div> </div>
@ -1355,7 +1356,7 @@ export default {
return { return {
spinning: false, spinning: false,
isUpload: false, isUpload: false,
deletLoad:false, deletLoad: false,
webDataTitle: '', webDataTitle: '',
serviceFlag: false, serviceFlag: false,
serviceFd: '', serviceFd: '',
@ -2836,6 +2837,15 @@ export default {
}) })
}) })
} }
if (item.statuslogs1.length > 0) {
let num1 = item.statuslogs1.length
item.statuslogs1.forEach(item => {
if (item.txopTime) {
num1 -= 1
}
})
item.txopNumber = num1
}
if (item.bsstatusname) { if (item.bsstatusname) {
if (this.statusDIct) { if (this.statusDIct) {
this.statusDIct.forEach(ite => { this.statusDIct.forEach(ite => {

@ -41,7 +41,7 @@
:not-found-content="null" :not-found-content="null"
> >
<a-select-option v-for="item in carrierCodeData" :key="item.code" :value="item.code"> <a-select-option v-for="item in carrierCodeData" :key="item.code" :value="item.code">
{{ item.name }} {{ item.name }} / {{ item.showCode }}
</a-select-option> </a-select-option>
</a-select> </a-select>
</a-form-item> </a-form-item>

@ -297,6 +297,11 @@
完成任务 完成任务
</a-button> </a-button>
</a-col> </a-col>
<a-col>
<a-button type="primary" @click="OpenModal">
</a-button>
</a-col>
<a-col> <a-col>
<a-button type="danger" @click="FnCancelTask"> <a-button type="danger" @click="FnCancelTask">
取消任务 取消任务
@ -330,7 +335,7 @@
</a-row> </a-row>
</a-spin> </a-spin>
<a-modal v-model="visible" title="生成方式选择" @ok="handleOk" width="40%"> <a-modal v-model="visible" title="生成方式选择" @ok="handleOk" width="40%">
<a-radio-group default-value="GEN_BOOKING" v-model="CreateData.generateMethod"> <a-radio-group v-model="CreateData.generateMethod">
<a-radio value="GEN_BOOKING_SLOT"> <a-radio value="GEN_BOOKING_SLOT">
直接生成舱位和订舱 直接生成舱位和订舱
</a-radio> </a-radio>
@ -344,6 +349,7 @@
匹配已有订舱 匹配已有订舱
</a-radio> </a-radio>
</a-radio-group> </a-radio-group>
<a-checkbox style="margin-top: 10px;" v-model="CreateData.isDirectSend"></a-checkbox>
<p class="modaltitle">订舱录入</p> <p class="modaltitle">订舱录入</p>
<a-form class="Editing"> <a-form class="Editing">
<a-row> <a-row>
@ -368,13 +374,14 @@
<a-form-item label="联系人:" :label-col="formItemLayout.labelCol2" :wrapper-col="formItemLayout.wrapperCol2"> <a-form-item label="联系人:" :label-col="formItemLayout.labelCol2" :wrapper-col="formItemLayout.wrapperCol2">
<a-select <a-select
show-search show-search
v-model="CreateData.customerContactId" mode="multiple"
v-model="CreateData.customerList"
:default-active-first-option="false" :default-active-first-option="false"
:show-arrow="false" :show-arrow="false"
:filter-option="false" :filter-option="false"
:not-found-content="null" :not-found-content="null"
@search="SearchUser" @search="SearchUser"
@change="ChangeCustomerList"> >
<a-select-option v-for="item in customerByList" :key="item.id" :value="item.id"> <a-select-option v-for="item in customerByList" :key="item.id" :value="item.id">
{{ item.name }} {{ item.name }}
</a-select-option> </a-select-option>
@ -445,6 +452,26 @@
</a-col> </a-col>
</a-row> </a-row>
<a-row> <a-row>
<a-col :span="8">
<a-form-item label="客服:" :label-col="formItemLayout.labelCol2" :wrapper-col="formItemLayout.wrapperCol2">
<a-select
show-search
v-model="CreateData.custserviceId"
:default-active-first-option="false"
:show-arrow="false"
:filter-option="false"
:not-found-content="null"
@search="SearchUser"
@change="e => {
ChangeUser(e, 'custserviceName')
}
">
<a-select-option v-for="item in UserList" :key="item.id" :value="item.id">
{{ item.name }}
</a-select-option>
</a-select>
</a-form-item>
</a-col>
<a-col :span="8"> <a-col :span="8">
<a-form-item label="航线操作:" :label-col="formItemLayout.labelCol2" :wrapper-col="formItemLayout.wrapperCol2"> <a-form-item label="航线操作:" :label-col="formItemLayout.labelCol2" :wrapper-col="formItemLayout.wrapperCol2">
<a-select <a-select
@ -826,6 +853,20 @@ export default {
saveService(data) { saveService(data) {
data.isYield = !data.isYield data.isYield = !data.isYield
}, },
OpenModal() {
this.CreateData = {
generateMethod: 'GEN_BOOKING',
customerList: [],
isDirectSend: false
}
this.UserList.forEach(item => {
if (item.id == this.userInfo.id) {
this.CreateData.opId = item.id
this.CreateData.opName = item.name
}
})
this.visible = true
},
getList() { getList() {
this.spinning = true this.spinning = true
const ApiData = { const ApiData = {

Loading…
Cancel
Save