10 changed files with 2162 additions and 122 deletions
-
55src/pages/FinancialMgm/OrderInquiry/ParkingOrderInquiry/index.jsx
-
770src/pages/FinancialMgm/OrderInquiry/ProductOrderInquiry/index.jsx
-
322src/pages/FinancialMgm/OrderInquiry/ProductOrderInquiry/index.scss
-
4src/pages/FinancialMgm/OrderInquiry/index.jsx
-
36src/pages/FinancialMgm/PayConf/AppConf/index.jsx
-
86src/pages/FinancialMgm/PayConf/PayMerchantConf/index.jsx
-
44src/pages/FinancialMgm/PayConf/PlatformMerchantConf/index.jsx
-
325src/pages/SystemMgm/SystemLog/index.scss
-
630src/pages/SystemMgm/SystemLog/loadable.jsx
-
12src/router/router.config.js
@ -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; |
@ -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; |
||||
|
} |
@ -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; |
||||
|
} |
@ -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; |
Write
Preview
Loading…
Cancel
Save
Reference in new issue