引入优化

zth
lijingjia 2 weeks ago
commit 9fed2fcd3c

@ -145,7 +145,7 @@
cursor: pointer;
transition: opacity 0.4s;
::v-deep(svg) {
:deep(svg) {
margin: auto;
}
}

@ -144,7 +144,7 @@
display: none;
}
::v-deep(.ant-pagination-disabled) {
:deep(.ant-pagination-disabled) {
display: inline-block !important;
}

@ -1,5 +1,5 @@
<template>
<div >
<div>
<BasicTable class="ds-table" @register="registerTable" @row-dbClick="handledbclick">
<template #toolbar> </template>
<template v-slot:bodyCell="{ column, record }">
@ -16,167 +16,159 @@
<span>{{ record.shipRateTotalCurrency }} {{ record.shipRateTotalAmount }}</span>
</template>
<template v-if="column.dataIndex == 'remainCtnsNum'">
<span>{{ record.totalOrders - record.useNum }}</span>
<span>{{ record.totalOrders - record.useNum }}</span>
</template>
<template v-if="column.dataIndex == 'isRecvBC'">
<BulbFilled
style="color: green; font-size: 16px"
:title="record.lstRecvBCDate"
v-if="record.isRecvBC"
/>
<BulbFilled style="color: green; font-size: 16px" :title="record.lstRecvBCDate" v-if="record.isRecvBC" />
</template>
<template v-if="column.dataIndex == 'isRecvBKCancel'">
<BulbFilled
style="color: red; font-size: 16px"
:title="record.lstRecvBCDate"
v-if="record.isRecvBKCancel"
/>
<BulbFilled style="color: red; font-size: 16px" :title="record.lstRecvBCDate" v-if="record.isRecvBKCancel" />
</template>
<template v-if="column.dataIndex == 'isShipperOwned'">
<CheckCircleFilled v-if="record.isShipperOwned" style="color: green; font-size: 16px" />
</template>
<template v-if="column.dataIndex === 'action'">
<a @click="handleRefsh(record)" ></a>
<a @click="handleRefsh(record)"></a>
</template>
</template>
</BasicTable>
</div>
</template>
<script lang="ts" setup>
import { BasicTable, useTable, TableAction } from '/@/components/Table'
import { BookingSlotPageStock,BookingSlotRefreshStock } from './api'
import { columns, searchFormSchema, FeeStatus } from './columns'
import { BulbFilled, CheckCircleFilled } from '@ant-design/icons-vue'
import { useModal } from '/@/components/Modal'
import { formatParams } from '/@/hooks/web/common'
import { useMessage } from '../../../hooks/web/useMessage'
import { BasicTable, useTable, TableAction } from '/@/components/Table'
import { BookingSlotPageStock, BookingSlotRefreshStock } from './api'
import { columns, searchFormSchema, FeeStatus } from './columns'
import { BulbFilled, CheckCircleFilled } from '@ant-design/icons-vue'
import { useModal } from '/@/components/Modal'
import { formatParams } from '/@/hooks/web/common'
import { useMessage } from '../../../hooks/web/useMessage'
const { createMessage } = useMessage()
const [registerModal, { openModal }] = useModal()
const [registerTable, { reload, getForm, getPaginationRef, getSelectRows, setProps }] = useTable({
title: '',
api: async (p) => {
const res: API.DataResult = await BookingSlotPageStock(p)
return new Promise((resolve) => {
resolve({
data: res.data,
total: res.count,
})
const [registerModal, { openModal }] = useModal()
const [registerTable, { reload, getForm, getPaginationRef, getSelectRows, setProps }] = useTable({
title: '',
api: async (p) => {
const res: API.DataResult = await BookingSlotPageStock(p)
return new Promise((resolve) => {
resolve({
data: res.data,
total: res.count,
})
},
beforeFetch: (p) => {
return formatParams(p)
},
columns,
formConfig: {
labelWidth: 120,
schemas: searchFormSchema,
},
isTreeTable: false,
pagination: true,
striped: true,
useSearchForm: true,
showTableSetting: true,
bordered: true,
showIndexColumn: true,
indexColumnProps: {
width: 60,
},
canResize: true,
resizeHeightOffset: 35,
immediate: true,
})
},
beforeFetch: (p) => {
return formatParams(p)
},
columns,
formConfig: {
labelWidth: 120,
schemas: searchFormSchema,
},
isTreeTable: false,
pagination: true,
striped: true,
useSearchForm: true,
showTableSetting: true,
bordered: true,
showIndexColumn: true,
indexColumnProps: {
width: 60,
},
canResize: true,
resizeHeightOffset: 35,
immediate: true,
actionColumn: {
width: 50,
title: '操作',
dataIndex: 'action',
fixed: 'right',
},
})
function handledbclick(record) {
console.log('双击')
}
function handleAdd() {
openModal(true, 123)
}
function handleRefsh(row){
const data = {
vessel: row.vessel,
voyno: row.voyno,
contracT_NO: row.contracT_NO,
portloadid: row.portloadid,
portdischargeid: row.portdischargeid,
bookinG_SLOT_TYPE: row.bookinG_SLOT_TYPE,
carrierid: row.carrierid
}
setProps({ loading: true })
BookingSlotRefreshStock(data).then(res => {
if (res.succeeded) {
createMessage.success('刷新成功')
reload()
} else {
createMessage.error(res.message)
}
setProps({ loading: false })
})
actionColumn: {
width: 50,
title: '操作',
dataIndex: 'action',
fixed: 'right',
},
})
function handledbclick(record) {
console.log('双击')
}
function handleAdd() {
openModal(true, 123)
}
function handleRefsh(row) {
const data = {
vessel: row.vessel,
voyno: row.voyno,
contracT_NO: row.contracT_NO,
portloadid: row.portloadid,
portdischargeid: row.portdischargeid,
bookinG_SLOT_TYPE: row.bookinG_SLOT_TYPE,
carrierid: row.carrierid
}
setProps({ loading: true })
BookingSlotRefreshStock(data).then(res => {
if (res.succeeded) {
createMessage.success('刷新成功')
reload()
} else {
createMessage.error(res.message)
}
setProps({ loading: false })
})
}
</script>
<style lang="less" scoped>
:deep(.ant-form-item) {
margin-bottom: 10px !important;
}
:deep(.ant-form-item) {
margin-bottom: 10px !important;
}
:deep(.ant-card-body) {
padding-bottom: 0px !important;
}
:deep(.ant-card-body) {
padding-bottom: 0px !important;
}
.table-operator {
margin-bottom: 18px;
}
.table-operator {
margin-bottom: 18px;
}
.Close {
height: 45px;
overflow: hidden;
}
.Close {
height: 45px;
overflow: hidden;
}
.vxe-table--render-default .vxe-body--row.row--stripe {
background: #f5f9fe;
}
.vxe-table--render-default .vxe-body--row.row--stripe {
background: #f5f9fe;
}
.ant-card-body {
padding-top: 10px;
}
.ant-card-body {
padding-top: 10px;
}
.inline {
position: relative;
}
.inline {
position: relative;
}
.inline-right {
position: absolute;
top: 6px;
right: 25px;
}
.inline-right {
position: absolute;
top: 6px;
right: 25px;
}
.change {
display: flex;
justify-content: center;
margin-top: 25px;
.change {
display: flex;
justify-content: center;
margin-top: 25px;
div {
width: 120px;
height: 50px;
background-color: rgb(247, 249, 250);
border: 1px solid rgb(247, 249, 250);
color: rgb(105, 102, 102);
line-height: 50px;
text-align: center;
cursor: pointer;
transition: box-shadow 0.3s, background-color 0.3s;
margin-right: 10px;
}
div {
width: 120px;
height: 50px;
background-color: rgb(247, 249, 250);
border: 1px solid rgb(247, 249, 250);
color: rgb(105, 102, 102);
line-height: 50px;
text-align: center;
cursor: pointer;
transition: box-shadow 0.3s, background-color 0.3s;
margin-right: 10px;
}
div:hover {
border: 1px solid #d1cfcf;
}
div:hover {
border: 1px solid #d1cfcf;
}
}
</style>

@ -283,7 +283,7 @@
</a-form-item>
</a-modal>
<a-modal @ok="handleSaveRoll" title="舱位延迟" width="600px" @cancel="rollFlag = false" :visible="rollFlag">
<a-spin :spinning="rollLoad" >
<a-spin :spinning="rollLoad">
<BasicForm @register="registerFormRoll" />
</a-spin>
</a-modal>
@ -294,7 +294,7 @@ import { GetCtnSelectList, GetClientListByCode } from '/@/api/common'
import DsFile from '/@/components/File/index.vue'
import { ref, nextTick, onMounted, watch } from 'vue'
import {
BookingSlotSave, BookingSlotDetail, SaveRolling,GetRollingList
BookingSlotSave, BookingSlotDetail, SaveRolling, GetRollingList
} from '../api'
import {
GetCustomerServiceList, GetSaleList, GetVouchingClerkList
@ -740,15 +740,15 @@ function getDetail() {
}
loading.value = false
})
GetRollingList({ slotId: id.value }).then(res=>{
if(res.succeeded){
GetRollingList({ slotId: id.value }).then(res => {
if (res.succeeded) {
setTableData(res.data)
}
})
}
const rollLoad = ref(false)
function handleSaveRoll(){
if(!form.value.id){
function handleSaveRoll() {
if (!form.value.id) {
createMessage.error('请先保存数据')
return false
}
@ -757,13 +757,13 @@ function handleSaveRoll(){
}
data.slotId = form.value.id
rollLoad.value = true
SaveRolling(data).then(res=>{
if(res.succeeded){
SaveRolling(data).then(res => {
if (res.succeeded) {
createMessage.success('保存成功')
getDetail()
}
rollLoad.value = false
}).catch(()=>{
}).catch(() => {
rollLoad.value = false
})
}

@ -10,17 +10,12 @@
<span class="iconfont icon-shujuyingshe"></span>
合票
</a-button>
<a-upload
:customRequest="customRequest"
:multiple="false"
<a-upload :customRequest="customRequest" :multiple="false"
accept="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel"
:showUploadList="false"
name="file"
>
:showUploadList="false" name="file">
<a-button size="mini" type="link">
<span class="iconfont icon-a-17Fdaoru"></span>
导入</a-button
>
导入</a-button>
</a-upload>
<a-button type="link" @click="handleSuport" :loading="loadingExport" size="mini">
<span class="iconfont icon-jiantouxia"></span>
@ -36,12 +31,7 @@
<span class="iconfont icon-jiahao2fill"></span>
新增
</a-button>
<a-popconfirm
title="确定删除吗?"
ok-text="确定"
cancel-text="取消"
@confirm="handleDeleteAll"
>
<a-popconfirm title="确定删除吗?" ok-text="" cancel-text="" @confirm="handleDeleteAll">
<a-button type="link" size="mini">
<span class="iconfont icon-shanchu2"></span>
删除
@ -67,102 +57,67 @@
<span>{{ record.shipRateTotalCurrency }} {{ record.shipRateTotalAmount }}</span>
</template>
<template v-if="column.dataIndex == 'iS_CANCELLATION'">
<BulbOutlined
v-if="record.iS_CANCELLATION"
style="color: red; font-size: 16px"
:title="record.cancellatioN_DATE"
/>
<BulbOutlined v-if="record.iS_CANCELLATION" style="color: red; font-size: 16px"
:title="record.cancellatioN_DATE" />
</template>
<template v-if="column.dataIndex == 'isRecvBC'">
<BulbFilled
style="color: green; font-size: 16px"
:title="record.lstRecvBCDate"
v-if="record.isRecvBC"
/>
<BulbFilled style="color: green; font-size: 16px" :title="record.lstRecvBCDate" v-if="record.isRecvBC" />
</template>
<template v-if="column.dataIndex == 'labelList'">
<div @click="handleLabelBind(record)" style="min-width: 200px; min-height: 15px">
<a-tag
style="color: black !important; font-weight: bold; cursor: pointer"
:color="item.color"
@click="handleLabelBind(record)"
v-for="(item, index) in record.labelList"
:key="index"
>{{ item.name }}</a-tag
>
<a-tag style="color: black !important; font-weight: bold; cursor: pointer" :color="item.color"
@click="handleLabelBind(record)" v-for="(item, index) in record.labelList" :key="index">{{ item.name
}}</a-tag>
</div>
</template>
<template v-if="column.dataIndex == 'isRecvBKCancel'">
<BulbFilled
style="color: red; font-size: 16px"
:title="record.lstRecvBCDate"
v-if="record.isRecvBKCancel"
/>
<BulbFilled style="color: red; font-size: 16px" :title="record.lstRecvBCDate" v-if="record.isRecvBKCancel" />
</template>
<template v-if="column.dataIndex == 'isShipperOwned'">
<CheckCircleFilled v-if="record.isShipperOwned" style="color: green; font-size: 16px" />
</template>
<template v-if="column.key === 'action'">
<TableAction
:actions="[
{
icon: 'clarity:note-edit-line',
tooltip: '编辑',
onClick: () => {
handleEdit(record)
},
<TableAction :actions="[
{
icon: 'clarity:note-edit-line',
tooltip: '编辑',
onClick: () => {
handleEdit(record)
},
{
icon: 'ant-design:delete-outlined',
tooltip: '删除',
popConfirm: {
title: '是否要删除?',
okText: '是',
cancelText: '否',
confirm: handleDelete.bind(null, record),
},
},
{
icon: 'ant-design:delete-outlined',
tooltip: '删除',
popConfirm: {
title: '是否要删除?',
okText: '是',
cancelText: '否',
confirm: handleDelete.bind(null, record),
},
{
icon: 'ant-design:profile-outlined',
tooltip: '生成订舱',
onClick: () => {
handleOpenSlot(record)
},
},
{
icon: 'ant-design:profile-outlined',
tooltip: '生成订舱',
onClick: () => {
handleOpenSlot(record)
},
]"
/>
},
]" />
</template>
</template>
</BasicTable>
<a-modal
width="800px"
@ok="handleSubmitLabel"
:visible="visible"
title="分配标签"
@cancel="visible = false"
>
<a-modal width="800px" @ok="handleSubmitLabel" :visible="visible" title="分配标签" @cancel="visible = false">
<a-spin :spinning="labelLoad">
<div class="content">
<div
class="items"
v-for="(serive, sindex) in labelList"
:key="sindex"
@click="handleClickLable(sindex)"
:class="{ active: serive.isActive }"
>
<div class="items" v-for="(serive, sindex) in labelList" :key="sindex" @click="handleClickLable(sindex)"
:class="{ active: serive.isActive }">
{{ serive.name }}
</div>
</div>
</a-spin>
</a-modal>
<generationModal ref="generation" @register="registerModal"> </generationModal>
<a-modal
title="多提单号查询"
:width="400"
:visible="moreFlag"
@ok="moreNumSubmit"
@cancel="moreFlag = false"
>
<a-modal title="多提单号查询" :width="400" :visible="moreFlag" @ok="moreNumSubmit" @cancel="moreFlag = false">
<div>
<a-textarea v-model:value="moreNumVal" style="height: 200px" />
</div>
@ -170,315 +125,315 @@
</div>
</template>
<script lang="ts" setup name="舱位台账">
import { BasicTable, useTable, TableAction } from '/@/components/Table'
import {
BookingSlotPage,
BookingLabelList,
BookingLabelBind,
GetMergeList,
ImportSlotFromFile,
PrintOrder,
BookingSlotDelete,
} from './api'
import { reactive, ref, h, onMounted } from 'vue'
import { columns, searchFormSchema, FeeStatus } from './columns'
import { BulbFilled, CheckCircleFilled, BulbOutlined } from '@ant-design/icons-vue'
import { useModal } from '/@/components/Modal'
import generationModal from '../generation/index.vue'
import { formatParams } from '/@/hooks/web/common'
import { useGo } from '/@/hooks/web/usePage'
import { useOptionsStore } from '/@/store/modules/options'
import { useMessage } from '../../../hooks/web/useMessage'
const { createMessage } = useMessage()
const optionsStore = useOptionsStore()
const go = useGo()
const queryStr = ref({})
const [registerModal, { openModal }] = useModal()
const [
registerTable,
{ reload, setLoading, getForm, getSelectRows, setProps, setSelectedRowKeys },
] = useTable({
title: '',
api: async (p) => {
const res: API.DataResult = await BookingSlotPage(p)
return new Promise((resolve) => {
const arr = res.data
for (let i = arr.length - 1; i >= 0; i--) {
if (arr[i].bookingSlotSaleInfoList && arr[i].bookingSlotSaleInfoList.length > 1) {
arr[i].bookingSlotSaleInfoList.forEach((ite, index) => {
const data = JSON.parse(JSON.stringify(arr[i]))
delete data.bookingSlotSaleInfoList
data.isRemark = true
data.dzmarkLoading = false
if (index === 0) {
data.isSPan = arr[i].bookingSlotSaleInfoList.length
} else {
data.isSPan = 0
}
arr.push({
...ite,
...data,
})
import { BasicTable, useTable, TableAction } from '/@/components/Table'
import {
BookingSlotPage,
BookingLabelList,
BookingLabelBind,
GetMergeList,
ImportSlotFromFile,
PrintOrder,
BookingSlotDelete,
} from './api'
import { reactive, ref, h, onMounted } from 'vue'
import { columns, searchFormSchema, FeeStatus } from './columns'
import { BulbFilled, CheckCircleFilled, BulbOutlined } from '@ant-design/icons-vue'
import { useModal } from '/@/components/Modal'
import generationModal from '../generation/index.vue'
import { formatParams } from '/@/hooks/web/common'
import { useGo } from '/@/hooks/web/usePage'
import { useOptionsStore } from '/@/store/modules/options'
import { useMessage } from '../../../hooks/web/useMessage'
const { createMessage } = useMessage()
const optionsStore = useOptionsStore()
const go = useGo()
const queryStr = ref({})
const [registerModal, { openModal }] = useModal()
const [
registerTable,
{ reload, setLoading, getForm, getSelectRows, setProps, setSelectedRowKeys },
] = useTable({
title: '',
api: async (p) => {
const res: API.DataResult = await BookingSlotPage(p)
return new Promise((resolve) => {
const arr = res.data
for (let i = arr.length - 1; i >= 0; i--) {
if (arr[i].bookingSlotSaleInfoList && arr[i].bookingSlotSaleInfoList.length > 1) {
arr[i].bookingSlotSaleInfoList.forEach((ite, index) => {
const data = JSON.parse(JSON.stringify(arr[i]))
delete data.bookingSlotSaleInfoList
data.isRemark = true
data.dzmarkLoading = false
if (index === 0) {
data.isSPan = arr[i].bookingSlotSaleInfoList.length
} else {
data.isSPan = 0
}
arr.push({
...ite,
...data,
})
arr.splice(i, 1)
}
if (arr[i].bookingSlotSaleInfoList && arr[i].bookingSlotSaleInfoList.length == 1) {
arr[i].op = arr[i].bookingSlotSaleInfoList[0].op
arr[i].customerName = arr[i].bookingSlotSaleInfoList[0].customerName
arr[i].custService = arr[i].bookingSlotSaleInfoList[0].custService
arr[i].saleTime = arr[i].bookingSlotSaleInfoList[0].saleTime
arr[i].sellingPrice = arr[i].bookingSlotSaleInfoList[0].sellingPrice
arr[i].goodsName = arr[i].bookingSlotSaleInfoList[0].goodsName
arr[i].shipper = arr[i].bookingSlotSaleInfoList[0].shipper
arr[i].sale = arr[i].bookingSlotSaleInfoList[0].sale
arr[i].business = arr[i].bookingSlotSaleInfoList[0].business
arr[i].doc = arr[i].bookingSlotSaleInfoList[0].doc
}
arr[i].isRemark = true
arr[i].dzmarkLoading = false
})
arr.splice(i, 1)
}
setProps({
showIndexColumn: false,
}),
resolve({ data: arr, total: res.count })
optionsStore.getOptionsByCode('GetClientPortSelectList')
})
},
beforeFetch: (p) => {
queryStr.value = formatParams(p)
return formatParams(p)
},
columns,
formConfig: {
labelWidth: 120,
schemas: searchFormSchema,
useAdvancedSearch: true,
},
isTreeTable: false,
pagination: true,
striped: true,
useSearchForm: true,
showTableSetting: true,
bordered: true,
showIndexColumn: true,
rowKey: 'id',
indexColumnProps: {
width: 60,
},
canResize: true,
resizeHeightOffset: 35,
immediate: true,
})
const generation = ref('')
function handleOpenSlot(row) {
openModal(true, { type: 'cabin', row: row })
}
function handleRowclick(record, index, event) {
console.log(record, index, event)
}
function handledbclick(record) {
go(`/CabinManagementDetail?type=edit&id=${record.id}`)
}
function handleDelete(row) {
setLoading(true)
BookingSlotDelete([row.id]).then((res) => {
if (res.succeeded) {
reload()
} else {
createMessage.error(res.message)
if (arr[i].bookingSlotSaleInfoList && arr[i].bookingSlotSaleInfoList.length == 1) {
arr[i].op = arr[i].bookingSlotSaleInfoList[0].op
arr[i].customerName = arr[i].bookingSlotSaleInfoList[0].customerName
arr[i].custService = arr[i].bookingSlotSaleInfoList[0].custService
arr[i].saleTime = arr[i].bookingSlotSaleInfoList[0].saleTime
arr[i].sellingPrice = arr[i].bookingSlotSaleInfoList[0].sellingPrice
arr[i].goodsName = arr[i].bookingSlotSaleInfoList[0].goodsName
arr[i].shipper = arr[i].bookingSlotSaleInfoList[0].shipper
arr[i].sale = arr[i].bookingSlotSaleInfoList[0].sale
arr[i].business = arr[i].bookingSlotSaleInfoList[0].business
arr[i].doc = arr[i].bookingSlotSaleInfoList[0].doc
}
arr[i].isRemark = true
arr[i].dzmarkLoading = false
}
setLoading(false)
setProps({
showIndexColumn: false,
}),
resolve({ data: arr, total: res.count })
optionsStore.getOptionsByCode('GetClientPortSelectList')
})
}
const labelIdArray = ref([])
const labelList = ref([]) as any
const labelLoad = ref(false)
const visible = ref(false)
function handleLabel() {
const select = getSelectRows()
const pkIdArr = select.map((item, index) => {
return item.id
})
if (pkIdArr.length === 0) {
createMessage.error('请选择要分配的数据')
return false
},
beforeFetch: (p) => {
queryStr.value = formatParams(p)
return formatParams(p)
},
columns,
formConfig: {
labelWidth: 120,
schemas: searchFormSchema,
useAdvancedSearch: true,
},
isTreeTable: false,
pagination: true,
striped: true,
useSearchForm: true,
showTableSetting: true,
bordered: true,
showIndexColumn: true,
rowKey: 'id',
indexColumnProps: {
width: 60,
},
canResize: true,
resizeHeightOffset: 35,
immediate: true,
})
const generation = ref('')
function handleOpenSlot(row) {
openModal(true, { type: 'cabin', row: row })
}
function handleRowclick(record, index, event) {
console.log(record, index, event)
}
function handledbclick(record) {
go(`/CabinManagementDetail?type=edit&id=${record.id}`)
}
function handleDelete(row) {
setLoading(true)
BookingSlotDelete([row.id]).then((res) => {
if (res.succeeded) {
reload()
} else {
createMessage.error(res.message)
}
visible.value = true
labelIdArray.value = []
labelLoad.value = true
BookingLabelList({ scope: 1 }).then((res) => {
res.data.forEach((item) => {
item.isActive = false
})
labelList.value = res.data
labelLoad.value = false
})
setLoading(false)
})
}
const labelIdArray = ref([])
const labelList = ref([]) as any
const labelLoad = ref(false)
const visible = ref(false)
function handleLabel() {
const select = getSelectRows()
const pkIdArr = select.map((item, index) => {
return item.id
})
if (pkIdArr.length === 0) {
createMessage.error('请选择要分配的数据')
return false
}
function handleDeleteAll() {
const select = getSelectRows()
const pkIdArr = select.map((item, index) => {
return item.id
visible.value = true
labelIdArray.value = []
labelLoad.value = true
BookingLabelList({ scope: 1 }).then((res) => {
res.data.forEach((item) => {
item.isActive = false
})
if (pkIdArr.length === 0) {
createMessage.error('请选择要删除的数据')
return false
labelList.value = res.data
labelLoad.value = false
})
}
function handleDeleteAll() {
const select = getSelectRows()
const pkIdArr = select.map((item, index) => {
return item.id
})
if (pkIdArr.length === 0) {
createMessage.error('请选择要删除的数据')
return false
}
setLoading(true)
BookingSlotDelete(pkIdArr).then((res) => {
if (res.succeeded) {
reload()
} else {
createMessage.error(res.message)
}
setLoading(true)
BookingSlotDelete(pkIdArr).then((res) => {
if (res.succeeded) {
reload()
} else {
createMessage.error(res.message)
setLoading(false)
})
}
const moreNumVal = ref('')
function moreNumSubmit() {
let data = ''
moreNumVal.value
.replace(/\n|\r/g, ',')
.split(',')
.forEach((item) => {
if (item.replace(/\s*/g, '')) {
if (data) {
data = `${data},${item}`
} else {
data = item
}
}
setLoading(false)
})
}
const moreNumVal = ref('')
function moreNumSubmit() {
let data = ''
moreNumVal.value
.replace(/\n|\r/g, ',')
.split(',')
.forEach((item) => {
if (item.replace(/\s*/g, '')) {
if (data) {
data = `${data},${item}`
} else {
data = item
getForm().setFieldsValue({
slotBookingNo: data,
})
moreFlag.value = false
}
const moreFlag = ref(false)
function handleOpenS() {
moreFlag.value = true
}
function handleLabelBind(row) {
visible.value = true
labelIdArray.value = []
labelLoad.value = true
// setSelectedRowKeys([row.id])
BookingLabelList({ scope: 1 }).then((res) => {
res.data.forEach((item) => {
item.isActive = false
if (row.labelList) {
row.labelList.forEach((ite) => {
if (ite.id === item.id) {
item.isActive = true
}
}
})
getForm().setFieldsValue({
slotBookingNo: data,
})
}
})
moreFlag.value = false
}
const moreFlag = ref(false)
function handleOpenS() {
moreFlag.value = true
}
function handleLabelBind(row) {
visible.value = true
labelIdArray.value = []
labelLoad.value = true
// setSelectedRowKeys([row.id])
BookingLabelList({ scope: 1 }).then((res) => {
res.data.forEach((item) => {
item.isActive = false
if (row.labelList) {
row.labelList.forEach((ite) => {
if (ite.id === item.id) {
item.isActive = true
}
})
}
})
labelList.value = res.data
labelLoad.value = false
labelList.value = res.data
labelLoad.value = false
})
}
function customRequest(data) {
const formData = new FormData()
formData.append('file', data.file)
setLoading(true)
ImportSlotFromFile(formData)
.then((res) => {
reload()
setLoading(false)
})
}
function customRequest(data) {
const formData = new FormData()
formData.append('file', data.file)
setLoading(true)
ImportSlotFromFile(formData)
.then((res) => {
reload()
setLoading(false)
})
.catch((err) => {
setLoading(false)
})
}
.catch((err) => {
setLoading(false)
})
}
function handleAdd() {
go(`/CabinManagementDetail?type=Add`)
}
function handleEdit(row) {
go(`/CabinManagementDetail?type=edit&id=${row.id}`)
}
function handleAdd() {
go(`/CabinManagementDetail?type=Add`)
}
function handleEdit(row) {
go(`/CabinManagementDetail?type=edit&id=${row.id}`)
}
function handleSubmitLabel() {
const select = getSelectRows()
const pkIdArr = select.map((item, index) => {
return item.id
})
const arr = [] as any
labelList.value.forEach((item) => {
if (item.isActive) {
arr.push(item.id)
}
})
const data = {
labelIdArray: arr,
businessIdArray: pkIdArr,
function handleSubmitLabel() {
const select = getSelectRows()
const pkIdArr = select.map((item, index) => {
return item.id
})
const arr = [] as any
labelList.value.forEach((item) => {
if (item.isActive) {
arr.push(item.id)
}
labelLoad.value = true
BookingLabelBind(data).then((res) => {
if (res.succeeded) {
createMessage.success('分配成功')
visible.value = false
reload()
} else {
createMessage.error(res.message)
}
labelLoad.value = false
})
})
const data = {
labelIdArray: arr,
businessIdArray: pkIdArr,
}
const sumload = ref(false)
function handleSum() {
const select = getSelectRows()
const pkIdArr = select.map((item, index) => {
return item.id
})
if (select.length <= 1) {
createMessage.warning('至少选择两条数据')
return false
labelLoad.value = true
BookingLabelBind(data).then((res) => {
if (res.succeeded) {
createMessage.success('分配成功')
visible.value = false
reload()
} else {
createMessage.error(res.message)
}
const data = {
mergeList: pkIdArr,
labelLoad.value = false
})
}
const sumload = ref(false)
function handleSum() {
const select = getSelectRows()
const pkIdArr = select.map((item, index) => {
return item.id
})
if (select.length <= 1) {
createMessage.warning('至少选择两条数据')
return false
}
const data = {
mergeList: pkIdArr,
}
sumload.value = true
GetMergeList(data).then((res) => {
if (res.succeeded) {
this.$refs.generation.initSum(res.data)
} else {
createMessage.error(res.message)
}
sumload.value = true
GetMergeList(data).then((res) => {
sumload.value = false
})
}
function handleClickLable(index) {
labelList.value[index].isActive = !labelList.value[index].isActive
}
const loadingExport = ref(false)
function handleSuport() {
loadingExport.value = true
if (getSelectRows().length > 0) {
const arr = []
getSelectRows().forEach((item) => {
arr.push(item.id)
})
queryStr.value.otherQueryCondition = arr.join(',')
}
PrintOrder(queryStr.value)
.then((res) => {
if (res.succeeded) {
this.$refs.generation.initSum(res.data)
const fname = res.data //
const link = document.createElement('a')
link.href = `http://118.190.144.189:3008/LinkAttach/${res.data}`
link.setAttribute('download', fname)
document.body.appendChild(link)
link.click()
} else {
createMessage.error(res.message)
}
sumload.value = false
loadingExport.value = false
})
}
function handleClickLable(index) {
labelList.value[index].isActive = !labelList.value[index].isActive
}
const loadingExport = ref(false)
function handleSuport() {
loadingExport.value = true
if (getSelectRows().length > 0) {
const arr = []
getSelectRows().forEach((item) => {
arr.push(item.id)
})
queryStr.value.otherQueryCondition = arr.join(',')
}
PrintOrder(queryStr.value)
.then((res) => {
if (res.succeeded) {
const fname = res.data //
const link = document.createElement('a')
link.href = `http://118.190.144.189:3008/LinkAttach/${res.data}`
link.setAttribute('download', fname)
document.body.appendChild(link)
link.click()
} else {
createMessage.error(res.message)
}
loadingExport.value = false
})
.catch(() => {
loadingExport.value = false
})
}
.catch(() => {
loadingExport.value = false
})
}
</script>
<style lang="less" scoped>
@ -490,122 +445,59 @@
padding-bottom: 0px !important;
}
.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 {
.items {
display: inline-block;
height: 28px;
line-height: 26px;
border: 1px dashed #ccc;
border-radius: 4px;
padding: 0 10px;
margin-top: 10px;
margin-right: 10px;
font-size: 13px;
cursor: pointer;
position: relative;
}
.inline-right {
position: absolute;
top: 6px;
right: 25px;
}
.change {
display: flex;
justify-content: center;
margin-top: 25px;
div {
width: 120px;
height: 50px;
background-color: rgb(247, 249, 250);
border: 1px solid rgb(247, 249, 250);
color: rgb(105, 102, 102);
line-height: 50px;
.edit {
width: 17px;
height: 17px;
border-radius: 0 3px 0 0;
background: #c9c9c9;
display: none;
position: absolute;
right: -1px;
top: -1px;
text-align: center;
cursor: pointer;
transition: box-shadow 0.3s, background-color 0.3s;
margin-right: 10px;
}
div:hover {
border: 1px solid #d1cfcf;
}
}
.content {
max-height: 300px;
overflow-y: auto;
overflow-x: hidden;
width: 100%;
&::-webkit-scrollbar {
width: 0 !important;
line-height: 17px;
}
.items {
display: inline-block;
height: 28px;
line-height: 26px;
border: 1px dashed #ccc;
border-radius: 4px;
padding: 0 10px;
margin-top: 10px;
margin-right: 10px;
font-size: 13px;
cursor: pointer;
&:hover {
border: 1px dashed @primary-color;
position: relative;
.edit {
width: 17px;
height: 17px;
border-radius: 0 3px 0 0;
background: #c9c9c9;
display: none;
&::before {
width: 100%;
height: 100%;
content: '';
background: @primary-color;
opacity: 0.08;
position: absolute;
right: -1px;
top: -1px;
text-align: center;
line-height: 17px;
}
&:hover {
border: 1px dashed @primary-color;
position: relative;
&::before {
width: 100%;
height: 100%;
content: '';
background: @primary-color;
opacity: 0.08;
position: absolute;
top: 0;
left: 0;
border-radius: 4px;
}
.edit {
display: block;
}
top: 0;
left: 0;
border-radius: 4px;
}
&.active {
background: @primary-color;
border: 1px dashed @primary-color;
color: #fff;
.edit {
display: block;
}
}
}
:deep(.vben-basic-table-action button) {
padding: 0 3px !important;
}
}
:deep(.vben-basic-table-action button) {
padding: 0 3px !important;
}
</style>

@ -1349,7 +1349,7 @@ function getContractnoList() {
margin-bottom: 10px !important;
}
:deep(deep.ant-form-item-label>label) {
:deep(.ant-form-item-label>label) {
height: 25px !important;
}
:deep(.ant-form-item-control-input-content) {

@ -541,11 +541,11 @@ function handleOpenCopy() {
</script>
<style lang="less" scoped>
:deep(.ant-form-item) {
:deep(.ant-form-item) {
margin-bottom: 10px !important;
}
:deep(.ant-card-body) {
:deep(.ant-card-body) {
padding-bottom: 0px !important;
}

Loading…
Cancel
Save