Browse Source

fix():修改bug

tags/PMS_Frontend_v1.0.6-develop
xingjx 1 year ago
parent
commit
bed7d62000
  1. 8
      src/components/TableModule/index.jsx
  2. 2
      src/pages/DataAnalysisPrediction/ParkingBusinessAly/ParkBerthAly/loadable.jsx
  3. 26
      src/pages/DataAnalysisPrediction/ParkingBusinessAly/ParkTurnoverAly/loadable.jsx
  4. 7
      src/pages/DataAnalysisPrediction/ParkingBusinessAly/ParkingAlyPeriod/loadable.jsx
  5. 2
      src/pages/DataAnalysisPrediction/ParkingBusinessAly/echarts.config.js
  6. 45
      src/pages/FinancialMgm/OrderInquiry/ProductOrderInquiry/index.jsx
  7. 1
      src/pages/FinancialMgm/PayConf/PlatformMerchantConf/index.jsx
  8. 21
      src/pages/OperationCenter/CarMgm/CarInfo/loadable.jsx
  9. 1
      src/pages/OutRoadMgm/OutDeviceMgm/OutNvrMgm/loadable.jsx
  10. 2
      src/pages/OutRoadMgm/OutSegmentMgm/ChargeRulesMgm/Detail.jsx
  11. 2
      src/pages/OutRoadMgm/OutSegmentMgm/ChargeRulesMgm/TimePart.jsx
  12. 3
      src/pages/OutRoadMgm/OutSegmentMgm/OutSegment/AddParking.jsx
  13. 20
      src/pages/OutRoadMgm/OutSegmentMgm/OutSegment/ConfigParking/CarMgm/BlacklistManagement.jsx
  14. 22
      src/pages/OutRoadMgm/OutSegmentMgm/OutSegment/ConfigParking/CarMgm/CarManagement.jsx
  15. 7
      src/pages/OutRoadMgm/OutSegmentMgm/OutSegment/index.scss
  16. 58
      src/pages/OutRoadMgm/OutSegmentMgm/OutSegment/loadable.jsx
  17. 9
      src/services/DataAnalysisPrediction/ParkingBusinessAly/index.js

8
src/components/TableModule/index.jsx

@ -186,10 +186,10 @@ const TableModule = forwardRef((props, ref) => {
if (mandatory) {
let cna = Object.values(searchForm.getFieldsValue([mandatory]))
//console.log(mandatory,cna[0],searchForm.getFieldsValue([mandatory]))
// if (!cna[0]) {
// message.error(`${mandatory_name}`)
// return
// }
if (!cna[0]) {
message.error(`查询时间范围大于半年,需填写${mandatory_name}`)
return
}
}
}
if (limitCon && limitCon(form)) return

2
src/pages/DataAnalysisPrediction/ParkingBusinessAly/ParkBerthAly/loadable.jsx

@ -389,7 +389,7 @@ function ParkBerthAly() {
<Input
placeholder="请输入停车场名称"
value={formData.road_name}
onChange={(e) => { setFormData({ ...formData.road_name }) }}
onChange={(e) => { setFormData({ ...formData,road_name:e.target.value }) }}
></Input>
</div>
<div className="form-item">

26
src/pages/DataAnalysisPrediction/ParkingBusinessAly/ParkTurnoverAly/loadable.jsx

@ -26,7 +26,7 @@ function ParkTurnoverAly() {
start_time: moment().subtract('days').startOf('day').format("YYYY-MM-DD"),
end_time: moment().endOf("day").format("YYYY-MM-DD"),
date_type: '1', //
car_parking_type:'3'
car_parking_type: '3'
};
//
const [pageInfo, setPageInfo] = useState({
@ -206,12 +206,15 @@ function ParkTurnoverAly() {
};
//
const getLineOption = (data) => {
if (!data || data.length <= 0) return
if (!data || data.length <= 0) {
setLineData({})
return
}
//
data.sort((a, b) => {
return new Date(a.date) - new Date(b.date);
});
const areaNames = data[0].name ? [...new Set(data.map((item) => item.name))] : ['入场次数','出场次数'];
const areaNames = data[0].name ? [...new Set(data.map((item) => item.name))] : ['入场次数', '出场次数'];
//
const dates = [...new Set(data.map((item) => item.date))].sort(
(a, b) => a.date - b.date
@ -219,9 +222,9 @@ function ParkTurnoverAly() {
//
const seriesData = areaNames.map((areaName, index) => {
let newsave = ''
if (index==0) {
if (index == 0) {
newsave = data.map((item) => { return item.in_num })
}else{
} else {
newsave = data.map((item) => { return item.out_num })
}
//
@ -309,9 +312,9 @@ function ParkTurnoverAly() {
//
const handleExport = () => {
if (tableData.list.area_list?.length > 0) {
if (resultData.length > 0) {
let { pn, page_size, ...params } = defaultParams;
ajax.getParkingAlyDurationParkingExp(defaultParams).then(
ajax.getparkTurnoverAlyExp(defaultParams).then(
(res) => {
if (res) {
window.open(res.data.export_url)
@ -442,7 +445,7 @@ function ParkTurnoverAly() {
}
/>
</div> */}
<div className="yisa-search">
<div className="yisa-search">
<label>日期
<div className="daf">
<Select
@ -569,6 +572,7 @@ function ParkTurnoverAly() {
<div className="paid-result usage-result">
<div className="result">
<div className="result-box">
<div className="export-btn" onClick={handleExport}>导出</div>
<div className="result-box-title">进出场趋势</div>
<Tooltip
placement="topLeft"
@ -582,10 +586,10 @@ function ParkTurnoverAly() {
/>
</div>
<div className="result-box">
<div className="result-box-title">泊位利用率变化趋势</div>
<div className="result-box-title">日均泊位周转趋势</div>
<Tooltip
placement="topLeft"
title={<span>展示统计时间段内的泊位利用率的趋势变化情况</span>}
title={<span>展示统计时问段内的泊位周转次数变化趋势泊位周转次数=统计时间段内的停车记录数/(统计天数*总泊位数)</span>}
>
<i>?</i>
</Tooltip>
@ -597,7 +601,7 @@ function ParkTurnoverAly() {
<div className="result-box">
<Table
columns={columns}
dataSource={resultData||[]}
dataSource={resultData || []}
bordered
rowKey={"date"}
size="middle"

7
src/pages/DataAnalysisPrediction/ParkingBusinessAly/ParkingAlyPeriod/loadable.jsx

@ -126,7 +126,7 @@ function ParkingAlyPeriod() {
};
// 线
const getRevenueOption = (data) => {
const areaNames = data[0].name ? [...new Set(data.map((item) => item.name))] : ['入场车次', '出场车次'];
const areaNames = data[0].name ? [...new Set(data.map((item) => item.name))] : [ '出场车次','入场车次'];
//
const dates = [...new Set(data.map((item) => item.hour))].sort(
(a, b) => a.hour - b.hour
@ -172,6 +172,9 @@ function ParkingAlyPeriod() {
// 线
const getParkOption = (data) => {
let areaNames = data[0].charge_type_name ? [...new Set(data.map((item) => item.charge_type_name))] : [''];
// areaNames = [...new Set(areaNames.map((item) => item.hour))].sort(
// (a, b) => a.date - b.hour
// );
//
let dates = [...new Set(data.map((item) => item.hour))].sort(
(a, b) => a.hour - b.hour
@ -217,7 +220,7 @@ function ParkingAlyPeriod() {
};
// 线 hour
const getParkOptionHour = (data) => {
let areaNames = data[0].date ? [...new Set(data.map((item) => item.date))] : [''];
let areaNames = data[0].date ? [...new Set(data.map((item) => item.date))].sort() : [''];
//
let dates = [...new Set(data.map((item) => item.hour))].sort(
(a, b) => a.hour - b.hour

2
src/pages/DataAnalysisPrediction/ParkingBusinessAly/echarts.config.js

@ -42,7 +42,7 @@ const lineChartOption = (areaNames, xAxisData, yAxisName, seriesData, reName) =>
// interval: 10,
// splitNumber: 6, //设置坐标轴的分割段数
axisLabel: {
//formatter: "{value}元",
formatter: yAxisName == "饱和度" || yAxisName == "泊位占用率" ? "{value}%" : null,
color: "#bbb",
},
splitLine: {

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

@ -198,13 +198,13 @@ function ProductOrderInquiry() {
},
{//7
name: "b",
name: "goods_name",
type: "Input",
label: "商品名称",
placeholder: "请输入商品名称",
},
{//8
name: "b",
name: "buy_channel",
type: "Select",
label: "购买渠道",
placeholder: "请选择购买渠道",
@ -224,7 +224,7 @@ function ProductOrderInquiry() {
],
},
{//9
name: "b",
name: "order_status",
type: "Select",
label: "订单状态",
placeholder: "请选择订单状态",
@ -248,14 +248,14 @@ function ProductOrderInquiry() {
],
},
{//10
name: "payment_channels",
name: "pay_channel",
type: "Select",
label: "支付渠道",
placeholder: "请选择支付渠道",
options: dictionary.PayChannel,
},
{//11
name: "payment_equipment",
name: "pay_device",
type: "Select",
label: "支付设备",
placeholder: "请选择支付设备",
@ -282,7 +282,7 @@ function ProductOrderInquiry() {
options: dictionary.PaydMethod,
},
{//15
name: "b",
name: "channel_serial_number",
type: "Input",
label: "渠道流水号",
placeholder: "请输入渠道流水号",
@ -309,7 +309,7 @@ function ProductOrderInquiry() {
// defaultValue: [moment().startOf("day"), moment()],
},
{//19
name: "plate",
name: "plate_number",
type: "Input",
label: "车牌号",
placeholder: "请输入车牌号",
@ -438,10 +438,10 @@ function ProductOrderInquiry() {
var url = ''
switch (tabKey) {
case "1":
url = ""//
url = "/api/fin/order_search/parking_card_order_list"//
break
case "2":
url = ""//
url = "/api/fin/order_search/staggered_parking_order_list"//
break
default: break
}
@ -557,13 +557,30 @@ function ProductOrderInquiry() {
);
}
//
function renderTable(columns, arr, dataSource) {
function renderTable(columns, arr, dataSource, type) {
let initFormData = type == "停车卡" ? {
pn:1,
page_size:15,
plate_number: '1',
phone: '',
goods_name: '',
buy_channel: '',
pay_channel: '',
order_status: '',
pay_device: '',
start_time: '',
end_time: '',
channel_serial_number: '',
export: '0',
export_file_name: ''
} : {}
return (
<TableModule
columns={columns}
tableData={dataSource}
formSearch={arr}
total={total}
initFormData={initFormData}
search={searchOther}
/>
);
@ -700,7 +717,7 @@ function ProductOrderInquiry() {
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
resultData, '停车卡'
) : null}
</Tabs.TabPane>
<Tabs.TabPane tab="错峰卡订单" key="2">
@ -708,12 +725,12 @@ function ProductOrderInquiry() {
createCol(['序号', '停车场名称', '车牌号', '手机号', '订单金额', '支付方式', '渠道流水号', '同步MS状态', '订购时间'],
['index', '', 'area', '', 'sectionName', '', 'licensePlateNumber', 'entryTime', 'exitTime', '', 'arrearsAmount'], 2),
[ash[2], ash[4], ash[18], ash[11], ash[16], ash[14]],
resultData
resultData, '错峰卡'
) : null}
</Tabs.TabPane>
{/* <Tabs.TabPane tab="" key="3">
<Tabs.TabPane tab="预约订单" key="3">
</Tabs.TabPane> */}
</Tabs.TabPane>
</Tabs>
<Modal
open={bigpicVisible}

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

@ -56,6 +56,7 @@ function PlatformConfiguration(props) {
total: 0,
list: [],
});
const [visible, setVisible] = useState(false);
const [actionState, setActionState] = useState(null); //
const [paymentMerchantList, setPaymentMerchantList] = useState([]); //

21
src/pages/OperationCenter/CarMgm/CarInfo/loadable.jsx

@ -1097,11 +1097,11 @@ function CarInfo() {
//
const limitCon = (e) => {
// if (e && moment(e.end_time) - moment(e.start_time) > 90 * 24 * 1000 * 3600) {
// console.log(typeof e.order_mount_down, e.order_mount_up, e.order_mount_down > e.order_mount_up)
// message.error('90')
// return 1
// }
if (e && moment(e.end_time) - moment(e.start_time) > 90 * 24 * 1000 * 3600) {
//console.log(typeof e.order_mount_down, e.order_mount_up, e.order_mount_down > e.order_mount_up)
message.error('查询范围不超过90天!')
return 1
}
}
return (
<>
@ -1113,9 +1113,14 @@ function CarInfo() {
total={total}
search={search}
limitCon={limitCon}
mandatory={'plate'}
mandatory_name={'车牌号'}
//isQuickMenu={[{}]}
// mandatory={'plate'}
// mandatory_name={''}
isQuickMenu={[{ text: '昨日', value: 1 },
{ text: '今日', value: 0 },
{ text: '近三日', value: 2 },
{ text: '近一周', value: 6 },
{ text: '近一月', value: 29 },
{ text: '近三月', value: 89 },]}
rowKey={(record) => record.carId}
pageName={'carInfo'}
/> :

1
src/pages/OutRoadMgm/OutDeviceMgm/OutNvrMgm/loadable.jsx

@ -223,6 +223,7 @@ function OutNvrMgm(props) {
(res) => {
if (res.status == 20000) {
message.success(res.message || "删除成功");
handleSearch()
} else {
message.error(res.message);
}

2
src/pages/OutRoadMgm/OutSegmentMgm/ChargeRulesMgm/Detail.jsx

@ -86,7 +86,7 @@ function Detail(props) {
</Descriptions>
<Divider />
{effectiveDateList &&
effectiveDateList.rules.map((item, index) => {
effectiveDateList.rules?.map((item, index) => {
console.log(item);
return <EffectiveDetail record={item} key={index} />
})

2
src/pages/OutRoadMgm/OutSegmentMgm/ChargeRulesMgm/TimePart.jsx

@ -159,7 +159,7 @@ function TimePart(props) {
<Form.Item
label="时段最高收费金额"
name="time_max_money"
rules={[{ required: true }]}
//rules={[{ required: true }]}
>
<Input />
</Form.Item>

3
src/pages/OutRoadMgm/OutSegmentMgm/OutSegment/AddParking.jsx

@ -186,6 +186,7 @@ function AddParking(props) {
if (res.status === 20000) {
message.success("添加成功");
close();
location.reload();
} else {
message.error(res.message);
}
@ -197,6 +198,7 @@ function AddParking(props) {
if (res.status === 20000) {
message.success("编辑成功");
close();
location.reload();
} else {
message.error(res.message);
}
@ -226,7 +228,6 @@ function AddParking(props) {
} else {
editOutSegmentRoad(params);
}
location.reload()
})
.catch((err) => console.error(err));
}

20
src/pages/OutRoadMgm/OutSegmentMgm/OutSegment/ConfigParking/CarMgm/BlacklistManagement.jsx

@ -263,7 +263,13 @@ function BlacklistManagement() {
</Col>
<Col span="4_8" style={{ width: "30%" }}>
<Form.Item label="状态" name="status">
<Select />
<Select
options={[
{ label: "全部", value: '0' },
{ label: "启用", value: '1' },
{ label: "禁用", value: '2' },
]}
/>
</Form.Item>
</Col>
<Col span="4_8" style={{ width: "30%" }}>
@ -311,7 +317,7 @@ function BlacklistManagement() {
/>
</main>
<Modal
title="添加黑名单"
title={editModal.status == "add" ? "添加黑名单" : "编辑黑名单"}
open={editModal.visible}
onCancel={() => {
setEditModal({ visible: false });
@ -337,7 +343,7 @@ function BlacklistManagement() {
rules={[{ required: true }]}
name="plate_color"
>
<Select disabled={editModal.status === "edit"} />
<Select disabled={editModal.status === "edit"} options={sysConfig.plateColor} />
</Form.Item>
</Col>
<Col span={12}>
@ -346,7 +352,13 @@ function BlacklistManagement() {
rules={[{ required: true }]}
name="status"
>
<Select />
<Select
options={[
{ label: "全部", value: '0' },
{ label: "启用", value: '1' },
{ label: "禁用", value: '2' },
]}
/>
</Form.Item>
</Col>
<Col span={12}>

22
src/pages/OutRoadMgm/OutSegmentMgm/OutSegment/ConfigParking/CarMgm/CarManagement.jsx

@ -14,6 +14,7 @@ import {
DatePicker,
Popover,
} from "antd";
import moment from "moment";
const { TextArea } = Input;
const { RangePicker } = DatePicker;
function CarManagement({ id }) {
@ -170,12 +171,13 @@ function CarManagement({ id }) {
editForm
.validateFields()
.then((res) => {
res = { ...res, road_id };
res = { ...res, road_id: id, effective_begin_date: moment(res.effective_date[0]).format("YYYY-MM-DD HH:mm:ss"), effective_end_date: moment(res.effective_date[1]).format("YYYY-MM-DD HH:mm:ss") };
console.log(res);
ajax.addVehicle(res).then((res) => {
if (res.status === 20000) {
message.success(res.message);
setEditModal({ visible: false });
submit(form.getFieldValue());
}
});
})
@ -236,7 +238,7 @@ function CarManagement({ id }) {
initialValues={{
group_id: '0',
effective_status: '0',
status:'0'
status: '0'
}}
>
<Row>
@ -301,7 +303,7 @@ function CarManagement({ id }) {
>
添加
</Button>
<Button type="primary" onClick={()=>{}}>批量导入</Button>
<Button type="primary" onClick={() => { }}>批量导入</Button>
</div>
</Form.Item>
</Col>
@ -328,7 +330,7 @@ function CarManagement({ id }) {
/>
</main>
<Modal
title="添加车辆"
title={editModal.status == "add" ? "添加车辆" : "编辑车辆"}
open={editModal.visible}
onCancel={() => {
setEditModal({ visible: false });
@ -354,7 +356,7 @@ function CarManagement({ id }) {
rules={[{ required: true }]}
name="plate_color"
>
<Select disabled={editModal.status === "edit"} />
<Select disabled={editModal.status === "edit"} options={sysConfig.plateColor} />
</Form.Item>
</Col>
<Col span={12}>
@ -363,7 +365,7 @@ function CarManagement({ id }) {
rules={[{ required: true }]}
name="group_id"
>
<Select disabled={editModal.status === "edit"} />
<Select disabled={editModal.status === "edit"} options={carGroup} />
</Form.Item>
</Col>
<Col span={12}>
@ -372,7 +374,13 @@ function CarManagement({ id }) {
rules={[{ required: true }]}
name="status"
>
<Select />
<Select
options={[
{ label: "全部", value: '0' },
{ label: "启用", value: '1' },
{ label: "禁用", value: '2' },
]}
/>
</Form.Item>
</Col>
<Col span={12}>

7
src/pages/OutRoadMgm/OutSegmentMgm/OutSegment/index.scss

@ -248,8 +248,13 @@ $color-primary: var(--color-primary);
color: var(--color-search-list-item-value);
}
}
.tip-title {
display: inline-block;
width: 30%;
margin-bottom: 26px;
}
.tpsinput {
width: 90%;
width: 56%;
}
.tpsinput + i {
border: 1px solid;

58
src/pages/OutRoadMgm/OutSegmentMgm/OutSegment/loadable.jsx

@ -36,13 +36,16 @@ import QRModal from "./QRModal";
function OutSegment() {
const [searchForm] = Form.useForm();
const [commentForm] = Form.useForm();
const [berthForm] = Form.useForm();
const [recordData, setRecordData] = useSetState()
const [sessionTabList, setSessionTabList] = useSessionStorageState('outSegment', {
value: ''
})
const [formData, setFormData] = useState()
const [tipData, setTipData] = useState({
count: '',
days: ''
})
const inputParams = {
maxLength: 50,
showCount: true,
@ -319,7 +322,7 @@ function OutSegment() {
}).catch(e => console.log(e))
};
useEffect(() => {
commentForm.setFieldsValue({
setTipData({
count: appraise.count,
days: appraise.register_time,
})
@ -385,14 +388,11 @@ function OutSegment() {
};
//
const configAppraise = () => {
let values = commentForm.getFieldsValue();
console.log(values)
if (values?.count?.toString().replace(/[^\d{1,}\.\d{1,}|\d{1,}]/g, '') == values.count || values?.days?.toString().replace(/[^\d{1,}\.\d{1,}|\d{1,}]/g, '') == values.days) {
ajax.commentSetting(values).then((res) => {
if (tipData?.count?.toString().replace(/[^\d{1,}\.\d{1,}|\d{1,}]/g, '') == tipData.count && tipData?.days?.toString().replace(/[^\d{1,}\.\d{1,}|\d{1,}]/g, '') == tipData.days) {
ajax.commentSetting(tipData).then((res) => {
if (res.status === 20000) {
message.success("配置成功");
setAppraiseModal({ ...appraiseModal, visible: false });
commentForm.resetFields();
}
});
} else {
@ -612,35 +612,23 @@ function OutSegment() {
onCancel={appraiseModal.close}
onOk={configAppraise}
>
<Form
form={commentForm}
colon={false}
labelCol={{ span: 8 }}
initialValues={{
count: null,
days: null,
}}
<div className="tip-title">车主历史交易次数</div>
<Input className="tpsinput" addonAfter={"次"} key="count" value={tipData.count} onChange={(e) => { setTipData({ ...tipData, count: e.target.value }) }} />
<Tooltip
placement="topLeft"
title={<span>参数默认为5次n代表正常若为0表示不限制</span>}
>
<Form.Item label="车主历史交易次数≥" name="count">
<Input className="tpsinput" addonAfter={"次"} key="count" />
<Tooltip
placement="topLeft"
title={<span>参数默认为5次n代表正常若为0表示不限制</span>}
>
<i>?</i>
</Tooltip>
</Form.Item>
<Form.Item label="车主注册时间≥" name="days">
<Input className="tpsinput" addonAfter={"天"} key="days" />
<Tooltip
placement="topLeft"
title={<span>参数默认为30天n代表正常若为0表示不限制</span>}
>
<i>?</i>
</Tooltip>
</Form.Item>
<p className="tpstips">须知:修改默认参数配置会对全局车场评分有影响点击确定立即生效请谨慎修改!</p>
</Form>
<i>?</i>
</Tooltip>
<div className="tip-title">车主注册时间</div>
<Input className="tpsinput" addonAfter={"天"} key="days" value={tipData.days} onChange={(e) => { setTipData({ ...tipData, days: e.target.value }) }} />
<Tooltip
placement="topLeft"
title={<span>参数默认为30天n代表正常若为0表示不限制</span>}
>
<i>?</i>
</Tooltip>
<p className="tpstips">须知:修改默认参数配置会对全局车场评分有影响点击确定立即生效请谨慎修改!</p>
</Modal>
<Modal
title="修改剩余泊位数"

9
src/services/DataAnalysisPrediction/ParkingBusinessAly/index.js

@ -200,6 +200,14 @@ const getparkTurnoverAlyList = (params) => {
});
};
//停车业务分析-泊位周转分析-导出
const getparkTurnoverAlyExp = (params) => {
return ajax({
url: "/api/ana/dataanalysis/hardware_export",
type: "post",
data: params,
});
};
//停车业务分析-车辆类型分析-图
const getCarTypeAlyLine = (params) => {
return ajax({
@ -274,6 +282,7 @@ export default {
getParkingLiveDataParkLine,
getparkTurnoverAlyList,
getparkTurnoverAlyExp,
getCarTypeAlyLine,
getCarTypeAlyList,

Loading…
Cancel
Save