Add the frame for install.

This commit is contained in:
lishuang
2020-06-07 17:43:02 +08:00
parent 7ae8dd128f
commit 16adebaebf
5 changed files with 94 additions and 47 deletions
+7 -2
View File
@@ -15,6 +15,7 @@ import {
TeamOutlined
} from '@ant-design/icons';
import {LoginOutlined} from "@ant-design/icons/lib";
import Preference from "../model/preference/Preference";
export default class MenuManager {
@@ -63,15 +64,19 @@ export default class MenuManager {
getMenuItems(): MenuItem[] {
let user: User = Moon.getSingleton().user;
let preference: Preference = Moon.getSingleton().preference;
let menuItems: MenuItem[] = [];
if (user.role === UserRole.GUEST) {
if (!preference.installed) {
menuItems = [
new MenuItem('安装网站', '/install/index', <SettingOutlined/>),
];
} else if (user.role === UserRole.GUEST) {
menuItems = [
new MenuItem('登录', '/user/login', <LoginOutlined/>),
];
} else {
menuItems.push(new MenuItem('所有文件', '/matter/list', <AppstoreOutlined/>))
menuItems.push(new MenuItem('我的分享', '/share/index', <ShareAltOutlined/>))
+10 -6
View File
@@ -45,13 +45,21 @@ export default class HttpBase extends ViewBase {
/**
* 转跳到ACL页面
* 转跳到登录页面
*/
jumpLogin() {
Sun.navigateTo("/user/login")
console.error("这里是需要跳转的")
}
/**
* 转跳到网站安装页面
*/
jumpInstall() {
Sun.navigateTo("/install/index")
}
@@ -127,10 +135,6 @@ export default class HttpBase extends ViewBase {
this.jumpLogin()
return true;
} else if (response.data["code"] === WebResultCode.NOT_INSTALLED) {
return true
}
@@ -33,6 +33,10 @@ export default class Preference extends BaseEntity {
version: string | null = null
//*****************前端辅助变量***********************/
//网站是否完成了安装
installed: boolean = true
constructor(reactComponent?: React.Component) {
super(reactComponent);
+10
View File
@@ -31,6 +31,16 @@
font-size: 16px;
}
}
.install-area {
text-align: center;
margin-top: 40px;
margin-bottom: 20px;
.install-logo {
width: 80px;
}
}
}
.ant-layout-header {
+63 -39
View File
@@ -32,9 +32,10 @@ import Sun from '../common/model/global/Sun';
import {UserRole} from '../common/model/user/UserRole';
import FrameLoading from "./widget/FrameLoading";
import Preference from "../common/model/preference/Preference";
import {WebResultCode} from "../common/model/base/WebResultCode";
import MessageBoxUtil from "../common/util/MessageBoxUtil";
const {Header, Content, Footer, Sider} = Layout;
const {SubMenu} = Menu;
interface IProps extends RouteComponentProps<{}> {
@@ -76,8 +77,6 @@ class RawFrame extends TankComponent<IProps, IState> {
let that = this;
let pathname: string = that.props.location.pathname
console.log(pathname)
this.preference.httpFetch(function () {
let whitePaths = ['/user/login', '/user/register'];
@@ -94,6 +93,15 @@ class RawFrame extends TankComponent<IProps, IState> {
that.updateUI();
}
}, function (errMessage: string, response: any) {
if (response && response.data && response.data["code"] === WebResultCode.NOT_INSTALLED) {
MessageBoxUtil.warning("网站尚未安装,即将引导进入安装页面!")
that.preference.installed = false
}
that.initialized = true
that.updateUI()
})
@@ -134,19 +142,28 @@ class RawFrame extends TankComponent<IProps, IState> {
<Layout style={{minHeight: '100vh'}}>
<Sider>
<div className="avatar-area">
<Link className="username-text" to={"/user/detail/" + user.uuid}>
<img alt="avatar" className="avatar-middle" src={user.getAvatarUrl()}/>
</Link>
</div>
<div className="username-area">
{user.role === UserRole.GUEST ?
'未登录' :
<Link to={"/user/detail/" + user.uuid}>
<span className="username-text">{user.username}</span>
</Link>
}
</div>
{this.preference.installed?(
<div>
<div className="avatar-area">
<Link className="username-text" to={"/user/detail/" + user.uuid}>
<img alt="avatar" className="avatar-middle" src={user.getAvatarUrl()}/>
</Link>
</div>
<div className="username-area">
{user.role === UserRole.GUEST ?
'未登录' :
<Link to={"/user/detail/" + user.uuid}>
<span className="username-text">{user.username}</span>
</Link>
}
</div>
</div>
):(
<div className="install-area">
<img alt="avatar" className="install-logo" src={LogoSvg}/>
</div>
)}
<Menu
theme="dark"
selectedKeys={menuManager.getSelectedKeys()}
@@ -173,33 +190,40 @@ class RawFrame extends TankComponent<IProps, IState> {
</Header>
<Content>
<div className="pages-content">
<Route exact path="/" render={() =>
<Redirect to="/matter/list"/>
}/>
<Route path="/index" component={Index}/>
<Route path="/user/login" component={UserLogin}/>
<Route path="/user/detail/:uuid" component={UserDetail}/>
<Route path="/user/list" component={UserList}/>
<Route path="/user/create" component={UserEdit}/>
<Route path="/user/edit/:uuid" component={UserEdit}/>
<Route path="/user/authentication/:authentication" component={UserAuthentication}/>
{
this.preference.installed?(
<div className="pages-content">
<Route exact path="/" render={() =>
<Redirect to="/matter/list"/>
}/>
<Route path="/index" component={Index}/>
<Route path="/user/login" component={UserLogin}/>
<Route path="/user/detail/:uuid" component={UserDetail}/>
<Route path="/user/list" component={UserList}/>
<Route path="/user/create" component={UserEdit}/>
<Route path="/user/edit/:uuid" component={UserEdit}/>
<Route path="/user/authentication/:authentication" component={UserAuthentication}/>
<Route path="/dashboard/index" component={DashboardIndex}/>
<Route path="/dashboard/index" component={DashboardIndex}/>
<Route path="/install/index" component={InstallIndex}/>
<Route path="/preference/index" component={PreferenceIndex}/>
<Route path="/preference/edit" component={PreferenceEdit}/>
<Route path="/preference/index" component={PreferenceIndex}/>
<Route path="/preference/edit" component={PreferenceEdit}/>
<Route path="/matter/detail/:uuid" component={MatterDetail}/>
<Route exact path="/matter" render={() =>
<Redirect to="/matter/list"/>
}/>
<Route path="/matter/list" component={MatterList}/>
<Route path="/matter/create" component={MatterEdit}/>
<Route path="/matter/edit/:uuid" component={MatterEdit}/>
</div>
):(
<div className="pages-content">
<Route path="/install/index" component={InstallIndex}/>
</div>
)
}
<Route path="/matter/detail/:uuid" component={MatterDetail}/>
<Route exact path="/matter" render={() =>
<Redirect to="/matter/list"/>
}/>
<Route path="/matter/list" component={MatterList}/>
<Route path="/matter/create" component={MatterEdit}/>
<Route path="/matter/edit/:uuid" component={MatterEdit}/>
</div>
</Content>
<Footer style={{textAlign: 'center'}}>Eyeblue ©2020 Copyright</Footer>
</Layout>