huangbin 4 years ago
parent
commit
fed8992378

+ 8 - 9
src/views/manage/finance-review/components/invoiceAudit/index.vue

@@ -72,10 +72,10 @@
           <a-col :span="12">
             <a-form-item label="发票附件">
               <span class="white"
-                    v-if="selectedRow.invoiceamount"></span>
-              <span class="white"
+                    v-if="selectedRow.attachurl"></span>
+              <span class="blue"
                     v-else
-                    @click="previewImg">{{ selectedRow.invoiceamount }}</span>
+                    @click="previewImg(selectedRow.attachurl )">查看</span>
             </a-form-item>
           </a-col>
           <a-col :span="12">
@@ -120,10 +120,11 @@ import { somePriceControl } from '@/views/manage/business-review/components/setu
 import { financeControl } from '@/views/manage/finance-review/components/setup';
 import { isShowContractCheck } from '@/views/manage/inventory-review/setup';
 import { handlePreviewImg } from '@/common/setup/upload';
+import { _closeModal } from '@/common/setup/modal/modal';
 
 export default defineComponent({
     name: 'finance_review_invoice_audit',
-    components: {},
+    emits: ['cancel', 'update'],
     props: {
         selectedRow: {
             type: Object as PropType<QryBussinessFpRsp>,
@@ -131,7 +132,7 @@ export default defineComponent({
         },
     },
     setup(props, context) {
-        const { visible, cancel } = closeModal('finance_review_invoice_audit');
+        const { visible, cancel } = _closeModal(context);
         const loading = ref<boolean>(false);
         const maskClosableFlag = ref<boolean>(false);
         // 预览附件
@@ -157,8 +158,7 @@ export default defineComponent({
                     };
                     financeControl(param, loading)
                         .then((res) => {
-                            context.emit('refresh');
-                            cancel();
+                            cancel(true);
                         })
                         .catch((err) => {});
                 },
@@ -179,8 +179,7 @@ export default defineComponent({
                     };
                     financeControl(param, loading)
                         .then((res) => {
-                            context.emit('refresh');
-                            cancel();
+                            cancel(true);
                         })
                         .catch((err) => {});
                 },

+ 4 - 3
src/views/manage/finance-review/components/invoiceCancel/index.vue

@@ -101,9 +101,11 @@ import { ContractOperateApplyReq } from '@/services/proto/contract/interface';
 import Long from 'long';
 import { somePriceControl } from '@/views/manage/business-review/components/setup';
 import { financeControl } from '@/views/manage/finance-review/components/setup';
+import { _closeModal } from '@/common/setup/modal/modal';
 
 export default defineComponent({
     name: 'finance_review_invoice_cancel',
+    emits: ['cancel', 'update'],
     components: {},
     props: {
         selectedRow: {
@@ -112,7 +114,7 @@ export default defineComponent({
         },
     },
     setup(props, context) {
-        const { visible, cancel } = closeModal('finance_review_invoice_cancel');
+        const { visible, cancel } = _closeModal(context);
         const loading = ref<boolean>(false);
         const maskClosableFlag = ref<boolean>(false);
 
@@ -130,8 +132,7 @@ export default defineComponent({
                     };
                     financeControl(param, loading)
                         .then((res) => {
-                            context.emit('refresh');
-                            cancel();
+                            cancel(true);
                         })
                         .catch((err) => {});
                 },

+ 4 - 3
src/views/manage/finance-review/components/invoiceDetail/index.vue

@@ -104,9 +104,11 @@ import { QryBussinessFpRsp } from '@/services/go/ermcp/finance-review/interface'
 import { invoiceStatusName } from '@/views/manage/finance-review/setup';
 import { getContractTypeName, getPriceTypeName } from '@/common/constants/enumsName';
 import { handlePreviewImg } from '@/common/setup/upload';
+import { _closeModal } from '@/common/setup/modal/modal';
 
 export default defineComponent({
     name: 'finance_review_invoice_detail',
+    emits: ['cancel', 'update'],
     components: {},
     props: {
         selectedRow: {
@@ -115,14 +117,13 @@ export default defineComponent({
         },
     },
     setup(props, context) {
-        const { visible, cancel } = closeModal('detail');
+        const { visible, cancel } = _closeModal(context);
         const loading = ref<boolean>(false);
         const maskClosableFlag = ref<boolean>(false);
         // 预览附件
         const { previewVisible, previewImage, cancelImg, previewImg } = handlePreviewImg();
         function submit() {
-            context.emit('refresh');
-            cancel();
+            cancel(true);
         }
 
         return {

+ 92 - 90
src/views/manage/finance-review/list/invoice/index.vue

@@ -3,56 +3,58 @@
   <div class="finance_review_invoice"
        :loading="loading">
     <Filter @search="updateColumn">
-      <BtnList :btnList="commonBtn" />
+      <BtnList :btnList="firstBtn"
+               @click="openComponent" />
     </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(secondBtn, 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(secondBtn, 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 +62,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 +75,62 @@ 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.business_review_settlement,
+            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,
+            ...handleComposeTable<QryBussinessFpRsp>(param),
 
-            expandedRowKeys,
-            selectedRow,
-            Rowclick,
-            commonBtn,
-            forDataBtn,
             loading,
             tableList,
-            updateColumn,
+            handlePermissionBtn,
             getContractTypeName,
             invoiceStatusName,
             getApplyStatusName,
             operateApplyTypeName,
-            getTableData,
         };
     },
 });