566 lines
17 KiB
Vue
566 lines
17 KiB
Vue
|
|
<template>
|
|||
|
|
<div class="wrap">
|
|||
|
|
<el-row :gutter="20">
|
|||
|
|
<el-col :span="16">
|
|||
|
|
<el-row :gutter="20">
|
|||
|
|
<el-col :span="6">
|
|||
|
|
<div class="grid-content bg01">
|
|||
|
|
<div class="info-left"><i class="el-icon-alarm-clock"></i></div>
|
|||
|
|
<div class="info-right">
|
|||
|
|
<h4>今日待办</h4>
|
|||
|
|
<div class="conter"><span class="pull-right">件</span>{{todayRemind}}</div>
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
</el-col>
|
|||
|
|
<el-col :span="6">
|
|||
|
|
<div class="grid-content bg02">
|
|||
|
|
<div class="info-left"><i class="el-icon-timer"></i></div>
|
|||
|
|
<div class="info-right">
|
|||
|
|
<h4>所有待办</h4>
|
|||
|
|
<div class="conter"><span class="pull-right">件</span>{{allRemind}}</div>
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
</el-col>
|
|||
|
|
<el-col :span="6">
|
|||
|
|
<div class="grid-content bg03">
|
|||
|
|
<div class="info-left"><i class="el-icon-basketball"></i></div>
|
|||
|
|
<div class="info-right">
|
|||
|
|
<h4>逾期未办</h4>
|
|||
|
|
<div class="conter">{{overdueRemind}}</div>
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
</el-col>
|
|||
|
|
<el-col :span="6">
|
|||
|
|
<div class="grid-content bg04">
|
|||
|
|
<div class="info-left"><i class="el-icon-edit-outline"></i></div>
|
|||
|
|
<div class="info-right">
|
|||
|
|
<h4>历史已办</h4>
|
|||
|
|
<div class="conter"><span class="pull-right">件</span>{{historyRemind}}</div>
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
</el-col>
|
|||
|
|
|
|||
|
|
<el-col :span="24">
|
|||
|
|
<div class="table-block">
|
|||
|
|
<template>
|
|||
|
|
<el-table :data="listRemind" stripe style="width: 100%">
|
|||
|
|
<el-table-column prop="taskTitle" label="待办事件"></el-table-column>
|
|||
|
|
<el-table-column prop="content" label="事件内容"></el-table-column>
|
|||
|
|
<el-table-column label="待办日期" align="center" prop="createTime" width="120">
|
|||
|
|
<template slot-scope="scope">
|
|||
|
|
<span v-if="getTimesTamp(now) > getTimesTamp(scope.row.taskTime)"
|
|||
|
|
style="color: #1ab394">{{ parseTime(scope.row.taskTime, '{y}-{m}-{d}') }}</span>
|
|||
|
|
<span v-else style="color: #ff9900">{{ parseTime(scope.row.taskTime, '{y}-{m}-{d}') }}</span>
|
|||
|
|
</template>
|
|||
|
|
</el-table-column>
|
|||
|
|
<el-table-column prop="createBy" label="创建者" width="120"></el-table-column>
|
|||
|
|
<el-table-column label="创建时间" align="center" prop="createTime" width="120">
|
|||
|
|
<template slot-scope="scope">
|
|||
|
|
<span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d}') }}</span>
|
|||
|
|
</template>
|
|||
|
|
</el-table-column>
|
|||
|
|
|
|||
|
|
<el-table-column prop="name" label="办理操作" align="center" width="120">
|
|||
|
|
<template slot-scope="scope">
|
|||
|
|
<el-button
|
|||
|
|
size="mini"
|
|||
|
|
type="text"
|
|||
|
|
icon="el-icon-view"
|
|||
|
|
@click="handleLook(scope.row)"
|
|||
|
|
v-hasPermi="['oa:remind:edit']"
|
|||
|
|
>查看
|
|||
|
|
</el-button>
|
|||
|
|
<el-button
|
|||
|
|
size="mini"
|
|||
|
|
type="text"
|
|||
|
|
icon="el-icon-edit"
|
|||
|
|
@click="handleTask(scope.row)"
|
|||
|
|
v-hasPermi="['oa:remind:edit']"
|
|||
|
|
>办理
|
|||
|
|
</el-button>
|
|||
|
|
</template>
|
|||
|
|
</el-table-column>
|
|||
|
|
</el-table>
|
|||
|
|
</template>
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
</el-col>
|
|||
|
|
</el-row>
|
|||
|
|
|
|||
|
|
|
|||
|
|
</el-col>
|
|||
|
|
<el-col :span="8">
|
|||
|
|
<div class="demo-block">
|
|||
|
|
<el-calendar>
|
|||
|
|
<!-- 这里使用的是 2.5 slot 语法-->
|
|||
|
|
<template
|
|||
|
|
slot="dateCell"
|
|||
|
|
slot-scope="{date, data}">
|
|||
|
|
<!--自定义内容-->
|
|||
|
|
|
|||
|
|
<div class="calendar-day" style="text-align: center">
|
|||
|
|
<div>
|
|||
|
|
<span class="everyDay">{{ data.day.split('-').slice(2).join('-') }}</span>
|
|||
|
|
</div>
|
|||
|
|
<div v-for="item in brightDate">
|
|||
|
|
<div v-if="(parseTime(item.taskTime, '{y}-{m}-{d}')).indexOf(data.day) != -1" class="task-block">
|
|||
|
|
待办({{ item.count }})
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
</template>
|
|||
|
|
</el-calendar>
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
|
|||
|
|
</el-col>
|
|||
|
|
</el-row>
|
|||
|
|
|
|||
|
|
<!--查看事件弹出层-->
|
|||
|
|
<el-dialog :title="title" :visible.sync="openLook" width="30%" append-to-body>
|
|||
|
|
|
|||
|
|
<el-descriptions :column="4" border>
|
|||
|
|
<el-descriptions-item label="待办事件" :labelStyle="lableBg" span="2" width="80px">
|
|||
|
|
{{ lookRemind.taskTitle }}
|
|||
|
|
</el-descriptions-item>
|
|||
|
|
<el-descriptions-item label="待办时间" :labelStyle="lableBg" span="2">
|
|||
|
|
{{ parseTime(lookRemind.taskTime, '{y}-{m}-{d}') }}
|
|||
|
|
</el-descriptions-item>
|
|||
|
|
<el-descriptions-item label="事件内容" :labelStyle="lableBg" span="4">
|
|||
|
|
{{ lookRemind.content }}
|
|||
|
|
</el-descriptions-item>
|
|||
|
|
<el-descriptions-item label="创建者" :labelStyle="lableBg" span="2" width="80px">
|
|||
|
|
{{ lookRemind.createBy }}
|
|||
|
|
</el-descriptions-item>
|
|||
|
|
<el-descriptions-item label="创建时间" :labelStyle="lableBg" span="2">
|
|||
|
|
{{ parseTime(lookRemind.createTime, '{y}-{m}-{d}') }}
|
|||
|
|
</el-descriptions-item>
|
|||
|
|
<el-descriptions-item label="备注" :labelStyle="lableBg" span="4">
|
|||
|
|
{{ lookRemind.remark }}
|
|||
|
|
</el-descriptions-item>
|
|||
|
|
<el-descriptions-item :labelStyle="lableBg" span="4">
|
|||
|
|
<template slot="label">
|
|||
|
|
<i class="el-icon-paperclip"></i>
|
|||
|
|
附件
|
|||
|
|
</template>
|
|||
|
|
<!--附件-->
|
|||
|
|
<template v-if="lookRemind.accessory">
|
|||
|
|
<ImageOss :name="lookRemind.accessory"/>
|
|||
|
|
</template>
|
|||
|
|
<template v-else>
|
|||
|
|
<span style="color: #999999">暂无附件</span>
|
|||
|
|
</template>
|
|||
|
|
<!--附件-->
|
|||
|
|
</el-descriptions-item>
|
|||
|
|
|
|||
|
|
</el-descriptions>
|
|||
|
|
|
|||
|
|
</el-dialog>
|
|||
|
|
|
|||
|
|
<!--办理事件弹出层-->
|
|||
|
|
<el-dialog :title="title" :visible.sync="openTask" width="30%" append-to-body>
|
|||
|
|
<el-descriptions :column="4" border>
|
|||
|
|
<el-descriptions-item label="待办事件" :labelStyle="lableBg" span="2" width="80px">
|
|||
|
|
{{ form.taskTitle }}
|
|||
|
|
</el-descriptions-item>
|
|||
|
|
<el-descriptions-item label="待办时间" :labelStyle="lableBg" span="2">
|
|||
|
|
{{ parseTime(form.taskTime, '{y}-{m}-{d}') }}
|
|||
|
|
</el-descriptions-item>
|
|||
|
|
<el-descriptions-item label="事件内容" :labelStyle="lableBg" span="4">
|
|||
|
|
{{ form.content }}
|
|||
|
|
</el-descriptions-item>
|
|||
|
|
<el-descriptions-item label="创建者" :labelStyle="lableBg" span="2" width="80px">
|
|||
|
|
{{ form.createBy }}
|
|||
|
|
</el-descriptions-item>
|
|||
|
|
<el-descriptions-item label="创建时间" :labelStyle="lableBg" span="2">
|
|||
|
|
{{ parseTime(form.createTime, '{y}-{m}-{d}') }}
|
|||
|
|
</el-descriptions-item>
|
|||
|
|
<el-descriptions-item label="备注" :labelStyle="lableBg" span="4">
|
|||
|
|
{{ form.remark }}
|
|||
|
|
</el-descriptions-item>
|
|||
|
|
<el-descriptions-item :labelStyle="lableBg" span="4">
|
|||
|
|
<template slot="label">
|
|||
|
|
<i class="el-icon-paperclip"></i>
|
|||
|
|
附件
|
|||
|
|
</template>
|
|||
|
|
<!--附件-->
|
|||
|
|
<template v-if="form.accessory">
|
|||
|
|
<ImageOss :name="form.accessory"/>
|
|||
|
|
</template>
|
|||
|
|
<template v-else>
|
|||
|
|
<span style="color: #999999">暂无附件</span>
|
|||
|
|
</template>
|
|||
|
|
<!--附件-->
|
|||
|
|
</el-descriptions-item>
|
|||
|
|
|
|||
|
|
</el-descriptions>
|
|||
|
|
|
|||
|
|
<div class="form-back">
|
|||
|
|
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
|
|||
|
|
<el-form-item label="办理情况" prop="manage">
|
|||
|
|
<el-input v-model="form.manage" type="textarea" placeholder="请输入办理情况"/>
|
|||
|
|
</el-form-item>
|
|||
|
|
|
|||
|
|
</el-form>
|
|||
|
|
<span slot="footer" class="dialog-footer">
|
|||
|
|
<el-button type="primary" @click="submitForm">确 定</el-button>
|
|||
|
|
<el-button @click="cancelTask">取 消</el-button>
|
|||
|
|
</span>
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
</el-dialog>
|
|||
|
|
|
|||
|
|
<!--添加事件弹出层-->
|
|||
|
|
<el-dialog :title="title" :visible.sync="open" width="30%" append-to-body>
|
|||
|
|
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
|
|||
|
|
<el-form-item label="待办事件" prop="taskTitle">
|
|||
|
|
<el-input v-model="form.taskTitle" placeholder="请输入待办事件"/>
|
|||
|
|
</el-form-item>
|
|||
|
|
<el-form-item label="事件内容" prop="content">
|
|||
|
|
<el-input v-model="form.content" type="textarea" placeholder="请输入内容"/>
|
|||
|
|
</el-form-item>
|
|||
|
|
<el-form-item label="办理时间" prop="taskTime">
|
|||
|
|
<el-date-picker clearable
|
|||
|
|
v-model="form.taskTime"
|
|||
|
|
type="date"
|
|||
|
|
value-format="yyyy-MM-dd HH:mm:ss"
|
|||
|
|
placeholder="请选择办理时间">
|
|||
|
|
</el-date-picker>
|
|||
|
|
</el-form-item>
|
|||
|
|
<el-form-item label="附件" prop="accessory">
|
|||
|
|
<file-upload v-model="form.accessory"/>
|
|||
|
|
</el-form-item>
|
|||
|
|
<el-form-item label="备注" prop="remark">
|
|||
|
|
<el-input v-model="form.remark" placeholder="请输入备注"/>
|
|||
|
|
</el-form-item>
|
|||
|
|
</el-form>
|
|||
|
|
<span slot="footer" class="dialog-footer">
|
|||
|
|
<el-button type="primary" @click="submitForm">确 定</el-button>
|
|||
|
|
<el-button @click="cancel">取 消</el-button>
|
|||
|
|
</span>
|
|||
|
|
</el-dialog>
|
|||
|
|
|
|||
|
|
<div class="footer-bottom">
|
|||
|
|
<el-button type="primary" @click="addForm">添加事件</el-button>
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
</div>
|
|||
|
|
</template>
|
|||
|
|
|
|||
|
|
<script>
|
|||
|
|
import {addRemind, getRemind, getRemindList, getRemindCount, updateRemind} from "@/api/oa/remind";
|
|||
|
|
|
|||
|
|
export default {
|
|||
|
|
name: "index",
|
|||
|
|
data() {
|
|||
|
|
return {
|
|||
|
|
now: new Date(),
|
|||
|
|
brightDate: [],
|
|||
|
|
open: false,
|
|||
|
|
openLook: false,
|
|||
|
|
openTask: false,
|
|||
|
|
title: '',
|
|||
|
|
//详情lable背景
|
|||
|
|
lableBg: "background: #f0f9eb; width:120px; text-align: center;",
|
|||
|
|
// 表单参数
|
|||
|
|
form: {},
|
|||
|
|
lookRemind: {},
|
|||
|
|
//今日待办
|
|||
|
|
todayRemind: 0,
|
|||
|
|
//所有待办
|
|||
|
|
allRemind: 0,
|
|||
|
|
//逾期未办
|
|||
|
|
overdueRemind: 0,
|
|||
|
|
//历史已经办
|
|||
|
|
historyRemind: 0,
|
|||
|
|
// 表单校验
|
|||
|
|
rules: {
|
|||
|
|
taskTitle: [
|
|||
|
|
{required: true, message: "提醒名称不能为空", trigger: "blur"}
|
|||
|
|
],
|
|||
|
|
content: [
|
|||
|
|
{required: true, message: "事件内容不能为空", trigger: "blur"}
|
|||
|
|
],
|
|||
|
|
taskTime: [
|
|||
|
|
{required: true, message: "办理时间不能为空", trigger: "blur"}
|
|||
|
|
],
|
|||
|
|
},
|
|||
|
|
listRemind: [],
|
|||
|
|
// 查询参数
|
|||
|
|
queryParams: {},
|
|||
|
|
// 表单重置
|
|||
|
|
reset() {
|
|||
|
|
this.form = {
|
|||
|
|
remindId: undefined,
|
|||
|
|
taskTitle: undefined,
|
|||
|
|
content: undefined,
|
|||
|
|
taskTime: undefined,
|
|||
|
|
taskStatus: undefined,
|
|||
|
|
accessory: undefined,
|
|||
|
|
remark: undefined,
|
|||
|
|
createBy: undefined,
|
|||
|
|
createTime: undefined,
|
|||
|
|
updateBy: undefined,
|
|||
|
|
updateTime: undefined
|
|||
|
|
};
|
|||
|
|
this.resetForm("form");
|
|||
|
|
},
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
created() {
|
|||
|
|
this.getList();
|
|||
|
|
this.getNowRamind();
|
|||
|
|
this.getAllRamind();
|
|||
|
|
this.getOverdueRamind()
|
|||
|
|
this.getHistoryRamind();
|
|||
|
|
},
|
|||
|
|
methods: {
|
|||
|
|
/** 查询事件提醒列表 */
|
|||
|
|
getList() {
|
|||
|
|
this.loading = true;
|
|||
|
|
let data = {
|
|||
|
|
taskStatus: '0',
|
|||
|
|
}
|
|||
|
|
//获取待办事件列表
|
|||
|
|
getRemindList(data).then(response => {
|
|||
|
|
this.listRemind = response.data;
|
|||
|
|
//日历待办:遍历去重、增加属性字段count(遇到重复+1)
|
|||
|
|
let arr = response.data;
|
|||
|
|
// 使用reduce方法遍历数组,累计相同id的次数,并构建新数组
|
|||
|
|
let newArr = arr.reduce((acc, current) => {
|
|||
|
|
let duplicateCount = acc.filter(item => this.parseTime(item.taskTime, '{y}-{m}-{d}') === this.parseTime(current.taskTime, '{y}-{m}-{d}')).length;
|
|||
|
|
if (duplicateCount === 0) {
|
|||
|
|
acc.push({...current, count: 1});
|
|||
|
|
} else {
|
|||
|
|
// 找到重复对象并加1
|
|||
|
|
let index = acc.findIndex(item => this.parseTime(item.taskTime, '{y}-{m}-{d}') === this.parseTime(current.taskTime, '{y}-{m}-{d}'));
|
|||
|
|
acc[index].count = acc[index].count + 1;
|
|||
|
|
}
|
|||
|
|
return acc;
|
|||
|
|
}, []);
|
|||
|
|
this.brightDate = newArr;
|
|||
|
|
|
|||
|
|
this.loading = false;
|
|||
|
|
});
|
|||
|
|
},
|
|||
|
|
/**今日待办事件统计**/
|
|||
|
|
getNowRamind(){
|
|||
|
|
this.queryParams.params = {};
|
|||
|
|
this.queryParams.taskStatus = '0'
|
|||
|
|
this.queryParams.params["beginTime"] = this.parseTime(this.now, '{y}-{m}-{d}') + ' 00:00:00';
|
|||
|
|
this.queryParams.params["endTime"] = this.parseTime(this.now, '{y}-{m}-{d}') + ' 23:59:59';
|
|||
|
|
getRemindCount(this.queryParams).then(response => {
|
|||
|
|
this.todayRemind = response.data
|
|||
|
|
})
|
|||
|
|
},
|
|||
|
|
|
|||
|
|
/**逾期未办事件统计**/
|
|||
|
|
getOverdueRamind(){
|
|||
|
|
this.queryParams.params = {};
|
|||
|
|
this.queryParams.taskStatus = '0'
|
|||
|
|
this.queryParams.params["beginTime"] = this.parseTime(new Date('2020-01-01'), '{y}-{m}-{d}') + ' 00:00:00';
|
|||
|
|
this.queryParams.params["endTime"] = this.parseTime(this.now, '{y}-{m}-{d}') + ' 23:59:59';
|
|||
|
|
getRemindCount(this.queryParams).then(response => {
|
|||
|
|
this.overdueRemind = response.data
|
|||
|
|
})
|
|||
|
|
},
|
|||
|
|
|
|||
|
|
/**所有待办事件统计**/
|
|||
|
|
getAllRamind(){
|
|||
|
|
this.queryParams.params = {};
|
|||
|
|
this.queryParams.taskStatus = '0'
|
|||
|
|
getRemindCount(this.queryParams).then(response => {
|
|||
|
|
this.allRemind = response.data
|
|||
|
|
})
|
|||
|
|
},
|
|||
|
|
|
|||
|
|
/**已办事件统计**/
|
|||
|
|
getHistoryRamind(){
|
|||
|
|
this.queryParams.params = {};
|
|||
|
|
this.queryParams.taskStatus = '1'
|
|||
|
|
getRemindCount(this.queryParams).then(response => {
|
|||
|
|
this.historyRemind = response.data
|
|||
|
|
})
|
|||
|
|
},
|
|||
|
|
|
|||
|
|
/**添加事件按钮操作**/
|
|||
|
|
addForm() {
|
|||
|
|
this.reset();
|
|||
|
|
this.open = true;
|
|||
|
|
},
|
|||
|
|
/** 查看按钮操作 */
|
|||
|
|
handleLook(row) {
|
|||
|
|
this.loading = true;
|
|||
|
|
this.reset();
|
|||
|
|
const remindId = row.remindId || this.ids
|
|||
|
|
getRemind(remindId).then(response => {
|
|||
|
|
this.loading = false;
|
|||
|
|
this.lookRemind = response.data;
|
|||
|
|
this.openLook = true;
|
|||
|
|
this.title = "查看待办详情";
|
|||
|
|
});
|
|||
|
|
},
|
|||
|
|
|
|||
|
|
/** 办理按钮操作 */
|
|||
|
|
handleTask(row) {
|
|||
|
|
this.loading = true;
|
|||
|
|
this.reset();
|
|||
|
|
const remindId = row.remindId || this.ids
|
|||
|
|
getRemind(remindId).then(response => {
|
|||
|
|
this.loading = false;
|
|||
|
|
this.form = response.data;
|
|||
|
|
this.openTask = true;
|
|||
|
|
this.title = "事件办理";
|
|||
|
|
|
|||
|
|
});
|
|||
|
|
},
|
|||
|
|
|
|||
|
|
/** 提交按钮 */
|
|||
|
|
submitForm() {
|
|||
|
|
this.$refs["form"].validate(valid => {
|
|||
|
|
if (valid) {
|
|||
|
|
this.buttonLoading = true;
|
|||
|
|
if (this.form.remindId != null) {
|
|||
|
|
if (this.getTimesTamp(this.now) > this.getTimesTamp(this.form.taskTime) && this.form.manage != null) {
|
|||
|
|
console.log("执行任务办理")
|
|||
|
|
this.form.taskStatus = '1';
|
|||
|
|
updateRemind(this.form).then(response => {
|
|||
|
|
this.$modal.msgSuccess("修改成功");
|
|||
|
|
this.openTask = false;
|
|||
|
|
this.getList();
|
|||
|
|
}).finally(() => {
|
|||
|
|
this.buttonLoading = false;
|
|||
|
|
});
|
|||
|
|
} else {
|
|||
|
|
this.$modal.msgWarning("办理情况不可为空!或任务时间未到!")
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
} else {
|
|||
|
|
addRemind(this.form).then(response => {
|
|||
|
|
this.$modal.msgSuccess("新增成功");
|
|||
|
|
this.open = false;
|
|||
|
|
this.getList();
|
|||
|
|
}).finally(() => {
|
|||
|
|
this.buttonLoading = false;
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//执行办理统计
|
|||
|
|
this.getNowRamind();
|
|||
|
|
this.getAllRamind();
|
|||
|
|
this.getOverdueRamind()
|
|||
|
|
this.getHistoryRamind();
|
|||
|
|
}
|
|||
|
|
});
|
|||
|
|
},
|
|||
|
|
|
|||
|
|
getTimesTamp(date) {
|
|||
|
|
return new Date(date).getTime()
|
|||
|
|
|
|||
|
|
},
|
|||
|
|
|
|||
|
|
// 取消按钮
|
|||
|
|
cancel() {
|
|||
|
|
this.open = false;
|
|||
|
|
this.reset();
|
|||
|
|
},
|
|||
|
|
cancelTask() {
|
|||
|
|
this.openTask = false;
|
|||
|
|
this.reset();
|
|||
|
|
},
|
|||
|
|
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
</script>
|
|||
|
|
|
|||
|
|
<style scoped>
|
|||
|
|
.wrap {
|
|||
|
|
padding: 30px;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
.grid-content {
|
|||
|
|
display: flex;
|
|||
|
|
border-radius: 8px;
|
|||
|
|
min-height: 36px;
|
|||
|
|
color: #f5f5f5;
|
|||
|
|
padding: 12px;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.info-left {
|
|||
|
|
height: 100px;
|
|||
|
|
width: 100px;
|
|||
|
|
font-size: 88px;
|
|||
|
|
text-align: center
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.info-right {
|
|||
|
|
margin-left: 15px;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.info-right h4 {
|
|||
|
|
font-size: 18px;
|
|||
|
|
color: #f5f5f5;
|
|||
|
|
margin: 12px 0 10px 0;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.info-right .conter {
|
|||
|
|
font-size: 45px;
|
|||
|
|
color: #ffffff
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.info-right .conter span {
|
|||
|
|
font-size: 16px;
|
|||
|
|
margin-top: 24px;
|
|||
|
|
color: #f5f5f5
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.bg01 {
|
|||
|
|
background-color: #1ab394
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.bg02 {
|
|||
|
|
background-color: #409EFF
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.bg03 {
|
|||
|
|
background-color: #F56C6C
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.bg04 {
|
|||
|
|
background-color: #E6A23C
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.form-back {
|
|||
|
|
margin-top: 20px;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.table-block {
|
|||
|
|
border: 1px solid #ebebeb;
|
|||
|
|
border-bottom: 0;
|
|||
|
|
border-radius: 6px;
|
|||
|
|
transition: .2s;
|
|||
|
|
margin-top: 20px;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.demo-block {
|
|||
|
|
border: 1px solid #ebebeb;
|
|||
|
|
border-radius: 6px;
|
|||
|
|
transition: .2s;
|
|||
|
|
padding-bottom: 8px;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.task-block {
|
|||
|
|
color: #1ab394;
|
|||
|
|
font-size: 14px;
|
|||
|
|
margin-top: 20px
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.footer-bottom {
|
|||
|
|
margin: 24px 0;
|
|||
|
|
}
|
|||
|
|
</style>
|