|
|
@@ -3,56 +3,56 @@
|
|
|
<div class="finance_review_invoice"
|
|
|
:loading="loading">
|
|
|
<Filter @search="updateColumn">
|
|
|
- <BtnList :btnList="commonBtn" />
|
|
|
</Filter>
|
|
|
- <contextMenu :contextMenuList="forDataBtn">
|
|
|
- <a-table :columns="columns"
|
|
|
- class="topTable"
|
|
|
- :pagination="false"
|
|
|
- :expandedRowKeys="expandedRowKeys"
|
|
|
- :customRow="Rowclick"
|
|
|
- rowKey="key"
|
|
|
- :data-source="tableList">
|
|
|
- <!-- 额外的展开行 -->
|
|
|
- <template #expandedRowRender="{ record }">
|
|
|
- <BtnList :btnList="record.btnList" />
|
|
|
- </template>
|
|
|
- <!-- 现货合同类型 -->
|
|
|
- <template #contracttype="{ text }">
|
|
|
- <a>{{ getContractTypeName(text) }}</a>
|
|
|
- </template>
|
|
|
- <!-- 发票类型-->
|
|
|
- <template #invoicetype="{ record }">
|
|
|
- <a>{{ invoiceStatusName(record.contracttype) }}</a>
|
|
|
- </template>
|
|
|
- <!-- 状态 -->
|
|
|
- <template #applystatus="{ text }">
|
|
|
- <a>{{ getApplyStatusName(text) }}</a>
|
|
|
- </template>
|
|
|
- <!-- 点价类型 -->
|
|
|
- <template #operateapplytype="{ text }">
|
|
|
- <a>{{ operateApplyTypeName(text) }}</a>
|
|
|
- </template>
|
|
|
- <!-- 对手方 -->
|
|
|
- <template #buyusernameOrsellusername="{ record }">
|
|
|
- <a>{{ record.contracttype === 1 ? record.sellusername : record.buyusername }}</a>
|
|
|
- </template>
|
|
|
- </a-table>
|
|
|
+ <a-table :columns="columns"
|
|
|
+ class="topTable"
|
|
|
+ :pagination="false"
|
|
|
+ :expandedRowKeys="expandedRowKeys"
|
|
|
+ :customRow="Rowclick"
|
|
|
+ rowKey="key"
|
|
|
+ :data-source="tableList">
|
|
|
+ <!-- 额外的展开行 -->
|
|
|
+ <!-- 额外的展开行 -->
|
|
|
+ <template #expandedRowRender="{ record }">
|
|
|
+ <BtnList :btnList="handlePermissionBtn(firstBtn, record)"
|
|
|
+ :record="record"
|
|
|
+ @click="openComponent" />
|
|
|
+ </template>
|
|
|
+ <!-- 现货合同类型 -->
|
|
|
+ <template #contracttype="{ text }">
|
|
|
+ <a>{{ getContractTypeName(text) }}</a>
|
|
|
+ </template>
|
|
|
+ <!-- 发票类型-->
|
|
|
+ <template #invoicetype="{ record }">
|
|
|
+ <a>{{ invoiceStatusName(record.contracttype) }}</a>
|
|
|
+ </template>
|
|
|
+ <!-- 状态 -->
|
|
|
+ <template #applystatus="{ text }">
|
|
|
+ <a>{{ getApplyStatusName(text) }}</a>
|
|
|
+ </template>
|
|
|
+ <!-- 点价类型 -->
|
|
|
+ <template #operateapplytype="{ text }">
|
|
|
+ <a>{{ operateApplyTypeName(text) }}</a>
|
|
|
+ </template>
|
|
|
+ <!-- 对手方 -->
|
|
|
+ <template #buyusernameOrsellusername="{ record }">
|
|
|
+ <a>{{ record.contracttype === 1 ? record.sellusername : record.buyusername }}</a>
|
|
|
+ </template>
|
|
|
+ </a-table>
|
|
|
+ <!-- 右键 -->
|
|
|
+ <contextMenu :contextMenu="contextMenu"
|
|
|
+ @cancel="closeContext"
|
|
|
+ :list="handlePermissionBtn(firstBtn, selectedRow)">
|
|
|
</contextMenu>
|
|
|
- <!-- 点价记录详情 -->
|
|
|
- <InvoiceDetail :selectedRow="selectedRow"
|
|
|
- @refresh="getTableData" />
|
|
|
- <!-- 交收审核 -->
|
|
|
- <InvoiceAudit :selectedRow="selectedRow"
|
|
|
- @refresh="getTableData" />
|
|
|
- <!-- 撤销点价登记 -->
|
|
|
- <InvoiceCancel :selectedRow="selectedRow"
|
|
|
- @refresh="getTableData" />
|
|
|
+ <component :is="componentId"
|
|
|
+ v-if="componentId"
|
|
|
+ :selectedRow="selectedRow"
|
|
|
+ @cancel="closeComponent"></component>
|
|
|
</div>
|
|
|
</template>
|
|
|
|
|
|
<script lang="ts">
|
|
|
-import { defineComponent, initData, getTableColumns, getTableEvent, getBtnList, contextMenu, BtnList } from '@/common/export/table';
|
|
|
+import { BtnList, contextMenu, defineAsyncComponent, defineComponent, ModalEnum, handleComposeTable, ComposeTableParam } from '@/common/export/commonTable';
|
|
|
|
|
|
import { InvoiceAudit, InvoiceCancel, InvoiceDetail, Filter } from '../../components';
|
|
|
|
|
|
@@ -60,6 +60,12 @@ import { queryTableList, QryBussinessFpRsp } from './setup';
|
|
|
import { invoiceStatusName, operateApplyTypeName } from '@/views/manage/finance-review/setup';
|
|
|
import { Column, ColumnType } from '@/common/setup/table';
|
|
|
import { getContractTypeName, getApplyStatusName } from '@/common/constants/enumsName';
|
|
|
+import { EnumRouterName } from '@/common/constants/enumRouterName';
|
|
|
+import { BtnList as BtnListType } from '@/common/components/btnList/interface';
|
|
|
+
|
|
|
+const Detail = defineAsyncComponent(() => import('../../components/invoiceDetail/index.vue'));
|
|
|
+const Audit = defineAsyncComponent(() => import('../../components/invoiceAudit/index.vue'));
|
|
|
+const Cancel = defineAsyncComponent(() => import('../../components/invoiceCancel/index.vue'));
|
|
|
|
|
|
export default defineComponent({
|
|
|
name: 'finance_review_invoice',
|
|
|
@@ -67,68 +73,61 @@ export default defineComponent({
|
|
|
contextMenu,
|
|
|
Filter,
|
|
|
BtnList,
|
|
|
- InvoiceDetail,
|
|
|
- InvoiceAudit,
|
|
|
- InvoiceCancel,
|
|
|
+ [ModalEnum.detail]: Detail,
|
|
|
+ [ModalEnum.business_review_settlement_audit]: Audit,
|
|
|
+ [ModalEnum.business_review_settlement_cancel]: Cancel,
|
|
|
},
|
|
|
setup() {
|
|
|
- // 表头数据
|
|
|
- const { columns, registerColumn, updateColumn } = getTableColumns();
|
|
|
- // 表格事件
|
|
|
- const { expandedRowKeys, selectedRow, Rowclick } = getTableEvent<QryBussinessFpRsp>({});
|
|
|
- // 表格操作按钮列表
|
|
|
- const { commonBtn, forDataBtn } = getBtnList('finance_review_invoice', true);
|
|
|
// 表格列表数据
|
|
|
const { loading, tableList, queryTable } = queryTableList({});
|
|
|
- function getTableData() {
|
|
|
- // 获取列表数据
|
|
|
- queryTable().then(() => {
|
|
|
- tableList.value.forEach((el) => {
|
|
|
- if (el.applystatus === 1) {
|
|
|
- // 1:待审核
|
|
|
- Object.assign(el, { btnList: forDataBtn.value });
|
|
|
+
|
|
|
+ // 获取列表数据
|
|
|
+ const queryTableAction = () => queryTable();
|
|
|
+ const filtrFn = (e: Column, item: ColumnType, filtered: any) => {
|
|
|
+ if (e.columnfield === 'buyusernameOrsellusername') {
|
|
|
+ item.onFilter = (value: string, record: QryBussinessFpRsp) => {
|
|
|
+ const { contracttype, buyusername, sellusername } = record;
|
|
|
+ if (contracttype === 1) {
|
|
|
+ // 采购
|
|
|
+ return sellusername.includes(value);
|
|
|
} else {
|
|
|
- const item = forDataBtn.value.find((e) => e.lable === '详情');
|
|
|
- item && Object.assign(el, { btnList: [item] });
|
|
|
+ return buyusername.includes(value);
|
|
|
}
|
|
|
- });
|
|
|
- });
|
|
|
- }
|
|
|
- initData(() => {
|
|
|
- getTableData();
|
|
|
- // 注册表头信息 过滤
|
|
|
- registerColumn('table_pcweb_fincial_aduit_fp', ['contracttype', 'contractno', 'deliverygoodsname'], (e: Column, item: ColumnType, filtered: any) => {
|
|
|
- if (e.columnfield === 'buyusernameOrsellusername') {
|
|
|
- item.onFilter = (value: string, record: QryBussinessFpRsp) => {
|
|
|
- const { contracttype, buyusername, sellusername } = record;
|
|
|
- if (contracttype === 1) {
|
|
|
- // 采购
|
|
|
- return sellusername.includes(value);
|
|
|
- } else {
|
|
|
- return buyusername.includes(value);
|
|
|
- }
|
|
|
- };
|
|
|
- item.filteredValue = filtered.buyusernameOrsellusername || null;
|
|
|
+ };
|
|
|
+ item.filteredValue = filtered.buyusernameOrsellusername || null;
|
|
|
+ }
|
|
|
+ };
|
|
|
+ // 表格通用逻辑
|
|
|
+ const param: ComposeTableParam = {
|
|
|
+ queryFn: queryTableAction,
|
|
|
+ menuType: EnumRouterName.finance_review_invoice,
|
|
|
+ tableName: 'table_pcweb_fincial_aduit_fp',
|
|
|
+ tableFilterKey: ['contracttype', 'contractno', 'deliverygoodsname'],
|
|
|
+ tableFilterCB: filtrFn,
|
|
|
+ isDetail: true,
|
|
|
+ };
|
|
|
+ function handlePermissionBtn(btnList: BtnListType[], item: QryBussinessFpRsp) {
|
|
|
+ if (item) {
|
|
|
+ const { applystatus } = item;
|
|
|
+ if (applystatus === 1) {
|
|
|
+ return btnList;
|
|
|
+ } else {
|
|
|
+ return btnList.filter((e) => e.code === 'detail');
|
|
|
}
|
|
|
- });
|
|
|
- });
|
|
|
+ } else {
|
|
|
+ return [];
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
return {
|
|
|
- columns,
|
|
|
-
|
|
|
- expandedRowKeys,
|
|
|
- selectedRow,
|
|
|
- Rowclick,
|
|
|
- commonBtn,
|
|
|
- forDataBtn,
|
|
|
+ ...handleComposeTable<QryBussinessFpRsp>(param),
|
|
|
loading,
|
|
|
tableList,
|
|
|
- updateColumn,
|
|
|
+ handlePermissionBtn,
|
|
|
getContractTypeName,
|
|
|
invoiceStatusName,
|
|
|
getApplyStatusName,
|
|
|
operateApplyTypeName,
|
|
|
- getTableData,
|
|
|
};
|
|
|
},
|
|
|
});
|