修改客户订舱

master
sunzehua 1 month ago
parent 2fb67070fa
commit 512c6c717e

19
.env

@ -1,14 +1,15 @@
NODE_ENV=production
VUE_APP_PREVIEW=true
# VUE_APP_TYPE = 'customer'
VUE_APP_TYPE = 'hechuan'
VUE_APP_TYPE = 'customer'
# VUE_APP_TYPE = 'hechuan'
# VUE_APP_TYPE = 'yunyingduan'
# VUE_APP_TYPE = 'gangjie'
# VUE_APP_TYPE = 'puqi'
# 打包部署的三个端 客户端customer 和川端hechuan 运营端djy
# 和川大简云正式
VUE_APP_API_BASE_URL=http://47.104.85.216:12345/api
VUE_APP_SOCKET_BASE_URL=http://47.104.85.216:12345
# VUE_APP_API_BASE_URL=http://47.104.85.216:12345/api
# VUE_APP_SOCKET_BASE_URL=http://47.104.85.216:12345
# 和川大简云测试
# VUE_APP_API_BASE_URL=http://60.209.125.238:35100
@ -27,9 +28,13 @@ VUE_APP_SOCKET_BASE_URL=http://47.104.85.216:12345
# VUE_APP_SOCKET_BASE_URL=http://118.190.144.189:5001
# 客户端正式
# VUE_APP_API_BASE_URL=http://118.190.144.189:6001
# VUE_APP_SOCKET_BASE_URL=http://118.190.144.189:6001
VUE_APP_API_BASE_URL=http://118.190.144.189:6001
VUE_APP_SOCKET_BASE_URL=http://118.190.144.189:6001
# 运营端正式
# VUE_APP_API_BASE_URL=http://118.190.144.189:6002
# VUE_APP_SOCKET_BASE_URL=http://118.190.144.189:6002
# VUE_APP_SOCKET_BASE_URL=http://118.190.144.189:6002
# puqi
# VUE_APP_API_BASE_URL=http://118.190.144.189:5003
# VUE_APP_SOCKET_BASE_URL=http://118.190.144.189:5003

@ -1,14 +1,15 @@
NODE_ENV=development
VUE_APP_PREVIEW=true
# VUE_APP_TYPE = 'customer'
VUE_APP_TYPE = 'hechuan'
VUE_APP_TYPE = 'customer'
# VUE_APP_TYPE = 'hechuan'
# VUE_APP_TYPE = 'yunyingduan'
# VUE_APP_TYPE = 'gangjie'
# VUE_APP_TYPE = 'puqi'
# 打包部署的三个端 客户端customer 和川端hechuan 运营端yunyingduan
# 和川大简云正式
VUE_APP_API_BASE_URL=http://47.104.85.216:12345/api
VUE_APP_SOCKET_BASE_URL=http://47.104.85.216:12345
# VUE_APP_API_BASE_URL=http://47.104.85.216:12345/api
# VUE_APP_SOCKET_BASE_URL=http://47.104.85.216:12345
# 和川大简云测试
# VUE_APP_API_BASE_URL=http://60.209.125.238:35100
@ -34,5 +35,9 @@ VUE_APP_SOCKET_BASE_URL=http://47.104.85.216:12345
# VUE_APP_SOCKET_BASE_URL=http://118.190.144.189:6002
# 客户端正式
# VUE_APP_API_BASE_URL=http://118.190.144.189:6001
# VUE_APP_SOCKET_BASE_URL=http://118.190.144.189:6001
VUE_APP_API_BASE_URL=http://118.190.144.189:6001
VUE_APP_SOCKET_BASE_URL=http://118.190.144.189:6001
# puqi
# VUE_APP_API_BASE_URL=http://118.190.144.189:5003
# VUE_APP_SOCKET_BASE_URL=http://118.190.144.189:5003

@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width,initial-scale=1.0" />
<!-- <link rel="icon" href="<%= BASE_URL %>logo.png"> -->
<title>大简云工作平台</title>
<title><%= htmlWebpackPlugin.options.title %></title>
<style>
.first-loading-wrp {
display: flex;
@ -113,7 +113,7 @@
<div class="loading-wrp">
<span class="dot dot-spin"><i></i><i></i><i></i><i></i></span>
</div>
<div style="display: flex; justify-content: center; align-items: center;">大简云工作平台</div>
<div style="display: flex; justify-content: center; align-items: center;"><%= htmlWebpackPlugin.options.title %></div>
</div>
</div>
<!-- require cdn assets js -->

@ -1776,3 +1776,25 @@ export function GetInitInfoMskApi(parameter) {
})
}
export function GetTimerSchemeList(parameter) {
return axios({
url: '/BookingMSKAPI/GetTimerSchemeList',
method: 'get',
params: parameter
})
}
export function BatchSetupTimerBooking(parameter) {
return axios({
url: '/BookingMSKAPI/BatchSetupTimerBooking',
method: 'post',
data: parameter
})
}
export function BatchCancelTimerBooking(parameter) {
return axios({
url: '/BookingMSKAPI/BatchCancelTimerBooking',
method: 'post',
data: parameter
})
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 229 KiB

@ -1,8 +1,8 @@
<template>
<div class="logo">
<router-link :to="{ name: 'Console' }">
<LogoSvg alt="logo" />
<h1 v-if="showTitle">{{ this.titles }}</h1>
<LogoSvg v-if="showFlag" alt="logo" />
<h1 v-if="showTitle">{{ showFlag?'':'' }}</h1>
</router-link>
</div>
</template>
@ -19,7 +19,8 @@ export default {
mixins: [mixin, mixinDevice],
data() {
return {
titles: ''
titles: '',
showFlag: true
}
},
props: {
@ -48,6 +49,11 @@ export default {
this.titles = this.title
}
}
if (process.env.VUE_APP_TYPE === 'puqi') {
this.showFlag = false
} else {
this.showFlag = true
}
}
}
</script>

@ -1,7 +1,6 @@
<template>
<div id="userLayout" :class="['user-layout-wrapper', device]">
<div class="container">
<div class="container" :class="{puqi:!showFlag}" >
<route-view></route-view>
@ -12,7 +11,7 @@
<a href="_self">条款</a>
</div>
<div class="copyright">
<a target="_blank" href="http://www.myshipping.net/">大简云工作平</a>
<a target="_blank" v-if="showFlag" href="http://www.myshipping.net/"></a>
</div>
</div>
</div>
@ -28,10 +27,17 @@ export default {
components: { RouteView },
mixins: [mixinDevice],
data() {
return {}
return {
showFlag: true
}
},
mounted() {
document.body.classList.add('userLayout')
if (process.env.VUE_APP_TYPE === 'puqi') {
this.showFlag = false
} else {
this.showFlag = true
}
},
beforeDestroy() {
document.body.classList.remove('userLayout')
@ -141,5 +147,8 @@ export default {
}
}
}
.puqi{
background-image: url('../assets/puqi.jpeg') !important;
}
}
</style>

@ -15,5 +15,4 @@ export const setDocumentTitle = function(title) {
document.body.appendChild(i)
}
}
export const domTitle = '大简云工作平台'
export const domTitle = process.env.VUE_APP_TYPE !== 'puqi' ? '大简云工作平台' : '工作平台'

@ -1999,7 +1999,7 @@ export default {
obj = item
}
})
if (this.details.carrierid === 'EMC') {
if (this.details.carrierid === 'EMC' || this.details.carrierid === 'COSCO') {
data.shipData = obj
}
data.vessel = obj.vesselName
@ -2602,11 +2602,11 @@ export default {
handleSubimt() {
this.$refs.basicFrom.validate(valid => {
if (valid) {
if (this.details.carrierid === 'EMC') {
if (!this.details.contractno || !this.details.contractType) {
if (!this.details.contractno || !this.details.contractType) {
this.$message.error('请填写合约号')
return false
}
}
if (this.details.carrierid === 'EMC') {
if (!this.details.shipperPhone || !this.details.shipperPhoneCode ||
!this.details.shipperPhoneCountryCode || !this.details.shipperFirstName || !this.details.shipperLastName ||
!this.details.shipperSex || !this.details.shipperName) {

@ -351,6 +351,7 @@ const initDetail = {
wncm: '',
acihbl: ''
},
shippingMethod:'',
hbList: [],
remark: [],
file: [],
@ -1051,8 +1052,9 @@ export default {
const field = item.field.split('.')
let label = field[1].toLowerCase()
if (field[0] === 'order') {
if (['EPCODE', 'DZREMARK', 'CZREMARK', 'Warehouse'].includes(field[1])) {
if (['EPCODE', 'DZREMARK', 'CZREMARK', 'Warehouse', 'ShippingMethod'].includes(field[1])) {
label = this.emnuDefaultLabel(field[1])
console.log(label)
}
if (Object.keys(initDetail).includes(label)) {
initDetail[label] = item.code
@ -1151,6 +1153,8 @@ export default {
switch (field) {
case 'EPCODE':
return 'epCode'
case 'ShippingMethod':
return 'shippingMethod'
case 'DZREMARK':
return 'dzRemark'
case 'CZREMARK':

@ -1131,6 +1131,10 @@ export default {
},
changeCustomer(type) {
if (!this.$route.query.id) {
this.$message.warning('请先保存')
return false
}
if (type == 'add') {
this.$router.push({ name: 'CustomerInformationManagementAdd' })
localStorage.setItem('CustomerInformationManagementAdd', 'new')

@ -2636,12 +2636,18 @@ export default {
handleModelSubmit(type) {
const data = {
'id': this.details.id,
'sendType': 'E'
'sendType': ''
}
if (this.modelType === 'bookingSpace') {
data.sendType = 'B'
}
if (this.modelType === 'cutOff') {
data.sendType = 'E'
}
this.EDISloading = true
CheckAndInitVOLTAEdi(data).then(res => {
if (res.code === 200) {
this.voltaForm = res.data.extra
this.voltaForm = res.data.extra ? res.data.extra : {}
if (!res.data.extra.blfrt) {
this.$set(this.voltaForm, 'blfrt', 'PrePaid')
}

@ -571,6 +571,11 @@
<vxe-input v-model="row.cbm" type="text" transfer></vxe-input>
</template>
</vxe-column>
<vxe-column field="vgm" title="VGM" :edit-render="{}">
<template #edit="{ row }">
<vxe-input v-model="row.vgm" type="text" transfer></vxe-input>
</template>
</vxe-column>
<vxe-column field="carNumber" title="车牌号" :edit-render="{}">
<template #edit="{ row }">
<vxe-input v-model="row.carNumber" type="text" transfer></vxe-input>

@ -179,6 +179,15 @@
:loading="sendLoading"
@click="handleSendAll"
style="margin-right: 10px;">批量发送</a-button>
<a-button type="primary" @click="openTime" style="margin-right: 10px;">定时订舱</a-button>
<a-popconfirm
title="确认取消吗?"
ok-text="是"
cancel-text="否"
@confirm="cancelTime"
>
<a-button type="danger" style="margin-right: 10px;">取消定时</a-button>
</a-popconfirm>
</div>
<div>
<a-button type="primary" @click="FnGetData"></a-button>
@ -229,6 +238,9 @@
<template #shipRateTotalAmount="{ row }">
<span>{{ row.shipRateTotalCurrency }} {{ row.shipRateTotalAmount }}</span>
</template>
<template #isJob="{ row }">
<a-icon type="clock-circle" style="color: green;font-size: 16px;" v-if="row.isJob" theme="filled" />
</template>
<template #isRecvBC="{ row }">
<a-icon
type="bulb"
@ -285,17 +297,38 @@
<div @click="handleOpen('eid')" v-if="mskEdiFlag">MSKEID</div>
</div>
</a-modal>
<a-modal title="制作定时方案" @ok="handleSaveTime" :visible="timeFlag" @cancel="timeFlag = false">
<div>
<a-spin :spinning="timeLoad" >
<a-radio-group v-model="timeValue">
<div class="taskTime" v-for="item in taskTimeList" :key="item.code">
<div v-if="item.code == 'SpecificTimeDoOnce'">
<a-radio :value="item.code"></a-radio>
每天从 <a-date-picker
v-model="startTime"
size="small"
show-time
style="margin: 0 8px;width: 80px"
valueFormat="YYYY-MM-DD HH:mm"
format="YYYY-MM-DD HH:mm" ></a-date-picker>,
</div>
</div>
</a-radio-group>
</a-spin>
</div>
</a-modal>
</div>
</template>
<script>
import {
mskGetPage, mskDelete, DjyUserConfigMulti, maskCopy, maskCopySPOT,
BatchSend, CheckWarningBatchSend, CheckWarningBatchCopy, BatchSendSPOT
mskGetPage, mskDelete, DjyUserConfigMulti, maskCopy, maskCopySPOT, BatchSetupTimerBooking,
BatchSend, CheckWarningBatchSend, CheckWarningBatchCopy, BatchSendSPOT, GetTimerSchemeList, BatchCancelTimerBooking
} from '@/api/modular/main/BookingLedger'
import columnSetting from '@/components/tableColumnSetting'
import tableSort from '@/components/tableSort'
import mskBookingOrder from '@/components/mskBookingOrder'
import { mapGetters } from 'vuex'
import moment from 'moment';
import { DjyUserConfigAdd } from '@/api/modular/main/DjyUserConfig'
export default {
components: {
@ -308,7 +341,12 @@ export default {
advanced: false,
mskEdiFlag: false,
mskSpotFlag: false,
startTime: '',
moment,
timeLoad: false,
timeValue: 'SpecificTimeDoOnce',
mskApiFlag: false,
timeFlag: false,
visible: false,
loading: false,
selectedRowKeys: [],
@ -446,6 +484,19 @@ export default {
field: 'shipRateTotalAmount',
slots: { default: 'shipRateTotalAmount' }
},
{
title: '是否定时',
align: 'center',
width: '100',
field: 'isJob',
slots: { default: 'isJob' }
},
{
title: '定时方案名称',
align: 'center',
width: '100',
field: 'timerPlanName'
},
{
title: '发送结果',
align: 'center',
@ -572,6 +623,19 @@ export default {
field: 'shipRateTotalAmount',
slots: { default: 'shipRateTotalAmount' }
},
{
title: '是否定时',
align: 'center',
width: '100',
field: 'isJob',
slots: { default: 'isJob' }
},
{
title: '定时方案名称',
align: 'center',
width: '180',
field: 'timerPlanName'
},
{
title: '发送结果',
align: 'center',
@ -590,7 +654,8 @@ export default {
],
tstyle: { 'padding-bottom': '0px', 'margin-bottom': '10px' },
loadData: [],
tableHeight: 0
tableHeight: 0,
taskTimeList: []
}
},
computed: {
@ -599,12 +664,18 @@ export default {
created() { },
mounted() {
this.getConfigStart()
this.getTaskTimeList()
this.tableHeight = document.body.clientHeight - 300
},
methods: {
toggleAdvanced() {
this.advanced = !this.advanced
},
getTaskTimeList() {
GetTimerSchemeList().then(res => {
this.taskTimeList = res.data
})
},
handleChange() {
const select = this.$refs.table.getCheckboxRecords()
const pkIdArr = select.map((item, index) => {
@ -752,6 +823,55 @@ export default {
})
}
},
openTime() {
const select = this.$refs.table.getCheckboxRecords()
if (select.length == 0) {
this.$message.warning('请至少选择一条数据')
return false
}
this.timeFlag = true
},
handleSaveTime() {
const select = this.$refs.table.getCheckboxRecords()
const pkIdArr = select.map((item, index) => {
return item.id
})
const data = {
'startTime': this.startTime,
'timerSchemeType': this.timeValue,
'ids': pkIdArr
}
this.timeLoad = true
BatchSetupTimerBooking(data).then(res => {
if (res.success) {
this.$message.success('设置成功')
this.timeFlag = false
this.FnGetData()
} else {
this.$message.error(res.message)
}
this.timeLoad = false
})
},
cancelTime() {
const select = this.$refs.table.getCheckboxRecords()
if (select.length == 0) {
this.$message.warning('请至少选择一条数据')
return false
}
const pkIdArr = select.map((item, index) => {
return item.id
})
this.loading = true
BatchCancelTimerBooking(pkIdArr).then(res => {
if (res.success) {
this.$message.success('取消成功')
this.FnGetData()
} else {
this.$message.error(res.message)
}
})
},
handleOpenCopy() {
this.copyMoreForm.setFieldsValue({ number: 1 })
const select = this.$refs.table.getCheckboxRecords()
@ -1060,7 +1180,6 @@ export default {
this.loading = true
this.form.pageNo = this.queryParam.pageNo
this.form.pageSize = this.queryParam.pageSize
console.log(this.form)
if (this.form.etd) {
this.form.etdBegin = this.form.etd[0]
this.form.etdEnd = this.form.etd[1]
@ -1200,4 +1319,10 @@ export default {
border: 1px solid #d1cfcf;
}
}
.taskTime {
border-radius: 10px;
border: 1px solid #d7cbcb;
padding: 5px 15px;
}
</style>

@ -269,14 +269,18 @@ export default {
}, 100)
},
getSelectViewRes({ type, res }) {
console.log(type, res)
if (type === 'portloadid') {
this.form.portLoadingId = res.ediCode
this.form.portLoading = res.enName
}
if (type === 'portdischargeid') {
this.form.portDischargeId = res.ediCode
this.form.portDischarge = res.enName
}
if (type === 'transportid') {
this.form.portTransitId = res.ediCode
this.form.portTransit = res.enName
}
},

@ -288,12 +288,24 @@ export default {
field: 'portTransit',
width: 150
},
{
title: '中转港代码',
align: 'center',
field: 'portTransitId',
width: 150
},
{
title: '卸货港',
align: 'center',
field: 'portDischarge',
width: 150
},
{
title: '卸货港代码',
align: 'center',
field: 'portDischargeId',
width: 150
},
{
title: '默认场站',
align: 'center',

@ -4,7 +4,7 @@
<a-spin :spinning="loading" style="position: relative;z-index: 10;">
<div class="form">
<div class="title">
<img src="../../assets/logo.png" alt="logo" />大简云工作平台
<img src="../../assets/logo.png" alt="logo" v-if="showFlag" />{{ showFlag?'大简云工作平台':"" }}
</div>
<a-form id="formLogin" class="user-layout-login" ref="formLogin" :form="form" @submit="handleSubmit">
<a-alert
@ -15,7 +15,6 @@
:message="this.accountLoginErrMsg" />
<a-form-item>
<a-input
type="text"
placeholder="账号"
v-decorator="[
@ -32,7 +31,6 @@
<a-form-item>
<a-input
type="password"
autocomplete="false"
placeholder="密码"
@ -45,7 +43,7 @@
</a-form-item>
<a-form-item>
<a-checkbox v-decorator="['rememberMe', { valuePropName: 'checked' }]"></a-checkbox>
<a @click="FnGo" class="forge-password" style="float: right;">
<a @click="FnGo" class="forge-password" v-if="showFlag" style="float: right;">
忘记密码
</a>
</a-form-item>
@ -59,7 +57,7 @@
:disabled="state.loginBtn">确定</a-button>
</a-form-item>
<div class="user-login-other">
<div class="user-login-other" v-if="showFlag" >
<a class="register" @click="FnGo"></a>
</div>
</a-form>
@ -104,6 +102,7 @@ export default {
// login type: 0 email, 1 username, 2 telephone
loginType: 0,
needPassWord: false,
showFlag: true,
isLoginError: false,
requiredTwoStepCaptcha: false,
stepCaptchaVisible: false,
@ -124,6 +123,11 @@ export default {
},
created() {
// this.getCaptchaOpen()
if (process.env.VUE_APP_TYPE === 'puqi') {
this.showFlag = false
} else {
this.showFlag = true
}
},
mounted() {
window.addEventListener('beforeunload', e => this.beforeunloadHandler(e))
@ -293,7 +297,7 @@ export default {
localStorage.setItem('bookingSetting', JSON.stringify(bookArr))
})
this.$store.dispatch('getVesselinfo')
this.configPageList().then(res => {})
this.configPageList().then(res => { })
},
requestFailed(err) {
this.accountLoginErrMsg = err
@ -321,48 +325,52 @@ export default {
</script>
<style lang="less" scoped>
.form{
.form {
background: white;
border-radius: 15px;
padding: 30px;
z-index: 10;
.title{
color: rgb(4,89,219);
.title {
color: rgb(4, 89, 219);
text-align: center;
font-size: 18px;
margin-bottom: 20px;
font-weight: bold;
z-index: 2;
img{
img {
height: 40px;
width: 40px;
margin-right: 15px;
}
}
.login-button{
background: rgb(239,243,251);
.login-button {
background: rgb(239, 243, 251);
width: 100%;
color: rgb(104,116,164);
color: rgb(104, 116, 164);
border: none;
height: 40px;
line-height: 40px;
}
}
.bg{
.bg {
position: absolute;
height: 300px;
width: 737px;
top: 48px;
right: -34px;
background: rgb(6 87 189);
z-index: -1;
border-radius: 15px;
.desc{
height: 300px;
width: 737px;
top: 48px;
right: -34px;
background: rgb(6 87 189);
z-index: -1;
border-radius: 15px;
.desc {
color: white;
font-size: 17px;
margin-top: 113px;
margin-left: 30px;
}
}
}
</style>

@ -52,6 +52,10 @@ const vueConfig = {
.set('@$', resolve('src'))
const svgRule = config.module.rule('svg')
config.plugin('html').tap((args) => {
args[0].title = process.env.VUE_APP_TYPE !== 'puqi' ? '大简云工作平台' : '工作平台'
return args
})
svgRule.uses.clear()
svgRule
.oneOf('inline')

Loading…
Cancel
Save