fix(api):iop

This commit is contained in:
wang_yp 2024-09-05 01:21:16 +08:00
parent 66a3d55f14
commit 8a7b183c7c
60 changed files with 7 additions and 3371 deletions

View File

@ -1,11 +1,8 @@
import { inject, observer } from "mobx-react";
import LayOut from "./components/layout/layout";
import "antd/dist/antd.css";
import Login from "./pages/login/login";
import Home from "./pages/home";
const App = (props: any) => {
const { usrStore } = props;
const user = usrStore.userInfo;
return user?.token ? <LayOut userStore={usrStore} /> : <Login />;
return <Home />
};
export default inject("usrStore")(observer(App));

View File

@ -1,61 +1,10 @@
import { Outlet, useNavigate } from "react-router-dom";
import { Layout, Menu } from "antd";
import "./layout.less";
import { MenuFoldOutlined, MenuUnfoldOutlined } from "@ant-design/icons";
import { useState } from "react";
import type { MenuProps } from 'antd';
import React from "react";
import menuList from "../menu";
const LayOut = (props: any) => {
const { Header, Sider } = Layout;
const [collapsed, setCollapsed] = useState(false);
const navigate = useNavigate();
const [openKeys, setOpenKeys] = useState(["/"]);
const rootSubmenuKeys = ['/', '/user-manage', '/dynamic-manage',"/active","/merchant-manage","/system","/rbac"];
const onOpenChange:MenuProps['onOpenChange'] = (keys) => {
const latestOpenKey = keys.find((key) => openKeys.indexOf(key) === -1);
if (latestOpenKey && rootSubmenuKeys.indexOf(latestOpenKey!) === -1) {
setOpenKeys(keys);
} else {
setOpenKeys(latestOpenKey ? [latestOpenKey] : []);
}
};
return (
<div className="layout">
<Layout>
<Sider trigger={null} collapsible collapsed={collapsed}>
<div className="logo" />
<Menu
theme="dark"
mode="inline"
openKeys={openKeys}
defaultSelectedKeys={["1"]}
onClick={(key) => navigate(key.key)}
onOpenChange={onOpenChange}
items={menuList}
/>
</Sider>
<Layout className="site-layout">
<Header className="site-layout-background" style={{ padding: 0 }}>
{React.createElement(
collapsed ? MenuUnfoldOutlined : MenuFoldOutlined,
{
className: "trigger",
onClick: () => setCollapsed(!collapsed),
}
)}
<div
className="loginOut"
onClick={() => {
props.userStore.logOut();
}}
>
退
</div>
</Header>
<Outlet />
</Layout>
</Layout>
</div>
);
};

View File

@ -1,23 +0,0 @@
import {
UserOutlined,
VideoCameraOutlined,
} from "@ant-design/icons";
const activeMenu = {
key: "/active",
icon: <UserOutlined />,
label: "活动管理",
children: [
{
key: "/active-list",
icon: <VideoCameraOutlined />,
label: "活动列表",
},
{
key: "/active-type-list",
icon: <VideoCameraOutlined />,
label: "活动类型列表",
},
],
};
export default activeMenu;

View File

@ -1,18 +0,0 @@
import {
UserOutlined,
VideoCameraOutlined,
} from "@ant-design/icons";
const appMenu = {
key: "/app",
icon: <UserOutlined />,
label: "app管理",
children: [
{
key: "/app/list",
icon: <VideoCameraOutlined />,
label: "app列表",
},
],
};
export default appMenu;

View File

@ -1,29 +0,0 @@
import {
UserOutlined,
VideoCameraOutlined
} from '@ant-design/icons';
const cardMenu =
{
key: '/card',
icon: <UserOutlined />,
label: '卡片管理',
children: [
{
key: '/card/list',
icon: <VideoCameraOutlined />,
label: '用户卡片',
},
{
key: '/card/character',
icon: <VideoCameraOutlined />,
label: '人物卡片',
},
{
key: '/card/currentEvent',
icon: <VideoCameraOutlined />,
label: '实事卡片',
},
]
};
export default cardMenu;

View File

@ -1,24 +0,0 @@
import {
UploadOutlined,
UserOutlined,
VideoCameraOutlined,
} from "@ant-design/icons";
const communityMenu = {
key: "/xiaoqu",
icon: <UserOutlined />,
label: "小区管理",
children: [
{
key: "/project2",
icon: <VideoCameraOutlined />,
label: "go to home",
},
{
key: "/project3",
icon: <UploadOutlined />,
label: "go test",
},
],
};
export default communityMenu;

View File

@ -1,24 +0,0 @@
import {
UploadOutlined,
UserOutlined,
VideoCameraOutlined,
} from "@ant-design/icons";
const contentMenu = {
key: "/project12",
icon: <UserOutlined />,
label: "内容管理",
children: [
{
key: "/project13",
icon: <VideoCameraOutlined />,
label: "go to home",
},
{
key: "/project14",
icon: <UploadOutlined />,
label: "go test",
},
],
};
export default contentMenu;

View File

@ -1,24 +0,0 @@
import {
UploadOutlined,
UserOutlined,
VideoCameraOutlined,
} from "@ant-design/icons";
const demand = {
key: "/demand",
icon: <UserOutlined />,
label: "需求池",
children: [
{
key: "/shop1",
icon: <VideoCameraOutlined />,
label: "go to home",
},
{
key: "/shop2",
icon: <UploadOutlined />,
label: "go test",
},
],
};
export default demand;

View File

@ -1,18 +0,0 @@
import {
UserOutlined,
VideoCameraOutlined,
} from "@ant-design/icons";
const dynimacStateMenu = {
key: "/dynamic-manage",
icon: <UserOutlined />,
label: "动态管理",
children: [
{
key: "/dynamic-list",
icon: <VideoCameraOutlined />,
label: "动态列表",
},
],
};
export default dynimacStateMenu;

View File

@ -1,24 +0,0 @@
import {
UploadOutlined,
UserOutlined,
VideoCameraOutlined,
} from "@ant-design/icons";
const goodsMenu = {
key: "/shop",
icon: <UserOutlined />,
label: "商品管理",
children: [
{
key: "/shop1",
icon: <VideoCameraOutlined />,
label: "go to home",
},
{
key: "/shop2",
icon: <UploadOutlined />,
label: "go test",
},
],
};
export default goodsMenu;

View File

@ -1,32 +0,0 @@
import { ItemType } from "antd/lib/menu/hooks/useItems";
import { UserOutlined } from "@ant-design/icons";
import userMenu from "./user";
import activeMenu from "./active";
import taskMenu from "./task";
import contentMenu from "./content_menu";
import system from "./system";
import merchant from "./merchant";
import dynimacStateMenu from "./dynimac_state";
import rbac from "./rbac";
import app from "./app";
import demand from "./demand";
// demand
const menuList: ItemType[] = [
{
key: "/",
icon: <UserOutlined />,
label: "首页",
},
userMenu,
demand,
contentMenu,
dynimacStateMenu,
activeMenu,
merchant,
system,
rbac,
taskMenu,
app,
];
export default menuList;

View File

@ -1,35 +0,0 @@
import {
UploadOutlined,
UserOutlined,
VideoCameraOutlined,
} from "@ant-design/icons";
const merchant = {
key: "/merchant-manage",
icon: <UserOutlined />,
label: "商户管理",
children: [
{
key: "/merchant",
icon: <VideoCameraOutlined />,
label: "商家管理",
},
{
key: "/project",
icon: <UploadOutlined />,
label: "商品管理",
},
{
key: "/productType",
icon: <UploadOutlined />,
label: "类型设置",
},
{
key: "/productUnit",
icon: <UploadOutlined />,
label: "单位设置",
},
],
};
export default merchant;

View File

@ -1,30 +0,0 @@
import {
UploadOutlined,
UserOutlined,
VideoCameraOutlined,
} from '@ant-design/icons';
const permissionMenu =
{
key: '/project15',
icon: <UserOutlined />,
label: 'rbac',
children: [
{
key: '/role',
icon: <VideoCameraOutlined />,
label: '角色管理',
},
{
key: '/premission',
icon: <UploadOutlined />,
label: '权限管理',
},
{
key: '/keyword',
icon: <UploadOutlined />,
label: '关键字',
},
]
};
export default permissionMenu;

View File

@ -1,24 +0,0 @@
import {
UploadOutlined,
UserOutlined,
VideoCameraOutlined,
} from "@ant-design/icons";
const projectMenu = {
key: "/projectManagement",
icon: <UserOutlined />,
label: "产品管理",
children: [
{
key: "/project",
icon: <VideoCameraOutlined />,
label: "go to home",
},
{
key: "/project1",
icon: <UploadOutlined />,
label: "go test",
},
],
};
export default projectMenu;

View File

@ -1,24 +0,0 @@
import {
UploadOutlined,
UserOutlined,
VideoCameraOutlined,
} from "@ant-design/icons";
const rbac = {
key: "/rbac",
icon: <UserOutlined />,
label: "权限管理",
children: [
{
key: "/rule",
icon: <VideoCameraOutlined />,
label: "角色管理",
},
{
key: "/permission",
icon: <UploadOutlined />,
label: "权限管理",
},
],
};
export default rbac;

View File

@ -1,25 +0,0 @@
import {
UploadOutlined,
UserOutlined,
VideoCameraOutlined,
} from '@ant-design/icons';
const stadiumMenu =
{
key: '/project6',
icon: <UserOutlined />,
label: '分类管理',
children: [
{
key: '/project4',
icon: <VideoCameraOutlined />,
label: '球场列表',
},
{
key: '/project5',
icon: <UploadOutlined />,
label: '球场列表',
},
]
};
export default stadiumMenu;

View File

@ -1,29 +0,0 @@
import {
UploadOutlined,
UserOutlined,
VideoCameraOutlined,
} from "@ant-design/icons";
const system = {
key: "/system",
icon: <UserOutlined />,
label: "系统管理",
children: [
{
key: "/banner",
icon: <VideoCameraOutlined />,
label: "banner",
},
{
key: "/logs",
icon: <UploadOutlined />,
label: "日志管理",
},
{
key: "/keywork",
icon: <UploadOutlined />,
label: "关键字",
},
],
};
export default system;

View File

@ -1,28 +0,0 @@
import {
UserOutlined,
VideoCameraOutlined,
} from "@ant-design/icons";
const taskMenu = {
key: "/task",
icon: <UserOutlined />,
label: "任务管理",
children: [
{
key: "/task-list",
icon: <VideoCameraOutlined />,
label: "任务列表",
},
{
key: "/task-type-list",
icon: <VideoCameraOutlined />,
label: "任务类型管理",
},
{
key: "/task-type",
icon: <VideoCameraOutlined />,
label: "任务紧急",
},
],
};
export default taskMenu;

View File

@ -1,19 +0,0 @@
import {
UserOutlined,
VideoCameraOutlined
} from '@ant-design/icons';
const userMenu =
{
key: '/user-manage',
icon: <UserOutlined />,
label: '用户管理',
children: [
{
key: '/user',
icon: <VideoCameraOutlined />,
label: '用户列表',
},
]
};
export default userMenu;

View File

@ -1,24 +0,0 @@
import {
UploadOutlined,
UserOutlined,
VideoCameraOutlined,
} from "@ant-design/icons";
const videoMenu = {
key: "/project9",
icon: <UserOutlined />,
label: "视频管理",
children: [
{
key: "/project10",
icon: <VideoCameraOutlined />,
label: "go to home",
},
{
key: "/tesproject11t",
icon: <UploadOutlined />,
label: "go test",
},
],
};
export default videoMenu;

View File

@ -1,229 +0,0 @@
import { Button, Space, Modal, Switch, Tooltip } from "antd";
import { inject, observer } from "mobx-react";
import type { ColumnsType } from "antd/es/table";
import BTable from "@/components/b_table";
import { useEffect, useState } from "react";
import { UserDataType } from "@/model/userModel";
import { Store } from "antd/lib/form/interface";
import SimpleForm from "@/components/form/simple_form";
import { FormInstance } from "antd/es/form/Form";
import React from "react";
import ActiveConfig from "@/service/apiConfig/active";
import dayjs from "dayjs";
const Active = (props: Store) => {
const { activityStore } = props;
const [projectConfig, setProjectConfig] = useState<any>([]);
const [id, setId] = useState<any>(null);
const [record, setRecord] = useState<any>(null);
const formRef = React.useRef<FormInstance>(null);
const [isModalOpen, setIsModalOpen] = useState(false);
const columns: ColumnsType<UserDataType> = [
{
title: "活动标题",
dataIndex: "title",
width: 200,
},
{
title: "活动描述",
dataIndex: "desc",
width: 200,
},
{
title: "活动图片",
dataIndex: "activeIcon",
width: 200,
ellipsis: {
showTitle: false,
},
render: (address) => (
<Tooltip placement="topLeft" title={address}>
{address}
</Tooltip>
),
},
{
title: "活动人数",
dataIndex: "peopleNum",
width: 200,
},
{
title: "活动地址",
dataIndex: "address",
width: 200,
},
{
title: "折扣",
dataIndex: "discount",
width: 200,
},
{
title: "活动开始时间",
dataIndex: "startTime",
width: 200,
},
{
title: "活动结束时间",
dataIndex: "endTime",
width: 200,
},
{
title: "活动状态",
width: 200,
render: (any, record) => <span>{record.status ? "开启" : "关闭"}</span>,
},
{
width: 200,
title: "发起人",
dataIndex: "userId",
},
{
title: "操作",
width: 200,
fixed: "right",
dataIndex: "id",
render: (any, record) => (
<div>
<Space direction="vertical">
<Space wrap>
<Switch
defaultChecked
onChange={(bools) => {
onChange(bools, record);
}}
/>
<Button
type="dashed"
danger
size="small"
onClick={() => {
activityStore.deleteItem(record.id);
}}
>
</Button>
<Button
type="dashed"
size="small"
onClick={() => {
editAction(record);
}}
>
</Button>
</Space>
</Space>
</div>
),
},
];
const editAction = (record) => {
record.startTime = dayjs(record.startTime, "YYYY-MM-DD");
record.endTime = dayjs(record.endTime, "YYYY-MM-DD");
setProjectConfig(defaultConfig);
setIsModalOpen(true);
formRef.current?.setFieldsValue(record);
setRecord(record);
setId(record.id);
};
const onChange = (bools, record) => {
activityStore.putItem(record.id, {
status: bools,
activeName: record.activeName,
discount: record.discount,
startTime: record.startTime,
endTime: record.endTime,
});
};
const defaultConfig = [
{
type: "input",
label: "活动名称",
name: "activeName",
value: "",
rules: [{ required: true, message: "请输入活动名称!" }],
},
{
type: "input",
label: "折扣",
name: "discount",
value: "",
},
{
type: "Date",
label: "活动开始时间",
name: "startTime",
value: "",
},
{
type: "Date",
label: "活动结束时间",
name: "endTime",
value: "",
},
];
useEffect(() => {
activityStore.getlist(ActiveConfig.LIST);
}, [activityStore]);
const onFinish = (values: any) => {
values["startTime"] = values["startTime"].format("YYYY.MM.DD");
values["endTime"] = values["endTime"].format("YYYY.MM.DD");
if (!id) {
activityStore.add(values);
} else {
activityStore.putItem(id, values);
}
setIsModalOpen(false);
};
const onFinishFailed = () => {};
const addAction = () => {
setProjectConfig(defaultConfig);
setId(null);
setRecord(null);
setIsModalOpen(true);
formRef.current?.setFieldsValue(record);
};
return (
<div style={{ padding: "10px" }}>
<Button
style={{ marginBottom: "10px" }}
className="projectContentAdd"
onClick={() => addAction()}
>
</Button>
<Modal
title="活动信息"
width={800}
open={isModalOpen}
onCancel={() => setIsModalOpen(false)}
afterClose={() => formRef.current?.resetFields()}
onOk={() => formRef.current?.submit()}
>
<SimpleForm
formRef={formRef}
createCallback={() => {
formRef.current?.setFieldsValue(record);
}}
formName="card_basic"
colProps={4}
subBtnName="提交"
formDatas={projectConfig}
onFinish={onFinish}
initialValues={true}
onFinishFailed={onFinishFailed}
/>
</Modal>
<Space direction="vertical" size="middle" style={{ display: "flex" }}>
<BTable
store={activityStore}
columns={columns}
dataSource={activityStore.list}
/>
</Space>
</div>
);
};
export default inject("activityStore")(observer(Active));

View File

@ -1,158 +0,0 @@
import { Button, Space, Modal, FormInstance } from "antd";
import { inject, observer } from "mobx-react";
import type { ColumnsType } from "antd/es/table";
import BTable from "@/components/b_table";
import { useEffect, useState } from "react";
import UserConfig from "@/service/apiConfig/user_config";
import { UserDataType } from "@/model/userModel";
import { Store } from "antd/lib/form/interface";
import SimpleForm from "@/components/form/simple_form";
import React from "react";
const ActiveType = (props: Store) => {
const { activityTypeStore } = props;
const [isModalOpen, setIsModalOpen] = useState<boolean>(false);
const [projectConfig, setProjectConfig] = useState<any>([]);
const formRef = React.useRef<FormInstance>(null);
const [record, setRecord] = useState<any>(null);
const [userId, setId] = useState<Number | null>(null);
const columns: ColumnsType<UserDataType> = [
{ title: "类型名称", dataIndex: "name" },
{ title: "类型描述", dataIndex: "desc" },
{
title: "操作",
dataIndex: "id",
ellipsis: {
showTitle: false,
},
render: (any, record) => (
<div>
<Space direction="vertical">
<Space wrap>
<EditBtn />
<DeBtn />
</Space>
</Space>
</div>
),
},
];
const EditBtn = () => {
return (
<Button
type="dashed"
size="small"
onClick={() => {
edit(record);
}}
>
</Button>
);
};
const DeBtn = () => {
return (
<Button
type="dashed"
danger
size="small"
onClick={() => {
activityTypeStore.deleteItem(record.id);
}}
>
</Button>
);
};
const edit = (record) => {
record = {
...record,
imageUrl: [{ url: record.imageUrl }],
};
setProjectConfig(defaultConfig);
setIsModalOpen(true);
formRef.current?.setFieldsValue(record);
setRecord(record);
setId(record.id);
};
const onFinish = (values: any) => {
values = {
...values,
};
if (!userId) {
activityTypeStore.add(values);
} else {
activityTypeStore.putItem(userId, values);
}
setIsModalOpen(false);
};
useEffect(() => {
activityTypeStore.getlist(UserConfig.LIST);
}, [activityTypeStore]);
const defaultConfig = [
{
type: "input",
label: "类型名称",
name: "name",
value: "",
rules: [{ required: true, message: "请输入类型名称!" }],
},
{
type: "input",
label: "类型描述",
name: "desc",
value: "",
rules: [{ required: true, message: "请输入类型描述" }],
},
];
const onFinishFailed = () => {};
const addAction = () => {
setRecord({});
setProjectConfig(defaultConfig);
setId(null);
setIsModalOpen(true);
};
const onCancel = () => {
setId(null);
setIsModalOpen(false);
};
return (
<div className="contentBox">
<Space direction="vertical" size="middle" style={{ display: "flex" }}>
<Button type="default" onClick={addAction}>
</Button>
<BTable
store={activityTypeStore}
columns={columns}
dataSource={activityTypeStore.list}
/>
<Modal
title={!userId ? "添加类型" : "编辑类型"}
width={600}
open={isModalOpen}
afterClose={() => formRef.current?.resetFields()}
onOk={() => formRef.current?.submit()}
onCancel={onCancel}
>
<SimpleForm
formRef={formRef}
createCallback={() => {
formRef.current?.setFieldsValue(record);
}}
formName="card_basic"
colProps={4}
subBtnName="提交"
formDatas={projectConfig}
onFinish={onFinish}
initialValues={true}
onFinishFailed={onFinishFailed}
/>
</Modal>
</Space>
</div>
);
};
export default inject("activityTypeStore")(observer(ActiveType));

View File

@ -1,44 +0,0 @@
import { Space, Tabs, TabsProps } from "antd";
import { inject, observer } from "mobx-react";
import { Store } from "antd/lib/form/interface";
import PayConfig from "./config/pay-config";
import PushConfig from "./config/push-config";
import ImConfig from "./config/im-config";
import { useEffect } from "react";
import { useParams } from "react-router";
const AppManageConfig = (props: Store) => {
const { appStore } = props
const { id } = useParams();
useEffect(()=>{
appStore.getApp(id)
},[appStore,id])
const items: TabsProps["items"] = [
{
key: "1",
label: "支付配置",
children: <PayConfig />,
},
{
key: "2",
label: "推送配置",
children: <PushConfig />,
},
{
key: "3",
label: "im配置",
children: <ImConfig />,
},
];
const onChange = ()=>{
appStore.getApp(id)
}
return (
<div className="contentBox">
<Space direction="vertical" size="middle" style={{ display: "flex" }}>
<Tabs defaultActiveKey="1" type="card" items={items} onChange={onChange}/>
</Space>
</div>
);
};
export default inject("appStore")(observer(AppManageConfig));

View File

@ -1,162 +0,0 @@
import { Space, Button, FormInstance } from "antd";
import { inject, observer } from "mobx-react";
import type { ColumnsType } from "antd/es/table";
import BTable from "@/components/b_table";
import { useEffect, useState } from "react";
import UserConfig from "@/service/apiConfig/user_config";
import { UserDataType } from "@/model/userModel";
import { Store } from "antd/lib/form/interface";
import Modal from "antd/lib/modal/Modal";
import SimpleForm from "@/components/form/simple_form";
import React from "react";
import { useNavigate } from "react-router";
const AppManageList = (props: Store) => {
const { appStore } = props;
const navigate = useNavigate();
const [id, setId] = useState<any>(null);
const [projectConfig, setProjectConfig] = useState<any>([]);
const [record, setRecord] = useState<any>(null);
const formRef = React.useRef<FormInstance>(null);
const [isModalOpen, setIsModalOpen] = useState(false);
const columns: ColumnsType<UserDataType> = [
{ title: "app名称", dataIndex: "appName" },
{ title: "图标", dataIndex: "appIcon" },
{ title: "预览图片", dataIndex: "activeIcon" },
{
title: "操作",
dataIndex: "id",
ellipsis: {
showTitle: false,
},
render: (any, record) => (
<div>
<Space direction="vertical">
<Space wrap>
<Button
type="dashed"
size="small"
onClick={() => {
edit(record);
}}
>
</Button>
<Button
type="dashed"
size="small"
onClick={() => {
navigate("/app/config/" + record.id);
}}
>
</Button>
<Button
type="dashed"
danger
size="small"
onClick={() => {
appStore.deleteItem(record.id);
}}
>
</Button>
</Space>
</Space>
</div>
),
},
];
const edit = (record) => {
setProjectConfig(defaultConfig);
setIsModalOpen(true);
formRef.current?.setFieldsValue(record);
setRecord(record);
setId(record.id);
};
const defaultConfig = [
{
type: "input",
label: "app名称",
name: "appName",
value: "",
rules: [{ required: true, message: "请输入卡片名称!" }],
},
{
type: "upload",
label: "icon",
name: "appIcon",
value: [],
},
{
type: "upload",
label: "图片",
name: "photosIds",
value: [],
},
];
useEffect(() => {
appStore.getlist(UserConfig.LIST);
}, [appStore]);
const onFinish = (values: any) => {
let ids = values.photosIds.map((item) => {
return item.id;
});
let appIcon = values.appIcon.map((item) => {
return item.id;
});
console.log(values);
values = {
...values,
photosIds: ids.join(","),
appIcon: appIcon.join(","),
};
if (!id) {
appStore.add(values);
} else {
appStore.putItem(id, values);
}
setIsModalOpen(false);
};
const onFinishFailed = () => {};
return (
<div className="contentBox">
<Button
className="projectContentAdd"
style={{ marginBottom: "10px" }}
onClick={() => {
setProjectConfig(defaultConfig);
setIsModalOpen(true);
}}
>
app
</Button>
<Modal
title="app信息"
width={800}
open={isModalOpen}
onCancel={() => setIsModalOpen(false)}
afterClose={() => formRef.current?.resetFields()}
onOk={() => formRef.current?.submit()}
>
<SimpleForm
formRef={formRef}
createCallback={() => {
formRef.current?.setFieldsValue(record);
}}
formName="card_basic"
colProps={4}
subBtnName="提交"
formDatas={projectConfig}
onFinish={onFinish}
initialValues={true}
onFinishFailed={onFinishFailed}
/>
</Modal>
<Space direction="vertical" size="middle" style={{ display: "flex" }}>
<BTable store={appStore} columns={columns} dataSource={appStore.list} />
</Space>
</div>
);
};
export default inject("appStore")(observer(AppManageList));

View File

@ -1,19 +0,0 @@
import { Space } from "antd";
import { inject, observer } from "mobx-react";
import { useEffect } from "react";
import { Store } from "antd/lib/form/interface";
const ImConfig = (props: Store) => {
useEffect(() => {
console.log("im");
}, []);
return (
<div className="contentBox">
<Space direction="vertical" size="middle" style={{ display: "flex" }}>
im配置
</Space>
</div>
);
};
export default inject("appStore")(observer(ImConfig));

View File

@ -1,139 +0,0 @@
import { Button, FormInstance, Space } from "antd";
import { inject, observer } from "mobx-react";
import { useEffect } from "react";
import { Store } from "antd/lib/form/interface";
import SimpleForm from "@/components/form/simple_form";
import React from "react";
import { useParams } from "react-router";
const PayConfig = (props: Store) => {
const { appStore } = props;
const { id } = useParams();
const wxformRef = React.useRef<FormInstance>(null);
const aliformRef = React.useRef<FormInstance>(null);
useEffect(() => {
wxformRef.current?.setFieldsValue(appStore.item?.wechat)
aliformRef.current?.setFieldsValue(appStore.item?.ali)
}, [appStore.item,id]);
const onFinishFailed = () => {};
const onwxFinish = (values: any) => {
appStore.setWechatConfig(id,values)
};
const onAliFinish = (values: any) => {
appStore.setAlConfig(id,values)
};
return (
<div className="contentBox">
<Space direction="vertical" size="middle" style={{ display: "flex" }}>
<div style={{ backgroundColor: "#fff", padding: "10px" }}>
<div style={{ display: "flex", justifyContent: "space-between" }}>
<p></p>
<Button
type="primary"
onClick={() => {
wxformRef.current?.submit();
}}
>
</Button>
</div>
<SimpleForm
formName={""}
colProps={0}
formRef={wxformRef}
onFinish={onwxFinish}
onFinishFailed={onFinishFailed}
formDatas={[
{
type: "input",
label: "wechatAppid",
name: "wechatAppid",
value: "",
rules: [{ required: true, message: "请输入卡片名称!" }],
},
{
type: "input",
label: "mchid",
name: "mchid",
value: "",
rules: [{ required: true, message: "请输入卡片名称!" }],
},
{
type: "input",
label: "body",
name: "body",
value: "",
rules: [{ required: true, message: "请输入卡片名称!" }],
},
{
type: "input",
label: "notifyURL",
name: "notifyURL",
value: "",
rules: [{ required: true, message: "请输入卡片名称!" }],
},
{
type: "input",
label: "key",
name: "key",
value: "",
rules: [{ required: true, message: "请输入卡片名称!" }],
},
]}
/>
</div>
<div style={{ backgroundColor: "#fff", padding: "10px" }}>
<div style={{ display: "flex", justifyContent: "space-between" }}>
<p></p>
<Button
type="primary"
onClick={() => {
aliformRef.current?.submit();
}}
>
</Button>
</div>
<SimpleForm
formRef={aliformRef}
formName={""}
colProps={0}
onFinish={onAliFinish}
onFinishFailed={onFinishFailed}
formDatas={[
{
type: "input",
label: "AliAppId",
name: "appid",
value: "",
rules: [{ required: true, message: "请输入卡片名称!" }],
},
{
type: "input",
label: "AliKey",
name: "aliKey",
value: "",
rules: [{ required: true, message: "请输入卡片名称!" }],
},
{
type: "input",
label: "returnUrl",
name: "returnUrl",
value: "",
rules: [{ required: true, message: "请输入卡片名称!" }],
},
{
type: "input",
label: "notifyURL",
name: "notifyURL",
value: "",
rules: [{ required: true, message: "请输入卡片名称!" }],
},
]}
/>
</div>
</Space>
</div>
);
};
export default inject("appStore")(observer(PayConfig));

View File

@ -1,259 +0,0 @@
import { Button, FormInstance, Space } from "antd";
import { inject, observer } from "mobx-react";
import { useEffect } from "react";
import { Store } from "antd/lib/form/interface";
import SimpleForm from "@/components/form/simple_form";
import React from "react";
import { useParams } from "react-router";
const PushConfig = (props: Store) => {
const { appStore } = props;
const { id } = useParams();
const hwformRef = React.useRef<FormInstance>(null);
const iosformRef = React.useRef<FormInstance>(null);
const opformRef = React.useRef<FormInstance>(null);
const vivoformRef = React.useRef<FormInstance>(null);
const xmformRef = React.useRef<FormInstance>(null);
useEffect(() => {
hwformRef.current?.setFieldsValue(appStore.item.pushHwawei);
iosformRef.current?.setFieldsValue(appStore.item.pushIos);
opformRef.current?.setFieldsValue(appStore.item.pushOppo);
vivoformRef.current?.setFieldsValue(appStore.item.pushVivo);
xmformRef.current?.setFieldsValue(appStore.item.pushXiaomi);
}, [appStore.item, id]);
const onFinishFailed = () => {};
const iosOnFinish = (values: any) => {
appStore.setIosConfig(id, values);
};
const xmOnFinish = (values: any) => {
appStore.setXmConfig(id, values);
};
const hwOnFinish = (values: any) => {
appStore.setHwConfig(id, values);
};
const oppoOnFinish = (values: any) => {
appStore.setOPConfig(id, values);
};
const vivoOnFinish = (values: any) => {
appStore.setVivoConfig(id, values);
};
return (
<div className="contentBox">
<Space direction="vertical" size="middle" style={{ display: "flex" }}>
<div style={{ backgroundColor: "#fff", padding: "10px" }}>
<div style={{ display: "flex", justifyContent: "space-between" }}>
<p></p>
<Button
type="primary"
onClick={() => {
iosformRef.current?.submit();
}}
>
</Button>
</div>
<SimpleForm
formRef={iosformRef}
formName={""}
colProps={0}
onFinish={iosOnFinish}
onFinishFailed={onFinishFailed}
formDatas={[
{
type: "input",
label: "appleBundleId",
name: "appleBundleId",
value: "",
rules: [{ required: true, message: "请输入appleBundleId!" }],
},
{
type: "input",
label: "password",
name: "password",
value: "",
rules: [{ required: true, message: "请输入推送密码!" }],
},
{
type: "upload",
label: "推送证书",
name: "centerFile",
value: [],
rules: [{ required: true, message: "请上传推送证书!" }],
},
]}
/>
</div>
<div style={{ backgroundColor: "#fff", padding: "10px" }}>
<div style={{ display: "flex", justifyContent: "space-between" }}>
<p></p>
<Button
type="primary"
onClick={() => {
hwformRef.current?.submit();
}}
>
</Button>
</div>
<SimpleForm
formName={""}
formRef={hwformRef}
colProps={0}
onFinish={hwOnFinish}
onFinishFailed={onFinishFailed}
formDatas={[
{
type: "input",
label: "huaWeiClientID",
name: "huaWeiClientID",
value: "",
rules: [{ required: true, message: "请输入卡片名称!" }],
},
{
type: "input",
label: "huaWeiClientSecret",
name: "huaWeiClientSecret",
value: "",
rules: [{ required: true, message: "请输入卡片名称!" }],
},
]}
/>
</div>
<div style={{ backgroundColor: "#fff", padding: "10px" }}>
<div style={{ display: "flex", justifyContent: "space-between" }}>
<p>oppo推送</p>
<Button
type="primary"
onClick={() => {
opformRef.current?.submit();
}}
>
</Button>
</div>
<SimpleForm
formRef={opformRef}
formName={""}
colProps={0}
onFinish={oppoOnFinish}
onFinishFailed={onFinishFailed}
formDatas={[
{
type: "input",
label: "oppoAppKey",
name: "oppoAppKey",
value: "",
rules: [{ required: true, message: "请输入卡片名称!" }],
},
{
type: "input",
label: "oppoMasterSecret",
name: "oppoMasterSecret",
value: "",
rules: [{ required: true, message: "请输入卡片名称!" }],
},
]}
/>
</div>
<div style={{ backgroundColor: "#fff", padding: "10px" }}>
<div style={{ display: "flex", justifyContent: "space-between" }}>
<p>vivo推送</p>
<Button
type="primary"
onClick={() => {
vivoformRef.current?.submit();
}}
>
</Button>
</div>
<SimpleForm
formRef={vivoformRef}
formName={""}
colProps={0}
onFinish={vivoOnFinish}
onFinishFailed={onFinishFailed}
formDatas={[
{
type: "input",
label: "vivoappId",
name: "vivoappId",
value: "",
rules: [{ required: true, message: "请输入卡片名称!" }],
},
{
type: "input",
label: "vivoAppKey",
name: "vivoAppKey",
value: "",
rules: [{ required: true, message: "请输入卡片名称!" }],
},
{
type: "input",
label: "vivoAppSecret",
name: "vivoAppSecret",
value: "",
rules: [{ required: true, message: "请输入卡片名称!" }],
},
]}
/>
</div>
<div style={{ backgroundColor: "#fff", padding: "10px" }}>
<div style={{ display: "flex", justifyContent: "space-between" }}>
<p></p>
<Button
type="primary"
onClick={() => {
xmformRef.current?.submit();
}}
>
</Button>
</div>
<SimpleForm
formRef={xmformRef}
formName={""}
colProps={0}
onFinish={xmOnFinish}
onFinishFailed={onFinishFailed}
formDatas={[
{
type: "input",
label: "xiaoMiappId",
name: "xiaoMiappId",
value: "",
rules: [{ required: true, message: "请输入卡片名称!" }],
},
{
type: "input",
label: "xiaoMiAppKey",
name: "xiaoMiAppKey",
value: "",
rules: [{ required: true, message: "请输入卡片名称!" }],
},
{
type: "input",
label: "xiaoMiAppSecret",
name: "xiaoMiAppSecret",
value: "",
rules: [{ required: true, message: "请输入卡片名称!" }],
},
{
type: "input",
label: "xiaoMiAppChannelId",
name: "xiaoMiAppChannelId",
value: "",
rules: [{ required: true, message: "请输入卡片名称!" }],
},
]}
/>
</div>
</Space>
</div>
);
};
export default inject("appStore")(observer(PushConfig));

View File

@ -1,10 +0,0 @@
import { Outlet } from "react-router";
const AppManage = () => {
return (
<div className="contentBox">
<Outlet></Outlet>
</div>
);
};
export default AppManage;

View File

@ -1,166 +0,0 @@
import { Button, Space, Modal, FormInstance } from "antd";
import type { ColumnsType } from 'antd/es/table';
import { CardDataType } from "@/util/model/interface";
import { inject, observer } from "mobx-react";
import BTable from "@/components/b_table";
import SimpleForm from "@/components/form/simple_form";
import "./index.less"
import { useEffect, useState } from "react";
import React from "react";
import { useNavigate } from "react-router-dom";
import CardConfig from "@/service/apiConfig/card_config";
const CardPageList = (props) => {
const { cardStore } = props;
const [projectConfig, setProjectConfig] = useState<any>([])
const [id, setId] = useState<any>(null)
const [record, setRecord] = useState<any>(null)
const formRef = React.useRef<FormInstance>(null);
const [isModalOpen, setIsModalOpen] = useState(false);
const navigate = useNavigate();
const columns: ColumnsType<CardDataType> = [
{
title: '卡片编号',
dataIndex: 'id',
},
{
title: '名称',
dataIndex: 'name',
},
{
title: '内容',
dataIndex: 'content',
width: 140,
ellipsis: true,
},
{
title: '作者',
dataIndex: 'author',
},
{
title: '引文',
dataIndex: 'extract',
},
{
title: '类型',
dataIndex: 'cardType',
render: (cardType, record) => (
<div>
{
cardType === "1" ? "卡片一" : (cardType === "2" ? "卡片二" : (cardType === "3" ? "卡片三" : (cardType === "4" ? "卡片四" : '暂无')))
}
</div>
),
},
{
title: '操作',
dataIndex: 'id',
ellipsis: {
showTitle: false,
},
render: (any, record) => (
<div>
<Space direction="vertical">
<Space wrap>
<Button type="dashed" size="small" onClick={() => {
edit(record)
}}></Button>
<Button type="dashed" size="small" onClick={() => {
navigate("/card/componsition/" + record.id)
}}></Button>
<Button type="dashed" danger size="small" onClick={() => {
cardStore.deleteItem(record.id)
}}></Button>
</Space>
</Space>
</div>
),
}
];
const edit = (record) => {
setProjectConfig(defaultConfig)
setIsModalOpen(true)
formRef.current?.setFieldsValue(record);
setRecord(record)
setId(record.id)
}
const defaultConfig = [
{
type: "input",
label: "卡片名称",
name: "name",
value: "",
rules: [{ required: true, message: '请输入卡片名称!' }]
},
{
type: "textArea",
label: "请输入卡片内容",
name: "content",
value: "",
}, {
type: "input",
label: "请输入卡片作者",
name: "author",
value: "",
},
{
type: "input",
label: "请输入卡片引文",
name: "extract",
value: "",
},
{
type: "select",
label: "请选择卡片类型",
name: "cardType",
value: "",
},
]
const onFinish = (values: any) => {
if (!id) {
cardStore.add(values);
} else {
cardStore.putItem(id, values);
}
setIsModalOpen(false);
};
useEffect(() => {
cardStore.getlist(CardConfig.CardConfig.LIST)
}, [cardStore]);
const onFinishFailed = () => { }
return (
<div className="projectContent">
<Button className="projectContentAdd" onClick={() => {
setProjectConfig(defaultConfig)
setId(null)
setIsModalOpen(true)
}}></Button>
<Modal title="卡片信息"
width={800}
open={isModalOpen}
onCancel={() => setIsModalOpen(false)}
afterClose={() => formRef.current?.resetFields()}
onOk={() => formRef.current?.submit()}>
<SimpleForm
formRef={formRef}
createCallback={() => {
formRef.current?.setFieldsValue(record);
}}
formName="card_basic"
colProps={4}
subBtnName="提交"
formDatas={projectConfig}
onFinish={onFinish}
initialValues={true}
onFinishFailed={onFinishFailed} />
</Modal>
<div className="editContentBox">
<BTable columns={columns} store={cardStore} dataSource={cardStore.list} />
</div>
</div>
);
};
export default inject("cardStore")(observer(CardPageList));;

View File

@ -1,11 +0,0 @@
import "./index.less"
import { Outlet } from "react-router-dom";
const CardPage = () => {
return (
<div className="projectContent">
<Outlet></Outlet>
</div>
);
};
export default CardPage;

View File

@ -1,193 +0,0 @@
import { Button, Space, Modal, FormInstance } from "antd";
import type { ColumnsType } from "antd/es/table";
import { CardDataType } from "@/util/model/interface";
import { inject, observer } from "mobx-react";
import BTable from "@/components/b_table";
import SimpleForm from "@/components/form/simple_form";
import "./index.less";
import { useEffect, useState } from "react";
import React from "react";
import { useNavigate } from "react-router-dom";
import CardConfig from "@/service/apiConfig/card_config";
const CharacterPageList = (props) => {
const { characterStore } = props;
const [projectConfig, setProjectConfig] = useState<any>([]);
const [id, setId] = useState<any>(null);
const [record, setRecord] = useState<any>(null);
const formRef = React.useRef<FormInstance>(null);
const [isModalOpen, setIsModalOpen] = useState(false);
const navigate = useNavigate();
const columns: ColumnsType<CardDataType> = [
{ title: "人物卡片编号", dataIndex: "id" },
{ title: "名称", dataIndex: "name" },
{ title: "描述", dataIndex: "desc" },
{
title: "封面",
dataIndex: "imageUrl",
render: (any, record) => (
<div>
<img
src={record.imageUrl}
alt="avatar"
style={{ width: "80px", height: "80px" }}
/>
</div>
),
},
{
title: "操作",
dataIndex: "id",
ellipsis: {
showTitle: false,
},
render: (any, record) => (
<div>
<Space direction="vertical">
<Space wrap>
<Button
type="dashed"
size="small"
onClick={() => {
edit(record);
}}
>
</Button>
<Button
type="dashed"
size="small"
onClick={() => {
navigate("/card/componsition/" + record.id);
}}
>
</Button>
<Button
type="dashed"
size="small"
onClick={() => {
characterStore.item = record;
navigate("/card/editors/" + record.id + "/2");
}}
>
</Button>
<Button
type="dashed"
danger
size="small"
onClick={() => {
characterStore.deleteItem(record.id);
}}
>
</Button>
</Space>
</Space>
</div>
),
},
];
const edit = (record) => {
record = {
...record,
imageUrl: [{ url: record.imageUrl }],
};
setProjectConfig(defaultConfig);
setIsModalOpen(true);
formRef.current?.setFieldsValue(record);
setRecord(record);
setId(record.id);
};
const defaultConfig = [
{
type: "input",
label: "人物名称",
name: "name",
value: "",
rules: [{ required: true, message: "请输入人物名称!" }],
},
{
type: "input",
label: "请输入人物描述",
name: "desc",
value: "",
rules: [{ required: true, message: "请输入卡片内容" }],
},
{
type: "upload",
label: "请上传人物封面",
name: "imageUrl",
value: [],
},
];
const onFinish = (values: any) => {
let images = values.imageUrl?.map((item) => {
return item.response.data.url;
});
values = {
...values,
imageUrl: images.join(","),
};
if (!id) {
characterStore.add(values);
} else {
characterStore.putItem(id, values);
}
setIsModalOpen(false);
};
useEffect(() => {
characterStore.getlist(CardConfig.CardConfig.LIST);
}, [characterStore]);
const onFinishFailed = () => {};
return (
<div className="projectContent">
<Button
className="projectContentAdd"
onClick={() => {
setProjectConfig(defaultConfig);
setId(null);
setIsModalOpen(true);
}}
>
</Button>
<Modal
title="人物信息"
width={800}
open={isModalOpen}
onCancel={() => setIsModalOpen(false)}
afterClose={() => formRef.current?.resetFields()}
onOk={() => formRef.current?.submit()}
>
<SimpleForm
formRef={formRef}
createCallback={() => {
formRef.current?.setFieldsValue(record);
}}
formName="card_basic"
colProps={4}
subBtnName="提交"
formDatas={projectConfig}
onFinish={onFinish}
initialValues={true}
onFinishFailed={onFinishFailed}
/>
</Modal>
<div className="editContentBox">
<BTable
columns={columns}
store={characterStore}
dataSource={characterStore.list}
/>
</div>
</div>
);
};
export default inject("characterStore")(observer(CharacterPageList));

View File

@ -1,192 +0,0 @@
import { Button, Space, Modal, FormInstance } from "antd";
import "./index.less";
import type { ColumnsType } from "antd/es/table";
import { CardDataType } from "@/util/model/interface";
import { inject, observer } from "mobx-react";
import BTable from "@/components/b_table";
import SimpleForm from "@/components/form/simple_form";
import { useEffect, useState } from "react";
import React from "react";
import { useNavigate } from "react-router-dom";
import CardConfig from "@/service/apiConfig/card_config";
const CurrentEventPageList = (props) => {
const currentEventStore = props.currentEventStore;
const [projectConfig, setProjectConfig] = useState<any>([]);
const [id, setId] = useState<any>(null);
const [record, setRecord] = useState<any>(null);
const formRef = React.useRef<FormInstance>(null);
const [isModalOpen, setIsModalOpen] = useState(false);
const navigate = useNavigate();
const columns: ColumnsType<CardDataType> = [
{ title: "时事卡片编号", dataIndex: "id" },
{ title: "名称", dataIndex: "title" },
{ title: "标签", dataIndex: "tag" },
{
title: "封面",
dataIndex: "imageUrl",
render: (any, record) => (
<div>
<img
src={record.imageUrl}
alt="avatar"
style={{ width: "80px", height: "80px" }}
/>
</div>
),
},
{
title: "操作",
dataIndex: "id",
ellipsis: {
showTitle: false,
},
render: (any, record) => (
<div>
<Space direction="vertical">
<Space wrap>
<Button
type="dashed"
size="small"
onClick={() => {
edit(record);
}}
>
</Button>
<Button
type="dashed"
size="small"
onClick={() => {
navigate("/card/componsition/" + record.id);
}}
>
</Button>
<Button
type="dashed"
size="small"
onClick={() => {
currentEventStore.item = record;
navigate("/card/editors/" + record.id + "/1");
}}
>
</Button>
<Button
type="dashed"
danger
size="small"
onClick={() => {
currentEventStore.deleteItem(record.id);
}}
>
</Button>
</Space>
</Space>
</div>
),
},
];
const edit = (record) => {
record = {
...record,
imageUrl: [{ url: record.imageUrl }],
};
setProjectConfig(defaultConfig);
setIsModalOpen(true);
formRef.current?.setFieldsValue(record);
setRecord(record);
setId(record.id);
};
const defaultConfig = [
{
type: "input",
label: "时事标题",
name: "title",
value: "",
rules: [{ required: true, message: "请输入时事标题!" }],
},
{
type: "input",
label: "请输入标签",
name: "tag",
value: "",
rules: [{ required: true, message: "请输入卡片标签" }],
},
{
type: "upload",
label: "请上传封面图",
name: "imageUrl",
value: [],
},
];
const onFinish = (values: any) => {
let images = values.imageUrl.map((item) => {
return item.response.data.url;
});
values = {
...values,
imageUrl: images.join(","),
};
if (!id) {
currentEventStore.add(values);
} else {
currentEventStore.putItem(id, values);
}
setIsModalOpen(false);
};
useEffect(() => {
currentEventStore.getlist(CardConfig.CardConfig.LIST);
}, [currentEventStore]);
const onFinishFailed = () => {};
return (
<div className="projectContent">
<Button
className="projectContentAdd"
onClick={() => {
setProjectConfig(defaultConfig);
setId(null);
setIsModalOpen(true);
}}
>
</Button>
<div className="editContentBox">
<BTable
columns={columns}
store={currentEventStore}
dataSource={currentEventStore.list}
/>
</div>
<Modal
title="人物信息"
width={800}
open={isModalOpen}
onCancel={() => setIsModalOpen(false)}
afterClose={() => formRef.current?.resetFields()}
onOk={() => formRef.current?.submit()}
>
<SimpleForm
formRef={formRef}
createCallback={() => {
formRef.current?.setFieldsValue(record);
}}
formName="card_basic"
colProps={4}
subBtnName="提交"
formDatas={projectConfig}
onFinish={onFinish}
initialValues={true}
onFinishFailed={onFinishFailed}
/>
</Modal>
</div>
);
};
export default inject("currentEventStore")(observer(CurrentEventPageList));

View File

@ -1,98 +0,0 @@
import { useEffect, useState } from "react";
import "./index.less"
import baseHttp from "@/service/base";
import { Editor } from '@tinymce/tinymce-react';
import Button from "antd/lib/button";
import { useNavigate, useParams } from "react-router-dom";
import { inject, observer } from "mobx-react";
const Editors = (props) => {
const { characterStore, currentEventStore } = props;
const [value, setValue] = useState<any>("");
const [savevalue, setSaceValue] = useState<any>("");
const { id, type } = useParams()
const navigate = useNavigate();
useEffect(() => {
if (type === "1") {
setValue(currentEventStore.item.content)
} else {
setValue(characterStore.item.content)
}
}, [characterStore.item.content, currentEventStore.item.content, type])
const handleEditorChange = (content, editor) => {
setSaceValue(content);
}
const imagesUploadHandler = async (blobInfo, progress) => {
var data = new FormData();
data.append('attachments', blobInfo.blob(), blobInfo.filename());
let url = "http://81.68.81.205:1234/apis/v1/attachment";
let res = await baseHttp.upload(url,data)
return res.data.url
}
return (
<div className="projectContent">
<div className="editContentBox">
<Button className="editBtn" onClick={() => {
if (type === "1") {
let item = currentEventStore.item
item.content = savevalue;
currentEventStore.putItem(id, item);
} else {
let item = characterStore.item
item.content = savevalue;
characterStore.putItem(id, item);
}
navigate(-1)
}}></Button>
<Editor
initialValue={value}
apiKey="hq72bjfug6s56a5qxa2oxpbqsxc58nv4v7nfruyd5ndpgu72"
init={{
menubar: false,
statusbar: false, // 隐藏底部状态栏
branding: false, // 隐藏tinymce右下角水印
resize: false, //右下角调整编辑器大小false关闭true开启只改变高度'both' 宽高都能改变
plugins: [
'autolink',
'link',
'image ',
'lists',
'charmap',
'preview',
'anchor',
'pagebreak',
'visualblocks',
'visualchars',
'fullscreen',
'insertdatetime',
'nonbreaking',
'directionality',
'template',
"searchreplace",
"hr",
"advlist",
"textpattern",
"help",
"autosave",
"bdmap",
"autoresize",
"formatpainter",
"paragraph"
],
toolbar: [
' blocks | paragraph |styleselect| blockquote | hr bold underline italic alignleft aligncenter alignright | forecolor backcolor | fontsize lineheight | bullist numlist outdent indent | link image | undo redo | fullscreen | bdmap',
],
font_size_formats: '8px 10px 12px 14px 18px 24px 36px',
line_height_formats: '1 1.2 1.4 1.6 2',
height: 600,
min_height: 600,
images_upload_handler: imagesUploadHandler
}}
onEditorChange={handleEditorChange}
/>
</div>
</div>
);
};
export default inject("characterStore","currentEventStore")(observer(Editors));

View File

@ -1,22 +0,0 @@
.projectContent {
box-sizing: border-box;
margin: 10px;
display: flex;
flex-direction: column;
height: 100%;
overflow: auto;
.projectContentAdd {
margin-left: 10px;
margin-top: 10px;
margin-bottom: 10px;
width: 90px;
}
.editContentBox {
background-color: #fff;
flex: 1 1 auto;
}
.editBtn {
margin: 10px;
}
}

View File

@ -1,81 +0,0 @@
import { Button, Modal, Popconfirm } from "antd";
import type { ColumnsType } from "antd/es/table";
import { CardDataType } from "@/util/model/interface";
import { inject, observer } from "mobx-react";
import BTable from "@/components/b_table";
import "./index.less";
import { useEffect, useState } from "react";
import { useParams } from "react-router-dom";
const Componsition = (props) => {
const { componSitionStore } = props;
const [isModalOpen, setIsModalOpen] = useState(false);
const { id } = useParams();
const columns: ColumnsType<CardDataType> = [
{
title: "作文编号",
dataIndex: "compositionId",
},
{
title: "作文名称",
dataIndex: "title",
},
{
title: "作者",
dataIndex: "username",
},
{
title: "点赞数",
dataIndex: "count",
},
{
title: "内容",
dataIndex: "content",
width: 350,
},
{
title: "操作",
dataIndex: "compositionId",
ellipsis: {
showTitle: false,
},
render: (ids, record) => (
<div>
<Popconfirm
title="是否确认删除?"
okText="Yes"
cancelText="No"
onConfirm={() => {
componSitionStore.delete(ids);
componSitionStore.list(id);
}}
>
<Button type="dashed" danger size="small">
</Button>
</Popconfirm>
</div>
),
},
];
useEffect(() => {
componSitionStore.list(id);
}, [componSitionStore, id]);
return (
<div className="projectContent">
<Modal
title="作文内容"
width={800}
open={isModalOpen}
onCancel={() => setIsModalOpen(false)}
></Modal>
<BTable
columns={columns}
store={componSitionStore}
dataSource={componSitionStore.datalist}
/>
</div>
);
};
export default inject("componSitionStore")(observer(Componsition));

View File

@ -1,12 +0,0 @@
.projectContent{
box-sizing: border-box;
margin: 10px;
display: flex;
flex-direction: column;
height: 100%;
overflow: auto;
.projectContentAdd{
margin-left:10px ;
margin-top:10px ;
}
}

View File

@ -1,49 +0,0 @@
import BTable from "@/components/b_table";
import { Button, Space } from "antd";
import { ColumnsType } from "antd/lib/table";
import { inject, observer } from "mobx-react";
import { Store } from "antd/lib/form/interface";
import { useEffect } from "react";
const DymiticState = (props: Store) => {
const { dynamicStore } = props;
const columns: ColumnsType = [
{ title: "用户昵称", dataIndex: "desc" },
{ title: "动态内容", dataIndex: "desc" },
{ title: "动态图片", dataIndex: "desc" },
{ title: "发布地址", dataIndex: "address" },
{ title: "点赞数", dataIndex: "likeNum" },
{ title: "话题", dataIndex: "topicName" },
{ title: "操作", dataIndex: "id", render: (id: any) => render(id) },
];
const render = (id) => (
<div >
<Space align="center">
<Button
type="dashed"
danger
size="small"
onClick={()=>{
dynamicStore.deleteItem(id)
}}
>
</Button>
</Space>
</div>
);
useEffect(() => {
dynamicStore.getlist();
}, [dynamicStore]);
return (
<div style={{ margin: 10 }} className="projectContent">
<BTable
loading={dynamicStore.listStatus}
columns={columns}
store={dynamicStore}
dataSource={dynamicStore.list}
/>
</div>
);
};
export default inject("dynamicStore")(observer(DymiticState));

View File

@ -3,9 +3,7 @@ import "./home.less"
const Home = observer(() => {
return (
<div className="contents_center">
<div className="centerbox">
<p></p>
</div>
</div>
);
});

View File

@ -1,12 +0,0 @@
import React, { useEffect } from "react";
import { inject, observer } from "mobx-react";
import { Store } from "antd/lib/form/interface";
const Logs = (props: Store) => {
const { systemStore } = props;
useEffect(() => {}, [systemStore]);
return <div style={{ margin: 10 }}></div>;
};
export default inject("systemStore")(observer(Logs));

View File

@ -1,191 +0,0 @@
import BTable from "@/components/b_table";
import { Button, FormInstance, Modal, Space } from "antd";
import { ColumnsType } from "antd/lib/table";
import { inject, observer } from "mobx-react";
import { Store } from "antd/lib/form/interface";
import { useEffect, useState } from "react";
import merchantsConfig from "@/service/apiConfig/merchants_config";
import SimpleForm from "@/components/form/simple_form";
import React from "react";
import EditorComponent from "@/components/edittor";
const Merchant = (props: Store) => {
const { merchantStore } = props;
const [isModalOpen, setIsModalOpen] = useState<boolean>(false);
const [projectConfig, setProjectConfig] = useState<any>([]);
const formRef = React.useRef<FormInstance>(null);
const [productDesc, setProductDesc] = useState<any>(null);
const [record, setRecord] = useState<any>(null);
const [merchantId, setId] = useState<Number | null>(null);
const columns: ColumnsType = [
{ title: "商家名称", dataIndex: "merchantsName" },
{ title: "商家地址", dataIndex: "address" },
{ title: "审核状态", dataIndex: "examineStatus" },
{ title: "运营范围", dataIndex: "radius" },
{ title: "风险等级", dataIndex: "riskLevel" },
{
title: "操作",
dataIndex: "id",
ellipsis: { showTitle: false },
render: (any, record: any) => (
<div>
<Space align="center">
<Button
type="dashed"
size="small"
onClick={() => {
edit(record);
}}
>
</Button>
<Button
type="dashed"
danger
size="small"
onClick={() => {
merchantStore.deleteItem(record.id);
}}
>
</Button>
</Space>
</div>
),
},
];
const edit = (record) => {
const myrecord = {
...record,
licenseImgId: record.licenseImgList,
};
setProjectConfig(defaultConfig);
setIsModalOpen(true);
setRecord(myrecord);
formRef.current?.setFieldsValue(myrecord);
setId(myrecord.id);
setProductDesc(myrecord.desc);
};
const defaultConfig = [
{
type: "input",
label: "商家名称",
name: "merchantsName",
value: "",
rules: [{ required: true, message: "请输入商家名称!" }],
},
{
type: "input",
label: "商家电话",
name: "merchantsPhone",
value: "",
rules: [{ required: true, message: "请输入商家电话" }],
},
{
type: "input",
label: "商家实际办公地点",
name: "address",
value: "",
rules: [{ required: true, message: "请输入商家实际办公地点" }],
},
{
type: "inpput",
label: "运营范围",
name: "radius",
value: "",
rules: [{ required: true, message: "请输入运营范围" }],
},
{
type: "upload",
label: "营业执照",
name: "licenseImgList",
value: [],
rules: [{ required: true, message: "请上传营业执照" }],
},
];
const onFinish = (values: any) => {
let ids = values.licenseImgList.map((item) => {
return item.id;
});
console.log(values);
values = {
...values,
licenseImgId: ids.join(","),
desc: productDesc,
};
if (!merchantId) {
merchantStore.add(values);
} else {
merchantStore.putItem(merchantId, values);
}
setIsModalOpen(false);
};
useEffect(() => {
merchantStore.getlist(merchantsConfig.LIST);
}, [merchantStore]);
const onFinishFailed = () => {};
return (
<div style={{ margin: 10 }}>
<Button
style={{ marginBottom: 10 }}
type="default"
onClick={() => {
setProjectConfig(defaultConfig);
setId(null);
setIsModalOpen(true);
}}
>
</Button>
<BTable
columns={columns}
store={merchantStore}
dataSource={merchantStore.list}
/>
<Modal
title={!merchantId ? "添加商户" : "编辑商户"}
width={1200}
open={isModalOpen}
afterClose={() => formRef.current?.resetFields()}
onOk={() => formRef.current?.submit()}
onCancel={() => {
setId(null);
setIsModalOpen(false);
}}
>
<SimpleForm
formRef={formRef}
createCallback={() => {
formRef.current?.setFieldsValue(record);
}}
formName="card_basic"
colProps={3}
subBtnName="提交"
formDatas={projectConfig}
onFinish={onFinish}
initialValues={true}
onFinishFailed={onFinishFailed}
/>
<Space align="start">
<span
style={{
width: "130px",
marginRight: "5px",
display: "inline-block",
textAlign: "end",
}}
>
:
</span>
<EditorComponent
data={productDesc}
updateChange={(v) => {
setProductDesc(v);
}}
/>
</Space>
</Modal>
</div>
);
};
export default inject("merchantStore")(observer(Merchant));

View File

@ -1,141 +0,0 @@
import BTable from "@/components/b_table";
import { Button, FormInstance, Modal, Space } from "antd";
import { ColumnsType } from "antd/lib/table";
import { inject, observer } from "mobx-react";
import { Store } from "antd/lib/form/interface";
import { useEffect, useState } from "react";
import merchantsConfig from "@/service/apiConfig/merchants_config";
import SimpleForm from "@/components/form/simple_form";
import React from "react";
const ProductType = (props: Store) => {
const { projectTypeStore } = props;
const [isModalOpen, setIsModalOpen] = useState<boolean>(false);
const [projectConfig, setProjectConfig] = useState<any>([]);
const formRef = React.useRef<FormInstance>(null);
const [record, setRecord] = useState<any>(null);
const [merchantId, setId] = useState<Number | null>(null);
const columns: ColumnsType = [
{ title: "商品类型名称", dataIndex: "productTypeName" },
{
title: "操作",
dataIndex: "id",
ellipsis: { showTitle: false },
render: (any, record: any) => (
<div>
<Space align="center">
<Button
type="dashed"
size="small"
onClick={() => {
edit(record);
}}
>
</Button>
<Button
type="dashed"
danger
size="small"
onClick={() => {
projectTypeStore.deleteItem(record.id);
}}
>
</Button>
</Space>
</div>
),
},
];
const edit = (record) => {
record = {
...record,
imageUrl: [{ url: record.imageUrl }],
};
setProjectConfig(defaultConfig);
setIsModalOpen(true);
formRef.current?.setFieldsValue(record);
setRecord(record);
setId(record.id);
};
const defaultConfig = [
{
type: "input",
label: "商品类型名称",
name: "productTypeName",
value: "",
rules: [{ required: true, message: "请输入商家名称!" }],
},
// {
// type: "input",
// label: "商家电话",
// name: "merchantsPhone",
// value: "",
// rules: [{ required: true, message: "请输入商家电话" }],
// },
];
const onFinish = (values: any) => {
values = {
...values,
};
console.log(merchantId);
if (!merchantId) {
projectTypeStore.add(values);
} else {
projectTypeStore.putItem(merchantId, values);
}
setIsModalOpen(false);
};
useEffect(() => {
projectTypeStore.getlist(merchantsConfig.LIST);
}, [projectTypeStore]);
const onFinishFailed = () => {};
return (
<div style={{ margin: 10 }}>
<Button
style={{ marginBottom: 10 }}
type="default"
onClick={() => {
setProjectConfig(defaultConfig);
setId(null);
setIsModalOpen(true);
}}
>
</Button>
<BTable
columns={columns}
store={projectTypeStore}
dataSource={projectTypeStore.list}
/>
<Modal
title={!merchantId ? "添加商品类型" : "编辑商品类型"}
width={800}
open={isModalOpen}
afterClose={() => formRef.current?.resetFields()}
onOk={() => formRef.current?.submit()}
onCancel={() => {
setId(null);
setIsModalOpen(false);
}}
>
<SimpleForm
formRef={formRef}
createCallback={() => {
formRef.current?.setFieldsValue(record);
}}
formName="card_basic"
colProps={4}
subBtnName="提交"
formDatas={projectConfig}
onFinish={onFinish}
initialValues={true}
onFinishFailed={onFinishFailed}
/>
</Modal>
</div>
);
};
export default inject("projectTypeStore")(observer(ProductType));

View File

@ -1,140 +0,0 @@
import BTable from "@/components/b_table";
import { Button, FormInstance, Modal, Space } from "antd";
import { ColumnsType } from "antd/lib/table";
import { inject, observer } from "mobx-react";
import { Store } from "antd/lib/form/interface";
import { useEffect, useState } from "react";
import merchantsConfig from "@/service/apiConfig/merchants_config";
import SimpleForm from "@/components/form/simple_form";
import React from "react";
const ProductUnit = (props: Store) => {
const { productUnitStore } = props;
const [isModalOpen, setIsModalOpen] = useState<boolean>(false);
const [projectConfig, setProjectConfig] = useState<any>([]);
const formRef = React.useRef<FormInstance>(null);
const [record, setRecord] = useState<any>(null);
const [merchantId, setId] = useState<Number | null>(null);
const columns: ColumnsType = [
{ title: "单位名称", dataIndex: "productUnitName" },
{
title: "操作",
dataIndex: "id",
ellipsis: { showTitle: false },
render: (any, record: any) => (
<div>
<Space align="center">
<Button
type="dashed"
size="small"
onClick={() => {
edit(record);
}}
>
</Button>
<Button
type="dashed"
danger
size="small"
onClick={() => {
productUnitStore.deleteItem(record.id);
}}
>
</Button>
</Space>
</div>
),
},
];
const edit = (record) => {
record = {
...record,
imageUrl: [{ url: record.imageUrl }],
};
setProjectConfig(defaultConfig);
setIsModalOpen(true);
formRef.current?.setFieldsValue(record);
setRecord(record);
setId(record.id);
};
const defaultConfig = [
{
type: "input",
label: "单位名称",
name: "productUnitName",
value: "",
rules: [{ required: true, message: "请输入单位名称!" }],
},
// {
// type: "input",
// label: "商家电话",
// name: "merchantsPhone",
// value: "",
// rules: [{ required: true, message: "请输入商家电话" }],
// },
];
const onFinish = (values: any) => {
values = {
...values,
};
if (!merchantId) {
productUnitStore.add(values);
} else {
productUnitStore.putItem(merchantId, values);
}
setIsModalOpen(false);
};
useEffect(() => {
productUnitStore.getlist(merchantsConfig.LIST);
}, [productUnitStore]);
const onFinishFailed = () => {};
return (
<div style={{ margin: 10 }}>
<Button
style={{ marginBottom: 10 }}
type="default"
onClick={() => {
setProjectConfig(defaultConfig);
setId(null);
setIsModalOpen(true);
}}
>
</Button>
<BTable
columns={columns}
store={productUnitStore}
dataSource={productUnitStore.list}
/>
<Modal
title={!merchantId ? "添加商品类型" : "编辑商品类型"}
width={800}
open={isModalOpen}
afterClose={() => formRef.current?.resetFields()}
onOk={() => formRef.current?.submit()}
onCancel={() => {
setId(null);
setIsModalOpen(false);
}}
>
<SimpleForm
formRef={formRef}
createCallback={() => {
formRef.current?.setFieldsValue(record);
}}
formName="card_basic"
colProps={4}
subBtnName="提交"
formDatas={projectConfig}
onFinish={onFinish}
initialValues={true}
onFinishFailed={onFinishFailed}
/>
</Modal>
</div>
);
};
export default inject("productUnitStore")(observer(ProductUnit));

View File

@ -1,12 +0,0 @@
import React, { useEffect } from "react";
import { inject, observer } from "mobx-react";
import { Store } from "antd/lib/form/interface";
const Permission = (props: Store) => {
const { systemStore } = props;
useEffect(() => {}, [systemStore]);
return <div style={{ margin: 10 }}></div>;
};
export default inject("systemStore")(observer(Permission));

View File

@ -1,6 +0,0 @@
.projectContent{
.projectContentAdd{
margin-left:10px ;
margin-top:10px ;
}
}

View File

@ -1,189 +0,0 @@
import BTable from "@/components/b_table";
import { Button, FormInstance, Modal, Space } from "antd";
import { ColumnsType } from "antd/lib/table";
import { inject, observer } from "mobx-react";
import { Store } from "antd/lib/form/interface";
import { useEffect, useState } from "react";
import merchantsConfig from "@/service/apiConfig/merchants_config";
import SimpleForm from "@/components/form/simple_form";
import React from "react";
import EditorComponent from "@/components/edittor";
import projectTypeConfig from "@/service/apiConfig/project_type_config";
const Project = (props: Store) => {
const { projectStore } = props;
const [isModalOpen, setIsModalOpen] = useState<boolean>(false);
const [projectConfig, setProjectConfig] = useState<any>([]);
const formRef = React.useRef<FormInstance>(null);
const [record, setRecord] = useState<any>(null);
const [productDesc, setProductDesc] = useState<any>(null);
const [merchantId, setId] = useState<Number | null>(null);
const columns: ColumnsType = [
{ title: "名称", dataIndex: "productName" },
{ title: "简介", dataIndex: "productIntro" },
{ title: "所属类型", dataIndex: "productTypeName" },
{ title: "价格", dataIndex: "productPrice" },
{ title: "库存", dataIndex: "productInventory" },
{
title: "操作",
dataIndex: "id",
ellipsis: { showTitle: false },
render: (any, record: any) => (
<div>
<Space align="center">
<Button
type="dashed"
size="small"
onClick={() => {
edit(record);
}}
>
</Button>
<Button
type="dashed"
danger
size="small"
onClick={() => {
projectStore.deleteItem(record.id);
}}
>
</Button>
</Space>
</div>
),
},
];
const edit = (record) => {
record = {
...record,
imageUrl: [{ url: record.imageUrl }],
};
setProjectConfig(defaultConfig);
setIsModalOpen(true);
formRef.current?.setFieldsValue(record);
setRecord(record);
setId(record.id);
setProductDesc(record.productDesc);
};
const defaultConfig = [
{
type: "input",
label: "名称",
name: "productName",
value: "",
rules: [{ required: true, message: "请输入名称!" }],
},
{
type: "input",
label: "简介",
name: "productIntro",
value: "",
rules: [{ required: true, message: "请输入简介" }],
},
{
type: "input",
label: "价格",
name: "productPrice",
value: "",
rules: [{ required: true, message: "请输入价格" }],
},
{
type: "select",
label: "所属类型",
name: "productTypeId",
value: "",
selectUrl: projectTypeConfig.LIST,
rules: [{ required: true, message: "请选择类型" }],
},
{
type: "inpput",
label: "库存",
name: "productInventory",
value: "",
rules: [{ required: true, message: "请输入库存" }],
},
];
const onFinish = (values: any) => {
// let images = values.imageUrl.map((item) => {
// return item.response.data.url;
// });
values = {
...values,
headImg: "cascas", //images.join(","),
productDesc: productDesc,
};
if (!merchantId) {
projectStore.add(values);
} else {
projectStore.putItem(merchantId, values);
}
setIsModalOpen(false);
};
useEffect(() => {
projectStore.getlist(merchantsConfig.LIST);
}, [projectStore]);
const onFinishFailed = () => {};
const addAction = () => {
setProjectConfig(defaultConfig);
setId(null);
setIsModalOpen(true);
};
return (
<div style={{ margin: 10 }}>
<Button style={{ marginBottom: 10 }} type="default" onClick={addAction}>
</Button>
<BTable
columns={columns}
store={projectStore}
dataSource={projectStore.list}
/>
<Modal
title={!merchantId ? "添加商品" : "编辑商品"}
width={1200}
open={isModalOpen}
afterClose={() => formRef.current?.resetFields()}
onOk={() => formRef.current?.submit()}
onCancel={() => {
setId(null);
setIsModalOpen(false);
}}
>
<SimpleForm
formRef={formRef}
createCallback={() => {
formRef.current?.setFieldsValue(record);
}}
formName="card_basic"
colProps={3}
subBtnName="提交"
formDatas={projectConfig}
onFinish={onFinish}
initialValues={true}
onFinishFailed={onFinishFailed}
/>
<Space align="start">
<span
style={{
width: "130px",
display: "inline-block",
textAlign: "end",
}}
>
</span>
<EditorComponent
data={productDesc}
updateChange={(v) => {
setProductDesc(v);
}}
/>
</Space>
</Modal>
</div>
);
};
export default inject("projectStore")(observer(Project));

View File

@ -1,12 +0,0 @@
import React, { useEffect } from "react";
import { inject, observer } from "mobx-react";
import { Store } from "antd/lib/form/interface";
const Rule = (props: Store) => {
const { systemStore } = props;
useEffect(() => {}, [systemStore]);
return <div style={{ margin: 10 }}></div>;
};
export default inject("systemStore")(observer(Rule));

View File

@ -1,32 +0,0 @@
import React, { useEffect, useState } from "react";
import { inject, observer } from "mobx-react";
import { Store } from "antd/lib/form/interface";
import AliUpload from "@/components/ali_upload";
import { UploadFile } from "antd";
const Banner = (props: Store) => {
const { systemStore } = props;
const [fileList, setFileList] = useState<UploadFile[]>([]);
useEffect(() => {
systemStore.getBanner().then((res) => {
res?.data.list.forEach((element) => {
element.url = element.bannerUrl;
element.name = element.bannerName;
});
setFileList(res?.data.list);
});
}, [systemStore]);
return (
<div style={{ margin: 10 }}>
<AliUpload
imgList={fileList}
onChnage={(res) => {
systemStore.addBanner(res);
}}
/>
</div>
);
};
export default inject("systemStore")(observer(Banner));

View File

@ -1,36 +0,0 @@
import React, { useEffect, useState } from "react";
import { inject, observer } from "mobx-react";
import { Store } from "antd/lib/form/interface";
import AliUpload from "@/components/ali_upload";
import { UploadFile } from "antd";
const Logs = (props: Store) => {
const { systemStore } = props;
const [fileList, setFileList] = useState<UploadFile[]>([]);
useEffect(() => {
systemStore.getBanner().then((res) => {
res?.data.list.forEach((element) => {
element.url = element.bannerUrl;
element.name = element.bannerName;
});
setFileList(res?.data.list);
});
}, [systemStore]);
return (
<div style={{ margin: 10 }}>
<AliUpload
imgList={fileList}
onChnage={(res) => {
systemStore.addImage({ url: res.url }).then((resp) => {
res.systemImageId = resp.data.id;
fileList.push(res);
setFileList(fileList);
});
}}
/>
</div>
);
};
export default inject("systemStore")(observer(Logs));

View File

@ -3,32 +3,12 @@ import App from "@/App";
import ErrorPage from "@/pages/errorPage";
import Login from "@/pages/login/login";
import { homeRouter } from "@/router/routers/home_router"
import { cardRouter } from "@/router/routers/card_router"
import { userRouter } from "@/router/routers/user_router"
import { projectRouter } from "@/router/routers/project_router"
import { systemRouter } from "@/router/routers/system_router";
import { merchantRouter } from "@/router/routers/merchant-router";
import { activeRouter } from "@/router/routers/active_router";
import { dymiticStateRouter } from "@/router/routers/dymitic_state_router";
import { rbacRouter } from "./routers/rbac_router";
import { taskRouter } from "./routers/task";
import { appRouter } from "./routers/app";
const routers = createHashRouter([
{
path: "/",
element: <App />,
children: [
...homeRouter,
...cardRouter,
...userRouter,
...projectRouter,
...systemRouter,
...merchantRouter,
...activeRouter,
...dymiticStateRouter,
...rbacRouter,
...taskRouter,
...appRouter,
]
},
{

View File

@ -1,23 +0,0 @@
import { Suspense, lazy } from "react";
const Active = lazy(() => import("@/pages/active"));
const ActiveType = lazy(() => import("@/pages/activeType"));
export const activeRouter = [
{
path: "/active-list",
index: true,
element: (
<Suspense>
<Active />
</Suspense>
),
},
{
path: "/active-type-list",
index: true,
element: (
<Suspense>
<ActiveType />,
</Suspense>
),
},
];

View File

@ -1,28 +0,0 @@
import { Suspense, lazy } from "react";
const AppManageList = lazy(() => import("@/pages/app/app-list"));
const AppManageConfig = lazy(() => import("@/pages/app/app-config"));
export const appRouter = [
{
path: "/app",
children: [
{
path: "/app/list",
index: true,
element: (
<Suspense>
<AppManageList />
</Suspense>
),
},
{
path: "/app/config/:id",
index: true,
element: (
<Suspense>
<AppManageConfig />
</Suspense>
),
},
],
},
];

View File

@ -1,52 +0,0 @@
// import Editors from "@/pages/card/editor";
import { Suspense, lazy } from "react";
const CardPageList = lazy(() => import("@/pages/card/card-list"))
const CurrentEventPageList = lazy(() => import("@/pages/card/currentEvent"))
const CharacterPageList = lazy(() => import("@/pages/card/character"))
const Componsition = lazy(() => import("@/pages/componsition/componsition"))
const Editors = lazy(() => import("@/pages/card/editor"))
export const cardRouter = [
{
path: "/card",
children: [
{
path: "/card/list",
index: true,
element: <Suspense>
<CardPageList />
</Suspense>
},
{
path: "/card/currentEvent",
index: true,
element: <Suspense>
<CurrentEventPageList />
</Suspense>
},
{
path: "/card/character",
index: true,
element: <Suspense>
<CharacterPageList />
</Suspense>
},
{
path: "/card/componsition/:id",
index: true,
element: <Suspense>
<Componsition />
</Suspense>
},
{
path: "/card/editors/:id/:type",
index: true,
element: <Suspense>
<Editors />
</Suspense>
},
]
},
];

View File

@ -1,13 +0,0 @@
import { Suspense, lazy } from "react";
const DymiticState = lazy(() => import("@/pages/dymiticState"));
export const dymiticStateRouter = [
{
path: "/dynamic-list",
index: true,
element: (
<Suspense>
<DymiticState />
</Suspense>
),
},
];

View File

@ -4,7 +4,8 @@ export const homeRouter = [
{
path: "/",
index: true,
element: <Navigate to="/dashbord" replace />
element: <Home />
// element: <Navigate to="/dashbord" replace />
},
{
path: "/dashbord",

View File

@ -1,44 +0,0 @@
import { Suspense, lazy } from "react";
const Merchant = lazy(() => import("@/pages/merchants"));
const ProductType = lazy(() => import("@/pages/merchants/productType"));
const ProductUnit = lazy(() => import("@/pages/merchants/productUnit"));
const Project = lazy(() => import("@/pages/project"));
export const merchantRouter = [
{
path: "/merchant",
index: true,
element: (
<Suspense>
<Merchant />
</Suspense>
),
},
{
path: "/project",
index: true,
element: (
<Suspense>
<Project />
</Suspense>
),
},
{
path: "/productType",
index: true,
element: (
<Suspense>
<ProductType />
</Suspense>
),
},
{
path: "/productUnit",
index: true,
element: (
<Suspense>
<ProductUnit />
</Suspense>
),
},
];

View File

@ -1,8 +0,0 @@
import Project from "@/pages/project/index";
export const projectRouter = [
{
path: "/project",
index: true,
element: <Project />
},
];

View File

@ -1,14 +0,0 @@
import Permission from "@/pages/permission";
import Rule from "@/pages/rule";
export const rbacRouter = [
{
path: "/rule",
index: true,
element: <Rule />
},
{
path: "/permission",
index: true,
element: <Permission />
},
];

View File

@ -1,16 +0,0 @@
import Logs from "@/pages/logs";
import Banner from "@/pages/system/banner";
export const systemRouter = [
{
path: "/banner",
index: true,
element: <Banner />
},
{
path: "/logs",
index: true,
element: <Logs />
},
];

View File

@ -1,14 +0,0 @@
import Active from "@/pages/active";
import ActiveType from "@/pages/activeType";
export const taskRouter = [
{
path: "/task-list",
index: true,
element: <Active />
},
{
path: "/task-type-list",
index: true,
element: <ActiveType />
},
];

View File

@ -1,8 +0,0 @@
import User from "@/pages/user/user";
export const userRouter = [
{
path: "/user",
index: true,
element: <User />
},
];