引入优化

zth
lijingjia 2 weeks ago
commit 9fed2fcd3c

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

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

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

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

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

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

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

Loading…
Cancel
Save