mirror of
https://github.com/kuaifan/dootask.git
synced 2025-12-16 22:22:49 +00:00
perf: 整理官网页面
This commit is contained in:
parent
925667d840
commit
56da2a5725
@ -38,7 +38,7 @@ class SystemController extends AbstractController
|
|||||||
* @apiParam {String} type
|
* @apiParam {String} type
|
||||||
* - get: 获取(默认)
|
* - get: 获取(默认)
|
||||||
* - all: 获取所有(需要管理员权限)
|
* - all: 获取所有(需要管理员权限)
|
||||||
* - save: 保存设置(参数:['reg', 'reg_identity', 'reg_invite', 'login_code', 'password_policy', 'project_invite', 'chat_information', 'anon_message', 'auto_archived', 'archived_day', 'task_visible', 'all_group_mute', 'all_group_autoin', 'image_compress', 'image_save_local', 'start_home', 'home_footer'])
|
* - save: 保存设置(参数:['reg', 'reg_identity', 'reg_invite', 'login_code', 'password_policy', 'project_invite', 'chat_information', 'anon_message', 'auto_archived', 'archived_day', 'task_visible', 'all_group_mute', 'all_group_autoin', 'image_compress', 'image_save_local', 'start_home'])
|
||||||
|
|
||||||
* @apiSuccess {Number} ret 返回状态码(1正确、0错误)
|
* @apiSuccess {Number} ret 返回状态码(1正确、0错误)
|
||||||
* @apiSuccess {String} msg 返回信息(错误描述)
|
* @apiSuccess {String} msg 返回信息(错误描述)
|
||||||
@ -71,7 +71,6 @@ class SystemController extends AbstractController
|
|||||||
'image_compress',
|
'image_compress',
|
||||||
'image_save_local',
|
'image_save_local',
|
||||||
'start_home',
|
'start_home',
|
||||||
'home_footer'
|
|
||||||
])) {
|
])) {
|
||||||
unset($all[$key]);
|
unset($all[$key]);
|
||||||
}
|
}
|
||||||
@ -882,58 +881,6 @@ class SystemController extends AbstractController
|
|||||||
return $data;
|
return $data;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @api {get} api/system/get/showitem 19. 首页显示ITEM
|
|
||||||
*
|
|
||||||
* @apiDescription 用于判断首页是否显示:pro、github、更新日志...
|
|
||||||
* @apiVersion 1.0.0
|
|
||||||
* @apiGroup system
|
|
||||||
* @apiName get__showitem
|
|
||||||
*
|
|
||||||
* @apiSuccess {Number} ret 返回状态码(1正确、0错误)
|
|
||||||
* @apiSuccess {String} msg 返回信息(错误描述)
|
|
||||||
* @apiSuccess {Object} data 返回数据
|
|
||||||
*/
|
|
||||||
public function get__showitem()
|
|
||||||
{
|
|
||||||
$logPath = base_path('CHANGELOG.md');
|
|
||||||
$logContent = "";
|
|
||||||
$logVersion = "";
|
|
||||||
if (file_exists($logPath)) {
|
|
||||||
$logContent = file_get_contents($logPath);
|
|
||||||
preg_match("/## \[(.*?)\]/", $logContent, $matchs);
|
|
||||||
if ($matchs) {
|
|
||||||
$logVersion = $matchs[1] === "Unreleased" ? $matchs[1] : "v{$matchs[1]}";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return Base::retSuccess('success', [
|
|
||||||
'pro' => str_contains(Request::getHost(), "dootask.com") || str_contains(Request::getHost(), "127.0.0.1"),
|
|
||||||
'github' => env('GITHUB_URL') ?: false,
|
|
||||||
'updateLog' => $logContent ?: false,
|
|
||||||
'updateVer' => $logVersion,
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @api {get} api/system/get/starthome 20. 启动首页设置信息
|
|
||||||
*
|
|
||||||
* @apiDescription 用于判断注册是否需要启动首页
|
|
||||||
* @apiVersion 1.0.0
|
|
||||||
* @apiGroup system
|
|
||||||
* @apiName get__starthome
|
|
||||||
*
|
|
||||||
* @apiSuccess {Number} ret 返回状态码(1正确、0错误)
|
|
||||||
* @apiSuccess {String} msg 返回信息(错误描述)
|
|
||||||
* @apiSuccess {Object} data 返回数据
|
|
||||||
*/
|
|
||||||
public function get__starthome()
|
|
||||||
{
|
|
||||||
return Base::retSuccess('success', [
|
|
||||||
'need_start' => Base::settingFind('system', 'start_home') == 'open',
|
|
||||||
'home_footer' => Base::settingFind('system', 'home_footer')
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @api {get} api/system/email/check 21. 邮件发送测试(限管理员)
|
* @api {get} api/system/email/check 21. 邮件发送测试(限管理员)
|
||||||
*
|
*
|
||||||
|
|||||||
@ -1,259 +1,19 @@
|
|||||||
<template>
|
<template>
|
||||||
<div v-if="needStartHome" class="page-index">
|
|
||||||
<PageTitle :title="appTitle"/>
|
|
||||||
<div class="page-warp">
|
|
||||||
<div class="page-header">
|
|
||||||
<div class="header-nav">
|
|
||||||
<div class="header-nav-box">
|
|
||||||
<div class="logo no-dark-content"></div>
|
|
||||||
</div>
|
|
||||||
<div class="header-nav-box header-nav-boxs" v-if="windowWidth > 780">
|
|
||||||
<Button v-if="showItem.pro" class="header-right-pro no-dark-content" size="small" @click="onPro">{{$L('Pro版')}}</Button>
|
|
||||||
<template v-if="windowWidth >= 820">
|
|
||||||
<a v-if="showItem.github" class="header-right-github" :href="showItem.github" target="_blank"><Icon type="logo-github"/></a>
|
|
||||||
<div v-if="showItem.updateLog" class="header-right-uplog" @click="uplogShow=true">{{$L('更新日志')}}</div>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<div class="header-right-1">
|
|
||||||
<Dropdown trigger="click" @on-click="onLanguage">
|
|
||||||
<a href="javascript:void(0)" class="header-right-1-dropdown">
|
|
||||||
{{ currentLanguage }}
|
|
||||||
<Icon type="ios-arrow-down"></Icon>
|
|
||||||
</a>
|
|
||||||
<DropdownMenu slot="list">
|
|
||||||
<DropdownItem
|
|
||||||
v-for="(item, key) in languageList"
|
|
||||||
:key="key"
|
|
||||||
:name="key"
|
|
||||||
:selected="languageType === key">{{ item }}</DropdownItem>
|
|
||||||
</DropdownMenu>
|
|
||||||
</Dropdown>
|
|
||||||
</div>
|
|
||||||
<div v-if="windowWidth >= 980" class="header-right-2">
|
|
||||||
<Dropdown trigger="click" @on-click="setTheme">
|
|
||||||
<a href="javascript:void(0)" class="header-right-2-dropdown">
|
|
||||||
{{$L('主题皮肤')}}
|
|
||||||
<Icon type="ios-arrow-down"></Icon>
|
|
||||||
</a>
|
|
||||||
<DropdownMenu slot="list">
|
|
||||||
<DropdownItem
|
|
||||||
v-for="(item, key) in themeList"
|
|
||||||
:key="key"
|
|
||||||
:name="item.value"
|
|
||||||
:selected="themeMode === item.value">{{$L(item.name)}}</DropdownItem>
|
|
||||||
</DropdownMenu>
|
|
||||||
</Dropdown>
|
|
||||||
</div>
|
|
||||||
<div v-if="userId > 0" class="header-right-5 no-dark-content" @click="login">
|
|
||||||
<UserAvatar :userid="userId" :size="38"/>
|
|
||||||
</div>
|
|
||||||
<template v-else>
|
|
||||||
<div class="header-right-3" @click="register">{{ $L("注册帐号") }}</div>
|
|
||||||
<div class="header-right-4 no-dark-content" @click="login">{{ $L("登录") }}</div>
|
|
||||||
</template>
|
|
||||||
</div>
|
|
||||||
<div class="header-nav-box header-nav-boxs" v-else>
|
|
||||||
<Dropdown trigger="click">
|
|
||||||
<a href="javascript:void(0)">
|
|
||||||
<Icon type="md-menu" class="header-nav-more no-dark-content"/>
|
|
||||||
</a>
|
|
||||||
<DropdownMenu slot="list">
|
|
||||||
<DropdownItem v-if="userId > 0" @click.native="login">
|
|
||||||
<UserAvatar :userid="userId" show-name :show-icon="false"/>
|
|
||||||
</DropdownItem>
|
|
||||||
<template v-else>
|
|
||||||
<DropdownItem @click.native="login">{{ $L("登录") }}</DropdownItem>
|
|
||||||
<DropdownItem @click.native="register">{{ $L("注册帐号") }}</DropdownItem>
|
|
||||||
</template>
|
|
||||||
<DropdownItem v-if="showItem.github" @click.native="windowOpen(showItem.github)">Github</DropdownItem>
|
|
||||||
<DropdownItem v-if="showItem.updateLog" @click.native="uplogShow=true">{{ $L("更新日志") }}</DropdownItem>
|
|
||||||
<Dropdown placement="right-start" @on-click="onLanguage" transfer>
|
|
||||||
<DropdownItem>
|
|
||||||
<div class="header-nav-dropdown-item">
|
|
||||||
{{ currentLanguage }}
|
|
||||||
<Icon type="ios-arrow-forward"></Icon>
|
|
||||||
</div>
|
|
||||||
</DropdownItem>
|
|
||||||
<DropdownMenu slot="list">
|
|
||||||
<DropdownItem
|
|
||||||
v-for="(item, key) in languageList"
|
|
||||||
:key="key"
|
|
||||||
:name="key"
|
|
||||||
:selected="languageType === key">{{ item }}</DropdownItem>
|
|
||||||
</DropdownMenu>
|
|
||||||
</Dropdown>
|
|
||||||
<Dropdown trigger="click" placement="right-end" @on-click="setTheme" transfer>
|
|
||||||
<DropdownItem>
|
|
||||||
<div class="header-nav-dropdown-item">
|
|
||||||
{{$L('主题皮肤')}}
|
|
||||||
<Icon type="ios-arrow-forward"></Icon>
|
|
||||||
</div>
|
|
||||||
</DropdownItem>
|
|
||||||
<DropdownMenu slot="list">
|
|
||||||
<DropdownItem
|
|
||||||
v-for="(item, key) in themeList"
|
|
||||||
:key="key"
|
|
||||||
:name="item.value"
|
|
||||||
:selected="themeMode === item.value">{{$L(item.name)}}</DropdownItem>
|
|
||||||
</DropdownMenu>
|
|
||||||
</Dropdown>
|
|
||||||
</DropdownMenu>
|
|
||||||
</Dropdown>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="header-content">
|
|
||||||
<div class="header-title header-title-one">{{appTitle}}</div>
|
|
||||||
<div class="header-title">
|
|
||||||
{{ $L("轻量级任务管理工具") }}
|
|
||||||
</div>
|
|
||||||
<div class="header-tips">
|
|
||||||
{{ $L(`${appTitle}是一款轻量级的开源在线项目任务管理工具,提供各类文档协作工具、在线思维导图、在线流程图、项目管理、任务分发、即时IM,文件管理等工具。`) }}
|
|
||||||
</div>
|
|
||||||
<div class="login-buttom no-dark-content" @click="login">
|
|
||||||
{{ $L("登录") }}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="page-header-bottom">
|
|
||||||
<div class="page-header-bottoms">
|
|
||||||
<ImgView :src="themeIsDark ? 'images/index/dark/1.png':'images/index/light/1.png'"/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="page-main">
|
|
||||||
<Row :class="windowWidth > 1200 ? 'page-main-row':'page-main-rows'">
|
|
||||||
<Col :class="windowWidth > 1200 ? 'page-main-img':'page-main-imgs'" :xs="24" :sm="24" :xl="12">
|
|
||||||
<ImgView :src="themeIsDark ? 'images/index/dark/2.png':'images/index/light/2.png'"/>
|
|
||||||
</Col>
|
|
||||||
<Col class="page-main-text" :xs="24" :sm="24" :xl="12" v-if="windowWidth > 1200">
|
|
||||||
<ImgView src="images/index/square.png"/>
|
|
||||||
<h3>{{$L('高效便捷的团队沟通工具')}}</h3>
|
|
||||||
<p>{{$L('针对项目和任务建立群组,工作问题可及时沟通,促进团队快速协作,提高团队工作效率。')}}</p>
|
|
||||||
</Col>
|
|
||||||
<Col class="page-main-text page-main-texts" :xs="24" :sm="24" :xl="12" v-else>
|
|
||||||
<h3><ImgView src="images/index/square.png"/>{{$L('高效便捷的团队沟通工具')}}</h3>
|
|
||||||
<p>{{$L('针对项目和任务建立群组,工作问题可及时沟通,促进团队快速协作,提高团队工作效率。')}}</p>
|
|
||||||
</Col>
|
|
||||||
</Row>
|
|
||||||
|
|
||||||
<Row :class="windowWidth > 1200 ? 'page-main-row':'page-main-rows'">
|
|
||||||
<Col class="page-main-text" :xs="24" :sm="24" :xl="12" v-if="windowWidth > 1200">
|
|
||||||
<ImgView src="images/index/square.png"/>
|
|
||||||
<h3>{{$L('强大易用的协同创作云文档')}}</h3>
|
|
||||||
<p>{{$L('汇集文档、电子表格、思维笔记等多种在线工具,汇聚企业知识资源于一处,支持多人实时协同编辑,让团队协作更便捷。')}}</p>
|
|
||||||
</Col>
|
|
||||||
|
|
||||||
<Col :class="windowWidth > 1200 ? 'page-main-img':'page-main-imgs'" :xs="24" :sm="24" :xl="12">
|
|
||||||
<ImgView :src="themeIsDark ? 'images/index/dark/3.png':'images/index/light/3.png'"/>
|
|
||||||
</Col>
|
|
||||||
<Col class="page-main-text page-main-texts" :xs="24" :sm="24" :xl="12" v-if="windowWidth<=1200">
|
|
||||||
<h3><ImgView src="images/index/square.png"/>{{$L('强大易用的协同创作云文档')}}</h3>
|
|
||||||
<p>{{$L('汇集文档、电子表格、思维笔记等多种在线工具,汇聚企业知识资源于一处,支持多人实时协同编辑,让团队协作更便捷。')}}</p>
|
|
||||||
</Col>
|
|
||||||
</Row>
|
|
||||||
|
|
||||||
<Row :class="windowWidth > 1200 ? 'page-main-row':'page-main-rows'">
|
|
||||||
<Col :class="windowWidth > 1200 ? 'page-main-img':'page-main-imgs'" :xs="24" :sm="24" :xl="12">
|
|
||||||
<ImgView :src="themeIsDark ? 'images/index/dark/4.png':'images/index/light/4.png'"/>
|
|
||||||
</Col>
|
|
||||||
<Col class="page-main-text" :xs="24" :sm="24" :xl="12" v-if="windowWidth > 1200">
|
|
||||||
<ImgView src="images/index/square.png"/>
|
|
||||||
<h3>{{$L('便捷易用的项目管理模板')}}</h3>
|
|
||||||
<p>{{$L('模版满足多种团队协作场景,同时支持自定义模版,满足团队个性化场景管理需求,可直观的查看项目的进展情况,团队协作更方便。')}}</p>
|
|
||||||
</Col>
|
|
||||||
<Col class="page-main-text page-main-texts" :xs="24" :sm="24" :xl="12" v-else>
|
|
||||||
<h3><ImgView src="images/index/square.png"/>{{$L('便捷易用的项目管理模板')}}</h3>
|
|
||||||
<p>{{$L('模版满足多种团队协作场景,同时支持自定义模版,满足团队个性化场景管理需求,可直观的查看项目的进展情况,团队协作更方便。')}}</p>
|
|
||||||
</Col>
|
|
||||||
</Row>
|
|
||||||
|
|
||||||
<Row :class="windowWidth > 1200 ? 'page-main-row':'page-main-rows'">
|
|
||||||
<Col class="page-main-text" :xs="24" :sm="24" :xl="12" v-if="windowWidth > 1200">
|
|
||||||
<ImgView src="images/index/square.png"/>
|
|
||||||
<h3>{{$L('清晰直观的任务日历')}}</h3>
|
|
||||||
<p>{{$L('通过灵活的任务日历,轻松安排每一天的日程,把任务拆解到每天,让工作目标更清晰,时间分配更合理。')}}</p>
|
|
||||||
</Col>
|
|
||||||
|
|
||||||
<Col :class="windowWidth > 1200 ? 'page-main-img':'page-main-imgs'" :xs="24" :sm="24" :xl="12">
|
|
||||||
<ImgView :src="themeIsDark ? 'images/index/dark/5.png':'images/index/light/5.png'"/>
|
|
||||||
</Col>
|
|
||||||
<Col class="page-main-text page-main-texts" :xs="24" :sm="24" :xl="12" v-if="windowWidth <= 1200">
|
|
||||||
<h3><ImgView src="images/index/square.png"/>{{$L('清晰直观的任务日历')}}</h3>
|
|
||||||
<p>{{$L('通过灵活的任务日历,轻松安排每一天的日程,把任务拆解到每天,让工作目标更清晰,时间分配更合理。')}}</p>
|
|
||||||
</Col>
|
|
||||||
</Row>
|
|
||||||
|
|
||||||
<Row :class="windowWidth > 1200 ? 'page-main-row':'page-main-rows'">
|
|
||||||
<Col :class="windowWidth > 1200 ? 'page-main-img':'page-main-imgs'" :xs="24" :sm="24" :xl="12">
|
|
||||||
<ImgView :src="themeIsDark ? 'images/index/dark/6.png':'images/index/light/6.png'"/>
|
|
||||||
</Col>
|
|
||||||
<Col class="page-main-text" :xs="24" :sm="24" :xl="12" v-if="windowWidth > 1200">
|
|
||||||
<ImgView src="images/index/square.png"/>
|
|
||||||
<h3>{{$L('支持多平台应用')}}</h3>
|
|
||||||
<p>{{$L('多平台应用支持,打开客户端即可跟进项目任务进度, 同时让你在工作中每一个步骤都能拥有更高效愉悦的体验。')}}</p>
|
|
||||||
</Col>
|
|
||||||
<Col class="page-main-text page-main-texts" :xs="24" :sm="24" :xl="12" v-else>
|
|
||||||
<h3><ImgView src="images/index/square.png"/>{{$L('支持多平台应用')}}</h3>
|
|
||||||
<p>{{$L('多平台应用支持,打开客户端即可跟进项目任务进度, 同时让你在工作中每一个步骤都能拥有更高效愉悦的体验。')}}</p>
|
|
||||||
</Col>
|
|
||||||
</Row>
|
|
||||||
</div>
|
|
||||||
<div class="page-footer">
|
|
||||||
<div class="footer-service no-dark-content">
|
|
||||||
<div class="footer-bg-box">
|
|
||||||
<div class="box-title">{{ $L(`开启您的 ${appTitle} 团队协作`) }}</div>
|
|
||||||
<div class="buttom-box">
|
|
||||||
<div class="login-btn" @click="login">{{ $L("立即登录") }}</div>
|
|
||||||
<div class="reg-btn" @click="register">{{ $L("注册") }}</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="footer-copyright" v-if="homeFooter" v-html="homeFooter"></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!--更新日志-->
|
|
||||||
<UpdateLog v-model="uplogShow" :update-log="showItem.updateLog" :update-ver="showItem.updateVer"/>
|
|
||||||
</div>
|
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import {mapState} from "vuex";
|
import {languageType} from "../language";
|
||||||
import {languageList, languageType, setLanguage} from "../language";
|
|
||||||
import UpdateLog from "./manage/components/UpdateLog";
|
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
components: {UpdateLog},
|
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {}
|
||||||
languageList,
|
|
||||||
languageType,
|
|
||||||
|
|
||||||
showItem: {
|
|
||||||
pro: false,
|
|
||||||
github: '',
|
|
||||||
updateLog: '',
|
|
||||||
updateVer: ''
|
|
||||||
},
|
},
|
||||||
needStartHome: false,
|
|
||||||
homeFooter: '',
|
|
||||||
|
|
||||||
uplogShow: false,
|
|
||||||
};
|
|
||||||
},
|
|
||||||
computed: {
|
computed: {
|
||||||
...mapState(['themeMode', 'themeIsDark', 'themeList',]),
|
|
||||||
|
|
||||||
isSoftware() {
|
isSoftware() {
|
||||||
return this.$Electron || this.$isEEUiApp;
|
return this.$Electron || this.$isEEUiApp;
|
||||||
},
|
},
|
||||||
|
|
||||||
currentLanguage() {
|
|
||||||
return languageList[languageType] || "Language";
|
|
||||||
},
|
|
||||||
|
|
||||||
appTitle() {
|
|
||||||
return window.systemInfo.title || "DooTask";
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
|
|
||||||
mounted() {
|
mounted() {
|
||||||
@ -271,79 +31,40 @@ export default {
|
|||||||
},
|
},
|
||||||
|
|
||||||
activated() {
|
activated() {
|
||||||
this.getShowItem();
|
this.start();
|
||||||
this.getNeedStartHome();
|
|
||||||
},
|
},
|
||||||
|
|
||||||
methods: {
|
methods: {
|
||||||
onPro() {
|
start() {
|
||||||
this.goForward({name: 'pro'});
|
|
||||||
},
|
|
||||||
|
|
||||||
setTheme(mode) {
|
|
||||||
this.$store.dispatch("setTheme", mode)
|
|
||||||
},
|
|
||||||
|
|
||||||
login() {
|
|
||||||
if (this.userId > 0) {
|
|
||||||
this.goForward({name: 'manage-dashboard'}, true);
|
|
||||||
} else {
|
|
||||||
this.goForward({name: 'login'}, true);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
register() {
|
|
||||||
this.goForward({name: 'login', query: {type: "reg"}});
|
|
||||||
},
|
|
||||||
|
|
||||||
windowOpen(url) {
|
|
||||||
window.open(url)
|
|
||||||
},
|
|
||||||
|
|
||||||
getShowItem() {
|
|
||||||
this.$store.dispatch("call", {
|
|
||||||
url: "system/get/showitem",
|
|
||||||
spinner: 1000
|
|
||||||
}).then(({data}) => {
|
|
||||||
this.showItem = data
|
|
||||||
}).catch(_ => {
|
|
||||||
this.showItem = {}
|
|
||||||
});
|
|
||||||
},
|
|
||||||
|
|
||||||
getNeedStartHome() {
|
|
||||||
if (this.isSoftware) {
|
if (this.isSoftware) {
|
||||||
this.needStartHome = false;
|
this.goNext()
|
||||||
if (this.userId > 0) {
|
|
||||||
this.goForward({name: 'manage-dashboard'}, true);
|
|
||||||
} else {
|
|
||||||
this.goForward({name: 'login'}, true);
|
|
||||||
}
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
//
|
//
|
||||||
this.$store.dispatch("showSpinner", 1000)
|
this.$store.dispatch("showSpinner", 1000)
|
||||||
this.$store.dispatch("needHome").then(({home_footer}) => {
|
this.$store.dispatch("needHome").then(_ => {
|
||||||
this.needStartHome = true;
|
this.goIndex();
|
||||||
this.homeFooter = home_footer;
|
|
||||||
}).catch(_ => {
|
}).catch(_ => {
|
||||||
this.needStartHome = false;
|
|
||||||
this.goNext();
|
this.goNext();
|
||||||
}).finally(_ => {
|
}).finally(_ => {
|
||||||
this.$store.dispatch("hiddenSpinner")
|
this.$store.dispatch("hiddenSpinner")
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
|
goIndex() {
|
||||||
|
if (languageType === "zh" || languageType === "zh-CHT") {
|
||||||
|
window.location.href = $A.apiUrl("../site/zh/index.html")
|
||||||
|
} else {
|
||||||
|
window.location.href = $A.apiUrl("../site/en/index.html")
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
goNext() {
|
goNext() {
|
||||||
if (this.userId > 0) {
|
if (this.userId > 0) {
|
||||||
this.goForward({name: 'manage-dashboard'}, true);
|
this.goForward({name: 'manage-dashboard'}, true);
|
||||||
} else {
|
} else {
|
||||||
this.goForward({name: 'login'}, true);
|
this.goForward({name: 'login'}, true);
|
||||||
}
|
}
|
||||||
},
|
|
||||||
|
|
||||||
onLanguage(l) {
|
|
||||||
setLanguage(l)
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|||||||
@ -1,54 +0,0 @@
|
|||||||
<template>
|
|
||||||
<Modal
|
|
||||||
v-model="uplogShow"
|
|
||||||
:fullscreen="uplogFull"
|
|
||||||
class-name="update-log">
|
|
||||||
<div slot="header">
|
|
||||||
<div class="uplog-head">
|
|
||||||
<div class="uplog-title">{{$L('更新日志')}}</div>
|
|
||||||
<Tag v-if="updateVer" color="volcano">{{updateVer}}</Tag>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<Scrollbar class-name="uplog-body">
|
|
||||||
<MarkdownPreview :initialValue="updateLog"/>
|
|
||||||
</Scrollbar>
|
|
||||||
<div slot="footer" class="adaption">
|
|
||||||
<Button type="default" @click="uplogFull=!uplogFull">{{$L(uplogFull ? '缩小查看' : '全屏查看')}}</Button>
|
|
||||||
</div>
|
|
||||||
</Modal>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
import MarkdownPreview from "../../../components/MDEditor/components/preview";
|
|
||||||
export default {
|
|
||||||
name: 'UpdateLog',
|
|
||||||
components: {MarkdownPreview},
|
|
||||||
props: {
|
|
||||||
value:{
|
|
||||||
type: Boolean,
|
|
||||||
default: false
|
|
||||||
},
|
|
||||||
updateVer: {},
|
|
||||||
updateLog: {},
|
|
||||||
},
|
|
||||||
|
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
uplogShow: false,
|
|
||||||
uplogFull: false
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
watch: {
|
|
||||||
value: {
|
|
||||||
handler(val) {
|
|
||||||
this.uplogShow = val
|
|
||||||
},
|
|
||||||
immediate: true
|
|
||||||
},
|
|
||||||
uplogShow(val) {
|
|
||||||
this.$emit("input", val)
|
|
||||||
}
|
|
||||||
},
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
@ -150,14 +150,6 @@
|
|||||||
<Radio label="close">{{$L('关闭')}}</Radio>
|
<Radio label="close">{{$L('关闭')}}</Radio>
|
||||||
</RadioGroup>
|
</RadioGroup>
|
||||||
<div class="form-tip">{{$L('仅支持网页版。')}}</div>
|
<div class="form-tip">{{$L('仅支持网页版。')}}</div>
|
||||||
<Input
|
|
||||||
v-if="formDatum.start_home == 'open'"
|
|
||||||
v-model="formDatum.home_footer"
|
|
||||||
type="textarea"
|
|
||||||
style="margin:8px 0 -8px"
|
|
||||||
:rows="2"
|
|
||||||
:autosize="{ minRows: 2, maxRows: 8 }"
|
|
||||||
:placeholder="$L('首页底部:首页底部网站备案号等信息')"/>
|
|
||||||
</FormItem>
|
</FormItem>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
53
resources/assets/js/store/actions.js
vendored
53
resources/assets/js/store/actions.js
vendored
@ -94,12 +94,8 @@ export default {
|
|||||||
state.apiKeyData = data;
|
state.apiKeyData = data;
|
||||||
})
|
})
|
||||||
|
|
||||||
// 系统设置
|
// 获取系统设置
|
||||||
dispatch("call", {
|
dispatch("systemSetting")
|
||||||
url: 'system/setting',
|
|
||||||
}).then(({data}) => {
|
|
||||||
state.systemConfig = data;
|
|
||||||
})
|
|
||||||
|
|
||||||
// 加载语言包
|
// 加载语言包
|
||||||
await $A.loadScriptS([
|
await $A.loadScriptS([
|
||||||
@ -328,6 +324,43 @@ export default {
|
|||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取系统设置
|
||||||
|
* @param dispatch
|
||||||
|
* @param state
|
||||||
|
* @returns {Promise<unknown>}
|
||||||
|
*/
|
||||||
|
systemSetting({dispatch, state}) {
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
switch (state.systemConfig.__state) {
|
||||||
|
case "success":
|
||||||
|
resolve(state.systemConfig)
|
||||||
|
break
|
||||||
|
|
||||||
|
case "loading":
|
||||||
|
setTimeout(_ => {
|
||||||
|
dispatch("systemSetting").then(resolve).catch(reject)
|
||||||
|
}, 100)
|
||||||
|
break
|
||||||
|
|
||||||
|
default:
|
||||||
|
state.systemConfig.__state = "loading"
|
||||||
|
dispatch("call", {
|
||||||
|
url: "system/setting",
|
||||||
|
}).then(({data}) => {
|
||||||
|
state.systemConfig = Object.assign(data, {
|
||||||
|
__state: "success",
|
||||||
|
})
|
||||||
|
resolve(state.systemConfig)
|
||||||
|
}).catch(_ => {
|
||||||
|
state.systemConfig.__state = "error"
|
||||||
|
reject()
|
||||||
|
});
|
||||||
|
break
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 是否启用首页
|
* 是否启用首页
|
||||||
* @param dispatch
|
* @param dispatch
|
||||||
@ -336,11 +369,9 @@ export default {
|
|||||||
*/
|
*/
|
||||||
needHome({dispatch, state}) {
|
needHome({dispatch, state}) {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
dispatch("call", {
|
dispatch("systemSetting").then(data => {
|
||||||
url: "system/get/starthome",
|
if (data.start_home === 'open') {
|
||||||
}).then(({data}) => {
|
resolve()
|
||||||
if (!!data.need_start) {
|
|
||||||
resolve(data)
|
|
||||||
} else {
|
} else {
|
||||||
reject()
|
reject()
|
||||||
}
|
}
|
||||||
|
|||||||
1
resources/assets/sass/pages/_.scss
vendored
1
resources/assets/sass/pages/_.scss
vendored
@ -7,6 +7,5 @@
|
|||||||
@import "page-messenger";
|
@import "page-messenger";
|
||||||
@import "page-project";
|
@import "page-project";
|
||||||
@import "page-setting";
|
@import "page-setting";
|
||||||
@import "page-index";
|
|
||||||
@import "page-approve";
|
@import "page-approve";
|
||||||
@import "components/_";
|
@import "components/_";
|
||||||
|
|||||||
404
resources/assets/sass/pages/page-index.scss
vendored
404
resources/assets/sass/pages/page-index.scss
vendored
@ -1,404 +0,0 @@
|
|||||||
.page-index {
|
|
||||||
position: absolute;
|
|
||||||
top: 0;
|
|
||||||
left: 0;
|
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
|
||||||
overflow: auto;
|
|
||||||
|
|
||||||
.page-warp {
|
|
||||||
max-width: 1920px;
|
|
||||||
margin: 0 auto;
|
|
||||||
|
|
||||||
.page-header {
|
|
||||||
width: 100%;
|
|
||||||
background: $primary-color;
|
|
||||||
position: relative;
|
|
||||||
padding-bottom: 40px;
|
|
||||||
|
|
||||||
.header-nav {
|
|
||||||
max-width: 1200px;
|
|
||||||
height: 72px;
|
|
||||||
margin: auto;
|
|
||||||
display: flex;
|
|
||||||
justify-content: space-between;
|
|
||||||
|
|
||||||
.header-nav-box {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
padding-left: 20px;
|
|
||||||
color: #ffffff;
|
|
||||||
font-weight: 400;
|
|
||||||
position: relative;
|
|
||||||
|
|
||||||
.logo {
|
|
||||||
width: 143px;
|
|
||||||
height: 36px;
|
|
||||||
background: url("../images/logo-index.svg") no-repeat center center;
|
|
||||||
background-size: contain;
|
|
||||||
}
|
|
||||||
|
|
||||||
.header-right-pro {
|
|
||||||
margin-left: 28px;
|
|
||||||
padding: 0 10px;
|
|
||||||
font-size: 12px;
|
|
||||||
color: #f6ca9d;
|
|
||||||
background: #1d1e23;
|
|
||||||
background: linear-gradient(90deg, #1d1e23, #3f4045);
|
|
||||||
border: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.header-right-github {
|
|
||||||
margin-left: 28px;
|
|
||||||
font-size: 24px;
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
cursor: pointer;
|
|
||||||
color: #ffffff;
|
|
||||||
}
|
|
||||||
|
|
||||||
.header-right-uplog {
|
|
||||||
margin-left: 28px;
|
|
||||||
font-size: 16px;
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
|
|
||||||
.header-right-1 {
|
|
||||||
margin-left: 28px;
|
|
||||||
display: flex;
|
|
||||||
|
|
||||||
.header-right-1-dropdown {
|
|
||||||
color: #ffffff;
|
|
||||||
font-size: 16px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.header-right-2 {
|
|
||||||
font-size: 16px;
|
|
||||||
margin-left: 28px;
|
|
||||||
cursor: pointer;
|
|
||||||
|
|
||||||
.header-right-2-dropdown {
|
|
||||||
color: #ffffff;
|
|
||||||
font-size: 16px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.header-right-3 {
|
|
||||||
font-size: 16px;
|
|
||||||
margin: 0 28px;
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
|
|
||||||
.header-right-4 {
|
|
||||||
font-size: 16px;
|
|
||||||
min-width: 100px;
|
|
||||||
height: 36px;
|
|
||||||
background: #ffa25a;
|
|
||||||
border-radius: 4px;
|
|
||||||
text-align: center;
|
|
||||||
line-height: 36px;
|
|
||||||
cursor: pointer;
|
|
||||||
padding: 0 10px 0 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.header-right-5 {
|
|
||||||
margin-left: 28px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.header-nav-boxs {
|
|
||||||
justify-content: flex-end;
|
|
||||||
padding-right: 20px;
|
|
||||||
|
|
||||||
.header-nav-more {
|
|
||||||
color: #fff;
|
|
||||||
font-size: 36px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.header-nav-dropdown-item {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: space-between;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.header-content {
|
|
||||||
max-width: 1200px;
|
|
||||||
margin: 0 auto;
|
|
||||||
|
|
||||||
.header-title {
|
|
||||||
font-size: 44px;
|
|
||||||
font-weight: 500;
|
|
||||||
color: #ffffff;
|
|
||||||
line-height: 67px;
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.header-title-one {
|
|
||||||
font-size: 48px;
|
|
||||||
margin-top: 40px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.header-tips {
|
|
||||||
font-size: 22px;
|
|
||||||
font-weight: 400;
|
|
||||||
color: #ffffff;
|
|
||||||
line-height: 36px;
|
|
||||||
text-align: center;
|
|
||||||
padding: 0 30px;
|
|
||||||
margin: 22px auto 0;
|
|
||||||
max-width: 88%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.login-buttom {
|
|
||||||
width: 150px;
|
|
||||||
height: 48px;
|
|
||||||
background: #ffa25a;
|
|
||||||
border-radius: 8px;
|
|
||||||
font-size: 18px;
|
|
||||||
font-weight: 500;
|
|
||||||
color: #ffffff;
|
|
||||||
line-height: 48px;
|
|
||||||
text-align: center;
|
|
||||||
margin: 34px auto 0;
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.page-header-bottom {
|
|
||||||
position: relative;
|
|
||||||
background: #FFFFFF url("../images/index/bg-bottom.svg") no-repeat;
|
|
||||||
background-size: 100%;
|
|
||||||
margin-bottom: 160px;
|
|
||||||
margin-top: -2px;
|
|
||||||
|
|
||||||
.page-header-bottoms {
|
|
||||||
max-width: 1200px;
|
|
||||||
margin: auto;
|
|
||||||
top: 0;
|
|
||||||
left: 0;
|
|
||||||
right: 0;
|
|
||||||
|
|
||||||
img {
|
|
||||||
display: block;
|
|
||||||
margin: auto;
|
|
||||||
width: 92%;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.page-main {
|
|
||||||
max-width: 1200px;
|
|
||||||
margin: auto;
|
|
||||||
|
|
||||||
.page-main-row {
|
|
||||||
margin-bottom: 150px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.page-main-rows {
|
|
||||||
margin-bottom: 140px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.page-main-img {
|
|
||||||
img {
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.page-main-imgs {
|
|
||||||
img {
|
|
||||||
display: block;
|
|
||||||
width: 90%;
|
|
||||||
margin: auto;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.page-main-text {
|
|
||||||
padding-left: 60px;
|
|
||||||
padding-top: 120px;
|
|
||||||
|
|
||||||
h3 {
|
|
||||||
font-size: 32px;
|
|
||||||
font-weight: 500;
|
|
||||||
color: $primary-title-color;
|
|
||||||
line-height: 45px;
|
|
||||||
margin-bottom: 17px;
|
|
||||||
}
|
|
||||||
|
|
||||||
p {
|
|
||||||
font-size: 18px;
|
|
||||||
font-weight: 400;
|
|
||||||
color: #828282;
|
|
||||||
line-height: 28px;
|
|
||||||
padding-right: 70px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.page-main-texts {
|
|
||||||
padding-top: 40px;
|
|
||||||
|
|
||||||
h3 {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
font-size: 30px;
|
|
||||||
|
|
||||||
img {
|
|
||||||
margin-right: 10px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
p {
|
|
||||||
font-size: 16px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.page-footer {
|
|
||||||
.footer-service {
|
|
||||||
width: 100%;
|
|
||||||
height: 188px;
|
|
||||||
background-color: #ffa25a;
|
|
||||||
position: relative;
|
|
||||||
|
|
||||||
.footer-bg-box {
|
|
||||||
overflow: hidden;
|
|
||||||
width: 100%;
|
|
||||||
height: 188px;
|
|
||||||
|
|
||||||
.box-title {
|
|
||||||
height: 45px;
|
|
||||||
font-size: 16px;
|
|
||||||
font-weight: 500;
|
|
||||||
color: #ffffff;
|
|
||||||
line-height: 45px;
|
|
||||||
text-align: center;
|
|
||||||
margin: 33px 0 22px 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.buttom-box {
|
|
||||||
display: flex;
|
|
||||||
justify-content: center;
|
|
||||||
|
|
||||||
.login-btn {
|
|
||||||
width: 150px;
|
|
||||||
height: 48px;
|
|
||||||
background: #ffffff;
|
|
||||||
border-radius: 8px;
|
|
||||||
font-size: 14px;
|
|
||||||
font-weight: 500;
|
|
||||||
color: #ffa25a;
|
|
||||||
line-height: 48px;
|
|
||||||
text-align: center;
|
|
||||||
margin-right: 20px;
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
|
|
||||||
.reg-btn {
|
|
||||||
width: 150px;
|
|
||||||
height: 48px;
|
|
||||||
border-radius: 8px;
|
|
||||||
border: 1px solid #ffffff;
|
|
||||||
font-size: 14px;
|
|
||||||
font-weight: 500;
|
|
||||||
color: #ffffff;
|
|
||||||
line-height: 48px;
|
|
||||||
text-align: center;
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.footer-copyright {
|
|
||||||
background: #fff;
|
|
||||||
color: #828282;
|
|
||||||
font-size: 12px;
|
|
||||||
font-weight: 400;
|
|
||||||
padding: 20px;
|
|
||||||
line-height: 20px;
|
|
||||||
text-align: center;
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@media screen and (max-width: 1440px) {
|
|
||||||
.page-index {
|
|
||||||
.page-warp {
|
|
||||||
.page-header {
|
|
||||||
.header-content {
|
|
||||||
.header-title {
|
|
||||||
font-size: 34px;
|
|
||||||
line-height: 60px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.header-title-one {
|
|
||||||
font-size: 40px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.header-tips {
|
|
||||||
font-size: 20px;
|
|
||||||
padding: 0 20px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.page-header-bottom {
|
|
||||||
margin-bottom: 80px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.page-main {
|
|
||||||
.page-main-text {
|
|
||||||
padding-left: 20px;
|
|
||||||
padding-top: 80px;
|
|
||||||
|
|
||||||
p {
|
|
||||||
padding-right: 20px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.page-main-texts {
|
|
||||||
h3 {
|
|
||||||
font-size: 24px;
|
|
||||||
|
|
||||||
img {
|
|
||||||
width: 24px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
p {
|
|
||||||
font-size: 14px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@media screen and (max-width: 468px) {
|
|
||||||
.page-index {
|
|
||||||
.page-warp {
|
|
||||||
.page-header {
|
|
||||||
.header-content {
|
|
||||||
.header-title {
|
|
||||||
font-size: 24px;
|
|
||||||
line-height: 38px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.header-title-one {
|
|
||||||
font-size: 28px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.header-tips {
|
|
||||||
font-size: 16px;
|
|
||||||
line-height: 26px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Loading…
x
Reference in New Issue
Block a user