diff --git a/git.sh b/git.sh index 5600fc3..5100536 100644 --- a/git.sh +++ b/git.sh @@ -14,19 +14,21 @@ git push # rm -rf card/ -# task -# pc -# 1、首页统计 -# 1、组织架构,组织架构图 -# 2、武装力量 报表 -# 3、年度训练 查看档案 -# 4、物资管理 处突 -# 5、档案管理 报表 -# 6、评优 -# 7 -# 2、物资借用以及归还 -# 3、任务关联档案 -# app -# 1、退伍军人 列表 详情 申请领取光荣牌 -# 2、接收任务 -# 3、任务列表 \ No newline at end of file +# ps + +# 编辑用户 是否党员 没回显 + +# app 政治面貌没有展示 + +# 优待证 性别 没展示 +# 服务年限 展示实际年限 + +# 签到 个人中心 展示今日签到信息 + +# 通讯录,实时搜索 + +# pc +# 力量汇总,加一个新兴领域 网格员 + +# 任务管理 +# 添加 通知 diff --git a/package-lock.json b/package-lock.json index 596ad6e..fe0c4f7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -48,7 +48,6 @@ "eslint-webpack-plugin": "^3.1.1", "expose-loader": "^5.0.0", "file-loader": "^6.2.0", - "flv.js": "^1.6.2", "fs-extra": "^10.0.0", "html-webpack-plugin": "^5.5.0", "identity-obj-proxy": "^3.0.0", @@ -9935,11 +9934,6 @@ "es6-symbol": "^3.1.1" } }, - "node_modules/es6-promise": { - "version": "4.2.8", - "resolved": "https://registry.npmmirror.com/es6-promise/-/es6-promise-4.2.8.tgz", - "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==" - }, "node_modules/es6-symbol": { "version": "3.1.4", "resolved": "https://registry.npmmirror.com/es6-symbol/-/es6-symbol-3.1.4.tgz", @@ -11313,15 +11307,6 @@ "readable-stream": "^2.3.6" } }, - "node_modules/flv.js": { - "version": "1.6.2", - "resolved": "https://registry.npmmirror.com/flv.js/-/flv.js-1.6.2.tgz", - "integrity": "sha512-xre4gUbX1MPtgQRKj2pxJENp/RnaHaxYvy3YToVVCrSmAWUu85b9mug6pTXF6zakUjNP2lFWZ1rkSX7gxhB/2A==", - "dependencies": { - "es6-promise": "^4.2.8", - "webworkify-webpack": "^2.1.5" - } - }, "node_modules/follow-redirects": { "version": "1.15.9", "resolved": "https://registry.npmmirror.com/follow-redirects/-/follow-redirects-1.15.9.tgz", @@ -33188,11 +33173,6 @@ "node": ">=0.8.0" } }, - "node_modules/webworkify-webpack": { - "version": "2.1.5", - "resolved": "https://registry.npmmirror.com/webworkify-webpack/-/webworkify-webpack-2.1.5.tgz", - "integrity": "sha512-2akF8FIyUvbiBBdD+RoHpoTbHMQF2HwjcxfDvgztAX5YwbZNyrtfUMgvfgFVsgDhDPVTlkbb5vyasqDHfIDPQw==" - }, "node_modules/whatwg-encoding": { "version": "1.0.5", "resolved": "https://registry.npmmirror.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", @@ -41161,11 +41141,6 @@ "es6-symbol": "^3.1.1" } }, - "es6-promise": { - "version": "4.2.8", - "resolved": "https://registry.npmmirror.com/es6-promise/-/es6-promise-4.2.8.tgz", - "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==" - }, "es6-symbol": { "version": "3.1.4", "resolved": "https://registry.npmmirror.com/es6-symbol/-/es6-symbol-3.1.4.tgz", @@ -42194,15 +42169,6 @@ "readable-stream": "^2.3.6" } }, - "flv.js": { - "version": "1.6.2", - "resolved": "https://registry.npmmirror.com/flv.js/-/flv.js-1.6.2.tgz", - "integrity": "sha512-xre4gUbX1MPtgQRKj2pxJENp/RnaHaxYvy3YToVVCrSmAWUu85b9mug6pTXF6zakUjNP2lFWZ1rkSX7gxhB/2A==", - "requires": { - "es6-promise": "^4.2.8", - "webworkify-webpack": "^2.1.5" - } - }, "follow-redirects": { "version": "1.15.9", "resolved": "https://registry.npmmirror.com/follow-redirects/-/follow-redirects-1.15.9.tgz", @@ -58569,11 +58535,6 @@ "resolved": "https://registry.npmmirror.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz", "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==" }, - "webworkify-webpack": { - "version": "2.1.5", - "resolved": "https://registry.npmmirror.com/webworkify-webpack/-/webworkify-webpack-2.1.5.tgz", - "integrity": "sha512-2akF8FIyUvbiBBdD+RoHpoTbHMQF2HwjcxfDvgztAX5YwbZNyrtfUMgvfgFVsgDhDPVTlkbb5vyasqDHfIDPQw==" - }, "whatwg-encoding": { "version": "1.0.5", "resolved": "https://registry.npmmirror.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", diff --git a/package.json b/package.json index 3e1d850..e755050 100644 --- a/package.json +++ b/package.json @@ -43,7 +43,6 @@ "eslint-webpack-plugin": "^3.1.1", "expose-loader": "^5.0.0", "file-loader": "^6.2.0", - "flv.js": "^1.6.2", "fs-extra": "^10.0.0", "html-webpack-plugin": "^5.5.0", "identity-obj-proxy": "^3.0.0", diff --git a/src/components/edittor.tsx b/src/components/edittor.tsx index 991bce5..4fefd99 100644 --- a/src/components/edittor.tsx +++ b/src/components/edittor.tsx @@ -69,7 +69,6 @@ function MyEditor(props: EditorProps) { value={html} onCreated={setEditor} onChange={(editor) => { - console.log("onChange", editor.getHtml()); setHtml(editor.getHtml()); props.onChange(editor.getHtml()); }} diff --git a/src/components/form/simple_form.tsx b/src/components/form/simple_form.tsx index abccbab..8959f74 100644 --- a/src/components/form/simple_form.tsx +++ b/src/components/form/simple_form.tsx @@ -114,7 +114,7 @@ const SimpleForm = (props: SimpleFormData) => { (null); @@ -37,9 +38,13 @@ export default function MapContainerTow() { }); amap.add(polygon); amap.setFitView(); + MapUtlTow.loadMap = Amap; + MapUtlTow.amap = amap; setmaps(amap); }; + + return (
); diff --git a/src/components/map/mapUtilTow.ts b/src/components/map/mapUtilTow.ts new file mode 100644 index 0000000..eda8355 --- /dev/null +++ b/src/components/map/mapUtilTow.ts @@ -0,0 +1,137 @@ +import makers from "../../static/map-maker.png"; +import makers1 from "../../static/map-maker1.png"; +interface makersInf { + userIdentity: string, + marker: any, +} +class MapUtlTow { + static makerList: makersInf[] = []; + static amap: any = null; + static loadMap: any = null; + static wecherInfo: any = null; + + static addMaker(data: any) { + const { lng, lat, title, users,clicks } = data; + let mk, dep = ""; + if (users?.militia_type === 1) { + mk = makers + dep = "民兵" + } + if (users?.grid_user === 1) { + mk = makers1 + dep = "网格员" + } + if (users?.patrol_user === 1) { + dep = "巡防大队" + } + + // if (MapUtl.loadMap === null) return; + const marker = new MapUtlTow.loadMap.Marker({ + position: new MapUtlTow.loadMap.LngLat(lng, lat), + title: title, + icon: new MapUtlTow.loadMap.Icon({ + imageSize: [20, 20], + image: mk, + style: { + backgroundImage: "red" + }// 默认的样式名 + }), + }); + var content = [ + "
姓名 :" + users?.user_name + "", + "职位 : " + users.pos_held, + "电话 : " + users.tel, + "部门 : " + dep, + "
", + ]; + var infoWindow = new MapUtlTow.loadMap.InfoWindow({ + offset: new MapUtlTow.loadMap.Pixel(0, -30), + autoMove: true, + content: content.join("
"), + }); + marker.on("click", (e) => { + infoWindow.open(MapUtlTow.amap, e.target.getPosition()); + clicks(users.id) + }); + MapUtlTow.amap?.add(marker); + // 将maker添加到数组 + MapUtlTow.makerList.push({ + userIdentity: users.identity, + marker: marker + }) + } + static addMakerDis(data: any) { + const { lng, lat, title } = data; + const marker = new MapUtlTow.loadMap.Marker({ + position: new MapUtlTow.loadMap.LngLat(lng, lat), + icon: new MapUtlTow.loadMap.Icon({ + image: + "https://img20.360buyimg.com/n1/jfs/t1/98676/8/28819/96905/62e1e96eE69561497/0e201e39d6d1c1e3.png", + imageSize: [30, 30], + }), + title: title, + }); + var content = [ + "
站点名称 :" + title + "", + // "职位 : " + users.pos_held, + // "电话 : " + users.tel, + "
", + ]; + var infoWindow = new MapUtlTow.loadMap.InfoWindow({ + offset: new MapUtlTow.loadMap.Pixel(0, -30), + autoMove: true, + content: content.join("
"), + }); + marker.on("click", (e) => { + infoWindow.open(MapUtlTow.amap, e.target.getPosition()); + }); + MapUtlTow.amap?.add(marker); + } + static setMakericon = (maker) => { + maker.setPosition([103.55, 30.342]); + var m = MapUtlTow.amap; + var newIcon = new m.Icon({ + image: "//a.amap.com/jsapi_demos/static/demo-center/icons/dir-marker.png", //Icon 的图像 + size: new m.Size(25, 34), // 图标大小 + anchor: new m.Pixel(12, 32), // 图标锚点 + }); + maker.setIcon(newIcon); + } + + static polyline = (lineArr) => { + let markerp = new MapUtlTow.loadMap.Marker({ + map: MapUtlTow.amap, + position: [116.478935, 39.997761], + icon: "https://a.amap.com/jsapi_demos/static/demo-center-v2/car.png", + offset: new MapUtlTow.loadMap.Pixel(-13, -26), + }); + new MapUtlTow.loadMap.Polyline({ + map: MapUtlTow.amap, + path: lineArr, + showDir: true, + strokeColor: "#28F", //线颜色 + strokeWeight: 6, //线宽 + }); + let passedPolyline = new MapUtlTow.loadMap.Polyline({ + map: MapUtlTow.amap, + strokeColor: "#AF5", //线颜色 + strokeWeight: 6, //线宽 + }); + markerp.on('moving', function (e) { + passedPolyline.setPath(e.passedPath); + MapUtlTow.amap.setCenter(e.target.getPosition(), true) + }); + MapUtlTow.amap.setFitView(); + markerp.moveAlong(lineArr, { + duration: 500,//可根据实际采集时间间隔设置 + autoRotation: true, + }); + } + + static getWecher() { + + } + +} + +export default MapUtlTow; \ No newline at end of file diff --git a/src/pages/home/home.less b/src/pages/home/home.less index aaf1599..c19ae76 100644 --- a/src/pages/home/home.less +++ b/src/pages/home/home.less @@ -90,7 +90,6 @@ bottom: 0px; z-index: 2; opacity: 1; - background: rgba(37, 52, 70, 0.4); backdrop-filter: blur(10px); } .map_container_r { @@ -101,13 +100,13 @@ width: 20%; z-index: 2; opacity: 1; - background: rgba(37, 52, 70, 0.4); + backdrop-filter: blur(10px); height: 100%; } .map_container_b_check { position: absolute; - bottom: 40px; + bottom: 60px; height: 60px; width: 100%; z-index: 1; @@ -115,11 +114,10 @@ } .map_container_b { position: absolute; - bottom: 0px; - backdrop-filter: blur(10px); + bottom: 12px; height: 60px; width: 100%; - z-index: 1; + z-index: 2; text-align: center; .bottom_content { display: inline-block; @@ -140,3 +138,7 @@ top: 70px; right: calc(20%); } + +:where(.css-dev-only-do-not-override-nqoqt9).ant-radio-button-wrapper:not(:first-child)::before { + background-color: #0f5693 !important; +} \ No newline at end of file diff --git a/src/pages/home/home.tsx b/src/pages/home/home.tsx index cd7b9ac..6565561 100644 --- a/src/pages/home/home.tsx +++ b/src/pages/home/home.tsx @@ -39,7 +39,7 @@ const Home = observer(() => {
- {/* */} +
diff --git a/src/pages/home/homeBottom/which_video.tsx b/src/pages/home/homeBottom/which_video.tsx index 637be6b..1525afe 100644 --- a/src/pages/home/homeBottom/which_video.tsx +++ b/src/pages/home/homeBottom/which_video.tsx @@ -2,7 +2,7 @@ import { Modal } from "antd"; import { inject, observer } from "mobx-react"; import { useState } from "react"; import Config from "@/util/config"; -import VideoPlayer from "@/pages/home/video"; +import EasyPlayer from "../videoTow"; const WhichVideo = (props) => { const { homeStore } = props; const [isModalOpen, setIsModalOpen] = useState(false); @@ -11,21 +11,39 @@ const WhichVideo = (props) => { const [deviceId, setDeviceId] = useState(0); const [channelId, setChannelId] = useState(0); const [videoUrl, setVideoUrl] = useState(""); + let timer: any = null; + const openDispatch = async () => { setIsModalOpen(true); let req = await homeStore.getVideoUrlList(); setDeviceList(req.EasyDarwin.Body.Devices); - }; + }; const getChannerList = async (id) => { let reqs = await homeStore.getChannerUrlList(id); setChannelList(reqs.EasyDarwin.Body.Channels); }; const getUrl = async (id) => { - let reqs = await homeStore.getChannerStrem(deviceId, id); - if (!reqs.EasyDarwin) return; - let url = Config.videoApis + reqs.EasyDarwin.Body.URL - setVideoUrl(url); + if (timer) { + clearInterval(timer); + } + + + const fetchUrl = async () => { + try { + const reqs = await homeStore.getChannerStrem(deviceId, id); + if (!reqs.EasyDarwin) return; + const url = Config.videoApis + reqs.EasyDarwin.Body.URL; + setVideoUrl(url); + } catch (error) { + console.error("Error fetching video URL:", error); + } + }; + fetchUrl() + timer = setInterval( () => { + fetchUrl(); + },15000); + }; return ( <> @@ -51,7 +69,7 @@ const WhichVideo = (props) => { >
-
+
{deviceList.map((item, index) => { return (
{ })}
-
+
{channelList.map((item, index) => { return (
{
- { - - } + {}
diff --git a/src/pages/home/homeLeft/home_left.tsx b/src/pages/home/homeLeft/home_left.tsx index ca878cf..69acdd2 100644 --- a/src/pages/home/homeLeft/home_left.tsx +++ b/src/pages/home/homeLeft/home_left.tsx @@ -23,18 +23,21 @@ const HomeLeft = () => {
+

武装力量

+

年度训练

+
); }; diff --git a/src/pages/home/homeLeft/left.less b/src/pages/home/homeLeft/left.less index 4f5f9a4..36362a1 100644 --- a/src/pages/home/homeLeft/left.less +++ b/src/pages/home/homeLeft/left.less @@ -8,16 +8,18 @@ .org{ flex:1; width: 100%; + background: rgba(37, 52, 70, 0.4); overflow-y: hidden; text-align: center; .org_head{ background-image: url("../../../static/sub_title.png"); background-size: 100% 100%; background-repeat: no-repeat; - line-height: 36px; - height: 36px; + line-height: 32px; + height: 32px; text-align: left; padding-left: 30px; + font-size: 15px; } .orgin-content{ display: flex; diff --git a/src/pages/home/homeLeft/trun_chat_config.ts b/src/pages/home/homeLeft/trun_chat_config.ts index 2249351..57a8075 100644 --- a/src/pages/home/homeLeft/trun_chat_config.ts +++ b/src/pages/home/homeLeft/trun_chat_config.ts @@ -11,7 +11,7 @@ export const trunEchatConfig = (data) => { rotate: 30, }, }, - grid: { top: "10%", bottom: "35%", right: "5%" }, + grid: { top: "10%", bottom: "40%", right: "5%" }, yAxis: { type: "value", splitLine: { diff --git a/src/pages/home/homeLeft/turn.tsx b/src/pages/home/homeLeft/turn.tsx index f8cb3e2..57a6835 100644 --- a/src/pages/home/homeLeft/turn.tsx +++ b/src/pages/home/homeLeft/turn.tsx @@ -72,11 +72,11 @@ const Turn = (props: Store) => { let fileType = getFileTypeFromUrl(imageUrl); switch (fileType) { case "jpeg": - return ; + return ; case "jpg": - return ; + return ; case "png": - return ; + return ; case "pdf": return (
@@ -106,7 +106,7 @@ const Turn = (props: Store) => { src={imageUrl} fileName="docx" onError={(e) => { - console.log("error doc",e); + console.log("error doc", e); }} />
@@ -137,34 +137,50 @@ const Turn = (props: Store) => { setisModalOpen(false); }} > -
+
-

任务列表

-
- {trainingStore.list?.map((item) => { - return ( -

{ - setTaskId(item.identity); - getFolderhandler(item.identity); - }} - > - {item.title} -

- ); - })} -
+
+

任务列表

+ {trainingStore.list?.map((item) => { + return ( +

{ + setTaskId(item.identity); + getFolderhandler(item.identity); + }} + > + {item.title} +

+ ); + })} +
-
+

文件夹列表

{folderList?.map((item) => { return ( @@ -185,70 +201,73 @@ const Turn = (props: Store) => { })}
- -
+ +
+ +

档案列表

-
- {imageList?.map((item) => { - let fileType = getFileTypeFromUrl(item.file_url); - switch (fileType) { - case "png": - return imageWidget(item); - case "jpeg": - return imageWidget(item); - case "jpg": - return imageWidget(item); - case "pdf": - return ( -

{ - setImageUrl(item.file_url); - }} - > - {item.file_name} -

- ); - case "mp4": - return ( -

{ - setImageUrl(item.file_url); - }} - > - {item.file_name} -

- ); - case "docx": - return ( -

{ - setImageUrl(item.file_url); - }} - > - {item.file_name} -

- ); - default: - return ( - { - setImageUrl(item.file_url); - }} - key={item.identity} - style={{ width: "80px" }} - src={item.file_url} - alt="" - /> - ); - } - })} -
+ {imageList?.map((item) => { + let fileType = getFileTypeFromUrl(item.file_url); + switch (fileType) { + case "png": + return imageWidget(item); + case "jpeg": + return imageWidget(item); + case "jpg": + return imageWidget(item); + case "pdf": + return ( +

{ + setImageUrl(item.file_url); + }} + > + {item.file_name} +

+ ); + case "mp4": + return ( +

{ + setImageUrl(item.file_url); + }} + > + {item.file_name} +

+ ); + case "docx": + return ( +

{ + setImageUrl(item.file_url); + }} + > + {item.file_name} +

+ ); + default: + return ( + { + setImageUrl(item.file_url); + }} + key={item.identity} + style={{ width: "80px" }} + src={item.file_url} + alt="" + /> + ); + } + })} +
@@ -259,6 +278,7 @@ const Turn = (props: Store) => { display: "flex", alignItems: "center", justifyContent: "center", + padding:"10px" }} > {preView()} diff --git a/src/pages/home/homeRigrt/ac.tsx b/src/pages/home/homeRigrt/ac.tsx index 79d23fd..22ba775 100644 --- a/src/pages/home/homeRigrt/ac.tsx +++ b/src/pages/home/homeRigrt/ac.tsx @@ -1,9 +1,18 @@ +import FileViewer from "@codesmith-99/react-file-preview"; +import { Modal, Space } from "antd"; import { Store } from "antd/es/form/interface"; import * as echarts from "echarts"; import { inject, observer } from "mobx-react"; -import { useEffect } from "react"; +import { useEffect, useState } from "react"; const Ac = (props: Store) => { const { homeStore } = props; + const [isModalOpen, setIsModalOpen] = useState(false); + const [year, setYear] = useState>([]); + const [folder, setFolder] = useState>([]); + const [files, setFiles] = useState>([]); + const [imageUrl, setImageUrl] = useState([]); + const [folderId, setFolderId] = useState([]); + const [fileId, setFileId] = useState([]); const initChart = (data) => { var myChart = echarts.init(document.getElementById("ac")); @@ -62,8 +71,177 @@ const Ac = (props: Store) => { homeStore.getRm().then((res) => { initChart(res.data?.record); }); - }, [homeStore]); - return
; + const getFileTypeFromUrl = (url) => { + if (url === "" || url.length === 0) return; + // 解析URL以提取文件名 + const filename = url.split("/").pop(); + // 获取文件扩展名 + const fileExtension = filename.split(".").pop(); + // 返回文件扩展名 + return fileExtension; + }; + + const preView = () => { + let fileType = getFileTypeFromUrl(imageUrl); + switch (fileType) { + case "jpeg": + return ; + case "jpg": + return ; + case "png": + return ; + case "pdf": + return ( +
+ +
+ ); + case "mp4": + return ( +
+ +
+ ); + case "docx": + return ( +
+ { + console.log("error doc", e); + }} + /> +
+ ); + case "": + return
; + default: + return
; + } + }; + return ( + <> +
{ + homeStore.getTimes().then((res) => { + setYear(res.data?.record); + }); + homeStore.getFolders("2025").then((res) => { + setFolder(res.data?.record); + }); + setIsModalOpen(true); + }} + >
+ {}} + onOk={() => {}} + footer={null} + onCancel={() => { + setIsModalOpen(false); + }} + > + <> + + {year.map((item) => { + return ( +

{ + homeStore.getFolders(item.unique_years).then((res) => { + setFolder(res.data?.record); + }); + }} + > + {item.unique_years} +

+ ); + })} +
+

档案文件夹

+
+
+
+ {folder?.map((item) => { + return ( +

{ + homeStore.getFolderss(item.identity).then((res) => { + setFolderId(item.identity); + setFiles(res.data?.record); + }); + }} + > + {item.folder_desc} +

+ ); + })} +
+
+ {files?.map((item) => { + return ( +

{ + setFileId(item.identity) + setImageUrl(item.file_url); + }} + > + {item.file_name} +

+ ); + })} +
+
+ {preView()} +
+
+
+ +
+ + ); }; export default inject("homeStore")(observer(Ac)); diff --git a/src/pages/home/homeRigrt/home_right.tsx b/src/pages/home/homeRigrt/home_right.tsx index 2df16b4..9ea5fc3 100644 --- a/src/pages/home/homeRigrt/home_right.tsx +++ b/src/pages/home/homeRigrt/home_right.tsx @@ -1,10 +1,8 @@ -import { useNavigate } from "react-router"; import Ac from "./ac"; import Pyzx from "./pyzx"; import "./right.less"; import Wz from "./wz"; const HomeRight = () => { - const nv = useNavigate(); return (
@@ -13,18 +11,21 @@ const HomeRight = () => {
-
nv('/admin/archives/box')}> +
+

档案管理

+

评优争先

- +
+
); }; diff --git a/src/pages/home/homeRigrt/pyzx.tsx b/src/pages/home/homeRigrt/pyzx.tsx index 1619584..7581578 100644 --- a/src/pages/home/homeRigrt/pyzx.tsx +++ b/src/pages/home/homeRigrt/pyzx.tsx @@ -18,7 +18,7 @@ const Pyzx = (props: Store) => { }, [homeStore]); return ( -
+
{user?.map((item) => { return (
{ const { homeStore ,usrStore} = props; @@ -45,7 +46,7 @@ const HomeCheck = (props: Store) => { return; } if (data.length > 0) { - MapUtl.polyline(data); + MapUtlTow.polyline(data); } } }); @@ -64,7 +65,7 @@ const HomeCheck = (props: Store) => { query = { patrol_brigade: 1 }; break; } - let marks = MapUtl.makerList; + let marks = MapUtlTow.makerList; if (marks.length) { marks.forEach((item) => { item?.marker.remove(); @@ -89,10 +90,10 @@ const HomeCheck = (props: Store) => { }; return ( <> - - 民兵 - 网格员 - 巡防 + + 民兵 + 网格员 + 巡防 { const { homeStore } = props; const [videoUrls, setVideoUrl] = useState | null>([]); @@ -43,8 +43,8 @@ const HomeVideo = (props: Store) => {
{videoUrls?.map((videoUrl, index) => { return ( -
-