Przeglądaj źródła

create 科研成果看板

linweizeng 3 lat temu
rodzic
commit
3282589d3f

+ 119 - 0
src/views/scientificPayoffs/compontent/scientificBox.vue

@@ -0,0 +1,119 @@
+<template>
+    <div id="middle-card">
+        <dv-decoration-11 style="width: 200px; height: 60px; margin: 10px 0">{{ dataItem.title }}</dv-decoration-11>
+        <div class="chart_box">
+            <div class="leftItem">
+                <div style="width: 100%; height: 100%" ref="Echart"></div>
+            </div>
+            <dv-decoration-2 :reverse="true" style="width: 5px; height: 100%" />
+            <div class="rightItem">
+                <scroll-board-vue :config="dataItem.config" v-if="listShow"></scroll-board-vue>
+                <div v-else class="no_data">暂无数据</div>
+            </div>
+        </div>
+        <dv-decoration-10 style="width: 100%; height: 5px" v-if="bottomBorder" />
+    </div>
+</template>
+
+<script>
+import { barData } from '../js/index.js'
+import echarts from 'echarts'
+import scrollBoardVue from './scrollBoard.vue'
+export default {
+    name: 'scientificBox',
+    components: {
+        scrollBoardVue
+    },
+    props: {
+        //控制下方线条
+        bottomBorder: {
+            type: Boolean,
+            default: true
+        },
+        //控制列表显示
+        listShow: {
+            type: Boolean,
+            default: false
+        },
+        //控制图标显示
+        dataShow: {
+            type: Boolean,
+            default: false
+        },
+        //列表和图标数据组合
+        dataItem: {
+            type: Object,
+            default: () => ({
+                title: '',
+                dataCount: {},
+                config: {
+                    header: '',
+                    data: []
+                }
+            })
+        }
+    },
+    data() {
+        return {
+            config: {}
+        }
+    },
+    watch: {
+        dataItem: {
+            handler() {
+                this.init()
+            },
+            deep: true
+        }
+    },
+    mounted() {
+        this.init()
+    },
+    methods: {
+        init() {
+            const accept = echarts.init(this.$refs.Echart)
+            barData.xAxis.data = this.dataItem.dataCount.xAxis
+            barData.series[0].data = this.dataItem.dataCount.series
+            accept.setOption(JSON.parse(JSON.stringify(barData)))
+        }
+    }
+}
+</script>
+
+<style lang="scss" scoped>
+.chart_box {
+    position: relative;
+    display: flex;
+    justify-content: space-between;
+    width: 100%;
+    height: calc(100% - 70px);
+    .leftItem {
+        width: 34%;
+        height: 100%;
+        background-color: rgba(6, 30, 93, 0.5);
+    }
+    .rightItem {
+        width: 62%;
+        height: 100%;
+        background-color: rgba(6, 30, 93, 0.5);
+
+        .no_data {
+            font-size: 20px;
+            text-align: center;
+            margin-top: 20px;
+        }
+    }
+}
+
+#middle-card {
+    width: 96%;
+    height: calc((100% - 105px) / 2);
+    padding: 0 2%;
+    margin: 25px 0;
+    .dv-decoration-10 {
+        width: 100%;
+        margin: 12px 0;
+        height: 5px;
+    }
+}
+</style>

+ 29 - 0
src/views/scientificPayoffs/compontent/scrollBoard.vue

@@ -0,0 +1,29 @@
+<template>
+    <div style="height: 100%">
+        <dv-scroll-board :config="config" style="width: 100%; height: 100%" />
+    </div>
+</template>
+
+<script>
+export default {
+    name: 'scrollBoard',
+    props:{
+        config: {
+            type: Object,
+            default: () => ({
+                header: [],
+                data: []
+            })
+        }
+    },
+    created(){
+    },
+    data() {
+        return {
+        }
+    }
+}
+</script>
+
+<style scoped>
+</style>

BIN
src/views/scientificPayoffs/img/bg.png


+ 448 - 0
src/views/scientificPayoffs/index.vue

@@ -0,0 +1,448 @@
+<template>
+    <div class="contentBox">
+        <dv-full-screen-container>
+            <!-- 头部内容 -->
+            <div class="header">
+                <dv-decoration-8 class="left" />
+                <dv-decoration-5 class="center" />
+                <dv-decoration-8 class="right" :reverse="true" />
+                <div class="title">{{ titleName }}</div>
+                <div class="time">
+                    <!-- <span>年度:</span> -->
+                    <el-date-picker v-model="month" type="year" value-format="yyyy" format="yyyy" placeholder="日期选择" style="width: 120px" :readonly="false" :editable="true" :clearable="false" @change="updateAll" />
+                </div>
+                <div class="back" @click.prevent="goBack()">
+                    <dv-border-box-8>返回</dv-border-box-8>
+                </div>
+                <div class="previousPage" @click.prevent="previou()">
+                    <dv-border-box-8>上一页</dv-border-box-8>
+                </div>
+                <div class="nextPage" @click.prevent="next()">
+                    <dv-border-box-8>下一页</dv-border-box-8>
+                </div>
+            </div>
+            <dv-border-box-1 class="contentBorder">
+                <scientificBoxVue class="contentBorderBox" v-if="indexData == 1 && kyxmListShow && kyxmDataShow" :listShow="kyxmListShow" :dataShow="kyxmDataShow" :dataItem="kyxmData"></scientificBoxVue>
+                <scientificBoxVue class="contentBorderBox" :bottomBorder="false" v-if="indexData == 1 && kjhjcgDataShow && kjhjcgListShow" :listShow="kjhjcgListShow" :dataShow="kjhjcgDataShow" :dataItem="kjhjcgData"></scientificBoxVue>
+                <scientificBoxVue class="contentBorderBox" v-if="indexData == 2 && SCIwztjbDataShow && SCIwztjbListShow" :listShow="SCIwztjbListShow" :dataShow="SCIwztjbDataShow" :dataItem="SCIwztjbData"></scientificBoxVue>
+                <scientificBoxVue class="contentBorderBox" :bottomBorder="false" v-if="indexData == 2 && zwlwListShow && zwlwDataShow" :listShow="zwlwListShow" :dataShow="zwlwDataShow" :dataItem="zwlwData"></scientificBoxVue>
+                <scientificBoxVue class="contentBorderBox" v-if="indexData == 3 && zhuZuoListShow && zhuZuoDataShow" :listShow="zhuZuoListShow" :dataShow="zhuZuoDataShow" :dataItem="zhuZuoData"></scientificBoxVue>
+                <scientificBoxVue class="contentBorderBox" :bottomBorder="false" v-if="indexData == 3 && zhuanLiListShow && zhuanLiDataShow" :listShow="zhuanLiListShow" :dataShow="zhuanLiDataShow" :dataItem="zhuanLiData"></scientificBoxVue>
+                <scientificBoxVue class="contentBorderBox" :bottomBorder="false" v-if="indexData == 4 && jxjyxmxshdListShow && jxjyxmxshdDataShow" :listShow="jxjyxmxshdListShow" :dataShow="jxjyxmxshdDataShow" :dataItem="jxjyxmxshdData"></scientificBoxVue>
+            </dv-border-box-1>
+        </dv-full-screen-container>
+    </div>
+</template>
+
+<script>
+import screenfull from 'screenfull'
+import scientificBoxVue from './compontent/scientificBox.vue'
+import curdPost from '@/business/platform/form/utils/custom/joinCURD.js'
+import indexFile from './js/index.js'
+export default {
+    name: 'index',
+    components: { scientificBoxVue },
+    data() {
+        return {
+            titleName: '科研成果看板',
+            month: '',
+            timer: '',
+            indexData: 1,
+            //科研项目
+            kyxmListShow: false,
+            kyxmDataShow: false,
+            kyxmData: {
+                title: '科研项目',
+                dataCount: {},
+                config: {
+                    header: '',
+                    data: []
+                }
+            },
+
+            //科技获奖成果
+            kjhjcgListShow: false,
+            kjhjcgDataShow: false,
+            kjhjcgData: {
+                title: '科研获奖成果',
+                dataCount: {},
+                config: {
+                    header: '',
+                    data: []
+                }
+            },
+
+            //SCI文章统计表
+            SCIwztjbListShow: false,
+            SCIwztjbDataShow: false,
+            SCIwztjbData: {
+                title: 'SCI文章统计表',
+                dataCount: {},
+                config: {
+                    header: '',
+                    data: [],
+
+                }
+            },
+
+            //中文论文
+            zwlwListShow: false,
+            zwlwDataShow: false,
+            zwlwData: {
+                title: '中文论文',
+                dataCount: {},
+                config: {
+                    header: '',
+                    data: []
+                }
+            },
+
+            //著作
+            zhuZuoListShow: false,
+            zhuZuoDataShow: false,
+            zhuZuoData: {
+                title: '著作',
+                dataCount: {},
+                config: {
+                    header: '',
+                    data: []
+                }
+            },
+
+            //专利
+            zhuanLiListShow: false,
+            zhuanLiDataShow: false,
+            zhuanLiData: {
+                title: '专利',
+                dataCount: {},
+                config: {
+                    header: '',
+                    data: []
+                }
+            },
+
+            //继续教育项目/学术活动
+            jxjyxmxshdListShow: false,
+            jxjyxmxshdDataShow: false,
+            jxjyxmxshdData: {
+                title: '继续教育项目/学术活动',
+                dataCount: {},
+                config: {
+                    header: '',
+                    data: []
+                }
+            },
+        }
+    },
+    created() {
+        if (screenfull.isEnabled && !screenfull.isFullscreen) {
+            this.allView()
+        }
+        this.getInit()
+
+        this.timer = setInterval(() => {
+            this.getInit()
+        }, 600000)
+    },
+    beforeDestroy() {
+        if (screenfull.isFullscreen) {
+            screenfull.toggle()
+        }
+        clearInterval(this.timer)
+    },
+    methods: {
+        //初始化数据
+        getInit() {
+            let nowDate = new Date(new Date().getTime() + 8 * 60 * 60 * 1000)
+            let month = nowDate.toJSON().split('T').join(' ').substr(0, 4)
+            this.month = month
+            this.updateAll(month)
+        },
+        allView() {
+            // 默认显示全屏
+            screenfull.request()
+        },
+        //返回
+        goBack() {
+            this.$router.back(-1)
+        },
+        //上一页
+        previou() {
+            if (this.indexData == 1) {
+                this.indexData = 4
+            } else {
+                this.indexData--
+            }
+            this.updateAll(this.month)
+        },
+        //下一页
+        next() {
+            if (this.indexData == 4) {
+                this.indexData = 1
+            } else {
+                this.indexData++
+            }
+            this.updateAll(this.month)
+        },
+        //时间
+        updateAll(e) {
+            if(this.indexData == 1){
+                this.getKyxmDataAndList(e)
+                this.getKjhjcgDataAndList(e)
+            }
+            if(this.indexData == 2){
+                this.getSCIwztjbDataAndList(e)
+                this.getZwlwDataAndList(e)
+            }
+            if(this.indexData == 3){
+                this.getZhuZuoDataAndList(e)
+                this.getZhuanLiDataAndList(e)
+            }
+            if(this.indexData == 4){
+                this.getJxjyxmxshdDataAndList(e)
+            }
+        },
+
+        //接口
+        //科研项目
+        getKyxmDataAndList(month) {
+            let sql1 = `select tk.*,ie.NAME_ from t_kyxm tk left join ibps_party_employee ie on ie.ID_ = tk.xing_ming_ and ie.STATUS_= 'actived' and ie.ID_ != '1' and ie.ID_ != '-1' and ie.ID_ != '702117247933480960' and ie.ID_ not like '%1041786072788369408%' where tk.lei_xing_ = '个人' and tk.create_time_ like '%${month}%' order by tk.create_time_ desc`
+            let sql2 = `select ie.NAME_,count(tk.id_) as count from ibps_party_employee ie left join t_kyxm tk on ie.ID_ = tk.xing_ming_ and tk.lei_xing_ = '个人' and tk.create_time_ like '%${month}%' where ie.STATUS_= 'actived' and ie.ID_ != '1' and ie.ID_ != '-1' and ie.ID_ != '702117247933480960' and ie.GROUP_ID_ not like '%1041786072788369408%' GROUP BY ie.id_`
+            Promise.all([curdPost('sql', sql1), curdPost('sql', sql2)]).then(([res1,res2]) => {
+                if (res1.state == 200) {
+                    let datas = res1.variables.data
+                    let config = indexFile.getKyxmList(datas)
+                    this.kyxmData.config = JSON.parse(JSON.stringify(config))
+                    this.kyxmListShow = true
+                }
+                if (res2.state == 200) {
+                    let datas = res2.variables.data
+                    let config = indexFile.getKyxmData(datas)
+                    this.kyxmData.dataCount = JSON.parse(JSON.stringify(config))
+                    this.kyxmDataShow = true
+                }
+            })
+        },
+
+        //科技获奖成果
+        getKjhjcgDataAndList(month) {
+            let sql1 = `select tk.*,ie.NAME_ from t_kjhjcg tk left join ibps_party_employee ie on ie.ID_ = tk.xing_ming_ and ie.STATUS_= 'actived' and ie.ID_ != '1' and ie.ID_ != '-1' and ie.ID_ != '702117247933480960' and ie.ID_ not like '%1041786072788369408%' where tk.lei_xing_ = '个人' and tk.create_time_ like '%${month}%' order by tk.create_time_ desc`
+            let sql2 = `select ie.NAME_,count(tk.id_) as count from ibps_party_employee ie left join t_kjhjcg tk on ie.ID_ = tk.xing_ming_ and tk.lei_xing_ = '个人' and tk.create_time_ like '%${month}%' where ie.STATUS_= 'actived' and ie.ID_ != '1' and ie.ID_ != '-1' and ie.ID_ != '702117247933480960' and ie.GROUP_ID_ not like '%1041786072788369408%' GROUP BY ie.id_`
+            Promise.all([curdPost('sql', sql1), curdPost('sql', sql2)]).then(([res1,res2]) => {
+                if (res1.state == 200) {
+                    let datas = res1.variables.data
+                    let config = indexFile.getkjhjcgList(datas)
+                    this.kjhjcgData.config = config
+                    this.kjhjcgListShow = true
+                }
+                if (res2.state == 200) {
+                    let datas = res2.variables.data
+                    let config = indexFile.getKyxmData(datas)
+                    this.kjhjcgData.dataCount = JSON.parse(JSON.stringify(config))
+                    this.kjhjcgDataShow = true
+                }
+            })
+        },
+
+
+        //科技获奖成果
+        getSCIwztjbDataAndList(month) {
+            let sql1 = `select tk.*,ie.NAME_ from t_SCIwztjb tk left join ibps_party_employee ie on ie.ID_ = tk.xing_ming_ and ie.STATUS_= 'actived' and ie.ID_ != '1' and ie.ID_ != '-1' and ie.ID_ != '702117247933480960' and ie.ID_ not like '%1041786072788369408%' where tk.lei_xing_ = '个人' and tk.create_time_ like '%${month}%' order by tk.create_time_ desc`
+            let sql2 = `select ie.NAME_,count(tk.id_) as count from ibps_party_employee ie left join t_SCIwztjb tk on ie.ID_ = tk.xing_ming_ and tk.lei_xing_ = '个人' and tk.create_time_ like '%${month}%' where ie.STATUS_= 'actived' and ie.ID_ != '1' and ie.ID_ != '-1' and ie.ID_ != '702117247933480960' and ie.GROUP_ID_ not like '%1041786072788369408%' GROUP BY ie.id_`
+            Promise.all([curdPost('sql', sql1), curdPost('sql', sql2)]).then(([res1,res2]) => {
+                if (res1.state == 200) {
+                    let datas = res1.variables.data
+                    let config = indexFile.getSCIwztjbList(datas)
+                    this.SCIwztjbData.config = config
+                    this.SCIwztjbListShow = true
+                }
+                if (res2.state == 200) {
+                    let datas = res2.variables.data
+                    let config = indexFile.getKyxmData(datas)
+                    this.SCIwztjbData.dataCount = JSON.parse(JSON.stringify(config))
+                    this.SCIwztjbDataShow = true
+                }
+            })
+        },
+
+        //中文论文
+        getZwlwDataAndList(month) {
+            let sql1 = `select tk.*,ie.NAME_ from t_zwlw tk left join ibps_party_employee ie on ie.ID_ = tk.xing_ming_ and ie.STATUS_= 'actived' and ie.ID_ != '1' and ie.ID_ != '-1' and ie.ID_ != '702117247933480960' and ie.ID_ not like '%1041786072788369408%' where tk.lei_xing_ = '个人' and tk.create_time_ like '%${month}%' order by tk.create_time_ desc`
+            let sql2 = `select ie.NAME_,count(tk.id_) as count from ibps_party_employee ie left join t_zwlw tk on ie.ID_ = tk.xing_ming_ and tk.lei_xing_ = '个人' and tk.create_time_ like '%${month}%' where ie.STATUS_= 'actived' and ie.ID_ != '1' and ie.ID_ != '-1' and ie.ID_ != '702117247933480960' and ie.GROUP_ID_ not like '%1041786072788369408%' GROUP BY ie.id_`
+            Promise.all([curdPost('sql', sql1), curdPost('sql', sql2)]).then(([res1,res2]) => {
+                if (res1.state == 200) {
+                    let datas = res1.variables.data
+                    let config = indexFile.getZwlwList(datas)
+                    this.zwlwData.config = config
+                    this.zwlwListShow = true
+                }
+                if (res2.state == 200) {
+                    let datas = res2.variables.data
+                    let config = indexFile.getKyxmData(datas)
+                    this.zwlwData.dataCount = JSON.parse(JSON.stringify(config))
+                    this.zwlwDataShow = true
+                }
+            })
+        },
+
+
+        //著作
+        getZhuZuoDataAndList(month) {
+            let sql1 = `select tk.*,ie.NAME_ from t_zz tk left join ibps_party_employee ie on ie.ID_ = tk.xing_ming_ and ie.STATUS_= 'actived' and ie.ID_ != '1' and ie.ID_ != '-1' and ie.ID_ != '702117247933480960' and ie.ID_ not like '%1041786072788369408%' where tk.lei_xing_ = '个人' and tk.create_time_ like '%${month}%' order by tk.create_time_ desc`
+            let sql2 = `select ie.NAME_,count(tk.id_) as count from ibps_party_employee ie left join t_zz tk on ie.ID_ = tk.xing_ming_ and tk.lei_xing_ = '个人' and tk.create_time_ like '%${month}%' where ie.STATUS_= 'actived' and ie.ID_ != '1' and ie.ID_ != '-1' and ie.ID_ != '702117247933480960' and ie.GROUP_ID_ not like '%1041786072788369408%' GROUP BY ie.id_`
+            Promise.all([curdPost('sql', sql1), curdPost('sql', sql2)]).then(([res1,res2]) => {
+                if (res1.state == 200) {
+                    let datas = res1.variables.data
+                    let config = indexFile.getZhuZuoList(datas)
+                    this.zhuZuoData.config = config
+                    this.zhuZuoListShow = true
+                }
+                if (res2.state == 200) {
+                    let datas = res2.variables.data
+                    let config = indexFile.getKyxmData(datas)
+                    this.zhuZuoData.dataCount = JSON.parse(JSON.stringify(config))
+                    this.zhuZuoDataShow = true
+                }
+            })
+        },
+
+        //专利
+        getZhuanLiDataAndList(month) {
+            let sql1 = `select tk.*,ie.NAME_ from t_zl tk left join ibps_party_employee ie on ie.ID_ = tk.xing_ming_ and ie.STATUS_= 'actived' and ie.ID_ != '1' and ie.ID_ != '-1' and ie.ID_ != '702117247933480960' and ie.ID_ not like '%1041786072788369408%' where tk.lei_xing_ = '个人' and tk.create_time_ like '%${month}%' order by tk.create_time_ desc`
+            let sql2 = `select ie.NAME_,count(tk.id_) as count from ibps_party_employee ie left join t_zl tk on ie.ID_ = tk.xing_ming_ and tk.lei_xing_ = '个人' and tk.create_time_ like '%${month}%' where ie.STATUS_= 'actived' and ie.ID_ != '1' and ie.ID_ != '-1' and ie.ID_ != '702117247933480960' and ie.GROUP_ID_ not like '%1041786072788369408%' GROUP BY ie.id_`
+            Promise.all([curdPost('sql', sql1), curdPost('sql', sql2)]).then(([res1,res2]) => {
+                if (res1.state == 200) {
+                    let datas = res1.variables.data
+                    let config = indexFile.getZhuanLiList(datas)
+                    this.zhuanLiData.config = config
+                    this.zhuanLiListShow = true
+                }
+                if (res2.state == 200) {
+                    let datas = res2.variables.data
+                    let config = indexFile.getKyxmData(datas)
+                    this.zhuanLiData.dataCount = JSON.parse(JSON.stringify(config))
+                    this.zhuanLiDataShow = true
+                }
+            })
+        },
+
+        //继续教育项目/学术活动
+        getJxjyxmxshdDataAndList(month) {
+            let sql1 = `select tk.*,ie.NAME_ from t_jxjyxmxshd tk left join ibps_party_employee ie on ie.ID_ = tk.xing_ming_ and ie.STATUS_= 'actived' and ie.ID_ != '1' and ie.ID_ != '-1' and ie.ID_ != '702117247933480960' and ie.ID_ not like '%1041786072788369408%' where tk.lei_xing_ = '个人' and tk.create_time_ like '%${month}%' order by tk.create_time_ desc`
+            let sql2 = `select ie.NAME_,count(tk.id_) as count from ibps_party_employee ie left join t_jxjyxmxshd tk on ie.ID_ = tk.xing_ming_ and tk.lei_xing_ = '个人' and tk.create_time_ like '%${month}%' where ie.STATUS_= 'actived' and ie.ID_ != '1' and ie.ID_ != '-1' and ie.ID_ != '702117247933480960' and ie.GROUP_ID_ not like '%1041786072788369408%' GROUP BY ie.id_`
+            Promise.all([curdPost('sql', sql1), curdPost('sql', sql2)]).then(([res1,res2]) => {
+                if (res1.state == 200) {
+                    let datas = res1.variables.data
+                    let config = indexFile.getJxjyxmxshdList(datas)
+                    this.jxjyxmxshdData.config = config
+                    this.jxjyxmxshdListShow = true
+                }
+                if (res2.state == 200) {
+                    let datas = res2.variables.data
+                    let config = indexFile.getKyxmData(datas)
+                    this.jxjyxmxshdData.dataCount = JSON.parse(JSON.stringify(config))
+                    this.jxjyxmxshdDataShow = true
+                }
+            })
+        },
+    }
+}
+</script>
+
+<style lang="scss"  scoped>
+.contentBox {
+    width: 100%;
+    height: 100%;
+    background-color: #030409;
+    position: absolute;
+    color: #fff;
+    z-index: 999;
+
+    #dv-full-screen-container {
+        background-image: url('./img/bg.png');
+        background-size: 100% 100%;
+        box-shadow: 0 0 3px blue;
+        display: flex;
+        flex-direction: column;
+    }
+
+    .header {
+        position: relative;
+        width: 100%;
+        height: 100px;
+        display: flex;
+        justify-content: space-between;
+        flex-shrink: 0;
+        .left,
+        .right {
+            width: 25%;
+            height: 38px;
+        }
+        .center {
+            width: 40%;
+            height: 60px;
+            margin-top: 30px;
+        }
+        .title {
+            position: absolute;
+            font-size: 30px;
+            font-weight: bold;
+            left: 50%;
+            top: 15px;
+            transform: translateX(-50%);
+        }
+        .time,
+        .back {
+            width: 8%;
+            cursor: pointer;
+            height: 2.825rem;
+            line-height: 2.825rem;
+            text-align: center;
+            margin-top: 2.5%;
+            flex: 1;
+            position: absolute;
+            color: #ffffff;
+        }
+
+        .previousPage {
+            width: 4%;
+            cursor: pointer;
+            height: 2.825rem;
+            line-height: 2.825rem;
+            text-align: center;
+            margin-top: 2.5%;
+            flex: 1;
+            position: absolute;
+            color: #ffffff;
+            left: 11%;
+        }
+        .nextPage {
+            width: 4%;
+            cursor: pointer;
+            height: 2.825rem;
+            line-height: 2.825rem;
+            text-align: center;
+            margin-top: 2.5%;
+            flex: 1;
+            position: absolute;
+            color: #ffffff;
+            right: 11%;
+        }
+        .time {
+            display: flex;
+            justify-content: flex-end;
+            width: 20%;
+            right: 75%;
+        }
+        .back {
+            left: 75%;
+        }
+    }
+}
+
+.contentBorder {
+    .contentBorderBox {
+        height: 50%;
+    }
+}
+</style>

+ 264 - 0
src/views/scientificPayoffs/js/index.js

@@ -0,0 +1,264 @@
+import echarts from "echarts"
+export default {
+    //轮播表数据封装
+    getDataList(data){
+        let config = {
+            header: data.header,
+            data: data.data,
+            rowNum: 6,
+            headerHeight: 45,
+            columnWidth: [100]
+        }
+        return config
+    },
+
+    //科研项目
+    getKyxmList(datas) {
+        let header = ['姓名', '项目编号', '项目资质单位', '项目类型', '项目名称', '立项经费(万元)', '项目起止时间', '主持/参与']
+        let data = []
+        datas.forEach((item, index) => {
+            let list = []
+            list.push(item.NAME_ || '')
+            list.push(item.xiang_mu_bian_hao || '')
+            list.push(item.zi_zhi_dan_wei_ || '')
+            list.push(item.xiang_mu_lei_xing || '')
+            list.push(item.xiang_mu_ming_che || '')
+            list.push(item.li_xiang_jing_fei || '')
+            list.push(item.qi_zhi_shi_jian_ || '')
+            list.push(item.zhu_chi_can_yu_ || '')
+            data.push(list)
+        });
+        let dataList = {
+            header: header,
+            data: data
+        }
+        let config = this.getDataList(dataList)
+        return config
+    },
+    //科研获奖成果
+    getkjhjcgList(datas) {
+        let header = ['姓名', '获奖者', '单位', '奖励类型', '完成人', '排名']
+        let data = []
+        datas.forEach((item, index) => {
+            let list = []
+            list.push(item.NAME_ || '')
+            list.push(item.huo_jiang_zhe_ || '')
+            list.push(item.dan_wei_ || '')
+            list.push(item.jiang_li_lei_xing || '')
+            list.push(item.wan_cheng_ren_ || '')
+            list.push(item.pai_ming_ || '')
+            data.push(list)
+        });
+        let dataList = {
+            header: header,
+            data: data
+        }
+        let config = this.getDataList(dataList)
+        return config
+    },
+    //SCI文章统计表
+    getSCIwztjbList(datas) {
+        let header = ['姓名', '全部作者', '论文题目', '期刊名称', '期卷号', '发表时间', '影响因子IF', '作者排名']
+        let data = []
+        datas.forEach((item, index) => {
+            let list = []
+            list.push(item.NAME_ || '')
+            list.push(item.quan_bu_zuo_zhe_ || '')
+            list.push(item.lun_wen_ti_mu_ || '')
+            list.push(item.qi_kan_ming_cheng || '')
+            list.push(item.qi_juan_hao_ || '')
+            list.push(item.fa_biao_shi_jian_ || '')
+            list.push(item.ying_xiang_y_z_if || '')
+            list.push(item.zuo_zhe_pai_ming_ || '')
+            data.push(list)
+        });
+        let dataList = {
+            header: header,
+            data: data
+        }
+        let config = this.getDataList(dataList)
+        return config
+    },
+    //中文论文
+    getZwlwList(datas) {
+        let header = ['姓名', '全部作者', '论文题目', '期刊名称', '期卷号', '发表时间', '期刊类别', '作者排名']
+        let data = []
+        datas.forEach((item, index) => {
+            let list = []
+            list.push(item.NAME_ || '')
+            list.push(item.quan_bu_zuo_zhe_ || '')
+            list.push(item.lun_wen_ti_mu_ || '')
+            list.push(item.qi_kan_ming_cheng || '')
+            list.push(item.qi_juan_hao_ || '')
+            list.push(item.fa_biao_shi_jian_ || '')
+            list.push(item.qi_kan_lei_bie_ || '')
+            list.push(item.zuo_zhe_pai_ming_ || '')
+            data.push(list)
+        });
+        let dataList = {
+            header: header,
+            data: data
+        }
+        let config = this.getDataList(dataList)
+        return config
+    },
+    //著作
+    getZhuZuoList(datas) {
+        let header = ['姓名', '主编/编委', '专著名称', '出版社', '出版时间', '编撰字数']
+        let data = []
+        datas.forEach((item, index) => {
+            let list = []
+            list.push(item.NAME_ || '')
+            list.push(item.zhu_bian_bian_wei || '')
+            list.push(item.zhuan_zhuo_ming_c || '')
+            list.push(item.chu_ban_she_ || '')
+            list.push(item.chu_ban_shi_jian_ || '')
+            list.push(item.bian_zhuan_zi_shu || '')
+            data.push(list)
+        });
+        let dataList = {
+            header: header,
+            data: data
+        }
+        let config = this.getDataList(dataList)
+        return config
+    },
+    //专利
+    getZhuanLiList(datas) {
+        let header = ['姓名', '专利名称', '专利权人', '类别', '申请时间', '授权时间', '作者排名']
+        let data = []
+        datas.forEach((item, index) => {
+            let list = []
+            list.push(item.NAME_ || '')
+            list.push(item.zhuan_li_ming_che || '')
+            list.push(item.zhuan_li_quan_ren || '')
+            list.push(item.lei_bie_ || '')
+            list.push(item.shen_qing_shi_jia || '')
+            list.push(item.shou_quan_shi_jia || '')
+            list.push(item.zuo_zhe_pai_ming_ || '')
+            data.push(list)
+        });
+        let dataList = {
+            header: header,
+            data: data
+        }
+        let config = this.getDataList(dataList)
+        return config
+    },
+    //继续教育项目/学术活动
+    getJxjyxmxshdList(datas) {
+        let header = ['姓名', '项目编号', '会议名称', '负责人', '学分级别', '举办时间', '举办地点', '合作单位']
+        let data = []
+        datas.forEach((item, index) => {
+            let list = []
+            list.push(item.NAME_ || '')
+            list.push(item.xiang_mu_bian_hao || '')
+            list.push(item.hui_yi_ming_cheng || '')
+            list.push(item.fu_ze_ren_ || '')
+            list.push(item.xue_fen_ji_bie_ || '')
+            list.push(item.ju_ban_shi_jian_ || '')
+            list.push(item.ju_ban_di_dian_ || '')
+            list.push(item.he_zuo_dan_wei_ || '')
+            data.push(list)
+        });
+        let dataList = {
+            header: header,
+            data: data
+        }
+        let config = this.getDataList(dataList)
+        return config
+    },
+    //图标数据封装
+    getKyxmData(datas) {
+        let list = []
+        let listData = []
+        datas.forEach(item => {
+            list.push(item.NAME_)
+            let o = {
+                name: item.NAME_,
+                value: item.count
+            }
+            listData.push(o)
+        })
+        let config = {
+            xAxis: list,
+            series: listData
+        }
+        return config
+    }
+}
+
+
+export const barData = {
+    title: {
+        show: false,
+        text: '',
+        textStyle: {
+            color: '#fff',
+            fontSize: 20,
+            fontWeight: '600'
+        },
+        textAlign: 'center',
+        left: '50%',
+        top: '20px'
+    },
+    xAxis: {
+        type: 'category',
+        data: [],
+        axisTick: {
+            alignWithLabel: true
+        },
+        axisLabel: {
+            style: {
+                fill: '#fff'
+            }
+        },
+        axisLine: {
+            lineStyle: {
+                color: '#fff'
+            }
+        }
+    },
+    yAxis: {
+        type: 'value',
+        name: '',
+        nameTextStyle: {
+            color: '#fff',
+            fontSize: 14
+        },
+        splitLine: {
+            show: false
+        },
+        axisLine: {
+            lineStyle: {
+                color: '#fff'
+            }
+        }
+    },
+    series: [{
+        type: 'bar',
+        name: '',
+        data: [],
+        barMaxWidth: '35px',
+        itemStyle: {
+            color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
+                { offset: 0, color: "#83bff6" },
+                { offset: 0.5, color: "#188df0" },
+                { offset: 1, color: "#188df0" },
+            ])
+        },
+        emphasis: {
+            itemStyle: {
+                color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
+                    { offset: 0, color: "#2378f7" },
+                    { offset: 0.7, color: "#2378f7" },
+                    { offset: 1, color: "#83bff6" },
+                ])
+            }
+        }
+    }],
+    tooltip: {
+        show: true,
+        trigger: 'axis'
+    }
+}