This commit is contained in:
wang_yp 2025-06-15 22:46:18 +08:00
parent 992ce27014
commit 0c63810c25
10 changed files with 235 additions and 25 deletions

View File

@ -126,7 +126,7 @@ const SimpleForm = (props: SimpleFormData) => {
>
<TextArea
value={v.name}
placeholder="Controlled autosize"
placeholder={v.label}
autoSize={{ minRows: 3, maxRows: 5 }}
/>
</Form.Item>

View File

@ -31,6 +31,8 @@ const LayOut = (props: Store) => {
const { usrStore } = props;
const [collapsed, setCollapsed] = useState(false);
const nav = useNavigate();
const [muens, setMenus] = useState([])
const {
token: { colorBgContainer, borderRadiusLG },
} = theme.useToken();
@ -54,11 +56,24 @@ const LayOut = (props: Store) => {
];
const [stateOpenKeys, setStateOpenKeys] = useState(['2', '23']);
useEffect(() => {
// if (usrStore.isNeedLogin) {
// nav("/login");
// }
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [usrStore.isNeedLogin]);
usrStore.getMenu().then((res) => {
const men: any = [...res];
men.forEach(element => {
element.label = element.name;
element.key = element.router_path;
if (element.children?.length > 0) {
element.children?.forEach((i) => {
i.label = i.name;
i.key = i.router_path;
})
}
if (element.children?.length === 0) {
element.children = null
}
});
setMenus(men)
})
}, [usrStore, usrStore.isNeedLogin]);
const onOpenChange: MenuProps['onOpenChange'] = (openKeys) => {
const currentOpenKey = openKeys.find((key) => stateOpenKeys.indexOf(key) === -1);
// open
@ -109,7 +124,7 @@ const LayOut = (props: Store) => {
openKeys={stateOpenKeys}
style={{ height: "100%", borderRight: 0 }}
onOpenChange={onOpenChange}
items={items}
items={muens}
onClick={(e) => {
nav(e.key);
}}

View File

@ -1,14 +1,8 @@
import { Space } from "antd";
import { inject, observer } from "mobx-react";
import { Store } from "antd/lib/form/interface";
import React, { useEffect } from "react";
import "./index.less";
import ReactECharts from 'echarts-for-react';
const Dashbord = (props: Store) => {
const { usrStore } = props;
useEffect(() => {
usrStore.getMenu()
}, [])
const options = {
grid: { top: 8, right: 8, bottom: 24, left: 36 },
xAxis: {
@ -38,4 +32,4 @@ const Dashbord = (props: Store) => {
);
};
export default inject("usrStore")(observer(Dashbord));
export default Dashbord;

149
src/pages/event/config.tsx Normal file
View File

@ -0,0 +1,149 @@
import { FormType } from "@/components/form/interface";
import { UserDataType } from "@/model/userModel";
import { ColumnsType } from "antd/es/table";
export const defaultConfig = [
{
type: FormType.input,
label: "事件名称",
name: "name",
value: "",
rules: [{ required: true, message: "请输入事件名称!" }],
},
{
type: FormType.input,
label: "事件描述",
name: "desc",
value: "",
rules: [{ required: true, message: "请输入事件描述!" }],
},
{
type: FormType.textarea,
label: "事件内容",
name: "content",
value: "",
rules: [{ required: true, message: "请输入事件内容!" }],
},
{
type: FormType.input,
label: "事件地点",
name: "address",
value: "",
rules: [{ required: true, message: "请输入事件地点!" }],
},
{
type: FormType.input,
label: "事件开始时间",
name: "start_time",
value: "",
rules: [{ required: true, message: "请输入事件开始时间!" }],
},
{
type: FormType.input,
label: "事件开始时间",
name: "end_time",
value: "",
rules: [{ required: true, message: "请输入事件开始时间!" }],
},
{
type: FormType.input,
label: "造成的影响",
name: "effect",
value: "",
rules: [{ required: true, message: "请输入影响!" }],
},
{
type: FormType.input,
label: "负责人名称",
name: "director",
value: "",
rules: [{ required: true, message: "请输入负责人名称!" }],
},
{
type: FormType.input,
label: "负责人电话",
name: "tel",
value: "",
rules: [{ required: true, message: "请输入负责人电话!" }],
},
{
type: FormType.input,
label: "负责人身份证",
name: "id_card",
value: "",
rules: [{ required: true, message: "请输入负责人身份证!" }],
},
{
type: FormType.select,
label: "事件等级",
name: "level",
value: 1,
selectList: [
{
name: "普通",
id: 1,
}, {
name: "紧急",
id: 2,
}, {
name: "特级",
id: 3,
}
],
rules: [{ required: true, message: "请输入事件等级!" }],
},
{
type: FormType.upload,
label: "现场拍摄",
name: "images",
value: [],
rules: [{ required: true, message: "现场图片不能为空!" }],
},
]
export const columns: ColumnsType<UserDataType> = [
{
title: "事件名称",
dataIndex: "name",
fixed: "left",
},
{
title: "事件描述",
dataIndex: "desc",
},
{
title: "事件内容",
dataIndex: "content",
},
{
title: "事件地点",
dataIndex: "address",
},
{
title: "事件开始时间",
dataIndex: "start_time",
},
{
title: "事件结束时间",
dataIndex: "end_time",
},
{
title: "影响",
dataIndex: "effect",
},
{
title: "负责人名称",
dataIndex: "director",
},
{
title: "电话",
dataIndex: "tel",
},
{
title: "负责人身份证",
dataIndex: "id_card",
},
];

View File

@ -1,6 +1,25 @@
const Event = () => {
return <div>dev
import BTable from "@/components/b_table";
import { Store } from "antd/es/form/interface";
import { inject, observer } from "mobx-react";
import { useEffect } from "react";
import { columns, defaultConfig } from "./config";
const Event = (props: Store) => {
const { thingStore } = props;
useEffect(() => {
thingStore.getlist();
}, [thingStore]);
return <div className="contentBox">
<BTable
btnText="添加事件"
store={thingStore}
scroll={{ x: "max-content" }}
columns={columns}
dataSource={thingStore.list??[]}
config={defaultConfig}
/>
</div>
}
export default Event;
export default inject("thingStore")(observer(Event));

View File

@ -71,7 +71,6 @@ export const defaultConfig = [
name: "head_img",
value: [],
},
];
export const columns: ColumnsType<UserDataType> = [
@ -100,17 +99,26 @@ export const columns: ColumnsType<UserDataType> = [
{
title: "登录账号",
width: 150,
dataIndex: "account",
},
{
title: "身份证",
width: 150,
dataIndex: "id_card",
},
{
title: "联系电话",
width: 150,
dataIndex: "tel",
},
{
title: "所属部门",
dataIndex: "",
},
{
title: "所属单位",
dataIndex: "",
},
{
title: "角色",
dataIndex: "",
}
];

View File

@ -37,4 +37,12 @@ class CompanyConfig {
}
export { RoleConfig, UserConfig, MenuConfig, DepConfig, CompanyConfig };
class EventConfig {
static ADD: string = "/thing";
static EDIT: string = "/thing";
static LIST: string = "/thing/list";
static DELETE: string = "/thing";
}
export { RoleConfig, UserConfig, MenuConfig, DepConfig, CompanyConfig,EventConfig };

View File

@ -4,6 +4,7 @@ import roleStore from './role';
import menuStore from './menu';
import depStore from './dep';
import companyStore from './company';
import thingStore from './thing';
const store = {
usrStore,
@ -11,7 +12,8 @@ const store = {
roleStore,
menuStore,
depStore,
companyStore
companyStore,
thingStore,
};
export default store;

15
src/store/thing.ts Normal file
View File

@ -0,0 +1,15 @@
import { makeObservable } from "mobx";
import BaseStore from "./baseStore";
import { UserDataType } from "@/model/userModel";
import { EventConfig } from "@/service/user_config";
class ThingStore extends BaseStore<UserDataType> {
constructor() {
super(EventConfig)
makeObservable(this, {
})
}
}
const thingStore = new ThingStore();
export default thingStore;

View File

@ -71,8 +71,8 @@ class UserStore extends BaseStore<UserDataType> {
this.userDetail = data
}
async getMenu() {
let data = await base.get(UserConfig.menu, {})
console.log(data)
let res = await base.get(UserConfig.menu, {})
return res.data.record
}
}
const userStore = new UserStore();