哥哥玩剑魂呢 3 سال پیش
والد
کامیت
175bb6cf10
40فایلهای تغییر یافته به همراه461 افزوده شده و 211 حذف شده
  1. 2 2
      src/components/Steps.vue
  2. 3 1
      src/components/deptData.vue
  3. 4 1
      src/components/user_image.vue
  4. 44 34
      src/permission.js
  5. 24 18
      src/store/modules/user.js
  6. 4 0
      src/styles/index.scss
  7. 21 4
      src/utils/request.js
  8. 28 4
      src/views/common/EmployeeSelector.vue
  9. 1 0
      src/views/common/EmployeeSelector1.vue
  10. 48 36
      src/views/common/applicationIntegrationPopup.vue
  11. 13 4
      src/views/common/bonusPointsPopup.vue
  12. 7 0
      src/views/common/examinePopup.vue
  13. 2 2
      src/views/common/rewardTaskDetailsPopup.vue
  14. 8 1
      src/views/common/taskDetailsPopup.vue
  15. 2 2
      src/views/dashboard/index.vue
  16. 1 1
      src/views/integral/EmployeeTable.vue
  17. 63 23
      src/views/integral/rule/rule_category.vue
  18. 1 1
      src/views/layout/components/Navbar.vue
  19. 22 10
      src/views/login/index3.vue
  20. 14 1
      src/views/noAccess.vue
  21. 3 7
      src/views/setting/company_info.vue
  22. 9 7
      src/views/setting/fixed_integral.vue
  23. 8 8
      src/views/setting/set_role.vue
  24. 12 1
      src/views/statistics_new/dept_rank.vue
  25. 16 7
      src/views/statistics_new/individual_statistics.vue
  26. 16 3
      src/views/statistics_new/integral_event.vue
  27. 4 3
      src/views/statistics_new/integral_statistics.vue
  28. 2 2
      src/views/workbench/approval_list.vue
  29. 46 10
      src/views/workbench/grade/apply_list.vue
  30. 11 10
      src/views/workbench/grade/award_punish.vue
  31. 18 4
      src/views/workbench/task/get_task.vue
  32. 4 4
      src/views/workbench/task/my_task.vue
  33. BIN
      static/images/default5.png
  34. BIN
      static/images/gttx0.jpg
  35. BIN
      static/images/gttx1.jpg
  36. BIN
      static/images/gttx2.jpg
  37. BIN
      static/images/gttx3.jpg
  38. BIN
      static/images/gttx4.jpg
  39. BIN
      static/images/gttx5.jpg
  40. BIN
      static/images/vtRemewService.png

+ 2 - 2
src/components/Steps.vue

@@ -22,8 +22,8 @@
                     <span v-else>{{ item.remark }}</span>
                   </span>
                   <strong style="font-weight: 500;">
-                    <span class="red point" v-show="item.review_point > 0">+{{ item.review_point }}</span>
-                    <span class="green point" v-show="item.review_point < 0">{{ item.review_point }}</span>
+                    <span class="green point" v-show="item.review_point > 0">+{{ item.review_point }}</span>
+                    <span class="red point" v-show="item.review_point < 0">{{ item.review_point }}</span>
                   </strong>
                 </div>
                 <span class="fontColorF" style="font-size:12px;">{{ item.time }}</span>

+ 3 - 1
src/components/deptData.vue

@@ -29,7 +29,9 @@ export default {
   methods: {
     clickDept(refsNAme) {
         console.log(refsNAme)
-        refsNAme.dropDownVisible = true;
+        this.$nextTick(()=>{
+          refsNAme.dropDownVisible = true;
+        })
     }
   }
 };

+ 4 - 1
src/components/user_image.vue

@@ -108,7 +108,8 @@
         return "https://rescdn.qqmail.com/node/wwmng/wwmng/style/images/independent/DefaultAvatar$73ba92b5.png"
       },
       replaceImg(){
-        return 'static/images/gttx'+ Math.round(Math.random()*5) +'.jpg'
+        // return 'static/images/gttx'+ Math.round(Math.random()*5) +'.jpg'
+        return 'static/images/default5.png'
       },
     },
     // 组件挂载完成
@@ -132,6 +133,8 @@
     z-index: 1;
     text-align: center;
     color: #fff;
+    white-space:nowrap;
+    overflow: hidden;
   }
   .logo_img{
     border-radius: 50%;

+ 44 - 34
src/permission.js

@@ -28,43 +28,39 @@ function hasPermission(roles, permissionRoles) {
 }
 // 免登名单
 const whiteList = ['/invite_new_company', '/create_company', '/login', '/loginTransfer', '/noAccess', '/loginbytoken', '/reg', '/forgetPwd', '/resetPwd', '/android', '/demo', '/swiperShow', '/autoLogin'] // no redirect whitelist
-
+const stopPath = ['/login', '/noAccess']
 router.beforeEach((to, from, next) => {
   if (Vue.$httpRequestList.length > 0) { //强行中断时才向下执行
     Vue.$httpRequestList.forEach(item => {
       item('interrupt'); //给个标志,中断请求
     })
   }
-  
-  // NProgress.start()
-  if(cookGetToken()){
-    console.log('cookies 有 token')
-    console.log('localToken:')
-    console.log(getToken())
-    console.log('cookiesToken:')
-    console.log(cookGetToken())
-    if(getToken() !== cookGetToken()){
-      console.log('两个token不相等')
-      store.commit('SET_DELETE_USER', {})
-      store.commit('SET_TOKEN', cookGetToken())
-      localStorage.setItem('Admin-Token', cookGetToken())
-      console.log(getToken())
-      console.log(cookGetToken())
-      init(to, next)
-    }else{
+  if(stopPath.indexOf(to.path) !== -1){
+    next()
+  }else{
+    // NProgress.start()
+    if(cookGetToken()){
+      if(getToken() !== cookGetToken()){
+        store.commit('SET_DELETE_USER', {})
+        store.commit('SET_TOKEN', cookGetToken())
+        localStorage.setItem('Admin-Token', cookGetToken())
+        init(to, next)
+      }else{
+        init(to, next)
+      }
+      // localSetToken(cookGetToken())
+      // Cookies.remove('Admin-Token')
+    }else if (getToken()) {
+      if (!store.state.user.token) store.commit("SET_TOKEN", getToken());
       init(to, next)
-    }
-    // localSetToken(cookGetToken())
-    // Cookies.remove('Admin-Token')
-  }else if (getToken()) {
-    if (!store.state.user.token) store.commit("SET_TOKEN", getToken());
-    init(to, next)
-  } else {
-    if (whiteList.indexOf(to.path) !== -1 || window.location.href.indexOf('loginbytoken/') !== -1) { // 在免登录白名单,直接进入
-      next()
     } else {
-      next('/login') // 否则全部重定向到登录页
-      // NProgress.done()
+      if (whiteList.indexOf(to.path) !== -1 || window.location.href.indexOf('loginbytoken/') !== -1) { // 在免登录白名单,直接进入
+        next()
+      } else {
+        window.location.href = process.env.BASE_API//直接重新授权
+        // next('/login') // 否则全部重定向到登录页
+        // NProgress.done()
+      }
     }
   }
 })
@@ -80,13 +76,8 @@ function init(to, next) {
     })
     // NProgress.done()
   } else {
-    console.log(store.getters.user_info)
-    console.log('99999999999999999999')
     if (!store.getters.user_info.id) { // 判断当前用户是否已拉取完user_info信息
-      console.log('进判断')
       store.dispatch('GetUserInfo').then(res => { // 拉取user_info
-        console.log('拉取user_info成功')
-        console.log(res)
         // 设置title
         document.title = ''
         const mo_list = []
@@ -121,6 +112,25 @@ function init(to, next) {
           }) // hack方法 确保addRoutes已完成 ,set the replace: true so the navigation will not leave a history record
         })
       }).catch((err) => {
+        console.log('GetUserInfo-------------err')
+        if(getToken()){
+          next('/login')
+        }
+        // console.log(err)
+        // localStorage.clear()
+        // sessionStorage.clear()
+        // Cookies.remove('Admin-Token')
+        // if(err.code == 4444){
+        //   router.push({
+        //     path: '/noAccess',
+        //     query: {
+        //       msg: err.msg
+        //     }
+        //   })
+        // }
+        // return
+
+        
         // console.log(err)
         // 登出
         // store.dispatch('LogOut')

+ 24 - 18
src/store/modules/user.js

@@ -1,5 +1,6 @@
 import { loginByUsername, getUserInfo, loginByDemo, get_employee_map, get_point_types, get_site_info, get_dept_tree } from '@/api/login'
 import { getToken, setToken, removeToken, removeAllToken } from '@/utils/auth'
+import router from '@/router'
 const user = {
   state: {
     user: '',
@@ -86,10 +87,7 @@ const user = {
       state.site_info = data
     },
     SET_DELETE_USER (state, data) {
-      console.log('进SET_DELETE_USER')
       if(state) state = data
-      console.log(state)
-      console.log('出SET_DELETE_USER')
     },
   },
 
@@ -189,7 +187,6 @@ const user = {
         } else {
           get_site_info().then(response => {
             if (response.data.code == 1) {
-              // console.log(response);
               commit('SET_SITEINFO', response.data.data)
               localStorage.setItem('site_info', JSON.stringify(response.data.data))
               resolve(response.data.data)
@@ -204,24 +201,33 @@ const user = {
     // 获取用户信息
     GetUserInfo({ commit, state }) {
       return new Promise((resolve, reject) => {
-        console.log('-----------------')
-        console.log(state)
-        console.log(state.token)
-        console.log('-----------------')
         getUserInfo(state.token).then(response => {
           if (!response.data) {
             reject('error')
           }
-          const data = response.data
-          commit('SET_ROLES', ['admin'])
-          commit('SET_NAME', data.data.user.name)
-          commit('SET_AVATAR', data.data.user.img_url)
-          commit('SET_INTRODUCTION', '')
-          commit('SET_SITEID', data.data.user.site_id)
-          commit('SET_MANAGERTYPE', 4)
-          commit('SET_USERINFO', data.data.user)
-          commit('SET_SETTINGS', {})
-          resolve(response)
+          if(response.data.code == 1){
+            if(response.data.data.user.is_official == 0){
+              router.push({
+                path: '/noAccess',
+                query: {
+                  msg: '当前用户未授权进入系统,请联系管理员为您【启用积分管理】,<br/>如需咨询客服,请到您企业专属的功道云服务群咨询'
+                }
+              })
+              return
+            }
+            const data = response.data
+            commit('SET_ROLES', ['admin'])
+            commit('SET_NAME', data.data.user.name)
+            commit('SET_AVATAR', data.data.user.img_url)
+            commit('SET_INTRODUCTION', '')
+            commit('SET_SITEID', data.data.user.site_id)
+            commit('SET_MANAGERTYPE', 4)
+            commit('SET_USERINFO', data.data.user)
+            commit('SET_SETTINGS', {})
+            resolve(response)
+          }else{
+            reject(response.data)
+          }
         }).catch(error => {
           reject(error)
         })

+ 4 - 0
src/styles/index.scss

@@ -507,3 +507,7 @@ code {
   font-size: 20px;
   color: red;
 }
+
+.el-tooltip__popper{
+  max-width: 400px;
+}

+ 21 - 4
src/utils/request.js

@@ -77,6 +77,11 @@ service.interceptors.response.use(
       //   store.dispatch('LogOut');
       // })
       store.dispatch('LogOut');
+      window.location.href = process.env.BASE_API//直接重新授权
+      // Router.push({
+      //   path: '/login'
+      // })
+      // window.location.href = process.env.BASE_API;
       return Promise.reject('error')
     } else if (res.code === 0) {
       if (res.msg == '') {
@@ -111,14 +116,26 @@ service.interceptors.response.use(
       })
       return Promise.reject('error')
     }  else if(res.code === 4444){
-        // console.log(store.state)
-        store.state.user.pastDue = true
+      console.log(res)
         localStorage.clear()
         sessionStorage.clear()
-        removeAllToken()
+        console.log('requser:4444')
         Router.push({
-          path: '/login'
+          path: '/noAccess',
+          query: {
+            msg: res.msg
+          }
         })
+
+        // console.log(store.state)
+
+        // store.state.user.pastDue = true
+        // localStorage.clear()
+        // sessionStorage.clear()
+        // removeAllToken()
+        // Router.push({
+        //   path: '/login'
+        // })
         return Promise.reject('error')
     } else {
       // console.log('setToken')

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

@@ -82,7 +82,7 @@
                     <div class="employee_cell" @click.prevent.stop="select_employee(item)">
                       <div class="employee_checkbox"><el-checkbox v-model="item.checked"></el-checkbox></div>
                       <div class="employee_img_url" v-if="item.img_url && item.img_url != defaultImg()"><img :src="item.img_url" class="employee_cell_head_img" /></div>
-                      <div class="employee_img_url" v-else><img src="static/images/gttx1.jpg" class="employee_cell_head_img" /></div>
+                      <div class="employee_img_url" v-else><img src="static/images/default5.png" class="employee_cell_head_img" /></div>
                       <div class="employee_name">
                         <WWOpenData type="userName" :openid="item.name"></WWOpenData>
                         <!-- {{ item.name }} -->
@@ -114,7 +114,7 @@
               </div>
               <div class="employee_cell" v-for="(item, index) in employee_selected_list" :key="index">
                 <div class="employee_img_url" v-if="item.img_url && item.img_url != defaultImg()"><img :src="item.img_url" class="employee_cell_head_img" /></div>
-                <div class="employee_img_url" v-else><img src="static/images/head_default.png" class="employee_cell_head_img" /></div>
+                <div class="employee_img_url" v-else><img src="static/images/default5.png" class="employee_cell_head_img" /></div>
                 <div class="employee_name">
                   <WWOpenData type="userName" :openid="item.name"></WWOpenData>
                   <!-- {{ item.name }} -->
@@ -235,6 +235,11 @@ export default {
       type: Boolean,
       default: false
     },
+    is_superior: {
+      //是否只显示上级
+      type: Boolean,
+      default: false
+    },
     include_self: {
       //是否显示自己
       type: Boolean,
@@ -285,6 +290,9 @@ export default {
       this.visible_ = JSON.parse(JSON.stringify(val));
       if (val) {
         setTimeout(() => {
+          this.toPdept1 = 0
+          this.dept_select_id = 0
+          this.dept_id = []
           this.get_user_list();
           this.get_dept_list();
         }, 200);
@@ -527,6 +535,9 @@ export default {
     },
     //关闭||清空数据
     close() {
+      this.toPdept1 = 0
+      this.dept_select_id = 0
+      this.dept_id = []
       this.$emit('update:visible', false);
       this.$refs.dept1.dropDownVisible = false;
       if (this.close_clear_data) {
@@ -622,7 +633,7 @@ export default {
           }
         }
         if (item.img_url == '') {
-          item.img_url = 'static/images/head_default.png';
+          item.img_url = 'static/images/default5.png';
         }
       });
       this.searchBox = data;
@@ -636,7 +647,8 @@ export default {
         keywords: this.keyword,
         page: 0,
         page_size: 2000,
-        child:this.child? '1':'0'
+        child:this.child? '1':'0',
+        is_official: 1
       }
       this.$http('get', '/api/employee/index', params)
         .then(res => {
@@ -690,6 +702,18 @@ export default {
         });
         list = managerList;
       }
+      //只显示上级
+      // if (this.is_superior) {
+      //   let isManager = [];
+      //   list.some(item => {
+      //     if(item.id == this.$store.getters.user_info.id){
+      //       isManager = item.employee_detail.superior_list
+      //       return true
+      //     }
+      //   });
+      //   console.log(isManager)
+      //   list = isManager;
+      // }
       // 过滤自己
       if (!this.include_self) {
         const currUserId = this.$store.getters.user_info.id;

+ 1 - 0
src/views/common/EmployeeSelector1.vue

@@ -441,6 +441,7 @@ export default {
         keywords: this.keyword,
         page: 0,
         page_size: 2000,
+        is_official: 1
       }
       this.list = [];
       this.$http('get', '/api/employee/index', params).then(res => {

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

@@ -83,7 +83,7 @@
             <el-form-item label="事件内容" :prop="'items.'+ index +'.remark'" :rules="[{ required: true, message: '请输入事件内容', trigger: 'blur' },{ min: 3, max: 100, message: '长度在 3 到 100 个字符', trigger: 'blur' }]">
               <el-row>
                 <el-col :span="18">
-                  <el-input type="textarea" rows="6" placeholder="请输入事件内容" style="width: 100%;" v-model="item.remark"></el-input>
+                  <el-input type="textarea" rows="6" placeholder="请输入事件内容(限100字)" style="width: 100%;" v-model="item.remark"></el-input>
                 </el-col>
               </el-row>
             </el-form-item>
@@ -133,8 +133,10 @@
                 :multi="false"
                 :isChecKedAll="false"
                 :is_filtration_creator="false"
+
                 :user_employee_list="true"
                 :employee_list="item.approval_employee_list"
+
                 :selected="item.approval_selected"
                 :visible.sync="item.show_approval_selector"
                 @confirm="approval_confirm"
@@ -185,6 +187,7 @@
   import EmployeeSelector from '@/views/common/EmployeeSelector'
   import uploadOss from "@/views/upload_oss/upload"
   import { getToken } from '@/utils/auth'
+  import { get_employee_map } from '@/api/login'
 
   export default {
     name: 'applicationIntegration',
@@ -261,12 +264,29 @@
         user_info: null,
         employee_map: JSON.parse(localStorage.getItem('SET_EMPLOYEE_MAP')),
         point_types: JSON.parse(localStorage.getItem('SET_POINT_TYPES')),
-        btn_loading: false
+        btn_loading: false,
+
+        user_list: [],
       }
     },
     components: {EmployeeSelector,uploadOss},
     watch:{},
     mounted() {
+      get_employee_map().then(response => {
+        if (response.data.code == 1) {
+          const data = {}
+          for (const i in response.data.data.list) {
+            data[response.data.data.list[i].id] = response.data.data.list[i]
+          }
+          if (window.plus) {
+            plus.storage.setItem('SET_EMPLOYEE_MAP', JSON.stringify(data))
+          } else {
+            localStorage.setItem('SET_EMPLOYEE_MAP', JSON.stringify(data))
+          }
+          this.employee_map = data
+        }
+      })
+
       this.getRuleItemData()
       this.user_info = this.$store.getters.user_info
       this.point_types = JSON.parse(localStorage.getItem('SET_POINT_TYPES'))
@@ -420,7 +440,7 @@
           approvalName: '',
           approval_not_select: [],
           approval_employee_id:0,//当前选中人的直属上级。0表示没有直属上级
-          approval_employee_list: [],
+          approval_employee_list: this.user_info.employee_detail.superior_list,
           approval_selected: {dept: [],employee:[]},
           show_approval_selector: false,
 
@@ -534,44 +554,36 @@
       },
       // 初始化审核人
       initializesReviewer(list,index,bool){
+
         const superior = list || this.user_info.employee_detail.superior_list
         const num = index || 0
         const item = this.dialogData.items[num]
         item.approval_employee_list = [...superior]
-        if (superior.length !== 0) {
-          if(bool){
-            item.approval_employee_id = this.user_info.employee_detail.superior_id//直属上级(这里是第一个,默认为当前登录人)
-          }
-
-          // if (!list) {
-            //this.user_info.employee_detail 当前登录账号信息
-            // item.approval_employee_id = this.user_info.employee_detail.superior_id//直属上级(这里是第一个,默认为当前登录人)
-            // item.approval_employee_list = [...superior]//上级列表(这里是第一个,默认为当前登录人)
-          // }else{
-            // item.approval_employee_list = [...superior]
-          // }
-
-          if(item.approval_employee_id != 0){//判断有无直属上级
-            for(let a in item.approval_employee_list){
-              if(item.approval_employee_id == item.approval_employee_list[a].id){
-                item.approval_employee_list[a].direct_Supervisor = true//一个字段,是直属上级的字段,为true
-              }
-            }
-            for(let i in superior){
-                if(item.approval_employee_id == superior[i].id){
-                  item.approval_selected.employee = [{id: superior[i].id ,img_url: superior[i].img_url,name: superior[i].name}]
-                  item.reviewer_id = superior[i].id
-                  item.approvalName = superior[i].name//审批人
-                }
-            }
-          }else{
-            // 拿取列表最后一个的数据,没有筛选
-            item.approval_selected.employee = [{id: superior[superior.length - 1].id ,img_url: superior[superior.length - 1].img_url,name: superior[superior.length - 1].name}]
-            item.reviewer_id = superior[superior.length - 1].id//审批人id
-            item.approvalName = superior[superior.length - 1].name//审批人name
-          }
+        // if (superior.length !== 0) {
+        //   if(bool){
+        //     item.approval_employee_id = this.user_info.employee_detail.superior_id//直属上级(这里是第一个,默认为当前登录人)
+        //   }
+        //   if(item.approval_employee_id != 0){//判断有无直属上级
+        //     for(let a in item.approval_employee_list){
+        //       if(item.approval_employee_id == item.approval_employee_list[a].id){
+        //         item.approval_employee_list[a].direct_Supervisor = true//一个字段,是直属上级的字段,为true
+        //       }
+        //     }
+        //     for(let i in superior){
+        //         if(item.approval_employee_id == superior[i].id){
+        //           item.approval_selected.employee = [{id: superior[i].id ,img_url: superior[i].img_url,name: superior[i].name}]
+        //           item.reviewer_id = superior[i].id
+        //           item.approvalName = superior[i].name//审批人
+        //         }
+        //     }
+        //   }else{
+        //     // 拿取列表最后一个的数据,没有筛选
+        //     item.approval_selected.employee = [{id: superior[superior.length - 1].id ,img_url: superior[superior.length - 1].img_url,name: superior[superior.length - 1].name}]
+        //     item.reviewer_id = superior[superior.length - 1].id//审批人id
+        //     item.approvalName = superior[superior.length - 1].name//审批人name
+        //   }
           
-        }
+        // }
       },
       // 选择审核人
       approval_confirm(data){

+ 13 - 4
src/views/common/bonusPointsPopup.vue

@@ -102,7 +102,7 @@
             <el-form-item label="事件内容" :prop="'items.'+ index +'.remark'" :rules="[{ required: true, message: '请输入事件内容', trigger: 'blur' },{ min: 3, max: 100, message: '长度在 3 到 100 个字符', trigger: 'blur' }]">
               <el-row>
                 <el-col :span="18">
-                  <el-input type="textarea" rows="6" placeholder="请输入事件内容" style="width: 100%;" v-model="item.remark"></el-input>
+                  <el-input type="textarea" rows="6" placeholder="请输入事件内容(限100字)" style="width: 100%;" v-model="item.remark"></el-input>
                 </el-col>
               </el-row>
             </el-form-item>
@@ -317,9 +317,14 @@
     mounted() {
       this.point_types = JSON.parse(localStorage.getItem('SET_POINT_TYPES'))
       this.employee_list = this.$store.getters.user_info.employee_detail.manage_scope
-      console.log('this.employee_list')
-      console.log(this.employee_list)
       this.employee_lists = this.$store.getters.user_info.employee_detail.superior_list
+      //刷新当前角色下级上级
+      this.$http('get', '/api/employee/detail')
+        .then(res => {
+          let list = res.data.data.user
+          this.employee_list = list.employee_detail.manage_scope
+          this.employee_lists = list.employee_detail.superior_list
+        })
     },
     methods: {
       // 20200831 图片上传 未完成
@@ -651,7 +656,11 @@
               ){
                 data.items.push({rule_id: element.rule_id || 0, item_id: element.item_id || 0, point: element.point, remark: element.remark, event_time: element.event_time, pt_id: self.ptid, reviewer_id: element.reviewer_id || 0, files: element.files})
               }else{
-                this.$message.error('第'+ (index+1) +'条输入积分分值超出权限,请选择审批人递交');
+                if(element.point == 0){
+                  this.$message.error('积分不能为0');
+                }else{
+                  this.$message.error('第'+ (index+1) +'条输入积分分值超出权限,请选择审批人递交');
+                }
                 throw new Error()
               }
             })

+ 7 - 0
src/views/common/examinePopup.vue

@@ -282,6 +282,7 @@
 
           <EmployeeSelector
             :is_filtration_creator="false"
+            :is_superior="true"
             :user_employee_list="true"
             :employee_list="employee_lists"
             :multi="false"
@@ -411,6 +412,12 @@ export default {
     this.getRuleItem();
     this.getRuleItemTree();
     this.employee_lists = this.$store.getters.user_info.employee_detail.superior_list
+    //刷新当前角色上级
+    this.$http('get', '/api/employee/detail')
+      .then(res => {
+        let list = res.data.data.user
+        this.employee_lists = list.employee_detail.superior_list
+      })
   },
   methods: {
     cascaderItemIdChange(val) {

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

@@ -10,7 +10,7 @@
               <userImage style="margin-right: 15px;" width="50px" height="50px" class="fl" :id="workDetailData.owner_id" :user_name="workDetailData.owner_name" :img_url="workDetailData.owner_img_url"></userImage>
               <div>
                 <div style="line-height: 25px;">我悬赏的{{get_point_name(workDetailData.pt_id)}}任务    {{workDetailData.point_config.base_point}}{{get_point_name(workDetailData.pt_id)}}</div>
-                <div style="color: #909399; line-height: 25px;"><b>{{workDetailData.receiver_name}}</b> {{workDetailData.status_mark}}</div>
+                <div style="color: #909399; line-height: 25px;"><b><WWOpenData type="userName" :openid="workDetailData.receiver_name"></WWOpenData></b> {{workDetailData.status_mark}}</div>
               </div>
             </div>
           </el-col>
@@ -23,7 +23,7 @@
           </li>
           <li class="flex-box" v-if="workDetailData.status==2 && workDetailData.receiver_id != 0 ">
             <div class="label">领取人</div>
-            <div class="content_text">{{workDetailData.receiver_name}}</div>
+            <div class="content_text"><WWOpenData type="userName" :openid="workDetailData.receiver_name"></WWOpenData></div>
           </li>
           <li class="flex-box" v-if="workDetailData.status==3 && workDetailData.receiver_id != 0">
             <div class="label">完成人</div>

+ 8 - 1
src/views/common/taskDetailsPopup.vue

@@ -7,7 +7,14 @@
         <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><WWOpenData type="userName" :openid="workDetailData.employee_name"></WWOpenData></div>
+            <div class="flex-box">
+              <div><WWOpenData type="userName" :openid="workDetailData.employee_name"></WWOpenData></div>
+              <div v-if="workDetailData.review_status" style="margin-left: 8px;">
+                <div class="yellow" v-if="workDetailData.review_status == 0">待处理</div>
+                <div class="green" v-if="workDetailData.review_status ==1">已通过</div>
+                <div class="red" v-if="workDetailData.review_status == 2">已驳回</div>
+              </div>
+            </div>
             <div v-if="detailType != 2 && workDetailData.dept_list[0]">{{workDetailData.dept_list[0].dept_name}}</div>
           </div>
           <!-- 为了在抽屉打开之后获取焦点 -->

+ 2 - 2
src/views/dashboard/index.vue

@@ -237,7 +237,7 @@
       <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>
+            <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;">
@@ -415,7 +415,7 @@
 		<el-dialog :visible.sync="innerVisible" width="400px" append-to-body class="innerVisible">
         <p style="font-size:21px;">续费/升级</p>
         <p style="margin:0;">请在功道云积分服务群中联系客服顾问或微信扫码添加功道云客服进行续费</p>
-        <img src="/static/images/lADPBG1Q6uyvMTLNAa7NAa4_430_430.jpg" style="width:100%">
+        <img src="/static/images/vtRemewService.png" style="width:100%">
         <p style="font-size:20px;">电话咨询:400-6877-880</p>
 		</el-dialog>
 </div>

+ 1 - 1
src/views/integral/EmployeeTable.vue

@@ -77,7 +77,7 @@
 							<template slot-scope="scope">
 								<div class="" style="">
 									<span v-for="(item, index) in scope.row.employee_detail.dept_list" :key="index">
-                    <WWOpenData type="departmentName" :openid="item.depart_name"></WWOpenData><span v-if="(scope.row.employee_detail.dept_list.length-index)>1">,</span>
+                    <div v-if="item.depart_id !== 1"><WWOpenData type="departmentName" :openid="item.depart_name"></WWOpenData><span v-if="(scope.row.employee_detail.dept_list.length-index)>1">,</span></div>
                   </span>
 								</div>
 							</template>

+ 63 - 23
src/views/integral/rule/rule_category.vue

@@ -64,8 +64,8 @@
             <el-table-column prop="remark" label="内容" width="500" style="padding-right:30px;"></el-table-column>
             <el-table-column label="分值">
               <template slot-scope="scope">
-                <div v-if="scope.row.range_type == 1"><span :class="scope.row.min_point > 0?'color_red':'color_green'"> {{scope.row.min_point}} </span> {{types_list[scope.row.pt_id]}} </div>
-                <div v-if="scope.row.range_type == 2"><span :class="scope.row.min_point > 0?'color_red':'color_green'"> {{scope.row.min_point}} </span> 至 <span :class="scope.row.max_point > 0?'color_red':'color_green'"> {{scope.row.max_point}} </span> {{types_list[scope.row.pt_id]}} </div>
+                <div v-if="scope.row.range_type == 1"><span :class="scope.row.min_point > 0?'color_green':'color_red'"> {{scope.row.min_point}} </span> {{types_list[scope.row.pt_id]}} </div>
+                <div v-if="scope.row.range_type == 2"><span :class="scope.row.min_point > 0?'color_green':'color_red'"> {{scope.row.min_point}} </span> 至 <span :class="scope.row.max_point > 0?'color_green':'color_red'"> {{scope.row.max_point}} </span> {{types_list[scope.row.pt_id]}} </div>
               </template>
             </el-table-column>
           </el-table>
@@ -356,7 +356,11 @@
         save_loading: false,
         import_btn_show: false,
         fileList: [],
-        file: null
+        file: null,
+
+        ruleTreeList: [],//规则分类列表
+        ruleTree_pid: [],//上级分类Pid
+        itemRule_id: [],//所属分类rule_id
       }
     },
     watch: {
@@ -800,7 +804,7 @@
               if(self.dept_formdata.pid.length>0){
                 self.dept_formdata.pid = self.dept_formdata.pid[self.dept_formdata.pid.length - 1] || 0
               }else{
-                self.dept_formdata.pid = 0
+                self.dept_formdata.pid = 0;
               }
               self.dept_formdata.rule_id = self.dept_formdata.id
               this.$http('put','/api/integral/rule', self.dept_formdata).then((res) => {
@@ -835,13 +839,29 @@
         this.class_show = false
         this.$refs[form].resetFields()
       },
+      ruleTree_list(rule){
+        rule.forEach((item)=>{
+          this.ruleTreeList.push({
+            id: item.id,
+            pid: item.pid
+          })
+          if(item.child.length > 0){
+            this.ruleTree_list(item.child)
+          }
+        })
+      },
       get_department_list(done) {
         this.dept_loading = true
         this.$http('get','/api/integral/rule/trees',{cycle_type: '1',keyword:this.keyword}).then((res) => {
           this.dept_list = res.data.data.rule_tree
-          console.log(this.dept_list)
+          //展开多维数组分类rule_tree。
+          this.ruleTreeList = []
+          this.ruleTree_list(res.data.data.rule_tree)
+
           this.rule_category_list = []
           this.item_list = res.data.data.item_list
+
+
           this.parse_tree(this.dept_list, this.pid)
           if (this.pid > 0) {
             this.list = this.cur_item_list
@@ -913,11 +933,36 @@
           cycle_type: '1'
         }
       },
+      //递归寻找当前点击的所有上级id。
+      ruleTree_data(id,ifs){
+        let that = ifs ? this.ruleTree_pid : this.itemRule_id
+        let list = this.ruleTreeList
+        that.unshift(id)
+        list.some((item)=>{
+          if(item.id == id){
+            if(item.pid > 0){
+              this.ruleTree_data(item.pid,ifs)
+            }else{
+              if(ifs){
+                this.dept_formdata.pid = that
+              }else{
+                this.rules_detail_form.rule_id = that
+              }
+              return true
+            }
+          }
+        })
+      },
       edit_class() {
+        this.dept_formdata = JSON.parse(JSON.stringify(this.class_item))
+        //整合上级分类格式变为可选中状态 Pid。让上级分类变为选中
+        this.ruleTree_pid = []
+        if(this.dept_formdata.pid > 0){
+          this.ruleTree_data(this.dept_formdata.pid,true)
+        }
+
         this.class_show = true
         this.class_type = 'edit'
-        this.dept_formdata = JSON.parse(JSON.stringify(this.class_item))
-        console.log(this.dept_formdata)
       },
       handleSelectionChange(val) {
         this.del_item_id = []
@@ -978,7 +1023,6 @@
         }).catch(() => {});
       },
       cascader_close(val){
-        console.log(val)
         // let rule_ids = '';
         // for(let i in val){
         //   rule_ids = val[i]
@@ -1050,6 +1094,7 @@
                 let data = {
                   items: [self.rules_detail_form]
                 }
+                if(typeof data.items[0].rule_id == 'object') data.items[0].rule_id = data.items[0].rule_id[data.items[0].rule_id.length - 1]
                 this.$http('post','/api/integral/rule/items', data).then((res) => {
                   if (res.data.code == 1) {
                     self.$message.success(res.data.msg)
@@ -1072,6 +1117,7 @@
               let data = {
                 items: [self.rules_detail_form]
               }
+              if(typeof data.items[0].rule_id == 'object') data.items[0].rule_id = data.items[0].rule_id[data.items[0].rule_id.length - 1]
               this.$http('post','/api/integral/rule/items', data).then((res) => {
                 if (res.data.code == 1) {
                   self.$message.success(res.data.msg)
@@ -1116,7 +1162,6 @@
                 self.rules_detail_form.max_point = min_point
                 // let data = self.rules_detail_form
                 let datas = self.rules_detail_form
-                console.log(datas)
                 let data = {}
                 for(let key in datas){
                   data[key] = datas[key]
@@ -1127,11 +1172,6 @@
                   return false
                 }
                 if(typeof datas.rule_id == 'object') data.rule_id = datas.rule_id[datas.rule_id.length - 1]
-                console.log(data.rule_id)
-                
-                console.log(data)
-                console.log(self.rules_detail_form)
-                return
                 this.$http('put','/api/integral/rule/items', data).then((res) => {
                   if (res.data.code == 1) {
                     self.$message.success(res.data.msg)
@@ -1150,7 +1190,6 @@
               // let data = self.rules_detail_form
               
               let datas = self.rules_detail_form
-                console.log(datas)
               let data = {}
               for(let key in datas){
                 data[key] = datas[key]
@@ -1161,13 +1200,6 @@
                 return false
               }
               if(typeof datas.rule_id == 'object') data.rule_id = datas.rule_id[datas.rule_id.length - 1]
-                console.log(data.rule_id)
-                
-                console.log(data)
-                console.log(self.rules_detail_form)
-
-                console.log(this.cur_item_list)
-                return
               this.$http('put','/api/integral/rule/items', data).then((res) => {
                 if (res.data.code == 1) {
                   self.$message.success(res.data.msg)
@@ -1187,10 +1219,18 @@
         })
       },
 
+
       editDetails(val) {
+        this.rules_detail_form = JSON.parse(JSON.stringify(val))
+        //整合上级分类格式变为可选中状态 rule_id。让所属分类变为选中
+        this.itemRule_id = []
+        if(this.rules_detail_form.rule_id > 0){
+          this.ruleTree_data(this.rules_detail_form.rule_id)
+        }
+
+
         this.rule_show = true
         this.rule_type = 'edit'
-        this.rules_detail_form = JSON.parse(JSON.stringify(val))
         if(this.rules_detail_form.min_point == this.rules_detail_form.max_point){
           this.rules_detail_form.range_type = '1'
         }else{

+ 1 - 1
src/views/layout/components/Navbar.vue

@@ -279,7 +279,7 @@
           {
             name: '更有效地做好积分激励和认可,你还可以设置以下2项',
             item: [
-              {icon: 'set_basics_icon',name: '初始分',push: '/set_basics'},
+              {icon: 'set_basics_icon',name: '基础设置',push: '/set_basics'},
               // {icon: '',name: '考勤积分',push: ''},
               {icon: 'fixed_integral_icon',name: '自动积分',push: '/fixed_integral'},
             ],

+ 22 - 10
src/views/login/index3.vue

@@ -46,27 +46,39 @@ export default {
      console.log('登录页');
      console.log(cookGetToken());
     if (cookGetToken()) {
-      this.$store.commit("SET_TOKEN", token);
+      this.$store.commit("SET_TOKEN", cookGetToken());
       localStorage.setItem(
         "Experience_data",
         JSON.stringify({ if: false, name: "" })
       );
       console.log(cookGetToken());
-      // this.$http("get", process.env.BASE_API + "/api/employee/detail").then(
-      //   res => {
-      //     if (res.data.code == 1) {
-      //       console.log(res);
-      //     }
-      //   }
-      // );
-      wxAuth(true);
+      this.detalext(1)
     }else{
       console.log('无Token')
       window.location.href = process.env.BASE_API;//重新授权
     }
   },
   mounted() {},
-  methods: {},
+  methods: {
+    detalext(add){
+      this.$http("get", process.env.BASE_API + "/api/employee/detail").then(
+        res => {
+          if (res.data.code == 1) {
+            if(res.data.data.user.is_official == 0){
+              this.$router.push({
+                path: '/noAccess',
+                query: {
+                  msg: '当前用户未授权进入系统,请联系管理员为您【启用积分管理】,<br/>如需咨询客服,请到您企业专属的功道云服务群咨询'
+                }
+              })
+            }else if(add == 1){
+              wxAuth(true);
+            }
+          }
+        }
+      );
+    },
+  },
   destroyed() {
     localStorage.setItem("login_code", "0");
   }

+ 14 - 1
src/views/noAccess.vue

@@ -2,12 +2,25 @@
 	<div class="noData flex-box flex-center-center">
 		<img  src="/static/images/APP.png" class="appImg"/>
 		<div>
-			<div>当前用户未授权进入系统,请联系管理员为您【启用积分管理】,<br/>如需咨询客服,请到您企业专属的功道云服务群咨询</div>
+			<!-- <div>当前用户未授权进入系统,请联系管理员为您【启用积分管理】,<br/>如需咨询客服,请到您企业专属的功道云服务群咨询</div> -->
+			<div v-if="$route.query.msg" v-html="$route.query.msg"></div>
 		</div>
 	</div>
 </template>
 
 <script>
+	import Cookies from 'js-cookie'
+	export default {
+		data() {
+			
+		},
+		created(){
+			console.log('错误页:noAccess')
+			localStorage.clear()
+			sessionStorage.clear()
+			Cookies.remove('Admin-Token')
+		},
+	}
 </script>
 
 <style scoped="scoped">

+ 3 - 7
src/views/setting/company_info.vue

@@ -37,28 +37,24 @@
             <div v-if="pastdueDate" style="color:#ff880e;">{{pastdueDate}}&nbsp;&nbsp;&nbsp;<a class="vtRenew" @click="innerVisible=true">立即续费>></a> </div>
           </el-form-item>
 
-          <el-form-item label="文化墙">
-            <!-- 添加组件 -->
+          <!-- <el-form-item label="文化墙">
             <image-cropper v-loading="company_img_loading" field="file" :width="750" :height="240" :url="'https://'+'integralsys.oss-cn-shenzhen.aliyuncs.com'"
               @close='company_img_bannerShow = false' @crop-upload-success="company_img_banner" langType="zh" :key="imagecropperKey" :noCircle="true"
               v-show="company_img_bannerShow"></image-cropper>
-              <!-- 添加按钮 -->
             <i slot="default" @click="uploadSectionFileClick" class="el-icon-plus elIconPlus"></i>
           </el-form-item>
 
           <el-form-item label="">
-            <!-- 修改组件 -->
             <image-cropper v-loading="company_img_loading" field="file" :width="750" :height="240" :url="'https://'+'integralsys.oss-cn-shenzhen.aliyuncs.com'"
               @close='company_img_bannerAmendShow = false' @crop-upload-success="company_img_bannerAmend" langType="zh" :key="imagecropperKey" :noCircle="true"
               v-show="company_img_bannerAmendShow"></image-cropper>
-            <!-- 图片列表 -->
             <div style="display:flex;">
               <div v-for="(item,index) in ad_url_list" :key="index" class="adUrlList" style="">
                   <img :src="item" class="ad_url_listImage" style="" @click.stop="amendFileClick(index)">
                   <i slot="default" @click.stop="deletead_url_list(index)" class="el-icon-close elIconCloseX" style=""></i>
               </div>
             </div>
-          </el-form-item>
+          </el-form-item> -->
 
           <!-- <el-form-item>
             <el-button type="primary" @click="site_sub('site_info')">保存</el-button>
@@ -151,7 +147,7 @@
 		<el-dialog :visible.sync="innerVisible" width="400px" append-to-body class="innerVisible">
         <p style="font-size:21px;">续费/升级</p>
         <p style="margin:0;">请在功道云积分服务群中联系客服顾问或微信扫码添加功道云客服进行续费</p>
-        <img src="/static/images/lADPBG1Q6uyvMTLNAa7NAa4_430_430.jpg" style="width:100%">
+        <img src="/static/images/vtRemewService.png" style="width:100%">
         <p style="font-size:20px;">电话咨询:400-6877-880</p>
 		</el-dialog>
   </div>

+ 9 - 7
src/views/setting/fixed_integral.vue

@@ -153,17 +153,18 @@
                   <span class="fl">
                     <userImage
                       :id="scope.row.employee_id"
+                      :img_url="scope.row.img_url"
                       width="50px"
                       height="50px"
-                      :user_name="scope.row.employee.name"
-                      v-if="scope.row.employee"
+                      :user_name="scope.row.name"
+                      v-if="scope.row"
                     ></userImage>
                   </span>
                   <span
                     style="margin-left: 10px; line-height: 50px; display: inline-block"
-                    v-if="scope.row.employee"
+                    v-if="scope.row.name"
                   >
-                  <WWOpenData type="userName" :openid="scope.row.employee.name"></WWOpenData>
+                  <WWOpenData type="userName" :openid="scope.row.name"></WWOpenData>
                   </span>
                 </template>
               </el-table-column>
@@ -222,7 +223,7 @@
     <el-dialog
       :title="rules_detail_title"
       :visible.sync="rules_detail_show"
-      width="500px"
+      width="532px"
       :close-on-click-modal="false"
       @close="rules_detail_close('rules_detail_form')"
     >
@@ -320,6 +321,7 @@
           
           <EmployeeSelector1
             :max="add_employee_max"
+            :is_filtration_creator="true"
             :visible.sync="add_employee_visible"
             @confirm="add_employee_confirm"
             ref="Employee"
@@ -480,8 +482,8 @@ export default {
             trigger: "blur",
           },
           {
-            max: 100,
-            message: "分类名称不能大于100个字",
+            max: 50,
+            message: "分类名称不能大于50个字",
             trigger: "blur",
           },
         ],

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

@@ -245,9 +245,9 @@
             </el-col>
           </el-row>
         </el-tab-pane>
-        <el-tab-pane label="设置直属上级" name="second">
+        <!-- <el-tab-pane label="设置直属上级" name="second">
           <ApproverSet></ApproverSet>
-        </el-tab-pane>
+        </el-tab-pane> -->
       </el-tabs>
     </el-row>
 
@@ -516,14 +516,14 @@
 
     <!-- 导出员工 -->
     <el-dialog
-      title="导出/修改部门管理信息"
+      title="导出/修改部门管理信息"
       width="600px"
       :visible.sync="exportEmploye"
       :close-on-click-modal="false"
       :before-close="close_export">
       <div style="float: left;width:49%">
         <div style="margin-left: 20%;">
-        <p>1.导出部门管理信息</p>
+        <p>1.导出部门管理信息</p>
             <el-button type="primary" plain @click="downloadSheet">导出</el-button>
         </div>
       </div>
@@ -531,9 +531,9 @@
 
       <div style="float: left;width:49%;">
         <div style="margin-left: 20%;">
-        <p>2.修改部门管理信息</p>
-        <p>导出部门管理信息表进行修改</p>
-        <p>上传修改好的部门管理信息表</p>
+        <p>2.修改部门管理信息</p>
+        <p>导出部门管理信息表进行修改</p>
+        <p>上传修改好的部门管理信息表</p>
 
           <el-upload
             :limit = '1'
@@ -673,7 +673,7 @@
         // 除员工外权限范围数据
         dataAccessList: [
           {
-            title: '查看积分事件',
+            title: '积分事件',
             name: 'event_range',
             code: 0,
             list: [

+ 12 - 1
src/views/statistics_new/dept_rank.vue

@@ -846,7 +846,7 @@ export default {
     getEmployeeList() {
       let self = this;
       self
-        .$http("get", "/api/employee/list", { dept_id: self.formData.dept_id })
+        .$http("get", "/api/employee/index", { dept_id: self.formData.dept_id,is_official: 1,page_size: 2000,page: 0,	})
         .then(res => {
           if (res.data.code == 1) {
             this.employee_map = res.data.data.list;
@@ -855,6 +855,16 @@ export default {
           }
         })
         .finally(() => {});
+      // self
+      //   .$http("get", "/api/employee/list", { dept_id: self.formData.dept_id })
+      //   .then(res => {
+      //     if (res.data.code == 1) {
+      //       this.employee_map = res.data.data.list;
+      //     } else {
+      //       self.$message.error(res.data.data.msg);
+      //     }
+      //   })
+      //   .finally(() => {});
     },
     downloadResult() {
       if (this.deriveJobIf < 5) {
@@ -1006,6 +1016,7 @@ export default {
     }
   },
   mounted() {
+    this.getEmployeeList()
     this.tips_show = JSON.parse(localStorage.getItem("dept_rank_tips"))
       ? false
       : true;

+ 16 - 7
src/views/statistics_new/individual_statistics.vue

@@ -439,15 +439,24 @@ export default {
     },
   },
   mounted() {
-    if(JSON.parse(localStorage.getItem("SET_EMPLOYEE_MAP"))){
-      this.employee_map = JSON.parse(localStorage.getItem("SET_EMPLOYEE_MAP"))
-    }else{
-      this.$store.dispatch('get_employee_map').then((res) => {
-        this.$nextTick(() => {
-          this.employee_map = JSON.parse(localStorage.getItem("SET_EMPLOYEE_MAP"))
-        })
+    this.$http("get", "/api/employee/index", { is_official: 1,page_size: 2000,page: 0,	})
+      .then(res => {
+        if (res.data.code == 1) {
+          this.employee_map = res.data.data.list;
+        }
       })
+    if(!this.employee_map){
+      this.employee_map = JSON.parse(localStorage.getItem("SET_EMPLOYEE_MAP"))
     }
+    // if(JSON.parse(localStorage.getItem("SET_EMPLOYEE_MAP"))){
+    //   this.employee_map = JSON.parse(localStorage.getItem("SET_EMPLOYEE_MAP"))
+    // }else{
+    //   this.$store.dispatch('get_employee_map').then((res) => {
+    //     this.$nextTick(() => {
+    //       this.employee_map = JSON.parse(localStorage.getItem("SET_EMPLOYEE_MAP"))
+    //     })
+    //   })
+    // }
     if(this.$store.getters.user_info){
       this.personnel = this.$store.getters.user_info
       let dept_li = this.personnel.employee_detail.dept_list

+ 16 - 3
src/views/statistics_new/integral_event.vue

@@ -121,7 +121,7 @@
         </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>
+            <span :class="scope.row.point < 0 ? 'color_red' : 'color_green'">{{ scope.row.point_mark }} {{ point_name(scope.row.pt_id) }}</span>
           </template>
         </el-table-column>
         <el-table-column prop="remark" show-overflow-tooltip label="事件" align="left"></el-table-column>
@@ -168,11 +168,16 @@
           <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;"><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>
+            <span class="color_green point" v-show="detail_info.point >= 0">+{{ detail_info.point }} {{ point_name(detail_info.pt_id) }}</span>
+            <span class="color_red point" v-show="detail_info.point < 0">{{ detail_info.point }} {{ point_name(detail_info.pt_id) }}</span>
           </el-col>
         </el-row>
 
+        <el-row v-show="detail_info.event_type_mark">
+          <el-col :span="4">事件分类</el-col>
+          <el-col :span="20">{{ detail_info.event_type_mark }}</el-col>
+        </el-row>
+
         <el-row>
           <el-col :span="4">任务描述</el-col>
           <el-col :span="20" v-if="detail_info.remark">{{ detail_info.remark && (detail_info.remark.customize || detail_info.remark.rule) }}</el-col>
@@ -421,6 +426,14 @@ export default {
   components: { noData, Steps},
   created() {},
   mounted() {
+    this.$http("get", "/api/employee/index", { is_official: 1,page_size: 2000,page: 0,	})
+      .then(res => {
+        if (res.data.code == 1) {
+          this.employee_map = res.data.data.list;
+        }
+      })
+      .finally(() => {});
+
     if (localStorage.getItem('dept_tree')) {
       this.dept_tree = this.getTreeData(JSON.parse(localStorage.getItem('dept_tree')));
     }

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

@@ -8,6 +8,7 @@
             type="month"
             placeholder="请选择月份"
             value-format="yyyy-MM"
+            :clearable="false"
           ></el-date-picker>
         </el-col>
         <el-col :span="5">
@@ -89,13 +90,13 @@
             ></span>
           </template>
         </el-table-column>
-        <el-table-column prop="performance" label="绩效分" align="center">
+        <!-- <el-table-column prop="performance" label="绩效分" align="center">
           <template slot-scope="scope">
             <span :class="scope.row.performance < 0 ? 'color_green' : ''">{{
               scope.row.performance
             }}</span>
           </template>
-        </el-table-column>
+        </el-table-column> -->
         <el-table-column prop="a" label="A分" align="center">
           <template slot-scope="scope">
             <span :class="scope.row.a < 0 ? 'color_green' : ''">{{
@@ -147,7 +148,7 @@
             <el-col :span="24">
               <el-radio v-model="radio" label="1">B分</el-radio>
               <el-radio v-model="radio" label="2">A分</el-radio>
-              <el-radio v-model="radio" label="3">绩效分</el-radio>
+              <!-- <el-radio v-model="radio" label="3">绩效分</el-radio> -->
             </el-col>
           </el-row>
         </div>

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

@@ -165,8 +165,8 @@
           ></el-table-column>
           <el-table-column label="积分" prop="review_point" width="120">
             <template slot-scope="scope">
-              <span v-show="scope.row.review_point < 0" class="green">{{ scope.row.review_point }} {{ $getTypsName(scope.row.pt_id) }}</span>
-              <span v-show="scope.row.review_point >= 0" class="red">+{{ scope.row.review_point }} {{ $getTypsName(scope.row.pt_id) }}</span>
+              <span v-show="scope.row.review_point < 0" class="red">{{ scope.row.review_point }} {{ $getTypsName(scope.row.pt_id) }}</span>
+              <span v-show="scope.row.review_point >= 0" class="green">+{{ scope.row.review_point }} {{ $getTypsName(scope.row.pt_id) }}</span>
             </template>
             <!-- <template slot-scope="scope">
               <span v-show="scope.row.review_point < 0" class="color_red">{{

+ 46 - 10
src/views/workbench/grade/apply_list.vue

@@ -30,7 +30,7 @@
       </el-table-column>
       <el-table-column label="积分" prop="review_point" width="120">
         <template slot-scope="scope">
-          <span :class="{color_green: scope.row.point < 0, color_red: scope.row.point > 0}">
+          <span :class="{color_green: scope.row.point > 0, color_red: scope.row.point < 0}">
             <span v-show="scope.row.point > 0">+</span>
             {{scope.row.point}} {{scope.row.pt_id==3?'B分':scope.row.pt_id==2?'A分':scope.row.pt_id==1?'绩效分':''}}
           </span>
@@ -73,8 +73,8 @@
       </el-table-column> -->
       <el-table-column label="积分" prop="review_point" width="120">
         <template slot-scope="scope">
-          <span class="red" v-show="scope.row.point>=0">+{{scope.row.point}} {{$getTypsName(scope.row.pt_id)}}</span>
-          <span class="green" v-show="scope.row.point < 0">{{ scope.row.point }} {{$getTypsName(scope.row.pt_id)}}</span>
+          <span class="green" v-show="scope.row.point>=0">+{{scope.row.point}} {{$getTypsName(scope.row.pt_id)}}</span>
+          <span class="red" v-show="scope.row.point < 0">{{ scope.row.point }} {{$getTypsName(scope.row.pt_id)}}</span>
         </template>
       </el-table-column>
       <el-table-column label="时间" prop="event_time" width="150"></el-table-column>
@@ -155,8 +155,8 @@
               <div class="user_text">
                 <div v-if="detail_info.employee_info"><WWOpenData type="userName" :openid="detail_info.employee_info.name"></WWOpenData></div>
                 <div v-if="detail_info.status == 1" style="margin: 0 10px;">
-                  <span class="event-info__value red" v-if="detail_info.review_point >= 0">+{{ detail_info.review_point}} {{$getTypsName(detail_info.pt_id)}}</span>
-                  <span class="event-info__value green" v-else>{{ detail_info.review_point}}{{$getTypsName(detail_info.pt_id)}}</span>
+                  <span class="event-info__value green" v-if="detail_info.review_point >= 0">+{{ detail_info.review_point}} {{$getTypsName(detail_info.pt_id)}}</span>
+                  <span class="event-info__value red" v-else>{{ detail_info.review_point}}{{$getTypsName(detail_info.pt_id)}}</span>
                 </div>
                 <div style="margin-left: 10px;">
                   <span :class="{ yellow: detail_info.review_status == 0 }">{{ detail_info.status_mark }}</span>
@@ -212,7 +212,14 @@
             ></el-image>
           </el-col>
         </el-row>
-        <div v-show="detail_info.process != false">
+        
+        <div v-show="detail_info.process">
+        	<Steps :process="detail_info.process"></Steps>
+        </div>
+        <div class="btn_danger flex-box flex-center-center" v-if="detail_info.applyor_id==$userInfo().id&&detail_info.can_refuse == '1'&&detail_info.source_type==2">
+           <el-button type="danger" class="danger" @click="revocation" :loading="cx_loading">撤销</el-button>
+         </div>
+        <!-- <div v-show="detail_info.process != false">
           <p class="row_title">
             审批
             <span class="row_tips">多人审批时,以最后一人为准</span>
@@ -232,7 +239,6 @@
                 <template slot="title">
                   <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>
                 <template slot="description">
@@ -242,7 +248,7 @@
               </el-step>
             </el-steps>
           </div>
-        </div>
+        </div> -->
       </div>
     </el-drawer>
 
@@ -252,6 +258,7 @@
 
 <script>
 import moment from "moment";
+import Steps from '@/components/Steps.vue';
 import EmployeeSelector from "@/views/common/EmployeeSelector";
 import applicationIntegrationPopup from "@/views/common/applicationIntegrationPopup";
 export default {
@@ -276,12 +283,16 @@ export default {
       detail_info: {},
 
       dialogVisible: false,
-      itemIndex: 0
+      itemIndex: 0,
+      
+      cx_loading:false,
+      selectId:0,
     };
   },
   components: {
     EmployeeSelector,
-    applicationIntegrationPopup
+    applicationIntegrationPopup,
+    Steps
   },
   watch: {
     tabs(val) {
@@ -297,6 +308,30 @@ export default {
     this.get_list();
   },
   methods: {
+    // 撤销待审批
+    revocation(){
+    	var that=this;
+    	this.$confirm('撤销此项数据将不可恢复,是否撤销?', '提示', {
+    		  confirmButtonText: '确定',
+    		  cancelButtonText: '取消',
+    		  type: 'warning'
+    		}).then(() => {
+    			let data = {
+    				review_id: that.selectId,
+    			};
+    			that.cx_loading = true;
+    			that.$http('DELETE', '/api/integral/review', data).then(res => {
+    				if (res.data.code == 1) {
+    					that.get_list()
+    				} else {
+    					that.$message.error(res.data.data.msg);
+    				}
+    			}).finally(() => {
+    				that.detailShow = false;
+    				that.cx_loading = false;
+    			});
+    		})
+    },
     getEmployeeName(id) {
       for (const key in this.employee_name) {
         if (this.employee_name[key].id == id) {
@@ -345,6 +380,7 @@ export default {
         });
     },
     openDetail(item) {
+      this.selectId=item.id;
       let self = this;
       let data = {
         review_id: item.id

+ 11 - 10
src/views/workbench/grade/award_punish.vue

@@ -31,7 +31,7 @@
       <el-table-column prop="remark" show-overflow-tooltip label="奖扣内容"></el-table-column>
       <el-table-column prop="point" label="积分" width="120">
         <template slot-scope="scope">
-          <span :class="{ color_green: scope.row.point < 0, color_red: scope.row.point > 0 }">
+          <span :class="{ color_green: scope.row.point > 0, color_red: scope.row.point < 0 }">
             <span v-show="scope.row.point > 0">+</span>
             {{ scope.row.point }} {{ $getTypsName(scope.row.pt_id) }}
           </span>
@@ -102,9 +102,9 @@
             <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>
+            <span class="color_green point" v-show="detail_info.point >= 0 && detail_info.point">+{{ detail_info.point }} {{$getTypsName(detail_info.pt_id)}}</span>
+            <span class="color_red point" v-show="detail_info.point < 0 && detail_info.point">{{ detail_info.point }} {{$getTypsName(detail_info.pt_id)}}</span>
+            <!-- <span v-show="detail_info.point">{{detailPt_id(detail_info.pt_id)}}</span> -->
           </el-col>
         </el-row>
 
@@ -158,9 +158,9 @@
           </el-row>
           <el-row v-if="detail_info.rule_item">
             <el-col :span="4" style="margin-bottom:5px;">积分</el-col>
-            <el-col :span="19" v-show="detail_info.rule_item.min_point == detail_info.rule_item.max_point">{{ detail_info.rule_item.min_point }}</el-col>
+            <el-col :span="19" v-show="detail_info.rule_item.min_point == detail_info.rule_item.max_point">{{ detail_info.rule_item.min_point }} {{$getTypsName(detail_info.pt_id)}}</el-col>
             <el-col :span="19" v-show="detail_info.rule_item.min_point != detail_info.rule_item.max_point">
-              {{ detail_info.rule_item.min_point }} ~ {{ detail_info.rule_item.max_point }}
+              {{ detail_info.rule_item.min_point }} ~ {{ detail_info.rule_item.max_point }} {{$getTypsName(detail_info.pt_id)}}
             </el-col>
           </el-row>
         </div>
@@ -188,9 +188,9 @@
               fontSize="15"
             ></userImage>
             <span style="line-height:50px; margin-left:10px;margin-right:4px;"><WWOpenData type="userName" :openid="detail_info.employee_info.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>
+            <span class="color_green point" v-show="detail_info.point >= 0 && detail_info.point">+{{ detail_info.point }} {{$getTypsName(detail_info.pt_id)}}</span>
+            <span class="color_red point" v-show="detail_info.point < 0 && detail_info.point">{{ detail_info.point }} {{$getTypsName(detail_info.pt_id)}}</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> -->
           </el-col>
         </el-row>
 
@@ -232,7 +232,8 @@
         <div v-show="detail_info.process !== null && detail_info.process.length > 0">
         	<Steps :process="detail_info.process"></Steps>
         </div>
-       <div class="btn_danger flex-box flex-center-center" v-if="detail_info.applyor_id==$userInfo().id&&detail_info.status==0&&detail_info.source_type==3">
+       <!-- <div class="btn_danger flex-box flex-center-center" v-if="detail_info.applyor_id==$userInfo().id&&detail_info.status==0&&detail_info.source_type==3"> -->
+       <div class="btn_danger flex-box flex-center-center" v-if="detail_info.applyor_id==$userInfo().id&&detail_info.can_refuse == '1'&&(detail_info.source_type==2||detail_info.source_type==3)">
           <el-button type="danger" class="danger" @click="revocation2" :loading="cx_loading">撤销</el-button>
         </div>
       </div>

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

@@ -10,7 +10,14 @@
       <div v-if="active === 'unclaimed'">
         <el-table :data="list" style="width: 100%" v-loading="loading" @row-click="openDetail" >
           <el-table-column label="任务内容" prop="task_name"></el-table-column>
-          <el-table-column label="积分" prop="base_point"></el-table-column>
+          <el-table-column label="积分" prop="base_point">
+            <template slot-scope="scope">
+              <div>
+                {{scope.row.base_point}}
+                {{$getTypsName(scope.row.pt_id)}}
+              </div>
+            </template>
+          </el-table-column>
           <el-table-column label="截止时间" prop="expire_time"></el-table-column>
           <el-table-column label="操作" prop="owner_id">
             <template slot-scope="scope">
@@ -35,7 +42,14 @@
             </template>
           </el-table-column>
           <el-table-column label="任务内容" prop="task_name"></el-table-column>
-          <el-table-column label="积分" prop="base_point"></el-table-column>
+          <el-table-column label="积分" prop="base_point">
+            <template slot-scope="scope">
+              <div>
+                {{scope.row.base_point}}
+                {{$getTypsName(scope.row.pt_id)}}
+              </div>
+            </template>
+          </el-table-column>
           <el-table-column label="截止时间" prop="expire_time"></el-table-column>
           <template slot="empty">
             <div class="nopoint_box">
@@ -73,8 +87,8 @@
               <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>
+              <span class="color_green point" v-show="detailInfo.point_config.base_point >= 0"> +{{detailInfo.point_config.base_point}} {{$getTypsName(detailInfo.pt_id)}}</span>
+              <span class="color_red point" v-show="detailInfo.point_config.base_point < 0"> {{detailInfo.point_config.base_point}} {{$getTypsName(detailInfo.pt_id)}}</span>
               <!-- {{point_name(detailInfo.pt_id)}} -->
               <!-- {{point_name(detailInfo.pt_id)}} -->
             </el-col>

+ 4 - 4
src/views/workbench/task/my_task.vue

@@ -23,8 +23,8 @@
           <el-table-column label="任务内容" prop="task_name"></el-table-column>
           <el-table-column label="积分">
             <template slot-scope="scope">
-              <span v-if="scope.row.point_config.base_point>=0" class="red">+{{scope.row.point_config.base_point}} {{scope.row.pt_name}}</span>
-              <span v-else class="green">{{scope.row.point_config.base_point}} {{scope.row.pt_name}}</span>
+              <span v-if="scope.row.point_config.base_point>=0" class="green">+{{scope.row.point_config.base_point}} {{scope.row.pt_name}}</span>
+              <span v-else class="red">{{scope.row.point_config.base_point}} {{scope.row.pt_name}}</span>
             </template>
           </el-table-column>
           <el-table-column label="截止时间" prop="expire_time"></el-table-column>
@@ -47,8 +47,8 @@
           <el-table-column label="任务内容" prop="task_name"></el-table-column>
           <el-table-column label="积分">
             <template slot-scope="scope">
-              <span v-if="scope.row.point_config.base_point>=0" class="red">+{{scope.row.point_config.base_point}} {{scope.row.pt_name}}</span>
-              <span v-else class="green">{{scope.row.point_config.base_point}} {{scope.row.pt_name}}</span>
+              <span v-if="scope.row.point_config.base_point>=0" class="green">+{{scope.row.point_config.base_point}} {{scope.row.pt_name}}</span>
+              <span v-else class="red">{{scope.row.point_config.base_point}} {{scope.row.pt_name}}</span>
             </template>
           </el-table-column>
           <el-table-column label="截止时间" prop="expire_time"></el-table-column>

BIN
static/images/default5.png


BIN
static/images/gttx0.jpg


BIN
static/images/gttx1.jpg


BIN
static/images/gttx2.jpg


BIN
static/images/gttx3.jpg


BIN
static/images/gttx4.jpg


BIN
static/images/gttx5.jpg


BIN
static/images/vtRemewService.png