Browse Source

feat(): 新增开具发票页面

tags/PMS_Frontend_v1.0.6-develop
chenqiang 1 year ago
parent
commit
bb1784c3c5
  1. 129
      src/pages/FinancialMgm/FinancialReport/PdaStat/index.scss
  2. 402
      src/pages/FinancialMgm/FinancialReport/PdaStat/loadable.jsx
  3. 166
      src/pages/FinancialMgm/Invoice/CreateInvoice/index.scss
  4. 722
      src/pages/FinancialMgm/Invoice/CreateInvoice/loadable.jsx
  5. 47
      src/pages/FinancialMgm/Invoice/CreateInvoiceRecord/index.scss
  6. 1396
      src/pages/FinancialMgm/Invoice/CreateInvoiceRecord/loadable.jsx
  7. 2
      src/pages/FinancialMgm/SettleBill/PayRepeat/loadable.jsx
  8. 34
      src/router/router.config.js
  9. 43
      src/services/ElectInvoice/index.js
  10. 4
      src/services/index.js

129
src/pages/FinancialMgm/FinancialReport/PdaStat/index.scss

@ -3,3 +3,132 @@ $color-container-bg : var(--color-container-bg);
$color-user-list-bg : var(--color-user-list-bg); $color-user-list-bg : var(--color-user-list-bg);
$color-text : var(--color-text); $color-text : var(--color-text);
$color-primary : var(--color-primary); $color-primary : var(--color-primary);
.pdastart {
padding: 10px 20px;
height: 100%;
.body_cenf {
display: flex;
height: 100%;
.left_search {
width: 370px;
height: 100%;
.form_item {
width: 100%;
display: flex;
align-items: center;
padding: 0 10px 16px 0;
.lab {
width: 70px;
text-align: right;
margin-right: 10px;
}
// .labs {
// width: 120px;
// text-align: right;
// border: 1px solid var(--color-table-border-bottom-color);
// margin-right: 10px;
// }
.inputs {
flex: 1;
border: 1px solid var(--color-table-border-bottom-color);
border-radius: 4px;
overflow: hidden;
}
.inputst {
// flex: 228px;
border: 1px solid var(--color-table-border-bottom-color);
border-radius: 4px;
overflow: hidden;
}
}
.but_on {
display: flex;
// align-items: center;
margin: 0 10px 0 0;
justify-content: space-between;
span {
width: 110px;
height: 36px;
border-radius: 4px;
color: #ffffff;
margin-right: 10px;
text-align: center;
line-height: 36px;
cursor: pointer;
}
.sear_ser,
.sear_rep {
background-color: $color-primary;
}
.sear_res {
background: #636d80;
}
.lent {
width: 230px;
margin-left: 20px;
}
}
}
.right_tab {
flex: 1;
height: 100%;
padding: 20px;
background: var(--color-user-list-bg);
box-shadow: 0px 3px 8px 0px rgba(0, 0, 0, 0.12);
border-radius: 28px 0 0 0;
.table_raps {
width: 1300px;
}
.yisa-table {
width: 100%;
.ant-table-thead {
th {
background: var(--color-table-header-bg) !important;
}
.ant-table-selection-column {
text-align: center;
padding: 0;
}
}
.ant-table-tbody {
td {
background: var(--color-table-body-bg) !important;
border-bottom-color: var(--color-table-border-bottom-color);
}
tr:nth-child(even) {
td {
background: var(--color-table-body-bg-nth-child-even) !important;
}
}
tr:nth-child(odd) {
td {
background: var(--color-table-body-bg-nth-child-even) !important;
}
}
}
}
}
}
}

402
src/pages/FinancialMgm/FinancialReport/PdaStat/loadable.jsx

@ -1,15 +1,399 @@
import React, { useState, useRef, useEffect } from "react"; import React, { useState, useRef, useEffect } from "react";
// import { message, Pagination, Table, Space, Modal, } from "antd";
// import { dictionary, utils } from "@/config/common";
// import moment from 'moment'
import {
message,
Pagination,
Table,
Select,
Input,
Popover,
Modal,
Button,
Row,
Col,
Form,
DatePicker,
} from "antd";
import { dictionary, utils } from "@/config/common";
import moment from "moment";
import { DeleteOutlined } from "@ant-design/icons";
import ajax from "@/services";
// import { useSessionStorageState, useUpdateEffect, useSize, useUpdate } from 'ahooks'; // import { useSessionStorageState, useUpdateEffect, useSize, useUpdate } from 'ahooks';
// import ajax from "@/services"
// import { FormInput, FormSelect, OptionPanel, ResultPanel, FormSliderPicker, AreaCascader, ImgResize, ImgZoom, } from "@/components"
// import "./index.scss";
import { ResultFlow } from "@/components";
import "./index.scss";
// import errorImg from "@/assets/images/layout/error.png" // import errorImg from "@/assets/images/layout/error.png"
// import { useLocation } from "react-router-dom"; // import { useLocation } from "react-router-dom";
const { RangePicker } = DatePicker;
const { TextArea } = Input;
function PdaStat() { function PdaStat() {
return <div>PdaStat</div>
}
const [form] = Form.useForm();
//-
const formdata = {
sell_name: "", //
head_name: "", //
order_type: "", //
start_time: moment().startOf("day").format("YYYY-MM-DD HH:mm:ss"),
end_time: moment().endOf("day").format("YYYY-MM-DD HH:mm:ss"),
pn: "1",
page_size: "15",
};
//
const Headtype = [
{
label: "个人",
value: "1",
},
{
label: "企业",
value: "2",
},
];
//
const Bussinss = [
{
label: "停车支付订单",
value: "1",
},
{
label: "停车卡订单",
value: "2",
},
];
//
const [FormData, setFormData] = useState(formdata);
//2
const [FormDatas, setFormDatas] = useState(formdata);
//
const [loading, setLoading] = useState(false);
//
const [Data, setData] = useState({
data: [],
total: 0,
});
const column = () => {
return [
{
title: "序号",
width: 60,
fixed: "left",
render: (text, record, index) => index + 1,
},
{
title: "电子邮箱",
dataIndex: "email",
width: 120,
key: "email",
align: "center",
},
{
title: "发票代码",
dataIndex: "ordercode",
width: 120,
key: "ordercode",
align: "center",
},
{
title: "发票号码",
width: 120,
dataIndex: "orderNo",
key: "orderNo",
align: "center",
},
{
title: "商户名称",
width: 120,
dataIndex: "sell_name",
key: "sell_name",
align: "center",
},
{
title: "发票内容",
width: 120,
dataIndex: "invoice_content",
key: "invoice_content",
align: "center",
},
{
title: "发票抬头",
width: 120,
dataIndex: "header_name",
key: "header_name",
align: "center",
},
{
title: "纳税人识别号",
width: 120,
dataIndex: "tax_num",
key: "tax_num",
align: "center",
},
{
title: "开票金额",
width: 120,
dataIndex: "invoice_money",
key: "invoice_money",
align: "center",
render: (_, record) => {
return _ && _ + "元";
},
},
{
title: "税额",
width: 120,
dataIndex: "tax",
key: "tax",
align: "center",
render: (_, record) => {
return _ && _ + "元";
},
},
{
title: "税率",
width: 120,
dataIndex: "tax_rate",
key: "tax_rate",
align: "center",
},
{
title: "业务类型",
width: 120,
dataIndex: "order_type",
key: "order_type",
align: "center",
render: (_, record) => {
var buss = "";
buss = Bussinss.filter((ele) => ele.value == _)[0].label;
return buss;
},
},
{
title: "开票时间",
width: 120,
dataIndex: "create_time",
key: "create_time",
align: "center",
},
];
};
//
const columns = column();
export default PdaStat;
//
const onChangeData = (dates, dataString) => {
setFormData({
...FormData,
start_time: dataString[0],
end_time: dataString[1],
});
};
//
function onShowSizeChange(pn, pn_size) {
setFormData({
...FormData,
pn: pn,
page_size: pn_size,
});
setFormDatas({
...FormDatas,
pn: pn,
page_size: pn_size,
});
}
//
const getData = (data) => {
setLoading(false);
ajax.ElectInvoice.getInvoiceMess({ ...data }).then(
(res) => {
if (parseInt(res?.status) === 20000) {
console.log(res);
setData({
data: res?.data || {},
total: res.total || 0,
});
setLoading(true);
} else {
message.error(res?.message);
}
setLoading(true);
},
(err) => {
console.log(err);
setLoading(true);
}
);
};
useEffect(() => {
getData(FormDatas);
//
}, [FormDatas]);
return (
<div className="pdastart">
<div className="body_cenf">
<div className="left_search">
<div className="hrestit">查询条件</div>
<div className="form_item">
<span className="lab">商户名称</span>
<div className="inputs">
<Select
value={FormData.sell_name}
style={{
width: "100%",
}}
placeholder="请选择"
options={[
{
value: "1",
label: "全部",
},
{
value: "2",
label: "错位共享停车场",
},
{
value: "3",
label: "公共事业集团",
},
{
value: "4",
label: "社会类停车场",
},
{
value: "5",
label: "智慧互通",
},
]}
onChange={(e) =>
setFormData({
...FormData,
sell_name: e,
})
}
/>
</div>
</div>
<div className="form_item">
<span className="lab">登陆名</span>
<div className="inputs">
<Input
value={FormData.head_name}
// style={{
// width: 294,
// }}
placeholder="请输入内容"
onChange={(e) =>
setFormData({
...FormData,
head_name: e.target.value,
})
}
/>
</div>
</div>
<div className="form_item">
<span className="lab">姓名</span>
<div className="inputs">
<Input
value={FormData.head_name}
// style={{
// width: 294,
// }}
placeholder="请输入内容"
onChange={(e) =>
setFormData({
...FormData,
head_name: e.target.value,
})
}
/>
</div>
</div>
<div className="form_item">
<span className="lab">时间</span>
<div className="inputs">
<RangePicker
// format={"YYYY-MM-DD HH:MM:SS"}
value={[
FormData.start_time ? moment(FormData.start_time) : null,
FormData.end_time ? moment(FormData.end_time) : null,
]}
showTime={true}
onChange={(dates, dataString) =>
onChangeData(dates, dataString)
}
/>
</div>
</div>
<div className="but_on">
<span
className="sear_res"
onClick={() => {
var reset = formdata;
setFormData(reset);
setFormDatas(reset);
}}
>
重置
</span>
<span
className={"sear_ser"}
onClick={() => {
setFormDatas({ ...FormData });
}}
>
查询
</span>
<span
className={"sear_ser"}
onClick={() => {
// setFormDatas({ ...FormData });
}}
>
导出
</span>
</div>
</div>
<div className="right_tab">
<ResultFlow
hasLoad={true}
loading={loading}
resultData={Data.data}
message={"暂无数据"}
>
<div className="table_raps">
<Table
className="yisa-table"
columns={columns}
rowKey={(record) => record.id}
dataSource={Data.data}
pagination={false}
scroll={{
x: 1300,
y: "calc(100vh - 300px)",
}}
/>
</div>
<div>
<Pagination
className="pagination-common"
showSizeChanger={true}
showQuickJumper={true}
// showTotal={() => ` ${total_records} `}
total={Data.total}
current={FormData.pn}
pageSize={FormData.page_size}
pageSizeOptions={dictionary?.pageSizeOptions}
onChange={onShowSizeChange}
onShowSizeChange={onShowSizeChange}
/>
</div>
</ResultFlow>
</div>
</div>
</div>
);
}
export default PdaStat;

166
src/pages/FinancialMgm/Invoice/CreateInvoice/index.scss

@ -3,3 +3,169 @@ $color-container-bg : var(--color-container-bg);
$color-user-list-bg : var(--color-user-list-bg); $color-user-list-bg : var(--color-user-list-bg);
$color-text : var(--color-text); $color-text : var(--color-text);
$color-primary : var(--color-primary); $color-primary : var(--color-primary);
.CreateInvoice {
padding: 10px 20px;
height: 100%;
.body_cenf {
display: flex;
height: 100%;
.left_search {
width: 370px;
height: 100%;
.form_item {
width: 100%;
display: flex;
align-items: center;
padding: 0 10px 16px 0;
.lab {
width: 70px;
text-align: right;
margin-right: 10px;
}
// .labs {
// width: 120px;
// text-align: right;
// border: 1px solid var(--color-table-border-bottom-color);
// margin-right: 10px;
// }
.inputs {
flex: 1;
border: 1px solid var(--color-table-border-bottom-color);
border-radius: 4px;
overflow: hidden;
}
.inputst {
// flex: 228px;
border: 1px solid var(--color-table-border-bottom-color);
border-radius: 4px;
overflow: hidden;
}
}
.but_on {
display: flex;
// align-items: center;
margin: 0 10px 0 0;
justify-content: space-between;
span {
width: 110px;
height: 36px;
border-radius: 4px;
color: #ffffff;
// margin-right: 10px;
text-align: center;
line-height: 36px;
cursor: pointer;
}
.sear_ser,
.sear_rep {
background-color: $color-primary;
}
.sear_res {
background: #636d80;
}
.lent {
width: 230px;
margin-left: 20px;
}
}
}
.right_tab {
flex: 1;
height: 100%;
padding: 20px;
background: var(--color-user-list-bg);
box-shadow: 0px 3px 8px 0px rgba(0, 0, 0, 0.12);
border-radius: 28px 0 0 0;
.yisa-table {
width: 100%;
.ant-table-thead {
th {
background: var(--color-table-header-bg) !important;
}
.ant-table-selection-column {
text-align: center;
padding: 0;
}
}
.ant-table-tbody {
td {
background: var(--color-table-body-bg) !important;
border-bottom-color: var(--color-table-border-bottom-color);
}
tr:nth-child(even) {
td {
background: var(--color-table-body-bg-nth-child-even) !important;
}
}
tr:nth-child(odd) {
td {
background: var(--color-table-body-bg-nth-child-even) !important;
}
}
}
}
}
}
}
.modal-invoicerepeat {
.fptext {
width: 100%;
display: flex;
padding: 0 10px;
.fpo {
width: 50%;
span {
margin-right: 10px;
}
}
}
.submitBtn {
text-align: center;
margin-top: 20px;
.ant-btn {
width: 80px;
height: 35px;
border: none;
border-radius: 4px;
line-height: 27px;
color: #ffffff;
}
.submit {
background: #409eff;
}
.cancel {
background: var(--button-default-bg);
margin-left: 20px;
}
}
}

722
src/pages/FinancialMgm/Invoice/CreateInvoice/loadable.jsx

@ -1,15 +1,721 @@
import React, { useState, useRef, useEffect } from "react"; import React, { useState, useRef, useEffect } from "react";
// import { message, Pagination, Table, Space, Modal, } from "antd";
// import { dictionary, utils } from "@/config/common";
// import moment from 'moment'
import {
message,
Pagination,
Table,
Select,
Input,
Popover,
Modal,
Row,
Form,
Col,
Button,
DatePicker,
} from "antd";
import { dictionary, utils } from "@/config/common";
import moment from "moment";
import { DeleteOutlined } from "@ant-design/icons";
import ajax from "@/services";
// import { useSessionStorageState, useUpdateEffect, useSize, useUpdate } from 'ahooks'; // import { useSessionStorageState, useUpdateEffect, useSize, useUpdate } from 'ahooks';
// import ajax from "@/services"
// import { FormInput, FormSelect, OptionPanel, ResultPanel, FormSliderPicker, AreaCascader, ImgResize, ImgZoom, } from "@/components"
// import "./index.scss";
import { ResultFlow } from "@/components";
import "./index.scss";
// import errorImg from "@/assets/images/layout/error.png" // import errorImg from "@/assets/images/layout/error.png"
// import { useLocation } from "react-router-dom"; // import { useLocation } from "react-router-dom";
const { RangePicker } = DatePicker;
const { TextArea } = Input;
function CreateInvoice() { function CreateInvoice() {
return <div>CreateInvoice</div>
const [form] = Form.useForm();
//-
const formdata = {
plate: "", //id
payment_channels: "", //id
operator_id: "", //id
road_id: "", //id
dealer_id: "", //id
start_time: moment().startOf("day").format("YYYY-MM-DD HH:mm:ss"),
end_time: moment().endOf("day").format("YYYY-MM-DD HH:mm:ss"),
pn: "1",
page_size: "15",
};
const formlayout = {
labelCol: {
span: 6,
},
wrapperCol: {
span: 18,
},
};
//
const Bussinss = [
{
label: "停车支付订单",
value: "1",
},
{
label: "停车卡订单",
value: "2",
},
];
//
const pushred = [
{
text: "电子邮箱",
value: "email",
type: 1,
rules: [
{
required: true,
message: "电子邮箱不能为空",
},
{
pattern:
/^[A-Za-z0-9-_\u4e00-\u9fa5]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$/,
message: "邮箱格式错误,请重新输入",
},
],
},
{
text: "发票类型",
value: "qylx",
type: 2,
data: [
{
value: 1,
label: "个人",
},
{
value: 2,
label: "企业",
},
],
rules: [
{
required: true,
message: "企业类型不能为空",
},
],
},
{
text: "发票抬头",
value: "fptt",
rules: [
{
required: true,
message: "发票抬头不能为空",
},
],
},
{
text: "纳税人识别号",
value: "nsrsbh",
rules: "",
},
{
text: "地址",
value: "dz",
rules: "",
},
{
text: "电话",
value: "dh",
rules: [
{
pattern: /^1[3|4|5|7|8|9]\d{9}$/,
message: "电话格式错误,请重新输入",
},
],
},
{
text: "开户行",
value: "khh",
rules: "",
},
{
text: "账号",
value: "zh",
rules: "",
},
];
//
const [FormData, setFormData] = useState(formdata);
//2
const [FormDatas, setFormDatas] = useState(formdata);
//
const [loading, setLoading] = useState(false);
//
const [Data, setData] = useState({
data: [],
total: 1,
});
//
const [Selectdata, setSelectdata] = useState([]);
const [checkStrictly, setCheckStrictly] = useState(false);
//
const [Open, setOpen] = useState(false);
//
const [Textcl, setTextcl] = useState("");
const column = () => {
return [
{
title: "序号",
width: 60,
fixed: "left",
render: (text, record, index) => index + 1,
},
{
title: "区域",
dataIndex: "area",
key: "area",
align: "center",
},
{
title: "运营商名称",
dataIndex: "operator_id",
key: "operator_id",
align: "center",
},
{
title: "停车场名称",
dataIndex: "road_id",
key: "road_id",
align: "center",
},
{
title: "车牌号",
dataIndex: "plate_number",
key: "plate_number",
align: "center",
},
{
title: "开票金额",
dataIndex: "invoice_tclass",
key: "invoice_tclass",
align: "center",
},
{
title: "渠道类型",
dataIndex: "payment_channels",
key: "payment_channels",
align: "center",
},
{
title: "业务类型",
dataIndex: "order_type",
key: "order_type",
align: "center",
render: (_, record) => {
var buss = "";
buss = Bussinss.filter((ele) => ele.value == _)[0].label;
return buss;
},
},
{
title: "支付设备",
dataIndex: "payment_equipment",
key: "payment_equipment",
align: "center",
},
{
title: "操作人",
dataIndex: "dealer",
key: "dealer",
align: "center",
},
{
title: "支付时间",
dataIndex: "pay_time",
key: "pay_time",
width: 120,
fixed: "right",
align: "center",
},
{
title: "操作",
dataIndex: "operation",
key: "operation",
fixed: "right",
width: 100,
align: "center",
render: (_, record) => {
return (
<div className="btrnr">
<Button
type="primary"
onClick={() => {
form.setFieldsValue({
email: record.email,
qylx: record.employee,
fptt: record.invoice_t,
});
setTextcl(record);
setOpen(true);
}}
>
开票
</Button>
<a>支付详情</a>
</div>
);
},
},
];
};
//
const columns = column();
//
const rowSelection = {
onChange: (selectedRowKeys, selectedRows) => {
setSelectdata(selectedRows);
},
};
//
const onChangeData = (dates, dataString) => {
setFormData({
...FormData,
start_time: dataString[0],
end_time: dataString[1],
});
};
//
function onShowSizeChange(pn, pn_size) {
setFormData({
...FormData,
pn: pn,
page_size: pn_size,
});
setFormDatas({
...FormDatas,
pn: pn,
page_size: pn_size,
});
}
//
const InvoiceAnd = () => {
if (!Selectdata.length) {
message.warn("至少选择一项开票信息");
} else {
setOpen(true);
console.log("还没想好");
}
};
//
const SubmitPush = () => {
form
.validateFields()
.then((val) => {
console.log(val);
// ajax.submitPush({ ...val }).then((res) => {
// if (res.status == 20000) {
// form.resetFields();
// message.success(res.message);
// } else {
// message.error(res.message);
// }
// });
})
.catch((e) => {
console.log(e);
});
};
//
const FormTable = (data, disabledcol) => {
return (
<Form
form={form}
name="dyamic_rule"
style={{
width: 760,
}}
>
<Row gutter={24}>
{data.map((ele, index) => {
if (index % 2 == 0) {
return (
<Col span={12} key={index}>
{ele.type == 2 ? (
<Form.Item
{...formlayout}
key={ele.text}
name={ele.value}
label={ele.text}
rules={ele.rules}
>
<Select
placeholder={`请选择${ele.text}`}
allowClear
disabled={disabledcol.includes(index + 1)}
options={ele.data}
></Select>
</Form.Item>
) : (
<Form.Item
{...formlayout}
key={ele.text}
name={ele.value}
label={ele.text}
rules={ele.rules}
>
<Input
placeholder={`请输入${ele.text}`}
disabled={disabledcol.includes(index + 1)}
></Input>
</Form.Item>
)}
</Col>
);
} else {
return (
<Col span={12} key={index}>
{ele.type == 2 ? (
<Form.Item
{...formlayout}
key={ele.text}
name={ele.value}
label={ele.text}
rules={ele.rules}
>
<Select
placeholder={`请选择${ele.text}`}
allowClear
disabled={disabledcol.includes(index + 1)}
options={ele.data}
></Select>
</Form.Item>
) : (
<Form.Item
{...formlayout}
key={ele.text}
name={ele.value}
label={ele.text}
rules={ele.rules}
>
<Input
placeholder={`请输入${ele.text}`}
disabled={disabledcol.includes(index + 1)}
></Input>
</Form.Item>
)}
</Col>
);
}
})}
</Row>
</Form>
);
};
//
const getData = (data) => {
setLoading(false);
ajax.ElectInvoice.getInvoice({ ...data }).then(
(res) => {
if (parseInt(res?.status) === 20000) {
setData({
data: res?.data.list || {},
total: res.data.total || 0,
});
setLoading(true);
} else {
message.error(res?.message);
}
setLoading(true);
},
(err) => {
console.log(err);
setLoading(true);
}
);
};
useEffect(() => {
getData(FormDatas);
//
}, [FormDatas]);
return (
<div className="CreateInvoice">
<div className="body_cenf">
<div className="left_search">
<div className="hrestit">查询条件</div>
<div className="form_item">
<span className="lab">运营商名称</span>
<div className="inputs">
<Select
value={FormData.operator_id}
style={{
width: "100%",
}}
placeholder="请选择"
options={[
{
value: "1",
label: "全部",
},
{
value: "2",
label: "错位共享停车场",
},
{
value: "3",
label: "公共事业集团",
},
{
value: "4",
label: "社会类停车场",
},
{
value: "5",
label: "智慧互通",
},
]}
onChange={(e) =>
setFormData({
...FormData,
operator_id: e,
})
}
/>
</div>
</div>
<div className="form_item">
<span className="lab">渠道类型</span>
<div className="inputs">
<Select
value={FormData.payment_channels}
style={{
width: "100%",
}}
placeholder="请选择"
options={[
{
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",
label: "ETC",
},
]}
onChange={(e) =>
setFormData({
...FormData,
payment_channels: e,
})
}
/>
</div>
</div>
<div className="form_item">
<span className="lab">车牌号</span>
<div className="inputs">
<Input
value={FormData.plate}
// style={{
// width: 294,
// }}
placeholder="请输入车牌号"
onChange={(e) =>
setFormData({
...FormData,
plate: e.target.value,
})
}
/>
</div>
</div>
<div className="form_item">
<span className="lab">停车场名称</span>
<div className="inputs">
<Input
value={FormData.road_id}
// style={{
// width: 294,
// }}
placeholder="请输入停车场名称"
onChange={(e) =>
setFormData({
...FormData,
road_id: e.target.value,
})
}
/>
</div>
</div>
<div className="form_item">
<span className="lab">支付时间</span>
<div className="inputs">
<RangePicker
// format={"YYYY-MM-DD HH:MM:SS"}
value={[
FormData.start_time ? moment(FormData.start_time) : null,
FormData.end_time ? moment(FormData.end_time) : null,
]}
showTime={true}
onChange={(dates, dataString) =>
onChangeData(dates, dataString)
}
/>
</div>
</div>
<div className="form_item">
<span className="lab">操作人</span>
<div className="inputs">
<Input
value={FormData.dealer_id}
// style={{
// width: 294,
// }}
placeholder="请输入操作人"
onChange={(e) =>
setFormData({
...FormData,
dealer_id: e.target.value,
})
}
/>
</div>
</div>
<div className="but_on">
<span
className="sear_res"
onClick={() => {
var reset = formdata;
setFormData(reset);
setFormDatas(reset);
}}
>
重置
</span>
<span
className={"sear_ser"}
onClick={() => {
setFormDatas({ ...FormData });
}}
>
查询
</span>
<span
className={"sear_ser"}
onClick={() => {
InvoiceAnd();
}}
>
合并开票
</span>
</div>
</div>
<div className="right_tab">
<ResultFlow
hasLoad={true}
loading={loading}
resultData={Data.data}
message={"暂无数据"}
>
<div className="table-wrap">
<Table
className="yisa-table"
columns={columns}
rowKey={(record) => record.id}
dataSource={Data.data}
pagination={false}
rowSelection={{
...rowSelection,
checkStrictly,
}}
scroll={{
y: "calc(100vh - 300px)",
}}
/>
</div>
<div>
<Pagination
className="pagination-common"
showSizeChanger={true}
showQuickJumper={true}
// showTotal={() => ` ${total_records} `}
total={Data.total}
current={FormData.pn}
pageSize={FormData.page_size}
pageSizeOptions={dictionary?.pageSizeOptions}
onChange={onShowSizeChange}
onShowSizeChange={onShowSizeChange}
/>
</div>
</ResultFlow>
</div>
</div>
<Modal
open={Open}
footer={null}
onCancel={() => {
setOpen(false);
}}
width={800}
className="modal-invoicerepeat"
title={"开具电子发票"}
>
{FormTable(pushred, [])}
<div className="fptext">
<p className="fpo">
<span>发票内容</span>
<span>停车费</span>
</p>
<p className="fpo">
<span>发票金额</span>
<span>4.00</span>
</p>
</div>
<div className="submitBtn">
<p className="ant-btn submit" onClick={() => SubmitPush()}>
提交
</p>
<p
className="ant-btn cancel"
onClick={() => {
form.resetFields();
setOpen(false);
}}
>
取消
</p>
</div>
</Modal>
</div>
);
} }
export default CreateInvoice;
export default CreateInvoice;

47
src/pages/FinancialMgm/Invoice/CreateInvoiceRecord/index.scss

@ -100,6 +100,11 @@ $color-primary : var(--color-primary);
box-shadow: 0px 3px 8px 0px rgba(0, 0, 0, 0.12); box-shadow: 0px 3px 8px 0px rgba(0, 0, 0, 0.12);
border-radius: 28px 0 0 0; border-radius: 28px 0 0 0;
.table_raps {
width: 1300px;
// overflow-x: scroll;
}
.yisa-table { .yisa-table {
width: 100%; width: 100%;
@ -135,4 +140,46 @@ $color-primary : var(--color-primary);
} }
} }
} }
}
.modal-invoicerepeat {
.fptext {
width: 100%;
display: flex;
padding: 0 10px;
.fpo {
width: 50%;
span {
margin-right: 10px;
}
}
}
.submitBtn {
text-align: center;
margin-top: 20px;
.ant-btn {
width: 80px;
height: 35px;
border: none;
border-radius: 4px;
line-height: 27px;
color: #ffffff;
}
.submit {
background: #409eff;
}
.cancel {
background: var(--button-default-bg);
margin-left: 20px;
}
}
} }

1396
src/pages/FinancialMgm/Invoice/CreateInvoiceRecord/loadable.jsx
File diff suppressed because it is too large
View File

2
src/pages/FinancialMgm/SettleBill/PayRepeat/loadable.jsx

@ -365,7 +365,7 @@ function PayRepeat() {
page_size: pn_size, page_size: pn_size,
}); });
setFormDatas({ setFormDatas({
...FormData,
...FormDatas,
pn: pn, pn: pn,
page_size: pn_size, page_size: pn_size,
}); });

34
src/router/router.config.js

@ -835,6 +835,40 @@ let routes = [
component: pages.CreateInvoice, component: pages.CreateInvoice,
}, },
{ {
// -------------------------------财务管理 - 财务报表
path: "/financialMgm/parkingIncomeReport",
text: "停车收入报表",
name: "parkingIncomeReport",
component: pages.ParkingIncomeReport,
},
{
path: "/financialMgm/operationReport",
text: "运营报表",
name: "operationReport",
component: pages.OperationReport,
},
{
path: "/financialMgm/preOrderReport",
text: "预付报表",
name: "preOrderReport",
component: pages.PreOrderReport,
},{
path: "/financialMgm/paySummaryReport",
text: "总收入报表",
name: "paySummaryReport",
component: pages.PaySummaryReport,
},{
path: "/financialMgm/payChannelStat",
text: "渠道统计",
name: "payChannelStat",
component: pages.PayChannelStat,
},{
path: "/financialMgm/pdaStat",
text: "PDA统计",
name: "pdaStat",
component: pages.PdaStat,
},
{
// -------------------------------财务管理 - 异常处理 - 发起异常处理 // -------------------------------财务管理 - 异常处理 - 发起异常处理
path: "/financialMgm/startExceptionDeal", path: "/financialMgm/startExceptionDeal",
text: "发起异常处理", text: "发起异常处理",

43
src/services/ElectInvoice/index.js

@ -0,0 +1,43 @@
import ajax from "../../config/ajax"
//************************发票记录
// 获取列表数据
const getInvoiceMess = (params)=>{
return ajax({
url: "/api/fin/elec_invoice/get_list",
type: "post",
data: params,
})
}
//发票冲红
const FlushRed = (params) => {
return ajax({
url: "/api/fin/elec_invoice/deal_invoice",
type: "post",
data: params,
})
}
// 订阅任务-新增基本信息订阅级别数据获取
const getModalResource = ()=>{
return ajax({
url: "/api/v1/controlalarm/subscribes/get_deploy_subscribe_modal_resource",
type: "get",
// data: params,
})
}
//************************开具发票
// 获取列表数据
const getInvoice = (params)=>{
return ajax({
url: "/api/fin/elec_invoice/get_invoice_list",
type: "post",
data: params,
})
}
export default {
getInvoiceMess,
FlushRed,
getInvoice,
}

4
src/services/index.js

@ -18,6 +18,7 @@ import ZombieCarCleanRecord from "./OutRoadMgm";
import AdminMgm from "./SystemMgm"; import AdminMgm from "./SystemMgm";
import RoleMgm from "./SystemMgm"; import RoleMgm from "./SystemMgm";
import BusinessConf from "./SystemMgm"; import BusinessConf from "./SystemMgm";
import ElectInvoice from "./ElectInvoice";
const api = {}; const api = {};
export default { export default {
...api, ...api,
@ -40,5 +41,6 @@ export default {
...ZombieCarCleanRecord, ...ZombieCarCleanRecord,
...AdminMgm, ...AdminMgm,
...RoleMgm, ...RoleMgm,
...BusinessConf
...BusinessConf,
ElectInvoice
}; };
Loading…
Cancel
Save