szh-new
张同海 4 months ago
parent 42fb85624d
commit a635bbf6c8

@ -11,11 +11,19 @@
</div>
<div class="btn-box">
<dl>
<dt class="iconfont icon-zhankai2" style="transform: rotate(90deg); position: relative; left: 4px; bottom: -2px;" @click="toPage('next')"></dt>
<dt
class="iconfont icon-zhankai2"
style="transform: rotate(90deg); position: relative; left: 4px; bottom: -2px"
@click="toPage('next')"
></dt>
<dd>上一票</dd>
</dl>
<dl>
<dt class="iconfont icon-zhankai2" style="transform: rotate(270deg);; position: relative; left: -4px; bottom: -2px;" @click="toPage('last')"></dt>
<dt
class="iconfont icon-zhankai2"
style="transform: rotate(270deg); position: relative; left: -4px; bottom: -2px"
@click="toPage('last')"
></dt>
<dd>下一票</dd>
</dl>
<dl v-if="temId" @click="openPrint">
@ -29,7 +37,7 @@
<dl v-if="save" @click="saveHandle">
<dt v-if="!saveFlag" class="iconfont icon-baocun1"></dt>
<dt v-else>
<img src="../../assets/images/loading.gif" alt="">
<img src="../../assets/images/loading.gif" alt="" />
</dt>
<dd>保存</dd>
</dl>
@ -39,10 +47,7 @@
</dl>
</div>
</div>
<DsPrint
ref="dsPrint"
:id="temId"
/>
<DsPrint ref="dsPrint" :id="temId" />
</div>
</template>
<script lang="ts">
@ -75,22 +80,22 @@
// idkey
name: {
type: String,
default: null
default: null,
},
//
save: {
type: Function,
default: null
default: null,
},
//
submit: {
type: Function,
default: null
default: null,
},
},
emits: ['copy'],
components: {
DsPrint
DsPrint,
},
setup(props, context) {
const { t } = useI18n()
@ -130,8 +135,8 @@
go({
path: route.path,
query: {
id
}
id,
},
})
} else {
createMessage.warning('列表页面数据丢失,请回退列表页面后重试!')
@ -142,7 +147,7 @@
// }
// console.log(ids)
}
//
//
const saveHandle = async () => {
saveFlag.value = true
await props.save()
@ -155,7 +160,7 @@
saveHandle,
copy,
toPage,
saveFlag
saveFlag,
}
},
})
@ -172,14 +177,14 @@
width: 52px;
opacity: 1;
border-radius: 4px;
background: #FFFFFF;
border-top: 2px solid #257AFA;
box-shadow: 0px 5px 10px #6D8AB0;
background: #ffffff;
border-top: 2px solid #257afa;
box-shadow: 0px 5px 10px #6d8ab0;
.tip {
display: inline-block;
width: 3px;
height: 3px;
background: #E1EBFA;
background: #e1ebfa;
margin: 0 1px 0px 1px;
}
.tip:nth-child(n + 6) {
@ -193,11 +198,12 @@
dl {
border-radius: 2px;
}
dl, dd {
dl,
dd {
margin: 0;
}
dt {
color: #257AFA;
color: #257afa;
font-size: 15px;
height: 21px;
padding-top: 3px;
@ -209,8 +215,9 @@
padding-bottom: 3px;
}
dl:hover {
background: #257AFA;
dt, dd {
background: #257afa;
dt,
dd {
color: #ffffff;
}
}

@ -4,3 +4,6 @@
.icon-lock-openkaisuo {
color: #7a8798;
}
.IconColor {
color: #257afa !important;
}

@ -1,85 +1,73 @@
import { BasicColumn, FormSchema } from '/@/components/Table'
export const searchFormSchema: FormSchema[] = [
{ field: 'billNo', label: '对账编号', component: 'Input', colProps: { span: 4 } },
{ field: 'customerName', label: '对账客户名称', component: 'Input', colProps: { span: 4 } },
// {
// field: 'mblno',
// label: '对账客户',
// component: 'Input',
// colProps: { span: 4 },
// },
// {
// field: 'mblno',
// label: '从对账日期',
// component: 'Input',
// colProps: { span: 4 },
// },
// {
// field: 'mblno',
// label: '到对账日期',
// component: 'Input',
// colProps: { span: 4 },
// },
// {
// field: 'mblno',
// label: '账单说明',
// component: 'Input',
// colProps: { span: 4 },
// },
// {
// field: 'mblno',
// label: '对账人',
// component: 'Input',
// colProps: { span: 4 },
// },
// {
// field: 'mblno',
// label: '业务相关编号',
// component: 'Input',
// colProps: { span: 4 },
// },
// {
// field: 'mblno',
// label: '从业务日期',
// component: 'Input',
// colProps: { span: 4 },
// },
// {
// field: 'mblno',
// label: '到业务日期',
// component: 'Input',
// colProps: { span: 4 },
// },
// {
// field: 'mblno',
// label: '船名',
// component: 'Input',
// colProps: { span: 4 },
// },
// {
// field: 'mblno',
// label: '航次',
// component: 'Input',
// colProps: { span: 4 },
// },
// {
// field: 'mblno',
// label: '状态',
// component: 'Input',
// colProps: { span: 2 },
// },
// {
// field: 'mblno',
// label: '备注',
// component: 'Input',
// colProps: { span: 2 },
// },
]
export const billTypeData = [
{ code: 0, value: '全部' },
{ code: 1, value: '应收' },
{ code: 2, value: '应付' },
]
export const searchFormSchema: FormSchema[] = [
{ field: 'billNo', label: '对账编号', component: 'Input', colProps: { span: 4 } },
{ field: 'billName', label: '对账单名称', component: 'Input', colProps: { span: 4 } },
{
field: 'billType',
label: '收付类型',
component: 'Select',
colProps: { span: 4 },
componentProps: {
options: billTypeData,
},
},
{ field: 'customerName', label: '对账客户名称', component: 'Input', colProps: { span: 4 } },
{ field: 'isNoTax', label: '是否不含税', component: 'Switch', colProps: { span: 4 } },
{
field: 'rmbdr',
label: '应收RMB',
component: 'Input',
colProps: { span: 4 },
},
{
field: 'balrmbdr',
label: '未收RMB',
component: 'Input',
colProps: { span: 4 },
},
{
field: 'usddr',
label: '应收USD',
component: 'Input',
colProps: { span: 4 },
},
{
field: 'balusddr',
label: '未收USD',
component: 'Input',
colProps: { span: 4 },
},
{
field: 'rmbcr',
label: '应付RBM',
component: 'Input',
colProps: { span: 4 },
},
{
field: 'balrmbcr',
label: '未付RMB',
component: 'Input',
colProps: { span: 4 },
},
{
field: 'usdcr',
label: '应付USD',
component: 'Input',
colProps: { span: 4 },
},
{
field: 'balusdcr',
label: '未付USD',
component: 'Input',
colProps: { span: 4 },
},
]
//列表
export const columns: BasicColumn[] = [
{ title: '对账编号', dataIndex: 'billNo', align: 'left' },

@ -78,7 +78,7 @@ export const schemas: FormSchema[] = [
field: 'isLocking',
component: 'Select',
label: '业务锁定',
colProps: { span: 2 },
colProps: { span: 4 },
dynamicDisabled: true,
defaultValue: false,
componentProps: {

@ -1,96 +1,110 @@
<template>
<div class="CsMain p-4" id="detail">
<div class="buttonBox">
<div class="nav" @click="Save"> <i class="iconfont icon-icon_baocun"></i>保存</div>
<div class="nav" @click="waitFor"> <i class="iconfont icon-printing"></i>标准打印</div>
<!-- <div class="nav" @click="waitFor"> <i class="iconfont icon-dayinxiaopiao"></i>模板打印</div> -->
<div class="nav" @click="waitFor"> <i class="iconfont icon-icon_baocun"></i>保存并关闭</div>
<div class="nav" @click="waitFor"> <i class="iconfont icon-icon_baocun"></i>保存并新建</div>
<div class="nav" @click="Lock">
<Icon icon="ant-design:lock-outlined" class="iconfont" />
锁定
</div>
<div class="nav" @click="UnLock">
<Icon icon="ant-design:unlock-outlined" class="iconfont" />
撤销锁定
<!-- <div @click="Save"> <i class="iconfont icon-icon_baocun"></i>保存</div> -->
<!-- <div @click="waitFor"> <i class="iconfont icon-printing"></i>标准打印</div> -->
<!-- <div @click="waitFor"> <i class="iconfont icon-icon_baocun"></i>保存并关闭</div> -->
<!-- <div > <i class="iconfont icon-jiahao2fill"></i>费用提交审核</div> -->
<div class="left">
<a-button type="link" @click="Lock">
<span class="iconfont icon-locksuo IconColor"></span>
锁定
</a-button>
<a-button type="link" @click="UnLock">
<span class="iconfont icon-lock-openkaisuo IconColor"></span>
撤销锁定
</a-button>
</div>
<div class="nav"> <i class="iconfont icon-jiahao2fill"></i>费用提交审核</div>
<a-button type="link" @click="addDetail">
<span class="iconfont icon-new_document"></span>
新建
</a-button>
</div>
<a-tabs v-model:activeKey="activeKey" type="card" class="CsTabs">
<a-tab-pane key="1" tab="账单明细">
<a-row class="CsHeader" :gutter="5">
<a-col :span="24" class="headerForm">
<a-spin :spinning="spinningT">
<BasicForm @register="registerForm" />
</a-spin>
</a-col>
</a-row>
<a-row class="CsBottom" :gutter="5">
<a-col :span="17" class="bottomTableL">
<a-spin :spinning="spinningL">
<BasicTable
class="ds-table"
@register="registerTableL"
@selection-change="selectionChange"
>
<template #toolbar>
<div class="buttonGroup">
<div class="nav" @click="addDetail">
<i class="iconfont icon-jiahao2fill"></i>增加账单明细
</div>
<a-popconfirm
title="是否要删除选中数据?"
ok-text="是"
cancel-text="否"
@confirm="DelDetailL"
>
<div class="nav">
<i class="iconfont icon-shanchu2"></i>
删除账单明细
</div>
</a-popconfirm>
<!-- <div class="nav" @click="RowClick">
<i class="iconfont icon-bianjiwenjian"></i>
测试 后期改为双击
</div> -->
</div>
</template>
</BasicTable>
</a-spin>
</a-col>
<a-col :span="7" class="bottomTableR">
<a-spin :spinning="spinningR">
<BasicTable class="ds-table" @register="registerTableR">
<template #toolbar>
<div class="buttonGroup">
<a-popconfirm
title="是否要删除选中数据?"
ok-text="是"
cancel-text="否"
@confirm="DelDetailR"
>
<div class="nav">
<i class="iconfont icon-shanchu2"></i>
删除账单费用明细
</div>
</a-popconfirm>
<!-- <a-tabs v-model:activeKey="activeKey" type="card" class="CsTabs">
<a-tab-pane key="1" tab="账单明细"> -->
<ActionBar
:id="route.query.id"
temId="1777229219986804736"
name="khdz"
:save="Save"
></ActionBar>
<a-row class="CsHeader" :gutter="5">
<a-col :span="24" class="headerForm">
<a-spin :spinning="spinningT">
<BasicForm @register="registerForm" />
</a-spin>
</a-col>
</a-row>
<!-- <a-row class="CsBottom" :gutter="5">
<a-col :span="24" class="bottomTableL"> -->
<div class="CsBottom">
<div class="bottomTableL">
<a-spin :spinning="spinningL">
<BasicTable
class="ds-table"
@register="registerTableL"
@selection-change="selectionChange"
>
<template #tableTitle>
<p class="tableTitle">账单明细</p>
<a-popconfirm
title="确定删除当前选中数据?"
ok-text="是"
cancel-text="否"
@confirm="DelDetailL"
>
<a-button type="link">
<span class="iconfont icon-shanchu21"></span>
删除账单明细
</a-button>
</a-popconfirm>
<a-button type="link" @click="waitFor">
<span class="iconfont icon-fujian"></span>
附件管理
</a-button>
</template>
</BasicTable>
</a-spin>
</div>
<div class="bottomTableR">
<a-spin :spinning="spinningR">
<BasicTable class="ds-table" @register="registerTableR">
<template #toolbar>
<div class="buttonGroup">
<a-popconfirm
title="是否要删除选中数据?"
ok-text="是"
cancel-text="否"
@confirm="DelDetailR"
>
<div>
<i class="iconfont icon-shanchu2"></i>
删除账单费用明细
</div>
</template>
</BasicTable>
</a-spin>
</a-col>
</a-row>
</a-tab-pane>
</a-popconfirm>
</div>
</template>
</BasicTable>
</a-spin>
</div>
</div>
<!-- </a-col>
<a-col :span="24" class="bottomTableR"> -->
<!-- </a-col>
</a-row> -->
<!-- </a-tab-pane>
<a-tab-pane key="2" tab="附件">
<BasicTable class="ds-table" @register="registerTableFile">
<template #toolbar>
<div class="buttonGroup">
<div class="nav">
<div>
<i class="iconfont icon-shanchu2"></i>
删除
</div>
<div class="nav" @click="OpenFileModal">
<div @click="OpenFileModal">
<i class="iconfont icon-shiyongwendang"></i>
上传附件
</div>
@ -98,7 +112,7 @@
</template>
</BasicTable>
</a-tab-pane>
</a-tabs>
</a-tabs> -->
<Info
ref="RefInfo"
@register="registerAdd"
@ -190,8 +204,8 @@
showTableSetting: false,
bordered: true,
showIndexColumn: true,
canResize: true,
resizeHeightOffset: 35,
// canResize: true,
// resizeHeightOffset: 3500,
immediate: false,
},
)
@ -405,15 +419,20 @@
}
</style>
<style lang="less">
@import url('/@/styles/buttonGroup.scss');
.CsMain {
height: 100%;
display: flex;
flex-direction: column;
.buttonBox {
background: #fff;
padding: 5px 10px;
margin-bottom: 5px;
display: flex;
// flex: 1;
.left {
display: flex;
flex: 1;
> div {
margin-right: 5px;
}
}
}
.CsTabs {
height: calc(100% - 43px);
@ -429,21 +448,62 @@
}
.CsHeader {
padding-bottom: 0 !important;
margin: 0 0 10px 0 !important;
border: 1px solid #e8ebed;
.headerForm {
background: #fff;
padding: 10px 15px 0 15px !important;
margin-bottom: 5px;
padding: 5px 15px 10px 15px !important;
}
}
.CsBottom {
flex: 1;
padding-top: 0 !important;
height: calc(100vh - 300px);
display: flex;
flex-direction: column;
// flex: 1;
// padding-top: 0 !important;
.bottomTableL {
padding-left: 0 !important;
height: calc(100vh - 535px);
border: 1px solid #e8ebed;
margin-bottom: 10px;
}
.bottomTableR {
padding-right: 0 !important;
height: calc(100vh - 600px);
border: 1px solid #e8ebed;
}
.ant-spin-nested-loading {
height: 100%;
.ant-spin-container {
height: 100%;
.ds-table {
height: 100%;
.ant-table-wrapper {
height: 100%;
.ant-spin-nested-loading {
height: 100%;
.ant-spin-container {
height: 100%;
.ant-table {
height: calc(100% - 30px);
.ant-table-container {
height: calc(100% - 54px);
}
}
}
}
}
}
}
}
}
}
.tableTitle {
margin: 0;
font-size: 12px;
font-weight: 700;
letter-spacing: 1px;
line-height: 15.84px;
color: rgba(51, 56, 61, 1);
text-align: left;
vertical-align: bottom;
}
</style>

@ -9,28 +9,20 @@
}
"
>
<!-- <template #form-more>
<a-button type="link">多提单号查询</a-button>
<a-button type="link">高级查询</a-button>
</template> -->
<template #tableTitle>
<div class="buttonGroup">
<a-button type="link" @click="Lock">
<span class="iconfont icon-locksuo"></span>
<span class="iconfont icon-locksuo IconColor"></span>
锁定
</a-button>
<a-button type="link" @click="UnLock">
<span class="iconfont icon-lock-openkaisuo"></span>
<span class="iconfont icon-lock-openkaisuo IconColor"></span>
撤销锁定
</a-button>
<a-button type="link" @click="ExportExcel">
<span class="iconfont icon-weibiaoti--"></span>
EXCEL导出
</a-button>
<a-button type="link" @click="printFee">
<span class="iconfont icon-xiaopiaodayin"></span>
打印
</a-button>
</div>
</template>
<template #toolbar>
@ -44,15 +36,43 @@
删除
</a-button>
</a-popconfirm>
<a-button type="link" @click="printFee">
<span class="iconfont icon-xiaopiaodayin"></span>
打印
</a-button>
</template>
<template v-slot:bodyCell="{ column, record }">
<template v-if="column.key === 'action'">
<TableAction
:actions="[
{
icon: 'clarity:note-edit-line',
tooltip: '编辑',
onClick: () => {
GoDetailed(true, record)
},
},
]"
/>
</template>
</template>
</BasicTable>
<!-- 合计 -->
<div>
<a-table
class="ds-table"
:columns="calcColumns"
:data-source="calcData"
:pagination="false"
></a-table>
</div>
<DsPrint ref="dsPrint" name="客户对账"></DsPrint>
</div>
</template>
<script lang="ts" setup>
import { ref } from 'vue'
import { GetCheckBillList, CheckBillLocking, CheckBillUnLocking } from './api.js'
import { BasicTable, useTable } from '/@/components/Table'
import { BasicTable, useTable, TableAction } from '/@/components/Table'
import { columns, searchFormSchema, billTypeData } from './columns'
import { GetOpenPrintModuleList } from '/@/views/operation/seaexport/api/BookingLedger.js'
import * as XLSX from 'xlsx'
@ -61,52 +81,70 @@
const { notification } = useMessage()
import { useGo } from '/@/hooks/web/usePage'
const go = useGo()
//
import { formatParams } from '/@/hooks/web/common'
import { useAppStore } from '/@/store/modules/app'
const appStore = useAppStore()
//
const [registerTable, { getForm, getPaginationRef, getSelectRows, getRawDataSource }] = useTable({
title: '',
api: async (p) => {
const res: API.DataResult = await GetCheckBillList(p)
calcData.value = [res.data?.dataTotal]
return new Promise((resolve) => {
if (res?.data) {
const ids = res.data.map((item) => {
return item.id
})
appStore.setIds(ids, 'khdz')
}
resolve({ data: [...res.data], total: res.count })
})
},
beforeFetch: () => {
var currentPageInfo: any = getPaginationRef()
var data = getForm().getFieldsValue()
const postParam: API.PageRequest = {
queryCondition: '',
pageCondition: {
pageIndex: currentPageInfo.current,
pageSize: currentPageInfo.pageSize,
sortConditions: [],
},
}
postParam.pageCondition.sortConditions.push({
sortField: 'createTime',
listSortDirection: 1,
})
let condition: API.ConditionItem[] = []
if (!!data.billNo) {
condition.push({
FieldName: 'billNo',
FieldValue: data.billNo,
ConditionalType: 1,
})
}
if (!!data.customerName) {
condition.push({
FieldName: 'customerName',
FieldValue: data.customerName,
ConditionalType: 1,
})
}
postParam.queryCondition = JSON.stringify(condition)
return postParam
//
beforeFetch: (p) => {
return formatParams(p)
},
// beforeFetch: () => {
// var currentPageInfo: any = getPaginationRef()
// var data = getForm().getFieldsValue()
// const postParam: API.PageRequest = {
// queryCondition: '',
// pageCondition: {
// pageIndex: currentPageInfo.current,
// pageSize: currentPageInfo.pageSize,
// sortConditions: [],
// },
// }
// postParam.pageCondition.sortConditions.push({
// sortField: 'createTime',
// listSortDirection: 1,
// })
// let condition: API.ConditionItem[] = []
// if (!!data.billNo) {
// condition.push({
// FieldName: 'billNo',
// FieldValue: data.billNo,
// ConditionalType: 1,
// })
// }
// if (!!data.customerName) {
// condition.push({
// FieldName: 'customerName',
// FieldValue: data.customerName,
// ConditionalType: 1,
// })
// }
// postParam.queryCondition = JSON.stringify(condition)
// return postParam
// },
columns,
formConfig: {
labelWidth: 120,
//
schemas: searchFormSchema,
// ()
useAdvancedSearch: true,
},
isTreeTable: false,
pagination: true,
@ -119,8 +157,14 @@
width: 60,
},
canResize: true,
resizeHeightOffset: 35,
resizeHeightOffset: 80,
immediate: true,
actionColumn: {
width: 80,
title: '操作',
dataIndex: 'action',
fixed: 'right',
},
})
//
function GoDetailed(type, data) {
@ -227,4 +271,69 @@
async function printFee() {
dsPrint.value.init()
}
//
const calcColumns = [
{
title: '应收RMB',
dataIndex: 'mainCount',
width: 110,
},
{
title: '未收RMB',
dataIndex: 'mainCount',
width: 110,
},
{
title: '应收USD',
dataIndex: 'mainCount',
width: 110,
},
{
title: '未收USD',
dataIndex: 'mainCount',
width: 110,
},
{
title: '应收其他币别',
dataIndex: 'mainCount',
width: 110,
},
{
title: '未收其他币别',
dataIndex: 'mainCount',
width: 110,
},
{
title: '应付RMB',
dataIndex: 'mainCount',
width: 110,
},
{
title: '未付RMB',
dataIndex: 'mainCount',
width: 110,
},
{
title: '应付USD',
dataIndex: 'mainCount',
width: 110,
},
{
title: '未付USD',
dataIndex: 'mainCount',
width: 110,
},
{
title: '应付其他币别',
dataIndex: 'mainCount',
width: 110,
},
{
title: '未付其他币别',
dataIndex: 'mainCount',
width: 110,
},
]
//
const calcData = ref([])
</script>

@ -119,6 +119,7 @@
title="多品名维护"
width="80%"
:visible="moreVisible"
v-if="moreVisible"
:confirmLoading="moreModelconfirm"
:maskClosable="false"
@cancel="handleModelCancel"
@ -132,12 +133,37 @@
alt=""
/>
</hot-table>
<div class="model-botton-box">
<!-- <div class="model-botton-box">
<a-button class="btn" type="primary" @click="addChildData"></a-button>
<a-button class="btn btn-delete" @click="removeChildData"></a-button>
<a-button class="btn" type="primary" @click="saveChildData"></a-button>
</div>
</div> -->
<a-spin :spinning="!moreSelectLoad">
<div class="flex" v-if="!isLockBooking" style="justify-content: space-between">
<div>
<a-button type="link" size="mini" @click="saveChildData">
<span class="iconfont icon-baocun"></span>
保存
</a-button>
</div>
<div>
<a-button type="link" size="mini" @click="addChildData">
<span class="iconfont icon-new_document"></span>
添加
</a-button>
<a-popconfirm
title="是否要删除选中数据?"
ok-text="是"
cancel-text="否"
@confirm="removeChildData"
>
<a-button type="link" size="mini">
<span class="iconfont icon-shanchu21"></span>
删除
</a-button>
</a-popconfirm>
</div>
</div>
<div class="model-child-table">
<input
class="ds-tb-check ds-goods-tb-check2"
@ -989,6 +1015,7 @@
})
})
}
const moreVisible = ref(false)
//
function openDialog() {
if (list.value.length === 0) {
@ -1013,9 +1040,10 @@
}
//
function handleModelCancel() {
moreVisible.value = false
moreTList.value.splice(0)
moreData.value = [[]]
moreSelectNum.value = ''
moreVisible.value = false
}
//
function addChildData() {
@ -1231,7 +1259,7 @@
}
},
})
const moreVisible = ref(false)
const id = ref()
const YarnLoading = ref(false)
const sealnoLoading = ref(false)
@ -1836,12 +1864,11 @@
// }),
//
const settings = {
height: 'auto',
width: '100%',
height: '208',
autoWrapRow: true,
autoWrapCol: true,
//
rowHeights: 32,
rowHeights: 26,
fixedColumnsLeft: 1,
//
hiddenColumns: {
@ -1976,7 +2003,7 @@
autoWrapRow: true,
autoWrapCol: true,
//
rowHeights: 32,
rowHeights: 26,
fixedColumnsLeft: 1,
//
@ -2064,7 +2091,7 @@
autoWrapRow: true,
autoWrapCol: true,
//
rowHeights: 32,
rowHeights: 26,
fixedColumnsLeft: 1,
//

@ -1,8 +1,3 @@
<!--
* @Description: 海运出口列表
* @Author: lijj
* @Date: 2024-04-29 11:54:04
-->
<template>
<div class="ds-sea-export-table">
<BasicTable class="ds-table" @register="registerTable" @row-dbClick="handledbclick">

Loading…
Cancel
Save