From d13279ffe59c8e5b15bb2135c7a8ff2e02d7c4c9 Mon Sep 17 00:00:00 2001 From: xixi <123@qq.com> Date: Tue, 7 May 2024 17:00:32 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=BB=BA=E5=AD=90=E8=B7=AF=E7=94=B1?= =?UTF-8?q?=E5=8F=8A=E9=A1=B5=E9=9D=A2=E7=9A=84=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package-lock.json | 48 +- package.json | 2 + src/App.tsx | 4 +- src/components/card/CardProj.tsx | 208 ++++++++- src/components/card/CardProjType.tsx | 24 +- src/components/card/card-proj-type.css | 14 +- src/components/card/card-proj.css | 255 ++++++++++- src/components/list/ListProj.tsx | 61 +-- src/components/list/ListProjAgent.tsx | 1 + src/components/list/list-proj.css | 6 +- src/components/menu/MenuWithBottomButton.tsx | 6 +- src/components/menu/MenuWithTopButton.tsx | 7 +- src/context/IndexListContext.ts | 2 +- src/layout/body/body.css | 2 +- src/layout/foot/foot.css | 2 + src/route/Home/Home.css | 0 src/route/Home/Home.tsx | 36 ++ src/route/SearchList/SearchList.tsx | 96 ++++ src/route/SearchList/searchList.css | 27 ++ src/route/index/Index.tsx | 139 +++++- src/route/index/index.css | 54 +++ src/route/proj/ProjCreate.tsx | 79 ++-- src/route/proj/proj-create.css | 18 +- src/route/router.tsx | 456 +++++++++++++------ src/static/test.jpg | Bin 0 -> 154827 bytes 25 files changed, 1245 insertions(+), 302 deletions(-) create mode 100644 src/route/Home/Home.css create mode 100644 src/route/Home/Home.tsx create mode 100644 src/route/SearchList/SearchList.tsx create mode 100644 src/route/SearchList/searchList.css create mode 100644 src/static/test.jpg diff --git a/package-lock.json b/package-lock.json index ebe964a..5821feb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -16,7 +16,9 @@ "pinyin-pro": "^3.19.6", "react": "^18.2.0", "react-dom": "^18.2.0", + "react-redux": "^9.1.2", "react-router-dom": "^6.22.3", + "redux": "^5.0.1", "sort-by": "^1.2.0" }, "devDependencies": { @@ -1446,13 +1448,13 @@ "version": "15.7.11", "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.11.tgz", "integrity": "sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng==", - "dev": true + "devOptional": true }, "node_modules/@types/react": { "version": "18.2.64", "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.64.tgz", "integrity": "sha512-MlmPvHgjj2p3vZaxbQgFUQFvD8QiZwACfGqEdDSWou5yISWxDQ4/74nCAwsUiX7UFLKZz3BbVSPj+YxeoGGCfg==", - "dev": true, + "devOptional": true, "dependencies": { "@types/prop-types": "*", "@types/scheduler": "*", @@ -1472,7 +1474,7 @@ "version": "0.16.8", "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.8.tgz", "integrity": "sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A==", - "dev": true + "devOptional": true }, "node_modules/@types/semver": { "version": "7.5.8", @@ -1480,6 +1482,11 @@ "integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==", "dev": true }, + "node_modules/@types/use-sync-external-store": { + "version": "0.0.3", + "resolved": "https://registry.npmmirror.com/@types/use-sync-external-store/-/use-sync-external-store-0.0.3.tgz", + "integrity": "sha512-EwmlvuaxPNej9+T4v5AuBPJa2x2UOJVdjCtDHgcDqitUeOtjnJKJ+apYjVcAoBEMjKW1VVFGZLUb5+qqa09XFA==" + }, "node_modules/@typescript-eslint/eslint-plugin": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.1.1.tgz", @@ -3872,6 +3879,28 @@ "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==" }, + "node_modules/react-redux": { + "version": "9.1.2", + "resolved": "https://registry.npmmirror.com/react-redux/-/react-redux-9.1.2.tgz", + "integrity": "sha512-0OA4dhM1W48l3uzmv6B7TXPCGmokUU4p1M44DGN2/D9a1FjVPukVjER1PcPX97jIg6aUeLq1XJo1IpfbgULn0w==", + "dependencies": { + "@types/use-sync-external-store": "^0.0.3", + "use-sync-external-store": "^1.0.0" + }, + "peerDependencies": { + "@types/react": "^18.2.25", + "react": "^18.0", + "redux": "^5.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "redux": { + "optional": true + } + } + }, "node_modules/react-refresh": { "version": "0.14.0", "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.0.tgz", @@ -3911,6 +3940,11 @@ "react-dom": ">=16.8" } }, + "node_modules/redux": { + "version": "5.0.1", + "resolved": "https://registry.npmmirror.com/redux/-/redux-5.0.1.tgz", + "integrity": "sha512-M9/ELqF6fy8FwmkpnF0S3YKOqMyoWJ4+CS5Efg2ct3oY9daQvd/Pc71FpGZsVsbl3Cpb+IIcjBDUnnyBdQbq4w==" + }, "node_modules/regenerator-runtime": { "version": "0.14.1", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", @@ -4328,6 +4362,14 @@ "punycode": "^2.1.0" } }, + "node_modules/use-sync-external-store": { + "version": "1.2.2", + "resolved": "https://registry.npmmirror.com/use-sync-external-store/-/use-sync-external-store-1.2.2.tgz", + "integrity": "sha512-PElTlVMwpblvbNqQ82d2n6RjStvdSoNe9FG28kNfz3WiXilJm4DdNkEzRhCZuIDwY8U08WVihhGR5iRqAwfDiw==", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, "node_modules/vite": { "version": "5.1.5", "resolved": "https://registry.npmjs.org/vite/-/vite-5.1.5.tgz", diff --git a/package.json b/package.json index 83c8fdb..8057907 100644 --- a/package.json +++ b/package.json @@ -18,7 +18,9 @@ "pinyin-pro": "^3.19.6", "react": "^18.2.0", "react-dom": "^18.2.0", + "react-redux": "^9.1.2", "react-router-dom": "^6.22.3", + "redux": "^5.0.1", "sort-by": "^1.2.0" }, "devDependencies": { diff --git a/src/App.tsx b/src/App.tsx index 8c2f450..a8a1e26 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -1,6 +1,6 @@ import Head from './layout/head/Head.tsx'; import Body from './layout/body/Body.tsx'; -import Foot from './layout/foot/Foot.tsx'; +// import Foot from './layout/foot/Foot.tsx'; import { GlobalContext, GlobalData, @@ -42,7 +42,7 @@ const App: React.FC = () => { - + {/* */} diff --git a/src/components/card/CardProj.tsx b/src/components/card/CardProj.tsx index bf13e83..6d61ed0 100644 --- a/src/components/card/CardProj.tsx +++ b/src/components/card/CardProj.tsx @@ -11,7 +11,8 @@ import { LoadingOutlined, SearchOutlined, SettingOutlined, - WarningOutlined + WarningOutlined, + FolderOutlined } from '@ant-design/icons'; import { Button, ConfigProvider, Dropdown, Tag } from 'antd'; import { GenerateStatus, IProj, PayStatus, ProjChargeType } from "../../interfaces/proj/IProj.ts"; @@ -23,7 +24,7 @@ import useMessage from "antd/es/message/useMessage"; import setImg from '../../static/right/set.png' import orderImg from '../../static/right/order.png' import menuImg from '../../static/right/menu.png' - +import testImg from '../../static/test.jpg' export default function CardProj(props: { item: IProj }) { const nav = useNavigate(); const data = props.item; @@ -145,7 +146,168 @@ export default function CardProj(props: { item: IProj }) { return ( <>
-
+
+
+
+
{data.projName}
+
+ {payCharge} +
+
+ 编号:{data.projContext} +
+
+
+
+ {data.gmtCreate} +
+
+
+ { + data.generate.generateStatus == GenerateStatus.SUCCESS ? ( + + + 查看 + + ) : ( + + + 编辑 + + ) + } + | + + + { + window.open(`${Axios.defaults?.baseURL}/${data.previewUrl}`, '_blank') + }}>预览 + + +
+
+
+
+ +
+
+ 金额(¥) : + {data.pay.payment / 100} +
+
+
{ + if (data.generate.generateStatus == GenerateStatus.SUCCESS) { + nav(`/proj-edit/config-loginpage-show/${data.projId}`) + } else { + nav(`/proj-edit/config-loginpage/${data.projId}`) + } + }}> + +
登录界面设置
+
+
{ + if (data.generate.generateStatus == GenerateStatus.SUCCESS) { + nav(`/proj-edit/config-mod-list-show/${data.projId}`) + } else { + nav(`/proj-edit/config-mod-list/${data.projId}`) + } + }}> + +
系统菜单管理({data.projModCount})
+
+
{ + if (data.generate.generateStatus == GenerateStatus.SUCCESS) { + nav(`/proj-edit/config-menu-list-show/${data.projId}`) + } else { + nav(`/proj-edit/config-menu-list/${data.projId}`) + + } + }}> + +
菜单排序({data.projModCount})
+
+
+
+ +
+
+
+
+ { + data.generate.generateStatus == GenerateStatus.SUCCESS ? ( +
+ + + + +
+ ) : <> + } + +
+
+
+ +
+ {/* 层级 */} + { + const span = e.domEvent.target as HTMLSpanElement; + put({ + messageApi, + url: `/api/proj/update-category/${data.projId}/${e.key}`, + onSuccess() { + messageApi.success('修改成功'); + setProjCategoryId(e.key); + setProjCategoryName(span.innerText); + } + }); + } + }}> + + {projCategoryId ? projCategoryName : '无目录'} + + + + { + projCategoryId ? ( + { + put({ + messageApi, + url: `/api/proj/cancel-category/${data.projId}`, + onSuccess() { + messageApi.success('取消成功'); + setProjCategoryId(''); + setProjCategoryName(''); + } + }); + }} /> + ) : <> + } +
+
+ {/*
*/} +
+
+ -当前状态- +
+
+ {renderGenerateStatus()} +
+
+
+ + + {/*
@@ -156,10 +318,10 @@ export default function CardProj(props: { item: IProj }) {
编号:{data.projContext} - {data.gmtCreate} - {/* 状态标签 */} - {/* {renderGenerateStatus()} */} -
+ {data.gmtCreate} */} + {/* 状态标签 */} + {/* {renderGenerateStatus()} */} + {/*
{ @@ -183,16 +345,16 @@ export default function CardProj(props: { item: IProj }) { }}>预览
-
+
*/} {/*
*/} -
+ {/*
-
- {/* {payCharge} */} - {/* 金额 */} - {/* ¥{data.pay.payment / 100} */} -
-
+
*/} + {/* {payCharge} */} + {/* 金额 */} + {/* ¥{data.pay.payment / 100} */} + {/*
*/} + {/*
金额(¥) : {data.pay.payment / 100} @@ -230,9 +392,9 @@ export default function CardProj(props: { item: IProj }) {
菜单排序({data.projModCount})
-
- {/* 目录层级结构*/} -
+
*/} + {/* 目录层级结构*/} + {/*
@@ -240,13 +402,13 @@ export default function CardProj(props: { item: IProj }) { - 当前状态 -
{renderGenerateStatus()}
-
+
*/} - {/*
+ {/*
{ data.generate.generateStatus == GenerateStatus.SUCCESS ? ( @@ -267,8 +429,8 @@ export default function CardProj(props: { item: IProj }) { }}>预览
*/} -
- {/*
+ {/*
*/} + {/*
{ data.generate.generateStatus == GenerateStatus.SUCCESS ? ( @@ -320,7 +482,7 @@ export default function CardProj(props: { item: IProj }) { }
*/} -
+ {/* */} {/*
*/} {/*
{buy.label}{(buy.price + chargeAmount) / 100} 元
-
+