diff --git a/src/components/form/interface.ts b/src/components/form/interface.ts
index cdfafec..8bde48a 100644
--- a/src/components/form/interface.ts
+++ b/src/components/form/interface.ts
@@ -13,6 +13,7 @@ export enum FormType {
cehckbox = "checkbox",
cehckboxGroup = "checkboxGroup",
password = "password",
+ treeVideo = "treeVideo",
fetchList = "fetchList",
}
diff --git a/src/components/form/simple_form.tsx b/src/components/form/simple_form.tsx
index 1d608b3..e938863 100644
--- a/src/components/form/simple_form.tsx
+++ b/src/components/form/simple_form.tsx
@@ -5,6 +5,7 @@ import { FormSelect } from "./select";
import AliUpload from "../ali_upload";
import MyEditor from "../edittor";
import MapFrom from "../map/MapFrom";
+import VideoSelect from "../video_select";
const { TextArea } = Input;
const SimpleForm = (props: SimpleFormData) => {
const [form] = Form.useForm();
@@ -104,6 +105,21 @@ const SimpleForm = (props: SimpleFormData) => {
/>
);
+ case FormType.treeVideo:
+ return (
+
+
{item?.file_name}
- 下载
+
+ 下载
+
+ {
+ archivesStore.deleteItem(item.id)
+ getFileList()
+ }}
+ onCancel={() => {}}
+ okText="Yes"
+ cancelText="No"
+ >
+
+
);
diff --git a/src/pages/emergency/em_column.tsx b/src/pages/emergency/em_column.tsx
index bd427b7..e14e951 100644
--- a/src/pages/emergency/em_column.tsx
+++ b/src/pages/emergency/em_column.tsx
@@ -31,9 +31,16 @@ export const EmConfig = (userList) => [
{
type: FormType.cehckboxGroup,
label: "参与队伍",
- name: "user_id",
+ name: "team_id",
value: [],
checkboxData: userList,
rules: [{ required: true, message: "参与队伍不能为空!" }],
},
+ {
+ type: FormType.treeVideo,
+ label: "视频地址",
+ name: "task_video",
+ value: [],
+ rules: [{ required: true, message: "请选择视频地址!" }],
+ },
];
diff --git a/src/pages/emergency/index.tsx b/src/pages/emergency/index.tsx
index b6d966c..54dc3b7 100644
--- a/src/pages/emergency/index.tsx
+++ b/src/pages/emergency/index.tsx
@@ -147,10 +147,10 @@ const Emergency = (props: Store) => {
};
useEffect(() => {
emergencyStore.getlist();
- baseHttp.get("/user/list", null).then((res) => {
+ baseHttp.get("/team/list", null).then((res) => {
let data = res.data?.record ?? [];
data.forEach((item) => {
- item.label = item.user_name;
+ item.label = item.name;
item.value = item.identity;
});
setUserList(data ?? []);
diff --git a/src/pages/exce_compet/index.tsx b/src/pages/exce_compet/index.tsx
index 4437953..763c58d 100644
--- a/src/pages/exce_compet/index.tsx
+++ b/src/pages/exce_compet/index.tsx
@@ -1,13 +1,18 @@
import BTable from "@/components/b_table";
import { UserDataType } from "@/model/userModel";
-import { Button } from "antd";
+import { Button, message, Modal, Space } from "antd";
import { Store } from "antd/es/form/interface";
+import TextArea from "antd/lib/input/TextArea";
import { ColumnsType } from "antd/lib/table";
+import dayjs from "dayjs";
import { inject, observer } from "mobx-react";
-import { useEffect } from "react";
+import { useEffect, useState } from "react";
const ExceCompet = (props: Store) => {
const { exceCompetStore } = props;
+ const [isModalOpen, setIsModalOpen] = useState(false);
+ const [value, setValue] = useState('');
+ const [id, setId] = useState('');
useEffect(() => {
exceCompetStore.getlist();
}, [exceCompetStore]);
@@ -17,29 +22,73 @@ const ExceCompet = (props: Store) => {
{
title: "评优申请人",
dataIndex: "users",
- render: (users) =>
{users?.user_name}
+ render: (users) =>
{users?.user_name},
},
{ title: "申请积分", dataIndex: "reviewer_score" },
- { title: "申请时间", dataIndex: "created_at" },
- { title: "描述", dataIndex: "desc" },
- { title: "审核状态", dataIndex: "status" },
- { title: "审核人", dataIndex: "reviewer_identity" },
{
- title: "操作",
- dataIndex: "id",
- render: (any, record) => (
-
+ title: "申请时间",
+ dataIndex: "created_at",
+ render: (created_at) => (
+
{dayjs(created_at).format("YYYY-MM-DD")}
),
},
+ { title: "描述", dataIndex: "desc" },
+ {
+ title: "审核状态",
+ dataIndex: "status",
+ render: (status) =>
+ status === 1 ? "已通过" : status === 2 ? "驳回" : "未审核",
+ width: 200,
+ },
+ {
+ title: "审核人",
+ dataIndex: "reviewer_users",
+ render: (reviewer_users) =>
{reviewer_users?.user_name},
+ },
+ {
+ title: "操作",
+ dataIndex: "identity",
+ render: (any, record) =>
+ record.status === 0 ? (
+
+
+
+
+ ) : null,
+ },
];
+
+
+ const handleOk = () => {
+ if (!value) {
+ message.error("请输入驳回理由")
+ return;
+ }
+ exceCompetStore.audit(id, {status: 2,remark:value});
+ setIsModalOpen(false);
+ };
+
+ const handleCancel = () => {
+ setIsModalOpen(false);
+ };
+
return (
{
columns={columns}
dataSource={exceCompetStore.list}
/>
+
+
);
};
diff --git a/src/pages/home/home.less b/src/pages/home/home.less
index 22952c3..0c9ec7c 100644
--- a/src/pages/home/home.less
+++ b/src/pages/home/home.less
@@ -152,8 +152,7 @@
.map_video_container {
position: absolute;
- width: 300px;
- height: 300px;
- top: 60px;
+ width: 350px;
+ top: 70px;
right: 300px;
}
diff --git a/src/pages/home/home.tsx b/src/pages/home/home.tsx
index e666ca9..ed4982c 100644
--- a/src/pages/home/home.tsx
+++ b/src/pages/home/home.tsx
@@ -9,6 +9,7 @@ import { SettingOutlined } from "@ant-design/icons";
import { useNavigate } from "react-router";
import Weather from "./homeLeft/weather";
import Timer from "./homeLeft/timer";
+import HomeVideo from "./home_video";
const Home = observer(() => {
const navigate = useNavigate();
@@ -47,7 +48,7 @@ const Home = observer(() => {
diff --git a/src/pages/home/homeBottom/dispath.tsx b/src/pages/home/homeBottom/dispath.tsx
index 62530a3..49af0c5 100644
--- a/src/pages/home/homeBottom/dispath.tsx
+++ b/src/pages/home/homeBottom/dispath.tsx
@@ -5,11 +5,12 @@ import {
Form,
FormInstance,
InputNumber,
+ message,
Modal,
Select,
SelectProps,
} from "antd";
-import React from "react";
+import React, { useEffect } from "react";
import { useState } from "react";
import baseHttp from "@/service/base";
import "./bot.less";
@@ -34,27 +35,36 @@ const Dispath = (props: Store) => {
...traningConfig,
{
type: FormType.cehckboxGroup,
- label: "参与人员选择",
- name: "user_id",
+ label: "参与队伍",
+ name: "trem_id",
value: [],
checkboxData: userList,
- rules: [{ required: true, message: "请选择参与人员!" }],
+ rules: [{ required: true, message: "请选择参与队伍!" }],
+ },
+ {
+ type: FormType.treeVideo,
+ label: "直播视频地址",
+ name: "task_video",
+ value: [],
+ rules: [{ required: true, message: "请选择直播视频地址!" }],
},
]);
};
+ useEffect(() => {
+ baseHttp.get("/team/list", null).then((res) => {
+ let data = res.data?.record ?? [];
+ data.forEach((item) => {
+ item.label = item.name;
+ item.value = item.identity;
+ });
+ setUserList(data ?? []);
+ });
+ }, []);
const getList = async () => {
try {
trainingCatStore.getlist().then(() => {
setStashList(trainingCatStore.list);
});
- baseHttp.get("/user/list", null).then((res) => {
- let data = res.data?.record ?? [];
- data.forEach((item) => {
- item.label = item.account;
- item.value = item.identity;
- });
- setUserList(data ?? []);
- });
} catch (error) {
console.log(error);
}
@@ -67,11 +77,32 @@ const Dispath = (props: Store) => {
};
const onFinish = (values: any) => {
+ let task_video: any = [];
+ for (let i = 0; i < values.task_video.length; i++) {
+ let item = values.task_video[i];
+ task_video.push({
+ device: item.split("-")[0],
+ channel: item.split("-")[1],
+ });
+ }
+ if (!task_video || task_video.length === 0) {
+ message.error("请选择视频设备");
+ return;
+ }
+ if (values.score === 0 || values.score === null) {
+ message.error("请完善训练积分");
+ return;
+ }
+ if (values.count === 0 || values.count === null) {
+ message.error("请完善训练次数");
+ return;
+ }
let data = {
...values,
score: Number(values.score),
count: Number(values.count),
};
+ data.task_video = task_video;
trainingStore.add(data);
setIsModalOpen(false);
};
@@ -98,9 +129,7 @@ const Dispath = (props: Store) => {
centered
width={1000}
open={isModalOpen}
- afterClose={() => {
-
- }}
+ afterClose={() => {}}
onOk={() => {}}
okText="确定"
cancelText="取消"
@@ -122,7 +151,10 @@ const Dispath = (props: Store) => {
setIsModalOpen(false);
}}
>
-
+
{}}
diff --git a/src/pages/home/homeBottom/emr.tsx b/src/pages/home/homeBottom/emr.tsx
index ae0dc10..427aab5 100644
--- a/src/pages/home/homeBottom/emr.tsx
+++ b/src/pages/home/homeBottom/emr.tsx
@@ -15,7 +15,6 @@ import baseHttp from "@/service/base";
import MinusCircleOutlined from "@ant-design/icons/lib/icons/MinusCircleOutlined";
import { EmConfig } from "@/pages/emergency/em_column";
import { inject, observer } from "mobx-react";
-import VideoSelect from "@/components/video_select";
const Emr = (props: Store) => {
const { emergencyStore, homeStore } = props;
@@ -36,8 +35,15 @@ const Emr = (props: Store) => {
long: values.marker["lng"],
lat: values.marker["lat"],
};
- console.log(data);
- return;
+ let task_video: any = [];
+ for (let i = 0; i < values.task_video.length; i++) {
+ let item = values.task_video[i];
+ task_video.push({
+ device: item.split("-")[0],
+ channel: item.split("-")[1],
+ });
+ }
+ data.task_video = task_video;
emergencyStore.add(data);
setIsModalOpen(false);
homeStore.getNewTask();
@@ -159,18 +165,6 @@ const Emr = (props: Store) => {
>
)}
-
- {
- formRef.current?.setFieldsValue({ task_video: v });
- }}
- />
-
>
diff --git a/src/pages/home/homeBottom/which_video.tsx b/src/pages/home/homeBottom/which_video.tsx
index 96918c0..0a50d82 100644
--- a/src/pages/home/homeBottom/which_video.tsx
+++ b/src/pages/home/homeBottom/which_video.tsx
@@ -25,7 +25,6 @@ const WhichVideo = (props) => {
let reqs = await homeStore.getChannerStrem(deviceId, id);
if (!reqs.EasyDarwin) return;
let url = Config.videoApis + reqs.EasyDarwin.Body.URL
- console.log(url)
setVideoUrl(url);
};
return (
diff --git a/src/pages/home/home_video.tsx b/src/pages/home/home_video.tsx
index 36f7aaf..bee8d5f 100644
--- a/src/pages/home/home_video.tsx
+++ b/src/pages/home/home_video.tsx
@@ -1,8 +1,39 @@
+import { Store } from "antd/es/form/interface";
+import { inject, observer } from "mobx-react";
+import { useEffect, useState } from "react";
+import Video from "./video";
+import "./video.less";
-const HomeVideo = () => {
+const HomeVideo = (props: Store) => {
+ const { homeStore } = props;
+ const [videoUrls, setVideoUrl] = useState<[] | null>([]);
+ useEffect(() => {
+ // 获取最新任务
+ homeStore.getNewTask().then((res) => {
+ setVideoUrl(res);
+ });
+ }, [homeStore]);
return (
-
csacas
+
+
隐藏
+ {homeStore.showVideo ? (
+
+ {videoUrls?.map((videoUrl, index) => {
+ return (
+
+ ;
+
+ );
+ })}
+
+ ) : null}
+
);
};
-export default HomeVideo;
\ No newline at end of file
+export default inject("homeStore")(observer(HomeVideo));
diff --git a/src/pages/home/video.less b/src/pages/home/video.less
new file mode 100644
index 0000000..f0641a7
--- /dev/null
+++ b/src/pages/home/video.less
@@ -0,0 +1,5 @@
+.homeVideoBox{
+ width: 100%;
+ display: flex;
+ flex-wrap: wrap;
+}
\ No newline at end of file
diff --git a/src/pages/leaveApproval/levcat_column.tsx b/src/pages/leaveApproval/levcat_column.tsx
index a3eae0a..f21a7a2 100644
--- a/src/pages/leaveApproval/levcat_column.tsx
+++ b/src/pages/leaveApproval/levcat_column.tsx
@@ -28,7 +28,7 @@ export const leaveColumns: ColumnsType
= [
},
{
title: "驳回原因",
- dataIndex: "reject",
+ dataIndex: "reject_mark",
},
{
title: "审批人",
@@ -56,7 +56,7 @@ export const defaultConfig = [
{
type: FormType.input,
label: "驳回原因",
- name: "reject",
+ name: "reject_mark",
value: "",
rules: [{ required: true, message: "请输入驳回原因!" }],
},
@@ -64,7 +64,6 @@ export const defaultConfig = [
export const defaultCatConfig = [
-
{
type: FormType.input,
label: "分类名称",
diff --git a/src/pages/materialMgmt/material_column.tsx b/src/pages/materialMgmt/material_column.tsx
index 161ba08..a1b7e6a 100644
--- a/src/pages/materialMgmt/material_column.tsx
+++ b/src/pages/materialMgmt/material_column.tsx
@@ -1,6 +1,7 @@
import { FormType } from "@/components/form/interface";
import { UserDataType } from "@/model/userModel";
import { ColumnsType } from "antd/lib/table";
+import dayjs from "dayjs";
export const columns: ColumnsType = [
{
title: "物资名称",
@@ -13,6 +14,7 @@ export const columns: ColumnsType = [
{
title: "过期时间",
dataIndex: "expiry_date",
+ render: (expiry_date) => <>{ {dayjs(expiry_date).format("YYYY-MM-DD")}}>,
},
{
title: "货架名称",
diff --git a/src/pages/patrol/index.tsx b/src/pages/patrol/index.tsx
index 3297cf4..4d32dfe 100644
--- a/src/pages/patrol/index.tsx
+++ b/src/pages/patrol/index.tsx
@@ -160,6 +160,13 @@ const Patrol = (props: Store) => {
value: "",
rules: [{ required: true, message: "请输入任务积分!" }],
},
+ {
+ type: FormType.treeVideo,
+ label: "视频地址",
+ name: "task_video",
+ value: [],
+ rules: [{ required: true, message: "请选择视频地址!" }],
+ },
// {
// type: FormType.cehckboxGroup,
// label: "任务参与人",
diff --git a/src/pages/patrolBrigade/index.tsx b/src/pages/patrolBrigade/index.tsx
index 491cef9..ef85288 100644
--- a/src/pages/patrolBrigade/index.tsx
+++ b/src/pages/patrolBrigade/index.tsx
@@ -83,7 +83,7 @@ const PatrolBrigade = (props: Store) => {
{
+ const [url, setUrl] = useState("");
+ useEffect(() => {
+ base.gets("/sys/version", {}).then((res) => {
+ setUrl(res.data.record.url);
+ });
+ }, []);
+ return (
+
+
+
+
+
+ );
+};
+
+export default ErCode;
diff --git a/src/pages/system/index.tsx b/src/pages/system/index.tsx
index 030448d..5e297a9 100644
--- a/src/pages/system/index.tsx
+++ b/src/pages/system/index.tsx
@@ -1,6 +1,7 @@
import { Tabs, TabsProps } from "antd";
import Banner from "./banner";
import Dict from "./dict";
+import ErCode from "./er_code";
const SystemPage = () => {
const items: TabsProps["items"] = [
@@ -14,6 +15,11 @@ const SystemPage = () => {
label: "数据字典",
children: ,
},
+ {
+ key: "3",
+ label: "app二维码",
+ children: ,
+ },
];
return (
<>
diff --git a/src/pages/teamMgmt/index.tsx b/src/pages/teamMgmt/index.tsx
index eb15d0f..2bb7339 100644
--- a/src/pages/teamMgmt/index.tsx
+++ b/src/pages/teamMgmt/index.tsx
@@ -94,7 +94,7 @@ const TeamMgmt = (props: Store) => {
/>
formRef.current?.resetFields()}
onOk={() => formRef.current?.submit()}
diff --git a/src/pages/teamMgmt/team_column.tsx b/src/pages/teamMgmt/team_column.tsx
index 4b3bd35..19b2123 100644
--- a/src/pages/teamMgmt/team_column.tsx
+++ b/src/pages/teamMgmt/team_column.tsx
@@ -3,11 +3,11 @@ import { UserDataType } from "@/model/userModel";
import { ColumnsType } from "antd/lib/table";
export const columns: ColumnsType = [
{
- title: "团队属性名称",
+ title: "团队名称",
dataIndex: "name",
},
{
- title: "团队属性描述",
+ title: "团队描述",
dataIndex: "desc",
},
];
@@ -15,14 +15,14 @@ export const columns: ColumnsType = [
export const defaultConfig = [
{
type: FormType.input,
- label: "团队属性名称",
+ label: "团队名称",
name: "name",
value: "",
rules: [{ required: true, message: "请输入仓库名称!" }],
},
{
type: FormType.input,
- label: "团队属性描述",
+ label: "团队描述",
name: "desc",
value: "",
rules: [{ required: true, message: "请输入仓库位置信息!" }],
diff --git a/src/pages/training/task_archives.tsx b/src/pages/training/task_archives.tsx
index a244183..98be287 100644
--- a/src/pages/training/task_archives.tsx
+++ b/src/pages/training/task_archives.tsx
@@ -34,11 +34,9 @@ const TaskArchives = (props: TaskArchivesProps) => {
const formRef = React.useRef(null);
const getFolderList = () => {
- folderStore
- ?.getFolderList(category_identity)
- .then((res) => {
- setfolderList(res?.data?.record ?? []);
- });
+ folderStore?.getFolderList(category_identity).then((res) => {
+ setfolderList(res?.data?.record ?? []);
+ });
};
const onFinish = async (values: any) => {
let data = values;
@@ -51,8 +49,8 @@ const TaskArchives = (props: TaskArchivesProps) => {
};
const save = async () => {
- let imlist = imageList
- imlist.forEach(element => {
+ let imlist = imageList;
+ imlist.forEach((element) => {
element.file_url = element.url;
element.file_name = element.name;
});
@@ -62,15 +60,15 @@ const TaskArchives = (props: TaskArchivesProps) => {
list: imlist,
category_identity: category_identity,
};
- await trainingStore?.addAcieves(data);
+ await trainingStore?.addAcieves(data);
message.success("档案已保存到当前文件夹");
};
const handleSelect = async (identity) => {
await folderStore?.getAlist(identity).then(() => {
- folderStore.alist?.forEach(elem=>{
- elem.url = elem.file_url
- elem.name = elem.file_name
- })
+ folderStore.alist?.forEach((elem) => {
+ elem.url = elem.file_url;
+ elem.name = elem.file_name;
+ });
setImageList(folderStore.alist ?? []);
});
setIdentity(identity);
diff --git a/src/pages/training/training.tsx b/src/pages/training/training.tsx
index 523a79f..bad7bf7 100644
--- a/src/pages/training/training.tsx
+++ b/src/pages/training/training.tsx
@@ -7,6 +7,7 @@ import {
Select,
InputNumber,
SelectProps,
+ message,
} from "antd";
import { inject, observer } from "mobx-react";
import type { ColumnsType } from "antd/es/table";
@@ -39,20 +40,31 @@ const Trainings = (props: Store) => {
const [data, setData] = useState([]);
const columns: ColumnsType = [
- { title: "任务标题", dataIndex: "title" ,width:200},
- { title: "任务描述", dataIndex: "desc" ,width:200},
- { title: "任务地点", dataIndex: "address" ,width:200},
- { title: "任务开始时间", dataIndex: "start_time" ,width:200},
- { title: "任务结束时间", dataIndex: "end_time" ,width:200},
- { title: "任务积分设置", dataIndex: "score" ,width:200},
- { title: "任务类别", dataIndex: "category_name",width:200 },
- { title: "任务状态", dataIndex: "status",render: (status) => status===2?"已完成":"未完成",width:200},
- { title: "物资归还状态",width:200, dataIndex: "supplies_status",render: (supplies_status) => supplies_status===2?"已归还":"未归还"},
+ { title: "任务标题", dataIndex: "title", width: 200 },
+ { title: "任务描述", dataIndex: "desc", width: 200 },
+ { title: "任务地点", dataIndex: "address", width: 200 },
+ { title: "任务开始时间", dataIndex: "start_time", width: 200 },
+ { title: "任务结束时间", dataIndex: "end_time", width: 200 },
+ { title: "任务积分设置", dataIndex: "score", width: 200 },
+ { title: "任务类别", dataIndex: "category_name", width: 200 },
+ {
+ title: "任务状态",
+ dataIndex: "status",
+ render: (status) => (status === 2 ? "已完成" : "未完成"),
+ width: 200,
+ },
+ {
+ title: "物资归还状态",
+ width: 200,
+ dataIndex: "supplies_status",
+ render: (supplies_status) =>
+ supplies_status === 2 ? "已归还" : "未归还",
+ },
{
title: "操作",
dataIndex: "id",
- width:200,
- fixed:"right",
+ width: 200,
+ fixed: "right",
render: (any, record) => (
- {
- record.status !==2 ?:null
- }
+ {record.status !== 2 ? (
+
+ ) : null}
),
},
@@ -141,7 +152,6 @@ const Trainings = (props: Store) => {
setId(record.id);
};
-
useEffect(() => {
trainingStore.getlist();
}, [trainingStore]);
@@ -149,10 +159,10 @@ const Trainings = (props: Store) => {
trainingCatStore.getlist().then(() => {
setStash(trainingCatStore.list);
});
- baseHttp.get("/user/list", null).then((res) => {
+ baseHttp.get("/team/list", null).then((res) => {
let data = res.data?.record ?? [];
data.forEach((item) => {
- item.label = item.user_name;
+ item.label = item.name;
item.value = item.identity;
});
setUserList(data ?? []);
@@ -160,11 +170,32 @@ const Trainings = (props: Store) => {
}, [trainingCatStore]);
const onFinish = (values: any) => {
+ let task_video: any = [];
+ for (let i = 0; i < values.task_video.length; i++) {
+ let item = values.task_video[i];
+ task_video.push({
+ device: item.split("-")[0],
+ channel: item.split("-")[1],
+ });
+ }
+ if (!task_video || task_video.length === 0) {
+ message.error("请选择视频设备");
+ return;
+ }
+ if (values.score === 0 || values.score === null) {
+ message.error("请完善训练积分");
+ return;
+ }
+ if (values.count === 0 || values.count === null) {
+ message.error("请完善训练次数");
+ return;
+ }
let data = {
...values,
score: Number(values.score),
count: Number(values.count),
};
+ data.task_video = task_video;
if (!tagId) {
trainingStore.add(data);
} else {
@@ -193,11 +224,11 @@ const Trainings = (props: Store) => {
...traningConfig,
{
type: FormType.cehckboxGroup,
- label: "参与人员选择",
- name: "user_id",
+ label: "参与队伍选择",
+ name: "team_id",
value: [],
checkboxData: userList,
- rules: [{ required: true, message: "请选择参与人员!" }],
+ rules: [{ required: true, message: "请选择参与队伍!" }],
},
]);
setId(null);
diff --git a/src/pages/training/traning_config.ts b/src/pages/training/traning_config.ts
index 4aa8814..2421109 100644
--- a/src/pages/training/traning_config.ts
+++ b/src/pages/training/traning_config.ts
@@ -49,5 +49,11 @@ export const traningConfig = [
value: 0,
rules: [{ required: true, message: "请输入训练次数!" }],
},
-
+ {
+ type: FormType.treeVideo,
+ label: "视频地址",
+ name: "task_video",
+ value: [],
+ rules: [{ required: true, message: "请选择视频地址!" }],
+ },
];
\ No newline at end of file
diff --git a/src/pages/user/user_config.tsx b/src/pages/user/user_config.tsx
index 565b612..017108a 100644
--- a/src/pages/user/user_config.tsx
+++ b/src/pages/user/user_config.tsx
@@ -2,7 +2,7 @@ import { FormType } from "@/components/form/interface";
import { UserDataType } from "@/model/userModel";
import { ColumnsType } from "antd/lib/table";
import { Image } from "antd";
-import Config from "@/util/config";
+import { getAgeByIDCard, getBirthDateAndGender } from "@/util/util";
export const defaultConfig =(team,per)=>
[
{
@@ -92,6 +92,7 @@ export const defaultConfig =(team,per)=>
label: "身份证",
name: "id_card",
value: "",
+ rules: [{ required: true, message: "请输入身份证" }],
},
{
type: FormType.input,
@@ -221,7 +222,6 @@ export const defaultConfig =(team,per)=>
label: "头像",
name: "head_img",
value: [],
- // rules: [{ required: true, message: "请上传头像" }],
},
];
@@ -234,21 +234,20 @@ export const columns: ColumnsType = [
},
{
title: "性别",
- dataIndex: "sex",
width: 150,
- render: (sex) => {sex === 1 ? "男" : "女"},
+ render: (render) => {getBirthDateAndGender(render.id_card)?.gender},
},
{
title: "年龄",
width: 150,
- dataIndex: "age",
+ render: (render) => {getAgeByIDCard(render.id_card)}岁,
},
{
title: "头像",
dataIndex: "head_img",
width: 150,
- render: (headImg) =>{
- return
+ render: (head_img) =>{
+ return
},
},
diff --git a/src/store/exce_compet.ts b/src/store/exce_compet.ts
index e43459b..31efbdd 100644
--- a/src/store/exce_compet.ts
+++ b/src/store/exce_compet.ts
@@ -9,17 +9,23 @@ class ExceCompetConfig {
static ADD: string = "exceCompet"
static DELETE: string = "exceCompet"
static EDIT: string = "exceCompet"
+ static Audit: string = "exceCompet/audit"
}
class ExceCompetStore extends BaseStore {
constructor() {
super(ExceCompetConfig)
makeObservable(this, {
- save: action
+ save: action,
+ audit: action
})
}
+ async audit(id: string, param: Object) {
+ await baseHttp.put(ExceCompetConfig.Audit + "/" + id, param)
+ this.getlist();
+ }
async save(id: string, list: Array) {
- return await baseHttp.post(ExceCompetConfig.ADD +"/"+ id, {"list":list});
+ return await baseHttp.post(ExceCompetConfig.ADD + "/" + id, { "list": list });
}
}
export const exceCompetStore = new ExceCompetStore()
diff --git a/src/store/home.ts b/src/store/home.ts
index 466d6ee..c4f1b96 100644
--- a/src/store/home.ts
+++ b/src/store/home.ts
@@ -54,7 +54,7 @@ class HomeStore extends BaseStore {
async getAe() {
return await baseHttp.get(HomeConfig.ae, {});
}
-
+
// 获取视频推流连接
async getVideoUrlList() {
try {
@@ -74,7 +74,7 @@ class HomeStore extends BaseStore {
let data = await baseHttp.gets(Config.videoApi + HomeConfig.channerList, {
start: 0,
limit: 30,
- device:deviceId
+ device: deviceId
})
return data;
} catch (error) {
@@ -83,14 +83,13 @@ class HomeStore extends BaseStore {
}
}
// 获取通道流
- async getChannerStrem(deviceId,channel) {
+ async getChannerStrem(deviceId, channel) {
try {
let data = await baseHttp.gets(Config.videoApi + HomeConfig.channelstream, {
- device:deviceId,
- channel:channel,
- protocol:"HLS"
+ device: deviceId,
+ channel: channel,
+ protocol: "HLS"
})
- console.log(data)
return data;
} catch (error) {
console.log(error)
@@ -98,10 +97,20 @@ class HomeStore extends BaseStore {
}
}
async getNewTask() {
- let res = await baseHttp.get(HomeConfig.newTask, {});
- if (res.data?.record) {
- this.getTaskUserList()
- this.showVideoHandler(true)
+ let urls: any = []
+ try {
+ let res = await baseHttp.get(HomeConfig.newTask, {});
+ if (res.data?.record) {
+ for await (const element of res.data?.record.videos) {
+ let res = await this.getChannerStrem(element.device, element.channel)
+ urls.push(Config.videoApis + res.EasyDarwin?.Body.URL)
+ }
+ this.getTaskUserList()
+ this.showVideoHandler(true)
+ }
+ return urls;
+ } catch (error) {
+ return []
}
}
async getTaskUserList() {
@@ -109,8 +118,8 @@ class HomeStore extends BaseStore {
if (res.data?.record?.ulist && res.data?.record.ulist.length > 0) {
res.data?.record?.ulist.forEach(element => {
MapUtl.addMaker({
- lng: element.long,
- lat: element.lat,
+ lng: element.long ?? 116.478935,
+ lat: element.lat ?? 39.997761,
title: element.user_name,
users: element
})
diff --git a/src/store/sys.ts b/src/store/sys.ts
index 988fdd0..b421389 100644
--- a/src/store/sys.ts
+++ b/src/store/sys.ts
@@ -8,7 +8,8 @@ class SysConfig {
static LISTBannler: string = "sys/banner"
static ADDBanner: string = "sys/banner"
static LIST: string = "sys/drop"
- static ADD: string = "sys/drop"
+ static ADD: string = "sys/drop"
+ static DELETE: string = "sys/drop"
}
class SysStore extends BaseStore {
constructor() {
diff --git a/src/util/config.ts b/src/util/config.ts
index 5215ce3..ea82c27 100644
--- a/src/util/config.ts
+++ b/src/util/config.ts
@@ -1,8 +1,8 @@
class Config {
- static baseUrl = "http://127.0.0.1:12214/";
- static uploadUrl = "https://rw.quwanya.cn";
- static ws = "wss://rw.quwanya.cn/wsadmin?id=admin";
- static userStatic = "https://rw.quwanya.cn/uploads/user/";
+ static baseUrl = "https://www.hswzct.cn:12016/";
+ static uploadUrl = "https://www.hswzct.cn:12016";
+ static ws = "wss://www.hswzct.cn:12016/wsadmin?id=admin";
+ static userStatic = "https://hswzct.cn:12016/uploads/user/";
static videoApi = "https://sprh.hswzct.cn:4443/"; //
static videoApis = "https://sprh.hswzct.cn:4443"; //
}
diff --git a/src/util/util.ts b/src/util/util.ts
new file mode 100644
index 0000000..f29a278
--- /dev/null
+++ b/src/util/util.ts
@@ -0,0 +1,19 @@
+
+function getBirthDateAndGender(idNumber) {
+ if (idNumber && idNumber.length === 18) {
+ const birthDate = idNumber.substring(6, 14);
+ const gender = parseInt(idNumber.substring(16, 17), 10) % 2 === 0 ? '女' : '男';
+ return { birthDate, gender };
+ }
+ return null;
+}
+
+function getAgeByIDCard(idCard) {
+ if(!idCard)return 0
+ const birthYear = idCard.substring(6, 10);
+ const currentYear = new Date().getFullYear();
+ const age = currentYear - parseInt(birthYear);
+ return age;
+}
+
+export { getAgeByIDCard, getBirthDateAndGender }
\ No newline at end of file