mirror of
https://github.com/kuaifan/dootask.git
synced 2025-12-14 12:42:51 +00:00
perf: 整理官网页面
This commit is contained in:
parent
925667d840
commit
56da2a5725
@ -38,7 +38,7 @@ class SystemController extends AbstractController
|
||||
* @apiParam {String} type
|
||||
* - get: 获取(默认)
|
||||
* - 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 {String} msg 返回信息(错误描述)
|
||||
@ -71,7 +71,6 @@ class SystemController extends AbstractController
|
||||
'image_compress',
|
||||
'image_save_local',
|
||||
'start_home',
|
||||
'home_footer'
|
||||
])) {
|
||||
unset($all[$key]);
|
||||
}
|
||||
@ -882,58 +881,6 @@ class SystemController extends AbstractController
|
||||
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. 邮件发送测试(限管理员)
|
||||
*
|
||||
|
||||
@ -1,259 +1,19 @@
|
||||
<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>
|
||||
|
||||
<script>
|
||||
import {mapState} from "vuex";
|
||||
import {languageList, languageType, setLanguage} from "../language";
|
||||
import UpdateLog from "./manage/components/UpdateLog";
|
||||
import {languageType} from "../language";
|
||||
|
||||
export default {
|
||||
components: {UpdateLog},
|
||||
data() {
|
||||
return {
|
||||
languageList,
|
||||
languageType,
|
||||
|
||||
showItem: {
|
||||
pro: false,
|
||||
github: '',
|
||||
updateLog: '',
|
||||
updateVer: ''
|
||||
},
|
||||
needStartHome: false,
|
||||
homeFooter: '',
|
||||
|
||||
uplogShow: false,
|
||||
};
|
||||
return {}
|
||||
},
|
||||
computed: {
|
||||
...mapState(['themeMode', 'themeIsDark', 'themeList',]),
|
||||
|
||||
computed: {
|
||||
isSoftware() {
|
||||
return this.$Electron || this.$isEEUiApp;
|
||||
},
|
||||
|
||||
currentLanguage() {
|
||||
return languageList[languageType] || "Language";
|
||||
},
|
||||
|
||||
appTitle() {
|
||||
return window.systemInfo.title || "DooTask";
|
||||
},
|
||||
},
|
||||
|
||||
mounted() {
|
||||
@ -271,79 +31,40 @@ export default {
|
||||
},
|
||||
|
||||
activated() {
|
||||
this.getShowItem();
|
||||
this.getNeedStartHome();
|
||||
this.start();
|
||||
},
|
||||
|
||||
methods: {
|
||||
onPro() {
|
||||
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() {
|
||||
start() {
|
||||
if (this.isSoftware) {
|
||||
this.needStartHome = false;
|
||||
if (this.userId > 0) {
|
||||
this.goForward({name: 'manage-dashboard'}, true);
|
||||
} else {
|
||||
this.goForward({name: 'login'}, true);
|
||||
}
|
||||
this.goNext()
|
||||
return;
|
||||
}
|
||||
//
|
||||
this.$store.dispatch("showSpinner", 1000)
|
||||
this.$store.dispatch("needHome").then(({home_footer}) => {
|
||||
this.needStartHome = true;
|
||||
this.homeFooter = home_footer;
|
||||
this.$store.dispatch("needHome").then(_ => {
|
||||
this.goIndex();
|
||||
}).catch(_ => {
|
||||
this.needStartHome = false;
|
||||
this.goNext();
|
||||
}).finally(_ => {
|
||||
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() {
|
||||
if (this.userId > 0) {
|
||||
this.goForward({name: 'manage-dashboard'}, true);
|
||||
} else {
|
||||
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>
|
||||
</RadioGroup>
|
||||
<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>
|
||||
</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;
|
||||
})
|
||||
|
||||
// 系统设置
|
||||
dispatch("call", {
|
||||
url: 'system/setting',
|
||||
}).then(({data}) => {
|
||||
state.systemConfig = data;
|
||||
})
|
||||
// 获取系统设置
|
||||
dispatch("systemSetting")
|
||||
|
||||
// 加载语言包
|
||||
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
|
||||
@ -336,11 +369,9 @@ export default {
|
||||
*/
|
||||
needHome({dispatch, state}) {
|
||||
return new Promise((resolve, reject) => {
|
||||
dispatch("call", {
|
||||
url: "system/get/starthome",
|
||||
}).then(({data}) => {
|
||||
if (!!data.need_start) {
|
||||
resolve(data)
|
||||
dispatch("systemSetting").then(data => {
|
||||
if (data.start_home === 'open') {
|
||||
resolve()
|
||||
} else {
|
||||
reject()
|
||||
}
|
||||
|
||||
1
resources/assets/sass/pages/_.scss
vendored
1
resources/assets/sass/pages/_.scss
vendored
@ -7,6 +7,5 @@
|
||||
@import "page-messenger";
|
||||
@import "page-project";
|
||||
@import "page-setting";
|
||||
@import "page-index";
|
||||
@import "page-approve";
|
||||
@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