修改登陆页面

master
sunzehua 8 months ago
parent 0c56fa4bcf
commit 203d234c9a

12
.env

@ -1,9 +1,9 @@
NODE_ENV=production
VUE_APP_PREVIEW=true
# VUE_APP_TYPE = 'customer'
# VUE_APP_TYPE = 'hechuan'
VUE_APP_TYPE = 'hechuan'
# VUE_APP_TYPE = 'yunyingduan'
VUE_APP_TYPE = 'gangjie'
# VUE_APP_TYPE = 'gangjie'
# 打包部署的三个端 客户端customer 和川端hechuan 运营端djy
# 和川大简云正式
@ -11,8 +11,8 @@ VUE_APP_TYPE = 'gangjie'
# VUE_APP_SOCKET_BASE_URL=http://47.104.85.216:12345
# 和川大简云测试
# VUE_APP_API_BASE_URL=http://60.209.125.238:35100
# VUE_APP_SOCKET_BASE_URL=http://60.209.125.238:35100
VUE_APP_API_BASE_URL=http://60.209.125.238:35100
VUE_APP_SOCKET_BASE_URL=http://60.209.125.238:35100
# 客户端测试
# VUE_APP_API_BASE_URL=http://60.209.125.238:30813
@ -23,8 +23,8 @@ VUE_APP_TYPE = 'gangjie'
# VUE_APP_SOCKET_BASE_URL=http://60.209.125.238:30814
# 港捷
VUE_APP_API_BASE_URL=http://118.190.144.189:5001
VUE_APP_SOCKET_BASE_URL=http://118.190.144.189:5001
# VUE_APP_API_BASE_URL=http://118.190.144.189:5001
# VUE_APP_SOCKET_BASE_URL=http://118.190.144.189:5001
# 客户端正式
# VUE_APP_API_BASE_URL=http://118.190.144.189:6001

@ -1470,3 +1470,17 @@ export function PushBcInfo(parameter) {
})
}
export function maskCopy(parameter) {
return axios({
url: '/BookingMSKAPI/BatchSend',
method: 'get',
params: parameter
})
}
export function BatchSend(parameter) {
return axios({
url: '/BookingMSKAPI/BatchSend?' + parameter,
method: 'post'
})
}

@ -477,3 +477,27 @@ export function CutDateGetInfoByTaskId(parameter) {
params: parameter
})
}
export function PoddGetInfoByTaskId(parameter) {
return axios({
url: '/PODDischargeGateoutFull/GetInfoByTaskId',
method: 'get',
params: parameter
})
}
export function SendInstantlessage(parameter) {
return axios({
url: '/PODDischargeGateoutFull/SendInstantMessage',
method: 'get',
params: parameter
})
}
export function SearchAndConnectBookingInfo(parameter) {
return axios({
url: '/PODDischargeGateoutFull/SearchAndConnectBookingInfo',
method: 'get',
params: parameter
})
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 245 KiB

@ -1,15 +1,7 @@
<template>
<div id="userLayout" :class="['user-layout-wrapper', device]">
<div class="container">
<div class="top">
<div class="header">
<a href="/">
<img src="~@/assets/logo.png" class="logo" alt="logo" />
<span class="title">大简云工作平台</span>
</a>
</div>
<div class="desc"></div>
</div>
<route-view></route-view>
@ -64,7 +56,7 @@ export default {
width: 100%;
min-height: 100%;
background-color: #ffffff;
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='800' height='800' viewBox='0 0 200 200'%3E%3Cdefs%3E%3ClinearGradient id='a' gradientUnits='userSpaceOnUse' x1='88' y1='88' x2='0' y2='0'%3E%3Cstop offset='0' stop-color='%23064e77'/%3E%3Cstop offset='1' stop-color='%230a7dbe'/%3E%3C/linearGradient%3E%3ClinearGradient id='b' gradientUnits='userSpaceOnUse' x1='75' y1='76' x2='168' y2='160'%3E%3Cstop offset='0' stop-color='%238f8f8f'/%3E%3Cstop offset='0.09' stop-color='%23b3b3b3'/%3E%3Cstop offset='0.18' stop-color='%23c9c9c9'/%3E%3Cstop offset='0.31' stop-color='%23dbdbdb'/%3E%3Cstop offset='0.44' stop-color='%23e8e8e8'/%3E%3Cstop offset='0.59' stop-color='%23f2f2f2'/%3E%3Cstop offset='0.75' stop-color='%23fafafa'/%3E%3Cstop offset='1' stop-color='%23FFFFFF'/%3E%3C/linearGradient%3E%3Cfilter id='c' x='0' y='0' width='200%25' height='200%25'%3E%3CfeGaussianBlur in='SourceGraphic' stdDeviation='12' /%3E%3C/filter%3E%3C/defs%3E%3Cpolygon fill='url(%23a)' points='0 174 0 0 174 0'/%3E%3Cpath fill='%23000' fill-opacity='.5' filter='url(%23c)' d='M121.8 174C59.2 153.1 0 174 0 174s63.5-73.8 87-94c24.4-20.9 87-80 87-80S107.9 104.4 121.8 174z'/%3E%3Cpath fill='url(%23b)' d='M142.7 142.7C59.2 142.7 0 174 0 174s42-66.3 74.9-99.3S174 0 174 0S142.7 62.6 142.7 142.7z'/%3E%3C/svg%3E");
background-image: url('../assets/login.jpg');
background-attachment: fixed;
background-repeat: no-repeat;
background-position: top left;
@ -119,7 +111,8 @@ export default {
.main {
min-width: 260px;
width: 368px;
margin: 0 auto;
margin-left: 63%;
margin-top: 100px;
}
.footer {
@ -134,7 +127,7 @@ export default {
margin-bottom: 8px;
font-size: 14px;
a {
color: rgba(0, 0, 0, 0.45);
color: white;
transition: all 0.3s;
&:not(:last-child) {
margin-right: 40px;

@ -69,6 +69,8 @@ const constantRouterComponents = {
BCModify: () => import('@/views/main/Taskmanage/BCModify/index'),
vgmDetail: () => import('@/views/main/Taskmanage/vgmDetail/index'),
cutTime: () => import('@/views/main/Taskmanage/cutTime/index'),
POD_GATEOUT_FULL: () => import('@/views/main/Taskmanage/POD_GATEOUT_FULL/index'),
POD_DISCHARGE_FULL: () => import('@/views/main/Taskmanage/POD_DISCHARGE_FULL/index'),
cancellation: () => import('@/views/main/Taskmanage/cancellation/index'),
rollingNomination: () => import('@/views/main/Taskmanage/rollingNomination/index'),
BcEditing: () => import('@/views/main/Taskmanage/BcFileDetail/Editing'),
@ -243,6 +245,28 @@ const userAccount = [
},
component: 'cutTime'
},
{
name: 'POD_DISCHARGE_FULL',
path: '/commontaskmanage/POD_DISCHARGE_FULL',
pid: 0,
id: 183110,
meta: {
title: '目的港未提货',
show: false
},
component: 'POD_DISCHARGE_FULL'
},
{
name: 'POD_GATEOUT_FULL',
path: '/commontaskmanage/POD_GATEOUT_FULL',
pid: 0,
id: 183110,
meta: {
title: '目的港未返空箱',
show: false
},
component: 'POD_GATEOUT_FULL'
},
{
name: 'Cancellation',
path: '/commontaskmanage/Cancellation',

@ -478,6 +478,10 @@
</a-row>
</a-col>
</a-row>
<a-row>
其他信息
<div>账号{{ details.extendData.Account }}&nbsp;&nbsp;&nbsp;密码{{ details.extendData.Password }}</div>
</a-row>
</a-form-model>
</div>
</a-spin>
@ -581,7 +585,8 @@ export default {
serviceList: [],
notifyparty: '',
consignee: '',
ctnList: []
ctnList: [],
extendData: {}
},
rules: {},
loading: false
@ -686,6 +691,11 @@ export default {
res.data.cargoName = 'O 超限箱'
}
}
if (res.data.extendData) {
res.data.extendData = JSON.parse(res.data.extendData)
} else {
res.data.extendData = {}
}
this.details = res.data
if (Object.keys(this.details.files).length > 0) {
const arr = []

@ -0,0 +1,659 @@
<template>
<div class="Main">
<a-spin :spinning="spinning">
<div class="LeftHead">
<p>POD Imports Longstandings Discharge full
{{ carrier }} </p>
<p>时间{{ time }}</p>
</div>
<a-table :pagination="false" :columns="columns" :data-source="tableList">
<span slot="bookingId" slot-scope="text, record">
<div v-if="record.bookingId > 0" class="point"></div>
<div v-if="record.bookingId == 0">-</div>
</span>
<span slot="isComplete" slot-scope="text, record">
<span v-if="record.isComplete"></span>
<span v-else></span>
</span>
</a-table>
<a-row style="margin-top: 20px;" type="flex" justify="end" :gutter="16">
<a-col>
<a-button type="primary" @click="OpenUser">
转移任务
</a-button>
</a-col>
<a-col>
<a-button type="primary" @click="FnCompleteTask">
完成任务
</a-button>
</a-col>
<a-col>
<a-button type="danger" @click="FnCancelTask">
取消任务
</a-button>
</a-col>
<a-col>
<a-button :loading="nextLoading" type="primary" @click="handleNext">
重新匹配
</a-button>
</a-col>
<a-col>
<a-button :loading="sendLoading" type="primary" @click="handleSendMsg">
推送消息
</a-button>
</a-col>
</a-row>
</a-spin>
<a-modal v-model="visible" title="生成方式选择" @ok="handleOk" width="40%">
<a-radio-group default-value="GEN_BOOKING_SLOT" v-model="CreateData.generateMethod">
<a-radio value="GEN_BOOKING_SLOT">
直接生成舱位和订舱
</a-radio>
<a-radio value="GEN_BOOKING">
只生成订舱
</a-radio>
<a-radio value="GEN_SLOT">
只生成舱位
</a-radio>
<a-radio value="GEN_EXIST_BOOKING">
匹配已有订舱
</a-radio>
</a-radio-group>
<p class="modaltitle">订舱录入</p>
<a-form class="Editing">
<a-row>
<a-col :span="16">
<a-form-item label="委托单位:" :label-col="formItemLayout.labelCol3" :wrapper-col="formItemLayout.wrapperCol3">
<a-select
show-search
v-model="CreateData.customerId"
:default-active-first-option="false"
:show-arrow="false"
:filter-option="false"
:not-found-content="null"
@search="SearchCustomer"
@change="ChangeCustomer">
<a-select-option v-for="(item, index) in CustomerList" :key="index" :value="item.id">
{{ item.shortName }}
</a-select-option>
</a-select>
</a-form-item>
</a-col>
<a-col :span="8">
<a-form-item label="联系人:" :label-col="formItemLayout.labelCol2" :wrapper-col="formItemLayout.wrapperCol2">
<a-select
show-search
v-model="CreateData.customerContactId"
:default-active-first-option="false"
:show-arrow="false"
:filter-option="false"
:not-found-content="null"
@search="SearchUser"
@change="ChangeCustomerList">
<a-select-option v-for="item in customerByList" :key="item.id" :value="item.id">
{{ item.name }}
</a-select-option>
</a-select>
</a-form-item>
</a-col>
</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.saleId"
:default-active-first-option="false"
:show-arrow="false"
:filter-option="false"
:not-found-content="null"
@search="SearchUser"
@change="e => {
ChangeUser(e, 'saleName')
}
">
<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-form-item label="操作:" :label-col="formItemLayout.labelCol2" :wrapper-col="formItemLayout.wrapperCol2">
<a-select
show-search
v-model="CreateData.opId"
:default-active-first-option="false"
:show-arrow="false"
:filter-option="false"
:not-found-content="null"
@search="SearchUser"
@change="e => {
ChangeUser(e, 'opName')
}
">
<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-form-item label="单证:" :label-col="formItemLayout.labelCol2" :wrapper-col="formItemLayout.wrapperCol2">
<a-select
show-search
v-model="CreateData.docId"
:default-active-first-option="false"
:show-arrow="false"
:filter-option="false"
:not-found-content="null"
@search="SearchUser"
@change="e => {
ChangeUser(e, 'docName')
}
">
<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-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.routeID"
:default-active-first-option="false"
:show-arrow="false"
:filter-option="false"
:not-found-content="null"
@search="SearchUser"
@change="e => {
ChangeUser(e, 'route')
}
">
<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-form-item label="航线管理:" :label-col="formItemLayout.labelCol2" :wrapper-col="formItemLayout.wrapperCol2">
<a-select
show-search
v-model="CreateData.lineManageID"
:default-active-first-option="false"
:show-arrow="false"
:filter-option="false"
:not-found-content="null"
@search="SearchUser"
@change="e => {
ChangeUser(e, 'lineManage')
}
">
<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-row>
<a-row>
<a-col :span="16">
<a-form-item label="操作备注:" :label-col="formItemLayout.labelCol3" :wrapper-col="formItemLayout.wrapperCol3">
<a-input v-model="CreateData.czRemark" />
</a-form-item>
</a-col>
</a-row>
<a-row>
<a-col :span="16">
<a-form-item label="申请箱使:" :label-col="formItemLayout.labelCol3" :wrapper-col="formItemLayout.wrapperCol3">
<a-input v-model="CreateData.shenQingXiangShi" />
</a-form-item>
</a-col>
</a-row>
<a-row>
<a-col :span="16">
<a-form-item label="服务项目:" :label-col="formItemLayout.labelCol3" :wrapper-col="formItemLayout.wrapperCol3">
<div class="content">
<div
class="items"
v-for="(serive, sindex) in bookingServiceItem"
:key="sindex"
:class="{ active: serive.isYield }"
@click="saveService(serive)">
{{ serive.serviceProjectName }}
</div>
</div>
</a-form-item>
</a-col>
</a-row>
</a-form>
</a-modal>
<a-modal v-model="UserVisible" title="转移任务" @ok="UserhandleOk">
<a-form>
<a-form-item label="接收人:" :label-col="formItemLayout.labelCol1" :wrapper-col="formItemLayout.wrapperCol1">
<a-select
show-search
v-model="UserId"
:default-active-first-option="false"
:show-arrow="false"
:filter-option="false"
:not-found-content="null"
@search="SearchUser">
<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-form>
</a-modal>
<a-modal v-model="compareResultFlag" :footer="null">
<div v-for="(item, index) in compareResultList" :key="index">
<span> {{ item.fieldName }}{{ item.reqVal }}</span>
<span style="margin: 0 10px;">变更为</span>
<span v-html="item.mergeHtml"></span>
</div>
</a-modal>
</div>
</template>
<script>
import {
PoddGetInfoByTaskId,
TransferTask,
CreateBookingAndSlot,
TaskManageBCSendEmai1,
CompleteTask,
CancelTaskBC,
SendInstantlessage,
SearchAndConnectBookingInfo
} from '@/api/modular/main/TaskmanageList'
import { mapGetters } from 'vuex'
import { DjyCustomerSuggest, GetSysUserPage, DjyCustomerContacts } from '@/api/modular/main/BookingLedger'
export default {
data() {
return {
CustomerList: [],
CreateData: {},
UserId: '',
value: '',
type: '',
sendLoading: false,
customerByList: [],
columns: [
{
dataIndex: 'ctnNo',
title: 'Container Number',
key: 'ctnNo',
align: 'center'
},
{
title: 'BL Number',
dataIndex: 'mBlNo',
key: 'mBlNo',
align: 'center'
},
{
title: 'Consignee Name',
dataIndex: 'cNee',
key: 'cNee',
align: 'center'
},
{
title: 'Discharge Date',
dataIndex: 'dischargeDate',
key: 'dischargeDate',
align: 'center'
},
{
title: 'Discharge Port',
dataIndex: 'dischargePort',
key: 'dischargePort',
align: 'center'
},
{
title: 'Days',
dataIndex: 'overdueDays',
key: 'overdueDays',
align: 'center'
},
{
title: 'BOOKING',
dataIndex: 'bookingId',
key: 'bookingId',
align: 'center',
scopedSlots: { customRender: 'bookingId' }
},
{
title: '是否已完成',
dataIndex: 'isComplete',
key: 'isComplete',
align: 'center',
scopedSlots: { customRender: 'isComplete' }
},
{
title: '完成时间',
dataIndex: 'completeTime',
key: 'completeTime',
align: 'center'
}
],
compareResultFlag: false,
formItemLayout: {
labelCol1: { span: 6 },
wrapperCol1: { span: 18 },
labelCol2: { span: 8 },
wrapperCol2: { span: 16 },
labelCol3: { span: 4 },
wrapperCol3: { span: 20 },
labelCol4: { span: 8 },
wrapperCol4: { span: 16 },
labelCol5: { span: 14 },
wrapperCol5: { span: 10 },
labelCol6: { span: 8 },
wrapperCol6: { span: 16 }
},
visible: false,
UserVisible: false,
isPdf: '',
compareResultList: [],
href: '',
carrier: '',
time: '',
spinning: false,
tableList: [],
nextLoading: false,
bookingServiceItem: [],
pdfUrl: '',
UserList: [],
fileCategory: 'BC_MODIFY'
}
},
computed: {
...mapGetters([
'userInfo'
])
},
watch: {
'$route': {
immediate: true,
handler(newValue, oldValue) {
if (newValue.path === '/commontaskmanage/cutTime') {
this.getList()
}
}
}
},
mounted() {
this.getList()
},
methods: {
SearchCustomer(e) {
DjyCustomerSuggest({ keyword: e, type: 'consignor' }).then(res => {
this.CustomerList = res.data.rows
})
},
OpenUser() {
this.UserId = ''
this.UserVisible = true
},
ChangeCustomer(e) {
this.CustomerList.forEach(item => {
if (item.id == e) {
this.CreateData.customerName = item.shortName
}
})
DjyCustomerContacts({ customerId: e }).then(res => {
if (res.success) {
this.customerByList = res.data
} else {
this.$message.error(res.message)
}
})
},
handleSendMsg() {
this.sendLoading = true
SendInstantlessage({ taskPKId: this.$route.query.taskPKId }).then(res => {
if (res.success) {
this.$message.success(res.message)
} else {
this.$message.error(res.message)
}
this.sendLoading = false
})
},
handleNext() {
this.nextLoading = true
SearchAndConnectBookingInfo({ taskPKId: this.$route.query.taskPKId }).then(res => {
if (res.success) {
this.$message.success(res.message)
} else {
this.$message.error(res.message)
}
this.nextLoading = false
})
},
ChangeCustomerList(e) {
this.customerByList.forEach(item => {
if (item.id == e) {
this.CreateData.customerContactName = item.name
}
})
},
FnCancelTask() {
const ApiData = {
taskPKId: this.$route.query.taskPKId
}
CancelTaskBC(ApiData).then(res => {
if (res.data.succ) {
this.$message.success(res.data.msg)
} else {
this.$message.error(res.data.msg)
}
})
},
SearchUser(e) {
GetSysUserPage({ name: e }).then(res => {
this.UserList = res.data
})
},
ChangeUser(e, Tname) {
this.UserList.forEach(item => {
if (item.id == e) {
console.log(e)
this.CreateData[Tname] = item.name
}
})
},
saveService(data) {
data.isYield = !data.isYield
},
FnCompleteTask() {
const ApiData = [this.$route.query.taskPKId]
CompleteTask(ApiData).then(res => {
if (res.data.succ) {
this.$message.success(res.data.msg)
} else {
this.$message.error(res.data.msg)
}
})
},
handleSendMail() {
TaskManageBCSendEmai1({ taskPKId: this.$route.query.taskPKId }).then(res => {
if (res.data.succ) {
this.$message.success(res.data.msg)
} else {
this.$message.error(res.data.msg)
}
})
},
getList() {
this.spinning = true
const ApiData = {
taskPKId: this.$route.query.taskPKId
}
PoddGetInfoByTaskId(ApiData).then(res => {
if (res.success) {
this.tableList = res.data
if (res.data.length > 0) {
this.time = res.data[0].noticeDate
this.carrier = res.data[0].carrier
}
this.$forceUpdate()
} else {
this.$message.error(res.success)
}
this.spinning = false
})
},
handleOk() {
const projectList = []
this.bookingServiceItem.forEach(item => {
if (item.isYield) {
projectList.push(item.serviceProjectCode)
}
})
const ApiData = {
bcTaskId: this.$route.query.taskPKId,
// bcPkId: '',
// slotId: '',
projectList,
...this.CreateData
}
console.log(ApiData)
CreateBookingAndSlot(ApiData).then(res => {
if (res.data.succ) {
this.visible = false
this.$message.success(res.data.msg)
} else {
this.$message.error(res.data.msg)
}
})
},
UserhandleOk() {
const ApiData = {
taskPKId: this.$route.query.taskPKId,
userId: this.UserId
}
TransferTask(ApiData).then(res => {
if (res.data.succ) {
this.UserVisible = false
this.$message.success(res.data.msg)
} else {
this.$message.error(res.data.msg)
}
})
this.UserVisible = false
}
}
}
</script>
<style lang="less" scoped>
@import url('../../BookingLedger/detail/style/rightContent.less');
.point {
height: 10px;
width: 10px;
border-radius: 50%;
margin: 0 auto;
background: green;
}
.modaltitle {
border-bottom: 1px solid #000;
width: 5rem;
padding: 0.2rem 0.5rem;
margin-top: 1rem;
}
.icon-chuanfanguanli-chuanfanshenqing {
color: '#02A7F0';
}
.Main {
width: 100%;
background: white;
height: 100vh;
padding: 0 20px;
.LeftHead {
width: 100%;
display: flex;
justify-content: space-between;
padding: 8px;
margin-bottom: 16px;
border-bottom: 1px solid #000;
p {
margin: 0;
&:nth-child(1) {
font-weight: bold;
}
}
}
.title {
margin-top: 10px;
}
.CsSee {
color: #02a7f3;
text-decoration: underline;
cursor: pointer;
}
.LeftBottomBox {
.unitBox {
width: 100%;
display: flex;
.unit {
text-align: center;
line-height: 30px;
height: 30px;
// background: rgba(255, 255, 128, 1);
// border: 1px solid rgba(170, 10, 0, 1);
border-radius: 3px;
box-shadow: none;
// font-weight: bold;
// color: #62a10398;
margin: 0.5rem;
padding: 0 0.3rem;
.iconfont {
margin-right: 0.3rem;
}
}
}
}
.rightBox {
// margin-top: 37px;
.rightBoxRadio {
margin-bottom: 15px;
}
}
/deep/.Editing {
.ant-form-item {
margin: 0 !important;
line-height: 1.5 !important;
.ant-form-item-label {
line-height: 1.5 !important;
}
.ant-form-item-control {
line-height: 1.5 !important;
}
}
}
}
</style>

@ -0,0 +1,689 @@
<template>
<div class="Main">
<a-spin :spinning="spinning">
<div class="LeftHead">
<p>POD imports Longstandings Gate out full
{{ carrier }} </p>
<p>时间{{ time }}</p>
</div>
<a-table :scroll="{ x: 1000}" :pagination="false" :columns="columns" :data-source="tableList">
<span slot="bookingId" slot-scope="text, record">
<div v-if="record.bookingId > 0" class="point"></div>
<div v-if="record.bookingId == 0">-</div>
</span>
<span slot="isComplete" slot-scope="text, record">
<span v-if="record.isComplete"></span>
<span v-else></span>
</span>
</a-table>
<a-row style="margin-top: 20px;" type="flex" justify="end" :gutter="16">
<a-col>
<a-button type="primary" @click="OpenUser">
转移任务
</a-button>
</a-col>
<a-col>
<a-button type="primary" @click="FnCompleteTask">
完成任务
</a-button>
</a-col>
<a-col>
<a-button type="danger" @click="FnCancelTask">
取消任务
</a-button>
</a-col>
<a-col>
<a-button :loading="sendLoading" type="primary" @click="handleSendMsg">
推送消息
</a-button>
</a-col>
<a-col>
<a-button :loading="nextLoading" type="primary" @click="handleNext">
重新匹配
</a-button>
</a-col>
</a-row>
</a-spin>
<a-modal v-model="visible" title="生成方式选择" @ok="handleOk" width="40%">
<a-radio-group default-value="GEN_BOOKING_SLOT" v-model="CreateData.generateMethod">
<a-radio value="GEN_BOOKING_SLOT">
直接生成舱位和订舱
</a-radio>
<a-radio value="GEN_BOOKING">
只生成订舱
</a-radio>
<a-radio value="GEN_SLOT">
只生成舱位
</a-radio>
<a-radio value="GEN_EXIST_BOOKING">
匹配已有订舱
</a-radio>
</a-radio-group>
<p class="modaltitle">订舱录入</p>
<a-form class="Editing">
<a-row>
<a-col :span="16">
<a-form-item label="委托单位:" :label-col="formItemLayout.labelCol3" :wrapper-col="formItemLayout.wrapperCol3">
<a-select
show-search
v-model="CreateData.customerId"
:default-active-first-option="false"
:show-arrow="false"
:filter-option="false"
:not-found-content="null"
@search="SearchCustomer"
@change="ChangeCustomer">
<a-select-option v-for="(item, index) in CustomerList" :key="index" :value="item.id">
{{ item.shortName }}
</a-select-option>
</a-select>
</a-form-item>
</a-col>
<a-col :span="8">
<a-form-item label="联系人:" :label-col="formItemLayout.labelCol2" :wrapper-col="formItemLayout.wrapperCol2">
<a-select
show-search
v-model="CreateData.customerContactId"
:default-active-first-option="false"
:show-arrow="false"
:filter-option="false"
:not-found-content="null"
@search="SearchUser"
@change="ChangeCustomerList">
<a-select-option v-for="item in customerByList" :key="item.id" :value="item.id">
{{ item.name }}
</a-select-option>
</a-select>
</a-form-item>
</a-col>
</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.saleId"
:default-active-first-option="false"
:show-arrow="false"
:filter-option="false"
:not-found-content="null"
@search="SearchUser"
@change="e => {
ChangeUser(e, 'saleName')
}
">
<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-form-item label="操作:" :label-col="formItemLayout.labelCol2" :wrapper-col="formItemLayout.wrapperCol2">
<a-select
show-search
v-model="CreateData.opId"
:default-active-first-option="false"
:show-arrow="false"
:filter-option="false"
:not-found-content="null"
@search="SearchUser"
@change="e => {
ChangeUser(e, 'opName')
}
">
<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-form-item label="单证:" :label-col="formItemLayout.labelCol2" :wrapper-col="formItemLayout.wrapperCol2">
<a-select
show-search
v-model="CreateData.docId"
:default-active-first-option="false"
:show-arrow="false"
:filter-option="false"
:not-found-content="null"
@search="SearchUser"
@change="e => {
ChangeUser(e, 'docName')
}
">
<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-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.routeID"
:default-active-first-option="false"
:show-arrow="false"
:filter-option="false"
:not-found-content="null"
@search="SearchUser"
@change="e => {
ChangeUser(e, 'route')
}
">
<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-form-item label="航线管理:" :label-col="formItemLayout.labelCol2" :wrapper-col="formItemLayout.wrapperCol2">
<a-select
show-search
v-model="CreateData.lineManageID"
:default-active-first-option="false"
:show-arrow="false"
:filter-option="false"
:not-found-content="null"
@search="SearchUser"
@change="e => {
ChangeUser(e, 'lineManage')
}
">
<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-row>
<a-row>
<a-col :span="16">
<a-form-item label="操作备注:" :label-col="formItemLayout.labelCol3" :wrapper-col="formItemLayout.wrapperCol3">
<a-input v-model="CreateData.czRemark" />
</a-form-item>
</a-col>
</a-row>
<a-row>
<a-col :span="16">
<a-form-item label="申请箱使:" :label-col="formItemLayout.labelCol3" :wrapper-col="formItemLayout.wrapperCol3">
<a-input v-model="CreateData.shenQingXiangShi" />
</a-form-item>
</a-col>
</a-row>
<a-row>
<a-col :span="16">
<a-form-item label="服务项目:" :label-col="formItemLayout.labelCol3" :wrapper-col="formItemLayout.wrapperCol3">
<div class="content">
<div
class="items"
v-for="(serive, sindex) in bookingServiceItem"
:key="sindex"
:class="{ active: serive.isYield }"
@click="saveService(serive)">
{{ serive.serviceProjectName }}
</div>
</div>
</a-form-item>
</a-col>
</a-row>
</a-form>
</a-modal>
<a-modal v-model="UserVisible" title="转移任务" @ok="UserhandleOk">
<a-form>
<a-form-item label="接收人:" :label-col="formItemLayout.labelCol1" :wrapper-col="formItemLayout.wrapperCol1">
<a-select
show-search
v-model="UserId"
:default-active-first-option="false"
:show-arrow="false"
:filter-option="false"
:not-found-content="null"
@search="SearchUser">
<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-form>
</a-modal>
<a-modal v-model="compareResultFlag" :footer="null">
<div v-for="(item, index) in compareResultList" :key="index">
<span> {{ item.fieldName }}{{ item.reqVal }}</span>
<span style="margin: 0 10px;">变更为</span>
<span v-html="item.mergeHtml"></span>
</div>
</a-modal>
</div>
</template>
<script>
import {
PoddGetInfoByTaskId,
TransferTask,
CreateBookingAndSlot,
TaskManageBCSendEmai1,
CompleteTask,
CancelTaskBC,
SendInstantlessage,
SearchAndConnectBookingInfo
} from '@/api/modular/main/TaskmanageList'
import { mapGetters } from 'vuex'
import { DjyCustomerSuggest, GetSysUserPage, DjyCustomerContacts } from '@/api/modular/main/BookingLedger'
export default {
data() {
return {
CustomerList: [],
CreateData: {},
UserId: '',
value: '',
nextLoading: false,
type: '',
sendLoading: false,
customerByList: [],
columns: [
{
dataIndex: 'ctnNo',
title: 'Container Number',
key: 'ctnNo',
align: 'center',
width: 200
},
{
title: 'BL Number',
dataIndex: 'mBlNo',
key: 'mBlNo',
align: 'center',
width: 150
},
{
title: 'Consignee',
dataIndex: 'cNee',
key: 'cNee',
align: 'center',
width: 150
},
{
title: 'Discharged',
dataIndex: 'dischargeDate',
key: 'dischargeDate',
align: 'center',
width: 150
},
{
title: 'Current Container Location',
dataIndex: 'curContaLocation',
key: 'curContaLocation',
align: 'center',
width: 250
},
{
title: 'Discharge Port',
dataIndex: 'dischargePort',
key: 'dischargePort',
align: 'center',
width: 200
},
{
title: 'Days',
dataIndex: 'overdueDays',
key: 'overdueDays',
align: 'center',
width: 150
},
{
title: 'Detention applcable till date',
dataIndex: 'detentionFeeTillDate',
key: 'detentionFeeTillDate',
align: 'center',
width: 250
},
{
title: 'ChargeCurrency',
dataIndex: 'chargeCurrency',
key: 'chargeCurrency',
align: 'center',
width: 200
},
{
title: 'BOOKING',
dataIndex: 'bookingId',
key: 'bookingId',
align: 'center',
scopedSlots: { customRender: 'bookingId' },
width: 150
},
{
title: '是否已完成',
dataIndex: 'isComplete',
key: 'isComplete',
align: 'center',
scopedSlots: { customRender: 'isComplete' },
width: 150
},
{
title: '完成时间',
dataIndex: 'completeTime',
key: 'completeTime',
align: 'center',
width: 180
}
],
compareResultFlag: false,
formItemLayout: {
labelCol1: { span: 6 },
wrapperCol1: { span: 18 },
labelCol2: { span: 8 },
wrapperCol2: { span: 16 },
labelCol3: { span: 4 },
wrapperCol3: { span: 20 },
labelCol4: { span: 8 },
wrapperCol4: { span: 16 },
labelCol5: { span: 14 },
wrapperCol5: { span: 10 },
labelCol6: { span: 8 },
wrapperCol6: { span: 16 }
},
visible: false,
UserVisible: false,
isPdf: '',
compareResultList: [],
href: '',
carrier: '',
time: '',
spinning: false,
tableList: [],
bookingServiceItem: [],
pdfUrl: '',
UserList: [],
fileCategory: 'BC_MODIFY'
}
},
computed: {
...mapGetters([
'userInfo'
])
},
watch: {
'$route': {
immediate: true,
handler(newValue, oldValue) {
if (newValue.path === '/commontaskmanage/cutTime') {
this.getList()
}
}
}
},
mounted() {
this.getList()
},
methods: {
SearchCustomer(e) {
DjyCustomerSuggest({ keyword: e, type: 'consignor' }).then(res => {
this.CustomerList = res.data.rows
})
},
OpenUser() {
this.UserId = ''
this.UserVisible = true
},
ChangeCustomer(e) {
this.CustomerList.forEach(item => {
if (item.id == e) {
this.CreateData.customerName = item.shortName
}
})
DjyCustomerContacts({ customerId: e }).then(res => {
if (res.success) {
this.customerByList = res.data
} else {
this.$message.error(res.message)
}
})
},
handleSendMsg() {
this.sendLoading = true
SendInstantlessage({ taskPKId: this.$route.query.taskPKId }).then(res => {
if (res.success) {
this.$message.success(res.message)
} else {
this.$message.error(res.message)
}
this.sendLoading = false
})
},
handleNext() {
this.nextLoading = true
SearchAndConnectBookingInfo({ taskPKId: this.$route.query.taskPKId }).then(res => {
if (res.success) {
this.$message.success(res.message)
} else {
this.$message.error(res.message)
}
this.nextLoading = false
})
},
ChangeCustomerList(e) {
this.customerByList.forEach(item => {
if (item.id == e) {
this.CreateData.customerContactName = item.name
}
})
},
handleSendMail() {
TaskManageBCSendEmai1({ taskPKId: this.$route.query.taskPKId }).then(res => {
if (res.data.succ) {
this.$message.success(res.data.msg)
} else {
this.$message.error(res.data.msg)
}
})
},
FnCancelTask() {
const ApiData = {
taskPKId: this.$route.query.taskPKId
}
CancelTaskBC(ApiData).then(res => {
if (res.data.succ) {
this.$message.success(res.data.msg)
} else {
this.$message.error(res.data.msg)
}
})
},
SearchUser(e) {
GetSysUserPage({ name: e }).then(res => {
this.UserList = res.data
})
},
ChangeUser(e, Tname) {
this.UserList.forEach(item => {
if (item.id == e) {
console.log(e)
this.CreateData[Tname] = item.name
}
})
},
saveService(data) {
data.isYield = !data.isYield
},
FnCompleteTask() {
const ApiData = [this.$route.query.taskPKId]
CompleteTask(ApiData).then(res => {
if (res.data.succ) {
this.$message.success(res.data.msg)
} else {
this.$message.error(res.data.msg)
}
})
},
getList() {
this.spinning = true
const ApiData = {
taskPKId: this.$route.query.taskPKId
}
PoddGetInfoByTaskId(ApiData).then(res => {
if (res.success) {
this.tableList = res.data
if (res.data.length > 0) {
this.time = res.data[0].noticeDate
this.carrier = res.data[0].carrier
}
this.$forceUpdate()
} else {
this.$message.error(res.success)
}
this.spinning = false
})
},
handleOk() {
const projectList = []
this.bookingServiceItem.forEach(item => {
if (item.isYield) {
projectList.push(item.serviceProjectCode)
}
})
const ApiData = {
bcTaskId: this.$route.query.taskPKId,
// bcPkId: '',
// slotId: '',
projectList,
...this.CreateData
}
console.log(ApiData)
CreateBookingAndSlot(ApiData).then(res => {
if (res.data.succ) {
this.visible = false
this.$message.success(res.data.msg)
} else {
this.$message.error(res.data.msg)
}
})
},
UserhandleOk() {
const ApiData = {
taskPKId: this.$route.query.taskPKId,
userId: this.UserId
}
TransferTask(ApiData).then(res => {
if (res.data.succ) {
this.UserVisible = false
this.$message.success(res.data.msg)
} else {
this.$message.error(res.data.msg)
}
})
this.UserVisible = false
}
}
}
</script>
<style lang="less" scoped>
@import url('../../BookingLedger/detail/style/rightContent.less');
.point {
height: 10px;
width: 10px;
border-radius: 50%;
margin: 0 auto;
background: green;
}
.modaltitle {
border-bottom: 1px solid #000;
width: 5rem;
padding: 0.2rem 0.5rem;
margin-top: 1rem;
}
.icon-chuanfanguanli-chuanfanshenqing {
color: '#02A7F0';
}
.Main {
width: 100%;
background: white;
height: 100vh;
padding: 0 20px;
.LeftHead {
width: 100%;
display: flex;
justify-content: space-between;
padding: 8px;
margin-bottom: 16px;
border-bottom: 1px solid #000;
p {
margin: 0;
&:nth-child(1) {
font-weight: bold;
}
}
}
.title {
margin-top: 10px;
}
.CsSee {
color: #02a7f3;
text-decoration: underline;
cursor: pointer;
}
.LeftBottomBox {
.unitBox {
width: 100%;
display: flex;
.unit {
text-align: center;
line-height: 30px;
height: 30px;
// background: rgba(255, 255, 128, 1);
// border: 1px solid rgba(170, 10, 0, 1);
border-radius: 3px;
box-shadow: none;
// font-weight: bold;
// color: #62a10398;
margin: 0.5rem;
padding: 0 0.3rem;
.iconfont {
margin-right: 0.3rem;
}
}
}
}
.rightBox {
// margin-top: 37px;
.rightBoxRadio {
margin-bottom: 15px;
}
}
/deep/.Editing {
.ant-form-item {
margin: 0 !important;
line-height: 1.5 !important;
.ant-form-item-label {
line-height: 1.5 !important;
}
.ant-form-item-control {
line-height: 1.5 !important;
}
}
}
}
</style>

@ -1498,6 +1498,12 @@ export default {
} else if (data.taskType === 'CUT_MODIFY') {
// ROLLING_NOMINATION
this.$router.push({ path: '/commontaskmanage/cutTime', query: { taskPKId: data.pkId } })
} else if (data.taskType === 'POD_DISCHARGE_FULL') {
// ROLLING_NOMINATION
this.$router.push({ path: '/commontaskmanage/POD_DISCHARGE_FULL', query: { taskPKId: data.pkId } })
} else if (data.taskType === 'POD_GATEOUT_FULL') {
// ROLLING_NOMINATION
this.$router.push({ path: '/commontaskmanage/POD_GATEOUT_FULL', query: { taskPKId: data.pkId } })
} else {
//
this.$router.push({ path: '/commontaskmanage/BookingDetails', query: { taskPKId: data.pkId } })

@ -470,15 +470,6 @@ export default {
}
})
},
handleSendMail() {
TaskManageBCSendEmai1({ taskPKId: this.$route.query.taskPKId }).then(res => {
if (res.data.succ) {
this.$message.success(res.data.msg)
} else {
this.$message.error(res.data.msg)
}
})
},
getList() {
this.spinning = true
const ApiData = {

@ -133,6 +133,8 @@
<div style="margin-bottom: 10px;display: flex;justify-content: space-between;">
<div>
<a-button type="primary" @click="handleAdd" style="margin-right: 10px;">新增</a-button>
<a-button type="primary" @click="handleOpenCopy" style="margin-right: 10px;">批量复制</a-button>
<a-button type="primary" @click="handleSendAll" style="margin-right: 10px;">批量发送</a-button>
</div>
<div>
<a-button type="primary" @click="FnGetData"></a-button>
@ -152,9 +154,12 @@
ref="table"
:columns="columns"
:loading="loading"
:checkbox_config="{ checkField: 'checked' }"
:checkbox-config="{ highlight: true }"
@cell-dblclick="handledbclick"
@sort-change="tableSortChange"
@resizable-change="resizableChange"
@checkbox-change="checkboxChangeEvent"
height="600px"
empty-text="没有更多数据了!">
<template #caozuo="{ row }">
@ -178,10 +183,20 @@
<span>{{ row.vessel }} / {{ row.voyno }}</span>
</template>
<template #isRecvBC="{ row }">
<a-icon type="bulb" theme="filled" style="color: green;font-size: 16px;" :title="row.lstRecvBCDate" v-if="row.isRecvBC" />
<a-icon
type="bulb"
theme="filled"
style="color: green;font-size: 16px;"
:title="row.lstRecvBCDate"
v-if="row.isRecvBC" />
</template>
<template #isRecvBKCancel="{ row }">
<a-icon type="bulb" theme="filled" style="color: red;font-size: 16px;" :title="row.lstRecvBCDate" v-if="row.isRecvBKCancel" />
<a-icon
type="bulb"
theme="filled"
style="color: red;font-size: 16px;"
:title="row.lstRecvBCDate"
v-if="row.isRecvBKCancel" />
</template>
<template #isShipperOwned="{ row }">
<a-icon v-if="row.isShipperOwned" type="check-circle" style="color: green;font-size: 16px;" theme="filled" />
@ -198,10 +213,25 @@
</vxe-grid>
</a-card>
<mskBookingOrder @handleSuccess="handleSuccess" ref="mskBookingOrder"></mskBookingOrder>
<a-modal title="输入复制数量" :visible="copyflag" :footer="null" @cancel="copyflag = false">
<a-form :form="copyMoreForm" :label-col="{ span: 5 }" :wrapper-col="{ span: 12 }" @submit="handleSubmitCopyMore">
<a-form-item label="数量">
<a-input-number
style="width: 100%;"
:min="1"
:max="50"
:precision="0"
v-decorator="['number', { rules: [{ required: true, message: '请输入数量' }] }]" />
</a-form-item>
<a-form-item :wrapper-col="{ span: 12, offset: 5 }">
<a-button :loading="copyLoad" type="primary" html-type="submit">确定</a-button>
</a-form-item>
</a-form>
</a-modal>
</div>
</template>
<script>
import { mskGetPage, mskDelete, DjyUserConfigMulti } from '@/api/modular/main/BookingLedger'
import { mskGetPage, mskDelete, DjyUserConfigMulti, maskCopy, BatchSend } from '@/api/modular/main/BookingLedger'
import columnSetting from '@/components/tableColumnSetting'
import tableSort from '@/components/tableSort'
import mskBookingOrder from '@/components/mskBookingOrder'
@ -220,15 +250,18 @@ export default {
selectedRowKeys: [],
addSearch: '',
setVisible: false,
copyMoreForm: this.$form.createForm(this, { number: '' }),
setVisible1: false,
addLoading: false,
addSettingFlag: false,
copyflag: false,
formLoad: false,
addForm: {
smtpSSL: false,
receiveSSL: false,
parserList: []
},
copyLoad: false,
addData: [],
queryParam: {
pageNo: 1,
@ -448,6 +481,37 @@ export default {
onSelectChange(selectedRowKeys) {
this.selectedRowKeys = selectedRowKeys;
},
handleSendAll() {
const select = this.$refs.table.getCheckboxRecords()
if (select.length == 0) {
this.$message.warning('请选择要发送的数据')
return false
}
const pkIdArr = select.map((item, index) => {
return item.id
})
const data = this.$qs.stringify({ ids: pkIdArr })
BatchSend(data).then(res => {
if (res.success) {
this.$message.success('发送成功')
this.FnGetData()
} else {
this.$message.error(res.message)
}
})
},
handleOpenCopy() {
const select = this.$refs.table.getCheckboxRecords()
if (select.length == 0) {
this.$message.warning('请选择要复制的数据')
return false
}
if (select.length > 1) {
this.$message.warning('只能选择一条数据')
return false
}
this.copyflag = true
},
getConfigStart() {
const arr = localStorage.getItem('mskOrderSetting') ? JSON.parse(localStorage.getItem('mskOrderSetting')) : []
if (arr.length === 0) {
@ -459,56 +523,57 @@ export default {
setLocalStorage() {
const arr = localStorage.getItem('mskOrderSetting') ? JSON.parse(localStorage.getItem('mskOrderSetting')) : []
const $data = {}
arr.map((item, index) => {
switch (item.type) {
case 'mskOrder_list_column':
this.$set($data, 'mskOrder_list_column', item)
break
case 'mskOrder_page':
this.$set($data, 'mskOrder_page', item)
break
case 'mskOrder_sort':
this.$set($data, 'mskOrder_sort', item)
break
}
})
if (Object.keys($data).includes('mskOrder_list_column')) {
this.columns = JSON.parse($data.mskOrder_list_column.configJson)
} else {
arr.push({
type: 'mskOrder_list_column',
configJson: JSON.stringify(this.columns)
})
localStorage.setItem('mskOrderSetting', JSON.stringify(arr))
}
if (Object.keys($data).includes('mskOrder_page')) {
this.queryParam.PageSize = JSON.parse($data.mskOrder_page.configJson).pageSize
} else {
arr.push({
type: 'mskOrder_page',
configJson: JSON.stringify({ pageSize: 10 })
})
localStorage.setItem('mskOrderSetting', JSON.stringify(arr))
arr.map((item, index) => {
switch (item.type) {
case 'mskOrder_list_column':
this.$set($data, 'mskOrder_list_column', item)
break
case 'mskOrder_page':
this.$set($data, 'mskOrder_page', item)
break
case 'mskOrder_sort':
this.$set($data, 'mskOrder_sort', item)
break
}
if (Object.keys($data).includes('mskOrder_sort')) {
const data = $data.mskOrder_sort.configJson ? JSON.parse($data.mskOrder_sort.configJson) : null
if (data) {
setTimeout(() => {
this.$refs.table.sort(data.sortField, data.descSort ? 'desc' : 'asc')
}, 200);
this.queryParam.sortField = data.sortField
this.queryParam.descSort = data.descSort
}
} else {
arr.push({
type: 'mskOrder_sort',
configJson: ''
})
localStorage.setItem('mskOrderSetting', JSON.stringify(arr))
})
if (Object.keys($data).includes('mskOrder_list_column')) {
this.columns = JSON.parse($data.mskOrder_list_column.configJson)
this.columns.unshift({ type: 'checkbox', width: 60, noDraggable: true })
} else {
arr.push({
type: 'mskOrder_list_column',
configJson: JSON.stringify(this.columns)
})
localStorage.setItem('mskOrderSetting', JSON.stringify(arr))
}
if (Object.keys($data).includes('mskOrder_page')) {
this.queryParam.PageSize = JSON.parse($data.mskOrder_page.configJson).pageSize
} else {
arr.push({
type: 'mskOrder_page',
configJson: JSON.stringify({ pageSize: 10 })
})
localStorage.setItem('mskOrderSetting', JSON.stringify(arr))
}
if (Object.keys($data).includes('mskOrder_sort')) {
const data = $data.mskOrder_sort.configJson ? JSON.parse($data.mskOrder_sort.configJson) : null
if (data) {
setTimeout(() => {
this.$refs.table.sort(data.sortField, data.descSort ? 'desc' : 'asc')
}, 200);
this.queryParam.sortField = data.sortField
this.queryParam.descSort = data.descSort
}
setTimeout(() => {
this.FnGetData()
}, 200);
} else {
arr.push({
type: 'mskOrder_sort',
configJson: ''
})
localStorage.setItem('mskOrderSetting', JSON.stringify(arr))
}
setTimeout(() => {
this.FnGetData()
}, 200);
},
handlePageChange({ currentPage, pageSize }) {
if (this.queryParam.pageSize !== pageSize) {
@ -535,6 +600,7 @@ export default {
this.setLocalStorage()
} else {
this.columns = JSON.parse(JSON.stringify(this.columnsAll))
this.columns.unshift({ type: 'checkbox', width: 60, noDraggable: true })
const data = [
{
type: 'mskOrder_list_column',
@ -554,6 +620,31 @@ export default {
}
})
},
handleSubmitCopyMore(e) {
e.preventDefault()
this.copyMoreForm.validateFields((err, values) => {
if (!err) {
const select = this.$refs.table.getCheckboxRecords()
const pkIdArr = select.map((item, index) => {
return item.id
})
this.copyLoad = true
maskCopy({ id: pkIdArr[0], copyNum: values.number }).then(res => {
if (res.success) {
this.$message.success('复制成功')
this.FnGetData()
this.copyflag = false
} else {
this.$message.error(res.message)
}
this.copyLoad = false
})
}
})
},
checkboxChangeEvent() {
console.log('== 选中,取消选中 ==', this.$refs.table.getCheckboxRecords())
},
changeSetting(key, value) {
const arr = localStorage.getItem('mskOrderSetting') ? JSON.parse(localStorage.getItem('mskOrderSetting')) : []
arr.forEach(item => {
@ -640,11 +731,6 @@ export default {
init() {
this.form = {}
},
handlePageChange({ currentPage, pageSize }) {
this.queryParam.pageNo = currentPage
this.queryParam.pageSize = pageSize
this.FnGetData()
},
FnGetData() {
this.loading = true
this.form.pageNo = this.queryParam.pageNo

@ -1,64 +1,76 @@
<template>
<div class="main">
<a-spin :spinning="loading">
<a-form id="formLogin" class="user-layout-login" ref="formLogin" :form="form" @submit="handleSubmit">
<a-alert
v-if="isLoginError"
type="error"
showIcon
style="margin-bottom: 24px;"
:message="this.accountLoginErrMsg" />
<a-form-item>
<a-input
size="large"
type="text"
placeholder="账号"
v-decorator="[
'account',
{
initialValue: '',
rules: [{ required: true, message: '请输入帐户名' }, { validator: handleUsernameOrEmail }],
validateTrigger: 'change'
}
]">
<a-icon slot="prefix" type="user" :style="{ color: 'rgba(0,0,0,.25)' }" />
</a-input>
</a-form-item>
<a-form-item>
<a-input
size="large"
type="password"
autocomplete="false"
placeholder="密码"
v-decorator="[
'password',
{ initialValue: '', rules: [{ required: true, message: '请输入密码' }], validateTrigger: 'blur' }
]">
<a-icon slot="prefix" type="lock" :style="{ color: 'rgba(0,0,0,.25)' }" />
</a-input>
</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>
</a-form-item>
<a-spin :spinning="loading" style="position: relative;z-index: 10;">
<div class="form">
<div class="title">
<img src="../../assets/logo.png" alt="logo" />大简云工作平台
</div>
<a-form id="formLogin" class="user-layout-login" ref="formLogin" :form="form" @submit="handleSubmit">
<a-alert
v-if="isLoginError"
type="error"
showIcon
style="margin-bottom: 24px;"
:message="this.accountLoginErrMsg" />
<a-form-item>
<a-input
type="text"
placeholder="账号"
v-decorator="[
'account',
{
initialValue: '',
rules: [{ required: true, message: '请输入帐户名' }, { validator: handleUsernameOrEmail }],
validateTrigger: 'change'
}
]">
<a-icon slot="prefix" type="user" :style="{ color: 'rgba(0,0,0,.25)' }" />
</a-input>
</a-form-item>
<a-form-item style="margin-top:24px">
<a-button
size="large"
type="primary"
htmlType="submit"
class="login-button"
:loading="state.loginBtn"
:disabled="state.loginBtn">确定</a-button>
</a-form-item>
<a-form-item>
<a-input
<div class="user-login-other">
<a class="register" @click="FnGo"></a>
type="password"
autocomplete="false"
placeholder="密码"
v-decorator="[
'password',
{ initialValue: '', rules: [{ required: true, message: '请输入密码' }], validateTrigger: 'blur' }
]">
<a-icon slot="prefix" type="lock" :style="{ color: 'rgba(0,0,0,.25)' }" />
</a-input>
</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>
</a-form-item>
<a-form-item style="margin-top:24px">
<a-button
type="primary"
htmlType="submit"
class="login-button"
:loading="state.loginBtn"
:disabled="state.loginBtn">确定</a-button>
</a-form-item>
<div class="user-login-other">
<a class="register" @click="FnGo"></a>
</div>
</a-form>
</div>
<!-- <div class="bg">
<div class="desc">
<div style="margin-bottom: 20px;">大简云工作平台</div>
<div>大道至简+云办公</div>
</div>
</a-form>
</div> -->
</a-spin>
<upd-pwd ref="updPwd" />
@ -270,7 +282,7 @@ export default {
typeArr: ['vesselinfo_sort', 'vesselinfo_list_column', 'vesselinfo_page', 'booking_list_column']
}
DjyUserConfigMulti(this.$qs.stringify(query)).then(res => {
let vessArr = []
const vessArr = []
let bookArr = []
res.data.forEach(item => {
if (item.type.includes('vesselinfo')) {
@ -314,51 +326,48 @@ export default {
</script>
<style lang="less" scoped>
.user-layout-login {
margin-top: 100px;
label {
font-size: 14px;
.form{
background: white;
border-radius: 15px;
padding: 30px;
z-index: 10;
.title{
color: rgb(4,89,219);
text-align: center;
font-size: 18px;
margin-bottom: 20px;
font-weight: bold;
z-index: 2;
img{
height: 40px;
width: 40px;
margin-right: 15px;
}
}
.getCaptcha {
display: block;
.login-button{
background: rgb(239,243,251);
width: 100%;
color: rgb(104,116,164);
border: none;
height: 40px;
line-height: 40px;
}
.forge-password {
font-size: 14px;
}
button.login-button {
padding: 0 15px;
font-size: 16px;
height: 40px;
width: 100%;
}
.bg{
position: absolute;
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;
}
.user-login-other {
text-align: left;
margin-top: 24px;
line-height: 22px;
.item-icon {
font-size: 24px;
color: rgba(0, 0, 0, 0.2);
margin-left: 16px;
vertical-align: middle;
cursor: pointer;
transition: color 0.3s;
&:hover {
color: #1890ff;
}
}
.register {
float: right;
}
}
}
</style>

Loading…
Cancel
Save