运行数据中心接口

init
zhusiyu 3 years ago
parent a435a3e82b
commit f047cce4e3

@ -1,6 +1,9 @@
<template>
<CommonBox title="考勤情况" class="attendance-box-style">
<a-table :columns="columns" :data-source="tableData" :pagination="false" rowKey="index" :customRow="getCustomRow" />
<a-spin :spinning="spinning">
<a-table :columns="columns" :data-source="tableData" :pagination="false" rowKey="index"
:customRow="getCustomRow"/>
</a-spin>
</CommonBox>
</template>
<script>
@ -8,10 +11,12 @@
* 学生教师考勤情况
* */
import CommonBox from '../../secondPages/commonBox.vue';
import {Table} from 'ant-design-vue';
export default{
data(){
import {Table, Spin} from 'ant-design-vue';
export default {
data() {
return {
spinning: true,
columns: [
{
title: '角色',
@ -21,32 +26,32 @@
},
{
title: '总数',
dataIndex: 'totalNum',
key: 'totalNum',
dataIndex: 'yingdao',
key: 'yingdao',
align: "center",
},
{
title: '实到',
dataIndex: 'realNum',
key: 'realNum',
dataIndex: 'yidao',
key: 'yidao',
align: "center",
},
{
title: '迟到',
dataIndex: 'lateNum',
key: 'lateNum',
dataIndex: 'late',
key: 'late',
align: "center",
},
{
title: '请假',
dataIndex: 'leaveNum',
key: 'leaveNum',
dataIndex: 'qingjia',
key: 'qingjia',
align: "center",
},
{
title: '公出',
dataIndex: 'publicNum',
key: 'publicNum',
dataIndex: 'gongchu',
key: 'gongchu',
align: "center",
},
{
@ -75,33 +80,103 @@
},
],
tableData: [
{index:"教职工",totalNum:589,realNum:580,lateNum:3,leaveNum:1,publicNum:3,trusteeshipNum:'--',feverNum:0,quarantineNum:0,vaccinesNum:589},
{index:"学生",totalNum:2850,realNum:2830,lateNum:8,leaveNum:10,publicNum:'--',trusteeshipNum:568,feverNum:0,quarantineNum:0,vaccinesNum:2215}
{
index: "教职工",
trusteeshipNum: '--',
feverNum: '--',
quarantineNum: '--',
vaccinesNum: '--',
yingdao: 0,
yidao: 0,
qingjia: 0,
late: 0,
gongchu: 0,
},
]
}
},
methods:{
mounted() {
this.getDataexReport()
},
methods: {
getDataexReport: function () {
let param = {
"access_token": "system_01##20200102030405##a6ce11eab94df48a6ce11eab",
"query": {
"query_id": "query_xingzheng_kaoqin",
"query_param": [
"20220405",
this.BaseConfig.person_info_my.bureau_id + ""
]
},
"query_cache": 0,
"query_count": [],
"query_format": "json",
"query_group": []
}
// this.spinning = true;
this.DataexReportInterface.callInterface([{
params: param,
method: "post",
}], (result) => {
//console.log('', result)
this.spinning = false;
if (result[0].data.success) {
let res = JSON.parse(result[0].data.result);
if (res && res.length > 0) {
this.tableData[0].yingdao = res[0].yingdao ? res[0].yingdao : 0
this.tableData[0].yidao = res[0].yidao ? res[0].yidao : 0
this.tableData[0].late = res[0].late ? res[0].late : 0
this.tableData[0].qingjia = res[0].qingjia ? res[0].qingjia : 0
this.tableData[0].gongchu = res[0].gongchu ? res[0].gongchu : 0
}
}
})
},
// getDailySummaryForOrg() {
// this.spinning = true
// let param = {
// bureau_id: this.BaseConfig.person_info_my.bureau_id, //ID
// dept_ids: '',
// }
// this.InterfaceConfig.callInterface([{
// url: InterConfig.getDailySummaryForOrg.url,
// params: param,
// method: InterConfig.getDailySummaryForOrg.method,
// isTestLogin: InterConfig.getDailySummaryForOrg.isTestLogin,
// }], (result) => {
// console.log('', result)
// this.spinning = false
// if (result[0].data.code === 2000) {
// let res = result[0].data.data
// this.tableData = res.attendance
// }
// }
// )
// },
getCustomRow: function (record) {
let obj = {style: {}};
if (record.index === '学生') {
obj['style']['color'] = '#fbc637';
}
if (record.index === '教职工') {
obj['style']['color'] = '#00ffff';
}
// if (record.index === '') {
// obj['style']['color'] = '#fbc637';
// }
// if (record.index === '') {
obj['style']['color'] = '#00ffff';
// }
return obj;
},
},
components: {
CommonBox,
ATable: Table
ATable: Table,
ASpin: Spin,
}
}
</script>
<style scoped lang="scss">
.attendance-box-style {
width: 100%;
height: 240px !important;
height: 250px !important;
display: flex;
justify-content: center;
align-items: center;
@ -118,10 +193,10 @@
border: 1px solid #4e9fb4;
}
}
/deep/ .ant-table-thead > tr > th, .ant-table-tbody > tr > td{
padding: 10px !important;
}
/deep/ .ant-table-tbody > tr > td{
/*/deep/ .ant-table-thead > tr > th, /deep/ .ant-table-tbody > tr > td {*/
/*padding: 10px 16px !important;*/
/*}*/
/deep/ .ant-table-tbody > tr > td {
border: 1px solid #4e9fb4;
}
}

@ -24,24 +24,27 @@
* */
import CommonBox from '../../secondPages/commonBox.vue';
import {Tabs} from 'ant-design-vue';
import WeekCalendar from './calendar/weekCalendar.vue';
import SchoolCalendar from './calendar/schoolCalendar.vue';
export default{
data(){
import WeekCalendar from './calendar/weekCalendarFromNew.vue';
import SchoolCalendar from './calendar/schoolCalendarFromNew.vue';
export default {
data() {
return {
selectType: 1,//1 2
paneKey:1,
paneKey: 1,
}
},
mounted(){
mounted() {
this.changeType();
},
methods: {
changeType:function () {
this.timing = setInterval(() => {
let paneKey = this.paneKey === 1?2:1;
this.typeChange(paneKey)
}, 12000)
changeType: function () {
let paneKey = this.paneKey === 1 ? 2 : 1;
this.typeChange(paneKey)
// this.timing = setInterval(() => {
// let paneKey = this.paneKey === 1?2:1;
// this.typeChange(paneKey)
// }, 12000)
},
typeChange: function (type) {
if (this.selectType !== type) {
@ -61,6 +64,7 @@
</script>
<style scoped lang="scss">
@import "../../../assets/scss/style";
.school-calendar-style {
width: 100%;
height: 400px !important;
@ -88,11 +92,11 @@
cursor: default;
}
}
.school-calendar-content-style{
.school-calendar-content-style {
width: 100%;
/*min-height: 350px;*/
margin-top: 10px;
/deep/ .ant-tabs-bar{
/deep/ .ant-tabs-bar {
display: none !important;
}
}

@ -0,0 +1,538 @@
<template>
<a-spin class="new-school-calendar-style" :spinning="spinning">
<div class="top-search-style">
<a-icon type="left" class="icon-style" @click="changeWeek(-1)"/>
<span class="ween-title-style">{{currentWeek}}</span>
<a-icon type="right" class="icon-style" @click="changeWeek(1)"/>
</div>
<div class="drop-down-search-style">
<a-select :value="categoryId" @change="categoryChange">
<a-select-option v-for="item in categoryList" :key="item.category_id" :value="item.category_id">
{{ item.category_name }}
</a-select-option>
</a-select>
</div>
<div class="week-calendar-content-style">
<div class="list-data-header-row-style">
<div class="row-item-style row-narrow-style">时间</div>
<div class="row-item-style row-wide-style">工作内容</div>
<div class="row-item-style row-narrow-style">地点</div>
<div class="row-item-style row-narrow-style">对象</div>
</div>
<vue-scroll v-if="showData && dataList.length > 0" :ops="listScroll" style="height:420px" class="list-data-content-row-style">
<template v-for="item,index in dataList">
<div :class="'data-item-style ' + (index === 0?'data-first-item-style':'')" :key="item.detail_id">
<div class="time-style">{{item.detail_time}}</div>
<div :class="'info-style ' + (index % 2 === 0?'info-color-one-style':'info-color-two-style')">
<div class="work-info-style">
<vue-scroll :ops="listScroll" style="width:100%;height:50px">
{{item.detail_content}}
</vue-scroll>
</div>
<div class="other-info-style">
<vue-scroll :ops="listScroll"
style="width:100%;height:50px;line-height: 50px;text-align: center">
{{item.detail_place}}
</vue-scroll>
</div>
<div class="other-info-style">
<vue-scroll :ops="listScroll"
style="width:100%;height:50px;line-height: 50px;text-align: center">
{{item.detail_target}}
</vue-scroll>
</div>
</div>
</div>
</template>
</vue-scroll>
<div v-if="showData && dataList.length === 0" class="no-data-content-style">
<a-empty description="暂无数据"/>
</div>
</div>
</a-spin>
</template>
<script>
/*
* 校历
* */
import {Icon, Select, Spin, Empty} from 'ant-design-vue';
import moment from 'moment';
export default{
data(){
return {
showData: false,
spinning: false,
listScroll: this.StaticParams.scrollOption,
categoryId: 0,
categoryList: [
{
category_id: 0,
category_name: "全部",
},
// {
// category_id: 643,
// category_name: "",
// num: 4
// },
// {
// category_id: 644,
// category_name: "",
// num: 0
// },
// {
// category_id: 645,
// category_name: "",
// num: 0
// }
],
weekArr: [],
weekIndex: 0,
// dataList:[
// {
// calendar_category_id: 643,
// calendar_category_name: "",
// detail_content: "1\n2\n3\n4",
// detail_id: 608,
// detail_place: "",
// detail_remark: "",
// detail_target: "",
// detail_time: "2020-10-22~2020-10-23",
// leader_id: 0,
// leader_name: ""
// },
// {
// calendar_category_id: 643,
// calendar_category_name: "",
// detail_content: "1234",
// detail_id: 625,
// detail_place: "1234",
// detail_remark: "1234",
// detail_target: "1234",
// detail_time: "2020-10-22~2020-10-24",
// leader_id: 0,
// leader_name: ""
// },
// {
// calendar_category_id: 736,
// calendar_category_name: "11111",
// detail_content: "123456",
// detail_id: 644,
// detail_place: "132456789",
// detail_remark: "111",
// detail_target: "456789",
// detail_time: "2020-11-18",
// leader_id: null,
// leader_name: "",
// },
// {
// calendar_category_id: 643,
// calendar_category_name: "",
// detail_content: "",
// detail_id: 648,
// detail_place: "",
// detail_remark: "",
// detail_target: "",
// detail_time: "2020-11-19~2020-11-21",
// leader_id: 0,
// leader_name: ""
// },
// {
// calendar_category_id: 643,
// calendar_category_name: "",
// detail_content: "",
// detail_id: 649,
// detail_place: "",
// detail_remark: "",
// detail_target: "",
// detail_time: "2020-11-24~2020-11-26",
// leader_id: 0,
// leader_name: ""
// },
// {
// calendar_category_id: 643,
// calendar_category_name: "",
// detail_content: "",
// detail_id: 650,
// detail_place: "",
// detail_remark: "",
// detail_target: "",
// detail_time: "2020-11-24~2020-11-26",
// leader_id: 0,
// leader_name: ""
// },
// {
// calendar_category_id: 643,
// calendar_category_name: "",
// detail_content: "",
// detail_id: 651,
// detail_place: "",
// detail_remark: "",
// detail_target: "",
// detail_time: "2020-11-24~2020-11-26",
// leader_id: 0,
// leader_name: ""
// },
// ],
calendarId: "",
dataList: [],
}
},
computed: {
currentWeek: function () {
if (this.weekArr.length > 0) {
return this.weekArr[this.weekIndex]["calendar_term_name"];
} else {
return "";
}
}
},
mounted(){
this.getDataexReport01();
},
methods: {
getDataexReport01: function () {
let param = {
"access_token": "system_01##20200102030405##a6ce11eab94df48a6ce11eab",
"query": {
"query_id": "query_xingzheng_xiaoli",
"query_param": [
this.BaseConfig.person_info_my.bureau_id + ""
]
},
"query_cache": 0,
"query_count": [],
"query_format": "json",
"query_group": []
}
this.DataexReportInterface.callInterface([{
params: param,
method: "post",
}], (result) => {
if (result[0].data.success) {
let dataList = JSON.parse(result[0].data.result);
if (dataList && dataList.length > 0) {
this.weekArr.push(...dataList);
this.calendarId = dataList[0].calendar_id;
this.getDataexReport02();
this.getDataexReport03();
}
}
})
},
getDataexReport02: function () {
this.dataList = [];
let param = {
"access_token": "system_01##20200102030405##a6ce11eab94df48a6ce11eab",
"query": {
"query_id": "query_xingzheng_xiaoli2",
"query_param": [
this.calendarId + ""
]
},
"query_cache": 0,
"query_count": [],
"query_format": "json",
"query_group": []
}
this.spinning = true;
this.DataexReportInterface.callInterface([{
params: param,
method: "post",
}], (result) => {
this.showData = true;
this.spinning = false;
if (result[0].data.success) {
let res = result[0].data.result;
if (res && res !== "") {
let dataList = JSON.parse(result[0].data.result);
if (dataList && dataList.length > 0) {
for (let i = 0, len = dataList.length; i < len; i++) {
let dataInfo = dataList[i];
let obj = {
detail_time: this.coverTime(dataInfo.begin_date) + "~" + this.coverTime(dataInfo.end_date),
detail_content: dataInfo.detail_content,
detail_place: dataInfo.detail_place,
detail_target: dataInfo.detail_target,
}
this.dataList.push(obj);
}
}
}
}
})
},
getDataexReport03: function () {
this.categoryList = [
{
category_id: 0,
category_name: "全部",
}
]
let param = {
"access_token": "system_01##20200102030405##a6ce11eab94df48a6ce11eab",
"query": {
"query_id": "query_xingzheng_xiaoli3",
"query_param": [
this.calendarId + ""
]
},
"query_cache": 0,
"query_count": [],
"query_format": "json",
"query_group": []
}
this.DataexReportInterface.callInterface([{
params: param,
method: "post",
}], (result) => {
if (result[0].data.success) {
let res = result[0].data.result;
if (res && res !== "") {
let dataList = JSON.parse(result[0].data.result);
if (dataList && dataList.length > 0) {
this.categoryList.push(...dataList);
}
}
}
})
},
getDataexReport04: function () {
this.dataList = [];
let param = {
"access_token": "system_01##20200102030405##a6ce11eab94df48a6ce11eab",
"query": {
"query_id": "query_xingzheng_xiaoli4",
"query_param": [
this.calendarId + "",
this.categoryId + "",
]
},
"query_cache": 0,
"query_count": [],
"query_format": "json",
"query_group": []
}
this.spinning = true;
this.DataexReportInterface.callInterface([{
params: param,
method: "post",
}], (result) => {
this.showData = true;
this.spinning = false;
if (result[0].data.success) {
let res = result[0].data.result;
if (res && res !== "") {
let dataList = JSON.parse(result[0].data.result);
if (dataList && dataList.length > 0) {
for (let i = 0, len = dataList.length; i < len; i++) {
let dataInfo = dataList[i];
let obj = {
detail_content: dataInfo.detail_content,
detail_place: dataInfo.detail_place,
detail_target: dataInfo.detail_target,
}
if (dataInfo.detail_time && dataInfo.detail_time !== "") {
obj.detail_time = dataInfo.detail_time;
} else {
obj.detail_time = this.coverTime(dataInfo.begin_date) + "~" + this.coverTime(dataInfo.end_date);
}
this.dataList.push(obj);
}
}
}
}
})
},
coverTime: function (time) {
return moment(time.replace('T', ' ').replace('Z', '')).format("YYYY-MM-DD");
},
changeWeek: function (param) {
if (param === 1) {
//
if (this.weekIndex === this.weekArr.length - 1) {
this.weekIndex = 0;
} else {
this.weekIndex += 1;
}
} else {
//
if (this.weekIndex === 0) {
this.weekIndex = this.weekArr.length - 1;
} else {
this.weekIndex -= 1;
}
}
this.categoryId = 0;
this.calendarId = this.weekArr[this.weekIndex]["calendar_id"];
this.getDataexReport02();
this.getDataexReport03();
},
categoryChange: function (value) {
if (this.categoryId !== value) {
this.categoryId = value;
if (this.categoryId !== 0) {
this.getDataexReport04();
} else {
this.getDataexReport02();
}
}
}
},
components: {
ASpin: Spin,
AEmpty: Empty,
AIcon: Icon,
ASelect: Select,
ASelectOption: Select.Option,
}
}
</script>
<style scoped lang="scss">
@import "../../../../assets/scss/style";
.new-school-calendar-style {
width: 100%;
height: auto;
display: flex;
flex-direction: column;
justify-content: center;
.top-search-style {
width: 100%;
height: 50px;
display: flex;
justify-content: center;
align-items: center;
padding: 0 5px;
.icon-style {
color: $color-default-bright;
font-size: 25px;
}
.ween-title-style {
height: 50px;
line-height: 50px;
font-size: 16px;
padding: 0 5px;
color: $color-default-bright;
text-align: center;
}
}
.drop-down-search-style {
width: 100%;
height: 20px;
.ant-select {
width: 100px;
height: 20px;
/deep/ .ant-select-selection {
height: 20px !important;
background: rgba(0,0,0,0);
border: 1px solid $color-default-bright;
.ant-select-selection__rendered {
line-height: 20px;
color: $color-default-bright;
}
.ant-select-arrow{
color: $color-default-bright;
}
}
}
}
.week-calendar-content-style {
width: 100%;
height: 430px;
display: flex;
flex-direction: column;
.list-data-header-row-style {
width: 100%;
height: 30px;
display: flex;
justify-content: space-between;
.row-item-style {
background-color: #17387b;
border-top-left-radius: 5px;
border-top-right-radius: 5px;
display: flex;
justify-content: center;
align-items: center;
color: white;
}
.row-narrow-style {
width: calc(20% - 2.5px);
}
.row-wide-style {
width: calc(40% - 2.5px);
}
}
.list-data-content-row-style {
width: 100%;
height: 420px;
display: flex;
flex-direction: column;
/deep/ .school-calendar-content-style {
width: 100%;
height: 100%;
display: flex;
flex-direction: column;
}
/deep/ .__view {
width: 100% !important;
}
.data-item-style {
width: 100%;
height: 60px;
border-left: 1px solid #306b93;
border-right: 1px solid #306b93;
border-bottom: 1px solid #306b93;
display: flex;
.time-style {
width: 20%;
display: flex;
text-align: center;
align-items: center;
color: $color-default-bright;
}
.info-style {
width: 80%;
display: flex;
color: white;
.work-info-style {
width: 50%;
display: flex;
flex-wrap: wrap;
align-items: center;
padding: 5px;
word-break: break-all;
}
.other-info-style {
width: 25%;
display: flex;
flex-wrap: wrap;
justify-content: center;
align-items: center;
padding: 5px;
word-break: break-all;
}
}
.info-color-one-style {
background-color: #4b496a;
}
.info-color-two-style {
background-color: #1e2a59;
}
}
.data-first-item-style {
border-top: 1px solid #306b93;
}
}
.no-data-content-style{
width: 100%;
height: 420px;
display: flex;
justify-content: center;
align-items: center;
/deep/ .ant-empty-description{
color: white;
}
}
}
}
</style>

@ -0,0 +1,396 @@
<template>
<a-spin class="week-calendar-new-style" :spinning="spinning">
<div class="top-search-style">
<a-icon type="left" class="icon-style" @click="changeWeek(-1)"/>
<span class="ween-title-style">{{currentWeek}}</span>
<a-icon type="right" class="icon-style" @click="changeWeek(1)"/>
</div>
<div class="week-calendar-content-style">
<div class="list-data-header-row-style">
<div class="row-item-style row-narrow-style">时间</div>
<div class="row-item-style row-wide-style">工作内容</div>
<div class="row-item-style row-narrow-style">地点</div>
<div class="row-item-style row-narrow-style">对象</div>
</div>
<vue-scroll v-if="showData && dataList.length > 0" :ops="listScroll" style="height:420px" class="list-data-content-row-style">
<template v-for="item,index in dataList">
<div :class="'data-item-style ' + (index === 0?'data-first-item-style':'')"
:key="item.detail_id">
<div class="time-style">{{item.detail_time}}</div>
<div :class="'info-style ' + (index % 2 === 0?'info-color-one-style':'info-color-two-style')">
<div class="work-info-style">
<vue-scroll :ops="listScroll" style="width:100%;height:50px">
{{item.detail_content}}
</vue-scroll>
</div>
<div class="other-info-style">
<vue-scroll :ops="listScroll"
style="width:100%;height:50px;line-height: 50px;text-align: center">
{{item.detail_place}}
</vue-scroll>
</div>
<div class="other-info-style">
<vue-scroll :ops="listScroll"
style="width:100%;height:50px;line-height: 50px;text-align: center">
{{item.detail_target}}
</vue-scroll>
</div>
</div>
</div>
</template>
</vue-scroll>
<div v-if="showData && dataList.length === 0" class="no-data-content-style">
<a-empty description="暂无数据"/>
</div>
</div>
</a-spin>
</template>
<script>
/*
* 周历
* */
import {Icon, Spin, Empty} from 'ant-design-vue';
import moment from 'moment';
export default{
data(){
return {
showData: false,
spinning: false,
listScroll: this.StaticParams.scrollOption,
weekArr: [],
weekIndex: 0,
// dataList:[
// {
// calendar_category_id: 0,
// calendar_category_name: "",
// detail_content: "",
// detail_id: 662,
// detail_place: "",
// detail_remark: "",
// detail_target: "",
// detail_time: "2019-12-31~2020-01-05",
// leader_id: 22933,
// leader_name: ""
// },
// {
// calendar_category_id: 0,
// calendar_category_name: "",
// detail_content: "",
// detail_id: 663,
// detail_place: "",
// detail_remark: "",
// detail_target: "",
// detail_time: "2020-01-03~2020-01-05",
// leader_id: 22933,
// leader_name: ""
// },
// {
// calendar_category_id: 0,
// calendar_category_name: "",
// detail_content: "6",
// detail_id: 664,
// detail_place: "",
// detail_remark: "",
// detail_target: "6",
// detail_time: "2019-12-30~2020-01-02",
// leader_id: 22933,
// leader_name: ""
// },
// {
// calendar_category_id: 0,
// calendar_category_name: "",
// detail_content: "5",
// detail_id: 665,
// detail_place: "",
// detail_remark: "",
// detail_target: "5",
// detail_time: "2020-01-01~2020-01-02",
// leader_id: 22933,
// leader_name: ""
// },
// {
// calendar_category_id: 0,
// calendar_category_name: "",
// detail_content: "4",
// detail_id: 666,
// detail_place: "",
// detail_remark: "",
// detail_target: "4",
// detail_time: "2020-01-02~2020-01-05",
// leader_id: 22933,
// leader_name: ""
// },
// {
// calendar_category_id: 0,
// calendar_category_name: "",
// detail_content: "",
// detail_id: 667,
// detail_place: "",
// detail_remark: "",
// detail_target: "",
// detail_time: "2019-12-30~2020-01-05",
// leader_id: 22933,
// leader_name: ""
// },
// {
// calendar_category_id: 0,
// calendar_category_name: "",
// detail_content: "",
// detail_id: 668,
// detail_place: "",
// detail_remark: "",
// detail_target: "",
// detail_time: "2020-01-07~2020-01-21",
// leader_id: 22933,
// leader_name: ""
// },
// {
// calendar_category_id: 0,
// calendar_category_name: "",
// detail_content: "",
// detail_id: 669,
// detail_place: "",
// detail_remark: "",
// detail_target: "",
// detail_time: "2020-01-07~2020-01-21",
// leader_id: 22933,
// leader_name: ""
// }
// ],
dataList: []
}
},
computed: {
currentWeek: function () {
if (this.weekArr.length > 0) {
return this.weekArr[this.weekIndex]["calendar_week"];
} else {
return "";
}
}
},
mounted(){
this.getDataexReport01();
},
methods: {
getDataexReport01: function () {
let param = {
"access_token": "system_01##20200102030405##a6ce11eab94df48a6ce11eab",
"query": {
"query_id": "query_xingzheng_zhouli",
"query_param": [
this.BaseConfig.person_info_my.bureau_id + ""
]
},
"query_cache": 0,
"query_count": [],
"query_format": "json",
"query_group": []
}
this.DataexReportInterface.callInterface([{
params: param,
method: "post",
}], (result) => {
if (result[0].data.success) {
let dataList = JSON.parse(result[0].data.result);
if (dataList && dataList.length > 0) {
this.weekArr.push(...dataList);
this.getDataexReport02(dataList[0].calendar_id);
}
}
})
},
getDataexReport02: function (calendar_id) {
this.dataList = [];
let param = {
"access_token": "system_01##20200102030405##a6ce11eab94df48a6ce11eab",
"query": {
"query_id": "query_xingzheng_zhouli2",
"query_param": [
calendar_id + ""
]
},
"query_cache": 0,
"query_count": [],
"query_format": "json",
"query_group": []
}
this.spinning = true;
this.DataexReportInterface.callInterface([{
params: param,
method: "post",
}], (result) => {
this.showData = true;
this.spinning = false;
if (result[0].data.success) {
let res = result[0].data.result;
if (res && res !== "") {
let dataList = JSON.parse(result[0].data.result);
if (dataList && dataList.length > 0) {
for (let i = 0, len = dataList.length; i < len; i++) {
let dataInfo = dataList[i];
let obj = {
detail_time: this.coverTime(dataInfo.begin_date) + "~" + this.coverTime(dataInfo.end_date),
detail_content: dataInfo.detail_content,
detail_place: dataInfo.detail_place,
detail_target: dataInfo.detail_target,
}
this.dataList.push(obj);
}
}
}
}
})
},
coverTime: function (time) {
return moment(time.replace('T', ' ').replace('Z', '')).format("YYYY-MM-DD");
},
changeWeek: function (param) {
if (param === 1) {
//
if (this.weekIndex === this.weekArr.length - 1) {
this.weekIndex = 0;
} else {
this.weekIndex += 1;
}
} else {
//
if (this.weekIndex === 0) {
this.weekIndex = this.weekArr.length - 1;
} else {
this.weekIndex -= 1;
}
}
this.getDataexReport02(this.weekArr[this.weekIndex]["calendar_id"]);
}
},
components: {
AIcon: Icon,
ASpin: Spin,
AEmpty: Empty
}
}
</script>
<style scoped lang="scss">
@import "../../../../assets/scss/style";
.week-calendar-new-style {
width: 100%;
height: auto;
display: flex;
flex-direction: column;
justify-content: center;
.top-search-style {
width: 100%;
height: 50px;
display: flex;
justify-content: center;
align-items: center;
padding: 0 5px;
.icon-style {
color: $color-default-bright;
font-size: 25px;
}
.ween-title-style {
height: 50px;
line-height: 50px;
font-size: 16px;
padding: 0 5px;
color: $color-default-bright;
text-align: center;
}
}
.week-calendar-content-style {
width: 100%;
height: 450px;
display: flex;
flex-direction: column;
.list-data-header-row-style {
width: 100%;
height: 30px;
display: flex;
justify-content: space-between;
.row-item-style {
background-color: #17387b;
border-top-left-radius: 5px;
border-top-right-radius: 5px;
display: flex;
justify-content: center;
align-items: center;
color: white;
}
.row-narrow-style {
width: calc(20% - 2.5px);
}
.row-wide-style {
width: calc(40% - 2.5px);
}
}
.list-data-content-row-style {
width: 100%;
height: 420px;
display: flex;
flex-direction: column;
/deep/ .__view {
width: 100% !important;
}
.data-item-style {
width: 100%;
height: 60px;
border-left: 1px solid #306b93;
border-right: 1px solid #306b93;
border-bottom: 1px solid #306b93;
display: flex;
.time-style {
width: 20%;
display: flex;
text-align: center;
align-items: center;
color: $color-default-bright;
}
.info-style {
width: 80%;
display: flex;
color: white;
.work-info-style {
width: 50%;
display: flex;
flex-wrap: wrap;
align-items: center;
padding: 5px;
word-break: break-all;
}
.other-info-style {
width: 25%;
display: flex;
flex-wrap: wrap;
justify-content: center;
align-items: center;
padding: 5px;
word-break: break-all;
}
}
.info-color-one-style {
background-color: #4b496a;
}
.info-color-two-style {
background-color: #1e2a59;
}
}
.data-first-item-style {
border-top: 1px solid #306b93;
}
}
.no-data-content-style{
width: 100%;
height: 420px;
display: flex;
justify-content: center;
align-items: center;
/deep/ .ant-empty-description{
color: white;
}
}
}
}
</style>

@ -424,8 +424,14 @@
height: 20px;
/deep/ .ant-select-selection {
height: 20px !important;
background: rgba(0,0,0,0);
border: 1px solid $color-default-bright;
.ant-select-selection__rendered {
line-height: 20px;
color: $color-default-bright;
}
.ant-select-arrow{
color: $color-default-bright;
}
}
}

@ -0,0 +1,15 @@
const InterfaceConfig = {
"getNowTime": {
url: '/intellioa/common/getNowTime',
method: 'get',
isTestLogin: true
},
//考勤统计
"getDailySummaryForOrg": {
url: '/intellioa/attendance/attendanceReport/getDailySummaryForOrg',
method: 'get',
isTestLogin: true
},
};
export default InterfaceConfig;

@ -54,7 +54,7 @@
import StudentInfo from './studentInfo.vue';
import InterConfig from '../../../adminCenter/servicePlatform/interConfig';
import {swiper, swiperSlide} from 'vue-awesome-swiper'
import 'swiper/dist/css/swiper.css'
import 'swiper/css/swiper.css'
export default{
data(){
return {
@ -106,7 +106,7 @@
}
}
let categoryObj = {};
console.log("index:", index)
//console.log("index:", index)
if (index > -1) {
//
this.dataList[index]["list"].push(dataList[i]);
@ -125,7 +125,7 @@
this.dataList[i].list.push(...this.dataList[i].list);
}
}
console.log("this.dataList", this.dataList);
//console.log("this.dataList", this.dataList);
}
})
}

@ -1,65 +1,73 @@
<template>
<div class="teacher-style-info-style">
<div v-if="position === 'left'" class="teacher-img-style"><img :src="teacherInfo.imgSrc"/></div>
<div v-if="position === 'right'" :class="'teacher-info-style ' + (position === 'right'?' teacher-info-right-style':'')">
<div class="teacher-info-text-style">{{teacherInfo.name}}</div>
<div class="teacher-info-text-style light-text-style">{{teacherInfo.projectName}}</div>
<div v-if="position === 'left'" class="teacher-img-style">
<img-preview :imgObj="teacherInfo.attachment_json"/>
</div>
<div v-if="position === 'right'"
:class="'teacher-info-style ' + (position === 'right'?' teacher-info-right-style':'')">
<div class="teacher-info-text-style">{{teacherInfo.honor_person_name}}</div>
<div class="teacher-info-text-style light-text-style">{{teacherInfo.subject_name}}</div>
<div :class="'list-flag-style' + (position === 'right'?' list-flag-right-style':'')">
<div :class="(position === 'right'?' flag-left-before':'flag-before')"></div>
<div :class="(position === 'right'?' flag-after-before':'flag-after')"></div>
<span class="flat-text-style">{{teacherInfo.honerName}}</span>
<span class="flat-text-style">{{teacherInfo.category_name}}</span>
</div>
</div>
<div v-if="position === 'right'" :class="'teacher-img-style' + (position === 'right'?' teacher-img-right-style':'')"><img :src="teacherInfo.imgSrc"/></div>
<div v-if="position === 'right'"
:class="'teacher-img-style' + (position === 'right'?' teacher-img-right-style':'')">
<img-preview :imgObj="teacherInfo.attachment_json"/>
</div>
<div v-if="position === 'left'" class="teacher-info-style">
<div class="teacher-info-text-style">{{teacherInfo.name}}</div>
<div class="teacher-info-text-style light-text-style">{{teacherInfo.projectName}}</div>
<div class="teacher-info-text-style">{{teacherInfo.honor_person_name}}</div>
<div class="teacher-info-text-style light-text-style">{{teacherInfo.subject_name}}</div>
<div class="list-flag-style">
<div class="flag-before"></div>
<div class="flag-after"></div>
<span class="flat-text-style">{{teacherInfo.honerName}}</span>
<span class="flat-text-style">{{teacherInfo.category_name}}</span>
</div>
</div>
</div>
</template>
<script>
export default{
data(){
return {
import ImgPreview from '../../../../common/imgPreview.vue';
}
},
props:{
position:{
type:String,
default:"left"
export default {
props: {
position: {
type: String,
default: "left"
},
teacherInfo:{
type:Object,
default:{}
teacherInfo: {
type: Object,
default: () => {
}
}
},
components: {
ImgPreview,
}
}
</script>
<style scoped lang="scss">
@import "../../../../assets/scss/style";
.teacher-style-info-style{
.teacher-style-info-style {
width: 240px;
height: 120px;
display: flex;
padding: 10px;
.teacher-img-style{
.teacher-img-style {
width: 140px;
height: 100px;
img{
img {
width: 100%;
height: 100%;
border-top-left-radius: 10px;
border-bottom-left-radius: 10px;
}
}
.teacher-img-right-style{
img{
.teacher-img-right-style {
img {
width: 100%;
height: 100%;
border-top-left-radius: 0px !important;
@ -68,7 +76,7 @@
border-bottom-right-radius: 10px !important;
}
}
.teacher-info-style{
.teacher-info-style {
width: 100px;
height: 100px;
background-color: #47598c;
@ -79,7 +87,7 @@
border-top-right-radius: 10px;
border-bottom-right-radius: 10px;
position: relative;
.teacher-info-text-style{
.teacher-info-text-style {
width: 100%;
text-align: center;
color: white !important;
@ -87,11 +95,11 @@
height: 20px;
line-height: 20px;
}
.light-text-style{
.light-text-style {
color: $color-default-bright !important;
font-size: 12px;
}
.list-flag-style{
.list-flag-style {
width: 80px;
height: 20px;
background-color: #31a8fa;
@ -101,16 +109,16 @@
text-align: center;
font-size: 12px;
color: white;
.flag-before{
width:0;
height:0;
border-top:11px solid transparent;
.flag-before {
width: 0;
height: 0;
border-top: 11px solid transparent;
border-bottom: 11px solid transparent;
border-left: 11px solid #47598c;
position: absolute;
left: -2px;
}
.flag-left-before{
.flag-left-before {
width: 0;
height: 0;
border-top: 11px solid transparent;
@ -119,7 +127,7 @@
position: absolute;
right: -2px;
}
.flag-after{
.flag-after {
width: 0;
height: 0;
border-bottom: 6px solid #31a8fa;
@ -128,7 +136,7 @@
right: -1px;
top: -6px;
}
.flag-after-before{
.flag-after-before {
width: 0;
height: 0;
border-bottom: 6px solid #31a8fa;
@ -138,7 +146,7 @@
top: -6px;
}
}
.list-flag-right-style{
.list-flag-right-style {
width: 80px;
height: 20px;
background-color: #31a8fa;
@ -147,7 +155,7 @@
bottom: 5px;
}
}
.teacher-info-right-style{
.teacher-info-right-style {
border-top-right-radius: 0px !important;
border-bottom-right-radius: 0px !important;
border-top-left-radius: 10px !important;

@ -16,9 +16,9 @@
<TeacherInfo position="left" :teacherInfo="dataList[4]"/>
<TeacherInfo position="right" :teacherInfo="dataList[5]"/>
</div>
<div class="list-row-style" style="padding: 0 25px">
<div class="list-row-style" style="padding: 0 25px">
<TeacherInfo position="left" :teacherInfo="dataList[6]"/>
<TeacherInfo position="right" :teacherInfo="dataList[7]"/>
<TeacherInfo v-if="dataList[7]" position="right" :teacherInfo="dataList[7]"/>
</div>
</div>
</template>
@ -27,23 +27,100 @@
* 教师风采
* */
import TeacherInfo from './teacherInfo.vue';
export default{
data(){
import InterConfig from '../../../adminCenter/servicePlatform/interConfig';
export default {
data() {
return {
dataList:[
{name:"孙勤书",projectName:"语文学科",honerName:"骨干教师",imgSrc:require("../../../../assets/images/teacherImg/teacher01.png")},
{name:"蒋红梅",projectName:"语文学科",honerName:"特级教师",imgSrc:require("../../../../assets/images/teacherImg/teacher02.png")},
{name:"孙正鹏",projectName:"语文学科",honerName:"优秀教师",imgSrc:require("../../../../assets/images/teacherImg/teacher03.png")},
{name:"尚爱娟",projectName:"语文学科",honerName:"教学名师",imgSrc:require("../../../../assets/images/teacherImg/teacher04.png")},
{name:"刘丽",projectName:"语文学科",honerName:"骨干教师",imgSrc:require("../../../../assets/images/teacherImg/teacher05.png")},
{name:"董玉书",projectName:"语文学科",honerName:"特级教师",imgSrc:require("../../../../assets/images/teacherImg/teacher06.png")},
{name:"秦小双",projectName:"语文学科",honerName:"优秀教师",imgSrc:require("../../../../assets/images/teacherImg/teacher07.png")},
{name:"王桂琴",projectName:"语文学科",honerName:"骨干教师",imgSrc:require("../../../../assets/images/teacherImg/teacher08.png")},
dataList: [
{
name: "孙勤书",
projectName: "语文学科",
honerName: "骨干教师",
imgSrc: require("../../../../assets/images/teacherImg/teacher01.png")
},
{
name: "蒋红梅",
projectName: "语文学科",
honerName: "特级教师",
imgSrc: require("../../../../assets/images/teacherImg/teacher02.png")
},
{
name: "孙正鹏",
projectName: "语文学科",
honerName: "优秀教师",
imgSrc: require("../../../../assets/images/teacherImg/teacher03.png")
},
{
name: "尚爱娟",
projectName: "语文学科",
honerName: "教学名师",
imgSrc: require("../../../../assets/images/teacherImg/teacher04.png")
},
{
name: "刘丽",
projectName: "语文学科",
honerName: "骨干教师",
imgSrc: require("../../../../assets/images/teacherImg/teacher05.png")
},
{
name: "董玉书",
projectName: "语文学科",
honerName: "特级教师",
imgSrc: require("../../../../assets/images/teacherImg/teacher06.png")
},
{
name: "秦小双",
projectName: "语文学科",
honerName: "优秀教师",
imgSrc: require("../../../../assets/images/teacherImg/teacher07.png")
},
{
name: "王桂琴",
projectName: "语文学科",
honerName: "骨干教师",
imgSrc: require("../../../../assets/images/teacherImg/teacher08.png")
},
]
}
},
components: {
TeacherInfo
},
mounted() {
this.getTeacherHoronList()
},
methods: {
//
getTeacherHoronList() {
let param = {
bureau_id: this.BaseConfig.person_info_my.bureau_id,
category_type: 5,
category_id: "",
page_number: 1,
page_size: 999999
}
this.InterfaceConfig.callInterface([{
url: InterConfig.getHonorList.url,
params: param,
method: InterConfig.getHonorList.method,
isTestLogin: InterConfig.getHonorList.isTestLogin,
}], (result) => {
//console.log('', result)
if (result[0].data.code === 2000) {
let res = result[0].data.data.list
res.forEach(item => {
if (item.attachment_json != '') {
item.attachment_json = JSON.parse(item.attachment_json)[0]
} else {
item.attachment_json = {}
}
})
// console.log('res', res)
this.dataList = res
}
})
},
}
}
</script>
@ -56,24 +133,24 @@
position: relative;
align-items: center;
justify-content: center;
.list-flag-style{
.list-flag-style {
position: absolute;
width: 120px;
height: 120px;
display: flex;
justify-content: center;
align-items: center;
img{
img {
width: 100%;
height: 100%;
}
.medal-text-style{
.medal-text-style {
color: white;
position: absolute;
text-align: center;
}
}
.list-row-style{
.list-row-style {
width: 100%;
display: flex;
justify-content: space-between;

@ -1,87 +1,171 @@
<template>
<div class="student-info-style">
<div class="info-top-style">
<div class="content-left-style">
<dv-decoration-9>
<div class="box-9-content-style">
<div class="box-9-text-style" style="font-size: 20px">53</div>
<div class="box-9-text-style" style="font-size: 12px">共计班级</div>
</div>
</dv-decoration-9>
</div>
<div class="content-right-style">
<div class="right-top-style">
<div class="box-item-style"><span>小学部</span></div>
<div class="box-item-style"><span>班级</span><span class="large-text-style">35</span></div>
<div class="box-item-style"><span>学生</span><span class="large-text-style">1560</span></div>
<a-spin :spinning="spinning">
<div class="info-top-style">
<div class="content-left-style">
<dv-decoration-9>
<div class="box-9-content-style">
<div class="box-9-text-style" style="font-size: 20px">{{totalClassNum}}</div>
<div class="box-9-text-style" style="font-size: 12px">共计班级</div>
</div>
</dv-decoration-9>
</div>
<div class="right-bottom-style">
<div class="box-item-style"><span>初中部</span></div>
<div class="box-item-style"><span>班级</span><span class="large-text-style">25</span></div>
<div class="box-item-style"><span>学生</span><span class="large-text-style">1290</span></div>
<div class="content-right-style">
<div class="right-top-style">
<div class="box-item-style"><span>小学部</span></div>
<div class="box-item-style"><span>班级</span><span
class="large-text-style">{{smallClassNum}}</span>
</div>
<div class="box-item-style"><span>学生</span><span
class="large-text-style">{{totalSmallStudentNum}}</span></div>
</div>
<div class="right-bottom-style">
<div class="box-item-style"><span>初中部</span></div>
<div class="box-item-style"><span>班级</span><span
class="large-text-style">{{middleClassNum}}</span>
</div>
<div class="box-item-style"><span>学生</span><span
class="large-text-style">{{totalMiddleStudentNum}}</span></div>
</div>
</div>
</div>
</div>
<div class="info-center-style">
<a-select style="width:150px;margin-left: 10px" :value="gradeId" @change="gradeChange">
<a-select-option v-for="item in gradeList" :key="item.id" :value="item.id">
{{ item.value }}
</a-select-option>
</a-select>
</div>
<div class="info-bottom-style">
<a-table :columns="columns" :data-source="tableData" :pagination="false" rowKey="dep"
:customRow="getCustomRow"/>
</div>
<div class="info-center-style">
<a-select style="width:150px;margin-left: 10px" :value="gradeId" @change="gradeChange">
<a-select-option v-for="item in gradeList" :key="item.id" :value="item.id">
{{ item.value }}
</a-select-option>
</a-select>
</div>
<div class="info-bottom-style">
<vue-scroll :ops="listScroll" style="width: 100%;height:330px">
<a-table :columns="columns" :data-source="tableData" :pagination="false" rowKey="dep"
:customRow="getCustomRow"/>
</vue-scroll>
</div>
</a-spin>
</div>
</template>
<script>
import {Select, Table} from 'ant-design-vue';
export default{
data(){
import {Select, Table, Spin} from 'ant-design-vue';
export default {
data() {
return {
gradeList: [{id: 1, value: '一年级'}, {id: 2, value: '二年级'}, {id: 3, value: '三年级'}, {
id: 4,
value: '四年级'
}, {id: 5, value: '五年级'}, {id: 6, value: '六年级'}],
spinning: true,
listScroll: this.StaticParams.scrollOption,
gradeList: [{id: 1, value: '小学部'}, {id: 2, value: '初中部'}, {id: 3, value: '高中部'}],
gradeId: 1,
columns: [
{
title: '级',
dataIndex: 'className',
key: 'className',
title: '级',
dataIndex: 'ENTRANCE_YEAR',
key: 'ENTRANCE_YEAR',
align: "center",
customCell: () => {
return {style: {'color': '#fbc637'}}
},
// customCell: () => {
// return {style: {'color': '#fbc637'}}
// },
},
{
title: '学',
dataIndex: 'project',
key: 'project',
title: '学生总数',
dataIndex: 'total',
key: 'total',
align: "center",
},
{
title: '学生(实到/总数)',
dataIndex: 'studentNum',
key: 'studentNum',
title: '男学生数',
dataIndex: 'nan_total',
key: 'nan_total',
align: "center",
},
{
title: '女学生数',
dataIndex: 'nv_total',
key: 'nv_total',
align: "center",
},
],
tableData: [
{className: "一年一班", project: '语文', studentNum: '38/39'},
{className: "一年二班", project: '数学', studentNum: '40/40'},
{className: "一年三班", project: '英语', studentNum: '38/39'},
{className: "一年四班", project: '历史', studentNum: '40/40'},
{className: "一年五班", project: '政治', studentNum: '39/39'},
]
tableData: [],
smallClassNum: 0,
middleClassNum: 0,
totalClassNum: 0,
totalSmallStudentNum: 0,
totalMiddleStudentNum: 0,
highClassNum: 0,
}
},
mounted() {
this.getStudentTableData()
},
methods: {
//tab+
getStudentTableData() {
let param = {
"access_token": "system_01##20200102030405##a6ce11eab94df48a6ce11eab",
"query": {
"query_id": "query_deyu_xuesheng4",
"query_param": [
this.BaseConfig.person_info_my.bureau_id + ""
]
},
"query_cache": 0,
"query_count": [],
"query_format": "json",
"query_group": []
}
this.spinning = true;
this.DataexReportInterface.callInterface([{
params: param,
method: "post",
}], (result) => {
if (result[0].data.success) {
this.smallClassNum = this.middleClassNum = this.totalClassNum = this.totalSmallStudentNum = this.totalMiddleStudentNum = 0
let res = JSON.parse(result[0].data.result)
res.forEach(item => {
item.ENTRANCE_YEAR = item.ENTRANCE_YEAR + '级' + '(' + item.class_total + '个班' + ')'
})
let smallSchool = res.filter(item => {
return item.stage_name == '小学'
})
let middleSchool = res.filter(item => {
return item.stage_name == '初中'
})
let highSchool = res.filter(item => {
return item.stage_name == '高中'
})
smallSchool.forEach(item => {
this.smallClassNum += item.class_total
this.totalSmallStudentNum += item.total
})
middleSchool.forEach(item => {
this.middleClassNum += item.class_total
this.totalMiddleStudentNum += item.total
})
// this.tableData.forEach(item => {
// this.highClassNum += item.class_total
// })
switch (this.gradeId) {
case 1:
this.tableData = smallSchool
break
case 2:
this.tableData = middleSchool
break;
case 3:
this.tableData = highSchool
break
}
this.totalClassNum = this.smallClassNum + this.middleClassNum
this.spinning = false
//console.log('tab', res)
}
}
)
},
gradeChange: function (gradeId) {
if (this.gradeId !== gradeId) {
this.gradeId = gradeId;
}
this.getStudentTableData()
},
getCustomRow: function () {
let obj = {style: {}};
@ -92,12 +176,14 @@
components: {
ASelect: Select,
ASelectOption: Select.Option,
ATable: Table
ATable: Table,
ASpin: Spin,
}
}
</script>
<style scoped lang="scss">
@import "../../../../assets/scss/style";
.student-info-style {
width: 100%;
height: 500px;
@ -142,39 +228,39 @@
height: 50px;
border-bottom: 1px solid $color-default-bright;
display: flex;
.box-item-style{
.box-item-style {
width: 33%;
border-right: 1px solid $color-default-bright;
display: flex;
justify-content: center;
align-items: center;
color: #fbc637;
.large-text-style{
.large-text-style {
font-size: 20px;
margin-left: 5px;
}
}
.box-item-style:last-child{
.box-item-style:last-child {
border-right: none !important;
}
}
.right-bottom-style{
.right-bottom-style {
width: 100%;
height: 50px;
display: flex;
.box-item-style{
.box-item-style {
width: 33%;
border-right: 1px solid $color-default-bright;
display: flex;
justify-content: center;
align-items: center;
color: $color-default-bright;
.large-text-style{
.large-text-style {
font-size: 20px;
margin-left: 5px;
}
}
.box-item-style:last-child{
.box-item-style:last-child {
border-right: none !important;
}
}

@ -4,111 +4,297 @@
<div class="content-left-style">
<dv-decoration-9>
<div class="box-9-content-style">
<div class="box-9-text-style" style="font-size: 20px">589</div>
<div class="box-9-text-style" style="font-size: 20px">{{teacherTotalNum}}</div>
<div class="box-9-text-style" style="font-size: 12px">共计人数</div>
</div>
</dv-decoration-9>
</div>
<div class="content-right-style">
<div class="right-item-style">
<span>小学部</span>
<span>252</span>
</div>
<div class="right-item-style">
<span>行政后勤</span>
<span>53</span>
</div>
<div class="right-item-style">
<span>初中部</span>
<span>337</span>
</div>
<div class="right-item-style">
<span>德育处</span>
<span>26</span>
</div>
<a-row class="content-right-top-style" type="flex" justify="space-around">
<a-col :span="7">
<p class="teacherNumColor">{{headMasterNum}}</p>
<p>班主任数</p>
</a-col>
<a-col :span="14" class="teacherNumLine"></a-col>
<a-col :span="7">
<p class="teacherNumColor">{{otherTeacherNum}}</p>
<p>科任教师数</p>
</a-col>
</a-row>
<a-row class="content-right-bot-style" type="flex" justify="space-around" align="middle">
<a-col :span="7" class="content-right-bot-style-box">
<div class="col-title">{{'小学部 / ' + 500}}</div>
<a-row class="col-row">
<a-col :span="10">{{'男/' + 10}}</a-col>
<a-col :span="4" class="genderLine"></a-col>
<a-col :span="10">{{'女/' + 10}}</a-col>
</a-row>
</a-col>
<a-col :span="7" class="content-right-bot-style-box">
<div class="col-title">{{'初中部 / ' + 500}}</div>
<a-row class="col-row">
<a-col :span="10">{{'男/' + 10}}</a-col>
<a-col :span="4" class="genderLine"></a-col>
<a-col :span="10">{{'女/' + 10}}</a-col>
</a-row>
</a-col>
<a-col :span="7" class="content-right-bot-style-box">
<div class="col-title">{{'高中部 / ' + 500}}</div>
<a-row class="col-row">
<a-col :span="10">{{'男/' + 10}}</a-col>
<a-col :span="4" class="genderLine"></a-col>
<a-col :span="10">{{'女/' + 10}}</a-col>
</a-row>
</a-col>
</a-row>
<!--<div class="right-item-style">-->
<!--<span>小学部</span>-->
<!--<span>{{smallSchoolDept + '人'}}</span>-->
<!--</div>-->
<!--<div class="right-item-style">-->
<!--<span>高中部</span>-->
<!--<span>{{highSchoolDept + '人'}}</span>-->
<!--</div>-->
<!--<div class="right-item-style">-->
<!--<span>行政后勤</span>-->
<!--<span>53</span>-->
<!--</div>-->
<!--<div class="right-item-style">-->
<!--<span>初中部</span>-->
<!--<span>{{middleSchoolDept + '人'}}</span>-->
<!--</div>-->
<!--<div class="right-item-style">-->
<!--<span>其他部门</span>-->
<!--<span>{{otherDept + '人'}}</span>-->
<!--</div>-->
<!--<div class="right-item-style">-->
<!--<span>德育处</span>-->
<!--<span>26</span>-->
<!--</div>-->
</div>
</div>
<div class="info-center-style">
<a-select style="width:150px" :value="stageId" @change="stageChange">
<a-select-option v-for="item in stageList" :key="item.id" :value="item.id" >
{{ item.value }}
</a-select-option>
</a-select>
<a-select style="width:150px;margin-left: 10px" :value="gradeId" @change="gradeChange">
<a-select-option v-for="item in gradeList" :key="item.id" :value="item.id" >
<a-select style="width:150px" :value="stageId" @change="stageChange">
<a-select-option v-for="item in stageList" :key="item.id" :value="item.id">
{{ item.value }}
</a-select-option>
</a-select>
<!--<a-select style="width:150px;margin-left: 10px" :value="gradeId" @change="gradeChange">-->
<!--<a-select-option v-for="item in gradeList" :key="item.id" :value="item.id">-->
<!--{{ item.value }}-->
<!--</a-select-option>-->
<!--</a-select>-->
</div>
<div class="info-bottom-style">
<a-table :columns="columns" :data-source="tableData" :pagination="false" rowKey="dep" :customRow="getCustomRow" />
<vue-scroll :ops="listScroll" style="width: 100%;height:330px">
<a-table :columns="columns" :data-source="tableData" :pagination="false" rowKey="dep"
:customRow="getCustomRow"/>
</vue-scroll>
</div>
</div>
</template>
<script>
import {Select,Table} from 'ant-design-vue';
export default{
data(){
import {Select, Table, Row, Col} from 'ant-design-vue';
// import InterConfig from './interConfig';
export default {
data() {
return {
stageList:[{id:1,value:'小学部'},{id:2,value:'初中部'},{id:3,value:'行政部门'},{id:4,value:'其他'}],
stageId:1,
gradeList:[{id:1,value:'一年级'},{id:2,value:'二年级'},{id:3,value:'三年级'},{id:4,value:'四年级'},{id:5,value:'五年级'},{id:6,value:'六年级'}],
gradeId:1,
listScroll: this.StaticParams.scrollOption,
teacherTotalNum: 0,//
headMasterNum: 0,//
otherTeacherNum: 0,//
smallSchoolDept: 0,
middleSchoolDept: 0,
highSchoolDept: 0,
otherDept: 0,
stageList: [{id: 1, value: '小学部'}, {id: 2, value: '初中部'}, {id: 3, value: '高中部'}],
stageId: 1,
// gradeList: [{id: 1, value: ''}, {id: 2, value: ''}, {id: 3, value: ''}, {
// id: 4,
// value: ''
// }, {id: 5, value: ''}, {id: 6, value: ''}],
gradeId: 1,
columns: [
{
title: '学科组/部门',
title: '学科',
dataIndex: 'dep',
key: 'dep',
align: "center",
},
{
title: '教师人数',
title: '教师数',
dataIndex: 'teacherNum',
key: 'teacherNum',
align: "center",
}, {
title: '男教师数',
dataIndex: 'nanTeacherNum',
key: 'nanTeacherNum',
align: "center",
},
{
title: '女教师数',
dataIndex: 'nvTeacherNum',
key: 'nvTeacherNum',
align: "center",
},
],
tableData: [
{dep:"语文组",teacherNum:8},
{dep:"英语组",teacherNum:10},
{dep:"数学组",teacherNum:12},
{dep:"美术组",teacherNum:4},
{dep:"音乐组",teacherNum:6}
{dep: "语文组", teacherNum: 8, nanTeacherNum: 8, nvTeacherNum: 9},
{dep: "英语组", teacherNum: 10, nanTeacherNum: 8, nvTeacherNum: 9},
{dep: "数学组", teacherNum: 12, nanTeacherNum: 8, nvTeacherNum: 9},
{dep: "美术组", teacherNum: 4, nanTeacherNum: 8, nvTeacherNum: 9},
{dep: "音乐组", teacherNum: 6, nanTeacherNum: 8, nvTeacherNum: 9},
]
}
},
methods:{
stageChange:function (stageId) {
if(this.stageId !== stageId){
this.stageId = stageId;
mounted() {
this.getTeacherOverview()
// this.getGenderInfo()
},
methods: {
//-
getTeacherOverview: function () {
let param = {
"access_token": "system_01##20200102030405##a6ce11eab94df48a6ce11eab",
"query": {
"query_id": "query_jiaoshi_gailan",
"query_param": [
this.BaseConfig.person_info_my.bureau_id + ""
]
},
"query_cache": 0,
"query_count": [],
"query_format": "json",
"query_group": []
}
this.DataexReportInterface.callInterface([{
params: param,
method: "post",
}], (result) => {
if (result[0].data.success) {
let res = result[0].data.result;
console.log('师生概览-教师人数数据', JSON.parse(res))
if (res !== "") {
let dataList = JSON.parse(res);
if (dataList && dataList.length > 0) {
this.teacherTotalNum = dataList[0].total;
this.headMasterNum = dataList[0].bzr_total;
this.otherTeacherNum = dataList[0].rkjs_total;
}
}
this.getTeacherOverviewDept()
}
})
},
//
getGenderInfo: function () {
let param = {
"access_token": "system_01##20200102030405##a6ce11eab94df48a6ce11eab",
"query": {
"query_id": "query_jiaoshi_gailan3",
"query_param": [
this.BaseConfig.person_info_my.bureau_id + ""
]
},
"query_cache": 0,
"query_count": [],
"query_format": "json",
"query_group": []
}
this.DataexReportInterface.callInterface([{
params: param,
method: "post",
}], (result) => {
console.log('男女教师性别比例', result)
if (result[0].data.success) {
let res = result[0].data.result;
if (res !== "") {
let dataList = JSON.parse(res);
if (dataList && dataList.length > 0) {
}
}
}
})
},
//--
getTeacherOverviewDept: function () {
let param = {
"access_token": "system_01##20200102030405##a6ce11eab94df48a6ce11eab",
"query": {
"query_id": "query_jiaoshi_gailan2",
"query_param": [
this.BaseConfig.person_info_my.bureau_id + ""
]
},
"query_cache": 0,
"query_count": [],
"query_format": "json",
"query_group": []
}
this.DataexReportInterface.callInterface([{
params: param,
method: "post",
}], (result) => {
if (result[0].data.success) {
let res = result[0].data.result;
//console.log('', JSON.parse(res))
if (res !== "") {
let dataList = JSON.parse(res);
dataList.forEach(item => {
if (item.stage_name === '小学部') {
this.smallSchoolDept = item.total
} else if (item.stage_name === '初中部') {
this.middleSchoolDept = item.total
} else if (item.stage_name === '高中部') {
this.highSchoolDept = item.total
}
})
this.getOtherDeptNum()
}
}
})
},
gradeChange:function (gradeId) {
if(this.gradeId !== gradeId){
this.gradeId = gradeId;
//
getOtherDeptNum() {
this.otherDept = this.teacherTotalNum - this.smallSchoolDept - this.middleSchoolDept - this.highSchoolDept
},
stageChange: function (stageId) {
if (this.stageId !== stageId) {
this.stageId = stageId;
}
},
// gradeChange: function (gradeId) {
// if (this.gradeId !== gradeId) {
// this.gradeId = gradeId;
// }
// },
getCustomRow: function () {
let obj = {style: {}};
obj['style']['color'] = '#00ffff';
return obj;
},
},
components:{
ASelect:Select,
ASelectOption:Select.Option,
ATable:Table
components: {
ASelect: Select,
ASelectOption: Select.Option,
ATable: Table,
ARow: Row,
ACol: Col,
}
}
</script>
<style scoped lang="scss">
@import "../../../../assets/scss/style";
.teacher-info-style{
.teacher-info-style {
width: 100%;
height: 500px;
display: flex;
flex-direction: column;
.info-top-style{
.info-top-style {
width: 100%;
height: 100px;
display: flex;
@ -135,14 +321,60 @@
}
}
}
.content-right-style{
.content-right-style {
width: calc(100% - 150px);
height: auto;
display: flex;
flex-wrap: wrap;
justify-content: space-between;
align-content: space-between;
.right-item-style{
.content-right-top-style {
width: 100%;
text-align: center;
p {
color: $color-default-bright;
margin: 0 !important;
padding: 0 !important;
}
.teacherNumColor {
font-size: 28px;
font-weight: 500;
line-height: 28px;
}
.teacherNumLine {
background: #0C3270;
width: 2px;
height: auto;
}
}
.content-right-bot-style {
width: 100%;
height: auto;
margin-top: 9px;
.content-right-bot-style-box {
border: 1px solid $color-default-bright;
border-radius: 5px;
.col-title {
background: #183B79;
text-align: center;
color: $color-default-bright;
border-radius: 5px 5px 0 0;
}
.col-row {
color: $color-default-bright;
display: flex;
justify-content: space-between;
text-align: center;
.genderLine {
background: $color-default-bright;
width: 1px;
height: auto;
}
}
}
}
.right-item-style {
width: calc(50% - 5px);
height: 45px;
background-color: #183a79;
@ -154,21 +386,21 @@
}
}
}
.info-center-style{
.info-center-style {
width: 100%;
height: 70px;
display: flex;
align-items: center;
/deep/ .ant-select-selection{
/deep/ .ant-select-selection {
background-color: transparent;
color: white;
border: 1px solid #1379c8;
.ant-select-arrow{
.ant-select-arrow {
color: white;
}
}
}
.info-bottom-style{
.info-bottom-style {
width: 100%;
height: 330px;
/deep/ .ant-table-placeholder {
@ -184,10 +416,10 @@
border: 1px solid #4e9fb4;
}
}
/deep/ .ant-table-thead > tr > th, .ant-table-tbody > tr > td{
/deep/ .ant-table-thead > tr > th, .ant-table-tbody > tr > td {
padding: 10px !important;
}
/deep/ .ant-table-tbody > tr > td{
/deep/ .ant-table-tbody > tr > td {
border: 1px solid #4e9fb4;
}
}

Loading…
Cancel
Save