Browse Source

初始化版本0.0.01

哥哥玩剑魂呢 4 years ago
parent
commit
ad64ba1d1a
65 changed files with 3129 additions and 2949 deletions
  1. 3 2
      config/dev.env.js
  2. 0 95
      index.html
  3. 0 19
      src/App.vue
  4. 2 3
      src/api/configget.js
  5. 54 0
      src/components/deptData.vue
  6. 1 1
      src/components/user_image.vue
  7. 3 3
      src/components/wxOpendata.vue
  8. 6 3
      src/main.js
  9. 8 8
      src/permission.js
  10. 19 13
      src/router/index.js
  11. 4 2
      src/styles/sidebar.scss
  12. 1 1
      src/utils/request-user.js
  13. 1 1
      src/utils/request.js
  14. 272 128
      src/utils/wx-auth-two.js
  15. 0 57
      src/utils/wx-auth.js
  16. 14 0
      src/utils/wxconfiguration.js
  17. 3 3
      src/views/common/EmployeeSelector.vue
  18. 3 3
      src/views/common/EmployeeSelector1.vue
  19. 36 4
      src/views/common/applicationIntegrationPopup.vue
  20. 11 2
      src/views/common/examinePopup.vue
  21. 2 2
      src/views/common/repeatTaskDetailsPopup.vue
  22. 28 4
      src/views/common/rewardTask.vue
  23. 30 3
      src/views/common/rewardTaskAmend.vue
  24. 3 1
      src/views/common/rewardTaskDetailsPopup.vue
  25. 4 4
      src/views/common/taskDetailsPopup.vue
  26. 31 3
      src/views/common/temporaryTask.vue
  27. 25 4
      src/views/common/temporaryTaskAmend.vue
  28. 199 131
      src/views/dashboard/index.vue
  29. 472 1684
      src/views/integral/EmployeeTable.vue
  30. 506 0
      src/views/integral/framework.vue
  31. 1 1
      src/views/layout/Layout.vue
  32. 100 49
      src/views/layout/components/Navbar.vue
  33. 15 3
      src/views/layout/components/Sidebar/SidebarItem.vue
  34. 0 1
      src/views/login/index.vue
  35. 71 84
      src/views/login/index1.vue
  36. 30 0
      src/views/noAccess.vue
  37. 607 444
      src/views/setting/approver_set.vue
  38. 8 8
      src/views/setting/company_info.vue
  39. 41 6
      src/views/setting/fixed_integral.vue
  40. 2 2
      src/views/setting/set_role.vue
  41. 19 4
      src/views/statistics_new/balanceA.vue
  42. 47 19
      src/views/statistics_new/custom_rank.vue
  43. 15 4
      src/views/statistics_new/department_statistics.vue
  44. 85 15
      src/views/statistics_new/dept_rank.vue
  45. 59 15
      src/views/statistics_new/individual_statistics.vue
  46. 62 12
      src/views/statistics_new/integral_event.vue
  47. 14 3
      src/views/statistics_new/integral_statistics.vue
  48. 16 5
      src/views/statistics_new/lotteryTicket_statistics.vue
  49. 27 5
      src/views/statistics_new/manager_statistics.vue
  50. 38 6
      src/views/statistics_new/total_rank.vue
  51. 8 8
      src/views/workbench/approval_list.vue
  52. 11 2
      src/views/workbench/grade/apply_list.vue
  53. 24 7
      src/views/workbench/grade/award_punish.vue
  54. 11 5
      src/views/workbench/performance/add_team_performance.vue
  55. 11 10
      src/views/workbench/performance/examine_unit.vue
  56. 1 1
      src/views/workbench/performance/module/examine.vue
  57. 1 1
      src/views/workbench/performance/module/participation.vue
  58. 8 8
      src/views/workbench/performance/my_performance.vue
  59. 11 10
      src/views/workbench/performance/participation_detail.vue
  60. 20 16
      src/views/workbench/performance/team_detail.vue
  61. 16 4
      src/views/workbench/performance/team_performance.vue
  62. 6 4
      src/views/workbench/task/get_task.vue
  63. 3 3
      src/views/workbench/task/my_issue.vue
  64. BIN
      static/images/APP.png
  65. BIN
      static/images/login300.png

+ 3 - 2
config/dev.env.js

@@ -3,8 +3,9 @@ module.exports = {
   ENV_CONFIG: '"dev"',
   // BASE_API: '"https://new.gdy.g107.com"',
   // SERVE_AD: '"https://nkaoqin.g107.net"'
-  BASE_API: '"http://192.168.0.88:8888/"',
-  SERVE_AD: '"https://nkaoqin.g107.net"'
+  BASE_API: '"http://192.168.0.88:8888"',
+  SERVE_AD: '"https://nkaoqin.g107.net"',
+  APPID: '"ww4065f0d4bb232a6a"',
   // BASE_API: '"https://oa.g107.com"',
   // SERVE_AD:'"https://ad.g107.com"'
 }

+ 0 - 95
index.html

@@ -93,101 +93,6 @@
     }
 
   })(window);
-  
-
-  // (async () => {
-  //           try {
-  //               console.info('WWOpenData demo start')
-  //               if (/MicroMessenger/i.test(navigator.userAgent)) {
-  //                   await config(window.configParams)
-  //               }
-  //               await agentConfig(window.agentConfigParams)
-  //               // 若一切正常,此时可以在 window 上看到 WWOpenData 对象
-  //               console.log('=========================')
-  //               console.log('window.WWOpenData', window.WWOpenData)
-  //               console.log('=========================')
-  //               if (WWOpenData.checkSession) {
-  //                   WWOpenData.checkSession({
-  //                       success() {
-  //                           console.info('open-data 登录态校验成功')
-  //                       },
-  //                       fail() {
-  //                           console.error('open-data 登录态过期')
-  //                       },
-  //                   })
-  //               }
-  //               if (WWOpenData.on) {
-  //                   /**
-  //                    * ww-open-data 元素数据发生变更时触发
-  //                    */
-  //                   WWOpenData.on('update', event => {
-  //                       const openid = event.detail.element.getAttribute('openid')
-  //                       console.info('渲染数据发生变更', openid, event.detail.hasData)
-  //                   })
-  //                   /**
-  //                    * ww-open-data 获取数据失败时触发
-  //                    */
-  //                   WWOpenData.on('error', () => {
-  //                       console.error('获取数据失败')
-  //                   })
-  //               }
-  //               /**
-  //                * 创建 ww-open-data 元素
-  //                */
-  //               const container = document.getElementById('container')
-  //               // 这里的 window.openidList 是该 demo 页面自行组织的数据,不具备普遍性
-  //               // 开发者进行开发时,需要自己拿到授权企业相对应的 openid
-  //               // 关于 openid 的定义与获得方式,可以关注文档注意事项的第 5 点
-  //               for (const openid of window.openidList) {
-  //                   const element = document.createElement('ww-open-data')
-  //                   element.setAttribute('type', 'userName')
-  //                   element.setAttribute('openid', openid)
-  //                   container.appendChild(element)
-  //               }
-  //               /**
-  //                * 绑定 document 上全部的 ww-open-data 元素
-  //                */
-  //               WWOpenData.bindAll(document.querySelectorAll('ww-open-data'))
-  //               console.info('WWOpenData demo end')
-  //           } catch (error) {
-  //               console.error('WWOpenData demo error', error)
-  //           }
-  //           /**
-  //            * 调用 wx.config
-  //            *
-  //            * @see https://open.work.weixin.qq.com/api/doc/90001/90144/90547
-  //            */
-  //           async function config(config) {
-  //               return new Promise((resolve, reject) => {
-  //                   console.info('wx.config', config)
-  //                   wx.config(config)
-  //                   wx.ready(resolve)
-  //                   wx.error(reject)
-  //               }).then(() => {
-  //                   console.info('wx.ready')
-  //               }, error => {
-  //                   console.error('wx.error', error)
-  //                   throw error
-  //               })
-  //           }
-  //           /**
-  //            * 调用 wx.agentConfig
-  //            *
-  //            * @see https://open.work.weixin.qq.com/api/doc/90001/90144/90548
-  //            */
-  //           async function agentConfig(config) {
-  //               return new Promise((success, fail) => {
-  //                   console.info('wx.agentConfig', config)
-  //                   wx.agentConfig({ ...config, success, fail })
-  //               }).then(res => {
-  //                   console.info('wx.agentConfig success', res)
-  //                   return res
-  //               }, error => {
-  //                   console.error('wx.agentConfig fail', error)
-  //                   throw error
-  //               })
-  //           }
-  //       })()
 </script>
 
 </html>

+ 0 - 19
src/App.vue

@@ -5,28 +5,9 @@
 </template>
 
 <script>
-  import axios from 'axios'
-  import {getToken, setToken, getUser, getPasw, setUser, setPasw,} from '@/utils/auth' // getToken from cookie
-  import {wxConfig} from '@/utils/wx-auth'
-  import {allocation} from '@/api/configget'
   export default{
     name: 'App',
     created () {
-      // if(JSON.parse(localStorage.getItem('wxConfigData'))){
-      //   wxConfig(JSON.parse(localStorage.getItem('wxConfigData')))//拿到数据执行wx.config
-      // }else{
-      //   console.log('JSON.parse(localStorage.getItem())')
-      //   if(getToken()){
-      //     console.log(getToken())
-      //     allocation().then((res)=>{
-      //         console.log('请求成功')
-      //         if(res.data.code == 1){
-      //         localStorage.setItem('wxConfigData',JSON.stringify(res.data.data))
-      //         wxConfig(res.data.data)
-      //         }
-      //     })
-      //   }
-      // }
     },
     methods: {
     },

+ 2 - 3
src/api/configget.js

@@ -1,5 +1,4 @@
 
-import {wxConfig} from '@/utils/wx-auth'
 import request from '@/utils/request'
 import {getToken} from '@/utils/auth' // getToken from cookie
 export function allocation(){
@@ -11,11 +10,11 @@ export function allocation(){
 }
 // import request from '@/utils/request'
 export async function allocations(body){
-    console.log("执行者")
+    console.log("请求配置")
     console.log(body)
     if(getToken()){
         let params = {url : body}
         // let params = {url : 'http%3A%2F%2Fwechatdings.vaiwan.com%2F'}
-        return request('get','/api/wechat/config', params)
+        return await request('get','/api/wechat/config', params)
     }
 }

+ 54 - 0
src/components/deptData.vue

@@ -0,0 +1,54 @@
+<template>
+  <div
+    class="zindexDeptName"
+    v-if="toPdept && toPdept != 0"
+    @click="clickDept(refsName)"
+    :style="deptStyle"
+  >
+    <wwOpenDAta type="departmentName" :openid="toPdept"></wwOpenDAta>
+  </div>
+</template>
+<script>
+export default {
+  props: {
+    refsName: {
+      type: Object,
+      default: ""
+    },
+    toPdept: {
+      type: Number,
+      default: 0
+    },
+    deptStyle: {
+        type:String,
+        default: ''
+    },
+  },
+  watch: {},
+  mounted() {},
+  methods: {
+    clickDept(refsNAme) {
+        console.log(refsNAme)
+        refsNAme.dropDownVisible = true;
+    }
+  }
+};
+</script>
+<style scoped>
+.zindexDeptName {
+  position: absolute;
+  top: 0;
+  right: 0;
+  left: 0;
+  bottom: 0;
+  z-index: 9;
+  margin: 10px 0 0 10px;
+  padding-left: 5px;
+  background-color: #ffffff;
+  color: #1d1d1d;
+  height: 18px;
+  width: 80%;
+  overflow: hidden;
+  cursor: pointer;
+}
+</style>

+ 1 - 1
src/components/user_image.vue

@@ -13,7 +13,7 @@
     </el-image>
     <!-- <ww-open-data v-if="info.img_url" type="userAvatarUrl" :openid="info.img_url"></ww-open-data> -->
     <span class="img_round" v-else>
-      <div class="user_name_div" :style="{width: width, height: height,lineHeight: height, fontSize: fontSize + 'px'}">{{name}}</div>
+      <div class="user_name_div" :style="{width: width, height: height,lineHeight: height, fontSize: fontSize + 'px'}"><wwOpenDAta type="userName" :openid="user_name"></wwOpenDAta></div>
       <div class="user_img_bg" :style="{width: width, height: height}" ></div>
     </span>
   </div>

+ 3 - 3
src/components/wwOpenDatac/ww_open_data.vue → src/components/wxOpendata.vue

@@ -3,17 +3,17 @@
 </template>
 <script>
 export default {
-  name: "ww_open_data",
+  name: "wwOpenDAta",
   props: ["type", "openid"],
   watch: {
     openid(item) {
       this.$nextTick(() => {
-        WWOpenData.bind(this.$el);
+        window.WWOpenData.bind(this.$el);
       });
     }
   },
   mounted() {
-    WWOpenData.bind(this.$el);
+    window.WWOpenData.bind(this.$el);
   },
 };
 </script>

+ 6 - 3
src/main.js

@@ -30,8 +30,11 @@ new VConsole()
 import userImage from '@/components/user_image'
 Vue.component('userImage', userImage)
 // wx通讯录
-import wwOpenDatas from '@/components/wwOpenDatac/ww_open_data.vue'
-Vue.component('wwOpenDAta', wwOpenDatas)
+import wwOpenDAtas from '@/components/wxOpendata'
+Vue.component('wwOpenDAta', wwOpenDAtas)
+// 选择部门的选中内容覆盖
+import deptData from '@/components/deptData.vue'
+Vue.component('deptData', deptData)
 
 Vue.use(Element, {
   size: 'medium',
@@ -55,7 +58,7 @@ Vue.prototype.$wx = (window).wx; // 全局使用
 Object.keys(filters).forEach(key => {
   Vue.filter(key, filters[key])
 })
-
+Vue.config.ignoredElements = ['ww-open-data'];
 Vue.config.productionTip = false
 
 new Vue({

+ 8 - 8
src/permission.js

@@ -15,7 +15,7 @@ function hasPermission(roles, permissionRoles) {
   return roles.some(role => permissionRoles.indexOf(role) >= 0)
 }
 // 免登名单
-const whiteList = ['/invite_new_company', '/create_company', '/login', '/loginbytoken', '/reg', '/forgetPwd', '/resetPwd', '/android', '/demo', '/swiperShow','/autoLogin' ]// no redirect whitelist
+const whiteList = ['/invite_new_company', '/create_company', '/login','/noAccess' , '/loginbytoken', '/reg', '/forgetPwd', '/resetPwd', '/android', '/demo', '/swiperShow','/autoLogin' ]// no redirect whitelist
 
 router.beforeEach((to, from, next) => {
   if(Vue.$httpRequestList.length>0){        //强行中断时才向下执行
@@ -23,7 +23,7 @@ router.beforeEach((to, from, next) => {
         item('interrupt');//给个标志,中断请求
     })
   }
-  NProgress.start()
+  // NProgress.start()
   if (getToken()) {
     store.dispatch('get_point_types').then((res) => {})
     store.dispatch('get_site_info').then((res) => {})
@@ -31,7 +31,7 @@ router.beforeEach((to, from, next) => {
     store.dispatch('get_dept_tree').then((res) => {})// 获取部门树型结构列表
     if (to.path === '/login') {
       next({ path: '/' })
-      NProgress.done()
+      // NProgress.done()
     } else {
       if (!store.getters.user_info.id) { // 判断当前用户是否已拉取完user_info信息
         store.dispatch('GetUserInfo').then(res => { // 拉取user_info
@@ -73,11 +73,12 @@ router.beforeEach((to, from, next) => {
         // 没有动态改变权限的需求可直接next() 删除下方权限判断 ↓
         if (hasPermission(store.getters.roles, to.meta.roles)) {
           // removeToken()
-          next()
-          NProgress.start()
+          wxAuth('',next);
+          // next()
+          // NProgress.start()
         } else {
           next({ path: '/401', replace: true, query: { noGoBack: true }})
-          NProgress.start()
+          // NProgress.start()
         }
       }
     }
@@ -86,13 +87,12 @@ router.beforeEach((to, from, next) => {
       next()
     } else {
       next('/login') // 否则全部重定向到登录页
-      NProgress.done()
+      // NProgress.done()
     }
   }
 })
 
 router.afterEach((to, from) => {
   console.log(to)
-  wxAuth(to);
   // NProgress.done() // finish progress bar
 })

+ 19 - 13
src/router/index.js

@@ -83,7 +83,12 @@ export const constantRouterMap = [
     component: () => import('@/views/login/loginbytoken'),
     hidden: true
   },
-
+	{
+		path: '/noAccess',
+		name: '无权限',
+		component: () => import(/* webpackChunkName: "noAccess" */'@/views/noAccess'),
+    hidden: true
+	},
   {
     path: '/404',
     component: () => import('@/views/errorPage/404'),
@@ -137,14 +142,14 @@ export const asyncRouterMap = [
             path: '/award_punish',
             name: 'award_punish',
             component: () => import('@/views/workbench/grade/award_punish'),
-            meta: { title: '我奖扣的', noCache: true }
+            meta: { title: '我奖扣的', noCache: true , jurisdiction:['employee']}
           },
           {
             path: '/apply_list',
             name: 'apply_list',
             component: () => import('@/views/workbench/grade/apply_list'),
             meta: { title: '我的申请', noCache: true  , jurisdiction:['creator']}
-          }
+          },
         ]
       },
       {
@@ -158,7 +163,7 @@ export const asyncRouterMap = [
             path: '/team_performance',
             name: 'team_performance',
             component: () => import('@/views/workbench/performance/team_performance'),
-            meta: { title: '团队绩效', noCache: true }
+            meta: { title: '团队绩效', noCache: true , jurisdiction:['employee']}
           },
           {
             path: '/my_performance',
@@ -170,7 +175,7 @@ export const asyncRouterMap = [
             path: '/performance_review',
             name: 'performance_review',
             component: () => import('@/views/workbench/performance/performance_review'),
-            meta: { title: '绩效评审', noCache: true }
+            meta: { title: '绩效评审', noCache: true , jurisdiction:['employee']}
           },
           {
             path: '/examine_unit',
@@ -213,7 +218,7 @@ export const asyncRouterMap = [
             path: '/my_issue',
             name: 'my_issue',
             component: () => import('@/views/workbench/task/my_issue'),
-            meta: { title: '我发布的', noCache: true }
+            meta: { title: '我发布的', noCache: true , jurisdiction:['employee']}
           },
           {
             path: '/get_task',
@@ -233,7 +238,7 @@ export const asyncRouterMap = [
         path: '/approval_list',
         name: 'approval_list',
         component: () => import('@/views/workbench/approval_list'),
-        meta: { title: '审批', icon: 'set_basics_icon', noCache: true }
+        meta: { title: '审批', icon: 'set_basics_icon', noCache: true , jurisdiction:['employee']}
       },
     ]
   },
@@ -364,14 +369,14 @@ export const asyncRouterMap = [
         path: '/integral_statistics',
         name: 'integral_statistics',
         component: () => import('@/views/statistics_new/integral_statistics'),
-        meta: { title: '积分统计', icon: 'integral_statistics_icon', noCache: true }
+        meta: { title: '积分统计', icon: 'integral_statistics_icon', noCache: true , jurisdiction:['employee'] ,}
         // hidden: true
       },
       {
         path: '/manager_statistics',
         name: 'manager_statistics',
         component: () => import('@/views/statistics_new/manager_statistics'),
-        meta: { title: '管理者奖扣', icon: 'manager_statistics_icon', noCache: true }
+        meta: { title: '管理者奖扣', icon: 'manager_statistics_icon', noCache: true , jurisdiction:['employee'] ,}
       },
       {
         path: '/integral_event',
@@ -383,13 +388,13 @@ export const asyncRouterMap = [
         path: '/balanceA',
         name: 'balanceA',
         component: () => import('@/views/statistics_new/balanceA'),
-        meta: { title: 'A分余额', icon: 'A_points', noCache: true  , jurisdiction:['dept_manager'] }
+        meta: { title: 'A分余额', icon: 'A_points', noCache: true  , jurisdiction:['dept_manager','employee'] ,}
       },
       {
         path: '/department_statistics',
         name: 'department_statistics',
         component: () => import('@/views/statistics_new/department_statistics'),
-        meta: { title: '部门统计', icon: 'department_statistics', noCache: true }
+        meta: { title: '部门统计', icon: 'department_statistics', noCache: true , jurisdiction:['employee']}
       },
       {
         path: '/individual_statistics',
@@ -401,7 +406,7 @@ export const asyncRouterMap = [
         path: '/lotteryTicket_statistics',
         name: 'lotteryTicket_statistics',
         component: () => import('@/views/statistics_new/lotteryTicket_statistics'),
-        meta: { title: '奖票统计', icon: 'Lottery_ticket_statistics', noCache: true }
+        meta: { title: '奖票统计', icon: 'Lottery_ticket_statistics', noCache: true , jurisdiction:['employee']}
       },
     ]
   },
@@ -411,12 +416,13 @@ export const asyncRouterMap = [
     component: Layout,
     redirect: '/employee_table',
     // hidden: true, // 不在侧边栏线上
-    meta: { title: '设置', icon: 'department', show: false, noCache: true  , jurisdiction:['dept_manager'] },
+    meta: { title: '设置', icon: 'department', show: false, noCache: true  , jurisdiction:['dept_manager','employee'] },
     children: [
       {
         path: '/employee_table',
         name: 'employee_table',
         component: () => import('@/views/integral/EmployeeTable'),
+        // component: () => import('@/views/integral/framework'),
         meta: { title: '组织架构', icon: 'employee_table_icon', noCache: true }
       },
       {

+ 4 - 2
src/styles/sidebar.scss

@@ -129,8 +129,10 @@
     background-color: #EBF5FF !important;
   }
   .sidebar-container .is-opened .is-active .svg-icon{
-    filter: drop-shadow(#26A2FF 80px 0);
-    transform: translateX(-80px);
+    // filter: drop-shadow(#26A2FF 80px 0);
+    // transform: translateX(-80px);
+    filter: drop-shadow(#26A2FF 30px 0);
+    transform: translateX(-30px);
   }
 
   .navbar .el-menu-item:focus,.navbar .el-menu-item:hover{

+ 1 - 1
src/utils/request-user.js

@@ -35,7 +35,7 @@ service.interceptors.response.use(
     const res = response.data
     if (res.code === 401) {
       // 50008:非法的token; 50012:其他客户端登录了;  401:Token 过期了; 2000 考勤系统的token过期
-      MessageBox.confirm('你已被登出,请重新登录', '确定登出', {
+      MessageBox.confirm('当前登录授权时间已经过期,请重新授权登录', '确定登出', {
         confirmButtonText: '重新登录',
         showClose: false,
         closeOnClickModal: false,

+ 1 - 1
src/utils/request.js

@@ -62,7 +62,7 @@ service.interceptors.response.use(
     // }else 
     if (res.code === 401) {
       // 50008:非法的token; 50012:其他客户端登录了;  401:Token 过期了; 2000 考勤系统的token过期
-      MessageBox.confirm('你已被登出,请重新登录', '确定登出', {
+      MessageBox.confirm('当前登录授权时间已经过期,请重新授权登录', '确定登出', {
         confirmButtonText: '重新登录',
         showClose: false,
         closeOnClickModal: false,

+ 272 - 128
src/utils/wx-auth-two.js

@@ -1,138 +1,282 @@
 // import network from '@/network'; // 这个是自己项目里的网络层,用于调用接口
 import Vue from 'vue';
-import {allocations} from '@/api/configget'; // 这个是自己项目里的网络层,用于调用接口
-import Router from'@/router'
+import {
+  allocations
+} from '@/api/configget';
+import Router from '@/router'
+import {withoutCodeLoad} from '@/utils/wxconfiguration.js'
+import moment from 'moment' // 时间库
 
-const wxAuth = async (to,pushindex) => {
-    // const tempUrl = window.location.protocol + '//' + window.location.host + '/nwd-enterprise-wechat' + to.fullPath;
-    // const urlNow = encodeURIComponent(tempUrl);
-    // console.log('当前授权URL:', urlNow);
-    // const noncestr = Math.floor(Math.random() * 100000000000000);
-    // const body = {
-    //     url: urlNow,
-    //     timestamp: (new Date()) - 0,
-    //     nonceStr: noncestr
-    // };
-    console.log('111111')
-    const body = window.location.href.split('#')[0]
-    console.log(body)
-    var data ;
-    await allocations(body).then((res)=>{
-        console.log('1111111111')
-            if(res.data.code == 1){
-                data = res.data.data
-                console.log(res.data.data.agentConfig)
-                return res.data.data.agentConfig
-            }
-        })
-    const wxConfigParams = data.config
-    const appSignature = data.agentConfig
-    console.log(wxConfigParams)
-    console.log(appSignature)
-    // const wxConfigParams =  network.common.getWxConfigParams(body); // 通过接口,获取wxConfig的参数
-    // const appSignature =  network.common.getAppSignature(body); // 通过接口,获取agentConfig的参数
-    await Vue.prototype.$wx.config({
-        beta: true, // 必须这么写,否则wx.invoke调用形式的jsapi会有问题
-        debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
-        appId: wxConfigParams.appId, // 必填,企业微信的corpID
-        timestamp: wxConfigParams.timestamp, // 必填,生成签名的时间戳
-        nonceStr: wxConfigParams.nonceStr, // 必填,生成签名的随机串
-        signature: wxConfigParams.signature, // 必填,签名,见 附录-JS-SDK使用权限签名算法
+export const wxAuth = async (pushindex, next) => {
+  const wechatConfigUrl = location.href.split('#')[0]
+  console.log('获取url')
+  console.log(wechatConfigUrl)
+  console.log(window.wechatConfigUrl)
+  if (window.wechatConfigUrl === wechatConfigUrl) {
+    if (next) {
+      next()
+    }
+    return Promise.resolve()
+  } else {
+    try {
+      await wxConfigByCorp(wechatConfigUrl, pushindex, next)
+      window.wechatConfigUrl = wechatConfigUrl
+      return Promise.resolve()
+    } catch (error) {
+      return Promise.reject(error)
+    }
+  }
+}
+
+async function wxConfigByCorp(body, pushindex, next) {
+  var data;
+  await allocations(body).then((res) => {
+    if (res.data.code == 1) {
+      console.log("请求配置成功")
+      data = res.data.data
+    }else{
+    }
+  }).catch(()=>{
+    // withoutCodeLoad()
+  })
+  const wxConfigParams = data.config
+  const appSignature = data.agentConfig
+  console.log(wxConfigParams)
+  console.log(appSignature)
+  console.log('wxConfig开始')
+  await Vue.prototype.$wx.config({ // 鉴权(企业的身份与权限)
+    beta: true, // 必须这么写,否则wx.invoke调用形式的jsapi会有问题
+    debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
+    appId: wxConfigParams.appId, // 必填,企业微信的corpID
+    timestamp: wxConfigParams.timestamp, // 必填,生成签名的时间戳
+    nonceStr: wxConfigParams.nonceStr, // 必填,生成签名的随机串
+    signature: wxConfigParams.signature, // 必填,签名,见 附录-JS-SDK使用权限签名算法
+    jsApiList: [
+      'shareAppMessage',
+      'previewFile',
+      'selectEnterpriseContact',
+      'onMenuShareAppMessage',
+      'invoke',
+      'hideOptionMenu',
+      'showOptionMenu'
+    ] // 必填,需要使用的JS接口列表,凡是要调用的接口都需要传进来
+  });
+  await Vue.prototype.$wx.ready(function () {
+    console.log('wxConfig成功')
+    console.log('wx.agentConfig开始')
+    console.log('wx.agentConfig:BEGIN');
+    const u = navigator.userAgent;
+    const isAndroid = u.indexOf('Android') > -1 || u.indexOf('Linux') > -1; // 安卓
+    const isIOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); // ios终端
+    if (isAndroid) {
+      console.log('安卓手机');
+      Vue.prototype.$wx.invoke('agentConfig', {
+        corpid: appSignature.appId, // 必填,企业微信的corpid,必须与当前登录的企业一致
+        agentid: appSignature.agentid, // 必填,企业微信的应用id (e.g. 1000247)生产环境 写自己环境的agentid
+        timestamp: appSignature.timestamp, // 必填,生成签名的时间戳
+        nonceStr: appSignature.nonceStr, // 必填,生成签名的随机串
+        signature: appSignature.signature, // 必填,签名,见附录-JS-SDK使用权限签名算法
         jsApiList: [
-            'shareAppMessage',
-            'previewFile',
-            'selectEnterpriseContact',
-            'onMenuShareAppMessage',
-            'invoke',
-            'hideOptionMenu',
-            'showOptionMenu'
-        ] // 必填,需要使用的JS接口列表,凡是要调用的接口都需要传进来
-    });
-    await Vue.prototype.$wx.ready(function() {
-        console.log('wx.agentConfig:BEGIN');const u = navigator.userAgent;
-        const isAndroid = u.indexOf('Android') > -1 || u.indexOf('Linux') > -1; // 安卓
-        const isIOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); // ios终端
-        if (isAndroid) {
-            console.log('安卓手机');
-            Vue.prototype.$wx.invoke('agentConfig', {
-                corpid: appSignature.appId, // 必填,企业微信的corpid,必须与当前登录的企业一致
-                agentid:  appSignature.agentid, // 必填,企业微信的应用id (e.g. 1000247)生产环境 写自己环境的agentid
-                timestamp: appSignature.timestamp, // 必填,生成签名的时间戳
-                nonceStr: appSignature.nonceStr, // 必填,生成签名的随机串
-                signature: appSignature.signature, // 必填,签名,见附录-JS-SDK使用权限签名算法
-                jsApiList: [
-                    'openUserProfile',
-                    'previewFile'
-                ], // 必填
-            }, function(res) {
-                console.log('result', res);
-            });
-        }
-        if (isIOS) {
-            console.log('苹果手机');
-            Vue.prototype.$wx.agentConfig({
-                corpid: appSignature.appId, // 必填,企业微信的corpid,必须与当前登录的企业一致
-                agentid: appSignature.agentid, // 必填,企业微信的应用id (e.g. 1000247)生产环境
-                timestamp: appSignature.timestamp, // 必填,生成签名的时间戳
-                nonceStr: appSignature.nonceStr, // 必填,生成签名的随机串
-                signature: appSignature.signature, // 必填,签名,见附录-JS-SDK使用权限签名算法
-                jsApiList: [
-                    'openUserProfile',
-                    'previewFile'
-                ], // 必填
-                success(res) {
-                    console.log('agentConfig', res);
-                },
-                fail(res) {
-                    console.log('err', res);
-                    if (res.errMsg.indexOf('function not exist') > -1) {
-                        alert('版本过低请升级');
-                    }
-                }
-            });
+          'openUserProfile',
+          'previewFile'
+        ], // 必填
+      }, function (res) {
+        console.log('result', res);
+      });
+    }
+    if (isIOS) {
+      console.log('苹果手机');
+      Vue.prototype.$wx.agentConfig({
+        corpid: appSignature.appId, // 必填,企业微信的corpid,必须与当前登录的企业一致
+        agentid: appSignature.agentid, // 必填,企业微信的应用id (e.g. 1000247)生产环境
+        timestamp: appSignature.timestamp, // 必填,生成签名的时间戳
+        nonceStr: appSignature.nonceStr, // 必填,生成签名的随机串
+        signature: appSignature.signature, // 必填,签名,见附录-JS-SDK使用权限签名算法
+        jsApiList: [
+          'openUserProfile',
+          'previewFile'
+        ], // 必填
+        success(res) {
+          console.log('agentConfig', res);
+        },
+        fail(res) {
+          console.log('err', res);
+          if (res.errMsg.indexOf('function not exist') > -1) {
+            alert('版本过低请升级');
+          }
         }
+      });
+    }
 
 
-        
-        
-        if(/Android|webOS|iPhone|iPod|BlackBerry/i.test(navigator.userAgent)) {
 
-        }else{
-            console.log('pc端')
-            console.log('wxConfig成功')
-            Vue.prototype.$wx.agentConfig({
-                corpid: appSignature.corpid, // 必填,企业微信的corpid,必须与当前登录的企业一致
-                agentid: appSignature.agentid, // 必填,企业微信的应用id (e.g. 1000247)
-                timestamp: appSignature.timestamp, // 必填,生成签名的时间戳
-                nonceStr: appSignature.nonceStr, // 必填,生成签名的随机串
-                signature: appSignature.signature,// 必填,签名,见附录-JS-SDK使用权限签名算法
-                jsApiList: ['selectExternalContact'], //必填
-                success: function(res) { // 回调
-                    console.log('agentConfig成功')
-                    console.log(res)
-                        //wx.agentConfig成功回调后,WWOpenData 才会注入到 window 对象上面
-                    console.log(window.WWOpenData)
-                    // if(routpush){
-                    //     Router.push({path: '/'})//跳转首页
-                    // }
-                    console.log(to)
-                    if(pushindex){
-                        Router.push({path: '/'})//跳转首页
-                    }else{
-                        Router.push({path: to.path})//跳转首页
-                    }
-                },
-                fail: function(res) {
-                console.log(res)
-                    if(res.errMsg.indexOf('function not exist') > -1){
-                        alert('版本过低请升级')
-                    }
-                }
-            });
+
+    if (/Android|webOS|iPhone|iPod|BlackBerry/i.test(navigator.userAgent)) {
+
+    } else {
+      console.log('pc端')
+      Vue.prototype.$wx.agentConfig({ //鉴权(应用的身份与权限)
+        corpid: appSignature.corpid, // 必填,企业微信的corpid,必须与当前登录的企业一致
+        agentid: appSignature.agentid, // 必填,企业微信的应用id (e.g. 1000247)
+        timestamp: appSignature.timestamp, // 必填,生成签名的时间戳
+        nonceStr: appSignature.nonceStr, // 必填,生成签名的随机串
+        signature: appSignature.signature, // 必填,签名,见附录-JS-SDK使用权限签名算法
+        jsApiList: ['selectExternalContact'], //必填
+        success: function (res) { // 回调  //  wx.agentConfig成功回调后,WWOpenData 才会注入到 window 对象上面
+          console.log('agentConfig成功')
+          console.log('回调')
+          console.log(res)
+          console.log('window.WWOpenData')
+          console.log(window.WWOpenData)
+          if (next) {
+            next()
+          }
+          if (pushindex) {
+            console.log('跳转首页')
+            Router.push({
+              path: '/'
+            }) //跳转首页
+          }
+        },
+        fail: function (res) {
+          console.log(res)
+          if (res.errMsg.indexOf('function not exist') > -1) {
+            alert('版本过低请升级')
+          }
         }
-    });
-};
+      });
+    }
+  });
+}
+
+
+
+// export const wxAuth = async (to,pushindex) => {
+//     // const tempUrl = window.location.protocol + '//' + window.location.host + '/nwd-enterprise-wechat' + to.fullPath;
+//     // const urlNow = encodeURIComponent(tempUrl);
+//     // console.log('当前授权URL:', urlNow);
+//     // const noncestr = Math.floor(Math.random() * 100000000000000);
+//     // const body = {
+//     //     url: urlNow,
+//     //     timestamp: (new Date()) - 0,
+//     //     nonceStr: noncestr
+//     // };
+//     console.log('111111')
+//     const body = window.location.href.split('#')[0]
+//     console.log(body)
+//     var data ;
+//     await allocations(body).then((res)=>{
+//         console.log('1111111111')
+//             if(res.data.code == 1){
+//                 data = res.data.data
+//                 console.log(res.data.data.agentConfig)
+//                 return res.data.data.agentConfig
+//             }
+//         })
+//     const wxConfigParams = data.config
+//     const appSignature = data.agentConfig
+//     console.log(wxConfigParams)
+//     console.log(appSignature)
+//     // const wxConfigParams =  network.common.getWxConfigParams(body); // 通过接口,获取wxConfig的参数
+//     // const appSignature =  network.common.getAppSignature(body); // 通过接口,获取agentConfig的参数
+//     Vue.prototype.$wx.config({
+//         beta: true, // 必须这么写,否则wx.invoke调用形式的jsapi会有问题
+//         debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
+//         appId: wxConfigParams.appId, // 必填,企业微信的corpID
+//         timestamp: wxConfigParams.timestamp, // 必填,生成签名的时间戳
+//         nonceStr: wxConfigParams.nonceStr, // 必填,生成签名的随机串
+//         signature: wxConfigParams.signature, // 必填,签名,见 附录-JS-SDK使用权限签名算法
+//         jsApiList: [
+//             'shareAppMessage',
+//             'previewFile',
+//             'selectEnterpriseContact',
+//             'onMenuShareAppMessage',
+//             'invoke',
+//             'hideOptionMenu',
+//             'showOptionMenu'
+//         ] // 必填,需要使用的JS接口列表,凡是要调用的接口都需要传进来
+//     });
+//     Vue.prototype.$wx.ready(function() {
+//         console.log('wx.agentConfig:BEGIN');const u = navigator.userAgent;
+//         const isAndroid = u.indexOf('Android') > -1 || u.indexOf('Linux') > -1; // 安卓
+//         const isIOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); // ios终端
+//         if (isAndroid) {
+//             console.log('安卓手机');
+//             Vue.prototype.$wx.invoke('agentConfig', {
+//                 corpid: appSignature.appId, // 必填,企业微信的corpid,必须与当前登录的企业一致
+//                 agentid:  appSignature.agentid, // 必填,企业微信的应用id (e.g. 1000247)生产环境 写自己环境的agentid
+//                 timestamp: appSignature.timestamp, // 必填,生成签名的时间戳
+//                 nonceStr: appSignature.nonceStr, // 必填,生成签名的随机串
+//                 signature: appSignature.signature, // 必填,签名,见附录-JS-SDK使用权限签名算法
+//                 jsApiList: [
+//                     'openUserProfile',
+//                     'previewFile'
+//                 ], // 必填
+//             }, function(res) {
+//                 console.log('result', res);
+//             });
+//         }
+//         if (isIOS) {
+//             console.log('苹果手机');
+//             Vue.prototype.$wx.agentConfig({
+//                 corpid: appSignature.appId, // 必填,企业微信的corpid,必须与当前登录的企业一致
+//                 agentid: appSignature.agentid, // 必填,企业微信的应用id (e.g. 1000247)生产环境
+//                 timestamp: appSignature.timestamp, // 必填,生成签名的时间戳
+//                 nonceStr: appSignature.nonceStr, // 必填,生成签名的随机串
+//                 signature: appSignature.signature, // 必填,签名,见附录-JS-SDK使用权限签名算法
+//                 jsApiList: [
+//                     'openUserProfile',
+//                     'previewFile'
+//                 ], // 必填
+//                 success(res) {
+//                     console.log('agentConfig', res);
+//                 },
+//                 fail(res) {
+//                     console.log('err', res);
+//                     if (res.errMsg.indexOf('function not exist') > -1) {
+//                         alert('版本过低请升级');
+//                     }
+//                 }
+//             });
+//         }
+
+
+
+
+//         if(/Android|webOS|iPhone|iPod|BlackBerry/i.test(navigator.userAgent)) {
 
-export {
-    wxAuth,
-};
+//         }else{
+//             console.log('pc端')
+//             console.log('wxConfig成功')
+//             Vue.prototype.$wx.agentConfig({
+//                 corpid: appSignature.corpid, // 必填,企业微信的corpid,必须与当前登录的企业一致
+//                 agentid: appSignature.agentid, // 必填,企业微信的应用id (e.g. 1000247)
+//                 timestamp: appSignature.timestamp, // 必填,生成签名的时间戳
+//                 nonceStr: appSignature.nonceStr, // 必填,生成签名的随机串
+//                 signature: appSignature.signature,// 必填,签名,见附录-JS-SDK使用权限签名算法
+//                 jsApiList: ['selectExternalContact'], //必填
+//                 success: function(res) { // 回调
+//                     console.log('agentConfig成功')
+//                     console.log(res)
+//                         //wx.agentConfig成功回调后,WWOpenData 才会注入到 window 对象上面
+//                     console.log(window.WWOpenData)
+//                     // if(routpush){
+//                     //     Router.push({path: '/'})//跳转首页
+//                     // }
+//                     console.log(to)
+//                     if(pushindex){
+//                         Router.push({path: '/'})//跳转首页
+//                     }else{
+//                         Router.push({path: to.path})//跳转首页
+//                     }
+//                 },
+//                 fail: function(res) {
+//                 console.log(res)
+//                     if(res.errMsg.indexOf('function not exist') > -1){
+//                         alert('版本过低请升级')
+//                     }
+//                 }
+//             });
+//         }
+//     });
+// };

+ 0 - 57
src/utils/wx-auth.js

@@ -1,57 +0,0 @@
-
-import Router from'@/router'
-export function wxConfig(data,routpush){//wx.comfig
-    console.log('进入配置')
-    let that = this
-    let configs = data.config
-    let agentConfigs = data.agentConfig
-    wx.config({
-      beta: true,
-      debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
-      appId: configs.appId, // 必填,公众号的唯一标识 
-      nonceStr: configs.nonceStr, // 必填,生成签名的随机串 
-      signature: configs.signature, // 必填,签名,见附录1 
-      timestamp: configs.timestamp, // 必填,生成签名的时间戳 
-      jsApiList: [
-          'chooseImage',
-          'previewImage',
-          'uploadImage',
-          'downloadImage',
-          'previewFile',
-          'getLocation',
-      ]
-    });
-    wx.ready(function(){
-      console.log('wxConfig成功')
-      console.log(wx)
-      
-      wx.agentConfig({
-        corpid: agentConfigs.corpid, // 必填,企业微信的corpid,必须与当前登录的企业一致
-        agentid: agentConfigs.agentid, // 必填,企业微信的应用id (e.g. 1000247)
-        timestamp: agentConfigs.timestamp, // 必填,生成签名的时间戳
-        nonceStr: agentConfigs.nonceStr, // 必填,生成签名的随机串
-        signature: agentConfigs.signature,// 必填,签名,见附录-JS-SDK使用权限签名算法
-        jsApiList: ['selectExternalContact'], //必填
-        success: function(res) { // 回调
-          console.log('agentConfig成功')
-          console.log(res)
-            //wx.agentConfig成功回调后,WWOpenData 才会注入到 window 对象上面
-          console.log(window.WWOpenData)
-          if(routpush){
-            Router.push({path: '/'})//跳转首页
-          }
-        },
-        fail: function(res) {
-          console.log(res)
-            if(res.errMsg.indexOf('function not exist') > -1){
-                alert('版本过低请升级')
-            }
-        }
-      });
-      // that.wxAgentConfig(that,agentConfigs)//成功后执行 wx.agentConfig
-    });
-    wx.error(function (res) {
-        console.log("调用微信jsapi返回的状态:"+res.errMsg);
-        console.log(res)
-    });
-  }

+ 14 - 0
src/utils/wxconfiguration.js

@@ -0,0 +1,14 @@
+// import moment from 'moment' // 时间库
+export function withoutCodeLoad() {
+  console.log(process.env.APPID)
+  let appid, redirect_uri, response_type, scope, state, wechat, agentid
+  appid = process.env.APPID
+  redirect_uri = 'http%3A%2F%2Fwechatdings.vaiwan.com'
+  response_type = 'code'
+  scope = 'snsapi_privateinfo'
+  state = 'a'
+  wechat = '#wechat_redirect'
+  let link = 'appid=' + appid + '&redirect_uri=' + redirect_uri + '&response_type=' + response_type + '&scope=' + scope + '&state=' + state + wechat
+  window.location.href = 'https://open.weixin.qq.com/connect/oauth2/authorize?' + link
+  // +moment().format('X')
+}

+ 3 - 3
src/views/common/EmployeeSelector.vue

@@ -22,7 +22,7 @@
               @click="back_by_index(index + 1)"
             >
               <i class="el-icon-arrow-right"></i>
-              {{item.name}}
+              <wwOpenDAta type="departmentName" :openid="item.name"></wwOpenDAta>
             </a>
           </div>
           <el-checkbox v-if="isChecKedAll" v-model="checked" @change="checkedChange" >全选</el-checkbox>
@@ -43,7 +43,7 @@
                     <div style=" position: absolute; top: 0; left: 0; right: 0; bottom: 0; z-index: 5;"></div>
                   </div>
                   <div class="employee_name">
-                    {{item.name}}
+                    <wwOpenDAta type="departmentName" :openid="item.name"></wwOpenDAta>
                   </div>
 
                   <div v-if="can_select_dept" class="dept_child_cell">
@@ -101,7 +101,7 @@
               <div class="employee_cell" v-for="(item,index) in dept_selected_list" :key="index">
 
                 <div class="employee_name">
-                  {{item.dept_name}}
+                  <wwOpenDAta type="departmentName" :openid="item.dept_name"></wwOpenDAta>
                 </div>
                 <div class="employee_delete">
                   <el-button type="default" size="mini" @click="dept_cancel(item)" icon="el-icon-close" circle></el-button>

+ 3 - 3
src/views/common/EmployeeSelector1.vue

@@ -19,7 +19,7 @@
               @click="back_by_index(index + 1)"
             >
               <i class="el-icon-arrow-right"></i>
-              {{item.name}}
+              <wwOpenDAta type="departmentName" :openid="item.name"></wwOpenDAta>
             </a>
           </div>
           <el-checkbox v-if="isChecKedAll" v-model="checked" @change="checkedChange" >全选</el-checkbox>
@@ -32,7 +32,7 @@
                     <el-checkbox v-model="item.checked"></el-checkbox>
                   </div>
                   <div class="employee_name">
-                    {{item.name}}
+                    <wwOpenDAta type="departmentName" :openid="item.name"></wwOpenDAta>
                   </div>
 
                   <div v-if="can_select_dept" class="dept_child_cell">
@@ -82,7 +82,7 @@
               <div class="employee_cell" v-for="(item,index) in dept_selected_list" :key="index">
 
                 <div class="employee_name">
-                  {{item.dept_name}}
+                  <wwOpenDAta type="departmentName" :openid="item.dept_name"></wwOpenDAta>
                 </div>
                 <div class="employee_delete">
                   <el-button type="default" size="mini" @click="dept_cancel(item)" icon="el-icon-close" circle></el-button>

+ 36 - 4
src/views/common/applicationIntegrationPopup.vue

@@ -19,8 +19,13 @@
             <el-form-item label="录入对象" :prop="'items.'+ index +'.employeeName'" :rules="[{ required: true, message: '请选择录入对象', trigger: 'change' }]">
               <el-row>
                 <el-col :span="18">
-                  <el-input auto-complete="off" v-model="item.employeeName" placeholder="请选择录入对象"></el-input>
+                  <el-input v-show="employeeNames.length==0" auto-complete="off" v-model="item.employeeName" placeholder="请选择录入对象"></el-input>
                   <div @click="item.show_employee_selector = true" style=" position: absolute; top: 0; right: 0; left: 0; bottom: 0; z-index: 9;"></div>
+                  <div v-if="employeeNames.length>0"  @click="item.show_employee_selector = true" class="zindexName">
+                    <span v-for="(item,index) in employeeNames" :key="index">
+                      <wwOpenDAta type="userName" :openid="item.name"></wwOpenDAta><span v-if="(employeeNames.length-index)>1">,</span>
+                    </span>
+                  </div>
                 </el-col>
               </el-row>
               <EmployeeSelector
@@ -96,9 +101,13 @@
               
               <el-row>
                 <el-col :span="18">
-                  <el-input auto-complete="off" v-model="item.approvalName" placeholder="请选择审批人"></el-input>
+                  <el-input v-if="item.approvalName==''" auto-complete="off" v-model="item.approvalName" placeholder="请选择审批人"></el-input>
                   <div v-if="item.approval_selected.length == 0" @click="approval_selected_null" style=" position: absolute; top: 0; right: 0; left: 0; bottom: 0; z-index: 9;"></div>
-                  <div v-else @click="item.show_approval_selector = true" style=" position: absolute; top: 0; right: 0; left: 0; bottom: 0; z-index: 9;"></div>
+                  
+                  <div v-else-if="item.approvalName!=''" @click="item.show_approval_selector = true" class="zindexName">
+                    <wwOpenDAta type="userName" :openid="item.approvalName"></wwOpenDAta>
+                  </div>
+                  <div v-else-if="item.approvalName==''" @click="item.show_approval_selector = true" style=" position: absolute; top: 0; right: 0; left: 0; bottom: 0; z-index: 9;"></div>
                 </el-col>
               </el-row>
               <EmployeeSelector
@@ -134,7 +143,11 @@
           @close='error_list_SX'
           width="700px">
           <el-table :data="error_list">
-            <el-table-column prop="target" label="员工"></el-table-column>
+            <el-table-column prop="target" label="员工">
+              <template slot-scope="scope">
+                <wwOpenDAta type="userName" :openid="scope.row.target"></wwOpenDAta>
+              </template>
+            </el-table-column>
             <el-table-column prop="point" label="积分"></el-table-column>
             <el-table-column prop="status" label="处理状态">
               <template slot-scope="scope">
@@ -176,6 +189,8 @@
     },
     data() {
       return {
+        employeeNames:[],
+
         pickerBeginDateBefore: {
           disabledDate(time) {
             return time.getTime() > Date.now();
@@ -239,6 +254,7 @@
       this.dialogData.items[0].employee_selected.employee = [{id: this.user_info.id ,img_url: this.user_info.img_url,name: this.user_info.name}]
       this.dialogData.items[0].employee_id = this.user_info.id
       this.dialogData.items[0].employeeName = this.user_info.name
+      this.employeeNames = this.dialogData.items[0].employee_selected.employee
 
       this.initializesReviewer(this.user_info.employee_detail.superior_list,0,true)
 
@@ -544,6 +560,7 @@
       },
       // 选择对象
       employee_confirm(data){
+        console.log(data)
         const item = this.dialogData.items[this.itemIndex]
         if (data.employee !== null && data.employee.length != 0) {
           for (const key in this.employee_map) {
@@ -558,9 +575,11 @@
           }
         }
         item.employeeName = ''
+        this.employeeNames = []
         item.employee_selected.employee = []
         item.employee_id = ''
         if (data.employee !== null && data.employee.length != 0) {
+          this.employeeNames = data.employee
           item.employeeName = data.employee[0].name
           item.employee_selected.employee = [{name: data.employee[0].name,id:data.employee[0].id,img_url: data.employee[0].img_url}]
           item.employee_id = data.employee[0].id
@@ -635,6 +654,19 @@
     }
   }
 
+  .zindexName{
+     position: absolute;
+     top: 0;
+     right: 0;
+     left: 0;
+     bottom: 0;
+     z-index: 9;
+     border:1px solid rgb(224, 224, 224);
+     width:360px;
+     border-radius:3px;
+     padding-left:15px;
+     overflow: hidden;
+  }
   // ruleClass
   // itemClass
 </style>

+ 11 - 2
src/views/common/examinePopup.vue

@@ -10,7 +10,7 @@
                 <userImage :id="detail_info.employee_id" class="fl" width="50px" height="50px" fontSize="15"></userImage>
               </template>
               <template>
-                <span style="line-height:50px; margin-left:10px;margin-right:4px;">{{ getEmployeeName(detail_info.employee_id) }}</span>
+                <span style="line-height:50px; margin-left:10px;margin-right:4px;"><wwOpenDAta type="userName" :openid="getEmployeeName(detail_info.employee_id)"></wwOpenDAta></span>
                 <span class="color_red point" v-show="detail_info.point >= 0 && detail_info.point">
                   <span v-if="(detail_info.review_point == 0 ? detail_info.point : detail_info.review_point) >= 0">+</span>
                   {{ detail_info.review_point == 0 ? detail_info.point : detail_info.review_point }}
@@ -42,6 +42,15 @@
             <el-col :span="20" v-else-if="item.key == '工作留存'">
               <el-image v-for="(items, indexs) in item.value" :key="indexs" style="width: 100px; height: 100px;margin:2px;" :src="items" :preview-src-list="item.value"></el-image>
             </el-col>
+            <el-col :span="20" v-else-if="item.key == '奖扣目标'">
+              <wwOpenDAta type="userName" :openid="item.value"></wwOpenDAta>
+            </el-col>
+            <el-col :span="20" v-else-if="item.key == '申请人'">
+              <wwOpenDAta type="userName" :openid="item.value"></wwOpenDAta>
+            </el-col>
+            <el-col :span="20" v-else-if="item.key == '收益人'">
+              <wwOpenDAta type="userName" :openid="item.value"></wwOpenDAta>
+            </el-col>
             <el-col :span="20" v-else>{{ item.value }}</el-col>
           </el-row>
 
@@ -86,7 +95,7 @@
                   </template>
                   <template slot="title">
                     <div style="color: #303133;font-size:14px;margin-top:-2px;">
-                      {{ item.name }} &nbsp;
+                      <wwOpenDAta type="userName" :openid="item.name"></wwOpenDAta>&nbsp;
                       <span v-if="item.remark == '待审核'" style="color:#E6A23C;font-size:13px">待审批</span>
                       <span v-else-if="item.remark == '审核通过'" style="color:#67C23A;font-size:13px">审批通过</span>
                       <span v-else-if="item.remark == '审核驳回'" style="color:#F56C6C;font-size:13px">审批驳回</span>

+ 2 - 2
src/views/common/repeatTaskDetailsPopup.vue

@@ -42,7 +42,7 @@
           <el-col :span="24">
             <div>
               <userImage class="fl" :id="workDetailData.reviewer_id" :user_name="workDetailData.reviewer_name" width="50px" height="50px" style=" margin-right: 15px;"></userImage>
-              <p style="margin: 0; line-height: 50px;">{{workDetailData.reviewer_name}}</p>
+              <p style="margin: 0; line-height: 50px;"><wwOpenDAta type="userName" :openid="workDetailData.reviewer_name"></wwOpenDAta></p>
             </div>
           </el-col>
         </el-row>
@@ -51,7 +51,7 @@
           <el-col :span="24">
             <div v-for="(item,index) in workDetailData.target_info" style="margin-bottom: 10px;">
               <userImage class="fl" :id="item.id" :user_name="item.name" width="50px" height="50px" style=" margin-right: 15px;"></userImage>
-              <p style="margin: 0; line-height: 50px;">{{item.name}}</p>
+              <p style="margin: 0; line-height: 50px;"><wwOpenDAta type="userName" :openid="item.name"></wwOpenDAta></p>
             </div>
           </el-col>
         </el-row>

+ 28 - 4
src/views/common/rewardTask.vue

@@ -38,8 +38,11 @@
           <el-form-item label="审批人" prop="reviewer_id" :rules="[{ required: true, message: '请选择审批人', trigger: 'change' }]">
             <el-row>
               <el-col :span="18">
-                <el-input auto-complete="off" v-model="reviewerName" placeholder="请选择审批人"></el-input>
+                <el-input v-show="reviewerName=='' || reviewerName== null" auto-complete="off" v-model="reviewerName" placeholder="请选择审批人"></el-input>
                 <div @click="show_reviewer_selector = true" style=" position: absolute; top: 0; right: 0; left: 0; bottom: 0; z-index: 9;"></div>
+                <div v-if="reviewerName!='' && reviewerName!= null"  @click="show_reviewer_selector = true" class="zindexName">
+                    <wwOpenDAta type="userName" :openid="reviewerName"></wwOpenDAta>
+                </div>
               </el-col>
             </el-row>
             <EmployeeSelector
@@ -115,8 +118,13 @@
           <el-form-item label="谁可以看" prop="dept_ids">
             <el-row>
               <el-col :span="18">
-                <el-input auto-complete="off" v-model="deptVisibleName" placeholder="请选中部门的人可领取"></el-input>
+                <el-input v-show="deptVisibleNames.length==0" auto-complete="off" v-model="deptVisibleName" placeholder="请选中部门的人可领取"></el-input>
                 <div @click="show_dept_selector = true" style=" position: absolute; top: 0; right: 0; left: 0; bottom: 0; z-index: 9;"></div>
+                <div v-if="deptVisibleNames.length>0"  @click="show_dept_selector = true" class="zindexName">
+                  <span v-for="(item,index) in deptVisibleNames" :key="index">
+                    <wwOpenDAta type="departmentName" :openid="item.dept_name"></wwOpenDAta><span v-if="(deptVisibleNames.length-index)>1">,</span>
+                  </span>
+                </div>
               </el-col>
             </el-row>
             <EmployeeSelector
@@ -213,6 +221,7 @@
 
         // 部门可见
         deptVisibleName: null,
+        deptVisibleNames: [],
         dept_not_select: [],
         dept_employee_list: [],
         dept_selected: {dept: [],employee:[]},
@@ -278,6 +287,7 @@
             this.reviewer_selected = {dept: [],employee:[]}
             this.dept_selected = {dept: [],employee:[]}
             this.deptVisibleName = ''
+            this.deptVisibleNames = []
           }else{
             self.$message.error(res.data.msg)
           }
@@ -322,9 +332,11 @@
       dept_confirm(data){
         this.dept_selected = {dept: [],employee:[]}
         this.formData.dept_ids = []
+        this.deptVisibleNames = []
         this.deptVisibleName = ''
         if (data.dept !== null && data.dept.length != 0) {
           this.dept_selected = data
+          this.deptVisibleNames = data.dept
           data.dept.forEach(element => {
 						this.formData.dept_ids.push(element.dept_id)
 						this.deptVisibleName += (element.dept_name+',')
@@ -339,6 +351,18 @@
     }
   }
 </script>
-
-<style>
+<style lang="scss">
+  .zindexName{
+     position: absolute;
+     top: 0;
+     right: 0;
+     left: 0;
+     bottom: 0;
+     z-index: 9;
+     border:1px solid rgb(224, 224, 224);
+     width:360px;
+     border-radius:3px;
+     padding-left:15px;
+     overflow: hidden;
+  }
 </style>

+ 30 - 3
src/views/common/rewardTaskAmend.vue

@@ -38,8 +38,11 @@
           <el-form-item label="审批人" prop="reviewer_id" :rules="[{ required: true, message: '请选择审批人', trigger: 'change' }]">
             <el-row>
               <el-col :span="18">
-                <el-input auto-complete="off" v-model="reviewerName" placeholder="请选择审批人"></el-input>
+                <el-input v-show="reviewerName=='' || reviewerName== null" auto-complete="off" v-model="reviewerName" placeholder="请选择审批人"></el-input>
                 <div @click="show_reviewer_selector = true" style=" position: absolute; top: 0; right: 0; left: 0; bottom: 0; z-index: 9;"></div>
+                <div v-if="reviewerName!='' && reviewerName!= null"  @click="show_reviewer_selector = true" class="zindexName">
+                    <wwOpenDAta type="userName" :openid="reviewerName"></wwOpenDAta>
+                </div>
               </el-col>
             </el-row>
             <EmployeeSelector
@@ -115,8 +118,13 @@
           <el-form-item label="谁可以看" prop="dept_ids">
             <el-row>
               <el-col :span="18">
-                <el-input auto-complete="off" v-model="deptVisibleName" placeholder="请选中部门的人可领取"></el-input>
+                <el-input v-show="deptVisibleNames.length==0" auto-complete="off" v-model="deptVisibleName" placeholder="请选中部门的人可领取"></el-input>
                 <div @click="show_dept_selector = true" style=" position: absolute; top: 0; right: 0; left: 0; bottom: 0; z-index: 9;"></div>
+                <div v-if="deptVisibleNames.length>0"  @click="show_dept_selector = true" class="zindexName">
+                  <span v-for="(item,index) in deptVisibleNames" :key="index">
+                    <wwOpenDAta type="departmentName" :openid="item.dept_name"></wwOpenDAta><span v-if="(deptVisibleNames.length-index)>1">,</span>
+                  </span>
+                </div>
               </el-col>
             </el-row>
             <EmployeeSelector
@@ -217,6 +225,7 @@
 
         // 部门可见
         deptVisibleName: null,
+        deptVisibleNames: [],
         dept_not_select: [],
         dept_employee_list: [],
         dept_selected: {dept: [],employee:[]},
@@ -250,6 +259,7 @@
           this.formData.timeout_deduction_point = ''
         }
         let department_infoName = ''
+        let department_infoNames = []
         // avatar: "static/images/e66f.jpg"
         // dept_id: 462
         // dept_name: "技术部"
@@ -262,10 +272,12 @@
           department_infoDept.dept_name = this.rewardTaskAmendData.department_info[i].name
           department_infoDept.avatar = "static/images/e66f.jpg"
           this.dept_selected.dept.push(department_infoDept)
+          department_infoNames.push(department_infoDept)
           // department_infoName.push(this.rewardTaskAmendData.department_info[i].name)
           department_infoName+=this.rewardTaskAmendData.department_info[i].name+','
         }
         this.deptVisibleName = department_infoName
+        this.deptVisibleNames = department_infoNames
         this.formData.dept_ids = deptIDs//可见范围
       }
     },
@@ -371,8 +383,10 @@
         this.dept_selected = {dept: [],employee:[]}
         this.formData.dept_ids = []
         this.deptVisibleName = ''
+        this.deptVisibleNames = []
         if (data.dept !== null && data.dept.length != 0) {
           this.dept_selected = data
+          this.deptVisibleNames = data.dept
           data.dept.forEach(element => {
 						this.formData.dept_ids.push(element.dept_id)
 						this.deptVisibleName += (element.dept_name+',')
@@ -387,5 +401,18 @@
   }
 </script>
 
-<style>
+<style lang="scss">
+  .zindexName{
+     position: absolute;
+     top: 0;
+     right: 0;
+     left: 0;
+     bottom: 0;
+     z-index: 9;
+     border:1px solid rgb(224, 224, 224);
+     width:360px;
+     border-radius:3px;
+     padding-left:15px;
+     overflow: hidden;
+  }
 </style>

+ 3 - 1
src/views/common/rewardTaskDetailsPopup.vue

@@ -48,7 +48,9 @@
           <li class="flex-box" v-if="workDetailData.department_info" >
             <div class="label">可见范围</div>
             <div class="content_text">
-              <span v-for="(item,index) in workDetailData.department_info">{{item.name}},</span>
+              <span v-for="(item,index) in workDetailData.department_info" :key="index">
+                <wwOpenDAta type="departmentName" :openid="item.name"></wwOpenDAta><span v-if="(workDetailData.department_info.length-index)>1">,</span>
+              </span>
             </div>
           </li>
           <li class="flex-box">

+ 4 - 4
src/views/common/taskDetailsPopup.vue

@@ -7,7 +7,7 @@
         <div class="flex-box flex-v-ce">
           <userImage class="user_img person_imghead" width="46px" height="46px" :user_name="workDetailData.employee_name" :img_url="workDetailData.img_url"></userImage>
           <div class="d_userMessage">
-            <div>{{workDetailData.employee_name}}</div>
+            <div><wwOpenDAta type="userName" :openid="workDetailData.employee_name"></wwOpenDAta></div>
             <div v-if="detailType != 2 && workDetailData.dept_list[0]">{{workDetailData.dept_list[0].dept_name}}</div>
           </div>
           <!-- 为了在抽屉打开之后获取焦点 -->
@@ -44,7 +44,7 @@
           </li>
           <li class="flex-box">
             <div class="label">审批人</div>
-            <div class="content_text">{{workDetailData.reviewer_name}}</div>
+            <div class="content_text"><wwOpenDAta type="userName" :openid="workDetailData.reviewer_name"></wwOpenDAta></div>
           </li>
           <li class="flex-box">
             <div class="label">积分种类</div>
@@ -71,7 +71,7 @@
                     <userImage class="user_img person_imghead" width="40px" height="40px" :user_name="item.recorder" :img_url="item.img_url"></userImage>
                     <div class="work_right flex-1">
                       <div class="flex-box">
-                        <div class="d_name flex-1">{{item.recorder}}</div>
+                        <div class="d_name flex-1"><wwOpenDAta type="userName" :openid="item.recorder"></wwOpenDAta></div>
                         <div class="d_date">{{item.time}}</div>
                       </div>
                       <div class="d_content">{{item.remark}}</div>
@@ -93,7 +93,7 @@
                     <userImage class="user_img person_imghead" width="40px" height="40px" :user_name="item.recorder" :img_url="item.img_url"></userImage>
                     <div class="work_right flex-1">
                       <div class="flex-box">
-                        <div class="d_name flex-1">{{item.recorder}}
+                        <div class="d_name flex-1"><wwOpenDAta type="userName" :openid="item.recorder"></wwOpenDAta>
                         <span class="blue" v-if="item.point>0">+{{item.point}}</span>
                         <span class="green" v-if="item.point<0">{{item.point}}</span>
                         </div>

+ 31 - 3
src/views/common/temporaryTask.vue

@@ -20,8 +20,13 @@
           <el-form-item label="执行人" prop="targets" :rules="[{ required: true, message: '请选择执行人', trigger: 'change' }]">
             <el-row>
               <el-col :span="18">
-                <el-input auto-complete="off" v-model="executorName" placeholder="请选择执行人"></el-input>
+                <el-input v-show="executorNames.length==0" auto-complete="off" v-model="executorName" placeholder="请选择执行人"></el-input>
                 <div @click="show_approval_selector = true" style=" position: absolute; top: 0; right: 0; left: 0; bottom: 0; z-index: 9;"></div>
+                <div v-if="executorNames.length>0"  @click="show_approval_selector = true" class="zindexName">
+                  <span v-for="(item,index) in executorNames" :key="index">
+                    <wwOpenDAta type="userName" :openid="item.name"></wwOpenDAta><span v-if="(executorNames.length-index)>1">,</span>
+                  </span>
+                </div>
               </el-col>
             </el-row>
             <EmployeeSelector
@@ -38,8 +43,11 @@
           <el-form-item label="审批人" prop="reviewer_id" :rules="[{ required: true, message: '请选择审批人', trigger: 'change' }]">
             <el-row>
               <el-col :span="18">
-                <el-input auto-complete="off" v-model="reviewerName" placeholder="请选择审批人"></el-input>
+                <el-input v-show="reviewerName=='' || reviewerName== null" auto-complete="off" v-model="reviewerName" placeholder="请选择审批人"></el-input>
                 <div @click="show_reviewer_selector = true" style=" position: absolute; top: 0; right: 0; left: 0; bottom: 0; z-index: 9;"></div>
+                <div v-if="reviewerName!='' && reviewerName!= null"  @click="show_reviewer_selector = true" class="zindexName">
+                    <wwOpenDAta type="userName" :openid="reviewerName"></wwOpenDAta>
+                </div>
               </el-col>
             </el-row>
             <EmployeeSelector
@@ -171,6 +179,7 @@
         point_types: [],
         // 执行者
         executorName: null,
+        executorNames:[],
         show_approval_selector: false,
         approval_selected: {dept: [],employee:[]},
         approval_not_select: [],
@@ -220,6 +229,7 @@
         this.$emit('update:dialogVisible', false)
         this.$refs[formName].resetFields();
         this.executorName = ''
+        this.executorNames = []
         this.reviewerName = ''
       },
       // 提交
@@ -249,6 +259,7 @@
             self.$emit('update:dialogVisible', false)
             self.$refs[formName].resetFields();
             self.executorName = ''
+            this.executorNames = []
             self.reviewerName = ''
             this.approval_selected = {dept: [],employee:[]},
             this.reviewer_selected = {dept: [],employee:[]},
@@ -264,7 +275,9 @@
         this.approval_selected = {dept: [],employee:[]}
         this.formData.targets = []
         this.executorName = ''
+        this.executorNames = []
         if (data.employee !== null && data.employee.length != 0) {
+          this.executorNames = data.employee
           this.approval_selected = data
           data.employee.forEach(element => {
 						this.formData.targets.push(element.id)
@@ -290,4 +303,19 @@
       }
     }
   }
-</script>
+</script>
+<style lang="scss">
+  .zindexName{
+     position: absolute;
+     top: 0;
+     right: 0;
+     left: 0;
+     bottom: 0;
+     z-index: 9;
+     border:1px solid rgb(224, 224, 224);
+     width:360px;
+     border-radius:3px;
+     padding-left:15px;
+     overflow: hidden;
+  }
+</style>

+ 25 - 4
src/views/common/temporaryTaskAmend.vue

@@ -20,8 +20,11 @@
           <el-form-item label="执行人" prop="targets" :rules="[{ required: true, message: '请选择执行人', trigger: 'change' }]">
             <el-row>
               <el-col :span="18">
-                <el-input auto-complete="off" v-model="executorName" placeholder="请选择执行人"></el-input>
+                <el-input v-show="executorName=='' || executorName== null" auto-complete="off" v-model="executorName" placeholder="请选择执行人"></el-input>
                 <div @click="show_approval_selector = true" style=" position: absolute; top: 0; right: 0; left: 0; bottom: 0; z-index: 9;"></div>
+                <div v-if="executorName!='' && executorName!= null"  @click="show_approval_selector = true" class="zindexName">
+                    <wwOpenDAta type="userName" :openid="executorName"></wwOpenDAta>
+                </div>
               </el-col>
             </el-row>
             <EmployeeSelector
@@ -38,8 +41,11 @@
           <el-form-item label="审批人" prop="reviewer_id" :rules="[{ required: true, message: '请选择审批人', trigger: 'blur' }]">
             <el-row>
               <el-col :span="18">
-                <el-input auto-complete="off" v-model="reviewerName" placeholder="请选择审批人"></el-input>
+                <el-input v-show="reviewerName=='' || reviewerName== null" auto-complete="off" v-model="reviewerName" placeholder="请选择审批人"></el-input>
                 <div @click="show_reviewer_selector = true" style=" position: absolute; top: 0; right: 0; left: 0; bottom: 0; z-index: 9;"></div>
+                <div v-if="reviewerName!='' && reviewerName!= null"  @click="show_reviewer_selector = true" class="zindexName">
+                    <wwOpenDAta type="userName" :openid="reviewerName"></wwOpenDAta>
+                </div>
               </el-col>
             </el-row>
             <EmployeeSelector
@@ -292,7 +298,7 @@
           this.approval_selected = data
           data.employee.forEach(element => {
 						this.formData.targets.push(element.id)
-						this.executorName += (element.name+',')
+						this.executorName += (element.name)
           });
         }
       },
@@ -313,4 +319,19 @@
       }
     }
   }
-</script>
+</script>
+<style lang="scss">
+  .zindexName{
+     position: absolute;
+     top: 0;
+     right: 0;
+     left: 0;
+     bottom: 0;
+     z-index: 9;
+     border:1px solid rgb(224, 224, 224);
+     width:360px;
+     border-radius:3px;
+     padding-left:15px;
+     overflow: hidden;
+  }
+</style>

+ 199 - 131
src/views/dashboard/index.vue

@@ -29,14 +29,15 @@
         <el-col :span="7" class="userinfo_box" v-loading="send_site_info_loading">
           <el-row :gutter="40" style="margin:0;padding:0;">
             <el-col :span="24" class="user_info">
-              <div class="headimg fl" style=" margin-right: 10px;cursor:pointer;" v-if="deptManagerRouters" @click="$router.push({ name: 'company_info',params:{activeName: 'second'}})">
+              <!-- <div class="headimg fl" style=" margin-right: 10px;cursor:pointer;" v-if="deptManagerRouters" @click="$router.push({ name: 'company_info',params:{activeName: 'second'}})">
                 <userImage :id="user_info.id" :img_url="user_info.img_url" :user_name="user_info.name" width="50px" height="50px"></userImage>
-              </div>
-              <div class="headimg fl" style=" margin-right: 10px;" v-else>
+              </div> -->
+              <div class="headimg fl" style=" margin-right: 10px;">
                 <userImage :id="user_info.id" :img_url="user_info.img_url" :user_name="user_info.name" width="50px" height="50px"></userImage>
               </div>
               <div class="greetings">
                 
+                <!-- <div ref="dept9999"> -->
                 <div>
                   <wwOpenDAta type="userName" :openid="user_info.name"></wwOpenDAta>
                 <!-- {{user_info.name}} -->
@@ -77,8 +78,8 @@
           <el-col :span="8" style="margin-top:34px;padding:0;border-right: 1px #cecccc solid;height:58px;" v-loading="authorityManagerHeaderLoad">
             <el-col :gutter="50" style="margin:0;padding:0;" class="quick_button_box">
               <div style="display:flex;justify-content: space-around;">
-                <p style="text-align:center;cursor:pointer;margin: 0;" @click="$router.push({ path: '/integral_statistics' })"><b style="color:#26A2FF;font-size:27px;">{{authorityManagerHeaders.b?authorityManagerHeaders.b:'0'}}</b><br><span style="color:#606266;font-size:14px;padding-top:8px;display: inline-block;">本月B分</span></p>
-                <p style="text-align:center;cursor:pointer;margin: 0;" @click="$router.push({ path: '/integral_statistics' })"><b style="color:#26A2FF;font-size:27px;">{{authorityManagerHeaders.a?authorityManagerHeaders.a:'0'}}</b><br><span style="color:#606266;font-size:14px;padding-top:8px;display: inline-block;">本月A分</span></p>
+                <p style="text-align:center;cursor:pointer;margin: 0;" @click="$router.push({ path: '/individual_statistics' })"><b style="color:#26A2FF;font-size:27px;">{{authorityManagerHeaders.b?authorityManagerHeaders.b:'0'}}</b><br><span style="color:#606266;font-size:14px;padding-top:8px;display: inline-block;">本月B分</span></p>
+                <p style="text-align:center;cursor:pointer;margin: 0;" @click="$router.push({ path: '/individual_statistics' })"><b style="color:#26A2FF;font-size:27px;">{{authorityManagerHeaders.a?authorityManagerHeaders.a:'0'}}</b><br><span style="color:#606266;font-size:14px;padding-top:8px;display: inline-block;">本月A分</span></p>
               </div>
 
             </el-col>
@@ -147,7 +148,8 @@
             <b class="title" style="margin-bottom:15px;display:block">积分构成</b>
           </el-col>
 
-          <el-col :span="5" style="position: absolute;top:40px;left:10px;z-index: 1;">
+          <el-col :span="5" style="position: absolute;top:40px;left:10px;z-index: 1;" v-if="!employeeRout">
+            <deptData  v-if="toPdept1 && toPdept1!=0" :refsName="$refs.dept1" :toPdept="toPdept1"></deptData>
             <!-- <wwOpenDAta type="departmentName" :openid="dept_tree.name"></wwOpenDAta> -->
             <el-cascader
               v-model="dept_name1"
@@ -161,8 +163,8 @@
               clearable
             >
               <template slot-scope="{ node, data }">
-                <span :v-model="dept_nameArr(data,node)" >
-                  <wwOpenDAta type="departmentName" :openid="data.name" :id="data.id"></wwOpenDAta>
+                <span>
+                  <wwOpenDAta type="departmentName" :openid="data.name"></wwOpenDAta>
                 </span>
                 <!-- <span v-if="!node.isLeaf"> ({{ data.children.length }}) </span> -->
               </template>
@@ -187,17 +189,26 @@
             <el-checkbox v-model="exclusiveMonthChecked">不包含自动积分加分项</el-checkbox>
           </el-col>
           <div v-loading="monthlyIntegralloading">
-            <el-col :span="5" style="position: absolute;top:40px;left:10px;z-index: 1;">
+            <el-col :span="5" style="position: absolute;top:40px;left:10px;z-index: 1;"  v-if="!employeeRout">
+              <deptData  v-if="toPdept2 && toPdept2!=0" :refsName="$refs.dept2" :toPdept="toPdept2"></deptData>
               <el-cascader
                 v-model="dept_name2"
                 :options="dept_tree"
+                :props="{ label: 'name', value: 'id'}"
                 @change="monthlyIntegralchange"
                 ref="dept2"
                 filterable
                 change-on-select
                 placeholder="请选择部门"
                 clearable
-              ></el-cascader>
+              >
+                <template slot-scope="{ node, data }">
+                  <span>
+                    <wwOpenDAta type="departmentName" :openid="data.name"></wwOpenDAta>
+                  </span>
+                  <!-- <span v-if="!node.isLeaf"> ({{ data.children.length }}) </span> -->
+                </template>
+              </el-cascader>
             </el-col>
 
             <div class="nopoint_box" style="height:400px;" v-if="monthlyIntegralnone">
@@ -222,23 +233,32 @@
         </el-row>
       </el-row>
 
-      <el-row class="raiders_box" style="margin-bottom:20px;">
+      <el-row class="raiders_box" style="margin-bottom:20px;" v-if="!employeeRout">
         <el-row style="position: relative;">
           <el-col :span="24">
             <b class="title" style="margin-bottom:15px;display:block">管理者奖扣任务执行情况</b>
           </el-col>
           <div v-loading="ManagerSAwardloading">
             <el-col :span="5" style="position: absolute;top:40px;left:10px;z-index: 1;">
+              <deptData  v-if="toPdept3 && toPdept3!=0" :refsName="$refs.dept3" :toPdept="toPdept3"></deptData>
               <el-cascader
                 v-model="dept_name3"
                 :options="dept_tree"
+                :props="{ label: 'name', value: 'id'}"
                 @change="ManagerSAwardlchange"
                 ref="dept3"
                 filterable
                 change-on-select
                 placeholder="请选择部门"
                 clearable
-              ></el-cascader>
+              >
+                <template slot-scope="{ node, data }">
+                  <span>
+                    <wwOpenDAta type="departmentName" :openid="data.name"></wwOpenDAta>
+                  </span>
+                  <!-- <span v-if="!node.isLeaf"> ({{ data.children.length }}) </span> -->
+                </template>
+              </el-cascader>
             </el-col>
             <div class="nopoint_box" style="height:400px;" v-if="ManagerSAwardnone">
               <div class="noimg" style="width: 150px;height: 170px;margin-top:90px;"></div>
@@ -273,7 +293,7 @@
         </div>
       </el-row>
 
-      <el-row class="readyapprove_box" style="background-color:#fff;" v-loading="examineAndApproveloading">
+      <el-row class="readyapprove_box" style="background-color:#fff;" v-loading="examineAndApproveloading" v-if="!employeeRout">
         <div class="grid-content bg-purple" style="background-color:#fff;padding:20px;">
           <span class="title">待我审批的 <span v-if="examineAndApproveList.length > 0">({{examineAndApproveindex>0?examineAndApproveindex:''}})</span></span>
           <div v-show="false">
@@ -293,7 +313,7 @@
                 style="margin-right:8px"
               ></userImage>
               <div class="rightexamineAndApproveList">
-                <p style="width:160px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#303133;font-size:16px"><b>{{item.employee_name}}{{item.source_type==1?'的积分任务':item.source_type==2?'的积分申请':item.source_type==3?'的积分录入':item.source_type==4?'的绩效工作':''}}</b></p>
+                <p style="width:160px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#303133;font-size:16px"><b><wwOpenDAta type="userName" :openid="item.employee_name"></wwOpenDAta>{{item.source_type==1?'的积分任务':item.source_type==2?'的积分申请':item.source_type==3?'的积分录入':item.source_type==4?'的绩效工作':''}}</b></p>
                 <p style="font-size:13px;line-height:20px;color:rgb(48, 49, 51);overflow:hidden; text-overflow:ellipsis;display:-webkit-box; -webkit-box-orient:vertical;-webkit-line-clamp:2; ">{{item.remark.rule || item.remark.customize}}</p>
                 <div style="display:flex;padding-bottom:16px;justify-content: space-between;">
                   <span style="color:#909399">{{item.event_time}}</span>
@@ -309,17 +329,16 @@
       </el-row>
 
     <!-- 本周考勤模块 -->
-      <el-row class="pointsevent_box">
+      <!-- <el-row class="pointsevent_box">
         <div class="grid-content bg-purple" v-loading="weekChecking_inloading" style="background:#fff;padding: 20px 20px 0;">
           <span class="title">本周考勤</span>
           <div style="display:flex;flex-wrap:wrap;justify-content: space-around;padding-bottom:20px">
-            <!-- <div v-for="(item,index) in weekChecking_ins" :key="index" style="width:45%;"  @click="deptManagerRouters?$router.push({ path: '/attendance_statisticnew' }):''"> -->
             <div v-for="(item,index) in weekChecking_ins" :key="index" style="width:45%;">
               <p class="weekChecking_inStyle"><b style="font-size:20px;">{{item.val}}</b><br> {{item.name}}</p>
             </div>
           </div>
         </div>
-      </el-row>
+      </el-row> -->
 
       <el-row class="pointsevent_box">
         <div class="grid-content bg-purple" v-loading="highestPrizeBuckleloading" style="background:#fff;padding: 20px 20px 0;">
@@ -340,7 +359,7 @@
               style="margin-right:8px"
             ></userImage>
             <div class="rightexamineAndApproveList" style="border:0px">
-              <p style="width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#73767c;font-size:16px;display:flex;justify-content: space-between;"><b style="color:#303133;font-size:16px;">{{prize.name}}</b><span style="color:#26A2FF;font-size:16px;"><span v-if="prize.point>0">+</span>{{prize.point}} B分</span></p>
+              <p style="width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#73767c;font-size:16px;display:flex;justify-content: space-between;"><b style="color:#303133;font-size:16px;"><wwOpenDAta type="userName" :openid="prize.name"></wwOpenDAta></b><span style="color:#26A2FF;font-size:16px;"><span v-if="prize.point>0">+</span>{{prize.point}} B分</span></p>
               <p style="font-size:13px;line-height:20px;color:rgb(48, 49, 51);overflow:hidden; text-overflow:ellipsis;display:-webkit-box; -webkit-box-orient:vertical;-webkit-line-clamp:2; ">{{prize.remark? prize.remark.customize : ''}}</p>
             </div>
           </div>
@@ -365,7 +384,7 @@
               style="margin-right:8px"
             ></userImage>
             <div class="rightexamineAndApproveList">
-              <p style="width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#73767c;font-size:16px;display:flex;justify-content: space-between;"><b style="color:#303133;font-size:16px;">{{buckle.name}}</b><span style="color:#FF9600;font-size:16px;">{{buckle.point}} B分</span></p>
+              <p style="width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#73767c;font-size:16px;display:flex;justify-content: space-between;"><b style="color:#303133;font-size:16px;"><wwOpenDAta type="userName" :openid="buckle.name"></wwOpenDAta></b><span style="color:#FF9600;font-size:16px;">{{buckle.point}} B分</span></p>
               <p style="font-size:13px;line-height:20px;color:rgb(48, 49, 51);overflow:hidden; text-overflow:ellipsis;display:-webkit-box; -webkit-box-orient:vertical;-webkit-line-clamp:2;padding-bottom:15px; ">{{buckle.remark?buckle.remark.customize:''}}</p>
             </div>
           </div>
@@ -533,8 +552,9 @@
         examineAndApproveloading:false,//审批loading
         examineAndApproveList:[],//审批列表
         examineAndApproveindex:0,//审批列表数量
-        deptManagerRouters:JSON.parse(localStorage.getItem("deptManagerRouters")),//是否部门管理者权限
-        creatorJurisdiction:JSON.parse(localStorage.getItem("creatorJurisdiction")),//是否创始人权限
+        deptManagerRouters:!this.$authoritys('dept_manager'),//是否部门管理者权限
+        creatorJurisdiction:this.$authoritys('creator'),//是否创始人权限
+        employeeRout:this.$authoritys('employee'),//员工权限
         user_infos:this.$store.getters.user_info,//拿到当前登录人员信息,隐藏部门管理者等
         dialogProfileVisibleinit: false,
         compnayInfoForm: {
@@ -604,6 +624,11 @@
         // index_introduction: localStorage.getItem('index_introduction'),
         // index_course: localStorage.getItem('index_course'),
         pastdueDate:null,
+
+        
+        toPdept1:0,//选择部门的遮到
+        toPdept2:0,//选择部门的遮到
+        toPdept3:0,//选择部门的遮到
       }
     },
     watch: {
@@ -630,14 +655,13 @@
           let H = document.getElementsByClassName('main-content')[0].scrollTop
           if(this.rollOne && H>=100){
             this.rollOne = false
-            if(this.creatorJurisdiction){
-              this.monthlyIntegral()//月度积分
-              this.ManagerSAward()//管理者奖扣任务执行情况
-            }else{
-              this.monthlyIntegral()//月度积分
-              this.ManagerSAward()//管理者奖扣任务执行情况
+            this.monthlyIntegral()//月度积分
+            if(!this.creatorJurisdiction && !this.employeeRout){//创始人不请求奖扣分最高积分事件
               this.highestPrizeBuckle()//奖扣分最高积分事件
             }
+            if(!this.employeeRout){//员工不请求管理者奖扣任务执行情况
+              this.ManagerSAward(); //管理者奖扣任务执行情况
+            }
           }
         }
       },
@@ -735,92 +759,115 @@
             this.weekChecking_inloading = false
           })
       },
-
       //管理者奖扣统计
       ManagerSAwardCharts(Name,Award,Deduct){//管理着奖扣统计表
         const chart = this.$refs.ManagerSAwardChart
-        if(chart){
-          const myChart = ECharts.init(chart)
-          const option = {
-            tooltip: {
-                trigger: 'axis',
-                axisPointer: {
-                    // type: 'cross',
-                    crossStyle: {
-                        color: '#999'
+        console.log(Name)
+        // WWOpenData.prefetch({ items }, (err, data) => {
+        //   if (err) {
+        //       console.log(err);
+        //       return reject(err);
+        //   }
+        //   console.log(data);
+        //   resolve(data);
+        // });
+        // var Name = [];
+            if(chart){
+              const myChart = ECharts.init(chart)
+              const option = {
+                // tooltip: {
+                //     trigger: 'axis',
+                //     axisPointer: {
+                //         // type: 'cross',
+                //         crossStyle: {
+                //             color: '#999'
+                //         }
+                //     },
+                // },
+                tooltip: {
+                  trigger: 'axis',
+                  formatter: (params) => {
+                    var htmlStr ='<div>';
+                    for(let i in params){
+                      htmlStr += '<span style="display:inline-block;background-color:'+params[i].color+';width:8px;height:8px;border-radius:50%;margin:0 5px;"></span>'
+                      htmlStr += '<span>'+params[i].seriesName+':</span>';
+                      htmlStr += '<span style="margin:0 5px 0 3px;">'+params[i].value+'</span><br>';
                     }
-                }
-            },
-            grid: {//表格偏移量
-              // top: '5% '
-              left:'5%',
-              right:'0%'
-            },
-            toolbox: {
-                feature: {
-                    // dataView: {show: false, readOnly: true},
-                    // magicType: {show: false, type: ['line', 'bar']},
-                    // restore: {show: false},
-                    // saveAsImage: {show: false}
-                }
-            },
-            color:['#26A2FF','#FFC100'],
-            legend: {
-                right: '0%',//设置位置
-                data: ['奖分', '扣分']
-            },
-            xAxis: [
-                {
-                    type: 'category',
-                    data: Name,
-                    axisPointer: {
-                        type: 'shadow',
-                    },
-                    axisLabel:{
-                      interval:0,//横轴信息全部显示
-                      // rotate:-30,//-30度角倾斜显示
-                    },
-                    axisLine:{//去掉X轴线
-                        show:false
-                    },
-                    axisTick:{//去掉X轴刻度
-                        show:false
-                    },
-                }
-            ],
-            yAxis: [
-                {
-                  type: 'value',
-                  axisLabel: {
-                      formatter: '{value}'
-                  },
-                  axisLine:{//去掉Y轴线
-                      show:false
-                  },
-                  axisTick:{//去掉Y轴刻度
-                      show:false
-                  },
+                    htmlStr += '</div>';
+                    return htmlStr;
+                  }
                 },
-            ],
-            series: [
-                { name: '奖分',
-                  type: 'bar',
-                  barWidth : 14,//柱图宽度
-                  barGap:'0%',//柱图间距
-                  data: Award
+                grid: {//表格偏移量
+                  // top: '5% '
+                  left:'5%',
+                  right:'0%'
                 },
-                { name: '扣分',
-                  type: 'bar',
-                  barWidth : 14,//柱图宽度
-                  barGap:'0%',//柱图间距
-                  data: Deduct
+                toolbox: {
+                    feature: {
+                        // dataView: {show: false, readOnly: true},
+                        // magicType: {show: false, type: ['line', 'bar']},
+                        // restore: {show: false},
+                        // saveAsImage: {show: false}
+                    }
                 },
-            ]
-        };
-          myChart.setOption(option)
-        }
+                color:['#26A2FF','#FFC100'],
+                legend: {
+                    right: '0%',//设置位置
+                    data: ['奖分', '扣分']
+                },
+                xAxis: [
+                    {
+                        type: 'category',
+                        data: Name,
+                        axisPointer: {
+                            type: 'shadow',
+                        },
+                        axisLabel:{
+                          interval:0,//横轴信息全部显示
+                          // rotate:-30,//-30度角倾斜显示
+                        },
+                        axisLine:{//去掉X轴线
+                            show:false
+                        },
+                        axisTick:{//去掉X轴刻度
+                            show:false
+                        },
+                    }
+                ],
+                yAxis: [
+                    {
+                      type: 'value',
+                      axisLabel: {
+                          formatter: '{value}'
+                      },
+                      axisLine:{//去掉Y轴线
+                          show:false
+                      },
+                      axisTick:{//去掉Y轴刻度
+                          show:false
+                      },
+                    },
+                ],
+                series: [
+                    { name: '奖分',
+                      type: 'bar',
+                      barWidth : 14,//柱图宽度
+                      barGap:'0%',//柱图间距
+                      data: Award
+                    },
+                    { name: '扣分',
+                      type: 'bar',
+                      barWidth : 14,//柱图宽度
+                      barGap:'0%',//柱图间距
+                      data: Deduct
+                    },
+                ]
+            };
+              myChart.setOption(option)
+            }
       },
       ManagerSAwardlchange(val){//选中规则
+        this.toPdept3 = val[val.length-1]
         let valItem = 0
         for(let i in val){
           valItem = val[i]
@@ -845,14 +892,15 @@
         .then(res => {
           let datas = res.data.data
           listslength = datas.list
-          let histogramName = []
+          let items = []
           let histogramAward = []
           let histogramDeduct = []
           for(let i in datas.list){
+            console.log(datas.list[i].name)
             let arr = {}//转结构
             arr.type = "userName",
             arr.id = datas.list[i].name
-            histogramName.push(arr)
+            items.push(arr)
             histogramAward.push(datas.list[i].reward_point)
             histogramDeduct.push(datas.list[i].deduction_point)
           }
@@ -863,17 +911,9 @@
           this.ManagerSAwardlList[4].val = datas.manager_count
           this.ManagerSAwardlList[5].val = datas.pass_count
           this.ManagerSAwardlList[6].val = datas.fail_count
-          console.log(histogramName)
+          console.log(items)
           console.log(histogramAward)
           console.log(histogramDeduct)
-          WWOpenData.prefetch({ histogramName }, (err, data) => {
-            if (err) {
-                console.log(err);
-                return reject(err);
-            }
-            console.log(data);
-            resolve(data);
-          });
           // WWOpenData.prefetch({ histogramName }, (err, data) => {
           //   if (err) {
           //     console.log(err);
@@ -884,7 +924,19 @@
           //     WWOpenData.initCanvas()
           //   }
           // });
-          this.ManagerSAwardCharts(histogramName,histogramAward,histogramDeduct)
+          
+          WWOpenData.prefetch({ items }, (err, data) => {
+              if (err) {
+                console.log(err);
+              }
+              var Name = data.items.map($0=>$0.data) // 这个就是转好的,直接丢到 echarts
+              console.log(Name)
+              console.log(data)
+              if (WWOpenData.initCanvas) {
+                WWOpenData.initCanvas()
+              }
+              this.ManagerSAwardCharts(Name,histogramAward,histogramDeduct)
+          });
         }).finally(() => {
           if(listslength.length == 0){
             this.ManagerSAwardnone = true
@@ -985,6 +1037,7 @@
       },
       //月度积分
 			monthlyIntegralchange(val){
+        this.toPdept2 = val[val.length-1]
         if(val.length == 0){
           this.exclusiveMonthBranch = 0
         }else{
@@ -1003,7 +1056,13 @@
         this.monthlyIntegralloading = true
         let params = {}
         let listslength = []
-        params.dept_id=this.exclusiveMonthBranch,
+        if(this.employeeRout){
+          console.log(this.$store.getters.user_info.id)
+          params.employee_id = this.$store.getters.user_info.id;
+        }else{
+          params.dept_id = this.exclusiveMonthBranch
+        }
+        // params.dept_id=this.exclusiveMonthBranch,
         params.month= this.$moment().format('YYYY-MM')
         if(this.exclusiveMonthChecked){
           params.include_fixed = 1
@@ -1047,18 +1106,12 @@
           this.monthlyIntegralloading = false
         });
       },
-      dept_nameArr(data,node){
-        // var gtx=document.getElementById("gtx-host")
-        // console.log(gtx)
-        // let deptid = document.getElementById(data.id.toString())
-        // console.log(deptid)
-        // console.log(this.$refs[data.id.toString()])
-      },
+      // clickDept(refsNAme){
+			// 	this.$refs.refsNAme.dropDownVisible = true;
+      // },
       //积分构成
 			dept1_null(val){
-        console.log(this.$refs['dept1'].currentLabels)
-        console.log(this.$refs['dept1'].getCheckedNodes())
-        console.log(this.$refs.dept1)
+        this.toPdept1 = val[val.length-1]
         let valItem = 0
         for(let i in val){
           valItem = val[i]
@@ -1192,6 +1245,9 @@
             params.dept_id=0,
             params.month= this.$moment().format('YYYY-MM')
         }
+        if(this.employeeRout){
+          params.employee_id = this.$store.getters.user_info.id;
+        }
         this.$http('get','/api/integral/statistics/pie/b',params,'v2').then(res => {
           let lists = res.data.data.list
           listslength = lists
@@ -1598,7 +1654,8 @@
           this.site_infoTIme(res.expire_time)
         }
       })
-      this.overdueToken()
+      // this.overdueToken()//长时间免登,重新请求token
+      
       // window.addEventListener("popstate", this.popstate, false)
       // 拜年动画
       // if(!localStorage.getItem('isPlayFlash')){
@@ -1617,6 +1674,16 @@
       // }
     },
     mounted() {
+      if(this.employeeRout){
+        this.inCommonUse = []
+        this.inCommonUse.push(
+          {name:'申请积分',image:'/static/images/a_apply.png',push:'/apply_list'},
+          {name:'领任务',image:'/static/images/task_hall.png',push:'/get_task'},
+        )
+      }
+      // console.log('this.$refs.dept9999')
+      // console.log(this.$refs.dept9999.firstChild.innerHTML)
+      // console.log(this.$refs.dept9999.textContent)
       console.log(WWOpenData)
       if(JSON.parse(localStorage.getItem("Experience_data"))){
         this.experience_data = JSON.parse(localStorage.getItem("Experience_data")).if//是否体验账号
@@ -1629,6 +1696,9 @@
       }else{//管理员
          this.authorityManagerHeader()//管理员header
       }
+      if(this.employeeRout){
+        this.highestPrizeBuckle()//奖扣分最高积分事件
+      }
       this.rankingListname()//获取自定义排行榜名
       // this.monthlyIntegral()//月度积分
       this.integralForm()//积分构成
@@ -1642,8 +1712,6 @@
 
 
 
-      if(JSON.parse(localStorage.getItem("deptManagerRouters"))){//判断是否是部门管理者
-      }
       // let onjpan = []
       // let onarr = [38,38,40,40,37,39,37,39,66,65,66,65]
       // document.onkeydown = function(e) {
@@ -1684,7 +1752,6 @@
       // }
 
       
-      this.qrcode()//生成二维码,可能无用
       this.$nextTick(() => {
         this.$router.afterEach(() => {//切换到此路由时让滚动条回到顶部
             document.getElementsByClassName('main-content')[0].scrollTop = 0;
@@ -1697,6 +1764,7 @@
 
       console.log('this.$refs.dept1')
       console.log(this.$refs.dept1)
+      // this.qrcode()//生成二维码,可能无用
     },
     beforeDestroy(){//销毁滚动条事件
       window.removeEventListener("scroll",this.handleScrolls,true)

File diff suppressed because it is too large
+ 472 - 1684
src/views/integral/EmployeeTable.vue


+ 506 - 0
src/views/integral/framework.vue

@@ -0,0 +1,506 @@
+<template>
+	<div class="all-box">
+		<!-- 头部提示 -->
+		<!-- <div class="diy-tip" style="margin-bottom: 10px;">
+			<div>
+				当前组织架构成员通过钉钉通讯录同步,员工开启积分管理后才能正式启用并进入“功道云积分制”,如果您的钉钉通讯录有变动,点击
+				<span class="blue" style="margin-left: 10px;cursor: pointer;" @click="tb()" v-loading="tbLoading">
+					<i class="el-icon-refresh"></i>
+					立即同步
+				</span>
+			</div>
+		</div> -->
+		
+		<el-alert class="diy-tip"  title="温馨提示:" @close="tips_close" v-show="tips_show" type="success" description show-icon>
+		当前组织架构成员通过微信通讯录同步,员工开启积分管理后才能正式启用并进入“功道云积分制”,如果您的微信通讯录有变动,点击立即同步
+		<!-- <p>第一步:添加部门</p>
+		<p>第二步:新增员工(员工可以批量导入,每次最多可以导入500个员工)</p>
+		<p>备注:(导入员工的数量不能大于购买的员工数量)</p> -->
+		</el-alert>
+
+		<div class="all">
+			<div class="flex-box">
+				<div class="terr-left">
+					<div class="rule_class_box" v-loading="ruleDeprt">
+							<div class="company_name">
+								<img src="/static/images/two.png" />
+								<span>组织架构</span>
+							</div>
+						<el-tree
+							:data="bmList"
+							class="cate-tree"
+							:highlight-current="true"
+							:props="{ children: '_child', label: 'name' }"
+							@node-click="handleNodeClick"
+							:accordion="true"
+							empty-text="您暂无部门数据,请同步钉钉通讯录"
+						>
+							<div
+								content="tree"
+								v-show="treedata.length != 0"
+								class="flex-box flex-v-ce"
+								slot-scope="{ node, data }"
+								style="font-size: 14px;color: #606266; width:100%; text-align: left;"
+							>
+								<img src="/static/images/one.png" style="width: 20px;margin-right: 5px;" />
+								<span class="name">{{ data.name }}</span>
+							</div>
+						</el-tree>
+					</div>
+				</div>
+				<div class="terr-right border-right flex-1">
+					<div class="margin-bottom">
+						<el-button @click="participation()" :loading="enable_loading" size="medium" type="primary" style="margin-right: 10px;">批量启用积分管理</el-button>
+						<el-input placeholder="输入同事姓名" size="medium" style="width: 230px;"  v-model="keywords" clearable @input="searchUser()">
+							<!-- <el-button slot="append" icon="el-icon-search" @click="getEmployee()"></el-button> -->
+						</el-input>
+					</div>
+					<el-table :data="userList" @selection-change="handleSelectionChange" v-loading="tableToading">
+						<el-table-column type="selection" width="50"></el-table-column>
+						<el-table-column label="姓名">
+							<template slot-scope="scope">
+								<div class="flex-box flex-v-ce">
+									<userImage :user_name="scope.row.name" :img_url="scope.row.img_url" width="44px" height="44px"></userImage>
+									<div style="margin-left: 10px;">{{ scope.row.name }}</div>
+								</div>
+							</template>
+						</el-table-column>
+						<el-table-column label="部门">
+							<template slot-scope="scope">
+								<div class="flex-box flex-v-ce bms">
+									<div v-for="(item, index) in scope.row.employee_detail.dept_list" :key="index">{{ item.dept_name }}</div>
+								</div>
+							</template>
+						</el-table-column>
+						<el-table-column prop="accedence_time" label="入职时间"></el-table-column>
+						<el-table-column prop="accedence_time" label="是否参与排名" align="center">
+							<template slot-scope="scope">
+								<span class="participateRank" :style="scope.row.is_ranking==1?'color:#409eff':'color:rgb(255 83 70)'" @click="rankingtakePartIn(scope.row.id,scope.row.is_ranking)">{{ scope.row.is_ranking==1?'参与':'不参与' }}</span>
+								<!-- <span>不参与</span> -->
+							</template>
+						</el-table-column>
+						<el-table-column label="启用积分管理">
+							<template slot="header" slot-scope="scope">
+								  <el-popover
+									placement="top-start"
+									width="300"
+									trigger="manual"
+									v-model="visible">
+									<div class="el-popover2">
+										<div class="title">提示 <i class="el-icon-info" style="margin-left: 5px;"></i></div>
+										<div style="margin-bottom: 10px;">在这里启用积分管理,即可进入系统</div>
+										<div class="flex-box">
+											<div class="flex-1"></div>
+											<el-button size="small" @click="visible_close()">我知道了</el-button>
+										</div>
+									</div>
+									<div slot="reference" class="popover" @click="visible=!visible">启用积分管理</div>
+								  </el-popover>
+							</template>
+							<template slot-scope="scope">
+								<div :class="[scope.row.is_official==1? 'switch-box':'']" @click="changeIs(scope.row.is_official, scope.row.id)">
+									<div class="switch"></div>
+								</div>
+								<!-- <el-switch @change="changeIs($event, scope.row.id)" v-model="scope.row.is_official" :active-value="is" :inactive-value="no"></el-switch> -->
+							</template>
+						</el-table-column>
+						<template slot="empty">
+							<noData></noData>
+						</template>
+					</el-table>
+					<div class="pagination">
+						<el-pagination
+							@size-change="handleSizeChange"
+							@current-change="handleCurrentChange"
+							:current-page="page"
+							:page-sizes="[10, 20, 50, 100]"
+							:page-size="perPage"
+							layout="total,sizes, prev, pager, next"
+							:total="total"
+						></el-pagination>
+					</div>
+				</div>
+			</div>
+		</div>
+		<el-dialog
+		title="设置是否参与排名"
+		:visible.sync="dialogVisible"
+		top="30vh"
+		width="520px"
+		:before-close="handleClose">
+		<div style="margin-left:20px;">
+			<el-radio v-for="(item,index) in radioLi" :key="index" v-model="radio" :label="item.id">
+				<span style="font-size:17px;">{{item.name}}</span>
+				<p style="font-size:14px;margin:8px 0 0 24px;">{{item.kam}}</p>
+			</el-radio>
+		</div>
+		<span slot="footer" class="dialog-footer">
+			<el-button @click="dialogVisible = false">取 消</el-button>
+			<el-button type="primary" @click="setRanking" :disabled="rangLoad">确 定</el-button>
+		</span>
+		</el-dialog>
+	</div>
+</template>
+
+<script>
+import noData from '@/components/noData';
+export default {
+	data() {
+		return {
+			is: 1,
+			no: 0,
+			page: 1,
+			perPage: 10,
+			total: 0,
+			info: {}, //公司信息
+			tips_show: true,
+			bmList: [],
+			userList: [],
+			class_type: '',
+			treedata: [1],
+			tableData: [],
+			keywords: '',
+			dept_id: 0,
+
+			tableToading: false,
+			tbLoading: false,
+			selectIds: [],
+			enable_loading:false,
+			visible:false,
+			
+			ruleDeprt:false,
+			dialogVisible:false,
+			rankingtakePartInId:'',
+			radio: '1',
+			
+			rangLoad:false,
+			radioLi:[
+				{id:'1',name:'参与排名',kam:'在排名中展示此人'},
+				{id:'0',name:'不参与排名',kam:'排名不展示此人(自定义排名除外)'},
+			],
+		};
+	},
+	components: {
+		noData
+	},
+	watch: {
+		dept_id(val) {
+			this.getEmployee();
+		}
+	},
+	created() {
+		this.getInfo();
+		// this.getDepartment();
+		this.getEmployee();
+	},
+	mounted() {
+		this.$nextTick(function() {
+			if (localStorage.getItem('rule')) {
+				this.tips_show = false;
+			} else {
+				this.tips_show = true;
+			}
+		});
+	},
+	methods: {
+		setRanking(){
+			this.rangLoad = true
+			let data = {
+				employee_id:this.rankingtakePartInId,
+				switch:Number(this.radio)
+			}
+			this.$http('post','/api/employee/ranking_switch',data).then((res)=>{
+				if(res.data.code == 1){
+					this.$message.success({ message: res.data.msg });
+					this.getEmployee()
+				}
+			}).finally(()=>{
+				this.dialogVisible = false
+				setTimeout(()=>{
+					this.rangLoad = false
+				},200)
+			})
+		},
+		rankingtakePartIn(id,is_ranking){
+			this.radio = is_ranking.toString()
+			this.rankingtakePartInId = id
+			this.dialogVisible = true
+		},
+		handleClose(done){
+			done()
+		},
+		//同步信息
+		tb() {
+			this.$confirm('下次同步时间需在10分钟之后,是否同步?', '提示', {
+			  confirmButtonText: '确定',
+			  cancelButtonText: '取消',
+			  type: 'warning'
+			}).then(() => {
+				this.tbLoading = true;
+				this.$http('post','/api/ding/department_sync').then(res => {
+					this.$message.success({ message: '同步成功' });
+					this.dept_id=0;
+					this.getInfo();
+					this.getEmployee();
+				}).finally(()=>{
+					this.tbLoading = false;
+				});
+			});
+		},
+		//搜索
+		searchUser(){
+			this.page = 1;
+			this.getEmployee();
+		},
+		//是否开通
+		changeIs(e, id) {
+			var url = e == 1 ? '/api/employee/disable' : '/api/employee/enable';
+			this.$http('post',url, { employee_id: [id] }).then(res => {
+				if (res) {
+					if(e==0){
+						this.$message.success({ message: '开启成功,可在"角色权限设置对应管理范围"' });
+					}else{
+						this.$message.success({ message: res.data.msg });
+					}
+					this.getEmployee();
+				}
+			});
+		},
+		//批量开通权限
+		participation() {
+			if(this.selectIds.length==0){
+				this.$message.error({ message: '请选择参与的人员!' });
+				return
+			}
+			
+			this.enable_loading=true;
+			this.$http('post','/api/employee/enable', { employee_id: this.selectIds }).then(res => {
+				if (res) {
+					this.$message.success({ message: '开启成功,可在"角色权限设置对应管理范围"' });
+					this.getEmployee();
+				}
+			}).finally(err=>{
+				this.enable_loading=false;
+			});
+		},
+		//获取公司信息
+		getInfo(is) {
+			this.ruleDeprt = true
+			// api/test?employee_id=155
+			this.$http('get','/api/site/info').then(res => {
+				this.info = res.data.data;
+				this.getDepartment(is);
+			});
+		},
+		//选择员工
+		handleSelectionChange(e) {
+			var arr = [];
+			for (var item in e) {
+				arr.push(e[item].id);
+			}
+			this.selectIds = arr;
+		},
+		//点击部门
+		handleNodeClick(e) {
+			this.page = 1;
+			this.dept_id = e.id;
+		},
+		//获取部门
+		getDepartment() {
+			this.ruleDeprt = true
+			this.$http('get','/api/department/tree').then(res => {
+				var list=[{
+					id:0,
+					name:this.info.name,
+					_child:res.data.data.list
+				}]
+				this.bmList = list;
+			}).finally(()=>{
+				this.ruleDeprt = false
+			});
+		},
+		//获取员工
+		getEmployee() {
+			this.tableToading = true;
+			this.$http('get','/api/employee/index', {dept_id: this.dept_id, keywords: this.keywords, page: this.page, page_size: this.perPage }).then(res => {
+				this.total = res.data.data.pageInfo.count;
+				this.userList = res.data.data.list;
+				var visible=localStorage.getItem('visible');
+				if(!visible){
+					this.visible=true;
+				}
+			}).finally(err=>{
+				this.tableToading=false;
+			});
+		},
+		visible_close(){
+			localStorage.setItem('visible', 'true');
+			this.visible = false;
+		},
+		//关闭提示
+		tips_close() {
+			localStorage.setItem('rule', 'true');
+			this.tips_show = false;
+		},
+		handleSizeChange: function(val) {
+			this.perPage = val;
+			this.page = 1;
+			this.getEmployee();
+		},
+		//页码变更
+		handleCurrentChange: function(val) {
+			this.page = val;
+			this.getEmployee();
+		}
+	}
+};
+</script>
+
+<style lang="scss" scoped="scoped">
+ .title{
+	 font-size: 16px;
+	 color: #909399;
+	 margin-bottom: 10px;
+ }	
+.popover{
+	border: none;
+	// color: #909399;
+	font-weight: 600;
+	cursor: pointer;
+}
+.popover:hover{
+	background-color: #fff;
+	border-color: #fff;
+}
+
+.switch{
+    margin: 0;
+    display: inline-block;
+    position: relative;
+    width: 40px;
+    height: 20px;
+    border: 1px solid #dcdfe6;
+    outline: none;
+    border-radius: 10px;
+    box-sizing: border-box;
+    background: #dcdfe6;
+    cursor: pointer;
+    transition: border-color .3s,background-color .3s;
+    vertical-align: middle;
+}
+.switch:after {
+    content: "";
+    position: absolute;
+    top: 1px;
+    left: 1px;
+    border-radius: 100%;
+    transition: all .3s;
+    width: 16px;
+    height: 16px;
+    background-color: #fff;
+}
+.switch-box .switch {
+    border-color: #409eff;
+    background-color: #409eff;
+}
+.switch-box .switch:after {
+    left: 100%;
+    margin-left: -17px;
+}
+.name {
+	overflow: hidden;
+	text-overflow: ellipsis;
+	white-space: nowrap;
+	width: 80%;
+}
+.bms div {
+	margin-right: 10px;
+}
+.top-msg div:nth-child(1) {
+	margin-bottom: 10px;
+}
+.company_name {
+	position: relative;
+	display: block;
+	font-family: 'Microsoft YaHei';
+	text-align: left;
+	padding: 15px 25px;
+	cursor: pointer;
+	overflow: hidden;
+	white-space: nowrap;
+	text-overflow: ellipsis;
+	border-bottom: 1px #f8f8f8 solid;
+}
+.company_name img {
+	position: relative;
+	display: inline-block;
+	top: 2px;
+	width: 18px;
+	height: 18px;
+	margin-right: 4px;
+}
+.terr-right {
+	.custom-tree-node {
+		margin-left: -4px;
+	}
+	.custom-tree-node * {
+		vertical-align: middle;
+	}
+	.custom-tree-node:hover {
+		.treeIcon {
+			display: inline-block;
+			width: 55%;
+		}
+	}
+}
+
+ .el-popover2{
+		 // background-color: #409eff !important;
+		 color: #409eff;
+	}
+.rule_class_box {
+	/deep/ .el-tree-node {
+		border-bottom: 1px #f8f8f8 solid;
+	}
+	/deep/ .el-tree-node__content {
+		padding: 10px 0;
+		// border-bottom: 1px #f8f8f8 solid;
+	}
+	/deep/ .el-tree-node__content:hover {
+		background: #ecf5ff;
+		border-radius: 4px;
+	}
+	/deep/ .el-tree--highlight-current .el-tree-node.is-current>.el-tree-node__content .name{
+	    color: #409eff !important;
+			font-weight: normal;
+			transition: 0.35s ease-in-out;
+	}
+	// ::v-deep .is-current .el-tree-node__content .el-icon-caret-right {
+	// 	color: #409eff !important;
+	// }
+	// ::v-deep .is-current .el-tree-node__content .el-tree-node__label {
+	// 	color: #409eff !important;
+	// }
+	// ::v-deep .is-current .el-tree-node__children .el-icon-caret-right {
+	// 	color: #c0c4cc !important;
+	// }
+	// ::v-deep .is-current .el-tree-node__children .el-tree-node__label {
+	// 	color: #606266 !important;
+	// }
+	// ::v-deep .is-current .name {
+	// 	color: #409eff !important;
+	// 	font-weight: normal;
+	// 	transition: 0.35s ease-in-out;
+	// }
+}
+.participateRank{
+	cursor:pointer;
+}
+.all{
+	background-color: #fff;
+	border-radius: 5px;
+	min-height:calc(100vh - 184px);
+	min-width: 800px;
+	position: relative;
+}
+</style>

+ 1 - 1
src/views/layout/Layout.vue

@@ -7,7 +7,7 @@
           <sidebar class="sidebar-container" v-if="show_sidebar" :classObj="classObj"></sidebar>
           <app-main></app-main>
         </div>
-        <div class="footer_copyright" :class="show_sidebar?'footer_copyright_margin':''">Copyright © 2020 广东功道云数字科技有限公司 All Rights Reserved</div>
+        <div class="footer_copyright" :class="show_sidebar?'footer_copyright_margin':''">Copyright © {{$moment().format("YYYY")}} 广东功道云数字科技有限公司 All Rights Reserved</div>
       </div>
     </div>
   </div>

+ 100 - 49
src/views/layout/components/Navbar.vue

@@ -24,7 +24,7 @@
             </span>
             <div class="right-menu" style="color:#eee; cursor: pointer;">
               <!-- <i class="el-icon-tickets"></i> -->
-              <span class="PCtutorials" v-if="deptManagerRoutersNav" @click="strategys">
+              <span class="PCtutorials" v-if="!this.$authoritys('dept_manager') && !this.$authoritys('employee')" @click="strategys">
                 <el-popover
                   placement="bottom-start"
                   width="200"
@@ -37,19 +37,21 @@
                   <svg-icon slot="reference" icon-class="PCtutorial" style="margin-bottom:8px;"/>
                 </el-popover>
               </span>
-              <el-dropdown @command="handleCommand">
+              <userImage class="user_img" :id="profile.id" width="40px" height="40px" fontSize="14" :user_name="profile.name"
+                :img_url="profile.img_url"></userImage>
+              <!-- <el-dropdown @command="handleCommand">
                 <span class="el-dropdown-link">
                   <userImage class="user_img" :id="profile.id" width="40px" height="40px" fontSize="14" :user_name="profile.name"
                     :img_url="profile.img_url"></userImage>
                 </span>
                 <el-dropdown-menu slot="dropdown">
-                  <!-- 切换公司或退出账号 -->
-                  <!-- <el-dropdown-item v-for="(group,index) in companyList" :key="index" :label="group.label" :divided="group.id == 1"
+                  切换公司或退出账号
+                  <el-dropdown-item v-for="(group,index) in companyList" :key="index" :label="group.label" :divided="group.id == 1"
                     :class="{active:group.isSelect}" :command="group">
                     {{group.name}}<i v-if="group.isSelect" class="el-icon-check" style="margin-left: 10px;"></i>
-                  </el-dropdown-item> -->
+                  </el-dropdown-item>
                 </el-dropdown-menu>
-              </el-dropdown>
+              </el-dropdown> -->
             </div>
           </div>
 
@@ -282,7 +284,7 @@
           label: '管理员'
         }],
         experiencevalue: JSON.parse(localStorage.getItem("Experience_data"))?JSON.parse(localStorage.getItem("Experience_data")).name== "creator"?'创始人':'管理员':'',
-        deptManagerRoutersNav:false,
+        // deptManagerRoutersNav:false,
         usingTheStrategy:false,//使用攻略弹窗
         pushUsingTheStrategy:[//使用攻略数据
           {
@@ -395,6 +397,41 @@
     },
     created() {
       
+      // let list = [0,1,1,1,0]
+      // for(let i in list){
+      //   debugger
+      //   if(list[i] == 1){
+      //     list.splice(i,1)
+      //   }
+      // }
+      // console.log(list)
+
+
+      // let arr = [{item:0},{item:1},{item:1},{item:1},{item:0}]
+      // let list = [0,1,1,1,0]
+      //现在我要删除等于1的
+      // for(let i = 0 ; i < list.length ; i++){
+      //   debugger
+      //   if(list[i] == 1){
+      //     list.splice(i,1)
+      //     i--
+      //   }
+      // }
+      // list.forEach((item,index)=>{
+      //   debugger
+      //   if(item == 1){
+      //     list.splice(index,1)
+      //     index--
+      //   }
+      // })
+      // for(let i in list){
+      //   debugger
+      //   if(list[i] == 1){
+      //     list.splice(i,1)
+      //     i--
+      //   }
+      // }
+      // console.log(list)
       console.log(this.$authoritys('employee'))
       if(JSON.parse(localStorage.getItem("amendMessage_none"))){
         if(this.$route.query.user){
@@ -413,14 +450,14 @@
       }
 
 
-      for(let i in this.user_infos){
-        if(this.user_infos[i].name == "admin" || this.user_infos[i].name == "point_manager" || this.user_infos[i].name == "creator"){//是否只是部门管理者
-          this.dept_manager = true
-        }
-        if(this.user_infos[i].name == "creator"){//是否是创始人
-          this.creator = true
-        }
-      }
+      // for(let i in this.user_infos){
+      //   if(this.user_infos[i].name == "admin" || this.user_infos[i].name == "point_manager" || this.user_infos[i].name == "creator"){//是否只是部门管理者
+      //     this.dept_manager = true
+      //   }
+      //   if(this.user_infos[i].name == "creator"){//是否是创始人
+      //     this.creator = true
+      //   }
+      // }
 
       
       // console.log(this.$supremeAuthority())
@@ -460,30 +497,37 @@
           }
         }
       }
-
-
-      if(this.creator){//是创始人权限,存localStorage在界面中隐藏或增加模块。VUEX有时会拿不到数据
-          localStorage.setItem("creatorJurisdiction", true);
-      }else{
-          localStorage.setItem("creatorJurisdiction", false);
+      for(let i in addRouters){
+        if(addRouters[i].redirect == '/award_punish'){
+          if(this.$authoritys('employee')){
+            addRouters[i].redirect = '/apply_list'
+            addRouters[i].path = '/apply_list'
+          }
+        }
       }
-      if(this.dept_manager == false){//是部门管理者时,存localStorage在界面中隐藏或增加模块。VUEX有时会拿不到数据
+
+      // if(this.creator){//是创始人权限,存localStorage在界面中隐藏或增加模块。VUEX有时会拿不到数据
+      //     localStorage.setItem("creatorJurisdiction", true);
+      // }else{
+      //     localStorage.setItem("creatorJurisdiction", false);
+      // }
+      // if(this.dept_manager == false){//是部门管理者时,存localStorage在界面中隐藏或增加模块。VUEX有时会拿不到数据
         // let deptRouters = []
           // this.$store.getters.user_info.deptManagerRouters = false
-          localStorage.setItem("deptManagerRouters", false);
-          this.deptManagerRoutersNav = false
+          // localStorage.setItem("deptManagerRouters", false);
+          // this.deptManagerRoutersNav = false
           // for(let i in addRouters){
           //   if(addRouters[i].redirect != '/attendance_classnew' && addRouters[i].redirect != '/employee_table'){//隐藏主要的根路由
           //       deptRouters.push(addRouters[i])
           //   }
           // }
           // this.menu = deptRouters;
-      }else{
-        localStorage.setItem("deptManagerRouters", true);
+      // }else{
+        // localStorage.setItem("deptManagerRouters", true);
         // this.$store.getters.user_info.deptManagerRouters = true
-        this.deptManagerRoutersNav = true
+        // this.deptManagerRoutersNav = true
         // this.menu = addRouters
-      }
+      // }
       
         this.menu = addRouters
 
@@ -518,13 +562,20 @@
         // debugger
         let supAuthority = this.$supremeAuthority()
         if(auth.forEach){
-          auth.forEach((item,index)=>{
-            if(item.meta.jurisdiction){
-              if(item.meta.jurisdiction.indexOf(supAuthority)==-1){
-                if(item.children){this.returnRoutersArrs(item.children)}
-              }else{auth.splice(index,1)}
-            }else{if(item.children){this.returnRoutersArrs(item.children)}}
-          })
+          // auth.forEach((item,index)=>{
+          //   if(item.meta.jurisdiction){
+          //     if(item.meta.jurisdiction.indexOf(supAuthority)==-1){
+          //       if(item.children){this.returnRoutersArrs(item.children)}
+          //     }else{auth.splice(index,1,0)}
+          //   }else{if(item.children){this.returnRoutersArrs(item.children)}}
+          // })
+          for(let i=0;i<auth.length;i++){//用普通for循环是因为循环内部会更改下标i
+            if(auth[i].meta.jurisdiction){
+              if(auth[i].meta.jurisdiction.indexOf(supAuthority)==-1){
+                if(auth[i].children){this.returnRoutersArrs(auth[i].children)}
+              }else{auth.splice(i,1);i--}
+            }else{if(auth[i].children){this.returnRoutersArrs(auth[i].children)}}
+          }
         }else{
           if(auth.meta.jurisdiction){
             if(auth.meta.jurisdiction.indexOf(supAuthority)==-1){
@@ -916,19 +967,19 @@
         }).then((res) => {
           if (res.data.code == 1) {
             setToken(res.data.data.token)
-            let manager = res.data.data.user.employee_detail.role_list.findIndex((item) => {
-              return item.name == "creator" || item.name == "admin" || item.name == "point_manager" || item.name == "dept_manager"
-            })
-            if (parseInt(manager) < 0) {
-              self.$confirm('电脑版暂未开放【员工】的使用,请使用功道云APP', '提示', {
-                confirmButtonText: '确定',
-                type: 'warning'
-              }).then(() => {
-                self.logout()
-              }).catch(() => {
-                self.logout()
-              });
-            } else {
+            // let manager = res.data.data.user.employee_detail.role_list.findIndex((item) => {
+            //   return item.name == "creator" || item.name == "admin" || item.name == "point_manager" || item.name == "dept_manager"
+            // })
+            // if (parseInt(manager) < 0) {
+            //   self.$confirm('电脑版暂未开放【员工】的使用,请使用功道云APP', '提示', {
+            //     confirmButtonText: '确定',
+            //     type: 'warning'
+            //   }).then(() => {
+            //     self.logout()
+            //   }).catch(() => {
+            //     self.logout()
+            //   });
+            // } else {
               self.$router.push({
                 path: '/'
               })
@@ -939,7 +990,7 @@
               localStorage.removeItem('dept_tree')
               sessionStorage.removeItem('current_time');
               window.location.reload()
-            }
+            // }
           } else {
             self.$message.error(res.data.data.msg)
           }

+ 15 - 3
src/views/layout/components/Sidebar/SidebarItem.vue

@@ -2,7 +2,9 @@
   <div v-if="!item.hidden&&item.children" class="menu-wrapper" >
     <router-link  v-if="hasOneShowingChild(item.children) && !onlyOneChild.children&&!item.alwaysShow" :to="resolvePath(onlyOneChild.path)">
       <el-menu-item  :index="resolvePath(onlyOneChild.path)"  :class="{'submenu-title-noDropdown':!isNest}">
-        <svg-icon v-if="onlyOneChild.meta&&onlyOneChild.meta.icon" :icon-class="onlyOneChild.meta.icon"></svg-icon>
+        <span class="icon_bug" v-if="onlyOneChild.meta&&onlyOneChild.meta.icon">
+          <svg-icon :icon-class="onlyOneChild.meta.icon"></svg-icon>
+        </span>
         <span v-if="onlyOneChild.meta&&onlyOneChild.meta.title" slot="title">{{generateTitle(onlyOneChild.meta.title)}}</span>
       </el-menu-item>
     </router-link>
@@ -10,16 +12,21 @@
     <el-submenu  v-else :index="item.name||item.path">
       <template slot="title">
         <div v-if="item.meta.show" class="show">
-          <svg-icon v-if="item.meta&&item.meta.icon" :icon-class="item.meta.icon"></svg-icon>
+          <span class="icon_bug" v-if="item.meta&&item.meta.icon">
+            <svg-icon :icon-class="item.meta.icon"></svg-icon>
+          </span>
           <span v-if="item.meta&&item.meta.title" slot="title">{{generateTitle(item.meta.title)}}</span>
         </div>
       </template>
 
+      <!-- <template v-for="child in item.children" v-if="!child.hidden && child!=0"> -->
       <template v-for="child in item.children" v-if="!child.hidden">
         <sidebar-item :is-nest="true" class="nest-menu" v-if="child.children&&child.children.length>0" :item="child" :key="child.path" :base-path="resolvePath(child.path)"></sidebar-item>
         <router-link v-else :to="resolvePath(child.path)" :key="child.name">
           <el-menu-item :index="resolvePath(child.path)">
-            <svg-icon fill="red" v-if="child.meta&&child.meta.icon" :icon-class="child.meta.icon"></svg-icon>
+            <span class="icon_bug" v-if="child.meta&&child.meta.icon">
+              <svg-icon fill="red" :icon-class="child.meta.icon"></svg-icon>
+            </span>
             <span v-if="child.meta&&child.meta.title" slot="title">{{generateTitle(child.meta.title)}}</span>
           </el-menu-item>
         </router-link>
@@ -97,4 +104,9 @@ export default {
     z-index: 999;
 
   }
+  .icon_bug{
+    display:inline-block;
+    width:30px;
+    overflow:hidden;
+  }
 </style>

+ 0 - 1
src/views/login/index.vue

@@ -398,7 +398,6 @@
         // localStorage.removeItem('site_info')
         // localStorage.removeItem('dept_tree')
         // localStorage.removeItem('user_token_temp')
-        // localStorage.removeItem('deptManagerRouters')
         // localStorage.removeItem('creatorJurisdiction')
         // self.$store.dispatch('LogOut');
         // sessionStorage.removeItem('current_time');

+ 71 - 84
src/views/login/index1.vue

@@ -1,18 +1,16 @@
 <template>
   <div class="login-container">
     <div class="all" style="">
-      <!-- <div class="login_logo">
-        <a href="#" target="_self" title="功道云-积分系统用户登录"><img src="/static/images/login-logo_20200603.png"></a>
-      </div> -->
       <div class="data-all" style="text-align:center;margin-top:50px;">
-        <img src="/static/images/init.gif" style="margin:0 auto;" alt="">
+        <transition name="fade">
+          <img src="/static/images/login300.png" v-if="logImage" style="margin:48px auto;width:104px;height:104px;" alt="">
+          <img src="/static/images/init.gif" v-if="!logImage" style="margin:0 auto;" alt="">
+        </transition>
         <div>管理执行难,就用功道云</div>
-        <el-button class="refresh" type="primary" @click="withoutCodeLoad()">登录</el-button>
+        <transition name="fade">
+          <el-button class="refresh" type="primary" style="margin-top:10px" @click="LoginBut" v-show="loginButton">{{logButText}}</el-button>
+        </transition>
       </div>
-      <!-- <div class="footer_copyright"> -->
-        <!-- <span class=""><img src="/static/images/little_line.png">积分制管理 · 员工精细化管理<img src="/static/images/little_line.png"></span> -->
-        <!-- <span class="copyright">Copyright © 2020 广东功道云数字科技有限公司 All Rights Reserved</span>
-      </div> -->
     </div>
   </div>
 
@@ -30,102 +28,76 @@
   import requests from '@/utils/request-user'
   import { constants } from 'fs'
   import { timestamps } from '@/utils/index'
-  import {wxConfig} from '@/utils/wx-auth'
   import {allocation} from '@/api/configget'
-import { wxAuth } from '@/utils/wx-auth-two.js'; 
+  import { wxAuth } from '@/utils/wx-auth-two.js'; 
+  import {withoutCodeLoad} from '@/utils/wxconfiguration.js'
 
   export default {
     data() {
       return {
+        logImage:true,
+        logButText: '登录',
+        loginButton: true,
       }
     },
     components:{QRCode,pastDue},
     watch:{
     },
     created() {
+      if(/Android|webOS|iPhone|iPod|BlackBerry/i.test(navigator.userAgent)) {
+        this.appPC = "手机"
+        window.alert("手机")
+        window.location.href = process.env.BASE_API+'/m'
+      } else {
+        this.appPC = "PC端"
+        // window.alert("PC端")
+      }
       this.$store.dispatch('setLanguage', 'zh')
       localStorage.setItem('login_code','0')
 
       
       var url = window.location.href; //获取url中"?"符后的字串
-      var item = url.split("?")[1];
       let codesif = false
       let codes = ''
       if(url){
-        if (url.split("?")[1]) {
+        if (url.split("?")[1]) {//判断有无?参数
           var strs = url.split("?")[1].split("&");
-          // window.alert(strs)
           for (var i = 0; i < strs.length; i++) {
-            // window.alert(strs[i].split("=")[0])
             if(strs[i].split("=")[0] == 'code'){
+              this.loginButton = false
+              this.logImage = false
               codesif = true
               codes = strs[i].split("=")[1]
-
-
-
-              // if(localStorage.getItem('staffcode')){
-              //   if(codes == localStorage.getItem('staffcode')){
-              //     // this.withoutCodeLoad()
-              //     localStorage.setItem('staffcode',codes)
-              //   }else{
-              //     localStorage.setItem('staffcode',codes)
-              //   }
-              // }else{
-              //   localStorage.setItem('staffcode',codes)
-              // }
-
-
-
-              // window.alert(codes)
             }
-            
-            // window.alert(decodeURIComponent(strs[i].split("=")[1]))
           }
-        }else{
+        }else{//没有就清空缓存并放出登录按钮
           this.clone()
+          this.loginButton = true
+          this.logImage = true
         }
       }
 
-      if(!codesif){
-        // this.withoutCodeLoad()
-        // console.log(/Android|webOS|iPhone|iPod|BlackBerry/i.test(navigator.userAgent))
-        // console.log(process.env.BASE_API+'/m')
-        if(/Android|webOS|iPhone|iPod|BlackBerry/i.test(navigator.userAgent)) {
-          this.appPC = "手机"
-          window.alert("手机")
-          window.location.href = process.env.BASE_API+'/m'
-        } else {
-          this.appPC = "PC端"
-          // window.alert("PC端")
-        }
-
-
+      if(!codesif){//url没有code就放出登录按钮
+        this.logImage = true
+        this.loginButton = true
       }else{
         let params = { code: codes }
-        axios.get('http://wechatgdy.vaiwan.com/api/wechat/minAuth', { params: params })
+        axios.get(process.env.BASE_API+'/api/wechat/minAuth', { params: params })
         .then(res => {
           if(res.data.code == 1){
-            setToken(res.data.data.token)
-            this.$store.commit('SET_TOKEN', res.data.data.token)
-            localStorage.setItem('Experience_data',JSON.stringify({if:false,name:''}))
-
-            console.log(getToken())
-            wxAuth('',true)
-              // if(JSON.parse(localStorage.getItem('wxConfigData'))){
-              //   wxConfig(JSON.parse(localStorage.getItem('wxConfigData')),true)//拿到数据执行wx.config
-              // }else{
-              //   if(getToken()){
-              //     allocation().then((res)=>{
-              //         if(res.data.code == 1){
-              //           localStorage.setItem('wxConfigData',JSON.stringify(res.data.data))
-              //           wxConfig(res.data.data,true)
-              //         }
-              //     })
-              //   }
-              // }
-
-            // this.$nextTick(()=>{
-            // })
+            if(res.data.data.user.is_official == 1){
+              setToken(res.data.data.token)
+              this.$store.commit('SET_TOKEN', res.data.data.token)
+              localStorage.setItem('Experience_data',JSON.stringify({if:false,name:''}))
+              console.log(getToken())
+              wxAuth(true)
+            }else if(res.data.data.user.is_official == 0){
+              this.$router.push({path: '/noAccess'})
+            }
+          }else{
+            this.logButText = '重新登录'
+            this.loginButton = true
+            this.logImage = true
           }
         })
       }
@@ -133,20 +105,21 @@ import { wxAuth } from '@/utils/wx-auth-two.js';
     mounted(){
     },
     methods: {
-      withoutCodeLoad(){
-        let appid,redirect_uri,response_type,scope,state,wechat,agentid
-        // appid = 'ww1d41fd7a34ed1a64'
-        appid = 'ww4065f0d4bb232a6a'
-        // redirect_uri = 'https%3A%2F%2Ftest.qywx.g107.net'
-        redirect_uri = 'http%3A%2F%2Fwechatdings.vaiwan.com'
-        response_type = 'code'
-        scope = 'snsapi_privateinfo'
-        state = 'a'
-        wechat = '#wechat_redirect'
-        agentid = 1000099
-        let link = 'appid='+appid+'&redirect_uri='+redirect_uri+'&response_type='+response_type+'&scope='+scope+'&state='+state+wechat
-        window.location.href = 'https://open.weixin.qq.com/connect/oauth2/authorize?'+link
+      LoginBut(){
+        withoutCodeLoad()
       },
+      // withoutCodeLoad(){
+      //   console.log(process.env.APPID)
+      //   let appid,redirect_uri,response_type,scope,state,wechat,agentid
+      //   appid = process.env.APPID
+      //   redirect_uri = 'http%3A%2F%2Fwechatdings.vaiwan.com'
+      //   response_type = 'code'
+      //   scope = 'snsapi_privateinfo'
+      //   state = 'a'
+      //   wechat = '#wechat_redirect'
+      //   let link = 'appid='+appid+'&redirect_uri='+redirect_uri+'&response_type='+response_type+'&scope='+scope+'&state='+state+wechat
+      //   window.location.href = 'https://open.weixin.qq.com/connect/oauth2/authorize?'+link
+      // },
 
       clone(){
         localStorage.clear()
@@ -563,4 +536,18 @@ import { wxAuth } from '@/utils/wx-auth-two.js';
     border-radius: 10px;
     background: transparent;
   }
+
+  
+.fade-enter {
+  opacity: 0;
+}
+.fade-enter-active {
+  transition: opacity 1.2s;
+}
+.fade-leave-to {
+  opacity: 0;
+}
+.fade-leave-active {
+  transition: opacity 1s;
+}
 </style>

+ 30 - 0
src/views/noAccess.vue

@@ -0,0 +1,30 @@
+<template>
+	<div class="noData flex-box flex-center-center">
+		<img  src="/static/images/APP.png" class="appImg"/>
+		<div>
+			<div>当前用户未授权进入系统,请联系管理员为您【启用积分管理】,<br/>如需咨询客服,请到您企业专属的功道云服务群咨询</div>
+		</div>
+	</div>
+</template>
+
+<script>
+</script>
+
+<style scoped="scoped">
+	.appImg{
+		width: 280px;
+		margin-right: 30px;
+	}
+	.noData{
+		text-align: center;
+		position: fixed;
+		left: 0;
+		top: 0;
+		right: 0;
+		bottom: 0;
+	}
+	.codeImg{
+		width: 200px;
+		height: 200px;
+	}
+</style>

File diff suppressed because it is too large
+ 607 - 444
src/views/setting/approver_set.vue


+ 8 - 8
src/views/setting/company_info.vue

@@ -22,14 +22,14 @@
               v-show="company_img_show"></image-cropper>
 
           </el-form-item>
-          <el-form-item label="公司名称" prop="name">
+          <!-- <el-form-item label="公司名称" prop="name">
             <el-input v-model="site_info.name" autocomplete="off" placeholder="请输入公司名称"></el-input>
-          </el-form-item>
-          <el-form-item label="所属行业">
+          </el-form-item> -->
+          <!-- <el-form-item label="所属行业">
             <el-select v-model="site_info.industry" clearable placeholder="选择所属行业" style="width: 100%;">
               <el-option v-for="item in industry" :key="item" :label="item" :value="item"></el-option>
             </el-select>
-          </el-form-item>
+          </el-form-item> -->
           <el-form-item label="企业人数">
             <span><span :style="site_info.user_count_max == site_info.count?'color:red':'color:#199afb'">{{site_info.count}}</span> / <span style="color:#f56c6c">{{site_info.user_count_max}}</span> 人</span>
 
@@ -60,13 +60,13 @@
             </div>
           </el-form-item>
 
-          <el-form-item>
+          <!-- <el-form-item>
             <el-button type="primary" @click="site_sub('site_info')">保存</el-button>
-          </el-form-item>
+          </el-form-item> -->
         </el-form>
       </el-tab-pane>
 
-      <el-tab-pane label="个人信息" name="second">
+      <!-- <el-tab-pane label="个人信息" name="second">
         <el-form :model="employee_info" ref="employee_info" :rules="employee_info_rules" style="width: 400px"
           label-width="80px">
           <el-form-item label="我的头像">
@@ -96,7 +96,7 @@
             <el-button type="primary" @click="employee_sub('employee_info')">保存</el-button>
           </el-form-item>
         </el-form>
-      </el-tab-pane>
+      </el-tab-pane> -->
     </el-tabs>
 
     <el-dialog :title="popup_title" :visible.sync="edit_tel_show" width="480px" @close="close_edit_tel" custom-class="alert_tel_box">

+ 41 - 6
src/views/setting/fixed_integral.vue

@@ -114,14 +114,19 @@
                 plain
                 @click="import_rules_show = true"
               >导入自动积分</el-button>
-              <el-col :span="7" style="padding-left:15px;float:right">
-                <el-select v-model="select_employee_id" filterable clearable placeholder="请输入或选择人员">
+              <el-col :span="7" style="padding-left:15px;float:right;position: relative;">
+                <div v-if="dropOuOfPers.currentLabel && dropOuOfPers.currentLabel != ''" class="dropOuOfPersName" @click="takePartIn">
+                  <wwOpenDAta type="userName" :openid="dropOuOfPers.currentLabel"></wwOpenDAta>
+                </div>
+                <el-select v-model="select_employee_id" ref="dropOuOfref"  clearable placeholder="请选择人员">
                   <el-option
                     v-for="item in employee_map"
                     :key="item.id"
                     :label="item.name"
                     :value="item.id"
-                  ></el-option>
+                  >
+                    <span style="float: left"><wwOpenDAta type="userName" :openid="item.name"></wwOpenDAta></span>
+                  </el-option>
                 </el-select>
                 <!-- <el-input
                   placeholder="输入关键词"
@@ -157,7 +162,9 @@
                   <span
                     style="margin-left: 10px; line-height: 50px; display: inline-block"
                     v-if="scope.row.employee"
-                  >{{scope.row.employee.name}}</span>
+                  >
+                  <wwOpenDAta type="userName" :openid="scope.row.employee.name"></wwOpenDAta>
+                  </span>
                 </template>
               </el-table-column>
               <el-table-column prop="cycle_remark" label="加分周期"></el-table-column>
@@ -245,9 +252,9 @@
             style="display: block; font-size: 12px; color: rgb(96, 98, 102);text-align: left;"
           >固定加分加B分</span>
         </el-form-item>
-        <el-form-item label="是否与考勤挂钩" prop="is_attendance">
+        <!-- <el-form-item label="是否与考勤挂钩" prop="is_attendance">
           <el-switch v-model="rules_detail_form.is_attendance"></el-switch>
-        </el-form-item>
+        </el-form-item> -->
         <div style="overflow: hidden;">
           <el-button
             type="danger"
@@ -521,6 +528,8 @@ export default {
       total: 0, //返回的总数据
       page: 1, //默认页数  为1
       pagesize: 10, //每页显示的数据
+      
+      dropOuOfPers:[],
     };
   },
   components: {
@@ -530,9 +539,16 @@ export default {
     select_employee_id(val) {
       this.employee_id = val;
       this.open_right(this.employee_id);
+      this.$nextTick(()=>{
+        console.log(this.$refs['dropOuOfref'].selected)
+        this.dropOuOfPers = this.$refs['dropOuOfref'].selected
+      })
     },
   },
   methods: {
+    takePartIn(){
+      this.$refs['dropOuOfref'].visible = true
+    },
     //搜索
     onFilterChanged(){
       this.open_right()
@@ -1189,4 +1205,23 @@ span {
   max-width: calc(100vh - 300px);
   background-color: rgb(255, 255, 255);
 }
+
+.dropOuOfPersName {
+  position: absolute;
+  top: 0;
+  right: 0;
+  left: 0;
+  bottom: 0;
+  z-index: 9;
+  margin: 1px 0 0 16px;
+  padding-left: 14px;
+  background-color: #ffffff;
+  color: #1d1d1d;
+  width: 156px;
+  overflow: hidden;
+  cursor: pointer;
+  height:34px;
+  line-height:34px;
+  border-radius: 5px;
+}
 </style>

+ 2 - 2
src/views/setting/set_role.vue

@@ -59,7 +59,7 @@
                       <el-table-column prop="name" label="姓名" fixed>
                         <template slot-scope="scope">
                           <userImage class="fl" width="50px" height="50px" :id="scope.row.id" :user_name="scope.row.name"></userImage>
-                          <span style="margin-left: 10px; line-height: 50px;">{{ scope.row.name }}</span>
+                          <span style="margin-left: 10px; line-height: 50px;"><wwOpenDAta type="userName" :openid="scope.row.name"></wwOpenDAta></span>
                         </template>
                       </el-table-column>
                       <el-table-column prop="dept" label="部门" v-if="item_info.code != 'creator'">
@@ -82,7 +82,7 @@
                       <el-table-column prop="name" label="姓名" width="170" fixed>
                         <template slot-scope="scope">
                           <userImage class="fl" width="50px" height="50px" :id="scope.row.id" :user_name="scope.row.name"></userImage>
-                          <span style="margin-left: 10px; line-height: 50px;">{{ scope.row.name }}</span>
+                          <span style="margin-left: 10px; line-height: 50px;"><wwOpenDAta type="userName" :openid="scope.row.name"></wwOpenDAta></span>
                         </template>
                       </el-table-column>
                       <el-table-column  v-if="item_info.code == 'dept_manager'" prop="dept" label="部门">

+ 19 - 4
src/views/statistics_new/balanceA.vue

@@ -17,16 +17,25 @@
 
 			<el-form :inline="true" v-if="active == 'balanceA'">
 				<el-form-item label="部门">
+				<deptData  deptStyle="height:24px;line-height:24px;margin-top:7px;" v-if="toPdept && toPdept!=0" :refsName="$refs.dept" :toPdept="toPdept"></deptData>
           <el-cascader
             class="date-picker-width"
             v-model="dept_name"
             :options="dept_tree"
+			:props="{ label: 'name', value: 'id'}"
             ref="dept"
             clearable
             filterable
             change-on-select
             placeholder="全公司"
-          ></el-cascader>
+          >
+		  	<template slot-scope="{ node, data }">
+                <span>
+                  <wwOpenDAta type="departmentName" :openid="data.name"></wwOpenDAta>
+                </span>
+                <!-- <span v-if="!node.isLeaf"> ({{ data.children.length }}) </span> -->
+              </template>
+		  </el-cascader>
 				</el-form-item>
 
 				<el-form-item>
@@ -45,7 +54,7 @@
 				<el-table-column label="姓名" prop="name">
 					<template slot-scope="scope">
 						<userImage class="fl" :id="scope.row.id" :user_name="scope.row.name" :img_url="scope.row.img_url" width="50px" height="50px" ></userImage>
-						<span style="line-height: 50px; padding-left: 10px;">{{scope.row.name}}</span>
+						<span style="line-height: 50px; padding-left: 10px;"><wwOpenDAta type="userName" :openid="scope.row.name"></wwOpenDAta></span>
 					</template>
 				</el-table-column>
 				<el-table-column label="A分余额" prop="balance_a"></el-table-column>
@@ -61,10 +70,14 @@
 				<el-table-column label="操作人" prop="name">
 					<template slot-scope="scope">
 						<userImage class="fl" :id="scope.row.id" :user_name="scope.row.name" :img_url="scope.row.img_url" width="50px" height="50px" ></userImage>
-						<span style="line-height: 50px; padding-left: 10px;">{{scope.row.name}}</span>
+						<span style="line-height: 50px; padding-left: 10px;"><wwOpenDAta type="userName" :openid="scope.row.name"></wwOpenDAta></span>
+					</template>
+				</el-table-column>
+				<el-table-column label="内容" prop="remark">
+					<template slot-scope="scope">
+						<wwOpenDAta type="userName" :openid="scope.row.name"></wwOpenDAta>{{scope.row.remark}}
 					</template>
 				</el-table-column>
-				<el-table-column label="内容" prop="remark"></el-table-column>
 				<el-table-column prop="create_time" label="时间"></el-table-column>
 				<template slot="empty">
 					<div class="nopoint_box">
@@ -138,10 +151,12 @@
 				popupForm:{
 					month: ''
 				},
+				toPdept:0,
       }
 		},
 		watch:{
 			dept_name(val){
+      			this.toPdept = val[val.length-1]
 				this.formData.dept_id = val[val.length - 1]
 				this.$refs.dept.dropDownVisible = false;
 				this.getList()

+ 47 - 19
src/views/statistics_new/custom_rank.vue

@@ -88,7 +88,7 @@
           <el-table-column label="姓名" align="left">
             <template slot-scope="scope">
               <userImage class="fl" :id="scope.row.employee_id" :user_name="scope.row.name" :img_url="scope.row.img_url" width="50px" height="50px"></userImage>
-              <span style="line-height: 50px; padding-left: 10px;">{{ scope.row.name }}</span>
+              <span style="line-height: 50px; padding-left: 10px;"><wwOpenDAta type="userName" :openid="scope.row.name"></wwOpenDAta></span>
             </template>
           </el-table-column>
           <el-table-column label="B分" align="left" prop="point"></el-table-column>
@@ -122,8 +122,13 @@
         <el-form-item label="分组名称" prop="group_name"><el-input v-model="newGroupForm.group_name" placeholder="请输入分组名称" auto-complete="off"></el-input></el-form-item>
 
         <el-form-item label="分组成员" :required="true">
-          <el-input auto-complete="off" v-model="employees" placeholder="全公司成员"></el-input>
+          <el-input v-show="employeeNames.length==0" auto-complete="off" v-model="employees" placeholder="全公司成员"></el-input>
           <div @click="show_employee_selector = true" style=" position: absolute; top: 0; right: 0; left: 0; bottom: 0; z-index: 9;"></div>
+          <div v-if="employeeNames.length>0"  @click="show_employee_selector = true" class="zindexName">
+            <span v-for="(item,index) in employeeNames" :key="index">
+              <wwOpenDAta type="userName" :openid="item.name"></wwOpenDAta><span v-if="(employeeNames.length-index)>1">,</span>
+            </span>
+          </div>
           <EmployeeSelector
             :employee_not_select="employee_not_select"
             :can_select_employee="true"
@@ -276,7 +281,8 @@ export default {
     return {
 			tips_show: false,
       ruleHint:'',
-      deptManagerRouters: JSON.parse(localStorage.getItem('deptManagerRouters')),
+      deptManagerRouters: !this.$authoritys('dept_manager') && !this.$authoritys('employee'),
+      employeeRout:this.$authoritys('employee'),
       lastUpdateTime: '',
       tableLoadingRule: false, //规则细则加载
       keyword: '',
@@ -362,6 +368,7 @@ export default {
       employee_not_select: [],
       employees_selected: { employee: [], dept: [] },
       employees: '',
+      employeeNames: [],
       props: { value: 'id', label: 'name', children: 'child', multiple: true, checkStrictly: true }, //
       sort: false
     };
@@ -689,7 +696,9 @@ export default {
             self.groups_info = res.data.data;
             self.newGroupForm.employees = [];
             self.employees = '';
+            this.employeeNames = []
             self.employees_selected.employee = res.data.data.employees;
+            this.employeeNames = res.data.data.employees
             res.data.data.employees.forEach(element => {
               self.newGroupForm.employees.push(element.id);
               self.employees += element.name + ',';
@@ -729,8 +738,10 @@ export default {
     move_employee_confirm(data) {
       this.newGroupForm.employees = [];
       this.employees = '';
+      this.employeeNames = []
       this.employees_selected = data;
       if (data.employee !== null && data.employee.length != 0) {
+        this.employeeNames =  data.employee
         data.employee.forEach(element => {
           this.newGroupForm.employees.push(element.id);
           this.employees += element.name + ',';
@@ -801,6 +812,8 @@ export default {
             self.getGroupsList(self.clickItem.id); //传入当前ID.为了修改后页面不切换
             // self.open_right(self.clickItem)
             // }
+            
+            this.employeeNames = []
             this.employees = '';
             this.employee_not_select = [];
             this.employees_selected = { employee: [], dept: [] };
@@ -819,6 +832,7 @@ export default {
       this.$refs[formName].resetFields();
       this.newGroupForm.employees = [];
       this.employees = '';
+      this.employeeNames = []
       this.employee_not_select = [];
       this.employees_selected = { employee: [], dept: [] };
       this.groupShow = false;
@@ -829,6 +843,7 @@ export default {
       (this.newGroupFormRules = ''), (this.valuesOrLength = []), (this.options_time_value = '');
       this.groupShow = true;
       this.popupType = true;
+      this.employeeNames = []
       this.employees = '';
       this.employee_not_select = [];
       this.employees_selected = { employee: [], dept: [] };
@@ -893,22 +908,20 @@ export default {
       self.item_loading = true;
       self.$http('get','/api/integral/statistics/groups').then(res => {
           if (res.data.code == 1) {
-            self.groups_list = res.data.data.list;//获取所有
-
-            //   //判断是否是部门管理员,是就只显示包含他自己的排名
-            // if (JSON.parse(localStorage.getItem('deptManagerRouters'))) {
-            //   self.groups_list = res.data.data.list;
-            // } else {
-            //   let departmentRanking = [];
-            //   for (let i in res.data.data.list) {
-            //     for (let a in res.data.data.list[i].employees) {
-            //       if (this.$store.getters.user_info.id == res.data.data.list[i].employees[a]) {
-            //         departmentRanking.push(res.data.data.list[i]);
-            //       }
-            //     }
-            //   }
-            //   self.groups_list = departmentRanking;
-            // }
+            //判断是否是员工,是就只显示包含他自己的排名
+            if (!this.employeeRout) {
+              self.groups_list = res.data.data.list;//获取所有
+            } else {
+              let departmentRanking = [];
+              for (let i in res.data.data.list) {
+                for (let a in res.data.data.list[i].employees) {
+                  if (this.$store.getters.user_info.id == res.data.data.list[i].employees[a]) {
+                    departmentRanking.push(res.data.data.list[i]);
+                  }
+                }
+              }
+              self.groups_list = departmentRanking;
+            }
             self.$nextTick(() => {
               if (atPresent) {
                 for (let i in self.groups_list) {
@@ -1218,4 +1231,19 @@ export default {
   list-style:disc;
   font-size:14px;
 }
+
+
+  .zindexName{
+     position: absolute;
+     top: 0;
+     right: 0;
+     left: 0;
+     bottom: 0;
+     z-index: 9;
+     border:1px solid rgb(224, 224, 224);
+     width:335px;
+     border-radius:3px;
+     padding-left:15px;
+     overflow: hidden;
+  }
 </style>

+ 15 - 4
src/views/statistics_new/department_statistics.vue

@@ -3,17 +3,26 @@
       <el-row  :span="24" style="padding: 20px;background: #fff;border:1px #e1e4e7 solid;box-shadow: 0 2px 4px rgba(140,140,140,0.1);">
         <!-- <el-form :inline="true"> -->
           <!-- <el-form-item label="部门"> -->
-            <el-col :span="5">
+            <el-col :span="5" style="position: relative;">
+              <deptData  v-if="toPdept1 && toPdept1!=0" :refsName="$refs.dept1" :toPdept="toPdept1"></deptData>
               <el-cascader
                 v-model="dept_name"
                 :options="dept_tree"
                 @change="dept1_null"
+                :props="{ label: 'name', value: 'id'}"
                 ref="dept1"
                 filterable
                 change-on-select
                 placeholder="全公司"
                 clearable
-              ></el-cascader>
+              >
+                <template slot-scope="{ node, data }">
+                  <span>
+                    <wwOpenDAta type="departmentName" :openid="data.name"></wwOpenDAta>
+                  </span>
+                  <!-- <span v-if="!node.isLeaf"> ({{ data.children.length }}) </span> -->
+                </template>
+              </el-cascader>
             </el-col>
           <!-- </el-form-item> -->
           <!-- <el-form-item label="时间"> -->
@@ -97,7 +106,7 @@
                   style="margin-right:8px"
                 ></userImage>
                 <div class="rightexamineAndApproveList" style="border:0px">
-                  <p style="width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#73767c;font-size:16px;display:flex;"><b style="color:#303133;font-size:16px;">{{prize.name}}</b><span style="color:#26A2FF;font-size:16px;"><span v-if="prize.point>0" style="padding-left:30px;">+</span>{{prize.point}} B分</span></p>
+                  <p style="width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#73767c;font-size:16px;display:flex;"><b style="color:#303133;font-size:16px;"><wwOpenDAta type="userName" :openid="prize.name"></wwOpenDAta></b><span style="color:#26A2FF;font-size:16px;"><span v-if="prize.point>0" style="padding-left:30px;">+</span>{{prize.point}} B分</span></p>
                   <p style="font-size:13px;line-height:20px;color:rgb(48, 49, 51);overflow:hidden; text-overflow:ellipsis;display:-webkit-box; -webkit-box-orient:vertical;-webkit-line-clamp:2; ">{{prize.remark? prize.remark.customize : ''}}</p>
                 </div>
               </div>
@@ -124,7 +133,7 @@
                   style="margin-right:8px"
                 ></userImage>
                 <div class="rightexamineAndApproveList"  style="border:0px">
-                  <p style="width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#73767c;font-size:16px;display:flex;"><b style="color:#303133;font-size:16px;">{{buckle.name}}</b><span style="color:#FF9600;font-size:16px;padding-left:30px;">{{buckle.point}} B分</span></p>
+                  <p style="width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#73767c;font-size:16px;display:flex;"><b style="color:#303133;font-size:16px;"><wwOpenDAta type="userName" :openid="buckle.name"></wwOpenDAta></b><span style="color:#FF9600;font-size:16px;padding-left:30px;">{{buckle.point}} B分</span></p>
                   <p style="font-size:13px;line-height:20px;color:rgb(48, 49, 51);overflow:hidden; text-overflow:ellipsis;display:-webkit-box; -webkit-box-orient:vertical;-webkit-line-clamp:2;">{{buckle.remark?buckle.remark.customize:''}}</p>
                 </div>
               </div>
@@ -238,6 +247,7 @@
         monthlyIntegralloading:false,//本月积分情况loading
         monthlyIntegralnone:false,//本月积分情况为空或报错,展示的开关
         exclusiveMonthBranch:0,//本月积分情况--部门
+        toPdept1:0,
       }
     },
     watch:{
@@ -559,6 +569,7 @@
 
       //筛选部门数据
 			dept1_null(val){
+        this.toPdept1 = val[val.length-1]
 				if(val.length == 0){
 					this.formData.dept_id = 0
 				}else{

+ 85 - 15
src/views/statistics_new/dept_rank.vue

@@ -50,17 +50,25 @@
         </el-form-item>
 
         <el-form-item label="部门">
+          <deptData deptStyle="height:24px;line-height:24px;margin-top:7px;" v-if="toPdept && toPdept!=0" :refsName="$refs.dept" :toPdept="toPdept"></deptData>
           <el-cascader
             class="date-picker-width"
             v-model="dept_name"
             :options="dept_tree"
+            :props="{ label: 'name', value: 'id'}"
             ref="dept"
             clearable
             filterable
             change-on-select
             placeholder="全公司"
-          ></el-cascader>
-
+          >
+            <template slot-scope="{ node, data }">
+                <span>
+                  <wwOpenDAta type="departmentName" :openid="data.name"></wwOpenDAta>
+                </span>
+                <!-- <span v-if="!node.isLeaf"> ({{ data.children.length }}) </span> -->
+              </template>
+          </el-cascader>
           <!-- 这是选部门多选。如果更改需求用这个: -->
           <!-- <el-cascader
             v-model="dept_name"
@@ -86,11 +94,14 @@
           </el-select>
         </el-form-item>
 
-        <el-form-item label="谁不参与排名">
+        <el-form-item label="谁不参与排名" class="takePartInno">
+          <div v-if="dropOuOfPerson.length>0" class="dropOuOfPerson" @click="takePartInno">
+            <wwOpenDAta type="userName" :openid="dropOuOfPerson[0].currentLabel"></wwOpenDAta><span v-if="dropOuOfPerson.length>1">&nbsp;+{{dropOuOfPerson.length-1}}</span>
+          </div>
           <el-select
+            ref="dropOuOfonref"
             v-model="formData.exclusion"
             multiple
-            filterable
             collapse-tags
             placeholder="请选择员工"
           >
@@ -99,7 +110,9 @@
               :key="item.id"
               :label="item.name"
               :value="item.id"
-            ></el-option>
+            >
+              <span style="float: left"><wwOpenDAta type="userName" :openid="item.name"></wwOpenDAta></span>
+            </el-option>
           </el-select>
         </el-form-item>
 
@@ -137,7 +150,7 @@
           <br>
         <el-form-item>
           <el-button type="primary" plain @click="dialogVisibles">导出排名</el-button>
-					<el-button type="primary" plain @click="byRanking">轮播排名</el-button>
+					<!-- <el-button type="primary" plain @click="byRanking">轮播排名</el-button> -->
         </el-form-item>
       </el-form>
 
@@ -160,7 +173,7 @@
               width="50px"
               height="50px"
             ></userImage>
-            <span style="line-height: 50px; padding-left: 10px;">{{scope.row.employee_name}}</span>
+            <span style="line-height: 50px; padding-left: 10px;"><wwOpenDAta type="userName" :openid="scope.row.employee_name"></wwOpenDAta></span>
           </template>
         </el-table-column>
         <el-table-column label="B分" align="left" prop="point"></el-table-column>
@@ -213,16 +226,25 @@
           </el-form-item>
         </div>
         <el-form-item label="部门">
+          <deptData  deptStyle="height:24px;line-height:24px;margin-top:7px;" v-if="toPdept2 && toPdept2!=0" :refsName="$refs.dept2" :toPdept="toPdept2"></deptData>
           <el-cascader
             class="date-picker-width cascader_bm"
             v-model="Dc_Data.dept_name"
+            :props="{ label: 'name', value: 'id'}"
             :options="dept_tree"
             ref="dept2"
             clearable
             filterable
             change-on-select
             placeholder="全公司"
-          ></el-cascader>
+          >
+            <template slot-scope="{ node, data }">
+              <span>
+                <wwOpenDAta type="departmentName" :openid="data.name"></wwOpenDAta>
+              </span>
+              <!-- <span v-if="!node.isLeaf"> ({{ data.children.length }}) </span> -->
+            </template>
+          </el-cascader>
         </el-form-item>
         
         <el-form-item style="margin-left:20px">
@@ -267,16 +289,14 @@
     </el-dialog>
 
 		<!-- 轮播弹窗 -->
-		<el-dialog
+		<!-- <el-dialog
 			title="轮播排名"
 			:visible.sync="byRankingShow"
       top="8vh"
 			width="500px">
 			<div>
 				<el-form :inline="true" ref="byRankingData" :model="byRankingData" :rules="byRankingDataRules" label-width="90px">
-          <!-- <marquee scrollamount="5"> -->
-            <div style="color:rgb(122 202 126);font-size: 13px;padding:5px 0 20px 0">设置后,相关排名信息可在各类智能终端屏幕上的网页浏览器滚屏展示</div>
-          <!-- </marquee> -->
+          <div style="color:rgb(122 202 126);font-size: 13px;padding:5px 0 20px 0">设置后,相关排名信息可在各类智能终端屏幕上的网页浏览器滚屏展示</div>
 					<el-form-item label="展示标题">
 					  <el-input type="textarea" :autosize="{ minRows: 2, maxRows: 6}" v-model="titleVals" placeholder="请输入标题" maxlength="20"  show-word-limit style="width: 341px"></el-input>
 					</el-form-item>
@@ -290,16 +310,24 @@
 						</el-date-picker>
 					</el-form-item>
 					<el-form-item label="选择部门" class="elCascaderWidht">
+            <deptData deptStyle="height:24px;line-height:24px;margin-top:7px;" v-if="toPdept1 && toPdept1!=0" :refsName="$refs.dept1" :toPdept="toPdept1"></deptData>
 						<el-cascader
 							class="date-picker-width"
 							v-model="byRankingDeptId"
 							:options="dept_tree"
+              :props="{ label: 'name', value: 'id'}"
 							ref="dept1"
 							clearable
 							filterable
 							change-on-select
 							placeholder="全公司"
-						></el-cascader>
+						>
+              <template slot-scope="{ node, data }">
+                <span>
+                  <wwOpenDAta type="departmentName" :openid="data.name"></wwOpenDAta>
+                </span>
+              </template>
+            </el-cascader>
 					</el-form-item>
 					<el-form-item label="人员范围" prop="position" >
 						<el-radio-group v-model="byRankingData.position">
@@ -314,7 +342,7 @@
 				<el-button @click="byRankingShow = false">取 消</el-button>
 				<el-button type="primary" @click="swiperPage('byRankingData')">开始轮播</el-button>
 			</span>
-		</el-dialog>
+		</el-dialog> -->
 
   </div>
 </template>
@@ -407,9 +435,19 @@ export default {
 				],
       },
       rule_list:[],//自动积分分类列表
+      toPdept:0,
+      toPdept1:0,
+      toPdept2:0,
+      dropOuOfPerson:[],
     };
   },
   watch: {
+    'formData.exclusion'(val){
+      this.$nextTick(()=>{
+        // .currentLabel
+      this.dropOuOfPerson = this.$refs['dropOuOfonref'].selected
+      })
+    },
     newTaskFormType(val){
       this.Dc_Data.rule_id = []
       // console.log(val)
@@ -429,6 +467,7 @@ export default {
       }
     },
     dept_name(val) {
+      this.toPdept = val[val.length-1]
       if (val.length !== 0) {
         // 这是选部门多选。如果更改需求用这个:
         // let dept_id = [];
@@ -448,9 +487,11 @@ export default {
       });
     },
     byRankingDeptId(val){
+      this.toPdept1 = val[val.length-1]
       this.$refs.dept1.dropDownVisible = false;
     },
     'Dc_Data.dept_name':function(val){
+      this.toPdept2 = val[val.length-1]
       this.$refs.dept2.dropDownVisible = false;
     },
     // rule_id(val) {
@@ -467,6 +508,9 @@ export default {
   },
   components: { season },
   methods: {
+    takePartInno(){
+      this.$refs['dropOuOfonref'].visible = true
+    },
     ruleautomatic(){
       let list = this.automaticIntegration
       let ruleId = []
@@ -548,7 +592,7 @@ export default {
 				}
 			});
 		},
-		// 轮播排名弹窗
+		// // 轮播排名弹窗
 		byRanking(){
       if(localStorage.getItem("titleVal")){
         this.titleVal = JSON.parse(localStorage.getItem("titleVal"))
@@ -964,4 +1008,30 @@ export default {
 .inquireRule /deep/ .el-icon-close{
   display:none
 }
+.takePartInno /deep/ .el-input__inner{
+  height: 36px;
+  overflow: hidden;
+}
+.takePartInno /deep/ .el-tag.el-tag--info{
+  display: none;
+}
+// .el-input__inner
+.dropOuOfPerson{
+  position: absolute;
+  top: 0;
+  right: 0;
+  left: 0;
+  bottom: 0;
+  z-index: 9;
+  margin: 1px 0 0 1px;
+  padding-left: 14px;
+  background-color: #ffffff;
+  color: #1d1d1d;
+  width: 170px;
+  overflow: hidden;
+  cursor: pointer;
+  height:34px;
+  line-height:34px;
+  border-radius: 5px;
+}
 </style>

+ 59 - 15
src/views/statistics_new/individual_statistics.vue

@@ -4,15 +4,20 @@
       :span="24"
       style="padding: 20px;background: #fff;border:1px #e1e4e7 solid;box-shadow: 0 2px 4px rgba(140,140,140,0.1);"
     >
-        <el-col :span="5" style="">
-            <el-select v-model="select_employee_id" filterable  placeholder="请输入或选择人员">
-                <el-option
-                v-for="item in employee_map"
-                :key="item.id"
-                :label="item.name"
-                :value="item.id"
-                ></el-option>
-            </el-select>
+        <el-col :span="5" style="position: relative;">
+          <div v-if="selectAperson.currentLabel && selectAperson.currentLabel != '' || select_employee_id" class="selectApersonName" @click="takePartIn">
+            <wwOpenDAta type="userName" :openid="selectAperson.currentLabel?selectAperson.currentLabel:select_employee_id"></wwOpenDAta>
+          </div>
+          <el-select v-model="select_employee_id" ref="selectApersons" filterable  placeholder="请输入或选择人员">
+              <el-option
+              v-for="item in employee_map"
+              :key="item.id"
+              :label="item.name"
+              :value="item.id"
+              >
+                <span style="float: left"><wwOpenDAta type="userName" :openid="item.name"></wwOpenDAta></span>
+              </el-option>
+          </el-select>
         </el-col>
         
         <el-col style="margin-left:20px;" :span="8">
@@ -69,13 +74,16 @@
                 <userImage :id="personnel.id" :img_url="personnel.img_url" :user_name="personnel.name" width="50px" height="50px"></userImage>
               </div>
               <div class="greetings">
-                <div>{{personnel.name}}</div>
+                <div><wwOpenDAta type="userName" :openid="personnel.name"></wwOpenDAta></div>
               </div>
-              <div style="padding-left:10px;display:flex;flex-wrap:wrap;overflow: hidden;text-overflow: ellipsis;display: -webkit-box;-webkit-box-orient: vertical;-webkit-line-clamp: 1;">
+              <!-- <div style="padding-left:10px;display:flex;flex-wrap:wrap;overflow: hidden;text-overflow: ellipsis;display: -webkit-box;-webkit-box-orient: vertical;-webkit-line-clamp: 1;">
                 <el-popover trigger="hover" placement="top" popper-class="popperSPBOX">
-                  <div style="font-size:14px;color:#828282;">{{dept_list}}</div>
-                  <div slot="reference" class="name-wrapper"><span style="font-size:14px;color:#828282;">{{dept_list}}</span></div>
+                  <div style="font-size:14px;color:#828282;" v-for="(item,index) in dept_data" :key="index"><wwOpenDAta type="departmentName" :openid="item"></wwOpenDAta></div>
+                  <div slot="reference" class="name-wrapper"><span style="font-size:14px;color:#828282;"><wwOpenDAta type="departmentName" :openid="item"></wwOpenDAta></span></div>
                 </el-popover>
+              </div> -->
+              <div style="display:flex;flex-wrap:wrap;padding-left:10px;">
+                  <div style="font-size:14px;color:#828282;" v-for="(item,index) in dept_data" :key="index"><wwOpenDAta type="departmentName" :openid="item"></wwOpenDAta><span v-if="(dept_data.length-index)>1">,</span></div>
               </div>
             </el-col>
           </el-row>
@@ -341,6 +349,7 @@ export default {
       employee_map:'',//获取人员列表
 
       dept_list:'',
+      dept_data: [],
      //人员详情
       personnel:{},
       authorityManagerHeaderLoad:false,//人员loading
@@ -379,6 +388,7 @@ export default {
       IntegralEventT:[],//个人扣分数据
 
       awardDeductRanking:false,//个人奖扣分loading
+      selectAperson:[],
     };
   },
   watch: {
@@ -419,6 +429,11 @@ export default {
       console.log(val)
         this.formData.employee_id = val
         this.executiveFunction(true);
+        
+      this.$nextTick(()=>{
+        console.log(this.$refs['selectApersons'].selected)
+        this.selectAperson = this.$refs['selectApersons'].selected
+      })
     },
   },
   mounted() {
@@ -434,11 +449,15 @@ export default {
     if(this.$store.getters.user_info){
       this.personnel = this.$store.getters.user_info
       let dept_li = this.personnel.employee_detail.dept_list
+      console.log(this.personnel.employee_detail)
       let dept_ = ''
+      let dept_lists = []
       for(let i in dept_li){
-        dept_ += dept_li[i].dept_name+' '
+        dept_ += dept_li[i].depart_name+' '
+        dept_lists.push(dept_li[i].depart_name)
       }
       this.dept_list = dept_
+      this.dept_data = dept_lists
     }else{
       this.personnelDetails()//获取人员详情
     }
@@ -446,6 +465,9 @@ export default {
     this.executiveFunction();
   },
   methods: {
+    takePartIn(){
+      this.$refs['selectApersons'].visible = true
+    },
     //需要执行的所有函数
     executiveFunction(item) {
       //切换角色才请求--人员详情--。
@@ -474,10 +496,13 @@ export default {
             this.personnel = res.data.data
             let dept_li = this.personnel.employee_detail.dept_list
             let dept_ = ''
+            let dept_lists = []
             for(let i in dept_li){
-              dept_ += dept_li[i].dept_name+' '
+              dept_ += dept_li[i].depart_name+' '
+              dept_lists.push(dept_li[i].depart_name)
             }
             this.dept_list = dept_
+            this.dept_data = dept_lists
         }).finally(()=>{
             this.personnelMessage = false
         })
@@ -1037,4 +1062,23 @@ box-sizing: content-box;
     max-width: calc(100vh - 400px);
     background-color: rgb(255, 255, 255);
   }
+  
+.selectApersonName {
+  position: absolute;
+  top: 0;
+  right: 0;
+  left: 0;
+  bottom: 0;
+  z-index: 9;
+  margin: 1px 0 0 1px;
+  padding-left: 14px;
+  background-color: #ffffff;
+  color: #1d1d1d;
+  width: 170px;
+  overflow: hidden;
+  cursor: pointer;
+  height:34px;
+  line-height:34px;
+  border-radius: 5px;
+}
 </style>

+ 62 - 12
src/views/statistics_new/integral_event.vue

@@ -43,9 +43,17 @@
             <el-option v-for="item in point_types" :key="item.name" :label="item.name" :value="item.id"></el-option>
           </el-select>
         </el-col>
-        <el-col :span="7" class="display_flex">
+        <el-col :span="7" class="display_flex" style="position: relative;">
           <span class="label">部门</span>
-          <el-cascader class="date-picker-width" v-model="dept_name" :options="dept_tree" ref="dept" clearable filterable change-on-select placeholder="全公司"></el-cascader>
+          <deptData deptStyle="width:150px;left:50px;" v-if="toPdept && toPdept!=0" :refsName="$refs.dept" :toPdept="toPdept"></deptData>
+          <el-cascader class="date-picker-width" v-model="dept_name" :options="dept_tree" :props="{ label: 'name', value: 'id'}" ref="dept" clearable filterable change-on-select placeholder="全公司">
+            <template slot-scope="{ node, data }">
+                <span>
+                  <wwOpenDAta type="departmentName" :openid="data.name"></wwOpenDAta>
+                </span>
+                <!-- <span v-if="!node.isLeaf"> ({{ data.children.length }}) </span> -->
+              </template>
+          </el-cascader>
         </el-col>
       </el-row>
 
@@ -67,9 +75,14 @@
           </el-input>
         </el-col>
 
-        <el-col :span="8" style="padding-left:15px;float:right">
-          <el-select v-model="select_employee_id" filterable clearable placeholder="请输入或选择人员">
-            <el-option v-for="item in employee_map" :key="item.id" :label="item.name" :value="item.id"></el-option>
+        <el-col :span="8" style="padding-left:15px;float:right;position: relative;">
+          <div v-if="dropOuOfPers.currentLabel && dropOuOfPers.currentLabel != ''" class="dropOuOfPersName" @click="takePartIn">
+            <wwOpenDAta type="userName" :openid="dropOuOfPers.currentLabel"></wwOpenDAta>
+          </div>
+          <el-select v-model="select_employee_id" ref="dropOuOfref" clearable placeholder="请选择人员">
+            <el-option v-for="item in employee_map" :key="item.id" :label="item.name" :value="item.id">
+              <span style="float: left"><wwOpenDAta type="userName" :openid="item.name"></wwOpenDAta></span>
+            </el-option>
           </el-select>
         </el-col>
       </el-row>
@@ -80,7 +93,7 @@
           <el-button type="primary" @click="exportExcel">导出当前数据</el-button>
         </el-col>
         <el-col :span="17">
-          <el-button type="primary" plain @click="swiperShowTrue">轮播排名</el-button>
+          <!-- <el-button type="primary" plain @click="swiperShowTrue">轮播排名</el-button> -->
           <el-button class="first-element-btn" v-if="noticeRole" :disabled='selectionID.length==0' @click="deleteInBatches" type="danger" >批量删除</el-button>
         </el-col>
       </el-row>
@@ -94,10 +107,16 @@
         <el-table-column prop="employee_name" label="姓名" align="left">
           <template slot-scope="scope">
             <userImage class="fl" :id="scope.row.employee_id" :user_name="scope.row.employee_name" :img_url="scope.row.employee_img_url" width="50px" height="50px"></userImage>
-            <span style="margin-left: 10px; line-height: 50px;">{{ scope.row.employee_name }}</span>
+            <span style="margin-left: 10px; line-height: 50px;"><wwOpenDAta type="userName" :openid="scope.row.employee_name"></wwOpenDAta></span>
+          </template>
+        </el-table-column>
+        <el-table-column prop="dept" label="部门" align="left" width="150px">
+          <template slot-scope="scope">
+            <span v-for="(item,index) in scope.row.dept" :key="index">
+              <wwOpenDAta type="departmentName" :openid="item"></wwOpenDAta><span v-if="(scope.row.dept.length-index)>1">,</span>
+            </span>
           </template>
         </el-table-column>
-        <el-table-column prop="dept" label="部门" align="left" width="150px"></el-table-column>
         <el-table-column prop="point_mark" label="积分" align="left" width="100px">
           <template slot-scope="scope">
             <span :class="scope.row.point < 0 ? 'color_green' : 'color_red'">{{ scope.row.point_mark }} {{ point_name(scope.row.pt_id) }}</span>
@@ -146,7 +165,7 @@
         <el-row style="padding-bottom:10px;border-bottom:1px #f8f8f8 solid;">
           <el-col :span="24">
             <userImage :user_name="detail_info.employee_name" :img_url="detail_info.img_url" class="fl" width="50px" height="50px" fontSize="15"></userImage>
-            <span style="line-height:50px; margin-left:10px;margin-right:4px;">{{ detail_info.employee_name }}</span>
+            <span style="line-height:50px; margin-left:10px;margin-right:4px;"><wwOpenDAta type="userName" :openid="detail_info.employee_name"></wwOpenDAta></span>
             <span class="color_red point" v-show="detail_info.point >= 0">+{{ detail_info.point }} {{ point_name(detail_info.pt_id) }}</span>
             <span class="color_green point" v-show="detail_info.point < 0">{{ detail_info.point }} {{ point_name(detail_info.pt_id) }}</span>
           </el-col>
@@ -174,7 +193,7 @@
 
         <el-row v-show="!detail_info.rule_id">
           <el-col :span="4">记录人</el-col>
-          <el-col :span="20">{{ detail_info.employee_name }}</el-col>
+          <el-col :span="20"><wwOpenDAta type="userName" :openid="detail_info.employee_name"></wwOpenDAta></el-col>
         </el-row>
 
         <el-row v-show="detail_info.files !== null && detail_info.files.length > 0">
@@ -223,7 +242,7 @@
                 </template>
                 <template slot="title">
                   <div style="color: #303133;font-size:14px;margin-top:-2px;">
-                    {{ item.name }} {{ item.remark }}
+                    <wwOpenDAta type="userName" :openid="item.name"></wwOpenDAta> {{ item.remark }}
                     <!-- <span v-show="item.point !== 0">{{item.point}}</span> -->
                   </div>
                 </template>
@@ -347,7 +366,7 @@ export default {
       noticeRole:this.$authoritys('creator') || this.$authoritys('admin') || this.$authoritys('point_manager'),
       select_employee_id: '',
       employee_map: JSON.parse(localStorage.getItem('SET_EMPLOYEE_MAP')),
-      deptManagerRouters: JSON.parse(localStorage.getItem('deptManagerRouters')),
+      deptManagerRouters: !this.$authoritys('dept_manager') && !this.$authoritys('employee'),
       integralUpload: process.env.BASE_API + '/api/upload/excel',
       publicBASE_API: process.env.BASE_API,
       titleVals: '',
@@ -385,6 +404,8 @@ export default {
       importErrorInfoShow: false,
 
       selectionID:[],//删除的事件ID
+      toPdept:0,
+      dropOuOfPers:[],
     };
   },
   components: { noData },
@@ -422,6 +443,7 @@ export default {
       this.get_integral_list(this.formData);
     },
     dept_name(val, old_val) {
+      this.toPdept = val[val.length-1]
       this.formData.page = 1;
       if (val.length != 0) {
         this.formData.dept_id = val[val.length - 1];
@@ -434,11 +456,19 @@ export default {
       });
     },
     select_employee_id(val) {
+      console.log(val)
       this.formData.employee_ids = val;
       this.get_integral_list(this.formData);
+      this.$nextTick(()=>{
+        console.log(this.$refs['dropOuOfref'].selected)
+        this.dropOuOfPers = this.$refs['dropOuOfref'].selected
+      })
     }
   },
   methods: {
+    takePartIn(){
+      this.$refs['dropOuOfref'].visible = true
+    },
     ruleautomatic(){
       let list = this.automaticIntegration
       this.formData.rule_id = list[0]
@@ -848,4 +878,24 @@ span.point {
 /deep/ .el-dialog__body{
   padding:0px 20px 30px;
 }
+
+
+.dropOuOfPersName {
+  position: absolute;
+  top: 0;
+  right: 0;
+  left: 0;
+  bottom: 0;
+  z-index: 9;
+  margin: 1px 0 0 16px;
+  padding-left: 14px;
+  background-color: #ffffff;
+  color: #1d1d1d;
+  width: 170px;
+  overflow: hidden;
+  cursor: pointer;
+  height:34px;
+  line-height:34px;
+  border-radius: 5px;
+}
 </style>

+ 14 - 3
src/views/statistics_new/integral_statistics.vue

@@ -6,16 +6,25 @@
 					<el-date-picker v-model="formData.month" type="month" placeholder="请选择月份" value-format="yyyy-MM"></el-date-picker>
 				</el-col>
 				<el-col :span="5">
+					<deptData  deptStyle="width:150px;left:200px;" v-if="toPdept1 && toPdept1!=0" :refsName="$refs.dept1" :toPdept="toPdept1"></deptData>
 					<el-cascader
 						v-model="dept_name"
 						:options="dept_tree"
 						@change="dept1_null"
+              			:props="{ label: 'name', value: 'id'}"
 						ref="dept1"
 						filterable
 						change-on-select
 						placeholder="请选择部门"
 						clearable
-					></el-cascader>
+					>
+						<template slot-scope="{ node, data }">
+							<span>
+							<wwOpenDAta type="departmentName" :openid="data.name"></wwOpenDAta>
+							</span>
+							<!-- <span v-if="!node.isLeaf"> ({{ data.children.length }}) </span> -->
+						</template>
+					</el-cascader>
 				</el-col>
 				<el-col :span="5" class="search">
 					<el-input v-model="formData.keyword" placeholder="输入同事姓名" @keyup.enter.native="get_all_integral">
@@ -33,7 +42,7 @@
 						<span class="fl">
 							<userImage :id="scope.row.employee_id" width="50px" height="50px" :user_name="scope.row.employee_name"></userImage>
 						</span>
-						<span style="margin-left: 10px; line-height: 50px; display: inline-block">{{scope.row.employee_name}}</span>
+						<span style="margin-left: 10px; line-height: 50px; display: inline-block"><wwOpenDAta type="userName" :openid="scope.row.employee_name"></wwOpenDAta></span>
 					</template>
 				</el-table-column>
 				<el-table-column prop="performance" label="绩效分" align="center">
@@ -129,7 +138,8 @@
 				radio: '1',
 				pageLimit1: 10,
 				noChartData: false,
-				chartLoading: false
+				chartLoading: false,
+				toPdept1:0,
       };
     },
     components: {season,noData},
@@ -172,6 +182,7 @@
         })
       },
 			dept1_null(val){
+      			this.toPdept1 = val[val.length-1]
 				if(val.length == 0){
 					this.formData.dept_id = 0
 				}else{

+ 16 - 5
src/views/statistics_new/lotteryTicket_statistics.vue

@@ -10,17 +10,26 @@
             value-format="yyyy-MM"
           ></el-date-picker
         ></el-col>
-        <el-col :span="5">
+        <el-col :span="5" style="position: relative;">
+          <deptData  deptStyle="padding-left:10px;" v-if="toPdept1 && toPdept1!=0" :refsName="$refs.dept1" :toPdept="toPdept1"></deptData>
           <el-cascader
             v-model="dept_name"
             :options="dept_tree"
             @change="dept1_null"
+            :props="{ label: 'name', value: 'id'}"
             ref="dept1"
             filterable
             change-on-select
             placeholder="请选择部门"
             clearable
-          ></el-cascader>
+          >
+            <template slot-scope="{ node, data }">
+              <span>
+                <wwOpenDAta type="departmentName" :openid="data.name"></wwOpenDAta>
+              </span>
+              <!-- <span v-if="!node.isLeaf"> ({{ data.children.length }}) </span> -->
+            </template>
+          </el-cascader>
         </el-col>
         <el-col :span="5" class="search">
           <el-input
@@ -53,13 +62,13 @@
             </span>
             <span
               style="margin-left: 20px; line-height: 50px; display: inline-block"
-              >{{ scope.row.name }}</span
+              ><wwOpenDAta type="userName" :openid="scope.row.name"></wwOpenDAta></span
             >
           </template>
         </el-table-column>
         <el-table-column prop="performance" label="部门" align="left">
           <template slot-scope="scope">
-            <span>{{ scope.row.dept_name }}</span>
+            <span v-for="(item,index) in scope.row.depart_name" :key="index"><wwOpenDAta type="departmentName" :openid="item"></wwOpenDAta><span v-if="(scope.row.depart_name.length-index)>1">,</span></span>
           </template>
         </el-table-column>
         <el-table-column prop="a" label="奖票数量" align="left">
@@ -100,7 +109,8 @@ export default {
       total: 0,
       dept_tree: [],
       dept_name: [],
-      pageLimit1: 10
+      pageLimit1: 10,
+      toPdept1:0,
     };
   },
   components: {},
@@ -155,6 +165,7 @@ export default {
         });
     },
     dept1_null(val) {
+      this.toPdept1 = val[val.length-1]
       //部门
       if (val.length == 0) {
         this.formData.dept_id = 0;

+ 27 - 5
src/views/statistics_new/manager_statistics.vue

@@ -7,16 +7,25 @@
 
 			    <!-- 部门 -->
             <el-form-item label="部门">
+              <deptData  deptStyle="height:24px;line-height:24px;margin-top:7px;" v-if="toPdept && toPdept!=0" :refsName="$refs.dept" :toPdept="toPdept"></deptData>
               <el-cascader
                 v-model="dept_name_xq_xq"
                 :options="dept_trees"
                 @change="get_last_dept_null"
+                :props="{ label: 'name', value: 'id'}"
                 ref="dept"
                 filterable
                 change-on-select
                 placeholder="全公司"
                 clearable
-              ></el-cascader>
+              >
+                <template slot-scope="{ node, data }">
+                  <span>
+                    <wwOpenDAta type="departmentName" :openid="data.name"></wwOpenDAta>
+                  </span>
+                  <!-- <span v-if="!node.isLeaf"> ({{ data.children.length }}) </span> -->
+                </template>
+              </el-cascader>
             </el-form-item>
 
 			    <!-- 时间 -->
@@ -71,7 +80,7 @@
                 ></userImage>
                 <span
                   style=" margin-left: 10px; line-height: 50px; display: inline-block;"
-                >{{ scope.row.name }}</span>
+                ><wwOpenDAta type="userName" :openid="scope.row.name"></wwOpenDAta></span>
               </template>
             </el-table-column>
             <el-table-column label="奖分" prop="scope_count">
@@ -134,16 +143,25 @@
         <el-tab-pane label="奖扣执行对比" name="first">
           <el-form :model="formData" :inline="true" ref="formData">
             <el-form-item label="部门">
+              <deptData deptStyle="height:24px;line-height:24px;margin-top:7px;" v-if="toPdepts && toPdepts!=0" :refsName="$refs.depts" :toPdept="toPdepts"></deptData>
               <el-cascader
                 v-model="dept_name_xq"
                 :options="dept_tree"
                 @change="dept_null"
+                :props="{ label: 'name', value: 'id'}"
                 ref="depts"
                 filterable
                 change-on-select
                 placeholder="全公司"
                 clearable
-              ></el-cascader>
+              >
+                <template slot-scope="{ node, data }">
+                  <span>
+                    <wwOpenDAta type="departmentName" :openid="data.name"></wwOpenDAta>
+                  </span>
+                  <!-- <span v-if="!node.isLeaf"> ({{ data.children.length }}) </span> -->
+                </template>
+              </el-cascader>
             </el-form-item>
             <el-form-item label="时间">
               <el-date-picker
@@ -187,7 +205,7 @@
                 ></userImage>
                 <span
                   style=" margin-left: 10px; line-height: 50px; display: inline-block;"
-                >{{ scope.row.name }}</span>
+                ><wwOpenDAta type="userName" :openid="scope.row.name"></wwOpenDAta></span>
               </template>
             </el-table-column>
             <el-table-column label="管理范围(人)" prop="scope_count"></el-table-column>
@@ -217,7 +235,7 @@
           <el-drawer size="500px" :visible.sync="detail_show" :with-header="false" direction="rtl">
             <el-button type="info" style="position: absolute; left: -100px;">test</el-button>
             <div class="drawer_title">
-              {{item.name}}的奖扣统计
+              <wwOpenDAta type="userName" :openid="item.name"></wwOpenDAta>的奖扣统计
               <el-tooltip placement="top">
                 <div slot="content" style="width: 300px">作为管理者,管理执行力是关键,每月按要求完成奖分和扣分任务。</div>
                 <span class="tips">?</span>
@@ -319,6 +337,8 @@ export default {
       dept_tree: [],
       personalData_loading: false,
       personalData: null,
+      toPdept:0,
+      toPdepts:0,
     };
   },
   watch: {
@@ -366,6 +386,7 @@ export default {
 	},
 	//部门
 	get_last_dept_null(val) {
+      this.toPdept = val[val.length-1]
       if (val.length == 0) {
         this.condition.dept_id = 0;
       } else {
@@ -581,6 +602,7 @@ export default {
         });
     },
     dept_null(val) {
+      this.toPdepts = val[val.length-1]
       if (val.length == 0) {
         this.formData.dept_id = 0;
       } else {

+ 38 - 6
src/views/statistics_new/total_rank.vue

@@ -11,13 +11,21 @@
     <div class="manager_statistics_box">
       <el-form :inline="true">
         <el-form-item label="部门">
-          <el-cascader class="date-picker-width" v-model="dept_name" :options="dept_tree" ref="dept" clearable filterable change-on-select placeholder="全公司"></el-cascader>
+          <deptData  deptStyle="height:24px;line-height:24px;margin-top:7px;" v-if="toPdept && toPdept!=0" :refsName="$refs.dept" :toPdept="toPdept"></deptData>
+          <el-cascader class="date-picker-width" v-model="dept_name" :props="{ label: 'name', value: 'id'}" :options="dept_tree" ref="dept" clearable filterable change-on-select placeholder="全公司">
+            <template slot-scope="{ node, data }">
+              <span>
+                <wwOpenDAta type="departmentName" :openid="data.name"></wwOpenDAta>
+              </span>
+              <!-- <span v-if="!node.isLeaf"> ({{ data.children.length }}) </span> -->
+            </template>
+          </el-cascader>
         </el-form-item>
         <el-form-item><el-checkbox v-model="agePolyethism" size="medium" label="只看工龄分" border></el-checkbox></el-form-item>
         <el-form-item><el-checkbox v-model="sort" size="medium" label="排名由低到高" border></el-checkbox></el-form-item>
         <el-form-item>
           <el-button type="primary" plain @click="dialogVisible = true">导出排名</el-button>
-          <el-button type="primary" plain @click="byRanking">轮播排名</el-button>
+          <!-- <el-button type="primary" plain @click="byRanking">轮播排名</el-button> -->
         </el-form-item>
       </el-form>
 
@@ -33,7 +41,7 @@
         <el-table-column label="姓名" align="left">
           <template slot-scope="scope">
             <userImage class="fl" :id="scope.row.employee_id" :user_name="scope.row.employee_name" :img_url="scope.row.employee_img_url" width="50px" height="50px"></userImage>
-            <span style="line-height: 50px; padding-left: 10px;">{{ scope.row.employee_name }}</span>
+            <span style="line-height: 50px; padding-left: 10px;"><wwOpenDAta type="userName" :openid="scope.row.employee_name"></wwOpenDAta></span>
           </template>
         </el-table-column>
         <el-table-column label="B分" align="left" prop="point"></el-table-column>
@@ -85,16 +93,25 @@
           </el-form-item>
         </div>
         <el-form-item label="部门">
+          <deptData deptStyle="height:24px;line-height:24px;margin-top:7px;" v-if="toPdept2 && toPdept2!=0" :refsName="$refs.dept2" :toPdept="toPdept2"></deptData>
           <el-cascader
             class="date-picker-width cascader_bm"
             v-model="Dc_Data.dept_name"
             :options="dept_tree"
+            :props="{ label: 'name', value: 'id'}"
             ref="dept2"
             clearable
             filterable
             change-on-select
             placeholder="全公司"
-          ></el-cascader>
+          >
+            <template slot-scope="{ node, data }">
+              <span>
+                <wwOpenDAta type="departmentName" :openid="data.name"></wwOpenDAta>
+              </span>
+              <!-- <span v-if="!node.isLeaf"> ({{ data.children.length }}) </span> -->
+            </template>
+          </el-cascader>
         </el-form-item>
         <!-- <el-form-item label="规则分类" style="margin-left:20px">
           <el-cascader
@@ -131,16 +148,25 @@
             ></el-input>
           </el-form-item>
           <el-form-item label="选择部门">
+            <deptData  deptStyle="height:24px;line-height:24px;margin-top:7px;" v-if="toPdept1 && toPdept1!=0" :refsName="$refs.dept1" :toPdept="toPdept1"></deptData>
             <el-cascader
               class="date-picker-width"
               v-model="byRankingDeptId"
               :options="dept_tree"
+              :props="{ label: 'name', value: 'id'}"
               ref="dept1"
               clearable
               filterable
               change-on-select
               placeholder="全公司"
-            ></el-cascader>
+            >
+              <template slot-scope="{ node, data }">
+                <span>
+                  <wwOpenDAta type="departmentName" :openid="data.name"></wwOpenDAta>
+                </span>
+                <!-- <span v-if="!node.isLeaf"> ({{ data.children.length }}) </span> -->
+              </template>
+            </el-cascader>
           </el-form-item>
           <el-form-item label="人员范围" prop="position" :required="true">
             <el-radio-group v-model="byRankingData.position">
@@ -219,7 +245,10 @@ export default {
       list: null,
       pageLimit: 10,
       total: null,
-      tips_show: false
+      tips_show: false,
+      toPdept:0,
+      toPdept1:0,
+      toPdept2:0,
     };
   },
   watch: {
@@ -250,6 +279,7 @@ export default {
       this.get_list();
     },
     dept_name(val) {
+      this.toPdept = val[val.length-1]
       if (val.length !== 0) {
         this.formData.dept_id = val[val.length - 1];
       } else {
@@ -263,10 +293,12 @@ export default {
     },
 
     byRankingDeptId(val) {
+      this.toPdept1 = val[val.length-1]
       this.byRankingDeptId = val;
       this.$refs.dept1.dropDownVisible = false;
     },
     'Dc_Data.dept_name': function(val) {
+      this.toPdept2 = val[val.length-1]
       this.$refs.dept2.dropDownVisible = false;
     }
   },

+ 8 - 8
src/views/workbench/approval_list.vue

@@ -46,16 +46,16 @@
                 :user_name="scope.row.employee_name"
               ></userImage>
               <span class="tableTitle" v-show="scope.row.source_type == 1"
-                >{{ scope.row.employee_name }}的积分任务</span
+                ><wwOpenDAta type="userName" :openid="scope.row.employee_name"></wwOpenDAta>的积分任务</span
               >
               <span class="tableTitle" v-show="scope.row.source_type == 2"
-                >{{ scope.row.employee_name }}的积分申请</span
+                ><wwOpenDAta type="userName" :openid="scope.row.employee_name"></wwOpenDAta>的积分申请</span
               >
               <span class="tableTitle" v-show="scope.row.source_type == 3"
-                >{{ scope.row.employee_name }}的积分录入</span
+                ><wwOpenDAta type="userName" :openid="scope.row.employee_name"></wwOpenDAta>的积分录入</span
               >
               <span class="tableTitle" v-show="scope.row.source_type == 4"
-                >{{ scope.row.employee_name }}的绩效工作</span
+                ><wwOpenDAta type="userName" :openid="scope.row.employee_name"></wwOpenDAta>的绩效工作</span
               >
             </template>
           </el-table-column>
@@ -111,16 +111,16 @@
                 :user_name="scope.row.employee_name"
               ></userImage>
               <span class="tableTitle" v-show="scope.row.source_type == 1"
-                >{{ scope.row.employee_name }}的积分任务</span
+                ><wwOpenDAta type="userName" :openid="scope.row.employee_name"></wwOpenDAta>的积分任务</span
               >
               <span class="tableTitle" v-show="scope.row.source_type == 2"
-                >{{ scope.row.employee_name }}的积分申请</span
+                ><wwOpenDAta type="userName" :openid="scope.row.employee_name"></wwOpenDAta>的积分申请</span
               >
               <span class="tableTitle" v-show="scope.row.source_type == 3"
-                >{{ scope.row.employee_name }}的积分录入</span
+                ><wwOpenDAta type="userName" :openid="scope.row.employee_name"></wwOpenDAta>的积分录入</span
               >
               <span class="tableTitle" v-show="scope.row.source_type == 4"
-                >{{ scope.row.employee_name }}的绩效工作</span
+                ><wwOpenDAta type="userName" :openid="scope.row.employee_name"></wwOpenDAta>的绩效工作</span
               >
             </template>
           </el-table-column>

+ 11 - 2
src/views/workbench/grade/apply_list.vue

@@ -141,7 +141,7 @@
               style="display: inline-block; margin-right: 10px;"
             ></userImage>
             <div class="user_text">
-              <p>{{getEmployeeName(detail_info.employee_id)}}</p>
+              <p><wwOpenDAta type="userName" :openid="getEmployeeName(detail_info.employee_id)"></wwOpenDAta></p>
               <!-- 优化 -->
               <div v-for="(item,index) in detail_info.process" :key="index" v-show="item.review_point != 0">
                 <p v-if="detail_info.status == 1">
@@ -176,6 +176,15 @@
             >
             </el-image>
           </el-col>
+           <el-col :span="20" v-else-if="item.key == '收益人'">
+            <wwOpenDAta type="userName" :openid="item.value"></wwOpenDAta>
+					</el-col>
+          <el-col :span="20" v-else-if="item.key == '奖扣目标'">
+            <wwOpenDAta type="userName" :openid="item.value"></wwOpenDAta>
+					</el-col>
+          <el-col :span="20" v-else-if="item.key == '申请人'">
+            <wwOpenDAta type="userName" :openid="item.value"></wwOpenDAta>
+					</el-col>
           <el-col :span="20" v-else>{{ item.value }}</el-col>
         </el-row>
         
@@ -209,7 +218,7 @@
                 </template>
                 <template slot="title">
                   <div style="color: #303133;font-size:14px;margin-top:-2px;">
-                    {{item.name}} {{item.remark}}
+                    <wwOpenDAta type="userName" :openid="item.name"></wwOpenDAta> {{item.remark}}
                     <!-- <span v-show="item.point !== 0">{{item.point}}</span> -->
                   </div>
                 </template>

+ 24 - 7
src/views/workbench/grade/award_punish.vue

@@ -11,7 +11,7 @@
         <el-button type="primary" @click="point_a" plain>奖扣A分</el-button>
       </el-col>
       <el-col :span="6" :offset="6" >
-        <el-input v-model="keyword" placeholder="输入同事姓名/内容" @keyup.enter.native="getData">
+        <el-input v-model="keyword" placeholder="输入同事姓名" @keyup.enter.native="getData">
           <el-button slot="append" @click="getData" icon="el-icon-search"></el-button>
         </el-input>
       </el-col>
@@ -22,7 +22,9 @@
         <template slot-scope="scope">
           <div class="flex-box flex-contet-conter">
             <userImage  :id="scope.row.employee_id" :user_name="scope.row.employee_name" width="50px" height="50px"></userImage>
-            <span style="margin-left: 10px; line-height: 50px;">{{ scope.row.employee_name }}</span>
+            <span style="margin-left: 10px; line-height: 50px;">
+              <wwOpenDAta type="userName" :openid="scope.row.employee_name"></wwOpenDAta>
+             </span>
           </div>
         </template>
       </el-table-column>
@@ -50,7 +52,9 @@
           <div class="flex-box flex-contet-conter">
             <userImage  :id="scope.row.employee_id" :user_name="scope.row.employee_name" width="50px"
               height="50px"></userImage>
-            <span style="margin-left: 10px; line-height: 50px;">{{ scope.row.employee_name }}</span>
+            <span style="margin-left: 10px; line-height: 50px;">
+              <wwOpenDAta type="userName" :openid="scope.row.employee_name"></wwOpenDAta>
+            </span>
           </div>
         </template>
       </el-table-column>
@@ -93,7 +97,9 @@
         <el-row :gutter="10" style="padding-bottom:10px;border-bottom:1px #f8f8f8 solid;">
           <el-col :span="24">
             <userImage :id="detail_info.employee_id" :user_name="detail_info.employee_name" :img_url="detail_info.img_url" class="fl" width="50px" height="50px" fontSize="15"></userImage>
-            <span style="line-height:50px; margin-left:10px;margin-right:4px;">{{detail_info.employee_name}}</span>
+            <span style="line-height:50px; margin-left:10px;margin-right:4px;">
+              <wwOpenDAta type="userName" :openid="detail_info.employee_name"></wwOpenDAta>
+            </span>
             <span class="color_red point" v-show="detail_info.point >= 0 && detail_info.point"> +{{detail_info.point}}</span>
             <span class="color_green point" v-show="detail_info.point < 0 && detail_info.point"> {{detail_info.point}} </span>
             <span v-show='detail_info.point'> {{detail_info.pt_id==1?'绩效分':detail_info.pt_id==2?'A分':detail_info.pt_id==3?'B分':''}}</span>
@@ -163,7 +169,7 @@
                   <userImage width="36px" height="36px" :img_url="item.img_url" :user_name="item.name"></userImage>
                 </template>
                 <template slot="title">
-                  <div style="color: #303133;font-size:14px;margin-top:-2px;">{{item.name}} {{item.remark}} 
+                  <div style="color: #303133;font-size:14px;margin-top:-2px;"><wwOpenDAta type="userName" :openid="item.name"></wwOpenDAta> {{item.remark}} 
                     <!-- <span v-show="item.point !== 0">{{item.point}}</span> -->
                    </div>
                 </template>
@@ -187,7 +193,7 @@
         <el-row :gutter="10" style="padding-bottom:10px;border-bottom:1px #f8f8f8 solid;">
           <el-col :span="24">
             <userImage :id="detail_info.applyor_id" class="fl" width="50px" height="50px" fontSize="15"></userImage>
-            <span style="line-height:50px; margin-left:10px;margin-right:4px;">{{getEmployeeName(detail_info.applyor_id)}}</span>
+            <span style="line-height:50px; margin-left:10px;margin-right:4px;"><wwOpenDAta type="userName" :openid="getEmployeeName(detail_info.applyor_id)"></wwOpenDAta></span>
             <span class="color_red point" v-show="detail_info.point >= 0 && detail_info.point"> +{{detail_info.point}} </span>
             <span class="color_green point" v-show="detail_info.point < 0 && detail_info.point"> {{detail_info.point}} </span>
             <span v-show='detail_info.point'> {{detail_info.pt_id==1?'绩效分':detail_info.pt_id==2?'A分':detail_info.pt_id==3?'B分':''}}</span>
@@ -209,6 +215,17 @@
               :preview-src-list="item.value">
             </el-image>
 					</el-col>
+
+          <el-col :span="20" v-else-if="item.key == '收益人'">
+            <wwOpenDAta type="userName" :openid="item.value"></wwOpenDAta>
+					</el-col>
+          <el-col :span="20" v-else-if="item.key == '奖扣目标'">
+            <wwOpenDAta type="userName" :openid="item.value"></wwOpenDAta>
+					</el-col>
+          <el-col :span="20" v-else-if="item.key == '申请人'">
+            <wwOpenDAta type="userName" :openid="item.value"></wwOpenDAta>
+					</el-col>
+
           <el-col :span="20" v-else>{{item.value}}</el-col>
         </el-row>
         
@@ -234,7 +251,7 @@
                   <userImage width="36px" height="36px" :img_url="item.img_url" :user_name="item.name"></userImage>
                 </template>
                 <template slot="title">
-                  <div style="color: #303133;font-size:14px;margin-top:-2px;">{{item.name}} {{item.remark}} 
+                  <div style="color: #303133;font-size:14px;margin-top:-2px;"><wwOpenDAta type="userName" :openid="item.name"></wwOpenDAta> {{item.remark}} 
                     <!-- <span v-show="item.point !== 0">{{item.point}}</span> -->
                   </div>
                 </template>

+ 11 - 5
src/views/workbench/performance/add_team_performance.vue

@@ -11,7 +11,7 @@
           <div class="border2 flex-box flex-v-ce" @click="add_employee_show = true">
             <div class="flex-1 fontColorF" v-if="selectEmployee.employee.length == 0">请选择执行人</div>
             <div class="flex-1" v-if="selectEmployee.employee.length > 0">
-              <span v-for="(item,index) in selectEmployee.employee" :key="index"><i v-if="index != 0">,</i>{{item.name}}</span>
+              <span v-for="(item,index) in selectEmployee.employee" :key="index"><i v-if="index != 0">,</i><wwOpenDAta type="userName" :openid="item.name"></wwOpenDAta></span>
             </div>
             <i class="el-icon-arrow-down icon-right"></i>
           </div>
@@ -19,7 +19,10 @@
           <div @click="manageNullFun" v-show="manageNullShow" class="executorNull"></div>
         </el-form-item>
         <el-form-item label="执行人" v-if="$route.query.package_id" :rules="[{required: true, message: '请选择月份', trigger: 'change' }]">
-          <el-input v-model="employee_name" disabled required ></el-input>
+          <div class="border2 flex-box flex-v-ce" style="background-color:#F5F7FA;color:#C0C4CC; cursor:not-allowed;">
+            <div class="flex-1"><wwOpenDAta  type="userName" :openid="employee_name"></wwOpenDAta></div>
+          </div>
+          <!-- <el-input v-model="employee_name" disabled required ></el-input> -->
         </el-form-item>
         <el-form-item label="月平衡分" prop="base_point" :rules="[{required: true, message: '请输入月平衡分', trigger: 'blur' },{ type: 'number', message: '月平衡分必须为数字值'}]">
           <span slot="label">月平衡分
@@ -39,7 +42,7 @@
           </span>
           <div class="border flex-box flex-v-ce" @click="add_reviewer_show = true">
             <div class="flex-1 fontColorF" v-if="selectReviewer.employee.length == 0">请选择</div>
-            <div class="flex-1" v-else>{{selectReviewer.employee[0].name}}</div>
+            <div class="flex-1" v-else><wwOpenDAta type="userName" :openid="selectReviewer.employee[0].name"></wwOpenDAta></div>
             <i class="el-icon-arrow-down"></i>
           </div>
         </el-form-item>
@@ -53,7 +56,7 @@
           <div class="border2 flex-box flex-v-ce" @click="add_notice_show = true">
             <div class="flex-1 fontColorF" v-if="selectNotice.employee.length == 0">请选择</div>
             <div class="flex-1" v-else>
-              <span v-for="(item,index) in selectNotice.employee" :key="index"><i v-if="index != 0">,</i>{{item.name}}</span>
+              <span v-for="(item,index) in selectNotice.employee" :key="index"><i v-if="index != 0">,</i><wwOpenDAta type="userName" :openid="item.name"></wwOpenDAta></span>
               </div>
             <i class="el-icon-arrow-down"></i>
           </div>
@@ -111,6 +114,9 @@
             <el-table-column 
               prop="target" 
               label="姓名" >
+              <template slot-scope="scope">
+                <span><wwOpenDAta type="userName" :openid="scope.row.target"></wwOpenDAta></span>
+              </template>
             </el-table-column>
 
             <el-table-column 
@@ -182,7 +188,7 @@
               </span>
               <span
                 style="margin-left: 20px; line-height: 40px; display: inline-block;"
-                >{{ scope.row.name }}</span
+                ><wwOpenDAta type="userName" :openid="scope.row.name"></wwOpenDAta></span
               >
             </template>
           </el-table-column>

+ 11 - 10
src/views/workbench/performance/examine_unit.vue

@@ -1,6 +1,7 @@
 <template>
-  <div class="box">
-    <el-page-header @back="$router.go(-1)" :content="dataList.employee_name" class="header"></el-page-header>
+  <div class="box" style="position: relative">
+    <el-page-header @back="$router.go(-1)" class="header"></el-page-header>
+    <div style="position:absolute;top:23px;left:126px;color:#303133;font-size: 17px;"><wwOpenDAta type="userName" :openid="dataList.employee_name"></wwOpenDAta>{{date}}绩效</div>
     <div class="search">
       <el-button type="primary" @click="audit" style="width: 100px;margin-right: 10px;" v-if="dataList.review_performance === 1">审批</el-button>
       <el-date-picker v-model="date" :clearable="false" type="month" placeholder="选择月" value-format="yyyy-MM"></el-date-picker>
@@ -21,7 +22,7 @@
         <el-dropdown>
           <span class="el-dropdown-link">终审人<i class="el-icon-arrow-down el-icon--right"></i></span>
           <el-dropdown-menu slot="dropdown">
-            <el-dropdown-item v-if="dataList.reviewer_name">{{ dataList.reviewer_name }}</el-dropdown-item>
+            <el-dropdown-item v-if="dataList.reviewer_name"><wwOpenDAta type="userName" :openid="dataList.reviewer_name"></wwOpenDAta></el-dropdown-item>
             <el-dropdown-item class="fontColorF" v-else>无数据</el-dropdown-item>
           </el-dropdown-menu>
         </el-dropdown>
@@ -33,7 +34,7 @@
             </el-tooltip>发布人<i class="el-icon-arrow-down el-icon--right"></i>
           </span>
           <el-dropdown-menu slot="dropdown">
-            <el-dropdown-item v-if="dataList.publisher_name">{{ dataList.publisher_name }}</el-dropdown-item>
+            <el-dropdown-item v-if="dataList.publisher_name"><wwOpenDAta type="userName" :openid="dataList.publisher_name"></wwOpenDAta></el-dropdown-item>
             <el-dropdown-item class="fontColorF" v-else>无数据</el-dropdown-item>
           </el-dropdown-menu>
         </el-dropdown>
@@ -46,7 +47,7 @@
           </span>
           <el-dropdown-menu slot="dropdown">
             <template v-if="dataList.notice_info.length>0">
-              <el-dropdown-item  v-for="(item, index) in dataList.notice_info" :key="index">{{ item.name }}123</el-dropdown-item>
+              <el-dropdown-item  v-for="(item, index) in dataList.notice_info" :key="index"><wwOpenDAta type="userName" :openid="item.name"></wwOpenDAta></el-dropdown-item>
             </template>
             <el-dropdown-item class="fontColorF" v-else>无数据</el-dropdown-item>
           </el-dropdown-menu>
@@ -152,8 +153,8 @@
         <div class="flex-box flex-v-ce">
           <userImage class="user_img person_imghead" width="46px" height="46px" :user_name="workDetailData.employee_name" :img_url="workDetailData.img_url"></userImage>
           <div class="d_userMessage">
-            <div>{{workDetailData.employee_name}}</div>
-            <div v-if="workDetailData.dept_list[0]">{{workDetailData.dept_list[0].dept_name}}</div>
+            <div><wwOpenDAta type="userName" :openid="workDetailData.employee_name"></wwOpenDAta></div>
+            <div v-if="workDetailData.dept_list[0]"><wwOpenDAta type="userName" :openid="workDetailData.dept_list[0].dept_name"></wwOpenDAta></div>
           </div>
         </div>
         <ul>
@@ -189,7 +190,7 @@
           </li>
           <li class="flex-box">
             <div class="label">审批人</div>
-            <div class="content_text">{{workDetailData.reviewer_name}}</div>
+            <div class="content_text"><wwOpenDAta type="userName" :openid="workDetailData.reviewer_name"></wwOpenDAta></div>
           </li>
           <li class="flex-box">
             <div class="label">积分种类</div>
@@ -214,7 +215,7 @@
                 <userImage class="user_img person_imghead" width="40px" height="40px" :user_name="item.recorder" :img_url="item.img_url"></userImage>
                 <div class="work_right flex-1">
                   <div class="flex-box">
-                    <div class="d_name flex-1">{{item.recorder}}</div>
+                    <div class="d_name flex-1"><wwOpenDAta type="userName" :openid="item.recorder"></wwOpenDAta></div>
                     <div class="d_date">{{item.time}}</div>
                   </div>
                   <div class="d_content">{{item.remark}}</div>
@@ -233,7 +234,7 @@
                 <userImage class="user_img person_imghead" width="40px" height="40px" :user_name="item.recorder" :img_url="item.img_url"></userImage>
                 <div class="work_right flex-1">
                   <div class="flex-box">
-                    <div class="d_name flex-1">{{item.recorder}}
+                    <div class="d_name flex-1"><wwOpenDAta type="userName" :openid="item.recorder"></wwOpenDAta>
                     <span class="blue" v-if="item.point>0">+{{item.point}}</span>
                     <span class="green" v-if="item.point<0">{{item.point}}</span>
                     </div>

+ 1 - 1
src/views/workbench/performance/module/examine.vue

@@ -11,7 +11,7 @@
               <userImage class="user_img person_imghead" :id="scope.row.id" width="46px" height="46px" :user_name="scope.row.name"
                 :img_url="scope.row.img_url">
               </userImage>
-              <span style="margin-left: 20px;">{{scope.row.name}}</span>
+              <span style="margin-left: 20px;"><wwOpenDAta type="userName" :openid="scope.row.name"></wwOpenDAta></span>
             </div>
           </template>
         </el-table-column>

+ 1 - 1
src/views/workbench/performance/module/participation.vue

@@ -11,7 +11,7 @@
               <userImage class="user_img person_imghead" :id="scope.row.id" width="46px" height="46px" :user_name="scope.row.name"
                 :img_url="scope.row.img_url">
               </userImage>
-              <span style="margin-left: 20px;">{{scope.row.name}}</span>
+              <span style="margin-left: 20px;"><wwOpenDAta type="userName" :openid="scope.row.name"></wwOpenDAta></span>
             </div>
           </template>
         </el-table-column>

+ 8 - 8
src/views/workbench/performance/my_performance.vue

@@ -18,7 +18,7 @@
         <el-dropdown>
           <span class="el-dropdown-link">终审人<i class="el-icon-arrow-down el-icon--right"></i></span>
           <el-dropdown-menu slot="dropdown">
-            <el-dropdown-item v-if="dataList.reviewer_name">{{ dataList.reviewer_name }}</el-dropdown-item>
+            <el-dropdown-item v-if="dataList.reviewer_name"><wwOpenDAta type="userName" :openid="dataList.reviewer_name"></wwOpenDAta></el-dropdown-item>
             <el-dropdown-item class="fontColorF" v-else>无数据</el-dropdown-item>
           </el-dropdown-menu>
         </el-dropdown>
@@ -30,7 +30,7 @@
             </el-tooltip>
             发布人<i class="el-icon-arrow-down el-icon--right"></i></span>
           <el-dropdown-menu slot="dropdown">
-            <el-dropdown-item v-if="dataList.publisher_name">{{ dataList.publisher_name }}</el-dropdown-item>
+            <el-dropdown-item v-if="dataList.publisher_name"><wwOpenDAta type="userName" :openid="dataList.publisher_name"></wwOpenDAta></el-dropdown-item>
             <el-dropdown-item class="fontColorF" v-else>无数据</el-dropdown-item>
           </el-dropdown-menu>
         </el-dropdown>
@@ -43,7 +43,7 @@
             监察员<i class="el-icon-arrow-down el-icon--right"></i></span>
           <el-dropdown-menu slot="dropdown">
             <template v-if="dataList.notice_info.length>0">
-              <el-dropdown-item  v-for="(item, index) in dataList.notice_info" :key="index">{{ item.name }}123</el-dropdown-item>
+              <el-dropdown-item  v-for="(item, index) in dataList.notice_info" :key="index"><wwOpenDAta type="userName" :openid="item.name"></wwOpenDAta></el-dropdown-item>
             </template>
             <el-dropdown-item class="fontColorF" v-else>无数据</el-dropdown-item>
           </el-dropdown-menu>
@@ -102,8 +102,8 @@
         <div class="flex-box flex-v-ce">
           <userImage class="user_img person_imghead" width="46px" height="46px" :user_name="workDetailData.employee_name" :img_url="workDetailData.img_url"></userImage>
           <div class="d_userMessage">
-            <div>{{workDetailData.employee_name}}</div>
-            <div v-if="workDetailData.dept_list[0]">{{workDetailData.dept_list[0].dept_name}}</div>
+            <div><wwOpenDAta type="userName" :openid="workDetailData.employee_name"></wwOpenDAta></div>
+            <div v-if="workDetailData.dept_list[0]"><wwOpenDAta type="userName" :openid="workDetailData.dept_list[0].dept_name"></wwOpenDAta></div>
           </div>
         </div>
         <ul>
@@ -139,7 +139,7 @@
           </li>
           <li class="flex-box">
             <div class="label">审批人</div>
-            <div class="content_text">{{workDetailData.reviewer_name}}</div>
+            <div class="content_text"><wwOpenDAta type="userName" :openid="workDetailData.reviewer_name"></wwOpenDAta></div>
           </li>
           <li class="flex-box">
             <div class="label">积分种类</div>
@@ -164,7 +164,7 @@
                 <userImage class="user_img person_imghead" width="40px" height="40px" :user_name="item.recorder" :img_url="item.img_url"></userImage>
                 <div class="work_right flex-1">
                   <div class="flex-box">
-                    <div class="d_name flex-1">{{item.recorder}}</div>
+                    <div class="d_name flex-1"><wwOpenDAta type="userName" :openid="item.recorder"></wwOpenDAta></div>
                     <div class="d_date">{{item.time}}</div>
                   </div>
                   <div class="d_content">{{item.remark}}</div>
@@ -183,7 +183,7 @@
                 <userImage class="user_img person_imghead" width="40px" height="40px" :user_name="item.recorder" :img_url="item.img_url"></userImage>
                 <div class="work_right flex-1">
                   <div class="flex-box">
-                    <div class="d_name flex-1">{{item.recorder}}
+                    <div class="d_name flex-1"><wwOpenDAta type="userName" :openid="item.recorder"></wwOpenDAta>
                     <span class="blue" v-if="item.point>0">+{{item.point}}</span>
                     <span class="green" v-if="item.point<0">{{item.point}}</span>
                     </div>

+ 11 - 10
src/views/workbench/performance/participation_detail.vue

@@ -1,6 +1,7 @@
 <template>
-  <div class="box">
-    <el-page-header @back="$router.go(-1)" :content="dataList.employee_name" class="header"></el-page-header>
+  <div class="box" style="position: relative">
+    <el-page-header @back="$router.go(-1)" class="header"></el-page-header>
+    <div style="position:absolute;top:23px;left:126px;color:#303133;font-size: 17px;"><wwOpenDAta type="userName" :openid="dataList.employee_name"></wwOpenDAta>{{date}}绩效</div>
     <div class="search"><el-date-picker :clearable="false" v-model="date" type="month" placeholder="选择月" value-format="yyyy-MM"></el-date-picker></div>
     <div class="flex-box">
       <div class="flex-1 flex-box flex-v-ce">
@@ -21,7 +22,7 @@
             <i class="el-icon-arrow-down el-icon--right"></i>
           </span>
           <el-dropdown-menu slot="dropdown">
-            <el-dropdown-item v-if="dataList.reviewer_name">{{ dataList.reviewer_name }}</el-dropdown-item>
+            <el-dropdown-item v-if="dataList.reviewer_name"><wwOpenDAta type="userName" :openid="dataList.reviewer_name"></wwOpenDAta></el-dropdown-item>
             <el-dropdown-item class="fontColorF" v-else>无数据</el-dropdown-item>
           </el-dropdown-menu>
         </el-dropdown>
@@ -33,7 +34,7 @@
             </el-tooltip>
             发布人<i class="el-icon-arrow-down el-icon--right"></i></span>
           <el-dropdown-menu slot="dropdown">
-            <el-dropdown-item v-if="dataList.publisher_name">{{ dataList.publisher_name }}</el-dropdown-item>
+            <el-dropdown-item v-if="dataList.publisher_name"><wwOpenDAta type="userName" :openid="dataList.publisher_name"></wwOpenDAta></el-dropdown-item>
             <el-dropdown-item class="fontColorF" v-else>无数据</el-dropdown-item>
           </el-dropdown-menu>
         </el-dropdown>
@@ -48,7 +49,7 @@
           </span>
           <el-dropdown-menu slot="dropdown">
             <template v-if="dataList.notice_info.length > 0">
-              <el-dropdown-item v-for="(item, index) in dataList.notice_info" :key="index">{{ item.name }}123</el-dropdown-item>
+              <el-dropdown-item v-for="(item, index) in dataList.notice_info" :key="index"><wwOpenDAta type="userName" :openid="item.name"></wwOpenDAta></el-dropdown-item>
             </template>
             <el-dropdown-item class="fontColorF" v-else>无数据</el-dropdown-item>
           </el-dropdown-menu>
@@ -131,8 +132,8 @@
         <div class="flex-box flex-v-ce">
           <userImage class="user_img person_imghead" width="46px" height="46px" :user_name="workDetailData.employee_name" :img_url="workDetailData.img_url"></userImage>
           <div class="d_userMessage">
-            <div>{{ workDetailData.employee_name }}</div>
-            <div v-if="workDetailData.dept_list[0]">{{ workDetailData.dept_list[0].dept_name }}</div>
+            <div><wwOpenDAta type="userName" :openid="workDetailData.employee_name"></wwOpenDAta></div>
+            <div v-if="workDetailData.dept_list[0]"><wwOpenDAta type="userName" :openid="workDetailData.dept_list[0].dept_name"></wwOpenDAta></div>
           </div>
         </div>
         <ul>
@@ -163,7 +164,7 @@
           </li>
           <li class="flex-box">
             <div class="label">审批人</div>
-            <div class="content_text">{{ workDetailData.reviewer_name }}</div>
+            <div class="content_text"><wwOpenDAta type="userName" :openid="workDetailData.reviewer_name"></wwOpenDAta></div>
           </li>
           <li class="flex-box">
             <div class="label">积分种类</div>
@@ -188,7 +189,7 @@
                 <userImage class="user_img person_imghead" width="40px" height="40px" :user_name="item.recorder" :img_url="item.img_url"></userImage>
                 <div class="work_right flex-1">
                   <div class="flex-box">
-                    <div class="d_name flex-1">{{ item.recorder }}</div>
+                    <div class="d_name flex-1"><wwOpenDAta type="userName" :openid="item.recorder"></wwOpenDAta></div>
                     <div class="d_date">{{ item.time }}</div>
                   </div>
                   <div class="d_content">{{ item.remark }}</div>
@@ -210,7 +211,7 @@
                 <div class="work_right flex-1">
                   <div class="flex-box">
                     <div class="d_name flex-1">
-                      {{ item.recorder }}
+                      <wwOpenDAta type="userName" :openid="item.recorder"></wwOpenDAta>
                       <span class="blue" v-if="item.point > 0">+{{ item.point }}</span>
                       <span class="green" v-if="item.point < 0">{{ item.point }}</span>
                     </div>

+ 20 - 16
src/views/workbench/performance/team_detail.vue

@@ -1,6 +1,9 @@
 <template>
-  <div class="box">
-    <el-page-header @back="$router.go(-1)" :content="dataList.employee_name" class="header"></el-page-header>
+  <div class="box" style="position: relative">
+    <!-- <el-page-header @back="$router.go(-1)" :content="dataList.employee_name" class="header"> -->
+    <el-page-header @back="$router.go(-1)" class="header">
+    </el-page-header>
+    <div style="position:absolute;top:23px;left:126px;color:#303133;font-size: 17px;"><wwOpenDAta type="userName" :openid="dataList.employee_name"></wwOpenDAta>{{date}}绩效</div>
     <div class="search">
       <el-button type="primary" @click="drawer=true" style="width: 100px;margin-right: 10px;" v-if="deptManagerRouters">+绩效工作</el-button>
       <!-- <el-date-picker :clearable="false" v-model="date" type="month" placeholder="选择月" value-format="yyyy-MM"></el-date-picker> -->
@@ -21,7 +24,7 @@
         <el-dropdown>
           <span class="el-dropdown-link">终审人</span>
           <el-dropdown-menu slot="dropdown">
-            <el-dropdown-item v-if="dataList.reviewer_name">{{ dataList.reviewer_name }}</el-dropdown-item>
+            <el-dropdown-item v-if="dataList.reviewer_name"><wwOpenDAta type="userName" :openid="dataList.reviewer_name"></wwOpenDAta></el-dropdown-item>
             <el-dropdown-item class="fontColorF" v-else>无数据</el-dropdown-item>
           </el-dropdown-menu>
         </el-dropdown>
@@ -34,7 +37,7 @@
             </el-tooltip>发布人<i class="el-icon-arrow-down el-icon--right"></i>
           </span>
           <el-dropdown-menu slot="dropdown">
-            <el-dropdown-item v-if="dataList.publisher_name">{{ dataList.publisher_name }}</el-dropdown-item>
+            <el-dropdown-item v-if="dataList.publisher_name"><wwOpenDAta type="userName" :openid="dataList.publisher_name"></wwOpenDAta></el-dropdown-item>
             <el-dropdown-item class="fontColorF" v-else>无数据</el-dropdown-item>
           </el-dropdown-menu>
         </el-dropdown>
@@ -48,7 +51,7 @@
           </span>
           <el-dropdown-menu slot="dropdown">
             <template v-if="dataList.notice_info.length>0">
-              <el-dropdown-item  v-for="(item, index) in dataList.notice_info" :key="index">{{ item.name }}123</el-dropdown-item>
+              <el-dropdown-item  v-for="(item, index) in dataList.notice_info" :key="index"><wwOpenDAta type="userName" :openid="item.name"></wwOpenDAta></el-dropdown-item>
             </template>
             <el-dropdown-item class="fontColorF" v-else>无数据</el-dropdown-item>
           </el-dropdown-menu>
@@ -147,7 +150,7 @@
           <el-form-item label="审批人" prop="reviewer_id" :rules="[{required: true, message: '请选择审批人', trigger: 'blur' }]">
               <div class="border flex-box flex-v-ce" @click="add_reviewer_show = true">
                 <div class="flex-1 fontColorF" v-if="!selectReviewer.name">请选择</div>
-                <div class="flex-1" v-else>{{selectReviewer.name}}</div>
+                <div class="flex-1" v-else><wwOpenDAta type="userName" :openid="selectReviewer.name"></wwOpenDAta></div>
                 <i class="el-icon-arrow-down"></i>
               </div>
           </el-form-item>
@@ -213,7 +216,7 @@
           <el-form-item label="审批人" prop="reviewer_id" :rules="[{required: true, message: '请选择审批人', trigger: 'blur' }]">
               <div class="border flex-box flex-v-ce" @click="add_reviewer_show = true">
                 <div class="flex-1 fontColorF" v-if="!selectReviewer.name">请选择</div>
-                <div class="flex-1" v-else>{{selectReviewer.name}}</div>
+                <div class="flex-1" v-else><wwOpenDAta type="userName" :openid="selectReviewer.name"></wwOpenDAta></div>
                 <i class="el-icon-arrow-down"></i>
               </div>
           </el-form-item>
@@ -270,8 +273,8 @@
       <div class="flex-box flex-v-ce">
         <userImage class="user_img person_imghead" width="46px" height="46px" :user_name="workDetailData.employee_name" :img_url="workDetailData.img_url"></userImage>
         <div class="d_userMessage">
-          <div>{{workDetailData.employee_name}}</div>
-          <div v-if="workDetailData.dept_list[0]">{{workDetailData.dept_list[0].dept_name}}</div>
+          <div><wwOpenDAta type="userName" :openid="workDetailData.employee_name"></wwOpenDAta></div>
+          <div v-if="workDetailData.dept_list[0]"><wwOpenDAta type="userName" :openid="workDetailData.dept_list[0].dept_name"></wwOpenDAta></div>
         </div>
       </div>
       <ul>
@@ -303,7 +306,7 @@
         </li>
         <li class="flex-box">
           <div class="label">发布人</div>
-          <div class="content_text">{{workDetailData.publisher_name}}</div>
+          <div class="content_text"><wwOpenDAta type="userName" :openid="workDetailData.publisher_name"></wwOpenDAta></div>
         </li>
         <!-- <li class="flex-box">
           <div class="label">发布时间</div>
@@ -315,7 +318,7 @@
         </li>
         <li class="flex-box">
           <div class="label">审批人</div>
-          <div class="content_text">{{workDetailData.reviewer_name}}</div>
+          <div class="content_text"><wwOpenDAta type="userName" :openid="workDetailData.reviewer_name"></wwOpenDAta></div>
         </li>
         <li class="flex-box">
           <div class="label">积分种类</div>
@@ -336,11 +339,11 @@
             <div class="fontColorF addJf" @click="isOne=true" v-if="workDetailData.employee_id==userId&&workDetailData.status==1 || workDetailData.employee_id==userId&&workDetailData.status==2">+记一条工作记录</div>
           </div>
           <div class="work_box" style="padding-top:10px" v-if="workDetailData.process !== null && workDetailData.process.list !== null">
-            <div class="flex-box work_item" v-for="(item,index) in workDetailData.process.list" v-show="item.point == 0">
+            <div class="flex-box work_item" v-for="(item,index) in workDetailData.process.list" :key="index" v-show="item.point == 0">
               <userImage class="user_img person_imghead" width="40px" height="40px" :user_name="item.recorder" :img_url="item.img_url"></userImage>
               <div class="work_right flex-1">
                 <div class="flex-box">
-                  <div class="d_name flex-1">{{item.recorder}}</div>
+                  <div class="d_name flex-1"><wwOpenDAta type="userName" :openid="item.recorder"></wwOpenDAta></div>
                   <div class="d_date">{{item.time}}</div>
                 </div>
                 <div class="d_content">{{item.remark}}</div>
@@ -362,7 +365,7 @@
               <userImage class="user_img person_imghead" width="40px" height="40px" :user_name="item.recorder" :img_url="item.img_url"></userImage>
               <div class="work_right flex-1">
                 <div class="flex-box">
-                  <div class="d_name flex-1">{{item.recorder}}
+                  <div class="d_name flex-1"><wwOpenDAta type="userName" :openid="item.recorder"></wwOpenDAta>
                   <span class="blue" v-if="item.point>0">+{{item.point}}</span>
                   <span class="green" v-if="item.point<0">{{item.point}}</span>
                   </div>
@@ -473,7 +476,7 @@
       jobSchedule:false,//更新进度loading
       remembera:false,//加一条loading
       scoringRecord:false,//记分loading
-      deptManagerRouters:JSON.parse(localStorage.getItem("deptManagerRouters")),
+      deptManagerRouters: !this.$authoritys('dept_manager'),
       // drawer_variate:0,//进入绩效包是否打开抽屉、(若要启用此功能请打开)
       operation_if:false,//操作列显示隐藏
       // v_show_hover_Ds:false,
@@ -1008,7 +1011,8 @@
 
             this.the_pop_up = res.data.data.work_list
             self.dataList = res.data.data||[]
-            self.dataList.employee_name=self.dataList.employee_name+" "+self.date+"绩效"
+            // self.dataList.employee_name=self.dataList.employee_name+" "+self.date+"绩效"
+            self.dataList.employee_name=self.dataList.employee_name
             self.total = res.data.data.work_count;
             self.base_point=res.data.data.base_point;
             self.point_total = 0//重新请求数据,清空原先数据

+ 16 - 4
src/views/workbench/performance/team_performance.vue

@@ -3,7 +3,17 @@
     <div class="header flex-box flex-v-ce">
       <el-button type="primary" @click="openAdd" v-if="deptManagerRouters">+月绩效</el-button>
       <div class="search"><el-date-picker :clearable="false" v-model="month" type="month" placeholder="选择月" value-format="yyyy-MM"></el-date-picker></div>
-      <el-cascader class="date-picker-width"	v-model="dept_name"	:options="dept_tree" clearable	filterable	change-on-select	placeholder="全公司" ></el-cascader>
+      <el-row><el-col>
+        <deptData  v-if="toPdept1 && toPdept1!=0" :refsName="$refs.dept1" :toPdept="toPdept1"></deptData>
+        <el-cascader class="date-picker-width"	v-model="dept_name" ref="dept1"	:options="dept_tree" :props="{ label: 'name', value: 'id'}" clearable	filterable	change-on-select	placeholder="全公司" >
+          <template slot-scope="{ node, data }">
+            <span>
+              <wwOpenDAta type="departmentName" :openid="data.name"></wwOpenDAta>
+            </span>
+            <!-- <span v-if="!node.isLeaf"> ({{ data.children.length }}) </span> -->
+          </template>
+        </el-cascader>
+      </el-col></el-row>
       <div class="search"><el-button type="primary" @click="excelImportShow = true" v-if="deptManagerRouters">导入绩效工作</el-button></div>
       <div class="flex-1"></div>
       <el-input placeholder="输入同事姓名" v-model="keyword" style="width: 200px;">
@@ -17,7 +27,7 @@
           <template slot-scope="scope">
             <div class="flex-box flex-v-ce">
               <userImage class="user_img person_imghead" :id="scope.row.id" width="46px" height="46px" :user_name="scope.row.name" :img_url="scope.row.img_url"></userImage>
-              <span style="margin-left: 20px;">{{ scope.row.name }}</span>
+              <span style="margin-left: 20px;"><wwOpenDAta type="userName" :openid="scope.row.name"></wwOpenDAta></span>
             </div>
           </template>
         </el-table-column>
@@ -141,7 +151,7 @@ export default {
   components:{noData},
   data() {
     return {
-      deptManagerRouters:JSON.parse(localStorage.getItem("deptManagerRouters")),
+      deptManagerRouters:!this.$authoritys('dept_manager'),
       integralUpload:process.env.BASE_API + '/api/upload/excel',
       ATOKEN: { 'A-TOKEN': getToken()},
       page: 1,
@@ -161,7 +171,8 @@ export default {
       update_btn:false,
       file: [],
       importErrorInfoShow: false,
-      error_list: []
+      error_list: [],
+      toPdept1:0,
     };
   },
   watch: {
@@ -169,6 +180,7 @@ export default {
       this.getData();
     },
     dept_name(val){
+      this.toPdept1 = val[val.length-1]
       if(val !== null && val.length > 0){
         this.dept_id=val[val.length-1];
       }else{

+ 6 - 4
src/views/workbench/task/get_task.vue

@@ -31,7 +31,7 @@
           <el-table-column label="执行人" prop="receiver_id">
             <template slot-scope="scope">
               <userImage class="fl" :id="scope.row.receiver_id" :user_name="scope.row.receiver_name" :img_url="scope.row.receiver_img_url" width="50px" height="50px" ></userImage>
-              <span style="line-height: 50px; padding-left: 10px;">{{scope.row.receiver_name}}</span>
+              <span style="line-height: 50px; padding-left: 10px;"><wwOpenDAta type="userName" :openid="scope.row.receiver_name"></wwOpenDAta></span>
             </template>
           </el-table-column>
           <el-table-column label="任务内容" prop="task_name"></el-table-column>
@@ -70,7 +70,9 @@
           <el-row style="padding-bottom:10px;border-bottom:1px #f8f8f8 solid;">
             <el-col :span="24">
               <userImage :user_name="active=='unclaimed'?detailInfo.owner_name:detailInfo.receiver_name" :id="active=='unclaimed'?detailInfo.owner_id:detailInfo.receiver_id" :img_url="active=='unclaimed'?detailInfo.owner_img_url:detailInfo.receiver_img_url" class="fl" width="50px" height="50px" fontSize="15"></userImage>
-              <span style="line-height:50px; margin-left:10px;margin-right:4px;">{{active=='unclaimed'?detailInfo.owner_name:detailInfo.receiver_name}}</span>
+              <span style="line-height:50px; margin-left:10px;margin-right:4px;">
+                <wwOpenDAta type="userName" :openid="active=='unclaimed'?detailInfo.owner_name:detailInfo.receiver_name"></wwOpenDAta>
+              </span>
               <span class="color_red point" v-show="detailInfo.point_config.base_point >= 0"> +{{detailInfo.point_config.base_point}}</span>
               <span class="color_green point" v-show="detailInfo.point_config.base_point < 0"> {{detailInfo.point_config.base_point}}</span>
               <!-- {{point_name(detailInfo.pt_id)}} -->
@@ -114,12 +116,12 @@
           </el-row> -->
            <el-row v-if="detailInfo.reviewer_name">
             <el-col :span="4">审批人</el-col>
-            <el-col :span="20">{{detailInfo.reviewer_name}}</el-col>
+            <el-col :span="20"><wwOpenDAta type="userName" :openid="detailInfo.reviewer_name"></wwOpenDAta></el-col>
           </el-row>
 
           <el-row v-if="detailInfo.owner_name">
             <el-col :span="4">发布人</el-col>
-            <el-col :span="20">{{detailInfo.owner_name}}</el-col>
+            <el-col :span="20"><wwOpenDAta type="userName" :openid="detailInfo.owner_name"></wwOpenDAta></el-col>
           </el-row>
 
           <el-row  v-if="detailInfo.task_file_list !== null && detailInfo.task_file_list.length !== 0">

+ 3 - 3
src/views/workbench/task/my_issue.vue

@@ -43,7 +43,7 @@
           <el-table-column label="执行人" prop="task_name" width='250px'>
             <template slot-scope="scope">
               <userImage class="fl" width="50px" height="50px" :id="scope.row.employee_id" :user_name="scope.row.employee_name"></userImage>
-              <span style="line-height: 50px; padding-left: 10px;">{{scope.row.employee_name}}的{{scope.row.pt_name}}任务</span>
+              <span style="line-height: 50px; padding-left: 10px;"><wwOpenDAta type="userName" :openid="scope.row.employee_name"></wwOpenDAta>的{{scope.row.pt_name}}任务</span>
             </template>
           </el-table-column>
           <el-table-column label="任务内容" prop="task_name">
@@ -155,8 +155,8 @@
           <el-table-column label="执行人" prop="target_info">
             <template slot-scope="scope">
               <span v-for="(item,index) in scope.row.target_info" :key="index">
-                <span v-if="scope.row.target_info.length == 1 && index == 0">{{item.name}}</span>
-                <span v-if="scope.row.target_info.length > 1 && index == 0">{{item.name}}等{{scope.row.target_info.length}}人</span>
+                <span v-if="scope.row.target_info.length == 1 && index == 0"><wwOpenDAta type="userName" :openid="item.name"></wwOpenDAta></span>
+                <span v-if="scope.row.target_info.length > 1 && index == 0"><wwOpenDAta type="userName" :openid="item.name"></wwOpenDAta>等{{scope.row.target_info.length}}人</span>
               </span>
             </template>
           </el-table-column>

BIN
static/images/APP.png


BIN
static/images/login300.png


Some files were not shown because too many files changed in this diff