Commit 3283e02d authored by youjie's avatar youjie

邮轮冲抵

parent 5a4444fd
...@@ -406,6 +406,9 @@ ...@@ -406,6 +406,9 @@
.c059FF6 { .c059FF6 {
color: #059ff6; color: #059ff6;
} }
.c3FC4FF {
color: #3fc4ff;
}
.c9e { .c9e {
color: #9e9e9e; color: #9e9e9e;
} }
......
...@@ -161,4 +161,88 @@ ...@@ -161,4 +161,88 @@
} }
.pointer{ .pointer{
cursor: pointer; cursor: pointer;
} }
\ No newline at end of file
.bgf {
background: #ffffff;
}
.bgf5 {
background: #f5f5f5;
}
.bgE8F5E9 {
background: #e8f5e9;
}
.bgD9F3FF {
background: #d9f3ff;
}
.bgFAEAED {
background: #faeaed;
}
.bg3FC4FF {
background: #3FC4FF;
}
.bgF1416C{
background: #F1416C;
}
.bgff9800{
background: #ff9800;
}
.bj {
background: #ffffff;
}
.bjFFF3E0 {
background: #FFF3E0;
}
.radius5 {
border-radius: 5px;
}
.cblack {
color: black;
}
.cf {
color: #ffffff;
}
.c9e {
color: #9e9e9e;
}
.c20C997 {
color: #20c997;
}
.c02C854 {
color: #02c854;
}
.cff9800 {
color: #ff9800;
}
.cF1416C {
color: #f1416c;
}
.cF57A98 {
color: #f57a98;
}
.c04C8C8 {
color: #04c8c8;
}
.c059FF6 {
color: #059ff6;
}
.c3FC4FF {
color: #3fc4ff;
}
...@@ -2,6 +2,14 @@ ...@@ -2,6 +2,14 @@
<div class="base-list-manager" :class="customClass"> <div class="base-list-manager" :class="customClass">
<!-- 查询工具栏 --> <!-- 查询工具栏 -->
<div class="query-toolbar"> <div class="query-toolbar">
<div v-if="headConfiguration">
<div v-if="headConfiguration.DocumentStatus" class="row justify-end mb-sm">
<p>
<span class="groupTourOrderByTuan_ico fz14"><i class="bg3FC4FF"></i><span>{{$t('fnc.yidadan')}}</span></span>
<span class="groupTourOrderByTuan_ico fz14"><i class="bgF1416C"></i><span>{{$t('fnc.yhcnyshenhe')}}</span></span>
<span class="groupTourOrderByTuan_ico fz14"><i class="bgff9800"></i><span>{{$t('fnc.ytongguo')}}</span></span></p>
</div>
</div>
<el-button v-if="addActionConfig" size="medium" @click="handleAddAction">{{addActionConfig.buttonText||'新增'}}</el-button> <el-button v-if="addActionConfig" size="medium" @click="handleAddAction">{{addActionConfig.buttonText||'新增'}}</el-button>
<!-- 高级查询 --> <!-- 高级查询 -->
...@@ -29,7 +37,7 @@ ...@@ -29,7 +37,7 @@
<!-- 选择器 --> <!-- 选择器 -->
<el-select v-else-if="field.type === 'select'" v-model="advancedFilters[field.key]" <el-select v-else-if="field.type === 'select'" v-model="advancedFilters[field.key]"
:placeholder="field.placeholder" clearable size="small"> :placeholder="field.placeholder" clearable size="small" :filterable="field.filterable">
<el-option v-for="option in field.options" :key="option.value" :label="option.label" <el-option v-for="option in field.options" :key="option.value" :label="option.label"
:value="option.value"> :value="option.value">
</el-option> </el-option>
...@@ -72,8 +80,9 @@ ...@@ -72,8 +80,9 @@
<!-- 表格区域 --> <!-- 表格区域 -->
<div class="table-container"> <div class="table-container">
<el-table ref="table" :data="dataList" :loading="loading" v-bind="tableConfig" <el-table ref="table" :data="dataList" :loading="loading" v-bind="tableConfig"
@selection-change="handleSelectionChange" @sort-change="handleSortChange" @row-click="handleRowClick"> @selection-change="handleSelectionChange" @sort-change="handleSortChange"
@row-click="handleRowClick">
<!-- 调试信息 --> <!-- 调试信息 -->
<!-- <div v-if="dataList.length === 0" style="padding: 20px; text-align: center; color: red;"> <!-- <div v-if="dataList.length === 0" style="padding: 20px; text-align: center; color: red;">
...@@ -83,7 +92,7 @@ ...@@ -83,7 +92,7 @@
<!-- 动态列 --> <!-- 动态列 -->
<template v-for="(column, index) in columns"> <template v-for="(column, index) in columns">
<!-- 选择列 --> <!-- 选择列 -->
<el-table-column v-if="column.type === 'selection'" :key="index" type="selection" v-bind="column"> <el-table-column v-if="column.type === 'selection'" :key="index" type="selection" v-bind="column" :selectable="selectable">
</el-table-column> </el-table-column>
<!-- 索引列 --> <!-- 索引列 -->
...@@ -191,6 +200,7 @@ ...@@ -191,6 +200,7 @@
<!-- 列内容 --> <!-- 列内容 -->
<template #default="scope"> <template #default="scope">
<!-- 这里判断是否有插槽 --> <!-- 这里判断是否有插槽 -->
<template v-if="$scopedSlots[column.slotName]"> <template v-if="$scopedSlots[column.slotName]">
<slot <slot
:name="column.slotName" :name="column.slotName"
...@@ -199,7 +209,6 @@ ...@@ -199,7 +209,6 @@
:$index="scope.$index" :$index="scope.$index"
/> />
</template> </template>
<!-- 链接类型 --> <!-- 链接类型 -->
<span v-else-if="column.type === 'link'" class="table-link" @click="handleLinkClick(scope.row, column)"> <span v-else-if="column.type === 'link'" class="table-link" @click="handleLinkClick(scope.row, column)">
{{ getColumnValue(scope.row, column) }} {{ getColumnValue(scope.row, column) }}
...@@ -213,7 +222,6 @@ ...@@ -213,7 +222,6 @@
<!-- 默认文本 --> <!-- 默认文本 -->
<span v-else :class="column.className"> <span v-else :class="column.className">
{{ getColumnValue(scope.row, column) || (column.emptyText || '-') }} {{ getColumnValue(scope.row, column) || (column.emptyText || '-') }}
</span> </span>
</template> </template>
</el-table-column> </el-table-column>
...@@ -262,7 +270,7 @@ export default { ...@@ -262,7 +270,7 @@ export default {
default: () => ({ default: () => ({
height: '100%', height: '100%',
border: true, border: true,
stripe: true, // stripe: true,
size: 'mini' size: 'mini'
}) })
}, },
...@@ -337,7 +345,13 @@ export default { ...@@ -337,7 +345,13 @@ export default {
customClass: { customClass: {
type: String, type: String,
default: '' default: ''
} },
// 头部额外配置
headConfiguration: {
type: Object,
default: null
},
}, },
data() { data() {
...@@ -359,7 +373,10 @@ export default { ...@@ -359,7 +373,10 @@ export default {
drawerData: null, drawerData: null,
// 选中行 // 选中行
selectedRows: [] selectedRows: [],
currentRow: null,//单选行
} }
}, },
...@@ -425,7 +442,6 @@ export default { ...@@ -425,7 +442,6 @@ export default {
} }
}, },
}, },
mounted() { mounted() {
...@@ -441,6 +457,19 @@ export default { ...@@ -441,6 +457,19 @@ export default {
}, },
methods: { methods: {
toggleSelection(rows) {
if (rows) {
rows.forEach(row => {
this.$refs.table.toggleRowSelection(row);
});
} else {
this.$refs.table.clearSelection();
}
},
// 行是否可选
selectable(row, index) {
return true;
},
// Popover 管理 // Popover 管理
closeAllPopovers() { closeAllPopovers() {
this.advancedSearchVisible = false; this.advancedSearchVisible = false;
...@@ -508,6 +537,12 @@ export default { ...@@ -508,6 +537,12 @@ export default {
// 表格事件处理 // 表格事件处理
handleSelectionChange(selection) { handleSelectionChange(selection) {
// 处理单选
if(!this.tableConfig.multiple){
for (let i = 0; i < selection.length - 1; i++) {
this.$refs.table.toggleRowSelection(selection[i]);
}
}
this.selectedRows = selection; this.selectedRows = selection;
this.$emit('selection-change', selection); this.$emit('selection-change', selection);
}, },
...@@ -644,4 +679,14 @@ export default { ...@@ -644,4 +679,14 @@ export default {
<style> <style>
@import './BaseListManager.css'; @import './BaseListManager.css';
@import '../../assets/css/flex.css';
/deep/.base-list-manager .el-table--border .el-table__cell:first-child .cell{
display: flex;
justify-content: center;
align-items: center;
}
/deep/.base-list-manager .el-table th.el-table__cell>.cell{
padding-left: 0 !important;
padding-right: 0 !important;
}
</style> </style>
...@@ -3,16 +3,7 @@ export const addEditMixin = { ...@@ -3,16 +3,7 @@ export const addEditMixin = {
data() { data() {
return { return {
//用户信息 //用户信息
userInfo: {}, userInfo: {},
//单选产品订单状态
OrderStatusType: [
{ Name: this.$t('OrderList.orderStatus.apply'), ID: '1' },
{ Name: this.$t('OrderList.orderStatus.check'), ID: '2' },
{ Name: this.$t('OrderList.orderStatus.cancel'), ID: '3' },
{ Name: this.$t('OrderList.orderStatus.sun'), ID: '4' },
],
//取消订单备注
cancelRemark: '',
}; };
}, },
created() { created() {
......
...@@ -29,6 +29,13 @@ export const listManagerMixin = { ...@@ -29,6 +29,13 @@ export const listManagerMixin = {
IsLeave: 0, IsLeave: 0,
}, },
EmployeeList: [],//员工 EmployeeList: [],//员工
//单选产品订单状态
OrderStatusType: [
// { Name: this.$t('OrderList.orderStatus.apply'), ID: '1' },
{ Name: this.$t('OrderList.orderStatus.check'), ID: '2' },
{ Name: this.$t('OrderList.orderStatus.cancel'), ID: '3' },
{ Name: this.$t('OrderList.orderStatus.sun'), ID: '4' },
],
}; };
}, },
created() { created() {
......
...@@ -429,13 +429,13 @@ ...@@ -429,13 +429,13 @@
<el-form :model="addMsg" :rules="rules" class="h-full" ref="addMsg" label-width="0"> <el-form :model="addMsg" :rules="rules" class="h-full" ref="addMsg" label-width="0">
<div class="hotel-form-container h-full"> <div class="hotel-form-container h-full">
<el-tabs v-model="activeTab" type="border-card" class="hotel-tabs"> <el-tabs v-model="activeTab" type="border-card" class="hotel-tabs">
<el-tab-pane label="OP" name="basic"> <el-tab-pane label="编辑OP" name="basic">
<div class="tab-content"> <div class="tab-content">
<el-row :gutter="16"> <el-row :gutter="16">
<el-col :span="19"> <el-col :span="19">
<el-form-item label="" prop="OpEmpId"> <el-form-item label="" prop="OpEmpId">
<el-select v-model="addMsg.OpEmpId" <el-select v-model="addMsg.OpEmpId"
multiple filterable collapse-tags placeholder="请选择OP"> multiple filterable placeholder="请选择OP">
<el-option v-for='item in EmployeeList' :label='item.EmName' <el-option v-for='item in EmployeeList' :label='item.EmName'
:value='item.EmployeeId' :key='item.EmployeeId'></el-option> :value='item.EmployeeId' :key='item.EmployeeId'></el-option>
</el-select> </el-select>
...@@ -510,7 +510,7 @@ ...@@ -510,7 +510,7 @@
handler(newVal) { handler(newVal) {
if (newVal && newVal.OrderId !== this.addMsg.OrderId) { if (newVal && newVal.OrderId !== this.addMsg.OrderId) {
this.addMsg.OrderId = newVal.OrderId; this.addMsg.OrderId = newVal.OrderId;
this.addMsg.OpEmpId = newVal.AppointOPList.map(item => item.OPId); this.addMsg.OpEmpId = newVal.AppointOPList.length>0? newVal.AppointOPList.map(item => item.OPId):[]
} }
} }
} }
......
...@@ -434,7 +434,7 @@ ...@@ -434,7 +434,7 @@
<el-row :gutter="16"> <el-row :gutter="16">
<el-col :span="19"> <el-col :span="19">
<el-form-item label="" prop="LossMoney"> <el-form-item label="" prop="LossMoney">
<el-input type="number" v-model="addMsg.LossMoney" placeholder="收损金额"></el-input> <el-input type="number" v-model="addMsg.LossMoney" placeholder="输入收损金额"></el-input>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
......
This diff is collapsed.
// 邮轮列表配置
export const spotListConfig = {
// 表格基础配置
tableConfig: {
height: '100%',
border: true,
stripe: false,
size: 'mini',
multiple: false,//是否支持多选
'empty-text': '暂无数据'
},
// 分页配置
paginationConfig: {
background: true,
layout: 'total, sizes, prev, pager, next, jumper',
'pager-count': 7,
'hide-on-single-page': false,
'page-sizes': [10, 14, 20, 25, 50, 100],
'page-size': 14,
'current-page': 1,
small: false,
disabled: false,
'prev-text': '',
'next-text': '',
total: 0
},
// 分页默认配置
defaultPagination: {
currentPage: 1,
pageSize: 14,
total: 0,
pageSizes: [10, 14, 20, 25, 50, 100]
},
// 列配置工厂函数
createColumns: (options = {}) => [
{
type: 'selection',
minWidth: 55,
fixed: 'left',
slotName: 'FrID',
},
{
id: 'FrID',
label: '单号',
prop: 'FrID',
minWidth: 30,
// fixed: 'left',
slotName: 'FrID',
},
{
label: '公司',
prop: 'BranchName',
minWidth: 90,
slotName: 'BranchName',
},
{
label: '费用类型',
prop: 'CostTypeName',
minWidth: 80,
slotName: 'CostTypeName',
},
{
label: '币种',
prop: 'CurrencyName',
minWidth: 30,
slotName: 'CurrencyName',
},
{
label: '汇率',
prop: 'Rate',
minWidth: 30,
slotName: 'Rate',
},
{
label: '金额',
prop: 'Money',
minWidth: 80,
slotName: 'Money',
},
{
label: '冲抵金额',
prop: 'MatchMoney',
minWidth: 80,
slotName: 'MatchMoney',
},
{
label: '状态',
prop: 'StatusStr',
minWidth: 30,
slotName: 'StatusStr',
},
{
label: '付款对象',
prop: 'ClientTypeName',
minWidth: 80,
slotName: 'ClientTypeName',
},
{
label: '备注',
prop: 'Remark',
minWidth: 80,
slotName: 'Remark',
}
],
// 操作列配置
actionColumn: {
label: '操作',
width: 240,
minWidth: 150,
fixed: 'right'
},
// 高级查询配置
advancedSearchConfig: {
title: '高级查询',
buttonText: '高级查询',
width: 600,
fields: [
{
key: 'FrID',
label: '编号',
type: 'input',
placeholder: '单据编号',
span: 8,
options: [] // 动态填充
},
{
key: 'CostTypeID',
label: '费用类型',
type: 'select',
span: 8,
options: [] // 动态填充
},
{
key: 'Datelist',
label: '交易时间',
type: 'date',
dateType: 'daterange',
placeholder: '选择交易时间',
span: 8,
}
]
},
// 工具操作配置
toolActions: [
{
command: 'refresh',
label: '刷新',
icon: 'el-icon-refresh',
type: 'default'
},
{
command: 'clearFilters',
label: '清除筛选',
icon: 'el-icon-delete',
type: 'warning'
}
],
// 抽屉配置
drawerConfig: {
title: '冲抵信息',
size: '90%',
direction: 'rtl'
},
// API 配置
apiConfig: {
list: 'Financial_get_GetAdvanceFinancePageList',//列表
costType: 'Financial_get_GetAdvanceCostTypeList',
},
// 默认查询参数
defaultQueryParams: {
pageIndex: 1,
pageSize: 16,
FrID: 0,
CostTypeID:'',
sTradeDate:'',
eTradeDate:'',
IsAdvanceFinance:1,
Datelist: [],
},
// 分页配置工具方法
createPaginationConfig: (options = {}) => ({
...spotListConfig.paginationConfig,
...options
}),
// 验证分页参数
validatePaginationParams: (pageIndex, pageSize, total) => {
const validPageSizes = [10, 14, 20, 25, 50, 100]
const normalizedPageSize = validPageSizes.includes(pageSize) ? pageSize : 14
const maxPage = total > 0 ? Math.ceil(total / normalizedPageSize) : 1
const normalizedPageIndex = Math.max(1, Math.min(pageIndex, maxPage))
return {
pageIndex: normalizedPageIndex,
pageSize: normalizedPageSize,
isValid: pageIndex === normalizedPageIndex && pageSize === normalizedPageSize
}
}
}
// 导出默认配置
export default spotListConfig
// 导出分页配置工具方法
export const createPaginationConfig = spotListConfig.createPaginationConfig
export const validatePaginationParams = spotListConfig.validatePaginationParams
...@@ -429,7 +429,7 @@ ...@@ -429,7 +429,7 @@
<el-form :model="addMsg" :rules="rules" class="h-full" ref="addMsg" label-width="0"> <el-form :model="addMsg" :rules="rules" class="h-full" ref="addMsg" label-width="0">
<div class="hotel-form-container h-full"> <div class="hotel-form-container h-full">
<el-tabs v-model="activeTab" type="border-card" class="hotel-tabs"> <el-tabs v-model="activeTab" type="border-card" class="hotel-tabs">
<el-tab-pane label="备注" name="basic"> <el-tab-pane label="取消备注" name="basic">
<div class="tab-content"> <div class="tab-content">
<el-row :gutter="16"> <el-row :gutter="16">
<el-col :span="19"> <el-col :span="19">
......
This diff is collapsed.
...@@ -428,7 +428,7 @@ ...@@ -428,7 +428,7 @@
<!-- 正常内容 --> <!-- 正常内容 -->
<div class="resource-content clearfix"> <div class="resource-content clearfix">
<el-form :model="addMsg" :rules="rules" class="h-full" ref="addMsg" label-width="120px" <el-form :model="addMsg" :rules="rules" class="h-full" ref="addMsg" label-width="120px"
:disabled="addMsg.OrderId>0"> :disabled="addMsg.OrderId>0&&(activeTab=='basic'||activeTab=='contact')">
<div class="hotel-form-container h-full"> <div class="hotel-form-container h-full">
<el-tabs v-model="activeTab" type="border-card" class="hotel-tabs"> <el-tabs v-model="activeTab" type="border-card" class="hotel-tabs">
<el-tab-pane label="基础资料" name="basic"> <el-tab-pane label="基础资料" name="basic">
......
...@@ -36,19 +36,19 @@ export const spotListConfig = { ...@@ -36,19 +36,19 @@ export const spotListConfig = {
// 列配置工厂函数 // 列配置工厂函数
createColumns: (options = {}) => [ createColumns: (options = {}) => [
{ {
id: 'OrderId', id: 'OrderNo',
label: '订单Id', label: '订单编号',
prop: 'OrderId', prop: 'OrderNo',
minWidth: 80, minWidth: 220,
// fixed: 'left', // fixed: 'left',
slotName: 'OrderId', slotName: 'OrderNo',
}, },
{ {
id: 'scenic-name-column', id: 'scenic-name-column',
label: '邮轮名称', label: '邮轮名称',
prop: 'CouponsName', prop: 'CouponsName',
minWidth: 150, minWidth: 150,
// fixed: 'left', fixed: 'left',
type: 'link', type: 'link',
slotName: 'CouponsName', slotName: 'CouponsName',
filter: { filter: {
...@@ -60,7 +60,7 @@ export const spotListConfig = { ...@@ -60,7 +60,7 @@ export const spotListConfig = {
{ {
label: '使用时间', label: '使用时间',
prop: 'UseDate', prop: 'UseDate',
minWidth: 80, minWidth: 90,
slotName: 'UseDate', slotName: 'UseDate',
}, },
{ {
...@@ -90,7 +90,7 @@ export const spotListConfig = { ...@@ -90,7 +90,7 @@ export const spotListConfig = {
{ {
label: '应收总金额', label: '应收总金额',
prop: 'Money', prop: 'Money',
minWidth: 80, minWidth: 120,
slotName: 'Money', slotName: 'Money',
}, },
{ {
...@@ -129,10 +129,44 @@ export const spotListConfig = { ...@@ -129,10 +129,44 @@ export const spotListConfig = {
minWidth: 80, minWidth: 80,
slotName: 'Refund', slotName: 'Refund',
}, },
{
label: '收款单据',
prop: 'IncomeList',
minWidth: 125,
slotName: 'IncomeList',
},
{
label: '退款单据',
prop: 'RefundList',
minWidth: 125,
slotName: 'RefundList',
emptyText: '-'
},
{
label: '成本单据',
prop: 'CostList',
minWidth: 125,
slotName: 'CostList',
emptyText: '-'
},
{
label: '发票单据',
prop: 'InvoiceApplyList',
minWidth: 125,
slotName: 'InvoiceApplyList',
emptyText: '-'
},
{
label: '下单备注',
prop: 'Remark',
minWidth: 100,
slotName: 'Remark',
emptyText: '-'
},
{ {
label: '创建时间', label: '创建时间',
prop: 'CreateTime', prop: 'CreateTime',
minWidth: 100, minWidth: 120,
slotName: 'CreateTime', slotName: 'CreateTime',
emptyText: '-' emptyText: '-'
}, },
...@@ -157,10 +191,13 @@ export const spotListConfig = { ...@@ -157,10 +191,13 @@ export const spotListConfig = {
} }
], ],
// 操作列配置 // 操作列配置
actionColumn: { actionColumn: {
label: '操作', label: '操作',
width: 150, width: 240,
minWidth: 150,
fixed: 'right' fixed: 'right'
}, },
...@@ -289,7 +326,7 @@ export const spotListConfig = { ...@@ -289,7 +326,7 @@ export const spotListConfig = {
// 默认查询参数 // 默认查询参数
defaultQueryParams: { defaultQueryParams: {
pageIndex: 1, pageIndex: 1,
pageSize: 25, pageSize: 15,
Name: '', Name: '',
StartTime: '', StartTime: '',
EndTime: '', EndTime: '',
...@@ -307,6 +344,11 @@ export const spotListConfig = { ...@@ -307,6 +344,11 @@ export const spotListConfig = {
Datelist: [], Datelist: [],
}, },
// 头部额外配置
headConfiguration: {
},
// 分页配置工具方法 // 分页配置工具方法
createPaginationConfig: (options = {}) => ({ createPaginationConfig: (options = {}) => ({
...spotListConfig.paginationConfig, ...spotListConfig.paginationConfig,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment