Commit 588812b0 authored by ccc2wdd's avatar ccc2wdd

变更签证统计页面导出

parent 8062d5fd
......@@ -9,6 +9,10 @@ enum Api {
//分页查询变更记录
GetList = '/pro/change-visa/page',
changeSignatureGetList = '/pro/reportCenter/change-visa/list',
// 统计页面获取全部数据
getStatisticListAll = '/pro/change-visa/getStatisticList',
// 统计页面导出功能
ExportChangeSignature = '/pro/export/changeSignature',
//根据id查询详情
GetDetail = '/pro/change-visa/find-byid',
//新增
......@@ -27,11 +31,27 @@ enum Api {
// 判断季度选是否已存在
CheckQuarter = '/pro/change-visa/is-change',
}
export const getSettlementManageList = (params?: ProjectParams) =>
defHttp.post<ProjectModel>({ url: Api.GetList, data: params });
export const getChangeSignatureList = (params?: ProjectParams) =>
defHttp.post<ProjectModel>({ url: Api.changeSignatureGetList, data: params });
export const getStatisticListAll = (params?: ProjectParams) =>
defHttp.post<ProjectModel>({ url: Api.getStatisticListAll, data: params });
// 导出
export const exportChangeSignature = (params?: any) =>
defHttp.post<any>(
{
url: Api.ExportChangeSignature,
data: params,
responseType: 'blob',
},
{ errorMessageMode: 'none', isTransformResponse: false },
);
// 根据id 查询详情
export const getItem = (params?: any) =>
defHttp.get<ProjectModel>({
......
......@@ -22,17 +22,17 @@ const changeSignature: AppRouteModule = {
meta: {
auth: '/www/dist/index.html#/changeSignature/index',
title: '变更签证管理',
orderNo: 5,
orderNo: 6,
},
},
{
path: 'statistic',
name: 'changeSignatureStatistic',
component: () => import('@/views/changeSignature/statistic/index.vue'),
component: () => import('@/views/changeSignature/changeSignatureStatistic.vue'),
meta: {
auth: '/www/dist/index.html#/changeSignature/index',
title: '签证管理统计',
orderNo: 5,
orderNo: 7,
},
},
{
......
......@@ -23,7 +23,7 @@
<script lang="ts" setup>
import { onMounted, ref } from 'vue';
import { Table } from 'ant-design-vue';
import { getListAll, exportStatisticList } from '@/api/project/biddingManagement.js';
import { getStatisticListAll, exportChangeSignature } from '@/api/changeSignatrue/changeSignatrue';
import { BasicForm, FormActionType, FormSchema, useForm } from '@/components/Form';
import StatisticWindow from '@/views/monthlyPlan/statisticWindow/statisticWindow.vue';
import { useModal } from '@/components/Modal';
......@@ -77,7 +77,122 @@
colProps: { span: 4 },
},
]);
// 列表
const dataSource = ref([]);
// 表头
const columns = [
{
title: '公司名称',
dataIndex: 'companyName',
fixed: 'left',
width: 180,
customCell: (_, any) => ({
rowSpan: _.companyNamerowSpan,
}),
},
{
title: '项目名称',
dataIndex: 'projectName',
width: 180,
fixed: 'left',
// customCell: (_, any) => ({
// rowSpan: _.projectNamerowSpan,
// }),
},
{
title: '合同名称',
dataIndex: 'contractName',
width: 180,
},
{
title: '合同金额(万元)',
dataIndex: 'contractAmount',
width: 180,
},
{
title: '资金来源',
dataIndex: 'fundingSource',
width: 180,
},
{
title: '招标方式',
dataIndex: 'biddingMethod',
width: 180,
},
{
title: '立项投资额(万元)',
dataIndex: 'amountInvested',
width: 180,
},
{
title: '甲方单位名称',
dataIndex: 'firstPartyName',
width: 180,
},
{
title: '乙方单位名称',
dataIndex: 'partyName',
width: 180,
},
{
title: '合同累计签证、变更金额(万元)',
dataIndex: 'changeAmount',
width: 180,
},
{
title: '累计变更签证金额占合同金额比例',
dataIndex: 'amountRatio',
width: 180,
},
{
title: '变更编号',
dataIndex: 'changeNumber',
width: 180,
},
{
title: '变更类型',
dataIndex: 'changeType',
width: 180,
},
{
title: '责任方',
dataIndex: 'responsibleParty',
width: 180,
},
{
title: '变更内容',
dataIndex: 'changeContent',
width: 180,
},
{
title: '预估变更金额(万元)',
dataIndex: 'updateAmount',
width: 180,
},
{
title: '签证编号',
dataIndex: 'visaNumber',
width: 180,
},
{
title: '签证类型',
dataIndex: 'visaType',
width: 180,
},
{
title: '签证内容',
dataIndex: 'visaContent',
width: 180,
},
{
title: '预估签证金额(万元)',
dataIndex: 'visaAmount',
width: 180,
},
];
const { push } = useRouter();
const deptId = ref('');
const params = ref({ givenYear: '', quarter: '', deptId: '' });
onMounted(async () => {
deptId.value = useUserStore().userInfo.deptId;
getStatisticList();
......@@ -93,12 +208,14 @@
});
async function exportCount() {
const params = getFieldsValue();
const data = await exportStatisticList(params);
downloadByData(data, '变更签证管理统计报表' + '.xlsx');
// const params = getFieldsValue();
const data = await exportChangeSignature(params.value);
downloadByData(data, '变更签证管理统计报表' + '.xls');
}
const loadingRef = ref(false);
function handleSubmit() {
let data = getFieldsValue();
params.value = data;
getStatisticList();
}
function setRowClassName(record) {
......@@ -118,19 +235,10 @@
const month = (now.getMonth() + 1).toString().padStart(2, '0'); // 月份从0开始,所以要加1,并且格式化为两位数
return `${year}-${month}`;
}
async function getStatisticList() {
const params = getFieldsValue();
if (params.tenderYear === undefined || params.tenderYear === null) {
// 创建一个表示当前日期和时间的 Date 对象
var currentDate = new Date();
// 使用 getFullYear() 方法获取当前年份
var currentYear = currentDate.getFullYear();
columns[0].title = currentYear + '年变更签证管理';
} else {
columns[0].title = params.tenderYear + '年变更签证管理';
}
loadingRef.value = true;
let data = await getListAll(params);
let data = await getStatisticListAll(params.value);
// dataSource.value = data;
let propsList = ['companyName', 'projectName'];
propsList.map((item) => {
......@@ -157,151 +265,29 @@
indexCount++;
}
}
// if (field == 'projectName') {
// let count = 0; //重复项的第一项
// let indexCount = 1; //下一项
// while (indexCount < data.length) {
// var item = data.slice(count, count + 1)[0]; //获取没有比较的第一个对象
// if (!item[`${field}rowSpan`]) {
// item[`${field}rowSpan`] = 1; //初始化为1
// }
// if (
// item[field] === data[indexCount][field] &&
// item['companyName'] === data[indexCount]['companyName']
// ) {
// //第一个对象与后面的对象相比,有相同项就累加,并且后面相同项设置为0
// item[`${field}rowSpan`]++;
// data[indexCount][`${field}rowSpan`] = 0;
// } else {
// count = indexCount;
// }
//
// indexCount++;
// }
// }
if (field == 'projectName') {
let count = 0; //重复项的第一项
let indexCount = 1; //下一项
while (indexCount < data.length) {
var item = data.slice(count, count + 1)[0]; //获取没有比较的第一个对象
if (!item[`${field}rowSpan`]) {
item[`${field}rowSpan`] = 1; //初始化为1
}
if (
item[field] === data[indexCount][field] &&
item['companyName'] === data[indexCount]['companyName']
) {
//第一个对象与后面的对象相比,有相同项就累加,并且后面相同项设置为0
item[`${field}rowSpan`]++;
data[indexCount][`${field}rowSpan`] = 0;
} else {
count = indexCount;
}
indexCount++;
}
}
dataSource.value = data;
}
// 列表
const dataSource = ref([]);
// 表头
const columns = [
{
title: '202X年变更签证管理',
dataIndex: '',
children: [
{
title: '公司名称',
dataIndex: 'companyName',
fixed: 'left',
width: 180,
customCell: (_, any) => ({
rowSpan: _.companyNamerowSpan,
}),
},
{
title: '项目名称',
dataIndex: 'projectName',
width: 180,
fixed: 'left',
// customCell: (_, any) => ({
// rowSpan: _.projectNamerowSpan,
// }),
},
{
title: '合同名称',
dataIndex: 'contractName',
width: 180,
},
{
title: '合同金额(万元)',
dataIndex: 'contractAmount',
width: 180,
},
{
title: '资金来源',
dataIndex: 'fundingSource',
width: 180,
},
{
title: '招标方式',
dataIndex: 'biddingMethod',
width: 180,
},
{
title: '立项投资额(万元)',
dataIndex: 'amountInvested',
width: 180,
},
{
title: '甲方单位名称',
dataIndex: 'firstPartyName',
width: 180,
},
{
title: '乙方单位名称',
dataIndex: 'partyName',
width: 180,
},
{
title: '合同累计签证、变更金额(万元)',
dataIndex: 'changeAmount',
width: 180,
},
{
title: '累计变更签证金额占合同金额比例',
dataIndex: 'amountRatio',
width: 180,
},
{
title: '变更编号',
dataIndex: 'changeNumber',
width: 180,
},
{
title: '变更类型',
dataIndex: 'changeType',
width: 180,
},
{
title: '责任方',
dataIndex: 'responsibleParty',
width: 180,
},
{
title: '变更内容',
dataIndex: 'changeContent',
width: 180,
},
{
title: '预估变更金额(万元)',
dataIndex: 'updateAmount',
width: 180,
},
{
title: '签证编号',
dataIndex: 'visaNumber',
width: 180,
},
{
title: '签证类型',
dataIndex: 'visaType',
width: 180,
},
{
title: '签证内容',
dataIndex: 'visaContent',
width: 180,
},
{
title: '预估签证金额(万元)',
dataIndex: 'visaAmount',
width: 180,
},
],
},
];
const { push } = useRouter();
</script>
<style lang="less" scoped>
::v-deep .ant-table-tbody .ant-table-row {
......
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