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} 元
-
+