10 changed files with 2332 additions and 613 deletions
-
129src/pages/FinancialMgm/FinancialReport/PdaStat/index.scss
-
402src/pages/FinancialMgm/FinancialReport/PdaStat/loadable.jsx
-
166src/pages/FinancialMgm/Invoice/CreateInvoice/index.scss
-
722src/pages/FinancialMgm/Invoice/CreateInvoice/loadable.jsx
-
47src/pages/FinancialMgm/Invoice/CreateInvoiceRecord/index.scss
-
1396src/pages/FinancialMgm/Invoice/CreateInvoiceRecord/loadable.jsx
-
2src/pages/FinancialMgm/SettleBill/PayRepeat/loadable.jsx
-
34src/router/router.config.js
-
43src/services/ElectInvoice/index.js
-
4src/services/index.js
@ -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; |
@ -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; |
1396
src/pages/FinancialMgm/Invoice/CreateInvoiceRecord/loadable.jsx
File diff suppressed because it is too large
View File
File diff suppressed because it is too large
View File
@ -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, |
||||
|
} |
Write
Preview
Loading…
Cancel
Save
Reference in new issue