diff --git a/config/webpack.config.js b/config/webpack.config.js index a7c0929ebd94c50ccfd34dcec85ff1c5ba6f80b5..039fd880bd9cc9c3feec46abd7b93fe654b3fc06 100644 --- a/config/webpack.config.js +++ b/config/webpack.config.js @@ -338,6 +338,7 @@ module.exports = function (webpackEnv) { '@': paths.appSrc, '@img': `${paths.appSrc}/public/img`, '@utils': `${paths.appSrc}/common/utils`, + '@apps': `${paths.appSrc}/pages/apps` }, plugins: [ // Prevents users from importing files from outside of src/ (or node_modules/). diff --git a/mock/date/index.js b/mock/date/index.js index 966fcb6df67df51cf8c7a4940c75a9aece7f394e..5bc2dcd0c37610e585866ee3bf4d8fed99c9d708 100644 --- a/mock/date/index.js +++ b/mock/date/index.js @@ -8,6 +8,10 @@ const userInfo = Mock.mock({ "image": { type: 0, src: 'https://react-desktop.oss-cn-shenzhen.aliyuncs.com/images/logo/file/file.png' + }, + openWith: { + type: 0, + path: 'https://www.ynedu.plus' } } ], @@ -18,6 +22,10 @@ const userInfo = Mock.mock({ "image": { type: 0, src: 'https://react-desktop.oss-cn-shenzhen.aliyuncs.com/images/logo/file/file.png' + }, + openWith: { + type: 1, + name: 'userinfo' } } ], diff --git a/src/App.tsx b/src/App.tsx index 98898069eda278ad3005467a40f98abd5caaade0..411f21f1d345975344b3a0e331a7fa7461fe45ee 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -2,10 +2,10 @@ import React from 'react' import { Spin } from 'antd' import styles from './App.module.scss' import { Routes, Route } from 'react-router-dom' -import Desktop from './pages/Desktop' -import Apps from './pages/Apps' +import Desktop from './pages/desktop' +import Apps from './pages/apps' import getToken from '@utils/getToken' -import Login from './pages/Login' +import Login from './pages/login' function App() { const [isLoad, setIsLoad] = React.useState(false) @@ -19,7 +19,7 @@ function App() { {isLoad ? ( } /> - } /> + } /> } /> ) : ( diff --git a/src/common/constants/index.ts b/src/common/constants/index.ts index 4eb19e442b63ae3c554f8f843f584586b417dd0c..07ad684da96b1f8a1906b7ffe422878cf7ca11d3 100644 --- a/src/common/constants/index.ts +++ b/src/common/constants/index.ts @@ -9,12 +9,21 @@ const WINDOW_STATUS = { const WINDOW_DRAG = { RIGHT: 1, BOTTOM: 2, - RIGHT_BOTTOM: 3 + RIGHT_BOTTOM: 3, + TITLE: 4 } // 窗口最小宽高 const WINDOW_MIN = 300 +// 窗口打开方式 +const WINDOW_OPEN_WITH = { + IFRAME: 0, // iframe打开 + COMPONENT: 1, // 组件引用 + BLANK: 2, // 新标签 + INLINE: 3 // 内部跳转 +} + // 图标类型 const IMAGE_TYPE = { IMG: 0, // 图片 @@ -35,4 +44,11 @@ const GENDER = { SECRECY: 2 // 保密 } -export { WINDOW_STATUS, IMAGE_TYPE, RESPONSE_CODE, WINDOW_DRAG, WINDOW_MIN } +export { + WINDOW_STATUS, + IMAGE_TYPE, + RESPONSE_CODE, + WINDOW_DRAG, + WINDOW_MIN, + WINDOW_OPEN_WITH +} diff --git a/src/pages/Apps/index.tsx b/src/pages/Apps/index.tsx deleted file mode 100644 index 26b1a2af5ec0c544127cdfb025decdcd47dac29a..0000000000000000000000000000000000000000 --- a/src/pages/Apps/index.tsx +++ /dev/null @@ -1,7 +0,0 @@ -import React from 'react' - -const Apps: React.FC = () => { - return
apps
-} - -export default Apps diff --git a/src/pages/apps/index.tsx b/src/pages/apps/index.tsx new file mode 100644 index 0000000000000000000000000000000000000000..37047113eeee59a537c338ebd073f771a104d56f --- /dev/null +++ b/src/pages/apps/index.tsx @@ -0,0 +1,14 @@ +import React from 'react' +import { Routes, Route } from 'react-router-dom' +import Management from './management' + +const Apps: React.FC = () => { + return ( + + asd + } /> + + ) +} + +export default Apps diff --git a/src/pages/apps/management/index.tsx b/src/pages/apps/management/index.tsx new file mode 100644 index 0000000000000000000000000000000000000000..dda32313050977d7da1b09080b4d722bdeec4ad1 --- /dev/null +++ b/src/pages/apps/management/index.tsx @@ -0,0 +1,13 @@ +import React from 'react' +import { Routes, Route } from 'react-router-dom' +import Userinfo from './user/userinfo' + +const Management: React.FC = () => { + return ( + + } /> + + ) +} + +export default Management diff --git a/src/pages/apps/management/user/userinfo/index.tsx b/src/pages/apps/management/user/userinfo/index.tsx new file mode 100644 index 0000000000000000000000000000000000000000..28288636177f8200323d55f6c9b372ca6e9ebc23 --- /dev/null +++ b/src/pages/apps/management/user/userinfo/index.tsx @@ -0,0 +1,12 @@ +import React from 'react' + +const Userinfo: React.FC = () => { + return ( +
+
asd
+
content
+
+ ) +} + +export default Userinfo diff --git a/src/pages/Desktop/Desk/Apps/index.module.scss b/src/pages/desktop/Desk/Apps/index.module.scss similarity index 100% rename from src/pages/Desktop/Desk/Apps/index.module.scss rename to src/pages/desktop/Desk/Apps/index.module.scss diff --git a/src/pages/Desktop/Desk/Apps/index.tsx b/src/pages/desktop/Desk/Apps/index.tsx similarity index 100% rename from src/pages/Desktop/Desk/Apps/index.tsx rename to src/pages/desktop/Desk/Apps/index.tsx diff --git a/src/pages/Desktop/Desk/index.module.scss b/src/pages/desktop/Desk/index.module.scss similarity index 100% rename from src/pages/Desktop/Desk/index.module.scss rename to src/pages/desktop/Desk/index.module.scss diff --git a/src/pages/Desktop/Desk/index.tsx b/src/pages/desktop/Desk/index.tsx similarity index 100% rename from src/pages/Desktop/Desk/index.tsx rename to src/pages/desktop/Desk/index.tsx diff --git a/src/pages/Desktop/Mask/index.module.scss b/src/pages/desktop/Mask/index.module.scss similarity index 100% rename from src/pages/Desktop/Mask/index.module.scss rename to src/pages/desktop/Mask/index.module.scss diff --git a/src/pages/Desktop/Mask/index.tsx b/src/pages/desktop/Mask/index.tsx similarity index 100% rename from src/pages/Desktop/Mask/index.tsx rename to src/pages/desktop/Mask/index.tsx diff --git a/src/pages/Desktop/StartMenu/Application/index.module.scss b/src/pages/desktop/StartMenu/Application/index.module.scss similarity index 100% rename from src/pages/Desktop/StartMenu/Application/index.module.scss rename to src/pages/desktop/StartMenu/Application/index.module.scss diff --git a/src/pages/Desktop/StartMenu/Application/index.tsx b/src/pages/desktop/StartMenu/Application/index.tsx similarity index 100% rename from src/pages/Desktop/StartMenu/Application/index.tsx rename to src/pages/desktop/StartMenu/Application/index.tsx diff --git a/src/pages/Desktop/StartMenu/Control/index.module.scss b/src/pages/desktop/StartMenu/Control/index.module.scss similarity index 100% rename from src/pages/Desktop/StartMenu/Control/index.module.scss rename to src/pages/desktop/StartMenu/Control/index.module.scss diff --git a/src/pages/Desktop/StartMenu/Control/index.tsx b/src/pages/desktop/StartMenu/Control/index.tsx similarity index 100% rename from src/pages/Desktop/StartMenu/Control/index.tsx rename to src/pages/desktop/StartMenu/Control/index.tsx diff --git a/src/pages/Desktop/StartMenu/index.module.scss b/src/pages/desktop/StartMenu/index.module.scss similarity index 100% rename from src/pages/Desktop/StartMenu/index.module.scss rename to src/pages/desktop/StartMenu/index.module.scss diff --git a/src/pages/Desktop/StartMenu/index.tsx b/src/pages/desktop/StartMenu/index.tsx similarity index 100% rename from src/pages/Desktop/StartMenu/index.tsx rename to src/pages/desktop/StartMenu/index.tsx diff --git a/src/pages/Desktop/StartToolsBar/DateTime/index.module.scss b/src/pages/desktop/StartToolsBar/DateTime/index.module.scss similarity index 100% rename from src/pages/Desktop/StartToolsBar/DateTime/index.module.scss rename to src/pages/desktop/StartToolsBar/DateTime/index.module.scss diff --git a/src/pages/Desktop/StartToolsBar/DateTime/index.tsx b/src/pages/desktop/StartToolsBar/DateTime/index.tsx similarity index 100% rename from src/pages/Desktop/StartToolsBar/DateTime/index.tsx rename to src/pages/desktop/StartToolsBar/DateTime/index.tsx diff --git a/src/pages/Desktop/StartToolsBar/WindonBar/index.module.scss b/src/pages/desktop/StartToolsBar/WindonBar/index.module.scss similarity index 100% rename from src/pages/Desktop/StartToolsBar/WindonBar/index.module.scss rename to src/pages/desktop/StartToolsBar/WindonBar/index.module.scss diff --git a/src/pages/Desktop/StartToolsBar/WindonBar/index.tsx b/src/pages/desktop/StartToolsBar/WindonBar/index.tsx similarity index 100% rename from src/pages/Desktop/StartToolsBar/WindonBar/index.tsx rename to src/pages/desktop/StartToolsBar/WindonBar/index.tsx diff --git a/src/pages/Desktop/StartToolsBar/index.module.scss b/src/pages/desktop/StartToolsBar/index.module.scss similarity index 100% rename from src/pages/Desktop/StartToolsBar/index.module.scss rename to src/pages/desktop/StartToolsBar/index.module.scss diff --git a/src/pages/Desktop/StartToolsBar/index.tsx b/src/pages/desktop/StartToolsBar/index.tsx similarity index 93% rename from src/pages/Desktop/StartToolsBar/index.tsx rename to src/pages/desktop/StartToolsBar/index.tsx index 78c0d28579b05c099317cf8550359e4a7a72228c..71a189735b667c72ff202b04ec5a53e44f1c6ac2 100644 --- a/src/pages/Desktop/StartToolsBar/index.tsx +++ b/src/pages/desktop/StartToolsBar/index.tsx @@ -3,7 +3,7 @@ import styles from './index.module.scss' import startImg from '@img/icon/start/home.png' import useStore, { MyState } from '@/store' import WindowBar from './WindonBar' -import DateTime from '@/pages/Desktop/StartToolsBar/DateTime' +import DateTime from './DateTime' const StartToolsBar: React.FC = () => { const setShowStartMenu = useStore((state: MyState) => state.setShowStartMenu) diff --git a/src/pages/desktop/Window/Open/ComponentsWith/PageComponents.tsx b/src/pages/desktop/Window/Open/ComponentsWith/PageComponents.tsx new file mode 100644 index 0000000000000000000000000000000000000000..e92468abc80f522483ed8c2166d24134741de223 --- /dev/null +++ b/src/pages/desktop/Window/Open/ComponentsWith/PageComponents.tsx @@ -0,0 +1,10 @@ +import React from 'react' +import Userinfo from '@apps/management/user/userinfo' + +export type PageComponentName = 'userinfo' + +const PageComponents: Record = { + userinfo: Userinfo +} + +export default PageComponents diff --git a/src/pages/desktop/Window/Open/ComponentsWith/index.module.scss b/src/pages/desktop/Window/Open/ComponentsWith/index.module.scss new file mode 100644 index 0000000000000000000000000000000000000000..2384501f88121c9b4db00afa684bed7d5fa9e1cd --- /dev/null +++ b/src/pages/desktop/Window/Open/ComponentsWith/index.module.scss @@ -0,0 +1,4 @@ +.page { + width: 100%; + height: 100%; +} diff --git a/src/pages/desktop/Window/Open/ComponentsWith/index.tsx b/src/pages/desktop/Window/Open/ComponentsWith/index.tsx new file mode 100644 index 0000000000000000000000000000000000000000..dc35592dbdd18991d320eacd4f017f3369da17b1 --- /dev/null +++ b/src/pages/desktop/Window/Open/ComponentsWith/index.tsx @@ -0,0 +1,19 @@ +import React from 'react' +import styles from './index.module.scss' +import PageComponents, { PageComponentName } from './PageComponents' + +interface Props { + name: PageComponentName + windowId: string +} + +const ComponentsWith: React.FC = ({ name }) => { + const PageComponent = PageComponents[name] + return ( +
+ +
+ ) +} + +export default ComponentsWith diff --git a/src/pages/desktop/Window/Open/IframeWith/index.module.scss b/src/pages/desktop/Window/Open/IframeWith/index.module.scss new file mode 100644 index 0000000000000000000000000000000000000000..d4b6594858d4d797f0f0d0e97dfd4df364e62986 --- /dev/null +++ b/src/pages/desktop/Window/Open/IframeWith/index.module.scss @@ -0,0 +1,21 @@ +.iframeBox { + position: relative; + width: 100%; + height: 100%; +} + +.iframe { + width: 100%; + height: 100%; +} + +.loading { + position: absolute; + top: 0; + left: 0; + display: flex; + justify-content: center; + align-items: center; + width: 100%; + height: 100%; +} diff --git a/src/pages/desktop/Window/Open/IframeWith/index.tsx b/src/pages/desktop/Window/Open/IframeWith/index.tsx new file mode 100644 index 0000000000000000000000000000000000000000..4a5d37cb03ea63ad092fc88efc9254c1eac8193e --- /dev/null +++ b/src/pages/desktop/Window/Open/IframeWith/index.tsx @@ -0,0 +1,31 @@ +import React from 'react' +import styles from './index.module.scss' +import { Spin } from 'antd' + +interface Props { + path: string + windowId: string +} + +const IframeWith: React.FC = ({ path, windowId }) => { + const [isLoad, setIsLoad] = React.useState(false) + return ( +
+