Browse Source

feat():添加商品订单查询页面,处理部分bug

tags/PMS_Frontend_v1.0.6-develop
xingjx 1 year ago
parent
commit
3075e3f506
  1. 55
      src/pages/FinancialMgm/OrderInquiry/ParkingOrderInquiry/index.jsx
  2. 770
      src/pages/FinancialMgm/OrderInquiry/ProductOrderInquiry/index.jsx
  3. 322
      src/pages/FinancialMgm/OrderInquiry/ProductOrderInquiry/index.scss
  4. 4
      src/pages/FinancialMgm/OrderInquiry/index.jsx
  5. 36
      src/pages/FinancialMgm/PayConf/AppConf/index.jsx
  6. 86
      src/pages/FinancialMgm/PayConf/PayMerchantConf/index.jsx
  7. 44
      src/pages/FinancialMgm/PayConf/PlatformMerchantConf/index.jsx
  8. 325
      src/pages/SystemMgm/SystemLog/index.scss
  9. 630
      src/pages/SystemMgm/SystemLog/loadable.jsx
  10. 12
      src/router/router.config.js

55
src/pages/FinancialMgm/OrderInquiry/ParkingOrderInquiry/index.jsx

@ -74,60 +74,7 @@ function ParkingOrderInquiry() {
} }
return arr return arr
} }
//
const formSearch = [
{
name: "carId",
type: "Input",
label: "车牌号",
placeholder: "请输入车牌号",
},
{
name: "mobile",
type: "Input",
label: "会员手机号",
placeholder: "请输入会员手机号",
},
{
name: "authState",
type: "Select",
label: "认证状态",
options: [
{
label: "已认证",
value: 0,
},
{
label: "未认证",
value: 1,
},
],
},
{
name: "bingState",
type: "Select",
label: "绑定状态",
options: [
{
label: "已绑定",
value: 0,
},
{
label: "未绑定",
value: 1,
},
],
},
{
name: "timePeriod",
type: "RangePicker",
label: "时间段",
defaultValue: [moment().subtract(1, "month"), moment()],
},
];
// //
const ash = [ const ash = [
{//1 {//1

770
src/pages/FinancialMgm/OrderInquiry/ProductOrderInquiry/index.jsx

@ -0,0 +1,770 @@
import React, { useState, useRef, useEffect } from "react";
import {
message,
Pagination,
Table,
Input,
Space,
Modal,
Button,
Select,
Tabs,
Descriptions,
Timeline
} from "antd";
import moment from "moment";
import ajax from '@/config/ajax.js'
import { TableModule } from "@/components";
import { dictionary } from "@/config/common.js";
import "./index.scss";
function ProductOrderInquiry() {
const [carId, setCarId] = useState()
//
const createCol = (label, name, type) => {
label.length == name.length ? null : console.log('参数缺失', label.length, name.length)
var arr = []
label?.map((item, index) => {
let cm = {
title: item,
dataIndex: name[index],
key: name[index],
align: "center",
}
switch (item) {
case "序号":
cm.render = (text, record, index) => index + 1
break
case "退款订单ID":
case "业务订单ID":
case "支付订单ID":
cm.render = (text) => (
<>
<a onClick={() => {
navigator.clipboard.writeText(`${text}`).then(() => { message.success("已复制到剪切板") });
}}>{text}</a>
</>
)
break
default: break
}
arr.push(cm)
})
var obj = {
title: "操作",
dataIndex: "operation",
key: "operation",
fixed: "right",
align: "center",
}
switch (type) {
case 2:
obj.render = (text, record) => (<>
<span type="primary" style={{ display: 'block', textAlign: 'center' }} onClick={() => {
setYcddData(record)
setDetailVisible(true)
}}>
<a>详情</a>
</span>
</>)
arr.push(obj)
break
default: break
}
return arr
}
//
const formSearch = [
{
name: "carId",
type: "Input",
label: "车牌号",
placeholder: "请输入车牌号",
},
{
name: "mobile",
type: "Input",
label: "会员手机号",
placeholder: "请输入会员手机号",
},
{
name: "authState",
type: "Select",
label: "认证状态",
options: [
{
label: "已认证",
value: 0,
},
{
label: "未认证",
value: 1,
},
],
},
{
name: "bingState",
type: "Select",
label: "绑定状态",
options: [
{
label: "已绑定",
value: 0,
},
{
label: "未绑定",
value: 1,
},
],
},
{
name: "timePeriod",
type: "RangePicker",
label: "时间段",
defaultValue: [moment().subtract(1, "month"), moment()],
},
];
//
const ash = [
{//1
name: "region",
type: "TreeSelect",
label: "区域",
},
{//2
name: "operator",
type: "Select",
label: "商户名称",
options: dictionary.MerchantName,
},
{//3
name: "road",
type: "Input",
label: "停车场名称",
placeholder: "请输入停车场名称",
},
{//4
name: "road_type",
type: "Select",
label: "车场类型",
options: [
{
label: "全部",
value: 0,
},
{
label: "路侧平行",
value: 1,
},
{
label: "路侧垂停",
value: 2,
},
{
label: "封闭车场",
value: 3,
},
{
label: "半封闭车场",
value: 4,
},
],
},
{//5
name: "phone",
type: "Input",
label: "手机号",
placeholder: "请输入手机号",
},
{//6
name: "type",
type: "Select",
label: "出入场类型",
placeholder: "请选择出入场类型",
defaultValue: 1,
options: [
{
label: "入场",
value: 1,
},
{
label: "出场",
value: 2,
},
],
},
{//7
name: "b",
type: "Input",
label: "商品名称",
placeholder: "请输入商品名称",
},
{//8
name: "b",
type: "Select",
label: "购买渠道",
placeholder: "请选择购买渠道",
options: [
{
label: "全部",
value: 0,
},
{
label: "线上渠道",
value: 1,
},
{
label: "后台录入",
value: 2,
},
],
},
{//9
name: "b",
type: "Select",
label: "订单状态",
placeholder: "请选择订单状态",
options: [
{
label: "全部",
value: 0,
},
{
label: "未生效",
value: 1,
},
{
label: "生效中",
value: 2,
},
{
label: "已失效",
value: 3,
},
],
},
{//10
name: "payment_channels",
type: "Select",
label: "支付渠道",
placeholder: "请选择支付渠道",
options: dictionary.PayChannel,
},
{//11
name: "payment_equipment",
type: "Select",
label: "支付设备",
placeholder: "请选择支付设备",
options: dictionary.PayDevice
},
{//12
name: "pay_type",
type: "Select",
label: "支付方式",
placeholder: "请选择支付方式",
options: dictionary.PaydMethod,
},
{//13
name: "timePeriod",
type: "RangePicker",
label: "时间段",
defaultValue: [moment().startOf("day"), moment()],
},
{//14
name: "b",
type: "Select",
label: "退款方式",
placeholder: "请选择退款方式",
options: dictionary.PaydMethod,
},
{//15
name: "b",
type: "Input",
label: "渠道流水号",
placeholder: "请输入渠道流水号",
},
{//16
name: "timePeriod",
type: "RangePicker",
label: "时间段",
defaultTitle: ['支付时间', '至']
// defaultValue: [moment().startOf("day"), moment()],
},
{//17
name: "timePeriod",
type: "RangePicker",
label: "时间段",
defaultTitle: ['订购时间', '至']
// defaultValue: [moment().startOf("day"), moment()],
},
{//18
name: "timePeriod",
type: "RangePicker",
label: "时间段",
defaultTitle: ['预约到场时间', '至']
// defaultValue: [moment().startOf("day"), moment()],
},
{//19
name: "plate",
type: "Input",
label: "车牌号",
placeholder: "请输入车牌号",
},
{//20
name: "order_id",
type: "Input",
label: "支付订单ID",
placeholder: "请输入支付订单ID",
},
{//21
name: "berth_id",
type: "Input",
label: "泊位号",
placeholder: "请输入泊位号",
},
{//22
name: "t",
type: "Select",
label: "所属商户",
placeholder: "请选择所属商户",
options: dictionary.MerchantName,
},
{//23
name: "t",
type: "Input",
label: "预付订单ID",
placeholder: "请输入订单ID",
},
{//24
name: "t",
type: "Input",
label: "停车记录ID",
placeholder: "停车记录ID",
},
{//25
name: "dealer",
type: "Input",
label: "操作人",
placeholder: "请输入操作人",
},
{//26
name: "t",
type: "Input",
label: "停车订单ID",
placeholder: "停车订单ID",
},
{//27
name: "t",
type: "Input",
label: "欠费区间",
placeholder: "",
},
{//28
name: "timePeriod",
type: "RangePicker",
label: "时间段",
defaultTitle: ['订单修改时间', '至']
// defaultValue: [moment().startOf("day"), moment()],
},
{//29
name: "b",
type: "Select",
label: "修改原因",
placeholder: "请选择修改原因",
options: [
{
label: "全部",
value: 0,
},
{
label: "订单自动找平",
value: 1,
},
{
label: "异常订单处理",
value: 2,
},
],
},
];
const [resultData, setResultData] = useState([])
const [ycddData, setYcddData] = useState([])//
const [detailVisible, setDetailVisible] = useState(false);
const [timesVisible, setTimesVisible] = useState(false); //退
const [tkddVisible, setTkddVisible] = useState(false);
const [eaeVisible, setEaeVisible] = useState(false);//
const [bigpicVisible, setBigpicVisible] = useState(false);//
const [bigPic, setBigPic] = useState();
const [total, setTotal] = useState(0);
const [tabKey, setTabKey] = useState("1");
function changeKey(key) {
setTabKey(key);
}
//
function search(e) {
// if (!e.type) {
// e.type = 1
// }
ajax({
url: "/api/ope/car/list",
type: "post",
data: { ...e },
}).then((res) => {
let { status, data, total } = res
if (status == 20000) {
setResultData(data)
setTotal(total)
} else {
message.error(res.message)
}
})
}
//
function searchOther(e) {
var url = ''
switch (tabKey) {
case "1":
url = ""//
break
case "2":
url = ""//
break
default: break
}
// if (tabKey == '3' && e && !e?.type) {
// e.type = 1
// }
ajax({
url: url,
type: "post",
data: { ...e, carId: carId },
}).then((res) => {
let { status, data, total } = res
if (status == 20000) {
if (data.list) {
setResultData(data.list)
setTotal(data.total)
} else {
setResultData(data)
setTotal(total)
}
} else {
setResultData([])
message.error(res.message)
}
})
}
//
function renderParkRecord(params) {
return (
<div className="ltc-box">
<div className="ltc-box-title"><div className="text">停车场信息</div><div className="line"></div></div>
<div className="ltc-content">
<div className="ltc-item">
<div className="new-item">停车场名称</div><div className="new-value">{params?.road || "--"}</div>
</div>
<div className="ltc-item">
<div className="new-item">泊位号</div><div className="new-value">{params.berth_id || "--"}</div>
</div>
<div className="ltc-item">
<div className="new-item">区域</div><div className="new-value">{params.region || "--"}</div>
</div>
<div className="ltc-item">
<div className="new-item">商户</div><div className="new-value">{params.operator || "--"}</div>
</div>
<div className="ltc-item">
<div className="new-item">车场类型</div><div className="new-value">{params.road_type || "--"}</div>
</div>
</div>
<div className="ltc-box-title"><div className="text">停车信息</div><div className="line"></div></div>
<div className="ltc-content">
<div className="ltc-item">
<div className="new-item">车牌号</div><div className="new-value">{params.plate || "--"}</div>
</div>
<div className="ltc-item">
<div className="new-item">会员手机号</div><div className="new-value">{params.phone || "--"}</div>
</div>
<div className="ltc-item">
<div className="new-item">入场时间</div><div className="new-value">{params.in_time || "--"}</div>
</div>
<div className="ltc-item">
<div className="new-item">出场时间</div><div className="new-value">{params.out_time || "--"}</div>
</div>
<div className="ltc-item">
<div className="new-item">停车时长</div><div className="new-value">{params.admission_time || "--"}</div>
</div>
<div className="ltc-item">
<div className="new-item">订单金额</div><div className="new-value">{params.order_amount || "--"}</div>
</div>
<div className="ltc-item">
<div className="new-item">停车卡折扣</div><div className="new-value">{params.parking_card_discount || "--"}</div>
</div>
<div className="ltc-item">
<div className="new-item">车场折扣</div><div className="new-value">{params.road_discount || "--"}</div>
</div>
<div className="ltc-item">
<div className="new-item">应收金额</div><div className="new-value">{params.receivable_amount || "--"}</div>
</div>
<div className="ltc-item">
<div className="new-item">优惠券</div><div className="new-value">{params.preferential_amount || "--"}</div>
</div>
<div className="ltc-item">
<div className="new-item">优惠总计</div><div className="new-value">{params.preferential_total || "--"}</div>
</div>
<div className="ltc-item">
<div className="new-item">实付金额</div><div className="new-value">{params.actual_amount || "--"}</div>
</div>
<div className="ltc-item">
<div className="new-item">优惠退款</div><div className="new-value">{params.refund_discount || "--"}</div>
</div>
<div className="ltc-item">
<div className="new-item">实付退款</div><div className="new-value">{params.actual_refund || "--"}</div>
</div>
<div className="ltc-item">
<div className="new-item">退款总计</div><div className="new-value">{params.refund_total || "--"}</div>
</div>
<div className="ltc-item">
<div className="new-item">入场收费员</div><div className="new-value">{params.in_person || "--"}</div>
</div>
<div className="ltc-item">
<div className="new-item">出场收费员</div><div className="new-value">{params.out_person || "--"}</div>
</div>
</div>
<div className="ltc-box-title"><div className="text">入场照片</div><div className="line"></div></div>
<div className="ltc-content">
<div className="ltc-item ltc-item-img ">
<img src={params.in_veh_pic || require("../../../../../src/assets/images/error-img.png")} onClick={() => { setBigPic(params.in_veh_pic); setBigpicVisible(true) }} />
</div>
<div className="ltc-item ltc-item-img ">
<img src={params.in_plate_pic || require("../../../../../src/assets/images/error-img.png")} onClick={() => { setBigPic(params.in_plate_pic); setBigpicVisible(true) }} />
</div>
</div>
</div>
);
}
//
function renderTable(columns, arr, dataSource) {
return (
<TableModule
columns={columns}
tableData={dataSource}
formSearch={arr}
total={total}
search={searchOther}
/>
);
}
//退
const tkddModal = <div className="ltc-box">
<div className="ltc-box-title"><div className="text">退款订单:{ycddData?.refund_id}</div><div className="line"></div></div>
<div className="ltc-content">
<div className="ltc-item">
<div className="new-item">生成时间</div><div className="new-value">{ycddData?.refund_time || "--"}</div>
</div>
<div className="ltc-item">
<div className="new-item">退款状态</div><div className="new-value">{ycddData.refund_state || "--"}</div>
</div>
<div className="ltc-item">
<div className="new-item">支付渠道</div><div className="new-value">{ycddData.payment_channels || "--"}</div>
</div>
<div className="ltc-item">
<div className="new-item">退款方式</div><div className="new-value">{ycddData.refund_type || "--"}</div>
</div>
<div className="ltc-item">
<div className="new-item">应退实付金额</div><div className="new-value">{ycddData.refund_actual_amount || "--"}</div>
</div>
<div className="ltc-item">
<div className="new-item">已退实付金额</div><div className="new-value">{ycddData.has_refund_actual_amount || "--"}</div>
</div>
<div className="ltc-item">
<div className="new-item">应退优惠金额</div><div className="new-value">{ycddData.refund_discount_amount || "--"}</div>
</div>
<div className="ltc-item">
<div className="new-item">已退优惠金额</div><div className="new-value">{ycddData.has_refund_discount_amount || "--"}</div>
</div>
<div className="ltc-item">
<div className="new-item">退款尝试次数</div><div className="new-value">{ycddData.try_count || "--"}
{timesVisible ?
<a onClick={() => { setTimesVisible(false) }}>收起</a> :
<a onClick={() => { setTimesVisible(true) }}>查看</a>}
</div>
</div>
<div className="ltc-item">
<div className="new-item">最近尝试时间</div><div className="new-value">{ycddData.latest_try_time || "--"}</div>
</div>
</div>
{timesVisible ? <>
<div className="ltc-box-title"><div className="text">退款尝试详情</div><div className="line"></div></div>
</> :
<>
<div className="ltc-box-title"><div className="text">支付订单:{ycddData.order_id}</div><div className="line"></div></div>
<div className="ltc-content">
<div className="ltc-item">
<div className="new-item">平台商户</div><div className="new-value">{ycddData.payment_operator_name}</div>
</div>
<div className="ltc-item">
<div className="new-item">生成时间</div><div className="new-value">{ycddData.payment_create_time}</div>
</div>
<div className="ltc-item">
<div className="new-item">支付时间</div><div className="new-value">{ycddData.pay_time}</div>
</div>
<div className="ltc-item">
<div className="new-item">支付渠道</div><div className="new-value">{ycddData.payment_equipment}</div>
</div>
<div className="ltc-item">
<div className="new-item">优惠金额</div><div className="new-value">{ycddData.discount_amount}</div>
</div>
<div className="ltc-item">
<div className="new-item">支付应用</div><div className="new-value">{ycddData.payment_equipment}</div>
</div>
<div className="ltc-item">
<div className="new-item">实付金额</div><div className="new-value">{ycddData.paid_in_money}</div>
</div>
</div>
<div className="ltc-box-title"><div className="text">停车订单:{ycddData.park_record_id}</div><div className="line"></div></div>
<div className="ltc-box-title"><div className="text">车厂详情</div></div>
<div className="ltc-content">
<div className="ltc-item">
<div className="new-item">平台商户</div><div className="new-value">{ycddData.payment_operator_name}</div>
</div>
<div className="ltc-item">
<div className="new-item">停车场名称</div><div className="new-value">{ycddData?.road_name}</div>
</div>
<div className="ltc-item">
<div className="new-item">区域</div><div className="new-value">{ycddData.area_name}</div>
</div>
<div className="ltc-item">
<div className="new-item">商户名称</div><div className="new-value">{ycddData.park_operator_name}</div>
</div>
<div className="ltc-item">
<div className="new-item">泊位号</div><div className="new-value">{ycddData.berth_code}</div>
</div>
<div className="ltc-item">
<div className="new-item">车场类型</div><div className="new-value">{ycddData.road_type}</div>
</div>
</div>
<div className="ltc-box-title"><div className="text">车辆详情</div></div>
<div className="ltc-content">
<div className="ltc-item">
<div className="new-item">车牌号</div><div className="new-value">{ycddData.plate_number}</div>
</div>
<div className="ltc-item">
<div className="new-item">停车时长</div><div className="new-value">{ycddData.parking_duration}</div>
</div>
<div className="ltc-item">
<div className="new-item">入场时间</div><div className="new-value">{ycddData.in_time}</div>
</div>
<div className="ltc-item">
<div className="new-item">出场时间</div><div className="new-value">{ycddData.out_time}</div>
</div>
<div className="ltc-item">
<div className="new-item">入场记录来源</div><div className="new-value">{ycddData.inSource}</div>
</div>
<div className="ltc-item">
<div className="new-item">出场记录来源</div><div className="new-value">{ycddData.outSource}</div>
</div>
<div className="ltc-item">
<div className="new-item">证据图像</div><div className="new-value"><a onClick={() => { setEaeVisible(true) }}>查看</a></div>
</div>
</div>
</>}
</div>
useEffect(() => {
searchOther()
}, [tabKey])
return (
<>
<Tabs activeKey={tabKey} onChange={changeKey}>
<Tabs.TabPane tab="停车卡订单" key="1">
{renderTable(
createCol(['车牌号', '车牌颜色', '手机号', '商品名称', '实付金额', '支付渠道', '支付设备', '购买渠道', '支付时间', '订单状态', '渠道流水号'],
['merchantName', '', 'area', '', 'sectionName', '', 'licensePlateNumber', 'entryTime', 'exitTime', '', 'arrearsAmount'], 1),
[ash[18], ash[4], ash[6], ash[7], ash[8], ash[9], ash[10], ash[15], ash[14]],
resultData
)}
</Tabs.TabPane>
<Tabs.TabPane tab="错峰卡订单" key="2">
{renderTable(
createCol(['序号', '停车场名称', '车牌号', '手机号', '订单金额', '支付方式', '渠道流水号', '同步MS状态', '订购时间'],
['index', '', 'area', '', 'sectionName', '', 'licensePlateNumber', 'entryTime', 'exitTime', '', 'arrearsAmount'],2),
[ash[2], ash[4], ash[18], ash[11], ash[16], ash[14]],
resultData
)}
</Tabs.TabPane>
{/* <Tabs.TabPane tab="" key="3">
</Tabs.TabPane> */}
</Tabs>
<Modal
open={bigpicVisible}
width={1600}
title={'图片展示'}
className="eae-modal"
onCancel={() => {
setBigpicVisible(false);
}}
footer={false}
>
<div>
<div className="eae-modal-item">
<img src={bigPic} width={1550} />
</div>
</div>
</Modal>
<Modal
open={tkddVisible}
width={1500}
title={'订单详情'}
onCancel={() => {
setTkddVisible(false);
}}
footer={[
<Button key="back" onClick={() => {
setTkddVisible(false);
}}>
关闭窗口
</Button>]}
>
{/* {tkddModal} */}
{tabKey == '5' ? tkddModal : tabKey == '6' ? tckModal : tabKey == '7' ? cfkModal : null}
</Modal>
<Modal
open={eaeVisible}
width={1600}
title={'证据图像'}
className="eae-modal"
onCancel={() => {
setEaeVisible(false);
}}
footer={false}
>
<div>
<div className="eae-modal-title"><div className="ltc-icon"></div>入场图片</div>
<div className="eae-modal-item">
<div>车辆照片</div>
<img src={ycddData.in_veh_pic} width={750} />
</div>
<div className="eae-modal-item">
<div>车牌照片</div>
<img src={ycddData.in_plate_pic} width={750} />
</div>
</div>
</Modal>
</>
);
}
export default ProductOrderInquiry;

322
src/pages/FinancialMgm/OrderInquiry/ProductOrderInquiry/index.scss

@ -0,0 +1,322 @@
@import "@/assets/css/mixin.scss";
$color-container-bg: var(--color-container-bg);
$color-user-list-bg: var(--color-user-list-bg);
$color-text: var(--color-text);
$color-primary: var(--color-primary);
.ant-tabs-tabpane-hidden {
display: none;
}
.ant-tabs {
margin-bottom: 16px;
.ant-tabs-nav {
margin-bottom: 0 !important;
&::before {
border-bottom: 1px solid var(--color-card-line) !important;
}
}
.ant-tabs-nav-wrap {
width: 100%;
box-sizing: content-box;
.ant-tabs-nav-list {
width: 340px;
.ant-tabs-ink-bar {
height: 3px;
background-color: #00ccff;
}
.ant-tabs-tab {
flex: 1;
width: 100%;
display: flex;
justify-content: center;
padding-bottom: 10px;
text-align: center;
cursor: pointer;
font-size: 14px !important;
font-family: MicrosoftYaHei;
text-align: center;
letter-spacing: 0.7px;
}
.ant-tabs-tab-active {
div {
color: #00ccff;
}
}
}
}
}
.ant-input::-webkit-input-placeholder {
color: var(--color-placeholder);
}
.ant-input::-moz-placeholder {
color: var(--color-placeholder);
}
.ant-input:-ms-input-placeholder {
color: var(--color-placeholder);
}
.ant-input::placeholder {
color: var(--color-placeholder);
}
.ant-select-selection-placeholder {
color: var(--color-placeholder);
}
.ant-select-disabled.ant-select-single:not(.ant-select-customize-input)
.ant-select-selector {
background: var(--color-input-disabled-bg);
color: var(--color-placeholder);
}
.ant-select-disabled .ant-select-arrow {
color: var(--color-placeholder);
}
.ant-select-disabled.ant-select:not(.ant-select-customize-input)
.ant-select-selector {
background-color: var(--color-input-disabled-bg);
color: var(--color-input-disabled-color);
cursor: not-allowed;
}
.ant-select-multiple {
.ant-select-selector {
.ant-select-selection-item {
background-color: var(--color-bg-body);
border-color: var(--color-border);
.ant-select-selection-item-remove {
color: var(--color-text);
}
}
}
}
.ant-select-arrow {
color: var(--color-text);
}
.ant-select-clear {
border-radius: 50%;
}
.ant-select-dropdown-menu {
background-color: var(--color-input-bg);
.ant-select-dropdown-menu-item {
color: var(--color-text);
&.ant-select-dropdown-menu-item-active {
color: #fff;
// background-color: var(--radio-button-bg-checked);
}
&.ant-select-dropdown-menu-item-selected {
color: #fff;
// background-color: var(--radio-button-bg-checked);
}
&:hover {
color: #fff;
// background-color: var(--radio-button-bg-checked);
}
}
}
.ant-select-selector {
background-color: var(--color-search-list-item-bg) !important;
box-shadow: none !important;
border-radius: 4px;
color: var(--color-search-list-item-value);
border-color: var(--color-search-list-item-bd) !important;
}
.ant-select-selection {
background-color: var(--color-input-bg);
box-shadow: none;
color: var(--color-text);
// border-color:var(--checkable-tag-border);
}
.ant-form-horizontal .ant-form-item-label {
label {
display: inline-block;
word-wrap: break-word;
white-space: normal;
}
}
.ant-picker {
width: 100%;
background-color: var(--color-search-list-item-bg);
border-color: var(--color-border);
}
.yisa-table {
width: 100%;
.ant-table-thead {
th {
background: var(--color-table-header-bg) !important;
}
}
.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;
}
}
}
}
.base-ltc {
display: flex;
}
.ltc-img {
margin-right: 20px;
}
.ltc-box {
width: 100%;
.ltc-box-title {
font-size: 18px;
font-weight: bolder;
width: 100%;
white-space: nowrap;
overflow: hidden;
.text {
display: inline-block;
}
.line {
display: inline-block;
border: 1px dotted #607092;
width: inherit;
margin-bottom: 6px;
}
.ltc-icon {
width: 5px;
background: #0080db;
height: 19px;
display: inline-block;
margin-right: 10px;
}
.ltc-btn {
display: inline-block;
border: 1px solid;
border-radius: 5px;
margin: 0 10px;
width: 60px;
height: 35px;
line-height: 35px;
text-align: center;
background: #409eff;
color: #fff;
font-weight: 100;
cursor: pointer;
}
.ltc-cancel {
background: #fff;
color: #000;
}
}
.ltc-box-line {
border: 1px solid #e7e7e7;
margin: 8px 0;
}
.ltc-box-in {
margin-left: 20px;
.ant-descriptions {
margin-left: 20px;
}
}
.ltc-title {
margin: auto;
width: 50%;
text-align: center;
font-size: 18px;
font-weight: 600;
}
.ltc-content {
margin: auto;
padding: 20px;
.ltc-item {
font-size: 14px;
margin: 6px 12px 6px 0;
display: inline-flex;
//width: 470px;
.new-item {
display: inline-block;
width: 120px;
height: 32px;
line-height: 32px;
background: rgba(150,161,192,0.24);
text-align: center;
}
.new-value {
display: inline-block;
width: 320px;
height: 32px;
line-height: 32px;
text-align: center;
background: #3E4557;
box-shadow: 0px 3px 8px 0px rgba(0,0,0,0.12);
}
.ltc-item-input {
display: inline-block;
width: 200px;
}
div {
width: 150px;
}
}
}
.ltc-liuc {
display: flex;
margin-left: 200px;
.ltc-item {
display: flex;
.ltc-item-name {
margin: 6px 10px 0 10px;
color: #3f94df;
}
}
.ltc-work{
text-align: center;
.ltc-tips {
border: 3px solid #000;
text-align: center;
line-height: 27px;
height: 35px;
width: 35px;
border-radius: 28px;
margin: auto;
}
}
}
}
.distable {
.ant-pagination {
justify-self: center;
}
}
.eae-modal {
.eae-modal-title {
font-size: 18px;
font-weight: bolder;
.ltc-icon {
width: 5px;
background: #0080db;
height: 19px;
display: inline-block;
margin-right: 10px;
}
}
.eae-modal-item {
display: inline-block;
font-size: 16px;
}
}
.cc-container {
overflow: auto;
}
.back-btn {
position: absolute;
right: 50px;
border: 1px solid #bdbdbd;
border-radius: 5px;
width: 60px;
height: 35px;
line-height: 30px;
text-align: center;
background: #ffffff;
color: #000;
cursor: pointer;
z-index: 9999;
}

4
src/pages/FinancialMgm/OrderInquiry/index.jsx

@ -2,11 +2,13 @@ import loadable from "@loadable/component";
const EditOrderInquiry = loadable(() => import("./OrderChangeInquiry")); const EditOrderInquiry = loadable(() => import("./OrderChangeInquiry"));
const ParkingOrderInquiry = loadable(() => import("./ParkingOrderInquiry")); const ParkingOrderInquiry = loadable(() => import("./ParkingOrderInquiry"));
const GoodsOrderInquiry = loadable(() => import("./GoodsOrderInquiry")); const GoodsOrderInquiry = loadable(() => import("./GoodsOrderInquiry"));
const ProductOrderInquiry = loadable(() => import("./ProductOrderInquiry"));
const RefundOrderInquiry = loadable(() => import("./ReturnOrderInquiry")); const RefundOrderInquiry = loadable(() => import("./ReturnOrderInquiry"));
export default { export default {
EditOrderInquiry, EditOrderInquiry,
ParkingOrderInquiry, ParkingOrderInquiry,
GoodsOrderInquiry, GoodsOrderInquiry,
RefundOrderInquiry
RefundOrderInquiry,
ProductOrderInquiry,
} }

36
src/pages/FinancialMgm/PayConf/AppConf/index.jsx

@ -75,15 +75,35 @@ function AppConfiguration(props) {
}; };
// //
const [rowData, setRowData] = useState(defRowData); const [rowData, setRowData] = useState(defRowData);
const [sessionTabList, setSessionTabList] = useSessionStorageState('appConfiguration', {
value: {
}
})
useEffect(() => {
if (sessionTabList && Object.values(sessionTabList).length > 0) {
setFormData({
...formData, ...sessionTabList
})
getData({
...sessionTabList
})
} else {
getData()
}
}, [isAjax])
useEffect(() => {
setSessionTabList({
...formData
})
}, [formData])
useEffect(() => { useEffect(() => {
getSelectList(); getSelectList();
}, []); }, []);
// 访 // 访
useEffect(() => {
getData();
}, [isAjax]);
// useEffect(() => {
// getData();
// }, [isAjax]);
// //
const getSelectList = () => { const getSelectList = () => {
@ -93,7 +113,7 @@ function AppConfiguration(props) {
var typedata = JSON.parse(JSON.stringify(res.data?.app_type_scenario_arr)) var typedata = JSON.parse(JSON.stringify(res.data?.app_type_scenario_arr))
setTypeData(typedata || []) setTypeData(typedata || [])
var typedata2 = [...res.data?.app_type_scenario_arr] var typedata2 = [...res.data?.app_type_scenario_arr]
typedata2?.map((item)=>{
typedata2?.map((item) => {
item.options = item.payment_scenario_list item.options = item.payment_scenario_list
}) })
setAppTypeData(typedata2 || []); setAppTypeData(typedata2 || []);
@ -107,14 +127,14 @@ function AppConfiguration(props) {
}; };
// //
const getData = () => {
const getData = (v) => {
let postData = { ...formData }; let postData = { ...formData };
if (!loading) { if (!loading) {
postData = { ...holdData }; postData = { ...holdData };
} }
setDefaultParams({ ...postData, ...pageInfo }); setDefaultParams({ ...postData, ...pageInfo });
setTabLoading(true); setTabLoading(true);
ajax.getAppList({ ...postData, ...pageInfo }).then(
ajax.getAppList({ ...postData, ...pageInfo, ...v }).then(
(res) => { (res) => {
if (parseInt(res?.status) === 20000) { if (parseInt(res?.status) === 20000) {
setResultData(res?.data || {}); setResultData(res?.data || {});
@ -450,7 +470,7 @@ function AppConfiguration(props) {
{({ getFieldValue }) => { {({ getFieldValue }) => {
return ( return (
<> <>
{([9, 10, 11].includes(getFieldValue("app_type"))
{([12, 13, 11].includes(getFieldValue("app_type"))
? [ ? [
{ {
type: "input", type: "input",

86
src/pages/FinancialMgm/PayConf/PayMerchantConf/index.jsx

@ -72,7 +72,7 @@ function MerchantConfiguration(props) {
// //
merchant_id: "", merchant_id: "",
//ID //ID
api_key: "",
apiKey: "",
//APIkey //APIkey
wechat_official_account: null, wechat_official_account: null,
// //
@ -80,11 +80,11 @@ function MerchantConfiguration(props) {
// //
wechat_app: null, wechat_app: null,
//APP //APP
alipay_partner: "",
merchant_id: "",
// //
alipay_private_key: "",
privateKey: "",
// //
alipay_ali_public_key: "",
publicKey: "",
// //
service_window: null, service_window: null,
// //
@ -109,15 +109,35 @@ function MerchantConfiguration(props) {
}; };
// //
const [rowData, setRowData] = useState(defRowData); const [rowData, setRowData] = useState(defRowData);
const [sessionTabList, setSessionTabList] = useSessionStorageState('merchantConfiguration', {
value: {
}
})
useEffect(() => {
if (sessionTabList && Object.values(sessionTabList).length > 0) {
setFormData({
...formData, ...sessionTabList
})
getData({
...sessionTabList
})
} else {
getData()
}
}, [isAjax])
useEffect(() => {
setSessionTabList({
...formData
})
}, [formData])
useEffect(() => { useEffect(() => {
getSelectList(); getSelectList();
}, []); }, []);
// 访 // 访
useEffect(() => {
getData();
}, [isAjax]);
// useEffect(() => {
// getData();
// }, [isAjax]);
// //
const getSelectList = () => { const getSelectList = () => {
@ -136,14 +156,14 @@ function MerchantConfiguration(props) {
}; };
// //
const getData = () => {
const getData = (v) => {
let postData = { ...formData }; let postData = { ...formData };
if (!loading) { if (!loading) {
postData = { ...holdData }; postData = { ...holdData };
} }
setDefaultParams({ ...postData, ...pageInfo }); setDefaultParams({ ...postData, ...pageInfo });
setTabLoading(true); setTabLoading(true);
ajax.getPaymentMerchantList({ ...postData, ...pageInfo }).then(
ajax.getPaymentMerchantList({ ...postData, ...pageInfo, ...v }).then(
(res) => { (res) => {
if (parseInt(res?.status) === 20000) { if (parseInt(res?.status) === 20000) {
setResultData(res?.data || {}); setResultData(res?.data || {});
@ -362,8 +382,8 @@ function MerchantConfiguration(props) {
{ {
type: "input", type: "input",
label: "APIkey", label: "APIkey",
name: "api_key",
value: rowData?.api_key,
name: "apiKey",
value: rowData?.apiKey,
required: actionState !== "view", required: actionState !== "view",
}, },
{ {
@ -388,16 +408,16 @@ function MerchantConfiguration(props) {
.concat( .concat(
mt === 1 mt === 1
? [ ? [
{
type: "select",
label: "APP",
name: "wechat_app",
value: rowData?.wechat_app_name,
options: platformToAppData?.wechat_app || [],
required: false,
allowClear: true,
},
]
{
type: "select",
label: "APP",
name: "wechat_app",
value: rowData?.wechat_app_name,
options: platformToAppData?.wechat_app || [],
required: false,
allowClear: true,
},
]
: [] : []
) )
.map((item) => ( .map((item) => (
@ -442,23 +462,23 @@ function MerchantConfiguration(props) {
}, },
{ {
type: "input", type: "input",
label: "ALIPAY_PARTNER",
name: "alipay_partner",
value: rowData?.alipay_partner,
label: "merchant_id",
name: "merchant_id",
value: rowData?.merchant_id,
required: actionState !== "view", required: actionState !== "view",
}, },
{ {
type: "input", type: "input",
label: "ALIPAY_PRIVATE_KEY",
name: "alipay_private_key",
value: rowData?.alipay_private_key,
label: "privateKey",
name: "privateKey",
value: rowData?.privateKey,
required: actionState !== "view", required: actionState !== "view",
}, },
{ {
type: "input", type: "input",
label: "ALIPAY_ALI_PUBLIC_KEY",
name: "alipay_ali_public_key",
value: rowData?.alipay_ali_public_key,
label: "publicKey",
name: "publicKey",
value: rowData?.publicKey,
required: actionState !== "view", required: actionState !== "view",
}, },
{ {
@ -500,8 +520,8 @@ function MerchantConfiguration(props) {
{ {
type: "input", type: "input",
label: "APIkey", label: "APIkey",
name: "api_key",
value: rowData?.api_key,
name: "apiKey",
value: rowData?.apiKey,
required: actionState !== "view", required: actionState !== "view",
}, },
{ {

44
src/pages/FinancialMgm/PayConf/PlatformMerchantConf/index.jsx

@ -81,15 +81,35 @@ function PlatformConfiguration(props) {
const [targetKeys, setTargetKeys] = useState([]); const [targetKeys, setTargetKeys] = useState([]);
// //
const [selectedKeys, setSelectedKeys] = useState([]); const [selectedKeys, setSelectedKeys] = useState([]);
const [sessionTabList, setSessionTabList] = useSessionStorageState('platformConfiguration', {
value: {
}
})
useEffect(() => {
if (sessionTabList && Object.values(sessionTabList).length > 0) {
setFormData({
...formData, ...sessionTabList
})
getData({
...sessionTabList
})
} else {
getData()
}
}, [isAjax])
useEffect(() => {
setSessionTabList({
...formData
})
}, [formData])
useEffect(() => { useEffect(() => {
getSelectList(); getSelectList();
}, []); }, []);
// 访 // 访
useEffect(() => {
getData();
}, [isAjax]);
// useEffect(() => {
// getData();
// }, [isAjax]);
// //
const getSelectList = () => { const getSelectList = () => {
@ -134,14 +154,14 @@ function PlatformConfiguration(props) {
}; };
// //
const getData = () => {
const getData = (v) => {
let postData = { ...formData }; let postData = { ...formData };
if (!loading) { if (!loading) {
postData = { ...holdData }; postData = { ...holdData };
} }
setDefaultParams({ ...postData, ...pageInfo }); setDefaultParams({ ...postData, ...pageInfo });
setTabLoading(true); setTabLoading(true);
ajax.getPlatformMerchantList({ ...postData, ...pageInfo }).then(
ajax.getPlatformMerchantList({ ...postData, ...pageInfo, ...v }).then(
(res) => { (res) => {
if (parseInt(res?.status) === 20000) { if (parseInt(res?.status) === 20000) {
setResultData(res?.data || {}); setResultData(res?.data || {});
@ -304,8 +324,8 @@ function PlatformConfiguration(props) {
// //
const handleAdd = () => { const handleAdd = () => {
setActionState("add"); setActionState("add");
setRowData({...defRowData, ...scenarioKeyList});
form.setFieldsValue({...defRowData, ...scenarioKeyList});
setRowData({ ...defRowData, ...scenarioKeyList });
form.setFieldsValue({ ...defRowData, ...scenarioKeyList });
setSelectedKeys([]); setSelectedKeys([]);
setTargetKeys([]); setTargetKeys([]);
setVisible(true); setVisible(true);
@ -352,12 +372,12 @@ function PlatformConfiguration(props) {
case "type": case "type":
obj[key] = val; obj[key] = val;
obj.payment_merchant_id = null; obj.payment_merchant_id = null;
form.setFieldsValue({...defRowData, ...scenarioKeyList});
form.setFieldsValue({ ...defRowData, ...scenarioKeyList });
break; break;
case "payment_merchant_id": case "payment_merchant_id":
obj[key] = val; obj[key] = val;
getPaymentScenarioList(val); getPaymentScenarioList(val);
form.setFieldsValue({...defRowData, ...scenarioKeyList});
form.setFieldsValue({ ...defRowData, ...scenarioKeyList });
break; break;
default: default:
obj[key] = val; obj[key] = val;
@ -389,7 +409,7 @@ function PlatformConfiguration(props) {
// id=>pmi // id=>pmi
const dynamicFormItem = (pmi) => { const dynamicFormItem = (pmi) => {
if(pmi) {
if (pmi) {
const scenarioArr = appInfoPaymentScenarioList?.map(item => { const scenarioArr = appInfoPaymentScenarioList?.map(item => {
return { return {
type: "checkbox", type: "checkbox",
@ -555,7 +575,7 @@ function PlatformConfiguration(props) {
shouldUpdate={(prevValues, currentValues) => shouldUpdate={(prevValues, currentValues) =>
prevValues.type !== currentValues.type || prevValues.type !== currentValues.type ||
prevValues.payment_merchant_id !== prevValues.payment_merchant_id !==
currentValues.payment_merchant_id
currentValues.payment_merchant_id
} }
> >
{({ getFieldValue }) => { {({ getFieldValue }) => {

325
src/pages/SystemMgm/SystemLog/index.scss

@ -1,5 +1,322 @@
@import "@/assets/css/mixin.scss"; @import "@/assets/css/mixin.scss";
$color-container-bg : var(--color-container-bg);
$color-user-list-bg : var(--color-user-list-bg);
$color-text : var(--color-text);
$color-primary : var(--color-primary);
$color-container-bg: var(--color-container-bg);
$color-user-list-bg: var(--color-user-list-bg);
$color-text: var(--color-text);
$color-primary: var(--color-primary);
.ant-tabs-tabpane-hidden {
display: none;
}
.ant-tabs {
margin-bottom: 16px;
.ant-tabs-nav {
margin-bottom: 0 !important;
&::before {
border-bottom: 1px solid var(--color-card-line) !important;
}
}
.ant-tabs-nav-wrap {
width: 100%;
box-sizing: content-box;
.ant-tabs-nav-list {
width: 340px;
.ant-tabs-ink-bar {
height: 3px;
background-color: #00ccff;
}
.ant-tabs-tab {
flex: 1;
width: 100%;
display: flex;
justify-content: center;
padding-bottom: 10px;
text-align: center;
cursor: pointer;
font-size: 14px !important;
font-family: MicrosoftYaHei;
text-align: center;
letter-spacing: 0.7px;
}
.ant-tabs-tab-active {
div {
color: #00ccff;
}
}
}
}
}
.ant-input::-webkit-input-placeholder {
color: var(--color-placeholder);
}
.ant-input::-moz-placeholder {
color: var(--color-placeholder);
}
.ant-input:-ms-input-placeholder {
color: var(--color-placeholder);
}
.ant-input::placeholder {
color: var(--color-placeholder);
}
.ant-select-selection-placeholder {
color: var(--color-placeholder);
}
.ant-select-disabled.ant-select-single:not(.ant-select-customize-input)
.ant-select-selector {
background: var(--color-input-disabled-bg);
color: var(--color-placeholder);
}
.ant-select-disabled .ant-select-arrow {
color: var(--color-placeholder);
}
.ant-select-disabled.ant-select:not(.ant-select-customize-input)
.ant-select-selector {
background-color: var(--color-input-disabled-bg);
color: var(--color-input-disabled-color);
cursor: not-allowed;
}
.ant-select-multiple {
.ant-select-selector {
.ant-select-selection-item {
background-color: var(--color-bg-body);
border-color: var(--color-border);
.ant-select-selection-item-remove {
color: var(--color-text);
}
}
}
}
.ant-select-arrow {
color: var(--color-text);
}
.ant-select-clear {
border-radius: 50%;
}
.ant-select-dropdown-menu {
background-color: var(--color-input-bg);
.ant-select-dropdown-menu-item {
color: var(--color-text);
&.ant-select-dropdown-menu-item-active {
color: #fff;
// background-color: var(--radio-button-bg-checked);
}
&.ant-select-dropdown-menu-item-selected {
color: #fff;
// background-color: var(--radio-button-bg-checked);
}
&:hover {
color: #fff;
// background-color: var(--radio-button-bg-checked);
}
}
}
.ant-select-selector {
background-color: var(--color-search-list-item-bg) !important;
box-shadow: none !important;
border-radius: 4px;
color: var(--color-search-list-item-value);
border-color: var(--color-search-list-item-bd) !important;
}
.ant-select-selection {
background-color: var(--color-input-bg);
box-shadow: none;
color: var(--color-text);
// border-color:var(--checkable-tag-border);
}
.ant-form-horizontal .ant-form-item-label {
label {
display: inline-block;
word-wrap: break-word;
white-space: normal;
}
}
.ant-picker {
width: 100%;
background-color: var(--color-search-list-item-bg);
border-color: var(--color-border);
}
.yisa-table {
width: 100%;
.ant-table-thead {
th {
background: var(--color-table-header-bg) !important;
}
}
.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;
}
}
}
}
.base-ltc {
display: flex;
}
.ltc-img {
margin-right: 20px;
}
.ltc-box {
width: 100%;
.ltc-box-title {
font-size: 18px;
font-weight: bolder;
width: 100%;
white-space: nowrap;
overflow: hidden;
.text {
display: inline-block;
}
.line {
display: inline-block;
border: 1px dotted #607092;
width: inherit;
margin-bottom: 6px;
}
.ltc-icon {
width: 5px;
background: #0080db;
height: 19px;
display: inline-block;
margin-right: 10px;
}
.ltc-btn {
display: inline-block;
border: 1px solid;
border-radius: 5px;
margin: 0 10px;
width: 60px;
height: 35px;
line-height: 35px;
text-align: center;
background: #409eff;
color: #fff;
font-weight: 100;
cursor: pointer;
}
.ltc-cancel {
background: #fff;
color: #000;
}
}
.ltc-box-line {
border: 1px solid #e7e7e7;
margin: 8px 0;
}
.ltc-box-in {
margin-left: 20px;
.ant-descriptions {
margin-left: 20px;
}
}
.ltc-title {
margin: auto;
width: 50%;
text-align: center;
font-size: 18px;
font-weight: 600;
}
.ltc-content {
margin: auto;
padding: 20px;
.ltc-item {
font-size: 14px;
margin: 6px 12px 6px 0;
display: inline-flex;
//width: 470px;
.new-item {
display: inline-block;
width: 120px;
height: 32px;
line-height: 32px;
background: rgba(150,161,192,0.24);
text-align: center;
}
.new-value {
display: inline-block;
width: 320px;
height: 32px;
line-height: 32px;
text-align: center;
background: #3E4557;
box-shadow: 0px 3px 8px 0px rgba(0,0,0,0.12);
}
.ltc-item-input {
display: inline-block;
width: 200px;
}
div {
width: 150px;
}
}
}
.ltc-liuc {
display: flex;
margin-left: 200px;
.ltc-item {
display: flex;
.ltc-item-name {
margin: 6px 10px 0 10px;
color: #3f94df;
}
}
.ltc-work{
text-align: center;
.ltc-tips {
border: 3px solid #000;
text-align: center;
line-height: 27px;
height: 35px;
width: 35px;
border-radius: 28px;
margin: auto;
}
}
}
}
.distable {
.ant-pagination {
justify-self: center;
}
}
.eae-modal {
.eae-modal-title {
font-size: 18px;
font-weight: bolder;
.ltc-icon {
width: 5px;
background: #0080db;
height: 19px;
display: inline-block;
margin-right: 10px;
}
}
.eae-modal-item {
display: inline-block;
font-size: 16px;
}
}
.cc-container {
overflow: auto;
}
.back-btn {
position: absolute;
right: 50px;
border: 1px solid #bdbdbd;
border-radius: 5px;
width: 60px;
height: 35px;
line-height: 30px;
text-align: center;
background: #ffffff;
color: #000;
cursor: pointer;
z-index: 9999;
}

630
src/pages/SystemMgm/SystemLog/loadable.jsx

@ -1,15 +1,625 @@
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 { 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 errorImg from "@/assets/images/layout/error.png"
// import { useLocation } from "react-router-dom";
import {
message,
Pagination,
Table,
Input,
Space,
Modal,
Button,
Select,
Tabs,
Descriptions,
Timeline
} from "antd";
import moment from "moment";
import ajax from '@/config/ajax.js'
import { TableModule } from "@/components";
import { dictionary } from "@/config/common.js";
import "./index.scss";
function SystemLog() { function SystemLog() {
return <div>SystemLog</div>
const [carId, setCarId] = useState()
//
const createCol = (label, name, type) => {
label.length == name.length ? null : console.log('参数缺失', label.length, name.length)
var arr = []
label?.map((item, index) => {
let cm = {
title: item,
dataIndex: name[index],
key: name[index],
align: "center",
}
switch (item) {
case "序号":
cm.render = (text, record, index) => index + 1
break
case "退款订单ID":
case "业务订单ID":
case "支付订单ID":
cm.render = (text) => (
<>
<a onClick={() => {
navigator.clipboard.writeText(`${text}`).then(() => { message.success("已复制到剪切板") });
}}>{text}</a>
</>
)
break
default: break
}
arr.push(cm)
})
var obj = {
title: "操作",
dataIndex: "operation",
key: "operation",
fixed: "right",
align: "center",
}
switch (type) {
case 2:
obj.render = (text, record) => (<>
<span type="primary" style={{ display: 'block', textAlign: 'center' }} onClick={() => {
setYcddData(record)
setDetailVisible(true)
}}>
<a>详情</a>
</span>
</>)
arr.push(obj)
break
default: break
}
return arr
}
//
const formSearch = [
{
name: "carId",
type: "Input",
label: "车牌号",
placeholder: "请输入车牌号",
},
{
name: "mobile",
type: "Input",
label: "会员手机号",
placeholder: "请输入会员手机号",
},
{
name: "authState",
type: "Select",
label: "认证状态",
options: [
{
label: "已认证",
value: 0,
},
{
label: "未认证",
value: 1,
},
],
},
{
name: "bingState",
type: "Select",
label: "绑定状态",
options: [
{
label: "已绑定",
value: 0,
},
{
label: "未绑定",
value: 1,
},
],
},
{
name: "timePeriod",
type: "RangePicker",
label: "时间段",
defaultValue: [moment().subtract(1, "month"), moment()],
},
];
//
const ash = [
{//1
name: "region",
type: "TreeSelect",
label: "区域",
},
{//2
name: "operator",
type: "Select",
label: "商户名称",
options: dictionary.MerchantName,
},
{//3
name: "road",
type: "Input",
label: "停车场名称",
placeholder: "请输入停车场名称",
},
{//4
name: "road_type",
type: "Select",
label: "车场类型",
options: [
{
label: "全部",
value: 0,
},
{
label: "路侧平行",
value: 1,
},
{
label: "路侧垂停",
value: 2,
},
{
label: "封闭车场",
value: 3,
},
{
label: "半封闭车场",
value: 4,
},
],
},
{//5
name: "phone",
type: "Input",
label: "手机号",
placeholder: "请输入手机号",
},
{//6
name: "type",
type: "Select",
label: "出入场类型",
placeholder: "请选择出入场类型",
defaultValue: 1,
options: [
{
label: "入场",
value: 1,
},
{
label: "出场",
value: 2,
},
],
},
{//7
name: "b",
type: "Input",
label: "商品名称",
placeholder: "请输入商品名称",
},
{//8
name: "b",
type: "Select",
label: "购买渠道",
placeholder: "请选择购买渠道",
options: [
{
label: "全部",
value: 0,
},
{
label: "线上渠道",
value: 1,
},
{
label: "后台录入",
value: 2,
},
],
},
{//9
name: "b",
type: "Select",
label: "订单状态",
placeholder: "请选择订单状态",
options: [
{
label: "全部",
value: 0,
},
{
label: "未生效",
value: 1,
},
{
label: "生效中",
value: 2,
},
{
label: "已失效",
value: 3,
},
],
},
{//10
name: "payment_channels",
type: "Select",
label: "支付渠道",
placeholder: "请选择支付渠道",
options: dictionary.PayChannel,
},
{//11
name: "payment_equipment",
type: "Select",
label: "支付设备",
placeholder: "请选择支付设备",
options: dictionary.PayDevice
},
{//12
name: "pay_type",
type: "Select",
label: "支付方式",
placeholder: "请选择支付方式",
options: dictionary.PaydMethod,
},
{//13
name: "timePeriod",
type: "RangePicker",
label: "时间段",
defaultValue: [moment().startOf("day"), moment()],
},
{//14
name: "b",
type: "Select",
label: "退款方式",
placeholder: "请选择退款方式",
options: dictionary.PaydMethod,
},
{//15
name: "b",
type: "Input",
label: "渠道流水号",
placeholder: "请输入渠道流水号",
},
{//16
name: "timePeriod",
type: "RangePicker",
label: "时间段",
defaultTitle: ['支付时间', '至']
// defaultValue: [moment().startOf("day"), moment()],
},
{//17
name: "timePeriod",
type: "RangePicker",
label: "时间段",
defaultTitle: ['订购时间', '至']
// defaultValue: [moment().startOf("day"), moment()],
},
{//18
name: "timePeriod",
type: "RangePicker",
label: "时间段",
defaultTitle: ['预约到场时间', '至']
// defaultValue: [moment().startOf("day"), moment()],
},
{//19
name: "plate",
type: "Input",
label: "车牌号",
placeholder: "请输入车牌号",
},
{//20
name: "order_id",
type: "Input",
label: "支付订单ID",
placeholder: "请输入支付订单ID",
},
{//21
name: "berth_id",
type: "Input",
label: "泊位号",
placeholder: "请输入泊位号",
},
{//22
name: "t",
type: "Select",
label: "所属商户",
placeholder: "请选择所属商户",
options: dictionary.MerchantName,
},
{//23
name: "t",
type: "Input",
label: "预付订单ID",
placeholder: "请输入订单ID",
},
{//24
name: "t",
type: "Input",
label: "停车记录ID",
placeholder: "停车记录ID",
},
{//25
name: "dealer",
type: "Input",
label: "操作人",
placeholder: "请输入操作人",
},
{//26
name: "t",
type: "Input",
label: "停车订单ID",
placeholder: "停车订单ID",
},
{//27
name: "t",
type: "Input",
label: "欠费区间",
placeholder: "",
},
{//28
name: "timePeriod",
type: "RangePicker",
label: "时间段",
defaultTitle: ['订单修改时间', '至']
// defaultValue: [moment().startOf("day"), moment()],
},
{//29
name: "b",
type: "Select",
label: "修改原因",
placeholder: "请选择修改原因",
options: [
{
label: "全部",
value: 0,
},
{
label: "订单自动找平",
value: 1,
},
{
label: "异常订单处理",
value: 2,
},
],
},
];
const [resultData, setResultData] = useState([])
const [ycddData, setYcddData] = useState([])//
const [detailVisible, setDetailVisible] = useState(false);
const [timesVisible, setTimesVisible] = useState(false); //退
const [tkddVisible, setTkddVisible] = useState(false);
const [eaeVisible, setEaeVisible] = useState(false);//
const [bigpicVisible, setBigpicVisible] = useState(false);//
const [bigPic, setBigPic] = useState();
const [total, setTotal] = useState(0);
const [tabKey, setTabKey] = useState("1");
function changeKey(key) {
setTabKey(key);
}
//
function search(e) {
// if (!e.type) {
// e.type = 1
// }
ajax({
url: "/api/ope/car/list",
type: "post",
data: { ...e },
}).then((res) => {
let { status, data, total } = res
if (status == 20000) {
setResultData(data)
setTotal(total)
} else {
message.error(res.message)
}
})
}
//
function searchOther(e) {
var url = ''
switch (tabKey) {
case "1":
url = ""//
break
case "2":
url = ""//
break
default: break
}
// if (tabKey == '3' && e && !e?.type) {
// e.type = 1
// }
ajax({
url: url,
type: "post",
data: { ...e, carId: carId },
}).then((res) => {
let { status, data, total } = res
if (status == 20000) {
if (data.list) {
setResultData(data.list)
setTotal(data.total)
} else {
setResultData(data)
setTotal(total)
}
} else {
setResultData([])
message.error(res.message)
}
})
}
//
function renderParkRecord(params) {
return (
<div className="ltc-box">
<div className="ltc-box-title"><div className="text">停车场信息</div><div className="line"></div></div>
<div className="ltc-content">
<div className="ltc-item">
<div className="new-item">停车场名称</div><div className="new-value">{params?.road || "--"}</div>
</div>
<div className="ltc-item">
<div className="new-item">泊位号</div><div className="new-value">{params.berth_id || "--"}</div>
</div>
<div className="ltc-item">
<div className="new-item">区域</div><div className="new-value">{params.region || "--"}</div>
</div>
<div className="ltc-item">
<div className="new-item">商户</div><div className="new-value">{params.operator || "--"}</div>
</div>
<div className="ltc-item">
<div className="new-item">车场类型</div><div className="new-value">{params.road_type || "--"}</div>
</div>
</div>
<div className="ltc-box-title"><div className="text">停车信息</div><div className="line"></div></div>
<div className="ltc-content">
<div className="ltc-item">
<div className="new-item">车牌号</div><div className="new-value">{params.plate || "--"}</div>
</div>
<div className="ltc-item">
<div className="new-item">会员手机号</div><div className="new-value">{params.phone || "--"}</div>
</div>
<div className="ltc-item">
<div className="new-item">入场时间</div><div className="new-value">{params.in_time || "--"}</div>
</div>
<div className="ltc-item">
<div className="new-item">出场时间</div><div className="new-value">{params.out_time || "--"}</div>
</div>
<div className="ltc-item">
<div className="new-item">停车时长</div><div className="new-value">{params.admission_time || "--"}</div>
</div>
<div className="ltc-item">
<div className="new-item">订单金额</div><div className="new-value">{params.order_amount || "--"}</div>
</div>
<div className="ltc-item">
<div className="new-item">停车卡折扣</div><div className="new-value">{params.parking_card_discount || "--"}</div>
</div>
<div className="ltc-item">
<div className="new-item">车场折扣</div><div className="new-value">{params.road_discount || "--"}</div>
</div>
<div className="ltc-item">
<div className="new-item">应收金额</div><div className="new-value">{params.receivable_amount || "--"}</div>
</div>
<div className="ltc-item">
<div className="new-item">优惠券</div><div className="new-value">{params.preferential_amount || "--"}</div>
</div>
<div className="ltc-item">
<div className="new-item">优惠总计</div><div className="new-value">{params.preferential_total || "--"}</div>
</div>
<div className="ltc-item">
<div className="new-item">实付金额</div><div className="new-value">{params.actual_amount || "--"}</div>
</div>
<div className="ltc-item">
<div className="new-item">优惠退款</div><div className="new-value">{params.refund_discount || "--"}</div>
</div>
<div className="ltc-item">
<div className="new-item">实付退款</div><div className="new-value">{params.actual_refund || "--"}</div>
</div>
<div className="ltc-item">
<div className="new-item">退款总计</div><div className="new-value">{params.refund_total || "--"}</div>
</div>
<div className="ltc-item">
<div className="new-item">入场收费员</div><div className="new-value">{params.in_person || "--"}</div>
</div>
<div className="ltc-item">
<div className="new-item">出场收费员</div><div className="new-value">{params.out_person || "--"}</div>
</div>
</div>
</div>
);
}
//
function renderTable(columns, arr, dataSource) {
return (
<TableModule
columns={columns}
tableData={dataSource}
formSearch={arr}
total={total}
search={searchOther}
/>
);
}
useEffect(() => {
searchOther()
}, [tabKey])
return (
<>
{renderTable(
createCol(['车牌号', '车牌颜色', '手机号', '商品名称', '实付金额', '支付渠道', '支付设备', '购买渠道', '支付时间', '订单状态', '渠道流水号'],
['merchantName', '', 'area', '', 'sectionName', '', 'licensePlateNumber', 'entryTime', 'exitTime', '', 'arrearsAmount'], 1),
[ash[12]],
resultData
)}
<Modal
open={bigpicVisible}
width={1600}
title={'图片展示'}
className="eae-modal"
onCancel={() => {
setBigpicVisible(false);
}}
footer={false}
>
<div>
<div className="eae-modal-item">
<img src={bigPic} width={1550} />
</div>
</div>
</Modal>
<Modal
open={tkddVisible}
width={1500}
title={'订单详情'}
onCancel={() => {
setTkddVisible(false);
}}
footer={[
<Button key="back" onClick={() => {
setTkddVisible(false);
}}>
关闭窗口
</Button>]}
>
</Modal>
<Modal
open={eaeVisible}
width={1600}
title={'证据图像'}
className="eae-modal"
onCancel={() => {
setEaeVisible(false);
}}
footer={false}
>
<div>
<div className="eae-modal-title"><div className="ltc-icon"></div>入场图片</div>
<div className="eae-modal-item">
<div>车辆照片</div>
<img src={ycddData.in_veh_pic} width={750} />
</div>
<div className="eae-modal-item">
<div>车牌照片</div>
<img src={ycddData.in_plate_pic} width={750} />
</div>
</div>
</Modal>
</>
);
} }
export default SystemLog; export default SystemLog;

12
src/router/router.config.js

@ -974,6 +974,12 @@ let routes = [
component: pages.ParkingOrderInquiry, component: pages.ParkingOrderInquiry,
}, },
{ {
path: "/financialMgm/productOrderInquiry",
text: "商品订单查询",
name: "productOrderInquiry",
component: pages.ProductOrderInquiry,
},
{
path: "/financialMgm/refundOrderInquiry", path: "/financialMgm/refundOrderInquiry",
text: "退款订单查询", text: "退款订单查询",
name: "refundOrderInquiry", name: "refundOrderInquiry",
@ -1005,6 +1011,12 @@ let routes = [
component: pages.RoleMgm, component: pages.RoleMgm,
}, },
{ {
path: "/systemMgm/systemLog",
text: "系统日志",
name: "systemLog",
component: pages.SystemLog,
},
{
path: "/systemMgm/businessConf", path: "/systemMgm/businessConf",
text: "业务配置", text: "业务配置",
name: "businessConf", name: "businessConf",

Loading…
Cancel
Save