1105 lines
52 KiB
TypeScript
1105 lines
52 KiB
TypeScript
// 数电的开票
|
||
import ProTable, { ActionType } from "@ant-design/pro-table";
|
||
import { FormInstance, Button, message, Tag, Popconfirm, Modal } from "antd";
|
||
import { useEffect, useRef, useState } from "react";
|
||
import { connect } from "umi";
|
||
import { Datum } from "@/types/invoice";
|
||
import { handleGetAppToken, handleGetBILLDETAILList, handleGetBILLList, handleGetForwardJDPJInterface, handleGetInvoiceSearch, handleGetKaiPiao, handleGetPassportInfoById, handleGetSDToken, handleSynchroAPPLYAPPROVE, handleSynchroBILLInterface } from "../DigitalElectronics/service";
|
||
import moment from "moment";
|
||
import { encryptAES } from "@/utils/handleAes";
|
||
import { ProForm, ProFormSelect, ProFormTextArea } from "@ant-design/pro-components";
|
||
import InvoiceDetial from "../redReversal/components/InvoiceDetial";
|
||
|
||
interface ConnectState {
|
||
user: {
|
||
data: any;
|
||
};
|
||
}
|
||
|
||
const publicParams: any = {
|
||
// // 沙盒环境
|
||
// baseUrl: 'https://cosmic-sandbox.piaozone.com/xhcamzchwbgonerr/',
|
||
// user: '18620126214',
|
||
// appId: 'FPY001',
|
||
// appSecret: 'FPY001fpy@2023***',
|
||
// accountId: '2280459335882518528',
|
||
// tenantId: 'xhcamzchwbgonerr',
|
||
// businessSystemCode: 'BUSINESS_YCIC',
|
||
// sellerTaxpayerId: '91530112MA7MQ2JR9U',
|
||
// sellerName: '云南交投集团经营开发有限公司彩云驿商业管理分公司',
|
||
|
||
// 正式环境
|
||
baseUrl: 'https://cosmic.piaozone.com/ynjtjtjykf',
|
||
user: '18788526867',
|
||
appId: 'FPY001',
|
||
appSecret: 'FPY001fpy@2023***',
|
||
accountId: '2311767813217320960',
|
||
tenantId: 'ynjtjtjykf',
|
||
businessSystemCode: 'BUSINESS_YCIC',
|
||
sellerTaxpayerId: '91530000336622209K',
|
||
sellerName: '云南交投集团经营开发有限公司',
|
||
}
|
||
|
||
const InvoiceInquiry: React.FC<{ currentUser: any }> = (props) => {
|
||
const actionRef = useRef<ActionType>();
|
||
const formRef = useRef<FormInstance>();
|
||
const modalFormRef = useRef<FormInstance>();
|
||
// 当前用户信息
|
||
const [currentUser, setCurrentUser] = useState<any>();
|
||
// 第一个接口的token
|
||
const [appToken, setAppToken] = useState<any>()
|
||
// 第二个接口的token
|
||
const [accessToken, setAccessToken] = useState<any>()
|
||
// 红冲原因的悬浮框
|
||
const [showModal, setShowModal] = useState<boolean>(false)
|
||
// 当前选择的票据信息
|
||
const [currentRow, setCurrentRow] = useState<any>()
|
||
// 红冲悬浮框点击的加载效果
|
||
const [confirmLoading, setConfirmLoading] = useState<boolean>(false)
|
||
// 显示详情抽屉
|
||
const [showDetailModal, setShowDetailModal] = useState<boolean>(false)
|
||
const [columnsStateMap, setColumnsStateMap] = useState<any>({
|
||
BANK_NAME: { show: false },
|
||
BANK_ACCOUNT: { show: false },
|
||
});
|
||
const columns: any = [
|
||
{
|
||
title: '服务区名称',
|
||
dataIndex: 'SERVERPART_NAME',
|
||
width: 150,
|
||
align: 'center',
|
||
ellipsis: true,
|
||
hideInSearch: true,
|
||
},
|
||
{
|
||
title: '商户名称',
|
||
dataIndex: 'MERCHANTS_NAME',
|
||
width: 250,
|
||
align: 'center',
|
||
ellipsis: true,
|
||
hideInSearch: true,
|
||
},
|
||
{
|
||
title: '票据编号',
|
||
dataIndex: 'BILL_NO',
|
||
width: 180,
|
||
align: 'center',
|
||
ellipsis: true,
|
||
hideInSearch: true,
|
||
render: (_, record) => {
|
||
return record?.BILL_NO ?
|
||
<a onClick={() => {
|
||
setCurrentRow(record)
|
||
setShowDetailModal(true)
|
||
}}>{record?.BILL_NO}</a> : ""
|
||
}
|
||
},
|
||
{
|
||
title: '流水号',
|
||
dataIndex: 'SERIAL_NO',
|
||
width: 180,
|
||
align: 'center',
|
||
ellipsis: true,
|
||
hideInSearch: true,
|
||
},
|
||
{
|
||
title: '票据类型',
|
||
dataIndex: 'BILL_TYPE',
|
||
width: 100,
|
||
align: 'center',
|
||
valueType: "select",
|
||
valueEnum: {
|
||
1000: { text: '专票', status: 'warning' },
|
||
2000: { text: '普票', status: 'default' },
|
||
3000: { text: '红票', status: 'error' },
|
||
}
|
||
},
|
||
{
|
||
title: '票据状态',
|
||
dataIndex: 'BILL_STATE',
|
||
width: 120,
|
||
align: 'center',
|
||
valueType: 'select',
|
||
fieldProps: {
|
||
options: [
|
||
{ label: "填写中", value: 1000 },
|
||
{ label: "待审核", value: 2000 },
|
||
{ label: "开票中", value: 9000 },
|
||
{ label: "已开票", value: 9200 },
|
||
{ label: "红冲申请中", value: 9990 },
|
||
{ label: "已红冲", value: 9999 }
|
||
]
|
||
}
|
||
// 申请填写 1000 2000 待审核 9000 开票中 9200 已开票
|
||
},
|
||
{
|
||
title: '含税标识',
|
||
dataIndex: 'ACCOUNTED_TYPE',
|
||
width: 100,
|
||
align: 'center',
|
||
hideInSearch: true,
|
||
render: (text: number) => (
|
||
<Tag color={text === 1 ? 'green' : 'blue'}>
|
||
{text === 1 ? '含税' : '不含税'}
|
||
</Tag>
|
||
),
|
||
},
|
||
{
|
||
title: <div style={{ textAlign: 'center' }}>含税费用金额</div>,
|
||
dataIndex: 'INVOICE_TAXAMOUNT',
|
||
width: 120,
|
||
valueType: 'digit',
|
||
align: 'right',
|
||
ellipsis: true,
|
||
hideInSearch: true,
|
||
},
|
||
{
|
||
title: '开票申请人',
|
||
dataIndex: 'BILL_PERSON',
|
||
width: 120,
|
||
align: 'center',
|
||
ellipsis: true,
|
||
hideInSearch: true,
|
||
},
|
||
{
|
||
title: '申请时间',
|
||
dataIndex: 'BILL_DATE',
|
||
width: 120,
|
||
align: 'center',
|
||
ellipsis: true,
|
||
hideInSearch: true,
|
||
sorter: true
|
||
},
|
||
{
|
||
title: '开户银行',
|
||
dataIndex: 'BANK_NAME',
|
||
width: 200,
|
||
align: 'center',
|
||
ellipsis: true,
|
||
hideInSearch: true,
|
||
},
|
||
{
|
||
title: '银行账号',
|
||
dataIndex: 'BANK_ACCOUNT',
|
||
width: 200,
|
||
align: 'center',
|
||
ellipsis: true,
|
||
hideInSearch: true,
|
||
},
|
||
|
||
]
|
||
// 处理税号中的特殊字符
|
||
const cleanString = (str: string) => {
|
||
return str.replace(/[\s]/g, '');
|
||
}
|
||
// 红冲发票
|
||
const handleRedGoBill = async (record?: any) => {
|
||
// 这个方法 比较复杂 我做一下注释
|
||
// 先拿到表单数据 里面有 红冲类型和 红冲原因
|
||
// 红冲原因是给自己的同步接口 红冲类型 是给金飘云那边的
|
||
// 然后再去查询一下 这张票在金飘云那边的数据 拿到这张票对应的蓝票id
|
||
// 因为我们自己的票据信息里面 没有票据明细的内容 所以要调用自己的票据明细拿到详细的信息之后 就可以拿到这张票子里面的商品 可以传给金飘云
|
||
// 红冲 就是 重新开一张票 然后开这张票的时候带上之前需要红冲那张票的蓝票id 即可
|
||
// 红冲申请发出去之后 按照红冲的编码 用我们自己的接口 开一张新的票据记录 其他数据保持一致 编码为红冲编码 状态为 9000 开票中
|
||
// 然后还有原的票同步 状态变为 9990 红冲中
|
||
// 最后同步开票流程变为 红冲中
|
||
|
||
// 拿到表单数据
|
||
const formData: any = modalFormRef.current?.getFieldsValue()
|
||
// 拿个票据明细
|
||
const billDetail = await handleGetBILLDETAILList({
|
||
SearchParameter: {
|
||
BILL_ID: record?.BILL_ID
|
||
},
|
||
PageIndex: 1,
|
||
PageSize: 999999,
|
||
SortStr: "BILLDETAIL_ID"
|
||
})
|
||
|
||
// 调用金票云那里的列表接口
|
||
// 构造查询数据
|
||
const queryData = {
|
||
// sellerTaxpayerId: "91530112MA7MQ2JR9U",
|
||
sellerTaxpayerId: publicParams.sellerTaxpayerId,
|
||
serialNo: record?.BILL_NO,
|
||
};
|
||
|
||
// 将data字段进行base64加密
|
||
const dataStringOld = JSON.stringify(queryData);
|
||
const encryptedDataOld = btoa(unescape(encodeURIComponent(dataStringOld)));
|
||
|
||
// 构造最终请求参数
|
||
const requestParams = {
|
||
businessSystemCode: "BUSINESS_YCIC",
|
||
interfaceCode: "BILL.INVOICE.QUERY",
|
||
requestId: Date.now().toString(),
|
||
data: encryptedDataOld
|
||
};
|
||
let newreq2: any = {
|
||
name: "",
|
||
value: encryptAES(JSON.stringify({
|
||
ReqUrl: `https://cosmic.piaozone.com/ynjtjtjykf/kapi/app/sim/openApi?access_token=${accessToken}`,
|
||
Access_token: accessToken,
|
||
data: JSON.stringify(requestParams)
|
||
}))
|
||
}
|
||
|
||
let responseOld = await handleGetForwardJDPJInterface(newreq2)
|
||
responseOld = JSON.parse(responseOld as any)
|
||
// // 调用查询接口 (这里需要传入正确的code参数)
|
||
// const responseOld = await handleGetInvoiceSearch(requestParams, accessToken);
|
||
let result: any = []
|
||
if (responseOld && responseOld.success) {
|
||
let res = JSON.parse(decodeURIComponent(escape(atob(responseOld.data))))
|
||
result = res[0].invoiceList
|
||
} else {
|
||
return
|
||
}
|
||
|
||
let billDetailReq: any = []
|
||
if (billDetail && billDetail.length > 0) {
|
||
billDetail.forEach((item: any) => {
|
||
billDetailReq.push({
|
||
amount: -item.INVOICE_AMOUNT, // 明细金额
|
||
detailId: item.BILLDETAIL_ID, // 业务系统明细id
|
||
goodsName: item.ITEM_NAME,// 商品名称
|
||
lineProperty: 2, // 行性质
|
||
price: item.INVOICE_PRICE,// 单价
|
||
quantity: -item.INVOICE_COUNT,// 数量
|
||
revenueCode: item.TABLE_NAME,// 税收分类编码
|
||
taxRate: (item.DUTY_PARAGRAPH / 100).toFixed(2),// 税率
|
||
units: item.ITEM_UNIT,// 计量单位
|
||
|
||
})
|
||
})
|
||
}
|
||
|
||
let obj: any = {
|
||
billNo: record?.BILL_NO ? `HC-${record?.BILL_NO}` : "", // 单据编号
|
||
billDate: moment(record?.BILL_DATE).format('YYYY-MM-DD'), // 单据日期
|
||
totalAmount: -record?.INVOICE_TAXAMOUNT, // 单据金额
|
||
includeTaxFlag: record?.ACCOUNTED_TYPE,// 判断是否含税
|
||
autoInvoice: "1",// 自动开票标记
|
||
invoiceProperty: "1",
|
||
invoiceType: record?.BILL_TYPE == 1000 ? '08xdp' : record?.BILL_TYPE == 2000 ? '10xdp' : '', //发票种类
|
||
buyerTaxpayerId: cleanString(record?.TAXPAYER_IDENTIFYCODE),// 购方税号
|
||
buyerName: record?.MERCHANTS_NAME, // 购买方名称
|
||
buyerProperty: "0", // 购买方性质 0-企业,1-个人,2-非企业单位
|
||
// sellerTaxpayerId: "91530112MA7MQ2JR9U", // 销方税号 写死
|
||
sellerTaxpayerId: publicParams.sellerTaxpayerId, // 销方税号 写死
|
||
// sellerName: "云南交投集团经营开发有限公司彩云驿商业管理分公司", // 销方名称 写死
|
||
sellerName: publicParams.sellerName, // 销方名称 写死
|
||
sellerBankAndAccount: "", // 销方银行和账号 写死
|
||
sellerAddressAndTel: "", // 销方地址和电话 写死 应该可以不传
|
||
payee: "周洁萍", // 收款人
|
||
reviewer: "杨尚涛",// 复核人
|
||
drawer: "杨木青",// 开票人
|
||
|
||
buyerAddressAndTel: `${record?.MERCHANTS_ADDRESS}、${record?.MERCHANTS_TEL}`,// 购方地址、电话
|
||
buyerBankAndAccount: `${record?.BANK_NAME}${record?.BANK_ACCOUNT}`,// 购方银行、账号
|
||
buyerRecipientPhone: record?.RECEIVE_PHONENUMBER,// 购方收票手机号
|
||
buyerRecipientMail: record?.RECEIVE_EMAIL,// 购方收件邮箱
|
||
|
||
redReason: formData?.redReasonSelect || "",
|
||
autoMerge: "0",
|
||
// blueinvoiceNo: '23249322851717775360',
|
||
blueinvoiceNo: result[0].invoiceNumber,
|
||
// originalIssueTime: record?.originalIssueTime,
|
||
// blueInvoiceType: record?.blueInvoiceType,
|
||
blueinvoiceCode: "",
|
||
billDetail: billDetailReq
|
||
}
|
||
|
||
// 构造原始数据
|
||
const originalData = [obj]; // 将record作为data数组的一项
|
||
// 将data字段进行base64加密
|
||
const dataString = JSON.stringify(originalData);
|
||
const encryptedData = btoa(unescape(encodeURIComponent(dataString))); // base64编码,支持中文
|
||
// 构造开票请求数据
|
||
const invoiceData = {
|
||
businessSystemCode: "BUSINESS_YCIC", // 来源系统编码
|
||
interfaceCode: "BILL.PUSH", // 接口业务编码
|
||
requestId: Date.now().toString(), // 时间戳作为请求ID
|
||
data: encryptedData // 加密后的data字符串
|
||
};
|
||
|
||
// const response = await handleGetKaiPiao(invoiceData, accessToken);
|
||
let newreq: any = {
|
||
name: "",
|
||
value: encryptAES(JSON.stringify({
|
||
ReqUrl: `https://cosmic.piaozone.com/ynjtjtjykf/kapi/app/sim/openApi?access_token=${accessToken}`,
|
||
Access_token: accessToken,
|
||
data: JSON.stringify(invoiceData)
|
||
}))
|
||
}
|
||
let response = await handleGetForwardJDPJInterface(newreq)
|
||
response = JSON.parse(response as any)
|
||
|
||
setShowModal(false)
|
||
setCurrentRow(null)
|
||
if (response.success) {
|
||
message.success('红冲成功!')
|
||
// 同步流程的 加上红冲中的状态
|
||
await handleSynchroAPPLYAPPROVEFun(3, record)
|
||
let redReasonObj: any = {
|
||
"1": "销货退回",
|
||
"2": "开票有误",
|
||
"3": "开票中止",
|
||
"4": "销售折让",
|
||
}
|
||
// 同步旧票子 变为 红冲申请中
|
||
await handleSynchroBILL(2, {
|
||
...record,
|
||
billDetail: billDetail
|
||
})
|
||
// 针对这个红冲 开一张新票子 编码为新的红冲编码 状态为9000 开票中 且票据类型变为 3000 红票 BILL_TYPE
|
||
await handleUpdateOldBill({
|
||
...record,
|
||
billDetail: billDetail,
|
||
BILL_TYPE: 3000,
|
||
BILL_STATE: 9000,
|
||
BILL_NO: `HC-${record?.BILL_NO}`,
|
||
BILL_DATE: moment().format('YYYY-MM-DD'),
|
||
BILL_DESC: formData?.redReasonSelect ? redReasonObj[formData?.redReasonSelect] : "",
|
||
BILL_ID: "",
|
||
BILL_TAXAMOUNT: -record?.BILL_TAXAMOUNT,
|
||
BILL_AMOUNT: -record?.BILL_AMOUNT,
|
||
INVOICE_TAXAMOUNT: -record?.INVOICE_TAXAMOUNT,
|
||
INVOICE_AMOUNT: -record?.INVOICE_AMOUNT,
|
||
})
|
||
actionRef.current?.reload()
|
||
} else {
|
||
message.error(response.message)
|
||
}
|
||
setConfirmLoading(false)
|
||
}
|
||
// 开票处理函数
|
||
const handleInvoice = async (record: Datum) => {
|
||
try {
|
||
message.loading({ content: '正在发起开票...', key: 'invoice' });
|
||
|
||
// 检查是否有access_token
|
||
if (!accessToken) {
|
||
message.error({ content: '缺少访问令牌,请先刷新页面重新获取', key: 'invoice' });
|
||
return;
|
||
}
|
||
|
||
// 拿个票据明细
|
||
const billDetail = await handleGetBILLDETAILList({
|
||
SearchParameter: {
|
||
BILL_ID: record?.BILL_ID
|
||
},
|
||
PageIndex: 1,
|
||
PageSize: 999999,
|
||
SortStr: "BILLDETAIL_ID"
|
||
})
|
||
|
||
let billDetailReq: any = []
|
||
if (billDetail && billDetail.length > 0) {
|
||
billDetail.forEach((item: any) => {
|
||
billDetailReq.push({
|
||
amount: item.INVOICE_AMOUNT, // 明细金额
|
||
detailId: item.BILLDETAIL_ID, // 业务系统明细id
|
||
goodsName: item.ITEM_NAME,// 商品名称
|
||
lineProperty: 2, // 行性质
|
||
price: item.INVOICE_PRICE,// 单价
|
||
quantity: item.INVOICE_COUNT,// 数量
|
||
revenueCode: item.TABLE_NAME,// 税收分类编码
|
||
taxRate: (item.DUTY_PARAGRAPH / 100).toFixed(2),// 税率
|
||
units: item.ITEM_UNIT,// 计量单位
|
||
|
||
})
|
||
})
|
||
}
|
||
|
||
let obj: any = {
|
||
billNo: record?.BILL_NO, // 单据编号
|
||
billDate: moment(record?.BILL_DATE).format('YYYY-MM-DD'), // 单据日期
|
||
totalAmount: record?.INVOICE_TAXAMOUNT, // 单据金额
|
||
includeTaxFlag: record?.ACCOUNTED_TYPE,// 判断是否含税
|
||
autoInvoice: "1",// 自动开票标记
|
||
invoiceType: record?.BILL_TYPE == 1000 ? '08xdp' : record?.BILL_TYPE == 2000 ? '10xdp' : '', //发票种类
|
||
|
||
buyerTaxpayerId: cleanString(record?.TAXPAYER_IDENTIFYCODE),// 购方税号
|
||
buyerName: record?.MERCHANTS_NAME, // 购买方名称
|
||
buyerProperty: "0", // 购买方性质 0-企业,1-个人,2-非企业单位
|
||
|
||
// sellerTaxpayerId: "91530112MA7MQ2JR9U", // 销方税号 写死
|
||
sellerTaxpayerId: publicParams.sellerTaxpayerId, // 销方税号 写死
|
||
// sellerName: "云南交投集团经营开发有限公司彩云驿商业管理分公司", // 销方名称 写死
|
||
sellerName: publicParams.sellerName, // 销方名称 写死
|
||
sellerBankAndAccount: "", // 销方银行和账号 写死
|
||
sellerAddressAndTel: "", // 销方地址和电话 写死 应该可以不传
|
||
|
||
payee: "周洁萍", // 收款人
|
||
reviewer: "杨尚涛",// 复核人
|
||
drawer: "杨木青",// 开票人
|
||
|
||
buyerAddressAndTel: `${record?.MERCHANTS_ADDRESS}、${record?.MERCHANTS_TEL}`,// 购方地址、电话
|
||
buyerBankAndAccount: `${record?.BANK_NAME}${record?.BANK_ACCOUNT}`,// 购方银行、账号
|
||
buyerRecipientPhone: record?.RECEIVE_PHONENUMBER,// 购方收票手机号
|
||
buyerRecipientMail: record?.RECEIVE_EMAIL,// 购方收件邮箱
|
||
|
||
// redReason: record?.BILL_DESC,
|
||
|
||
// blueinvoiceNo: record?.blueinvoiceNo,
|
||
// originalIssueTime: record?.originalIssueTime,
|
||
// blueInvoiceType: record?.blueInvoiceType,
|
||
// blueinvoiceCode: record?.blueinvoiceCode,
|
||
billDetail: billDetailReq
|
||
}
|
||
|
||
// 构造原始数据
|
||
const originalData = [obj]; // 将record作为data数组的一项
|
||
// 将data字段进行base64加密
|
||
const dataString = JSON.stringify(originalData);
|
||
const encryptedData = btoa(unescape(encodeURIComponent(dataString))); // base64编码,支持中文
|
||
// 构造开票请求数据
|
||
const invoiceData = {
|
||
businessSystemCode: "BUSINESS_YCIC", // 来源系统编码
|
||
interfaceCode: "BILL.PUSH", // 接口业务编码
|
||
requestId: Date.now().toString(), // 时间戳作为请求ID
|
||
data: encryptedData // 加密后的data字符串
|
||
};
|
||
|
||
// const response = await handleGetKaiPiao(invoiceData, accessToken);
|
||
|
||
let newreq: any = {
|
||
name: "",
|
||
value: encryptAES(JSON.stringify({
|
||
ReqUrl: `https://cosmic.piaozone.com/ynjtjtjykf/kapi/app/sim/openApi?access_token=${accessToken}`,
|
||
Access_token: accessToken,
|
||
data: JSON.stringify(invoiceData)
|
||
}))
|
||
}
|
||
let response = await handleGetForwardJDPJInterface(newreq)
|
||
|
||
response = JSON.parse(response as any)
|
||
|
||
if (response && response.success) {
|
||
let res: any = JSON.parse(decodeURIComponent(escape(atob(response.data))));
|
||
|
||
message.success({ content: `单据 ${record.BILL_NO} 开票申请已提交成功`, key: 'invoice' });
|
||
actionRef.current?.reload()
|
||
// 他们的调用成功了 再调用我们自己的 同步票据信息表 的接口
|
||
handleSynchroBILL(1, record)
|
||
|
||
|
||
} else {
|
||
message.error({ content: `开票申请失败: ${response?.message || '未知错误'}`, key: 'invoice' });
|
||
}
|
||
} catch (error) {
|
||
console.error('开票错误:', error);
|
||
message.error({ content: '开票申请失败,请重试', key: 'invoice' });
|
||
}
|
||
};
|
||
// 退回开票
|
||
const handleReturnInvoice = async (record: any) => {
|
||
let req: any = {
|
||
...record,
|
||
BILL_STATE: 1000,
|
||
BILL_NO: `【退】${record?.BILL_NO}`
|
||
}
|
||
const data = await handleSynchroBILLInterface(req)
|
||
if (data.Result_Code === 100) {
|
||
message.success('退回成功!');
|
||
actionRef.current?.reload()
|
||
} else {
|
||
message.error(data.Result_Desc)
|
||
}
|
||
}
|
||
// 在这个页面获取token
|
||
const handleGetTokenInPage = async () => {
|
||
// 老
|
||
// let req: any = {
|
||
// appId: publicParams.appId,
|
||
// appSecret: publicParams.appSecret,
|
||
// accountId: publicParams.accountId,
|
||
// tenantid: publicParams.tenantId,
|
||
// language: ""
|
||
|
||
// // appId: "FPY001",
|
||
// // appSecret: "FPY001fpy@2023***",
|
||
// // accountId: "2280459335882518528",
|
||
// // tenantid: "xhcamzchwbgonerr",
|
||
// // language: ""
|
||
// }
|
||
// const token = await handleGetAppToken(req)
|
||
|
||
// 新
|
||
let req: any = {
|
||
ReqUrl: "https://cosmic.piaozone.com/ynjtjtjykf/api/getAppToken.do",
|
||
Access_token: "",
|
||
data: JSON.stringify({
|
||
appId: publicParams.appId,
|
||
appSecret: publicParams.appSecret,
|
||
accountId: publicParams.accountId,
|
||
tenantid: publicParams.tenantId,
|
||
language: ""
|
||
})
|
||
}
|
||
let newreq: any = {
|
||
name: "",
|
||
value: encryptAES(JSON.stringify(req))
|
||
}
|
||
let token = await handleGetForwardJDPJInterface(newreq)
|
||
let tokenData = token ? JSON.parse(token as any) : ""
|
||
|
||
|
||
|
||
let appToken: any = tokenData.data.app_token
|
||
// 老
|
||
// let tokenReq: any = {
|
||
// // user: "18620126214",
|
||
// user: publicParams.user,
|
||
// apptoken: appToken,
|
||
// tenantid: publicParams.tenantId,
|
||
// accountId: publicParams.accountId,
|
||
// usertype: ""
|
||
// // apptoken: appToken,
|
||
// // tenantid: "xhcamzchwbgonerr",
|
||
// // accountId: "2280459335882518528",
|
||
// // usertype: ""
|
||
// }
|
||
// const accessToken: any = await handleGetSDToken(tokenReq)
|
||
|
||
// 新
|
||
let tokenReq: any = {
|
||
ReqUrl: "https://cosmic.piaozone.com/ynjtjtjykf/api/login.do",
|
||
Access_token: "",
|
||
data: JSON.stringify({
|
||
user: publicParams.user,
|
||
apptoken: appToken,
|
||
tenantid: publicParams.tenantId,
|
||
accountId: publicParams.accountId,
|
||
usertype: ""
|
||
})
|
||
}
|
||
let newTokenReq: any = {
|
||
name: "",
|
||
value: encryptAES(JSON.stringify(tokenReq))
|
||
}
|
||
let accessTokenData = await handleGetForwardJDPJInterface(newTokenReq)
|
||
let accessToken = JSON.parse(accessTokenData as any)
|
||
|
||
setAppToken(appToken)
|
||
setAccessToken(accessToken.data.access_token)
|
||
|
||
|
||
// const queryData = {
|
||
// // sellerTaxpayerId: "91530112MA7MQ2JR9U",
|
||
// sellerTaxpayerId: publicParams.sellerTaxpayerId,
|
||
// serialNo: '202509-401206-0014',
|
||
// };
|
||
|
||
// // 将data字段进行base64加密
|
||
// const dataStringOld = JSON.stringify(queryData);
|
||
// const encryptedDataOld = btoa(unescape(encodeURIComponent(dataStringOld)));
|
||
|
||
// // 构造最终请求参数
|
||
// const requestParams = {
|
||
// businessSystemCode: "BUSINESS_YCIC",
|
||
// interfaceCode: "BILL.INVOICE.QUERY",
|
||
// requestId: Date.now().toString(),
|
||
// data: encryptedDataOld
|
||
// };
|
||
|
||
|
||
// let reqResult: any = {
|
||
// ReqUrl: `https://cosmic.piaozone.com/ynjtjtjykf/kapi/app/sim/openApi?access_token=${accessToken.data.access_token}`,
|
||
// Access_token: accessToken.data.access_token,
|
||
// data: JSON.stringify(requestParams)
|
||
// }
|
||
// let responseOld = await handleGetForwardJDPJInterface(reqResult)
|
||
// responseOld = JSON.parse(responseOld as any)
|
||
|
||
// 老
|
||
// // 调用查询接口 (这里需要传入正确的code参数)
|
||
// const responseOld = await handleGetInvoiceSearch(requestParams, accessToken.data.access_token);
|
||
// let result: any = []
|
||
// if (responseOld && responseOld.success) {
|
||
// let res = JSON.parse(decodeURIComponent(escape(atob(responseOld.data))))
|
||
// result = res[0].invoiceList
|
||
// } else {
|
||
// return
|
||
// }
|
||
}
|
||
const handleSynchroBILL = async (type: number, obj: any) => {
|
||
// type 1 开票的同步状态 即 9000 2 开票的红冲状态 即 9990
|
||
// 发票明细列表
|
||
let detailList: any = []
|
||
if (obj?.billDetail && obj?.billDetail.length > 0) {
|
||
obj?.billDetail.forEach((item: any) => {
|
||
detailList.push({
|
||
ITEM_NAME: item.goodsName,// 款项名称
|
||
ITEM_RULE: item.specification,// 规格型号
|
||
ITEM_UNIT: item.units,// 计量单位
|
||
INVOICE_COUNT: item.quantity,// 开票数量
|
||
INVOICE_PRICE: item.price,// 开票单价
|
||
INVOICE_AMOUNT: item.amount,// 开票金额
|
||
DUTY_PARAGRAPH: item.taxRate,// 开票税率
|
||
INVOICE_TAX: item.taxAmount,// 开票税额
|
||
INVOICE_DISCOUNT: item.discountAmount,// 折扣金额
|
||
INVOICE_DISCOUNTTAX: "",// 折扣税额
|
||
ITEM_ACTAMOUNT: "",// 款项价税合计
|
||
ITEM_DEDUCTIONAMOUNT: "",// 扣除额
|
||
ITEM_ID: "",// 关联数据表内码(多个)
|
||
TABLE_NAME: "",// 数据表名称
|
||
OPERATE_DATE: moment().format('YYYY-MM-DD HH:mm:ss'),// 操作时间
|
||
})
|
||
})
|
||
}
|
||
let req: any = {
|
||
...obj,
|
||
BILL_TYPE: obj.BILL_TYPE || "", // 票据类型(1000:增值税专用发票;2000:普通发票) ,
|
||
BILL_NO: obj?.BILL_NO || "",//票据编号
|
||
SERIAL_NO: obj?.SERIAL_NO || "",// 流水号(实际发票号码)
|
||
BILL_TAXAMOUNT: obj?.BILL_TAXAMOUNT,// 含税开票金额
|
||
BILL_AMOUNT: obj?.BILL_AMOUNT,// 除税开票金额
|
||
DUTY_PARAGRAPH: obj?.DUTY_PARAGRAPH,// 开票税率
|
||
INVOICE_TAXAMOUNT: obj?.INVOICE_TAXAMOUNT,// 含税费用金额
|
||
INVOICE_AMOUNT: obj?.INVOICE_AMOUNT,// 除税费用金额
|
||
TAXTAIL_DIFFERENCE: obj?.TAXTAIL_DIFFERENCE,// 含税尾差
|
||
TAIL_DIFFERENCE: obj?.TAIL_DIFFERENCE,// 除税尾差
|
||
TAX_PRICE: obj?.TAX_PRICE,// 开票税金
|
||
SERVERPART_ID: obj?.SERVERPART_ID,
|
||
SERVERPART_NAME: obj?.SERVERPART_NAME,
|
||
SERVERPARTSHOP_ID: obj?.SERVERPARTSHOP_ID,// 门店内码
|
||
SERVERPARTSHOP_NAME: obj?.SERVERPARTSHOP_NAME,// 门店名称
|
||
MERCHANTS_ID: obj?.MERCHANTS_ID,// 商户内码
|
||
MERCHANTS_NAME: obj?.MERCHANTS_NAME,// 商户名称
|
||
BILL_PERSON: obj?.BILL_PERSON,// 开票人
|
||
BILL_DATE: obj?.BILL_DATE,// 开票日期
|
||
BANK_NAME: obj?.BANK_NAME,// 开户银行
|
||
BANK_ACCOUNT: obj?.BANK_ACCOUNT,// 银行账号
|
||
TAXPAYER_IDENTIFYCODE: cleanString(obj?.TAXPAYER_IDENTIFYCODE),// 统一信用代码
|
||
INTERBANK_NO: obj?.INTERBANK_NO,// 联行号
|
||
TAXPAYER_CODE: obj?.sellerTaxpayerId,// 开票方纳税人识别号
|
||
ACCOUNTED_TYPE: obj?.ACCOUNTED_TYPE,// 入账类型
|
||
ACCOUNTED_DATE: obj?.ACCOUNTED_DATE,// 入账时间
|
||
DOWNLOAD_URL: obj?.DOWNLOAD_URL,// 下载地址
|
||
RECEIVE_PHONENUMBER: obj?.RECEIVE_PHONENUMBER,// 收票方手机
|
||
RECEIVE_EMAIL: obj?.RECEIVE_EMAIL,// 收票方邮箱
|
||
BILL_STATE: type === 1 ? 9000 : type === 2 ? '9990' : '',// 票据状态
|
||
DetailList: obj?.DetailList,// 发票明细列表
|
||
}
|
||
const data = await handleSynchroBILLInterface(req)
|
||
}
|
||
// 获取当前用户信息
|
||
const handleGetUserInfo = async (id: string) => {
|
||
const req: any = {
|
||
UserIdEncrypted: id
|
||
}
|
||
const data = await handleGetPassportInfoById(req)
|
||
setCurrentUser(data)
|
||
return data
|
||
}
|
||
// 同步操作的流程信息 审核通过 和 审核驳回 都要去调用一下 同步流程的方法
|
||
const handleSynchroAPPLYAPPROVEFun = async (type: number, obj: any) => {
|
||
// type 1 审核通过 2 拒绝审核 3 红冲中
|
||
// obj 当前票据信息
|
||
const req: any = {
|
||
ACTINST_NAME: type === 1 ? '审核开票申请' : type === 2 ? '驳回开票申请' : type === 3 ? "红冲发票申请" : "",// 状态名称 审核开票申请 || 驳回开票申请
|
||
APPROVE_TYPE: obj?.BILL_ID,// 票的id
|
||
APPROVE_INFO: type === 1 ? '同意开票' : type === 2 ? '驳回开票' : type === 3 ? "红冲发票" : "",// 同意开票 || 驳回开票
|
||
STAFF_ID: currentUser?.ID,
|
||
STAFF_NAME: currentUser?.Name,
|
||
APPROVE_DATE: moment().format('YYYY-MM-DD HH:mm:ss'),
|
||
APPROVE_STATE: type === 1 ? 9000 : type === 2 ? 1000 : type === 3 ? '9990' : "",
|
||
APPROVE_DESC: "T_BILL"
|
||
}
|
||
let reqData: any = {
|
||
name: "",
|
||
value: encryptAES(JSON.stringify(req))
|
||
}
|
||
|
||
const data = await handleSynchroAPPLYAPPROVE(reqData)
|
||
|
||
}
|
||
// 红冲的时候 同步原先的票子 传入红冲原因
|
||
const handleUpdateOldBill = async (record: any) => {
|
||
let req: any = {
|
||
...record,
|
||
}
|
||
const data = await handleSynchroBILLInterface(req)
|
||
}
|
||
|
||
useEffect(async () => {
|
||
// 先调用token 后续这个页面用得到
|
||
await handleGetTokenInPage()
|
||
}, [])
|
||
|
||
|
||
return (
|
||
<div style={{ height: 'calc(100vh - 100px)', background: "#fff" }}>
|
||
<ProTable
|
||
actionRef={actionRef}
|
||
formRef={formRef}
|
||
columns={columns}
|
||
bordered
|
||
expandable={{
|
||
expandRowByClick: true
|
||
}}
|
||
rowKey={(record) => {
|
||
return `${record?.billNo}`
|
||
}}
|
||
scroll={{ x: "100%", y: 'calc(100vh - 450px)' }}
|
||
headerTitle={<span style={{ color: "#1890ff", fontSize: 14, fontWeight: 600 }}>票据列表</span>}
|
||
search={{ span: 6, labelWidth: 100 }}
|
||
request={async (params: any, sorter: any) => {
|
||
const search = window.location.search;
|
||
const addressParams = Object.fromEntries(new URLSearchParams(search).entries());
|
||
const userInfo = await handleGetUserInfo(addressParams.UserIdEncrypted)
|
||
// 排序字段
|
||
const sortstr = Object.keys(sorter).map(n => {
|
||
const value = sorter[n]
|
||
return value ? `${n} ${value.replace('end', '')}` : ''
|
||
})
|
||
// 获取票据信息表列表
|
||
const req: any = {
|
||
SearchParameter: {
|
||
SERVERPART_IDS: userInfo?.ServerpartIds,
|
||
BILL_STATES: params?.BILL_STATE || "",
|
||
BILL_TYPES: params?.BILL_TYPE || "",
|
||
},
|
||
PageIndex: 1,
|
||
PageSize: 999999,
|
||
sortstr: sortstr.length ? sortstr.toString() : "BILL_ID desc",
|
||
}
|
||
|
||
const data = await handleGetBILLList(req)
|
||
if (data && data.length > 0) {
|
||
return { data: data, success: true }
|
||
}
|
||
return { data: [], success: true }
|
||
|
||
|
||
// let req: any = {
|
||
// appId: "FPY001",
|
||
// appSecret: "FPY001fpy@2023***",
|
||
// accountId: "2280459335882518528",
|
||
// tenantid: "xhcamzchwbgonerr",
|
||
// language: ""
|
||
// }
|
||
// const token = await handleGetAppToken(req)
|
||
|
||
// 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)
|
||
|
||
// setAppToken(appToken)
|
||
// setAccessToken(accessToken.data.access_token)
|
||
|
||
|
||
// // 模拟数据
|
||
// const mockData: any = [
|
||
// // // 专票
|
||
// // {
|
||
// // billNo: "SRM_202508220957", // 单据编号
|
||
// // 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_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: 0,
|
||
// // 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",
|
||
// // blueInvoiceType: "026",
|
||
// // originalIssueTime: "2025-08-24 15:00:00",
|
||
// // blueinvoiceCode: "testBlueCode2025-08-25",
|
||
// // blueinvoiceNo: "testBlueNo2025-08-25"
|
||
// // // billDetail: [
|
||
// // // {
|
||
|
||
// // // }
|
||
// // // ]
|
||
// // },
|
||
// // {
|
||
// // billNo: "202508220003",
|
||
// // billDate: "2025-08-22",
|
||
// // autoInvoice: "1",
|
||
// // includeTaxFlag: "0",
|
||
// // invoiceProperty: "1",
|
||
// // invoiceType: "10xdp",
|
||
// // totalAmount: -8.85,
|
||
// // buyerTaxpayerId: "91440300MA5G9GK78Y",
|
||
// // buyerName: "深圳市顺丰快运有限公司test01",
|
||
// // sellerTaxpayerId: "91530112MA7MQ2JR9U",
|
||
// // sellerName: "云南交投集团经营开发有限公司彩云驿商业管理分公司",
|
||
// // sellerBankAndAccount: "13710884704",
|
||
// // sellerAddressAndTel: "高新技术产业园南区科技南十二路58996989",
|
||
// // drawer: "王协芬",
|
||
// // autoMerge: "0",
|
||
// // blueinvoiceNo: "SRM_202508220966",
|
||
// // redReason: "2",
|
||
// // amount: -8.85,
|
||
// // goodsName: "通天口服液",
|
||
// // lineProperty: 2,
|
||
// // price: -12,
|
||
// // quantity: 5,
|
||
// // revenueCode: "1070304990000000000",
|
||
// // taxRate: "0.09",
|
||
// // units: "盒"
|
||
// // },
|
||
|
||
// // 普票
|
||
// {
|
||
// billNo: "SRM_202509011376",
|
||
// billDate: "2025-09-01",
|
||
// autoInvoice: "1",
|
||
// includeTaxFlag: "1",
|
||
// invoiceProperty: "0",
|
||
// invoiceType: "10xdp",
|
||
// totalAmount: 10.00,
|
||
// buyerTaxpayerId: "91440300MA5G9GK78Y",
|
||
// buyerName: "深圳市顺丰快运有限公司test01",
|
||
// sellerTaxpayerId: "91530112MA7MQ2JR9U",
|
||
// sellerName: "云南交投集团经营开发有限公司彩云驿商业管理分公司",
|
||
// sellerBankAndAccount: "13710884704",
|
||
// sellerAddressAndTel: "高新技术产业园南区科技南十二路58996989",
|
||
// drawer: "王协芬",
|
||
// buyerRecipientPhone: "18158132615",
|
||
// buyerRecipientMail: "",
|
||
// billDetail: [
|
||
// {
|
||
// amount: 5,
|
||
// detailId: "11112222333344445555",
|
||
// goodsName: "通天口服液",
|
||
// lineProperty: 2,
|
||
// price: 5,
|
||
// quantity: 1,
|
||
// revenueCode: "1070304990000000000",
|
||
// taxRate: "0.13",
|
||
// units: "盒"
|
||
// },
|
||
// {
|
||
// amount: 5,
|
||
// detailId: "55554444333322221111",
|
||
// goodsName: "通天口服液2",
|
||
// lineProperty: 2,
|
||
// price: 5,
|
||
// quantity: 1,
|
||
// revenueCode: "1070304990000000000",
|
||
// taxRate: "0.13",
|
||
// units: "盒"
|
||
// }
|
||
// ]
|
||
// },
|
||
|
||
// // 专票
|
||
// {
|
||
// billNo: "SRM_202509011377",
|
||
// billDate: "2025-09-02",
|
||
// autoInvoice: "1",
|
||
// includeTaxFlag: "1",
|
||
// invoiceProperty: "0",
|
||
// invoiceType: "08xdp",
|
||
// totalAmount: 10.00,
|
||
// buyerTaxpayerId: "91440300MA5G9GK78Y",
|
||
// buyerName: "深圳市顺丰快运有限公司test01",
|
||
// buyerProperty: "1",
|
||
// sellerTaxpayerId: "91530112MA7MQ2JR9U",
|
||
// sellerName: "云南交投集团经营开发有限公司彩云驿商业管理分公司",
|
||
// sellerBankAndAccount: "13710884704",
|
||
// sellerAddressAndTel: "高新技术产业园南区科技南十二路58996989",
|
||
// drawer: "王协芬",
|
||
// buyerRecipientPhone: "18158132615",
|
||
// buyerRecipientMail: "",
|
||
// billDetail: [
|
||
// {
|
||
// amount: 5,
|
||
// detailId: "11112222333344445555",
|
||
// goodsName: "通天口服液",
|
||
// lineProperty: 2,
|
||
// price: 5,
|
||
// quantity: 1,
|
||
// revenueCode: "1070304990000000000",
|
||
// taxRate: "0.13",
|
||
// units: "盒"
|
||
// },
|
||
// {
|
||
// amount: 5,
|
||
// detailId: "55554444333322221111",
|
||
// goodsName: "通天口服液2",
|
||
// lineProperty: 2,
|
||
// price: 5,
|
||
// quantity: 1,
|
||
// revenueCode: "1070304990000000000",
|
||
// taxRate: "0.13",
|
||
// units: "盒"
|
||
// }
|
||
// ]
|
||
// }
|
||
// ];
|
||
|
||
// return {
|
||
// data: mockData,
|
||
// success: true,
|
||
// total: mockData.length
|
||
// }
|
||
}}
|
||
columnsState={{
|
||
value: columnsStateMap,
|
||
onChange: setColumnsStateMap,
|
||
}}
|
||
/>
|
||
|
||
{/* 用来输入红冲原因的 */}
|
||
<Modal
|
||
title={"红冲原因"}
|
||
open={showModal}
|
||
destroyOnClose
|
||
confirmLoading={confirmLoading}
|
||
onCancel={() => {
|
||
setShowModal(false)
|
||
setCurrentRow(null)
|
||
}}
|
||
onOk={() => {
|
||
modalFormRef.current?.validateFields().then(res => {
|
||
if (res) {
|
||
modalFormRef.current?.submit()
|
||
}
|
||
})
|
||
}}
|
||
>
|
||
<ProForm
|
||
formRef={modalFormRef}
|
||
submitter={false}
|
||
onFinish={() => {
|
||
setConfirmLoading(true)
|
||
handleRedGoBill(currentRow)
|
||
}}
|
||
>
|
||
<ProFormSelect
|
||
label={'红冲类型'}
|
||
name={"redReasonSelect"}
|
||
rules={[
|
||
{
|
||
required: true,
|
||
message: '请选择红冲类型'
|
||
}
|
||
]}
|
||
fieldProps={{
|
||
options: [
|
||
{ label: "销货退回", value: '1' },
|
||
{ label: "开票有误", value: '2' },
|
||
{ label: "开票中止", value: '3' },
|
||
{ label: "销售折让", value: '4' },
|
||
]
|
||
}}
|
||
/>
|
||
{/* <ProFormTextArea
|
||
label={"红冲原因"}
|
||
name={"redReason"}
|
||
rules={[
|
||
{
|
||
required: true,
|
||
message: '请输入红冲原因'
|
||
}
|
||
]}
|
||
/> */}
|
||
</ProForm>
|
||
</Modal>
|
||
|
||
|
||
<InvoiceDetial showDetail={showDetailModal} setShowDetail={setShowDetailModal} parentRow={currentRow} setParentRow={setCurrentRow} />
|
||
|
||
</div>
|
||
)
|
||
}
|
||
|
||
|
||
export default connect(({ user }: ConnectState) => ({
|
||
currentUser: user.data
|
||
}))(InvoiceInquiry); |