修改问题

master
sunzehua 10 months ago
parent 269c061b25
commit 35219cc2df

@ -335,3 +335,10 @@ export function TaskManageBCSendEmai1(parameter) {
params: parameter
})
}
export function TaskManageBCGetCompareResult(parameter) {
return axios({
url: '/TaskManageBC/GetCompareResult',
method: 'get',
params: parameter
})
}

@ -174,3 +174,27 @@ export function EmaiReceiveRecordReParseEmailBatch(parameter) {
data: parameter
})
}
export function FeeCustTemplatePage(parameter) {
return axios({
url: '/FeeCustTemplate/Page',
method: 'get',
params: parameter
})
}
export function FeeCustTemplateSave(parameter) {
return axios({
url: '/FeeCustTemplate/Save',
method: 'post',
data: parameter
})
}
export function FeeCustTemplateDelete(parameter) {
return axios({
url: '/FeeCustTemplate/Delete',
method: 'post',
data: parameter
})
}

@ -39,6 +39,8 @@ const constantRouterComponents = {
TaskOriginalLost: () => import('@/views/main/Taskmanage/TaskOriginalLost'),
TaskChangeShip: () => import('@/views/main/Taskmanage/TaskChangeShip'),
BcFileDetail: () => import('@/views/main/Taskmanage/BcFileDetail'),
BCModify: () => import('@/views/main/Taskmanage/BCModify/index'),
cancellation: () => import('@/views/main/Taskmanage/cancellation/index'),
BcEditing: () => import('@/views/main/Taskmanage/BcFileDetail/Editing'),
BookingDetailTest: () => import('@/views/main/BookingLedger/detail/BookingDetailTest'),
BookingCustomerDetail: () => import('@/views/main/BookingCustomerLedger/detail')
@ -177,6 +179,28 @@ const userAccount = [
},
component: 'BcEditing'
},
{
name: 'BCModify',
path: '/commontaskmanage/BCModify',
pid: 0,
id: 183190,
meta: {
title: 'BC变更',
show: false
},
component: 'BCModify'
},
{
name: 'Cancellation',
path: '/commontaskmanage/Cancellation',
pid: 0,
id: 183191,
meta: {
title: 'Cancellation',
show: false
},
component: 'cancellation'
},
{
name: 'TaskmanageDetail',
path: '/commontaskmanage/TaskmanageDetail',

@ -5,7 +5,7 @@ import { message, Modal, notification } from 'ant-design-vue' /// es/notificatio
import { VueAxios } from './axios'
import { ACCESS_TOKEN, X_ACCESS_TOKEN } from '@/store/mutation-types'
// 创建 axios 实例
// 创建 axios 实例ACCESS_TOKEN
const service = axios.create({
// baseURL: '/api', // api base_url
baseURL: process.env.VUE_APP_API_BASE_URL, // 不用代理就用这个

@ -39,6 +39,10 @@
<input type="radio" name="tabs" id="tab2" checked="false" />
<label class="tabs-label" for="tab2">EDI补充信息</label>
</li>
<li @click="changeParentTabs('3-3')">
<input type="radio" name="tabs" id="tab3" checked="false" />
<label class="tabs-label" for="tab3">费用信息</label>
</li>
</div>
<div class="parents-tabs-content">
<div id="tab-content1" class="tab-content" v-show="mainOrderActiveKey === '1-1'">
@ -106,6 +110,13 @@
isParent="parent"
@changeDetail="changeDetailFun"></ediMore>
</div>
<div id="tab-content3" style="background: white;" class="tab-content" v-show="mainOrderActiveKey === '3-3'">
<iframe
ref="iframe"
style="width: 100%;height: 1400px;"
src="http://60.209.125.238:35103/#/index"
frameborder="0"></iframe>
</div>
</div>
</ul>
</template>
@ -435,10 +446,17 @@ export default {
if (nVal == '1-1') {
document.querySelector('#tab1').checked = true
document.querySelector('#tab2').checked = false
document.querySelector('#tab3').checked = false
}
if (nVal == '2-2') {
document.querySelector('#tab2').checked = true
document.querySelector('#tab1').checked = false
document.querySelector('#tab3').checked = false
}
if (nVal == '3-3') {
document.querySelector('#tab3').checked = true
document.querySelector('#tab1').checked = false
document.querySelector('#tab2').checked = false
}
}
}
@ -611,6 +629,34 @@ export default {
// this.$refs.basicInfo.refresh()
// this.$refs.goodsTable.tableData = data.data2
},
sendMessageFY() {
const mapFrame = this.$refs['iframe']
const data = {
custno: this.bookingDetails.custno,
mblno: this.bookingDetails.mblno,
cntrtotal: this.bookingDetails.cntrtotal,
cbm: this.bookingDetails.cbm,
kgs: this.bookingDetails.kgs,
pkgs: this.bookingDetails.pkgs,
customername: this.bookingDetails.customername,
portdischarge: this.bookingDetails.portdischarge,
vessel: this.bookingDetails.vessel,
voyno: this.bookingDetails.voyno,
sale: this.bookingDetails.sale,
etd: this.bookingDetails.etd,
blfrt: this.bookingDetails.blfrt,
destination: this.bookingDetails.destination,
portload: this.bookingDetails.portload,
id: this.bookingDetails.id
}
const iframeWin = mapFrame.contentWindow
console.log(mapFrame.contentWindow)
iframeWin.postMessage(
{
token: localStorage.getItem('pro__Access-Token'),
data: data
}, '*')
},
...mapActions(['setNeedSavePages', 'setBookingList', 'setBookingGridOptions', 'setInBookingDetailsSave', 'setSET_SAVEFLAG']),
getRouterHis() {
this.inChildLoading = true
@ -782,7 +828,7 @@ export default {
}, 200)
setTimeout(() => {
const key = this.$route.fullPath
this.sendMessageFY()
setTimeout(() => {
const detailsChange = Object.keys(this.needSavePages).includes(key)
? !!this.needSavePages[key].details
@ -1198,6 +1244,7 @@ export default {
const $BookingEDIExt = { ...JSON.parse(JSON.stringify(bookingEDIExt)), ...res.data.bookingEDIExt }
this.$set(this, 'bookingDetails', { ...this.bookingDetails, ...newData, ...{ bookingEDIExt: $BookingEDIExt } })
this.oldBookingDetails = JSON.parse(JSON.stringify(this.bookingDetails))
this.sendMessageFY()
if (this.$route.query.isCopy && this.$route.query.copyId) {
const hisData = {
bookingDetails: this.bookingDetails,
@ -1299,7 +1346,13 @@ export default {
return true
},
handleSaveCtnList(data, slots) {
this.bookingDetails.ctnInputs = data
const arr = []
data.forEach(item => {
if (item.ctnnum > 0) {
arr.push(item)
}
})
this.bookingDetails.ctnInputs = arr
this.bookingDetails.slots = slots
this.$refs.goodsTable.init()
},

@ -80,12 +80,16 @@
<div v-if="item.dataIndex == 'vessel'">
<span>{{ row.vessel }}/{{ row.voyno }}</span>
</div>
<div v-if="item.dataIndex == 'eta'">
<div v-else-if="item.dataIndex == 'eta'">
<span>{{ row.eta?row.eta.substring(0,10):'' }}</span>
</div>
<div v-if="item.dataIndex == 'etd'">
<div v-else-if="item.dataIndex == 'etd'">
<span>{{ row.etd?row.etd.substring(0,10):'' }}</span>
</div>
<div v-else-if="item.dataIndex == 'remaiN_CTNS_NUM'">
<span>{{ row.totaL_ORDERS - row.usE_NUM }}</span>
</div>
<span v-else>{{ row[item.dataIndex] }}</span>
</template>
</vxe-column>
<vxe-column title="操作" fixed="right" width="120" align="center">
@ -204,7 +208,12 @@ export default {
width: '100',
dataIndex: 'ctN_STAT'
},
{
title: '剩余箱型箱量',
align: 'center',
width: '110',
dataIndex: 'remaiN_CTN_STAT'
},
{
title: 'ETD',
align: 'center',

@ -171,12 +171,13 @@
<div v-if="item.dataIndex == 'vessel'">
<span>{{ row.vessel }}/{{ row.voyno }}</span>
</div>
<div v-if="item.dataIndex == 'eta'">
<div v-else-if="item.dataIndex == 'eta'">
<span>{{ row.eta?row.eta.substring(0,10):'' }}</span>
</div>
<div v-if="item.dataIndex == 'etd'">
<div v-else-if="item.dataIndex == 'etd'">
<span>{{ row.etd?row.etd.substring(0,10):'' }}</span>
</div>
<span v-else>{{ row[item.dataIndex] }}</span>
</template>
</vxe-column>
<vxe-column title="操作" fixed="right" width="120" align="center">

@ -0,0 +1,893 @@
<template>
<div class="Main">
<a-spin :spinning="spinning">
<a-row :gutter="16">
<a-col :span="pdfUrl ? 11 : 24">
<div class="LeftHead">
<p>Booking Amendment{{ form.carrierId }}</p>
<p>订舱时间{{ form.bookingConfirmDate }}</p>
</div>
<a-form class="Editing">
<a-row>
<a-col :span="14">
<a-form-item
label="提单号:"
:label-col="formItemLayout.labelCol1"
:wrapper-col="formItemLayout.wrapperCol1">{{ form.mblNo }}
<a-icon @click="copyText(form.mblNo)" style="cursor: pointer;" type="copy" />
</a-form-item>
</a-col>
<a-col :span="10">
<a-form-item
label="船名/航次:"
:label-col="formItemLayout.labelCol2"
:wrapper-col="formItemLayout.wrapperCol2">
{{ form.vessel }}/{{ form.voyNo }}
</a-form-item>
</a-col>
<a-col :span="14">
<a-form-item label="收货地:" :label-col="formItemLayout.labelCol1" :wrapper-col="formItemLayout.wrapperCol1">
{{ form.placeReceipt }}
</a-form-item>
</a-col>
<a-col :span="10">
<a-form-item label="ETD" :label-col="formItemLayout.labelCol2" :wrapper-col="formItemLayout.wrapperCol2">
{{ form.etd ? form.etd.substring(0, 11) : '-' }}
</a-form-item>
</a-col>
<a-col :span="14">
<a-form-item label="交货地:" :label-col="formItemLayout.labelCol1" :wrapper-col="formItemLayout.wrapperCol1">
{{ form.placeDelivery }}
</a-form-item>
</a-col>
<a-col :span="10">
<a-form-item label="ETA" :label-col="formItemLayout.labelCol2" :wrapper-col="formItemLayout.wrapperCol2">
{{ form.eta ? form.eta.substring(0, 11) : '-' }}
</a-form-item>
</a-col>
<a-col :span="14">
<a-form-item label="订舱人:" :label-col="formItemLayout.labelCol1" :wrapper-col="formItemLayout.wrapperCol1">
{{ form.bookingParty }}
</a-form-item>
</a-col>
<a-col :span="10">
<a-form-item label="合约号:" :label-col="formItemLayout.labelCol2" :wrapper-col="formItemLayout.wrapperCol2">
{{ form.contractNo }}
</a-form-item>
</a-col>
<a-col :span="14">
<a-form-item
label="样单截止时间:"
:label-col="formItemLayout.labelCol1"
:wrapper-col="formItemLayout.wrapperCol1">
{{ form.siCutDate }}
</a-form-item>
</a-col>
<a-col :span="10">
<a-form-item
label="箱使天数:"
:label-col="formItemLayout.labelCol2"
:wrapper-col="formItemLayout.wrapperCol2">
{{ form.detensionFreeDays }}
</a-form-item>
</a-col>
<a-col :span="14">
<a-form-item
label="舱单截止时间:"
:label-col="formItemLayout.labelCol1"
:wrapper-col="formItemLayout.wrapperCol1">
{{ form.manifestCutDate }}
</a-form-item>
</a-col>
<a-col :span="10">
<a-form-item
label="截港时间:"
:label-col="formItemLayout.labelCol2"
:wrapper-col="formItemLayout.wrapperCol2">
{{ form.cyCutoffTime }}
</a-form-item>
</a-col>
<a-col :span="14">
<a-form-item
label="MDGF截止时间"
:label-col="formItemLayout.labelCol1"
:wrapper-col="formItemLayout.wrapperCol1">
{{ formext2.mdgfCutDate }}
</a-form-item>
</a-col>
<a-col :span="10">
<a-form-item
label="VGM截止时间"
:label-col="formItemLayout.labelCol2"
:wrapper-col="formItemLayout.wrapperCol2">
{{ formext2.vgmCutoffTime }}
</a-form-item>
</a-col>
<a-col :span="14">
<a-form-item
label="箱型箱量:"
:label-col="formItemLayout.labelCol1"
:wrapper-col="formItemLayout.wrapperCol1">
{{ form.ctnStat }}
</a-form-item>
</a-col>
<a-col :span="24">
<p class="title"><i class="iconfont icon-chuanfanguanli-chuanfanshenqing"></i>一程</p>
</a-col>
<a-col :span="16">
<a-form-item
label="船名/航次:"
:label-col="formItemLayout.labelCol3"
:wrapper-col="formItemLayout.wrapperCol3">
{{ form.vessel }}/{{ form.voyNo }}
</a-form-item>
</a-col>
<a-col :span="8">
<a-form-item label="ETD" :label-col="formItemLayout.labelCol4" :wrapper-col="formItemLayout.wrapperCol4">
{{ form.etd ? form.etd.substring(0, 11) : '-' }}
</a-form-item>
</a-col>
<a-col :span="16">
<a-form-item label="装货港:" :label-col="formItemLayout.labelCol3" :wrapper-col="formItemLayout.wrapperCol3">
{{ form.portload }}
</a-form-item>
</a-col>
<a-col :span="8">
<a-form-item label="ETA" :label-col="formItemLayout.labelCol4" :wrapper-col="formItemLayout.wrapperCol4">
{{ form.eta ? form.eta.substring(0, 11) : '-' }}
</a-form-item>
</a-col>
<a-col :span="16">
<a-form-item label="卸货港:" :label-col="formItemLayout.labelCol3" :wrapper-col="formItemLayout.wrapperCol3">
{{ form.portDischarge }}
</a-form-item>
</a-col>
<div v-if="form.carriageType == 'TRANSFER_SHIP'">
<a-col :span="24">
<p class="title"><i class="iconfont icon-chuanfanguanli-chuanfanshenqing"></i>二程</p>
</a-col>
<a-col :span="16">
<a-form-item
label="船名/航次:"
:label-col="formItemLayout.labelCol3"
:wrapper-col="formItemLayout.wrapperCol3">
{{ form.secondVessel }}/{{ form.secondVoyno }}
</a-form-item>
</a-col>
<a-col :span="8">
<a-form-item
label="ETD"
:label-col="formItemLayout.labelCol4"
:wrapper-col="formItemLayout.wrapperCol4">
{{ form.secondETD ? form.secondETD.substring(0, 11) : '-' }}
</a-form-item>
</a-col>
<a-col :span="16">
<a-form-item
label="装货港:"
:label-col="formItemLayout.labelCol3"
:wrapper-col="formItemLayout.wrapperCol3">
{{ form.transferPort1 }}
</a-form-item>
</a-col>
<a-col :span="8">
<a-form-item
label="ETA"
:label-col="formItemLayout.labelCol4"
:wrapper-col="formItemLayout.wrapperCol4">
{{ form.secondETA ? form.secondETA.substring(0, 11) : '-' }}
</a-form-item>
</a-col>
<a-col :span="16">
<a-form-item
label="卸货港:"
:label-col="formItemLayout.labelCol3"
:wrapper-col="formItemLayout.wrapperCol3">
{{ form.portDischarge }}
</a-form-item>
</a-col>
</div>
</a-row>
<a-row>
<a-col :span="24">
<p class="title">关联详情</p>
</a-col>
</a-row>
<a-row>
<a-col :span="5">
<a-form-item
label="已生成舱位:"
:label-col="formItemLayout.labelCol5"
:wrapper-col="formItemLayout.wrapperCol5">
{{ form.bookingSlotId ? '是' : '否' }}
</a-form-item>
</a-col>
<a-col :span="4">
<span class="CsSee" v-if="form.bookingSlotId" @click="FnSee"></span>
</a-col>
<a-col :span="5">
<a-form-item
label="已生成订舱:"
:label-col="formItemLayout.labelCol5"
:wrapper-col="formItemLayout.wrapperCol5">
{{ form.bookingOrderId ? '是' : '否' }}
</a-form-item>
</a-col>
<a-col :span="4">
<span class="CsSee" v-if="form.bookingOrderId" @click="FnSee"></span>
</a-col>
<a-col :span="5">
<a-form-item
label="任务状态:"
:label-col="formItemLayout.labelCol5"
:wrapper-col="formItemLayout.wrapperCol5">
{{ form.taskStatus == 'Complete' ? '已完成' : '-' }}
</a-form-item>
</a-col>
</a-row>
<a-row class="LeftBottomBox" type="flex" justify="space-around" align="middle">
<a-col :span="24">
<p class="title">关键信息</p>
</a-col>
<div class="unitBox">
<p
v-for="(item, index) in form.keywords"
:key="index"
class="unit"
:style="{
background: item.background,
color: Rcolor(item.background),
border: `1px solid ${Rcolor(item.background)}`
}">
<i :class="item.icon" class="iconfont"></i>{{ item.name }}
</p>
</div>
</a-row>
<a-row v-if="compareResultList.length>0">
<div style="height: 30px;border: 1px solid red;padding: 0 10px;color: black;font-size: 13px;line-height: 30px;width: 45%;margin-left: 7px;margin-bottom: 10px;">
<a-icon type="info-circle" theme="filled" style="font-size: 15px;color: red;margin-right: 20px;" />
<span @click="compareResultFlag=true" style="cursor: pointer;text-decoration: underline;">订舱变更比对BC存在差异</span>
差异总数:{{ compareResultList.length }}
</div>
</a-row>
<a-row 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 type="primary" @click="handleSendMail">
发送邮件
</a-button>
</a-col>
</a-row>
</a-form>
</a-col>
<a-col :span="pdfUrl ? 13 : 0" class="rightBox">
<a-radio-group v-model="fileCategory" button-style="solid" @change="ChangeFileRadio" class="rightBoxRadio">
<a-radio-button value="BC_MODIFY">BC文件</a-radio-button>
<a-radio-button value="BC_MODIFY_NOTICE">BC更改文件</a-radio-button>
</a-radio-group>
<iframe width="100%" height="690" frameborder="0" scrolling="auto" :src="pdfUrl"></iframe>
</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 {
GetInfoByTaskId,
GetProjectList,
CancelTaskBC,
DownloadFile,
TransferTask,
CreateBookingAndSlot,
CompleteTask,
TaskManageBCSendEmai1,
TaskManageBCGetCompareResult
} 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: '',
customerByList: [],
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: '',
form: {
ctnList: [],
fileList: []
},
compareResultList: [],
formext2: {
ctnList: []
},
href: '',
spinning: false,
bookingServiceItem: [],
pdfUrl: '',
UserList: [],
fileCategory: 'BC_MODIFY'
}
},
computed: {
...mapGetters([
'userInfo'
])
},
watch: {
'$route': {
immediate: true,
handler(newValue, oldValue) {
if (newValue.path === '/commontaskmanage/BCModify') {
this.getList()
}
}
}
},
mounted() {
this.getList()
this.getTaskManageBCGetCompareResult()
},
methods: {
copyText(text) {
const inputDom = document.createElement('textarea')
document.body.appendChild(inputDom)
inputDom.value = text
inputDom.select()
inputDom.focus()
document.execCommand('copy')
document.body.removeChild(inputDom)
this.$message.success('复制成功')
},
ChangeFileRadio() {
this.spinning = true
const ApiData = {
taskPKId: this.$route.query.taskPKId
}
ApiData.fileCategory = this.fileCategory
DownloadFile(ApiData).then(res => {
console.log(res, res.data)
if (res.byteLength > 150) {
this.pdfUrl = window.URL.createObjectURL(new Blob([res], { type: 'application/pdf;charset=utf-8' }))
}
this.spinning = false
})
},
getTaskManageBCGetCompareResult() {
TaskManageBCGetCompareResult({ taskPKId: this.$route.query.taskPKId }).then(res => {
if (res.success) {
this.compareResultList = res.data
} else {
this.$message.error(res.message)
}
})
},
SearchCustomer(e) {
DjyCustomerSuggest({ keyword: e, type: 'consignor' }).then(res => {
this.CustomerList = res.data.rows
})
},
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)
}
})
},
ChangeCustomerList(e) {
this.customerByList.forEach(item => {
if (item.id == e) {
this.CreateData.customerContactName = item.name
}
})
},
SearchUser(e) {
console.log(e)
// consignor
// booking_agent
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
}
})
},
FnSee() {
this.$router.push({ path: '/BookingDetail?id=' + this.form.bookingOrderId })
},
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)
}
})
},
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)
}
})
},
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)
}
})
},
saveService(data) {
data.isYield = !data.isYield
},
getList() {
this.spinning = true
const ApiData = {
taskPKId: this.$route.query.taskPKId
}
GetInfoByTaskId(ApiData).then(res => {
console.log(res.data)
if (res.data.succ) {
this.form = res.data.ext
if (this.form.fileList) {
this.isPdf = this.form.fileList[0].fileType
}
if (res.data.ext2) {
this.formext2 = res.data.ext2
} else {
this.formext2 = {}
}
this.$forceUpdate()
} else {
this.$message.error(res.data.msg)
this.form = {}
this.formext2 = {}
}
this.ChangeFileRadio()
})
GetProjectList().then(res => {
res.data.forEach(item => {
item.isYield = false
})
this.bookingServiceItem = res.data
})
GetSysUserPage().then(res => {
this.UserList = res.data
})
DjyCustomerSuggest({ keyword: '', type: 'consignor' }).then(res => {
this.CustomerList = res.data.rows
})
},
OpenModal() {
this.CreateData = {
generateMethod: 'GEN_BOOKING_SLOT'
}
this.UserList.forEach(item => {
if (item.id == this.userInfo.id) {
this.CreateData.opId = item.id
this.CreateData.opName = item.name
}
})
this.visible = true
},
OpenUser() {
this.UserId = ''
this.UserVisible = true
},
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
},
Rcolor(hexColor) {
const hex = hexColor.replace('#', '').toLowerCase()
const red = parseInt(hex.substring(0, 2), 16) - 90
const green = parseInt(hex.substring(2, 4), 16) - 90
const blue = parseInt(hex.substring(4, 6), 16) - 50
return `rgb(${red}, ${green}, ${blue})`
}
}
}
</script>
<style lang="less" scoped>
// @import url('../../BookingLedger/detail/index.less');
@import url('../../BookingLedger/detail/style/rightContent.less');
.modaltitle {
border-bottom: 1px solid #000;
width: 5rem;
padding: 0.2rem 0.5rem;
margin-top: 1rem;
}
.icon-chuanfanguanli-chuanfanshenqing {
color: '#02A7F0';
}
.Main {
width: 98%;
margin: 0 auto;
.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>

@ -13,7 +13,9 @@
<a-form-item
label="提单号:"
:label-col="formItemLayout.labelCol1"
:wrapper-col="formItemLayout.wrapperCol1">{{ form.mblNo }}
:wrapper-col="formItemLayout.wrapperCol1">
{{ form.mblNo }}
<a-icon @click="copyText(form.mblNo)" style="cursor: pointer;" type="copy" />
</a-form-item>
</a-col>
<a-col :span="10">
@ -59,7 +61,7 @@
label="样单截止时间:"
:label-col="formItemLayout.labelCol1"
:wrapper-col="formItemLayout.wrapperCol1">
{{ form.sICutDate }}
{{ form.siCutDate }}
</a-form-item>
</a-col>
<a-col :span="10">
@ -91,7 +93,7 @@
label="MDGF截止时间"
:label-col="formItemLayout.labelCol1"
:wrapper-col="formItemLayout.wrapperCol1">
{{ formext2.MDGFCutDate }}
{{ form.mdgfCutDate }}
</a-form-item>
</a-col>
<a-col :span="10">
@ -99,7 +101,7 @@
label="VGM截止时间"
:label-col="formItemLayout.labelCol2"
:wrapper-col="formItemLayout.wrapperCol2">
{{ formext2.VGMCutoffTime }}
{{ form.vgmCutoffTime }}
</a-form-item>
</a-col>
<a-col :span="14">
@ -307,6 +309,7 @@
匹配已有订舱
</a-radio>
</a-radio-group>
<a-checkbox style="margin-top: 10px;" v-model="CreateData.isDirectSend"></a-checkbox>
<p class="modaltitle">订舱录入</p>
<a-form class="Editing">
<a-row>
@ -331,13 +334,13 @@
<a-form-item label="联系人:" :label-col="formItemLayout.labelCol2" :wrapper-col="formItemLayout.wrapperCol2">
<a-select
show-search
v-model="CreateData.customerContactId"
mode="multiple"
v-model="CreateData.customerList"
: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 }}
@ -574,6 +577,16 @@ export default {
this.getList()
},
methods: {
copyText(text) {
const inputDom = document.createElement('textarea')
document.body.appendChild(inputDom)
inputDom.value = text
inputDom.select()
inputDom.focus()
document.execCommand('copy')
document.body.removeChild(inputDom)
this.$message.success('复制成功')
},
ChangeFileRadio() {
this.spinning = true
const ApiData = {
@ -678,9 +691,9 @@ export default {
taskPKId: this.$route.query.taskPKId
}
GetInfoByTaskId(ApiData).then(res => {
console.log(res.data)
if (res.data.succ) {
this.form = res.data.ext
console.log(this.form)
if (this.form.fileList) {
this.isPdf = this.form.fileList[0].fileType
}
@ -714,7 +727,9 @@ export default {
},
OpenModal() {
this.CreateData = {
generateMethod: 'GEN_BOOKING_SLOT'
generateMethod: 'GEN_BOOKING_SLOT',
customerList: [],
isDirectSend: false
}
this.UserList.forEach(item => {
if (item.id == this.userInfo.id) {
@ -743,6 +758,20 @@ export default {
projectList,
...this.CreateData
}
if (this.CreateData.customerList.length > 0) {
const arr = []
this.customerByList.forEach(item => {
this.CreateData.customerList.forEach(ite => {
if (ite == item.id) {
arr.push({
customerContactId: item.id,
customerContactName: item.name
})
}
})
})
ApiData.customerContactList = arr
}
console.log(ApiData)
CreateBookingAndSlot(ApiData).then(res => {
if (res.data.succ) {

@ -10,8 +10,9 @@
<div class="nav-title" v-if="levelTop.length > 0">
<a-radio-group v-model="activeTopKey" style="margin-bottom: 16px" @change="changeTopLevel">
<a-radio-button v-for="(item, index) in levelTop" :value="item.key" :key="index">
<span class="nav-top"
>{{ item.name }}<span class="nav-top-tip">({{ item.total }})</span></span
<span
class="nav-top"
>{{ item.name }}<span class="nav-top-tip">({{ item.total }})</span></span
>
</a-radio-button>
</a-radio-group>
@ -206,8 +207,10 @@
>
<a-button class="list-btn"><i class="iconfont icon-dengjizongshu"></i>LARA登记</a-button>
</a-popconfirm>
<a-button class="list-btn" @click="laraRecordFun"
><i class="iconfont icon-touzijilu"></i>LARA记录</a-button
<a-button
class="list-btn"
@click="laraRecordFun"
><i class="iconfont icon-touzijilu"></i>LARA记录</a-button
>
</template>
</template>
@ -1473,6 +1476,12 @@ export default {
// this.$router.push({ path: '/commontaskmanage/BcFileDetail', query: { taskPKId: data.pkId } })
// BC
this.$router.push({ path: '/commontaskmanage/BcEditing', query: { taskPKId: data.pkId } })
} else if (data.taskType === 'BC_MODIFY') {
// BC
this.$router.push({ path: '/commontaskmanage/BCModify', query: { taskPKId: data.pkId } })
} else if (data.taskType === 'CANCELLATION') {
// Cancellation
this.$router.push({ path: '/commontaskmanage/Cancellation', query: { taskPKId: data.pkId } })
} else {
//
this.$router.push({ path: '/commontaskmanage/BookingDetails', query: { taskPKId: data.pkId } })

@ -0,0 +1,893 @@
<template>
<div class="Main">
<a-spin :spinning="spinning">
<a-row :gutter="16">
<a-col :span="pdfUrl ? 11 : 24">
<div class="LeftHead">
<p>Booking Cancellation{{ form.carrierId }}</p>
<p>订舱时间{{ form.bookingConfirmDate }}</p>
</div>
<a-form class="Editing">
<a-row>
<a-col :span="14">
<a-form-item
label="提单号:"
:label-col="formItemLayout.labelCol1"
:wrapper-col="formItemLayout.wrapperCol1">{{ form.mblNo }}
<a-icon @click="copyText(form.mblNo)" style="cursor: pointer;" type="copy" />
</a-form-item>
</a-col>
<a-col :span="10">
<a-form-item
label="船名/航次:"
:label-col="formItemLayout.labelCol2"
:wrapper-col="formItemLayout.wrapperCol2">
{{ form.vessel }}/{{ form.voyNo }}
</a-form-item>
</a-col>
<a-col :span="14">
<a-form-item label="收货地:" :label-col="formItemLayout.labelCol1" :wrapper-col="formItemLayout.wrapperCol1">
{{ form.placeReceipt }}
</a-form-item>
</a-col>
<a-col :span="10">
<a-form-item label="ETD" :label-col="formItemLayout.labelCol2" :wrapper-col="formItemLayout.wrapperCol2">
{{ form.etd ? form.etd.substring(0, 11) : '-' }}
</a-form-item>
</a-col>
<a-col :span="14">
<a-form-item label="交货地:" :label-col="formItemLayout.labelCol1" :wrapper-col="formItemLayout.wrapperCol1">
{{ form.placeDelivery }}
</a-form-item>
</a-col>
<a-col :span="10">
<a-form-item label="ETA" :label-col="formItemLayout.labelCol2" :wrapper-col="formItemLayout.wrapperCol2">
{{ form.eta ? form.eta.substring(0, 11) : '-' }}
</a-form-item>
</a-col>
<a-col :span="14">
<a-form-item label="订舱人:" :label-col="formItemLayout.labelCol1" :wrapper-col="formItemLayout.wrapperCol1">
{{ form.bookingParty }}
</a-form-item>
</a-col>
<a-col :span="10">
<a-form-item label="合约号:" :label-col="formItemLayout.labelCol2" :wrapper-col="formItemLayout.wrapperCol2">
{{ form.contractNo }}
</a-form-item>
</a-col>
<a-col :span="14">
<a-form-item
label="样单截止时间:"
:label-col="formItemLayout.labelCol1"
:wrapper-col="formItemLayout.wrapperCol1">
{{ form.siCutDate }}
</a-form-item>
</a-col>
<a-col :span="10">
<a-form-item
label="箱使天数:"
:label-col="formItemLayout.labelCol2"
:wrapper-col="formItemLayout.wrapperCol2">
{{ form.detensionFreeDays }}
</a-form-item>
</a-col>
<a-col :span="14">
<a-form-item
label="舱单截止时间:"
:label-col="formItemLayout.labelCol1"
:wrapper-col="formItemLayout.wrapperCol1">
{{ form.manifestCutDate }}
</a-form-item>
</a-col>
<a-col :span="10">
<a-form-item
label="截港时间:"
:label-col="formItemLayout.labelCol2"
:wrapper-col="formItemLayout.wrapperCol2">
{{ form.cyCutoffTime }}
</a-form-item>
</a-col>
<a-col :span="14">
<a-form-item
label="MDGF截止时间"
:label-col="formItemLayout.labelCol1"
:wrapper-col="formItemLayout.wrapperCol1">
{{ formext2.mdgfCutDate }}
</a-form-item>
</a-col>
<a-col :span="10">
<a-form-item
label="VGM截止时间"
:label-col="formItemLayout.labelCol2"
:wrapper-col="formItemLayout.wrapperCol2">
{{ formext2.vgmCutoffTime }}
</a-form-item>
</a-col>
<a-col :span="14">
<a-form-item
label="箱型箱量:"
:label-col="formItemLayout.labelCol1"
:wrapper-col="formItemLayout.wrapperCol1">
{{ form.ctnStat }}
</a-form-item>
</a-col>
<a-col :span="24">
<p class="title"><i class="iconfont icon-chuanfanguanli-chuanfanshenqing"></i>一程</p>
</a-col>
<a-col :span="16">
<a-form-item
label="船名/航次:"
:label-col="formItemLayout.labelCol3"
:wrapper-col="formItemLayout.wrapperCol3">
{{ form.vessel }}/{{ form.voyNo }}
</a-form-item>
</a-col>
<a-col :span="8">
<a-form-item label="ETD" :label-col="formItemLayout.labelCol4" :wrapper-col="formItemLayout.wrapperCol4">
{{ form.etd ? form.etd.substring(0, 11) : '-' }}
</a-form-item>
</a-col>
<a-col :span="16">
<a-form-item label="装货港:" :label-col="formItemLayout.labelCol3" :wrapper-col="formItemLayout.wrapperCol3">
{{ form.portload }}
</a-form-item>
</a-col>
<a-col :span="8">
<a-form-item label="ETA" :label-col="formItemLayout.labelCol4" :wrapper-col="formItemLayout.wrapperCol4">
{{ form.eta ? form.eta.substring(0, 11) : '-' }}
</a-form-item>
</a-col>
<a-col :span="16">
<a-form-item label="卸货港:" :label-col="formItemLayout.labelCol3" :wrapper-col="formItemLayout.wrapperCol3">
{{ form.portDischarge }}
</a-form-item>
</a-col>
<div v-if="form.carriageType == 'TRANSFER_SHIP'">
<a-col :span="24">
<p class="title"><i class="iconfont icon-chuanfanguanli-chuanfanshenqing"></i>二程</p>
</a-col>
<a-col :span="16">
<a-form-item
label="船名/航次:"
:label-col="formItemLayout.labelCol3"
:wrapper-col="formItemLayout.wrapperCol3">
{{ form.secondVessel }}/{{ form.secondVoyno }}
</a-form-item>
</a-col>
<a-col :span="8">
<a-form-item
label="ETD"
:label-col="formItemLayout.labelCol4"
:wrapper-col="formItemLayout.wrapperCol4">
{{ form.secondETD ? form.secondETD.substring(0, 11) : '-' }}
</a-form-item>
</a-col>
<a-col :span="16">
<a-form-item
label="装货港:"
:label-col="formItemLayout.labelCol3"
:wrapper-col="formItemLayout.wrapperCol3">
{{ form.transferPort1 }}
</a-form-item>
</a-col>
<a-col :span="8">
<a-form-item
label="ETA"
:label-col="formItemLayout.labelCol4"
:wrapper-col="formItemLayout.wrapperCol4">
{{ form.secondETA ? form.secondETA.substring(0, 11) : '-' }}
</a-form-item>
</a-col>
<a-col :span="16">
<a-form-item
label="卸货港:"
:label-col="formItemLayout.labelCol3"
:wrapper-col="formItemLayout.wrapperCol3">
{{ form.portDischarge }}
</a-form-item>
</a-col>
</div>
</a-row>
<a-row>
<a-col :span="24">
<p class="title">关联详情</p>
</a-col>
</a-row>
<a-row>
<a-col :span="5">
<a-form-item
label="已生成舱位:"
:label-col="formItemLayout.labelCol5"
:wrapper-col="formItemLayout.wrapperCol5">
{{ form.bookingSlotId ? '是' : '否' }}
</a-form-item>
</a-col>
<a-col :span="4">
<span class="CsSee" v-if="form.bookingSlotId" @click="FnSee"></span>
</a-col>
<a-col :span="5">
<a-form-item
label="已生成订舱:"
:label-col="formItemLayout.labelCol5"
:wrapper-col="formItemLayout.wrapperCol5">
{{ form.bookingOrderId ? '是' : '否' }}
</a-form-item>
</a-col>
<a-col :span="4">
<span class="CsSee" v-if="form.bookingOrderId" @click="FnSee"></span>
</a-col>
<a-col :span="5">
<a-form-item
label="任务状态:"
:label-col="formItemLayout.labelCol5"
:wrapper-col="formItemLayout.wrapperCol5">
{{ form.taskStatus == 'Complete' ? '已完成' : '-' }}
</a-form-item>
</a-col>
</a-row>
<a-row class="LeftBottomBox" type="flex" justify="space-around" align="middle">
<a-col :span="24">
<p class="title">关键信息</p>
</a-col>
<div class="unitBox">
<p
v-for="(item, index) in form.keywords"
:key="index"
class="unit"
:style="{
background: item.background,
color: Rcolor(item.background),
border: `1px solid ${Rcolor(item.background)}`
}">
<i :class="item.icon" class="iconfont"></i>{{ item.name }}
</p>
</div>
</a-row>
<a-row v-if="compareResultList.length>0">
<div style="height: 30px;border: 1px solid red;padding: 0 10px;color: black;font-size: 13px;line-height: 30px;width: 45%;margin-left: 7px;margin-bottom: 10px;">
<a-icon type="info-circle" theme="filled" style="font-size: 15px;color: red;margin-right: 20px;" />
<span @click="compareResultFlag=true" style="cursor: pointer;text-decoration: underline;">订舱变更比对BC存在差异</span>
差异总数:{{ compareResultList.length }}
</div>
</a-row>
<a-row 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 type="primary" @click="handleSendMail">
发送邮件
</a-button>
</a-col>
</a-row>
</a-form>
</a-col>
<a-col :span="pdfUrl ? 13 : 0" class="rightBox">
<a-radio-group v-model="fileCategory" button-style="solid" @change="ChangeFileRadio" class="rightBoxRadio">
<a-radio-button value="BC_CANCEL">BC文件</a-radio-button>
<a-radio-button value="BC_CANCEL_NOTICE">BC更改文件</a-radio-button>
</a-radio-group>
<iframe width="100%" height="690" frameborder="0" scrolling="auto" :src="pdfUrl"></iframe>
</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 {
GetInfoByTaskId,
GetProjectList,
CancelTaskBC,
DownloadFile,
TransferTask,
CreateBookingAndSlot,
CompleteTask,
TaskManageBCSendEmai1,
TaskManageBCGetCompareResult
} 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: '',
customerByList: [],
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: '',
form: {
ctnList: [],
fileList: []
},
compareResultList: [],
formext2: {
ctnList: []
},
href: '',
spinning: false,
bookingServiceItem: [],
pdfUrl: '',
UserList: [],
fileCategory: 'BC_CANCEL'
}
},
computed: {
...mapGetters([
'userInfo'
])
},
watch: {
'$route': {
immediate: true,
handler(newValue, oldValue) {
if (newValue.path === '/commontaskmanage/Cancellation') {
this.getList()
}
}
}
},
mounted() {
this.getList()
this.getTaskManageBCGetCompareResult()
},
methods: {
copyText(text) {
const inputDom = document.createElement('textarea')
document.body.appendChild(inputDom)
inputDom.value = text
inputDom.select()
inputDom.focus()
document.execCommand('copy')
document.body.removeChild(inputDom)
this.$message.success('复制成功')
},
ChangeFileRadio() {
this.spinning = true
const ApiData = {
taskPKId: this.$route.query.taskPKId
}
ApiData.fileCategory = this.fileCategory
DownloadFile(ApiData).then(res => {
console.log(res, res.data)
if (res.byteLength > 150) {
this.pdfUrl = window.URL.createObjectURL(new Blob([res], { type: 'application/pdf;charset=utf-8' }))
}
this.spinning = false
})
},
getTaskManageBCGetCompareResult() {
TaskManageBCGetCompareResult({ taskPKId: this.$route.query.taskPKId }).then(res => {
if (res.success) {
this.compareResultList = res.data
} else {
this.$message.error(res.message)
}
})
},
SearchCustomer(e) {
DjyCustomerSuggest({ keyword: e, type: 'consignor' }).then(res => {
this.CustomerList = res.data.rows
})
},
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)
}
})
},
ChangeCustomerList(e) {
this.customerByList.forEach(item => {
if (item.id == e) {
this.CreateData.customerContactName = item.name
}
})
},
SearchUser(e) {
console.log(e)
// consignor
// booking_agent
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
}
})
},
FnSee() {
this.$router.push({ path: '/BookingDetail?id=' + this.form.bookingOrderId })
},
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)
}
})
},
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)
}
})
},
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)
}
})
},
saveService(data) {
data.isYield = !data.isYield
},
getList() {
this.spinning = true
const ApiData = {
taskPKId: this.$route.query.taskPKId
}
GetInfoByTaskId(ApiData).then(res => {
console.log(res.data)
if (res.data.succ) {
this.form = res.data.ext
if (this.form.fileList) {
this.isPdf = this.form.fileList[0].fileType
}
if (res.data.ext2) {
this.formext2 = res.data.ext2
} else {
this.formext2 = {}
}
this.$forceUpdate()
} else {
this.$message.error(res.data.msg)
this.form = {}
this.formext2 = {}
}
this.ChangeFileRadio()
})
GetProjectList().then(res => {
res.data.forEach(item => {
item.isYield = false
})
this.bookingServiceItem = res.data
})
GetSysUserPage().then(res => {
this.UserList = res.data
})
DjyCustomerSuggest({ keyword: '', type: 'consignor' }).then(res => {
this.CustomerList = res.data.rows
})
},
OpenModal() {
this.CreateData = {
generateMethod: 'GEN_BOOKING_SLOT'
}
this.UserList.forEach(item => {
if (item.id == this.userInfo.id) {
this.CreateData.opId = item.id
this.CreateData.opName = item.name
}
})
this.visible = true
},
OpenUser() {
this.UserId = ''
this.UserVisible = true
},
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
},
Rcolor(hexColor) {
const hex = hexColor.replace('#', '').toLowerCase()
const red = parseInt(hex.substring(0, 2), 16) - 90
const green = parseInt(hex.substring(2, 4), 16) - 90
const blue = parseInt(hex.substring(4, 6), 16) - 50
return `rgb(${red}, ${green}, ${blue})`
}
}
}
</script>
<style lang="less" scoped>
// @import url('../../BookingLedger/detail/index.less');
@import url('../../BookingLedger/detail/style/rightContent.less');
.modaltitle {
border-bottom: 1px solid #000;
width: 5rem;
padding: 0.2rem 0.5rem;
margin-top: 1rem;
}
.icon-chuanfanguanli-chuanfanshenqing {
color: '#02A7F0';
}
.Main {
width: 98%;
margin: 0 auto;
.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,425 @@
<template>
<div>
<a-card :bordered="false" :bodyStyle="tstyle">
<div class="table-page-search-wrapper" :class="advanced ? 'Open' : 'Close'">
<a-form :model="form" :label-col="{ span: 8 }" :wrapper-col="{ span: 16 }">
<a-row>
<a-col :span="6">
<a-form-item label="邮箱主题">
<a-input v-model="form.mailSubject" allow-clear placeholder="请输入邮箱主题" />
</a-form-item>
</a-col>
</a-row>
</a-form>
</div>
</a-card>
<a-card :bordered="false">
<div style="margin-bottom: 10px;display: flex;justify-content: space-between;">
<div>
<a-button type="primary" @click="handleAdd"></a-button>
</div>
<div>
<a-button type="primary" @click="FnGetData"></a-button>
<a-button style="margin-left: 8px" @click="init"></a-button>
</div>
</div>
<vxe-table
:data="loadData"
stripe
resizable
round
:loading="loading"
ref="xTable1"
empty-text="没有更多数据了!">
<vxe-column type="checkbox" width="60"></vxe-column>
<vxe-column
v-for="item in columns"
:key="`${item.dataIndex}3`"
:field="item.dataIndex"
:min-width="item.width"
:title="item.title"
:fixed="item.fixed"
:align="item.align">
<template #default="{ row }">
<div v-if="item.dataIndex == 'isAdvancedPay'">
<span v-if="row.isAdvancedPay"></span>
<span v-else></span>
</div>
<div v-else-if="item.dataIndex == 'isInvoice'">
<span v-if="row.isInvoice"></span>
<span v-else></span>
</div>
<span v-else>{{ row[item.dataIndex] }}</span>
</template>
</vxe-column>
<vxe-column title="操作" fixed="right" width="120" align="center">
<template #default="{ row }">
<a-icon style="margin:0 12px" @click="handleEdit(row)" type="form" :style="{ color: '#13c2c2' }" />
<a-popconfirm
title="请确认删除?"
ok-text="是"
cancel-text="否"
@confirm="e => {
confirm(e, row.id)
}
">
<a-icon type="delete" :style="{ color: '#13c2c2' }" />
</a-popconfirm>
</template>
</vxe-column>
</vxe-table>
<vxe-pager
:loading="loading"
:current-page="queryParam.pageNo"
:page-size="queryParam.pageSize"
:total="queryParam.totalResult"
:layouts="['PrevPage', 'JumpNumber', 'NextPage', 'FullJump', 'Sizes', 'Total']"
@page-change="handlePageChange">
</vxe-pager>
</a-card>
<a-modal @ok="handleSave" width="1000px" @cancel="visible = false" :visible="visible">
<a-spin :spinning="formLoad">
<a-form-model :rules="rules" ref="addForm" :model="addForm" :label-col="labelCol" :wrapper-col="wrapperCol">
<a-row>
<a-col :span="12">
<a-form-model-item label="往来单位">
<a-input v-model="addForm.feeName" />
</a-form-model-item>
</a-col>
</a-row>
<a-row>
<a-col :span="12">
<a-form-model-item label="费用名称">
<a-input v-model="addForm.feeName" />
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="标准">
<a-input v-model="addForm.unit" />
</a-form-model-item>
</a-col>
</a-row>
<a-row>
<a-col :span="12">
<a-form-model-item label="币别">
<a-input v-model="addForm.currency" />
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="单价">
<a-input-number style="width: 100%;" v-model="addForm.unitPrice" :precision="2" :min="0" :step="0.1" />
</a-form-model-item>
</a-col>
</a-row>
<a-row>
<a-col :span="12">
<a-form-model-item label="汇率">
<a-input-number style="width: 100%;" v-model="addForm.exchangeRate" :precision="2" :min="0" :step="0.1" />
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="税率">
<a-input-number style="width: 100%;" v-model="addForm.taxRate" :precision="2" :min="0" :step="0.1" />
</a-form-model-item>
</a-col>
</a-row>
<a-row>
<a-col :span="12">
<a-form-model-item label="发票税率">
<a-input-number style="width: 100%;" v-model="addForm.accTaxRate" :precision="2" :min="0" :step="0.1" />
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="FRT">
<a-input v-model="addForm.feeFrt" />
</a-form-model-item>
</a-col>
</a-row>
<a-row>
<a-col :span="12">
<a-form-model-item label="是否开发票">
<a-select v-model="addForm.isInvoice" style="width: 100%" >
<a-select-option value="true">
</a-select-option>
<a-select-option value="false">
</a-select-option>
</a-select>
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item label="是否垫付">
<a-select v-model="addForm.isAdvancedPay" style="width: 100%" >
<a-select-option value="true">
</a-select-option>
<a-select-option value="false">
</a-select-option>
</a-select>
</a-form-model-item>
</a-col>
</a-row>
<a-row>
<a-col :span="12">
<a-form-model-item label="备注">
<a-input v-model="addForm.remark" />
</a-form-model-item>
</a-col>
</a-row>
</a-form-model>
</a-spin>
</a-modal>
</div>
</template>
<script>
import {
FeeCustTemplatePage,
FeeCustTemplateSave,
FeeCustTemplateDelete
} from '@/api/modular/main/mailSetting'
import columnSetting from '@/components/tableColumnSetting'
export default {
components: {
columnSetting
},
data() {
return {
TypeData: [],
// /
advanced: false,
visible: false,
loading: false,
selectedRowKeys: [],
againVisible: false,
fileList: [],
setVisible: false,
setVisible1: false,
addSettingFlag: false,
formLoad: false,
againLoad: false,
labelCol: { span: 4 },
wrapperCol: { span: 14 },
addForm: {
},
queryParam: {
pageNo: 1,
pageSize: 10,
totalResult: 1
},
parserList: [],
form: {},
mailHtml: '',
ColumnsQuery: [],
columns: [
{
title: '费用名称',
align: 'center',
width: '200',
dataIndex: 'feeName'
},
{
title: '标准',
align: 'center',
width: '150',
dataIndex: 'unit'
},
{
title: '币别',
align: 'center',
width: '80',
dataIndex: 'currency'
},
{
title: '单价',
align: 'center',
width: '50',
dataIndex: 'unitPrice'
},
{
title: '汇率',
align: 'center',
width: '50',
dataIndex: 'exchangeRate'
},
{
title: '税率',
align: 'center',
width: '50',
dataIndex: 'taxRate'
},
{
title: '发票税率',
align: 'center',
width: '80',
dataIndex: 'accTaxRate'
},
{
title: 'FRT',
align: 'center',
width: '100',
dataIndex: 'feeFrt'
},
{
title: '垫付',
align: 'center',
width: '50',
dataIndex: 'isAdvancedPay'
},
{
title: '不开发票',
align: 'center',
width: '50',
dataIndex: 'isInvoice'
},
{
title: '备注',
align: 'center',
width: '150',
dataIndex: 'remark'
}
],
rules: {
emailAccount: [{ required: true, message: '请输入邮箱账号', trigger: 'blur' }],
password: [{ required: true, message: '请输入邮箱密码', trigger: 'blur' }],
useIMAP: [{ required: true, message: '请选择接收服务器类型', trigger: 'change' }],
smtpServer: [{ required: true, message: '请输入发件服务器', trigger: 'change' }],
receiveServer: [{ required: true, message: '请输入收件服务器', trigger: 'change' }]
},
tstyle: { 'padding-bottom': '0px', 'margin-bottom': '10px' },
loadData: []
}
},
created() { },
mounted() {
this.FnGetData()
},
methods: {
toggleAdvanced() {
this.advanced = !this.advanced
},
onSelectChange(selectedRowKeys) {
this.selectedRowKeys = selectedRowKeys;
},
handleEdit(row) {
if (row.isAdvancedPay) {
row.isAdvancedPay = 'true'
} else {
row.isAdvancedPay = 'false'
}
if (row.isInvoice) {
row.isInvoice = 'true'
} else {
row.isInvoice = 'false'
}
this.addForm = row
this.visible = true
},
handleSave() {
this.$refs.addForm.validate(valid => {
if (valid) {
this.formLoad = true
FeeCustTemplateSave(this.addForm).then(res => {
if (res.success) {
this.$message.success('保存成功')
this.FnGetData()
this.visible = false
} else {
this.$message.error(res.message)
}
this.formLoad = false
})
} else {
return false;
}
});
},
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
this.form.pageSize = this.queryParam.pageSize
FeeCustTemplatePage(this.form).then(res => {
if (res.success) {
this.loadData = res.data.rows
this.queryParam.totalResult = res.data.totalRows
}
this.loading = false
})
},
confirm(e, data) {
this.handleDelete(data)
},
handleDelete(record) {
FeeCustTemplateDelete([record]).then(res => {
if (res.success) {
this.$message.success('删除成功')
this.FnGetData()
} else {
this.$message.error(`删除失败,${res.message}`)
}
})
},
handleAdd() {
this.visible = true
this.addForm = {
}
}
}
}
</script>
<style lang="less" scoped>
/deep/ .ant-descriptions-item-label {
font-weight: bold;
}
.table-operator {
margin-bottom: 18px;
}
.Close {
height: 45px;
overflow: hidden;
}
.vxe-table--render-default .vxe-body--row.row--stripe {
background: #f5f9fe;
}
.ant-card-body {
padding-top: 10px;
}
.inline {
position: relative;
}
.inline-right {
position: absolute;
top: 6px;
right: 25px;
}
.look-item {
display: flex;
align-items: center;
margin-bottom: 5px;
.look-left {
font-weight: bold;
display: inline-block;
margin-right: 10px;
width: 80px;
color: black;
text-align: right;
}
}
</style>
Loading…
Cancel
Save