哥哥玩剑魂呢 3 лет назад
Родитель
Сommit
a0403f3ffa
72 измененных файлов с 5475 добавлено и 1358 удалено
  1. 1 0
      WW_verify_VPOsOaC1KmaFfBER.txt
  2. 6 3
      config/dev.env.js
  3. 2 1
      config/sit.env.js
  4. 24 16
      index.html
  5. 22 0
      src/App.vue
  6. 20 0
      src/api/auth.js
  7. 945 0
      src/components/EmployeeSelector.vue
  8. 1 1
      src/components/deptData.vue
  9. 10 5
      src/components/user_image.vue
  10. 1 1
      src/components/wxOpendata.vue
  11. 4 3
      src/main.js
  12. 99 66
      src/permission.js
  13. 1 1
      src/router/index.js
  14. 4 0
      src/store/modules/user.js
  15. 9 1
      src/utils/auth.js
  16. 17 14
      src/utils/request.js
  17. 5 1
      src/utils/wx-auth-two.js
  18. 903 930
      src/views/common/EmployeeSelector.vue
  19. 10 7
      src/views/common/EmployeeSelector1.vue
  20. 922 0
      src/views/common/EmployeeSelector2.vue
  21. 1115 0
      src/views/common/EmployeeSelectorVTwo.vue
  22. 43 16
      src/views/common/applicationIntegrationPopup.vue
  23. 36 7
      src/views/common/bonusPointsPopup.vue
  24. 33 6
      src/views/common/examinePopup.vue
  25. 2 2
      src/views/common/repeatTaskDetailsPopup.vue
  26. 21 5
      src/views/common/rewardTask.vue
  27. 20 4
      src/views/common/rewardTaskAmend.vue
  28. 1 1
      src/views/common/rewardTaskDetailsPopup.vue
  29. 4 4
      src/views/common/taskDetailsPopup.vue
  30. 26 7
      src/views/common/temporaryTask.vue
  31. 23 6
      src/views/common/temporaryTaskAmend.vue
  32. 16 14
      src/views/dashboard/index.vue
  33. 12 2
      src/views/integral/EmploeAdd.vue
  34. 131 8
      src/views/integral/EmployeeTable.vue
  35. 1 1
      src/views/layout/Layout.vue
  36. 109 61
      src/views/login/index1.vue
  37. 562 0
      src/views/login/index2.vue
  38. 84 0
      src/views/login/index3.vue
  39. 7 7
      src/views/setting/approver_set.vue
  40. 1 1
      src/views/setting/company_info.vue
  41. 13 6
      src/views/setting/fixed_integral.vue
  42. 10 10
      src/views/setting/new_employee.vue
  43. 4 4
      src/views/setting/set_role.vue
  44. 4 4
      src/views/statistics_new/balanceA.vue
  45. 11 3
      src/views/statistics_new/custom_rank.vue
  46. 3 3
      src/views/statistics_new/department_statistics.vue
  47. 7 7
      src/views/statistics_new/dept_rank.vue
  48. 7 7
      src/views/statistics_new/individual_statistics.vue
  49. 9 9
      src/views/statistics_new/integral_event.vue
  50. 4 4
      src/views/statistics_new/integral_statistics.vue
  51. 3 3
      src/views/statistics_new/lotteryTicket_statistics.vue
  52. 6 6
      src/views/statistics_new/manager_statistics.vue
  53. 5 5
      src/views/statistics_new/total_rank.vue
  54. 8 8
      src/views/workbench/approval_list.vue
  55. 12 6
      src/views/workbench/grade/apply_list.vue
  56. 9 9
      src/views/workbench/grade/award_punish.vue
  57. 45 11
      src/views/workbench/performance/add_team_performance.vue
  58. 9 9
      src/views/workbench/performance/examine_unit.vue
  59. 1 1
      src/views/workbench/performance/module/examine.vue
  60. 1 1
      src/views/workbench/performance/module/participation.vue
  61. 8 8
      src/views/workbench/performance/my_performance.vue
  62. 9 9
      src/views/workbench/performance/participation_detail.vue
  63. 25 14
      src/views/workbench/performance/team_detail.vue
  64. 2 2
      src/views/workbench/performance/team_performance.vue
  65. 4 4
      src/views/workbench/task/get_task.vue
  66. 3 3
      src/views/workbench/task/my_issue.vue
  67. BIN
      static/images/gttx0.jpg
  68. BIN
      static/images/gttx1.jpg
  69. BIN
      static/images/gttx2.jpg
  70. BIN
      static/images/gttx3.jpg
  71. BIN
      static/images/gttx4.jpg
  72. BIN
      static/images/gttx5.jpg

+ 1 - 0
WW_verify_VPOsOaC1KmaFfBER.txt

@@ -0,0 +1 @@
+VPOsOaC1KmaFfBER

+ 6 - 3
config/dev.env.js

@@ -3,11 +3,14 @@ module.exports = {
   ENV_CONFIG: '"dev"',
   // BASE_API: '"https://new.gdy.g107.com"',
   // SERVE_AD: '"https://nkaoqin.g107.net"'
-  BASE_API: '"http://test.qywx.g107.net"',
+  
+  // BASE_API: '"http://test.qywx.g107.net"',
+  BASE_API: '"http://qywx.1024win.cn"',
   SERVE_AD: '"https://nkaoqin.g107.net"',
-  APPID: '"ww4065f0d4bb232a6a"',
+  // APPID: '"ww4065f0d4bb232a6a"',
+  APPID: '"wwa8bbe3b687a632dd"',
   // APPID: '"ww1d41fd7a34ed1a64"',//测试
-  REDIRECT_URI: '"http%3A%2F%2Fwechatdings.vaiwan.com"',
+  // REDIRECT_URI: '"http%3A%2F%2Fwechatdings.vaiwan.com"',
   // BASE_API: '"https://oa.g107.com"',
   // SERVE_AD:'"https://ad.g107.com"'
 }

+ 2 - 1
config/sit.env.js

@@ -1,6 +1,7 @@
 module.exports = {
   NODE_ENV: '"production"',
   ENV_CONFIG: '"sit"',
-  BASE_API: '"https://new.gdy.g107.com"',
+  // BASE_API: '"https://new.gdy.g107.com"',
+  BASE_API: '"http://qywx.1024win.cn"',
   SERVE_AD: '"https://nkaoqin.g107.net"'
 }

+ 24 - 16
index.html

@@ -13,6 +13,14 @@
 <script type="text/javascript" src="//open.work.weixin.qq.com/wwopen/js/jwxwork-1.0.0.js"></script>
 
   <script src="static/js/polyfill.min.js"></script>
+  <script>
+    
+    if(/Android|webOS|iPhone|iPod|BlackBerry/i.test(navigator.userAgent)) {
+      console.log('app')
+    } else {
+      console.log('pc')
+    }
+  </script>
   
   <!-- <script>
     /**
@@ -72,27 +80,27 @@
   <input type="password">
 </div>
   <div id="app"></div>
-  <div id='ie_tip' style='display:none'><img style='position:absolute;left:50%;margin-left:-366px;' src='/static/images/ltIE9.png'><a
+  <!-- <div id='ie_tip' style='display:none'><img style='position:absolute;left:50%;margin-left:-366px;' src='/static/images/ltIE9.png'><a
       href='https://www.baidu.com/s?ie=UTF-8&wd=%E8%B0%B7%E6%AD%8C%E6%B5%8F%E8%A7%88%E5%99%A8' target='_blank' class='chromLink'></a><a
-      href='https://www.baidu.com/s?ie=UTF-8&wd=%E7%81%AB%E7%8B%90%E6%B5%8F%E8%A7%88%E5%99%A8' target='_blank' class='firefoxLink'></a></div>
+      href='https://www.baidu.com/s?ie=UTF-8&wd=%E7%81%AB%E7%8B%90%E6%B5%8F%E8%A7%88%E5%99%A8' target='_blank' class='firefoxLink'></a></div> -->
   <!-- built files will be auto injected -->
 </body>
 <script>
-  (function (window) { // ie9以下浏览器
-    var theUA = window.navigator.userAgent.toLowerCase();
-    if ((theUA.match(/msie\s\d+/) && theUA.match(/msie\s\d+/)[0]) || (theUA.match(/trident\s?\d+/) && theUA.match(/trident\s?\d+/)[0])) {
-      var ieVersion = theUA.match(/msie\s\d+/)[0].match(/\d+/)[0] || theUA.match(/trident\s?\d+/)[0];
-      if (ieVersion < 9) {
-        // document.writeln("<img style='position:absolute;left:50%;margin-left:-366px;' src='./static/images/ltIE9.png'><a href='https://www.baidu.com/s?ie=UTF-8&wd=%E8%B0%B7%E6%AD%8C%E6%B5%8F%E8%A7%88%E5%99%A8' target='_blank' class='chromLink'></a><a href='https://www.baidu.com/s?ie=UTF-8&wd=%E7%81%AB%E7%8B%90%E6%B5%8F%E8%A7%88%E5%99%A8' target='_blank' class='firefoxLink'></a>");
-        // document.execCommand("Stop");
-        var app = document.getElementById("app")
-        var ie_tip = document.getElementById("ie_tip")
-        ie_tip.style.display = 'block';
-        app.appendChild(ie_tip)
-      };
-    }
+  // (function (window) { // ie9以下浏览器
+  //   var theUA = window.navigator.userAgent.toLowerCase();
+  //   if ((theUA.match(/msie\s\d+/) && theUA.match(/msie\s\d+/)[0]) || (theUA.match(/trident\s?\d+/) && theUA.match(/trident\s?\d+/)[0])) {
+  //     var ieVersion = theUA.match(/msie\s\d+/)[0].match(/\d+/)[0] || theUA.match(/trident\s?\d+/)[0];
+  //     if (ieVersion < 9) {
+  //       // document.writeln("<img style='position:absolute;left:50%;margin-left:-366px;' src='./static/images/ltIE9.png'><a href='https://www.baidu.com/s?ie=UTF-8&wd=%E8%B0%B7%E6%AD%8C%E6%B5%8F%E8%A7%88%E5%99%A8' target='_blank' class='chromLink'></a><a href='https://www.baidu.com/s?ie=UTF-8&wd=%E7%81%AB%E7%8B%90%E6%B5%8F%E8%A7%88%E5%99%A8' target='_blank' class='firefoxLink'></a>");
+  //       // document.execCommand("Stop");
+  //       var app = document.getElementById("app")
+  //       var ie_tip = document.getElementById("ie_tip")
+  //       ie_tip.style.display = 'block';
+  //       app.appendChild(ie_tip)
+  //     };
+  //   }
 
-  })(window);
+  // })(window);
 </script>
 
 </html>

+ 22 - 0
src/App.vue

@@ -13,3 +13,25 @@
     },
   }
 </script>
+
+<style lang="scss">
+  //解决弹窗抖动
+  // .dialog-shake{
+    .el-dialog__wrapper {
+      display: flex;
+      justify-content: center;
+      align-items: center;
+      .el-dialog {
+        display: flex;
+        flex-direction: column;
+        margin: 0 !important;
+        max-height: calc(100% - 30px);
+        max-width: calc(100% - 30px);
+        .el-dialog__body {
+          flex: 1;
+          overflow: auto;
+        }
+      }
+    }
+  // }
+</style>

+ 20 - 0
src/api/auth.js

@@ -38,6 +38,26 @@ export function authoritys (key) {//判断是否为某项权限:this.$authorit
 
 
 
+
+
+// 获取积分类型
+export function getTyps(id) {
+	if (id) {
+		var arr = JSON.parse(localStorage.getItem('SET_POINT_TYPES'))
+		var item = arr.filter(element => {
+		return typeof (id) === 'string' ? element.code == id : element.id == id
+		})
+		return item[0]
+	} else {
+		return JSON.parse(localStorage.getItem('SET_POINT_TYPES'))
+	}
+}
+// 获取积分类型名称
+export function getTypsName(id) {
+	return getTyps(id).name
+}
+
+
 // 防抖
 //用法
 // _debounce(this.XXX(),1000)

+ 945 - 0
src/components/EmployeeSelector.vue

@@ -0,0 +1,945 @@
+<template>
+  <el-dialog
+    :title="title"
+    :visible.sync="visible_"
+    :close-on-click-modal="false"
+    :before-close="close_before"
+    append-to-body
+    @open="openDialog"
+    width="640px"
+    class="employee_select_dialog"
+  >
+    <slot name="header"></slot>
+    <div class="employee_selector_box" v-if="visible_">
+      <el-row :gutter="10">
+        <el-col :xs="11" :sm="11" :md="11" :lg="11" :xl="11" class="scroller-box one">
+          <div class="search-box">
+            <div class="search flex-box"><el-input v-model="keyword" placeholder="请输入内容" clearable></el-input></div>
+            <div class="search flex-box" style="margin-top: 7px;">
+              <el-cascader
+                v-show="can_select_employee&&deptId==0"
+                style="width: 100%;"
+                v-model="dept_id"
+                ref="dept"
+                :options="dept_list"
+                :props="{ checkStrictly: true, value: 'id', label: 'name', children: 'children' }"
+                clearable
+                :disabled="deptId > 0"
+                placeholder="全公司"
+              ></el-cascader>
+            </div>
+          </div>
+
+          <div class="dept_path scroll-bar flex-box flex-d-wrap" v-if="can_select_dept">
+            <template v-if="pid_list_arr.length > 0">
+              <div @click="back_by_index(0)" class="blue" style="cursor: pointer;">全公司</div>
+              <div v-for="(item, index) in pid_list_arr" :key="index" @click="back_by_index(index + 1, item)" class="font-flex-word" style="max-width: 120px;">
+                <i class="el-icon-arrow-right"></i>
+                <span class="blue" style="cursor: pointer;">{{ item.name }}</span>
+              </div>
+            </template>
+          </div>
+		  <!-- 人员 -->
+          <div class="flex-box-end" v-if="can_select_employee && isChecKedAll && multi" style="padding: 10px;border-bottom: 1px solid #f1f1f1;">
+            <el-checkbox v-model="checked" @change="checkedChange">全选</el-checkbox>
+          </div>
+          <el-scrollbar
+            wrap-class="column-wrapper scrollable-items-container"
+            :native="false"
+            :class="(can_select_dept || isChecKedAll)? 'scrollbarHeight1' : 'scrollbarHeight2'"
+            v-loading="table_loading"
+          >
+            <div class="choose_left">
+              <template v-if="can_select_dept">
+                <div class="persons_box" style="padding-top:4px;" v-if="dept_list.length > 0">
+                  <div v-for="(item, index) in dept_list" :key="index">
+                    <div class="flex-box flex-v-ce deptList" @click="select_dept(item, index)" v-show="item.name.indexOf(keyword) >= 0">
+                      <div :class="[item.checked? 'showCheckbox':'']" class="checkbox"><span class="isCheckbox"></span></div>
+                      <div class="employee_name flex-1 font-flex-word">{{ item.name }}</div>
+                      <div v-if="item.children" class="blue" @click.stop="show_child(item)">| 下级</div>
+                    </div>
+                  </div>
+                </div>
+              </template>
+              <template v-if="can_select_employee">
+                <div class="persons_box" style="padding-top:4px;" v-if="list.length > 0">
+                  <div class="employee_cell_a" v-for="(item, index) in list" :key="index" v-show="item.id">
+                    <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"><img :src="item.img_url" class="employee_cell_head_img" /></div>
+                      <div class="employee_name">{{ item.name }}</div>
+                      <div class="employee_cell_clear"></div>
+                    </div>
+                  </div>
+                </div>
+                <div v-else class="fontColorF" style="text-align: center;margin-top: 50px;">暂无可选人员</div>
+              </template>
+            </div>
+          </el-scrollbar>
+        </el-col>
+        <el-col :xs="2" :sm="2" :md="2" :lg="2" :xl="2" class="col-line"><span style="opacity: 0;">空</span></el-col>
+        <el-col :xs="11" :sm="11" :md="11" :lg="11" :xl="11" class="scroller-box">
+          <div class="option-box">
+            <span style="line-height: 40px; padding-left: 10px;" class="fl" v-if="multi && can_select_employee">已选择{{ employee_selected_list.length }}个员工</span>
+            <el-button type="type" @click="clear_data">清空</el-button>
+          </div>
+          <el-scrollbar wrap-class="column-wrapper scrollable-items-container" :native="false" style="height: 400px;">
+            <div class="choose_right">
+              <div class="employee_cell" v-for="(item, index) in dept_selected_list" :key="index">
+                <div class="employee_name">{{ item.dept_name }}</div>
+                <div class="employee_delete"><el-button type="default" size="mini" @click="dept_delete(item, index)" icon="el-icon-close" circle></el-button></div>
+                <div class="employee_cell_clear"></div>
+              </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"><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_name">{{ item.name }}</div>
+                <div class="employee_delete"><el-button type="default" size="mini" @click="employee_cancel(item, true)" icon="el-icon-close" circle></el-button></div>
+                <div class="employee_cell_clear"></div>
+              </div>
+            </div>
+          </el-scrollbar>
+        </el-col>
+      </el-row>
+    </div>
+    <span slot="footer" class="dialog-footer">
+      <el-button @click="close">取 消</el-button>
+      <el-button type="primary" @click="confirm">确 定</el-button>
+    </span>
+  </el-dialog>
+</template>
+
+<script>
+export default {
+  props: {
+    title: {
+      // 标题
+      type: String,
+      default: '选择部门和员工'
+    },
+    deptId: {
+      //指定部门ID,人员列表就是该部门的
+      type: Number,
+      default: 0
+    },
+    visible: {
+      // 是否显示组件
+      type: Boolean,
+      default: false
+    },
+    can_select_dept: {
+      // 是否能选择部门(单选择部门,不能选择人员)
+      type: Boolean,
+      default: false
+    },
+    dept_not_select: {
+      // 排除部门ID
+      type: Array,
+      default: () => {
+        return [];
+      }
+    },
+    dept_multi: {
+      // 指定部门是否能多选
+      type: Boolean,
+      default: true
+    },
+    dept_children: {
+      //选择部门时是否包含子部门
+      type: Boolean,
+      default: true
+    },
+    can_select_employee: {
+      // 指定是否能选择员工
+      type: Boolean,
+      default: true
+    },
+    employee_not_select: {
+      // 排除员工的ID,包含ID时不出现在选择列表中
+      type: Array,
+      default: () => {
+        return [];
+      }
+    },
+    selected: {
+      // 已经选择的员工和部门
+      type: Object,
+      default: () => {
+        return { employee: [], dept: [] };
+      }
+    },
+    multi: {
+      // 指定员工是否能多选
+      type: Boolean,
+      default: true
+    },
+    user_employee_list: {
+      // 为true时,employee_list才生效
+      type: Boolean,
+      default: false
+    },
+    employee_list: {
+      // 指定显示的员工列表,注意:传值后组件的员工数据将不是统一向服务器获取的,而是指定的员工列表,格式是:[{id: 1, name: “张三”, img_url: “”}]
+      type: Array,
+      default: () => {
+        return [];
+      }
+    },
+    isChecKedAll: {
+      //是否全选
+      type: Boolean,
+      default: true
+    },
+    close_clear_data: {
+      //关闭时是否清除选择的数据
+      type: Boolean,
+      default: true
+    },
+    max: {
+      //选择的人数限制
+      type: Number,
+      default: 0
+    },
+    is_filtration_creator: {
+      //是否去除创始人
+      type: Boolean,
+      default: true
+    },
+    is_manager_only: {
+      //是否只显示管理者
+      type: Boolean,
+      default: false
+    },
+    include_self: {
+      //是否显示自己
+      type: Boolean,
+      default: true
+    },
+    child:{
+      //当人员列表点击部门筛选时不显示子部门人员 ,目前只在设置主管有使用到
+      type: Boolean,
+      default: true
+    },
+    isRequired:{
+      //是否必须选择人员或者部门
+      type: Boolean,
+      default: false
+    }
+  },
+  name: 'EmployeeSelector',
+  data() {
+    return {
+      // 基础配置
+      table_loading: false,
+      searchBox: [], //用于搜索的全部人员
+      keyword: '',
+      checked: false,
+      visible_: false,
+      // 选择人员相关
+      employee_selected_list: [],
+      employee_selected: [],
+      list: [],
+      // 选择部门相关
+      dept_selected_list: [],
+      dept_name: '',
+      dept_id: [],
+      dept_select_id: 0,
+      dept_list: [],
+      dept_list_all: [], //备用全部部门
+      pid_list_arr: []
+    };
+  },
+  watch: {
+    // 当动态改变“employee_list”时,获取employee_list与employee_selected_list的交集,用于考勤组功能
+    employee_list(val) {
+      var eSList = this.employee_selected_list;
+      this.employee_selected_list = [...eSList].filter(x => [...val].some(y => y.id === x.id));
+    },
+    visible(val) {
+      this.visible_ = JSON.parse(JSON.stringify(val));
+      if (val) {
+        setTimeout(() => {
+          this.get_user_list();
+          this.get_dept_list();
+        }, 200);
+      }
+    },
+    dept_id(val) {
+      this.dept_select_id = val[val.length - 1];
+      this.$nextTick(() => {
+        if (this.can_select_employee) {
+          this.$refs.dept.dropDownVisible = false;
+        }
+        this.get_user_list();
+        this.checked = false;
+      });
+    },
+    keyword(val) {
+      this.list = this.searchBox.filter(item => item.name.includes(this.keyword));
+      if (!val) {
+        this.checked = false;
+      }
+    }
+  },
+  methods: {
+    //打开Dialog的回调,用刷每次打开都初始化selected
+    openDialog() {
+      if (this.deptId != 0) {
+        this.dept_id = [this.deptId];
+        this.dept_select_id = this.deptId;
+      }
+      let selected = this.selected;
+      this.employee_selected = [];
+      this.employee_selected_list = JSON.parse(JSON.stringify(selected.employee));
+      this.dept_selected_list =JSON.parse(JSON.stringify(selected.dept));
+      for (let i in selected.employee) {
+        this.employee_selected.push(selected.employee[i].id);
+      }
+    },
+    close_before(done) {
+      this.close();
+      done();
+    },
+    // 全选(只用选择人员)
+    checkedChange(val) {
+      if (val) {
+        this.$nextTick(() => {
+          let employeeSelectedList = JSON.parse(JSON.stringify(this.employee_selected_list)); //获取选择的人员
+          let employeeSelectedIds = [],
+            total = 0;
+          employeeSelectedList.forEach(element => {
+            employeeSelectedIds.push(element.id);
+          });
+          for (let i in this.list) {
+            this.$set(this.list[i], 'checked', true);
+            if (!employeeSelectedIds.includes(this.list[i].id)) {
+              //去除已经选择的人员
+              this.employee_selected_list.push(this.list[i]);
+            }
+          }
+        });
+      } else {
+        this.employee_selected_list = [];
+        this.employee_selected = [];
+        for (let i in this.list) {
+          this.$set(this.list[i], 'checked', false);
+        }
+      }
+    },
+    // 点击部门导航
+    back_by_index(index, item) {
+      this.pid_list_arr.splice(index, 100);
+      if (index == 0) {
+        this.dept_list = this.dept_list_all;
+        return false;
+      }
+      if (item.children) {
+        this.dept_list = item.children;
+      }
+    },
+    //下一级
+    show_child(item) {
+      if (item.children) {
+        this.dept_list = item.children;
+      }
+      this.pid_list_arr.push(item);
+    },
+    //获取一个部门的下的所有子部门
+    getChildrens(list) {
+      var dept_list = [];
+      list.forEach(item => {
+        item.checked = true;
+        dept_list.push({ dept_id: item.id, dept_name: item.name, avatar: 'static/images/e66f.jpg' });
+        if (item.children) {
+          dept_list.push(...this.getChildrens(item.children));
+        }
+      });
+      return dept_list;
+    },
+    //选择部门
+    select_dept(item, index) {
+      if (item.checked) {
+        this.dept_cancel(item);
+      } else {
+        if (!this.dept_multi) {
+          //是否能多选
+          this.dept_selected_list = [];
+          for (let i in this.dept_list_all) {
+            this.dept_cancel(this.dept_list_all[i], true);
+          }
+        }
+        item.checked = true;
+        if (item.children && this.dept_children) {
+          //是否存在子部门
+          this.dept_selected_list.push({ dept_id: item.id, dept_name: item.name, avatar: 'static/images/e66f.jpg' });
+          var arr = this.getChildrens(item.children);
+          this.dept_selected_list.push(...arr);
+        } else {
+          this.dept_selected_list.push({ dept_id: item.id, dept_name: item.name, avatar: 'static/images/e66f.jpg' });
+        }
+      }
+    },
+    //清除选择的部门
+    dept_cancel(item, is) {
+      item.checked = false;
+      if (item.children) {
+        //左边
+        item.children.forEach(childrens => {
+          this.dept_cancel(childrens);
+        });
+      }
+      if (is) {
+        return false;
+      }
+      var deptSelectedList = this.dept_selected_list;
+      deptSelectedList.forEach((dept, index) => {
+        //右边
+        if (dept.dept_id == item.id) {
+          deptSelectedList.splice(index, 1);
+        }
+      });
+    },
+    //删除部门
+    dept_delete(item) {
+      var dept_list = this.dept_list;
+      var obj = this.getDeptz(item.dept_id, dept_list); //递归找到所属部门
+      this.dept_cancel(obj);
+    },
+    // 递归获取指定ID部门
+    getDeptz(id, arr) {
+      var obj = {};
+      for (let i = 0; i < arr.length; i++) {
+        if (id == arr[i].id) {
+          obj = arr[i];
+          break;
+        } else if (arr[i].children) {
+          if (this.getDeptz(id, arr[i].children).id) {
+            obj = this.getDeptz(id, arr[i].children);
+          }
+        }
+      }
+      return obj;
+    },
+
+    //清除选择的人员
+    employee_cancel(item) {
+      this.checked = false;
+      this.employee_selected.splice(this.employee_selected.indexOf(item.id), 1);
+      let delete_index = -1;
+      for (let i in this.employee_selected_list) {
+        if (this.employee_selected.indexOf(this.employee_selected_list[i].id) < 0) {
+          delete_index = i;
+        }
+      }
+      if (delete_index >= 0) {
+        for (let i in this.list) {
+          if (this.list[i].id == item.id) {
+            this.$set(this.list[i], 'checked', false);
+          }
+        }
+        for (let i in this.employee_selected_list) {
+          if (this.employee_selected_list[i].id == item.id) {
+            this.employee_selected_list.splice(i, 1);
+          }
+        }
+      }
+    },
+    //选择人员
+    select_employee(item) {
+      if (item.checked) {
+        item.checked = false;
+        this.employee_cancel(item);
+      } else {
+        if (!this.multi) {
+          this.employee_selected = [];
+          this.employee_selected_list = [];
+          for (let i in this.list) {
+            this.$set(this.list[i], 'checked', false);
+          }
+        }
+        if (this.max > 0 && this.employee_selected.length == this.max && this.multi) {
+          this.$message.error('最多只能选择' + this.max + '人');
+          return false;
+        }
+        this.employee_selected.push(item.id);
+        this.employee_selected_list.push({ id: item.id, name: item.name, img_url: item.img_url });
+        item.checked = true;
+      }
+    },
+
+    //清空
+    clear_data() {
+      this.checked = false;
+      this.employee_selected = [];
+      this.employee_selected_list = [];
+      this.dept_selected_list = [];
+      for (let i in this.list) {
+        this.$set(this.list[i], 'checked', false);
+      }
+      for (let i in this.dept_list) {
+        this.$set(this.dept_list[i], 'checked', false);
+      }
+      for (let i in this.dept_list_all) {
+        this.$set(this.dept_list_all[i], 'checked', false);
+      }
+    },
+    //关闭||清空数据
+    close() {
+      this.$emit('update:visible', false);
+      if (this.close_clear_data) {
+        this.checked = false;
+        this.keyword='';
+        this.employee_selected = [];
+        this.employee_selected_list = [];
+        this.dept_selected_list = [];
+        this.pid_list_arr=[];
+        for (let i in this.list) {
+          this.$set(this.list[i], 'checked', false);
+        }
+        for (let i in this.dept_list) {
+          this.$set(this.dept_list[i], 'checked', false);
+        }
+        for (let i in this.dept_list_all) {
+          this.$set(this.dept_list_all[i], 'checked', false);
+        }
+      }
+    },
+    // 确定
+    confirm() {
+      if(this.isRequired){
+        if(this.employee_selected_list.length==0){
+           this.$message.error("请选择人员");
+           return false
+        }
+      }
+      this.$emit('confirm', {
+        employee: this.employee_selected_list,
+        dept: this.dept_selected_list
+      });
+      this.close();
+    },
+    // 获取部门
+    get_dept_list() {
+      this.$http('get', '/api/department/tree', '', 'v2').then(res => {
+        var list = res.data.data.list;
+        var dept_list = [];
+        // 排除部门
+        if (this.dept_not_select.length > 0) {
+          dept_list = list.filter(item => {
+            return this.dept_not_select.indexOf(item.id) == -1;
+          });
+        } else {
+          dept_list = list;
+        }
+        dept_list = this.getTreeData(dept_list); //过滤children
+        //默认选中部门
+        if (this.dept_selected_list.length > 0) {
+          this.dept_selected_list.forEach(item => {
+            this.setDeptChecked(item.dept_id, dept_list);
+          });
+        }
+        this.dept_list = dept_list;
+        this.dept_list_all = this.dept_list;
+      });
+    },
+    //设置默认部门
+    setDeptChecked(id, arr) {
+      for (let i = 0; i < arr.length; i++) {
+        if (id == arr[i].id) {
+          arr[i].checked = true;
+          break;
+        } else if (arr[i].children) {
+          this.setDeptChecked(id, arr[i].children);
+        }
+      }
+    },
+    getTreeData(data) {
+      for (var i = 0; i < data.length; i++) {
+        data[i].checked = false;
+        if (data[i].children.length < 1) {
+          // children若为空数组,则将children设为undefined
+          data[i].children = undefined;
+        } else {
+          // children若不为空数组,则继续 递归调用 本方法
+          this.getTreeData(data[i].children);
+        }
+      }
+      return data;
+    },
+
+    // 默认选择中的人勾上
+    parse_list(data) {
+      let _list = [];
+      data.map(item => {
+        item['checked'] = false;
+        for (var i in this.employee_selected_list) {
+          //判断传进来的员工是否是员工集合里的,是就设为已点击状态
+          if (this.employee_selected_list[i].id == item.id) {
+            item['checked'] = true;
+          }
+        }
+        if (item.img_url == '') {
+          item.img_url = 'static/images/head_default.png';
+        }
+      });
+      this.searchBox = data;
+      this.list = data;
+    },
+    //获取人员
+    get_user_list() {
+      this.table_loading = true;
+      this.$http('get', '/api/employee/index', { dept_id: this.dept_select_id, keywords: this.keyword, page: 1, page_size: 2000, child:this.child? '1':'0' }, 'v2')
+        .then(res => {
+          let list = this.filtration(res.data.data.list);
+          // 当有指定显示列表时
+          if (this.user_employee_list) {
+            var employee_list = this.employee_list;
+            var userData = [];
+            list.map(item => {
+              // 列表数据是否是自己的管理范围
+              employee_list.map(item2 => {
+                if (item.id == item2.id) {
+                  userData.push(item);
+                }
+              });
+            });
+            this.parse_list(userData);
+          } else {
+            // 没有指定人员列表
+            this.parse_list(list);
+          }
+        })
+        .finally(() => {
+          this.table_loading = false;
+        });
+    },
+    // 过滤各种条件:如:自己,创始人,只显示管理者等。。。
+    filtration(data) {
+      var list = data;
+      // 去除已经离职的人
+      for (let i = 0; i < list.length; i++) {
+        if (list[i].status == 2) {
+          list.splice(i, 1);
+          i--
+        }
+      }
+      var managerList = []; // 管理者列表
+      // 只显示管理者
+      if (this.is_manager_only) {
+        var isManager;
+        list.map(item => {
+          isManager = false;
+          item.employee_detail.role_list.map(item2 => {
+            if (item2.name == 'creator' || item2.name == 'point_manager' || item2.name == 'dept_manager' || item2.name == 'admin') {
+              isManager = true;
+            }
+          });
+          if (isManager) {
+            managerList.push(item);
+          }
+        });
+        list = managerList;
+      }
+      // 过滤自己
+      if (!this.include_self) {
+        const currUserId = this.$store.getters.user_info.id;
+        for (let i = 0; i < list.length; i++) {
+          if (list[i].id == currUserId) {
+            list.splice(i, 1);
+            i--
+          }
+        }
+      }
+      // 过滤创始人
+      if (this.is_filtration_creator) {
+        for (let i = 0; i < list.length; i++) {
+          if (list[i].is_creator == 1) {
+            list.splice(i,1);
+            i--
+          }
+        }
+      }
+      //过滤指定人员[]
+      if (this.employee_not_select.length > 0) {
+        for (let i = 0; i < list.length; i++) {
+          if (this.employee_not_select.indexOf(list[i].id) >= 0) {
+            list.splice(i, 1);
+            i--
+          }
+        }
+      }
+      return list;
+    }
+  },
+  created() {}
+};
+</script>
+
+<style scoped lang="scss">
+.showCheckbox .isCheckbox{
+   height: 7px;
+   width: 7px;
+   background-color: #26A2FF;
+   display: inline-block;
+   border-radius: 2px;
+   line-height: 14px;
+   position: relative;
+   top: -3px;
+}
+.showCheckbox{
+  border: 1px solid #26A2FF !important;
+}
+.checkbox{
+  height: 14px;
+  width: 14px;
+  border: 1px solid #dcdfe6;
+  background: #fff;
+  border-radius: 2px;
+  position: relative;
+  box-sizing: border-box;
+  text-align: center;
+}
+.deptList {
+  padding: 12px 0;
+  border-bottom: 1px solid #f1f1f1;
+  cursor: pointer;
+}
+.employee_selector_box {
+  width: 600px;
+  padding: 20px;
+  box-sizing: border-box;
+  margin: 0 auto;
+}
+
+/* 搜索框 */
+.employee_selector_box .search {
+  margin: 0 auto;
+  width: 80%;
+  min-height: 36px;
+}
+
+.employee_selector_box .search-box button {
+  display: inline-block;
+  vertical-align: middle;
+  margin-left: 10px;
+  width: auto;
+  padding: 0;
+  background: none;
+  border-radius: 0px;
+  border: none;
+}
+/* /搜索框 */
+
+/* 左边框 */
+.employee_selector_box .choose_left {
+  padding: 8px 10px 8px 10px;
+}
+
+.employee_selector_box .choose_left .employee_cell {
+  border-bottom: 1px #f1f1f1 solid;
+}
+
+.employee_selector_box .choose_left .employee_cell_a .employee_cell {
+  border-bottom: none;
+}
+
+.employee_selector_box .choose_left .employee_checkbox {
+  padding-left: 8px;
+}
+
+.employee_selector_box .choose_left .employee_img_url {
+  padding-left: 8px;
+}
+
+.employee_selector_box .choose_left .employee_name {
+  padding-left: 8px;
+}
+
+.employee_selector_box ::v-deep .el-scrollbar__thumb {
+  width: 2px;
+  margin: 15px 0 0 6px;
+  background: #409eff;
+}
+
+/* 左边框 */
+
+/* 右边距 */
+.employee_selector_box .option-box {
+  padding: 14px 0;
+}
+
+.employee_selector_box .option-box button {
+  margin-right: 16px;
+}
+
+.employee_selector_box .choose_right {
+  padding: 8px 10px;
+}
+
+.employee_selector_box .choose_right .employee_delete .el-button {
+  transform: scale(0.5);
+  background: #c0c4cc;
+}
+
+.employee_selector_box .choose_right .employee_delete .el-button /deep/ .el-icon-close {
+  color: #fff;
+}
+
+.employee_selector_box .choose_right .employee_delete .el-button:active {
+  background: #409eff;
+}
+
+.employee_selector_box .choose_right .employee_delete .el-button:active /deep/ .el-icon-close {
+  color: #fff;
+}
+
+.employee_selector_box .choose_right .employee_cell .employee_name {
+  padding-left: 8px;
+}
+
+.employee_selector_box .choose_right .employee_cell .employee_img_url {
+  padding-left: 8px;
+}
+
+/* 右边距 */
+
+.employee_selector_box /deep/ .employee_cell {
+  padding: 8px 0;
+  border-bottom: 1px #f1f1f1 solid;
+}
+
+.employee_selector_box /deep/ .employee_cell:hover {
+  background: #ecf5ff;
+}
+
+.employee_cell {
+  display: -webkit-inline-box;
+  cursor: pointer;
+  width: 100%;
+  color: #606266;
+  padding: 8px 0;
+  background-color: transparent;
+}
+
+.employee_cell .employee_cell_clear {
+  clear: both;
+}
+
+.employee_cell .employee_img_url {
+  display: table-cell;
+  vertical-align: middle;
+  width: 30px;
+  padding-left: 0px;
+}
+
+.employee_cell .employee_img_url img {
+  width: 24px;
+  height: 24px;
+  border-radius: 50%;
+}
+
+.employee_cell .employee_checkbox {
+  display: table-cell;
+  vertical-align: middle;
+  width: 30px;
+  text-align: center;
+}
+
+.employee_cell .employee_name {
+  display: table-cell;
+  vertical-align: middle;
+  color: #606266;
+}
+
+.employee_delete {
+  display: table-cell;
+  text-align: right;
+  padding-right: 0px;
+}
+
+.employee_cell_a {
+  display: block;
+}
+
+.employee_cell_a:hover {
+  background-color: #ecf5ff;
+  border-radius: 4px;
+}
+
+.dept_child_cell {
+  display: table-cell;
+  vertical-align: middle;
+}
+
+.dept_child_cell span {
+  float: right;
+  padding-right: 8px;
+}
+
+.dept_child_cell span:hover {
+  color: #1c1c1c;
+}
+
+.dept_child_cell span:active {
+  color: #1c1c1c;
+}
+
+.scroller-box {
+  height: 440px;
+  padding-right: 0px !important;
+  background-color: #fdfdfd;
+  border: 1px solid #eee;
+  border-radius: 4px;
+  overflow: hidden;
+}
+/* .scroller-box.one{
+    height: 440px;
+  } */
+
+.col-line {
+  position: relative;
+  height: 400px;
+}
+
+.col-line:before {
+  content: ' ';
+  width: 1px;
+  height: 400px;
+  position: absolute;
+  top: 0;
+  bottom: 0;
+  left: 50%;
+  background-color: #eee;
+}
+
+.search-box {
+  background-color: #fff;
+  padding: 14px 5px;
+  border-bottom: 1px solid #eee;
+  margin: 0 -5px;
+}
+
+.option-box {
+  padding: 5px;
+  background-color: #fff;
+  border-bottom: 1px solid #eee;
+  margin: 0 -5px;
+  text-align: right;
+}
+
+.child_btn {
+  color: #409eff;
+}
+.dept_path {
+  padding: 10px 0;
+  border-bottom: 1px solid #f1f1f1;
+  min-height: 37px;
+}
+
+.scrollbarHeight1 {
+  height: 310px;
+}
+.scrollbarHeight2 {
+  height: 350px;
+}
+</style>

+ 1 - 1
src/components/deptData.vue

@@ -5,7 +5,7 @@
     @click="clickDept(refsName)"
     :style="deptStyle"
   >
-    <wwOpenDAta type="departmentName" :openid="toPdept"></wwOpenDAta>
+    <WWOpenData type="departmentName" :openid="toPdept"></WWOpenData>
   </div>
 </template>
 <script>

+ 10 - 5
src/components/user_image.vue

@@ -2,7 +2,7 @@
   <div>
     <el-image 
       v-if="info.img_url"
-      :src="info.img_url"
+      :src="info.img_url == defaultImg() ? replaceImg() : info.img_url"
       :style="{width: width, height: height}"
       style="border-radius: 50%"
       fit="fill"
@@ -11,9 +11,8 @@
         <i class="el-icon-picture"></i>
       </div>
     </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'}"><wwOpenDAta type="userName" :openid="user_name"></wwOpenDAta></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>
@@ -44,7 +43,7 @@
       },
       fontSize:{
         type: String,
-        default: '16'
+        default: '14'
       }
     },
     watch:{
@@ -104,7 +103,13 @@
             this.name = this.info.name
           }
         }
-      }
+      },
+      defaultImg(){
+        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'
+      },
     },
     // 组件挂载完成
     mounted() {

+ 1 - 1
src/components/wxOpendata.vue

@@ -3,7 +3,7 @@
 </template>
 <script>
 export default {
-  name: "wwOpenDAta",
+  name: "WWOpenData",
   props: ["type", "openid"],
   watch: {
     openid(item) {

+ 4 - 3
src/main.js

@@ -11,7 +11,7 @@ import App from './App'
 import router from './router'
 import store from './store'
 import {getToken} from '@/utils/auth'
-import {supremeAuthority,authoritys} from './api/auth';
+import {supremeAuthority ,authoritys ,getTypsName} from './api/auth';
 
 import i18n from './lang' // Internationalization
 import './icons' // icon
@@ -30,8 +30,8 @@ new VConsole()
 import userImage from '@/components/user_image'
 Vue.component('userImage', userImage)
 // wx通讯录
-import wwOpenDAtas from '@/components/wxOpendata'
-Vue.component('wwOpenDAta', wwOpenDAtas)
+import WWOpenDatas from '@/components/wxOpendata'
+Vue.component('WWOpenData', WWOpenDatas)
 // 选择部门的选中内容覆盖
 import deptData from '@/components/deptData.vue'
 Vue.component('deptData', deptData)
@@ -50,6 +50,7 @@ Vue.prototype.serveAd = process.env.SERVE_AD
 Vue.prototype.serverdomain = process.env.BASE_API
 Vue.prototype.$supremeAuthority = supremeAuthority
 Vue.prototype.$authoritys = authoritys
+Vue.prototype.$getTypsName = getTypsName
 // Vue.prototype.$wx = wx;
 
 

+ 99 - 66
src/permission.js

@@ -1,13 +1,24 @@
 import router from './router'
 import store from './store'
 import Vue from 'vue'
-import { Message } from 'element-ui'
+import {
+  Message
+} from 'element-ui'
 import NProgress from 'nprogress'
 import 'nprogress/nprogress.css'
-import { getToken , removeToken } from '@/utils/auth'
-import { wxAuth } from '@/utils/wx-auth-two.js'; 
+import {
+  cookGetToken,
+  localSetToken,
+  getToken,
+  removeToken
+} from '@/utils/auth'
+import {
+  wxAuth
+} from '@/utils/wx-auth-two.js';
 
-NProgress.configure({ showSpinner: false })
+NProgress.configure({
+  showSpinner: false
+})
 
 function hasPermission(roles, permissionRoles) {
   if (roles.indexOf('admin') >= 0) return true
@@ -15,73 +26,22 @@ function hasPermission(roles, permissionRoles) {
   return roles.some(role => permissionRoles.indexOf(role) >= 0)
 }
 // 免登名单
-const whiteList = ['/invite_new_company', '/create_company', '/login' , '/loginTransfer' ,'/noAccess' , '/loginbytoken', '/reg', '/forgetPwd', '/resetPwd', '/android', '/demo', '/swiperShow','/autoLogin' ]// no redirect whitelist
+const whiteList = ['/invite_new_company', '/create_company', '/login', '/loginTransfer', '/noAccess', '/loginbytoken', '/reg', '/forgetPwd', '/resetPwd', '/android', '/demo', '/swiperShow', '/autoLogin'] // no redirect whitelist
 
 router.beforeEach((to, from, next) => {
-  if(Vue.$httpRequestList.length>0){        //强行中断时才向下执行
-    Vue.$httpRequestList.forEach(item=>{
-        item('interrupt');//给个标志,中断请求
+  if (Vue.$httpRequestList.length > 0) { //强行中断时才向下执行
+    Vue.$httpRequestList.forEach(item => {
+      item('interrupt'); //给个标志,中断请求
     })
   }
   // NProgress.start()
   if (getToken()) {
-    store.dispatch('get_point_types').then((res) => {})
-    store.dispatch('get_site_info').then((res) => {})
-    store.dispatch('get_employee_map').then((res) => {}) // 取得员工列表的地图
-    store.dispatch('get_dept_tree').then((res) => {})// 获取部门树型结构列表
-    if (to.path === '/login') {
-      next({ path: '/' })
-      // NProgress.done()
-    } else {
-      if (!store.getters.user_info.id) { // 判断当前用户是否已拉取完user_info信息
-        store.dispatch('GetUserInfo').then(res => { // 拉取user_info
-          console.log(res)
-          // 设置title
-          document.title = ''
-          const mo_list = []
-          res.data['mo_list'] = []
-          for (const i in mo_list) {
-            res.data['mo_list'].push(mo_list[i].code)
-          }
-          const roles = ['admin']
-          store.dispatch('GenerateRoutes', { roles }).then(() => {
-            // 增加动态权限列表,在这里发送一个请求,得到路由
-            const addRouters = []
-            for (const item in store.getters.addRouters) {
-              const obj = []
-              for (const ritem in store.getters.addRouters[item].children) {
-                if (res.data.mo_list.indexOf(store.getters.addRouters[item].children[ritem].name) >= 0 || store.getters.addRouters[item].children[ritem].hidden === true || store.getters.addRouters[item].children[ritem].common === true) {
-                  obj.push(store.getters.addRouters[item].children[ritem])
-                }
-                obj.push(store.getters.addRouters[item].children[ritem])
-              }
-              if (obj.length > 0) {
-                const _R = store.getters.addRouters[item]
-                _R['children'] = obj
-                addRouters.push(_R)
-              }
-            }
-            router.addRoutes(addRouters) // 动态添加可访问路由表
-            next({ ...to, replace: true }) // hack方法 确保addRoutes已完成 ,set the replace: true so the navigation will not leave a history record
-          })
-        }).catch((err) => {
-          // console.log(err)
-          // 登出
-          // store.dispatch('LogOut')
-        })
-      } else {
-        // 没有动态改变权限的需求可直接next() 删除下方权限判断 ↓
-        if (hasPermission(store.getters.roles, to.meta.roles)) {
-          // removeToken()
-          wxAuth('',next);
-          // next()
-          // NProgress.start()
-        } else {
-          next({ path: '/401', replace: true, query: { noGoBack: true }})
-          // NProgress.start()
-        }
-      }
-    }
+    if (!store.state.user.token) store.commit("SET_TOKEN", getToken());
+    init(to, next)
+  } else if (cookGetToken()) {
+    localSetToken(cookGetToken())
+    store.commit("SET_TOKEN", getToken());
+    init(to, next)
   } else {
     if (whiteList.indexOf(to.path) !== -1 || window.location.href.indexOf('loginbytoken/') !== -1) { // 在免登录白名单,直接进入
       next()
@@ -92,7 +52,80 @@ router.beforeEach((to, from, next) => {
   }
 })
 
+function init(to, next) {
+  store.dispatch('get_point_types').then((res) => {})
+  store.dispatch('get_site_info').then((res) => {})
+  store.dispatch('get_employee_map').then((res) => {}) // 取得员工列表的地图
+  store.dispatch('get_dept_tree').then((res) => {}) // 获取部门树型结构列表
+  if (to.path === '/login') {
+    next({
+      path: '/'
+    })
+    // NProgress.done()
+  } else {
+    if (!store.getters.user_info.id) { // 判断当前用户是否已拉取完user_info信息
+      store.dispatch('GetUserInfo').then(res => { // 拉取user_info
+        console.log(res)
+        // 设置title
+        document.title = ''
+        const mo_list = []
+        res.data['mo_list'] = []
+        for (const i in mo_list) {
+          res.data['mo_list'].push(mo_list[i].code)
+        }
+        const roles = ['admin']
+        store.dispatch('GenerateRoutes', {
+          roles
+        }).then(() => {
+          // 增加动态权限列表,在这里发送一个请求,得到路由
+          const addRouters = []
+          for (const item in store.getters.addRouters) {
+            const obj = []
+            for (const ritem in store.getters.addRouters[item].children) {
+              if (res.data.mo_list.indexOf(store.getters.addRouters[item].children[ritem].name) >= 0 || store.getters.addRouters[item].children[ritem].hidden === true || store.getters.addRouters[item].children[ritem].common === true) {
+                obj.push(store.getters.addRouters[item].children[ritem])
+              }
+              obj.push(store.getters.addRouters[item].children[ritem])
+            }
+            if (obj.length > 0) {
+              const _R = store.getters.addRouters[item]
+              _R['children'] = obj
+              addRouters.push(_R)
+            }
+          }
+          router.addRoutes(addRouters) // 动态添加可访问路由表
+          next({
+            ...to,
+            replace: true
+          }) // hack方法 确保addRoutes已完成 ,set the replace: true so the navigation will not leave a history record
+        })
+      }).catch((err) => {
+        // console.log(err)
+        // 登出
+        // store.dispatch('LogOut')
+      })
+    } else {
+      // 没有动态改变权限的需求可直接next() 删除下方权限判断 ↓
+      if (hasPermission(store.getters.roles, to.meta.roles)) {
+        // removeToken()
+        wxAuth('', next);
+        // next()
+        // NProgress.start()
+      } else {
+        next({
+          path: '/401',
+          replace: true,
+          query: {
+            noGoBack: true
+          }
+        })
+        // NProgress.start()
+      }
+    }
+  }
+}
+
 router.afterEach((to, from) => {
   console.log(to)
   // NProgress.done() // finish progress bar
-})
+})

+ 1 - 1
src/router/index.js

@@ -21,7 +21,7 @@ export const constantRouterMap = [
   {
     path: '/login',
     name: 'login',
-    component: () => import('@/views/login/index1'),
+    component: () => import('@/views/login/index3'),
     hidden: true,
     meta: { pushindex : true},
   },

+ 4 - 0
src/store/modules/user.js

@@ -198,6 +198,10 @@ 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')

+ 9 - 1
src/utils/auth.js

@@ -6,9 +6,12 @@ const ATOKEN = 'atoken'
 const USER = 'user'
 const PASW = 'pasw'
 
-export function getToken() {
+export function cookGetToken() {
   return Cookies.get(TokenKey)
 }
+export function getToken() {
+  return localStorage.getItem(TokenKey)
+}
 export function getJtoken() {
   return Cookies.get(JTOKEN)
 }
@@ -22,6 +25,10 @@ export function getPasw() {
   return Cookies.get(PASW)
 }
 
+
+export function localSetToken(token) {
+  return localStorage.setItem(TokenKey, token)
+}
 export function setUser(value) {
   return Cookies.set('user', value, { expires: 365 })
 }
@@ -52,6 +59,7 @@ export function removeAoken() {
 }
 
 export function removeAllToken() {
+   localStorage.removeItem(TokenKey);
 	 Cookies.remove('user')
 	 Cookies.remove('pasw')
 	 Cookies.remove(TokenKey)

+ 17 - 14
src/utils/request.js

@@ -2,7 +2,7 @@ import axios from 'axios'
 import { Message, MessageBox } from 'element-ui'
 import store from '@/store'
 import Router from'@/router'
-import {getToken, removeAllToken, setToken} from '@/utils/auth'
+import {cookGetToken, getToken, removeAllToken, setToken} from '@/utils/auth'
 import qs from 'qs'
 import Vue from 'vue'
 // import moment from 'moment' // 时间库
@@ -18,8 +18,10 @@ const service = axios.create({
 })
 service.interceptors.request.use(
   config => {
-    if (store.getters.token) {
+    if(getToken()){
       config.headers['A-TOKEN'] = getToken()
+    }else if (store.getters.token) {
+      config.headers['A-TOKEN'] = cookGetToken()
     }
     // if (config.url == '/api/integral/statistics/ranking') {
     //   config.headers['Accept'] = 'application/vnd.test.v2+json'
@@ -62,18 +64,19 @@ service.interceptors.response.use(
     // }else 
     if (res.code === 401) {
       // 50008:非法的token; 50012:其他客户端登录了;  401:Token 过期了; 2000 考勤系统的token过期
-      MessageBox.confirm('当前登录授权时间已经过期,请重新授权登录', '确定登出', {
-        confirmButtonText: '重新登录',
-        showClose: false,
-        closeOnClickModal: false,
-        closeOnPressEscape: false,
-        showCancelButton: false,
-        type: 'warning'
-      }).then(() => {
-        store.dispatch('LogOut');
-      }).catch(() => {
-        store.dispatch('LogOut');
-      })
+      // MessageBox.confirm('当前登录授权时间已经过期,请重新授权登录', '确定登出', {
+      //   confirmButtonText: '重新登录',
+      //   showClose: false,
+      //   closeOnClickModal: false,
+      //   closeOnPressEscape: false,
+      //   showCancelButton: false,
+      //   type: 'warning'
+      // }).then(() => {
+      //   store.dispatch('LogOut');
+      // }).catch(() => {
+      //   store.dispatch('LogOut');
+      // })
+      store.dispatch('LogOut');
       return Promise.reject('error')
     } else if (res.code === 0) {
       if (res.msg == '') {

+ 5 - 1
src/utils/wx-auth-two.js

@@ -9,10 +9,13 @@ import moment from 'moment' // 时间库
 
 export const wxAuth = async (pushindex, next) => {
   const wechatConfigUrl = location.href.split('#')[0]
+  // const wechatConfigUrl = location.href.split("?")[1].split("=")[1]
   console.log('获取url')
+  console.log(location.href)
   console.log(wechatConfigUrl)
   console.log(window.wechatConfigUrl)
-  if (window.wechatConfigUrl === wechatConfigUrl) {
+  console.log(window.WWOpenData)
+  if (window.wechatConfigUrl === wechatConfigUrl && window.WWOpenData) {
     if (next) {
       next()
     }
@@ -115,6 +118,7 @@ async function wxConfigByCorp(body, pushindex, next) {
 
     } else {
       console.log('pc端')
+      console.log(appSignature)
       Vue.prototype.$wx.agentConfig({ //鉴权(应用的身份与权限)
         corpid: appSignature.corpid, // 必填,企业微信的corpid,必须与当前登录的企业一致
         agentid: appSignature.agentid, // 必填,企业微信的应用id (e.g. 1000247)

+ 903 - 930
src/views/common/EmployeeSelector.vue

@@ -1,126 +1,124 @@
 <template>
   <el-dialog
     :title="title"
-    :visible.sync="visible_" :close-on-click-modal="false" :before-close="close_before" append-to-body @close='closeDialog'
-    width="640px" class="employee_select_dialog">
-    <div class="employee_selector_box" v-loading="selectApersonModuleLoad">
+    :visible.sync="visible_"
+    :close-on-click-modal="false"
+    :before-close="close_before"
+    append-to-body
+    @open="openDialog"
+    width="640px"
+    class="employee_select_dialog"
+  >
+    <slot name="header"></slot>
+    <div class="employee_selector_box" v-if="visible_">
       <el-row :gutter="10">
-        <el-col :xs="11" :sm="11" :md="11" :lg="11" :xl="11" class="scroller-box">
-
+        <el-col :xs="11" :sm="11" :md="11" :lg="11" :xl="11" class="scroller-box one">
           <div class="search-box">
-            <div class="search">
-            <el-button slot="append" icon="el-icon-search" class="manager_button"></el-button>
-            <el-input v-model="keyword" placeholder="请输入内容"></el-input>
+            <!-- <div class="search flex-box"><el-input v-model="keyword" placeholder="请输入内容" clearable></el-input></div> -->
+            <div class="search flex-box dept_icon" style="margin-top: 7px; width: 80%; position: relative;">
+              <deptData  v-if="toPdept1 && toPdept1!=0" :refsName="$refs.dept1" :toPdept="toPdept1" style="width: 79%;"></deptData>
+              <el-cascader
+                v-show="can_select_employee&&deptId==0"
+                v-model="dept_id"
+                :options="dept_list"
+                :props="{ checkStrictly: true, value: 'id', label: 'name', children: 'children' }"
+                @change="dept1_null"
+                ref="dept1"
+                filterable
+                :disabled="deptId > 0"
+                change-on-select
+                placeholder="请选择部门"
+                clearable
+              >
+                <template slot-scope="{ node, data }">
+                  <span>
+                    <WWOpenData type="departmentName" :openid="data.name"></WWOpenData>
+                  </span>
+                </template>
+              </el-cascader>
             </div>
           </div>
-          <div class="dept_path">
-            <a href="javascript:void(0);" @click="back_by_index(0)">全公司</a>
-            <a
-              v-for="(item, index) in pid_list_arr"
-              :key="index"
-              href="javascript:void(0);"
-              @click="back_by_index(index + 1)"
-            >
-              <i class="el-icon-arrow-right"></i>
-              <wwOpenDAta type="departmentName" :openid="item.name"></wwOpenDAta>
-            </a>
+
+          <div class="dept_path scroll-bar flex-box flex-d-wrap" v-if="can_select_dept">
+            <template v-if="pid_list_arr.length > 0">
+              <div @click="back_by_index(0)" class="blue" style="cursor: pointer;">全公司</div>
+              <div v-for="(item, index) in pid_list_arr" :key="index" @click="back_by_index(index + 1, item)" class="font-flex-word" style="max-width: 120px;">
+                <i class="el-icon-arrow-right"></i>
+                <span class="blue" style="cursor: pointer;">
+                  <WWOpenData type="departmentName" :openid="item.name"></WWOpenData>
+                  <!-- {{ item.name }} -->
+                </span>
+              </div>
+            </template>
+          </div>
+		  <!-- 人员 -->
+          <div class="flex-box-end" v-if="can_select_employee && isChecKedAll && multi" style="padding: 10px;border-bottom: 1px solid #f1f1f1;">
+            <el-checkbox v-model="checked" @change="checkedChange">全选</el-checkbox>
           </div>
-          <el-checkbox v-if="isChecKedAll" v-model="checked" @change="checkedChange" >全选</el-checkbox>
           <el-scrollbar
             wrap-class="column-wrapper scrollable-items-container"
             :native="false"
-            :class="isChecKedAll?'scrollbarHeight1':'scrollbarHeight2'"
+            :class="(can_select_dept || isChecKedAll)? 'scrollbarHeight1' : 'scrollbarHeight2'"
+            v-loading="table_loading"
           >
             <div class="choose_left">
-              <div v-if="hidden_department">
-              </div>
-              <a href="javascript:void(0)" v-for="(item,index) in dept_list" :key="index" v-else>
-                <div class="employee_cell" @click.stop="select_dept(item)"
-                     v-show="item.pid == pid && item.name.indexOf(keyword) >= 0 && dept_not_select.indexOf(item.id) < 0">
-
-                  <div class="employee_checkbox" style="position: relative;">
-                    <el-checkbox v-if="can_select_dept" v-model="item.checked"></el-checkbox>
-                    <div style=" position: absolute; top: 0; left: 0; right: 0; bottom: 0; z-index: 5;"></div>
-                  </div>
-                  <div class="employee_name">
-                    <wwOpenDAta type="departmentName" :openid="item.name"></wwOpenDAta>
-                  </div>
-
-                  <div v-if="can_select_dept" class="dept_child_cell">
-                    <span href="javascript:void(0);" class="child_btn" @click.stop="show_child(item)">
-                      | 下级
-                    </span>
+              <template v-if="can_select_dept">
+                <div class="persons_box" style="padding-top:4px;" v-if="dept_list.length > 0">
+                  <div v-for="(item, index) in dept_list" :key="index">
+                    <div class="flex-box flex-v-ce deptList" @click="select_dept(item, index)" v-show="item.name.indexOf(keyword) >= 0">
+                      <div :class="[item.checked? 'showCheckbox':'']" class="checkbox"><span class="isCheckbox"></span></div>
+                      <div class="employee_name flex-1 font-flex-word">
+                        <!-- {{ item.name }} -->
+                        <WWOpenData type="departmentName" :openid="item.name"></WWOpenData>
+                      </div>
+                      <div v-if="item.children" class="blue" @click.stop="show_child(item)">| 下级</div>
+                    </div>
                   </div>
-
-                  <div class="employee_cell_clear"></div>
-
                 </div>
-              </a>
-
-              <div class="persons_box" style="padding-top:4px;">
-                <a class="employee_cell_a" href="javascript:void(0)" v-for="(item,index) in list" :key="index">
-                  <div class="employee_cell" v-if="can_select_employee" @click="select_employee(item)"
-                       v-show="employee_not_select.indexOf(item.id) < 0">
-
-                    <div class="employee_checkbox" style="position: relative;">
-                      <!-- <el-checkbox v-model="item.checked"></el-checkbox> -->
-                      <el-checkbox v-model="item.checked" v-if="selectedQuitEmployee" :style="item.status > 1 || employee_not_select.indexOf(item.id) > 0?'opacity: 0':'opacity: 1'" ></el-checkbox>
-                      <el-checkbox v-model="item.checked" v-if="!selectedQuitEmployee" :style="item.status > 1 || employee_not_select.indexOf(item.id) > 0?'opacity: 0':'opacity: 1'" ></el-checkbox>
-                      <div style=" position: absolute; top: 0; left: 0; right: 0; bottom: 0; z-index: 5;"></div>
-                    </div>
-                    <div class="employee_img_url">
-                      <img :src="item.img_url" class="employee_cell_head_img"/>
+              </template>
+              <template v-if="can_select_employee">
+                <div class="persons_box" style="padding-top:4px;" v-if="list.length > 0">
+                  <div class="employee_cell_a" v-for="(item, index) in list" :key="index" v-show="item.id">
+                    <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"><img :src="item.img_url" class="employee_cell_head_img" /></div>
+                      <div class="employee_name">
+                        <WWOpenData type="userName" :openid="item.name"></WWOpenData>
+                        <!-- {{ item.name }} -->
+                      </div>
+                      <div class="employee_cell_clear"></div>
                     </div>
-                    <div class="employee_name">
-                      <!-- {{item.name}} -->
-                      <wwOpenDAta type="userName" :openid="item.name"></wwOpenDAta>
-                      {{item.direct_Supervisor?'(直属上级)':''}}
-                    </div>
-                    <div class="employee_cell_clear"></div>
-
                   </div>
-                </a>
-              </div>
-
+                </div>
+                <div v-else class="fontColorF" style="text-align: center;margin-top: 50px;">暂无可选人员</div>
+              </template>
             </div>
-
-
           </el-scrollbar>
         </el-col>
         <el-col :xs="2" :sm="2" :md="2" :lg="2" :xl="2" class="col-line"><span style="opacity: 0;">空</span></el-col>
         <el-col :xs="11" :sm="11" :md="11" :lg="11" :xl="11" class="scroller-box">
           <div class="option-box">
+            <span style="line-height: 40px; padding-left: 10px;" class="fl" v-if="multi && can_select_employee">已选择{{ employee_selected_list.length }}个员工</span>
             <el-button type="type" @click="clear_data">清空</el-button>
           </div>
-          <el-scrollbar
-            wrap-class="column-wrapper scrollable-items-container"
-            :native="false"
-            style="height: 354px;"
-          >
+          <el-scrollbar wrap-class="column-wrapper scrollable-items-container" :native="false" style="height: 400px;">
             <div class="choose_right">
-              <div class="employee_cell" v-for="(item,index) in dept_selected_list" :key="index">
-
+              <div class="employee_cell" v-for="(item, index) in dept_selected_list" :key="index">
                 <div class="employee_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>
+                  <WWOpenData type="departmentName" :openid="item.dept_name"></WWOpenData>
+                  <!-- {{ item.dept_name }} -->
                 </div>
+                <div class="employee_delete"><el-button type="default" size="mini" @click="dept_delete(item, index)" icon="el-icon-close" circle></el-button></div>
                 <div class="employee_cell_clear"></div>
               </div>
-
-              <div class="employee_cell" v-for="(item,index) in employee_selected_list" :key="index">
-                <div class="employee_img_url">
-                  <img :src="item.img_url" class="employee_cell_head_img"/>
-                </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"><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_name">
-                  <!-- {{item.name}} -->
-                  <wwOpenDAta type="userName" :openid="item.name"></wwOpenDAta>
-                  <span v-if="direct_Supervisor_you">{{item.id==directSupervisor?'(直属上级)':''}}</span>
-                </div>
-                <div class="employee_delete">
-                  <el-button type="default" size="mini" @click="employee_cancel(item)" icon="el-icon-close" circle></el-button>
+                  <WWOpenData type="userName" :openid="item.name"></WWOpenData>
+                  <!-- {{ item.name }} -->
                 </div>
+                <div class="employee_delete"><el-button type="default" size="mini" @click="employee_cancel(item, true)" icon="el-icon-close" circle></el-button></div>
                 <div class="employee_cell_clear"></div>
               </div>
             </div>
@@ -128,898 +126,873 @@
         </el-col>
       </el-row>
     </div>
-
     <span slot="footer" class="dialog-footer">
-    <el-button @click="close">取 消</el-button>
-    <el-button type="primary" @click="confirm">确 定</el-button>
-  </span>
-
-
+      <el-button @click="close">取 消</el-button>
+      <el-button type="primary" @click="confirm">确 定</el-button>
+    </span>
   </el-dialog>
 </template>
 
 <script>
-
-  export default {
-    props:{
-      title:{
-        type: String,
-        default: "选择部门和员工"
-      },
-      isChecKedAll: {
-        type: Boolean,
-        default: false
-      },
-      whether_to_remove_right: {
-        type: Boolean,
-        default: false
-      },
-      hidden_department: {
-        type: Boolean,
-        default: false
-      },
-      append_body: {
-        type: Boolean,
-        default: false
-      },
-      visible: {
-        type: Boolean,
-        default: false
-      },
-      can_select_dept: {
-        type: Boolean,
-        default: true
-      },
-      can_select_employee: {
-        type: Boolean,
-        default: true
-      },
-      employee_not_select: {
-        type: Array,
-        default: () => {
-          return []
-        }
-      },
-      dept_not_select: {
-        type: Array,
-        default: () => {
-          return []
-        }
-      },
-      selected: {
-        type: Object,
-        default: () => {
-          return {employee: [], dept: []}
-        }
-      },
-      multi: {
-        type: Boolean,
-        default: true
-      },
-      dept_multi: {
-        type: Boolean,
-        default: true
-      },
-      employee_list: {
-        type: Array,
-        default: () => {
-          return []
-        }
-      },
-      selectedQuitEmployee:{
-        type: Boolean,
-        default: true
-      },
-      close_clear_data: {
-        type: Boolean,
-        default: true
-      },
-      max: {
-        type: Number,
-        default: 0
-      },
-      use_employee_list: {
-        type: Boolean,
-        default: false
+export default {
+  props: {
+    title: {
+      // 标题
+      type: String,
+      default: '选择部门和员工'
+    },
+    deptId: {
+      //指定部门ID,人员列表就是该部门的
+      type: Number,
+      default: 0
+    },
+    visible: {
+      // 是否显示组件
+      type: Boolean,
+      default: false
+    },
+    can_select_dept: {
+      // 是否能选择部门(单选择部门,不能选择人员)
+      type: Boolean,
+      default: false
+    },
+    dept_not_select: {
+      // 排除部门ID
+      type: Array,
+      default: () => {
+        return [];
+      }
+    },
+    dept_multi: {
+      // 指定部门是否能多选
+      type: Boolean,
+      default: true
+    },
+    dept_children: {
+      //选择部门时是否包含子部门
+      type: Boolean,
+      default: true
+    },
+    can_select_employee: {
+      // 指定是否能选择员工
+      type: Boolean,
+      default: true
+    },
+    employee_not_select: {
+      // 排除员工的ID,包含ID时不出现在选择列表中
+      type: Array,
+      default: () => {
+        return [];
+      }
+    },
+    selected: {
+      // 已经选择的员工和部门
+      type: Object,
+      default: () => {
+        return { employee: [], dept: [] };
+      }
+    },
+    multi: {
+      // 指定员工是否能多选
+      type: Boolean,
+      default: true
+    },
+    user_employee_list: {
+      // 为true时,employee_list才生效
+      type: Boolean,
+      default: false
+    },
+    employee_list: {
+      // 指定显示的员工列表,注意:传值后组件的员工数据将不是统一向服务器获取的,而是指定的员工列表,格式是:[{id: 1, name: “张三”, img_url: “”}]
+      type: Array,
+      default: () => {
+        return [];
+      }
+    },
+    isChecKedAll: {
+      //是否全选
+      type: Boolean,
+      default: true
+    },
+    close_clear_data: {
+      //关闭时是否清除选择的数据
+      type: Boolean,
+      default: true
+    },
+    max: {
+      //选择的人数限制
+      type: Number,
+      default: 0
+    },
+    is_filtration_creator: {
+      //是否去除创始人
+      type: Boolean,
+      default: true
+    },
+    is_manager_only: {
+      //是否只显示管理者
+      type: Boolean,
+      default: false
+    },
+    include_self: {
+      //是否显示自己
+      type: Boolean,
+      default: true
+    },
+    child:{
+      //当人员列表点击部门筛选时不显示子部门人员 ,目前只在设置主管有使用到
+      type: Boolean,
+      default: true
+    },
+    isRequired:{
+      //是否必须选择人员或者部门
+      type: Boolean,
+      default: false
+    }
+  },
+  name: 'EmployeeSelector',
+  data() {
+    return {
+      // 基础配置
+      table_loading: false,
+      searchBox: [], //用于搜索的全部人员
+      keyword: '',
+      checked: false,
+      visible_: false,
+      // 选择人员相关
+      employee_selected_list: [],
+      employee_selected: [],
+      list: [],
+      // 选择部门相关
+      dept_selected_list: [],
+      dept_name: '',
+      dept_id: [],
+      dept_select_id: 0,
+      dept_list: [],
+      dept_list_all: [], //备用全部部门
+      pid_list_arr: [],
+      toPdept1:0,//选择部门的遮到
+    };
+  },
+  watch: {
+    // 当动态改变“employee_list”时,获取employee_list与employee_selected_list的交集,用于考勤组功能
+    employee_list(val) {
+      var eSList = this.employee_selected_list;
+      this.employee_selected_list = [...eSList].filter(x => [...val].some(y => y.id === x.id));
+    },
+    visible(val) {
+      this.visible_ = JSON.parse(JSON.stringify(val));
+      if (val) {
+        setTimeout(() => {
+          this.get_user_list();
+          this.get_dept_list();
+        }, 200);
       }
     },
-    name: "EmployeeSelector",
-    data() {
-      let selected = JSON.parse(JSON.stringify(this.selected))
-      return {
-        selectApersonModuleLoad:false,
-        searchBox:[],
-        direct_Supervisor_you:false,
-        directSupervisor:0,
-        dialogVisible: true,
-        employee_selected_list: selected.employee,
-        dept_selected_list: selected.dept,
-        employee_selected: [],
-        dept_selected: [],
-        com_height: '100%',
-        company_info: {},
-        actions_show: false,
-        dept_name: '',
-        dept_id: 0,
-        list: [],
-        dept_list: [],
-        keyword: '',
-        owner_id: 0,
-        user_info: this.$store.getters.user_info,
-        pid: 0,
-        pid_list: [],
-        selected_box_width: '0',
-        pid_list_arr: [],
-        visible_: false,
-        checked: false//全选按钮
+    // dept_id(val) {
+    //   this.dept_select_id = val[val.length - 1];
+    //   this.$nextTick(() => {
+    //     if (this.can_select_employee) {
+    //       this.$refs.dept.dropDownVisible = false;
+    //     }
+    //     this.get_user_list();
+    //     this.checked = false;
+    //   });
+    // },
+    keyword(val) {
+      this.list = this.searchBox.filter(item => item.name.includes(this.keyword));
+      if (!val) {
+        this.checked = false;
+      }
+    }
+  },
+  methods: {
+    dept1_null(val){
+      this.toPdept1 = val[val.length-1]
+      let valItem = 0
+      for(let i in val){
+        valItem = val[i]
       }
+      this.get_user_list(valItem);
+      this.checked = false;
+      this.$nextTick(()=>{
+        this.$refs.dept1.dropDownVisible = false;
+      })
+    },
+    //打开Dialog的回调,用刷每次打开都初始化selected
+    openDialog() {
+      if (this.deptId != 0) {
+        this.dept_id = [this.deptId];
+        this.dept_select_id = this.deptId;
+      }
+      let selected = this.selected;
+      this.employee_selected = [];
+      this.employee_selected_list = JSON.parse(JSON.stringify(selected.employee));
+      this.dept_selected_list =JSON.parse(JSON.stringify(selected.dept));
+      for (let i in selected.employee) {
+        this.employee_selected.push(selected.employee[i].id);
+      }
+    },
+    close_before(done) {
+      this.close();
+      done();
     },
-    watch: {
-      max(val) {
-        this.set_button_width()
-      },
-      selected:{
-        deep:true,
-        handler(val){
-          let selected = JSON.parse(JSON.stringify(val))
-          this.employee_selected = []
-          this.dept_selected = []
-          this.employee_selected_list = selected.employee
-          this.dept_selected_list = selected.dept
-          for (let i in selected.employee) {
-            if (!selected.employee[i].img_url) {
-              this.$set(this.selected.employee[i], 'img_url', 'static/images/head_default.png')
+    // 全选(只用选择人员)
+    checkedChange(val) {
+      if (val) {
+        this.$nextTick(() => {
+          let employeeSelectedList = JSON.parse(JSON.stringify(this.employee_selected_list)); //获取选择的人员
+          let employeeSelectedIds = [],
+            total = 0;
+          employeeSelectedList.forEach(element => {
+            employeeSelectedIds.push(element.id);
+          });
+          for (let i in this.list) {
+            this.$set(this.list[i], 'checked', true);
+            if (!employeeSelectedIds.includes(this.list[i].id)) {
+              //去除已经选择的人员
+              this.employee_selected_list.push(this.list[i]);
             }
-            this.employee_selected.push(selected.employee[i].id)
-          }
-          for(let i in selected.dept){
-            this.dept_selected.push(selected.dept[i].dept_id)
           }
-          this.set_button_width()
+        });
+      } else {
+        this.employee_selected_list = [];
+        this.employee_selected = [];
+        for (let i in this.list) {
+          this.$set(this.list[i], 'checked', false);
         }
-      },
-      // selected(val) {
-      //   let selected = JSON.parse(JSON.stringify(val))
-      //   this.employee_selected = []
-      //   this.dept_selected = []
-      //   this.employee_selected_list = selected.employee
-      //   this.dept_selected_list = selected.dept
-      //   for (let i in selected.employee) {
-      //     this.employee_selected.push(selected.employee[i].id)
-      //   }
-      //   for(let i in selected.dept){
-      //     this.dept_selected.push(selected.dept[i].dept_id)
-      //   }
-      //   this.set_button_width()
-      // },
-      visible(val){
-        this.visible_ = JSON.parse(JSON.stringify(val))
-        if(val){
-          this.selectApersonModuleLoad = true
-          setTimeout(() => {
-            if (this.$route.query.pid) {
-              this.pid = this.$route.query.pid
-            }
-            this.get_user_list(function () {
-
-            })
-            this.get_dept_list()
-          }, 200)
+      }
+    },
+    // 点击部门导航
+    back_by_index(index, item) {
+      this.pid_list_arr.splice(index, 100);
+      if (index == 0) {
+        this.dept_list = this.dept_list_all;
+        return false;
+      }
+      if (item.children) {
+        this.dept_list = item.children;
+      }
+    },
+    //下一级
+    show_child(item) {
+      if (item.children) {
+        this.dept_list = item.children;
+      }
+      this.pid_list_arr.push(item);
+    },
+    //获取一个部门的下的所有子部门
+    getChildrens(list) {
+      var dept_list = [];
+      list.forEach(item => {
+        item.checked = true;
+        dept_list.push({ dept_id: item.id, dept_name: item.name, avatar: 'static/images/e66f.jpg' });
+        if (item.children) {
+          dept_list.push(...this.getChildrens(item.children));
         }
-        this.set_button_width()
-      },
-      employee_selected_list() {
-        let l = this.employee_selected_list.length + this.dept_selected_list.length
-        let width = 0.9 * l;
-        this.selected_box_width = width + 'rem'
-        this.set_button_width()
-        
-        this.checkAll_Optimize()//全选细节优化,选中发生变化时执行
-      },
-      dept_selected_list() {
-        let l = this.employee_selected_list.length + this.dept_selected_list.length
-        let width = 0.9 * l;
-        this.selected_box_width = width + 'rem'
-        this.set_button_width()
-      },
-      keyword(val) {
-        this.list = this.searchBox.filter(item=> item.name.includes(this.keyword))
-        // this.get_user_list(function () {
-
-        // })
-      },
-      
-      list(){
-        this.checkAll_Optimize()//全选细节优化,人员列表发生变化时执行
-      },
+      });
+      return dept_list;
     },
-    methods: {
-      //全选细节优化
-      checkAll_Optimize(){
-        let checkedTrue = true
-        for(let i in this.list){
-          if(this.list[i].status!=2 && this.list[i].status!=3){//排除人员列表中的离职和拒绝加入人员
-            if(this.list[i].checked == false){
-              checkedTrue = false
-            }
+    //选择部门
+    select_dept(item, index) {
+      if (item.checked) {
+        this.dept_cancel(item);
+      } else {
+        if (!this.dept_multi) {
+          //是否能多选
+          this.dept_selected_list = [];
+          for (let i in this.dept_list_all) {
+            this.dept_cancel(this.dept_list_all[i], true);
           }
         }
-        if(checkedTrue){
-          if(this.list.length != 0){
-            this.checked = true
-          }else{
-            this.checked = false
-          }
-        }else{
-          this.checked = false
+        item.checked = true;
+        if (item.children && this.dept_children) {
+          //是否存在子部门
+          this.dept_selected_list.push({ dept_id: item.id, dept_name: item.name, avatar: 'static/images/e66f.jpg' });
+          var arr = this.getChildrens(item.children);
+          this.dept_selected_list.push(...arr);
+        } else {
+          this.dept_selected_list.push({ dept_id: item.id, dept_name: item.name, avatar: 'static/images/e66f.jpg' });
         }
-      },
-      //关闭弹窗清除数据
-      closeDialog(){
-          this.direct_Supervisor_you = false
-      },
-      // 全选
-      checkedChange(val){
-        if (val) {
-          for (let i in this.list) {
-            if (this.employee_not_select.indexOf(this.list[i].id) < 0) {
-              this.$set(this.list[i], 'checked', true)
-            }
-          }
-          this.$nextTick(() => {
-            let employeeSelectedList = JSON.parse(JSON.stringify(this.employee_selected_list))
-            let employeeSelectedIds = [], total = 0
-            employeeSelectedList.forEach(element => {
-              employeeSelectedIds.push(element.id)
-            });
-            for (const i in this.list) {
-              this.list[i].status !== 2 && this.list[i].status !== 3 && this.selectedQuitEmployee?this.$set(this.list[i], 'checked', true):''
-              if (employeeSelectedIds.includes(this.list[i].id)) {
-                total += 1
-              }else{
-                this.list[i].status !== 2 && this.list[i].status !== 3 && this.selectedQuitEmployee?this.employee_selected_list.push(this.list[i]):''
-              }
-            }
-            // debugger
-          })
-        }else{
-            for(let i in this.employee_selected_list){
-              for(let a in this.list){
-                if(this.list[a].status!=2 && this.list[a].status!=3){//排除人员列表中的离职和拒绝加入人员
-                  if(this.employee_selected_list[i].id == this.list[a].id){
-                    this.employee_selected_list.splice(i,1)
-                  }
-                }
-              }
-            }
-          // this.employee_selected_list = []
-          // this.employee_selected = []
-          for (let i in this.list) {
-            this.$set(this.list[i], 'checked', false)
+      }
+    },
+    //清除选择的部门
+    dept_cancel(item, is) {
+      item.checked = false;
+      if (item.children) {
+        //左边
+        item.children.forEach(childrens => {
+          this.dept_cancel(childrens);
+        });
+      }
+      if (is) {
+        return false;
+      }
+      var deptSelectedList = this.dept_selected_list;
+      deptSelectedList.forEach((dept, index) => {
+        //右边
+        if (dept.dept_id == item.id) {
+          deptSelectedList.splice(index, 1);
+        }
+      });
+    },
+    //删除部门
+    dept_delete(item) {
+      var dept_list = this.dept_list;
+      var obj = this.getDeptz(item.dept_id, dept_list); //递归找到所属部门
+      this.dept_cancel(obj);
+    },
+    // 递归获取指定ID部门
+    getDeptz(id, arr) {
+      var obj = {};
+      for (let i = 0; i < arr.length; i++) {
+        if (id == arr[i].id) {
+          obj = arr[i];
+          break;
+        } else if (arr[i].children) {
+          if (this.getDeptz(id, arr[i].children).id) {
+            obj = this.getDeptz(id, arr[i].children);
           }
-          // this.clear_data()
         }
-      },
-
-      close_before(done) {
-        this.close()
-      },
-      set_button_width() {
-
-      },
-      back() {
-        this.pid = this.pid_list[this.pid_list.length - 1]
-        this.pid_list.splice(this.pid_list.length - 1)
-        this.pid_list_arr.splice(this.pid_list_arr.length - 1)
-        this.get_user_list(function () {
-
-        })
-      },
-      back_by_index(index) {
+      }
+      return obj;
+    },
 
-        if (index == this.pid_list.length) {
-          return false
+    //清除选择的人员
+    employee_cancel(item) {
+      this.checked = false;
+      this.employee_selected.splice(this.employee_selected.indexOf(item.id), 1);
+      let delete_index = -1;
+      for (let i in this.employee_selected_list) {
+        if (this.employee_selected.indexOf(this.employee_selected_list[i].id) < 0) {
+          delete_index = i;
+        }
+      }
+      if (delete_index >= 0) {
+        for (let i in this.list) {
+          if (this.list[i].id == item.id) {
+            this.$set(this.list[i], 'checked', false);
+          }
         }
-        this.pid = this.pid_list[index]
-        this.pid_list.splice(index, 100)
-        this.pid_list_arr.splice(index, 100)
-        this.get_user_list(function () {
-
-        })
-      },
-      show_child(item) {
-        this.pid_list.push(this.pid)
-        this.pid_list_arr.push(item)
-        this.pid = item.id
-        this.get_user_list(function () {
-
-        })
-      },
-      employee_cancel(item) {
-
-        this.employee_selected.splice(this.employee_selected.indexOf(item.id), 1)
-        let delete_index = -1
         for (let i in this.employee_selected_list) {
-          if (this.employee_selected.indexOf(this.employee_selected_list[i].id) < 0) {
-            delete_index = i
+          if (this.employee_selected_list[i].id == item.id) {
+            this.employee_selected_list.splice(i, 1);
           }
         }
-        if (delete_index >= 0) {
-          // this.employee_selected_list.splice(delete_index, 1)
+      }
+    },
+    //选择人员
+    select_employee(item) {
+      if (item.checked) {
+        item.checked = false;
+        this.employee_cancel(item);
+      } else {
+        if (!this.multi) {
+          this.employee_selected = [];
+          this.employee_selected_list = [];
           for (let i in this.list) {
-            if (this.list[i].id == item.id) {
-              this.$set(this.list[i], 'checked', false)
-            }
-          }
-          
-          for(let i in this.employee_selected_list){
-            if(this.employee_selected_list[i].id == item.id){
-              this.employee_selected_list.splice(i, 1)
-            }
+            this.$set(this.list[i], 'checked', false);
           }
         }
-      },
-      dept_cancel(item) {
-        this.dept_selected.splice(this.dept_selected.indexOf(item.dept_id), 1)
-        let delete_index = -1
-        for (let i in this.dept_selected_list) {
-          // if (this.dept_selected.indexOf(this.dept_selected_list[i].dept_id) < 0) {
-          //   delete_index = i
-          // }
-          if(this.dept_selected_list[i].dept_id == item.id){
-            delete_index = i
-          }
-          if(this.dept_selected_list[i].dept_id == item.dept_id){
-            delete_index = i
-          }
+        if (this.max > 0 && this.employee_selected.length == this.max && this.multi) {
+          this.$message.error('最多只能选择' + this.max + '人');
+          return false;
         }
-        if (delete_index >= 0) {
-          this.dept_selected_list.splice(delete_index, 1)
-          for(let i in this.dept_list){
-            if(this.dept_list[i].id == item.dept_id){
-              this.$set(this.dept_list[i], 'checked', false)
-            }
-          }
+        this.employee_selected.push(item.id);
+        this.employee_selected_list.push({ id: item.id, name: item.name, img_url: item.img_url });
+        item.checked = true;
+      }
+    },
+
+    //清空
+    clear_data() {
+      this.checked = false;
+      this.employee_selected = [];
+      this.employee_selected_list = [];
+      this.dept_selected_list = [];
+      for (let i in this.list) {
+        this.$set(this.list[i], 'checked', false);
+      }
+      for (let i in this.dept_list) {
+        this.$set(this.dept_list[i], 'checked', false);
+      }
+      for (let i in this.dept_list_all) {
+        this.$set(this.dept_list_all[i], 'checked', false);
+      }
+    },
+    //关闭||清空数据
+    close() {
+      this.$emit('update:visible', false);
+      if (this.close_clear_data) {
+        this.checked = false;
+        this.keyword='';
+        this.employee_selected = [];
+        this.employee_selected_list = [];
+        this.dept_selected_list = [];
+        this.pid_list_arr=[];
+        for (let i in this.list) {
+          this.$set(this.list[i], 'checked', false);
         }
-      },
-      select_employee(item){
-        if (this.selectedQuitEmployee) {
-          if (this.employee_not_select.indexOf(item.id) >= 0 || item.status > 1) {
-            return false
-          }
-        }else{
-          if (this.employee_not_select.indexOf(item.id) >= 0) {
-            return false
-          }
+        for (let i in this.dept_list) {
+          this.$set(this.dept_list[i], 'checked', false);
         }
-
-        if(item.checked){
-          item.checked = false
-          this.employee_cancel(item)
-        } else {
-          if (!this.multi) {
-            this.employee_selected = []
-            this.employee_selected_list = []
-            for (let i in this.list) {
-              this.$set(this.list[i], 'checked', false)
-            }
-          }
-          if (this.max > 0 && this.employee_selected.length == this.max && this.multi) {
-            this.$toast('最多只能选择' + this.max + '人')
-            return false
-          }
-          this.employee_selected.push(item.id)
-          this.employee_selected_list.push({id: item.id, name: item.name, img_url: item.img_url,direct_Supervisor:item.direct_Supervisor})
-          item.checked = true
+        for (let i in this.dept_list_all) {
+          this.$set(this.dept_list_all[i], 'checked', false);
         }
-        
-        WWOpenData.bind(this.$el)
-      },
-      unique(arr){
-        return Array.from(new Set(arr))
-      },
-      select_dept(item) {
-        if (!this.can_select_dept) {
-          this.show_child(item)
-          return false
+      }
+    },
+    // 确定
+    confirm() {
+      if(this.isRequired){
+        if(this.employee_selected_list.length==0){
+           this.$message.error("请选择人员");
+           return false
         }
-        if (item.checked) {
-          item.checked = false
-          this.dept_cancel(item)
+      }
+      this.$emit('confirm', {
+        employee: this.employee_selected_list,
+        dept: this.dept_selected_list
+      });
+      this.close();
+    },
+    // 获取部门
+    get_dept_list() {
+      this.$http('get', '/api/department/tree', '').then(res => {
+        var list = res.data.data.list;
+        var dept_list = [];
+        // 排除部门
+        if (this.dept_not_select.length > 0) {
+          dept_list = list.filter(item => {
+            return this.dept_not_select.indexOf(item.id) == -1;
+          });
         } else {
-          if (!this.dept_multi) {
-            this.dept_selected = []
-            this.dept_selected_list = []
-            for (let i in this.dept_list) {
-              this.$set(this.dept_list[i], 'checked', false)
-            }
-          }
-          let dept_sele = this.dept_selected
-          dept_sele.push(item.id)
-          this.dept_selected =this.unique(dept_sele)
-          // this.dept_selected.push(item.id)
-          // let dept_sele = new Set(this.dept_selected)
-          // this.dept_selected = this.unique(this.dept_selected)
-          this.dept_selected_list.push({dept_id: item.id, dept_name: item.name, avatar: 'static/images/e66f.jpg'})
-          let newobj = {};
-            this.dept_selected_list = this.dept_selected_list .reduce((preVal, curVal) => {
-              newobj[curVal.dept_id] ? '' : newobj[curVal.dept_id] = preVal.push(curVal);
-              return preVal
-            }, [])
-          item.checked = true
+          dept_list = list;
         }
-
-      },
-      clear_data(){
-        this.employee_selected = []
-        this.employee_selected_list = []
-        this.dept_selected = []
-        this.dept_selected_list = []
-        for (let i in this.list) {
-          this.$set(this.list[i], 'checked', false)
+        dept_list = this.getTreeData(dept_list); //过滤children
+        //默认选中部门
+        if (this.dept_selected_list.length > 0) {
+          this.dept_selected_list.forEach(item => {
+            this.setDeptChecked(item.dept_id, dept_list);
+          });
         }
-        for (let i in this.dept_list) {
-          this.$set(this.dept_list[i], 'checked', false)
+        this.dept_list = dept_list;
+        this.dept_list_all = this.dept_list;
+      });
+    },
+    //设置默认部门
+    setDeptChecked(id, arr) {
+      for (let i = 0; i < arr.length; i++) {
+        if (id == arr[i].id) {
+          arr[i].checked = true;
+          break;
+        } else if (arr[i].children) {
+          this.setDeptChecked(id, arr[i].children);
         }
-      },
-      close() {
-        //this.visible = false
-        this.$emit('update:visible', false)
-        this.$emit('cancel')
-        if (this.close_clear_data) {
-          // this.employee_selected = []
-          // this.employee_selected_list = []
-          this.dept_selected = []
-          this.dept_selected_list = []
-          for (let i in this.list) {
-            this.$set(this.list[i], 'checked', false)
-          }
-          for (let i in this.dept_list) {
-            this.$set(this.dept_list[i], 'checked', false)
-          }
+      }
+    },
+    getTreeData(data) {
+      for (var i = 0; i < data.length; i++) {
+        data[i].checked = false;
+        if (data[i].children.length < 1) {
+          // children若为空数组,则将children设为undefined
+          data[i].children = undefined;
+        } else {
+          // children若不为空数组,则继续 递归调用 本方法
+          this.getTreeData(data[i].children);
         }
+      }
+      return data;
+    },
 
-      },
-      confirm() {
-        this.$emit('confirm', {
-          employee: this.employee_selected_list,
-          dept: this.dept_selected_list
-        })
-        this.close()
-      },
-      get_dept_list(){
-        if(this.employee_list.length > 0){
-          return
-        }
-        this.$http('get','/api/department/index',{pid: this.pid, keyword:this.keyword}).then((res) => {
-          for(let i in res.data.data.list){
-            res.data.data.list[i]['checked'] = false
-            if (this.dept_selected.indexOf(res.data.data.list[i].id) >= 0) {
-              res.data.data.list[i]['checked'] = true
-            }
+    // 默认选择中的人勾上
+    parse_list(data) {
+      let _list = [];
+      data.map(item => {
+        item['checked'] = false;
+        for (var i in this.employee_selected_list) {
+          //判断传进来的员工是否是员工集合里的,是就设为已点击状态
+          if (this.employee_selected_list[i].id == item.id) {
+            item['checked'] = true;
           }
-          this.dept_list = res.data.data.list
-          this.owner_id = res.data.data.owner_id
-          this.company_info = res.data.data.company_info
-          if (res.data.data.dept_info == null) {
-            this.dept_name = JSON.parse(JSON.stringify(res.data.data.company_info.name))
-            this.dept_id = 0
+        }
+        if (item.img_url == '') {
+          item.img_url = 'static/images/head_default.png';
+        }
+      });
+      this.searchBox = data;
+      this.list = data;
+    },
+    //获取人员
+    get_user_list(valItem) {
+      this.table_loading = true;
+      let params = {
+        keywords: this.keyword,
+        page: 0,
+        page_size: 2000,
+        child:this.child? '1':'0'
+      }
+      if(valItem){
+          params.dept_id=valItem
+      }else{
+          params.dept_id=0
+      }
+      this.$http('get', '/api/employee/index', params)
+        .then(res => {
+          let list = this.filtration(res.data.data.list);
+          // 当有指定显示列表时
+          if (this.user_employee_list) {
+            var employee_list = this.employee_list;
+            var userData = [];
+            list.map(item => {
+              // 列表数据是否是自己的管理范围
+              employee_list.map(item2 => {
+                if (item.id == item2.id) {
+                  userData.push(item);
+                }
+              });
+            });
+            this.parse_list(userData);
           } else {
-            this.dept_name = JSON.parse(JSON.stringify(res.data.data.dept_info.name))
-            this.dept_id = res.data.data.dept_info.id
+            // 没有指定人员列表
+            this.parse_list(list);
           }
-
-        }).catch((e) => {
-
         })
-      },
-      get_user_list (done) {
-        if(this.employee_list.length > 0){
-          let list = this.employee_list
-          if(this.employee_selected.length == 0){
-            for(let i in this.selected.employee){
-              this.employee_selected.push(this.selected.employee[i].id)
-            }
-          }
-          for(let i in list){
-            if(list[i].direct_Supervisor){
-              this.direct_Supervisor_you = list[i].direct_Supervisor
-              this.directSupervisor = list[i].id
-            }
-            list[i]['letter_index'] = '#'
-            if(this.$store.getters.employee_map[list[i].id]){
-              list[i]['letter_index'] = this.$store.getters.employee_map[list[i].id].letter_index
-              if(this.$store.getters.employee_map[list[i].id].img_url == ''){
-                list[i]['img_url'] = 'static/images/head_default.png'
-              }else {
-                list[i]['img_url'] = this.$store.getters.employee_map[list[i].id].img_url
-              }
-            }
-
-            list[i]['checked'] = false
-            if(this.employee_selected.indexOf(list[i].id) >= 0){
-              list[i]['checked'] = true
-            }
-          }
-
-          if (this.keyword) {
-            list = []
-            this.employee_list.forEach(element => {
-              if(element.name.indexOf(this.keyword) != "-1"){
-                list.push(element)
-              }
-            });
-          }
-
-          this.list = list.sort((a,b) => {
-            return a.letter_index.charCodeAt(0) - b.letter_index.charCodeAt(0)
-          })
-          if(this.whether_to_remove_right){
-            this.selectedLists()
-          }
-          this.searchBox = this.list
-          
-          this.selectApersonModuleLoad = false
-          done()
-          return false
+        .finally(() => {
+          this.table_loading = false;
+        });
+    },
+    // 过滤各种条件:如:自己,创始人,只显示管理者等。。。
+    filtration(data) {
+      var list = data;
+      // 去除已经离职的人
+      for (let i = 0; i < list.length; i++) {
+        if (list[i].status == 2) {
+          list.splice(i, 1);
+          i--
         }
-        this.list = []
-        this.selectApersonModuleLoad = true
-        this.$http('get','/api/employee/index',{dept_id: this.pid,keywords: this.keyword,page: 0,page_size: 2000}).then((res) => {
-          let employeeSelectedData = []
-          for(let i in this.employee_selected_list){
-            employeeSelectedData.push(this.employee_selected_list[i].id)
-          }
-          for (let i in res.data.data.list) {
-            res.data.data.list[i]['checked'] = false
-            if (this.employee_selected.indexOf(res.data.data.list[i].id) >= 0) {
-              res.data.data.list[i]['checked'] = true
-            }
-            if (employeeSelectedData.indexOf(res.data.data.list[i].id) >= 0) {
-              res.data.data.list[i]['checked'] = true
-            }
-            if (res.data.data.list[i].img_url == '') {
-              res.data.data.list[i].img_url = 'static/images/head_default.png'
+      }
+      var managerList = []; // 管理者列表
+      // 只显示管理者
+      if (this.is_manager_only) {
+        var isManager;
+        list.map(item => {
+          isManager = false;
+          item.employee_detail.role_list.map(item2 => {
+            if (item2.name == 'creator' || item2.name == 'point_manager' || item2.name == 'dept_manager' || item2.name == 'admin') {
+              isManager = true;
             }
+          });
+          if (isManager) {
+            managerList.push(item);
           }
-          if (this.use_employee_list) {
-            res.data.data.list.forEach(element => {
-              if (element.employee_detail.role_list.findIndex((value)=>value.name=='dept_manager'||value.name=='creator'||value.name=='point_manager'||value.name=='admin') >= 0) {
-                this.list.push(element)
-              }
-            });
-            return false
-          }else{
-            this.list = res.data.data.list
-          }
-          if(this.whether_to_remove_right){
-            this.selectedLists()
-          }
-          this.searchBox = this.list
-          done()
-        }).catch((e) => {
-          done()
-        }).finally(()=>{
-          this.selectApersonModuleLoad = false
-        })
-      },
-      selectedLists(){
-        let selected_list = []
-        // console.log(this.employee_selected_list.filter(a=>!this.list.some(b=>b.id==a.id)))
-        selected_list = this.employee_selected_list.filter(a=>!this.list.some(b=>b.id==a.id))
-        console.log(selected_list.length)
-        if(selected_list.length!=0){
-          console.log(selected_list.length)
-          for(let i in this.employee_selected_list){
-            for(let a in selected_list){
-              if(this.employee_selected_list[i].id == selected_list[a].id){
-                this.employee_selected_list.splice(i,1)
-              }
-            }
+        });
+        list = managerList;
+      }
+      // 过滤自己
+      if (!this.include_self) {
+        const currUserId = this.$store.getters.user_info.id;
+        for (let i = 0; i < list.length; i++) {
+          if (list[i].id == currUserId) {
+            list.splice(i, 1);
+            i--
           }
         }
-      },
-      removeSelf(list){
-        if (!this.include_self){
-          const currUserId = this.$store.getters.user_info.id
-          const index = list.findIndex(o=>o.id === currUserId)
-          if(index > -1){
-            list.splice(index, 1)
+      }
+      // 过滤创始人
+      if (this.is_filtration_creator) {
+        for (let i = 0; i < list.length; i++) {
+          if (list[i].is_creator == 1) {
+            list.splice(i,1);
+            i--
           }
         }
-        return list
       }
-    },
-    created() {
-      for(let i in this.selected.employee){
-        if(!this.selected.employee[i].img_url){
-          this.selected.employee[i].img_url = 'static/images/head_default.png'
+      //过滤指定人员[]
+      if (this.employee_not_select.length > 0) {
+        for (let i = 0; i < list.length; i++) {
+          if (this.employee_not_select.indexOf(list[i].id) >= 0) {
+            list.splice(i, 1);
+            i--
+          }
         }
       }
-      if (document.documentElement.style.height) {
-        this.com_height = document.documentElement.style.height
-      }
-      setTimeout(() => {
-        if (this.$route.query.pid) {
-          this.pid = this.$route.query.pid
-        }
-        this.get_user_list(function () {
-          
-        })
-        
-        this.get_dept_list()
-      }, 200)
-
+      return list;
     }
-  }
+  },
+  created() {}
+};
 </script>
 
-<style scoped>
-  .employee_selector_box {
-    width: 600px;
-    padding: 24px;
-  }
-
-  /* 搜索框 */
-  .employee_selector_box .search{
-    position: relative;
-    display: table-cell;
-    left: 10%;
-    padding: 0;
-    border: 1px #C0C4CC solid;
-    border-radius: 16.5px;
-  }
-  .employee_selector_box .search-box button{
-    display: inline-block;
-    vertical-align: middle;
-    margin-left: 10px;
-    width: auto;
-    padding: 0;
-    background: none;
-    border-radius: 0px;
-    border: none;
-  }
-  .employee_selector_box .search-box /deep/ .el-input{
-    display: inline-block;
-    width: 84%;
-    padding: 0 24px 0 6px;
-    background: none;
-    border-radius: 0px;
-    border: none;
-  }
-  .employee_selector_box .search-box /deep/ .el-input input{
-    padding:0;
-    line-height: 34px;
-    border:none;
-  }
-  /* /搜索框 */
-
-  /* 左边框 */
-  .employee_selector_box .choose_left {
-    /* padding:8px 10px 8px 10px; */
-    padding: 0 10px;
-    margin: 8px 0;
-  }
-
-  .employee_selector_box .choose_left .employee_cell{
-    border-bottom:1px #f8f8f8 solid;
-  }
-  .employee_selector_box .choose_left .employee_cell_a .employee_cell{
-    border-bottom:none;
-  }
-  .employee_selector_box .choose_left .employee_checkbox{
-    padding-left: 8px;
-  }
-  .employee_selector_box .choose_left .employee_img_url{
-    padding-left: 8px;
-  }
-  .employee_selector_box .choose_left .employee_name{
-    padding-left: 8px;
-  }
-
-  .employee_selector_box /deep/ .el-scrollbar__thumb {
-    width:2px;
-    margin:15px 0 0 6px;
-    background:#409EFF;
-  }
-  /* 左边框 */
-
-  /* 右边距 */
-  .employee_selector_box .option-box{
-    padding:14px 0;
-  }
-  .employee_selector_box .option-box button{
-    margin-right:16px;
-  }
-  .employee_selector_box .choose_right{
-    padding:8px 10px;
-  }
-  .employee_selector_box .choose_right .employee_delete .el-button{
-    transform: scale(0.5);
-    background: #C0C4CC;
-  }
-  .employee_selector_box .choose_right .employee_delete .el-button /deep/ .el-icon-close{
-    color:#fff;
-  }
-  .employee_selector_box .choose_right .employee_delete .el-button:active{
-    background: #409EFF;
-  }
-  .employee_selector_box .choose_right .employee_delete .el-button:active /deep/ .el-icon-close{
-    color:#FFF;
-  }
-  .employee_selector_box .choose_right .employee_cell .employee_name{
-    padding-left:8px;
-  }
-  .employee_selector_box .choose_right .employee_cell .employee_img_url{
-    padding-left:8px;
-  }
-  /* 右边距 */
-
-  .employee_selector_box /deep/ .employee_cell{
-    padding:8px 0;
-  }
-  .employee_selector_box /deep/ .employee_cell:hover{
-    background:#ecf5ff;
-  }
-
-  .employee_cell {
-    display: table;
-    cursor: pointer;
-    width: 100%;
-    color:#606266;
-    padding: 8px 0;
-    background-color: transparent;
-  }
-
-  .employee_cell .employee_cell_clear {
-    clear: both;
-  }
-
-  .employee_cell .employee_img_url {
-    display: table-cell;
-    vertical-align: middle;
-    width: 30px;
-    padding-left:0px;
-  }
-
-  .employee_cell .employee_img_url img {
-    width: 24px;
-    height: 24px;
-    border-radius: 50%;
-  }
-
-  .employee_cell .employee_checkbox {
-    display: table-cell;
-    vertical-align: middle;
-    width: 30px;
-    text-align: center;
-  }
-
-  .employee_cell .employee_name{
-    display:table-cell;
-    vertical-align: middle;
-    color:#606266;
-  }
-
-  .employee_delete {
-    display: table-cell;
-    text-align: right;
-    padding-right:0px;
-  }
-
-  .employee_cell_a {
-    display: block;
-  }
-
-  .employee_cell_a:hover {
-    background-color: #ecf5ff;
-    border-radius:4px;
-  }
-
-  .dept_child_cell {
-    display: table-cell;
-    vertical-align: middle;
-  }
-
-  .dept_child_cell span {
-    float: right;
-    padding-right:8px;
-  }
-  .dept_child_cell span:hover{
-    color:#1c1c1c;
-  }
-  .dept_child_cell span:active{
-    color:#1c1c1c;
-  }
-
-  .scroller-box {
-    height: 400px;
-    padding-right: 0px !important;
-    background-color: #fdfdfd;
-    border: 1px solid #eee;
-    border-radius: 4px;
-    overflow: hidden;
-  }
-
-  .col-line {
-    position: relative;
-    height: 400px;
-  }
-
-  .col-line:before {
-    content: " ";
-    width: 1px;
-    height: 400px;
-    position: absolute;
-    top: 0;
-    bottom: 0;
-    left: 50%;
-    background-color: #eee;
-  }
-
-  .search-box {
-    background-color: #fff;
-    padding:14px 5px;
-    border-bottom: 1px solid #eee;
-    margin: 0 -5px;
-  }
-
-  .option-box {
-    padding: 5px;
-    background-color: #fff;
-    border-bottom: 1px solid #eee;
-    margin: 0 -5px;
-    text-align: right;
-  }
-
-  .child_btn {
-    color: #409EFF;
-  }
-  .dept_path{
-    margin: 10px 0;
-    display: block;
-    white-space: nowrap;
-    overflow: auto;
-  }
-
-  /*滚动条的宽度*/
-
-  .dept_path::-webkit-scrollbar {
-    width:5px;
-    height:5px;
-  }
-
-  /*外层轨道。可以用display:none让其不显示,也可以添加背景图片,颜色改变显示效果*/
-
-  .dept_path::-webkit-scrollbar-track {
-    width: 6px;
-    background-color:#fff0;
-    -webkit-border-radius: 2em;
-    -moz-border-radius: 2em;
-    border-radius:2em;
-  }
-
-  /*滚动条的设置*/
-
-  .dept_path::-webkit-scrollbar-thumb {
-    background-color:#fff0;
-    background-clip:padding-box;
-    min-height:28px;
-    -webkit-border-radius: 2em;
-    -moz-border-radius: 2em;
-    border-radius:2em;
-  }
-  /*滚动条移上去的背景*/
-
-  .dept_path:hover::-webkit-scrollbar-thumb{
-    background-color:rgba(144,147,153,.3);
-  }
-
-
-  .scrollbarHeight1{
-    height: 300px;
-  }
-  .scrollbarHeight2{
-    height: 320px;
-  }
+<style scoped lang="scss">
+.showCheckbox .isCheckbox{
+   height: 7px;
+   width: 7px;
+   background-color: #26A2FF;
+   display: inline-block;
+   border-radius: 2px;
+   line-height: 14px;
+   position: relative;
+   top: -3px;
+}
+.showCheckbox{
+  border: 1px solid #26A2FF !important;
+}
+.checkbox{
+  height: 14px;
+  width: 14px;
+  border: 1px solid #dcdfe6;
+  background: #fff;
+  border-radius: 2px;
+  position: relative;
+  box-sizing: border-box;
+  text-align: center;
+}
+.deptList {
+  padding: 12px 0;
+  border-bottom: 1px solid #f1f1f1;
+  cursor: pointer;
+}
+.employee_selector_box {
+  width: 600px;
+  padding: 20px;
+  box-sizing: border-box;
+  margin: 0 auto;
+}
+
+/* 搜索框 */
+.employee_selector_box .search {
+  margin: 0 auto;
+  width: 80%;
+  min-height: 36px;
+}
+
+.employee_selector_box .search-box button {
+  display: inline-block;
+  vertical-align: middle;
+  margin-left: 10px;
+  width: auto;
+  padding: 0;
+  background: none;
+  border-radius: 0px;
+  border: none;
+}
+/* /搜索框 */
+
+/* 左边框 */
+.employee_selector_box .choose_left {
+  padding: 8px 10px 8px 10px;
+}
+
+.employee_selector_box .choose_left .employee_cell {
+  border-bottom: 1px #f1f1f1 solid;
+}
+
+.employee_selector_box .choose_left .employee_cell_a .employee_cell {
+  border-bottom: none;
+}
+
+.employee_selector_box .choose_left .employee_checkbox {
+  padding-left: 8px;
+}
+
+.employee_selector_box .choose_left .employee_img_url {
+  padding-left: 8px;
+}
+
+.employee_selector_box .choose_left .employee_name {
+  padding-left: 8px;
+}
+
+.employee_selector_box ::v-deep .el-scrollbar__thumb {
+  width: 2px;
+  margin: 15px 0 0 6px;
+  background: #409eff;
+}
+
+/* 左边框 */
+
+/* 右边距 */
+.employee_selector_box .option-box {
+  padding: 14px 0;
+}
+
+.employee_selector_box .option-box button {
+  margin-right: 16px;
+}
+
+.employee_selector_box .choose_right {
+  padding: 8px 10px;
+}
+
+.employee_selector_box .choose_right .employee_delete .el-button {
+  transform: scale(0.5);
+  background: #c0c4cc;
+}
+
+.employee_selector_box .choose_right .employee_delete .el-button /deep/ .el-icon-close {
+  color: #fff;
+}
+
+.employee_selector_box .choose_right .employee_delete .el-button:active {
+  background: #409eff;
+}
+
+.employee_selector_box .choose_right .employee_delete .el-button:active /deep/ .el-icon-close {
+  color: #fff;
+}
+
+.employee_selector_box .choose_right .employee_cell .employee_name {
+  padding-left: 8px;
+}
+
+.employee_selector_box .choose_right .employee_cell .employee_img_url {
+  padding-left: 8px;
+}
+
+/* 右边距 */
+
+.employee_selector_box /deep/ .employee_cell {
+  padding: 8px 0;
+  border-bottom: 1px #f1f1f1 solid;
+}
+
+.employee_selector_box /deep/ .employee_cell:hover {
+  background: #ecf5ff;
+}
+
+.employee_cell {
+  display: -webkit-inline-box;
+  cursor: pointer;
+  width: 100%;
+  color: #606266;
+  padding: 8px 0;
+  background-color: transparent;
+}
+
+.employee_cell .employee_cell_clear {
+  clear: both;
+}
+
+.employee_cell .employee_img_url {
+  display: table-cell;
+  vertical-align: middle;
+  width: 30px;
+  padding-left: 0px;
+}
+
+.employee_cell .employee_img_url img {
+  width: 24px;
+  height: 24px;
+  border-radius: 50%;
+}
+
+.employee_cell .employee_checkbox {
+  display: table-cell;
+  vertical-align: middle;
+  width: 30px;
+  text-align: center;
+}
+
+.employee_cell .employee_name {
+  display: table-cell;
+  vertical-align: middle;
+  color: #606266;
+}
+
+.employee_delete {
+  display: table-cell;
+  text-align: right;
+  padding-right: 0px;
+}
+
+.employee_cell_a {
+  display: block;
+}
+
+.employee_cell_a:hover {
+  background-color: #ecf5ff;
+  border-radius: 4px;
+}
+
+.dept_child_cell {
+  display: table-cell;
+  vertical-align: middle;
+}
+
+.dept_child_cell span {
+  float: right;
+  padding-right: 8px;
+}
+
+.dept_child_cell span:hover {
+  color: #1c1c1c;
+}
+
+.dept_child_cell span:active {
+  color: #1c1c1c;
+}
+
+.scroller-box {
+  height: 440px;
+  padding-right: 0px !important;
+  background-color: #fdfdfd;
+  border: 1px solid #eee;
+  border-radius: 4px;
+  overflow: hidden;
+}
+/* .scroller-box.one{
+    height: 440px;
+  } */
+
+.col-line {
+  position: relative;
+  height: 400px;
+}
+
+.col-line:before {
+  content: ' ';
+  width: 1px;
+  height: 400px;
+  position: absolute;
+  top: 0;
+  bottom: 0;
+  left: 50%;
+  background-color: #eee;
+}
+
+.search-box {
+  background-color: #fff;
+  padding: 14px 5px;
+  border-bottom: 1px solid #eee;
+  margin: 0 -5px;
+}
+
+.option-box {
+  padding: 5px;
+  background-color: #fff;
+  border-bottom: 1px solid #eee;
+  margin: 0 -5px;
+  text-align: right;
+}
+
+.child_btn {
+  color: #409eff;
+}
+.dept_path {
+  padding: 10px 0;
+  border-bottom: 1px solid #f1f1f1;
+  min-height: 37px;
+}
+
+.scrollbarHeight1 {
+  height: 310px;
+}
+.scrollbarHeight2 {
+  height: 350px;
+}
+/deep/ .dept_icon{
+  .el-input__validateIcon{
+    display: none;
+  }
+}
 </style>

+ 10 - 7
src/views/common/EmployeeSelector1.vue

@@ -19,7 +19,7 @@
               @click="back_by_index(index + 1)"
             >
               <i class="el-icon-arrow-right"></i>
-              <wwOpenDAta type="departmentName" :openid="item.name"></wwOpenDAta>
+              <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">
-                    <wwOpenDAta type="departmentName" :openid="item.name"></wwOpenDAta>
+                    <WWOpenData type="departmentName" :openid="item.name"></WWOpenData>
                   </div>
 
                   <div v-if="can_select_dept" class="dept_child_cell">
@@ -58,7 +58,7 @@
                     </div>
                     <div class="employee_name">
                       <!-- {{item.name}} -->
-                      <wwOpenDAta type="userName" :openid="item.name"></wwOpenDAta>
+                      <WWOpenData type="userName" :openid="item.name"></WWOpenData>
                     </div>
                     <div class="employee_cell_clear"></div>
 
@@ -82,7 +82,7 @@
               <div class="employee_cell" v-for="(item,index) in dept_selected_list" :key="index">
 
                 <div class="employee_name">
-                  <wwOpenDAta type="departmentName" :openid="item.dept_name"></wwOpenDAta>
+                  <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>
@@ -100,7 +100,7 @@
                 </div>
                 <div class="employee_name">
                   <!-- {{item.name}} -->
-                  <wwOpenDAta type="userName" :openid="item.name"></wwOpenDAta>
+                  <WWOpenData type="userName" :openid="item.name"></WWOpenData>
                 </div>
                 <div class="employee_delete">
                   <el-button type="default" size="mini" @click="employee_cancel(item,true)" icon="el-icon-close" circle></el-button>
@@ -307,6 +307,9 @@
       }
     },
     methods: {
+      defaultImg(){
+        return "https://rescdn.qqmail.com/node/wwmng/wwmng/style/images/independent/DefaultAvatar$73ba92b5.png"
+      },
       // 全选
       checkedChange(val){
         if (val) {
@@ -542,7 +545,7 @@
             if(this.$store.getters.employee_map[list[i].id] && this.employee_not_select.indexOf(list[i].id) < 0){
               list[i]['letter_index'] = this.$store.getters.employee_map[list[i].id].letter_index
               list[i]['status'] = this.$store.getters.employee_map[list[i].id].status
-              if(this.$store.getters.employee_map[list[i].id].img_url == ''){
+              if(this.$store.getters.employee_map[list[i].id].img_url == '' || this.$store.getters.employee_map[list[i].id].img_url == this.defaultImg()){
                 list[i]['img_url'] = 'static/images/head_default.png'
               }else {
                 list[i]['img_url'] = this.$store.getters.employee_map[list[i].id].img_url
@@ -578,7 +581,7 @@
             if (this.employee_selected.indexOf(res.data.data.list[i].id) >= 0) {
               res.data.data.list[i]['checked'] = true
             }
-            if (res.data.data.list[i].img_url == '') {
+            if (res.data.data.list[i].img_url == '' || res.data.data.list[i].img_url == this.defaultImg()) {
               res.data.data.list[i].img_url = 'static/images/head_default.png'
             }
           }

+ 922 - 0
src/views/common/EmployeeSelector2.vue

@@ -0,0 +1,922 @@
+<template>
+  <div>
+    <div class="employee_selector_box">
+      <el-row :gutter="10">
+        <el-col :xs="11" :sm="11" :md="11" :lg="11" :xl="11" class="scroller-box one">
+
+          <div class="search-box">
+            <div class="search">
+              <el-button slot="append" icon="el-icon-search" class="manager_button"></el-button>
+              <el-input v-model="keyword" placeholder="请输入内容"></el-input>
+            </div>
+          </div>
+          <div class="dept_path">
+            <a href="javascript:void(0);" @click="back_by_index(0)">全公司</a>
+            <a
+              v-for="(item, index) in pid_list_arr"
+              :key="index"
+              href="javascript:void(0);"
+              @click="back_by_index(index + 1)"
+            >
+              <i class="el-icon-arrow-right"></i>
+              <WWOpenData type="departmentName" :openid="item.name"></WWOpenData>
+            </a>
+          </div>
+          <el-checkbox v-if="isChecKedAll" v-model="checked" @change="checkedChange" >全选</el-checkbox>
+          <el-scrollbar wrap-class="column-wrapper scrollable-items-container" :native="false" :class="isChecKedAll?'scrollbarHeight1':'scrollbarHeight2'">
+            <div class="choose_left">
+              <a href="javascript:void(0)" v-for="(item,index) in dept_list" :key="index">
+                <div class="employee_cell" @click="select_dept(item)" v-show="item.pid == pid && item.name.indexOf(keyword) >= 0 && dept_not_select.indexOf(item.id) < 0">
+                  <i class="el-icon-caret-right" style=" display: inline-block;"></i>
+                  <div class="employee_checkbox" v-if="can_select_dept">
+                    <el-checkbox v-model="item.checked"></el-checkbox>
+                  </div>
+                  <div class="employee_name">
+                    <WWOpenData type="departmentName" :openid="item.name"></WWOpenData>
+                  </div>
+
+                  <div v-if="can_select_dept" class="dept_child_cell">
+                    <span href="javascript:void(0);" class="child_btn" @click.stop="show_child(item)">
+                      | 下级
+                    </span>
+                  </div>
+
+                  <div class="employee_cell_clear"></div>
+
+                </div>
+              </a>
+              <div class="persons_box" style="padding-top:4px;">
+                <a class="employee_cell_a" href="javascript:void(0)" v-for="(item,index) in list" :key="index" v-show="item.id">
+                  <div class="employee_cell" v-if="can_select_employee" @click.prevent.stop="select_employee(item)" v-show="employee_not_select.indexOf(item.id) < 0">
+                    <div class="employee_checkbox">
+                      <el-checkbox v-model="item.checked" v-if="selectedQuitEmployee" :style="item.status > 1 || employee_not_select.indexOf(item.id) > 0?'opacity: 0':'opacity: 1'" ></el-checkbox>
+                      <el-checkbox v-model="item.checked" v-if="!selectedQuitEmployee" :style="item.status > 1 || employee_not_select.indexOf(item.id) > 0?'opacity: 0':'opacity: 1'" ></el-checkbox>
+                    </div>
+                    
+                    <div class="employee_img_url">
+                      <img :src="item.img_url" class="employee_cell_head_img" />
+                    </div>
+                    <div class="employee_name">
+                      <!-- {{item.name}} -->
+                      <WWOpenData type="userName" :openid="item.name"></WWOpenData>
+                    </div>
+                    <div class="employee_cell_clear"></div>
+
+                  </div>
+                </a>
+              </div>
+
+            </div>
+
+
+          </el-scrollbar>
+        </el-col>
+        <el-col :xs="2" :sm="2" :md="2" :lg="2" :xl="2" class="col-line"><span style="opacity: 0;">空</span></el-col>
+        <el-col :xs="11" :sm="11" :md="11" :lg="11" :xl="11" class="scroller-box">
+          <div class="option-box">
+            <span style="line-height: 40px; padding-left: 10px;" class="fl" v-show="multi">已选择{{employee_selected_list.length}}个员工</span>
+            <el-button type="type" @click="clear_data">清空</el-button>
+          </div>
+          <el-scrollbar wrap-class="column-wrapper scrollable-items-container" :native="false" style="height: 400px;">
+            <div class="choose_right">
+              <div class="employee_cell" v-for="(item,index) in dept_selected_list" :key="index">
+
+                <div class="employee_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>
+                </div>
+                <div class="employee_cell_clear"></div>
+              </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">
+                  <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_name">
+                  <!-- {{item.name}} -->
+                  <WWOpenData type="userName" :openid="item.name"></WWOpenData>
+                </div>
+                <div class="employee_delete">
+                  <el-button type="default" size="mini" @click="employee_cancel(item,true)" icon="el-icon-close" circle></el-button>
+                </div>
+                <div class="employee_cell_clear"></div>
+              </div>
+            </div>
+          </el-scrollbar>
+        </el-col>
+      </el-row>
+    </div>
+
+    <!--    
+    <span slot="footer" class="dialog-footer">
+      <el-button @click="close">取 消</el-button>
+      <el-button type="primary" @click="confirm">确 定</el-button>
+    </span> 
+    -->
+
+  </div>
+</template>
+
+<script>
+  var timers = null
+  export default {
+    props:{
+      Out_of_the_current:{
+        type: Boolean,
+      },
+      two_of_the_current:{
+        type: Boolean,
+      },
+      two_of_the_current_two:{
+        type: Number,
+      },
+      append_body: {
+        type: Boolean,
+        default: false
+      },
+      visible: {
+        type: Boolean,
+        default: false
+      },
+      can_select_dept: {
+        type: Boolean,
+        default: true
+      },
+      can_select_employee: {
+        type: Boolean,
+        default: true
+      },
+      employee_not_select: {
+        type: Array,
+        default: () => {
+          return []
+        }
+      },
+      dept_not_select: {
+        type: Array,
+        default: () => {
+          return []
+        }
+      },
+      selected: {
+        type: Object,
+        default: () => {
+          return {employee: [], dept: []}
+        }
+      },
+      multi: {
+        type: Boolean,
+        default: true
+      },
+      dept_multi: {
+        type: Boolean,
+        default: true
+      },
+      employee_list: {
+        type: Array,
+        default: () => {
+          return []
+        }
+      },
+      selectedQuitEmployee:{
+        type: Boolean,
+        default: true
+      },
+      isChecKedAll: {
+        type: Boolean,
+        default: true
+      },
+      close_clear_data: {
+        type: Boolean,
+        default: true
+      },
+      max: {
+        type: Number,
+        default: 0
+      }
+    },
+    name: "EmployeeSelector",
+    data() {
+      let selected = JSON.parse(JSON.stringify(this.selected))
+      return {
+        searchBox:[],
+        dialogVisible: true,
+        employee_selected_list: selected.employee,
+        dept_selected_list: selected.dept,
+        employee_selected: [],
+        dept_selected: [],
+        com_height: '100%',
+        company_info: {},
+        actions_show: false,
+        dept_name: '',
+        dept_id: 0,
+        list: [],
+        dept_list: [],
+        keyword: '',
+        owner_id: 0,
+        user_info: this.$store.getters.user_info,
+        pid: 0,
+        pid_list: [],
+        selected_box_width: '0',
+        pid_list_arr: [],
+        visible_: false,
+        checked: false
+      }
+    },
+    watch: {
+      max(val) {
+        this.set_button_width()
+      },
+      selected:{
+        deep:true,
+        handler(val){
+          let selected = JSON.parse(JSON.stringify(val))
+          this.employee_selected = []
+          this.dept_selected = []
+          this.employee_selected_list = selected.employee
+          this.dept_selected_list = selected.dept
+          for (let i in selected.employee) {
+            this.employee_selected.push(selected.employee[i].id)
+          }
+          for(let i in selected.dept){
+            this.dept_selected.push(selected.dept[i].dept_id)
+          }
+          this.set_button_width()
+        },
+        immediate: true
+      },
+      // selected(val) {
+      //   let selected = JSON.parse(JSON.stringify(val))
+      //   this.employee_selected = []
+      //   this.dept_selected = []
+      //   this.employee_selected_list = selected.employee
+      //   this.dept_selected_list = selected.dept
+      //   for (let i in selected.employee) {
+      //     this.employee_selected.push(selected.employee[i].id)
+      //   }
+      //   for(let i in selected.dept){
+      //     this.dept_selected.push(selected.dept[i].dept_id)
+      //   }
+      //   this.set_button_width()
+      // },
+      visible(val){
+        this.visible_ = JSON.parse(JSON.stringify(val))
+        if(val){
+          setTimeout(() => {
+            if (this.$route.query.pid) {
+              this.pid = this.$route.query.pid
+            }
+            this.get_user_list(function () {
+
+            })
+            this.get_dept_list()
+          }, 200)
+        }
+        this.set_button_width()
+      },
+      employee_selected_list() {
+        let l = this.employee_selected_list.length + this.dept_selected_list.length
+        let width = 0.9 * l;
+        this.selected_box_width = width + 'rem'
+        this.set_button_width()
+      },
+      dept_selected_list() {
+        let l = this.employee_selected_list.length + this.dept_selected_list.length
+        let width = 0.9 * l;
+        this.selected_box_width = width + 'rem'
+        this.set_button_width()
+      },
+      keyword(val) {
+        // this.options =this.keyword?this.alloptions.filter(item=> item.name.includes (this,keyword)): this. alloptions
+        //this.list
+        this.list = this.searchBox.filter(item=> item.name.includes(this.keyword))
+        // this.list.filter(val)
+        // clearTimeout(timers)
+        // // timers = setTimeout(function () {
+        // //   this.get_user_list(function () {})
+        // // }, 500)
+        // timers = setTimeout(()=>{
+        //   this.get_user_list()
+        // },500)
+      }
+    },
+    methods: {
+      defaultImg(){
+        return "https://rescdn.qqmail.com/node/wwmng/wwmng/style/images/independent/DefaultAvatar$73ba92b5.png"
+      },
+      // 全选
+      checkedChange(val){
+        if (val) {
+          for (let i in this.list) {
+            if (this.employee_not_select.indexOf(this.list[i].id) < 0) {
+              this.$set(this.list[i], 'checked', true)
+            }
+          }
+          this.$nextTick(() => {
+            let employeeSelectedList = JSON.parse(JSON.stringify(this.employee_selected_list))
+            let employeeSelectedIds = [], total = 0
+            employeeSelectedList.forEach(element => {
+              employeeSelectedIds.push(element.id)
+            });
+            for (const i in this.list) {
+              this.list[i].status !== 2 && this.selectedQuitEmployee?this.$set(this.list[i], 'checked', true):''
+              if (employeeSelectedIds.includes(this.list[i].id)) {
+                total += 1
+              }else{
+                this.list[i].status !== 2 && this.selectedQuitEmployee?this.employee_selected_list.push(this.list[i]):''
+              }
+            }
+            // console.log(this.employee_not_select)
+            // console.log(this.employee_selected_list)
+            // debugger
+          })
+        }else{
+          this.employee_selected_list = []
+          this.employee_selected = []
+          for (let i in this.list) {
+            this.$set(this.list[i], 'checked', false)
+          }
+          // this.clear_data() 
+        }
+      },
+      close_before(done) {
+        this.close()
+      },
+      set_button_width() {
+
+      },
+      back() {
+        this.pid = this.pid_list[this.pid_list.length - 1]
+        this.pid_list.splice(this.pid_list.length - 1)
+        this.pid_list_arr.splice(this.pid_list_arr.length - 1)
+        this.get_user_list(function () {
+
+        })
+      },
+      back_by_index(index) {
+
+        if (index == this.pid_list.length) {
+          return false
+        }
+        this.pid = this.pid_list[index]
+        this.pid_list.splice(index, 100)
+        this.pid_list_arr.splice(index, 100)
+        this.get_user_list(function () {
+
+        })
+      },
+      show_child(item) {
+        this.pid_list.push(this.pid)
+        this.pid_list_arr.push(item)
+        this.pid = item.id
+        this.get_user_list(function () {
+
+        })
+      },
+      employee_cancel(item) {
+        this.employee_selected.splice(this.employee_selected.indexOf(item.id), 1)
+        let delete_index = -1
+        for (let i in this.employee_selected_list) {
+          if (this.employee_selected.indexOf(this.employee_selected_list[i].id) < 0) {
+            delete_index = i
+          }
+        }
+        if (delete_index >= 0) {
+          // this.employee_selected_list.splice(delete_index, 1)
+          for (let i in this.list) {
+            if (this.list[i].id == item.id) {
+              this.$set(this.list[i], 'checked', false)
+            }
+          }
+          for(let i in this.employee_selected_list){
+            if(this.employee_selected_list[i].id == item.id){
+              this.employee_selected_list.splice(i, 1)
+            }
+          }
+        }
+      },
+      dept_cancel(item) {
+        this.dept_selected.splice(this.dept_selected.indexOf(item.dept_id), 1)
+        let delete_index = -1
+        for (let i in this.dept_selected_list) {
+          if (this.dept_selected.indexOf(this.dept_selected_list[i].dept_id) < 0) {
+            delete_index = i
+          }
+        }
+        if (delete_index >= 0) {
+          this.dept_selected_list.splice(delete_index, 1)
+          for(let i in this.dept_list){
+            if(this.dept_list[i].id == item.dept_id){
+              this.$set(this.dept_list[i], 'checked', false)
+            }
+          }
+        }
+      },
+      select_employee(item){
+        
+        if (this.selectedQuitEmployee) {
+          if (this.employee_not_select.indexOf(item.id) >= 0 || item.status > 1) {
+            return false
+          }
+        }else{
+          if (this.employee_not_select.indexOf(item.id) >= 0) {
+            return false
+          }
+        }
+
+        if(item.checked){
+          item.checked = false
+          this.employee_cancel(item)
+          this.$emit('confirms', '')
+        } else {
+          if (!this.multi) {
+            this.employee_selected = []
+            this.employee_selected_list = []
+            for (let i in this.list) {
+              this.$set(this.list[i], 'checked', false)
+            }
+          }
+          if (this.max > 0 && this.employee_selected.length == this.max && this.multi) {
+            this.$toast('最多只能选择' + this.max + '人')
+            return false
+          }
+          this.employee_selected.push(item.id)
+          this.employee_selected_list.push({id: item.id, name: item.name, img_url: item.img_url})
+          item.checked = true
+          this.$emit('confirms', this.employee_selected_list)
+        }
+      },
+      select_dept(item) {
+        if (!this.can_select_dept) {
+          this.show_child(item)
+          return false
+        }
+        if (item.checked) {
+          item.checked = false
+          this.dept_cancel(item)
+        } else {
+          if (!this.dept_multi) {
+            this.dept_selected = []
+            this.dept_selected_list = []
+            for (let i in this.dept_list) {
+              this.$set(this.dept_list[i], 'checked', false)
+            }
+          }
+          this.dept_selected.push(item.id)
+          this.dept_selected_list.push({dept_id: item.id, dept_name: item.name, avatar: 'static/images/e66f.jpg'})
+          item.checked = true
+        }
+
+      },
+      clear_data(){
+        this.employee_selected = []
+        this.employee_selected_list = []
+        this.dept_selected = []
+        this.dept_selected_list = []
+        for (let i in this.list) {
+          this.$set(this.list[i], 'checked', false)
+        }
+        for (let i in this.dept_list) {
+          this.$set(this.dept_list[i], 'checked', false)
+        }
+      },
+      close() {
+        //this.visible = false
+        // this.$emit('update:visible', false)
+        this.$emit('cancel')
+        if (this.close_clear_data) {
+          this.employee_selected = []
+          this.employee_selected_list = []
+          this.dept_selected = []
+          this.dept_selected_list = []
+          for (let i in this.list) {
+            this.$set(this.list[i], 'checked', false)
+          }
+          for (let i in this.dept_list) {
+            this.$set(this.dept_list[i], 'checked', false)
+          }
+        }
+
+      },
+      confirm() {
+        this.$emit('confirm', {
+          employee: this.employee_selected_list,
+          dept: this.dept_selected_list
+        })
+        this.close()
+      },
+      get_dept_list(){
+        if(this.employee_list.length > 0){
+          return
+        }
+        this.$http('get','/api/department/index',{pid: this.pid, keyword:this.keyword}).then((res) => {
+          for(let i in res.data.data.list){
+            res.data.data.list[i]['checked'] = false
+            if (this.dept_selected.indexOf(res.data.data.list[i].id) >= 0) {
+              res.data.data.list[i]['checked'] = true
+            }
+          }
+          this.dept_list = res.data.data.list
+          this.owner_id = res.data.data.owner_id
+          this.company_info = res.data.data.company_info
+          if (res.data.data.dept_info == null) {
+            this.dept_name = JSON.parse(JSON.stringify(res.data.data.company_info.name))
+            this.dept_id = 0
+          } else {
+            this.dept_name = JSON.parse(JSON.stringify(res.data.data.dept_info.name))
+            this.dept_id = res.data.data.dept_info.id
+          }
+
+        }).catch((e) => {
+
+        })
+      },
+      get_user_list (done) {
+        if(this.employee_list.length > 0){
+          let list = this.employee_list
+          for(let i in list){
+            list[i]['letter_index'] = '#'
+            if(this.$store.getters.employee_map[list[i].id] && this.employee_not_select.indexOf(list[i].id) < 0){
+              list[i]['letter_index'] = this.$store.getters.employee_map[list[i].id].letter_index
+              list[i]['status'] = this.$store.getters.employee_map[list[i].id].status
+              if(this.$store.getters.employee_map[list[i].id].img_url == '' || this.$store.getters.employee_map[list[i].id].img_url == this.defaultImg()){
+                list[i]['img_url'] = 'static/images/head_default.png'
+              }else {
+                list[i]['img_url'] = this.$store.getters.employee_map[list[i].id].img_url
+              }
+            }
+
+            list[i]['checked'] = false
+            if(this.employee_selected.indexOf(list[i].id) >= 0){
+              list[i]['checked'] = true
+            }
+          }
+
+          if (this.keyword) {
+            list = []
+            this.employee_list.forEach(element => {
+              if(element.name.indexOf(this.keyword) != "-1"){
+                list.push(element)
+              }
+            });
+          }
+
+          this.list = list.sort((a,b) => {
+            return a.letter_index.charCodeAt(0) - b.letter_index.charCodeAt(0)
+          })
+          this.searchBox = this.list
+          done()
+          return false
+        }
+        this.list = []
+        this.$http('get','/api/employee/index',{dept_id: this.pid,keywords: this.keyword,page: 0,page_size: 2000}).then((res) => {
+          for (let i in res.data.data.list) {
+            res.data.data.list[i]['checked'] = false
+            if (this.employee_selected.indexOf(res.data.data.list[i].id) >= 0) {
+              res.data.data.list[i]['checked'] = true
+            }
+            if (res.data.data.list[i].img_url == '' || res.data.data.list[i].img_url == this.defaultImg()) {
+              res.data.data.list[i].img_url = 'static/images/head_default.png'
+            }
+          }
+          let lists = res.data.data.list
+          lists.forEach((element,index) => {
+            let role_list = element.employee_detail.role_list
+              if(this.Out_of_the_current){
+                role_list.forEach((item,key)=>{
+                  if(item.name == "creator"){
+                    lists.splice(index,1)
+                  }
+               })
+              }
+          });
+          lists.forEach((element,index) => {
+            if(this.two_of_the_current){
+              if(element.id == this.two_of_the_current_two){
+                lists.splice(index,1)
+              }
+            }
+          })
+          this.list = lists
+          this.searchBox = this.list
+          // console.log(this.searchBox)
+          done()
+        }).catch((e) => {
+          done()
+        })
+      }
+    },
+    created() {
+      if (document.documentElement.style.height) {
+        this.com_height = document.documentElement.style.height
+      }
+      setTimeout(() => {
+        if (this.$route.query.pid) {
+          this.pid = this.$route.query.pid
+        }
+        this.get_user_list(function () {
+
+        })
+        this.get_dept_list()
+      }, 200)
+
+    }
+  }
+</script>
+
+<style scoped>
+  .employee_selector_box {
+    width: 600px;
+    padding: 24px;
+  }
+
+  /* 搜索框 */
+  .employee_selector_box .search {
+    position: relative;
+    display: table-cell;
+    left: 10%;
+    padding: 0;
+    border: 1px #C0C4CC solid;
+    border-radius: 16.5px;
+  }
+
+  .employee_selector_box .search-box button {
+    display: inline-block;
+    vertical-align: middle;
+    margin-left: 10px;
+    width: auto;
+    padding: 0;
+    background: none;
+    border-radius: 0px;
+    border: none;
+  }
+
+  .employee_selector_box .search-box /deep/ .el-input {
+    display: inline-block;
+    width: 84%;
+    padding: 0 24px 0 6px;
+    background: none;
+    border-radius: 0px;
+    border: none;
+  }
+
+  .employee_selector_box .search-box /deep/ .el-input input {
+    padding: 0;
+    line-height: 34px;
+    border: none;
+  }
+
+  /* /搜索框 */
+
+  /* 左边框 */
+  .employee_selector_box .choose_left {
+    padding: 0 10px;
+    margin: 8px 0;
+  }
+
+  .employee_selector_box .choose_left .employee_cell {
+    border-bottom: 1px #f8f8f8 solid;
+  }
+
+  .employee_selector_box .choose_left .employee_cell_a .employee_cell {
+    border-bottom: none;
+  }
+
+  .employee_selector_box .choose_left .employee_checkbox {
+    padding-left: 8px;
+  }
+
+  .employee_selector_box .choose_left .employee_img_url {
+    padding-left: 8px;
+  }
+
+  .employee_selector_box .choose_left .employee_name {
+    padding-left: 8px;
+  }
+
+  .employee_selector_box /deep/ .el-scrollbar__thumb {
+    width: 2px;
+    margin: 15px 0 0 6px;
+    background: #409EFF;
+  }
+
+  /* 左边框 */
+
+  /* 右边距 */
+  .employee_selector_box .option-box {
+    padding: 14px 0;
+  }
+
+  .employee_selector_box .option-box button {
+    margin-right: 16px;
+  }
+
+  .employee_selector_box .choose_right {
+    padding: 8px 10px;
+  }
+
+  .employee_selector_box .choose_right .employee_delete .el-button {
+    transform: scale(0.5);
+    background: #C0C4CC;
+  }
+
+  .employee_selector_box .choose_right .employee_delete .el-button /deep/ .el-icon-close {
+    color: #fff;
+  }
+
+  .employee_selector_box .choose_right .employee_delete .el-button:active {
+    background: #409EFF;
+  }
+
+  .employee_selector_box .choose_right .employee_delete .el-button:active /deep/ .el-icon-close {
+    color: #FFF;
+  }
+
+  .employee_selector_box .choose_right .employee_cell .employee_name {
+    padding-left: 8px;
+  }
+
+  .employee_selector_box .choose_right .employee_cell .employee_img_url {
+    padding-left: 8px;
+  }
+
+  /* 右边距 */
+
+  .employee_selector_box /deep/ .employee_cell {
+    padding: 8px 0;
+  }
+
+  .employee_selector_box /deep/ .employee_cell:hover {
+    background: #ecf5ff;
+  }
+
+  .employee_cell {
+    display: -webkit-inline-box;
+    cursor: pointer;
+    width: 100%;
+    color: #606266;
+    padding: 8px 0;
+    background-color: transparent;
+  }
+
+  .employee_cell .employee_cell_clear {
+    clear: both;
+  }
+
+  .employee_cell .employee_img_url {
+    display: table-cell;
+    vertical-align: middle;
+    width: 30px;
+    padding-left: 0px;
+  }
+
+  .employee_cell .employee_img_url img {
+    width: 24px;
+    height: 24px;
+    border-radius: 50%;
+  }
+
+  .employee_cell .employee_checkbox {
+    display: table-cell;
+    vertical-align: middle;
+    width: 30px;
+    text-align: center;
+  }
+
+  .employee_cell .employee_name {
+    display: table-cell;
+    vertical-align: middle;
+    color: #606266;
+  }
+
+  .employee_delete {
+    display: table-cell;
+    text-align: right;
+    padding-right: 0px;
+  }
+
+  .employee_cell_a {
+    display: block;
+  }
+
+  .employee_cell_a:hover {
+    background-color: #ecf5ff;
+    border-radius: 4px;
+  }
+
+  .dept_child_cell {
+    display: table-cell;
+    vertical-align: middle;
+  }
+
+  .dept_child_cell span {
+    float: right;
+    padding-right: 8px;
+  }
+
+  .dept_child_cell span:hover {
+    color: #1c1c1c;
+  }
+
+  .dept_child_cell span:active {
+    color: #1c1c1c;
+  }
+
+  .scroller-box {
+    height: 440px;
+    padding-right: 0px !important;
+    background-color: #fdfdfd;
+    border: 1px solid #eee;
+    border-radius: 4px;
+    overflow: hidden;
+  }
+  /* .scroller-box.one{
+    height: 440px;
+  } */
+
+  .col-line {
+    position: relative;
+    height: 400px;
+  }
+
+  .col-line:before {
+    content: " ";
+    width: 1px;
+    height: 400px;
+    position: absolute;
+    top: 0;
+    bottom: 0;
+    left: 50%;
+    background-color: #eee;
+  }
+
+  .search-box {
+    background-color: #fff;
+    padding: 14px 5px;
+    border-bottom: 1px solid #eee;
+    margin: 0 -5px;
+  }
+
+  .option-box {
+    padding: 5px;
+    background-color: #fff;
+    border-bottom: 1px solid #eee;
+    margin: 0 -5px;
+    text-align: right;
+  }
+
+  .child_btn {
+    color: #409EFF;
+  }
+  .dept_path{
+    margin: 10px 0;
+    display: block;
+    white-space: nowrap;
+    overflow: auto;
+  }
+
+  /*滚动条的宽度*/
+
+  .dept_path::-webkit-scrollbar {
+    width:5px;
+    height:5px;
+  }
+
+  /*外层轨道。可以用display:none让其不显示,也可以添加背景图片,颜色改变显示效果*/
+
+  .dept_path::-webkit-scrollbar-track {
+    width: 6px;
+    background-color:#fff0;
+    -webkit-border-radius: 2em;
+    -moz-border-radius: 2em;
+    border-radius:2em;
+  }
+
+  /*滚动条的设置*/
+
+  .dept_path::-webkit-scrollbar-thumb {
+    background-color:#fff0;
+    background-clip:padding-box;
+    min-height:28px;
+    -webkit-border-radius: 2em;
+    -moz-border-radius: 2em;
+    border-radius:2em;
+  }
+  /*滚动条移上去的背景*/
+
+  .dept_path:hover::-webkit-scrollbar-thumb{
+    background-color:rgba(144,147,153,.3);
+  }
+  .scrollbarHeight1{
+    height: 320px;
+  }
+  .scrollbarHeight2{
+    height: 340px;
+  }
+</style>

+ 1115 - 0
src/views/common/EmployeeSelectorVTwo.vue

@@ -0,0 +1,1115 @@
+<template>
+  <el-dialog
+    :title="title"
+    :visible.sync="visible_" :close-on-click-modal="false" :before-close="close_before" append-to-body @close='closeDialog'
+    width="640px" class="employee_select_dialog">
+    <div class="employee_selector_box" v-loading="selectApersonModuleLoad">
+      <el-row :gutter="10">
+        <el-col :xs="11" :sm="11" :md="11" :lg="11" :xl="11" class="scroller-box">
+
+          <div class="search-box">
+            <div class="search">
+            <el-button slot="append" icon="el-icon-search" class="manager_button"></el-button>
+            <el-input v-model="keyword" placeholder="请输入内容"></el-input>
+            </div>
+          </div>
+          <div class="dept_path">
+            <a href="javascript:void(0);" @click="back_by_index(0)">全公司</a>
+            <a
+              v-for="(item, index) in pid_list_arr"
+              :key="index"
+              href="javascript:void(0);"
+              @click="back_by_index(index + 1)"
+            >
+              <i class="el-icon-arrow-right"></i>
+              <WWOpenData type="departmentName" :openid="item.name"></WWOpenData>
+            </a>
+          </div>
+          <el-checkbox v-if="isChecKedAll" v-model="checked" @change="checkedChange" >全选</el-checkbox>
+          <el-scrollbar
+            wrap-class="column-wrapper scrollable-items-container"
+            :native="false"
+            :class="isChecKedAll?'scrollbarHeight1':'scrollbarHeight2'"
+          >
+            <div class="choose_left">
+              <div v-if="hidden_department">
+              </div>
+              <a href="javascript:void(0)" v-for="(item,index) in dept_list" :key="index" v-else>
+                <div class="employee_cell" @click.stop="select_dept(item)"
+                     v-show="item.pid == pid && item.name.indexOf(keyword) >= 0 && dept_not_select.indexOf(item.id) < 0">
+
+                  <div class="employee_checkbox" style="position: relative;">
+                    <el-checkbox v-if="can_select_dept" v-model="item.checked"></el-checkbox>
+                    <div style=" position: absolute; top: 0; left: 0; right: 0; bottom: 0; z-index: 5;"></div>
+                  </div>
+                  <div class="employee_name">
+                    <WWOpenData type="departmentName" :openid="item.name"></WWOpenData>
+                  </div>
+
+                  <div v-if="can_select_dept" class="dept_child_cell">
+                    <span href="javascript:void(0);" class="child_btn" @click.stop="show_child(item)">
+                      | 下级
+                    </span>
+                  </div>
+
+                  <div class="employee_cell_clear"></div>
+
+                </div>
+              </a>
+
+              <div class="persons_box" style="padding-top:4px;">
+                <a class="employee_cell_a" href="javascript:void(0)" v-for="(item,index) in list" :key="index">
+                  <div class="employee_cell" v-if="can_select_employee" @click="select_employee(item)"
+                       v-show="employee_not_select.indexOf(item.id) < 0">
+
+                    <div class="employee_checkbox" style="position: relative;">
+                      <!-- <el-checkbox v-model="item.checked"></el-checkbox> -->
+                      <el-checkbox v-model="item.checked" v-if="selectedQuitEmployee" :style="item.status > 1 || employee_not_select.indexOf(item.id) > 0?'opacity: 0':'opacity: 1'" ></el-checkbox>
+                      <el-checkbox v-model="item.checked" v-if="!selectedQuitEmployee" :style="item.status > 1 || employee_not_select.indexOf(item.id) > 0?'opacity: 0':'opacity: 1'" ></el-checkbox>
+                      <div style=" position: absolute; top: 0; left: 0; right: 0; bottom: 0; z-index: 5;"></div>
+                    </div>
+                    <div class="employee_img_url">
+                      <img :src="item.img_url" class="employee_cell_head_img"/>
+                    </div>
+                    <div class="employee_name">
+                      <!-- {{item.name}} -->
+                      <WWOpenData type="userName" :openid="item.name"></WWOpenData>
+                      {{item.direct_Supervisor?'(直属上级)':''}}
+                    </div>
+                    <div class="employee_cell_clear"></div>
+
+                  </div>
+                </a>
+              </div>
+
+            </div>
+
+
+          </el-scrollbar>
+        </el-col>
+        <el-col :xs="2" :sm="2" :md="2" :lg="2" :xl="2" class="col-line"><span style="opacity: 0;">空</span></el-col>
+        <el-col :xs="11" :sm="11" :md="11" :lg="11" :xl="11" class="scroller-box">
+          <div class="option-box">
+            <el-button type="type" @click="clear_data">清空</el-button>
+          </div>
+          <el-scrollbar
+            wrap-class="column-wrapper scrollable-items-container"
+            :native="false"
+            style="height: 354px;"
+          >
+            <div class="choose_right">
+              <div class="employee_cell" v-for="(item,index) in dept_selected_list" :key="index">
+
+                <div class="employee_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>
+                </div>
+                <div class="employee_cell_clear"></div>
+              </div>
+
+              <div class="employee_cell" v-for="(item,index) in employee_selected_list" :key="index">
+                <div class="employee_img_url">
+                  <img :src="item.img_url" class="employee_cell_head_img"/>
+                </div>
+                <div class="employee_name">
+                  <!-- {{item.name}} -->
+                  <WWOpenData type="userName" :openid="item.name"></WWOpenData>
+                  <span v-if="direct_Supervisor_you">{{item.id==directSupervisor?'(直属上级)':''}}</span>
+                </div>
+                <div class="employee_delete">
+                  <el-button type="default" size="mini" @click="employee_cancel(item)" icon="el-icon-close" circle></el-button>
+                </div>
+                <div class="employee_cell_clear"></div>
+              </div>
+            </div>
+          </el-scrollbar>
+        </el-col>
+      </el-row>
+    </div>
+
+    <span slot="footer" class="dialog-footer">
+    <el-button @click="close">取 消</el-button>
+    <el-button type="primary" @click="confirm">确 定</el-button>
+  </span>
+
+
+  </el-dialog>
+</template>
+
+<script>
+
+  export default {
+    props:{
+      title:{
+        type: String,
+        default: "选择部门和员工"
+      },
+      isChecKedAll: {
+        type: Boolean,
+        default: false
+      },
+      whether_to_remove_right: {
+        type: Boolean,
+        default: false
+      },
+      hidden_department: {
+        type: Boolean,
+        default: false
+      },
+      append_body: {
+        type: Boolean,
+        default: false
+      },
+      visible: {
+        type: Boolean,
+        default: false
+      },
+      can_select_dept: {
+        type: Boolean,
+        default: true
+      },
+      can_select_employee: {
+        type: Boolean,
+        default: true
+      },
+      employee_not_select: {
+        type: Array,
+        default: () => {
+          return []
+        }
+      },
+      dept_not_select: {
+        type: Array,
+        default: () => {
+          return []
+        }
+      },
+      selected: {
+        type: Object,
+        default: () => {
+          return {employee: [], dept: []}
+        }
+      },
+      multi: {
+        type: Boolean,
+        default: true
+      },
+      dept_multi: {
+        type: Boolean,
+        default: true
+      },
+      employee_list: {
+        type: Array,
+        default: () => {
+          return []
+        }
+      },
+      selectedQuitEmployee:{
+        type: Boolean,
+        default: true
+      },
+      close_clear_data: {
+        type: Boolean,
+        default: true
+      },
+      max: {
+        type: Number,
+        default: 0
+      },
+      use_employee_list: {
+        type: Boolean,
+        default: false
+      },
+      is_filtration_creator: {
+        //是否去除创始人
+        type: Boolean,
+        default: false
+      },
+      is_manager_only: {
+        //是否只显示管理者
+        type: Boolean,
+        default: false
+      },
+      include_self: {
+        //是否显示自己
+        type: Boolean,
+        default: true
+      },
+      employee_not_select: {
+        // 排除员工的ID,包含ID时不出现在选择列表中
+        type: Array,
+        default: () => {
+          return [];
+        }
+      },
+    },
+    name: "EmployeeSelector",
+    data() {
+      let selected = JSON.parse(JSON.stringify(this.selected))
+      return {
+        selectApersonModuleLoad:false,
+        searchBox:[],
+        direct_Supervisor_you:false,
+        directSupervisor:0,
+        dialogVisible: true,
+        employee_selected_list: selected.employee,
+        dept_selected_list: selected.dept,
+        employee_selected: [],
+        dept_selected: [],
+        com_height: '100%',
+        company_info: {},
+        actions_show: false,
+        dept_name: '',
+        dept_id: 0,
+        list: [],
+        dept_list: [],
+        keyword: '',
+        owner_id: 0,
+        user_info: this.$store.getters.user_info,
+        pid: 0,
+        pid_list: [],
+        selected_box_width: '0',
+        pid_list_arr: [],
+        visible_: false,
+        checked: false//全选按钮
+      }
+    },
+    watch: {
+      max(val) {
+        this.set_button_width()
+      },
+      selected:{
+        deep:true,
+        handler(val){
+          let selected = JSON.parse(JSON.stringify(val))
+          this.employee_selected = []
+          this.dept_selected = []
+          this.employee_selected_list = selected.employee
+          this.dept_selected_list = selected.dept
+          for (let i in selected.employee) {
+            if (!selected.employee[i].img_url || selected.employee[i].img_url == this.defaultImg()) {
+              // this.$set(this.selected.employee[i], 'img_url', 'static/images/head_default.png')
+              this.$set(this.selected.employee[i], 'img_url', 'static/images/gttx0.jpg')
+            }
+            this.employee_selected.push(selected.employee[i].id)
+          }
+          for(let i in selected.dept){
+            this.dept_selected.push(selected.dept[i].dept_id)
+          }
+          this.set_button_width()
+        }
+      },
+      // selected(val) {
+      //   let selected = JSON.parse(JSON.stringify(val))
+      //   this.employee_selected = []
+      //   this.dept_selected = []
+      //   this.employee_selected_list = selected.employee
+      //   this.dept_selected_list = selected.dept
+      //   for (let i in selected.employee) {
+      //     this.employee_selected.push(selected.employee[i].id)
+      //   }
+      //   for(let i in selected.dept){
+      //     this.dept_selected.push(selected.dept[i].dept_id)
+      //   }
+      //   this.set_button_width()
+      // },
+      visible(val){
+        this.visible_ = JSON.parse(JSON.stringify(val))
+        if(val){
+          this.selectApersonModuleLoad = true
+          setTimeout(() => {
+            if (this.$route.query.pid) {
+              this.pid = this.$route.query.pid
+            }
+            this.get_user_list(function () {
+
+            })
+            this.get_dept_list()
+          }, 200)
+        }
+        this.set_button_width()
+      },
+      employee_selected_list() {
+        let l = this.employee_selected_list.length + this.dept_selected_list.length
+        let width = 0.9 * l;
+        this.selected_box_width = width + 'rem'
+        this.set_button_width()
+        
+        this.checkAll_Optimize()//全选细节优化,选中发生变化时执行
+      },
+      dept_selected_list() {
+        let l = this.employee_selected_list.length + this.dept_selected_list.length
+        let width = 0.9 * l;
+        this.selected_box_width = width + 'rem'
+        this.set_button_width()
+      },
+      keyword(val) {
+        this.list = this.searchBox.filter(item=> item.name.includes(this.keyword))
+        // this.get_user_list(function () {
+
+        // })
+      },
+      
+      list(){
+        this.checkAll_Optimize()//全选细节优化,人员列表发生变化时执行
+      },
+    },
+    methods: {
+      defaultImg(){
+        return "https://rescdn.qqmail.com/node/wwmng/wwmng/style/images/independent/DefaultAvatar$73ba92b5.png"
+      },
+      //全选细节优化
+      checkAll_Optimize(){
+        let checkedTrue = true
+        for(let i in this.list){
+          if(this.list[i].status!=2 && this.list[i].status!=3){//排除人员列表中的离职和拒绝加入人员
+            if(this.list[i].checked == false){
+              checkedTrue = false
+            }
+          }
+        }
+        if(checkedTrue){
+          if(this.list.length != 0){
+            this.checked = true
+          }else{
+            this.checked = false
+          }
+        }else{
+          this.checked = false
+        }
+      },
+      //关闭弹窗清除数据
+      closeDialog(){
+          this.direct_Supervisor_you = false
+      },
+      // 全选
+      checkedChange(val){
+        if (val) {
+          for (let i in this.list) {
+            if (this.employee_not_select.indexOf(this.list[i].id) < 0) {
+              this.$set(this.list[i], 'checked', true)
+            }
+          }
+          this.$nextTick(() => {
+            let employeeSelectedList = JSON.parse(JSON.stringify(this.employee_selected_list))
+            let employeeSelectedIds = [], total = 0
+            employeeSelectedList.forEach(element => {
+              employeeSelectedIds.push(element.id)
+            });
+            for (const i in this.list) {
+              this.list[i].status !== 2 && this.list[i].status !== 3 && this.selectedQuitEmployee?this.$set(this.list[i], 'checked', true):''
+              if (employeeSelectedIds.includes(this.list[i].id)) {
+                total += 1
+              }else{
+                this.list[i].status !== 2 && this.list[i].status !== 3 && this.selectedQuitEmployee?this.employee_selected_list.push(this.list[i]):''
+              }
+            }
+            // debugger
+          })
+        }else{
+            for(let i in this.employee_selected_list){
+              for(let a in this.list){
+                if(this.list[a].status!=2 && this.list[a].status!=3){//排除人员列表中的离职和拒绝加入人员
+                  if(this.employee_selected_list[i].id == this.list[a].id){
+                    this.employee_selected_list.splice(i,1)
+                  }
+                }
+              }
+            }
+          // this.employee_selected_list = []
+          // this.employee_selected = []
+          for (let i in this.list) {
+            this.$set(this.list[i], 'checked', false)
+          }
+          // this.clear_data()
+        }
+      },
+
+      close_before(done) {
+        this.close()
+      },
+      set_button_width() {
+
+      },
+      back() {
+        this.pid = this.pid_list[this.pid_list.length - 1]
+        this.pid_list.splice(this.pid_list.length - 1)
+        this.pid_list_arr.splice(this.pid_list_arr.length - 1)
+        this.get_user_list(function () {
+
+        })
+      },
+      back_by_index(index) {
+
+        if (index == this.pid_list.length) {
+          return false
+        }
+        this.pid = this.pid_list[index]
+        this.pid_list.splice(index, 100)
+        this.pid_list_arr.splice(index, 100)
+        this.get_user_list(function () {
+
+        })
+      },
+      show_child(item) {
+        this.pid_list.push(this.pid)
+        this.pid_list_arr.push(item)
+        this.pid = item.id
+        this.get_user_list(function () {
+
+        })
+      },
+      employee_cancel(item) {
+
+        this.employee_selected.splice(this.employee_selected.indexOf(item.id), 1)
+        let delete_index = -1
+        for (let i in this.employee_selected_list) {
+          if (this.employee_selected.indexOf(this.employee_selected_list[i].id) < 0) {
+            delete_index = i
+          }
+        }
+        if (delete_index >= 0) {
+          // this.employee_selected_list.splice(delete_index, 1)
+          for (let i in this.list) {
+            if (this.list[i].id == item.id) {
+              this.$set(this.list[i], 'checked', false)
+            }
+          }
+          
+          for(let i in this.employee_selected_list){
+            if(this.employee_selected_list[i].id == item.id){
+              this.employee_selected_list.splice(i, 1)
+            }
+          }
+        }
+      },
+      dept_cancel(item) {
+        this.dept_selected.splice(this.dept_selected.indexOf(item.dept_id), 1)
+        let delete_index = -1
+        for (let i in this.dept_selected_list) {
+          // if (this.dept_selected.indexOf(this.dept_selected_list[i].dept_id) < 0) {
+          //   delete_index = i
+          // }
+          if(this.dept_selected_list[i].dept_id == item.id){
+            delete_index = i
+          }
+          if(this.dept_selected_list[i].dept_id == item.dept_id){
+            delete_index = i
+          }
+        }
+        if (delete_index >= 0) {
+          this.dept_selected_list.splice(delete_index, 1)
+          for(let i in this.dept_list){
+            if(this.dept_list[i].id == item.dept_id){
+              this.$set(this.dept_list[i], 'checked', false)
+            }
+          }
+        }
+      },
+      select_employee(item){
+        if (this.selectedQuitEmployee) {
+          if (this.employee_not_select.indexOf(item.id) >= 0 || item.status > 1) {
+            return false
+          }
+        }else{
+          if (this.employee_not_select.indexOf(item.id) >= 0) {
+            return false
+          }
+        }
+
+        if(item.checked){
+          item.checked = false
+          this.employee_cancel(item)
+        } else {
+          if (!this.multi) {
+            this.employee_selected = []
+            this.employee_selected_list = []
+            for (let i in this.list) {
+              this.$set(this.list[i], 'checked', false)
+            }
+          }
+          if (this.max > 0 && this.employee_selected.length == this.max && this.multi) {
+            this.$toast('最多只能选择' + this.max + '人')
+            return false
+          }
+          this.employee_selected.push(item.id)
+          this.employee_selected_list.push({id: item.id, name: item.name, img_url: item.img_url,direct_Supervisor:item.direct_Supervisor})
+          item.checked = true
+        }
+        
+        WWOpenData.bind(this.$el)
+      },
+      unique(arr){
+        return Array.from(new Set(arr))
+      },
+      select_dept(item) {
+        if (!this.can_select_dept) {
+          this.show_child(item)
+          return false
+        }
+        if (item.checked) {
+          item.checked = false
+          this.dept_cancel(item)
+        } else {
+          if (!this.dept_multi) {
+            this.dept_selected = []
+            this.dept_selected_list = []
+            for (let i in this.dept_list) {
+              this.$set(this.dept_list[i], 'checked', false)
+            }
+          }
+          let dept_sele = this.dept_selected
+          dept_sele.push(item.id)
+          this.dept_selected =this.unique(dept_sele)
+          // this.dept_selected.push(item.id)
+          // let dept_sele = new Set(this.dept_selected)
+          // this.dept_selected = this.unique(this.dept_selected)
+          this.dept_selected_list.push({dept_id: item.id, dept_name: item.name, avatar: 'static/images/e66f.jpg'})
+          let newobj = {};
+            this.dept_selected_list = this.dept_selected_list .reduce((preVal, curVal) => {
+              newobj[curVal.dept_id] ? '' : newobj[curVal.dept_id] = preVal.push(curVal);
+              return preVal
+            }, [])
+          item.checked = true
+        }
+
+      },
+      clear_data(){
+        this.employee_selected = []
+        this.employee_selected_list = []
+        this.dept_selected = []
+        this.dept_selected_list = []
+        for (let i in this.list) {
+          this.$set(this.list[i], 'checked', false)
+        }
+        for (let i in this.dept_list) {
+          this.$set(this.dept_list[i], 'checked', false)
+        }
+      },
+      close() {
+        //this.visible = false
+        this.$emit('update:visible', false)
+        this.$emit('cancel')
+        if (this.close_clear_data) {
+          // this.employee_selected = []
+          // this.employee_selected_list = []
+          this.dept_selected = []
+          this.dept_selected_list = []
+          for (let i in this.list) {
+            this.$set(this.list[i], 'checked', false)
+          }
+          for (let i in this.dept_list) {
+            this.$set(this.dept_list[i], 'checked', false)
+          }
+        }
+
+      },
+      confirm() {
+        this.$emit('confirm', {
+          employee: this.employee_selected_list,
+          dept: this.dept_selected_list
+        })
+        this.close()
+      },
+      get_dept_list(){
+        if(this.employee_list.length > 0){
+          return
+        }
+        this.$http('get','/api/department/index',{pid: this.pid, keyword:this.keyword}).then((res) => {
+          for(let i in res.data.data.list){
+            res.data.data.list[i]['checked'] = false
+            if (this.dept_selected.indexOf(res.data.data.list[i].id) >= 0) {
+              res.data.data.list[i]['checked'] = true
+            }
+          }
+          this.dept_list = res.data.data.list
+          this.owner_id = res.data.data.owner_id
+          this.company_info = res.data.data.company_info
+          if (res.data.data.dept_info == null) {
+            this.dept_name = JSON.parse(JSON.stringify(res.data.data.company_info.name))
+            this.dept_id = 0
+          } else {
+            this.dept_name = JSON.parse(JSON.stringify(res.data.data.dept_info.name))
+            this.dept_id = res.data.data.dept_info.id
+          }
+
+        }).catch((e) => {
+
+        })
+      },
+      get_user_list (done) {
+        if(this.employee_list.length > 0){
+          let list = this.employee_list
+          if(this.employee_selected.length == 0){
+            for(let i in this.selected.employee){
+              this.employee_selected.push(this.selected.employee[i].id)
+            }
+          }
+          for(let i in list){
+            if(list[i].direct_Supervisor){
+              this.direct_Supervisor_you = list[i].direct_Supervisor
+              this.directSupervisor = list[i].id
+            }
+            list[i]['letter_index'] = '#'
+            if(this.$store.getters.employee_map[list[i].id]){
+              list[i]['letter_index'] = this.$store.getters.employee_map[list[i].id].letter_index
+              if(this.$store.getters.employee_map[list[i].id].img_url == '' || this.$store.getters.employee_map[list[i].id].img_url == this.defaultImg()){
+                // list[i]['img_url'] = 'static/images/head_default.png'
+                list[i]['img_url'] = 'static/images/gttx0.jpg'
+              }else {
+                list[i]['img_url'] = this.$store.getters.employee_map[list[i].id].img_url
+              }
+            }
+
+            list[i]['checked'] = false
+            if(this.employee_selected.indexOf(list[i].id) >= 0){
+              list[i]['checked'] = true
+            }
+          }
+
+          if (this.keyword) {
+            list = []
+            this.employee_list.forEach(element => {
+              if(element.name.indexOf(this.keyword) != "-1"){
+                list.push(element)
+              }
+            });
+          }
+
+          this.list = list.sort((a,b) => {
+            return a.letter_index.charCodeAt(0) - b.letter_index.charCodeAt(0)
+          })
+          if(this.whether_to_remove_right){
+            this.selectedLists()
+          }
+          this.searchBox = this.list
+          
+          this.selectApersonModuleLoad = false
+          done()
+          return false
+        }
+        this.list = []
+        this.selectApersonModuleLoad = true
+        this.$http('get','/api/employee/index',{dept_id: this.pid,keywords: this.keyword,page: 0,page_size: 2000}).then((res) => {
+          
+          let list = this.filtration(res.data.data.list);
+
+          let employeeSelectedData = []
+          for(let i in this.employee_selected_list){
+            employeeSelectedData.push(this.employee_selected_list[i].id)
+          }
+          for (let i in list) {
+            list[i]['checked'] = false
+            if (this.employee_selected.indexOf(list[i].id) >= 0) {
+              list[i]['checked'] = true
+            }
+            if (employeeSelectedData.indexOf(list[i].id) >= 0) {
+              list[i]['checked'] = true
+            }
+            if (list[i].img_url == '' || list[i].img_url == this.defaultImg()) {
+              // list[i].img_url = 'static/images/head_default.png'
+              list[i].img_url = 'static/images/gttx0.jpg'
+            }
+          }
+          if (this.use_employee_list) {
+            list.forEach(element => {
+              if (element.employee_detail.role_list.findIndex((value)=>value.name=='dept_manager'||value.name=='creator'||value.name=='point_manager'||value.name=='admin') >= 0) {
+                this.list.push(element)
+              }
+            });
+            return false
+          }else{
+            this.list = list
+          }
+          if(this.whether_to_remove_right){
+            this.selectedLists()
+          }
+          this.searchBox = this.list
+          done()
+        }).catch((e) => {
+          done()
+        }).finally(()=>{
+          this.selectApersonModuleLoad = false
+        })
+      },
+      selectedLists(){
+        let selected_list = []
+        // console.log(this.employee_selected_list.filter(a=>!this.list.some(b=>b.id==a.id)))
+        selected_list = this.employee_selected_list.filter(a=>!this.list.some(b=>b.id==a.id))
+        console.log(selected_list.length)
+        if(selected_list.length!=0){
+          console.log(selected_list.length)
+          for(let i in this.employee_selected_list){
+            for(let a in selected_list){
+              if(this.employee_selected_list[i].id == selected_list[a].id){
+                this.employee_selected_list.splice(i,1)
+              }
+            }
+          }
+        }
+      },
+      
+    // 过滤各种条件:如:自己,创始人,只显示管理者等。。。
+      filtration(data) {
+        var list = data;
+        // 去除已经离职的人
+        for (let i = 0; i < list.length; i++) {
+          if (list[i].status == 2) {
+            list.splice(i, 1);
+            i--
+          }
+        }
+        var managerList = []; // 管理者列表
+        // 只显示管理者
+        if (this.is_manager_only) {
+          var isManager;
+          list.map(item => {
+            isManager = false;
+            item.employee_detail.role_list.map(item2 => {
+              if (item2.name == 'creator' || item2.name == 'point_manager' || item2.name == 'dept_manager' || item2.name == 'admin') {
+                isManager = true;
+              }
+            });
+            if (isManager) {
+              managerList.push(item);
+            }
+          });
+          list = managerList;
+        }
+        // 过滤自己
+        if (!this.include_self) {
+          const currUserId = this.$store.getters.user_info.id;
+          for (let i = 0; i < list.length; i++) {
+            if (list[i].id == currUserId) {
+              list.splice(i, 1);
+              i--
+            }
+          }
+        }
+        // 过滤创始人
+        if (this.is_filtration_creator) {
+          for (let i = 0; i < list.length; i++) {
+            if (list[i].is_creator == 1) {
+              list.splice(i,1);
+              i--
+            }
+          }
+        }
+        //过滤指定人员[]
+        if (this.employee_not_select.length > 0) {
+          for (let i = 0; i < list.length; i++) {
+            if (this.employee_not_select.indexOf(list[i].id) >= 0) {
+              list.splice(i, 1);
+              i--
+            }
+          }
+        }
+        return list;
+      },
+      removeSelf(list){
+        if (!this.include_self){
+          const currUserId = this.$store.getters.user_info.id
+          const index = list.findIndex(o=>o.id === currUserId)
+          if(index > -1){
+            list.splice(index, 1)
+          }
+        }
+        return list
+      }
+    },
+    created() {
+      for(let i in this.selected.employee){
+        if(!this.selected.employee[i].img_url || this.selected.employee[i].img_url == this.defaultImg()){
+          // this.selected.employee[i].img_url = 'static/images/head_default.png'
+          this.selected.employee[i].img_url = 'static/images/gttx0.jpg'
+        }
+      }
+      if (document.documentElement.style.height) {
+        this.com_height = document.documentElement.style.height
+      }
+      setTimeout(() => {
+        if (this.$route.query.pid) {
+          this.pid = this.$route.query.pid
+        }
+        this.get_user_list(function () {
+          
+        })
+        
+        this.get_dept_list()
+      }, 200)
+
+    }
+  }
+</script>
+
+<style scoped>
+  .employee_selector_box {
+    width: 600px;
+    padding: 24px;
+  }
+
+  /* 搜索框 */
+  .employee_selector_box .search{
+    position: relative;
+    display: table-cell;
+    left: 10%;
+    padding: 0;
+    border: 1px #C0C4CC solid;
+    border-radius: 16.5px;
+  }
+  .employee_selector_box .search-box button{
+    display: inline-block;
+    vertical-align: middle;
+    margin-left: 10px;
+    width: auto;
+    padding: 0;
+    background: none;
+    border-radius: 0px;
+    border: none;
+  }
+  .employee_selector_box .search-box /deep/ .el-input{
+    display: inline-block;
+    width: 84%;
+    padding: 0 24px 0 6px;
+    background: none;
+    border-radius: 0px;
+    border: none;
+  }
+  .employee_selector_box .search-box /deep/ .el-input input{
+    padding:0;
+    line-height: 34px;
+    border:none;
+  }
+  /* /搜索框 */
+
+  /* 左边框 */
+  .employee_selector_box .choose_left {
+    /* padding:8px 10px 8px 10px; */
+    padding: 0 10px;
+    margin: 8px 0;
+  }
+
+  .employee_selector_box .choose_left .employee_cell{
+    border-bottom:1px #f8f8f8 solid;
+  }
+  .employee_selector_box .choose_left .employee_cell_a .employee_cell{
+    border-bottom:none;
+  }
+  .employee_selector_box .choose_left .employee_checkbox{
+    padding-left: 8px;
+  }
+  .employee_selector_box .choose_left .employee_img_url{
+    padding-left: 8px;
+  }
+  .employee_selector_box .choose_left .employee_name{
+    padding-left: 8px;
+  }
+
+  .employee_selector_box /deep/ .el-scrollbar__thumb {
+    width:2px;
+    margin:15px 0 0 6px;
+    background:#409EFF;
+  }
+  /* 左边框 */
+
+  /* 右边距 */
+  .employee_selector_box .option-box{
+    padding:14px 0;
+  }
+  .employee_selector_box .option-box button{
+    margin-right:16px;
+  }
+  .employee_selector_box .choose_right{
+    padding:8px 10px;
+  }
+  .employee_selector_box .choose_right .employee_delete .el-button{
+    transform: scale(0.5);
+    background: #C0C4CC;
+  }
+  .employee_selector_box .choose_right .employee_delete .el-button /deep/ .el-icon-close{
+    color:#fff;
+  }
+  .employee_selector_box .choose_right .employee_delete .el-button:active{
+    background: #409EFF;
+  }
+  .employee_selector_box .choose_right .employee_delete .el-button:active /deep/ .el-icon-close{
+    color:#FFF;
+  }
+  .employee_selector_box .choose_right .employee_cell .employee_name{
+    padding-left:8px;
+  }
+  .employee_selector_box .choose_right .employee_cell .employee_img_url{
+    padding-left:8px;
+  }
+  /* 右边距 */
+
+  .employee_selector_box /deep/ .employee_cell{
+    padding:8px 0;
+  }
+  .employee_selector_box /deep/ .employee_cell:hover{
+    background:#ecf5ff;
+  }
+
+  .employee_cell {
+    display: table;
+    cursor: pointer;
+    width: 100%;
+    color:#606266;
+    padding: 8px 0;
+    background-color: transparent;
+  }
+
+  .employee_cell .employee_cell_clear {
+    clear: both;
+  }
+
+  .employee_cell .employee_img_url {
+    display: table-cell;
+    vertical-align: middle;
+    width: 30px;
+    padding-left:0px;
+  }
+
+  .employee_cell .employee_img_url img {
+    width: 24px;
+    height: 24px;
+    border-radius: 50%;
+  }
+
+  .employee_cell .employee_checkbox {
+    display: table-cell;
+    vertical-align: middle;
+    width: 30px;
+    text-align: center;
+  }
+
+  .employee_cell .employee_name{
+    display:table-cell;
+    vertical-align: middle;
+    color:#606266;
+  }
+
+  .employee_delete {
+    display: table-cell;
+    text-align: right;
+    padding-right:0px;
+  }
+
+  .employee_cell_a {
+    display: block;
+  }
+
+  .employee_cell_a:hover {
+    background-color: #ecf5ff;
+    border-radius:4px;
+  }
+
+  .dept_child_cell {
+    display: table-cell;
+    vertical-align: middle;
+  }
+
+  .dept_child_cell span {
+    float: right;
+    padding-right:8px;
+  }
+  .dept_child_cell span:hover{
+    color:#1c1c1c;
+  }
+  .dept_child_cell span:active{
+    color:#1c1c1c;
+  }
+
+  .scroller-box {
+    height: 400px;
+    padding-right: 0px !important;
+    background-color: #fdfdfd;
+    border: 1px solid #eee;
+    border-radius: 4px;
+    overflow: hidden;
+  }
+
+  .col-line {
+    position: relative;
+    height: 400px;
+  }
+
+  .col-line:before {
+    content: " ";
+    width: 1px;
+    height: 400px;
+    position: absolute;
+    top: 0;
+    bottom: 0;
+    left: 50%;
+    background-color: #eee;
+  }
+
+  .search-box {
+    background-color: #fff;
+    padding:14px 5px;
+    border-bottom: 1px solid #eee;
+    margin: 0 -5px;
+  }
+
+  .option-box {
+    padding: 5px;
+    background-color: #fff;
+    border-bottom: 1px solid #eee;
+    margin: 0 -5px;
+    text-align: right;
+  }
+
+  .child_btn {
+    color: #409EFF;
+  }
+  .dept_path{
+    margin: 10px 0;
+    display: block;
+    white-space: nowrap;
+    overflow: auto;
+  }
+
+  /*滚动条的宽度*/
+
+  .dept_path::-webkit-scrollbar {
+    width:5px;
+    height:5px;
+  }
+
+  /*外层轨道。可以用display:none让其不显示,也可以添加背景图片,颜色改变显示效果*/
+
+  .dept_path::-webkit-scrollbar-track {
+    width: 6px;
+    background-color:#fff0;
+    -webkit-border-radius: 2em;
+    -moz-border-radius: 2em;
+    border-radius:2em;
+  }
+
+  /*滚动条的设置*/
+
+  .dept_path::-webkit-scrollbar-thumb {
+    background-color:#fff0;
+    background-clip:padding-box;
+    min-height:28px;
+    -webkit-border-radius: 2em;
+    -moz-border-radius: 2em;
+    border-radius:2em;
+  }
+  /*滚动条移上去的背景*/
+
+  .dept_path:hover::-webkit-scrollbar-thumb{
+    background-color:rgba(144,147,153,.3);
+  }
+
+
+  .scrollbarHeight1{
+    height: 300px;
+  }
+  .scrollbarHeight2{
+    height: 320px;
+  }
+</style>

+ 43 - 16
src/views/common/applicationIntegrationPopup.vue

@@ -19,23 +19,32 @@
             <el-form-item label="录入对象" :prop="'items.'+ index +'.employeeName'" :rules="[{ required: true, message: '请选择录入对象', trigger: 'change' }]">
               <el-row>
                 <el-col :span="18">
-                  <el-input v-show="employeeNames.length==0" auto-complete="off" v-model="item.employeeName" placeholder="请选择录入对象"></el-input>
+                  <el-input v-show="item.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>
+                  <div v-if="item.employeeNames.length>0"  @click="item.show_employee_selector = true" class="zindexName">
+                    <span v-for="(arr,att) in item.employeeNames" :key="att">
+                      <WWOpenData type="userName" :openid="arr.name"></WWOpenData><span v-if="(item.employeeNames.length-att)>1">,</span>
                     </span>
                   </div>
                 </el-col>
               </el-row>
-              <EmployeeSelector
+              <!-- <EmployeeSelector
+                :is_filtration_creator="true"
                 :employee_not_select="item.employee_not_select"
                 :can_select_employee="true"
                 :can_select_dept="false"
                 :multi="false"
                 :selected="item.employee_selected"
                 :visible.sync="item.show_employee_selector"
-                @confirm="employee_confirm"/>
+                @confirm="employee_confirm"/> -->
+              <EmployeeSelector
+                :isChecKedAll="false"
+                :employee_not_select="item.employee_not_select"
+                :multi="false"
+                :selected="item.employee_selected"
+                :visible.sync="item.show_employee_selector"
+                @confirm="employee_confirm"
+              />
             </el-form-item>
 
             <el-form-item label="指定规则">
@@ -105,12 +114,12 @@
                   <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-if="item.approvalName!=''" @click="item.show_approval_selector = true" class="zindexName">
-                    <wwOpenDAta type="userName" :openid="item.approvalName"></wwOpenDAta>
+                    <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
+              <!-- <EmployeeSelector
                 :employee_not_select="item.approval_not_select"
                 :can_select_employee="true"
                 :can_select_dept="false"
@@ -118,7 +127,18 @@
                 :employee_list="item.approval_employee_list"
                 :selected="item.approval_selected"
                 :visible.sync="item.show_approval_selector"
-                @confirm="approval_confirm"/>
+                @confirm="approval_confirm"/> -->
+              <EmployeeSelector
+                :employee_not_select="item.approval_not_select"
+                :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"
+              />
             </el-form-item>
 
           </div>
@@ -145,7 +165,7 @@
           <el-table :data="error_list">
             <el-table-column prop="target" label="员工">
               <template slot-scope="scope">
-                <wwOpenDAta type="userName" :openid="scope.row.target"></wwOpenDAta>
+                <WWOpenData type="userName" :openid="scope.row.target"></WWOpenData>
               </template>
             </el-table-column>
             <el-table-column prop="point" label="积分"></el-table-column>
@@ -189,7 +209,6 @@
     },
     data() {
       return {
-        employeeNames:[],
 
         pickerBeginDateBefore: {
           disabledDate(time) {
@@ -220,6 +239,7 @@
             // 录入对象
             employee_id: '',
             employeeName: '',
+            employeeNames:[],
             employee_not_select: [],
             employee_selected: {dept: [],employee:[]},
             show_employee_selector: false,
@@ -254,10 +274,9 @@
       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.dialogData.items[0].employeeNames = this.dialogData.items[0].employee_selected.employee
 
       this.initializesReviewer(this.user_info.employee_detail.superior_list,0,true)
-
     },
     methods: {
       // 附件上传
@@ -408,6 +427,7 @@
           // 录入对象
           employee_id: this.user_info.id,
           employeeName: this.user_info.name,
+          employeeNames: [{id: this.user_info.id ,img_url: this.user_info.img_url,name: this.user_info.name}],
           employee_not_select: [],
           employee_selected: {dept: [],employee:[{id: this.user_info.id ,img_url: this.user_info.img_url,name: this.user_info.name}]},
           show_employee_selector: false,
@@ -464,11 +484,18 @@
       },
       // 提交数据
       save(){
+        let reviewer_infoid = false
         let self = this
         let data = {items: []}
         self.dialogData.items.forEach(element => {
           data.items.push({rule_id: element.rule_id || 0, employee_id: element.employee_id || 0 ,item_id: element.item_id || 0, remark: element.remark, event_time: element.event_time, pt_id: element.pt_id, reviewer_id: element.reviewer_id || 0, files: element.files})
+          if(element.reviewer_id == this.user_info.id) reviewer_infoid = true
         });
+        if(reviewer_infoid){ 
+          self.btn_loading = false
+          this.$message.warning('不能提交给自己审批,请直接对员工进行【积分奖扣】或更换审批人')
+          return
+        }
         this.$http('post','/api/integral/review/apply',data,'v2').then(res => {
           if(res.data.code == 1){
             self.$refs['dialogData'].resetFields();
@@ -560,7 +587,6 @@
       },
       // 选择对象
       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) {
@@ -575,11 +601,11 @@
           }
         }
         item.employeeName = ''
-        this.employeeNames = []
+        item.employeeNames = []
         item.employee_selected.employee = []
         item.employee_id = ''
         if (data.employee !== null && data.employee.length != 0) {
-          this.employeeNames = data.employee
+          item.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
@@ -619,6 +645,7 @@
             // 录入对象
             employee_id: this.user_info.id,
             employeeName: this.user_info.name,
+            employeeNames: [{id: this.user_info.id ,img_url: this.user_info.img_url,name: this.user_info.name}],
             employee_not_select: [],
             employee_selected: {dept: [],employee:[{id: this.user_info.id ,img_url: this.user_info.img_url,name: this.user_info.name}]},
             show_employee_selector: false,

+ 36 - 7
src/views/common/bonusPointsPopup.vue

@@ -17,13 +17,13 @@
                 <div v-if="employee_list.length > 0"  @click="show_employee_selector = true" style=" position: absolute; top: 0; right: 0; left: 0; bottom: 0; z-index: 9;"></div>
                 <div v-if="employee_list.length > 0 && 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>
+                    <WWOpenData type="userName" :openid="item.name"></WWOpenData><span v-if="(employeeNames.length-index)>1">,</span>
                   </span>
                 </div>
                 <div v-if="employee_list.length == 0" @click="noPersonnelListTips" style=" position: absolute; top: 0; right: 0; left: 0; bottom: 0; z-index: 9;"></div>
               </el-col>
             </el-row>
-            <EmployeeSelector
+            <!-- <EmployeeSelector
               :employee_not_select="employee_not_select"
               :employee_list="employee_list"
               :can_select_employee="true"
@@ -31,7 +31,17 @@
               :close_clear_data="false"
               :selected="employee_selected"
               :visible.sync="show_employee_selector"
-              @confirm="move_employee_confirm"/>
+              @confirm="move_employee_confirm"/> -->
+              
+            <EmployeeSelector
+              :employee_not_select="employee_not_select"
+              :user_employee_list="true"
+              :employee_list="employee_list"
+              :close_clear_data="false"
+              :selected="employee_selected"
+              :visible.sync="show_employee_selector"
+              @confirm="move_employee_confirm"
+            />
           </el-form-item>
           
           <div v-for="(item,index) in dialogData.items" :key="index" @click.stop="itemIndex = index">
@@ -122,12 +132,12 @@
                 <el-col :span="18">
                   <el-input v-show="item.approvalName==''" auto-complete="off" v-model="item.approvalName" placeholder="请选择审批人"></el-input>
                   <div v-if="item.approvalName!=''" @click="item.show_approval_selector = true" class="zindexName">
-                    <wwOpenDAta type="userName" :openid="item.approvalName"></wwOpenDAta>
+                    <WWOpenData type="userName" :openid="item.approvalName"></WWOpenData>
                   </div>
                   <div v-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
+              <!-- <EmployeeSelector
                 :employee_not_select="item.approval_not_select"
                 :can_select_employee="true"
                 :can_select_dept="false"
@@ -135,7 +145,19 @@
                 :employee_list="employee_lists"
                 :selected="item.approval_selected"
                 :visible.sync="item.show_approval_selector"
-                @confirm="approval_confirm"/>
+                @confirm="approval_confirm"/> -->
+                
+              <EmployeeSelector
+                :employee_not_select="item.approval_not_select"
+                :multi="false"
+                :user_employee_list="true"
+                :isChecKedAll="false"
+                :is_filtration_creator="false"
+                :employee_list="employee_lists"
+                :selected="item.approval_selected"
+                :visible.sync="item.show_approval_selector"
+                @confirm="approval_confirm"
+              />
             </el-form-item>
 
           </div>
@@ -160,7 +182,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">
@@ -177,6 +203,7 @@
 <script>
   import moment from 'moment'
   import EmployeeSelector from '@/views/common/EmployeeSelector'
+  // import EmployeeSelector from '@/views/common/EmployeeSelectorVTwo'
   import uploadOss from "@/views/upload_oss/upload"
   import { getToken } from '@/utils/auth'
 
@@ -290,6 +317,8 @@
     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
     },
     methods: {

+ 33 - 6
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;"><wwOpenDAta type="userName" :openid="getEmployeeName(detail_info.employee_id)"></wwOpenDAta></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 }}
@@ -43,13 +43,13 @@
               <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>
+              <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>
+              <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>
+              <WWOpenData type="userName" :openid="item.value"></WWOpenData>
             </el-col>
             <el-col :span="20" v-else>{{ item.value }}</el-col>
           </el-row>
@@ -95,7 +95,7 @@
                   </template>
                   <template slot="title">
                     <div style="color: #303133;font-size:14px;margin-top:-2px;">
-                      <wwOpenDAta type="userName" :openid="item.name"></wwOpenDAta>&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>
@@ -287,12 +287,25 @@
         <div style="padding-left: 80px">奖票用于优秀表现和重要事项的表彰</div>
         <el-form-item label="发放奖票"><el-switch v-model="adoptForm.switch" active-color="#13ce66"></el-switch></el-form-item>
         <el-form-item label="递交审批">
-          <el-row>
+
+          <!-- <el-row>
             <el-col :span="18">
               <el-input auto-complete="off" v-model="manager" placeholder="请选择上级递交审批"></el-input>
               <div @click="show_employee_selector = true" style=" position: absolute; top: 0; right: 0; left: 0; bottom: 0; z-index: 9;"></div>
             </el-col>
+          </el-row> -->
+
+          
+          <el-row>
+            <el-col :span="18">
+              <el-input v-show="manager=='' || manager== null" auto-complete="off" v-model="manager" 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="manager!='' && manager!= null"  @click="show_employee_selector = true" class="zindexName">
+                  <WWOpenData type="userName" :openid="manager"></WWOpenData>
+              </div>
+            </el-col>
           </el-row>
+
           <EmployeeSelector
             :employee_not_select="employee_not_select"
             :can_select_employee="true"
@@ -792,4 +805,18 @@ export default {
   padding: 20px;
   border-bottom: 1px #efefef solid;
 }
+
+.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>

+ 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;"><wwOpenDAta type="userName" :openid="workDetailData.reviewer_name"></wwOpenDAta></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;"><wwOpenDAta type="userName" :openid="item.name"></wwOpenDAta></p>
+              <p style="margin: 0; line-height: 50px;"><WWOpenData type="userName" :openid="item.name"></WWOpenData></p>
             </div>
           </el-col>
         </el-row>

+ 21 - 5
src/views/common/rewardTask.vue

@@ -41,11 +41,11 @@
                 <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>
+                    <WWOpenData type="userName" :openid="reviewerName"></WWOpenData>
                 </div>
               </el-col>
             </el-row>
-            <EmployeeSelector
+            <!-- <EmployeeSelector
               :employee_not_select="reviewer_not_select"
               :employee_list="reviewer_employee_list"
               :can_select_employee="true"
@@ -53,6 +53,14 @@
               :multi="false"
               :selected="reviewer_selected"
               :visible.sync="show_reviewer_selector"
+              @confirm="reviewer_confirm"/> -->
+            <EmployeeSelector
+              :isChecKedAll="false"
+              :multi="false"
+              :is_manager_only="true"
+              :selected="reviewer_selected"
+              :visible.sync="show_reviewer_selector"
+              :is_filtration_creator="false"
               @confirm="reviewer_confirm"/>
           </el-form-item>
 
@@ -122,12 +130,12 @@
                 <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>
+                    <WWOpenData type="departmentName" :openid="item.dept_name"></WWOpenData><span v-if="(deptVisibleNames.length-index)>1">,</span>
                   </span>
                 </div>
               </el-col>
             </el-row>
-            <EmployeeSelector
+            <!-- <EmployeeSelector
               :employee_not_select="dept_not_select"
               :employee_list="dept_employee_list"
               :isChecKedAll="false"
@@ -136,6 +144,14 @@
               :multi="true"
               :selected="dept_selected"
               :visible.sync="show_dept_selector"
+              @confirm="dept_confirm"/> -->
+            <EmployeeSelector
+              :isChecKedAll="false"
+              :multi="true"
+              :can_select_employee="false"
+              :can_select_dept="true"
+              :selected="dept_selected"
+              :visible.sync="show_dept_selector"
               @confirm="dept_confirm"/>
           </el-form-item>
 
@@ -181,7 +197,7 @@
         forTheTaskLoading:false,
         formData: {
           task_type: '1',
-          pt_id: 2,
+          pt_id: 3,
           task_name: '',
           task_remark: '',
           base_point: '',

+ 20 - 4
src/views/common/rewardTaskAmend.vue

@@ -41,11 +41,11 @@
                 <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>
+                    <WWOpenData type="userName" :openid="reviewerName"></WWOpenData>
                 </div>
               </el-col>
             </el-row>
-            <EmployeeSelector
+            <!-- <EmployeeSelector
               :employee_not_select="reviewer_not_select"
               :employee_list="reviewer_employee_list"
               :can_select_employee="true"
@@ -53,6 +53,14 @@
               :multi="false"
               :selected="reviewer_selected"
               :visible.sync="show_reviewer_selector"
+              @confirm="reviewer_confirm"/> -->
+            <EmployeeSelector
+              :isChecKedAll="false"
+              :multi="false"
+              :is_manager_only="true"
+              :is_filtration_creator="false"
+              :selected="reviewer_selected"
+              :visible.sync="show_reviewer_selector"
               @confirm="reviewer_confirm"/>
           </el-form-item>
 
@@ -122,14 +130,22 @@
                 <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>
+                    <WWOpenData type="departmentName" :openid="item.dept_name"></WWOpenData><span v-if="(deptVisibleNames.length-index)>1">,</span>
                   </span>
                 </div>
               </el-col>
             </el-row>
-            <EmployeeSelector
+            <!-- <EmployeeSelector
               :employee_not_select="dept_not_select"
               :employee_list="dept_employee_list"
+              :isChecKedAll="false"
+              :can_select_employee="false"
+              :can_select_dept="true"
+              :multi="true"
+              :selected="dept_selected"
+              :visible.sync="show_dept_selector"
+              @confirm="dept_confirm"/> -->
+            <EmployeeSelector
               :isChecKedAll="false"
               :can_select_employee="false"
               :can_select_dept="true"

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

@@ -49,7 +49,7 @@
             <div class="label">可见范围</div>
             <div class="content_text">
               <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>
+                <WWOpenData type="departmentName" :openid="item.name"></WWOpenData><span v-if="(workDetailData.department_info.length-index)>1">,</span>
               </span>
             </div>
           </li>

+ 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><wwOpenDAta type="userName" :openid="workDetailData.employee_name"></wwOpenDAta></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"><wwOpenDAta type="userName" :openid="workDetailData.reviewer_name"></wwOpenDAta></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"><wwOpenDAta type="userName" :openid="item.recorder"></wwOpenDAta></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"><wwOpenDAta type="userName" :openid="item.recorder"></wwOpenDAta>
+                        <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>

+ 26 - 7
src/views/common/temporaryTask.vue

@@ -1,5 +1,5 @@
 <template>
-  <div>
+  <div class="dialog-shake">
     <!-- 临时任务弹窗 -->
     <el-dialog
       :title="showTitle"
@@ -24,12 +24,12 @@
                 <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>
+                    <WWOpenData type="userName" :openid="item.name"></WWOpenData><span v-if="(executorNames.length-index)>1">,</span>
                   </span>
                 </div>
               </el-col>
             </el-row>
-            <EmployeeSelector
+            <!-- <EmployeeSelector
               :employee_not_select="approval_not_select"
               :employee_list="employee_list"
               :isChecKedAll="true"
@@ -38,7 +38,7 @@
               :multi="true"
               :selected="approval_selected"
               :visible.sync="show_approval_selector"
-              @confirm="approval_confirm"/>
+              @confirm="approval_confirm"/> -->
           </el-form-item>
           <el-form-item label="审批人" prop="reviewer_id" :rules="[{ required: true, message: '请选择审批人', trigger: 'change' }]">
             <el-row>
@@ -46,11 +46,11 @@
                 <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>
+                    <WWOpenData type="userName" :openid="reviewerName"></WWOpenData>
                 </div>
               </el-col>
             </el-row>
-            <EmployeeSelector
+            <!-- <EmployeeSelector
               :employee_not_select="reviewer_not_select"
               :employee_list="reviewer_employee_list"
               :can_select_employee="true"
@@ -59,7 +59,7 @@
               :use_employee_list="true"
               :selected="reviewer_selected"
               :visible.sync="show_reviewer_selector"
-              @confirm="reviewer_confirm"/>
+              @confirm="reviewer_confirm"/> -->
           </el-form-item>
 
           <el-form-item label="规则积分" prop="pt_id" :rules="[{ required: true, message: '请选择规则积分', trigger: 'blur' }]">
@@ -136,6 +136,25 @@
         </el-form>
       </div>
     </el-dialog>
+    
+    <!-- 执行人 -->
+    <EmployeeSelector
+      :employee_list="employee_list"
+      :user_employee_list="true"
+      :multi="true"
+      :selected="approval_selected"
+      :visible.sync="show_approval_selector"
+      @confirm="approval_confirm"/>
+
+    <!-- 审批人 -->
+    <EmployeeSelector
+      :multi="false"
+      :isChecKedAll="false"
+      :is_manager_only="true"
+      :is_filtration_creator="false"
+      :selected="reviewer_selected"
+      :visible.sync="show_reviewer_selector"
+      @confirm="reviewer_confirm"/>
   </div>
 </template>
 

+ 23 - 6
src/views/common/temporaryTaskAmend.vue

@@ -23,11 +23,11 @@
                 <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>
+                    <WWOpenData type="userName" :openid="executorName"></WWOpenData>
                 </div>
               </el-col>
             </el-row>
-            <EmployeeSelector
+            <!-- <EmployeeSelector
               :employee_not_select="approval_not_select"
               :employee_list="employee_list"
               :isChecKedAll="false"
@@ -36,7 +36,16 @@
               :multi="false"
               :selected="approval_selected"
               :visible.sync="show_approval_selector"
-              @confirm="approval_confirm"/>
+              @confirm="approval_confirm"/> -->
+            <EmployeeSelector
+              :employee_list="employee_list"
+			        :user_employee_list="true"
+              :isChecKedAll="false"
+              :multi="false"
+              :selected="approval_selected"
+              :visible.sync="show_approval_selector"
+              @confirm="approval_confirm"
+            />
           </el-form-item>
           <el-form-item label="审批人" prop="reviewer_id" :rules="[{ required: true, message: '请选择审批人', trigger: 'blur' }]">
             <el-row>
@@ -44,11 +53,11 @@
                 <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>
+                    <WWOpenData type="userName" :openid="reviewerName"></WWOpenData>
                 </div>
               </el-col>
             </el-row>
-            <EmployeeSelector
+            <!-- <EmployeeSelector
               :employee_not_select="reviewer_not_select"
               :employee_list="reviewer_employee_list"
               :can_select_employee="true"
@@ -57,7 +66,15 @@
               :use_employee_list="true"
               :selected="reviewer_selected"
               :visible.sync="show_reviewer_selector"
-              @confirm="reviewer_confirm"/>
+              @confirm="reviewer_confirm"/> -->
+            <EmployeeSelector
+              :multi="false"
+			        :isChecKedAll="false"
+              :is_manager_only="true"
+              :selected="reviewer_selected"
+              :visible.sync="show_reviewer_selector"
+              @confirm="reviewer_confirm"
+            />
           </el-form-item>
 
           <el-form-item label="规则积分" prop="pt_id" :rules="[{ required: true, message: '请选择规则积分', trigger: 'blur' }]">

+ 16 - 14
src/views/dashboard/index.vue

@@ -39,7 +39,7 @@
                 
                 <!-- <div ref="dept9999"> -->
                 <div>
-                  <wwOpenDAta type="userName" :openid="user_info.name"></wwOpenDAta>
+                  <WWOpenData type="userName" :openid="user_info.name"></WWOpenData>
                 <!-- {{user_info.name}} -->
                 </div>&nbsp;&nbsp;
                 <span v-show="time <= 4">夜深了</span>
@@ -133,7 +133,7 @@
                 <!-- <open-data :type="item.employee_name" lang="zh_CN"></open-data> -->
                 <!-- <ww-open-data type="userName" openid="item.id"></ww-open-data> -->
                 <!-- {{item.employee_name}} -->
-                <wwOpenDAta type="userName" :openid="item.employee_name"></wwOpenDAta>
+                <WWOpenData type="userName" :openid="item.employee_name"></WWOpenData>
                 <span v-if="item.employee_id  == user_infos.id">(我)</span>
               </span>
             </div>
@@ -150,7 +150,7 @@
 
           <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> -->
+            <!-- <WWOpenData type="departmentName" :openid="dept_tree.name"></WWOpenData> -->
             <el-cascader
               v-model="dept_name1"
               :options="dept_tree"
@@ -164,7 +164,7 @@
             >
               <template slot-scope="{ node, data }">
                 <span>
-                  <wwOpenDAta type="departmentName" :openid="data.name"></wwOpenDAta>
+                  <WWOpenData type="departmentName" :openid="data.name"></WWOpenData>
                 </span>
                 <!-- <span v-if="!node.isLeaf"> ({{ data.children.length }}) </span> -->
               </template>
@@ -204,7 +204,7 @@
               >
                 <template slot-scope="{ node, data }">
                   <span>
-                    <wwOpenDAta type="departmentName" :openid="data.name"></wwOpenDAta>
+                    <WWOpenData type="departmentName" :openid="data.name"></WWOpenData>
                   </span>
                   <!-- <span v-if="!node.isLeaf"> ({{ data.children.length }}) </span> -->
                 </template>
@@ -254,7 +254,7 @@
               >
                 <template slot-scope="{ node, data }">
                   <span>
-                    <wwOpenDAta type="departmentName" :openid="data.name"></wwOpenDAta>
+                    <WWOpenData type="departmentName" :openid="data.name"></WWOpenData>
                   </span>
                   <!-- <span v-if="!node.isLeaf"> ({{ data.children.length }}) </span> -->
                 </template>
@@ -313,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><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="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>
@@ -355,11 +355,12 @@
               height="45px"
               :id="prize.id"
               :user_name="prize.name"
+              :img_url="prize.img_url"
               fontSize="16"
               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;"><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="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>
@@ -381,10 +382,11 @@
               height="45px"
               :id="buckle.id"
               :user_name="buckle.name"
+              :img_url="prize.img_url"
               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;"><wwOpenDAta type="userName" :openid="buckle.name"></wwOpenDAta></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>
@@ -656,9 +658,6 @@
           if(this.rollOne && H>=100){
             this.rollOne = false
             this.monthlyIntegral()//月度积分
-            if(!this.creatorJurisdiction && !this.employeeRout){//创始人不请求奖扣分最高积分事件
-              this.highestPrizeBuckle()//奖扣分最高积分事件
-            }
             if(!this.employeeRout){//员工不请求管理者奖扣任务执行情况
               this.ManagerSAward(); //管理者奖扣任务执行情况
             }
@@ -1637,7 +1636,7 @@
 			if (localStorage.getItem('dept_tree')) {
         this.dept_tree = 	this.getTreeData(JSON.parse(localStorage.getItem('dept_tree')))
         console.log( this.dept_tree)
-          // this.dept_tree[0].name = `<wwOpenDAta type="departmentName" :openid="${this.dept_tree[0].name}"></wwOpenDAta>`
+          // this.dept_tree[0].name = `<WWOpenData type="departmentName" :openid="${this.dept_tree[0].name}"></WWOpenData>`
       }else{
         this.$store.dispatch('get_dept_tree').then((res) => {
           this.$nextTick(() => {
@@ -1704,9 +1703,12 @@
       this.integralForm()//积分构成
       this.get_list()//待我审批的
       
+      if(!this.creatorJurisdiction && !this.employeeRout){//创始人不请求奖扣分最高积分事件
+        this.highestPrizeBuckle()//奖扣分最高积分事件
+      }
       // this.weekChecking_in()//本周考勤
       this.advertising()//广告位
-      this.get_new_employee()//申请加入弹窗
+      // this.get_new_employee()//申请加入弹窗
 
       // this.get_site_info()//获取公司详情----当前页面没有用到,先别删
 

+ 12 - 2
src/views/integral/EmploeAdd.vue

@@ -28,8 +28,18 @@
       <el-form-item label="部门" prop="dept_id" :label-width="formLabelWidth">
         <el-input auto-complete="off" v-model="name" :disabled="detailData.status == 2 && managerId != 0" placeholder="请选择上级部门"></el-input>
         <div @click="show_dept_selector = true" :disabled="detailData.status == 2 && managerId != 0" style=" position: absolute; top: 0; right: 0; left: 0; bottom: 0; z-index: 9;"></div>
-        <EmployeeSelector :employee_not_select="employee_not_select" :can_select_employee="false" :can_select_dept="true"
-          :selected.sync="dept_selected" :close_clear_data="false" :visible.sync="show_dept_selector" @confirm="move_confirm" />
+        <!-- <EmployeeSelector :employee_not_select="employee_not_select" :can_select_employee="false" :can_select_dept="true"
+          :selected.sync="dept_selected" :close_clear_data="false" :visible.sync="show_dept_selector" @confirm="move_confirm" /> -->
+          
+        <EmployeeSelector
+          :employee_not_select="employee_not_select"
+          :can_select_employee="false"
+          :can_select_dept="true"
+          :dept_children="false"
+          :selected="dept_selected"
+          :visible.sync="show_dept_selector"
+          @confirm="move_confirm"
+        />
 
       </el-form-item>
       <el-form-item label="职位" prop="post" :label-width="formLabelWidth">

+ 131 - 8
src/views/integral/EmployeeTable.vue

@@ -34,10 +34,10 @@
 								  <img src="/static/images/one.png" style="width: 20px;margin-right: 5px;" />
                   <!-- <span class="name" style="width:100%;overflow:hidden">{{data.label}}</span> -->
                   <span class="name"
-                    ><wwOpenDAta
+                    ><WWOpenData
                       type="departmentName"
                       :openid="data.name"
-                    ></wwOpenDAta
+                    ></WWOpenData
                   ></span>
                 </div>
               </el-tree>
@@ -179,7 +179,7 @@
 							<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;"><wwOpenDAta type="userName" :openid="scope.row.name"></wwOpenDAta></div>
+									<div style="margin-left: 10px;"><WWOpenData type="userName" :openid="scope.row.name"></WWOpenData></div>
 								</div>
 							</template>
 						</el-table-column>
@@ -187,12 +187,55 @@
 							<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>
+                    <WWOpenData type="departmentName" :openid="item.depart_name"></WWOpenData><span v-if="(scope.row.employee_detail.dept_list.length-index)>1">,</span>
                   </span>
 								</div>
 							</template>
 						</el-table-column>
-						<el-table-column prop="accedence_time" label="入职时间"></el-table-column>
+						<el-table-column prop="accedence_time" label="入职时间">
+							<template slot-scope="scope">
+								<div class="tabaccTIme" v-loading="scope.row.entryIf">
+                  <!-- <div style="cursor: pointer;"
+                   @click="entryTime(scope.row)"
+                    v-if="!scope.row.entryIf">
+                    {{scope.row.accedence_time}}
+                  </div>
+                  <el-date-picker
+                    style="width:100%;"
+                    v-model="scope.row.accedence_time"
+                    type="date"
+                    value-format="timestamp"
+                    placeholder="选择日期"
+                    :picker-options="assistantOptions"
+                    v-if="scope.row.entryIf"
+                  ></el-date-picker> -->
+                  <!-- <el-date-picker
+                    style="width:100%;"
+                    @change="entryclick(scope.row)"
+                    v-model="scope.row.accedence_time"
+                    type="date"
+                    clear-icon="el-icon-date"
+                    format="yyyy-MM-dd"
+                    value-format="yyyy-MM-dd"
+                    placeholder="选择日期"
+                    :clearable="false"
+                    :picker-options="assistantOptions"
+                  ></el-date-picker> -->
+                  <el-date-picker
+                    @change="entryclick(scope.row)"
+                    clear-icon="el-icon-circle-close"
+                    v-model="scope.row.accedence_time"
+                    type="datetime"
+                    format="yyyy-MM-dd HH:mm"
+                    value-format="timestamp"
+                    placeholder="选择日期时间"
+                    :clearable="false"
+                    :picker-options="assistantOptions"
+                    default-time="18:00:00">
+                  </el-date-picker>
+                </div>
+							</template>
+            </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>
@@ -285,6 +328,10 @@ export default {
 
   data() {
     return {
+      entryData: {
+        userId: 0,
+        accedence_time: '',
+      },
 			is: 1,
 			no: 0,
 			page: 1,
@@ -315,7 +362,44 @@ export default {
 			radioLi:[
 				{id:'1',name:'参与排名',kam:'在排名中展示此人'},
 				{id:'0',name:'不参与排名',kam:'排名不展示此人(自定义排名除外)'},
-			],
+      ],
+      assistantOptions: {
+        // disabledDate(time) {
+        //   let date = new Date();
+        //   var lastDayOfThisMonth = new Date(
+        //     date.getFullYear(),
+        //     date.getMonth() + 1,
+        //     0
+        //   );
+        //   return time.getTime() > lastDayOfThisMonth;
+        // },
+        // shortcuts: [
+        //   {
+        //     text: "今天",
+        //     onClick(picker) {
+        //       picker.$emit("pick", new Date());
+        //     }
+        //   },
+        //   {
+        //     text: "昨天",
+        //     onClick(picker) {
+        //       const date = new Date();
+        //       date.setTime(date.getTime() - 3600 * 1000 * 24);
+        //       picker.$emit("pick", date);
+        //     }
+        //   },
+        //   {
+        //     text: "本周一",
+        //     onClick(picker) {
+        //       const date = new Date();
+        //       date.setTime(
+        //         date.getTime() + 3600 * 1000 * 24 * (1 - date.getDay())
+        //       );
+        //       picker.$emit("pick", date);
+        //     }
+        //   }
+        // ]
+      },
     };
   },
 	watch: {
@@ -339,6 +423,26 @@ export default {
   },
   
 	methods: {
+    entryclick(row){
+      console.log(row)
+      let data = {
+        employee_id: row.id,
+        accedence_time: row.accedence_time/1000
+      }
+      row.entryIf = true
+      this.$http('post','/api/employee/accedence_time',data).then((res)=>{
+        if(res.data.code == 1){
+          
+        }
+      }).finally(()=>{
+        row.entryIf = false
+      })
+    },
+    entryTime(row){
+      console.log(row)
+      row.entryIf = true
+    },
+
 		setRanking(){
 			this.rangLoad = true
 			let data = {
@@ -470,8 +574,13 @@ export default {
         params.page = this.page - 1
       }
 			this.$http('get','/api/employee/index', params).then(res => {
-				this.total = res.data.data.pageInfo.count;
-				this.userList = res.data.data.list;
+        this.total = res.data.data.pageInfo.count;
+        let list = res.data.data.list
+        list.forEach((item)=>{
+          item.entryIf = false
+          item.accedence_time *= 1000
+        })
+        this.userList = list;
 				var visible=localStorage.getItem('visible');
 				if(!visible){
 					this.visible=true;
@@ -798,4 +907,18 @@ el-tooltip {
     left: 100%;
     margin-left: -17px;
 }
+
+/deep/ .tabaccTIme{
+  width: 70px;
+  .el-input__inner{
+    border: 0;
+    background-color: transparent;
+    cursor: pointer;
+    padding: 0;
+    width: 70px;
+  }
+  .el-input__prefix{
+    display: none;
+  }
+}
 </style>

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

@@ -86,7 +86,7 @@
 <style rel="stylesheet/scss" lang="scss" scoped>
   @import "src/styles/mixin.scss";
   .app-content{
-    width: 1200px;
+    width: 1225px;
     margin: 0 auto;
     // height: calc(100% - 60px);
     position: relative;

+ 109 - 61
src/views/login/index1.vue

@@ -7,9 +7,11 @@
           <img src="/static/images/init.gif" v-if="!logImage" style="margin:0 auto;" alt="">
         </transition>
         <div>管理执行难,就用功道云</div>
-        <transition name="fade">
+        <!-- <transition name="fade">
           <el-button class="refresh" type="primary" style="margin-top:10px" @click="LoginBut" v-show="loginButton">{{logButText}}</el-button>
         </transition>
+        
+        <el-button class="refresh" type="primary" style="margin-top:10px" @click="LoginBut1">123</el-button> -->
       </div>
     </div>
     <pastDue></pastDue>
@@ -37,80 +39,126 @@
     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中"?"符后的字串
-      let codesif = false
-      let codes = ''
+      let tokenif = false
+      var token = ''
       if(url){
         if (url.split("?")[1]) {//判断有无?参数
-          var strs = url.split("?")[1].split("&");
-          for (var i = 0; i < strs.length; i++) {
-            if(strs[i].split("=")[0] == 'code'){
-              this.loginButton = false
-              this.logImage = false
-              codesif = true
-              codes = strs[i].split("=")[1]
-            }
+          let str = url.split("?")[1]
+          console.log(str)
+          if(str.split("=")[0] == 'token'){
+            token = str.split("=")[1].split("#")[0]
+            console.log(str.split("=")[1])
+            tokenif = true
           }
-        }else{//没有就清空缓存并放出登录按钮
-          this.clone()
-          this.loginButton = true
-          this.logImage = true
         }
       }
-
-      if(!codesif){
-        this.logImage = true
-        this.loginButton = true
+      if(tokenif){
+        console.log(token)
+        setToken(token)
+        this.$store.commit('SET_TOKEN', token)
+        localStorage.setItem('Experience_data',JSON.stringify({if:false,name:''}))
+        console.log(getToken())
+        
+        this.$http('get',process.env.BASE_API+'/api/employee/detail')
+        .then(res => {
+          if(res.data.code == 1){
+            console.log(res)
+          }
+        })
+        wxAuth(true)
       }else{
-        if (/Android|webOS|iPhone|iPod|BlackBerry/i.test(navigator.userAgent)) {
-          window.location.href = 'http://wechatgdym.vaiwan.com?code='+codes+'&';
-        } else {
-          let params = { code: codes }
-          axios.get(process.env.BASE_API+'/api/wechat/minAuth', { params: params })
-          .then(res => {
-            if(res.data.code == 1){
-              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 if(res.data.code == 4444){
-              this.$store.state.user.pastDue = true
-              this.logButText = '重新登录'
-              this.loginButton = true
-              this.logImage = true
-            }else{
-              this.logButText = '重新登录'
-              this.loginButton = true
-              this.logImage = true
-            }
-          })
+        if(this.isPcOrApp() == 'pc'){
+          window.location.href = process.env.BASE_API+'/wechat/authorize?platform='+ this.isPcOrApp() +'#wechat_redirect'
+        }else if(this.isPcOrApp() == 'app'){
+          window.location.href = 'http://wechatgdym.vaiwan.com';
         }
-        
       }
+      // Cookies.get('Admin-Token')
+      // // 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中"?"符后的字串
+      // let codesif = false
+      // let codes = ''
+      // if(url){
+      //   if (url.split("?")[1]) {//判断有无?参数
+      //     var strs = url.split("?")[1].split("&");
+      //     for (var i = 0; i < strs.length; i++) {
+      //       if(strs[i].split("=")[0] == 'code'){
+      //         this.loginButton = false
+      //         this.logImage = false
+      //         codesif = true
+      //         codes = strs[i].split("=")[1]
+      //       }
+      //     }
+      //   }else{//没有就清空缓存并放出登录按钮
+      //     this.clone()
+      //     this.loginButton = true
+      //     this.logImage = true
+      //   }
+      // }
+
+      // if(!codesif){
+      //   this.logImage = true
+      //   this.loginButton = true
+      // }else{
+      //   if (/Android|webOS|iPhone|iPod|BlackBerry/i.test(navigator.userAgent)) {
+      //     window.location.href = 'http://wechatgdym.vaiwan.com?code='+codes+'&';
+      //   } else {
+      //     let params = { code: codes }
+      //     axios.get(process.env.BASE_API+'/api/wechat/minAuth', { params: params })
+      //     .then(res => {
+      //       if(res.data.code == 1){
+      //         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 if(res.data.code == 4444){
+      //         this.$store.state.user.pastDue = true
+      //         this.logButText = '重新登录'
+      //         this.loginButton = true
+      //         this.logImage = true
+      //       }else{
+      //         this.logButText = '重新登录'
+      //         this.loginButton = true
+      //         this.logImage = true
+      //       }
+      //     })
+      //   }
+        
+      // }
     },
     mounted(){
     },
     methods: {
-      LoginBut(){
-        withoutCodeLoad()
+      isPcOrApp(){
+        if(/Android|webOS|iPhone|iPod|BlackBerry/i.test(navigator.userAgent)) {
+          return 'app'
+        } else {
+          return 'pc'
+        }
       },
+      LoginBut1(){
+        window.location.href = 'http://test.qywx.g107.net/wechat/authorize?platform=pc#wechat_redirect'
+      },
+      // LoginBut(){
+      //   withoutCodeLoad()
+      // },
       // withoutCodeLoad(){
       //   console.log(process.env.APPID)
       //   let appid,redirect_uri,response_type,scope,state,wechat,agentid

+ 562 - 0
src/views/login/index2.vue

@@ -0,0 +1,562 @@
+<template>
+  <div class="login-container">
+    <div class="all" style="">
+      <div class="data-all" style="text-align:center;margin-top:50px;">
+        <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>
+        <transition name="fade">
+          <el-button class="refresh" type="primary" style="margin-top:10px" @click="LoginBut" v-show="loginButton">{{logButText}}</el-button>
+        </transition>
+        
+        <el-button class="refresh" type="primary" style="margin-top:10px" @click="LoginBut1">123</el-button>
+      </div>
+    </div>
+    <pastDue></pastDue>
+  </div>
+</template>
+
+<script>
+  import Cookies from 'js-cookie'
+  import axios from 'axios'
+  import pastDue from "@/views/common/pastDue.vue"
+  import QRCode  from "qrcodejs2"
+  import {getToken, setToken, getUser, getPasw, setUser, setPasw,} from '@/utils/auth' // getToken from cookie
+  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() {
+      Cookies.get('Admin-Token')
+      // 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中"?"符后的字串
+      let codesif = false
+      let codes = ''
+      if(url){
+        if (url.split("?")[1]) {//判断有无?参数
+          var strs = url.split("?")[1].split("&");
+          for (var i = 0; i < strs.length; i++) {
+            if(strs[i].split("=")[0] == 'code'){
+              this.loginButton = false
+              this.logImage = false
+              codesif = true
+              codes = strs[i].split("=")[1]
+            }
+          }
+        }else{//没有就清空缓存并放出登录按钮
+          this.clone()
+          this.loginButton = true
+          this.logImage = true
+        }
+      }
+
+      if(!codesif){
+        this.logImage = true
+        this.loginButton = true
+      }else{
+        if (/Android|webOS|iPhone|iPod|BlackBerry/i.test(navigator.userAgent)) {
+          window.location.href = 'http://wechatgdym.vaiwan.com?code='+codes+'&';
+        } else {
+          let params = { code: codes }
+          axios.get(process.env.BASE_API+'/api/wechat/minAuth', { params: params })
+          .then(res => {
+            if(res.data.code == 1){
+              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 if(res.data.code == 4444){
+              this.$store.state.user.pastDue = true
+              this.logButText = '重新登录'
+              this.loginButton = true
+              this.logImage = true
+            }else{
+              this.logButText = '重新登录'
+              this.loginButton = true
+              this.logImage = true
+            }
+          })
+        }
+        
+      }
+    },
+    mounted(){
+    },
+    methods: {
+      LoginBut1(){
+        window.location.href = 'http://test.qywx.g107.net/wechat/authorize?platform=pc#wechat_redirect'
+      },
+      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()
+        sessionStorage.clear()
+	      Cookies.remove('Admin-Token')
+        if(!this.$store.state.user.pastDue){
+          //进入登录界面判断 VueX里是否遗留数据,有就刷新一次页面,清空vuex
+          if (this.$store.getters.addRouters.length > 0) { // 判断是否已经刷新
+            return window.location.reload()
+          }
+        }
+      },
+    },
+    destroyed() {
+      localStorage.setItem('login_code','0')
+    }
+  }
+</script>
+
+<style rel="stylesheet/css" type="text/css" scoped>
+  .left-box {
+    position: relative;
+    top: 50%;
+    margin-top: -25%;
+  }
+
+  .all {
+    /* width: 1000px; */
+    /* height: 675px; */
+    margin: 0 auto;
+    position: relative;
+    top: 50%;
+    margin-top: -325px;
+  }
+
+  .login-container {
+    position: relative;
+    width: 100vw;
+    height: 100vh;
+    overflow: auto;
+    cursor: default;
+    /* background-color: #f5f6f9; */
+    background-color: #FFF;
+  }
+
+  .login-container .login_logo {
+    position: relative;
+    width: 100%;
+    max-width: 1000px;
+    overflow: hidden;
+  }
+  .login-container .login_logo a{
+    display: inline-block;
+  }
+  .login-container .login_logo img {
+    width: 100%;
+    vertical-align: middle;
+  }
+
+  .login-container .login_box {
+    position: relative;
+    display: block;
+    top: 0;
+    width: 100%;
+    /* height: 530px; */
+    max-width: 1000px;
+    box-shadow: 0px 4px 22px #efefef;
+    background: #fff;
+  }
+
+  .login-container .login_box .login_ad {
+    width: 482px;
+    height: 552px;
+    background: url(/static/images/login_bg_20200603.png) no-repeat;
+    background-size: cover;
+  }
+
+  .login-container .login_box .login_ad img {
+    width: 360px;
+    margin: auto;
+    height: 200px;
+  }
+
+  .login-container .login_box .login_ad span {
+    font-family: "Microsoft YaHei";
+    display: block;
+    text-align: center;
+    font-size: 28px;
+    letter-spacing: 2px;
+    font-weight: bold;
+    color: #fff;
+  }
+
+  .login-container .login_box .login_type_icon {
+    position: absolute;
+    top: 0;
+    right: 0;
+    width: 94px;
+    height: 94px;
+    overflow: hidden;
+    z-index: 10;
+  }
+
+  .login-container .login_box .login_type_icon .login_default {
+    width: 96px;
+    height: 96px;
+    background: url(/static/images/login_default.jpg) no-repeat;
+    background-size: cover;
+  }
+
+  .login-container .login_box .login_type_icon .login_code {
+    width: 96px;
+    height: 96px;
+    background: url(/static/images/login_code.jpg) no-repeat;
+    background-size: cover;
+  }
+
+  .login-container .login_box .login_input {
+    position: relative;
+    display: inline-block;
+    text-align: center;
+    width: 508px;
+    height: 552px;
+    background: #FFF;
+    overflow: hidden;
+  }
+
+  .login-container .login_box .login-form {
+    width: 320px;
+    margin: 0 auto;
+    margin-top: 75px;
+  }
+
+  .login-container .login_box .login-form /deep/ input:-webkit-autofill{
+    -webkit-box-shadow:0 0 0 1000px white inset !important;
+  }
+
+  .title-container {
+    font-size: 22px;
+    font-weight: bold;
+    padding: 30px 0;
+    text-align: left;
+  }
+
+  .title-container img {
+    margin-top: 38px;
+    width: 100%;
+    height: auto;
+  }
+
+  .login-container .login_box .login-form .login_tel {
+    display: block;
+    margin-bottom: 24px;
+    border: none;
+    border-bottom: 1px solid #C0C4CC;
+  }
+
+  .login-container .login_box .login-form .login_tel .label {
+    display: inline-block;
+    text-align: left;
+    width: 12%;
+    font-size: 18px;
+    color: #303133;
+    line-height: 26px;
+    padding: 0;
+    margin: 12px 0;
+    float: left;
+  }
+
+  .login-container .login_box .login-form .login_tel .input_tel {
+    display: inline-block;
+    width: 88%;
+    margin: 12px auto;
+    height: 24px;
+    line-height: 24px;
+    border-left: 1px #efefef solid;
+    float: right;
+  }
+
+  .login-container .login_box .login-form .login_tel .input_tel /deep/ input {
+    padding: 0 0% 0 4%;
+    margin: 0;
+    font-size: 18px;
+    height: 24px;
+    line-height: 24px;
+    border: none !important;
+  }
+
+  .login-container .login_box .login-form .login_tel /deep/ .el-input__suffix {
+    top: -6px;
+    right: 0px;
+  }
+
+  .login-container .login_box .login-form .login_pwd {
+    border: none;
+    border-bottom: 1px solid #C0C4CC;
+  }
+
+  .login-container .login_box .login-form .login_pwd .el-input /deep/ input {
+    padding: 0;
+    margin: 0;
+    font-size: 18px;
+    height: 24px;
+    line-height: 24px;
+    border: none;
+  }
+
+  .login-container .login_box .login-form .login_pwd .show-pwd {
+    position: absolute;
+    right: 0;
+    top: 0;
+  }
+
+  .login-container .login_box .login-form .login_pwd /deep/ .el-input__suffix {
+    right: 20px;
+  }
+
+  /*.login-container .login_box .login-form:hover .login_tel{*/
+  /*border-bottom: 1px solid #409EFF;*/
+  /*}*/
+  /*.login-container .login_box .login-form:active .login_tel{*/
+  /*border-bottom: 1px solid #409EFF;*/
+  /*}*/
+  .login-container .login_box .login-form /deep/ input::-webkit-input-placeholder {
+    color: #909399;
+    letter-spacing: 1px;
+  }
+
+  .login-container .login_box .login-form /deep/ input:focus::-webkit-input-placeholder {
+    color: #409EFF;
+  }
+
+  .login-container .login_box .login-form .el-form-item__error {
+    margin: 2px auto;
+  }
+
+  .login-container .login_box .login_keeppwd {
+    float: left;
+  }
+
+  .login-container .login_box .login_keeppwd .el-checkbox__inner {
+    width: 20px;
+    height: 20px;
+    background: #fff;
+  }
+
+  .login-container .login_box .login_keeppwd .el-checkbox__inner::after {
+    height: 12px;
+    left: 6px;
+    border: 2px solid #409EFF;
+    border-top: none;
+    border-left: none;
+  }
+
+  .login-container .login_box .login_keeppwd .el-checkbox__label {
+    padding-left: 8px;
+    font-size: 16px;
+    color: #909399;
+  }
+
+  .login-container .login_box .login_forgepwd {
+    float: right;
+  }
+
+  .login-container .login_box .login_forgepwd span {
+    font-size: 16px;
+    color: #909399;
+  }
+
+  .login-container .login_box .login_code_box {
+    position: relative;
+    display: inline-block;
+    text-align: center;
+    width: 582px;
+    height: 614px;
+    float: right;
+    overflow: hidden;
+  }
+
+  .login-container .login_box .login_code_box .title {
+    display: block;
+    font-size: 24px;
+    color: #1a1a1a;
+    line-height: 33px;
+    margin: 100px auto 30px;
+  }
+
+  .login-container .login_box .login_code_box span {
+    display: block;
+    font-size: 16px;
+    line-height: 32px;
+  }
+
+  .login-container .login_box .login_code_box .code {
+    display: inline-block;
+    width: 200px;
+    height: 200px;
+    margin-bottom: 20px;
+    overflow: hidden;
+    position: relative;
+  }
+
+  .login-container .login_box .login_code_box .code .mack {
+    position: absolute;
+    left: 0;
+    right: 0;
+    top: 0;
+    bottom: 0;
+    background-color: #98989891;
+    padding-top: 60px;
+  }
+
+  .mack i.el-icon-refresh {
+    font-size: 26px
+  }
+
+  .login-container .login_box .login_code_box .code .mack span {
+    line-height: 100%;
+    color: #fff;
+    background: #000;
+    display: inline-block;
+  }
+
+  .login-container .login_box .login_code_box .code img {
+    width: 100%;
+    height: auto;
+  }
+
+  .login-container .login_box .login_code_box .social_soft {
+    display: inline-block;
+    width: 260px;
+    margin: 30px auto;
+    padding: 16px 0;
+    border-top: 1px #efefef dashed;
+  }
+
+  .login-container .login_box .login_code_box .social_soft .title {
+    display: inline-block;
+    vertical-align: top;
+    text-align: left;
+    width: 80%;
+    margin: 0 auto;
+    font-size: 16px;
+  }
+
+  .login-container .login_box .login_code_box .social_soft .svg-icon {
+    display: inline-block;
+    vertical-align: top;
+    width: 18%;
+    font-size: 36px;
+  }
+
+  .login-container .login_box .login_code_box .social_soft .download_app {
+    width: 260px;
+    margin: 30px auto;
+    padding: 16px 0;
+    border: 1px red solid;
+    background: red;
+    border-radius: 8px;
+  }
+
+  .login-container .login_box .login_code_box .social_soft .download_app img {
+    width: 40px;
+  }
+
+  .login-container .login_box button {
+    margin: 0 auto 32px;
+    padding: 0;
+  }
+
+  .login-container .login_box .login_reg {
+    display: inline-block;
+    overflow: hidden;
+  }
+
+  .login-container .login_box .login_reg span {
+    font-size: 16px;
+    letter-spacing: 1px;
+  }
+
+  .footer_copyright {
+    text-align: center;
+    margin: 20px 0;
+  }
+
+  .footer_copyright span {
+    display: block;
+    text-align: center;
+    font-size: 14px;
+    line-height: 18px;
+    color: #606266;
+  }
+
+  .footer_copyright span img {
+    display: inline-block;
+    vertical-align: top;
+    margin-top: 8px;
+    padding: 0 20px;
+  }
+
+  .login-container::-webkit-scrollbar {
+    width: 4px;
+    height: 1px;
+  }
+
+  .login-container::-webkit-scrollbar-thumb {
+    border-radius: 10px;
+    box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.2);
+    background: #535353;
+  }
+
+  .login-container::-webkit-scrollbar-track {
+    box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.2);
+    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>

+ 84 - 0
src/views/login/index3.vue

@@ -0,0 +1,84 @@
+<template>
+  <div class="login-container">
+    <div class="all" style="">
+      <div class="data-all" style="text-align:center;margin-top:50px;">
+        <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>
+        <!-- <transition name="fade">
+          <el-button class="refresh" type="primary" style="margin-top:10px" @click="LoginBut" v-show="loginButton">{{logButText}}</el-button>
+        </transition>
+        
+        <el-button class="refresh" type="primary" style="margin-top:10px" @click="LoginBut1">123</el-button> -->
+      </div>
+    </div>
+    <pastDue></pastDue>
+  </div>
+</template>
+
+<script>
+import pastDue from "@/views/common/pastDue.vue";
+import { getToken, cookGetToken } from "@/utils/auth";
+import { wxAuth } from "@/utils/wx-auth-two.js";
+export default {
+  data() {
+    return { 
+      logImage: true,
+      logButText: "登录",
+      loginButton: true
+    };
+  },
+  components: { pastDue },
+  watch: {},
+  created() {
+     console.log(cookGetToken());
+    if (cookGetToken()) {
+      this.$store.commit("SET_TOKEN", token);
+      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);
+    }else{
+      console.log('无Token')
+      window.location.href = process.env.BASE_API;//重新授权
+    }
+  },
+  mounted() {},
+  methods: {},
+  destroyed() {
+    localStorage.setItem("login_code", "0");
+  }
+};
+</script>
+
+<style rel="stylesheet/css" type="text/css" scoped>
+.all {
+  /* width: 1000px; */
+  /* height: 675px; */
+  margin: 0 auto;
+  position: relative;
+  top: 50%;
+  margin-top: -325px;
+}
+</style>

+ 7 - 7
src/views/setting/approver_set.vue

@@ -46,10 +46,10 @@
 								  <img src="/static/images/one.png" style="width: 20px;margin-right: 5px;" />
                   <!-- <span class="name" style="width:100%;overflow:hidden">{{data.label}}</span> -->
                   <span class="name"
-                    ><wwOpenDAta
+                    ><WWOpenData
                       type="departmentName"
                       :openid="data.name"
-                    ></wwOpenDAta
+                    ></WWOpenData
                   ></span>
                 </div>
               </el-tree>
@@ -170,7 +170,7 @@
                 ></userImage>
                 <span
                   style="margin-left: 10px; line-height: 50px; display: inline-block;"
-                  ><wwOpenDAta type="userName" :openid="scope.row.name"></wwOpenDAta></span
+                  ><WWOpenData type="userName" :openid="scope.row.name"></WWOpenData></span
                 >
                 <span
                   class="administration"
@@ -187,7 +187,7 @@
                   :key="index"
                 >
                   <div>
-                    <wwOpenDAta type="departmentName" :openid="item.depart_name"></wwOpenDAta>
+                    <WWOpenData type="departmentName" :openid="item.depart_name"></WWOpenData>
                   </div>
                   <!-- <div v-if="item.dept_name == undefined" style="color: #a4a9ad" >暂无部门</div> -->
                 </div>
@@ -260,7 +260,7 @@
       <span>为</span>
       <!-- <div style="width:50px;height:16px; overflow: hidden;text-overflow:ellipsis;display:block"> -->
       <b v-for="(item, index) in multipleSelection" :key="index">
-        <span v-if="index == 0"><wwOpenDAta type="userName" :openid="item.name"></wwOpenDAta></span>
+        <span v-if="index == 0"><WWOpenData type="userName" :openid="item.name"></WWOpenData></span>
         <!-- <span v-if="multipleSelection.length>1">, </span> -->
       </b>
       <!-- </div> -->
@@ -269,7 +269,7 @@
       >
       设置上级
       <div v-if="hint" style="font-size:12px;padding-top:5px">
-        (当前直属上级:<b><wwOpenDAta type="userName" :openid="current_supervisor"></wwOpenDAta></b
+        (当前直属上级:<b><WWOpenData type="userName" :openid="current_supervisor"></WWOpenData></b
         >)
       </div>
       <el-table
@@ -282,7 +282,7 @@
         <el-table-column property="name">
           <template slot-scope="scope">
             <span>
-              <wwOpenDAta type="userName" :openid="scope.row.name"></wwOpenDAta>
+              <WWOpenData type="userName" :openid="scope.row.name"></WWOpenData>
             </span>
           </template>
         </el-table-column>

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

@@ -33,7 +33,7 @@
           <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>
 
-            <div class="openHtml" @click="openHtml">人数不够?升级系统</div>
+            <!-- <div class="openHtml" @click="openHtml">人数不够?升级系统</div> -->
             <div v-if="pastdueDate" style="color:#ff880e;">{{pastdueDate}}&nbsp;&nbsp;&nbsp;<a class="vtRenew" @click="innerVisible=true">立即续费>></a> </div>
           </el-form-item>
 

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

@@ -109,14 +109,14 @@
               <el-col :span="4">
                 <el-button type="primary" @click="add_employee_show= true">添加人员</el-button>
               </el-col>
-              <el-button
+              <!-- <el-button
                 type="primary"
                 plain
                 @click="import_rules_show = true"
-              >导入自动积分</el-button>
+              >导入自动积分</el-button> -->
               <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>
+                  <WWOpenData type="userName" :openid="dropOuOfPers.currentLabel"></WWOpenData>
                 </div>
                 <el-select v-model="select_employee_id" ref="dropOuOfref"  clearable placeholder="请选择人员">
                   <el-option
@@ -125,7 +125,7 @@
                     :label="item.name"
                     :value="item.id"
                   >
-                    <span style="float: left"><wwOpenDAta type="userName" :openid="item.name"></wwOpenDAta></span>
+                    <span style="float: left"><WWOpenData type="userName" :openid="item.name"></WWOpenData></span>
                   </el-option>
                 </el-select>
                 <!-- <el-input
@@ -163,7 +163,7 @@
                     style="margin-left: 10px; line-height: 50px; display: inline-block"
                     v-if="scope.row.employee"
                   >
-                  <wwOpenDAta type="userName" :openid="scope.row.employee.name"></wwOpenDAta>
+                  <WWOpenData type="userName" :openid="scope.row.employee.name"></WWOpenData>
                   </span>
                 </template>
               </el-table-column>
@@ -310,12 +310,19 @@
           注:非在职状态的员工,系统不会执行自动积分
         </span>
         <div>
-          <EmployeeSelector1
+          <!-- <EmployeeSelector1
             :max="add_employee_max"
             :can_select_dept="false"
             :visible.sync="add_employee_visible"
             @confirm="add_employee_confirm"
             ref="Employee"
+          ></EmployeeSelector1> -->
+          
+          <EmployeeSelector1
+            :max="add_employee_max"=
+            :visible.sync="add_employee_visible"
+            @confirm="add_employee_confirm"
+            ref="Employee"
           ></EmployeeSelector1>
         </div>
         <el-form-item style="text-align: right; margin-bottom: 0;margin-top: 20px;">

+ 10 - 10
src/views/setting/new_employee.vue

@@ -171,16 +171,16 @@ import { log } from 'util';
     },
     methods:{
       get_new_employee_list(){
-        let self = this
-        self.$http('get','/api/join/index').then((res) => {
-          if (res.data.code == 1) {
-            self.new_employee_list = res.data.data.list
-          }else{
-            self.$message.error(res.data.msg)
-          }
-        }).finally(() => {
-          self.loading = false
-        })
+        // let self = this
+        // self.$http('get','/api/join/index').then((res) => {
+        //   if (res.data.code == 1) {
+        //     self.new_employee_list = res.data.data.list
+        //   }else{
+        //     self.$message.error(res.data.msg)
+        //   }
+        // }).finally(() => {
+        //   self.loading = false
+        // })
       },
       refuse(item){
         let self = this

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

@@ -38,8 +38,8 @@
                   <el-col :span="16" style="width:100%">
                       <el-button type="danger" @click="del_btn" v-show="table_list != null && table_list.length != 0">删除</el-button>
                       <el-button type="primary" @click="add_employee_show = true">添加</el-button>
-                      <el-button type="primary"  v-if="item_info.code == 'dept_manager'" @click="syncScope"><i class="el-icon-refresh"></i>同步管理范围</el-button>
-                      <el-button  v-if="item_info.code == 'dept_manager'" @click="exportEmploye = true">导出/修改管理列表</el-button>
+                      <!-- <el-button type="primary"  v-if="item_info.code == 'dept_manager'" @click="syncScope"><i class="el-icon-refresh"></i>同步管理范围</el-button>
+                      <el-button  v-if="item_info.code == 'dept_manager'" @click="exportEmploye = true">导出/修改管理列表</el-button> -->
                       <div class="gap-right-8 fr" style="display:inline-block; width:180px;" v-if="item_info.code == 'dept_manager'">
                         <el-input
                           placeholder="搜索员工姓名"
@@ -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;"><wwOpenDAta type="userName" :openid="scope.row.name"></wwOpenDAta></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;"><wwOpenDAta type="userName" :openid="scope.row.name"></wwOpenDAta></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="部门">

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

@@ -31,7 +31,7 @@
           >
 		  	<template slot-scope="{ node, data }">
                 <span>
-                  <wwOpenDAta type="departmentName" :openid="data.name"></wwOpenDAta>
+                  <WWOpenData type="departmentName" :openid="data.name"></WWOpenData>
                 </span>
                 <!-- <span v-if="!node.isLeaf"> ({{ data.children.length }}) </span> -->
               </template>
@@ -54,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;"><wwOpenDAta type="userName" :openid="scope.row.name"></wwOpenDAta></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>
@@ -70,12 +70,12 @@
 				<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;"><wwOpenDAta type="userName" :openid="scope.row.name"></wwOpenDAta></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}}
+						<WWOpenData type="userName" :openid="scope.row.name"></WWOpenData>{{scope.row.remark}}
 					</template>
 				</el-table-column>
 				<el-table-column prop="create_time" label="时间"></el-table-column>

+ 11 - 3
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;"><wwOpenDAta type="userName" :openid="scope.row.name"></wwOpenDAta></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>
@@ -126,10 +126,10 @@
           <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>
+              <WWOpenData type="userName" :openid="item.name"></WWOpenData><span v-if="(employeeNames.length-index)>1">,</span>
             </span>
           </div>
-          <EmployeeSelector
+          <!-- <EmployeeSelector
             :employee_not_select="employee_not_select"
             :can_select_employee="true"
             :can_select_dept="false"
@@ -138,6 +138,14 @@
             :visible.sync="show_employee_selector"
             @confirm="move_employee_confirm"
             :isChecKedAll="true"
+          /> -->
+          <EmployeeSelector
+            :employee_not_select="employee_not_select"
+            :selected="employees_selected"
+            :close_clear_data="false"
+            :visible.sync="show_employee_selector"
+            @confirm="move_employee_confirm"
+            :isChecKedAll="true"
           />
         </el-form-item>
 

+ 3 - 3
src/views/statistics_new/department_statistics.vue

@@ -18,7 +18,7 @@
               >
                 <template slot-scope="{ node, data }">
                   <span>
-                    <wwOpenDAta type="departmentName" :openid="data.name"></wwOpenDAta>
+                    <WWOpenData type="departmentName" :openid="data.name"></WWOpenData>
                   </span>
                   <!-- <span v-if="!node.isLeaf"> ({{ data.children.length }}) </span> -->
                 </template>
@@ -106,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;"><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="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>
@@ -133,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;"><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="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>

+ 7 - 7
src/views/statistics_new/dept_rank.vue

@@ -64,7 +64,7 @@
           >
             <template slot-scope="{ node, data }">
                 <span>
-                  <wwOpenDAta type="departmentName" :openid="data.name"></wwOpenDAta>
+                  <WWOpenData type="departmentName" :openid="data.name"></WWOpenData>
                 </span>
                 <!-- <span v-if="!node.isLeaf"> ({{ data.children.length }}) </span> -->
               </template>
@@ -96,7 +96,7 @@
 
         <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>
+            <WWOpenData type="userName" :openid="dropOuOfPerson[0].currentLabel"></WWOpenData><span v-if="dropOuOfPerson.length>1">&nbsp;+{{dropOuOfPerson.length-1}}</span>
           </div>
           <el-select
             ref="dropOuOfonref"
@@ -111,7 +111,7 @@
               :label="item.name"
               :value="item.id"
             >
-              <span style="float: left"><wwOpenDAta type="userName" :openid="item.name"></wwOpenDAta></span>
+              <span style="float: left"><WWOpenData type="userName" :openid="item.name"></WWOpenData></span>
             </el-option>
           </el-select>
         </el-form-item>
@@ -149,7 +149,7 @@
 
           <br>
         <el-form-item>
-          <el-button type="primary" plain @click="dialogVisibles">导出排名</el-button>
+          <!-- <el-button type="primary" plain @click="dialogVisibles">导出排名</el-button> -->
 					<!-- <el-button type="primary" plain @click="byRanking">轮播排名</el-button> -->
         </el-form-item>
       </el-form>
@@ -173,7 +173,7 @@
               width="50px"
               height="50px"
             ></userImage>
-            <span style="line-height: 50px; padding-left: 10px;"><wwOpenDAta type="userName" :openid="scope.row.employee_name"></wwOpenDAta></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>
@@ -240,7 +240,7 @@
           >
             <template slot-scope="{ node, data }">
               <span>
-                <wwOpenDAta type="departmentName" :openid="data.name"></wwOpenDAta>
+                <WWOpenData type="departmentName" :openid="data.name"></WWOpenData>
               </span>
               <!-- <span v-if="!node.isLeaf"> ({{ data.children.length }}) </span> -->
             </template>
@@ -324,7 +324,7 @@
 						>
               <template slot-scope="{ node, data }">
                 <span>
-                  <wwOpenDAta type="departmentName" :openid="data.name"></wwOpenDAta>
+                  <WWOpenData type="departmentName" :openid="data.name"></WWOpenData>
                 </span>
               </template>
             </el-cascader>

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

@@ -6,7 +6,7 @@
     >
         <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>
+            <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
@@ -15,7 +15,7 @@
               :label="item.name"
               :value="item.id"
               >
-                <span style="float: left"><wwOpenDAta type="userName" :openid="item.name"></wwOpenDAta></span>
+                <span style="float: left"><WWOpenData type="userName" :openid="item.name"></WWOpenData></span>
               </el-option>
           </el-select>
         </el-col>
@@ -74,16 +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><wwOpenDAta type="userName" :openid="personnel.name"></wwOpenDAta></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;">
                 <el-popover trigger="hover" placement="top" popper-class="popperSPBOX">
-                  <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>
+                  <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 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>
@@ -101,7 +101,7 @@
             <el-col :gutter="50" style="margin:0;padding:34px 0 0 0;" class="quick_button_box">
               <div style="display:flex;justify-content: space-around;" v-loading="authorityManagerHeaderLoad">
                 <p style="text-align:center;cursor:pointer;margin: 0;"><b style="color:#26A2FF;font-size:27px;">{{authorityManagerHeaders.performance?authorityManagerHeaders.performance.review_point:'0'}}</b><br><span style="color:#606266;font-size:14px;padding-top:8px;display: inline-block;">绩效分</span></p>
-                <p style="text-align:center;cursor:pointer;margin: 0;"><b style="color:#26A2FF;font-size:27px;">{{authorityManagerHeaders.performance?authorityManagerHeaders.performance.total_count + '/' + authorityManagerHeaders.performance.complete_count : '0/0'}}</b><br><span style="color:#606266;font-size:14px;padding-top:8px;display: inline-block;">任务进度</span></p>
+                <p style="text-align:center;cursor:pointer;margin: 0;"><b style="color:#26A2FF;font-size:27px;">{{authorityManagerHeaders.performance?authorityManagerHeaders.performance.complete_count + '/' + authorityManagerHeaders.performance.total_count : '0/0'}}</b><br><span style="color:#606266;font-size:14px;padding-top:8px;display: inline-block;">任务进度</span></p>
               </div>
 
             </el-col>

+ 9 - 9
src/views/statistics_new/integral_event.vue

@@ -49,7 +49,7 @@
           <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>
+                  <WWOpenData type="departmentName" :openid="data.name"></WWOpenData>
                 </span>
                 <!-- <span v-if="!node.isLeaf"> ({{ data.children.length }}) </span> -->
               </template>
@@ -77,11 +77,11 @@
 
         <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>
+            <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>
+              <span style="float: left"><WWOpenData type="userName" :openid="item.name"></WWOpenData></span>
             </el-option>
           </el-select>
         </el-col>
@@ -89,7 +89,7 @@
 
       <el-row :gutter="20" style="margin-bottom: 20px;">
         <el-col :span="7">
-          <el-button type="primary" @click="excelImportShow = true">导入数据</el-button>
+          <!-- <el-button type="primary" @click="excelImportShow = true">导入数据</el-button> -->
           <el-button type="primary" @click="exportExcel">导出当前数据</el-button>
         </el-col>
         <el-col :span="17">
@@ -107,13 +107,13 @@
         <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;"><wwOpenDAta type="userName" :openid="scope.row.employee_name"></wwOpenDAta></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>
+              <WWOpenData type="departmentName" :openid="item"></WWOpenData><span v-if="(scope.row.dept.length-index)>1">,</span>
             </span>
           </template>
         </el-table-column>
@@ -165,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;"><wwOpenDAta type="userName" :openid="detail_info.employee_name"></wwOpenDAta></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>
@@ -193,7 +193,7 @@
 
         <el-row v-show="!detail_info.rule_id">
           <el-col :span="4">记录人</el-col>
-          <el-col :span="20"><wwOpenDAta type="userName" :openid="detail_info.employee_name"></wwOpenDAta></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">
@@ -242,7 +242,7 @@
                 </template>
                 <template slot="title">
                   <div style="color: #303133;font-size:14px;margin-top:-2px;">
-                    <wwOpenDAta type="userName" :openid="item.name"></wwOpenDAta> {{ item.remark }}
+                    <WWOpenData type="userName" :openid="item.name"></WWOpenData> {{ item.remark }}
                     <!-- <span v-show="item.point !== 0">{{item.point}}</span> -->
                   </div>
                 </template>

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

@@ -20,7 +20,7 @@
 					>
 						<template slot-scope="{ node, data }">
 							<span>
-							<wwOpenDAta type="departmentName" :openid="data.name"></wwOpenDAta>
+							<WWOpenData type="departmentName" :openid="data.name"></WWOpenData>
 							</span>
 							<!-- <span v-if="!node.isLeaf"> ({{ data.children.length }}) </span> -->
 						</template>
@@ -32,7 +32,7 @@
 					</el-input>
 				</el-col>
 				<el-col :offset='6' :span="3">
-					<el-button class="company_intergral_button" @click="export_all" type="primary">导出报表</el-button>
+					<!-- <el-button class="company_intergral_button" @click="export_all" type="primary">导出报表</el-button> -->
 				</el-col>
 			</el-row>
 
@@ -42,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"><wwOpenDAta type="userName" :openid="scope.row.employee_name"></wwOpenDAta></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">
@@ -84,7 +84,7 @@
 				:visible.sync="all_integral_show"
 				:before-close="drawer_close"
 				:with-header="false">
-				<div class="drawer_title">{{all_integral_row.employee_name}}的积分</div>
+				<div class="drawer_title"><WWOpenData type="userName" :openid="all_integral_row.employee_name"></WWOpenData>的积分</div>
 				<div style="padding: 30px">
 					<el-row>
 						<el-col :span="24">

+ 3 - 3
src/views/statistics_new/lotteryTicket_statistics.vue

@@ -25,7 +25,7 @@
           >
             <template slot-scope="{ node, data }">
               <span>
-                <wwOpenDAta type="departmentName" :openid="data.name"></wwOpenDAta>
+                <WWOpenData type="departmentName" :openid="data.name"></WWOpenData>
               </span>
               <!-- <span v-if="!node.isLeaf"> ({{ data.children.length }}) </span> -->
             </template>
@@ -62,13 +62,13 @@
             </span>
             <span
               style="margin-left: 20px; line-height: 50px; display: inline-block"
-              ><wwOpenDAta type="userName" :openid="scope.row.name"></wwOpenDAta></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 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>
+            <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">

+ 6 - 6
src/views/statistics_new/manager_statistics.vue

@@ -21,7 +21,7 @@
               >
                 <template slot-scope="{ node, data }">
                   <span>
-                    <wwOpenDAta type="departmentName" :openid="data.name"></wwOpenDAta>
+                    <WWOpenData type="departmentName" :openid="data.name"></WWOpenData>
                   </span>
                   <!-- <span v-if="!node.isLeaf"> ({{ data.children.length }}) </span> -->
                 </template>
@@ -62,7 +62,7 @@
 
 			    <!-- 导出报表 -->
             <el-form-item>
-              <el-button type="primary" plain @click="exportExcel" style="margin-left:20px">导出报表</el-button>
+              <!-- <el-button type="primary" plain @click="exportExcel" style="margin-left:20px">导出报表</el-button> -->
             </el-form-item>
 
           </el-form>
@@ -80,7 +80,7 @@
                 ></userImage>
                 <span
                   style=" margin-left: 10px; line-height: 50px; display: inline-block;"
-                ><wwOpenDAta type="userName" :openid="scope.row.name"></wwOpenDAta></span>
+                ><WWOpenData type="userName" :openid="scope.row.name"></WWOpenData></span>
               </template>
             </el-table-column>
             <el-table-column label="奖分" prop="scope_count">
@@ -157,7 +157,7 @@
               >
                 <template slot-scope="{ node, data }">
                   <span>
-                    <wwOpenDAta type="departmentName" :openid="data.name"></wwOpenDAta>
+                    <WWOpenData type="departmentName" :openid="data.name"></WWOpenData>
                   </span>
                   <!-- <span v-if="!node.isLeaf"> ({{ data.children.length }}) </span> -->
                 </template>
@@ -205,7 +205,7 @@
                 ></userImage>
                 <span
                   style=" margin-left: 10px; line-height: 50px; display: inline-block;"
-                ><wwOpenDAta type="userName" :openid="scope.row.name"></wwOpenDAta></span>
+                ><WWOpenData type="userName" :openid="scope.row.name"></WWOpenData></span>
               </template>
             </el-table-column>
             <el-table-column label="管理范围(人)" prop="scope_count"></el-table-column>
@@ -235,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">
-              <wwOpenDAta type="userName" :openid="item.name"></wwOpenDAta>的奖扣统计
+              <WWOpenData type="userName" :openid="item.name"></WWOpenData>的奖扣统计
               <el-tooltip placement="top">
                 <div slot="content" style="width: 300px">作为管理者,管理执行力是关键,每月按要求完成奖分和扣分任务。</div>
                 <span class="tips">?</span>

+ 5 - 5
src/views/statistics_new/total_rank.vue

@@ -15,7 +15,7 @@
           <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>
+                <WWOpenData type="departmentName" :openid="data.name"></WWOpenData>
               </span>
               <!-- <span v-if="!node.isLeaf"> ({{ data.children.length }}) </span> -->
             </template>
@@ -24,7 +24,7 @@
         <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="dialogVisible = true">导出排名</el-button> -->
           <!-- <el-button type="primary" plain @click="byRanking">轮播排名</el-button> -->
         </el-form-item>
       </el-form>
@@ -41,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;"><wwOpenDAta type="userName" :openid="scope.row.employee_name"></wwOpenDAta></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>
@@ -107,7 +107,7 @@
           >
             <template slot-scope="{ node, data }">
               <span>
-                <wwOpenDAta type="departmentName" :openid="data.name"></wwOpenDAta>
+                <WWOpenData type="departmentName" :openid="data.name"></WWOpenData>
               </span>
               <!-- <span v-if="!node.isLeaf"> ({{ data.children.length }}) </span> -->
             </template>
@@ -162,7 +162,7 @@
             >
               <template slot-scope="{ node, data }">
                 <span>
-                  <wwOpenDAta type="departmentName" :openid="data.name"></wwOpenDAta>
+                  <WWOpenData type="departmentName" :openid="data.name"></WWOpenData>
                 </span>
                 <!-- <span v-if="!node.isLeaf"> ({{ data.children.length }}) </span> -->
               </template>

+ 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"
-                ><wwOpenDAta type="userName" :openid="scope.row.employee_name"></wwOpenDAta>的积分任务</span
+                ><WWOpenData type="userName" :openid="scope.row.employee_name"></WWOpenData>的积分任务</span
               >
               <span class="tableTitle" v-show="scope.row.source_type == 2"
-                ><wwOpenDAta type="userName" :openid="scope.row.employee_name"></wwOpenDAta>的积分申请</span
+                ><WWOpenData type="userName" :openid="scope.row.employee_name"></WWOpenData>的积分申请</span
               >
               <span class="tableTitle" v-show="scope.row.source_type == 3"
-                ><wwOpenDAta type="userName" :openid="scope.row.employee_name"></wwOpenDAta>的积分录入</span
+                ><WWOpenData type="userName" :openid="scope.row.employee_name"></WWOpenData>的积分录入</span
               >
               <span class="tableTitle" v-show="scope.row.source_type == 4"
-                ><wwOpenDAta type="userName" :openid="scope.row.employee_name"></wwOpenDAta>的绩效工作</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"
-                ><wwOpenDAta type="userName" :openid="scope.row.employee_name"></wwOpenDAta>的积分任务</span
+                ><WWOpenData type="userName" :openid="scope.row.employee_name"></WWOpenData>的积分任务</span
               >
               <span class="tableTitle" v-show="scope.row.source_type == 2"
-                ><wwOpenDAta type="userName" :openid="scope.row.employee_name"></wwOpenDAta>的积分申请</span
+                ><WWOpenData type="userName" :openid="scope.row.employee_name"></WWOpenData>的积分申请</span
               >
               <span class="tableTitle" v-show="scope.row.source_type == 3"
-                ><wwOpenDAta type="userName" :openid="scope.row.employee_name"></wwOpenDAta>的积分录入</span
+                ><WWOpenData type="userName" :openid="scope.row.employee_name"></WWOpenData>的积分录入</span
               >
               <span class="tableTitle" v-show="scope.row.source_type == 4"
-                ><wwOpenDAta type="userName" :openid="scope.row.employee_name"></wwOpenDAta>的绩效工作</span
+                ><WWOpenData type="userName" :openid="scope.row.employee_name"></WWOpenData>的绩效工作</span
               >
             </template>
           </el-table-column>

+ 12 - 6
src/views/workbench/grade/apply_list.vue

@@ -63,13 +63,19 @@
       <el-table-column label="申请内容" prop="remark">
         <template slot-scope="scope">{{scope.row.remark.customize || scope.row.remark.rule}}</template>
       </el-table-column>
-      <el-table-column label="积分" prop="review_point" width="120">
+      <!-- <el-table-column label="积分" prop="review_point" width="120">
         <template slot-scope="scope">
           <span>
             <span v-show="scope.row.point > 0">+</span>
             {{scope.row.point}} B分
           </span>
         </template>
+      </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>
+        </template>
       </el-table-column>
       <el-table-column label="时间" prop="event_time" width="150"></el-table-column>
       <template slot="empty">
@@ -141,7 +147,7 @@
               style="display: inline-block; margin-right: 10px;"
             ></userImage>
             <div class="user_text">
-              <p><wwOpenDAta type="userName" :openid="getEmployeeName(detail_info.employee_id)"></wwOpenDAta></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">
@@ -177,13 +183,13 @@
             </el-image>
           </el-col>
            <el-col :span="20" v-else-if="item.key == '收益人'">
-            <wwOpenDAta type="userName" :openid="item.value"></wwOpenDAta>
+            <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>
+            <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>
+            <WWOpenData type="userName" :openid="item.value"></WWOpenData>
 					</el-col>
           <el-col :span="20" v-else>{{ item.value }}</el-col>
         </el-row>
@@ -218,7 +224,7 @@
                 </template>
                 <template slot="title">
                   <div style="color: #303133;font-size:14px;margin-top:-2px;">
-                    <wwOpenDAta type="userName" :openid="item.name"></wwOpenDAta> {{item.remark}}
+                    <WWOpenData type="userName" :openid="item.name"></WWOpenData> {{item.remark}}
                     <!-- <span v-show="item.point !== 0">{{item.point}}</span> -->
                   </div>
                 </template>

+ 9 - 9
src/views/workbench/grade/award_punish.vue

@@ -23,7 +23,7 @@
           <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;">
-              <wwOpenDAta type="userName" :openid="scope.row.employee_name"></wwOpenDAta>
+              <WWOpenData type="userName" :openid="scope.row.employee_name"></WWOpenData>
              </span>
           </div>
         </template>
@@ -53,7 +53,7 @@
             <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;">
-              <wwOpenDAta type="userName" :openid="scope.row.employee_name"></wwOpenDAta>
+              <WWOpenData type="userName" :openid="scope.row.employee_name"></WWOpenData>
             </span>
           </div>
         </template>
@@ -98,7 +98,7 @@
           <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;">
-              <wwOpenDAta type="userName" :openid="detail_info.employee_name"></wwOpenDAta>
+              <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>
@@ -169,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;"><wwOpenDAta type="userName" :openid="item.name"></wwOpenDAta> {{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>
@@ -193,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;"><wwOpenDAta type="userName" :openid="getEmployeeName(detail_info.applyor_id)"></wwOpenDAta></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>
@@ -217,13 +217,13 @@
 					</el-col>
 
           <el-col :span="20" v-else-if="item.key == '收益人'">
-            <wwOpenDAta type="userName" :openid="item.value"></wwOpenDAta>
+            <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>
+            <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>
+            <WWOpenData type="userName" :openid="item.value"></WWOpenData>
 					</el-col>
 
           <el-col :span="20" v-else>{{item.value}}</el-col>
@@ -251,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;"><wwOpenDAta type="userName" :openid="item.name"></wwOpenDAta> {{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>

+ 45 - 11
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><wwOpenDAta type="userName" :openid="item.name"></wwOpenDAta></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>
@@ -20,7 +20,7 @@
         </el-form-item>
         <el-form-item label="执行人" v-if="$route.query.package_id" :rules="[{required: true, message: '请选择月份', trigger: 'change' }]">
           <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 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>
@@ -42,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><wwOpenDAta type="userName" :openid="selectReviewer.employee[0].name"></wwOpenDAta></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>
@@ -56,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><wwOpenDAta type="userName" :openid="item.name"></wwOpenDAta></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>
@@ -68,21 +68,54 @@
       </el-form>
     </div>
     <el-dialog  title="选择执行人" :visible.sync="add_employee_show"  :before-close="publicClose"  width="700px">
-      <EmployeeSelector1 :isChecKedAll="false" v-if="add_employee_show" :employee_list="employee_list" :dept_multi="false" ref="Employee" :can_select_dept="false" :selected="selectEmployee" :multi="true" :max="0" @confirm="add_employee_confirm"></EmployeeSelector1>
+      <!-- <EmployeeSelector1 :isChecKedAll="false" v-if="add_employee_show" :employee_list="employee_list" :dept_multi="false" ref="Employee" :can_select_dept="false" :selected="selectEmployee" :multi="true" :max="0" @confirm="add_employee_confirm"></EmployeeSelector1> -->
+      <!-- 选择执行人 -->
+        <EmployeeSelector
+          title="选择执行人"
+          :visible.sync="add_employee_show"
+          :employee_list="employee_list"
+          :user_employee_list="true"
+          :isChecKedAll="false"
+          :selected="selectEmployee"
+          :multi="true"
+          @confirm="add_employee_confirm"
+        />
        <span slot="footer">
          <el-button @click="publicClose()">取消</el-button>
          <el-button type="primary" @click="sub_add_employee">完成</el-button>
        </span>
     </el-dialog>
     <el-dialog  title="选择终审人" :visible.sync="add_reviewer_show"  :before-close="publicClose"  width="700px">
-      <EmployeeSelector1 :isChecKedAll="false" v-if="add_reviewer_show" ref="Employee" :employee_list="selectReviewer_list" :can_select_dept="false" :multi="false" :selected="selectReviewer" @confirm="add_employee_confirm"></EmployeeSelector1>
+      <!-- <EmployeeSelector1 :isChecKedAll="false" v-if="add_reviewer_show" ref="Employee" :employee_list="selectReviewer_list" :can_select_dept="false" :multi="false" :selected="selectReviewer" @confirm="add_employee_confirm"></EmployeeSelector1> -->
+      <!-- 选择终审人 -->
+        <EmployeeSelector
+          title="选择终审人"
+          :visible.sync="add_reviewer_show"
+          :is_filtration_creator="false"
+          :employee_list="selectReviewer_list"
+          :user_employee_list="true"
+          :isChecKedAll="false"
+          :selected="selectReviewer"
+          :multi="false"
+          @confirm="add_employee_confirm"
+      />
        <span slot="footer">
          <el-button @click="publicClose()">取消</el-button>
          <el-button type="primary" @click="sub_add_employee">完成</el-button>
        </span>
     </el-dialog>
     <el-dialog  title="选择监察员" :visible.sync="add_notice_show"  :before-close="publicClose"  width="700px">
-      <EmployeeSelector1 :isChecKedAll="false"  v-if="add_notice_show"  ref="Employee" :selected="selectNotice" :employee_not_select="employee_not_select" :can_select_dept="false" :multi="true"  @confirm="add_employee_confirm"></EmployeeSelector1>
+      <!-- <EmployeeSelector1 :isChecKedAll="false"  v-if="add_notice_show"  ref="Employee" :selected="selectNotice" :employee_not_select="employee_not_select" :can_select_dept="false" :multi="true"  @confirm="add_employee_confirm"></EmployeeSelector1> -->
+      <!-- 选择终审人 -->
+      <EmployeeSelector
+        title="选择监察员"
+        :visible.sync="add_notice_show"
+        :is_filtration_creator="false"
+        :employee_not_select="employee_not_select"
+        :isChecKedAll="true"
+        :selected="selectNotice"
+        @confirm="add_employee_confirm"
+      />
        <span slot="footer">
          <el-button @click="publicClose()">取消</el-button>
          <el-button type="primary" @click="sub_add_employee">完成</el-button>
@@ -115,7 +148,7 @@
               prop="target" 
               label="姓名" >
               <template slot-scope="scope">
-                <span><wwOpenDAta type="userName" :openid="scope.row.target"></wwOpenDAta></span>
+                <span><WWOpenData type="userName" :openid="scope.row.target"></WWOpenData></span>
               </template>
             </el-table-column>
 
@@ -188,7 +221,7 @@
               </span>
               <span
                 style="margin-left: 20px; line-height: 40px; display: inline-block;"
-                ><wwOpenDAta type="userName" :openid="scope.row.name"></wwOpenDAta></span
+                ><WWOpenData type="userName" :openid="scope.row.name"></WWOpenData></span
               >
             </template>
           </el-table-column>
@@ -234,10 +267,11 @@
 </template>
 
 <script>
-import EmployeeSelector1 from '@/views/common/EmployeeSelector1'
+// import EmployeeSelector1 from '@/views/common/EmployeeSelector1'
+import EmployeeSelector from '@/components/EmployeeSelector';
 export default {
   name: 'add_team_performance',
-  components:{EmployeeSelector1},
+  components:{EmployeeSelector},
   data() {
     return {
       error_list:[],

+ 9 - 9
src/views/workbench/performance/examine_unit.vue

@@ -1,7 +1,7 @@
 <template>
   <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 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>
@@ -22,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"><wwOpenDAta type="userName" :openid="dataList.reviewer_name"></wwOpenDAta></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 +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"><wwOpenDAta type="userName" :openid="dataList.publisher_name"></wwOpenDAta></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>
@@ -47,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"><wwOpenDAta type="userName" :openid="item.name"></wwOpenDAta></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>
@@ -153,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><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><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>
@@ -190,7 +190,7 @@
           </li>
           <li class="flex-box">
             <div class="label">审批人</div>
-            <div class="content_text"><wwOpenDAta type="userName" :openid="workDetailData.reviewer_name"></wwOpenDAta></div>
+            <div class="content_text"><WWOpenData type="userName" :openid="workDetailData.reviewer_name"></WWOpenData></div>
           </li>
           <li class="flex-box">
             <div class="label">积分种类</div>
@@ -215,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"><wwOpenDAta type="userName" :openid="item.recorder"></wwOpenDAta></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>
@@ -234,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"><wwOpenDAta type="userName" :openid="item.recorder"></wwOpenDAta>
+                    <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;"><wwOpenDAta type="userName" :openid="scope.row.name"></wwOpenDAta></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;"><wwOpenDAta type="userName" :openid="scope.row.name"></wwOpenDAta></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"><wwOpenDAta type="userName" :openid="dataList.reviewer_name"></wwOpenDAta></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"><wwOpenDAta type="userName" :openid="dataList.publisher_name"></wwOpenDAta></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"><wwOpenDAta type="userName" :openid="item.name"></wwOpenDAta></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><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><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"><wwOpenDAta type="userName" :openid="workDetailData.reviewer_name"></wwOpenDAta></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"><wwOpenDAta type="userName" :openid="item.recorder"></wwOpenDAta></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"><wwOpenDAta type="userName" :openid="item.recorder"></wwOpenDAta>
+                    <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>

+ 9 - 9
src/views/workbench/performance/participation_detail.vue

@@ -1,7 +1,7 @@
 <template>
   <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 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">
@@ -22,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"><wwOpenDAta type="userName" :openid="dataList.reviewer_name"></wwOpenDAta></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 +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"><wwOpenDAta type="userName" :openid="dataList.publisher_name"></wwOpenDAta></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>
@@ -49,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"><wwOpenDAta type="userName" :openid="item.name"></wwOpenDAta></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>
@@ -132,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><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><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>
@@ -164,7 +164,7 @@
           </li>
           <li class="flex-box">
             <div class="label">审批人</div>
-            <div class="content_text"><wwOpenDAta type="userName" :openid="workDetailData.reviewer_name"></wwOpenDAta></div>
+            <div class="content_text"><WWOpenData type="userName" :openid="workDetailData.reviewer_name"></WWOpenData></div>
           </li>
           <li class="flex-box">
             <div class="label">积分种类</div>
@@ -189,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"><wwOpenDAta type="userName" :openid="item.recorder"></wwOpenDAta></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>
@@ -211,7 +211,7 @@
                 <div class="work_right flex-1">
                   <div class="flex-box">
                     <div class="d_name flex-1">
-                      <wwOpenDAta type="userName" :openid="item.recorder"></wwOpenDAta>
+                      <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>

+ 25 - 14
src/views/workbench/performance/team_detail.vue

@@ -3,7 +3,7 @@
     <!-- <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 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> -->
@@ -24,7 +24,7 @@
         <el-dropdown>
           <span class="el-dropdown-link">终审人</span>
           <el-dropdown-menu slot="dropdown">
-            <el-dropdown-item v-if="dataList.reviewer_name"><wwOpenDAta type="userName" :openid="dataList.reviewer_name"></wwOpenDAta></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>
@@ -37,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"><wwOpenDAta type="userName" :openid="dataList.publisher_name"></wwOpenDAta></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>
@@ -51,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"><wwOpenDAta type="userName" :openid="item.name"></wwOpenDAta></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>
@@ -150,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><wwOpenDAta type="userName" :openid="selectReviewer.name"></wwOpenDAta></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>
@@ -216,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><wwOpenDAta type="userName" :openid="selectReviewer.name"></wwOpenDAta></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>
@@ -232,13 +232,24 @@
     </el-drawer> 
 
     <!-- 添加人员 -->
-    <el-dialog title="选择审批人" :visible.sync="add_reviewer_show" :before-close="publicClose" width="700px">
+      <EmployeeSelector
+        title="选择审批人"
+        :visible.sync="add_reviewer_show"
+        :is_filtration_creator="false"
+        :isChecKedAll="false"
+        :multi="false"
+        :employee_list="superior_list"
+        :user_employee_list="true"
+        :selected="amendList"
+        @confirm="sub_add_employee"
+      />
+    <!-- <el-dialog title="选择审批人" :visible.sync="add_reviewer_show" :before-close="publicClose" width="700px">
         <EmployeeSelector1 :isChecKedAll="false" v-if="add_reviewer_show" :selected="amendList" ref="Employee" :can_select_dept="false" :multi="false"  @confirms="add_employee_confirms" @confirm="add_employee_confirm"></EmployeeSelector1>
          <span slot="footer">
            <el-button @click="publicClose()">取消</el-button>
            <el-button type="primary" @click="sub_add_employee">完成</el-button> 
          </span>
-    </el-dialog>
+    </el-dialog> -->
     <!-- 更新进度 -->
     <el-dialog title="引入绩效" :visible.sync="isSlider2" :before-close="publicClose" width="40%">
         <el-date-picker v-model="dialogDate" type="month" placeholder="选择月" value-format="yyyy-MM"></el-date-picker>
@@ -273,8 +284,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><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><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>
@@ -306,7 +317,7 @@
         </li>
         <li class="flex-box">
           <div class="label">发布人</div>
-          <div class="content_text"><wwOpenDAta type="userName" :openid="workDetailData.publisher_name"></wwOpenDAta></div>
+          <div class="content_text"><WWOpenData type="userName" :openid="workDetailData.publisher_name"></WWOpenData></div>
         </li>
         <!-- <li class="flex-box">
           <div class="label">发布时间</div>
@@ -318,7 +329,7 @@
         </li>
         <li class="flex-box">
           <div class="label">审批人</div>
-          <div class="content_text"><wwOpenDAta type="userName" :openid="workDetailData.reviewer_name"></wwOpenDAta></div>
+          <div class="content_text"><WWOpenData type="userName" :openid="workDetailData.reviewer_name"></WWOpenData></div>
         </li>
         <li class="flex-box">
           <div class="label">积分种类</div>
@@ -343,7 +354,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"><wwOpenDAta type="userName" :openid="item.recorder"></wwOpenDAta></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>
@@ -365,7 +376,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"><wwOpenDAta type="userName" :openid="item.recorder"></wwOpenDAta>
+                  <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>

+ 2 - 2
src/views/workbench/performance/team_performance.vue

@@ -8,7 +8,7 @@
         <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>
+              <WWOpenData type="departmentName" :openid="data.name"></WWOpenData>
             </span>
             <!-- <span v-if="!node.isLeaf"> ({{ data.children.length }}) </span> -->
           </template>
@@ -27,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;"><wwOpenDAta type="userName" :openid="scope.row.name"></wwOpenDAta></span>
+              <span style="margin-left: 20px;"><WWOpenData type="userName" :openid="scope.row.name"></WWOpenData></span>
             </div>
           </template>
         </el-table-column>

+ 4 - 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;"><wwOpenDAta type="userName" :openid="scope.row.receiver_name"></wwOpenDAta></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>
@@ -71,7 +71,7 @@
             <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;">
-                <wwOpenDAta type="userName" :openid="active=='unclaimed'?detailInfo.owner_name:detailInfo.receiver_name"></wwOpenDAta>
+                <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>
@@ -116,12 +116,12 @@
           </el-row> -->
            <el-row v-if="detailInfo.reviewer_name">
             <el-col :span="4">审批人</el-col>
-            <el-col :span="20"><wwOpenDAta type="userName" :openid="detailInfo.reviewer_name"></wwOpenDAta></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"><wwOpenDAta type="userName" :openid="detailInfo.owner_name"></wwOpenDAta></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;"><wwOpenDAta type="userName" :openid="scope.row.employee_name"></wwOpenDAta>的{{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"><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 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/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