mirror of
https://github.com/eyebluecn/tank-front
synced 2024-04-21 12:31:55 +00:00
Add the frame for install.
This commit is contained in:
@@ -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/>))
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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
@@ -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>
|
||||
|
||||
Reference in New Issue
Block a user