0ed0f3b7c8
`pnpm build` 暴露四处历史遗留问题,均与包管理器无关: - thinkGatePassreord 模型里混入 Java 注解 `@TableField`,esbuild 报 Unexpected "@";顺带清掉同文件尾随空格 - booking/finance 与 oa/task/detail 的 import 大小写与磁盘文件名不符 (OrderList.vue / Help.vue),Linux 下无法解析 - cms/form 视图 import 了从未入库的 search.vue / form-edit.vue, 两者在模板中均未使用(FormEdit 的使用处早已注释),予以移除
362 lines
9.9 KiB
Vue
362 lines
9.9 KiB
Vue
<template>
|
|
<div class="page">
|
|
<div class="ele-body">
|
|
<a-card :bordered="false" :body-style="{ padding: '16px' }">
|
|
<a-space style="margin-bottom: 1rem">
|
|
<a-button @click="changeType(0)" :type="type === 0 ? 'primary' : ''">
|
|
收款汇总表
|
|
</a-button>
|
|
<a-button @click="changeType(1)" :type="type === 1 ? 'primary' : ''">
|
|
收入日报表及汇总表
|
|
</a-button>
|
|
<a-button @click="changeType(2)" :type="type === 2 ? 'primary' : ''">
|
|
培训业务报表
|
|
</a-button>
|
|
</a-space>
|
|
<a-spin :spinning="loading">
|
|
<search @search="searchData" @reload="reload" :type="type" />
|
|
<a-table
|
|
v-if="type === 0"
|
|
:scroll="{ y: tableHeight }"
|
|
:data-source="incomeList"
|
|
:columns="columns"
|
|
:pagination="false"
|
|
/>
|
|
<a-table
|
|
v-else-if="type === 1"
|
|
:scroll="{ y: tableHeight }"
|
|
:data-source="cardList"
|
|
:columns="columns1"
|
|
:pagination="false"
|
|
/>
|
|
<training-business-report v-else :sections="trainingSections" />
|
|
</a-spin>
|
|
</a-card>
|
|
</div>
|
|
<OrderList
|
|
v-model:visible="showList"
|
|
v-if="showList"
|
|
:pay-type="payTypeList"
|
|
:sid="sid"
|
|
:showType="showType"
|
|
:showCardType="showCardType"
|
|
:type="type"
|
|
:isPayTime="type === 0"
|
|
:create-time-start="createTimeStart"
|
|
:wechat-order="wechatOrder"
|
|
:create-time-end="createTimeEnd"
|
|
/>
|
|
</div>
|
|
</template>
|
|
|
|
<script lang="ts" setup>
|
|
import { ref } from 'vue';
|
|
import type { ColumnItem } from 'ele-admin-pro/es/ele-pro-table/types';
|
|
import Search from './components/search.vue';
|
|
import TrainingBusinessReport from './components/trainingBusinessReport.vue';
|
|
import {
|
|
getThinkOrderExcelData,
|
|
getThinkOrderExcelDataForCard,
|
|
getThinkOrderTrainingBusinessData
|
|
} from '@/api/think/thinkOrder';
|
|
import type {
|
|
ThinkOrderParam,
|
|
ThinkTrainingBusinessSection
|
|
} from '@/api/think/thinkOrder/model';
|
|
import OrderList from './components/orderList.vue';
|
|
import dayjs from 'dayjs';
|
|
|
|
const loading = ref(true);
|
|
const showType = ref(false);
|
|
const showCardType = ref(false);
|
|
const type = ref<number>(0);
|
|
const tableHeight = document.body.clientHeight - 330;
|
|
|
|
const createTimeStart = ref();
|
|
const createTimeEnd = ref();
|
|
const incomeList = ref<any[]>([]);
|
|
const cardList = ref<any[]>([]);
|
|
const trainingSections = ref<ThinkTrainingBusinessSection[]>([]);
|
|
|
|
const sid = ref<number>(0);
|
|
const wechatOrder = ref<string>('');
|
|
const payTypeList = ref<number[]>([]);
|
|
const showList = ref(false);
|
|
|
|
const getList = async () => {
|
|
loading.value = true;
|
|
incomeList.value = [];
|
|
cardList.value = [];
|
|
trainingSections.value = [];
|
|
const params = {
|
|
createTimeStart: createTimeStart.value
|
|
? dayjs(createTimeStart.value).unix()
|
|
: undefined,
|
|
createTimeEnd: createTimeEnd.value
|
|
? dayjs(createTimeEnd.value).unix()
|
|
: undefined
|
|
};
|
|
if (type.value === 0) {
|
|
incomeList.value = await getThinkOrderExcelData(params);
|
|
} else if (type.value === 1) {
|
|
cardList.value = await getThinkOrderExcelDataForCard(params);
|
|
} else {
|
|
trainingSections.value = await getThinkOrderTrainingBusinessData(params);
|
|
}
|
|
loading.value = false;
|
|
};
|
|
|
|
const changeType = (val: number) => {
|
|
type.value = val;
|
|
getList();
|
|
};
|
|
|
|
createTimeStart.value = dayjs().format('YYYY-MM-DD');
|
|
createTimeEnd.value = dayjs().format('YYYY-MM-DD 23:59:59');
|
|
getList();
|
|
|
|
const columns1 = ref<ColumnItem[]>([
|
|
{
|
|
title: '场馆名称',
|
|
dataIndex: 'siteName'
|
|
},
|
|
{
|
|
title: '卡类型',
|
|
children: [
|
|
{
|
|
title: '次卡',
|
|
dataIndex: 'timeCardIncome',
|
|
customCell: (row) => {
|
|
return {
|
|
onClick: () => {
|
|
sid.value = row.sid;
|
|
wechatOrder.value = '';
|
|
payTypeList.value = [8, 11];
|
|
showList.value = true;
|
|
showType.value = false;
|
|
showCardType.value = false;
|
|
}
|
|
};
|
|
}
|
|
},
|
|
{
|
|
title: '期间卡(指月卡、季卡、年卡)',
|
|
dataIndex: 'monthCardIncome',
|
|
customCell: (row) => {
|
|
return {
|
|
onClick: () => {
|
|
sid.value = row.sid;
|
|
wechatOrder.value = '';
|
|
payTypeList.value = [6, 7, 9, 10, 16, 17];
|
|
showList.value = true;
|
|
showType.value = false;
|
|
showCardType.value = false;
|
|
}
|
|
};
|
|
}
|
|
},
|
|
{
|
|
title: '充值卡(会员卡、IC卡)',
|
|
dataIndex: 'chargeCardIncome',
|
|
customCell: (row) => {
|
|
return {
|
|
onClick: () => {
|
|
wechatOrder.value = '';
|
|
sid.value = row.sid;
|
|
payTypeList.value = [13, 14];
|
|
showList.value = true;
|
|
showType.value = false;
|
|
showCardType.value = false;
|
|
}
|
|
};
|
|
}
|
|
},
|
|
{
|
|
title: '散客订单',
|
|
dataIndex: 'guestIncome',
|
|
customCell: (row) => {
|
|
return {
|
|
onClick: () => {
|
|
wechatOrder.value = '';
|
|
sid.value = row.sid;
|
|
payTypeList.value = [1, 4, 5];
|
|
showList.value = true;
|
|
showType.value = false;
|
|
showCardType.value = false;
|
|
}
|
|
};
|
|
}
|
|
},
|
|
{
|
|
title: '其他',
|
|
dataIndex: 'otherIncome',
|
|
customCell: (row) => {
|
|
return {
|
|
onClick: () => {
|
|
sid.value = row.sid;
|
|
wechatOrder.value = '';
|
|
payTypeList.value = [2, 3, 12, 15];
|
|
showList.value = true;
|
|
showType.value = false;
|
|
showCardType.value = false;
|
|
}
|
|
};
|
|
}
|
|
},
|
|
{
|
|
title: '小计',
|
|
dataIndex: 'siteIncome'
|
|
}
|
|
]
|
|
}
|
|
]);
|
|
|
|
const columns = ref<ColumnItem[]>([
|
|
{
|
|
title: '场馆名称',
|
|
dataIndex: 'siteName'
|
|
},
|
|
{
|
|
title: '收款方式',
|
|
children: [
|
|
{
|
|
title: '微信支付',
|
|
dataIndex: 'wechatIncome',
|
|
customCell: (row) => {
|
|
return {
|
|
onClick: () => {
|
|
sid.value = row.sid;
|
|
wechatOrder.value = '420000';
|
|
payTypeList.value = [1];
|
|
showList.value = true;
|
|
showType.value = true;
|
|
showCardType.value = false;
|
|
}
|
|
};
|
|
}
|
|
},
|
|
{
|
|
title: '微信支付退款',
|
|
dataIndex: 'wechatRefund',
|
|
customCell: (row) => {
|
|
return {
|
|
onClick: () => {
|
|
sid.value = row.sid;
|
|
}
|
|
};
|
|
}
|
|
},
|
|
{
|
|
title: 'POS机',
|
|
dataIndex: 'posIncome',
|
|
customCell: (row) => {
|
|
return {
|
|
onClick: () => {
|
|
wechatOrder.value = '';
|
|
sid.value = row.sid;
|
|
payTypeList.value = [1, 3, 5];
|
|
showList.value = true;
|
|
showType.value = false;
|
|
showCardType.value = true;
|
|
}
|
|
};
|
|
}
|
|
},
|
|
{
|
|
title: '对公转账',
|
|
dataIndex: 'businessIncome',
|
|
customCell: (row) => {
|
|
return {
|
|
onClick: () => {
|
|
wechatOrder.value = '';
|
|
sid.value = row.sid;
|
|
payTypeList.value = [18];
|
|
showList.value = true;
|
|
showType.value = false;
|
|
showCardType.value = true;
|
|
}
|
|
};
|
|
}
|
|
},
|
|
{
|
|
title: '现金收款',
|
|
dataIndex: 'cashIncome',
|
|
customCell: (row) => {
|
|
return {
|
|
onClick: () => {
|
|
wechatOrder.value = '';
|
|
sid.value = row.sid;
|
|
payTypeList.value = [4];
|
|
showList.value = true;
|
|
showType.value = false;
|
|
showCardType.value = true;
|
|
}
|
|
};
|
|
}
|
|
},
|
|
{
|
|
title: '未支付已使用',
|
|
dataIndex: 'unPaidUsed',
|
|
customCell: (row) => {
|
|
return {
|
|
onClick: () => {
|
|
wechatOrder.value = '';
|
|
sid.value = row.sid;
|
|
payTypeList.value = [4];
|
|
showList.value = true;
|
|
showType.value = false;
|
|
}
|
|
};
|
|
}
|
|
},
|
|
{
|
|
title: '其他',
|
|
dataIndex: 'otherIncome',
|
|
customCell: (row) => {
|
|
return {
|
|
onClick: () => {
|
|
wechatOrder.value = '';
|
|
sid.value = row.sid;
|
|
payTypeList.value = [2, 12];
|
|
showList.value = true;
|
|
showType.value = false;
|
|
}
|
|
};
|
|
}
|
|
},
|
|
{
|
|
title: '小计',
|
|
dataIndex: 'siteIncome'
|
|
}
|
|
]
|
|
}
|
|
]);
|
|
|
|
const searchData = (param: ThinkOrderParam) => {
|
|
createTimeStart.value = param.createTimeStart;
|
|
createTimeEnd.value = param.createTimeEnd;
|
|
getList();
|
|
};
|
|
|
|
const reload = () => {
|
|
createTimeStart.value = dayjs().format('YYYY-MM-DD');
|
|
createTimeEnd.value = dayjs().format('YYYY-MM-DD');
|
|
getList();
|
|
};
|
|
</script>
|
|
|
|
<script lang="ts">
|
|
import * as MenuIcons from '@/layout/menu-icons';
|
|
|
|
export default {
|
|
name: 'ThinkOrder',
|
|
components: MenuIcons
|
|
};
|
|
</script>
|
|
|
|
<style lang="less" scoped>
|
|
.tag-icon {
|
|
padding-right: 6px;
|
|
}
|
|
</style>
|