合并整理

This commit is contained in:
kuaifan 2022-03-16 09:04:00 +08:00
parent 5adbd6e8f1
commit d1036c3be7
18 changed files with 560 additions and 578 deletions

View File

@ -895,8 +895,9 @@ class ProjectController extends AbstractController
* - yes已归档
* - no未归档默认
* @apiParam {String} [deleted] 是否读取已删除
* - yes
* - no默认
* - all所有
* - yes已删除
* - no未删除默认
* @apiParam {Object} sorts 排序方式
* - sorts.complete_at 完成时间asc|desc
* - sorts.archived_at 归档时间asc|desc
@ -931,9 +932,10 @@ class ProjectController extends AbstractController
//
$scopeAll = false;
if ($parent_id > 0) {
ProjectTask::userTask($parent_id, str_replace(['all', 'yes', 'no'], [null, false, true], $archived), false, [], true);
$isArchived = str_replace(['all', 'yes', 'no'], [null, false, true], $archived);
$isDeleted = str_replace(['all', 'yes', 'no'], [null, false, true], $deleted);
ProjectTask::userTask($parent_id, $isArchived, $isDeleted);
$scopeAll = true;
$builder->withTrashed();
$builder->where('project_tasks.parent_id', $parent_id);
} elseif ($parent_id === -1) {
$builder->where('project_tasks.parent_id', 0);
@ -965,17 +967,19 @@ class ProjectController extends AbstractController
//
if ($complete === 'yes') {
$builder->whereNotNull('project_tasks.complete_at');
} elseif ($complete === 'no' && $deleted == 'no') {
} elseif ($complete === 'no') {
$builder->whereNull('project_tasks.complete_at');
}
//
if ($archived == 'yes') {
$builder->whereNotNull('project_tasks.archived_at');
} elseif ($archived == 'no' && $deleted == 'no') {
} elseif ($archived == 'no') {
$builder->whereNull('project_tasks.archived_at');
}
//
if ($deleted == 'yes') {
if ($deleted == 'all') {
$builder->withTrashed();
} elseif ($deleted == 'yes') {
$builder->onlyTrashed();
}
//
@ -1221,7 +1225,8 @@ class ProjectController extends AbstractController
$task_id = intval(Request::input('task_id'));
$archived = Request::input('archived', 'no');
//
$task = ProjectTask::userTask($task_id, str_replace(['all', 'yes', 'no'], [null, false, true], $archived), false, ['taskUser', 'taskTag'], true);
$isArchived = str_replace(['all', 'yes', 'no'], [null, false, true], $archived);
$task = ProjectTask::userTask($task_id, $isArchived, true, false, ['taskUser', 'taskTag']);
//
$data = $task->toArray();
$data['project_name'] = $task->project?->name;
@ -1249,7 +1254,7 @@ class ProjectController extends AbstractController
//
$task_id = intval(Request::input('task_id'));
//
$task = ProjectTask::userTask($task_id, null, false, [], true);
$task = ProjectTask::userTask($task_id, null);
//
if (empty($task->content)) {
return Base::retSuccess('success', json_decode('{}'));
@ -1277,7 +1282,7 @@ class ProjectController extends AbstractController
//
$task_id = intval(Request::input('task_id'));
//
$task = ProjectTask::userTask($task_id, null, false, [], true);
$task = ProjectTask::userTask($task_id, null);
//
return Base::retSuccess('success', $task->taskFile);
}
@ -1307,7 +1312,7 @@ class ProjectController extends AbstractController
return Base::retError('文件不存在或已被删除');
}
//
$task = ProjectTask::userTask($file->task_id, true, true);
$task = ProjectTask::userTask($file->task_id, true, true, true);
//
$task->pushMsg('filedelete', $file);
$file->delete();
@ -1486,7 +1491,7 @@ class ProjectController extends AbstractController
$task_id = intval(Request::input('task_id'));
$name = Request::input('name');
//
$task = ProjectTask::userTask($task_id, true, true);
$task = ProjectTask::userTask($task_id, true, true, true);
if ($task->complete_at) {
return Base::retError('主任务已完成无法添加子任务');
}
@ -1538,7 +1543,7 @@ class ProjectController extends AbstractController
parse_str(Request::getContent(), $data);
$task_id = intval($data['task_id']);
//
$task = ProjectTask::userTask($task_id, true, 2);
$task = ProjectTask::userTask($task_id, true, true, 2);
// 更新任务
$updateMarking = [];
$task->updateTask($data, $updateMarking);
@ -1621,7 +1626,7 @@ class ProjectController extends AbstractController
$task_id = intval(Request::input('task_id'));
$type = Request::input('type', 'add');
//
$task = ProjectTask::userTask($task_id, $type == 'add', true);
$task = ProjectTask::userTask($task_id, $type == 'add', true, true);
//
if ($task->parent_id > 0) {
return Base::retError('子任务不支持此功能');
@ -1663,7 +1668,7 @@ class ProjectController extends AbstractController
$task_id = intval(Request::input('task_id'));
$type = Request::input('type', 'delete');
//
$task = ProjectTask::userTask($task_id, null, true, [], $type === 'recovery');
$task = ProjectTask::userTask($task_id, null, $type !== 'recovery', true);
if ($type == 'recovery') {
$task->recoveryTask();
return Base::retSuccess('操作成功', ['id' => $task->id]);
@ -1698,7 +1703,7 @@ class ProjectController extends AbstractController
return Base::retError('记录不存在');
}
//
$task = ProjectTask::userTask($projectLog->task_id, true, true);
$task = ProjectTask::userTask($projectLog->task_id, true, true, true);
//
$record = $projectLog->record;
if ($record['flow'] && is_array($record['flow'])) {
@ -1933,7 +1938,7 @@ class ProjectController extends AbstractController
//
$builder = ProjectLog::select(["*"]);
if ($task_id > 0) {
$task = ProjectTask::userTask($task_id, null,false,[],true);
$task = ProjectTask::userTask($task_id, null);
$builder->whereTaskId($task->id);
} else {
$project = Project::userProject($project_id);

View File

@ -1218,31 +1218,29 @@ class ProjectTask extends AbstractModel
* 获取任务(会员有任务权限 会员存在项目内)
* @param int $task_id
* @param bool $archived true:仅限未归档, false:仅限已归档, null:不限制
* @param bool $trashed true:仅限未删除, false:仅限已删除, null:不限制
* @param int|bool $permission 0|false:不限制, 1|true:限制项目负责人、任务负责人、协助人员及任务创建者, 2:已有负责人才限制true (子任务时如果是主任务负责人也可以)
* @param array $with
* @param bool $getTrashed
* @return self
*/
public static function userTask($task_id, $archived = true, $permission = 0, $with = [], $getTrashed = false)
public static function userTask($task_id, $archived = true, $trashed = true, $permission = false, $with = [])
{
$builder = self::with($with)->allData()->where("project_tasks.id", intval($task_id));
if ($getTrashed) {
if ($trashed === false) {
$builder->onlyTrashed();
} elseif ($trashed === null) {
$builder->withTrashed();
}
$task = $builder->first();
//
if (empty($task)) {
if(self::whereId(intval($task_id))->withTrashed()->exists()){
throw new ApiException('任务已删除,不可编辑', [ 'task_id' => $task_id ], -4002);
}else{
throw new ApiException('任务不存在', [ 'task_id' => $task_id ], -4002);
}
throw new ApiException('任务不存在', ['task_id' => $task_id], -4002);
}
if ($archived === true && $task->archived_at != null) {
throw new ApiException('任务已归档', [ 'task_id' => $task_id ]);
throw new ApiException('任务已归档', ['task_id' => $task_id]);
}
if ($archived === false && $task->archived_at == null) {
throw new ApiException('任务未归档', [ 'task_id' => $task_id ]);
throw new ApiException('任务未归档', ['task_id' => $task_id]);
}
//
try {

View File

@ -202,14 +202,11 @@
<script>
import {mapState} from "vuex";
import RightBottom from "../components/RightBottom";
export default {
components:{RightBottom},
data() {
return {
needStartHome: false,
homeFooter: '',
};
},
computed: {
@ -229,25 +226,13 @@ export default {
},
login() {
this.goForward(
{
path: `/login`,
},
false
);
this.goForward({path: `/login`}, false);
},
register() {
this.goForward(
{
path: `/login`,
query: {
type: "reg",
},
},
false
);
this.goForward({path: `/login`, query: {type: "reg"}}, false);
},
getNeedStartHome() {
this.$store.dispatch("call", {
url: "system/get/starthome",

View File

@ -154,18 +154,14 @@ export default {
}
},
watch: {
$route:{
handler(val) {
if (val.query.type=='reg'){
'$route' ({query}) {
if (query.type=='reg'){
this.$nextTick(()=>{
this.loginType = "reg"
})
}
},
immediate:true
},
loginType(val) {
console.log(val)
if (val == 'reg') {
this.getNeedInvite();
}

View File

@ -290,7 +290,7 @@
:value="taskId > 0"
:styles="{
width: '90%',
maxWidth: taskData.dialog_id && !taskData.deleted_at ? '1200px' : '700px'
maxWidth: taskData.dialog_id ? '1200px' : '700px'
}"
:mask-closable="false"
:footer-hide="true"

View File

@ -89,17 +89,11 @@ export default {
this.$emit("on-read");
if (this.$Electron) {
let config = {
title: row.title,
title: this.formatName(row.title),
titleFixed: true,
parent: null,
width: Math.min(window.screen.availWidth, this.$el.clientWidth + 72),
height: Math.min(window.screen.availHeight, this.$el.clientHeight + 72),
minWidth: 600,
minHeight: 450,
};
if (this.hasOpenDialog) {
config.minWidth = 800;
config.minHeight = 600;
width: Math.min(window.screen.availWidth, 1440),
height: Math.min(window.screen.availHeight, 900),
}
this.$Electron.sendMessage('windowRouter', {
name: 'report-' + row.id,
@ -119,14 +113,8 @@ export default {
title: title,
titleFixed: true,
parent: null,
width: Math.min(window.screen.availWidth, this.$el.clientWidth + 72),
height: Math.min(window.screen.availHeight, this.$el.clientHeight + 72),
minWidth: 600,
minHeight: 450,
};
if (this.hasOpenDialog) {
config.minWidth = 800;
config.minHeight = 600;
width: Math.min(window.screen.availWidth, 1440),
height: Math.min(window.screen.availHeight, 900),
}
this.$Electron.sendMessage('windowRouter', {
name: 'report-' + id,

View File

@ -97,23 +97,26 @@ export default {
initLanguage() {
this.columns = [
{
title: this.$L('ID'),
minWidth: 50,
maxWidth: 70,
title: 'ID',
key: 'id',
width: 80,
render: (h, {row, column}) => {
return h('TableAction', {
props: {
column: column,
align: 'left'
}
}, [
h("div", row.id),
]);
}
},
{
title: this.$L('任务名称'),
key: 'name',
minWidth: 200,
render: (h, {row}) => {
return h('AutoTip', {
on: {
'on-click': () => {
this.$store.dispatch("openTask", row);
}
}
}, row.name);
return h('AutoTip', row.name);
}
},
{
@ -149,18 +152,6 @@ export default {
width: 100,
render: (h, params) => {
const vNodes = [
h('span', {
style: {
fontSize: '13px',
cursor: 'pointer',
color: '#8bcf70',
},
on: {
'click': () => {
this.$store.dispatch("openTask", params.row);
}
},
}, this.$L('查看')),
h('Poptip', {
props: {
title: this.$L('你确定要还原删除吗?'),
@ -172,7 +163,6 @@ export default {
fontSize: '13px',
cursor: 'pointer',
color: '#8bcf70',
marginLeft: "8px"
},
on: {
'on-ok': () => {

View File

@ -87,9 +87,6 @@
<div v-if="taskDetail.archived_at" class="flow">
<span class="archived" @click.stop="openMenu(taskDetail)">{{$L('已归档')}}</span>
</div>
<div v-if="taskDetail.deleted_at" class="flow">
<span class="archived">{{$L('已删除')}}</span>
</div>
<div class="nav">
<p v-if="projectName"><span>{{projectName}}</span></p>
<p v-if="columnName"><span>{{columnName}}</span></p>
@ -152,7 +149,6 @@
<div class="desc">
<TEditor
ref="desc"
:readOnly="taskDetail.deleted_at ? true : false"
:value="taskContent"
:plugins="taskPlugins"
:options="taskOptions"
@ -387,16 +383,16 @@
<div class="head">
<Icon class="icon" type="ios-chatbubbles-outline" />
<div class="nav">
<p :class="{active:navActive=='dialog'}" v-if="!taskDetail.deleted_at" @click="navActive='dialog'">{{$L('聊天')}}</p>
<p :class="{active:navActive=='log' || taskDetail.deleted_at}" @click="navActive='log'">{{$L('动态')}}</p>
<div v-if="navActive=='log' || taskDetail.deleted_at" class="refresh">
<p :class="{active:navActive=='dialog'}" @click="navActive='dialog'">{{$L('聊天')}}</p>
<p :class="{active:navActive=='log'}" @click="navActive='log'">{{$L('动态')}}</p>
<div v-if="navActive=='log'" class="refresh">
<Loading v-if="logLoadIng"/>
<Icon v-else type="ios-refresh" @click="getLogLists"></Icon>
</div>
</div>
</div>
<ProjectLog v-if="(navActive=='log' || taskDetail.deleted_at) && taskId > 0" ref="log" :task-id="taskDetail.id" :show-load="false" @on-load-change="logLoadChange"/>
<div v-else-if="!taskDetail.deleted_at" class="no-dialog"
<ProjectLog v-if="navActive=='log' && taskId > 0" ref="log" :task-id="taskDetail.id" :show-load="false" @on-load-change="logLoadChange"/>
<div v-else class="no-dialog"
@drop.prevent="taskPasteDrag($event, 'drag')"
@dragover.prevent="taskDragOver(true, $event)"
@dragleave.prevent="taskDragOver(false, $event)">
@ -619,7 +615,7 @@ export default {
},
hasOpenDialog() {
return this.taskDetail.dialog_id > 0 && !this.windowMax768 && !this.taskDetail.deleted_at;
return this.taskDetail.dialog_id > 0 && !this.windowMax768;
},
dialogStyle() {

View File

@ -52,7 +52,7 @@
<Icon type="ios-filing" />{{$L(task.archived_at ? '还原归档' : '归档')}}
</div>
</EDropdownItem>
<EDropdownItem command="remove" v-if="!task.deleted_at">
<EDropdownItem command="remove">
<div class="item hover-del">
<Icon type="md-trash" />{{$L('删除')}}
</div>

View File

@ -1,7 +1,7 @@
<template>
<div class="setting-item submit">
<Form ref="formData" :model="formData" :rules="ruleData" label-width="auto" @submit.native.prevent>
<h3 style="margin-bottom: 15px;">{{ $L('邮箱服务器设置') }}</h3>
<h3>{{ $L('邮箱服务器设置') }}</h3>
<FormItem :label="$L('SMTP服务器')" prop="smtp_server">
<Input v-model="formData.smtp_server"/>
</FormItem>
@ -15,7 +15,7 @@
<Input :maxlength="20" v-model="formData.password"/>
</FormItem>
<h3 style="margin-bottom: 15px;">{{ $L('邮件通知设置') }}</h3>
<h3>{{ $L('邮件通知设置') }}</h3>
<FormItem :label="$L('开启注册验证')" prop="reg_verify">
<RadioGroup v-model="formData.reg_verify">
<Radio label="open">{{ $L('开启') }}</Radio>
@ -130,7 +130,3 @@ export default {
}
}
</script>
<style scoped>
</style>

View File

@ -17,7 +17,6 @@ import ReportDetail from "../manage/components/ReportDetail";
export default {
components: {ReportDetail},
name: "reportDetail",
data() {
return {
detailData: {},
@ -47,7 +46,3 @@ export default {
}
}
</script>
<style scoped>
</style>

View File

@ -17,10 +17,5 @@ import ReportEdit from "../manage/components/ReportEdit"
export default {
components: {ReportEdit},
name: "reportEdit"
}
</script>
<style scoped>
</style>

View File

@ -17,6 +17,34 @@
</div>
</template>
<style lang="scss" scoped>
.valid-wrap {
height: 100vh;
width: 100vw;
display: flex;
align-items: center;
justify-content: center;
.valid-box {
width: 500px;
background-color: #fff;
padding: 5px 15px 20px 15px;
border-radius: 10px;
.valid-title {
border-bottom: 1px solid #e8eaec;
padding: 14px 16px;
line-height: 1;
}
.validation-text {
padding: 10px;
color: #333;
font-size: 14px;
}
}
}
</style>
<script>
export default {
data() {
@ -56,30 +84,3 @@ export default {
},
}
</script>
<style lang="scss">
.valid-wrap {
height: 100vh;
width: 100vw;
display: flex;
align-items: center;
justify-content: center;
}
.valid-box {
width: 500px;
background-color: #fff;
padding: 5px 15px 20px 15px;
border-radius: 10px;
.valid-title {
border-bottom: 1px solid #e8eaec;
padding: 14px 16px;
line-height: 1;
}
.validation-text{
padding: 10px;
color: #333;
font-size: 14px;
}
}
</style>

View File

@ -1003,7 +1003,7 @@ export default {
state.cacheTasks.filter(task => task.parent_id == id).some(childTask => {
let cIndex = state.cacheTasks.findIndex(task => task.id == childTask.id);
if (cIndex > -1) {
project_ids.push(state.cacheTasks[index].project_id)
project_ids.push(childTask.project_id)
state.cacheTasks.splice(cIndex, 1);
}
})

View File

@ -307,6 +307,7 @@ body.dark-mode-reverse {
}
}
.page-index {
.page-warp {
background-color: #efefef;
.page-header {
@ -341,4 +342,5 @@ body.dark-mode-reverse {
background-color: #efefef;
}
}
}
}

View File

@ -228,27 +228,6 @@
}
}
}
.project-gantt-item {
padding-left: 5px;
display: flex;
cursor: pointer;
&.active {
color: $primary-color;
}
.force-right {
&.act {
color: #2A53FF;
}
}
.gantt-name {
font-size: 13px;
padding-top: 6%;
cursor: pointer;
}
}
}
}
}

View File

@ -5,53 +5,58 @@
width: 100%;
height: 100%;
overflow: auto;
}
.page-warp {
max-width: 1920px;
margin: 0 auto;
.page-header {
width: 100%;
background: #8bcf70;
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-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
position: relative;
.logo {
width: 143px;
height: 36px;
background: url("../images/index/logo.svg")
no-repeat center center;
background: url("../images/index/logo.svg") no-repeat center center;
background-size: contain;
}
.header-right-one {
display: flex;
.header-right-one-language {
margin-right: 8px;
font-size: 26px;
}
.header-right-one-dropdown {
color: #ffffff;
font-size: 16px;
}
}
.header-right-two {
font-size: 16px;
margin: 0 30px 0 30px;
cursor: pointer;
}
.header-right-three {
font-size: 16px;
min-width: 100px;
@ -63,12 +68,14 @@
cursor: pointer;
padding: 0 10px 0 10px;
}
.header-right-four {
font-size: 16px;
margin-left: 30px;
cursor: pointer;
.ivu-dropdown{
.ivu-dropdown-rel{
.ivu-dropdown {
.ivu-dropdown-rel {
.header-right-one-dropdown {
color: #ffffff;
font-size: 16px;
@ -78,32 +85,36 @@
}
}
.header-nav-boxs{
.header-nav-boxs {
justify-content: flex-end;
padding-right: 20px;
.header-nav-more{
.header-nav-more {
color: #fff;
font-size: 36px;
}
}
}
.header-content {
max-width: 1200px;
margin: 0 auto;
.header-title {
font-size: 48px;
font-family: PingFangSC-Medium, PingFang SC;
font-weight: 500;
color: #ffffff;
line-height: 67px;
text-align: center;
}
.header-title-one {
margin-top: 40px;
}
.header-tips {
font-size: 24px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #ffffff;
line-height: 36px;
@ -111,76 +122,85 @@
padding: 0 30px;
margin-top: 22px;
}
.login-buttom {
width: 150px;
height: 48px;
background: #ffa25a;
border-radius: 8px;
font-size: 18px;
font-family: PingFangSC-Medium, PingFang SC;
font-weight: 500;
color: #ffffff;
line-height: 48px;
text-align: center;
margin: 0 auto;
margin-top: 34px;
margin: 34px auto 0;
cursor: pointer;
}
}
}
.page-header-bottom{
.page-header-bottom {
position: relative;
background: url("../images/index/bg_bottom.svg") no-repeat;
background-color: #FFFFFF;
background: #FFFFFF url("../images/index/bg_bottom.svg") no-repeat;
background-size: 100%;
margin-bottom: 190px;
margin-top: -2px;
.page-header-bottoms{
.page-header-bottoms {
max-width: 1200px;
margin: auto;
top: 0;
left: 0;
right: 0;
img{
img {
display: block;
margin: auto;
width: 80%;
}
}
}
.page-main{
.page-main {
max-width: 1200px;
margin: auto;
.page-main-row{
.page-main-row {
margin-bottom: 150px;
}
.page-main-rows{
.page-main-rows {
margin-bottom: 140px;
}
.page-main-img{
img{
.page-main-img {
img {
width: 100%;
}
}
.page-main-imgs{
img{
.page-main-imgs {
img {
display: block;
width: 90%;
margin: auto;
}
}
.page-main-text{
.page-main-text {
padding-left: 60px;
padding-top: 120px;
h3{
h3 {
font-size: 32px;
font-weight: 500;
color: #333333;
line-height: 45px;
margin-bottom: 17px;
}
p{
p {
font-size: 18px;
font-weight: 400;
color: #828282;
@ -188,56 +208,58 @@
padding-right: 70px;
}
}
.page-main-texts{
.page-main-texts {
padding-top: 40px;
h3{
h3 {
display: flex;
align-items: center;
font-size: 30px;
img{
margin-right:10px;
img {
margin-right: 10px;
}
}
p{
font-size:16px;
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;
// background: url("../images/index/footer-bg.png") no-repeat
// center center;
// background-size: 100% 100%;
// background-size: contain;
.box-title {
height: 45px;
font-size: 16px;
font-family: PingFangSC-Medium, PingFang SC;
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-family: PingFangSC-Medium, PingFang SC;
font-weight: 500;
color: #ffa25a;
line-height: 48px;
@ -245,13 +267,13 @@
margin-right: 20px;
cursor: pointer;
}
.contact-btn {
width: 150px;
height: 48px;
border-radius: 8px;
border: 1px solid #ffffff;
font-size: 14px;
font-family: PingFangSC-Medium, PingFang SC;
font-weight: 500;
color: #ffffff;
line-height: 48px;
@ -261,22 +283,23 @@
}
}
}
.footer-opyright {
width: 100%;
height: 60px;
background: #ffffff;
text-align: center;
font-size: 12px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #828282;
line-height: 60px;
}
}
}
}
@media screen and (max-width: 1440px) {
.page-index {
}
.page-warp {
.page-header {
.header-content {
@ -285,85 +308,96 @@
line-height: 60px;
font-weight: 600;
}
.header-title-one {
margin-top: 40px;
}
.header-tips {
font-size: 22px;
padding: 0 20px;
font-weight: 400;
line-height: 36px;
}
.login-buttom {
width: 150px;
height: 48px;
background: #ffa25a;
border-radius: 8px;
font-size: 18px;
font-family: PingFangSC-Medium, PingFang SC;
font-weight: 500;
color: #ffffff;
line-height: 48px;
text-align: center;
margin: 0 auto;
margin-top: 34px;
margin: 34px auto 0;
cursor: pointer;
}
}
}
.page-header-bottom{
.page-header-bottom {
position: relative;
background: url("../images/index/bg_bottom.svg") no-repeat;
background-color: #FFFFFF;
background: #FFFFFF url("../images/index/bg_bottom.svg") no-repeat;
background-size: 100%;
margin-bottom: 100px;
margin-top: -2px;
.page-header-bottoms{
.page-header-bottoms {
max-width: 1200px;
margin: auto;
top: 0;
left: 0;
right: 0;
img{
img {
display: block;
margin: auto;
width: 80%;
}
}
}
.page-main{
.page-main {
max-width: 1200px;
margin: auto;
.page-main-row{
.page-main-row {
margin-bottom: 150px;
}
.page-main-rows{
.page-main-rows {
margin-bottom: 140px;
}
.page-main-img{
img{
.page-main-img {
img {
width: 100%;
}
}
.page-main-imgs{
img{
.page-main-imgs {
img {
display: block;
width: 90%;
margin: auto;
}
}
.page-main-text{
.page-main-text {
padding-left: 20px;
padding-top: 80px;
h3{
h3 {
font-size: 32px;
font-weight: 500;
color: #333333;
line-height: 45px;
margin-bottom: 17px;
}
p{
p {
font-size: 18px;
font-weight: 400;
color: #828282;
@ -371,57 +405,59 @@
padding-right: 20px;
}
}
.page-main-texts{
.page-main-texts {
padding-top: 40px;
h3{
h3 {
display: flex;
align-items: center;
font-size: 24px;
img{
img {
width: 24px;
margin-right:10px;
margin-right: 10px;
}
}
p{
font-size:14px;
p {
font-size: 14px;
}
}
}
.page-footer {
.footer-service {
width: 100%;
height: 188px;
background-color: #ffa25a;
position: relative;
.footer-bg-box {
overflow: hidden;
width: 100%;
height: 188px;
// background: url("../images/index/footer-bg.png") no-repeat
// center center;
// background-size: 100% 100%;
// background-size: contain;
.box-title {
height: 45px;
font-size: 16px;
font-family: PingFangSC-Medium, PingFang SC;
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-family: PingFangSC-Medium, PingFang SC;
font-weight: 500;
color: #ffa25a;
line-height: 48px;
@ -429,13 +465,13 @@
margin-right: 20px;
cursor: pointer;
}
.contact-btn {
width: 150px;
height: 48px;
border-radius: 8px;
border: 1px solid #ffffff;
font-size: 14px;
font-family: PingFangSC-Medium, PingFang SC;
font-weight: 500;
color: #ffffff;
line-height: 48px;
@ -445,23 +481,24 @@
}
}
}
.footer-opyright {
width: 100%;
height: 60px;
background: #ffffff;
text-align: center;
font-size: 12px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #828282;
line-height: 60px;
}
}
}
}
}
@media screen and (max-width: 468px) {
.page-index {
}
.page-warp {
.page-header {
.header-content {
@ -470,85 +507,96 @@
line-height: 34px;
font-weight: 600;
}
.header-title-one {
margin-top: 40px;
}
.header-tips {
font-size: 16px;
padding: 0 20px;
font-weight: 400;
line-height: 26px;
}
.login-buttom {
width: 150px;
height: 48px;
background: #ffa25a;
border-radius: 8px;
font-size: 18px;
font-family: PingFangSC-Medium, PingFang SC;
font-weight: 500;
color: #ffffff;
line-height: 48px;
text-align: center;
margin: 0 auto;
margin-top: 34px;
margin: 34px auto 0;
cursor: pointer;
}
}
}
.page-header-bottom{
.page-header-bottom {
position: relative;
background: url("../images/index/bg_bottom.svg") no-repeat;
background-color: #FFFFFF;
background: #FFFFFF url("../images/index/bg_bottom.svg") no-repeat;
background-size: 100%;
margin-bottom: 100px;
margin-top: -2px;
.page-header-bottoms{
.page-header-bottoms {
max-width: 1200px;
margin: auto;
top: 0;
left: 0;
right: 0;
img{
img {
display: block;
margin: auto;
width: 80%;
}
}
}
.page-main{
.page-main {
max-width: 1200px;
margin: auto;
.page-main-row{
.page-main-row {
margin-bottom: 150px;
}
.page-main-rows{
.page-main-rows {
margin-bottom: 140px;
}
.page-main-img{
img{
.page-main-img {
img {
width: 100%;
}
}
.page-main-imgs{
img{
.page-main-imgs {
img {
display: block;
width: 90%;
margin: auto;
}
}
.page-main-text{
.page-main-text {
padding-left: 20px;
padding-top: 80px;
h3{
h3 {
font-size: 32px;
font-weight: 500;
color: #333333;
line-height: 45px;
margin-bottom: 17px;
}
p{
p {
font-size: 18px;
font-weight: 400;
color: #828282;
@ -556,57 +604,59 @@
padding-right: 20px;
}
}
.page-main-texts{
.page-main-texts {
padding-top: 40px;
h3{
h3 {
display: flex;
align-items: center;
font-size: 24px;
img{
img {
width: 24px;
margin-right:10px;
margin-right: 10px;
}
}
p{
font-size:14px;
p {
font-size: 14px;
}
}
}
.page-footer {
.footer-service {
width: 100%;
height: 188px;
background-color: #ffa25a;
position: relative;
.footer-bg-box {
overflow: hidden;
width: 100%;
height: 188px;
// background: url("../images/index/footer-bg.png") no-repeat
// center center;
// background-size: 100% 100%;
// background-size: contain;
.box-title {
height: 45px;
font-size: 16px;
font-family: PingFangSC-Medium, PingFang SC;
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-family: PingFangSC-Medium, PingFang SC;
font-weight: 500;
color: #ffa25a;
line-height: 48px;
@ -614,13 +664,13 @@
margin-right: 20px;
cursor: pointer;
}
.contact-btn {
width: 150px;
height: 48px;
border-radius: 8px;
border: 1px solid #ffffff;
font-size: 14px;
font-family: PingFangSC-Medium, PingFang SC;
font-weight: 500;
color: #ffffff;
line-height: 48px;
@ -630,21 +680,23 @@
}
}
}
.footer-opyright {
width: 100%;
height: 60px;
background: #ffffff;
text-align: center;
font-size: 12px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #828282;
line-height: 60px;
}
}
}
}
}
.client-downloads{
.client-downloads {
position: fixed;
right: 20px;
bottom: 20px;

View File

@ -179,6 +179,10 @@
display: flex;
flex-direction: column;
padding: 0 !important;
h3 {
font-size: 16px;
margin-bottom: 15px;
}
.ivu-form {
flex: 1;
padding: 24px 40px;