|
@@ -1,7 +1,15 @@
|
|
|
<template>
|
|
|
- <div class="container">
|
|
|
- <save-form inline :model="search" @submit="FetchDetail" @reset="reset" saveKey="/main/main/baseInfo">
|
|
|
- <el-form-item prop="year">
|
|
|
+ <div
|
|
|
+ class="container"
|
|
|
+ >
|
|
|
+ <save-form
|
|
|
+ inline
|
|
|
+ :model="search"
|
|
|
+ @submit="FetchDetail"
|
|
|
+ @reset="reset"
|
|
|
+ saveKey="/main/main/baseInfo"
|
|
|
+ >
|
|
|
+ <!-- <el-form-item prop="year">
|
|
|
<el-date-picker
|
|
|
v-model="search.dates"
|
|
|
type="daterange"
|
|
@@ -12,7 +20,7 @@
|
|
|
end-placeholder="结束日期"
|
|
|
:picker-options="pickerOptions">
|
|
|
</el-date-picker>
|
|
|
- </el-form-item>
|
|
|
+ </el-form-item> -->
|
|
|
<el-form-item prop="organId">
|
|
|
<el-select
|
|
|
clearable
|
|
@@ -20,59 +28,75 @@
|
|
|
placeholder="请选择分部"
|
|
|
v-model="search.organId"
|
|
|
>
|
|
|
- <el-option v-for="(item,index) in selects.branchs"
|
|
|
+ <el-option
|
|
|
+ v-for="(item, index) in selects.branchs"
|
|
|
:key="index"
|
|
|
:label="item.name"
|
|
|
- :value="item.id"></el-option>
|
|
|
+ :value="item.id"
|
|
|
+ ></el-option>
|
|
|
</el-select>
|
|
|
</el-form-item>
|
|
|
<el-button native-type="submit" type="primary">搜索</el-button>
|
|
|
<el-button native-type="reset" type="danger">重置</el-button>
|
|
|
</save-form>
|
|
|
- <el-alert type="info" :closable="false" style="margin-bottom: 20px;">
|
|
|
+ <!-- <el-alert type="info" :closable="false" style="margin-bottom: 20px;">
|
|
|
每日0点更新前一日数据
|
|
|
- </el-alert>
|
|
|
- <empty desc="暂无统计数据" v-if="isEmpty"/>
|
|
|
+ </el-alert> -->
|
|
|
+ <!-- 这里显示选项卡 -->
|
|
|
+ <empty desc="暂无统计数据" v-if="isEmpty" />
|
|
|
<el-row v-else class="rows" :gutter="20">
|
|
|
- <el-col :xs="24" :sm="24" :md="12">
|
|
|
- <student :data="dataInfo"/>
|
|
|
+ <el-col :xs="24" :sm="24" :md="24" :lg="9" :xl="9">
|
|
|
+ <studentbaseinfo :data="dataInfo" />
|
|
|
</el-col>
|
|
|
- <el-col :xs="24" :sm="24" :md="12" :xl="12">
|
|
|
- <management :data="dataInfo"/>
|
|
|
+ <el-col :xs="24" :sm="24" :md="24" :lg="6" :xl="6">
|
|
|
+ <operate :data="dataInfo" />
|
|
|
</el-col>
|
|
|
- <el-col :xs="24" :sm="24" :md="12">
|
|
|
- <business :data="dataInfo"/>
|
|
|
+ <el-col :xs="24" :sm="24" :md="24" :lg="9" :xl="9">
|
|
|
+ <hrdata :data="dataInfo" />
|
|
|
</el-col>
|
|
|
- <el-col :xs="24" :sm="24" :md="12">
|
|
|
- <curriculum :data="dataInfo"/>
|
|
|
+ <el-col :xs="24" :sm="24" :md="24" :lg="12" :xl="12">
|
|
|
+ <surplusCourse :data="dataInfo" />
|
|
|
</el-col>
|
|
|
- <el-col :xs="24" :sm="24" :md="12">
|
|
|
- <operate :data="dataInfo"/>
|
|
|
+ <el-col :xs="24" :sm="24" :md="24" :lg="12" :xl="12">
|
|
|
+ <useCourse :data="dataInfo" />
|
|
|
</el-col>
|
|
|
- <el-col :xs="24" :sm="24" :md="12">
|
|
|
- <hrdata :data="dataInfo"/>
|
|
|
+ <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="12">
|
|
|
+ <management :data="dataInfo" :search="search" @resetDate="resetDate" />
|
|
|
+ </el-col>
|
|
|
+ <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="12">
|
|
|
+ <business :data="dataInfo" :search="search" @resetDate="resetDate" />
|
|
|
</el-col>
|
|
|
+ <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
|
|
|
+ <curriculum :data="dataInfo" :search="search" @resetDate="resetDate" />
|
|
|
+ </el-col>
|
|
|
+ <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
|
|
|
+ <student :data="dataInfo" :search="search" @resetDate="resetDate" />
|
|
|
+ </el-col>
|
|
|
+
|
|
|
+
|
|
|
+ <!-- <el-col :xs="24" :sm="24" :md="12">
|
|
|
+ <operate :data="dataInfo"/>
|
|
|
+ </el-col> -->
|
|
|
+ <!-- <el-col :xs="24" :sm="24" :md="12">
|
|
|
+ <hrdata :data="dataInfo"/>
|
|
|
+ </el-col> -->
|
|
|
</el-row>
|
|
|
</div>
|
|
|
</template>
|
|
|
<script>
|
|
|
-import { getIndex } from '../api'
|
|
|
-import operate from './operate'
|
|
|
-import business from './business'
|
|
|
-import management from './management'
|
|
|
-import hrdata from './hr'
|
|
|
-import student from './student'
|
|
|
-import curriculum from './curriculum'
|
|
|
-import { getTimes } from '@/utils'
|
|
|
-import { descs } from '../constant'
|
|
|
+import { getIndex } from "../api";
|
|
|
+import operate from "./operate";
|
|
|
+import business from "./business";
|
|
|
+import management from "./management";
|
|
|
+import hrdata from "./hr";
|
|
|
+import student from "./student";
|
|
|
+import curriculum from "./curriculum";
|
|
|
+import studentbaseinfo from "./studentBaseinfo";
|
|
|
+import surplusCourse from "./surplusCourse";
|
|
|
+import useCourse from "./useCourse";
|
|
|
+import { getTimes } from "@/utils";
|
|
|
+import { descs } from "../constant";
|
|
|
|
|
|
-const getInitDate = () => {
|
|
|
- const end = new Date();
|
|
|
- const start = new Date();
|
|
|
- end.setTime(end.getTime() - 3600 * 1000 * 24 * 1);
|
|
|
- start.setTime(start.getTime() - 3600 * 1000 * 24 * 8);
|
|
|
- return [start, end]
|
|
|
-}
|
|
|
export default {
|
|
|
components: {
|
|
|
operate,
|
|
@@ -81,104 +105,145 @@ export default {
|
|
|
hrdata,
|
|
|
student,
|
|
|
curriculum,
|
|
|
+ studentbaseinfo,
|
|
|
+ surplusCourse,
|
|
|
+ useCourse,
|
|
|
},
|
|
|
- data () {
|
|
|
+ data() {
|
|
|
return {
|
|
|
pickerOptions: {
|
|
|
- firstDayOfWeek: 1,
|
|
|
- disabledDate: a => {
|
|
|
- const { dayjs } = this.$helpers
|
|
|
- return dayjs(a).isAfter(dayjs().subtract(1, 'day'))
|
|
|
+ disabledDate: (a) => {
|
|
|
+ const { dayjs } = this.$helpers;
|
|
|
+ return dayjs(a).isAfter(dayjs().subtract(1, "day"));
|
|
|
},
|
|
|
- shortcuts: [{
|
|
|
- text: '最近一周',
|
|
|
- onClick(picker) {
|
|
|
- const end = new Date();
|
|
|
- const start = new Date();
|
|
|
- end.setTime(end.getTime() - 3600 * 1000 * 24 * 1);
|
|
|
- start.setTime(start.getTime() - 3600 * 1000 * 24 * 8);
|
|
|
- picker.$emit('pick', [start, end]);
|
|
|
- }
|
|
|
- }, {
|
|
|
- text: '最近一个月',
|
|
|
- onClick(picker) {
|
|
|
- const end = new Date();
|
|
|
- const start = new Date();
|
|
|
- end.setTime(end.getTime() - 3600 * 1000 * 24 * 1);
|
|
|
- start.setTime(start.getTime() - 3600 * 1000 * 24 * 31);
|
|
|
- picker.$emit('pick', [start, end]);
|
|
|
- }
|
|
|
- }, {
|
|
|
- text: '最近三个月',
|
|
|
- onClick(picker) {
|
|
|
- const end = new Date();
|
|
|
- const start = new Date();
|
|
|
- end.setTime(end.getTime() - 3600 * 1000 * 24 * 1);
|
|
|
- start.setTime(start.getTime() - 3600 * 1000 * 24 * 91);
|
|
|
- picker.$emit('pick', [start, end]);
|
|
|
- }
|
|
|
- }]
|
|
|
+ shortcuts: [
|
|
|
+ {
|
|
|
+ text: "最近一周",
|
|
|
+ onClick(picker) {
|
|
|
+ const end = new Date();
|
|
|
+ const start = new Date();
|
|
|
+ end.setTime(end.getTime() - 3600 * 1000 * 24 * 1);
|
|
|
+ start.setTime(start.getTime() - 3600 * 1000 * 24 * 8);
|
|
|
+ picker.$emit("pick", [start, end]);
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ text: "最近一个月",
|
|
|
+ onClick(picker) {
|
|
|
+ const end = new Date();
|
|
|
+ const start = new Date();
|
|
|
+ end.setTime(end.getTime() - 3600 * 1000 * 24 * 1);
|
|
|
+ start.setTime(start.getTime() - 3600 * 1000 * 24 * 31);
|
|
|
+ picker.$emit("pick", [start, end]);
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ text: "最近三个月",
|
|
|
+ onClick(picker) {
|
|
|
+ const end = new Date();
|
|
|
+ const start = new Date();
|
|
|
+ end.setTime(end.getTime() - 3600 * 1000 * 24 * 1);
|
|
|
+ start.setTime(start.getTime() - 3600 * 1000 * 24 * 91);
|
|
|
+ picker.$emit("pick", [start, end]);
|
|
|
+ },
|
|
|
+ },
|
|
|
+ ],
|
|
|
},
|
|
|
search: {
|
|
|
- dates: [],
|
|
|
- organId: null
|
|
|
+ dates:[],
|
|
|
+ organId: null,
|
|
|
},
|
|
|
dataInfo: {},
|
|
|
business: {},
|
|
|
- }
|
|
|
+ loading: false,
|
|
|
+ };
|
|
|
},
|
|
|
computed: {
|
|
|
isEmpty() {
|
|
|
- return !Object.keys(this.dataInfo).length
|
|
|
- }
|
|
|
+ return !Object.keys(this.dataInfo).length;
|
|
|
+ },
|
|
|
},
|
|
|
- created(){
|
|
|
- this.$set(this.search, 'dates', getInitDate())
|
|
|
+ created() {
|
|
|
+
|
|
|
+
|
|
|
},
|
|
|
- mounted () {
|
|
|
- this.FetchDetail()
|
|
|
- // this.reset() 和卧龙大佬商量过
|
|
|
- this.$store.dispatch('setBranchs')
|
|
|
+ mounted() {
|
|
|
+ this.$set(this.search, "dates", this.getInitDate());
|
|
|
+ this.FetchDetail();
|
|
|
+ this.$store.dispatch("setBranchs");
|
|
|
},
|
|
|
methods: {
|
|
|
+ getInitDate() {
|
|
|
+ const end = this.$helpers
|
|
|
+ .dayjs(new Date())
|
|
|
+ .subtract(1, "day")
|
|
|
+ .format("YYYY-MM-DD");
|
|
|
+ const start = this.$helpers
|
|
|
+ .dayjs(new Date())
|
|
|
+ .subtract(1, "day")
|
|
|
+ .set("date", 1)
|
|
|
+ .format("YYYY-MM-DD");
|
|
|
+ return [start, end];
|
|
|
+ },
|
|
|
reset() {
|
|
|
- this.$set(this.search, 'dates', getInitDate())
|
|
|
- this.$set(this.search, 'organId', null)
|
|
|
- this.FetchDetail()
|
|
|
+ this.$set(this.search, "dates", this.getInitDate());
|
|
|
+ this.$set(this.search, "organId", null);
|
|
|
+ this.FetchDetail();
|
|
|
},
|
|
|
async FetchDetail() {
|
|
|
- const data = {}
|
|
|
+ const data = {};
|
|
|
try {
|
|
|
- const {dates, ...rest} = this.search
|
|
|
+ const { dates, ...rest } = this.search;
|
|
|
const res = await getIndex({
|
|
|
...rest,
|
|
|
- ...getTimes(dates, ['startDate', 'endDate'])
|
|
|
- })
|
|
|
+ ...getTimes(dates, ["startDate", "endDate"]),
|
|
|
+ });
|
|
|
for (const item of res.data) {
|
|
|
data[item.dataType] = {
|
|
|
...item,
|
|
|
- desc: descs[item.dataType]
|
|
|
- }
|
|
|
+ desc: descs[item.dataType],
|
|
|
+ };
|
|
|
}
|
|
|
} catch (error) {
|
|
|
- console.log(error)
|
|
|
+ console.log(error);
|
|
|
}
|
|
|
- this.dataInfo = data
|
|
|
+ this.dataInfo = data;
|
|
|
},
|
|
|
- }
|
|
|
-}
|
|
|
+ resetDate(data) {
|
|
|
+ this.dataInfo = data;
|
|
|
+ },
|
|
|
+ },
|
|
|
+};
|
|
|
</script>
|
|
|
<style lang="less" scoped>
|
|
|
- .container{
|
|
|
- overflow: hidden;
|
|
|
- .rows{
|
|
|
- >div{
|
|
|
- margin-bottom: 20px;
|
|
|
- }
|
|
|
- }
|
|
|
- /deep/ .el-card__body .statistic {
|
|
|
- margin-bottom: 15px;
|
|
|
- padding: 0;
|
|
|
+.container {
|
|
|
+ overflow: hidden;
|
|
|
+ .rows {
|
|
|
+ > div {
|
|
|
+ margin-bottom: 20px;
|
|
|
}
|
|
|
}
|
|
|
+ /deep/ .el-card__body .statistic {
|
|
|
+ margin-bottom: 15px;
|
|
|
+ padding: 0;
|
|
|
+ }
|
|
|
+}
|
|
|
+/deep/.el-card__header {
|
|
|
+ padding: 0 20px !important;
|
|
|
+}
|
|
|
+</style>
|
|
|
+<style lang="scss">
|
|
|
+.box {
|
|
|
+ display: flex;
|
|
|
+ flex-direction: row;
|
|
|
+ align-items: center;
|
|
|
+ height: 55px;
|
|
|
+ line-height: 55px;
|
|
|
+ .shape {
|
|
|
+ margin-right: 10px;
|
|
|
+ height: 18px;
|
|
|
+ width: 4px;
|
|
|
+ background-color: #14928a;
|
|
|
+ }
|
|
|
+}
|
|
|
</style>
|