From 0c3c914876b71e8aea618d9491fe0a655ae50731 Mon Sep 17 00:00:00 2001 From: xingjx Date: Tue, 19 Dec 2023 14:35:02 +0800 Subject: [PATCH] =?UTF-8?q?fix():bug=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ParkingBusinessAly/ParkingFalseAlarms/blue.png | Bin 0 -> 5119 bytes .../ParkingFalseAlarms/green.png | Bin 0 -> 5369 bytes .../ParkingFalseAlarms/index.jsx | 6 + .../ParkingFalseAlarms/index.scss | 278 ++++++++ .../ParkingFalseAlarms/loadable.jsx | 760 +++++++++++++++++++++ .../ParkingBusinessAly/ParkingFalseAlarms/red.png | Bin 0 -> 5173 bytes .../ParkingBusinessAly/index.jsx | 5 +- .../OperationCenter/UserMgm/UserTag/index.scss | 304 ++++++--- .../OperationCenter/UserMgm/UserTag/loadable.jsx | 231 ++++--- .../OutSegmentMgm/OutSegment/AddParking.jsx | 8 +- .../ConfigParking/BusinessParameterConfig.jsx | 6 +- .../OutSegmentMgm/OutSegment/loadable.jsx | 1 + src/router/router.config.js | 6 + src/services/OperationCenter/UserMgm/index.js | 10 +- 14 files changed, 1405 insertions(+), 210 deletions(-) create mode 100644 src/pages/DataAnalysisPrediction/ParkingBusinessAly/ParkingFalseAlarms/blue.png create mode 100644 src/pages/DataAnalysisPrediction/ParkingBusinessAly/ParkingFalseAlarms/green.png create mode 100644 src/pages/DataAnalysisPrediction/ParkingBusinessAly/ParkingFalseAlarms/index.jsx create mode 100644 src/pages/DataAnalysisPrediction/ParkingBusinessAly/ParkingFalseAlarms/index.scss create mode 100644 src/pages/DataAnalysisPrediction/ParkingBusinessAly/ParkingFalseAlarms/loadable.jsx create mode 100644 src/pages/DataAnalysisPrediction/ParkingBusinessAly/ParkingFalseAlarms/red.png diff --git a/src/pages/DataAnalysisPrediction/ParkingBusinessAly/ParkingFalseAlarms/blue.png b/src/pages/DataAnalysisPrediction/ParkingBusinessAly/ParkingFalseAlarms/blue.png new file mode 100644 index 0000000000000000000000000000000000000000..e4e532569cbac65e84029514bddbe61971103e05 GIT binary patch literal 5119 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 import("./loadable")) +export default (pros) => } /> \ No newline at end of file diff --git a/src/pages/DataAnalysisPrediction/ParkingBusinessAly/ParkingFalseAlarms/index.scss b/src/pages/DataAnalysisPrediction/ParkingBusinessAly/ParkingFalseAlarms/index.scss new file mode 100644 index 0000000..ab2d899 --- /dev/null +++ b/src/pages/DataAnalysisPrediction/ParkingBusinessAly/ParkingFalseAlarms/index.scss @@ -0,0 +1,278 @@ +@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); + +.edit-order-inquiry { + display: flex; + padding-top: 10px; + width: 100%; + height: 100%; + overflow-y: auto; + @include scrollBar(var(--color-user-list-bg), #3B97FF); + + .paid-search { + display: block; + width: 375px; + padding: 10px 10px 20px 20px; + + .title { + width: 100%; + font-size: 16px; + font-family: Microsoft YaHei, Microsoft YaHei-Bold; + font-weight: 700; + text-align: left; + color: var(--color-text); + margin-bottom: 20px; + } + + .form-Wrap { + height: calc(100% - 45px); + overflow-y: auto; + scrollbar-width: none; + -ms-overflow-style: none; + + &::-webkit-scrollbar { + display: none; + } + } + + .ant-select-selector, + .ant-picker, + .ant-input { + background-color: var(--color-search-list-item-bg) !important; + box-shadow: none !important; + color: var(--color-search-list-item-value); + border-color: var(--color-search-list-item-bd) !important; + } + + .yisa-search { + width: 100%; + display: flex; + align-items: center; + margin-bottom: 24px; + + label { + color: var(--color-search-list-item-text); + flex: 0 0 27%; + max-width: 27%; + text-align: right; + padding-right: 8px; + .daf { + display: inline-block; + } + } + + .form-con { + flex: 1; + width: 220px; + } + } + + .form-btn { + display: flex; + flex-flow: row nowrap; + justify-content: space-between; + margin: 40px 0px 0px; + padding: 0 3px; + + .ant-btn+.ant-btn { + margin-left: 10px; + } + + .ant-btn span { + font-size: 16px; + font-family: Microsoft YaHei, Microsoft YaHei-Regular; + font-weight: 400; + text-align: center; + color: #ffffff; + } + + .reset { + width: 90px; + height: 36px; + background: var(--button-default-bg); + } + + .submit { + width: calc(100% - 100px); + height: 36px; + } + } + } + + .ant-btn+.ant-btn { + margin-left: 10px; + } + + .green { + background-color: #67c23a; + border-color: #67c23a; + } + .period-result { + overflow: auto; + } + .paid-result { + width: calc(100% - 375px); + padding-bottom: 15px; + padding: 20px; + background: var(--color-user-list-bg); + border-top-left-radius: 20px; + box-shadow: 0px 3px 8px 0px rgba(0, 0, 0, 0.08); + + .result { + @include flex-columns; + .result-box { + color: #ffffff; + background: #3e4557; + border-radius: 4px; + margin-bottom: 20px; + .result-box-title { + height: 21px; + font-size: 16px; + font-family: Microsoft YaHei, Microsoft YaHei-Bold; + font-weight: 700; + text-align: left; + margin: 18px 0 18px 18px; + display: inline-block; + + } + i { + border: 1px solid; + border-radius: 22px; + display: inline-block; + text-align: center; + font-size: 12px; + width: 22px; + cursor: pointer; + } + .bhd-select { + float: right; + margin: 12px 28px; + } + .ant-table .ant-table-thead tr th { + background: #3e4557; + } + } + .row-head { + height: 32px; + display: flex; + align-items: center; + justify-content: space-between; + margin-bottom: 13px; + + .number-wrapper { + display: inline-flex; + align-items: center; + font-size: 14px; + + .letter { + color: var(--color-text); + font-size: 14px; + } + + .total-number { + color: var(--color-primary); + font-weight: bold; + margin: 0 4px; + font-size: 14px; + } + } + } + + .cc-result-flow { + width: 100%; + height: calc(100% - 34px - 13px); + + .yisa-table { + width: 100%; + height: calc(100% - 32px - 15px); + overflow-y: auto !important; + @include scrollBar(var(--color-user-list-bg), #3B97FF); + + .ant-table-thead { + th { + background: #616b83 !important; + } + } + + .ant-table-tbody { + td { + background: #3E4557 !important; + border-bottom-color: var(--color-table-border-bottom-color); + } + + tr:nth-child(even) { + td { + background: #3E4557 !important; + } + } + } + } + } + } + + } + +} + +.modal-pay-configuration { + + .submitBtn { + text-align: center; + margin: 20px 0 0; + + .ant-btn { + width: 80px; + height: 35px; + border: none; + border-radius: 4px; + + span { + color: #ffffff; + } + } + + .submit { + background: #409eff; + } + + .cancel { + background: var(--button-default-bg); + margin-left: 20px; + } + } +} + +.edit-order-inquiry { + /*定义滚动条高宽及背景 + 高宽分别对应横竖滚动条的尺寸*/ + ::-webkit-scrollbar { + width: 6px; + height: 16px; + background-color: #5c5c5c; +} + +/*定义滚动条轨道 + 内阴影+圆角*/ +::-webkit-scrollbar-track { + -webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.3); + border-radius: 10px; + background-color: #9da2ab; +} + +/*定义滑块 + 内阴影+圆角*/ +::-webkit-scrollbar-thumb { + border-radius: 10px; + -webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, .3); + background-color: #3b97ff; +} +} +.no-data-box { + text-align: center; + height: 100px; + line-height: 100px; +} \ No newline at end of file diff --git a/src/pages/DataAnalysisPrediction/ParkingBusinessAly/ParkingFalseAlarms/loadable.jsx b/src/pages/DataAnalysisPrediction/ParkingBusinessAly/ParkingFalseAlarms/loadable.jsx new file mode 100644 index 0000000..b91713b --- /dev/null +++ b/src/pages/DataAnalysisPrediction/ParkingBusinessAly/ParkingFalseAlarms/loadable.jsx @@ -0,0 +1,760 @@ +import React, { useState, useEffect } from "react"; +import { ResultFlowResult } from "@/components"; +import { Select, Input, Button, Table, message, Pagination, DatePicker, Modal, Cascader, Tooltip } from "antd"; +import { Icon, ResultFlow } from "@/components" +import { useSessionStorageState } from "ahooks"; +import { lineChartOption, ringChartOption } from "../echarts.config"; +import moment from "moment"; +import ReactEcharts from "echarts-for-react"; +import "./index.scss"; +import ajax from "@/services"; +//误报情况分析 +function ParkingFalseAlarms() { + // session缓存 + const [defaultParams, setDefaultParams] = useSessionStorageState( + "formData_parkingAlyPeriod", + { defaultValue: null } + ); + //区域的下拉数据 + const [areaList, setAreaList] = useState([]); + // 默认数据 + const defaultData = { + start_time: moment().subtract('days').startOf('day').format("YYYY-MM-DD"), + end_time: moment().endOf("day").format("YYYY-MM-DD"), + operator_id: '0', + area_id: '0', + car_parking_type: '3', + date_type: '1', + paytype: '0' + }; + // 分页数据 + const [pageInfo, setPageInfo] = useState({ + pn: defaultParams ? defaultParams?.pn : 1, + page_size: defaultParams ? defaultParams?.page_size : 15, + }); + // 表单数据 + const [formData, setFormData] = useState({ + ...defaultData, + ...defaultParams, + }); + // 搜索提交数据-存储 + const [holdData, setHoldData] = useState(formData); + // 访问接口,isAjax改变时执行 + const [isAjax, setIsAjax] = useState(false); + // 检索按钮加载状态 + const [loading, setLoading] = useState(false); + // 表格加载状态 + const [tabLoading, setTabLoading] = useState(false); + // 表格返回数据 + const [resultData, setResultData] = useState({ + total: 0, + list: [], + }); + const [keyVal, setKeyVal] = useState() + //出入场车流量分析 + const [revenueData, setRevenueData] = useState({}); + //停车饱和度趋势分析 + const [parkData, setParkData] = useState({}); + const [hourData, setHourData] = useState({}); + const [searchSelectList, setSearchSelectList] = useState([]); //搜索下拉数据 + const [sessionTabList, setSessionTabList] = useSessionStorageState('parkingAlyPeriod', { + value: { + } + }) + useEffect(() => { + if (sessionTabList && Object.values(sessionTabList).length > 0) { + setFormData({ + ...formData, ...sessionTabList + }) + getCheck({ + ...sessionTabList + }) + } else { + getCheck() + } + }, [isAjax]) + useEffect(() => { + setSessionTabList({ + ...formData + }) + }, [formData]) + useEffect(() => { + getSelectList(); + }, []); + + // 访问接口,获取表格 + // useEffect(() => { + // getData(); + // }, [isAjax]); + //时间状态切换 + const TimeChange = () => { + let e = formData.date_type; + let str = "date"; + let mat = "YYYY-MM-DD"; + if (e == 4) { + str = "year"; + mat = "YYYY"; + } else if (e == 3) { + str = "month"; + mat = "YYYY-MM"; + } else if (e == 2) { + str = "week"; + mat = "YYYY-MM-DD"; + } + return { str, mat }; + }; + //切换时间变化 + const SetTimeNow = (e) => { + let start = ""; + let end = ""; + if (e == 4) { + start = moment().format("YYYY"); + end = moment().format("YYYY"); + } else if (e == 3) { + start = moment().startOf('month').format("YYYY-MM-DD"); + end = moment().endOf("month").format("YYYY-MM-DD"); + } else if (e == 2) { + start = moment().day(1).format("YYYY-MM-DD"); + end = moment().day(7).format("YYYY-MM-DD"); + } else { + start = moment().startOf("day").format("YYYY-MM-DD"); + end = moment().endOf("day").format("YYYY-MM-DD"); + } + setFormData({ + ...formData, + date_type: e, + start_time: start, + end_time: end, + }); + }; + const columns = [ + { + title: "序号", + dataIndex: "index", + key: "iindex", + align: "center", + fixed: "right", + render: (text, record, index) => index + 1, + }, + { + title: "标签名称", + dataIndex: "name", + key: "name", + align: "center", + fixed: "right", + }, + { + title: "人数(人)", + dataIndex: "nums", + key: "nums", + align: "center", + fixed: "right", + }, + { + title: "标签描述", + dataIndex: "describe", + key: "describe", + align: "center", + fixed: "right", + }, + { + title: "创建人", + dataIndex: "edit_name", + key: "edit_name", + align: "center", + fixed: "right", + }, + { + title: "操作日期", + dataIndex: "time", + key: "time", + align: "center", + fixed: "right", + }, + { + title: "操作", + dataIndex: "operation", + key: "operation", + align: "center", + fixed: "right", + render: (_, record, index) => { + return ( + + ); + }, + }, + ]; + //出入场车流量分析 折线图 + const getRevenueOption = (data) => { + if (!data || data.length <= 0) { + setRevenueData({}) + return + } + 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 + ); + // 构建数据对象 + const seriesData = areaNames.map((areaName, index) => { + // 获取数据 + const areaData = data[0].name ? data.filter((item) => item.name === areaName) : data + // 构建数据对象 + return { + name: areaNames.length > 1 ? areaName : '', + type: "line", + itemStyle: { + label: { + show: true, //开启显示 + position: 'top', //在上方显示 + color: 'white',//字体颜色 + fontSize: 10//字体大小 + }, + }, + data: dates.map((item) => { + for (const { hour, total_in_records, total_out_records } of areaData) { + if (hour === item) return index == 1 ? total_in_records : total_out_records; + } + return 0; + }), + }; + }); + // 构建X轴数据 + const xAxisData = dates.map((date) => { + return { + value: date, + align: "center", + lineStyle: { + color: "skyblue", // 设置线的颜色为天蓝色 + shadowBlur: 6, + }, + + }; + }); + let tooltip = { + formatter: (params) => { + var str = ""; + str = params[0].axisValue.match(/(\S*):/) ? params[0].axisValue.match(/(\S*):/) : params[0].axisValue + str = str[1] ? str[1] + ':59时' : str + return `
+ ${params[0].axisValue}-${str}
+ 出场次数:${params[0].data}(次)
+ 入场次数:${params[1].data}(次) +
` + } + } + setRevenueData({ ...lineChartOption(areaNames, xAxisData, "车次数(个)", seriesData), ...tooltip }); + }; + //停车饱和趋势分析分析 折线图 + const getParkOption = (data) => { + if (!data || data.length <= 0) { + setParkData({}) + return + } + 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 + ); + // 构建数据对象 + let seriesData = areaNames.map((areaName, index) => { + // 获取数据 + let areaData = data[0].charge_type_name ? data.filter((item) => item.charge_type_name === areaName) : data + // 构建数据对象 + return { + name: areaName, + type: "line", + itemStyle: { + label: { + show: true, //开启显示 + position: 'top', //在上方显示 + color: 'white',//字体颜色 + fontSize: 10//字体大小 + }, + }, + data: dates.map((item) => { + for (var { hour, occupancy_rate } of areaData) { + if (hour === item) return parseFloat(occupancy_rate); + } + return 0; + }), + }; + }); + // 构建X轴数据 + let xAxisData = dates.map((date) => { + return { + value: date, + align: "center", + lineStyle: { + color: "skyblue", // 设置线的颜色为天蓝色 + shadowBlur: 6, + }, + + }; + }); + + setParkData(lineChartOption(areaNames, xAxisData, "饱和度", seriesData, areaNames)); + }; + const randerColor = () => { + let arr = []; + this.alarmTypeLine.forEach(item => { + random(arr) + }) + return arr; + } + + const random = (arr) => { + let color = 'rgb(' + [ + Math.round(Math.random() * 255), + Math.round(Math.random() * 255), + Math.round(Math.random() * 255) + ].join(',') + ')'; + if (!arr.some(i => i == color)) { + arr.push(color) + } else { + this.random(arr) + } + } + const color = ['#5470c6', '#91cc75', '#fac858', '#ee6666', '#73c0de', '#fc8452', '#3ba272', '#9a60b4', '#ee7ccc'] + //停车饱和趋势分析分析 折线图 hour 时间对比 + const getParkOptionHour = (data) => { + console.log(data) + if (!data || data.length <= 0) { + setHourData({}) + return + } + 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 + ); + // 构建数据对象 + let seriesData = areaNames.map((areaName, index) => { + let color2 = color[Math.round(Math.random() * 10)] + // 获取数据 + let areaData = data[0].date ? data.filter((item) => item.date === areaName) : data + // 构建数据对象 + return { + name: areaName, + type: "line", + itemStyle: { + label: { + show: true, //开启显示 + position: 'top', //在上方显示 + color: 'white',//字体颜色 + fontSize: 10//字体大小 + }, + normal: { + color: color2, //改变折线点的颜色 + lineStyle: { + color: color2, + } + //改变折线颜色 + } + }, + data: dates.map((item) => { + for (var { hour, occupancy_rate } of areaData) { + if (hour === item) return parseFloat(occupancy_rate); + } + return 0; + }), + }; + }); + // 构建X轴数据 + let xAxisData = dates.map((date) => { + return { + value: date, + align: "center", + lineStyle: { + color: "skyblue", // 设置线的颜色为天蓝色 + shadowBlur: 6, + }, + + }; + }); + + setHourData({ ...lineChartOption(areaNames, xAxisData, "饱和度", seriesData) }); + }; + function getParkingIncome(data) { + ajax + .getParkingAlyPeriodLine(data) + .then((res) => { + if (res.status === 20000) { + getRevenueOption(res.data.list); + setResultData(res.data) + } + }) + .catch((err) => console.error(err)); + } + function getParkingData(data) { + setLoading(true) + setHourData({}) + ajax + .getParkingAlyPeriodParkLine(data) + .then((res) => { + if (res.status === 20000) { + getParkOption(res.data.list?.area_list); + setKeyVal(res.data.list?.hour_list.length) + //setHourData({}) + getParkOptionHour(res.data.list?.hour_list); + setLoading(false) + } + }) + .catch((err) => console.error(err)); + } + // 获取下拉数据 + const getSelectList = () => { + ajax.getOperator().then((e) => { + setSearchSelectList([ + ...searchSelectList, + ...e.data + ]) + }) + }; + + + // 携带参数处理 + const getCheck = (v) => { + let postData = { ...formData }; + if (!loading) { + postData = { ...holdData }; + } + setDefaultParams({ ...postData, ...pageInfo }); + if (moment(formData.end_time) - moment(formData.start_time) > 1000 * 31 * 24 * 3600) { + message.error("时间范围限制为31天!") + setLoading(false); + setTabLoading(false); + return + } + setLoading(false); + setTabLoading(false); + let params = { ...postData, ...v, ...pageInfo } + //请求接口 + getParkingIncome(params) + getParkingData(params) + }; + // 检索数据 + const handleSearch = () => { + setLoading(true); + setPageInfo({ ...pageInfo, ...{ pn: 1 } }); + setHoldData(formData); + setIsAjax(!isAjax); + }; + + // 导出 + const handleExport = () => { + if (tableData.list.area_list?.length > 0) { + let { pn, page_size, ...params } = defaultParams; + ajax.getParkingAlyDurationParkingExp(defaultParams).then( + (res) => { + if (res) { + window.open(res.data.export_url) + } else { + message.error(res?.message); + } + }, + (err) => { + console.log(err); + } + ); + } else { + message.error("暂无数据"); + } + }; + // useEffect(() => { + // getParkingIncome(); + // }, []); + //区域下拉框数据 + useEffect(() => { + ajax + .getAreaTree() + .then((res) => { + if (res.status === 20000) { + setAreaList(res.data); + } + }) + .catch((err) => { + console.error(err); + }); + }, []); + return ( + <> +
+
+
查询条件
+
+
+ + + setFormData({ ...formData, device_name: e.target.value }) + } + /> +
+
+ + + setFormData({ ...formData, device_code: e.target.value }) + } + /> +
+
+ + + setFormData({ ...formData, road_name: e.target.value }) + } + /> +
+
+ + SetTimeNow(e)} + /> +
*/} + + { + if (TimeChange().str == "week") { + setFormData({ + ...formData, + start_time: date + ? moment(date).day(1).format("YYYY-MM-DD") + : null, + }); + } else if (TimeChange().str == "day") { + if (date > moment(formData.end_time)) { + setFormData({ + ...formData, + end_time: dateString, + start_time: formData.end_time, + }); + } else { + setFormData({ + ...formData, + start_time: dateString, + }); + } + } else if (TimeChange().str == "month") { + setFormData({ ...formData, start_time: moment(date).format("YYYY-MM-DD"), end_time: moment(date).endOf("month").format("YYYY-MM-DD") }); + } else { + setFormData({ ...formData, start_time: dateString }); + } + }} + disabledDate={(current) => current > moment(formData.end_time)} + /> + +
+
+ + { + if (TimeChange().str == "week") { + setFormData({ + ...formData, + end_time: date + ? moment(date).day(7).format("YYYY-MM-DD") + : null, + }); + } else if (TimeChange().str == "day") { + if (date < moment(formData.start_time)) { + setFormData({ + ...formData, + start_time: dateString, + end_time: formData.start_time, + }); + } else { + setFormData({ + ...formData, + end_time: dateString, + }); + } + } else if (TimeChange().str == "month") { + setFormData({ ...formData, start_time: moment(date).startOf('month').format("YYYY-MM-DD"), end_time: moment(date).format("YYYY-MM-DD") }); + } else { + setFormData({ ...formData, end_time: dateString }); + } + }} + disabledDate={(current) => + current < moment(formData.start_time) + } + /> +
+ +
+ + +
+
+
+
+
+
+
误报情况结果详情
+ +
+ + + {/*
+ `共 ${total} 条`} + total={detailTotal} + current={pageData.pn} + pageSize={pageData.length} + pageSizeOptions={dictionary?.pageSizeOptions} + onChange={onShowSizeChange} + onShowSizeChange={onShowSizeChange} + /> +
*/} + + +
+
误报情况分析
+
+
+
+
+
停车高峰时段
+
{resultData.peak_hours || "--"}
+
+
+
+
+
+
入场压力时段
+
{resultData.entry_pressure_hours || "--"}
+
+
+
+
+
+
出场压力时段
+
{resultData.exit_pressure_hours || "--"}
+
+
+
+ {hourData.series ? + : +
{loading ? "加载中" : "暂无数据"}
+ } + +
+ + + + + ); +} + +export default ParkingFalseAlarms; \ No newline at end of file diff --git a/src/pages/DataAnalysisPrediction/ParkingBusinessAly/ParkingFalseAlarms/red.png b/src/pages/DataAnalysisPrediction/ParkingBusinessAly/ParkingFalseAlarms/red.png new file mode 100644 index 0000000000000000000000000000000000000000..c0eccc55782fedd052c1d3d2c400cc69a794e641 GIT binary patch literal 5173 zcmX|FcTf{+-=!!41pppWtl9)XN@ku)?MTRNI*kNlo(e}0 zy!Zu1bSvtIl(Oml#Fw!?J&P44i^glMKt!eZqC?-V#&d^%=q@t1I3&?r+B#*+%8Xv) zZw1xzRX3{(cZsK_?!NrGVSlwv@mrwT{5x2_?5Eg<*`h+-)5L=XWMC#}B4U60PY?2| z0_5Xt(*+sa^Hp3U4_Rz;>SX#%-}hO`qW=NuFu2X(;7_S#BPrl$`Nuor@+QIvHcGJ> z+vcX_T}V(#;|F%Pui@N%9{*FAqI~r8jwOG$Z^q{;x;RL4GdW;+{0wSt*>v<&J==Gg zU3H+(tlazpeslZ5BVlN!YSqUq^s@lShPGan5d zbqTZ8)ZE@LUWr61bQ(oyzFQ2@v5EdUcDAvtCgv{cBZF8K7dS z9Z=}xKR)0ZJ;910AoINr ziw{4!{#&vQo>{*`8fQwM^Q*!syY%VH`X@~#mVrX!izN!q(R;4!XEbB`ouM$7YpT5Q z0KBz%fcxE8nki;O?dG=H(R3Hr+rM_}ocH#K#lvc!-A<3qwhBhmp?Wf4fiNSuh#XXH z1|QaXTvz`dd~zdWFQM8ItDoL}-?Z+*B)$ITQ_Unu&O?EGg|}dt$~w%VL$IKua#Xs! zD$NDz>J=~?luxN;cGio}i;;+P|919V7mH8OGFTZ_TKGDChuHmkPYpT*+|tm~*0%?V zdM4D^e;sUIJS`U5u3`_r6q~MO27cX zB%GTTOMg7^Aw~_#u&hzPoLrEl#V(BwD&K*`X0V2C}|lKG|zgy zsqE5&sE?JOfdXyxsbk|Eib&XQ{n7q~U|;Fa=k*v2Sg)3SmG5=)2bDeuy?)1^Lif-Y z&)GocGmPeGEB(hfdaAs7JR#iC+to2gLjV&e)6bO4JNm}(-WR|`sF9EAfn@KH;Rg8^ z@ow{6F(p(%$T5%+r?7Fz0g1(~9CNYJ(6UWjr#)o!l9XmP$Lw#;-XaZ;`Fz6t?QS-r@y@jQ2{uJ$mB(F{HTD-}0 z&H>-})uRv~E))@Cr{awk)#402xyE1v!B-R-Tg{Ej22kKtp{}31c@R4d8qpONNQJXYbPM_0zk^)}W^5Y#>Y%lT*1Fji zMIs4#`cH1Hb|^6&2obF_EU|M=yx=fWuKJV?c5#9xMb0FcmQ9P6(*gL zext+ccgd&&iH?it)7YMPAeNpo(FbLGpgD85Q3O#H)OqY!sql+HkUZsomu|H44e`Z_ zr{1A~`?6BYxsKhc0w}HDR`Yi~bYcMF zH}4ud53kS{DC)Q28j+0;E$#K$dL-7pi*k1C^x3_no|vngiF`}kyoO~?mvmPg58=Uu zH(9%pwqxb^Ia|8^O7LNEAU&;4`qZvFsymmfw211C0(VHlBNteA6qR~Xqxqr{rIl{0 z<{u7T^%c7e=sG=9Cg%1R$Z-(oNt4eXn@*_Ta*pyH047!<`Fb`&?W6=yBGe#5vU z-Op*d#&h*>Dj>+R_Haa^i;~j4UJ;%W7;f0_IA6^DcK1Q;?6JE29$HR@c5WeP^HG}5 zrsD;v?4aZ^CBcB%Tc!8xqlZMLZs{#oHq8rS_~T6Kduii(j%Dd)!I$=E(SOlmvw0q7 zg6K*7`s{}pI+JKUVU=kb+Se`5q>%;2>&V2CyOSG_(7VXWsaQPkt&tlh&Z6y-26{=}~#-NO=#Pti!vio9&D2fBs zA30huv)f22Ga(fWr1A=c{JPV-0tfRG7jCW3g;&56gIUD9(-P?~6+sy3B*`p9S9cWs zx$LW2J!HIX7M3%VrzGv2_d{GIUVPUCPGEINH3STr_OmH+f2$XX+3`B-28wz*9q!sc!9LXecX9t52)j2ne4KVeGuW0#DZ!8igl8_{i!G~r{+wr(@`E{5I{VQu1w?kib-l(>S zuIU=;;`_uj^_Ri0j-&qBko(mP4? zXohnmOyd8W&bedaFmEm&R(jBa`k-l$IQA*X>xlb)Ty4h3DijvFC37<_PykIfyc;7d zCrRYgNTuMPtmd&E6YCLfIr2BT_~vL;3LumpCOs9!XCklL>*h8tD^U|l)+C8F=yox% zpfb=>u~@TILPoyvb2aBu)L2horW0}ZrIvv{D5x2>(lAH~fm?QjQW@&alD*o)bWCV9$xjBD43 zn4P>nSf1FK<^og*cj)$Fae7l3=+&P?6(xH2u? zSGS)OAn`J`4igT8jmB={&7kYSvnv)OfeOIN_Cwi(q=0hv+60?n(K}pds>sJ7Ya3XX z>Hf^uOA5rnO5-f@BDl96$Uhj!%2cjW&KXskwF0)MXd1{S%fw%PMQ|P<{vy1A+r_Iw z(R7 z-az-iVAOdzBJeK}Q19Ov;a>CKmu{4+&laSf{R26%MZp!1=aPX1kSH(7u3YhTpuf7t zz`t_HoNH4Ce7lWA5v9BhDFvp@Dr5IuWxo12RbwfaM{a_MDY~P2J!hJ$9kl0U;B%j0 zl$SdC!1tTrK6S0*nr4dv)1eCHd7VE_s|b>N+N1#Jnc`Jz5nTS60Kn1)nKUW0nYj)R zhcw+?+#K0%+!-=cj-M|_kiKG8q@^KSt|!~?C0MOy+wn!y++}(ihnWD9jBqv zPIVuaY$f%zCjaZ#RzC&B1|~vwC22u>J4UfP&72UH@$_)d z<%W5*2H?8;dZ8%a^=_?)wL?c5^+#a|4Qt*ex13^ZM|p%d4$` zA9Lp z^kzi)2Q<*VplWweSC($(HVi$Uzd`_Rf-NsUtD3j6;5<-6KTe1_SV)S_>xQ|wYpHw_ zP#`SIZz03)SLJr@;LIGq!av;_Ew@Kn8utZ*J*PZ8eaD$BPhI1;c{)SP^r8h}-NP@_ zF2<*B<8XU6;;&5$kcoLr`o}NhXka+OYmi*p2XKvVuGMEqfFJe`A5|pWM{#^S0j&xL zBj)R(+s*6`Ug+yS9S~iXi&fIb;w#G&<(O%1blurSKImr-HO~Z3L@8Q>2fu&FVP=n* zhkHGmvSXJ%#8@E8Wr8@WNN)H2Z zIBt0}qAF?pZH0ZWo1&-b&FU-T^wr$vaqbpv6bO`9@GVg#e(G1^p|fbhFC{&l+>fXu z#LhutT6;VUTb`-pB&uCc*m#Xu?y;@$$Lrfg?itQ_PECe9PBn`=-yM*quUUh|Y?Xl| zQhfCY4}E?VucmzPJG1F8_=qRW`GQ03d8mT=A|(D?O=<)Qs#SgYc4a;V#EPi&HM%dC zBX@4q(U#K_yIAF!wu}xDlq0i3hzz`AAbkZ+&8&c9Rh2S;L|ct5!O*n#Q%R#e1sav! zG~33OuxuFckxt%nHLVr%T=K7DRj3gQH^n3mp^fKE4hoDSuIdVaMTL)Y%2aOp8HXv0 zd+-L12tjZO>&OV>H2}$@h?Eunte$Yqk8;QJ4ZqEM9mh1jcquHiEa}H&X!4ZVjJJjI zshD#c4%U(-z`42!#mxy^I0}JpRKTGA(T~=;1P%qY;QG-nHwY@!hETZ*mo2i*r*^cc zOaJy%MQ5M^T(IycaclOs;Q#mR9dWv)w7VXL4-|wvNn(;@J?bZ|zq5B^QyTdCj8T7?NcM41Yg{+jXX*Vk?JUm|1>y%!bo*~W;+WJ1 zUc?gz&g{7Q@G=!FN<+#T}mdMv}Fu-vMy2!U*a{m%h**@slMO#4#Zsmu=Q zXB)m*w)K%~B`|=mc5bQ0ErjJ{E-eyq!`Q|M0e5rGu0Sa9P6jNMk?=Of-wd1bH-NkeD8Ro@1=s*{ zAYVSKq2Oosj86nHBBg$-vLaDhYorBYD1iDRdAbSYHeo?CP0&DcCGy5THB5+>?2CH# z5=Ah2`mrb*8@kLqZGDeIiVDZ-_rxGHLtSFMMU8FIa$!k32?+}RFtk2v%@DF9c;DA3 z7PG3DpiJ7 C-8=69 literal 0 HcmV?d00001 diff --git a/src/pages/DataAnalysisPrediction/ParkingBusinessAly/index.jsx b/src/pages/DataAnalysisPrediction/ParkingBusinessAly/index.jsx index db17aca..7f12992 100644 --- a/src/pages/DataAnalysisPrediction/ParkingBusinessAly/index.jsx +++ b/src/pages/DataAnalysisPrediction/ParkingBusinessAly/index.jsx @@ -9,7 +9,7 @@ import ParkingLiveData from "./ParkingLiveData" import ParkTurnoverAly from "./ParkTurnoverAly" import ParkUsageAly from "./ParkUsageAly" import TemporaryParkStat from "./TemporaryParkStat" - +import ParkingFalseAlarms from "./ParkingFalseAlarms" export default { CarTypeAly, NightParkStat, @@ -21,5 +21,6 @@ export default { ParkingLiveData, ParkTurnoverAly, ParkUsageAly, - TemporaryParkStat + TemporaryParkStat, + ParkingFalseAlarms } \ No newline at end of file diff --git a/src/pages/OperationCenter/UserMgm/UserTag/index.scss b/src/pages/OperationCenter/UserMgm/UserTag/index.scss index f82aea4..5b4539c 100644 --- a/src/pages/OperationCenter/UserMgm/UserTag/index.scss +++ b/src/pages/OperationCenter/UserMgm/UserTag/index.scss @@ -2,104 +2,234 @@ .user-tag-box { .push-back { - position: relative; - border: 1px solid; - border-radius: 5px; - margin: 0 10px; - margin-left: 95%; - height: 35px; - line-height: 35px; - text-align: center; - background: #ffffff; - color: #000000; - font-weight: 100; - cursor: pointer; - } - - .search-box { - width: 100%; - padding: 20px; - height: calc(100% - 10px); - background: var(--color-user-list-bg); - border-top-left-radius: 20px; - box-shadow: 0px 3px 8px 0px rgb(0 0 0 / 8%); - margin-top: 10px; - - .title { + position: relative; + border: 1px solid; + border-radius: 5px; + margin: 0 10px; + margin-left: 95%; + height: 35px; + line-height: 35px; + text-align: center; + background: #ffffff; + color: #000000; + font-weight: 100; + cursor: pointer; + } + + .search-box { + width: 100%; + padding: 20px; + height: calc(100% - 10px); + background: var(--color-user-list-bg); + border-top-left-radius: 20px; + box-shadow: 0px 3px 8px 0px rgb(0 0 0 / 8%); + margin-top: 10px; + + .title { + display: inline-block; + margin-right: 80px; + + .value { display: inline-block; - margin-right:80px; - .value { - display: inline-block; - font-weight: 800; + font-weight: 800; + } + } + + .btn-box { + display: inline-block; + + .search-btn { + margin: 0 10px; + } + } + } + + .result-box { + width: 100%; + height: 600px; + + .table-wrap { + height: calc(100% - 32px - 65px); + } + + .ant-tabs { + margin-bottom: 16px; + + .ant-tabs-nav { + margin-bottom: 0 !important; + + &::before { + border-bottom: 1px solid var(--color-card-line) !important; } } - - .btn-box { - display: inline-block; - - .search-btn { - margin: 0 10px; + + .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; + } + } } } } - - .result-box { + + .pop-card { + display: flex; + flex-direction: row; + } + } + + +} + +.user-tag-modal { + .ltc-box { + width: 100%; + + .ltc-box-title { + font-size: 18px; + font-weight: bolder; width: 100%; - height: 600px; - - .table-wrap { - height: calc(100% - 32px - 65px); + white-space: nowrap; + overflow: hidden; + + .text { + display: inline-block; } - - .ant-tabs { - margin-bottom: 16px; - - .ant-tabs-nav { - margin-bottom: 0 !important; - - &::before { - border-bottom: 1px solid var(--color-card-line) !important; - } + + .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; } - - .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; - } - } - } + + .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-item-img { + width: 540px; + height: 300px; + border: 1px solid; + background: rgb(69 77 97); + margin-right: 20px !important; - .pop-card { - display: flex; - flex-direction: row; + img { + width: 100%; + height: 100%; + object-fit: contain; + } } } -} + } +} \ No newline at end of file diff --git a/src/pages/OperationCenter/UserMgm/UserTag/loadable.jsx b/src/pages/OperationCenter/UserMgm/UserTag/loadable.jsx index 7d330b0..6789561 100644 --- a/src/pages/OperationCenter/UserMgm/UserTag/loadable.jsx +++ b/src/pages/OperationCenter/UserMgm/UserTag/loadable.jsx @@ -20,8 +20,11 @@ import "./index.scss"; function UserTag() { const [resultData, setResultData] = useState([]) const [detailData, setDetailData] = useState([]) + const [myId, setMyId] = useState([]) const [indexBy, setIndexBy] = useState() + const [indexTo, setIndexTo] = useState() const [total, setTotal] = useState(0); + const [detailTotal, setDetailTotal] = useState(0); const [tag, setTag] = useState('1'); const [loading, setLoading] = useState(false); const [visible, setVisible] = useState(false); @@ -29,12 +32,12 @@ function UserTag() { const [pageData, setPageData] = useState({ // 分页参数 pn: 1, - page_size: 15, + length: 15, }); - function onShowSizeChange(pn, page_size) { + function onShowSizeChange(pn, length) { setPageData({ pn, - page_size, + length, }); } const columns = [ @@ -87,13 +90,15 @@ function UserTag() { key: "operation", align: "center", fixed: "right", - render: (_, record,index) => { + render: (_, record, index) => { return (
{ - setIndexBy(index) + searchDetail({ id: record.id }); + setMyId(record.id) + setIndexBy(index); setTag('2') }} > @@ -117,59 +122,75 @@ function UserTag() { }, { title: "用户ID", - dataIndex: "name", - key: "name", + dataIndex: "id", + key: "id", align: "center", fixed: "right", + render: (text) => ( + <> + { + navigator.clipboard.writeText(`${text}`).then(() => { message.success("已复制到剪切板") }); + }}>{text} + + ), }, { title: "手机号", - dataIndex: "nums", - key: "nums", + dataIndex: "mobile", + key: "mobile", align: "center", fixed: "right", }, { title: "昵称", - dataIndex: "describe", - key: "describe", + dataIndex: "name", + key: "name", align: "center", fixed: "right", }, { title: "性别", - dataIndex: "edit_name", - key: "edit_name", + dataIndex: "sex", + key: "sex", align: "center", fixed: "right", }, { title: "余额(元)", - dataIndex: "time", - key: "time", + dataIndex: "balance", + key: "balance", align: "center", fixed: "right", }, { title: "注册日期", - dataIndex: "time", - key: "time", + dataIndex: "create_time", + key: "create_time", align: "center", fixed: "right", }, { title: "绑定车牌", - dataIndex: "time", - key: "time", + dataIndex: "plate", + key: "plate", align: "center", fixed: "right", }, { title: "身份认证", - dataIndex: "time", - key: "time", + dataIndex: "authState", + key: "authState", align: "center", fixed: "right", + render: (text, record, index) => { + return ( +
+ { + text == 0 ? 未认证 : 已认证 + } +
+ ); + }, }, { title: "操作", @@ -177,15 +198,11 @@ function UserTag() { key: "operation", align: "center", fixed: "right", - render: (_, record) => { + render: (_, record, index) => { return (
@@ -194,30 +211,6 @@ function UserTag() { }, }, ]; - const detailColumns = [ - { - title: "使用时间", - dataIndex: "ave", - key: "avera", - align: "center", - fixed: "right", - }, - { - title: "内容", - dataIndex: "re", - key: "rec", - align: "center", - fixed: "right", - }, - { - title: "消耗", - dataIndex: "av", - key: "ave", - align: "center", - fixed: "right", - }, - - ]; //检索条件 const formSearch = [ { @@ -252,20 +245,65 @@ function UserTag() { } }) } - - // 获取下拉数据 - const getSelectList = () => { - ajax.getOperator().then((e) => { - setSearchSelectList([ - ...searchSelectList, - ...e.data - ]) + //列表用户数据 + function searchDetail(e) { + ajax.getUserLabelList({ ...pageData, ...e }).then((res) => { + let { status, data, total } = res + if (status == 20000) { + if (data.list) { + setDetailData(data.list) + setDetailTotal(data.total_records) + } else { + setDetailData(data) + setDetailTotal(total) + } + } else { + setDetailData([]) + message.error(res.message) + } }) - }; + } + //详情 + const tkddModal =
+
+
+
用户ID
{detailData[indexTo]?.id || "--"}
+
+
+
手机号
{detailData[indexTo]?.mobile || "--"}
+
+
+
昵称
{detailData[indexTo]?.name || "--"}
+
+
+
性别
{detailData[indexTo]?.sex || "--"}
+
+
+
余额(元)
{detailData[indexTo]?.balance || "--"}
+
+
+
注册日期
{detailData[indexTo]?.create_time || "--"}
+
+
+
绑定车牌
{detailData[indexTo]?.plate || "--"}
+
+
+
身份认证
{detailData[indexTo]?.authState || "--"}
+
+
+
+
+ { setBigPic(resultData[indexby].vehicle_travel_license_img1); setBigpicVisible(true) }} /> +
+
+ { setBigPic(resultData[indexby].vehicle_travel_license_img2); setBigpicVisible(true) }} /> +
+
+
useEffect(() => { - getSelectList(); - }, []); + searchDetail({id:myId}) + }, [pageData]); return ( <> @@ -280,27 +318,6 @@ function UserTag() { isExport={false} rowKey={"id"} initFormData={{}} - diyButton={ - <> - - - - } pageName={'"userTag"'} /> : @@ -308,35 +325,29 @@ function UserTag() {
{ setTag('1') }}>返回
标签名称: -
{resultData[indexBy]?.name||"--"}
+
{resultData[indexBy]?.name || "--"}
人数(人): -
- 111 -
+
{resultData[indexBy]?.nums || "--"}
创建人: -
- 111 -
+
{resultData[indexBy]?.edit_name || "--"}
操作日期: -
- 111 -
+
{resultData[indexBy]?.time || "--"}
@@ -347,9 +358,9 @@ function UserTag() { showSizeChanger={true} showQuickJumper={true} //showTotal={() => `共 ${total} 条`} - total={total} + total={detailTotal} current={pageData.pn} - pageSize={pageData.page_size} + pageSize={pageData.length} pageSizeOptions={dictionary?.pageSizeOptions} onChange={onShowSizeChange} onShowSizeChange={onShowSizeChange} @@ -361,26 +372,20 @@ function UserTag() { } { setVisible(false); }} - onOk={() => { }} + footer={[ + ]} > -
-
-
row?.order_id || row?.id || row?.deal_record_id || Math.random() * 10000} - columns={detailColumns} - dataSource={detailData} - scroll={{ y: 670 }} - //loading={loading} - pagination={false} - /> - - + {tkddModal} ) diff --git a/src/pages/OutRoadMgm/OutSegmentMgm/OutSegment/AddParking.jsx b/src/pages/OutRoadMgm/OutSegmentMgm/OutSegment/AddParking.jsx index fdc024d..8d42afb 100644 --- a/src/pages/OutRoadMgm/OutSegmentMgm/OutSegment/AddParking.jsx +++ b/src/pages/OutRoadMgm/OutSegmentMgm/OutSegment/AddParking.jsx @@ -242,10 +242,10 @@ function AddParking(props) { message.error('车场泊位数必须为数字!') return } - if (topBerthNum && parseFloat(total_berth_number) < topBerthNum) { - message.error('下级车场泊位数与一级车场泊位数之和不超过泊位总数!此处总车场泊位数不超过' + topBerthNum) - //return - } + // if (topBerthNum && parseFloat(values.total_berth_number) < topBerthNum) { + // message.error('下级车场泊位数与一级车场泊位数之和不超过泊位总数!此处总车场泊位数不超过' + topBerthNum) + // //return + // } const params = { ...values, img: processImgData(fileList), diff --git a/src/pages/OutRoadMgm/OutSegmentMgm/OutSegment/ConfigParking/BusinessParameterConfig.jsx b/src/pages/OutRoadMgm/OutSegmentMgm/OutSegment/ConfigParking/BusinessParameterConfig.jsx index aecccd6..d9757c9 100644 --- a/src/pages/OutRoadMgm/OutSegmentMgm/OutSegment/ConfigParking/BusinessParameterConfig.jsx +++ b/src/pages/OutRoadMgm/OutSegmentMgm/OutSegment/ConfigParking/BusinessParameterConfig.jsx @@ -1,5 +1,5 @@ import React, { useEffect, useState } from "react"; -import { Button, Form, Radio, Input, Select, Row, Col, message } from "antd"; +import { Button, Form, Radio, InputNumber, Select, Row, Col, message } from "antd"; import ajax from "@/services"; import "./BusinessParameterConfig.scss"; function BusinessParameterConfig(props) { @@ -16,7 +16,7 @@ function BusinessParameterConfig(props) { ajax.getRoadServiceEdit(params).then((res) => { if (res.status === 20000) { message.success(res.message); - }else{ + } else { message.error("请填写完整!") } }); @@ -125,7 +125,7 @@ function BusinessParameterConfig(props) { - + diff --git a/src/pages/OutRoadMgm/OutSegmentMgm/OutSegment/loadable.jsx b/src/pages/OutRoadMgm/OutSegmentMgm/OutSegment/loadable.jsx index a6489a9..4b9874a 100644 --- a/src/pages/OutRoadMgm/OutSegmentMgm/OutSegment/loadable.jsx +++ b/src/pages/OutRoadMgm/OutSegmentMgm/OutSegment/loadable.jsx @@ -488,6 +488,7 @@ function OutSegment() { { data: params, }); }; - +//用户管理-获取用户标签 +const getUserLabelList = (params) => { + return ajax({ + url: "/api/ope/user_manage/get_label_user_list", + type: "get", + data: params, + }); +}; export default { getUserLabel, + getUserLabelList, }