diff --git a/src/pages/DigitalElectronics/index.tsx b/src/pages/DigitalElectronics/index.tsx index e6302b6..f26669a 100644 --- a/src/pages/DigitalElectronics/index.tsx +++ b/src/pages/DigitalElectronics/index.tsx @@ -1,6 +1,6 @@ // 数电的开票 import ProTable, { ActionType } from "@ant-design/pro-table"; -import { FormInstance, Button, message, Tag } from "antd"; +import { FormInstance, Button, message, Tag, Popconfirm } from "antd"; import { useRef, useState } from "react"; import { connect } from "umi"; import { Datum } from "@/types/invoice"; @@ -32,8 +32,45 @@ const DigitalElectronics: React.FC<{ currentUser: any }> = (props) => { return; } + + let obj: any = { + billNo: record?.billNo, // 单据编号 + billDate: record?.billDate, // 单据日期 + totalAmount: record?.totalAmount, // 单据金额 + includeTaxFlag: "1",// 判断是否含税 + autoInvoice: "1",// 自动开票标记 + invoiceType: record?.invoiceType, //发票种类 + buyerName: record?.buyerName, // 购买方名称 + buyerProperty: "0", // 购买方性质 0-企业,1-个人,2-非企业单位 + sellerTaxpayerId: "91530112MA7MQ2JR9U", // 销方税号 写死 + sellerName: "云南交投集团经营开发有限公司彩云驿商业管理分公司", // 销方名称 写死 + sellerBankAndAccount: "13710884704", // 销方银行和账号 写死 + sellerAddressAndTel: "", // 销方地址和电话 写死 应该可以不传 + drawer: record?.drawer,// 开票人 + buyerRecipientPhone: record?.buyerRecipientPhone || "",// 购方收票手机号 + buyerRecipientMail: record?.buyerRecipientMail || "",// 购方收件邮箱 + redReason: record?.redReason, + blueinvoiceNo: record?.blueinvoiceNo, + billDetail: [ + { + amount: record?.amount, // 明细金额 明细金额,含税标识includeTaxFlag=1时该金额为含税金额 + detailId: record?.detailId,// 业务系统明细id 业务系统明细id,用于反写回原业务系统明细 【长度:50】 + goodsName: record?.goodsName,// 商品名称 商品名称,与商品编码2填1,需提前在系统维护【长度:GBK92字节】 + lineProperty: 2,// 行性质 行性质,1折扣行(折扣行必须紧跟被折扣的正常商品行),2正常商品行 + price: record?.price, // 单价 单价【长度:整数位加小数位最大16位,小数位最多13,小数点占1位】,price有值则quantity必填,含税标识includeTaxFlag=1时该金额为含税金额 + quantity: record?.quantity,// 数量 数量【长度:整数位加小数位最大16位,小数位最多13,小数点占1位】,quantity有值则price必填 + revenueCode: record?.revenueCode,// 税收分类编码 税收分类编码,开票项补全或映射会补全税收分类编码,未走开票项补全或映射必填 + taxRate: record?.taxRate,// 税率 税率,【0.13,0.09,0.06等】。不传时根据开票项匹配税率 + units: record?.units// 计量单位 计量单位,【长度:GBK22字节】 + } + ] + } + + console.log('objobj', obj); + + // 构造原始数据 - const originalData = [record]; // 将record作为data数组的一项 + const originalData = [obj]; // 将record作为data数组的一项 // 将data字段进行base64加密 const dataString = JSON.stringify(originalData); @@ -56,7 +93,11 @@ const DigitalElectronics: React.FC<{ currentUser: any }> = (props) => { const response = await handleGetKaiPiao(invoiceData, accessToken); console.log('开票响应:', response); - if (response && response.code === 200) { + if (response && response.success) { + let res: any = JSON.parse(decodeURIComponent(escape(atob(response.data)))); + console.log('最终结果:', res); + + message.success({ content: `单据 ${record.billNo} 开票申请已提交成功`, key: 'invoice' }); } else { message.error({ content: `开票申请失败: ${response?.message || '未知错误'}`, key: 'invoice' }); @@ -71,185 +112,105 @@ const DigitalElectronics: React.FC<{ currentUser: any }> = (props) => { { title: '单据编号', dataIndex: 'billNo', - key: 'billNo', width: 180, + align: 'center', ellipsis: true, - search: true, hideInSearch: false, - onHeaderCell: () => ({ - style: { textAlign: 'center' } - }), }, { title: '购方名称', dataIndex: 'buyerName', - key: 'buyerName', width: 200, + align: 'center', ellipsis: true, - search: false, - hideInSearch: true, - onHeaderCell: () => ({ - style: { textAlign: 'center' } - }), + hideInSearch: false, }, { title: '购方税号', dataIndex: 'buyerTaxpayerId', - key: 'buyerTaxpayerId', width: 180, + align: 'center', ellipsis: true, - search: false, hideInSearch: true, - onHeaderCell: () => ({ - style: { textAlign: 'center' } - }), }, { title: '销方名称', dataIndex: 'sellerName', - key: 'sellerName', width: 200, + align: 'center', ellipsis: true, - search: false, hideInSearch: true, - onHeaderCell: () => ({ - style: { textAlign: 'center' } - }), }, { title: '销方税号', dataIndex: 'sellerTaxpayerId', - key: 'sellerTaxpayerId', width: 180, + align: 'center', ellipsis: true, - search: true, hideInSearch: false, - onHeaderCell: () => ({ - style: { textAlign: 'center' } - }), }, { title: '单据日期', dataIndex: 'billDate', - key: 'billDate', width: 120, - search: false, + align: 'center', hideInSearch: true, - onHeaderCell: () => ({ - style: { textAlign: 'center' } - }), }, { title: '单据金额', dataIndex: 'totalAmount', - key: 'totalAmount', width: 120, - search: false, + align: 'center', hideInSearch: true, render: (text: number) => text ? `¥${text.toFixed(2)}` : '-', - onHeaderCell: () => ({ - style: { textAlign: 'center' } - }), }, { title: '含税标识', dataIndex: 'includeTaxFlag', - key: 'includeTaxFlag', width: 100, - search: false, + align: 'center', hideInSearch: true, render: (text: string) => ( {text === '1' ? '含税' : '不含税'} ), - onHeaderCell: () => ({ - style: { textAlign: 'center' } - }), - }, - { - title: '发票性质', - dataIndex: 'invoiceProperty', - key: 'invoiceProperty', - width: 100, - search: true, - hideInSearch: false, - valueType: 'select', - valueEnum: { - '0': { text: '蓝票', status: 'Success' }, - '1': { text: '红票', status: 'Error' }, - }, - render: (text: string) => ( - - {text === '1' ? '红票' : '蓝票'} - - ), - onHeaderCell: () => ({ - style: { textAlign: 'center' } - }), - }, - { - title: '自动开票', - dataIndex: 'autoInvoice', - key: 'autoInvoice', - width: 100, - search: false, - hideInSearch: true, - render: (text: string) => ( - - {text === '1' ? '是' : '否'} - - ), - onHeaderCell: () => ({ - style: { textAlign: 'center' } - }), }, { title: '备注', dataIndex: 'remark', - key: 'remark', width: 150, ellipsis: true, - search: false, + align: 'center', hideInSearch: true, - onHeaderCell: () => ({ - style: { textAlign: 'center' } - }), }, { title: '操作', - key: 'action', + dataIndex: 'action', width: 120, - fixed: 'center', - search: false, + fixed: 'right', + align: 'center', hideInSearch: true, render: (text: any, record: Datum) => ( - + < Button type="primary" size="small" > 发起开票 + ), - onHeaderCell: () => ({ - style: { textAlign: 'center' } - }), }, ] return (
- = (props) => { rowKey={(record) => { return `${record?.billNo}` }} - scroll={{ x: "100%", y: 'calc(100vh - 400px)' }} + scroll={{ x: "100%", y: 'calc(100vh - 450px)' }} headerTitle={待开票列表} - search={{ - span: 8, - labelWidth: 100, - searchText: '查询', - resetText: '重置', - collapseRender: false, - collapsed: false - }} + search={{ span: 6, labelWidth: 100 }} request={async (params: any) => { let req: any = { appId: "FPY001", @@ -301,166 +255,135 @@ const DigitalElectronics: React.FC<{ currentUser: any }> = (props) => { // 模拟数据 const mockData: any = [ + // 专票 { - billNo: "SRM_20250820001", - billDate: "2023-05-17", - totalAmount: 11300, - autoInvoice: "0", - invoiceType: "08xdp", - buyerName: "深圳市顺丰快运有限公司test01", - buyerProperty: "0", + billNo: "SRM_202508220945", // 单据编号 + billDate: "2025-08-22", // 单据日期 + totalAmount: 10, // 单据金额 + includeTaxFlag: "1",// 判断是否含税 + autoInvoice: "1",// 自动开票标记 + invoiceType: "08xdp", //发票种类 + buyerName: "深圳市顺丰快运有限公司test01", // 购买方名称 + buyerProperty: "0", // 购买方性质 + sellerTaxpayerId: "91530112MA7MQ2JR9U", // 销方税号 写死 + sellerName: "云南交投集团经营开发有限公司彩云驿商业管理分公司", // 销方名称 写死 + sellerBankAndAccount: "13710884704", // 销方银行和账号 写死 + sellerAddressAndTel: "", // 销方地址和电话 写死 应该可以不传 + drawer: "测试人",// 开票人 + buyerRecipientPhone: "18158132615",// 购方收票手机号 + buyerRecipientMail: "",// 购方收件邮箱 + amount: 10, // 明细金额 明细金额,含税标识includeTaxFlag=1时该金额为含税金额 + detailId: "1194121661989796666",// 业务系统明细id 业务系统明细id,用于反写回原业务系统明细 【长度:50】 + goodsName: "蜂胶口腔膜",// 商品名称 商品名称,与商品编码2填1,需提前在系统维护【长度:GBK92字节】 + lineProperty: 2,// 行性质 行性质,1折扣行(折扣行必须紧跟被折扣的正常商品行),2正常商品行 + price: 10,// 单价 单价【长度:整数位加小数位最大16位,小数位最多13,小数点占1位】,price有值则quantity必填,含税标识includeTaxFlag=1时该金额为含税金额 + quantity: 1,// 数量 数量【长度:整数位加小数位最大16位,小数位最多13,小数点占1位】,quantity有值则price必填 + revenueCode: "1070304990000000000",// 税收分类编码 税收分类编码,开票项补全或映射会补全税收分类编码,未走开票项补全或映射必填 + taxRate: "0.13",// 税率 税率,【0.13,0.09,0.06等】。不传时根据开票项匹配税率 + units: "个"// 计量单位 计量单位,【长度:GBK22字节】 + + // billDetail: [ + // { + + // } + // ] + }, + { + billNo: "SRM_202508220966", // 单据编号 + billDate: "2025-08-22", // 单据日期 + totalAmount: 10, // 单据金额 + includeTaxFlag: "1",// 判断是否含税 + autoInvoice: "1",// 自动开票标记 + invoiceType: "10xdp", //发票种类 + buyerName: "深圳市顺丰快运有限公司test01", // 购买方名称 + buyerProperty: "0", // 购买方性质 + sellerTaxpayerId: "91530112MA7MQ2JR9U", // 销方税号 写死 + sellerName: "云南交投集团经营开发有限公司彩云驿商业管理分公司", // 销方名称 写死 + sellerBankAndAccount: "13710884704", // 销方银行和账号 写死 + sellerAddressAndTel: "", // 销方地址和电话 写死 应该可以不传 + drawer: "测试人",// 开票人 + buyerRecipientPhone: "18158132615",// 购方收票手机号 + buyerRecipientMail: "",// 购方收件邮箱 + amount: 10, // 明细金额 明细金额,含税标识includeTaxFlag=1时该金额为含税金额 + detailId: "1194121661989796666",// 业务系统明细id 业务系统明细id,用于反写回原业务系统明细 【长度:50】 + goodsName: "蜂胶口腔膜",// 商品名称 商品名称,与商品编码2填1,需提前在系统维护【长度:GBK92字节】 + lineProperty: 2,// 行性质 行性质,1折扣行(折扣行必须紧跟被折扣的正常商品行),2正常商品行 + price: 10,// 单价 单价【长度:整数位加小数位最大16位,小数位最多13,小数点占1位】,price有值则quantity必填,含税标识includeTaxFlag=1时该金额为含税金额 + quantity: 1,// 数量 数量【长度:整数位加小数位最大16位,小数位最多13,小数点占1位】,quantity有值则price必填 + revenueCode: "1070304990000000000",// 税收分类编码 税收分类编码,开票项补全或映射会补全税收分类编码,未走开票项补全或映射必填 + taxRate: "0.13",// 税率 税率,【0.13,0.09,0.06等】。不传时根据开票项匹配税率 + units: "个"// 计量单位 计量单位,【长度:GBK22字节】 + + // billDetail: [ + // { + + // } + // ] + }, + // 普票 + { + billNo: "SRM_202508221427", // 单据编号 + billDate: "2025-08-22", // 单据日期 + totalAmount: -10, // 单据金额 + includeTaxFlag: "1",// 判断是否含税 + invoiceProperty: 1, + autoMerge: 1, + autoInvoice: "1",// 自动开票标记 + invoiceType: "10xdp", //发票种类 + buyerName: "深圳市顺丰快运有限公司test01", // 购买方名称 + buyerProperty: "0", // 购买方性质 + sellerTaxpayerId: "91530112MA7MQ2JR9U", // 销方税号 写死 + sellerName: "云南交投集团经营开发有限公司彩云驿商业管理分公司", // 销方名称 写死 + sellerBankAndAccount: "13710884704", // 销方银行和账号 写死 + sellerAddressAndTel: "", // 销方地址和电话 写死 应该可以不传 + drawer: "测试人",// 开票人 + buyerRecipientPhone: "18158132615",// 购方收票手机号 + buyerRecipientMail: "",// 购方收件邮箱 + amount: -10, // 明细金额 明细金额,含税标识includeTaxFlag=1时该金额为含税金额 + detailId: "1194121661989796666",// 业务系统明细id 业务系统明细id,用于反写回原业务系统明细 【长度:50】 + goodsName: "蜂胶口腔膜",// 商品名称 商品名称,与商品编码2填1,需提前在系统维护【长度:GBK92字节】 + lineProperty: 2,// 行性质 行性质,1折扣行(折扣行必须紧跟被折扣的正常商品行),2正常商品行 + price: -10,// 单价 单价【长度:整数位加小数位最大16位,小数位最多13,小数点占1位】,price有值则quantity必填,含税标识includeTaxFlag=1时该金额为含税金额 + quantity: 1,// 数量 数量【长度:整数位加小数位最大16位,小数位最多13,小数点占1位】,quantity有值则price必填 + revenueCode: "1070304990000000000",// 税收分类编码 税收分类编码,开票项补全或映射会补全税收分类编码,未走开票项补全或映射必填 + taxRate: "0.13",// 税率 税率,【0.13,0.09,0.06等】。不传时根据开票项匹配税率 + units: "个",// 计量单位 计量单位,【长度:GBK22字节】 + redReason: "2", + blueinvoiceNo: "200_20250822181151135_0001" + // billDetail: [ + // { + + // } + // ] + }, + { + billNo: "202508220003", + billDate: "2025-08-22", + autoInvoice: "1", + includeTaxFlag: "0", + invoiceProperty: "1", + invoiceType: "10xdp", + totalAmount: -60, + buyerTaxpayerId: "91440300MA5G9GK78Y", + buyerName: "金蝶票据云科技(深圳)有限公司", sellerTaxpayerId: "91530112MA7MQ2JR9U", sellerName: "云南交投集团经营开发有限公司彩云驿商业管理分公司", sellerBankAndAccount: "13710884704", sellerAddressAndTel: "高新技术产业园南区科技南十二路58996989", - drawer: "开票人", + drawer: "王协芬", + autoMerge: "0", + blueinvoiceNo: "22871379197244241920", + redReason: "2", billDetail: [ { - amount: 11300, - detailId: "1194121661989796666", - goodsName: "蜂胶口腔膜", + amount: -60, + goodsName: "通天口服液", lineProperty: 2, - price: 11300, - quantity: 1, + price: -12, + quantity: 5, revenueCode: "1070304990000000000", - taxRate: "0.13", - units: "个" - } - ] - }, - { - billNo: "SRM_20250820002", - billDate: "2025-08-20", - buyerName: "深圳电子有限公司", - buyerTaxpayerId: "91440300123456789C", - sellerName: "云南交投集团经营开发有限公司彩云驿商业管理分公司", - sellerTaxpayerId: "91530112MA7MQ2JR9U", - totalAmount: 1.13, - includeTaxFlag: "1", - buyerProperty: "0", - sellerBankAndAccount: "", - sellerAddressAndTel: "", - pushMatchRules: "3", - drawer: "", - invoiceProperty: "0", - autoInvoice: "0", - invoiceType: "08xdp", - buyerRecipientPhone: "18158132615", - buyerRecipientMail: "", - remark: "设备采购款", - billDetail: [ - { - amount: 1, - detailId: "1194121661989796666", - goodsName: "蜂胶口腔膜", - lineProperty: 1, - price: 11300, - quantity: 1, - revenueCode: "1070304990000000000", - taxRate: "0.13", - units: "个" - } - ] - }, - { - billNo: "SRM_20250820003", - billDate: "2025-08-19", - buyerName: "杭州互联网有限公司", - buyerTaxpayerId: "91330100123456789E", - sellerName: "云南交投集团经营开发有限公司彩云驿商业管理分公司", - sellerTaxpayerId: "91530112MA7MQ2JR9U", - totalAmount: 1.13, - includeTaxFlag: "1", - buyerProperty: "0", - sellerBankAndAccount: "", - pushMatchRules: "3", - sellerAddressAndTel: "", - drawer: "", - invoiceProperty: "0", - autoInvoice: "1", - invoiceType: "08xdp", - buyerRecipientPhone: "18158132615", - buyerRecipientMail: "", - remark: "技术咨询服务", - billDetail: [ - { - amount: 1, - detailId: "1194121661989796666", - goodsName: "蜂胶口腔膜", - lineProperty: 2, - price: 1, - quantity: 1, - revenueCode: "1070304990000000000", - taxRate: "0.13", - units: "个" - } - ] - }, - { - billNo: "SRM_20250820004", - billDate: "2025-08-18", - buyerName: "成都科技有限公司", - buyerTaxpayerId: "91510100123456789G", - sellerName: "云南交投集团经营开发有限公司彩云驿商业管理分公司", - sellerTaxpayerId: "91530112MA7MQ2JR9U", - totalAmount: 1.13, - includeTaxFlag: "1", - buyerProperty: "0", - sellerBankAndAccount: "", - sellerAddressAndTel: "", - pushMatchRules: "3", - drawer: "", - invoiceProperty: "1", - autoInvoice: "0", - invoiceType: "08xdp", - buyerRecipientPhone: "18158132615", - buyerRecipientMail: "", - remark: "物流服务费红冲", - billDetail: [ - { - amount: 1, - detailId: "1194121661989796666", - goodsName: "蜂胶口腔膜", - lineProperty: 1, - price: 11300, - quantity: 1, - revenueCode: "1070304990000000000", - taxRate: "0.13", - units: "个" - } - ] - }, - { - billNo: "SRM_20250820005", - billDate: "2025-08-17", - buyerName: "西安制造有限公司", - buyerTaxpayerId: "91610100123456789I", - sellerName: "云南交投集团经营开发有限公司彩云驿商业管理分公司", - sellerTaxpayerId: "91530112MA7MQ2JR9U", - totalAmount: 1.13, - includeTaxFlag: "1", - buyerProperty: "0", - sellerBankAndAccount: "", - sellerAddressAndTel: "", - pushMatchRules: "3", - drawer: "", - invoiceProperty: "0", - autoInvoice: "1", - invoiceType: "08xdp", - buyerRecipientPhone: "18158132615", - buyerRecipientMail: "", - remark: "原材料采购", - billDetail: [ - { - amount: 1, - detailId: "1194121661989796666", - goodsName: "蜂胶口腔膜", - lineProperty: 2, - price: 1, - quantity: 1, - revenueCode: "1070304990000000000", - taxRate: "0.13", - units: "个" + taxRate: "0.09", + units: "盒" } ] } diff --git a/src/pages/InvoiceSearch/index.tsx b/src/pages/InvoiceSearch/index.tsx index 90d5dec..c2d1b8e 100644 --- a/src/pages/InvoiceSearch/index.tsx +++ b/src/pages/InvoiceSearch/index.tsx @@ -1,2 +1,373 @@ -// 开票查询 +import React, { useRef, useState } from 'react'; +import ProTable, { ActionType, ProColumns } from '@ant-design/pro-table'; +import { Button, message, Tag, FormInstance, Popconfirm } from 'antd'; +import { handleGetInvoicePageTable } from '../Invoicing/service'; +import { handleGetAppToken, handleGetInvoiceSearch, handleGetSDToken } from '../DigitalElectronics/service'; +// 定义查询接口的返回类型 +export interface ApifoxModel { + businessSystemCode: string; + data: Data; + interfaceCode: InterfaceCode; + requestId: string; + [property: string]: any; +} + +export interface Data { + sellerTaxpayerId: string; + serialNo: string; + [property: string]: any; +} + +export enum InterfaceCode { + BillInvoiceQuery = "BILL.INVOICE.QUERY", +} + +// 发票查询页面组件 +const InvoiceSearch: React.FC = () => { + const actionRef = useRef(); + const formRef = useRef(); + // 第一个接口的token + const [appToken, setAppToken] = useState() + // 第二个接口的token + const [accessToken, setAccessToken] = useState() + // 查看详情 + const handleViewDetail = (record: any) => { + message.info('查看详情功能待开发'); + console.log('详情数据:', record); + }; + + // 表格列定义 + const columns: ProColumns[] = [ + { + title: '序号', + dataIndex: 'index', + valueType: "index", + width: 48, + align: 'center', + ellipsis: true, + hideInSearch: true, + }, + { + title: '单据编号', + dataIndex: 'billNo', + width: 150, + ellipsis: true, + align: 'center', + hideInSearch: false, + }, + { + title: '发票代码', + dataIndex: 'invoiceCode', + width: 120, + ellipsis: true, + align: 'center', + hideInSearch: true, + }, + { + title: '发票号码', + dataIndex: 'invoiceNumber', + width: 120, + ellipsis: true, + align: 'center', + hideInSearch: true, + }, + { + title: '发票种类', + dataIndex: 'invoiceType', + width: 120, + ellipsis: true, + align: 'center', + valueType: 'select', + valueEnum: { + '004': { text: '增值税纸质专用发票' }, + '007': { text: '增值税纸质普通发票' }, + '025': { text: '增值税电子普通发票(卷票)' }, + '026': { text: '增值税电子普通发票' }, + '028': { text: '增值税电子专用发票' }, + '08xdp': { text: '数电专票' }, + '10xdp': { text: '数电普票' }, + }, + }, + { + title: '购方名称', + dataIndex: 'buyerName', + width: 200, + ellipsis: true, + align: 'center', + hideInSearch: true, + }, + { + title: '购方税号', + dataIndex: 'buyerTaxpayerId', + width: 180, + ellipsis: true, + align: 'center', + hideInSearch: false, + }, + { + title: '销方名称', + dataIndex: 'sellerName', + width: 180, + align: 'center', + ellipsis: true, + hideInSearch: true, + }, + { + title: '销方税号', + dataIndex: 'sellerTaxpayerId', + width: 180, + align: 'center', + ellipsis: true, + hideInSearch: false, + }, + { + title: '开票日期', + dataIndex: 'invoiceDate', + valueType: 'date', + width: 120, + ellipsis: true, + align: 'center', + hideInSearch: true, + render: (text, record) => { + if (record.invoiceDate) { + return new Date(record.invoiceDate).toLocaleDateString(); + } + return '-'; + }, + }, + { + title: '合计金额', + dataIndex: 'totalAmount', + width: 120, + align: 'center', + hideInSearch: true, + render: (text) => { + if (text !== undefined && text !== null) { + return `¥${Number(text).toFixed(2)}`; + } + return '-'; + }, + }, + { + title: '合计税额', + dataIndex: 'totalTaxAmount', + width: 120, + align: 'center', + hideInSearch: true, + render: (text) => { + if (text !== undefined && text !== null) { + return `¥${Number(text).toFixed(2)}`; + } + return '-'; + }, + }, + { + title: '发票状态', + dataIndex: 'invoiceStatus', + width: 100, + align: 'center', + ellipsis: true, + hideInSearch: false, + valueType: 'select', + valueEnum: { + 0: { text: '正常', status: 'Success' }, + 1: { text: '作废', status: 'Error' }, + 2: { text: '红冲', status: 'Warning' }, + }, + }, + { + title: '操作', + valueType: 'option', + width: 200, + align: 'center', + fixed: 'right', + hideInSearch: true, + render: (text, record) => [ + { + await handleRevoke(record) + }} + onCancel={() => { }} + okText="确认" + cancelText="取消" + > + < Button type="primary" size="small" >撤回 + , + { + await handleRedReversal(record) + }} + onCancel={() => { }} + okText="确认" + cancelText="取消" + > + < Button type="primary" size="small" >红冲 + + ], + }, + ]; + + // 撤回 + const handleRevoke = async (params: any) => { + console.log('paramsparamsparams', params); + const queryData = { + sellerTaxpayerId: "91530112MA7MQ2JR9U", + serialNos: params.billNo || "", + }; + // 将data字段进行base64加密 + const dataString = JSON.stringify(queryData); + const encryptedData = btoa(unescape(encodeURIComponent(dataString))); + const req: any = { + requestId: Date.now().toString(), + businessSystemCode: "BUSINESS_YCIC", + interfaceCode: "BILL.WITHDRAW", + data: encryptedData + } + // 他这个接口 就一个地址 改不一样的参数就能调不一样的接口 + const data = await handleGetInvoiceSearch(req, accessToken) + if (data && data.success) { + let res = JSON.parse(decodeURIComponent(escape(atob(data.data)))) + if (res && res.length > 0) { + let result = res[0] + message.success(result.message) + actionRef.current?.reload() + } + } else { + message.error(data?.message || '查询失败'); + } + } + + // 红冲 + const handleRedReversal = async (params: any) => { + const queryData = { + billNo: params?.billNo || "", + drawer: params?.drawer || "", + orgCode: params?.orgCode || "", + sellerTaxpayerId: "91530112MA7MQ2JR9U", + redReason: "", + }; + // 将data字段进行base64加密 + const dataString = JSON.stringify(queryData); + const encryptedData = btoa(unescape(encodeURIComponent(dataString))); + const req: any = { + requestId: Date.now().toString(), + businessSystemCode: "BUSINESS_YCIC", + interfaceCode: "BILL.QUICK.RED", + data: encryptedData + } + // 他这个接口 就一个地址 改不一样的参数就能调不一样的接口 + const data = await handleGetInvoiceSearch(req, accessToken) + console.log('datadatadatadata', data); + + if (data && data.success) { + let res = JSON.parse(decodeURIComponent(escape(atob(data.data)))) + console.log('resresresresres', res); + if (res && res.length > 0) { + let result = res[0] + message.success(result.message) + actionRef.current?.reload() + } + } else { + message.error(data?.message || '查询失败'); + } + } + + // 请求表格数据 + const request = async (params: any) => { + try { + console.log('查询参数:', params); + let req: any = { + appId: "FPY001", + appSecret: "FPY001fpy@2023***", + accountId: "2280459335882518528", + tenantid: "xhcamzchwbgonerr", + language: "" + } + const token = await handleGetAppToken(req) + console.log('tokentokentoken', token); + + let appToken: any = token.data.app_token + + let tokenReq: any = { + user: "18620126214", + apptoken: appToken, + tenantid: "xhcamzchwbgonerr", + accountId: "2280459335882518528", + usertype: "" + } + + const accessToken: any = await handleGetSDToken(tokenReq) + console.log('accessTokenaccessTokenaccessToken', accessToken); + setAppToken(appToken) + setAccessToken(accessToken.data.access_token) + + // 构造查询数据 + const queryData = { + sellerTaxpayerId: "91530112MA7MQ2JR9U", + serialNo: params.serialNo || "SRM_202508220966", + }; + + // 将data字段进行base64加密 + const dataString = JSON.stringify(queryData); + const encryptedData = btoa(unescape(encodeURIComponent(dataString))); + + // 构造最终请求参数 + const requestParams = { + businessSystemCode: "BUSINESS_YCIC", + interfaceCode: "BILL.INVOICE.QUERY", + requestId: Date.now().toString(), + data: encryptedData + }; + + console.log('最终请求参数:', requestParams); + + // 调用查询接口 (这里需要传入正确的code参数) + const response = await handleGetInvoiceSearch(requestParams, accessToken.data.access_token); + console.log('responseresponseresponseresponse', response); + + + if (response && response.success) { + + let res = JSON.parse(decodeURIComponent(escape(atob(response.data)))) + console.log('最终请求结果:', res); + let result = res[0].invoiceList + + return { data: result || [], success: true }; + } else { + message.error(response?.message || '查询失败'); + return { data: [], success: true }; + } + } catch (error) { + console.error('查询异常:', error); + message.error('查询异常,请重试'); + return { + data: [], + success: false, + total: 0, + }; + } + }; + + return ( +
+ 发票查询列表} + search={{ span: 6 }} + toolBarRender={() => [ + ]} + /> +
+ ); +}; + +export default InvoiceSearch;