xiaodai2017 2 jaren geleden
bovenliggende
commit
79019730f4
29 gewijzigde bestanden met toevoegingen van 234 en 1926 verwijderingen
  1. 0 313
      src/views/InvoiceSales/invoiceQuery/components/purchase-config/_details.ts
  2. 0 76
      src/views/InvoiceSales/invoiceQuery/components/purchase-config/_opitons.ts
  3. 0 82
      src/views/InvoiceSales/invoiceQuery/components/purchase-config/_rules.ts
  4. 0 171
      src/views/InvoiceSales/invoiceQuery/components/purchase-config/content.config.ts
  5. 0 95
      src/views/InvoiceSales/invoiceQuery/components/purchase-config/modal.config.ts
  6. 0 19
      src/views/InvoiceSales/invoiceQuery/components/purchase-config/search.config.ts
  7. 0 7
      src/views/InvoiceSales/invoiceQuery/components/purchase-config/xls-template.ts
  8. 0 54
      src/views/InvoiceSales/invoiceQuery/components/purchase.vue
  9. 3 4
      src/views/InvoiceSales/invoiceQuery/components/sale-config/content.config.ts
  10. 0 38
      src/views/InvoiceSales/invoiceQuery/components/sale.vue
  11. 31 20
      src/views/InvoiceSales/invoiceQuery/index.vue
  12. 82 39
      src/views/parameter/finance/components/finance-modal.vue
  13. 21 2
      src/views/parameter/finance/config/_rules.ts
  14. 40 101
      src/views/parameter/finance/config/content.config.ts
  15. 3 27
      src/views/parameter/finance/index.vue
  16. 30 4
      src/views/parameter/supplierPay/config/content.config.ts
  17. 12 13
      src/views/purchase/buyInvoiceQuery/config/content.config.ts
  18. 12 13
      src/views/supply/sellInvoiceQuery/config/content.config.ts
  19. 0 333
      src/views/system/finance/components/finance-modal.vue
  20. 0 189
      src/views/system/finance/config/_rules.ts
  21. 0 137
      src/views/system/finance/config/content.config.ts
  22. 0 33
      src/views/system/finance/config/search.config.ts
  23. 0 45
      src/views/system/finance/index.vue
  24. 0 5
      src/views/system/finance/types.ts
  25. 0 0
      src/views/system/finance/公司财务设置.md
  26. 0 72
      src/views/system/supplierPay/config/content.config.ts
  27. 0 13
      src/views/system/supplierPay/config/search.config.ts
  28. 0 21
      src/views/system/supplierPay/index.vue
  29. 0 0
      src/views/system/supplierPay/公司管理.md

+ 0 - 313
src/views/InvoiceSales/invoiceQuery/components/purchase-config/_details.ts

@@ -1,313 +0,0 @@
-/**
- * 采购回票详情
- */
-
-import { ElImage, ElTag } from "element-plus";
-import { h } from "vue";
-import { createTooltip } from "/@/utils/tootip";
-import { DescriptionColumns } from "/@/components/BasicDescriptions";
-import { invTypeOptions, statusOptions } from "./_opitons";
-import { invoiceTypeList } from "/@/utils/status";
-
-export const cgInvTypeOptions = [
-  {
-    value: "special",
-    label: "增值税专用发票"
-  },
-  {
-    value: "normal",
-    label: "增值税普通发票"
-  },
-  {
-    value: "roll",
-    label: "增值税普通发票(卷式)"
-  },
-  {
-    value: "special_electronic",
-    label: "增值税电子专用发票"
-  },
-  {
-    value: "electronic",
-    label: "增值税电子普通发票"
-  },
-  {
-    value: "toll",
-    label: "增值税电子普通发票(通行费)"
-  }
-];
-
-export const ticketReturnColumns: DescriptionColumns = [
-  {
-    field: "hpNo",
-    label: "对账回票编号"
-  },
-  {
-    field: "status",
-    label: "状态",
-    render(data) {
-      return h(ElTag, null, {
-        default: () => statusOptions.find(s => s.value === String(data))?.label
-      });
-    }
-  },
-  {
-    field: "apply_name",
-    label: "申请人"
-  },
-  {
-    field: "addtime",
-    label: "创建时间"
-  },
-
-  {
-    field: "inv_fee",
-    label: "回票金额"
-  },
-
-  {
-    field: "invType",
-    label: "发票上传方式",
-    render(data) {
-      return h(ElTag, null, {
-        default: () => invTypeOptions.find(s => s.value === String(data))?.label
-      });
-    }
-  },
-  {
-    field: "invoiceType",
-    label: "发票类型",
-    render(data) {
-      return h(ElTag, null, {
-        default: () =>
-          invoiceTypeList.find(s => s.value === String(data))?.label || "--"
-      });
-    }
-  },
-
-  {
-    field: "open_time",
-    label: "发票日期"
-  },
-  {
-    field: "invoiceNumber",
-    label: "发票号码"
-  },
-  {
-    field: "invoiceCode",
-    label: "发票代码"
-  },
-  {
-    field: "inv_subtotal_amount",
-    label: "税前总金额"
-  },
-  {
-    field: "inv_amount",
-    label: "税后总金额"
-  },
-  {
-    field: "checkNumber",
-    span: 8,
-    label: "校验码"
-  },
-  {
-    field: "inv_img",
-    label: "发票图片",
-    span: 4,
-    render(src) {
-      return h(ElImage, {
-        src,
-        previewSrcList: [src],
-        style: {
-          height: "20px"
-        }
-      });
-    }
-  },
-  {
-    field: "remark",
-    span: 12,
-    label: "审核备注"
-  }
-];
-
-export const TICKET_INV_COLUMNS = [
-  {
-    field: "invoiceType",
-    span: 1,
-    label: "发票类型"
-  },
-  {
-    field: "inv_img",
-    span: 1,
-    label: "发票图片",
-    render(src) {
-      return h(ElImage, {
-        src,
-        previewSrcList: [src],
-        style: {
-          height: "20px"
-        }
-      });
-    }
-  },
-  {
-    field: "inv_fee",
-    span: 2,
-    label: "发票税前金额"
-  },
-  {
-    field: "open_time",
-    label: "开票时间"
-  },
-  {
-    field: "invoiceNumber",
-    label: "发票号码"
-  },
-  {
-    field: "invoiceCode",
-    label: "发票代码"
-  },
-  {
-    field: "checkNumber",
-    label: "校验码"
-  }
-];
-
-export const TICKET_COLUMNS = [
-  {
-    field: "payNo",
-    span: 2,
-    label: "对账编号"
-  },
-  {
-    field: "hpNo",
-    span: 2,
-    label: "回票申请编号"
-  },
-  {
-    field: "apply_name",
-    label: "申请人",
-    span: 2,
-    render: (apply_name, { apply_id }) =>
-      createTooltip(apply_name, "申请人ID : " + apply_id, 160)
-  },
-  {
-    field: "invType",
-    label: "发票申请类型",
-    render(data) {
-      return h(ElTag, null, {
-        default: () => invTypeOptions.find(s => s.value === data)?.label
-      });
-    }
-  },
-  {
-    field: "status",
-    label: "状态",
-    render(data) {
-      return h(ElTag, null, {
-        default: () => statusOptions.find(s => s.value === data)?.label
-      });
-    }
-  },
-  {
-    field: "total_fee",
-    label: "回票总额"
-  }
-];
-
-export const columns = [
-  {
-    label: "对账编号",
-    prop: "payNo",
-    minWidth: 160,
-    align: "left"
-  },
-  {
-    label: "供应商编号",
-    prop: "supplierNo",
-    minWidth: 150,
-    align: "left"
-  },
-  {
-    label: "供应商名称",
-    prop: "supplierName",
-    minWidth: 180,
-    align: "left"
-  },
-  {
-    label: "业务公司编号",
-    prop: "companyNo",
-    minWidth: 150
-  },
-  {
-    label: "业务公司名称",
-    prop: "companyName",
-    minWidth: 180
-  },
-  {
-    label: "付款状态",
-    prop: "pay_status",
-    minWidth: 100
-  },
-  {
-    label: "总额款",
-    prop: "total_fee",
-    minWidth: 110,
-    align: "total_fee"
-  },
-  {
-    label: "付款标签金额",
-    prop: "pay_tag_fee",
-    minWidth: 110,
-    align: "left"
-  },
-  {
-    label: "已付款金额",
-    prop: "apay_fee",
-    minWidth: 110,
-    align: "left"
-  },
-  {
-    label: "申请人",
-    prop: "apply_name",
-    minWidth: 90,
-    align: "total_fee"
-  }
-];
-
-export const ticketFormItems = {
-  //手工开票
-  "1": [
-    {
-      label: "发票类型",
-      prop: "invoiceType"
-    },
-    {
-      label: "发票代码",
-      prop: "invCode"
-    },
-    {
-      label: "发票号码",
-      prop: "invNumber"
-    },
-    {
-      label: "税前金额",
-      prop: "subtotal_amount"
-    },
-    {
-      label: "校验码",
-      prop: "checkNumber"
-    },
-    {
-      label: "开票日期",
-      prop: "open_time"
-    }
-  ],
-  //ocr识别
-  "2": [
-    {
-      label: "发票图片",
-      prop: "inv_img"
-    }
-  ]
-};

+ 0 - 76
src/views/InvoiceSales/invoiceQuery/components/purchase-config/_opitons.ts

@@ -1,76 +0,0 @@
-export const statusOptions = [
-  {
-    label: "图片识别中",
-    value: "0"
-  },
-  {
-    label: "待系统验证",
-    value: "1"
-  },
-  {
-    label: "买方公司业务审核",
-    value: "2"
-  },
-  {
-    label: "待买方公司认证",
-    value: "3"
-  },
-  {
-    label: "认证成功",
-    value: "4"
-  },
-  {
-    label: "验证失败",
-    value: "5"
-  },
-  {
-    label: "买方审核驳回",
-    value: "6"
-  },
-  {
-    label: "认证失败",
-    value: "7"
-  },
-  {
-    label: "回票流程终止",
-    value: "8"
-  },
-  {
-    label: "验证超过次数",
-    value: "9"
-  },
-  {
-    label: "回票已退",
-    value: "10"
-  }
-];
-
-export const invTypeOptions = [
-  {
-    value: "1",
-    label: "手工添加"
-  },
-  {
-    value: "2",
-    label: "ocr识别"
-  },
-  {
-    value: "3",
-    label: "金税识别"
-  }
-];
-
-export const checkTypeOptions = [
-  {
-    value: "0",
-    label: "未分配查询"
-  },
-  {
-    value: "1",
-    label: "金税接口"
-  },
-  {
-    value: "2",
-    label: "华为云"
-  }
-];

+ 0 - 82
src/views/InvoiceSales/invoiceQuery/components/purchase-config/_rules.ts

@@ -1,82 +0,0 @@
-import { FormRules } from "element-plus";
-
-export const createRules: FormRules = {
-  payNo: {
-    trigger: "change",
-    required: true,
-    message: "请选择订单"
-  },
-  invArr: {
-    required: true,
-    message: "请上传发票",
-    validator(_, value: Array<any>) {
-      return value.length !== 0;
-    }
-  }
-};
-
-export const invoceRules: FormRules = {
-  payNo: [
-    {
-      trigger: "blur",
-      message: "请选择订单",
-      required: true
-    }
-  ],
-  invoiceType: [
-    {
-      trigger: "blur",
-      message: "请选择发票类型",
-      required: true
-    }
-  ],
-  invType: [
-    {
-      trigger: "blur",
-      message: "请选择申请方式",
-      required: true
-    }
-  ],
-  invNumber: [
-    {
-      trigger: "blur",
-      message: "请输入发票代码",
-      required: true
-    }
-  ],
-  invCode: [
-    {
-      trigger: "blur",
-      message: "请选择发票编码",
-      required: true
-    }
-  ],
-  open_time: [
-    {
-      trigger: "blur",
-      message: "请选择开票时间",
-      required: true
-    }
-  ],
-  subtotal_amount: [
-    {
-      trigger: "blur",
-      message: "请输入金额",
-      required: true
-    }
-  ],
-  invName: [
-    {
-      trigger: "blur",
-      message: "请输入发票名称",
-      required: true
-    }
-  ],
-  gold: [
-    {
-      trigger: "blur",
-      message: "请选择金额",
-      required: true
-    }
-  ]
-};

+ 0 - 171
src/views/InvoiceSales/invoiceQuery/components/purchase-config/content.config.ts

@@ -1,171 +0,0 @@
-import { ContentConfig } from "/@/components/PageContent";
-import { httpList, httpDelete } from "/@/api/purchase/ticketReturn";
-
-import dayjs from "dayjs";
-import { h } from "vue";
-import { ElImage, ElTag } from "element-plus";
-import { checkTypeOptions, invTypeOptions, statusOptions } from "./_opitons";
-import { invoiceTypeList } from "/@/utils/status";
-
-const columns = [
-  {
-    type: "selection",
-    width: 55,
-    hide: ({ checkList }) => !checkList.includes("勾选列")
-  },
-  {
-    label: "序号",
-    type: "index",
-    width: 70,
-    hide: ({ checkList }) => !checkList.includes("序号列")
-  },
-  {
-    label: "对账回票申请",
-    prop: "hpNo",
-    width: 180
-  },
-  {
-    label: "对账编号",
-    prop: "payNo",
-    width: 180
-  },
-  {
-    label: "状态",
-    prop: "status",
-    width: 160,
-    transform: status =>
-      statusOptions.find(s => String(status) === String(s.value))?.label,
-    cellRenderer: ({ row, props }) =>
-      h(
-        ElTag,
-        {
-          size: props.size
-        },
-        {
-          default: () =>
-            statusOptions.find(s => String(row.status) === String(s.value))
-              ?.label
-        }
-      )
-  },
-  {
-    label: "发票上传方式",
-    prop: "invType",
-    width: 120,
-    cellRenderer: ({ row, props }) =>
-      h(
-        ElTag,
-        {
-          size: props.size
-        },
-        {
-          default: () =>
-            invTypeOptions.find(s => String(row.invType) === String(s.value))
-              ?.label
-        }
-      )
-  },
-  {
-    label: "发票查验方式",
-    width: 120,
-    cellRenderer: ({ row, props }) =>
-      h(
-        ElTag,
-        {
-          size: props.size
-        },
-        {
-          default: () =>
-            checkTypeOptions.find(s => String(row.checkApi) === s.value)?.label
-        }
-      )
-  },
-  {
-    label: "发票图片",
-    prop: "inv_img",
-    width: 85,
-    cellRenderer: ({ row }) =>
-      h(ElImage, {
-        src: row.inv_img,
-        style: { height: "20px" },
-        previewSrcList: [row.inv_img],
-        previewTeleported: true
-      })
-  },
-  {
-    label: "发票税前金额",
-    width: "110px",
-    prop: "inv_subtotal_amount"
-  },
-  {
-    label: "发票税后金额",
-    width: "110px",
-    prop: "total"
-  },
-  {
-    label: "发票号码",
-    width: 110,
-    prop: "invoiceNumber"
-  },
-  {
-    label: "发票代码",
-    width: 110,
-    prop: "invoiceCode"
-  },
-  {
-    label: "开票时间",
-    prop: "open_time",
-    width: 120,
-    formatter: ({ open_time }) =>
-      open_time ? dayjs(open_time).format("YYYY-MM-DD") : ""
-  },
-  {
-    label: "发票状态",
-    width: 110,
-    prop: "invStatus_cn"
-  },
-  {
-    label: "发票类型",
-    width: 110,
-    cellRenderer({ row }) {
-      return h(ElTag, null, {
-        default: () =>
-          invoiceTypeList.find(({ value }) => value === row.invoiceType)
-            ?.label || "--"
-      });
-    }
-  },
-  {
-    label: "申请人",
-    prop: "apply_name"
-  },
-  {
-    label: "创建时间",
-    prop: "addtime",
-    width: 180,
-    formatter: ({ addtime }) => dayjs(addtime).format("YYYY-MM-DD HH:mm:ss")
-  },
-  {
-    label: "操作",
-    fixed: "right",
-    slot: "operation",
-    width: 110
-  }
-];
-
-const contentConfig: ContentConfig = {
-  title: "采购回票",
-  statusProp: "companyNo",
-  columns,
-  apis: {
-    httpDelete,
-    httpList
-  },
-  deleteProp: "hpNo",
-  delTooltip: "是否撤回采购回票申请",
-  superUserNoAction: true,
-  notPreview: true,
-  showDelete: ({ status }) => Number(status) <= 3
-};
-
-export default contentConfig;

+ 0 - 95
src/views/InvoiceSales/invoiceQuery/components/purchase-config/modal.config.ts

@@ -1,95 +0,0 @@
-import { ModalConfig } from "/@/components/PageModal/src/types";
-
-const modalConfig: ModalConfig = {
-  title: "采票回票",
-  labelWidth: "100px",
-  colLayout: { span: 24 },
-  formItems: [
-    {
-      field: "payNo",
-      type: "input",
-      label: "对账编号",
-      placeholder: "对账编号"
-    },
-    {
-      field: "hpNo",
-      type: "input",
-      label: "对账回票申请",
-      placeholder: "审核状态"
-    },
-    {
-      field: "apply_name",
-      type: "input",
-      label: "申请人名称",
-      placeholder: "申请人名称"
-    },
-    {
-      field: "invType",
-      type: "select",
-      label: "发票类型",
-      placeholder: "发票类型"
-    },
-    {
-      field: "status",
-      type: "select",
-      label: "审核状态",
-      placeholder: "审核状态"
-    },
-    {
-      field: "status",
-      type: "select",
-      label: "进项设置",
-      placeholder: "进项设置",
-      options: [
-        {
-          label: "人工",
-          value: "1"
-        },
-        {
-          label: "金税",
-          value: "2"
-        }
-      ]
-    },
-    {
-      field: "input_ticket",
-      type: "select",
-      label: "进项设置",
-      placeholder: "进项设置",
-      options: [
-        {
-          label: "人工",
-          value: "1"
-        },
-        {
-          label: "金税",
-          value: "2"
-        }
-      ]
-    },
-    {
-      field: "out_ticket",
-      type: "select",
-      label: "销项设置",
-      placeholder: "销项设置",
-      options: [
-        {
-          label: "人工",
-          value: "1"
-        },
-        {
-          label: "金税",
-          value: "2"
-        }
-      ]
-    },
-    {
-      field: "open_time",
-      type: "input",
-      label: "开票时间",
-      placeholder: "开票时间"
-    }
-  ]
-};
-
-export default modalConfig;

+ 0 - 19
src/views/InvoiceSales/invoiceQuery/components/purchase-config/search.config.ts

@@ -1,19 +0,0 @@
-import { FormConfig } from "/@/components/PageSearch";
-
-const searchFormConfig: FormConfig = {
-  formItems: [
-    {
-      field: "open_timer",
-      type: "date_picker",
-      otherOptions: {
-        type: "daterange",
-        startProp: "open_start",
-        endProp: "open_end",
-        startPlaceholder: "开票起始时间",
-        endPlaceholder: "开票结束时间"
-      }
-    }
-  ]
-};
-
-export default searchFormConfig;

+ 0 - 7
src/views/InvoiceSales/invoiceQuery/components/purchase-config/xls-template.ts

@@ -1,7 +0,0 @@
-export const template = {
-  买方公司编码: "",
-  回票申请编码: "",
-  对账编号: "",
-  审核状态: "",
-  审核备注: ""
-};

+ 0 - 54
src/views/InvoiceSales/invoiceQuery/components/purchase.vue

@@ -1,54 +0,0 @@
-<script setup lang="ts">
-import { ref } from "vue";
-import contentConfig from "./purchase-config/content.config";
-import searchConfig from "./purchase-config/search.config";
-import { usePageSearch, type PageHooks, type PageEvents } from "/@/hooks/page";
-import InvoiceModal from "./components/invoice-modal.vue";
-import { useRenderIcon } from "/@/components/ReIcon/src/hooks";
-import { useRouter } from "vue-router";
-import { PageContent } from "/@/components/PageContent";
-
-const PageName = "query";
-const baseUrl = "/purchase/ticketReturnDetail";
-const invStatus = ["3", "4", "5", "6", "9", "10", "12"];
-
-const pageContentRef = ref<InstanceType<typeof PageContent> | null>(null);
-const invoiceModalRef = ref<any>(null);
-
-const { push } = useRouter();
-
-const hooks: PageHooks = {
-  pageSearchHook: () => usePageSearch(undefined, undefined, searchConfig)
-};
-
-const events: PageEvents = {
-  content: {
-    preview: ({ hpNo }) => push(`${baseUrl}?id=${hpNo}`),
-    create: () => push(baseUrl)
-  }
-};
-</script>
-
-<template>
-  <PageAuth :pageName="PageName">
-    <PageContainer
-      :hooks="hooks"
-      :events="events"
-      :contentConfig="contentConfig"
-      :search-config="searchConfig"
-      :get-content-ref="(ref:any) => (pageContentRef = ref)"
-    >
-      <template #content_action="row">
-        <ElButton
-          v-if="invStatus.includes(String(row.status))"
-          link
-          type="primary"
-          :icon="useRenderIcon('scaletooriginal')"
-          @click="() => invoiceModalRef.onDisplay(row.invoiceNumber)"
-        />
-      </template>
-    </PageContainer>
-
-    <InvoiceModal inv-type="purchase" ref="invoiceModalRef" />
-  </PageAuth>
-</template>

+ 3 - 4
src/views/InvoiceSales/invoiceQuery/components/sale-config/content.config.ts

@@ -8,7 +8,6 @@ import {
   buyer_check_type
 } from "/@/utils/status";
 import { ElTag } from "element-plus";
-import dayjs from "dayjs";
 
 const columns = [
   {
@@ -71,7 +70,7 @@ const columns = [
   {
     label: "购买方抬头状态",
     prop: "seller_check",
-    width: 130,
+    width: 135,
     cellRenderer: ({ row }) => {
       return h(ElTag, null, {
         default: () =>
@@ -83,7 +82,7 @@ const columns = [
   {
     label: "销售方抬头状态",
     prop: "buyer_check",
-    width: 130,
+    width: 135,
     cellRenderer: ({ row }) => {
       return h(ElTag, null, {
         default: () =>
@@ -106,7 +105,7 @@ const columns = [
   {
     label: "操作",
     fixed: "right",
-    width: 80,
+    width: 50,
     slot: "operation"
   }
 ];

+ 0 - 38
src/views/InvoiceSales/invoiceQuery/components/sale.vue

@@ -1,38 +0,0 @@
-<script setup lang="ts">
-import { ref } from "vue";
-import { usePageSearch, type PageHooks } from "/@/hooks/page";
-import contentConfig from "./sale-config/content.config";
-import searchConfig from "./sale-config/search.config";
-import InvoiceModal from "./components/invoice-modal.vue";
-import { useRenderIcon } from "/@/components/ReIcon/src/hooks";
-
-const invStatus = ["4", "6"];
-
-const PageName = "query";
-const invoiceModalRef = ref<InstanceType<typeof InvoiceModal> | null>(null);
-
-const hooks: PageHooks = {
-  pageSearchHook: () => usePageSearch(undefined, undefined, searchConfig)
-};
-</script>
-
-<template>
-  <PageAuth :pageName="PageName">
-    <PageContainer
-      :hooks="hooks"
-      :contentConfig="contentConfig"
-      :search-config="searchConfig"
-    >
-      <template #content_action="row">
-        <ElButton
-          v-if="invStatus.includes(String(row.status))"
-          link
-          type="primary"
-          :icon="useRenderIcon('scaletooriginal')"
-          @click="() => invoiceModalRef.onDisplay(row.inv_number)"
-        />
-      </template>
-    </PageContainer>
-    <InvoiceModal ref="invoiceModalRef" />
-  </PageAuth>
-</template>

+ 31 - 20
src/views/InvoiceSales/invoiceQuery/index.vue

@@ -1,27 +1,38 @@
 <script setup lang="ts">
-import { onMounted, ref } from "vue";
-import { useUserStoreHook } from "/@/store/modules/user";
-import Purchase from "./components/purchase.vue";
-import Sale from "./components/sale.vue";
+import { ref } from "vue";
+import { usePageSearch, type PageHooks } from "/@/hooks/page";
+import contentConfig from "./components/sale-config/content.config";
+import searchConfig from "./components/sale-config/search.config";
+import InvoiceModal from "./components/components/invoice-modal.vue";
+import { useRenderIcon } from "/@/components/ReIcon/src/hooks";
 
-const powers = ref([]);
+const invStatus = ["4", "6"];
 
-onMounted(() => {
-  powers.value = useUserStoreHook().getMenuActions("query");
-});
+const PageName = "invoiceQuery";
+const invoiceModalRef = ref<InstanceType<typeof InvoiceModal> | null>(null);
+
+const hooks: PageHooks = {
+  pageSearchHook: () => usePageSearch(undefined, undefined, searchConfig)
+};
 </script>
 
 <template>
-  <div>
-    <ElTabs type="border-card" v-show="powers.some(i => i == '001')">
-      <ElTabPane label="采购回票">
-        <Purchase />
-      </ElTabPane>
-      <ElTabPane label="销售开票">
-        <Sale />
-      </ElTabPane>
-    </ElTabs>
-
-    <NoAuth v-show="!powers.some(i => i == '001')" />
-  </div>
+  <PageAuth :pageName="PageName">
+    <PageContainer
+      :hooks="hooks"
+      :contentConfig="contentConfig"
+      :search-config="searchConfig"
+    >
+      <template #content_action="row">
+        <ElButton
+          v-if="invStatus.includes(String(row.status))"
+          link
+          type="primary"
+          :icon="useRenderIcon('scaletooriginal')"
+          @click="() => invoiceModalRef.onDisplay(row.inv_number)"
+        />
+      </template>
+    </PageContainer>
+    <InvoiceModal ref="invoiceModalRef" />
+  </PageAuth>
 </template>

+ 82 - 39
src/views/parameter/finance/components/finance-modal.vue

@@ -1,14 +1,16 @@
 <script setup lang="ts">
 import { ElForm } from "element-plus";
-import { ref, computed, unref, watch } from "vue";
+import { computed, ref, watch } from "vue";
 import { UnitInput } from "/@/components/Input";
-import { financeRules_NoJS, financeRules_JS } from "./../config/_rules";
+import { financeRules_JS, financeRules_NoJS } from "./../config/_rules";
 import { useCompany } from "/@/hooks/core/useCompany";
 import { useAsync } from "/@/hooks/core/useAsync";
 import { ModalTypes } from "./../types";
 import { httpList } from "/@/api/parameter/supplierPay";
 import { useUserInfo } from "/@/hooks/core/useUser";
 import Super from "/@/layout/components/company/super.vue";
+import { httpAdd, httpUpdate } from "/@/api/parameter/finance";
+import { xs_inv_type_list } from "/@/utils/status";
 
 const emit = defineEmits(["finance-save"]);
 
@@ -16,14 +18,17 @@ const visible = ref(false);
 const modalType = ref<ModalTypes>(ModalTypes.create);
 const formRef = ref<InstanceType<typeof ElForm>>(null);
 const selectCompany = ref<any>();
+const initalRef = ref(true);
 
 const { run, data } = useAsync<Record<string, string>[]>({
   initalData: [],
   isList: true,
   success: () => {
-    const { address, name } = data.value[0];
-    formData.value.company_address = address;
+    const { address, name, registercode } = data.value[0];
+    if (modalType.value !== ModalTypes.create) return;
     formData.value.company_name = name;
+    formData.value.company_address = address;
+    formData.value.company_license = registercode;
   }
 });
 
@@ -41,6 +46,7 @@ const defaultData = {
   drawer: "",
   payee: "",
   ownerPlace: "",
+  denomination: "",
   invoiceType: []
 };
 
@@ -49,6 +55,8 @@ const { isSuperUser } = useUserInfo();
 const formData = ref<Record<string, any>>({ ...defaultData });
 const rules = ref(financeRules_JS);
 
+const isUpdate = computed(() => modalType.value === ModalTypes.update);
+
 const companys = computed(() => {
   const allListItemIndex = companyList.value.findIndex(
     ({ companyNo }) => companyNo === ""
@@ -86,22 +94,47 @@ const formDataTransform = _data => {
   });
 };
 
+const { run: create, loading } = useAsync({
+  success: () => {
+    visible.value = false;
+    emit("finance-save");
+  }
+});
+
+const { run: update, loading: _loading } = useAsync({
+  success: () => {
+    visible.value = false;
+    emit("finance-save");
+  }
+});
+
 function handleSave() {
   formRef.value.validate(isValid => {
     if (!isValid) return;
-    emit(
-      "finance-save",
-      {
-        companyNo: selectCompany.value,
-        ...(isSuperUser.value ? {} : { relaComNo: selectCompany.value }),
-        ...unref(formData)
-      },
-      unref(modalType)
-    );
-    visible.value = false;
+    const param = {
+      companyNo: selectCompany.value,
+      ...(isSuperUser.value ? {} : { relaComNo: selectCompany.value }),
+      ...formData.value
+    };
+
+    switch (modalType.value) {
+      case ModalTypes.create:
+        create(httpAdd(param));
+        break;
+      case ModalTypes.update:
+        update(httpUpdate(param));
+        break;
+    }
   });
 }
 
+const requsetCompany = companyNo =>
+  run(
+    httpList({
+      companyNo
+    })
+  );
+
 watch(
   () => formData.value,
   ({ out_ticket }) => {
@@ -120,11 +153,7 @@ watch(
   () => selectCompany.value,
   companyNo => {
     if (modalType.value === ModalTypes.create && companyNo) {
-      run(
-        httpList({
-          companyNo
-        })
-      );
+      requsetCompany(companyNo);
     }
   }
 );
@@ -139,13 +168,21 @@ defineExpose({
     if (_data) {
       formDataTransform(_data);
       selectCompany.value = _data.companyNo;
+      requsetCompany(_data.companyNo);
     }
   }
 });
 </script>
 
 <template>
-  <ElDialog center v-model="visible" :title="title" destroy-on-close>
+  <ElDialog
+    center
+    v-model="visible"
+    :title="title"
+    destroy-on-close
+    @close="initalRef = true"
+    width="1040px"
+  >
     <ElForm
       ref="formRef"
       labelWidth="110px"
@@ -156,16 +193,13 @@ defineExpose({
       <h1 class="text-xl font-[600] mb-2 text-[#000]">公司财务设置</h1>
       <ElRow :gutter="12">
         <ElCol :span="12">
-          <ElFormItem
-            label="公司"
-            prop="company_name"
-            v-if="modalType === ModalTypes.create"
-          >
+          <ElFormItem label="公司" prop="company_name">
             <ElSelect
               v-if="!isSuperUser"
               style="width: 100%"
               v-model="selectCompany"
               placeholder="请选择公司"
+              :disabled="isUpdate"
             >
               <ElOption
                 v-for="c in companys"
@@ -177,16 +211,19 @@ defineExpose({
 
             <Super
               v-else
+              v-model:code="selectCompany"
               noAll
               noSet
               @change="value => (selectCompany = value.code)"
+              :disabled="isUpdate"
             />
           </ElFormItem>
 
-          <ElFormItem label="纳税人识别号" prop="company_license">
+          <ElFormItem label="纳税号" prop="company_license">
             <ElInput
               v-model="formData.company_license"
-              placeholder="请输入纳税人识别号"
+              placeholder="纳税号"
+              disabled
             />
           </ElFormItem>
 
@@ -198,21 +235,22 @@ defineExpose({
             <ElInput
               v-model="formData.company_address"
               placeholder="请输入地址"
+              :disabled="isUpdate"
             />
           </ElFormItem>
         </ElCol>
 
         <ElCol :span="12">
-          <ElFormItem label="电话" prop="mobile">
-            <ElInput placeholder="请输入电话" v-model="formData.mobile" />
+          <ElFormItem label="联系电话" prop="mobile">
+            <ElInput placeholder="联系电话" v-model="formData.mobile" :disabled="isUpdate" />
           </ElFormItem>
 
-          <ElFormItem label="开户行" prop="bank_name">
-            <ElInput placeholder="请输入开户行" v-model="formData.bank_name" />
+          <ElFormItem label="银行名称" prop="bank_name">
+            <ElInput placeholder="银行名称" v-model="formData.bank_name" :disabled="isUpdate" />
           </ElFormItem>
 
-          <ElFormItem label="号" prop="bankNo">
-            <ElInput v-model="formData.bankNo" placeholder="请输入账号" />
+          <ElFormItem label="银行卡号" prop="bankNo">
+            <ElInput v-model="formData.bankNo" placeholder="银行卡号" :disabled="isUpdate" />
           </ElFormItem>
         </ElCol>
       </ElRow>
@@ -262,6 +300,7 @@ defineExpose({
 
           <ElFormItem label="发票面额" prop="denomination">
             <UnitInput
+              unit="万元"
               placeholder="请输入发票面额"
               v-model="formData.denomination"
             />
@@ -269,11 +308,10 @@ defineExpose({
 
           <ElFormItem label="支持发票类型" prop="invoiceType">
             <ElCheckboxGroup v-model="formData.invoiceType">
-              <ElCheckbox label="04">增值税专用发票</ElCheckbox> <br />
-              <ElCheckbox label="07">增值税普通发票</ElCheckbox> <br />
-              <ElCheckbox label="27">增值税电子专用发票</ElCheckbox>
-              <br />
-              <ElCheckbox label="26">增值税电子普通发票</ElCheckbox>
+              <template v-for="inv in xs_inv_type_list" :key="inv.value">
+                <ElCheckbox :label="inv.value">{{ inv.label }}</ElCheckbox>
+                <br />
+              </template>
             </ElCheckboxGroup>
           </ElFormItem>
         </ElCol>
@@ -282,7 +320,12 @@ defineExpose({
       <ElFormItem>
         <div class="flex w-full justify-end">
           <ElButton type="取消" @click="() => (visible = false)">取消</ElButton>
-          <ElButton type="primary" @click="() => handleSave()">保存</ElButton>
+          <ElButton
+            :loading="loading || _loading"
+            type="primary"
+            @click="() => handleSave()"
+            >保存</ElButton
+          >
         </div>
       </ElFormItem>
     </ElForm>

+ 21 - 2
src/views/parameter/finance/config/_rules.ts

@@ -1,7 +1,5 @@
 import { FormRules } from "element-plus";
 
-// import { isqzf, isqz, iszf, isz, isMobile } from "/@/utils/validate";
-
 export const financeRules_NoJS: FormRules = {
   company_name: [
     {
@@ -58,6 +56,27 @@ export const financeRules_NoJS: FormRules = {
       trigger: "blur",
       message: "请选择金税开票"
     }
+  ],
+  ownerPlace: [
+    {
+      required: true,
+      trigger: "blur",
+      message: "请输入归属地"
+    }
+  ],
+  denomination: [
+    {
+      required: true,
+      trigger: "blur",
+      message: "请输入面额"
+    }
+  ],
+  invoiceType: [
+    {
+      required: true,
+      trigger: "blur",
+      message: "请输入发票支持类型"
+    }
   ]
 };
 

+ 40 - 101
src/views/parameter/finance/config/content.config.ts

@@ -4,33 +4,32 @@
 import { ContentConfig } from "/@/components/PageContent";
 import {
   httpList,
-  httpAdd,
   httpUpdate,
   httpStatus
 } from "/@/api/parameter/finance";
 
 import dayjs from "dayjs";
 import { h } from "vue";
-import { ElImage, ElTag } from "element-plus";
+import { ElTag } from "element-plus";
 
-const status = [
-  {
-    label: "增值税专用发票",
-    value: "04"
-  },
-  {
-    label: "增值税普通发票",
-    value: "07"
-  },
-  {
-    label: "增值税电子专用发票",
-    value: "27"
-  },
-  {
-    label: "增值税电子普通发票",
-    value: "26"
-  }
-];
+// const status = [
+//   {
+//     label: "增值税专用发票",
+//     value: "04"
+//   },
+//   {
+//     label: "增值税普通发票",
+//     value: "07"
+//   },
+//   {
+//     label: "增值税电子专用发票",
+//     value: "27"
+//   },
+//   {
+//     label: "增值税电子普通发票",
+//     value: "26"
+//   }
+// ];
 
 const columns = [
   {
@@ -47,36 +46,27 @@ const columns = [
   {
     label: "业务企业编码",
     prop: "companyNo",
-    width: 120
+    width: 180
   },
   {
     label: "业务企业名称",
     prop: "company_name",
-    width: 120
-  },
-  {
-    label: "业务企业地址",
-    prop: "company_address",
-    width: 120
+    width: 180
   },
   {
     label: "企业纳税号",
     prop: "company_license",
-    width: 120
+    minWidth: 120
   },
   {
     label: "开户银行账户",
     prop: "bank_name",
-    width: 120
+    minWidth: 120
   },
   {
     label: "开户银行账户",
     prop: "bankNo",
-    width: 120
-  },
-  {
-    label: "联系人",
-    prop: "contector"
+    minWidth: 120
   },
   {
     label: "企业联系方式",
@@ -84,90 +74,39 @@ const columns = [
     width: 120
   },
   {
-    label: "营业执照",
-    prop: "company_img",
-    width: 100,
-    cellRenderer: ({ row }) =>
-      h(ElImage, {
-        src: row.company_img,
-        previewSrcList: [row.company_img],
-        previewTeleported: true,
-        style: {
-          height: "20px"
+    label: "状态",
+    width: "80px",
+    cellRenderer({ row }) {
+      return h(
+        ElTag,
+        {
+          type: String(row.status) === "1" ? "success" : "danger"
+        },
+        {
+          default: () => (String(row.status) === "1" ? "启用" : "禁用")
         }
-      })
+      );
+    }
   },
   {
     label: "进项设置",
     prop: "input_ticket",
     width: 100,
     cellRenderer: ({ row }) =>
-      String(row.input_ticket) === "1" ? "金税" : "人工"
+      String(row.input_ticket) === "1" ? "金税" : String(row.input_ticket) === '2' ? "人工" : '--'
   },
   {
     label: "销项设置",
     prop: "out_ticket",
     width: 100,
     cellRenderer: ({ row }) =>
-      String(row.out_ticket) === "1" ? "金税" : "人工"
-  },
-  {
-    label: "作废人",
-    prop: "voider"
-  },
-  {
-    label: "开票人",
-    prop: "payee"
-  },
-  {
-    label: "复核人",
-    prop: "drawer"
-  },
-  {
-    label: "归属地",
-    prop: "reviewer"
+      String(row.out_ticket) === "1" ? "金税" : String(row.out_ticket) === '2' ? "人工" : '--'
   },
   {
     label: "最大面额",
     prop: "denomination",
-    width: 120
-  },
-  {
-    label: "支持发票类型",
-    prop: "invoiceType",
     width: 120,
-    cellRenderer: ({ row, props }) =>
-      row.invoiceType.split(",").map(t =>
-        t.trim()
-          ? h(
-              ElTag,
-              {
-                size: props.size,
-                style: {
-                  marginRight: "10px"
-                }
-              },
-              {
-                default: () => status.find(s => s.value === t)?.label
-              }
-            )
-          : ""
-      )
-  },
-  {
-    label: "状态",
-    prop: "status",
-    cellRenderer: ({ row, props }) =>
-      h(
-        ElTag,
-        {
-          size: props.size,
-          type: String(row.status) === "1" ? "success" : "danger"
-        },
-        {
-          default: () => (row.status + "" === "0" ? "禁用" : "启用")
-        }
-      )
+    cellRenderer: ({ row }) => String(row.denomination).trim() ? row.denomination + '万元' : '--'
   },
   {
     label: "创建时间",
@@ -187,9 +126,9 @@ const contentConfig: ContentConfig = {
   title: "业务公司发票",
   statusProp: "companyNo",
   columns,
+  // httpAdd,
   apis: {
     httpList,
-    httpAdd,
     httpUpdate,
     httpStatus
   }

+ 3 - 27
src/views/parameter/finance/index.vue

@@ -4,13 +4,9 @@ import searchConfig from "./config/search.config";
 import contentConfig from "./config/content.config";
 import FinanceModal from "./components/finance-modal.vue";
 import { usePageSearch, type PageHooks, type PageEvents } from "/@/hooks/page";
-import { useAsync } from "/@/hooks/core/useAsync";
 import { ModalTypes } from "./types";
 
-import { httpAdd, httpUpdate } from "/@/api/parameter/finance";
-
 const pageName = "finance";
-
 const pageContentRef = ref<any>(null);
 
 const hooks: PageHooks = {
@@ -18,32 +14,12 @@ const hooks: PageHooks = {
 };
 
 const reload = () => pageContentRef.value.onSearch();
-
-const { run: create } = useAsync({
-  success: () => reload()
-});
-
-const { run: update } = useAsync({
-  success: () => reload()
-});
-
 const financeModalRef = ref<InstanceType<typeof FinanceModal>>(null);
 
-function handelFinanceSave(data, type: ModalTypes) {
-  switch (type) {
-    case ModalTypes.create:
-      create(httpAdd(data));
-      break;
-    case ModalTypes.update:
-      update(httpUpdate(data));
-      break;
-  }
-}
-
 const events: PageEvents = {
   content: {
-    preview: data => financeModalRef.value.onDisplay(data, ModalTypes.preview),
     update: data => financeModalRef.value.onDisplay(data, ModalTypes.update),
+    preview: data => financeModalRef.value.onDisplay(data, ModalTypes.preview),
     create: () => financeModalRef.value.onDisplay(undefined, ModalTypes.create)
   }
 };
@@ -56,9 +32,9 @@ const events: PageEvents = {
       :events="events"
       :search-config="searchConfig"
       :content-config="contentConfig"
-      :getContentRef="ref => (pageContentRef = ref)"
+      :get-content-ref="ref => (pageContentRef = ref)"
     />
-    <FinanceModal ref="financeModalRef" @finance-save="handelFinanceSave" />
+    <FinanceModal ref="financeModalRef" @finance-save="() => reload()" />
   </PageAuth>
 </template>
 

+ 30 - 4
src/views/parameter/supplierPay/config/content.config.ts

@@ -17,19 +17,45 @@ const columns = [
   },
   {
     label: "公司编号",
-    prop: "code"
+    prop: "code",
+    width: 200
+  },
+  {
+    label: "纳税号",
+    prop: "registercode",
+    width: 180
   },
   {
     label: "公司名称",
-    prop: "name"
+    prop: "name",
+    width: 210
   },
   {
     label: "公司类型",
-    prop: "nature"
+    prop: "nature",
+    width: 180
+  },
+  // {
+  //   label: "公司类型",
+  //   type: "type",
+  //   width: 100,
+  //   cellRenderer({ row }) {
+  //     return String(row.type) === "1"
+  //       ? "正式供应商"
+  //       : String(row.type) === "2"
+  //         ? "临时供应商"
+  //         : "业务公司";
+  //   }
+  // },
+  {
+    label: "地址",
+    prop: "address",
+    minWidth: 180
   },
   {
     label: "创建时间",
-    prop: "createTime",
+    prop: "addtime",
+    minWidth: "120px",
     formatter: ({ addtime }) => dayjs(addtime).format("YYYY-MM-DD HH:mm:ss")
   }
 ];

+ 12 - 13
src/views/purchase/buyInvoiceQuery/config/content.config.ts

@@ -1,5 +1,5 @@
 import { ContentConfig } from "/@/components/PageContent";
-import { httpList, httpDelete } from "/@/api/purchase/ticketReturn";
+import { httpList } from "/@/api/purchase/ticketReturn";
 
 import dayjs from "dayjs";
 import { h } from "vue";
@@ -26,17 +26,17 @@ const columns = [
   {
     label: "对账回票申请",
     prop: "hpNo",
-    width: 180
+    width: 160
   },
   {
     label: "对账编号",
     prop: "payNo",
-    width: 180
+    width: 160
   },
   {
     label: "状态",
     prop: "status",
-    width: 160,
+    width: 140,
     transform: status =>
       statusOptions.find(s => String(status) === String(s.value))?.label,
     cellRenderer: ({ row, props }) =>
@@ -55,7 +55,7 @@ const columns = [
   {
     label: "发票上传方式",
     prop: "invType",
-    width: 120,
+    width: 100,
     cellRenderer: ({ row, props }) =>
       h(
         ElTag,
@@ -71,7 +71,7 @@ const columns = [
   },
   {
     label: "发票查验方式",
-    width: 120,
+    width: 100,
     cellRenderer: ({ row, props }) =>
       h(
         ElTag,
@@ -87,11 +87,11 @@ const columns = [
   {
     label: "发票图片",
     prop: "inv_img",
-    width: 85,
+    width: 65,
     cellRenderer: ({ row }) =>
       h(ElImage, {
         src: row.inv_img,
-        style: { height: "20px" },
+        style: { height: "22px", width: "22px" },
         previewSrcList: [row.inv_img],
         previewTeleported: true
       })
@@ -109,7 +109,7 @@ const columns = [
   {
     label: "购买方抬头状态",
     prop: "seller_check",
-    width: 130,
+    width: 135,
     cellRenderer: ({ row }) => {
       return h(ElTag, null, {
         default: () =>
@@ -121,7 +121,7 @@ const columns = [
   {
     label: "销售方抬头状态",
     prop: "buyer_check",
-    width: 130,
+    width: 135,
     cellRenderer: ({ row }) => {
       return h(ElTag, null, {
         default: () =>
@@ -154,7 +154,7 @@ const columns = [
   },
   {
     label: "发票类型",
-    width: 110,
+    width: 200,
     cellRenderer({ row }) {
       return h(ElTag, null, {
         default: () =>
@@ -177,7 +177,7 @@ const columns = [
     label: "操作",
     fixed: "right",
     slot: "operation",
-    width: 110
+    width: 50
   }
 ];
 
@@ -186,7 +186,6 @@ const contentConfig: ContentConfig = {
   statusProp: "companyNo",
   columns,
   apis: {
-    httpDelete,
     httpList
   },
   deleteProp: "hpNo",

+ 12 - 13
src/views/supply/sellInvoiceQuery/config/content.config.ts

@@ -1,5 +1,5 @@
 import { ContentConfig } from "/@/components/PageContent";
-import { httpList, httpDelete } from "/@/api/purchase/ticketReturn";
+import { httpList } from "/@/api/purchase/ticketReturn";
 
 import dayjs from "dayjs";
 import { h } from "vue";
@@ -26,17 +26,17 @@ const columns = [
   {
     label: "对账回票申请",
     prop: "hpNo",
-    width: 180
+    width: 160
   },
   {
     label: "对账编号",
     prop: "payNo",
-    width: 180
+    width: 160
   },
   {
     label: "状态",
     prop: "status",
-    width: 160,
+    width: 140,
     transform: status =>
       statusOptions.find(s => String(status) === String(s.value))?.label,
     cellRenderer: ({ row, props }) =>
@@ -55,7 +55,7 @@ const columns = [
   {
     label: "发票上传方式",
     prop: "invType",
-    width: 120,
+    width: 100,
     cellRenderer: ({ row, props }) =>
       h(
         ElTag,
@@ -71,7 +71,7 @@ const columns = [
   },
   {
     label: "发票查验方式",
-    width: 120,
+    width: 100,
     cellRenderer: ({ row, props }) =>
       h(
         ElTag,
@@ -87,11 +87,11 @@ const columns = [
   {
     label: "发票图片",
     prop: "inv_img",
-    width: 85,
+    width: 65,
     cellRenderer: ({ row }) =>
       h(ElImage, {
         src: row.inv_img,
-        style: { height: "20px" },
+        style: { height: "22px", width: "22px" },
         previewSrcList: [row.inv_img],
         previewTeleported: true
       })
@@ -109,7 +109,7 @@ const columns = [
   {
     label: "购买方抬头状态",
     prop: "seller_check",
-    width: 130,
+    width: 135,
     cellRenderer: ({ row }) => {
       return h(ElTag, null, {
         default: () =>
@@ -121,7 +121,7 @@ const columns = [
   {
     label: "销售方抬头状态",
     prop: "buyer_check",
-    width: 130,
+    width: 135,
     cellRenderer: ({ row }) => {
       return h(ElTag, null, {
         default: () =>
@@ -154,7 +154,7 @@ const columns = [
   },
   {
     label: "发票类型",
-    width: 110,
+    width: 200,
     cellRenderer({ row }) {
       return h(ElTag, null, {
         default: () =>
@@ -177,7 +177,7 @@ const columns = [
     label: "操作",
     fixed: "right",
     slot: "operation",
-    width: 110
+    width: 50
   }
 ];
 
@@ -186,7 +186,6 @@ const contentConfig: ContentConfig = {
   statusProp: "companyNo",
   columns,
   apis: {
-    httpDelete,
     httpList
   },
   deleteProp: "hpNo",

+ 0 - 333
src/views/system/finance/components/finance-modal.vue

@@ -1,333 +0,0 @@
-<script setup lang="ts">
-import { ElForm } from "element-plus";
-import { computed, ref, watch } from "vue";
-import { UnitInput } from "/@/components/Input";
-import { financeRules_JS, financeRules_NoJS } from "./../config/_rules";
-import { useCompany } from "/@/hooks/core/useCompany";
-import { useAsync } from "/@/hooks/core/useAsync";
-import { ModalTypes } from "./../types";
-import { httpList } from "/@/api/parameter/supplierPay";
-import { useUserInfo } from "/@/hooks/core/useUser";
-import Super from "/@/layout/components/company/super.vue";
-import { httpAdd, httpUpdate } from "/@/api/parameter/finance";
-import { xs_inv_type_list } from "/@/utils/status";
-
-const emit = defineEmits(["finance-save"]);
-
-const visible = ref(false);
-const modalType = ref<ModalTypes>(ModalTypes.create);
-const formRef = ref<InstanceType<typeof ElForm>>(null);
-const selectCompany = ref<any>();
-const initalRef = ref(true);
-
-const { run, data } = useAsync<Record<string, string>[]>({
-  initalData: [],
-  isList: true,
-  success: () => {
-    const { address, name, registercode } = data.value[0];
-    if (modalType.value !== ModalTypes.create) return;
-    formData.value.company_name = name;
-    formData.value.company_address = address;
-    formData.value.company_license = registercode;
-  }
-});
-
-const defaultData = {
-  company_name: "",
-  company_address: "",
-  company_license: "",
-  bank_name: "",
-  bankNo: "",
-  mobile: "",
-  input_ticket: "",
-  out_ticket: "",
-  voider: "",
-  reviewer: "",
-  drawer: "",
-  payee: "",
-  ownerPlace: "",
-  denomination: "",
-  invoiceType: []
-};
-
-const { companyList } = useCompany();
-const { isSuperUser } = useUserInfo();
-const formData = ref<Record<string, any>>({ ...defaultData });
-const rules = ref(financeRules_JS);
-
-const isUpdate = computed(() => modalType.value === ModalTypes.update);
-
-const companys = computed(() => {
-  const allListItemIndex = companyList.value.findIndex(
-    ({ companyNo }) => companyNo === ""
-  );
-
-  if (allListItemIndex >= 0) {
-    return companyList.value.slice(allListItemIndex + 1);
-  }
-
-  return companyList.value;
-});
-
-const title = computed(() => {
-  const baseName = "公司财务设置";
-  switch (modalType.value) {
-    case ModalTypes.create:
-      return "创建" + baseName;
-    case ModalTypes.preview:
-      return "查看" + baseName;
-    default:
-      return "修改" + baseName;
-  }
-});
-
-const formDataTransform = _data => {
-  Object.keys(formData.value).forEach(key => {
-    switch (key) {
-      case "invoiceType":
-        formData.value[key] = _data[key].split(",");
-        break;
-      default:
-        formData.value[key] = _data[key];
-        break;
-    }
-  });
-};
-
-const { run: create, loading } = useAsync({
-  success: () => {
-    visible.value = false;
-    emit("finance-save");
-  }
-});
-
-const { run: update, loading: _loading } = useAsync({
-  success: () => {
-    visible.value = false;
-    emit("finance-save");
-  }
-});
-
-function handleSave() {
-  formRef.value.validate(isValid => {
-    if (!isValid) return;
-    const param = {
-      companyNo: selectCompany.value,
-      ...(isSuperUser.value ? {} : { relaComNo: selectCompany.value }),
-      ...formData.value
-    };
-
-    switch (modalType.value) {
-      case ModalTypes.create:
-        create(httpAdd(param));
-        break;
-      case ModalTypes.update:
-        update(httpUpdate(param));
-        break;
-    }
-  });
-}
-
-const requsetCompany = companyNo =>
-  run(
-    httpList({
-      companyNo
-    })
-  );
-
-watch(
-  () => formData.value,
-  ({ out_ticket }) => {
-    const current =
-      Number(out_ticket) === 1 ? financeRules_JS : financeRules_NoJS;
-    rules.value = current;
-    formRef.value && formRef.value.clearValidate();
-  },
-  {
-    deep: true,
-    immediate: true
-  }
-);
-
-watch(
-  () => selectCompany.value,
-  companyNo => {
-    if (modalType.value === ModalTypes.create && companyNo) {
-      requsetCompany(companyNo);
-    }
-  }
-);
-
-defineExpose({
-  onDisplay: (_data?: any, type?: ModalTypes) => {
-    formData.value = { ...defaultData };
-    visible.value = true;
-    modalType.value = type;
-    selectCompany.value = "";
-
-    if (_data) {
-      formDataTransform(_data);
-      selectCompany.value = _data.companyNo;
-      requsetCompany(_data.companyNo);
-    }
-  }
-});
-</script>
-
-<template>
-  <ElDialog
-    center
-    v-model="visible"
-    :title="title"
-    destroy-on-close
-    @close="initalRef = true"
-    width="1040px"
-  >
-    <ElForm
-      ref="formRef"
-      labelWidth="110px"
-      :model="formData"
-      :rules="rules"
-      :disabled="modalType === ModalTypes.preview"
-    >
-      <h1 class="text-xl font-[600] mb-2 text-[#000]">公司财务设置</h1>
-      <ElRow :gutter="12">
-        <ElCol :span="12">
-          <ElFormItem label="公司" prop="company_name">
-            <ElSelect
-              v-if="!isSuperUser"
-              style="width: 100%"
-              v-model="selectCompany"
-              placeholder="请选择公司"
-              :disabled="isUpdate"
-            >
-              <ElOption
-                v-for="c in companys"
-                :key="c.companyNo"
-                :label="c.companyName"
-                :value="c.companyNo"
-              />
-            </ElSelect>
-
-            <Super
-              v-else
-              v-model:code="selectCompany"
-              noAll
-              noSet
-              @change="value => (selectCompany = value.code)"
-              :disabled="isUpdate"
-            />
-          </ElFormItem>
-
-          <ElFormItem label="纳税号" prop="company_license">
-            <ElInput
-              v-model="formData.company_license"
-              placeholder="纳税号"
-              disabled
-            />
-          </ElFormItem>
-
-          <ElFormItem label="抬头" prop="company_name">
-            <ElInput v-model="formData.company_name" placeholder="请输入抬头" />
-          </ElFormItem>
-
-          <ElFormItem label="地址" prop="company_address">
-            <ElInput
-              v-model="formData.company_address"
-              placeholder="请输入地址"
-              :disabled="isUpdate"
-            />
-          </ElFormItem>
-        </ElCol>
-
-        <ElCol :span="12">
-          <ElFormItem label="联系电话" prop="mobile">
-            <ElInput placeholder="联系电话" v-model="formData.mobile" :disabled="isUpdate" />
-          </ElFormItem>
-
-          <ElFormItem label="银行名称" prop="bank_name">
-            <ElInput placeholder="银行名称" v-model="formData.bank_name" :disabled="isUpdate" />
-          </ElFormItem>
-
-          <ElFormItem label="银行卡号" prop="bankNo">
-            <ElInput v-model="formData.bankNo" placeholder="银行卡号" :disabled="isUpdate" />
-          </ElFormItem>
-        </ElCol>
-      </ElRow>
-
-      <h1 class="text-xl font-[600] mb-2 text-[#000]">进项票设置</h1>
-      <ElFormItem label="进项票设置" prop="input_ticket">
-        <ElRadioGroup v-model="formData.input_ticket">
-          <ElRadio label="1">金税验票</ElRadio>
-          <ElRadio label="2">人工验票</ElRadio>
-        </ElRadioGroup>
-      </ElFormItem>
-
-      <h1 class="text-xl font-[600] mb-2 text-[#000]">销项票设置</h1>
-      <ElRow :gutter="10">
-        <ElCol :span="12">
-          <ElFormItem label="金税开票" prop="out_ticket">
-            <ElRadioGroup v-model="formData.out_ticket">
-              <ElRadio label="1">支持</ElRadio>
-              <ElRadio label="2">不支持</ElRadio>
-            </ElRadioGroup>
-          </ElFormItem>
-
-          <ElFormItem label="作废人" prop="voider">
-            <ElInput placeholder="请输入作废人" v-model="formData.voider" />
-          </ElFormItem>
-
-          <ElFormItem label="开票人" prop="drawer">
-            <ElInput placeholder="请输入开票人" v-model="formData.drawer" />
-          </ElFormItem>
-
-          <ElFormItem label="收款人" prop="payee">
-            <ElInput placeholder="请输入收款人" v-model="formData.payee" />
-          </ElFormItem>
-
-          <ElFormItem label="复核人" prop="reviewer">
-            <ElInput placeholder="请输入复核人" v-model="formData.reviewer" />
-          </ElFormItem>
-        </ElCol>
-
-        <ElCol :span="12">
-          <ElFormItem label="发票归属地" prop="ownerPlace">
-            <ElInput
-              placeholder="请选择发票归属地"
-              v-model="formData.ownerPlace"
-            />
-          </ElFormItem>
-
-          <ElFormItem label="发票面额" prop="denomination">
-            <UnitInput
-              unit="万元"
-              placeholder="请输入发票面额"
-              v-model="formData.denomination"
-            />
-          </ElFormItem>
-
-          <ElFormItem label="支持发票类型" prop="invoiceType">
-            <ElCheckboxGroup v-model="formData.invoiceType">
-              <template v-for="inv in xs_inv_type_list" :key="inv.value">
-                <ElCheckbox :label="inv.value">{{ inv.label }}</ElCheckbox>
-                <br />
-              </template>
-            </ElCheckboxGroup>
-          </ElFormItem>
-        </ElCol>
-      </ElRow>
-
-      <ElFormItem>
-        <div class="flex w-full justify-end">
-          <ElButton type="取消" @click="() => (visible = false)">取消</ElButton>
-          <ElButton
-            :loading="loading || _loading"
-            type="primary"
-            @click="() => handleSave()"
-            >保存</ElButton
-          >
-        </div>
-      </ElFormItem>
-    </ElForm>
-  </ElDialog>
-</template>

+ 0 - 189
src/views/system/finance/config/_rules.ts

@@ -1,189 +0,0 @@
-import { FormRules } from "element-plus";
-
-export const financeRules_NoJS: FormRules = {
-  company_name: [
-    {
-      required: true,
-      trigger: "blur",
-      message: "请输入业务企业名称"
-    }
-  ],
-  company_address: [
-    {
-      required: true,
-      trigger: "blur",
-      message: "请输入企业地址"
-    }
-  ],
-  company_license: [
-    {
-      required: true,
-      trigger: "blur",
-      message: "请输入纳税人识别号"
-    }
-  ],
-  mobile: [
-    {
-      required: true,
-      trigger: "blur",
-      message: "请输入电话"
-    }
-  ],
-  bank_name: [
-    {
-      required: true,
-      trigger: "blur",
-      message: "请输入开户行"
-    }
-  ],
-  bankNo: [
-    {
-      required: true,
-      trigger: "blur",
-      message: "请输入开户行账户"
-    }
-  ],
-  input_ticket: [
-    {
-      required: true,
-      trigger: "blur",
-      message: "请选择验票方式"
-    }
-  ],
-  out_ticket: [
-    {
-      required: true,
-      trigger: "blur",
-      message: "请选择金税开票"
-    }
-  ],
-  ownerPlace: [
-    {
-      required: true,
-      trigger: "blur",
-      message: "请输入归属地"
-    }
-  ],
-  denomination: [
-    {
-      required: true,
-      trigger: "blur",
-      message: "请输入面额"
-    }
-  ],
-  invoiceType: [
-    {
-      required: true,
-      trigger: "blur",
-      message: "请输入发票支持类型"
-    }
-  ]
-};
-
-export const financeRules_JS: FormRules = {
-  company_name: [
-    {
-      required: true,
-      trigger: "blur",
-      message: "请输入业务企业名称"
-    }
-  ],
-  company_address: [
-    {
-      required: true,
-      trigger: "blur",
-      message: "请输入企业地址"
-    }
-  ],
-  company_license: [
-    {
-      required: true,
-      trigger: "blur",
-      message: "请输入纳税人识别号"
-    }
-  ],
-  mobile: [
-    {
-      required: true,
-      trigger: "blur",
-      message: "请输入电话"
-    }
-  ],
-  bank_name: [
-    {
-      required: true,
-      trigger: "blur",
-      message: "请输入开户行"
-    }
-  ],
-  bankNo: [
-    {
-      required: true,
-      trigger: "blur",
-      message: "请输入开户行账户"
-    }
-  ],
-  input_ticket: [
-    {
-      required: true,
-      trigger: "blur",
-      message: "请选择验票方式"
-    }
-  ],
-  out_ticket: [
-    {
-      required: true,
-      trigger: "blur",
-      message: "请选择金税开票"
-    }
-  ],
-  voider: [
-    {
-      required: true,
-      trigger: "blur",
-      message: "请输入发票作废人"
-    }
-  ],
-  payee: [
-    {
-      required: true,
-      trigger: "blur",
-      message: "请输入收款人"
-    }
-  ],
-  reviewer: [
-    {
-      required: true,
-      trigger: "blur",
-      message: "请输入复核人"
-    }
-  ],
-  drawer: [
-    {
-      required: true,
-      trigger: "blur",
-      message: "请输入开票人"
-    }
-  ],
-  ownerPlace: [
-    {
-      required: true,
-      trigger: "blur",
-      message: "请输入归属地"
-    }
-  ],
-  denomination: [
-    {
-      required: true,
-      trigger: "blur",
-      message: "请输入面额"
-    }
-  ],
-  invoiceType: [
-    {
-      required: true,
-      trigger: "blur",
-      message: "请输入发票支持类型"
-    }
-  ]
-};

+ 0 - 137
src/views/system/finance/config/content.config.ts

@@ -1,137 +0,0 @@
-/* eslint-disable prettier/prettier */
-// eslint-disable-next-line prettier/prettier
-
-import { ContentConfig } from "/@/components/PageContent";
-import {
-  httpList,
-  httpUpdate,
-  httpStatus
-} from "/@/api/parameter/finance";
-
-import dayjs from "dayjs";
-import { h } from "vue";
-import { ElTag } from "element-plus";
-
-// const status = [
-//   {
-//     label: "增值税专用发票",
-//     value: "04"
-//   },
-//   {
-//     label: "增值税普通发票",
-//     value: "07"
-//   },
-//   {
-//     label: "增值税电子专用发票",
-//     value: "27"
-//   },
-//   {
-//     label: "增值税电子普通发票",
-//     value: "26"
-//   }
-// ];
-
-const columns = [
-  {
-    type: "selection",
-    width: 55,
-    hide: ({ checkList }) => !checkList.includes("勾选列")
-  },
-  {
-    label: "序号",
-    type: "index",
-    width: 70,
-    hide: ({ checkList }) => !checkList.includes("序号列")
-  },
-  {
-    label: "业务企业编码",
-    prop: "companyNo",
-    width: 180
-  },
-  {
-    label: "业务企业名称",
-    prop: "company_name",
-    width: 180
-  },
-  {
-    label: "企业纳税号",
-    prop: "company_license",
-    minWidth: 120
-  },
-  {
-    label: "开户银行账户",
-    prop: "bank_name",
-    minWidth: 120
-  },
-  {
-    label: "开户银行账户",
-    prop: "bankNo",
-    minWidth: 120
-  },
-  {
-    label: "企业联系方式",
-    prop: "mobile",
-    width: 120
-  },
-  {
-    label: "状态",
-    width: "80px",
-    cellRenderer({ row }) {
-      return h(
-        ElTag,
-        {
-          type: String(row.status) === "1" ? "success" : "danger"
-        },
-        {
-          default: () => (String(row.status) === "1" ? "启用" : "禁用")
-        }
-      );
-    }
-  },
-  {
-    label: "进项设置",
-    prop: "input_ticket",
-    width: 100,
-    cellRenderer: ({ row }) =>
-      String(row.input_ticket) === "1" ? "金税" : String(row.input_ticket) === '2' ? "人工" : '--'
-  },
-  {
-    label: "销项设置",
-    prop: "out_ticket",
-    width: 100,
-    cellRenderer: ({ row }) =>
-      String(row.out_ticket) === "1" ? "金税" : String(row.out_ticket) === '2' ? "人工" : '--'
-  },
-  {
-    label: "最大面额",
-    prop: "denomination",
-    width: 120,
-    cellRenderer: ({ row }) => String(row.denomination).trim() ? row.denomination + '万元' : '--'
-  },
-  {
-    label: "创建时间",
-    prop: "addTime",
-    width: 150,
-    formatter: ({ addtime }) => dayjs(addtime).format("YYYY-MM-DD HH:mm:ss")
-  },
-  {
-    label: "操作",
-    fixed: "right",
-    width: 120,
-    slot: "operation"
-  }
-];
-
-const contentConfig: ContentConfig = {
-  title: "业务公司发票",
-  statusProp: "companyNo",
-  columns,
-  // httpAdd,
-  apis: {
-    httpList,
-    httpUpdate,
-    httpStatus
-  }
-};
-
-export default contentConfig;

+ 0 - 33
src/views/system/finance/config/search.config.ts

@@ -1,33 +0,0 @@
-import { FormConfig } from "/@/components/PageSearch";
-
-const searchFormConfig: FormConfig = {
-  formItems: [
-    {
-      field: "companyNo",
-      type: "input",
-      placeholder: "业务企业编号"
-    },
-    {
-      field: "companyName",
-      type: "input",
-      placeholder: "业务企业名称"
-    },
-    {
-      field: "status",
-      type: "select",
-      placeholder: "状态",
-      options: [
-        {
-          label: "启用",
-          value: "1"
-        },
-        {
-          label: "禁用",
-          value: "0"
-        }
-      ]
-    }
-  ]
-};
-
-export default searchFormConfig;

+ 0 - 45
src/views/system/finance/index.vue

@@ -1,45 +0,0 @@
-<script setup lang="ts">
-import { ref } from "vue";
-import searchConfig from "./config/search.config";
-import contentConfig from "./config/content.config";
-import FinanceModal from "./components/finance-modal.vue";
-import { usePageSearch, type PageHooks, type PageEvents } from "/@/hooks/page";
-import { ModalTypes } from "./types";
-
-const pageName = "finance";
-const pageContentRef = ref<any>(null);
-
-const hooks: PageHooks = {
-  pageSearchHook: () => usePageSearch(undefined, undefined, searchConfig)
-};
-
-const reload = () => pageContentRef.value.onSearch();
-const financeModalRef = ref<InstanceType<typeof FinanceModal>>(null);
-
-const events: PageEvents = {
-  content: {
-    update: data => financeModalRef.value.onDisplay(data, ModalTypes.update),
-    preview: data => financeModalRef.value.onDisplay(data, ModalTypes.preview),
-    create: () => financeModalRef.value.onDisplay(undefined, ModalTypes.create)
-  }
-};
-</script>
-
-<template>
-  <PageAuth :pageName="pageName">
-    <PageContainer
-      :hooks="hooks"
-      :events="events"
-      :search-config="searchConfig"
-      :content-config="contentConfig"
-      :get-content-ref="ref => (pageContentRef = ref)"
-    />
-    <FinanceModal ref="financeModalRef" @finance-save="() => reload()" />
-  </PageAuth>
-</template>
-
-<style scoped lang="scss">
-:deep(.el-dropdown-menu__item i) {
-  margin: 0;
-}
-</style>

+ 0 - 5
src/views/system/finance/types.ts

@@ -1,5 +0,0 @@
-export enum ModalTypes {
-  update,
-  preview,
-  create
-}

+ 0 - 0
src/views/system/finance/公司财务设置.md


+ 0 - 72
src/views/system/supplierPay/config/content.config.ts

@@ -1,72 +0,0 @@
-import { ContentConfig } from "/@/components/PageContent";
-import { httpList } from "/@/api/parameter/supplierPay";
-
-import dayjs from "dayjs";
-
-const columns = [
-  {
-    type: "selection",
-    width: 55,
-    hide: ({ checkList }) => !checkList.includes("勾选列")
-  },
-  {
-    label: "序号",
-    type: "index",
-    width: 70,
-    hide: ({ checkList }) => !checkList.includes("序号列")
-  },
-  {
-    label: "公司编号",
-    prop: "code",
-    width: 200
-  },
-  {
-    label: "纳税号",
-    prop: "registercode",
-    width: 180
-  },
-  {
-    label: "公司名称",
-    prop: "name",
-    width: 210
-  },
-  {
-    label: "公司类型",
-    prop: "nature",
-    width: 180
-  },
-  // {
-  //   label: "公司类型",
-  //   type: "type",
-  //   width: 100,
-  //   cellRenderer({ row }) {
-  //     return String(row.type) === "1"
-  //       ? "正式供应商"
-  //       : String(row.type) === "2"
-  //         ? "临时供应商"
-  //         : "业务公司";
-  //   }
-  // },
-  {
-    label: "地址",
-    prop: "address",
-    minWidth: 180
-  },
-  {
-    label: "创建时间",
-    prop: "addtime",
-    minWidth: "120px",
-    formatter: ({ addtime }) => dayjs(addtime).format("YYYY-MM-DD HH:mm:ss")
-  }
-];
-
-const contentConfig: ContentConfig = {
-  title: "公司管理",
-  columns,
-  notNeedCompanyFilter: true,
-  apis: {
-    httpList
-  }
-};
-
-export default contentConfig;

+ 0 - 13
src/views/system/supplierPay/config/search.config.ts

@@ -1,13 +0,0 @@
-import { FormConfig } from "/@/components/PageSearch";
-
-const searchFormConfig: FormConfig = {
-  formItems: [
-    {
-      field: "name",
-      type: "input",
-      placeholder: "公司名称"
-    }
-  ]
-};
-
-export default searchFormConfig;

+ 0 - 21
src/views/system/supplierPay/index.vue

@@ -1,21 +0,0 @@
-<script setup lang="ts">
-import contentConfig from "./config/content.config";
-import searchConfig from "./config/search.config";
-import { usePageSearch, type PageHooks } from "/@/hooks/page";
-
-const PageName = "supplierPay";
-
-const hooks: PageHooks = {
-  pageSearchHook: () => usePageSearch(undefined, undefined, searchConfig)
-};
-</script>
-
-<template>
-  <PageAuth :pageName="PageName">
-    <PageContainer
-      :hooks="hooks"
-      :contentConfig="contentConfig"
-      :search-config="searchConfig"
-    />
-  </PageAuth>
-</template>

+ 0 - 0
src/views/system/supplierPay/公司管理.md