|
|
@@ -1,75 +1,138 @@
|
|
|
<template>
|
|
|
<!-- 敞口报表 -->
|
|
|
- <div class="exposure_report"
|
|
|
+ <div class="table-detail-container table-height"
|
|
|
:loading="loading">
|
|
|
- <Filter @update="update"></Filter>
|
|
|
- <contextMenu :contextMenuList="forDataBtn">
|
|
|
- <a-table :columns="columns"
|
|
|
- class="topOrderTable"
|
|
|
- :scroll="{ x: '100%', y: 'calc(100vh - 163px)' }"
|
|
|
- :pagination="false"
|
|
|
- :expandedRowKeys="expandedRowKeys"
|
|
|
- :customRow="Rowclick"
|
|
|
- rowKey="key"
|
|
|
- :data-source="tableList"
|
|
|
- >
|
|
|
- </a-table>
|
|
|
- </contextMenu>
|
|
|
+ <Filter @update="search"></Filter>
|
|
|
+ <a-table :columns="columns"
|
|
|
+ class="topOrderTable"
|
|
|
+ :scroll="{ x: '100%', y: 'calc(100vh - 163px)' }"
|
|
|
+ :pagination="false"
|
|
|
+ :expandedRowKeys="expandedRowKeys"
|
|
|
+ :customRow="Rowclick"
|
|
|
+ rowKey="key"
|
|
|
+ :data-source="tableList">
|
|
|
+ </a-table>
|
|
|
+ <!-- 明细 -->
|
|
|
+ <Description v-if="visible"
|
|
|
+ @close="closeDrawer"
|
|
|
+ @changeTab="changeTab"
|
|
|
+ :columns="columnsDetail"
|
|
|
+ :tabList="tabList"
|
|
|
+ :tableList="detailTableList" />
|
|
|
</div>
|
|
|
</template>
|
|
|
|
|
|
<script lang="ts">
|
|
|
import Filter from '../../components/filterTable/index.vue';
|
|
|
-import { defineComponent, initData, getTableColumns, getTableEvent, getBtnList, contextMenu, BtnList } from '@/common/export/table';
|
|
|
-import { queryTableList } from '../../../setup';
|
|
|
+import { defineComponent, queryTableList } from '@/common/export/table';
|
|
|
import { TypeAndTime } from '@/views/report/interface';
|
|
|
import { handleInitTypeAndTime } from '@/views/report/setup';
|
|
|
-import { Ermcp3ExpourseReport } from '@/services/go/ermcp/report/interface';
|
|
|
-import { qryAreaExpourseReport } from '@/services/go/ermcp/report';
|
|
|
+import { AreaExpourseReportReq, Ermcp3ExpourseReport, QryAreaExpourseHedgeplanDetailReq } from '@/services/go/ermcp/report/interface';
|
|
|
+import { qryAreaExpourseContractDetail, qryAreaExpourseFutuDetail, qryAreaExpourseHedgeplanDetail, qryAreaExpourseParamChLogDetail, qryAreaExpourseReport } from '@/services/go/ermcp/report';
|
|
|
+import { ComposeTableDetailParam, handleComposeTable_detail } from '@/common/setup/table/compose';
|
|
|
+import Description from '@/common/components/description/index.vue';
|
|
|
+import { watchEffect } from 'vue';
|
|
|
+import { queryResultLoadingAndInfo } from '@/common/methods/request/resultInfo';
|
|
|
+import { TabList } from '@/common/setup/table/interface';
|
|
|
+
|
|
|
export default defineComponent({
|
|
|
name: 'exposure-report',
|
|
|
components: {
|
|
|
Filter,
|
|
|
- contextMenu,
|
|
|
- BtnList,
|
|
|
+ Description,
|
|
|
},
|
|
|
setup() {
|
|
|
- // 表头数据
|
|
|
- const { columns, registerColumn, updateColumn } = getTableColumns();
|
|
|
- // 表格事件
|
|
|
- const { expandedRowKeys, selectedRow, Rowclick, btnClick } = getTableEvent<any>({});
|
|
|
- // // 表格操作按钮列表
|
|
|
- // const { commonBtn, forDataBtn } = getBtnList('warehouse_info_normal', true);
|
|
|
+ let cycletime = '';
|
|
|
// 表格列表数据
|
|
|
- const { loading, tableList, queryTable } = queryTableList<Ermcp3ExpourseReport>(qryAreaExpourseReport);
|
|
|
- initData(() => {
|
|
|
+ const { loading, tableList, queryTable } = queryTableList<Ermcp3ExpourseReport>();
|
|
|
+ // 获取列表数据
|
|
|
+ const queryTableAction = () => {
|
|
|
const { getInitTime, getInitType } = handleInitTypeAndTime();
|
|
|
+ cycletime = getInitTime();
|
|
|
+ const param: AreaExpourseReportReq = {
|
|
|
+ cycletype: getInitType(),
|
|
|
+ cycletime,
|
|
|
+ querytype: 1,
|
|
|
+ };
|
|
|
// 获取列表数据
|
|
|
- queryTable({ cycletype: getInitType(), cycletime: getInitTime() });
|
|
|
- // 注册表头信息 过滤
|
|
|
- registerColumn('table_pcweb_exposure_report', []);
|
|
|
- });
|
|
|
- function update(value: TypeAndTime) {
|
|
|
- queryTable(value);
|
|
|
- }
|
|
|
-
|
|
|
- return {
|
|
|
+ queryTable(qryAreaExpourseReport, param);
|
|
|
+ };
|
|
|
+ const param: ComposeTableDetailParam = {
|
|
|
+ queryFn: queryTableAction, // 查询表格数据
|
|
|
+ tableName: 'table_pcweb_exposure_report', // 表头key
|
|
|
+ tableFilterKey: [], // 表格过滤字段
|
|
|
+ };
|
|
|
+ const {
|
|
|
+ visible,
|
|
|
+ closeDrawer, // 控制 drawer 组件是否显示
|
|
|
columns,
|
|
|
-
|
|
|
+ updateColumn, // 表头数据
|
|
|
+ columnsDetail,
|
|
|
+ registerColumnDetail,
|
|
|
+ detailTableList, // 明细表头数据
|
|
|
expandedRowKeys,
|
|
|
selectedRow,
|
|
|
- Rowclick,
|
|
|
- loading,
|
|
|
- tableList,
|
|
|
- queryTable,
|
|
|
- btnClick,
|
|
|
- update,
|
|
|
- };
|
|
|
+ Rowclick, // 表格事件
|
|
|
+ tabList,
|
|
|
+ } = handleComposeTable_detail<Ermcp3ExpourseReport>(param);
|
|
|
+
|
|
|
+ // 切换明细
|
|
|
+ function changeTab(index: number, current: TabList) {
|
|
|
+ const { code, lable } = current;
|
|
|
+ const data = selectedRow.value as Ermcp3ExpourseReport;
|
|
|
+ const { cycletype, middlegoodsid } = data;
|
|
|
+ const param: QryAreaExpourseHedgeplanDetailReq = {
|
|
|
+ middlegoodsid,
|
|
|
+ cycletype,
|
|
|
+ cycletime,
|
|
|
+ };
|
|
|
+ let fn = null;
|
|
|
+ if (code === 'exposure_report_exposure_contract_changes') {
|
|
|
+ // 现货合同变动量明细
|
|
|
+ // 注册表头
|
|
|
+ registerColumnDetail('table_pcweb_change_in_spot_contract', []);
|
|
|
+ fn = qryAreaExpourseContractDetail;
|
|
|
+ } else if (code === 'exposure_report_exposure_hedging_plan') {
|
|
|
+ // 套保计划变动量明细
|
|
|
+ // 注册表头
|
|
|
+ registerColumnDetail('table_pcweb_change_in_hedging_plan', []);
|
|
|
+ fn = qryAreaExpourseHedgeplanDetail;
|
|
|
+ } else if (code === 'exposure_report_exposure_futures_changes') {
|
|
|
+ // 期货变动量明细
|
|
|
+ // 注册表头
|
|
|
+ registerColumnDetail('table_pcweb_change_in_future', []);
|
|
|
+ fn = qryAreaExpourseFutuDetail;
|
|
|
+ } else if (code === 'exposure_report_exposure_parameter_adjustment_changes') {
|
|
|
+ // 参数调整变动量明细
|
|
|
+ // 注册表头
|
|
|
+ registerColumnDetail('table_pcweb_change_in_parameter_adjustment', []);
|
|
|
+ fn = qryAreaExpourseParamChLogDetail;
|
|
|
+ } else {
|
|
|
+ console.error(`${lable}没有配置对应的code: ${code},`);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ // 查询明细数据
|
|
|
+ queryResultLoadingAndInfo(fn, loading, param).then((res) => {
|
|
|
+ detailTableList.value = res;
|
|
|
+ });
|
|
|
+ }
|
|
|
+ watchEffect(() => {
|
|
|
+ if (visible.value) {
|
|
|
+ if (tabList.value.length) {
|
|
|
+ changeTab(0, tabList.value[0]);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
+ function search(value: TypeAndTime) {
|
|
|
+ cycletime = value.cycletime;
|
|
|
+ const obj = Object.assign(value, { querytype: 1 });
|
|
|
+ queryTable(qryAreaExpourseReport, obj);
|
|
|
+ }
|
|
|
+
|
|
|
+ return { loading, tableList, visible, closeDrawer, columns, updateColumn, search, columnsDetail, detailTableList, expandedRowKeys, selectedRow, Rowclick, tabList, changeTab };
|
|
|
},
|
|
|
});
|
|
|
</script>
|
|
|
|
|
|
<style lang="less">
|
|
|
-.exposure-report {
|
|
|
-}
|
|
|
</style>;
|