Commit 4aac67f7 authored by rocosen's avatar rocosen

feat:初始化 和 个人信息

parent 8ce7e1f5
...@@ -117,10 +117,14 @@ ...@@ -117,10 +117,14 @@
"electron-log": "^4.4.8", "electron-log": "^4.4.8",
"electron-root-path": "^1.1.0", "electron-root-path": "^1.1.0",
"electron-updater": "^5.2.1", "electron-updater": "^5.2.1",
"express": "^4.18.2",
"history": "^5.3.0", "history": "^5.3.0",
"qs": "^6.11.0",
"react": "^18.2.0", "react": "^18.2.0",
"react-dom": "^18.2.0", "react-dom": "^18.2.0",
"react-redux": "^8.0.5",
"react-router-dom": "^6.3.0", "react-router-dom": "^6.3.0",
"redux": "^4.2.0",
"tss-react": "^4.4.4" "tss-react": "^4.4.4"
}, },
"devDependencies": { "devDependencies": {
......
<?xml version="1.0" encoding="UTF-8"?>
<svg width="16px" height="16px" viewBox="0 0 16 16" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>编组 48</title>
<g id="最新版本" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="消息与设置备份-2" transform="translate(-776.000000, -26.000000)">
<g id="编组-19" transform="translate(556.000000, 0.000000)">
<g id="编组-7" transform="translate(190.000000, 26.000000)">
<g id="编组-48" transform="translate(30.000000, 0.000000)">
<rect id="矩形备份-4" x="0" y="0" width="16" height="16"></rect>
<g id="编组-4备份" transform="translate(1.000000, 1.000000)" stroke="#8A9099" stroke-width="1.68">
<rect id="矩形" x="0.84" y="0.84" width="4.54222222" height="4.54222222" rx="1.03703704"></rect>
<rect id="矩形备份-2" x="0.84" y="8.61777778" width="4.54222222" height="4.54222222" rx="1.03703704"></rect>
<path d="M12.962963,0.84 L13.16,5.18518519 L8.81481481,5.38222222 L8.61777778,1.03703704 L12.962963,0.84 Z" id="矩形备份" transform="translate(10.888889, 3.111111) rotate(-90.000000) translate(-10.888889, -3.111111) "></path>
<rect id="矩形备份-3" x="8.61777778" y="8.61777778" width="4.54222222" height="4.54222222" rx="1.03703704"></rect>
</g>
</g>
</g>
</g>
</g>
</g>
</svg>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<svg width="32px" height="32px" viewBox="0 0 32 32" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>编组 3</title>
<g id="最新版本" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="消息与设置备份-2" transform="translate(-580.000000, -18.000000)">
<g id="编组-19" transform="translate(556.000000, 0.000000)">
<g id="编组-3" transform="translate(24.000000, 18.000000)">
<g id="编组-35" fill="#A0C3FF">
<rect id="矩形" x="0" y="0" width="32" height="32" rx="16"></rect>
</g>
<circle id="椭圆形" fill="#4374E0" cx="16" cy="12" r="5.33333333"></circle>
<path d="M16,18.6666667 C21.403155,18.6666667 25.9722592,22.2376629 27.4759544,27.1482974 C24.5694157,30.1407649 20.5018317,32 16,32 C11.4981683,32 7.43058428,30.1407649 4.52321549,27.1482624 C6.02774083,22.2376629 10.596845,18.6666667 16,18.6666667 Z" id="形状结合" fill="#4374E0"></path>
</g>
</g>
</g>
</g>
</svg>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<svg width="16px" height="16px" viewBox="0 0 16 16" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>编组 20</title>
<g id="最新版本" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="消息与设置备份-2" transform="translate(-806.000000, -26.000000)">
<g id="编组-19" transform="translate(556.000000, 0.000000)">
<g id="编组-7" transform="translate(190.000000, 26.000000)">
<g id="编组-20" transform="translate(60.000000, 0.000000)">
<rect id="矩形" x="0" y="0" width="16" height="16"></rect>
<g id="SSH连接" transform="translate(0.500000, 2.000000)" stroke="#8A9099">
<rect id="矩形" stroke-width="1.6875" x="0.84375" y="0.84375" width="13.3125" height="10.3125" rx="1.40625"></rect>
<path d="M3.28125,2.76923077 L7.03125,5.53846154 L3.28125,8.30769231 M7.5,8.30769231 L11.71875,8.30769231" id="形状" stroke-width="1.5" stroke-linejoin="round"></path>
</g>
</g>
</g>
</g>
</g>
</g>
</svg>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<svg width="20px" height="20px" viewBox="0 0 20 20" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>编组 36</title>
<g id="最新版本" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="消息与设置备份-2" transform="translate(-202.000000, -281.000000)">
<g id="编组-26" transform="translate(178.000000, 120.000000)">
<g id="编组-23" transform="translate(0.000000, 128.000000)">
<g id="编组-17" transform="translate(24.000000, 32.000000)">
<g id="编组-36" transform="translate(0.000000, 1.000000)">
<rect id="矩形" x="0" y="0" width="20" height="20"></rect>
<g id="编组" transform="translate(2.000000, 2.291879)" stroke="#8A9099" stroke-linejoin="round" stroke-width="1.64102564">
<path d="M0.205128205,0.833333333 C0.205128205,0.373095833 0.572484103,0 1.02564103,0 L5.94871795,0 L8,2.22752189 L14.974359,2.22752189 C15.4275282,2.22752189 15.7948718,2.60060522 15.7948718,3.06085522 L15.7948718,12.8747881 C15.7948718,13.3350381 15.4275282,13.7081214 14.974359,13.7081214 L1.02564103,13.7081214 C0.572484103,13.7081214 0.205128205,13.3350381 0.205128205,12.8747881 L0.205128205,0.833333333 Z" id="路径"></path>
<line x1="15.7948718" y1="5.37478808" x2="0.205128205" y2="5.37478808" id="路径"></line>
<line x1="0.205128205" y1="2.87478808" x2="0.205128205" y2="7.87478808" id="路径" stroke-linecap="round"></line>
<line x1="15.7948718" y1="2.87478808" x2="15.7948718" y2="7.87478808" id="路径" stroke-linecap="round"></line>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
</svg>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<svg width="16px" height="16px" viewBox="0 0 16 16" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>编组 20</title>
<g id="最新版本" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="消息与设置备份-2" transform="translate(-746.000000, -26.000000)">
<g id="编组-19" transform="translate(556.000000, 0.000000)">
<g id="编组-20" transform="translate(190.000000, 26.000000)">
<rect id="矩形" x="0" y="0" width="16" height="16"></rect>
<g id="编组" transform="translate(1.500000, 2.500000)" stroke="#8A9099" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.8">
<path d="M0,0.676115764 L0,11 L1.16071429,4.23884236 L11.0732143,4.23884236 L11.0732143,1.96129929 C11.0732143,1.58788055 10.7822093,1.28518353 10.4232143,1.28518353 L6.5,1.28518353 L4.875,0 L0.65,0 C0.29101475,0 0,0.302707169 0,0.676115764 Z" id="路径"></path>
<polygon id="路径" points="11.7 11 13 4.23884236 1.5640625 4.23884236 0 11"></polygon>
</g>
</g>
</g>
</g>
</g>
</svg>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<svg width="16px" height="16px" viewBox="0 0 16 16" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>编组 14</title>
<g id="最新版本" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="消息与设置备份-2" transform="translate(-836.000000, -26.000000)">
<g id="编组-19" transform="translate(556.000000, 0.000000)">
<g id="编组-7" transform="translate(190.000000, 26.000000)">
<g id="编组-14" transform="translate(90.000000, 0.000000)">
<rect id="矩形" x="0" y="0" width="16" height="16"></rect>
<g id="编组-13" transform="translate(1.510000, 0.700000)" stroke="#8A9099" stroke-width="2">
<path d="M0,13 L0,6.14912527 C-1.29033365e-15,5.86105827 0.124226344,5.58698374 0.340858081,5.3971067 L5.83946185,0.577597741 C6.21662517,0.247015269 6.78032581,0.246948478 7.15756746,0.577441563 L12.6589637,5.39709336 C12.8757026,5.58697354 13,5.86111843 13,6.14926811 L13,13 L13,13" id="路径-9"></path>
<line x1="6.5" y1="13" x2="6.5" y2="7" id="路径-10"></line>
</g>
</g>
</g>
</g>
</g>
</g>
</svg>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<svg width="16px" height="16px" viewBox="0 0 16 16" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>项目设置</title>
<g id="最新版本" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="消息与设置备份-2" transform="translate(-866.000000, -26.000000)" stroke="#8A9099" stroke-width="1.8">
<g id="编组-19" transform="translate(556.000000, 0.000000)">
<g id="编组-7" transform="translate(190.000000, 26.000000)">
<g id="项目设置" transform="translate(120.000000, 0.000000)">
<path d="M5.6468635,0.898881955 C6.14528043,1.30537285 7.24167646,2.18357391 8.0410091,2.18357391 C8.8308373,2.18357391 9.92398309,1.32150761 10.2368179,0.980034551 L10.2368179,0.980034551 L12.3308993,2.04696616 C12.3431614,2.3648859 12.1321914,2.92987668 12.1321914,3.4239819 C12.1321914,4.2305816 12.4452664,4.95998211 12.9450283,5.48894606 C13.4514699,6.02498009 14.1479355,6.35630737 14.9145081,6.3705714 C14.9531794,6.54087453 15.1,7.35349198 15.1,8.00533082 C15.1,8.6556832 14.9533984,9.46726628 14.9466572,9.50421289 C14.1428065,9.67528346 13.4689798,9.99804986 12.9763084,10.4987773 C12.4525703,11.0310794 12.1322113,11.7686647 12.1322113,12.5854135 C12.1322113,13.0881341 12.3455712,13.6509669 12.3636551,13.6967454 L12.3636551,13.6967454 L10.4567007,15.0578787 C9.90039296,14.6711203 8.77874757,13.7390234 7.95899092,13.7390234 C7.20266609,13.7390234 6.11156957,14.5617994 5.71504051,15.0152684 L5.71504051,15.0152684 L3.66760003,13.961537 C3.64448937,13.6755001 3.86780868,13.0962911 3.86780868,12.5853924 C3.86780868,11.7789547 3.55471922,11.0495828 3.05489403,10.5206282 C2.54849651,9.98471816 1.85211955,9.65342374 1.08567986,9.63912038 C1.04511493,9.46051033 0.9,8.65262466 0.9,8.0053097 C0.9,7.3565262 1.04535289,6.54758129 1.05337791,6.50491397 C1.85713453,6.33424414 2.53081339,6.01155261 3.02338319,5.51111858 C3.54737112,4.97876482 3.86780868,4.2410476 3.86780868,3.42400299 C3.86780868,2.91699387 3.65075835,2.34910553 3.63542293,2.31052944 L3.63542293,2.31052944 Z" id="路径" fill-rule="nonzero"></path>
<circle id="椭圆形备份" cx="8" cy="8" r="2.3"></circle>
</g>
</g>
</g>
</g>
</g>
</svg>
\ No newline at end of file
import Controller from './controller'; import Controller from './controller';
import store from '@/commons/reduxs/store'; import store from '../reduxs/store';
// import { setRequest } from "@/commons/reduxs/actions"; import { setRequest } from '../reduxs/actions';
class Axios { class Axios {
static async request({ static async request({
url = '', url = '',
...@@ -30,7 +30,7 @@ class Axios { ...@@ -30,7 +30,7 @@ class Axios {
res, res,
}; };
} catch (error) { } catch (error) {
// actions && store.dispatch(setRequest(error)); actions && store.dispatch(setRequest(error));
if (!actions) { if (!actions) {
return { return {
code: 40001, code: 40001,
......
import axios from "axios"; import axios from 'axios';
import { Constants, MESSAGETIP } from "../utils/constants"; import HeadersComponent from './header';
import HeadersComponent from "./header";
let headers = { let headers = {
"Content-Type": "application/json", 'Content-Type': 'application/json',
"Accept-Language": Constants.ACCEPT_LANGUAGE 'Accept-Language': 'zh-CN,zh;q=0.5', //中文
}; };
let headersTemp = {} let headersTemp = {};
class Controller { class Controller {
static awaitAxios({ url, type, param, store, timeout, isheader, noheader, fileType, other }) { static awaitAxios({
url,
type,
param,
store,
timeout,
isheader,
noheader,
fileType,
other,
}) {
// 发送 POST 请求 // 发送 POST 请求
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
if (isheader && !HeadersComponent(headers)) { if (isheader && !HeadersComponent(headers)) {
reject({ message: MESSAGETIP.TOKENERROR, status: "error" }) reject({
return message: '你还没有登陆或凭证过期,请重新登陆',
status: 'error',
});
return;
} }
if (isheader && typeof isheader === "object") { if (isheader && typeof isheader === 'object') {
headersTemp = { headersTemp = {
...headers, ...headers,
...isheader ...isheader,
} };
} }
const json = { url: url || '', method: type || 'get', responseType: fileType ? 'arraybuffer' : '', headers: noheader ? {} : (isheader && typeof isheader === "object" ? headersTemp : headers), data: param, timeout: timeout || 200000, ...other } const json = {
axios(json).then(function (response) { url: url || '',
if(fileType){ method: type || 'get',
resolve(response) responseType: fileType ? 'arraybuffer' : '',
}else{ headers: noheader
resolve(response.data) ? {}
} : isheader && typeof isheader === 'object'
}).catch((error) => { ? headersTemp
reject(error) : headers,
}); data: param,
}) timeout: timeout || 200000,
...other,
};
axios(json)
.then(function (response) {
if (fileType) {
resolve(response);
} else {
resolve(response.data);
}
})
.catch((error) => {
reject(error);
});
});
} }
} }
export default Controller;
export default Controller
\ No newline at end of file
import { Constants } from '../utils/constants';
import { withToken, getToken, getLanguage } from "../utils/storage";
import UserStore from "@/console/common/stores/UserStore"
const HeadersComponent = (headers) => { const HeadersComponent = (headers) => {
let token = (UserStore.getAccess() && UserStore.getAccess().access_token) || getToken().access_token let token =
localStorage.getItem(Constants.TOKEN_KEY) &&
JSON.parse(localStorage.getItem(Constants.TOKEN_KEY)).access_token;
if (token) { if (token) {
headers['Authorization'] = 'Bearer ' + token; headers['Authorization'] = 'Bearer ' + token;
headers['Accept-Language'] = getLanguage() === 'en' ? 'en-US,en;q=0.5' : 'zh-CN,zh,q=0.5'; headers['Accept-Language'] = 'zh-CN,zh,q=0.5';
// headers['Accept-Language'] =
// getLanguage() === 'en' ? 'en-US,en;q=0.5' : 'zh-CN,zh,q=0.5';
return true; return true;
} }
return false; return false;
} };
export default HeadersComponent;
export default HeadersComponent
\ No newline at end of file
// 设置 http请求错误
export const setRequest = (data) => {
return {
type: 'httpRequestError',
state: data,
};
};
import { combineReducers } from 'redux';
import setRequestReducer from './reducers/setRequestReducer.js';
const reducer = combineReducers({
httpRequestError: setRequestReducer,
});
export default reducer;
const setRequestReducer = (state = {}, action) => {
switch (action.type) {
case 'httpRequestError':
return action.state;
default:
return state;
}
};
export default setRequestReducer;
import { createStore, combineReducers } from 'redux';
import reducer from './reducer.js';
const store = createStore(
reducer,
);
export default store;
\ No newline at end of file
import Login from '../../renderer/console/login'; import Login from '../../renderer/console/login';
import Test from '../../renderer/console/test'; import Init from '../../renderer/console/initialization';
import Home from '../../renderer/console/home';
var indexRoutes = [ var indexRoutes = [
{ exact: false, path: '/', name: 'Pages', component: <Login /> }, //登录页面 { exact: false, path: '/', name: 'Page', component: <Login /> }, //登录页面
{ exact: false, path: '/test', name: 'Pages', component: <Test /> }, //test { exact: false, path: '/init', name: 'Page2', component: <Init /> }, //初始化
{ exact: false, path: '/home', name: 'Page0', component: <Home /> }, //主页面
]; ];
export default indexRoutes; export default indexRoutes;
import API from './api_manager';
// 获取用户基础信息
export const userInfo = () => {
return {
url: API.API_USER_CURRENT,
type: 'get',
param: {},
actions: true,
};
};
const BACKEND_API_URI_PREFIX = 'https://www.cloudam.cn'; //const BACKEND_API_URI_PREFIX = 'https://www.cloudam.cn';
//const BACKEND_API_URI_PREFIX = 'http://47.57.4.97' //const BACKEND_API_URI_PREFIX = 'http://47.57.4.97'
// const BACKEND_API_URI_PREFIX = "http://47.75.104.171"; const BACKEND_API_URI_PREFIX = 'http://47.75.104.171';
export { BACKEND_API_URI_PREFIX }; export { BACKEND_API_URI_PREFIX };
import { BACKEND_API_URI_PREFIX } from './api_address'; import { BACKEND_API_URI_PREFIX } from './api_address';
const API = { const API = {
API_USER_LOGIN: `${BACKEND_API_URI_PREFIX}/uaa/oauth/token`, API_USER_LOGIN: `${BACKEND_API_URI_PREFIX}/uaa/oauth/token`, //登录
API_USER_CURRENT: `${BACKEND_API_URI_PREFIX}/accounts/current`, //获取账号信息
}; };
export default API; export default API;
export const Constants = {
TOKEN_KEY: 'token_key',
ACCEPT_LANGUAGE: 'zh-CN,zh;q=0.5',
TEMPORARY_TOKEN_KEY: 'temporary_token_key',
RAYSYNC_ADDR_TOKEN_KEY: 'raysyncAddr',
CURRENT_REGION_SELECT_KEY: 'current-region',
USER_INFO_TOKEN_KEY: 'userinfo',
USERNAME_LOGIN_HELPER_TEXT: '请输入您的用户名',
PASSWORD_LOGIN_HELPER_TEXT: '请输入您的密码',
COLLECT_NAME: 'recently-used',
SHARE: 'share',
server: 'present-server',
CURRENT_ISFILESYSTEM: 'isShareFileSystem',
};
export const USERCENTER = {
INPUT_JOB_ERROR_TIPS2: '长度限制50个字符以内',
INPUT_JOB_ERROR_TIPS:
'作业命名支持中文、数字、大小写字母,特殊符号仅支持_或者-',
};
export const INTELLIGROUP = {
ERROR_MSG: {
ITERNAL_SERVER_ERROR: '内部服务器错误,请稍后重试',
},
EVENT_ACTIVITY: '事件活动:',
MESSAGE_CODE: '消息代码:',
EVENT_OBJECT: '发生事件对象:',
FIRST_OCCURRENCE: '初次发生时间:',
EVENT_CONTENT: '事件内容:',
};
import { Constants } from '../utils/constants';
export const getUserInfo = () => {
return (
localStorage.getItem(Constants.USER_INFO_TOKEN_KEY) &&
JSON.parse(localStorage.getItem(Constants.USER_INFO_TOKEN_KEY))
);
};
...@@ -25,12 +25,21 @@ class AppUpdater { ...@@ -25,12 +25,21 @@ class AppUpdater {
let mainWindow: BrowserWindow | null = null; let mainWindow: BrowserWindow | null = null;
ipcMain.on('resize-me-please', (event) => { ipcMain.on('resize-init', (event) => {
if (mainWindow) { if (mainWindow) {
mainWindow.setContentSize(500, 500); mainWindow.setContentSize(490, 354);
mainWindow.setResizable(true); // mainWindow.setResizable(true);
mainWindow.setMaximizable(false); mainWindow.setMaximizable(false);
mainWindow.center(); // mainWindow.center();
}
});
ipcMain.on('resize-home', (event) => {
if (mainWindow) {
mainWindow.setContentSize(350, 425);
// mainWindow.setResizable(true);
mainWindow.setMaximizable(false);
// mainWindow.center();
} }
}); });
...@@ -85,6 +94,7 @@ const createWindow = async () => { ...@@ -85,6 +94,7 @@ const createWindow = async () => {
sandbox: false, sandbox: false,
nodeIntegration: true, nodeIntegration: true,
contextIsolation: false, contextIsolation: false,
webSecurity: false,
}, },
}); });
......
This diff is collapsed.
...@@ -9,15 +9,17 @@ import icon from '../../assets/icon.svg'; ...@@ -9,15 +9,17 @@ import icon from '../../assets/icon.svg';
import { createBrowserHistory } from 'history'; import { createBrowserHistory } from 'history';
import './App.css'; import './App.css';
import path from 'path'; import path from 'path';
import { Button } from '@mui/material'; import { ThemeProvider, createTheme } from '@mui/material/styles';
import indexRoutes from '../commons/routes/index';
import { Provider } from 'react-redux';
import store from '../commons/reduxs/store';
const rootPath = require('electron-root-path').rootPath; const rootPath = require('electron-root-path').rootPath;
const { shell } = require('electron'); const { shell } = require('electron');
const location = path.join( const location = path.join(
rootPath.substring(0, rootPath.length - 8), rootPath.substring(0, rootPath.length - 8),
'./assets/script/start.vbs' './assets/script/start.vbs'
); );
import { ThemeProvider, createTheme } from '@mui/material/styles';
import indexRoutes from '../commons/routes/index';
const hist = createBrowserHistory(); const hist = createBrowserHistory();
const theme = createTheme({ const theme = createTheme({
...@@ -45,21 +47,23 @@ const theme = createTheme({ ...@@ -45,21 +47,23 @@ const theme = createTheme({
export default function App() { export default function App() {
return ( return (
<ThemeProvider theme={theme}> <Provider store={store}>
<Router history={hist} basename={'/'}> <ThemeProvider theme={theme}>
<Routes> <Router history={hist} basename={'/'}>
{indexRoutes.map((prop, key) => { <Routes>
return ( {indexRoutes.map((prop, key) => {
<Route return (
exact={prop.exact} <Route
path={prop.path} exact={prop.exact}
element={prop.component} path={prop.path}
key={key} element={prop.component}
/> key={key}
); />
})} );
</Routes> })}
</Router> </Routes>
</ThemeProvider> </Router>
</ThemeProvider>
</Provider>
); );
} }
import React, { useState } from 'react';
//js
import public from 'commons/public';
import { getUserInfo } from '../../commons/utils/publicMethod';
//ui
import TextField from '@mui/material/TextField';
import { Grid } from '@mui/material';
import FormControlLabel from '@mui/material/FormControlLabel';
import Checkbox from '@mui/material/Checkbox';
import { makeStyles } from 'tss-react/mui';
import Radio from '@mui/material/Radio';
import RadioGroup from '@mui/material/RadioGroup';
import FolderOpenIcon from '@mui/icons-material/FolderOpen';
import MenuItem from '@mui/material/MenuItem';
import avatar from '../../commons/assets/img/avatar.svg';
import fileIcon from '../../commons/assets/img/fileIcon.svg';
import appIcon from '../../commons/assets/img/appIcon.svg';
import commandIcon from '../../commons/assets/img/commandIcon.svg';
import homeIcon from '../../commons/assets/img/homeIcon.svg';
import siteIcon from '../../commons/assets/img/siteIcon.svg';
const useStyles = makeStyles()((theme) => {
return {
headBody: {
display: 'flex',
alignItems: 'center',
justifyContent: 'space-between',
width: '300px',
margin: '0 auto',
marginTop: '2%',
},
leftBox: {
display: 'flex',
alignItems: 'end',
},
rightBox: {
display: 'flex',
// alignItems: 'end',
},
};
});
const list = [
{ id: '1', value: fileIcon },
{ id: '2', value: appIcon },
{ id: '3', value: commandIcon },
{ id: '4', value: homeIcon },
{ id: '5', value: siteIcon },
];
export default (props) => {
const { classes } = useStyles();
const { render, navigate } = public();
console.log(getUserInfo(), 'wwwwwwwww');
const iconClick = (e) => {
console.log('e: ', e);
};
return (
<Grid className={classes.headBody}>
<Grid className={classes.leftBox}>
<img src={avatar} alt="" />
<Grid sx={{ marginLeft: '8px' }}>
<Grid sx={{ fontSize: '14px', color: '#1E2633' }}>
{getUserInfo().name}
</Grid>
<Grid sx={{ fontSize: '12px', color: '#B7B9BD' }}>
已用200TB
</Grid>
</Grid>
</Grid>
<Grid className={classes.rightBox}>
{list.map((e) => {
return (
<img
src={e.value}
alt={e.id}
style={{ marginLeft: '14px', cursor: 'pointer' }}
onClick={() => {
iconClick(e.id);
}}
/>
);
})}
</Grid>
</Grid>
);
};
import React, { useState } from 'react';
//js
import public from 'commons/public';
//ui
import TextField from '@mui/material/TextField';
import { Grid } from '@mui/material';
import FormControlLabel from '@mui/material/FormControlLabel';
import Checkbox from '@mui/material/Checkbox';
import { makeStyles } from 'tss-react/mui';
import Radio from '@mui/material/Radio';
import RadioGroup from '@mui/material/RadioGroup';
import FolderOpenIcon from '@mui/icons-material/FolderOpen';
import MenuItem from '@mui/material/MenuItem';
import file from '../../commons/assets/img/file.svg';
const useStyles = makeStyles()((theme) => {
return {
mountBody: {
display: 'flex',
alignItems: 'flex-start',
flexDirection: 'column',
width: '300px',
margin: '0 auto',
marginTop: '8%',
},
title: {
fontSize: '16px',
fontWeight: '600',
color: '#1E2633',
marginBottom: '16px',
},
root: {
height: '36px',
width: '252px',
},
input: {
padding: '6.5px 14px',
},
};
});
const currencies = [
{
value: 'USD',
label: '$',
},
{
value: 'EUR',
label: '€',
},
{
value: 'BTC',
label: '฿',
},
{
value: 'JPY',
label: '¥',
},
];
export default (props) => {
const { classes } = useStyles();
const { render, navigate } = public();
const [mountValue, setMountValue] = useState('localDisk');
const [currency, setCurrency] = useState('EUR');
const handleChange = (event) => {
event.stopPropagation();
setMountValue(event.target.value);
};
const handleSelectChange = (event) => {
setCurrency(event.target.value);
};
return (
<Grid className={classes.mountBody}>
<Grid className={classes.title}>挂载位置</Grid>
<RadioGroup value={mountValue} onChange={handleChange}>
<FormControlLabel
value="localDisk"
control={<Radio size="small" />}
sx={{ alignItems: 'flex-start', display: 'flex' }}
label={
<Grid sx={{ marginTop: '8px' }}>
<Grid
sx={{
color: '#1E2633',
fontSize: '14px',
marginBottom: '10px',
}}
>
将云文件挂载到本地磁盘
</Grid>
<TextField
select
value={currency}
onChange={handleSelectChange}
InputProps={{
classes: {
root: classes.root,
input: classes.input,
},
}}
>
{currencies.map((option) => (
<MenuItem
key={option.value}
value={option.value}
>
{option.label}
</MenuItem>
))}
</TextField>
</Grid>
}
/>
<FormControlLabel
value="localFolder"
control={<Radio size="small" />}
sx={{
alignItems: 'flex-start',
display: 'flex',
marginTop: '20px',
}}
label={
<Grid
sx={{ marginTop: '8px' }}
onClick={(event) => {
event.stopPropagation();
}}
>
<Grid
sx={{
color: '#1E2633',
fontSize: '14px',
marginBottom: '10px',
}}
>
将云盘挂载到本地文件夹
</Grid>
<Grid
sx={{
display: 'flex',
alignItems: 'center',
}}
>
<img src={file} alt="" />
<Grid
sx={{
color: '#8A9099',
fontSize: '14px',
marginLeft: '10px',
}}
>
C:\Users\…\Desktopopsjw
</Grid>
<Grid
sx={{
color: '#1370FF',
fontSize: '14px',
marginLeft: '16px',
cursor: 'pointer',
}}
onClick={(event) => {
event.stopPropagation();
console.log('222222222');
}}
>
更改
</Grid>
</Grid>
</Grid>
}
/>
</RadioGroup>
</Grid>
);
};
import React from 'react';
import public from 'commons/public';
import Head from '../components/head';
import { Button, Grid } from '@mui/material';
import { makeStyles } from 'tss-react/mui';
const useStyles = makeStyles()((theme) => {
return {
initBody: {
display: 'flex',
flexDirection: 'column',
alignItems: 'center',
},
};
});
export default (props) => {
const { classes } = useStyles();
const { render, navigate } = public();
return (
<Grid className={classes.initBody}>
<Head />
</Grid>
);
};
import React from 'react';
import public from 'commons/public';
import Mount from '../components/mount';
import { Button, Grid } from '@mui/material';
import { makeStyles } from 'tss-react/mui';
const { ipcRenderer } = require('electron');
const electron = window.require('electron');
const useStyles = makeStyles()((theme) => {
return {
initBody: {
display: 'flex',
flexDirection: 'column',
alignItems: 'center',
},
rootButton: {
backgroundColor: '#1370FF',
boxShadow: 'none !important',
color: '#ffffff',
'&:hover': { backgroundColor: '#0055D9', transform: 'inherit' },
},
};
});
export default (props) => {
const { classes } = useStyles();
const { render, navigate } = public();
return (
<Grid className={classes.initBody}>
<Mount />
<Button
variant="contained"
sx={{ width: '300px', marginTop: '24px' }}
classes={{
root: classes.rootButton,
}}
onClick={() => {
navigate('/home');
electron.ipcRenderer.send('resize-home');
}}
>
确定
</Button>
</Grid>
);
};
...@@ -3,7 +3,12 @@ import { shell } from 'electron'; ...@@ -3,7 +3,12 @@ import { shell } from 'electron';
//js //js
import { createBrowserHistory } from 'history'; import { createBrowserHistory } from 'history';
import public from 'commons/public'; import public from 'commons/public';
import Api from '../../commons/utils/api_manager'; import API from '../../commons/utils/api_manager';
import axios from 'axios';
import qs from 'qs';
import { Constants } from '../../commons/utils/constants';
import Axios from '../../commons/axios/Axios';
import { userInfo } from '../../commons/utils/ajaxOption';
//ui //ui
import TextField from '@mui/material/TextField'; import TextField from '@mui/material/TextField';
...@@ -16,7 +21,6 @@ import Button from '@mui/material/Button'; ...@@ -16,7 +21,6 @@ import Button from '@mui/material/Button';
const { ipcRenderer } = require('electron'); const { ipcRenderer } = require('electron');
const electron = window.require('electron'); const electron = window.require('electron');
const axios = require('axios');
const useStyles = makeStyles()((theme) => { const useStyles = makeStyles()((theme) => {
return { return {
...@@ -62,14 +66,14 @@ export default (props) => { ...@@ -62,14 +66,14 @@ export default (props) => {
const [passwordError, setPasswordError] = useState(false); const [passwordError, setPasswordError] = useState(false);
const [checked, setChecked] = useState(true); const [checked, setChecked] = useState(true);
useEffect(() => { useEffect(() => {
// electron.ipcRenderer.send('resize-me-please'); // electron.ipcRenderer.send('resize-init');
}, []); }, []);
const handleChange = (event) => { const handleChange = (event) => {
setChecked(event.target.checked); setChecked(event.target.checked);
}; };
const login = () => { const login = async () => {
if (username.length === 0) { if (username.length === 0) {
setUsernameError(true); setUsernameError(true);
return; return;
...@@ -77,6 +81,49 @@ export default (props) => { ...@@ -77,6 +81,49 @@ export default (props) => {
setPasswordError(true); setPasswordError(true);
return; return;
} }
const options = {
method: 'post',
url: API.API_USER_LOGIN,
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
Authorization: 'Basic YnJvd3Nlcjo=',
'Accept-Language': 'zh-CN,zh;q=0.5',
},
data: qs.stringify({
scope: 'ui',
username: username,
password: password,
grant_type: 'password',
}),
};
axios(options)
.then(function (response) {
console.log('response: ', response.data);
localStorage.setItem(
Constants.TOKEN_KEY,
JSON.stringify(response.data)
);
getUserData();
navigate('/init');
electron.ipcRenderer.send('resize-init');
})
.catch(function (error) {
localStorage.removeItem(Constants.TOKEN_KEY);
localStorage.removeItem(Constants.USER_INFO_TOKEN_KEY);
localStorage.removeItem(Constants.RAYSYNC_ADDR_TOKEN_KEY);
localStorage.removeItem(Constants.CURRENT_REGION_SELECT_KEY);
});
};
const getUserData = async () => {
let data = await Axios.request(userInfo());
if (data && data.code === 200) {
localStorage.setItem(
Constants.USER_INFO_TOKEN_KEY,
JSON.stringify(data.res)
);
}
}; };
return render( return render(
...@@ -122,6 +169,12 @@ export default (props) => { ...@@ -122,6 +169,12 @@ export default (props) => {
setPasswordError(false); setPasswordError(false);
setPassword(e.target.value); setPassword(e.target.value);
}} }}
onKeyPress={(event) => {
if (event.key === 'Enter') {
login();
event.preventDefault();
}
}}
error={passwordError} error={passwordError}
helperText={passwordError ? '请输入您的密码' : ''} helperText={passwordError ? '请输入您的密码' : ''}
InputLabelProps={{ InputLabelProps={{
...@@ -181,7 +234,7 @@ export default (props) => { ...@@ -181,7 +234,7 @@ export default (props) => {
onClick={() => { onClick={() => {
login(); login();
// navigate('/test'); // navigate('/test');
// electron.ipcRenderer.send('resize-me-please'); // electron.ipcRenderer.send('resize-init');
}} }}
> >
登录 登录
......
import React from 'react';
import { Grid } from '@mui/material';
import public from 'commons/public';
export default (props) => {
console.log('props: ', props);
const { render, navigate } = public();
return (
<Grid
onClick={() => {
console.log('2222222222222');
navigate('/');
}}
>
11111111111
</Grid>
);
};
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment