refactor🥊: 去除不需要的页面组件和npm包
This commit is contained in:
parent
a22dc5cafe
commit
0d4e4ca149
|
@ -5,15 +5,11 @@
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "vite",
|
"dev": "vite",
|
||||||
"build": "tsc && vite build",
|
"build": "tsc && vite build && pwsh scripts/build.ps1",
|
||||||
"preview": "vite preview"
|
"preview": "vite preview"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@ant-design/icons": "^4.7.0",
|
"@ant-design/icons": "^4.7.0",
|
||||||
"@bytemd/plugin-gfm": "^1.17.2",
|
|
||||||
"@bytemd/plugin-highlight": "^1.17.2",
|
|
||||||
"@bytemd/react": "^1.17.2",
|
|
||||||
"@nextui-org/react": "^1.0.0-beta.9",
|
|
||||||
"antd": "^4.22.8",
|
"antd": "^4.22.8",
|
||||||
"axios": "^0.27.2",
|
"axios": "^0.27.2",
|
||||||
"dayjs": "^1.11.5",
|
"dayjs": "^1.11.5",
|
||||||
|
|
|
@ -2,9 +2,6 @@ import Layout from './components/layout'
|
||||||
import {Routes, Route} from 'react-router-dom'
|
import {Routes, Route} from 'react-router-dom'
|
||||||
import {useEffect} from "react";
|
import {useEffect} from "react";
|
||||||
import Home from './pages/Home/Home'
|
import Home from './pages/Home/Home'
|
||||||
import Login from './pages/Login'
|
|
||||||
import Chat from './components/chat'
|
|
||||||
import {MdEditor} from './components/editor'
|
|
||||||
import NotFound from './pages/NotFound'
|
import NotFound from './pages/NotFound'
|
||||||
import {Bill, BillContext} from "./store";
|
import {Bill, BillContext} from "./store";
|
||||||
import './App.css'
|
import './App.css'
|
||||||
|
@ -28,9 +25,7 @@ function App() {
|
||||||
<Route path={"/"} element={<Home/>}/>
|
<Route path={"/"} element={<Home/>}/>
|
||||||
<Route path={"/home"} element={<Home/>}/>
|
<Route path={"/home"} element={<Home/>}/>
|
||||||
<Route path={"/record"} element={<Record/>}/>
|
<Route path={"/record"} element={<Record/>}/>
|
||||||
<Route path={"/chat"} element={<Chat/>}/>
|
<Route path={"/*"} element={<NotFound/>}/>
|
||||||
<Route path={"/editor"} element={<MdEditor/>}/>
|
|
||||||
<Route path={'/login'} element={<Login/>}/>
|
|
||||||
</Routes>
|
</Routes>
|
||||||
</Layout>
|
</Layout>
|
||||||
</BillContext.Provider>
|
</BillContext.Provider>
|
||||||
|
|
|
@ -1,13 +0,0 @@
|
||||||
import { Left } from "../../assets/icon/Left";
|
|
||||||
import styles from "./chat.module.scss"
|
|
||||||
|
|
||||||
export default function Chat() {
|
|
||||||
|
|
||||||
return (
|
|
||||||
<div className={styles.chatContainer}>
|
|
||||||
<Left size={50} fill="currentColor" />
|
|
||||||
<header className={styles.chatHeader}></header>
|
|
||||||
<footer className={styles.chatFooter}></footer>
|
|
||||||
</div>
|
|
||||||
)
|
|
||||||
}
|
|
|
@ -1,26 +0,0 @@
|
||||||
import {Editor} from '@bytemd/react'
|
|
||||||
import 'bytemd/dist/index.css'
|
|
||||||
import highlight from '@bytemd/plugin-highlight'
|
|
||||||
import gfm from "@bytemd/plugin-gfm"
|
|
||||||
import {useState} from 'react'
|
|
||||||
|
|
||||||
|
|
||||||
const plugins = [
|
|
||||||
gfm(),
|
|
||||||
highlight()
|
|
||||||
]
|
|
||||||
|
|
||||||
export const MdEditor = () => {
|
|
||||||
|
|
||||||
const [value, setValue] = useState('')
|
|
||||||
|
|
||||||
return (
|
|
||||||
<Editor
|
|
||||||
value={value}
|
|
||||||
plugins={plugins}
|
|
||||||
onChange={(v) => {
|
|
||||||
setValue(v)
|
|
||||||
}}
|
|
||||||
/>
|
|
||||||
)
|
|
||||||
}
|
|
|
@ -22,11 +22,8 @@ export default function Layout(props: IProps) {
|
||||||
const { children, home } = props
|
const { children, home } = props
|
||||||
|
|
||||||
const items = [
|
const items = [
|
||||||
{ label: <NavLink to={"/home"}>Home</NavLink>, key: '/home', icon: <HomeOutlined /> },
|
{ label: <NavLink to={"/home"}>统计</NavLink>, key: '/home', icon: <HomeOutlined /> },
|
||||||
{ label: <NavLink to={"/record"}>Record</NavLink>, key: '/record', icon: <FormOutlined /> },
|
{ label: <NavLink to={"/record"}>记账</NavLink>, key: '/record', icon: <FormOutlined /> },
|
||||||
{ label: <NavLink to={"/login"}>Login</NavLink>, key: '/login', icon: <LoginOutlined /> },
|
|
||||||
{ label: <NavLink to={"/chat"}>Chat</NavLink>, key: '/chat', icon: <WechatOutlined /> },
|
|
||||||
{ label: <NavLink to={"/editor"}>Editor</NavLink>, key: '/editor', icon: <EditOutlined /> },
|
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,3 @@
|
||||||
import { NextUIProvider } from '@nextui-org/react'
|
|
||||||
import React from 'react'
|
import React from 'react'
|
||||||
import ReactDOM from 'react-dom/client'
|
import ReactDOM from 'react-dom/client'
|
||||||
import { BrowserRouter } from 'react-router-dom'
|
import { BrowserRouter } from 'react-router-dom'
|
||||||
|
@ -8,10 +7,8 @@ import './index.css'
|
||||||
|
|
||||||
ReactDOM.createRoot(document.getElementById('root') as HTMLElement).render(
|
ReactDOM.createRoot(document.getElementById('root') as HTMLElement).render(
|
||||||
<React.StrictMode>
|
<React.StrictMode>
|
||||||
<NextUIProvider >
|
<BrowserRouter>
|
||||||
<BrowserRouter>
|
<App />
|
||||||
<App />
|
</BrowserRouter>
|
||||||
</BrowserRouter>
|
|
||||||
</NextUIProvider>
|
|
||||||
</React.StrictMode>
|
</React.StrictMode>
|
||||||
)
|
)
|
||||||
|
|
|
@ -43,11 +43,6 @@ const Home = () => {
|
||||||
];
|
];
|
||||||
const [billType, setBillType] = useState(BillType.consume)
|
const [billType, setBillType] = useState(BillType.consume)
|
||||||
|
|
||||||
const TotalMoney = () => <Card>
|
|
||||||
{"总金额"}
|
|
||||||
¥{billStore.totalMoney}
|
|
||||||
</Card>
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className={styles.home}>
|
<div className={styles.home}>
|
||||||
<div className={styles.total}>
|
<div className={styles.total}>
|
||||||
|
@ -64,7 +59,10 @@ const Home = () => {
|
||||||
value={billType}
|
value={billType}
|
||||||
onChange={e => setBillType(e.target.value)}
|
onChange={e => setBillType(e.target.value)}
|
||||||
/>
|
/>
|
||||||
<TotalMoney/>
|
<Card>
|
||||||
|
{"总金额"}
|
||||||
|
¥{billStore.getTotalMoney(billType)}
|
||||||
|
</Card>
|
||||||
</Space>
|
</Space>
|
||||||
</div>
|
</div>
|
||||||
<Bar data={transformer(billStore.groupByDate(billType))}/>
|
<Bar data={transformer(billStore.groupByDate(billType))}/>
|
||||||
|
@ -73,5 +71,4 @@ const Home = () => {
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
export default observer(Home)
|
export default observer(Home)
|
|
@ -1,76 +0,0 @@
|
||||||
import {
|
|
||||||
Button,
|
|
||||||
Card,
|
|
||||||
Checkbox,
|
|
||||||
Input,
|
|
||||||
Row,
|
|
||||||
Spacer,
|
|
||||||
Text,
|
|
||||||
} from "@nextui-org/react";
|
|
||||||
import { Mail } from "../assets/icon/Mail";
|
|
||||||
import { Password } from "../assets/icon/Password";
|
|
||||||
import { React } from "../assets/icon/React";
|
|
||||||
import { useState } from "react";
|
|
||||||
|
|
||||||
const Login = () => {
|
|
||||||
const [email, setEmail] = useState("");
|
|
||||||
const [password, setPassword] = useState("");
|
|
||||||
|
|
||||||
return (
|
|
||||||
<Card css={{ p: "$6", mw: "400px" }}>
|
|
||||||
<Card.Header>
|
|
||||||
<React fill="currentColor" />
|
|
||||||
<Text size={18}>
|
|
||||||
Welcome to CLZ's
|
|
||||||
<Text b size={18}>
|
|
||||||
{" "}
|
|
||||||
BillAPP
|
|
||||||
</Text>
|
|
||||||
</Text>
|
|
||||||
</Card.Header>
|
|
||||||
<Card.Divider />
|
|
||||||
<Card.Body>
|
|
||||||
<Input
|
|
||||||
clearable
|
|
||||||
bordered
|
|
||||||
fullWidth
|
|
||||||
color="primary"
|
|
||||||
size="lg"
|
|
||||||
placeholder="Email"
|
|
||||||
contentLeft={<Mail fill="currentColor" />}
|
|
||||||
value={email}
|
|
||||||
onChange={e => setEmail(e.target.value)}
|
|
||||||
/>
|
|
||||||
<Spacer />
|
|
||||||
<Input.Password
|
|
||||||
clearable
|
|
||||||
bordered
|
|
||||||
fullWidth
|
|
||||||
color="primary"
|
|
||||||
size="lg"
|
|
||||||
placeholder="Password"
|
|
||||||
contentLeft={<Password fill="currentColor" />}
|
|
||||||
value={password}
|
|
||||||
onChange={(e) => setPassword(e.target.value)}
|
|
||||||
/>
|
|
||||||
<Spacer />
|
|
||||||
<Row justify="space-between">
|
|
||||||
<Checkbox>
|
|
||||||
<Text size={14}>Remember me</Text>
|
|
||||||
</Checkbox>
|
|
||||||
<Text size={14}>Forgot password?</Text>
|
|
||||||
</Row>
|
|
||||||
</Card.Body>
|
|
||||||
<Card.Footer>
|
|
||||||
<Row justify="center">
|
|
||||||
<Button size="sm" light>
|
|
||||||
Clear
|
|
||||||
</Button>
|
|
||||||
<Button size="sm">Sign in</Button>
|
|
||||||
</Row>
|
|
||||||
</Card.Footer>
|
|
||||||
</Card>
|
|
||||||
);
|
|
||||||
};
|
|
||||||
|
|
||||||
export default Login;
|
|
|
@ -1,7 +1,7 @@
|
||||||
import {makeAutoObservable, runInAction} from "mobx";
|
import { makeAutoObservable, runInAction } from "mobx";
|
||||||
import {createContext} from "react";
|
import { createContext } from "react";
|
||||||
import {createBill, getBills, getClass} from "../api/bills";
|
import { createBill, getBills, getClass } from "../api/bills";
|
||||||
import {BillType, IBill} from "../model";
|
import { BillType, IBill } from "../model";
|
||||||
import * as R from "ramda"
|
import * as R from "ramda"
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -10,7 +10,7 @@ import * as R from "ramda"
|
||||||
export class Bill {
|
export class Bill {
|
||||||
private _bills: IBill[] = [];
|
private _bills: IBill[] = [];
|
||||||
// _cls2label: IClass = {consume: new Map<string, string[]>(), income: []}
|
// _cls2label: IClass = {consume: new Map<string, string[]>(), income: []}
|
||||||
private _cls2label: { consume: Record<string, string[]>, income: [] } = {consume: {}, income: []}
|
private _cls2label: { consume: Record<string, string[]>, income: [] } = { consume: {}, income: [] }
|
||||||
|
|
||||||
constructor() {
|
constructor() {
|
||||||
makeAutoObservable(this)
|
makeAutoObservable(this)
|
||||||
|
@ -57,6 +57,32 @@ export class Bill {
|
||||||
return functions(this._bills)
|
return functions(this._bills)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
get consumeMoney() {
|
||||||
|
const functions = R.compose(
|
||||||
|
Number,
|
||||||
|
(s: number) => s.toFixed(2),
|
||||||
|
R.sum,
|
||||||
|
R.map((bill: IBill) => bill.money),
|
||||||
|
R.filter((bill: IBill) => bill.type === BillType.consume),
|
||||||
|
)
|
||||||
|
return functions(this._bills)
|
||||||
|
}
|
||||||
|
|
||||||
|
get incomeMoney() {
|
||||||
|
const functions = R.compose(
|
||||||
|
Number,
|
||||||
|
(s: number) => s.toFixed(2),
|
||||||
|
R.sum,
|
||||||
|
R.map((bill: IBill) => bill.money),
|
||||||
|
R.filter((bill: IBill) => bill.type === BillType.income),
|
||||||
|
)
|
||||||
|
return functions(this._bills)
|
||||||
|
}
|
||||||
|
|
||||||
|
getTotalMoney(type?: BillType) {
|
||||||
|
return !type ? this.totalMoney : type === BillType.income ? this.incomeMoney : this.consumeMoney
|
||||||
|
}
|
||||||
|
|
||||||
get meanMoneyByDate() {
|
get meanMoneyByDate() {
|
||||||
const days = Reflect.ownKeys(this.groupByDate).length
|
const days = Reflect.ownKeys(this.groupByDate).length
|
||||||
if (days === 0) return 0
|
if (days === 0) return 0
|
||||||
|
@ -65,7 +91,7 @@ export class Bill {
|
||||||
|
|
||||||
|
|
||||||
async add(bill: IBill) {
|
async add(bill: IBill) {
|
||||||
const {id} = await createBill(bill)
|
const { id } = await createBill(bill)
|
||||||
bill.id = id
|
bill.id = id
|
||||||
runInAction(() => {
|
runInAction(() => {
|
||||||
this._bills.push(bill);
|
this._bills.push(bill);
|
||||||
|
|
Loading…
Reference in New Issue
Block a user