Browse Source

完善优化业绩指标计划页面功能,配合后端服务联调;单位营业收入页面单位服务修改为和单位权重配置页面的一样;根据甲方需求应用商店登录时,为不显示登录页页面一闪而过情况加判断并且加loading功能;

SunZehao 1 year ago
parent
commit
a8204787b9

+ 7 - 0
src/api/api.js

@@ -282,6 +282,13 @@ export function apiGetdeptresponsibilitySave(params) {
 export function apiGetevaluationdeptplanSave(params) {
     return httpRequest.post('evaluation-dept-plan/save', params)
 }
+//----"部门考评目标启动-检查"
+export function apiGetevaluationdeptplanverifyDept() {
+    return httpRequest({
+        url: 'evaluation-dept-plan/verifyDept',
+        method: 'get'
+    })
+}
 //----"部门绩效结果考核申报-新增"
 export function apiPostevaluationdeptadSave(params) {
     return httpRequest.post('evaluation-dept-ad/save', params)

BIN
src/assets/mobeilImg/closeMenu.png


BIN
src/assets/mobeilImg/menuBack.png


BIN
src/assets/mobeilImg/menuBack2.png


+ 17 - 2
src/components/assessment/evaluationDeptStartPage.vue

@@ -156,7 +156,7 @@ import btns from '../elbuttonS.vue'
 import seachs from '../seachGroup.vue'
 import {apiGetevaluatiodeptplanList, apiGetevaluationdeptplanSave,apiGetdoAction,apiGetorganizationstructureFromTree,
 apiGetworkflowgetOpinion,apiGetevaluationdeptplanModify,apiGetevaluationdeptplanReport,apiGetevaluationdownloadReport,
-apideptModifyState, apiGetdatadictionaryList, apiPostevaluationdeptplanDelete} from '../../api/api'
+apideptModifyState, apiGetdatadictionaryList, apiPostevaluationdeptplanDelete, apiGetevaluationdeptplanverifyDept} from '../../api/api'
 export default {
     components: {
         startFromList,
@@ -300,7 +300,22 @@ export default {
             let that = this
             that.$refs[formName].validate((valid) => {
                 if (valid) {
-                    that.saveAndEditIndicatorData()
+                    apiGetevaluationdeptplanverifyDept().then(datas =>{
+                        if (datas && datas.data) {
+                            if (datas.data > 0) {
+                                that.$message({
+                                    message: '已存在'+datas.data+'个部门',
+                                    type: 'success'
+                                });
+                                that.saveAndEditIndicatorData()
+                            } else {
+                                that.$message({
+                                    message: '暂无配置部门,请到部门考评配置页面添加',
+                                    type: 'error'
+                                });
+                            }
+                        }
+                    })
                 }
             });
         },

+ 10 - 10
src/components/baseInfomation/moreBrandPage.vue

@@ -141,7 +141,7 @@
 <script>
 import seachs from '../seachGroup.vue'
 import btns from '../elbuttonS.vue'
-import {apiGetmultiplebrandtreeList, apiPostmultiplebrandSave, apiGetorganizationgetTree,
+import {apiGetmultiplebrandtreeList, apiPostmultiplebrandSave, apiGetorganizationgetListTwo,
 apiPostmultiplebrandRemove, apiGetbinsectionList, apiGetdatadictionaryList} from '../../api/api'
 export default {
     components: { btns, seachs },
@@ -191,7 +191,7 @@ export default {
     },
     created() {
         this.getMoreBrandData()
-        this.getOrganizetionData(23031000, 2)
+        this.getOrganizetionData()
         this.getDataDictionary()
     },
     methods:{
@@ -210,15 +210,15 @@ export default {
             })
         },
         //查询组织数据
-        getOrganizetionData(id, num) {
+        getOrganizetionData() {
             let that = this
-            let params = {
-                id: id,
-                num: num
-            }
-            apiGetorganizationgetTree(params).then(datas => {
-                if (datas && datas.data && datas.data[0].children.length > 0) {
-                    that.companyDatas = datas.data[0].children
+            // let params = {
+            //     id: id,
+            //     num: num
+            // }
+            apiGetorganizationgetListTwo().then(datas => {
+                if (datas && datas.data) {
+                    that.companyDatas = datas.data
                 }
             })
         },

+ 9 - 4
src/mobeilComponent/homeMobeilPage.vue

@@ -2,7 +2,7 @@
     <div :class="showDatePicker? 'homeMobeilMask': ''">
     </div>
     <div class="homeMobeilPage">
-        <van-nav-bar title="首页" />
+        <van-nav-bar title="年度单位评级" />
         <div class="mobeilVant">
             <div class="mobeilTop">
                 <div class="topLeft">
@@ -13,7 +13,7 @@
                 <div class="topRight">
                     <span>系统导航</span>
                     <!-- <van-icon name="wap-nav"  size="23" /> -->
-                    <img :src="daohangImg" alt="">
+                    <img :src="daohangImg" alt="" @click="chooseMenu">
                 </div>
             </div>
             <div class="mobeilMain">
@@ -38,7 +38,7 @@
                             <img :src="meidianImg" alt="" v-else-if="it.nameEn === 'MDYTH'">
                             <span>{{it.name}}</span>
                         </div>
-                        <img :src="moreImg" alt="" class="mainModelTit_right">
+                        <img :src="moreImg" alt="" class="mainModelTit_right" @click="enterDetail">
                     </div>
                     <div class="mainModelMsg">
                         <div class="mainTwo">
@@ -235,7 +235,12 @@ export default {
                 this.getEchartsData(item.echartsData.echarts, 'pieChart'+index)
             })
         },
-        
+        chooseMenu() {
+            this.$router.push({ path: "/menu"})
+        },
+        enterDetail() {
+            this.$router.push({ path: "/yearConpanyDetail"})
+        },
         getEchartsData(data, name) {
             let total = 0
             data.forEach(it =>{

+ 102 - 0
src/mobeilComponent/menuMobeilPage.vue

@@ -0,0 +1,102 @@
+<template>
+    <div class="menuMobeil">
+        <div class="menuBack">
+            <img :src="menuImg" alt="">
+        </div>
+        <div class="menuMain">
+            <div class="menuMainTop">
+                <img :src="menuImg2" alt="">
+                <p>全业务域考评系统</p>
+            </div>
+            <div class="menuMainBot">
+                <p @click="enterPage('mobeil')">年度单位评级</p>
+                <p @click="enterPage('quarterConpany')">季度单位评级</p>
+                <p @click="enterPage('report')">单位考评报告</p>
+                <p @click="enterPage('earlyWarning')">单位考评预警</p>
+                <p @click="enterPage('notification')">对标考评公告</p>
+                <img :src="closeMenu" alt="" @click="goBack">
+            </div>
+        </div>
+    </div>
+</template>
+
+<script>
+import menuImg from '../assets/mobeilImg/menuBack.png'
+import menuImg2 from '../assets/mobeilImg/menuBack2.png'
+import closeMenu from '../assets/mobeilImg/closeMenu.png'
+export default {
+    data() {
+        return {
+            menuImg: menuImg,
+            menuImg2: menuImg2,
+            closeMenu: closeMenu,
+        }
+    },
+    methods: {
+        goBack() {
+            this.$router.go(-1)
+        },
+        enterPage(type) {
+            this.$router.push({ path: "/"+type})
+        }
+    }
+}
+</script>
+
+<style lang='less'>
+.menuMobeil{
+    height: 100vh;
+    background-color: #184FB4;
+    .menuBack{
+        img{
+            width: 80%;
+            position: fixed;
+            top: 0;
+            left: 10%;
+        }
+    }
+    .menuMain{
+        width: calc(100% - 80px);
+        // height: 100%;
+        padding: 0 40px;
+        .menuMainTop{
+            position: relative;
+            top: 70px;
+            img{
+                width: 35px;
+                position: absolute;
+                left: 45%;
+            }
+            p{
+                font-family: MicrosoftYaHei;
+                color: #fff;
+                font-size: 20px;
+                font-weight: 400;
+                position: absolute;
+                left: 25%;
+                margin-top: 60px;
+            }
+        }
+        .menuMainBot{
+            position: relative;
+            top: 230px;
+            text-align: center;
+            border-top: 1px solid #fff;
+            p{
+                font-family: MicrosoftYaHei;
+                color: #fff;
+                font-size: 18px;
+                font-weight: 400;
+                line-height: 70px;
+                border-bottom: 1px solid #fff;
+            }
+            img{
+                width: 30px;
+                position: absolute;
+                left: 45%;
+                margin-top: 80px;
+            }
+        }
+    }
+}
+</style>

+ 319 - 0
src/mobeilComponent/yearConpanyPage.vue

@@ -0,0 +1,319 @@
+<template>
+    <div :class="showDatePicker? 'homeMobeilMask': ''">
+    </div>
+    <div class="yearConpanyPage">
+        <van-nav-bar title="年度单位评级详情" left-text="返回" @click-left="onClickLeft" />
+        <div class="mobeilVant">
+            <div class="mobeilTop">
+                <div class="topLeft">
+                    <!-- <van-icon name="star" size="20" /> -->
+                    <img :src="logoImg" alt="">
+                    <span>全业务域考评系统</span>
+                </div>
+                <div class="topRight">
+                    <span>系统导航</span>
+                    <!-- <van-icon name="wap-nav"  size="23" /> -->
+                    <img :src="daohangImg" alt="" @click="chooseMenu">
+                </div>
+            </div>
+            <div class="yearConpanyMain">
+                <div class="rankingList">
+                    <span>{{showDate}}年度排行榜</span>
+                    <img :src="dateImg" @click="changeDate" alt="">
+                    <van-date-picker
+                        v-model="currentDate"
+                        title="选择年份"
+                        :columns-type="['year']"
+                        @confirm="confirmFn"
+                        @cancel="cancelFn"
+                        v-if="showDatePicker"
+                        />
+                </div>
+                <div class="mainModel">
+                    <div class="yearConpanyMaintable">
+                        <div class="headerNameTit">
+                            <div class="headerNameTit_left">
+                                <span>排名</span>
+                                <span>单位名称</span>
+                            </div>
+                            <div class="headerNameTit_right">
+                                <span>级别</span>
+                                <span>得分</span>
+                            </div>
+                        </div>
+                        <!-- <div style="display: flex" v-for="(item, index) in it.tableDatas" :key="index">
+                            <div class="mainThreeMsg">
+                                <img :src="item.img" alt="">
+                                <div class="msgProgress">
+                                    <span>{{item.company}}</span>
+                                    <span>{{item.grade}}</span>
+                                    <span>{{item.score}}</span>
+                                </div>
+                            </div>
+                        </div> -->
+                    </div>
+                </div>
+            </div>
+        </div>
+    </div>
+</template>
+
+<script>
+import logoImg from '../assets/mobeilImg/logo.png'
+import daohangImg from '../assets/mobeilImg/daohang.png'
+import dateImg from '../assets/mobeilImg/date.png'
+import huodianImg from '../assets/mobeilImg/huodian.png'
+import shuidianImg from '../assets/mobeilImg/shuidian.png'
+import xinnengyuanImg from '../assets/mobeilImg/xinnengyuan.png'
+import meidianImg from '../assets/mobeilImg/meidian.png'
+import moreImg from '../assets/mobeilImg/more.png'
+import cup1 from '../assets/getwayImg/cup1.png'
+import cup2 from '../assets/getwayImg/cup2.png'
+import cup3 from '../assets/getwayImg/cup3.png'
+
+import {apiGetevaluationportallist} from '../api/api'
+export default {
+    data() {
+        return {
+            logoImg: logoImg,
+            daohangImg: daohangImg,
+            dateImg: dateImg,
+            huodianImg: huodianImg,
+            shuidianImg: shuidianImg,
+            xinnengyuanImg: xinnengyuanImg,
+            meidianImg: meidianImg,
+            moreImg: moreImg,
+            showDatePicker: false,
+            currentDate: [],
+            showDate: '',
+            cupDataYearArr: {
+                section: [],
+                integration: []
+            }
+        }
+    },
+    created() {
+        this.showDate = new Date().getFullYear()
+        // this.getGateWayData()
+    },
+    methods: {
+        // 获取首页数据
+        chooseMenu() {
+            this.$router.push({ path: "/menu"})
+        },
+        onClickLeft() {
+            this.$router.push({ path: "/mobeil"})
+        },
+        changeDate() {
+            this.showDatePicker = true
+        },
+        confirmFn(val) {
+            this.showDate = val.selectedValues[0]
+            console.log('riqi', val)
+            this.cancelFn()
+        },
+        cancelFn() {
+            this.showDatePicker = false
+        }
+    }
+}
+</script>
+
+<style lang="less">
+.homeMobeilMask{
+    position: fixed;
+    top: 0;
+    left: 0;
+    width: 100%;
+    height: 100%;
+    background-color: rgba(0,0,0,0.5);
+    z-index: 111;
+}
+.yearConpanyPage {
+    background-color: #184FB4;
+    .van-nav-bar{
+        width: 100%;
+        background-color: #184FB4;
+        color: #fff;
+        position: fixed;
+        top: 0;
+        .van-nav-bar__content{
+            .van-nav-bar__left{
+                .van-nav-bar__text{
+                    color: #fff;
+                }
+            }
+        }
+    }
+    .mobeilVant{
+        height: 100%;
+        margin-top: 45px;
+        border-radius: 10px 10px 0 0;
+        background-color: #fff;
+        .mobeilTop{
+            height: 60px;
+            display: flex;
+            justify-content: space-around;
+            .topLeft{
+                display: flex;
+                img{
+                    width: 24px;
+                    height: 28px;
+                    position: relative;
+                    top: 18px;
+                    left: -10px;
+                }
+                span{
+                    font-family: MicrosoftYaHei;
+                    font-weight: 600;
+                    font-size: 16px;
+                    color: #444950;
+                    line-height: 60px;
+                }
+            }
+            .topRight{
+                display: flex;
+                img{
+                    width: 22px;
+                    height: 18px;
+                    position: relative;
+                    top: 21px;
+                    left: 5px;
+                }
+                span{
+                    font-family: MicrosoftYaHei;
+                    font-weight: 400;
+                    font-size: 14px;
+                    color: #545960;
+                    line-height: 60px;
+                    margin-right: 5px;
+                }
+            }
+        }
+        .yearConpanyMain{
+            // height: 50px;
+            background-color: #ededf5;
+            padding: 17px 20px;
+            .rankingList{
+                width: 100%;
+                height: 45px;
+                background: #184FB4;
+                border-radius: 5px;
+                margin-bottom: 15px;
+                span{
+                    display: inline-block;
+                    width: 85%;
+                    text-align: center;
+                    font-family: MicrosoftYaHei;
+                    font-weight: 400;
+                    font-size: 16px;
+                    color: #fff;
+                    margin-right: 5px;
+                    position: relative;
+                    top: 12px;
+                    left: 8vw;
+                }
+                img{
+                    width: 22px;
+                    height: 18px;
+                    position: relative;
+                    top: 15px;
+                    right: 5px;
+                }
+                .van-picker{
+                    z-index: 222;
+                }
+            }
+            .mainModel{
+                background: #fff;
+                border-radius: 5px;
+                .yearConpanyMaintable{
+                    padding-top: 5px;
+                    border-right: 1px solid #E1E3EA;
+                    position: relative;
+                    .headerNameTit{
+                        display: flex;
+                        justify-content: space-between;
+                        padding: 0px 15px;
+                        margin-bottom: 5px;
+                        font-size: 14px;
+                        color: #414141;
+                        .headerNameTit_left{
+                            width: 65%;
+                            span:nth-child(1){
+                                display: inline-block;
+                                width: 30%;
+                            }
+                            span:nth-child(2){
+                                display: inline-block;
+                                width: 70%;
+                            }
+                        }
+                        .headerNameTit_right{
+                            width: 40%;
+                            span:nth-child(1){
+                                display: inline-block;
+                                width: 60%;
+                            }
+                            span:nth-child(2){
+                                display: inline-block;
+                                width: 40%;
+                            }
+                        }
+                    }
+                    .mainThreeMsg{
+                        display: flex;
+                        margin: 0 10px;
+                        width: calc(100% - 36px);
+                        height: 33px;
+                        background: #F6F7FA;
+                        margin-bottom: 8px;
+                        padding-left: 8px;
+                        padding-right: 8px;
+                        padding-top: 2px;
+                        border-radius: 5px;
+                        img{
+                            width: 20px;
+                            height: 20px;
+                            position: relative;
+                            top: 5px;
+                            margin-right: 10px;
+                        }
+                        .msgProgress{
+                            margin-top: 5px;
+                            display: flex;
+                            width: 100%;
+                            span{
+                                font-size: 14px;
+                                font-family: Microsoft YaHei;
+                            }
+                            span:nth-child(1){
+                                display: inline-block;
+                                width: 60%;
+                                font-weight: 400;
+                                color: #666;
+                                // margin-right: 10px;
+                                overflow: hidden;
+                                text-overflow: ellipsis;
+                                white-space: nowrap;
+                            }
+                            span:nth-child(2){
+                                display: inline-block;
+                                width: 25%;
+                                font-weight: 600;
+                                color: #F65177;
+                            }
+                            span:nth-child(3){
+                                display: inline-block;
+                                width: 10%;
+                                font-weight: 600;
+                                color: #666;
+                            }
+                        }
+                    }
+                }
+            }
+        }
+    }
+}
+</style>

+ 23 - 1
src/router/index.js

@@ -374,12 +374,34 @@ const routes = [
         path: '/mobeil',
         name: 'homeMobeilPage',
         meta: {
-            title: '首页',
+            title: '年度单位评级',
         },
         component: () =>
             import(
                 '../mobeilComponent/homeMobeilPage.vue'
             ),
+    },
+    {
+        path: '/menu',
+        name: 'menuMobeilPage',
+        meta: {
+            title: '导航页',
+        },
+        component: () =>
+            import(
+                '../mobeilComponent/menuMobeilPage.vue'
+            ),
+    },
+    {
+        path: '/yearConpanyDetail',
+        name: 'yearConpanyPage',
+        meta: {
+            title: '年度单位评级详情',
+        },
+        component: () =>
+            import(
+                '../mobeilComponent/yearConpanyPage.vue'
+            ),
     }
 ]
 

+ 50 - 46
src/views/Login.vue

@@ -1,56 +1,59 @@
 <template>
-    <div class="loginPic" v-if="isMobile === 'PC'">
-        <div class="login_right">
-            <img class="titleIcon" src="../assets/loginImage/logo.png" alt="">
-            <div class="loginCom" style="margin-bottom: 30px">
-                <img class="userIcon" src="../assets/loginImage/userIcon.png" alt="">
-                <el-input v-model="inputUser" placeholder="请输入用户名" />
-            </div>
-            <div class="loginCom" style="margin-bottom: 16px">
-                <img class="passwordIcon" src="../assets/loginImage/passwordIcon.png" alt="">
-                <el-input type="password" v-model="inputMima" placeholder="请输入密码" />
-            </div>
-            <div class="remeber">
-                <el-checkbox v-model="ememberMe" @change="changeBox">记住密码</el-checkbox>
-            </div>
-            <!-- v-if="!loginLoading"  v-else -->
-            <div class="loginBtn" @click="handleLogin" v-if="!loginLoading">
-                <span class="loginSpan">登录</span>
-            </div>
-            <div class="loginBtn" v-else>
-                <div class="loading">
-                    <el-icon color="#fff"><Loading /></el-icon>
-                    <span class="loadingSpan">登录</span>
+    <div v-if="isSinglePoint === 'noSinglePoint'">
+        <div class="loginPic" v-if="isMobile === 'PC'">
+            <div class="login_right">
+                <img class="titleIcon" src="../assets/loginImage/logo.png" alt="">
+                <div class="loginCom" style="margin-bottom: 30px">
+                    <img class="userIcon" src="../assets/loginImage/userIcon.png" alt="">
+                    <el-input v-model="inputUser" placeholder="请输入用户名" />
+                </div>
+                <div class="loginCom" style="margin-bottom: 16px">
+                    <img class="passwordIcon" src="../assets/loginImage/passwordIcon.png" alt="">
+                    <el-input type="password" v-model="inputMima" placeholder="请输入密码" />
+                </div>
+                <div class="remeber">
+                    <el-checkbox v-model="ememberMe" @change="changeBox">记住密码</el-checkbox>
+                </div>
+                <!-- v-if="!loginLoading"  v-else -->
+                <div class="loginBtn" @click="handleLogin" v-if="!loginLoading">
+                    <span class="loginSpan">登录</span>
+                </div>
+                <div class="loginBtn" v-else>
+                    <div class="loading">
+                        <el-icon color="#fff"><Loading /></el-icon>
+                        <span class="loadingSpan">登录</span>
+                    </div>
                 </div>
             </div>
         </div>
-    </div>
-    <div class="loginMobeil" v-else>
-        <div class="login_mobeilMain">
-            <img class="titleIcon" src="../assets/loginImage/logo.png" alt="">
-            <div class="loginCom" style="margin-bottom: 30px">
-                <img class="userIcon" src="../assets/loginImage/userIcon.png" alt="">
-                <el-input v-model="inputUser" placeholder="请输入用户名" />
-            </div>
-            <div class="loginCom" style="margin-bottom: 16px">
-                <img class="passwordIcon" src="../assets/loginImage/passwordIcon.png" alt="">
-                <el-input type="password" v-model="inputMima" placeholder="请输入密码" />
-            </div>
-            <div class="remeber">
-                <el-checkbox v-model="ememberMe" @change="changeBox">记住密码</el-checkbox>
-            </div>
-            <!-- v-if="!loginLoading"  v-else -->
-            <div class="loginMobeilBtn" @click="handleLogin" v-if="!loginLoading">
-                <span class="loginSpan">登录</span>
-            </div>
-            <div class="loginMobeilBtn" v-else>
-                <div class="loading">
-                    <el-icon color="#fff"><Loading /></el-icon>
-                    <span class="loadingSpan">登录</span>
+        <div class="loginMobeil" v-else>
+            <div class="login_mobeilMain">
+                <img class="titleIcon" src="../assets/loginImage/logo.png" alt="">
+                <div class="loginCom" style="margin-bottom: 30px">
+                    <img class="userIcon" src="../assets/loginImage/userIcon.png" alt="">
+                    <el-input v-model="inputUser" placeholder="请输入用户名" />
+                </div>
+                <div class="loginCom" style="margin-bottom: 16px">
+                    <img class="passwordIcon" src="../assets/loginImage/passwordIcon.png" alt="">
+                    <el-input type="password" v-model="inputMima" placeholder="请输入密码" />
+                </div>
+                <div class="remeber">
+                    <el-checkbox v-model="ememberMe" @change="changeBox">记住密码</el-checkbox>
+                </div>
+                <!-- v-if="!loginLoading"  v-else -->
+                <div class="loginMobeilBtn" @click="handleLogin" v-if="!loginLoading">
+                    <span class="loginSpan">登录</span>
+                </div>
+                <div class="loginMobeilBtn" v-else>
+                    <div class="loading">
+                        <el-icon color="#fff"><Loading /></el-icon>
+                        <span class="loadingSpan">登录</span>
+                    </div>
                 </div>
             </div>
         </div>
     </div>
+    <div v-else v-loading="loading" style="height: 100vh"></div>
 </template>
 
 <script>
@@ -69,7 +72,8 @@ export default {
             loginText: '',
             loginLoading: false,
             isMobile: window.localStorage.getItem('isMobile'),
-
+            isSinglePoint: window.localStorage.getItem('singlePoint'),
+            loading: true,
             vantActive: 0
         }
     },