From 70815fe9a8e6a9042ac59c0ad5ca93a3fc6436cc Mon Sep 17 00:00:00 2001 From: wang_yp <357754663@qq.com> Date: Mon, 9 Jun 2025 23:08:14 +0800 Subject: [PATCH] fix(bug) --- package-lock.json | 37 ++++++++++++++++++- package.json | 3 +- src/components/b_table.tsx | 14 +++++-- src/components/form/checkbox.tsx | 28 ++++++++++++++ src/components/form/interface.ts | 2 + src/components/form/simple_form.tsx | 15 +++----- src/components/form/tree_select.tsx | 37 +++++++++++++++++++ src/components/layout/layout.tsx | 3 +- .../{layout_config.ts => layout_config.tsx} | 27 ++++++++++---- .../{company_config.tsx => config.tsx} | 0 .../company/{company.less => index.less} | 0 src/pages/company/index.tsx | 4 +- src/pages/dashbord/index.tsx | 24 +++++++++++- src/pages/dep/{dep_config.tsx => config.tsx} | 2 +- src/pages/dep/index.tsx | 2 +- src/pages/event/index.tsx | 6 +++ src/pages/my/index.tsx | 5 +++ src/pages/role/index.tsx | 6 +++ src/pages/role/role_config.tsx | 37 +++++++++++++++---- src/router/index.tsx | 15 +++++++- 20 files changed, 227 insertions(+), 40 deletions(-) create mode 100644 src/components/form/checkbox.tsx create mode 100644 src/components/form/tree_select.tsx rename src/components/layout/{layout_config.ts => layout_config.tsx} (54%) rename src/pages/company/{company_config.tsx => config.tsx} (100%) rename src/pages/company/{company.less => index.less} (100%) rename src/pages/dep/{dep_config.tsx => config.tsx} (98%) create mode 100644 src/pages/event/index.tsx create mode 100644 src/pages/my/index.tsx diff --git a/package-lock.json b/package-lock.json index 92f0221..73f6942 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,11 +1,11 @@ { - "name": "ball_admin", + "name": "store", "version": "0.1.0", "lockfileVersion": 2, "requires": true, "packages": { "": { - "name": "ball_admin", + "name": "store", "version": "0.1.0", "dependencies": { "@amap/amap-jsapi-loader": "^1.0.1", @@ -43,6 +43,7 @@ "dotenv": "^10.0.0", "dotenv-expand": "^5.1.0", "echarts": "^5.5.1", + "echarts-for-react": "^3.0.2", "eslint": "^8.3.0", "eslint-config-react-app": "^7.0.1", "eslint-webpack-plugin": "^3.1.1", @@ -9566,6 +9567,19 @@ "zrender": "5.6.0" } }, + "node_modules/echarts-for-react": { + "version": "3.0.2", + "resolved": "https://registry.npmmirror.com/echarts-for-react/-/echarts-for-react-3.0.2.tgz", + "integrity": "sha512-DRwIiTzx8JfwPOVgGttDytBqdp5VzCSyMRIxubgU/g2n9y3VLUmF2FK7Icmg/sNVkv4+rktmrLN9w22U2yy3fA==", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "size-sensor": "^1.0.1" + }, + "peerDependencies": { + "echarts": "^3.0.0 || ^4.0.0 || ^5.0.0", + "react": "^15.0.0 || >=16.0.0" + } + }, "node_modules/ee-first": { "version": "1.1.1", "resolved": "https://registry.npmmirror.com/ee-first/-/ee-first-1.1.1.tgz", @@ -29964,6 +29978,11 @@ "resolved": "https://registry.npmmirror.com/sisteransi/-/sisteransi-1.0.5.tgz", "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==" }, + "node_modules/size-sensor": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/size-sensor/-/size-sensor-1.0.2.tgz", + "integrity": "sha512-2NCmWxY7A9pYKGXNBfteo4hy14gWu47rg5692peVMst6lQLPKrVjhY+UTEsPI5ceFRJSl3gVgMYaUi/hKuaiKw==" + }, "node_modules/slash": { "version": "3.0.0", "resolved": "https://registry.npmmirror.com/slash/-/slash-3.0.0.tgz", @@ -40855,6 +40874,15 @@ "zrender": "5.6.0" } }, + "echarts-for-react": { + "version": "3.0.2", + "resolved": "https://registry.npmmirror.com/echarts-for-react/-/echarts-for-react-3.0.2.tgz", + "integrity": "sha512-DRwIiTzx8JfwPOVgGttDytBqdp5VzCSyMRIxubgU/g2n9y3VLUmF2FK7Icmg/sNVkv4+rktmrLN9w22U2yy3fA==", + "requires": { + "fast-deep-equal": "^3.1.3", + "size-sensor": "^1.0.1" + } + }, "ee-first": { "version": "1.1.1", "resolved": "https://registry.npmmirror.com/ee-first/-/ee-first-1.1.1.tgz", @@ -56084,6 +56112,11 @@ "resolved": "https://registry.npmmirror.com/sisteransi/-/sisteransi-1.0.5.tgz", "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==" }, + "size-sensor": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/size-sensor/-/size-sensor-1.0.2.tgz", + "integrity": "sha512-2NCmWxY7A9pYKGXNBfteo4hy14gWu47rg5692peVMst6lQLPKrVjhY+UTEsPI5ceFRJSl3gVgMYaUi/hKuaiKw==" + }, "slash": { "version": "3.0.0", "resolved": "https://registry.npmmirror.com/slash/-/slash-3.0.0.tgz", diff --git a/package.json b/package.json index 526fecb..d789b61 100644 --- a/package.json +++ b/package.json @@ -38,6 +38,7 @@ "dotenv": "^10.0.0", "dotenv-expand": "^5.1.0", "echarts": "^5.5.1", + "echarts-for-react": "^3.0.2", "eslint": "^8.3.0", "eslint-config-react-app": "^7.0.1", "eslint-webpack-plugin": "^3.1.1", @@ -94,7 +95,7 @@ "build": "node scripts/build.js", "test": "node scripts/test.js" }, - "proxy":"http://127.0.0.1:12216/v1", + "proxy": "http://127.0.0.1:12216/v1", "eslintConfig": { "extends": [ "react-app", diff --git a/src/components/b_table.tsx b/src/components/b_table.tsx index cbcfc06..f067101 100644 --- a/src/components/b_table.tsx +++ b/src/components/b_table.tsx @@ -139,11 +139,19 @@ const BTable = (props: any) => { formRef={formRef} colProps={25} onFinish={() => { - if(!record){ - store.add(formRef.current?.getFieldsValue()); + if (!record) { + store.add(formRef.current?.getFieldsValue()).then((res) => { + if (res) { + setIsModalOpen(false); + } + }); return } - store.putItem(record.identity,formRef.current?.getFieldsValue()); + store.putItem(record.identity, formRef.current?.getFieldsValue()).then((res) => { + if (res) { + setIsModalOpen(false); + } + }); }} createCallback={() => { formRef.current?.setFieldsValue(record); diff --git a/src/components/form/checkbox.tsx b/src/components/form/checkbox.tsx new file mode 100644 index 0000000..86ce1a4 --- /dev/null +++ b/src/components/form/checkbox.tsx @@ -0,0 +1,28 @@ +import { FormDatas } from "./interface"; +import { useEffect, useState } from "react"; +import { base } from "@/service/base"; +import { Checkbox, Form } from "antd"; + +export const FormCheckBox = (v: FormDatas) => { + const [list, setList] = useState([]); + useEffect(() => { + if (v.selectList && v.selectList.length > 0) { + setList(v.selectList); + } else { + base.get(`${v.selectUrl}/?size=50&offset=1`, "").then((res) => { + setList(res.data.record ?? []); + }); + } + }, [v.selectUrl, v.selectList]); + return ( + + + {list.map((item, index) => { + return + {item.data_name} + + })} + + + ); +}; diff --git a/src/components/form/interface.ts b/src/components/form/interface.ts index f25c015..f576de8 100644 --- a/src/components/form/interface.ts +++ b/src/components/form/interface.ts @@ -15,6 +15,7 @@ export enum FormType { password = "password", treeVideo = "treeVideo", fetchList = "fetchList", + treeSelect = "treeSelect" } export interface FormDatas { @@ -24,6 +25,7 @@ export interface FormDatas { value: any, selectUrl?: string, key?: string, + treeCheckbox:boolean, selectList?: Array checkboxData?: Array, radioData?: Array, diff --git a/src/components/form/simple_form.tsx b/src/components/form/simple_form.tsx index facea0e..bea4edb 100644 --- a/src/components/form/simple_form.tsx +++ b/src/components/form/simple_form.tsx @@ -5,6 +5,8 @@ import { FormSelect } from "./select"; import AliUpload from "../ali_upload"; import MyEditor from "../edittor"; import MapFrom from "../map/MapFrom"; +import { FormTreeSelect } from "./tree_select"; +import { FormCheckBox } from "./checkbox"; // import VideoSelect from "../video_select"; const { TextArea } = Input; const SimpleForm = (props: SimpleFormData) => { @@ -67,16 +69,9 @@ const SimpleForm = (props: SimpleFormData) => { ); case FormType.cehckbox: - return ( - - Remember me - - ); + return FormCheckBox(v) + case FormType.treeSelect: + return FormTreeSelect(v); case FormType.cehckboxGroup: return ( { + const [list, setList] = useState([]); + useEffect(() => { + if (v.selectList && v.selectList.length > 0) { + setList(v.selectList); + } else { + base.get(`${v.selectUrl}/?size=50&offset=1`, "").then((res) => { + setList(res.data.record ?? []); + }); + } + }, [v.selectUrl, v.selectList]); + return ( + + + + ); +}; diff --git a/src/components/layout/layout.tsx b/src/components/layout/layout.tsx index c985090..dc40ac7 100644 --- a/src/components/layout/layout.tsx +++ b/src/components/layout/layout.tsx @@ -83,11 +83,12 @@ const LayOut = (props: Store) => {
黄甲数据
{ - console.log(e.key === "loginout") if (e.key === "loginout") { window.localStorage.removeItem("token") nav("/login") + return } + nav(e.key) } }}> } /> diff --git a/src/components/layout/layout_config.ts b/src/components/layout/layout_config.tsx similarity index 54% rename from src/components/layout/layout_config.ts rename to src/components/layout/layout_config.tsx index e1a0531..1303722 100644 --- a/src/components/layout/layout_config.ts +++ b/src/components/layout/layout_config.tsx @@ -1,39 +1,50 @@ +import { HomeOutlined, UserSwitchOutlined, DatabaseOutlined, PaperClipOutlined, SettingOutlined } from '@ant-design/icons'; + export const items = [ { key: "/", label: `首页看板`, + icon: }, { key: "/user", label: `用户管理`, + icon: , children: [{ key: "/user/list", label: `用户管理` }], }, { key: "/source", label: `数据管理`, - children: [{ label: "数据管理", key: "/source/list" }], + icon: , + children: [ + { label: "人员", key: "/source/list" }, + { label: "事件", key: "/source/event" } + ], }, { key: "/permi", label: `权限管理`, + icon: , children: [ { label: `企业管理`, key: "/permi/company" }, { label: `部门管理`, key: "/permi/dep" }, - { label: `权限管理`, key: "/permi/permi" }, { label: `角色管理`, key: "/permi/role" }, { label: `菜单管理`, key: "/permi/menu" }, ], }, - // { - // key: "/sys", - // label: `系统管理`, - // children: [], - // }, + { + icon: , + key: "/sys", + label: `系统管理`, + children: [ + // { label: `常用`, key: "/sys/use" }, + ], + }, ]; export const headItems = [ { - key: "my", + key: "/my/use", label: `我的`, }, { diff --git a/src/pages/company/company_config.tsx b/src/pages/company/config.tsx similarity index 100% rename from src/pages/company/company_config.tsx rename to src/pages/company/config.tsx diff --git a/src/pages/company/company.less b/src/pages/company/index.less similarity index 100% rename from src/pages/company/company.less rename to src/pages/company/index.less diff --git a/src/pages/company/index.tsx b/src/pages/company/index.tsx index 5a8924f..71d5df8 100644 --- a/src/pages/company/index.tsx +++ b/src/pages/company/index.tsx @@ -2,8 +2,8 @@ import { inject, observer } from "mobx-react"; import BTable from "@/components/b_table"; import { useEffect } from "react"; import { Store } from "antd/lib/form/interface"; -import { columns, defaultConfig } from "./company_config"; -import "./company.less"; +import { columns, defaultConfig } from "./config"; +import "./index.less"; const Company = (props: Store) => { const { companyStore } = props; diff --git a/src/pages/dashbord/index.tsx b/src/pages/dashbord/index.tsx index ccb7332..03d187e 100644 --- a/src/pages/dashbord/index.tsx +++ b/src/pages/dashbord/index.tsx @@ -3,12 +3,32 @@ import { inject, observer } from "mobx-react"; import { Store } from "antd/lib/form/interface"; import React from "react"; import "./index.less"; - +import ReactECharts from 'echarts-for-react'; const Dashbord = (props: Store) => { + const options = { + grid: { top: 8, right: 8, bottom: 24, left: 36 }, + xAxis: { + type: 'category', + data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'], + }, + yAxis: { + type: 'value', + }, + series: [ + { + data: [820, 932, 901, 934, 1290, 1330, 1320], + type: 'line', + smooth: true, + }, + ], + tooltip: { + trigger: 'axis', + }, + }; return (
- 数据看板 +
); diff --git a/src/pages/dep/dep_config.tsx b/src/pages/dep/config.tsx similarity index 98% rename from src/pages/dep/dep_config.tsx rename to src/pages/dep/config.tsx index bb56f47..eecb235 100644 --- a/src/pages/dep/dep_config.tsx +++ b/src/pages/dep/config.tsx @@ -48,7 +48,7 @@ export const defaultConfig = [ rules: [], }, { - type: FormType.select, + type: FormType.treeSelect, label: "所属企业", name: "company_id", value: 0, diff --git a/src/pages/dep/index.tsx b/src/pages/dep/index.tsx index 8835cdf..4e18413 100644 --- a/src/pages/dep/index.tsx +++ b/src/pages/dep/index.tsx @@ -2,7 +2,7 @@ import { inject, observer } from "mobx-react"; import BTable from "@/components/b_table"; import { useEffect } from "react"; import { Store } from "antd/lib/form/interface"; -import { columns, defaultConfig } from "./dep_config"; +import { columns, defaultConfig } from "./config"; import "./dep.less"; const Dep = (props: Store) => { diff --git a/src/pages/event/index.tsx b/src/pages/event/index.tsx new file mode 100644 index 0000000..2e13e79 --- /dev/null +++ b/src/pages/event/index.tsx @@ -0,0 +1,6 @@ +const Event = () => { + return
dev +
+} + +export default Event; \ No newline at end of file diff --git a/src/pages/my/index.tsx b/src/pages/my/index.tsx new file mode 100644 index 0000000..805f296 --- /dev/null +++ b/src/pages/my/index.tsx @@ -0,0 +1,5 @@ +export const My = () => { + return
+ my +
+} \ No newline at end of file diff --git a/src/pages/role/index.tsx b/src/pages/role/index.tsx index 7eb3cb9..a360253 100644 --- a/src/pages/role/index.tsx +++ b/src/pages/role/index.tsx @@ -3,9 +3,15 @@ import BTable from "@/components/b_table"; import { Store } from "antd/lib/form/interface"; import { columns, defaultConfig } from "./role_config"; import "./role.less"; +import { useEffect } from "react"; const Role = (props: Store) => { const { roleStore } = props; + + useEffect(() => { + roleStore.getlist(); + }, [roleStore]); + return (
, + }, + { + path: "/source/event", + index: true, + element: , }, { path: "/permi/permi", @@ -49,17 +56,23 @@ const routers = createHashRouter([ index: true, element: , }, - { + { path: "/permi/company", index: true, element: , }, + ], }, { path: "/login", element: , }, + { + path: "/my/use", + index: true, + element: , + }, ]); export { routers };