huangbin преди 4 години
родител
ревизия
4727c0d97c

+ 1 - 1
src/common/methods/table/interface.ts

@@ -23,7 +23,7 @@ export interface TableKey {
     table_pcweb_exposure_futuresposition_detail: string; // 敞口--现货头寸--期货明细
     table_pcweb_exposure_spotposition: string; // 敞口--现货头寸
     table_pcweb_exposure_spotposition_detail: string; // 敞口--现货头寸--现货明细
-    table_pcweb_fincial_aduit_fp: string; // 务审核-发票
+    table_pcweb_fincial_aduit_fp: string; // 务审核-发票
     table_pcweb_fincial_aduit_kx: string; // 财务审核-款项
     table_pcweb_purchase_all: string; // 采购_全部
     table_pcweb_purchase_pointprice: string; // 采购_待点价

+ 19 - 19
src/router/index.ts

@@ -374,25 +374,25 @@ const routes: Array<RouteRecordRaw> = [
                 meta: {
                     requireAuth: true,
                 },
-                // redirect: { name: 'finance_review_funds' },
-                // children: [
-                //     {
-                //         path: '/review/someprice',
-                //         name: 'finance_review_funds',
-                //         component: () => import('@/views/manage/business-review/list/someprice/index.vue'),
-                //         meta: {
-                //             requireAuth: true,
-                //         },
-                //     },
-                //     {
-                //         path: '/review/settlement',
-                //         name: 'finance_review_invoice',
-                //         component: () => import('@/views/manage/business-review/list/settlement/index.vue'),
-                //         meta: {
-                //             requireAuth: true,
-                //         },
-                //     },
-                // ]
+                redirect: { name: 'finance_review_funds' },
+                children: [
+                    {
+                        path: '/review/funds',
+                        name: 'finance_review_funds',
+                        component: () => import('@/views/manage/finance-review/list/funds/index.vue'),
+                        meta: {
+                            requireAuth: true,
+                        },
+                    },
+                    {
+                        path: '/review/invoice',
+                        name: 'finance_review_invoice',
+                        component: () => import('@/views/manage/finance-review/list/invoice/index.vue'),
+                        meta: {
+                            requireAuth: true,
+                        },
+                    },
+                ]
             },
             {
                 path: '/inventory_review',

+ 13 - 5
src/services/go/ermcp/finance-review/index.ts

@@ -1,20 +1,24 @@
 /** ================================= 管理 - 财务审核 ================================**/
+import { getUserId } from '@/services/bus/account';
+import { commonSearch_go } from "@/services/go";
 import {
     QryBussinessFpRsp,
     QryBussinessKxRsp,
     QueryBusinessFpReq,
     QueryBusinessKxReq
 } from "@/services/go/ermcp/finance-review/interface";
-import {commonSearch_go} from "@/services/go";
-import {QryBusinessDjRsp} from "@/services/go/ermcp/business-review/interface";
 
 /**
  * 查询财务管理(款项)(对应菜单:财务管理/款项) /Ermcp/QueryBusinessKx
- * @param req.UserId  // 用户ID (必填)
+ * @param req.QueryBusinessKxReq  // 用户ID (必填)
  * @constructor
  */
 export function QueryBusinessKx(req: QueryBusinessKxReq): Promise<QryBussinessKxRsp[]> {
-    return commonSearch_go('/Ermcp/QueryBusinessKx', req).catch((err) => {
+    const param = {
+        UserId: getUserId(),
+    }
+    Object.assign(param, req)
+    return commonSearch_go('/Ermcp/QueryBusinessKx', param).catch((err) => {
         throw new Error(`财务管理-款项: ${err.message}`);
     });
 }
@@ -25,7 +29,11 @@ export function QueryBusinessKx(req: QueryBusinessKxReq): Promise<QryBussinessKx
  * @constructor
  */
 export function QueryBusinessFp(req: QueryBusinessFpReq): Promise<QryBussinessFpRsp[]> {
-    return commonSearch_go('/Ermcp/QueryBusinessFp', req).catch((err) => {
+    const param = {
+        UserId: getUserId(),
+    }
+    Object.assign(param, req)
+    return commonSearch_go('/Ermcp/QueryBusinessFp', param).catch((err) => {
         throw new Error(`财务管理-发票: ${err.message}`);
     });
 }

+ 70 - 72
src/services/go/ermcp/finance-review/interface.ts

@@ -1,8 +1,7 @@
 /**
  *  查询财务管理 - 款项 请求
  */
-export interface QueryBusinessKxReq{
-    UserId: number  // 用户ID
+export interface QueryBusinessKxReq {
     relatedid?: string // 现货合同ID, 不填则查所有
     applystatus?: string  // 申请状态(逗号隔开) 1:待审核 2:审核通过 3:审核拒绝 4:处理失败 5:已撤回
 }
@@ -10,48 +9,47 @@ export interface QueryBusinessKxReq{
 /**
  *  查询财务管理 - 款项 返回
  */
-export interface QryBussinessKxRsp{
-    applyid	:string;//申请人
-    applyname	:string;//申请人名称
-    applystatus	:number;//申请状态 - 1:待审核 2:审核通过 3:审核拒绝 4:处理失败 5:已撤回
-    applytime	:string;//申请时间
-    attachurl	:string;//附件
-    auditid	:string;//审核人ID
-    auditname	:string;//审核人名称
-    audittime	:string;//审核时间
-    buyusername	:string;//采购方名称
-    contractno	:string;//合同编号
-    contractstatus	:number;//合同状态- number;
-//:未提交 1:待审核 2:执行中 3:正常完结 4:审核拒绝 5:异常完结 6:已撤回
-    contracttype	:number;//现货合同类型 - 1:采购 -1:销售
-    deductamount	:number;//退款(非必填)
-    deliverygoodscode	:string;//现货品种代码
-    deliverygoodsid	:number;//现货商品ID
-    deliverygoodsname	:string;//现货品种名称
-    enumdicname	:string;//单位名称
-    goodscode	:string;//点价合约
-    goodsname	:string;//商品名称
-    kxtype	:number;//款项类型 1-收付款(PayAmount字段有值) 2-退款(DeductAmount字段有值) 3-收付款/退款(2个字段都有)
-    operateapplyid	:string;//操作申请ID(6number;
-//3+Unix秒时间戳(1number;
-//位)+xxxxxx)
-    operateapplytype	:number;//操作申请类型 - 1:点价 2:结算登记 3:款项登记 4:发票登记
-    payamount	:number;//收付款(非必填)
-    pricemove	:number;//升贴水
-    pricetype	:number;//定价类型 - 1:一口价 2:点价 3:暂定价
-    relatedid	:string;//现货合同ID
-    sellusername	:string;//销售方名字
-    userid	:number;//用户ID
-    wrstandardcode	:string;//品类代码
-    wrstandardid	:number;//品类id
-    wrstandardname	:string;//品类名称
+export interface QryBussinessKxRsp {
+    applyid: string;//申请人
+    applyname: string;//申请人名称
+    applystatus: number;//申请状态 - 1:待审核 2:审核通过 3:审核拒绝 4:处理失败 5:已撤回
+    applytime: string;//申请时间
+    attachurl: string;//附件
+    auditid: string;//审核人ID
+    auditname: string;//审核人名称
+    audittime: string;//审核时间
+    buyusername: string;//采购方名称
+    contractno: string;//合同编号
+    contractstatus: number;//合同状态- number;
+    //:未提交 1:待审核 2:执行中 3:正常完结 4:审核拒绝 5:异常完结 6:已撤回
+    contracttype: number;//现货合同类型 - 1:采购 -1:销售
+    deductamount: number;//退款(非必填)
+    deliverygoodscode: string;//现货品种代码
+    deliverygoodsid: number;//现货商品ID
+    deliverygoodsname: string;//现货品种名称
+    enumdicname: string;//单位名称
+    goodscode: string;//点价合约
+    goodsname: string;//商品名称
+    kxtype: number;//款项类型 1-收付款(PayAmount字段有值) 2-退款(DeductAmount字段有值) 3-收付款/退款(2个字段都有)
+    operateapplyid: string;//操作申请ID(6number;
+    //3+Unix秒时间戳(1number;
+    //位)+xxxxxx)
+    operateapplytype: number;//操作申请类型 - 1:点价 2:结算登记 3:款项登记 4:发票登记
+    payamount: number;//收付款(非必填)
+    pricemove: number;//升贴水
+    pricetype: number;//定价类型 - 1:一口价 2:点价 3:暂定价
+    relatedid: string;//现货合同ID
+    sellusername: string;//销售方名字
+    userid: number;//用户ID
+    wrstandardcode: string;//品类代码
+    wrstandardid: number;//品类id
+    wrstandardname: string;//品类名称
 }
 
 /**
  * 财务管理/发票 请求
  */
-export interface QueryBusinessFpReq{
-    UserId: number  // 用户ID
+export interface QueryBusinessFpReq {
     relatedid?: string // 现货合同ID, 不填则查所有
     applystatus?: string  // 申请状态(逗号隔开) 1:待审核 2:审核通过 3:审核拒绝 4:处理失败 5:已撤回
 }
@@ -59,38 +57,38 @@ export interface QueryBusinessFpReq{
 /**
  * 财务管理/发票 返回
  */
-export interface QryBussinessFpRsp{
-    applyid	:string;//申请人
-    applyname	:string;//申请人名称
-    applystatus	:number;//申请状态 - 1:待审核 2:审核通过 3:审核拒绝 4:处理失败 5:已撤回
-    applytime	:string;//申请时间
-    attachurl	:string;//附件
-    auditid	:string;//审核人ID
-    auditname	:string;//审核人名称
-    audittime	:string;//审核时间
-    buyusername	:string;//采购方名称
-    contractno	:string;//合同编号
-    contractstatus	:number;//合同状态- number;
-//:未提交 1:待审核 2:执行中 3:正常完结 4:审核拒绝 5:异常完结 6:已撤回
-    contracttype	:number;//现货合同类型 - 1:采购 -1:销售
-    deliverygoodscode	:string;//现货品种代码
-    deliverygoodsid	:number;//现货商品ID
-    deliverygoodsname	:string;//现货品种名称
-    enumdicname	:string;//单位名称
-    goodscode	:string;//点价合约
-    goodsname	:string;//商品名称
-    invoiceAmount	:number;//已开收票金额(销售为开票,采购为收票)
-    operateapplyid	:string;//操作申请ID(6number;
-//3+Unix秒时间戳(1number;
-//位)+xxxxxx)
-    operateapplytype	:number;//操作申请类型 - 1:点价 2:结算登记 3:款项登记 4:发票登记
-    pricemove	:number;//升贴水
-    pricetype	:number;//定价类型 - 1:一口价 2:点价 3:暂定价
-    relatedid	:string;//现货合同ID
-    sellusername	:string;//销售方名字
-    userid	:number;//用户ID
-    wrstandardcode	:string;//品类代码
-    wrstandardid	:number;//品类id
-    wrstandardname	:string;//品类名称
+export interface QryBussinessFpRsp {
+    applyid: string;//申请人
+    applyname: string;//申请人名称
+    applystatus: number;//申请状态 - 1:待审核 2:审核通过 3:审核拒绝 4:处理失败 5:已撤回
+    applytime: string;//申请时间
+    attachurl: string;//附件
+    auditid: string;//审核人ID
+    auditname: string;//审核人名称
+    audittime: string;//审核时间
+    buyusername: string;//采购方名称
+    contractno: string;//合同编号
+    contractstatus: number;//合同状态- number;
+    //:未提交 1:待审核 2:执行中 3:正常完结 4:审核拒绝 5:异常完结 6:已撤回
+    contracttype: number;//现货合同类型 - 1:采购 -1:销售
+    deliverygoodscode: string;//现货品种代码
+    deliverygoodsid: number;//现货商品ID
+    deliverygoodsname: string;//现货品种名称
+    enumdicname: string;//单位名称
+    goodscode: string;//点价合约
+    goodsname: string;//商品名称
+    invoiceAmount: number;//已开收票金额(销售为开票,采购为收票)
+    operateapplyid: string;//操作申请ID(6number;
+    //3+Unix秒时间戳(1number;
+    //位)+xxxxxx)
+    operateapplytype: number;//操作申请类型 - 1:点价 2:结算登记 3:款项登记 4:发票登记
+    pricemove: number;//升贴水
+    pricetype: number;//定价类型 - 1:一口价 2:点价 3:暂定价
+    relatedid: string;//现货合同ID
+    sellusername: string;//销售方名字
+    userid: number;//用户ID
+    wrstandardcode: string;//品类代码
+    wrstandardid: number;//品类id
+    wrstandardname: string;//品类名称
 }
 

+ 141 - 0
src/views/manage/finance-review/components/filterTable/index.vue

@@ -0,0 +1,141 @@
+<template>
+  <!-- 过滤客户资料表格 -->
+  <div class="filter-custom-table">
+    <a-select label-in-value
+              class="conditionSelect"
+              style="width: 120px"
+              v-model:value="contracttype"
+              placeholder="全部合同类型"
+              @change="handleChange">
+      <a-select-option value="1">采购</a-select-option>
+      <a-select-option value="-1">销售</a-select-option>
+    </a-select>
+    <a-input v-model:value="name"
+             class="tableConditionInput"
+             placeholder="模糊搜索对手方" />
+    <a-input v-model:value="contractno"
+             class="tableConditionInput"
+             placeholder="模糊搜索合同编号" />
+    <a-input v-model:value="deliverygoodsname"
+             class="tableConditionInput"
+             placeholder="模糊搜索现货品种" />
+    <a-button class="selectBtn"
+              @click="search">查询</a-button>
+    <a-button class="selectBtn"
+              @click="reset">重置</a-button>
+    <slot></slot>
+  </div>
+</template>
+
+<script lang="ts">
+import { defineComponent, ref, SetupContext } from 'vue';
+
+// 搜索
+function handleSearch(context: SetupContext) {
+    const contracttype = ref<string | undefined>(undefined);
+    const name = ref<string>('');
+    const contractno = ref<string>('');
+    const deliverygoodsname = ref<string>('');
+
+    interface Value {
+        key: string;
+        value: string;
+    }
+    let useType = '';
+    function handleChange(value: Value) {
+        useType = value.value;
+        search();
+    }
+
+    function search() {
+        const result = {
+            contracttype: [useType],
+            contractno: [contractno.value],
+            deliverygoodsname: [deliverygoodsname.value],
+            name: [name.value],
+        };
+        context.emit('search', result);
+    }
+    function reset() {
+        contracttype.value = undefined;
+        contractno.value = '';
+        name.value = '';
+        deliverygoodsname.value = '';
+        search();
+    }
+
+    return { contracttype, name, contractno, deliverygoodsname, search, reset, handleChange };
+}
+
+export default defineComponent({
+    name: 'purchase_pending-filter-table',
+    components: {},
+    setup(props, context) {
+        return {
+            ...handleSearch(context),
+        };
+    },
+});
+</script>
+
+<style lang="less">
+.filter-custom-table {
+    width: 100%;
+    display: inline-flex;
+    padding-top: 9px;
+    padding-bottom: 6px;
+    .ant-select-single:not(.ant-select-customize-input) {
+        margin-right: 10px;
+        // background: #252D34;
+        // .rounded-corners(3px);
+        .ant-select-selector {
+            height: 30px;
+            padding: 0 8px;
+            background: @m-grey9;
+            border: none;
+            .rounded-corners(3px);
+            color: @m-grey10;
+            .ant-select-arrow {
+                right: 8px;
+                color: @m-grey1;
+            }
+        }
+        .ant-select-arrow {
+            color: @m-grey1;
+        }
+        .ant-select-selection-item {
+            color: @m-white1;
+        }
+    }
+    .conditionSelect + .conditionSelect {
+        margin-left: 10px;
+    }
+}
+.selectBtn.ant-btn {
+    margin-left: 10px;
+    width: 80px;
+    height: 30px;
+    line-height: 31px;
+    text-align: center;
+    background: linear-gradient(0deg, @m-grey15 0%, @m-grey16 98%);
+    border: 0;
+    color: @m-white0;
+    font-size: 14px;
+    .rounded-corners(3px);
+    &:hover,
+    &:focus {
+        background: linear-gradient(0deg, @m-grey15-hover 0%, @m-grey16-hover 98%);
+        color: rgba(@m-white0, 0.8);
+        border: 0;
+    }
+}
+.operBtn.ant-btn:extend(.selectBtn.ant-btn) {
+    background: linear-gradient(0deg, @m-blue6 0%, @m-blue7 99%);
+    &:hover,
+    &:focus {
+        background: linear-gradient(0deg, @m-blue6-hover 0%, @m-blue7-hover 99%);
+        color: rgba(@m-white0, 0.8);
+        border: 0;
+    }
+}
+</style>;

+ 67 - 0
src/views/manage/finance-review/components/fundsAudit/index.vue

@@ -0,0 +1,67 @@
+<template>
+  <!-- 款项审核-->
+  <a-modal class="finance_review_funds_audit custom-detail"
+           title="款项审核"
+           v-model:visible="visible"
+           centered
+           :maskClosable="maskClosableFlag"
+           @cancel="cancel"
+           width="890px">
+    <template #footer>
+      <a-button key="submit"
+                type="primary"
+                :loading="loading.loading"
+                @click="submit">关闭</a-button>
+    </template>
+
+  </a-modal>
+</template>
+
+<script lang="ts">
+import { defineComponent, PropType, reactive, ref, watchEffect } from 'vue';
+import { closeModal } from '@/common/setup/modal/index';
+import { QueryCustomInfoType } from '@/services/go/ermcp/customInfo/interface';
+import { mergeObj } from '@/utils/objHandle';
+import { getStatusName } from '@/views/information/custom/setup';
+import { formatValue, formatTime } from '@/common/methods';
+
+export default defineComponent({
+    name: 'finance_review_funds_audit',
+    components: {},
+    props: {
+        selectedRow: {
+            type: Object as PropType<QueryCustomInfoType>,
+            default: {},
+        },
+    },
+    setup(props) {
+        const { visible, cancel } = closeModal('finance_review_funds_audit');
+        const loading = ref<boolean>(false);
+        const maskClosableFlag = ref<boolean>(false);
+        function submit() {
+            loading.value = true;
+            setTimeout(() => {
+                loading.value = false;
+                cancel();
+            }, 2000);
+        }
+        return {
+            visible,
+            cancel,
+            submit,
+            loading,
+            formatValue,
+            getStatusName,
+            maskClosableFlag,
+        };
+    },
+});
+</script>
+
+<style lang="less">
+.finance_review_funds_audit {
+    .ant-form.inlineForm {
+        margin-top: 20px;
+    }
+}
+</style>;

+ 67 - 0
src/views/manage/finance-review/components/fundsCancel/index.vue

@@ -0,0 +1,67 @@
+<template>
+  <!-- 撤销款项登记-->
+  <a-modal class="finance_review_funds_cancel custom-detail"
+           title="撤销款项登记"
+           v-model:visible="visible"
+           centered
+           :maskClosable="maskClosableFlag"
+           @cancel="cancel"
+           width="890px">
+    <template #footer>
+      <a-button key="submit"
+                type="primary"
+                :loading="loading.loading"
+                @click="submit">关闭</a-button>
+    </template>
+
+  </a-modal>
+</template>
+
+<script lang="ts">
+import { defineComponent, PropType, reactive, ref, watchEffect } from 'vue';
+import { closeModal } from '@/common/setup/modal/index';
+import { QueryCustomInfoType } from '@/services/go/ermcp/customInfo/interface';
+import { mergeObj } from '@/utils/objHandle';
+import { getStatusName } from '@/views/information/custom/setup';
+import { formatValue, formatTime } from '@/common/methods';
+
+export default defineComponent({
+    name: 'finance_review_funds_cancel',
+    components: {},
+    props: {
+        selectedRow: {
+            type: Object as PropType<QueryCustomInfoType>,
+            default: {},
+        },
+    },
+    setup(props) {
+        const { visible, cancel } = closeModal('finance_review_funds_cancel');
+        const loading = ref<boolean>(false);
+        const maskClosableFlag = ref<boolean>(false);
+        function submit() {
+            loading.value = true;
+            setTimeout(() => {
+                loading.value = false;
+                cancel();
+            }, 2000);
+        }
+        return {
+            visible,
+            cancel,
+            submit,
+            loading,
+            formatValue,
+            getStatusName,
+            maskClosableFlag,
+        };
+    },
+});
+</script>
+
+<style lang="less">
+.finance_review_funds_cancel {
+    .ant-form.inlineForm {
+        margin-top: 20px;
+    }
+}
+</style>;

+ 66 - 0
src/views/manage/finance-review/components/fundsDetail/index.vue

@@ -0,0 +1,66 @@
+<template>
+  <!-- 款项详情-->
+  <a-modal class="finance_review_funds_detail custom-detail"
+           title="款项详情"
+           v-model:visible="visible"
+           centered
+           :maskClosable="maskClosableFlag"
+           @cancel="cancel"
+           width="890px">
+    <template #footer>
+      <a-button key="submit"
+                type="primary"
+                :loading="loading.loading"
+                @click="submit">关闭</a-button>
+    </template>
+
+  </a-modal>
+</template>
+
+<script lang="ts">
+import { defineComponent, PropType, reactive, ref, watchEffect } from 'vue';
+import { closeModal } from '@/common/setup/modal/index';
+import { QueryCustomInfoType } from '@/services/go/ermcp/customInfo/interface';
+import { getStatusName } from '@/views/information/custom/setup';
+import { formatValue, formatTime } from '@/common/methods';
+
+export default defineComponent({
+    name: 'finance_review_funds_detail',
+    components: {},
+    props: {
+        selectedRow: {
+            type: Object as PropType<QueryCustomInfoType>,
+            default: {},
+        },
+    },
+    setup(props) {
+        const { visible, cancel } = closeModal('detail');
+        const loading = ref<boolean>(false);
+        const maskClosableFlag = ref<boolean>(false);
+        function submit() {
+            loading.value = true;
+            setTimeout(() => {
+                loading.value = false;
+                cancel();
+            }, 2000);
+        }
+        return {
+            visible,
+            cancel,
+            submit,
+            loading,
+            formatValue,
+            getStatusName,
+            maskClosableFlag,
+        };
+    },
+});
+</script>
+
+<style lang="less">
+.finance_review_funds_detail {
+    .ant-form.inlineForm {
+        margin-top: 20px;
+    }
+}
+</style>;

+ 10 - 0
src/views/manage/finance-review/components/index.ts

@@ -0,0 +1,10 @@
+import Filter from './filterTable/index.vue';
+import FundsAudit from './fundsAudit/index.vue';
+import FundsCancel from './fundsCancel/index.vue';
+import FundsDetail from './fundsDetail/index.vue';
+import InvoiceAudit from './invoiceAudit/index.vue';
+import InvoiceCancel from './invoiceCancel/index.vue';
+import InvoiceDetail from './invoiceDetail/index.vue';
+
+export { Filter, FundsAudit, FundsCancel, FundsDetail, InvoiceAudit, InvoiceCancel, InvoiceDetail };
+

+ 67 - 0
src/views/manage/finance-review/components/invoiceAudit/index.vue

@@ -0,0 +1,67 @@
+<template>
+  <!-- 发票审核-->
+  <a-modal class="finance_review_invoice_audit custom-detail"
+           title="发票审核"
+           v-model:visible="visible"
+           centered
+           :maskClosable="maskClosableFlag"
+           @cancel="cancel"
+           width="890px">
+    <template #footer>
+      <a-button key="submit"
+                type="primary"
+                :loading="loading.loading"
+                @click="submit">关闭</a-button>
+    </template>
+
+  </a-modal>
+</template>
+
+<script lang="ts">
+import { defineComponent, PropType, reactive, ref, watchEffect } from 'vue';
+import { closeModal } from '@/common/setup/modal/index';
+import { QueryCustomInfoType } from '@/services/go/ermcp/customInfo/interface';
+import { mergeObj } from '@/utils/objHandle';
+import { getStatusName } from '@/views/information/custom/setup';
+import { formatValue, formatTime } from '@/common/methods';
+
+export default defineComponent({
+    name: 'finance_review_invoice_audit',
+    components: {},
+    props: {
+        selectedRow: {
+            type: Object as PropType<QueryCustomInfoType>,
+            default: {},
+        },
+    },
+    setup(props) {
+        const { visible, cancel } = closeModal('finance_review_invoice_audit');
+        const loading = ref<boolean>(false);
+        const maskClosableFlag = ref<boolean>(false);
+        function submit() {
+            loading.value = true;
+            setTimeout(() => {
+                loading.value = false;
+                cancel();
+            }, 2000);
+        }
+        return {
+            visible,
+            cancel,
+            submit,
+            loading,
+            formatValue,
+            getStatusName,
+            maskClosableFlag,
+        };
+    },
+});
+</script>
+
+<style lang="less">
+.finance_review_invoice_audit {
+    .ant-form.inlineForm {
+        margin-top: 20px;
+    }
+}
+</style>;

+ 67 - 0
src/views/manage/finance-review/components/invoiceCancel/index.vue

@@ -0,0 +1,67 @@
+<template>
+  <!-- 撤销发票登记-->
+  <a-modal class="finance_review_invoice_cancel custom-detail"
+           title="撤销发票登记"
+           v-model:visible="visible"
+           centered
+           :maskClosable="maskClosableFlag"
+           @cancel="cancel"
+           width="890px">
+    <template #footer>
+      <a-button key="submit"
+                type="primary"
+                :loading="loading.loading"
+                @click="submit">关闭</a-button>
+    </template>
+
+  </a-modal>
+</template>
+
+<script lang="ts">
+import { defineComponent, PropType, reactive, ref, watchEffect } from 'vue';
+import { closeModal } from '@/common/setup/modal/index';
+import { QueryCustomInfoType } from '@/services/go/ermcp/customInfo/interface';
+import { mergeObj } from '@/utils/objHandle';
+import { getStatusName } from '@/views/information/custom/setup';
+import { formatValue, formatTime } from '@/common/methods';
+
+export default defineComponent({
+    name: 'finance_review_invoice_cancel',
+    components: {},
+    props: {
+        selectedRow: {
+            type: Object as PropType<QueryCustomInfoType>,
+            default: {},
+        },
+    },
+    setup(props) {
+        const { visible, cancel } = closeModal('finance_review_invoice_cancel');
+        const loading = ref<boolean>(false);
+        const maskClosableFlag = ref<boolean>(false);
+        function submit() {
+            loading.value = true;
+            setTimeout(() => {
+                loading.value = false;
+                cancel();
+            }, 2000);
+        }
+        return {
+            visible,
+            cancel,
+            submit,
+            loading,
+            formatValue,
+            getStatusName,
+            maskClosableFlag,
+        };
+    },
+});
+</script>
+
+<style lang="less">
+.finance_review_invoice_cancel {
+    .ant-form.inlineForm {
+        margin-top: 20px;
+    }
+}
+</style>;

+ 67 - 0
src/views/manage/finance-review/components/invoiceDetail/index.vue

@@ -0,0 +1,67 @@
+<template>
+  <!-- 发票登记详情-->
+  <a-modal class="finance_review_invoice_detail custom-detail"
+           title="发票登记详情"
+           v-model:visible="visible"
+           centered
+           :maskClosable="maskClosableFlag"
+           @cancel="cancel"
+           width="890px">
+    <template #footer>
+      <a-button key="submit"
+                type="primary"
+                :loading="loading.loading"
+                @click="submit">关闭</a-button>
+    </template>
+
+  </a-modal>
+</template>
+
+<script lang="ts">
+import { defineComponent, PropType, reactive, ref, watchEffect } from 'vue';
+import { closeModal } from '@/common/setup/modal/index';
+import { QueryCustomInfoType } from '@/services/go/ermcp/customInfo/interface';
+import { mergeObj } from '@/utils/objHandle';
+import { getStatusName } from '@/views/information/custom/setup';
+import { formatValue, formatTime } from '@/common/methods';
+
+export default defineComponent({
+    name: 'finance_review_invoice_detail',
+    components: {},
+    props: {
+        selectedRow: {
+            type: Object as PropType<QueryCustomInfoType>,
+            default: {},
+        },
+    },
+    setup(props) {
+        const { visible, cancel } = closeModal('detail');
+        const loading = ref<boolean>(false);
+        const maskClosableFlag = ref<boolean>(false);
+        function submit() {
+            loading.value = true;
+            setTimeout(() => {
+                loading.value = false;
+                cancel();
+            }, 2000);
+        }
+        return {
+            visible,
+            cancel,
+            submit,
+            loading,
+            formatValue,
+            getStatusName,
+            maskClosableFlag,
+        };
+    },
+});
+</script>
+
+<style lang="less">
+.finance_review_invoice_detail {
+    .ant-form.inlineForm {
+        margin-top: 20px;
+    }
+}
+</style>;

+ 0 - 23
src/views/manage/finance-review/index.vue

@@ -1,23 +0,0 @@
-<template>
-  <!-- 财务审核 -->
-  <div class="finance-review">
-    财务审核
-  </div>
-</template>
-
-<script lang="ts">
-import { defineComponent } from 'vue';
-
-export default defineComponent({
-    name: 'finance-review',
-    components: {},
-    setup() {
-        return {};
-    },
-});
-</script>
-
-<style lang="less">
-.finance-review {
-}
-</style>;

+ 96 - 0
src/views/manage/finance-review/list/funds/index.vue

@@ -0,0 +1,96 @@
+<template>
+  <!-- 管理-业务审核-交收 -->
+  <div class="business-review-js"
+       :loading="loading">
+    <Filter @search="search">
+      <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="{  }">
+          <BtnList :btnList="forDataBtn" />
+        </template>
+        <template #warehousetype="{ text }">
+          <span>{{ getWareHouseType(text) }}</span>
+        </template>
+        <template #warehousestatus="{ text }">
+          <span>{{ getWareHouseStatus(text) }}</span>
+        </template>
+      </a-table>
+    </contextMenu>
+    <!-- 点价记录详情 -->
+    <FundsDetail />
+    <!-- 交收审核 -->
+    <FundsAudit />
+    <!-- 撤销点价登记 -->
+    <FundsCancel />
+  </div>
+</template>
+
+<script lang="ts">
+import { defineComponent, initData, getTableColumns, getTableEvent, getBtnList, contextMenu, BtnList } from '@/common/export/table';
+
+import { Filter, FundsAudit, FundsCancel, FundsDetail } from '../../components';
+
+import { queryTableList, getFilterTableCB, QryBussinessKxRsp } from './setup';
+
+export default defineComponent({
+    name: 'business-review-js',
+    components: {
+        contextMenu,
+        Filter,
+        BtnList,
+        FundsDetail,
+        FundsAudit,
+        FundsCancel,
+    },
+    setup() {
+        // 表头数据
+        const { columns, registerColumn, updateColumn, filteredInfo } = getTableColumns();
+        // 表格事件
+        const { expandedRowKeys, selectedRow, Rowclick } = getTableEvent<QryBussinessKxRsp>({});
+        // 表格操作按钮列表
+        const { commonBtn, forDataBtn } = getBtnList('finance_review_funds', true);
+        // 表格列表数据
+        const { loading, tableList, queryTable } = queryTableList({});
+        initData(() => {
+            // 获取列表数据
+            queryTable();
+            // 注册表头信息 过滤
+            registerColumn('table_pcweb_fincial_aduit_kx', getFilterTableCB);
+        });
+        // 查询
+        function search(value: any) {
+            filteredInfo.value = value;
+            // 更新表信息
+            updateColumn();
+        }
+        return {
+            columns,
+            filteredInfo,
+            expandedRowKeys,
+            selectedRow,
+            Rowclick,
+            commonBtn,
+            forDataBtn,
+            loading,
+            tableList,
+            search,
+        };
+    },
+});
+</script>
+
+<style lang="less">
+.business-review-js {
+}
+</style
+>;
+

+ 67 - 0
src/views/manage/finance-review/list/funds/setup.ts

@@ -0,0 +1,67 @@
+import { Column, ColumnType } from '@/common/setup/table/index';
+import { QueryBusinessKx } from '@/services/go/ermcp/finance-review';
+import { QryBussinessKxRsp, QueryBusinessKxReq } from '@/services/go/ermcp/finance-review/interface';
+import { message } from 'ant-design-vue';
+import { ref } from 'vue';
+
+/**
+ * 获取表格列表数据
+ * @param type 
+ * @returns 
+ */
+export function queryTableList(type: QueryBusinessKxReq) {
+    // 加载状态
+    const loading = ref<boolean>(false);
+    // 表格数据
+    const tableList = ref<QryBussinessKxRsp[]>([]);
+    function queryTable() {
+        QueryBusinessKx(type)
+            .then((res) => {
+                tableList.value = res.map((e, i) => {
+                    return { ...e, key: String(i) };
+                });
+                loading.value = false;
+                console.log('查询列表', tableList);
+            })
+            .catch((err) => {
+                message.error(err);
+                loading.value = false;
+            });
+    }
+    return { loading, tableList, queryTable }
+}
+
+/**
+ * 过滤表格的回调函数
+ * @param e 
+ * @param item 
+ * @param filtered 
+ */
+export function getFilterTableCB(e: Column, item: ColumnType, filtered: any) {
+    // 以下添加过滤数据对应的方法
+    if (e.columnfield === 'contracttype') {
+        item.onFilter = (value: string, record: QryBussinessKxRsp) => String(record.contracttype).includes(String(value));
+        item.filteredValue = filtered.contracttype || null;
+    }
+    if (e.columnfield === 'buyusernameOrsellusername') {
+        item.onFilter = (value: string, record: QryBussinessKxRsp) => {
+            const { contracttype, buyusername, sellusername } = record
+            if (contracttype === 1) {   // 采购
+                return sellusername.includes(value)
+            } else {
+                return buyusername.includes(value)
+            }
+        };
+        item.filteredValue = filtered.buyusernameOrsellusername || null;
+    }
+    if (e.columnfield === 'contractno') {
+        item.onFilter = (value: string, record: QryBussinessKxRsp) => record.contractno.includes(value);
+        item.filteredValue = filtered.contractno || null;
+    }
+    if (e.columnfield === 'deliverygoodsname') {
+        item.onFilter = (value: string, record: QryBussinessKxRsp) => record.deliverygoodsname.includes(value);
+        item.filteredValue = filtered.deliverygoodsname || null;
+    }
+}
+
+export type { QryBussinessKxRsp };

+ 96 - 0
src/views/manage/finance-review/list/invoice/index.vue

@@ -0,0 +1,96 @@
+<template>
+  <!-- 管理-业务审核-交收 -->
+  <div class="finance_review_invoice"
+       :loading="loading">
+    <Filter @search="search">
+      <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="{  }">
+          <BtnList :btnList="forDataBtn" />
+        </template>
+        <template #warehousetype="{ text }">
+          <span>{{ getWareHouseType(text) }}</span>
+        </template>
+        <template #warehousestatus="{ text }">
+          <span>{{ getWareHouseStatus(text) }}</span>
+        </template>
+      </a-table>
+    </contextMenu>
+    <!-- 点价记录详情 -->
+    <InvoiceDetail />
+    <!-- 交收审核 -->
+    <InvoiceAudit />
+    <!-- 撤销点价登记 -->
+    <InvoiceCancel />
+  </div>
+</template>
+
+<script lang="ts">
+import { defineComponent, initData, getTableColumns, getTableEvent, getBtnList, contextMenu, BtnList } from '@/common/export/table';
+
+import { InvoiceAudit, InvoiceCancel, InvoiceDetail, Filter } from '../../components';
+
+import { queryTableList, getFilterTableCB, QryBussinessFpRsp } from './setup';
+
+export default defineComponent({
+    name: 'finance_review_invoice',
+    components: {
+        contextMenu,
+        Filter,
+        BtnList,
+        InvoiceDetail,
+        InvoiceAudit,
+        InvoiceCancel,
+    },
+    setup() {
+        // 表头数据
+        const { columns, registerColumn, updateColumn, filteredInfo } = getTableColumns();
+        // 表格事件
+        const { expandedRowKeys, selectedRow, Rowclick } = getTableEvent<QryBussinessFpRsp>({});
+        // 表格操作按钮列表
+        const { commonBtn, forDataBtn } = getBtnList('finance_review_invoice', true);
+        // 表格列表数据
+        const { loading, tableList, queryTable } = queryTableList({});
+        initData(() => {
+            // 获取列表数据
+            queryTable();
+            // 注册表头信息 过滤
+            registerColumn('table_pcweb_fincial_aduit_fp', getFilterTableCB);
+        });
+        // 查询
+        function search(value: any) {
+            filteredInfo.value = value;
+            // 更新表信息
+            updateColumn();
+        }
+        return {
+            columns,
+            filteredInfo,
+            expandedRowKeys,
+            selectedRow,
+            Rowclick,
+            commonBtn,
+            forDataBtn,
+            loading,
+            tableList,
+            search,
+        };
+    },
+});
+</script>
+
+<style lang="less">
+.finance_review_invoice {
+}
+</style
+>;
+

+ 68 - 0
src/views/manage/finance-review/list/invoice/setup.ts

@@ -0,0 +1,68 @@
+import { Column, ColumnType } from '@/common/setup/table/index';
+import { QueryBusinessFp } from '@/services/go/ermcp/finance-review';
+import { QryBussinessFpRsp, QueryBusinessFpReq } from '@/services/go/ermcp/finance-review/interface';
+import { message } from 'ant-design-vue';
+import { ref } from 'vue';
+
+
+/**
+ * 获取表格列表数据
+ * @param type 
+ * @returns 
+ */
+export function queryTableList(type: QueryBusinessFpReq) {
+    // 加载状态
+    const loading = ref<boolean>(false);
+    // 表格数据
+    const tableList = ref<QryBussinessFpRsp[]>([]);
+    function queryTable() {
+        QueryBusinessFp(type)
+            .then((res) => {
+                tableList.value = res.map((e, i) => {
+                    return { ...e, key: String(i) };
+                });
+                loading.value = false;
+                console.log('查询列表', tableList);
+            })
+            .catch((err) => {
+                message.error(err);
+                loading.value = false;
+            });
+    }
+    return { loading, tableList, queryTable }
+}
+
+/**
+ * 过滤表格的回调函数
+ * @param e 
+ * @param item 
+ * @param filtered 
+ */
+export function getFilterTableCB(e: Column, item: ColumnType, filtered: any) {
+    // 以下添加过滤数据对应的方法
+    if (e.columnfield === 'contracttype') {
+        item.onFilter = (value: string, record: QryBussinessFpRsp) => String(record.contracttype).includes(String(value));
+        item.filteredValue = filtered.contracttype || null;
+    }
+    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;
+    }
+    if (e.columnfield === 'contractno') {
+        item.onFilter = (value: string, record: QryBussinessFpRsp) => record.contractno.includes(value);
+        item.filteredValue = filtered.contractno || null;
+    }
+    if (e.columnfield === 'deliverygoodsname') {
+        item.onFilter = (value: string, record: QryBussinessFpRsp) => record.deliverygoodsname.includes(value);
+        item.filteredValue = filtered.deliverygoodsname || null;
+    }
+}
+
+export type { QryBussinessFpRsp };