张同海 2 weeks ago
commit 94ab4e6418

@ -14,7 +14,7 @@ VITE_PUBLIC_PATH = /
# Please note that no line breaks
# VITE_PROXY = [["/basic-api","http://60.209.125.238"],["/upload","http://localhost:3300/upload"]]
# VITE_PROXY=[["/api","http://60.209.125.238:3008"],["/stage-api","https://www.666cxf.com/stage-api"]] # 开发 测试环境
VITE_PROXY=[["/api","http://60.209.125.238:3008"],["/stage-api","https://www.666cxf.com/stage-api"]] # 开发 测试环境
VITE_PROXY=[["/api","http://118.190.144.189:3008"],["/stage-api","https://www.666cxf.com/stage-api"]] # 开发 测试环境
# Delete console
VITE_DROP_CONSOLE = false

@ -0,0 +1,8 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16" fill="none">
<path d="M13 16L3 16C1.3 16 0 14.6 0 13L0 3C0 1.3 1.4 0 3 0L13 0C14.7 0 16 1.4 16 3L16 13C16 14.6 14.6 16 13 16Z" fill="#469FA6" >
</path>
<path d="M12.2004 9.20001L3.70039 9.20001C3.30039 9.20001 2.90039 8.90001 2.90039 8.40001L2.90039 7.40001C2.90039 7.00001 3.20039 6.60001 3.70039 6.60001L12.4004 6.60001C12.8004 6.60001 13.2004 6.90001 13.2004 7.40001L13.2004 8.50001C13.1004 8.80001 12.6004 9.20001 12.2004 9.20001Z" fill="#FFFFFF" >
</path>
<path d="M6.59961 12.2L6.59961 3.69999C6.59961 3.29999 6.89961 2.89999 7.39961 2.89999L8.49961 2.89999C8.89961 2.89999 9.29961 3.19999 9.29961 3.69999L9.29961 12.4C9.29961 12.8 8.99961 13.2 8.49961 13.2L7.39961 13.2C6.89961 13.1 6.59961 12.6 6.59961 12.2Z" fill="#FFFFFF" >
</path>
</svg>

After

Width:  |  Height:  |  Size: 882 B

@ -0,0 +1,14 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16" fill="none">
<path d="M2.2 1.70001L10.1 1.70001C11.5 1.70001 12.3 2.40001 12.3 3.90001L12.3 13.8C12.3 15.2 11.6 16 10.1 16L2.2 16C0.7 15.9 0 15.2 0 13.7L0 3.80001C0 2.40001 0.7 1.70001 2.2 1.70001Z" fill="#45ABFF" >
</path>
<path d="M6.29961 0L13.7996 0C15.2996 0 15.9996 0.7 15.9996 2.2L15.9996 12.1C15.9996 13.5 15.2996 14.3 13.7996 14.3L6.29961 14.3C4.89961 14.3 4.09961 13.6 4.09961 12.1L4.09961 2.2C4.19961 0.7 4.89961 0 6.29961 0Z" fill="#45ABFF" >
</path>
<path d="M10.0996 1.70001L4.19961 1.70001C4.09961 1.90001 4.09961 2.10001 4.09961 2.30001L4.09961 12C4.09961 13.3 5.09961 14.3 6.29961 14.3L11.8996 14.3C11.9996 14.3 12.0996 14.3 12.2996 14.3C12.2996 14.1 12.3996 13.9 12.3996 13.7L12.3996 3.90001C12.2996 2.70001 11.2996 1.70001 10.0996 1.70001Z" fill="#216DE8" >
</path>
<path d="M8.6998 9.10001L2.9998 9.10001C2.5998 9.10001 2.2998 8.80001 2.2998 8.40001C2.2998 8.00001 2.5998 7.70001 2.9998 7.70001L8.6998 7.70001C9.0998 7.70001 9.39981 8.00001 9.39981 8.40001C9.39981 8.80001 9.0998 9.10001 8.6998 9.10001Z" fill="#FFFFFF" >
</path>
<path d="M8.6998 12.5L2.9998 12.5C2.5998 12.5 2.2998 12.2 2.2998 11.8C2.2998 11.4 2.5998 11.1 2.9998 11.1L8.6998 11.1C9.0998 11.1 9.39981 11.4 9.39981 11.8C9.39981 12.2 9.0998 12.5 8.6998 12.5Z" fill="#FFFFFF" >
</path>
<path d="M8.6998 5.79999L2.9998 5.79999C2.5998 5.79999 2.2998 5.49999 2.2998 5.09999C2.2998 4.69999 2.5998 4.39999 2.9998 4.39999L8.6998 4.39999C9.0998 4.39999 9.39981 4.69999 9.39981 5.09999C9.39981 5.49999 9.0998 5.79999 8.6998 5.79999Z" fill="#FFFFFF" >
</path>
</svg>

After

Width:  |  Height:  |  Size: 1.6 KiB

@ -0,0 +1,8 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16" fill="none">
<path d="M13 16L3 16C1.3 16 0 14.6 0 13L0 3C0 1.3 1.4 0 3 0L13 0C14.7 0 16 1.4 16 3L16 13C16 14.6 14.6 16 13 16Z" fill="#C73035" >
</path>
<path d="M10.0999 11.9L3.9999 5.80001C3.6999 5.50001 3.6999 5.00001 3.9999 4.7L4.6999 4C4.9999 3.7 5.4999 3.6 5.7999 4L11.9999 10.2C12.2999 10.5 12.3999 11 11.9999 11.3L11.1999 12C10.8999 12.2 10.3999 12.2 10.0999 11.9Z" fill="#FFFFFF" >
</path>
<path d="M4.00013 10.1L10.1001 4C10.4001 3.7 10.9001 3.6 11.2001 4L12.0001 4.7C12.3001 5.00001 12.4001 5.50001 12.0001 5.80001L5.80013 12C5.50013 12.3 5.00013 12.4 4.70013 12L3.90013 11.2C3.70013 10.8 3.70013 10.3 4.00013 10.1Z" fill="#FFFFFF" >
</path>
</svg>

After

Width:  |  Height:  |  Size: 791 B

@ -0,0 +1,15 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16"
viewBox="0 0 16 16" fill="none">
<path
d="M13.7 16L2.3 16C1 16 0 15 0 13.8L0 2.2C0 1 1 0 2.3 0L12.1 0C12.3 0 12.5 0.1 12.6 0.2L15.8 3.2C15.9 3.3 16 3.5 16 3.7L16 13.8C16 15 15 16 13.7 16Z"
fill="#FFB636">
</path>
<path
d="M9.89961 6.9L5.59961 6.9C4.49961 6.9 3.59961 6 3.59961 5L3.59961 0L11.8996 0L11.8996 5C11.8996 6 10.9996 6.9 9.89961 6.9Z"
fill="#FF7C0E">
</path>
<path
d="M9.5998 5.4999L7.1998 5.4999C6.6998 5.4999 6.2998 5.0999 6.2998 4.6999C6.2998 4.2999 6.6998 3.8999 7.1998 3.8999L9.5998 3.8999C10.0998 3.8999 10.4998 4.2999 10.4998 4.6999C10.4998 5.0999 10.0998 5.4999 9.5998 5.4999Z"
fill="#FFFFFF">
</path>
</svg>

After

Width:  |  Height:  |  Size: 939 B

@ -40,9 +40,10 @@
:min-height="tableHeightRef + 36"
:height="tableHeightRef + 35"
:row-config="{ isCurrent: true, isHover: true }"
:span-method="getBindValues.mergeRowMethod"
:column-config="{ resizable: true }"
:scroll-y="{ enabled: true, gt: 0, scrollToTopOnChange: true }"
:scroll-x="{ enabled: true, gt: 0 }"
:scroll-y="{ enabled: !getBindValues.isMerge ? true : false, gt: 0, scrollToTopOnChange: !getBindValues.isMerge ? true : false }"
:scroll-x="{ enabled: !getBindValues.isMerge ? true : false, gt: 0 }"
:sort-config="{ trigger: 'cell', remote: true }"
rowSelection
size="mini"
@ -225,6 +226,7 @@ export default defineComponent({
if (unref(v).tableComponent == 'vxe') {
getVxeColSetData()
}
console.log(v)
},
{ deep: true }
)

@ -205,8 +205,12 @@ export interface BasicTableProps<T = any> {
autoHeight?: number,
// 展开配置
expandConfig?:object
// 合并函数
mergeRowMethod?: Fn
// 是否展开
isExpand?: boolean
// 是否合并
isMerge?: boolean
// 在分页改变的时候清空选项
clearSelectOnPageChange?: boolean
//

@ -11,7 +11,7 @@
<span>{{ t('common.addText') }}</span>
</template>
<span v-if="btnKeys.includes('add') && !checkPermissions(show.add)" :class="`${prefixCls}-svg-btn`" @click="add">
<svg t="1732239931995" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="14776" width="200" height="200"><path d="M832 1024H192c-108.8 0-192-89.6-192-192V192c0-108.8 89.6-192 192-192h640c108.8 0 192 89.6 192 192v640c0 102.4-89.6 192-192 192z" fill="#469FA6" p-id="14777"></path><path d="M780.8 588.8H236.8c-25.6 0-51.2-19.2-51.2-51.2v-64c0-25.6 19.2-51.2 51.2-51.2h556.8c25.6 0 51.2 19.2 51.2 51.2v70.4c-6.4 19.2-38.4 44.8-64 44.8z" fill="#FFFFFF" p-id="14778"></path><path d="M422.4 780.8V236.8c0-25.6 19.2-51.2 51.2-51.2h70.4c25.6 0 51.2 19.2 51.2 51.2v556.8c0 25.6-19.2 51.2-51.2 51.2H473.6c-32-6.4-51.2-38.4-51.2-64z" fill="#FFFFFF" p-id="14779"></path></svg>
<SvgIcon size="16" name="add-btn" />
</span>
</a-tooltip>
<!-- 复制 -->
@ -20,7 +20,7 @@
<span>{{ t('common.copyText') }}</span>
</template>
<span v-if="btnKeys.includes('copy') && !checkPermissions(show.copy)" :class="`${prefixCls}-svg-btn`" @click="copy">
<svg t="1732241194906" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="16430" width="200" height="200"><path d="M140.8 108.8h505.6c89.6 0 140.8 44.8 140.8 140.8v633.6c0 89.6-44.8 140.8-140.8 140.8H140.8C44.8 1017.6 0 972.8 0 876.8V243.2c0-89.6 44.8-134.4 140.8-134.4z" fill="#45ABFF" p-id="16431"></path><path d="M403.2 0h480c96 0 140.8 44.8 140.8 140.8v633.6c0 89.6-44.8 140.8-140.8 140.8H403.2c-89.6 0-140.8-44.8-140.8-140.8V140.8C268.8 44.8 313.6 0 403.2 0z" fill="#45ABFF" p-id="16432"></path><path d="M646.4 108.8H268.8c-6.4 12.8-6.4 25.6-6.4 38.4V768c0 83.2 64 147.2 140.8 147.2h384c0-12.8 6.4-25.6 6.4-38.4V249.6c-6.4-76.8-70.4-140.8-147.2-140.8z" fill="#216DE8" p-id="16433"></path><path d="M556.8 582.4H192c-25.6 0-44.8-19.2-44.8-44.8 0-25.6 19.2-44.8 44.8-44.8h364.8c25.6 0 44.8 19.2 44.8 44.8s-19.2 44.8-44.8 44.8zM556.8 800H192c-25.6 0-44.8-19.2-44.8-44.8 0-25.6 19.2-44.8 44.8-44.8h364.8c25.6 0 44.8 19.2 44.8 44.8s-19.2 44.8-44.8 44.8zM556.8 371.2H192c-25.6 0-44.8-19.2-44.8-44.8s19.2-44.8 44.8-44.8h364.8c25.6 0 44.8 19.2 44.8 44.8 0 25.6-19.2 44.8-44.8 44.8z" fill="#FFFFFF" p-id="16434"></path></svg>
<SvgIcon size="16" name="copy-btn" />
</span>
</a-tooltip>
<!-- 删除 -->
@ -35,7 +35,7 @@
@confirm="del"
>
<span v-if="btnKeys.includes('del') && !checkPermissions(show.del)" :class="`${prefixCls}-svg-btn`">
<svg t="1732240833320" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="15643" width="200" height="200"><path d="M832 1024H192c-108.8 0-192-89.6-192-192V192c0-108.8 89.6-192 192-192h640c108.8 0 192 89.6 192 192v640c0 102.4-89.6 192-192 192z" fill="#C73035" p-id="15644"></path><path d="M646.4 761.6L256 371.2c-19.2-19.2-19.2-51.2 0-70.4l44.8-44.8c19.2-19.2 51.2-25.6 70.4 0l396.8 396.8c19.2 19.2 25.6 51.2 0 70.4l-51.2 44.8c-19.2 12.8-51.2 12.8-70.4-6.4z" fill="#FFFFFF" p-id="15645"></path><path d="M256 646.4L646.4 256c19.2-19.2 51.2-25.6 70.4 0l51.2 44.8c19.2 19.2 25.6 51.2 0 70.4L371.2 768c-19.2 19.2-51.2 25.6-70.4 0l-51.2-51.2c-12.8-25.6-12.8-57.6 6.4-70.4z" fill="#FFFFFF" p-id="15646"></path></svg>
<SvgIcon size="16" name="del-btn" />
</span>
</a-popconfirm>
</a-tooltip>
@ -48,6 +48,7 @@
import { useDesign } from '/@/hooks/web/useDesign'
import { useI18n } from '/@/hooks/web/useI18n'
import { checkPermissions } from '/@/hooks/Permissions/index'
import { SvgIcon } from '/@/components/Icon'
const { prefixCls } = useDesign('ds-table-button')
const { t } = useI18n()
const props = defineProps({

@ -367,21 +367,21 @@ export const columns: BasicColumn[] = [
width: 200,
dataIndex: 'labelList',
slots: { default: 'labelList' },
customCell: sharedOnCell,
},
{
title: '舱位提单号',
align: 'left',
width: 160,
dataIndex: 'slotBookingNo',
customCell: sharedOnCell,
},
{
title: '订舱编号',
align: 'left',
width: 150,
dataIndex: 'slotNo',
customCell: sharedOnCell,
},
{
title: '船名/航次',
@ -390,7 +390,7 @@ export const columns: BasicColumn[] = [
dataIndex: 'vessel',
showHeaderOverflow: true,
sortable: true,
customCell: sharedOnCell,
},
{
title: '舱位状态',
@ -399,77 +399,77 @@ export const columns: BasicColumn[] = [
dataIndex: 'statusName',
showHeaderOverflow: true,
sortable: true,
customCell: sharedOnCell,
},
{
title: '船公司',
align: 'left',
width: 100,
dataIndex: 'carrier',
customCell: sharedOnCell,
},
{
title: '合约号',
align: 'left',
width: 100,
dataIndex: 'contractNo',
customCell: sharedOnCell,
},
{
title: '承运模式',
align: 'left',
width: 100,
dataIndex: 'carriageTypeName',
customCell: sharedOnCell,
},
{
title: '订舱方式',
align: 'left',
width: 100,
dataIndex: 'bookingSlotTypeName',
customCell: sharedOnCell,
},
{
title: 'ETD',
align: 'left',
width: 100,
dataIndex: 'etd',
customCell: sharedOnCell,
},
{
title: 'ETA',
align: 'left',
width: 100,
dataIndex: 'eta',
customCell: sharedOnCell,
},
{
title: 'CANCELLATION',
align: 'left',
width: 150,
dataIndex: 'isCancellation',
customCell: sharedOnCell,
},
{
title: '提单类型',
align: 'left',
width: 100,
dataIndex: 'blIssueType',
customCell: sharedOnCell,
},
{
title: '订舱参考号',
align: 'left',
width: 100,
dataIndex: 'userReferNo',
customCell: sharedOnCell,
},
{
title: '船司参考号',
align: 'left',
width: 100,
dataIndex: 'carrierReferNo',
customCell: sharedOnCell,
},
{
title: '委托单位',
@ -542,238 +542,235 @@ export const columns: BasicColumn[] = [
align: 'left',
width: 100,
dataIndex: 'splitOrMergeFlag',
customCell: sharedOnCell,
},
{
title: '舱保类型',
align: 'left',
width: 100,
dataIndex: 'loadGuaranteeFlagName',
customCell: sharedOnCell1,
},
{
title: '来源邮箱',
align: 'left',
width: 100,
dataIndex: 'senderEmail',
customCell: sharedOnCell1,
},
{
title: '接受邮箱',
align: 'left',
width: 100,
dataIndex: 'recvEmail',
customCell: sharedOnCell1,
},
{
title: '收货地',
align: 'left',
width: 180,
dataIndex: 'placeReceipt',
customCell: sharedOnCell,
},
{
title: '交货地',
align: 'left',
width: 180,
dataIndex: 'placeDelivery',
customCell: sharedOnCell,
},
{
title: '装货港',
align: 'left',
width: 180,
dataIndex: 'portLoad',
customCell: sharedOnCell,
},
{
title: '卸货港',
align: 'left',
width: 180,
dataIndex: 'portDischarge',
customCell: sharedOnCell,
},
{
title: '卸货港国家地区',
align: 'left',
width: 180,
dataIndex: 'portDischargeCountry',
customCell: sharedOnCell,
},
{
title: '箱型箱量',
align: 'left',
width: 100,
dataIndex: 'ctnStat',
customCell: sharedOnCell,
},
{
title: 'WEEK',
align: 'left',
width: 100,
dataIndex: 'weekAt',
customCell: sharedOnCell,
},
{
title: '样单截止时间',
align: 'left',
width: 150,
dataIndex: 'siCutDate',
customCell: sharedOnCell,
},
{
title: 'VGM截止时间',
align: 'left',
width: 150,
dataIndex: 'vgmSubmissionCutDate',
customCell: sharedOnCell,
},
{
title: '截港时间',
align: 'left',
width: 150,
dataIndex: 'cyCutDate',
customCell: sharedOnCell,
},
{
title: '入港清单截止',
align: 'left',
width: 150,
dataIndex: 'manifestCutDate',
customCell: sharedOnCell,
},
{
title: 'MDGF截止',
align: 'left',
width: 150,
dataIndex: 'mdgfCutDate',
customCell: sharedOnCell,
},
{
title: '航线',
align: 'left',
width: 100,
dataIndex: 'laneName',
customCell: sharedOnCell,
},
{
title: '创建日期',
align: 'left',
width: 150,
dataIndex: 'createTime',
customCell: sharedOnCell,
},
{
title: '创建人',
align: 'left',
width: 100,
dataIndex: 'createUserName',
customCell: sharedOnCell,
},
{
title: '更新日期',
align: 'left',
width: 150,
dataIndex: 'updateTime',
customCell: sharedOnCell,
},
{
title: '更新人',
align: 'left',
width: 100,
dataIndex: 'updateUserName',
customCell: sharedOnCell,
},
{
title: 'VGM回执',
align: 'left',
width: 100,
dataIndex: 'vgmRltStat',
customCell: sharedOnCell,
},
{
title: 'SI回执',
align: 'left',
width: 100,
dataIndex: 'siRltStat',
customCell: sharedOnCell,
},
{
title: '提箱',
align: 'left',
width: 100,
dataIndex: 'takeCtnRltStat',
customCell: sharedOnCell,
},
{
title: '还箱',
align: 'left',
width: 100,
dataIndex: 'returnCtnRltStat',
customCell: sharedOnCell,
},
{
title: '预甩',
align: 'left',
width: 100,
dataIndex: 'nominationRltStat',
customCell: sharedOnCell,
},
{
title: '舱位变更',
align: 'left',
width: 100,
dataIndex: 'amendmentRltStat',
customCell: sharedOnCell,
},
{
title: '舱位取消',
align: 'left',
width: 100,
dataIndex: 'cancellationRltStat',
customCell: sharedOnCell,
},
{
title: '卸船未提货',
align: 'left',
width: 100,
dataIndex: 'dischargeFullRltStat',
customCell: sharedOnCell,
},
{
title: '提箱未还空箱',
align: 'left',
width: 150,
dataIndex: 'gateOutfullRltStat',
customCell: sharedOnCell,
},
{
title: '费用信息',
align: 'left',
width: 100,
dataIndex: 'typeCode',
customCell: sharedOnCell,
},
{
title: '备注',
align: 'left',
width: 100,
dataIndex: 'remark',
customCell: sharedOnCell,
},
{
title: '计费时间',
align: 'left',
width: 100,
dataIndex: 'priceCalculationDate',
customCell: sharedOnCell,
},
{
title: '操作',
align: 'center',
width: 50,
dataIndex: 'action',
customCell: sharedOnCell,
fixed: 'right',
},
]

@ -1,270 +1,266 @@
<template>
<div class="main">
<div style="width: 74%;margin-right: 20px;background: white;padding: 10px;">
<div style="margin-bottom: 10px;">
<a-button type="link" size="mini" @click="handleSave">
<span class="iconfont icon-jiahao2fill"></span>
保存
</a-button>
<!-- <a-button v-if="type === 'edit'" style="margin: 0 10px;" type="link" size="mini">
<span class="iconfont icon-tijiao1"></span>
提交
</a-button>
<a-button v-if="type === 'edit'" type="link" size="mini">
<span class="iconfont icon-fuzhi3"></span>
审核
</a-button>
<a-button v-if="type === 'edit'" style="margin: 0 10px;" type="link" size="mini">
<span class="iconfont icon-guanli"></span>提交审核</a-button> -->
</div>
<a-spin :spinning="loading">
<a-form :model="form" :wrapper-col="{ span: 21 }">
<div v-if="type === 'edit' && form.bookingSlotSaleInfoList.length && form.bookingSlotSaleInfoList.length > 0"
class="bookslot">
<div class="box-item">
<div class="title"
v-if="type === 'edit' && form.bookingSlotSaleInfoList.length && form.bookingSlotSaleInfoList.length > 0">
关联订舱
</div>
<div :class="{ 'line-bootm': index != form.bookingSlotSaleInfoList.length - 1 }"
v-for="(item, index) in form.bookingSlotSaleInfoList" v-show="item.customerId != 0"
:key="index">
<a-row>
<a-col :span="4">
<a-form-item label="">
<div>委托单位</div>
<a-select show-search v-model:value="item.customerName"
:default-active-first-option="false" :show-arrow="false"
:filter-option="false" :not-found-content="null" @change="e => {
ChangeUser(e, 'customerId', 5, index)
}" @search="SearchCustomer">
<a-select-option v-for="(item1, index1) in CustomerList" :key="index1"
:value="item1.pinYinCode">
{{ item1.pinYinCode }}
</a-select-option>
</a-select>
</a-form-item>
</a-col>
<a-col :span="4">
<a-form-item label="">
<div>客服</div>
<a-select show-search v-model:value="item.custService"
:default-active-first-option="false" :show-arrow="false"
:filter-option="false" :not-found-content="null" allowClear
@search="SearchUser($event, 0)" @change="e => {
ChangeUser(e, 'custServiceId', 0, index)
}
">
<a-select-option v-for="item1 in UserListCus" :key="item1.id"
:value="item1.pinYinCode">
{{ item1.pinYinCode }}
</a-select-option>
</a-select>
</a-form-item>
</a-col>
<a-col :span="4">
<a-form-item label="">
<div>销售</div>
<a-select show-search v-model:value="item.sale"
:default-active-first-option="false" :show-arrow="false"
:filter-option="false" :not-found-content="null" allowClear
@search="SearchUser($event, 1)" @change="e => {
ChangeUser(e, 'saleId', 1, index)
}
">
<a-select-option v-for="item1 in UserListSale" :key="item1.id"
:value="item1.pinYinCode">
{{ item1.pinYinCode }}
</a-select-option>
</a-select>
</a-form-item>
</a-col>
<a-col :span="4">
<a-form-item label="">
<div>操作</div>
<a-select show-search v-model:value="item.op"
:default-active-first-option="false" :show-arrow="false" allowClear
:filter-option="false" :not-found-content="null"
@search="SearchUser($event, 2)" @change="e => {
ChangeUser(e, 'opId', 2, index)
}
">
<a-select-option v-for="item in UserListOp" :key="item.id"
:value="item.pinYinCode">
{{ item.pinYinCode }}
</a-select-option>
</a-select>
</a-form-item>
</a-col>
<a-col :span="4">
<a-form-item label="">
<div>单证</div>
<a-select show-search v-model:value="item.doc" allowClear
:default-active-first-option="false" :show-arrow="false"
:filter-option="false" :not-found-content="null"
@search="SearchUser($event, 3)" @change="e => {
ChangeUser(e, 'docId', 3, index)
}
">
<a-select-option v-for="item in UserListDoc" :key="item.id"
:value="item.pinYinCode">
{{ item.pinYinCode }}
</a-select-option>
</a-select>
</a-form-item>
</a-col>
<a-col :span="4">
<a-form-item label="">
<div>商务</div>
<a-select show-search v-model:value="item.business" allowClear
:default-active-first-option="false" :show-arrow="false"
:filter-option="false" :not-found-content="null"
@search="SearchUser($event, 4)" @change="e => {
ChangeUser(e, 'businessId', 4, index)
}
">
<a-select-option v-for="item in UserListBus" :key="item.id"
:value="item.pinYinCode">
{{ item.pinYinCode }}
</a-select-option>
</a-select>
</a-form-item>
</a-col>
</a-row>
<a-row>
<a-col :span="4">
<a-form-item label="">
<div>品名</div>
<a-input v-model:value="item.goodsName" />
</a-form-item>
</a-col>
<a-col :span="4">
<a-form-item label="">
<div>卖价</div>
<a-input-number style="width: 100%" :precision="2"
v-model:value="item.sellingPrice" />
</a-form-item>
</a-col>
<a-col :span="4">
<a-form-item label="">
<div>销售日期</div>
<a-date-picker valueFormat="YYYY-MM-DD" style="width: 100%"
v-model:value="item.saleTime" />
</a-form-item>
</a-col>
<a-col :span="4">
<a-form-item label="">
<div>SHIPPER</div>
<a-input v-model:value="item.shipper" />
</a-form-item>
</a-col>
</a-row>
<div class="box-top">
<a-tabs v-model:activeKey="activeKey">
<a-tab-pane key="1" tab="舱位台账"></a-tab-pane>
<a-tab-pane key="2" tab="日志"></a-tab-pane>
</a-tabs>
</div>
<div style="margin-bottom: 10px;margin-left: 20px">
<span class="icon-box" @click="handleSave">
<SvgIcon size="16" name="save-btn" />
</span>
</div>
<div style="display: flex;padding: 0 20px">
<div style="width: 74%;margin-right: 20px;">
<a-spin :spinning="loading">
<a-form :model="form" :wrapper-col="{ span: 21 }">
<div v-if="type === 'edit' && form.bookingSlotSaleInfoList.length && form.bookingSlotSaleInfoList.length > 0"
class="bookslot">
<div class="box-item">
<div class="title"
v-if="type === 'edit' && form.bookingSlotSaleInfoList.length && form.bookingSlotSaleInfoList.length > 0">
关联订舱
</div>
<div :class="{ 'line-bootm': index != form.bookingSlotSaleInfoList.length - 1 }"
v-for="(item, index) in form.bookingSlotSaleInfoList" v-show="item.customerId != 0"
:key="index">
<a-row>
<a-col :span="4">
<a-form-item label="">
<div>委托单位</div>
<a-select show-search v-model:value="item.customerName"
:default-active-first-option="false" :show-arrow="false"
:filter-option="false" :not-found-content="null" @change="e => {
ChangeUser(e, 'customerId', 5, index)
}" @search="SearchCustomer">
<a-select-option v-for="(item1, index1) in CustomerList"
:key="index1" :value="item1.pinYinCode">
{{ item1.pinYinCode }}
</a-select-option>
</a-select>
</a-form-item>
</a-col>
<a-col :span="4">
<a-form-item label="">
<div>客服</div>
<a-select show-search v-model:value="item.custService"
:default-active-first-option="false" :show-arrow="false"
:filter-option="false" :not-found-content="null" allowClear
@search="SearchUser($event, 0)" @change="e => {
ChangeUser(e, 'custServiceId', 0, index)
}
">
<a-select-option v-for="item1 in UserListCus" :key="item1.id"
:value="item1.pinYinCode">
{{ item1.pinYinCode }}
</a-select-option>
</a-select>
</a-form-item>
</a-col>
<a-col :span="4">
<a-form-item label="">
<div>销售</div>
<a-select show-search v-model:value="item.sale"
:default-active-first-option="false" :show-arrow="false"
:filter-option="false" :not-found-content="null" allowClear
@search="SearchUser($event, 1)" @change="e => {
ChangeUser(e, 'saleId', 1, index)
}
">
<a-select-option v-for="item1 in UserListSale" :key="item1.id"
:value="item1.pinYinCode">
{{ item1.pinYinCode }}
</a-select-option>
</a-select>
</a-form-item>
</a-col>
<a-col :span="4">
<a-form-item label="">
<div>操作</div>
<a-select show-search v-model:value="item.op"
:default-active-first-option="false" :show-arrow="false" allowClear
:filter-option="false" :not-found-content="null"
@search="SearchUser($event, 2)" @change="e => {
ChangeUser(e, 'opId', 2, index)
}
">
<a-select-option v-for="item in UserListOp" :key="item.id"
:value="item.pinYinCode">
{{ item.pinYinCode }}
</a-select-option>
</a-select>
</a-form-item>
</a-col>
<a-col :span="4">
<a-form-item label="">
<div>单证</div>
<a-select show-search v-model:value="item.doc" allowClear
:default-active-first-option="false" :show-arrow="false"
:filter-option="false" :not-found-content="null"
@search="SearchUser($event, 3)" @change="e => {
ChangeUser(e, 'docId', 3, index)
}
">
<a-select-option v-for="item in UserListDoc" :key="item.id"
:value="item.pinYinCode">
{{ item.pinYinCode }}
</a-select-option>
</a-select>
</a-form-item>
</a-col>
<a-col :span="4">
<a-form-item label="">
<div>商务</div>
<a-select show-search v-model:value="item.business" allowClear
:default-active-first-option="false" :show-arrow="false"
:filter-option="false" :not-found-content="null"
@search="SearchUser($event, 4)" @change="e => {
ChangeUser(e, 'businessId', 4, index)
}
">
<a-select-option v-for="item in UserListBus" :key="item.id"
:value="item.pinYinCode">
{{ item.pinYinCode }}
</a-select-option>
</a-select>
</a-form-item>
</a-col>
</a-row>
<a-row>
<a-col :span="4">
<a-form-item label="">
<div>品名</div>
<a-input v-model:value="item.goodsName" />
</a-form-item>
</a-col>
<a-col :span="4">
<a-form-item label="">
<div>卖价</div>
<a-input-number style="width: 100%" :precision="2"
v-model:value="item.sellingPrice" />
</a-form-item>
</a-col>
<a-col :span="4">
<a-form-item label="">
<div>销售日期</div>
<a-date-picker valueFormat="YYYY-MM-DD" style="width: 100%"
v-model:value="item.saleTime" />
</a-form-item>
</a-col>
<a-col :span="4">
<a-form-item label="">
<div>SHIPPER</div>
<a-input v-model:value="item.shipper" />
</a-form-item>
</a-col>
</a-row>
</div>
</div>
</div>
</a-form>
<div class="box-item">
<div class="title">
<span style="margin-right: 20px;">{{ type === 'edit' ? '舱位修改' : '舱位新增' }}</span>
<span
style="background: #d78a6d;color: white;padding: 0 8px;font-size: 13px;font-weight: 400;"
v-if="form.spliT_OR_MERGE_FLAG == 1">已拆票</span>
<span
style="background: #d78a6d;color: white;padding: 0 8px;font-size: 13px;font-weight: 400;"
v-if="form.spliT_OR_MERGE_FLAG == 2">已合票</span>
</div>
<BasicForm @register="registerForm" />
</div>
</a-form>
<div class="box-item">
<div class="title">
<span style="margin-right: 20px;">{{ type === 'edit' ? '舱位修改' : '舱位新增' }}</span>
<span style="background: #d78a6d;color: white;padding: 0 8px;font-size: 13px;font-weight: 400;"
v-if="form.spliT_OR_MERGE_FLAG == 1">已拆票</span>
<span style="background: #d78a6d;color: white;padding: 0 8px;font-size: 13px;font-weight: 400;"
v-if="form.spliT_OR_MERGE_FLAG == 2">已合票</span>
</div>
<BasicForm @register="registerForm" />
</div>
<div class="box-item">
<div class="title">截止时间</div>
<BasicForm @register="registerFormTime" />
</div>
<div class="box-item">
<div class="title">截止时间</div>
<BasicForm @register="registerFormTime" />
</div>
<div class="box-item">
<div class="title">
<span>箱型箱量</span>
<span style="font-size: 12px;margin-left: 20px;cursor: pointer;font-weight: 400"
@click="handleOpenBoxList">
<span class="iconfont icon-jiahao2fill" style="color: rgba(37, 122, 250, 1);"></span>添加
</span>
<span style="font-size: 12px;margin-left: 20px;" @click="boxFlag = true">合计:{{ boxTotal
}}</span>
</div>
<div class="list">
<div class="item" v-for="item in form.ctnList" :key="item.gid">
<a-input-number style="width: 100%;" v-model:value="item.ctnNum" :min="1" :max="100">
<template #prefix>
{{ item.ctnAll }}:
</template>
</a-input-number>
<div class="box-item">
<div class="title">
<span>箱型箱量</span>
<span @click="handleOpenBoxList" class="ctn-btn">
<i class="iconfont icon-xiugai-danse"></i>编辑
</span>
<span style="font-size: 12px;margin-left: 20px;" @click="boxFlag = true">合计:{{ boxTotal
}}</span>
</div>
<div class="list">
<div class="item" v-for="item in form.ctnList" :key="item.gid">
<a-input-number style="width: 100%;" v-model:value="item.ctnNum" :min="1" :max="100">
<template #prefix>
{{ item.ctnAll }}:
</template>
</a-input-number>
</div>
</div>
</div>
</div>
<div class="box-item">
<div class="title">
<span>用途</span>
<span style="font-size: 12px;margin-left: 20px;cursor: pointer;font-weight: 400"
@click="handleOpenUse">
<span class="iconfont icon-jiahao2fill" style="color: rgba(37, 122, 250, 1);"></span>添加
</span>
</div>
<div class="use-list">
<div class="item" v-for="(item, index) in form.useToList" :key="item.useTo">
<i @click="delUse(index)" class="icon-shanchu2 iconfont"></i>
<span>{{ item.useToName }}</span>
<span> {{ item.useToValShow }} </span>
<i @click="editUse(item, index)" style="margin-left: 5px;"
class="icon-bianji1 iconfont"></i>
<div class="box-item">
<div class="title">
<span>用途</span>
<span @click="handleOpenUse" class="icon-box gray">
<SvgIcon size="16" name="add-btn" />
</span>
</div>
<div class="use-list">
<div class="item" v-for="(item, index) in form.useToList" :key="item.useTo">
<span>{{ item.useToName }}</span>
<span> {{ item.useToValShow }} </span>
<i @click="editUse(item, index)" style="margin-left: 5px;"
class="icon-bianji1 iconfont"></i>
<i @click="delUse(index)" class="icon-chahao iconfont"></i>
</div>
</div>
</div>
</div>
<div class="box-item">
<div class="title">
<span>舱位延期</span>
<span style="font-size: 12px;margin-left: 20px;cursor: pointer;font-weight: 400"
@click="openRoll">
<span class="iconfont icon-jiahao2fill" style="color: rgba(37, 122, 250, 1);"></span>新增
</span>
</div>
<div class="cost">
<BasicTable class="ds-table" @register="registerTable1">
</BasicTable>
</div>
</div>
<div class="box-item">
<div class="title">费用</div>
<div class="cost">
<BasicTable class="ds-table" @register="registerTable">
</BasicTable>
<div class="box-item">
<div class="title">
<span>舱位延期</span>
<span @click="openRoll" class="icon-box gray">
<SvgIcon size="16" name="add-btn" />
</span>
</div>
<div class="cost">
<BasicTable @register="registerTable1">
</BasicTable>
</div>
</div>
</div>
</a-spin>
</div>
<div style="width: 26%;padding-right: 20px;margin-top: 53px">
<div class="card">
<DsFile ref="dsFile" :id="id" :show="false" height="300">
<div class="title">
<h4>附件</h4>
<a-button type="link" size="mini" style="padding-right: 3px!important;" @click="addFile">
<span class="iconfont icon-fujian1"></span>
新增附件
</a-button>
<div class="box-item">
<div class="title">费用</div>
<div class="cost">
<BasicTable @register="registerTable">
</BasicTable>
</div>
</div>
</DsFile>
</a-spin>
</div>
<div class="card">
<div class="title">日志</div>
<log :logList="form.logList"></log>
<div style="width: 26%;">
<div class="card">
<DsFile ref="dsFile" :id="id" :show="false" height="300">
<div class="title">
<h4>附件</h4>
<a-button type="link" size="mini" style="padding-right: 3px!important;" @click="addFile">
<span class="iconfont icon-fujian1"></span>
新增附件
</a-button>
</div>
</DsFile>
</div>
<!-- <div class="card">
<div class="title">日志</div>
<log :logList="form.logList"></log>
</div> -->
</div>
</div>
<a-modal :footer="null" title="请选择箱型" width="600px" @cancel="boxFlag = false" :visible="boxFlag">
<div class="boxList">
<div class="boxItem" :class="{ 'active': item.flag }" @click="handleClick(item)" v-for="item in boxList"
@ -300,12 +296,14 @@ import {
GetCustomerServiceList, GetSaleList, GetVouchingClerkList
} from '/@/views/operation/seaexport/api/BookingLedger'
import { useOptionsStore } from '/@/store/modules/options'
import { SvgIcon } from '/@/components/Icon'
import log from './log.vue'
import { useRoute, useRouter } from 'vue-router'
const optionsStore = useOptionsStore()
import { BasicTable, useTable, TableAction } from '/@/components/Table'
import { BasicForm, useForm } from '/@/components/Form/index'
import { detialForm, detialTimeForm, useDetailForm, rollForm } from '../columns'
const activeKey = ref('1')
//
const [registerForm,
{
@ -868,6 +866,8 @@ async function handleSave() {
createMessage.error(res.message)
loading.value = false
}
}).catch(error => {
loading.value = false
})
} finally {
}
@ -999,20 +999,31 @@ function getWeek(dateTime) {
}
.box-item {
border: 1px solid rgba(232, 235, 237, 1);
padding: 15px;
margin-bottom: 20px
padding: 15px 20px;
margin-bottom: 16px;
border-radius: 6px;
background: rgba(255, 255, 255, 1);
border: 1px solid rgba(204, 214, 223, 1);
}
.main {
display: flex;
background-color: rgba(240, 242, 245, 1);
.box-top {
height: 48px;
line-height: 48px;
background-color: white;
padding-left: 20px;
margin-bottom: 10px;
}
}
.title {
font-weight: bold;
color: black;
margin-bottom: 15px;
font-size: 13px;
margin-bottom: 13px;
font-size: 14px;
}
.week {
@ -1263,8 +1274,10 @@ function getWeek(dateTime) {
.card {
border: 1px solid #E8EBED;
padding: 20px 16px;
border-radius: 6px;
background: rgba(255, 255, 255, 1);
border: 1px solid rgba(204, 214, 223, 1);
margin-bottom: 20px;
.title {
@ -1290,7 +1303,7 @@ function getWeek(dateTime) {
}
:deep(.ds-table .ant-table-container,
.ds-table-detail .ant-table-container) {
.ds-table-detail .ant-table-container) {
padding: 0px !important;
}
@ -1320,7 +1333,7 @@ function getWeek(dateTime) {
}
:deep(.ant-select-single .ant-select-selector .ant-select-selection-item,
.ant-select-single .ant-select-selector .ant-select-selection-placeholder) {
.ant-select-single .ant-select-selector .ant-select-selection-placeholder) {
line-height: 26px;
}
}
@ -1328,15 +1341,17 @@ function getWeek(dateTime) {
.use-list {
display: flex;
flex-wrap: wrap;
font-size: 12px;
.item {
border: 1px solid rgba(232, 235, 237, 1);
padding: 5px;
background: #f5f9fc;
border-radius: 4px;
background: rgba(240, 242, 245, 1);
color: black;
margin-right: 15px;
display: flex;
margin-bottom: 10px;
height: 26px;
line-height: 26px;
align-items: center;
justify-content: space-around;
}
@ -1345,4 +1360,74 @@ function getWeek(dateTime) {
cursor: pointer;
}
}
:deep(.ant-tabs-nav-list) {
display: flex;
width: 100%;
height: 48px;
line-height: 48px;
}
:deep(.ant-tabs-tab + .ant-tabs-tab) {
margin: 0px !important;
}
:deep(.ant-tabs-ink-bar) {
height: 3px !important;
}
:deep(.ant-tabs-tab-btn) {
font-size: 12px;
font-weight: 200;
color: #7a8996;
line-height: 14px;
}
:deep(.ant-tabs-tab-active .ant-tabs-tab-btn) {
color: #121826 !important;
font-weight: bold;
}
:deep(.ant-tabs-tab) {
display: inline-block;
text-align: center;
width: 5%;
line-height: 12px;
padding: 17px 0;
}
:deep(.ant-tabs-nav) {
margin: 0px !important;
}
.icon-box {
border-radius: 4px;
background: rgba(255, 255, 255, 1);
margin-right: 10px;
cursor: pointer;
height: 26px;
width: 26px;
line-height: 27px;
text-align: center;
display: inline-block;
}
.ctn-btn {
cursor: pointer;
font-size: 12px;
margin-left: 8px;
border-radius: 4px;
background: rgba(240, 242, 245, 1);
padding: 5px 6px;
font-weight: 300;
.iconfont {
font-size: 14px
}
}
.gray {
background: rgba(240, 242, 245, 1) !important;
margin-left: 10px;
}
</style>

@ -166,7 +166,26 @@ const [
queryStr.value = formatParams(p)
return formatParams(p)
},
mergeRowMethod: ({ row, _rowIndex, column, visibleData }) => {
const arr = ['saleTime', 'sellingPrice', 'goodsName', 'shipper', 'sale', 'business', 'op', 'doc', 'custService', 'customerName']
if ((!arr.includes(column.property)) || column.type === 'checkbox' || column.field === 'caozuo') {
const prevRow = visibleData[_rowIndex - 1];
let nextRow = visibleData[_rowIndex + 1];
if (prevRow && prevRow.id === row.id) {
return { rowspan: 0, colspan: 0 };
} else {
let countRowspan = 1;
while (nextRow && nextRow.id === row.id) {
nextRow = visibleData[++countRowspan + _rowIndex];
}
if (countRowspan > 1) {
return { rowspan: countRowspan, colspan: 1 };
}
}
}
},
columns,
isMerge:true,
formConfig: {
labelWidth: 120,
schemas: searchFormSchema,
@ -186,6 +205,9 @@ const [
canResize: true,
resizeHeightOffset: 45,
immediate: true,
tableComponent: 'vxe',
id: '0',
autoHeight: window.innerHeight - 325.5
})
const generation = ref('')
function handleOpenSlot(row) {

File diff suppressed because it is too large Load Diff

@ -9,7 +9,7 @@
<span @click="handleSendAll" class="iconfont icon-piliangtijiao-danse">批量发送</span>
<span @click="openTime" class="icon-dingshidingcang-danse iconfont">定时订舱</span>
<a-popconfirm title="确认取消吗?" ok-text="" cancel-text="" @confirm="cancelTime">
<span @click="openTime" class="icon-quxiaodingshi-danse iconfont">取消定时</span>
<span class="icon-quxiaodingshi-danse iconfont">取消定时</span>
</a-popconfirm>
</TableButton>
</a-spin>
@ -41,8 +41,8 @@
</template>
</template>
</BasicTable>
<cabinModal @handleSuccess="handleSuccess" @handleSuccessCopy="handleSuccessCopy" @register="registerModal">
</cabinModal>
<!-- <cabinModal @handleSuccess="handleSuccess" @handleSuccessCopy="handleSuccessCopy" @register="registerModal">
</cabinModal> -->
<a-modal title="输入复制数量" :visible="copyflag" :footer="null" @cancel="copyflag = false">
<a-form ref="formRef" :rules="rules" :model="copyMoreForm" :label-col="{ span: 5 }" :wrapper-col="{ span: 12 }">
@ -94,13 +94,13 @@ import {
} from './api'
import { columns, searchFormSchema } from './columns'
import { BulbFilled, CheckCircleFilled } from '@ant-design/icons-vue';
import cabinModal from './detail.vue'
import { useModal } from '/@/components/Modal'
import { reactive, ref, h, onMounted } from 'vue';
import { useGo } from '/@/hooks/web/usePage'
import { useMessage } from '../../../hooks/web/useMessage'
import { formatParams } from '/@/hooks/web/common'
const { createMessage } = useMessage()
const [registerModal, { openModal }] = useModal()
const go = useGo()
const [registerTable, { reload, getVxeSelectRows, setLoading }] = useTable({
api: async (p) => {
const res: API.DataResult = await mskGetPage(p)
@ -155,10 +155,10 @@ function getTaskTimeList() {
}
function handleEdit(row) {
if (row.bookingChannelType === 'CON_API') {
openModal(true, { mskBookType: 'api', id: row.id })
go('/cabinBookingDetail?mskBookType=api&id='+row.id)
}
if (row.bookingChannelType === 'SPOT_API') {
openModal(true, { mskBookType: 'spot', id: row.id })
go('/cabinBookingDetail?mskBookType=spot&id='+row.id)
}
}
const timeFlag = ref(false)
@ -188,14 +188,14 @@ function handleDelete() {
}
function handleAdd() {
if (tenantParam.value.length === 0) {
openModal(true, { mskBookType: 'api' })
go('/cabinBookingDetail?mskBookType=api')
}
if (tenantParam.value.length === 1) {
if (tenantParam.value[0] === 'MSK_CON_API') {
openModal(true, { mskBookType: 'api' })
go('/cabinBookingDetail?mskBookType=api')
}
if (tenantParam.value[0] === 'MSK_SPOT_API') {
openModal(true, { mskBookType: 'api' })
go('/cabinBookingDetail?mskBookType=api')
}
}
if (tenantParam.value.length > 1) {
@ -223,10 +223,10 @@ const mskSpotFlag = ref(false)
const mskApiFlag = ref(false)
function handleOpen(type) {
if (type === 'api') {
openModal(true, { mskBookType: 'api', type: 'add' })
go('/cabinBookingDetail?mskBookType=api&type=add')
}
if (type === 'spot') {
openModal(true, { mskBookType: 'spot', type: 'add' })
go('/cabinBookingDetail?mskBookType=spot&type=add')
}
addFlag.value = false
}
@ -247,10 +247,12 @@ function handleChange() {
return item.id
})
if (select[0].bookingChannelType === 'CON_API') {
openModal(true, { mskBookType: 'api', id: pkIdArr[0], type: 'copy', number: copyMoreForm.number, copyId: pkIdArr[0] })
// openModal(true, { mskBookType: 'api', id: pkIdArr[0], type: 'copy', number: copyMoreForm.number, copyId: pkIdArr[0] })
go('/cabinBookingDetail?mskBookType=api&type=copy&number='+copyMoreForm.number+'&copyId='+pkIdArr[0]+'&id='+pkIdArr[0])
}
if (select[0].bookingChannelType === 'SPOT_API') {
openModal(true, { mskBookType: 'spot', id: pkIdArr[0], type: 'copy', number: copyMoreForm.number, copyId: pkIdArr[0] })
// openModal(true, { mskBookType: 'spot', id: pkIdArr[0], type: 'copy', number: copyMoreForm.number, copyId: pkIdArr[0] })
go('/cabinBookingDetail?mskBookType=spot&type=copy&number='+copyMoreForm.number+'&copyId='+pkIdArr[0]+'&id='+pkIdArr[0])
}
copyflag.value = false
}

@ -2050,7 +2050,9 @@ html[data-theme='black'] .box-text:hover{
cursor: pointer;
}
}
:deep(.ant-table-body){
background-color: #f0f2f5;
}
:deep(.ant-table-cell) {
text-align: left !important;
}

@ -11,11 +11,11 @@
<a-spin :spinning="loading">
<div style="padding-left: 20px;margin-top: 20px">
<div> 船公司</div>
<a-select size="small" @change="handleChangeSearch" v-model:value="carrierId"
style="width: 24%;margin-right: 20px">
<a-select size="small" @change="handleChangeSearch" show-search @search="handleSearch"
v-model:value="carrierId" style="width: 24%;margin-right: 20px">
<a-select-option v-for="item in carrierList" :key="item.carrierId" :value="item.carrierId">{{
item.carrier
}}</a-select-option>
}}</a-select-option>
</a-select>
</div>
<div class="list">
@ -23,7 +23,7 @@
<div class="left">
<div class="card-title"> 操作
<TableButton :show="{}">
<span @click="handleEdit('Operator')" class="iconfont icon-piliangbianji">修改</span>
<span @click="handleEdit('Operator')" class="iconfont icon-bianji-danse">修改</span>
</TableButton>
</div>
<div class="taskTypeList">
@ -38,7 +38,8 @@
<div class="left">
<div class="card-title"> 单证
<TableButton :show="{}">
<span @click="handleEdit('VouchingClerk')" class="iconfont icon-piliangbianji">修改</span>
<span @click="handleEdit('VouchingClerk')"
class="iconfont icon-bianji-danse">修改</span>
</TableButton>
</div>
<div class="taskTypeList">
@ -55,7 +56,7 @@
<div class="left">
<div class="card-title"> 销售
<TableButton :show="{}">
<span @click="handleEdit('Sale')" class="iconfont icon-piliangbianji">修改</span>
<span @click="handleEdit('Sale')" class="iconfont icon-bianji-danse">修改</span>
</TableButton>
</div>
<div class="taskTypeList">
@ -68,13 +69,13 @@
</div>
</div>
<!-- <div title="报关员" class="card">
<div class="card-title"> <i @click="handleEdit('Custom')" class="icon-piliangbianji iconfont"></i> </div>
<div class="card-title"> <i @click="handleEdit('Custom')" class="icon-bianji-danse iconfont"></i> </div>
<div class="taskType" v-for="(item, index) in roleTaskData.customTaskTypeList" :key="index">{{
item.taskTypeName }}
</div>
</div>
<div title="财务" class="card">
<div class="card-title"> <i @click="handleEdit('FinancialStaff')" class="icon-piliangbianji iconfont"></i> </div>
<div class="card-title"> <i @click="handleEdit('FinancialStaff')" class="icon-bianji-danse iconfont"></i> </div>
<div class="taskType" v-for="(item, index) in roleTaskData.financialStaffTaskTypeList" :key="index">{{
item.taskTypeName }}
</div>
@ -83,7 +84,8 @@
<div class="left">
<div class="card-title"> 客服
<TableButton :show="{}">
<span @click="handleEdit('CustomerService')" class="iconfont icon-piliangbianji">修改</span>
<span @click="handleEdit('CustomerService')"
class="iconfont icon-bianji-danse">修改</span>
</TableButton>
</div>
<div class="taskTypeList">
@ -96,13 +98,13 @@
</div>
</div>
<!-- <div title="司机" class="card">
<div class="card-title"> <i @click="handleEdit('Driver')" class="icon-piliangbianji iconfont"></i> </div>
<div class="card-title"> <i @click="handleEdit('Driver')" class="icon-bianji-danse iconfont"></i> </div>
<div class="taskType" v-for="(item, index) in roleTaskData.driverTaskTypeList" :key="index">{{
item.taskTypeName }}
</div>
</div>
<div title="派车调度人员" class="card">
<div class="card-title"> <i @click="handleEdit('Dispatcher')" class="icon-piliangbianji iconfont"></i> </div>
<div class="card-title"> <i @click="handleEdit('Dispatcher')" class="icon-bianji-danse iconfont"></i> </div>
<div class="taskType" v-for="(item, index) in roleTaskData.dispatcherTaskTypeList" :key="index">{{
item.taskTypeName }}
</div>
@ -131,8 +133,8 @@
<div>船公司</div>
<a-select @change="handleChangeCarrier" v-model:value="carrierIdAll" style="width: 180px">
<a-select-option v-for="item in carrierListAll" :key="item.id" :value="item.id">{{
item.shortName
}}</a-select-option>
item.pinYinCode
}}</a-select-option>
</a-select>
</div>
<div>
@ -140,7 +142,7 @@
<a-select mode="multiple" v-model:value="taskTypeCode" style="width: 500px">
<a-select-option v-for="item in taskType" :key="item.code" :value="item.code">{{
item.name
}}</a-select-option>
}}</a-select-option>
</a-select>
</div>
</div>
@ -153,6 +155,7 @@ import { ref, onMounted } from 'vue'
import { GetCarrierlist } from '/@/views/operation/seaexport/api/BookingLedger'
import { GetTaskPlatEnumDict, TaskAllocationSave, TaskAllocationGetList, GetContainsCarrierList, GetCreateTaskConfigList, SaveCreateTaskConfig } from '../api'
import { useMessage } from '../../../hooks/web/useMessage'
import { GetCarrierSelectList } from '/@/api/common'
const { createMessage } = useMessage()
const open = ref(false)
const carrierIdAll = ref('')
@ -210,8 +213,8 @@ function handleSave() {
} as any
carrierListAll.value.forEach(item => {
if (item.id === carrierIdAll.value) {
data.carrier = item.shortName
data.carrierCode = item.codeName
data.carrier = item.cnName
data.carrierCode = item.code
}
})
const arr = [] as any
@ -249,6 +252,16 @@ function handleSave() {
})
}
const taskTypeList = ref([]) as any
function handleSearch(val) {
GetCarrierSelectList({queryKey: val}).then(res => {
carrierListAll.value = res.data
carrierListAll.value.unshift({
pinYinCode: '默认',
code: '',
id: ''
})
})
}
function handleChange(val) {
if (val == 2) {
loading.value = true
@ -302,10 +315,10 @@ onMounted(() => {
}
})
})
GetCarrierlist().then((res) => {
GetCarrierSelectList({queryKey:''}).then((res) => {
carrierListAll.value = res.data
carrierListAll.value.unshift({
shortName: '默认',
pinYinCode: '默认',
code: '',
id: ''
})
@ -419,6 +432,8 @@ function searchInfo() {
:deep(.ant-tabs-nav-list) {
display: flex;
width: 100%;
height: 48px;
line-height: 48px;
}
:deep(.ant-tabs-tab + .ant-tabs-tab) {
@ -428,18 +443,29 @@ function searchInfo() {
:deep(.ant-tabs-ink-bar) {
height: 3px !important;
}
:deep(.ant-tabs-tab-btn){
font-size: 14px;
font-weight: 200;
color: #7a8996;
line-height: 14px;
}
:deep(.ant-tabs-tab-active .ant-tabs-tab-btn){
color: #121826 !important;
font-weight: bold;
}
:deep(.ant-tabs-tab) {
display: inline-block;
text-align: center;
width: 5%;
line-height: 14px;
padding: 17px 0;
}
:deep(.ant-tabs-nav) {
margin: 0px !important;
}
:deep(.vben-ds-table-button .iconfont){
top: 0px;
:deep(.vben-ds-table-button .iconfont) {
top: 0px;
}
</style>
Loading…
Cancel
Save