guojy 1 jaar geleden
bovenliggende
commit
db2b5ba6ee
35 gewijzigde bestanden met toevoegingen van 695 en 5270 verwijderingen
  1. 10 12
      src/api/auth.js
  2. 0 945
      src/components/EmployeeSelector.vue
  3. 3 3
      src/main.js
  4. 0 1
      src/router/index.js
  5. 0 6
      src/store/modules/user.js
  6. 2 2
      src/utils/downloadFile.js
  7. 2 8
      src/utils/request.js
  8. 1 10
      src/views/attendance/attendance_group.vue
  9. 13 29
      src/views/common/EmployeeSelector.vue
  10. 0 922
      src/views/common/EmployeeSelector1 copy.vue
  11. 8 25
      src/views/common/EmployeeSelector1.vue
  12. 0 926
      src/views/common/EmployeeSelectorCopy.vue
  13. 0 1115
      src/views/common/EmployeeSelectorVTwo.vue
  14. 257 393
      src/views/common/applicationIntegrationPopup.vue
  15. 15 26
      src/views/common/bonusPointsPopup.vue
  16. 0 240
      src/views/common/edit_team_item.vue
  17. 3 2
      src/views/common/rewardTask.vue
  18. 3 2
      src/views/common/rewardTaskAmend.vue
  19. 11 30
      src/views/common/temporaryTask.vue
  20. 1 21
      src/views/common/temporaryTaskAmend.vue
  21. 203 151
      src/views/integral/EmployeeTable.vue
  22. 1 1
      src/views/integral/PkDetail.vue
  23. 21 47
      src/views/integral/rule/rule_category.vue
  24. 34 129
      src/views/setting/fixed_integral.vue
  25. 1 1
      src/views/setting/set_role.vue
  26. 6 2
      src/views/statistics_new/balanceA.vue
  27. 66 85
      src/views/statistics_new/integral_event.vue
  28. 1 4
      src/views/statistics_new/integral_statistics.vue
  29. 7 11
      src/views/statistics_new/lotteryTicket_statistics.vue
  30. 1 2
      src/views/statistics_new/manager_statistics.vue
  31. 8 73
      src/views/workbench/grade/apply_list.vue
  32. 1 1
      src/views/workbench/grade/award_punish.vue
  33. 13 35
      src/views/workbench/performance/add_team_performance.vue
  34. 2 9
      src/views/workbench/performance/participation_detail.vue
  35. 1 1
      src/views/workbench/task/my_task.vue

+ 10 - 12
src/api/auth.js

@@ -48,17 +48,15 @@ export function getTypsName(id) {
 	return getTyps(id).name
 }
 
-// 防抖
-//用法
 // _debounce(this.XXX(),1000)
-export function _debounce (fn, delay) {
-	if(!delay)delay=500
-    let timer = null
-    return function () {
-        let arg = arguments
-        clearTimeout(timer)
-        timer = setTimeout(() => {
-            fn.apply(this, arg)
-        }, delay)
-    }
+// 防抖
+export function _debounce(fn, delay = 500) {
+	let timer = null
+	return function() {
+		let arg = arguments
+		clearTimeout(timer)
+		timer = setTimeout(() => {
+			fn.apply(this, arg)
+		}, delay)
+	}
 }

+ 0 - 945
src/components/EmployeeSelector.vue

@@ -1,945 +0,0 @@
-<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>

+ 3 - 3
src/main.js

@@ -19,10 +19,10 @@ import * as filters from '@/utils/filters' // global filters
 import jtoken from '@/utils/Jtoken'
 import noData from '@/components/noData'
 Vue.component('NoData', noData)
-
 import VConsole from 'vconsole'
-// new VConsole()
-
+if (process.env.NODE_ENV === 'development') {
+  new VConsole()
+}
 // 头像
 import userImage from '@/components/user_image'
 Vue.component('userImage', userImage)

+ 0 - 1
src/router/index.js

@@ -465,7 +465,6 @@ export const asyncRouterMap = [
       {
         path: '/rule_manage',
         name: 'integral_rule',
-
         component: () => import('@/views/integral/rule/rule_category'),
         meta: { title: '积分规则', icon: 'rule_manage_icon', noCache: true }
       },

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

@@ -95,12 +95,6 @@ const user = {
     // 人员列表
     get_employee_map({ commit }) {
       return new Promise((resolve, reject) => {
-        // let employee_map = employee_map = JSON.parse(localStorage.getItem('SET_EMPLOYEE_MAP'))
-        // if (employee_map) {
-        //   commit('SET_EMPLOYEE_MAP', employee_map)
-        //   resolve(employee_map)
-        // } else {
-
           get_employee_map().then(response => {
             if (response.data.code == 1) {
               const data = {}

+ 2 - 2
src/utils/downloadFile.js

@@ -9,8 +9,8 @@ import VueRouter from 'vue-router'
 var deriveJobId='';
 var circulation=0;
 var loadingInstance
-export default function downloadFile(url, params,routerPath){
-    MessageBox.confirm('确认导出排名?', '导出', {
+export default function downloadFile(url, params,routerPath,str){
+    MessageBox.confirm(str? str:'确认导出排名?', '导出', {
       confirmButtonText: '确定',
       cancelButtonText: '取消',
       type: 'warning'

+ 2 - 8
src/utils/request.js

@@ -50,7 +50,6 @@ service.interceptors.response.use(
         setTimeout(() => {
           bool = true
         }, 5000)
-      } else {
       }
       return Promise.reject('error')
     } else if (res.code === 2001) {
@@ -69,17 +68,12 @@ service.interceptors.response.use(
       })
       return Promise.reject('error')
     }  else if(res.code === 4444){
-<<<<<<< HEAD
         store.state.user.pastDue = true
-=======
->>>>>>> dev
         localStorage.clear()
         sessionStorage.clear()
+        removeAllToken()
         Router.push({
-          path: '/noAccess',
-          query: {
-            msg: res.msg
-          }
+          path: '/login'
         })
         return Promise.reject('error')
     } else {

+ 1 - 10
src/views/attendance/attendance_group.vue

@@ -107,7 +107,7 @@
     <el-pagination
       background
       layout="total,sizes, prev, pager, next"
-      :page-size="pageLimit" 
+      :page-size="pageLimit"
       :page-sizes="[10, 20, 50, 100]"
       :total="totalCount"
       @size-change="handleSizeChange"
@@ -751,9 +751,7 @@ export default {
       }
   },
   methods: {
-
       location_del(index) {
-        console.log(index)
         this.formdata.location.splice(index, 1)
       },
       attendance_duty_show(id) {
@@ -773,7 +771,6 @@ export default {
         self.attendance_duty_save_loading = false
       },
       class_selector_save() {
-      // console.log(this.attendance_setting_list)
         for (const l in this.attendance_setting_list) {
           if (this.formdata.attendance_setting_ids.indexOf(this.attendance_setting_list[l].id) < 0) {
             this.formdata.attendance_setting_ids.push(this.attendance_setting_list[l].id)
@@ -785,21 +782,15 @@ export default {
       },
       class_selector_show() {
         this.class_selectorDialogVisible = true
-      // let fromdata = JSON.parse(JSON.stringify(this.formdata))
-      // this.attendance_setting_list = fromdata.attendance_setting_list
-      // this.attendance_setting_ids = fromdata.attendance_setting_ids
       },
       EmployeeSelector0_show() {
         this.EmployeeSelectorDialogVisible0 = true
-      // this.employee_ids = JSON.parse(JSON.stringify(this.formdata.employee_ids))
       },
       EmployeeSelector1_show() {
         this.EmployeeSelectorDialogVisible1 = true
-      // this.un_employee_ids = JSON.parse(JSON.stringify(this.formdata.un_employee_ids))
       },
       EmployeeSelector2_show() {
         this.EmployeeSelectorDialogVisible2 = true
-      // this.manager_ids = JSON.parse(JSON.stringify(this.formdata.manager_ids))
       },
 
       set_manager_ids(data) {

+ 13 - 29
src/views/common/EmployeeSelector.vue

@@ -14,7 +14,9 @@
       <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">
+              <el-input v-model="keyword" placeholder="姓名搜索" clearable maxlength="20"></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
@@ -22,7 +24,7 @@
                 v-model="dept_id"
                 :options="dept_list"
                 :props="{ checkStrictly: true, value: 'id', label: 'name', children: 'children' }"
-                @change="dept1_null"
+                @change="deptActive"
                 ref="dept1"
                 filterable
                 :disabled="deptId > 0"
@@ -46,7 +48,6 @@
                 <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>
@@ -65,10 +66,9 @@
               <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="flex-box flex-v-ce deptList" @click="select_dept(item, index)">
                       <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>
@@ -85,7 +85,6 @@
                       <div class="employee_img_url" v-else><img src="static/images/default5.png" class="employee_cell_head_img" /></div>
                       <div class="employee_name">
                         <WWOpenData type="userName" :openid="item.name"></WWOpenData>
-                        <!-- {{ item.name }} -->
                       </div>
                       <div class="employee_cell_clear"></div>
                     </div>
@@ -99,7 +98,7 @@
         <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>
+            <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;">
@@ -107,7 +106,6 @@
               <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>
-                  <!-- {{ 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>
@@ -117,7 +115,6 @@
                 <div class="employee_img_url" v-else><img src="static/images/default5.png" class="employee_cell_head_img" /></div>
                 <div class="employee_name">
                   <WWOpenData type="userName" :openid="item.name"></WWOpenData>
-                  <!-- {{ item.name }} -->
                 </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>
@@ -135,6 +132,7 @@
 </template>
 
 <script>
+  import { _debounce } from '@/api/auth'
 export default {
   props: {
     title: {
@@ -261,14 +259,15 @@ export default {
     return {
       // 基础配置
       table_loading: false,
-      searchBox: [], //用于搜索的全部人员
       keyword: '',
       checked: false,
       visible_: false,
+
       // 选择人员相关
       employee_selected_list: [],
       employee_selected: [],
       list: [],
+
       // 选择部门相关
       dept_selected_list: [],
       dept_name: '',
@@ -298,28 +297,15 @@ export default {
         }, 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;
-      }
-    }
+    keyword:_debounce(function(val) {
+        this.get_user_list();
+    },300)
   },
   methods: {
     defaultImg(){
       return "https://rescdn.qqmail.com/node/wwmng/wwmng/style/images/independent/DefaultAvatar$73ba92b5.png"
     },
-    dept1_null(val){
+    deptActive(val){
       this.toPdept1 = val[val.length-1]
     	if(val.length>1){
     		this.dept_select_id=val[val.length-1];
@@ -636,7 +622,6 @@ export default {
           item.img_url = 'static/images/default5.png';
         }
       });
-      this.searchBox = data;
       this.list = data;
     },
     //获取人员
@@ -805,7 +790,6 @@ export default {
   border-radius: 0px;
   border: none;
 }
-/* /搜索框 */
 
 /* 左边框 */
 .employee_selector_box .choose_left {

+ 0 - 922
src/views/common/EmployeeSelector1 copy.vue

@@ -1,922 +0,0 @@
-<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>

+ 8 - 25
src/views/common/EmployeeSelector1.vue

@@ -4,7 +4,9 @@
       <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" style="margin-bottom: 7px;"><el-input v-model="keyword" placeholder="请输入内容" clearable></el-input></div> -->
+            <div class="search flex-box">
+              <el-input v-model="keyword" placeholder="姓名搜索" clearable maxlength="20"></el-input>
+            </div>
             <div class="search flex-box" style="margin-top: 7px; width: 80%; position: relative;">
               <deptData  v-if="toPdept1 && toPdept1!=0" :refsName="$refs.dept1" :toPdept="toPdept1"></deptData>
               <el-cascader
@@ -51,7 +53,7 @@
         <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>
+            <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;">
@@ -83,7 +85,7 @@
 </template>
 
 <script>
-var timers = null;
+import { _debounce } from '@/api/auth'
 export default {
   props: {
     can_select_dept: {// 是否能选择部门
@@ -180,18 +182,6 @@ export default {
     };
   },
   watch: {
-    // dept_id(val){
-    // 	if(val.length>1){
-    // 		this.pid=val[val.length-1];
-    // 	}else{
-    // 		this.pid=val[0];
-    // 	}
-    // 	this.$nextTick(() => {
-    // 		this.$refs.dept.dropDownVisible = false;
-    // 		this.get_user_list();
-    // 		this.checked=false;
-    // 	});
-    // },
     selected: {
       deep: true,
       handler(val) {
@@ -209,12 +199,9 @@ export default {
       },
       immediate: true
     },
-    keyword(val) {
-      this.list = this.searchBox.filter(item => item.name.includes(this.keyword));
-      if(!val){
-        this.checked=false;
-      }
-    }
+    keyword:_debounce(function(val) {
+        this.get_user_list();
+    },300)
   },
   methods: {
     dept1_null(val){
@@ -224,10 +211,6 @@ export default {
     	}else{
     		this.pid=val[0];
     	}
-      // let valItem = 0
-      // for(let i in val){
-      //   valItem = val[i]
-      // }
       this.$nextTick(()=>{
     		this.get_user_list();
     		this.checked=false;

+ 0 - 926
src/views/common/EmployeeSelectorCopy.vue

@@ -1,926 +0,0 @@
-<template>
-  <el-dialog
-    class=""
-    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">
-      <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>
-              {{item.name}}
-            </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.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">
-                    {{item.name}}
-                  </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}}{{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">
-                  {{item.dept_name}}
-                </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}}<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:{
-      isChecKedAll: {
-        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
-      }
-    },
-    name: "EmployeeSelector",
-    data() {
-      let selected = JSON.parse(JSON.stringify(this.selected))
-      return {
-        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) {
-              this.$set(this.selected.employee[i], 'img_url', 'static/images/head_default.png')
-            }
-            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){
-          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() {
-        this.get_user_list(function () {
-
-        })
-      }
-    },
-    methods: {
-      //关闭弹窗清除数据
-      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.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)
-            }
-          }
-        }
-      },
-      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
-        }
-      },
-      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 == ''){
-                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)
-          })
-          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 = 'static/images/head_default.png'
-            }
-          }
-          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
-          }
-          done()
-        }).catch((e) => {
-          done()
-        })
-      },
-      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() {
-      // 'static/images/head_default.png'
-      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 (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>

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

@@ -1,1115 +0,0 @@
-<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>

+ 257 - 393
src/views/common/applicationIntegrationPopup.vue

@@ -1,50 +1,19 @@
 <template>
   <div>
-    <!-- 奖扣ab分弹窗 -->
-    <el-dialog
-      :title="title"
-      :visible.sync="visible"
-      :close-on-click-modal="false"
-      :before-close="closePopup"
-      width="600px">
+    <!-- 积分申请 -->
+    <el-dialog :title="title" :visible.sync="visible" :close-on-click-modal="false" :before-close="closePopup" width="600px">
       <div>
-        <el-form :model="dialogData" ref="dialogData" label-width="80px" v-loading="loading">          
+        <el-form :model="dialogData" ref="dialogData" label-width="80px" v-loading="loading">
           <div v-for="(item,index) in dialogData.items" :key="index" @click="itemIndex = index">
-
             <div style="overflow: hidden;">
               <span style="line-height: 36px;">申请明细({{index+1}})</span>
               <el-button type="text" class="fr" v-show="index > 0 || dialogData.items.length > 1" @click="delItem(index)">删除</el-button>
             </div>
-
-            <el-form-item label="录入对象" :prop="'items.'+ index +'.employeeName'" :rules="[{ required: true, message: '请选择录入对象', trigger: 'change' }]">
-              <el-row>
-                <el-col :span="18">
-                  <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="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
-                :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"/> -->
-              <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 label="录入对象" :prop="'items.'+ index +'.employeeInfo.name'" :rules="[{ required: true, message: '请选择录入对象', trigger: 'change' }]">
+              <div class="zindexName" @click="selectEmployee(index)">
+                <WWOpenData type="userName" v-if="item.employeeInfo.id" :openid="item.employeeInfo.name"></WWOpenData></span>
+                <span style="color: #DCDFE6;" v-else>请选择录入对象</span>
+              </div>
             </el-form-item>
 
             <el-form-item label="指定规则">
@@ -62,6 +31,7 @@
               :popper-class="'itemClass'"
               :options="rule_item_list"
               @change="ruleItemChange"
+              @visible-change="visibleChange($event,index)"
               :show-all-levels="false"
               :props="{ children: 'child', label: 'name', value: 'id'}"
               ></el-cascader>
@@ -71,7 +41,7 @@
               <div v-show="item.rule_item_details.range_type == 2">{{get_point_name(item.rule_item_details.pt_id)}}  {{item.rule_item_details.min_point}} ~ {{item.rule_item_details.max_point}}</div>
               <div>{{item.rule_item_details.name}}</div>
             </el-form-item>
-            
+
             <el-form-item label="发生时间" :prop="'items.'+ index +'.event_time'" :rules="[{ required: true, message: '请选择时间', trigger: 'blur' }]">
               <el-row>
                 <el-col :span="18">
@@ -79,11 +49,11 @@
                 </el-col>
               </el-row>
             </el-form-item>
-            
-            <el-form-item label="事件内容" :prop="'items.'+ index +'.remark'" :rules="[{ required: true, message: '请输入事件内容', trigger: 'blur' },{ min: 3, max: 100, message: '长度在 3 到 100 个字符', trigger: 'blur' }]">
+
+            <el-form-item label="事件内容" :prop="'items.'+ index +'.remark'" :rules="[{ required: true, message: '请输入事件内容', trigger: 'blur' },{ min: 3, max: 300, message: '长度在 3 到 300 个字符', trigger: 'blur' }]">
               <el-row>
                 <el-col :span="18">
-                  <el-input type="textarea" rows="6" placeholder="请输入事件内容(限100字)" style="width: 100%;" v-model="item.remark"></el-input>
+                  <el-input type="textarea" rows="6" placeholder="请输入事件内容(限300字)" style="width: 100%;" v-model="item.remark"></el-input>
                 </el-col>
               </el-row>
             </el-form-item>
@@ -105,42 +75,11 @@
                 <el-button size="small" type="primary" >点击上传</el-button>(最多选择3张)
               </uploadOss>
             </el-form-item>
-            
-            <el-form-item label="审批人" :prop="'items.'+ index +'.approvalName'" :rules="[{ required: true, message: '请选择审批人', trigger: 'blur' }]">
-              
-              <el-row>
-                <el-col :span="18">
-                  <el-input v-if="item.approvalName==''" auto-complete="off" v-model="item.approvalName" placeholder="请选择审批人"></el-input>
-                  <div v-if="item.approval_selected.length == 0" @click="approval_selected_null" style=" position: absolute; top: 0; right: 0; left: 0; bottom: 0; z-index: 9;"></div>
-                  
-                  <div v-else-if="item.approvalName!=''" @click="item.show_approval_selector = true" class="zindexName">
-                    <WWOpenData type="userName" :openid="item.approvalName"></WWOpenData>
-                  </div>
-                  <div v-else-if="item.approvalName==''" @click="item.show_approval_selector = true" style=" position: absolute; top: 0; right: 0; left: 0; bottom: 0; z-index: 9;"></div>
-                </el-col>
-              </el-row>
-              <!-- <EmployeeSelector
-                :employee_not_select="item.approval_not_select"
-                :can_select_employee="true"
-                :can_select_dept="false"
-                :multi="false"
-                :employee_list="item.approval_employee_list"
-                :selected="item.approval_selected"
-                :visible.sync="item.show_approval_selector"
-                @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 label="审批人" :prop="'items.'+ index +'.reviewerInfo.name'" :rules="[{ required: true, message: '请选择审批人', trigger: 'blur' }]">
+              <div class="zindexName" @click="selectReviewer(index)">
+                <WWOpenData type="userName" v-if="item.reviewerInfo.id" :openid="item.reviewerInfo.name"></WWOpenData></span>
+                <span style="color: #DCDFE6;" v-else>请选择审批人</span>
+              </div>
             </el-form-item>
 
           </div>
@@ -158,27 +97,49 @@
       </div>
     </el-dialog>
 
-        <el-dialog
-          :title="'提交结果'"
-          :visible.sync="error_list_show"
-          :append-to-body='true'
-          @close='error_list_SX'
-          width="700px">
-          <el-table :data="error_list">
-            <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">
-                <span :style="'color:'+(scope.row.status==0?'#f70000':'#47bf47')">{{scope.row.status==0?'申请失败':'申请成功'}}</span>
-              </template>
-            </el-table-column>
-            <el-table-column prop="msg" label="备注信息"></el-table-column>
-          </el-table>
-        </el-dialog>
+    <!-- 录入对象 -->
+    <EmployeeSelector
+      :isChecKedAll="false"
+      :multi="false"
+      isRequired
+      :selected="employee_selected"
+      :visible.sync="isShowEmployee"
+      @confirm="employee_confirm"
+    />
+
+    <!-- 审批人 -->
+    <EmployeeSelector
+      :multi="false"
+      :isChecKedAll="false"
+      :is_filtration_creator="false"
+      :user_employee_list="true"
+      isRequired
+      :employee_list="approval_employee_list"
+      :selected="approval_selected"
+      :visible.sync="isShowApproval"
+      @confirm="approval_confirm"
+    />
+
+    <el-dialog
+      :title="'提交结果'"
+      :visible.sync="error_list_show"
+      :append-to-body='true'
+      width="700px">
+      <el-table :data="error_list">
+        <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">
+            <span :style="'color:'+(scope.row.status==0?'#f70000':'#47bf47')">{{scope.row.status==0?'申请失败':'申请成功'}}</span>
+          </template>
+        </el-table-column>
+        <el-table-column prop="msg" label="备注信息"></el-table-column>
+      </el-table>
+    </el-dialog>
   </div>
 </template>
 
@@ -187,7 +148,6 @@
   import EmployeeSelector from '@/views/common/EmployeeSelector'
   import uploadOss from "@/views/upload_oss/upload"
   import { getToken } from '@/utils/auth'
-  import { get_employee_map } from '@/api/login'
 
   export default {
     name: 'applicationIntegration',
@@ -221,31 +181,16 @@
         error_list_show:false,//错误信息弹窗
         Xtoken: { 'X-Token': getToken() },
         loading: false,
-        dialogData:{ 
+        dialogData:{
           items: [{
             rule_switch: true,
             rule_id: '',
             item_id: '',
             remark: '',
             event_time: moment().format('YYYY-MM-DD'),
-
-            // 审批人信息
-            reviewer_id: '',
-            approvalName: '',
-            approval_not_select: [],
-            approval_employee_id:0,//当前选中人的直属上级。0表示没有直属上级
-            approval_employee_list: [],//当前选中人的 上级
-            approval_selected: {dept: [],employee:[]},
-            show_approval_selector: false,
-
-            // 录入对象
-            employee_id: '',
-            employeeName: '',
-            employeeNames:[],
-            employee_not_select: [],
-            employee_selected: {dept: [],employee:[]},
-            show_employee_selector: false,
-
+            approval_employee_list:[],
+            employeeInfo:{},// 录入对象
+            reviewerInfo:{},// 审批人信息
             // 附件
             fileList: [],
             files: [],
@@ -260,139 +205,205 @@
         // 规则细则
         rule_item_list: [],
         flatteningIntegralRules: null,
-        user_info: null,
-        employee_map: JSON.parse(localStorage.getItem('SET_EMPLOYEE_MAP')),
+        user_info: this.$store.getters.user_info,
         point_types: JSON.parse(localStorage.getItem('SET_POINT_TYPES')),
         btn_loading: false,
-
+        itemIndex:0,
         user_list: [],
+
+        // 审批人
+        approval_employee_list:[],
+        approval_selected:{dept: [],employee:[]},
+        isShowApproval:false,
+
+        // 录入对象
+        employee_selected:{dept: [],employee:[]},
+        isShowEmployee:false,
       }
     },
     components: {EmployeeSelector,uploadOss},
-    watch:{},
-    mounted() {
-      get_employee_map().then(response => {
-        if (response.data.code == 1) {
-          const data = {}
-          for (const i in response.data.data.list) {
-            data[response.data.data.list[i].id] = response.data.data.list[i]
-          }
-          if (window.plus) {
-            plus.storage.setItem('SET_EMPLOYEE_MAP', JSON.stringify(data))
-          } else {
-            localStorage.setItem('SET_EMPLOYEE_MAP', JSON.stringify(data))
-          }
-          this.employee_map = data
+    watch:{
+      visible(val){
+        if(val){
+          // 初始化录入对象
+          this.dialogData.items[0].employeeInfo = this.user_info;
+          this.getUserInfo(this.user_info.id,(res)=>{
+             this.initializesReviewer(res.employee_detail.superior_list,this.itemIndex) //设置上级列表
+             this.dialogData.items[0].reviewerInfo={};
+             let superior_id= res.employee_detail.superior_id //选中对象的直属上级id
+             res.employee_detail.superior_list.forEach(e=>{
+               if(e.id==superior_id){
+                 this.dialogData.items[0].reviewerInfo=e;
+               }
+             })
+          })
         }
-      })
-
+      },
+    },
+    mounted() {
       this.getRuleItemData()
-      this.user_info = this.$store.getters.user_info
-      this.point_types = JSON.parse(localStorage.getItem('SET_POINT_TYPES'))
-      // 初始化录入对象
-      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.dialogData.items[0].employeeNames = this.dialogData.items[0].employee_selected.employee
-
-      this.initializesReviewer(this.user_info.employee_detail.superior_list,0,true)
     },
     methods: {
-      // 附件上传
-      beforeUpload(file){
-        const isJPG = /^image\/(jpeg|png|jpg)$/.test(file.type)
-        const isLt2M = file.size / 1024 / 1024 < 1
-        if (!isJPG) {
-          this.$message.error('上传头像图片只能是 JPG 格式!')
-        }
-        if (!isLt2M) {
-          this.$message.error('上传头像图片大小不能超过 2MB!')
+
+      // 选择录入对象
+      selectEmployee(index){
+        const item = this.dialogData.items[index];
+        if(item.employeeInfo.id){
+          this.employee_selected.employee=[item.employeeInfo]
         }
-        return isJPG && isLt2M   
+        this.isShowEmployee=true;
       },
-      onFilePreView(file) {
-        window.open(file.response.url,'_blank')
+      // 选择审批人
+      selectReviewer(index){
+        const item = this.dialogData.items[index];
+        if(!item.employeeInfo.id){
+          this.$message.error("请先选择录入对象")
+          return false
+        }
+        this.approval_employee_list=item.approval_employee_list;
+        if(item.reviewerInfo.id){
+          this.approval_selected.employee=[item.reviewerInfo]
+        }
+        this.isShowApproval=true;
       },
-      onFileRemove(file, fileList) {
-        this.dialogData.items[this.itemIndex].fileList = fileList
-        this.dialogData.items[this.itemIndex].files = []
-        fileList.forEach((element,index) => {
-          this.dialogData.items[this.itemIndex].files.push(element.url)
+
+      // 提交数据
+      save(){
+        let reviewer_infoid = false
+        let data = {items: []}
+        this.dialogData.items.forEach(element => {
+          let obj={
+            rule_id: element.rule_id || 0,
+            employee_id: element.employeeInfo.id || 0 ,
+            item_id: element.item_id || 0,
+            remark: element.remark,
+            event_time: element.event_time,
+            pt_id: element.pt_id,
+            reviewer_id: element.reviewerInfo.id || 0,
+            files: element.files
+          }
+          data.items.push(obj)
+          if(element.reviewerInfo.id == this.user_info.id) reviewer_infoid = true
         });
+        if(reviewer_infoid){
+          this.btn_loading = false
+          this.$message.warning('不能提交给自己审批,请直接对员工进行【积分奖扣】或更换审批人')
+          return
+        }
+        this.$http('post','/api/integral/review/apply',data,'v2').then(res => {
+            this.$refs['dialogData'].resetFields();
+            this.$message.success(res.data.msg)
+            this.error_list = res.data.data.list
+            this.error_list_show = true
+            this.dialogData.items[0].employee_id = this.user_info.id
+            this.closePopup()
+        }).finally(()=>{
+          this.btn_loading = false
+        })
       },
-      handleFilesSuccess(response, file, fileList) {
-        this.dialogData.items[this.itemIndex].fileList = fileList
-        this.dialogData.items[this.itemIndex].files = []
-        fileList.forEach((element,index) => {
-          this.dialogData.items[this.itemIndex].files.push(element.url)
+      // 选择审核人
+      approval_confirm(data){
+        const item = this.dialogData.items[this.itemIndex]
+        if(data.employee.length>0){
+          item.reviewerInfo = data.employee[0]
+        }else{
+          item.reviewerInfo={};
+        }
+      },
+      // 选择对象
+      employee_confirm(data){
+        const item = this.dialogData.items[this.itemIndex]; //对应申请
+        let employee=data.employee[0];
+        if(employee){
+          item.employeeInfo=employee;
+          this.getUserInfo(employee.id,(res)=>{
+             this.initializesReviewer(res.employee_detail.superior_list,this.itemIndex) //设置上级列表
+             item.reviewerInfo={};
+             let superior_id= res.employee_detail.superior_id //选中对象的直属上级id
+             res.employee_detail.superior_list.forEach(e=>{
+               if(e.id==superior_id){
+                 item.reviewerInfo=e;
+               }
+             })
+          })
+        }
+      },
+      //获取缓存起来的审批人
+      getUserInfo(id,func) {
+      		this.$http('get', '/api/employee/info', {id: id }).then(res =>{
+            func(res.data.data)
+          })
+      },
+      // 获取积分名称
+      get_point_name(id){
+        let name = ''
+        this.point_types.forEach(element => {
+          if (element.id == id) {
+            name = element.name
+          }
         });
+        return name
       },
-
-      // 审核人为空
-      approval_selected_null(){
-        this.$message.error('您没有审批人,请联系管理员');
+      // 初始化审核人列表
+      initializesReviewer(list,index){
+        const superior = list || this.user_info.employee_detail.superior_list
+        const num = index || 0
+        const item = this.dialogData.items[num]
+        item.approval_employee_list = [...superior]
+      },
+      // 当switch 改变了
+      switchChange(index,value){
+        this.itemIndex = index
+        const item = this.dialogData.items[this.itemIndex]
+        if (!value) {
+          item.rule_id = ""
+          item.item_id = ""
+          item.rule_item_list_value = ""
+          item.rule_item_details = {range_type: ''}
+        }else{
+          item.rule_id = ""
+          item.rule_list_value = ""
+        }
       },
       // 获取规则信息
       getRuleData(){
-        let self = this
         let data = {
           cycle_type: '1'
         }
         this.integralType === 1?data.pt_id = '1':this.integralType === 2?data.pt_id = '2':data.pt_id = '3'
         this.$http('get','/api/integral/rule/trees',data).then(res => {
-					if (res.data.code == 1) {
-            const resultData = res.data.data
-            self.rule_list = resultData.rule_tree
-          }
-          self.rule_list = self.getTreeData(self.rule_list)
-				}).catch(e => {self.$message.error(e.data.msg)})
+          const resultData = res.data.data
+          this.rule_list = this.getTreeData(resultData.rule_tree)
+      	})
       },
       // 获取规则细则
       getRuleItemData(){
-        let self = this
         let data = {cycle_type: '1'}
-        self.loading = true
+        this.loading = true
         this.$http('get','/api/integral/rule/trees',data,'v2').then(res => {
-					if (res.data.code == 1) {
             const resultData = res.data.data
-            self.rule_item_list = resultData.tree
-            // self.flatteningIntegralRules = self.getItemDetail(self.rule_item_list)//
-          }
-        }).catch(e => {self.$message.error(e.data.msg)})
-        .finally(()=>{
-          self.loading = false
+            this.rule_item_list = resultData.tree
+        }).finally(()=>{
+          this.loading = false
         })
       },
+      visibleChange(val,index){
+        if(val){
+          this.itemIndex=index
+        }
+      },
       // 规则细则变化关闭down
       ruleItemChange(value){
         let item = this.dialogData.items[this.itemIndex]
         let ruleItemDetail = null
         ruleItemDetail = this.$refs["ruleItem"][this.itemIndex].getCheckedNodes()[0].data
-        console.log(ruleItemDetail)
         if(ruleItemDetail){
           item.rule_item_details = ruleItemDetail
           item.remark = ruleItemDetail.name
           item.rule_id = ruleItemDetail.pid
           item.item_id = value[value.length - 1]
         }
-        this.$refs.ruleItem.dropDownVisible = false; 
-        // let item = this.dialogData.items[this.itemIndex]
-        // let ruleItemDetail = {}
-        // // this.flatteningIntegralRules.forEach(element => {
-        // //   if (element.id == value[value.length - 1]) {
-        // //     ruleItemDetail = {...element}
-        // //   }
-        // // })
-        
-        // console.log(this.$refs["ruleItem"][this.itemIndex].getCheckedNodes()[0].data)
-        // ruleItemDetail = this.$refs["ruleItem"][this.itemIndex].getCheckedNodes()[0].data
-        // if(ruleItemDetail){
-        //   item.rule_item_details = ruleItemDetail
-        //   item.remark = ruleItemDetail.name
-        //   item.rule_id = ruleItemDetail.pid
-        //   item.item_id = value[value.length - 1]
-        // }
-        // this.$refs.ruleItem.dropDownVisible = false; 
+        this.$refs.ruleItem.dropDownVisible = false;
       },
       // 规则分类变化关闭dewn
       ruleChange(value){
@@ -412,19 +423,36 @@
         }
         return data;
       },
-
-      getItemDetail(arr) {//此递归暂不用,规则多的情况下会出问题
-        let result = []
-        for (const item of arr) {
-          var res = JSON.parse(JSON.stringify(item)) // 先克隆一份数据作为第一层级的填充
-          delete res['child']
-          result.push(res)
-          if (item.child instanceof Array && item.child.length > 0) { // 如果当前child为数组并且长度大于0,才可进入getItemDetail()方法
-            result = result.concat(this.getItemDetail(item.child))
-          }
+      // 附件上传
+      beforeUpload(file){
+        const isJPG = /^image\/(jpeg|png|jpg)$/.test(file.type)
+        const isLt2M = file.size / 1024 / 1024 < 5
+        if (!isJPG) {
+          this.$message.error('上传图片只能是 jpeg|png|jpg 格式!')
         }
-        return result
+        if (!isLt2M) {
+          this.$message.error('上传图片大小不能超过 5MB!')
+        }
+        return isJPG && isLt2M
       },
+      onFilePreView(file) {
+        window.open(file.response.url,'_blank')
+      },
+      onFileRemove(file, fileList) {
+        this.dialogData.items[this.itemIndex].fileList = fileList
+        this.dialogData.items[this.itemIndex].files = []
+        fileList.forEach((element,index) => {
+          this.dialogData.items[this.itemIndex].files.push(element.url)
+        });
+      },
+      handleFilesSuccess(response, file, fileList) {
+        this.dialogData.items[this.itemIndex].fileList = fileList
+        this.dialogData.items[this.itemIndex].files = []
+        fileList.forEach((element,index) => {
+          this.dialogData.items[this.itemIndex].files.push(element.url)
+        });
+      },
+
       // 加一条
       addItem(){
         this.dialogData.items.push({
@@ -433,24 +461,9 @@
           item_id: '',
           remark: '',
           event_time: moment().format('YYYY-MM-DD'),
-
-          // 审批人信息
-          reviewer_id: '',
-          approvalName: '',
-          approval_not_select: [],
-          approval_employee_id:0,//当前选中人的直属上级。0表示没有直属上级
-          approval_employee_list: this.user_info.employee_detail.superior_list,
-          approval_selected: {dept: [],employee:[]},
-          show_approval_selector: false,
-
-          // 录入对象
-          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,
-
+          employeeInfo:{},// 录入对象
+          reviewerInfo:{},// 审批人信息
+          approval_employee_list:[],
           // 附件
           fileList: [],
           files: [],
@@ -473,11 +486,10 @@
             message: '删除成功!'
           });
         })
-        
+
       },
       closeDialog(formName){
         this.$refs[formName].resetFields();
-        // this.$emit('update:visible', false)
         this.closePopup()
       },
       delItem(index){
@@ -501,138 +513,6 @@
           }
         });
       },
-      // 提交数据
-      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();
-            // self.$emit('update:visible', false)
-            self.$message.success(res.data.msg)
-            this.error_list = res.data.data.list
-            this.error_list_show = true
-            this.dialogData.items[0].employee_id = this.user_info.id
-            this.closePopup()
-          }else{
-            self.$message.error(res.data.msg)
-          }
-          self.btn_loading = false
-        }).catch(e => {self.$message.close()})
-        .finally(()=>{
-        })
-      },
-      //关闭错误信息时的回调
-      error_list_SX(){
-        // this.loadBaseData();
-        // this.loadEmployeeList()
-      },
-      // 当switch 改变了
-      switchChange(index,value){
-        this.itemIndex = index
-        const item = this.dialogData.items[this.itemIndex]
-        if (!value) {
-          item.rule_id = ""
-          item.item_id = ""
-          item.rule_item_list_value = ""
-          item.rule_item_details = {range_type: ''}
-        }else{
-          item.rule_id = ""
-          item.rule_list_value = ""
-        }
-      },
-      // 初始化审核人
-      initializesReviewer(list,index,bool){
-        const superior = list || this.user_info.employee_detail.superior_list
-        const num = index || 0
-        const item = this.dialogData.items[num]
-        item.approval_employee_list = [...superior]
-        // if (superior.length !== 0) {
-        //   if(bool){
-        //     item.approval_employee_id = this.user_info.employee_detail.superior_id//直属上级(这里是第一个,默认为当前登录人)
-        //   }
-        //   if(item.approval_employee_id != 0){//判断有无直属上级
-        //     for(let a in item.approval_employee_list){
-        //       if(item.approval_employee_id == item.approval_employee_list[a].id){
-        //         item.approval_employee_list[a].direct_Supervisor = true//一个字段,是直属上级的字段,为true
-        //       }
-        //     }
-        //     for(let i in superior){
-        //         if(item.approval_employee_id == superior[i].id){
-        //           item.approval_selected.employee = [{id: superior[i].id ,img_url: superior[i].img_url,name: superior[i].name}]
-        //           item.reviewer_id = superior[i].id
-        //           item.approvalName = superior[i].name//审批人
-        //         }
-        //     }
-        //   }else{
-        //     // 拿取列表最后一个的数据,没有筛选
-        //     item.approval_selected.employee = [{id: superior[superior.length - 1].id ,img_url: superior[superior.length - 1].img_url,name: superior[superior.length - 1].name}]
-        //     item.reviewer_id = superior[superior.length - 1].id//审批人id
-        //     item.approvalName = superior[superior.length - 1].name//审批人name
-        //   }
-          
-        // }
-      },
-      // 选择审核人
-      approval_confirm(data){
-        const item = this.dialogData.items[this.itemIndex]
-        item.approvalName = ''
-        item.approval_selected.employee = []
-        item.reviewer_id = ''
-        if (data.employee !== null && data.employee.length != 0) {
-          item.approvalName = data.employee[0].name
-          item.approval_selected.employee = [{name: data.employee[0].name,id:data.employee[0].id,img_url: data.employee[0].img_url}]
-          item.reviewer_id = data.employee[0].id
-        }
-      },
-      // 选择对象
-      employee_confirm(data){
-        const item = this.dialogData.items[this.itemIndex]
-        if (data.employee !== null && data.employee.length != 0) {
-          for (const key in this.employee_map) {
-            if (this.employee_map.hasOwnProperty(key)) {
-              const element = this.employee_map[key];//循环人员列表
-              if(element.id == data.employee[0].id){//通过选中的id拿到当前人员信息
-                item.approval_employee_id = element.superior_id//选中对象的直属上级id
-                // item.approval_employee_list = element.superior_list//选中对象的上级列表
-                this.initializesReviewer(element.superior_list,this.itemIndex)
-              }
-            }
-          }
-        }
-        item.employeeName = ''
-        item.employeeNames = []
-        item.employee_selected.employee = []
-        item.employee_id = ''
-        if (data.employee !== null && data.employee.length != 0) {
-          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
-        }
-        
-      },
-      // 获取积分名称
-      get_point_name(id){
-        let name = ''
-        this.point_types.forEach(element => {
-          if (element.id == id) {
-            name = element.name
-          }
-        });
-        return name
-      },
-
       // 关闭弹窗
       closePopup(){
         //关闭重置窗口状态
@@ -642,24 +522,9 @@
             item_id: '',
             remark: '',
             event_time: moment().format('YYYY-MM-DD'),
-
-            // 审批人信息
-            reviewer_id: '',
-            approvalName: '',
-            approval_not_select: [],
-            approval_employee_id:0,//当前选中人的直属上级。0表示没有直属上级
-            approval_employee_list: [],//当前选中人的 上级
-            approval_selected: {dept: [],employee:[]},
-            show_approval_selector: false,
-
-            // 录入对象
-            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,
-
+            employeeInfo:{},// 录入对象
+            reviewerInfo:{},// 审批人信息
+            approval_employee_list:[],
             // 附件
             fileList: [],
             files: [],
@@ -697,7 +562,6 @@
      border-radius:3px;
      padding-left:15px;
      overflow: hidden;
+     cursor: pointer;
   }
-  // ruleClass
-  // itemClass
-</style>
+</style>

+ 15 - 26
src/views/common/bonusPointsPopup.vue

@@ -22,15 +22,6 @@
                 <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
-              :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">
@@ -59,21 +50,10 @@
             </el-form-item>
 
             <el-form-item label="选择规则" v-show="item.rule_switch" :prop="'items.'+ index +'.item_id'" :rules="[item.rule_switch?{ required: true, message: '请选择规则', trigger: 'blur' }:{}]">
-
               <div class="inputBox" @click="openIsshowItem(item)">
                 <span v-if="item.item_id">已选择</span>
                 <span v-else style="color: #909399;">请选择</span>
               </div>
-
-<!--              <el-cascader
-              v-model="item.rule_item_list_value"
-              ref="ruleItem"
-              :popper-class="'itemClass'"
-              :options="rule_item_list"
-              @change="ruleItemChange"
-              :show-all-levels="false"
-              :props="{ children: 'child', label: 'name', value: 'id'}"
-              ></el-cascader> -->
             </el-form-item>
 
             <el-form-item>
@@ -94,10 +74,10 @@
               </el-row>
             </el-form-item>
 
-            <el-form-item label="事件内容" :prop="'items.'+ index +'.remark'" :rules="[{ required: true, message: '请输入事件内容', trigger: 'blur' },{ min: 3, max: 100, message: '长度在 3 到 100 个字符', trigger: 'blur' }]">
+            <el-form-item label="事件内容" :prop="'items.'+ index +'.remark'" :rules="[{ required: true, message: '请输入事件内容', trigger: 'blur' },{ min: 3, max: 300, message: '长度在 3 到 300 个字符', trigger: 'blur' }]">
               <el-row>
                 <el-col :span="18">
-                  <el-input type="textarea" rows="6" placeholder="请输入事件内容(限100字)" style="width: 100%;" v-model="item.remark"></el-input>
+                  <el-input type="textarea" rows="6" placeholder="请输入事件内容(限300字)" style="width: 100%;" v-model="item.remark"></el-input>
                 </el-col>
               </el-row>
             </el-form-item>
@@ -148,7 +128,7 @@
             <div>如需录入多条,请点击“增加一条”</div>
           </el-form-item>
           <el-form-item style="margin-bottom: 0;">
-            <el-button type="primary" plain @click="addItem">+ 增加一条</el-button>
+            <el-button type="primary" plain @click="addItem" v-if="dialogData.items.length<10">+ 增加一条</el-button>
           </el-form-item>
           <el-form-item style="text-align: right; margin-bottom: 0;">
             <el-button @click="closeDialog('dialogData')" :disabled="btn_loading">取 消</el-button>
@@ -180,6 +160,15 @@
       </el-table>
     </el-dialog>
     <SelectRule :visible.sync="isShowRule" @confirm="ruleConfirm" :ptId="integralType" :selectItems="selectItem"></SelectRule>
+    <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"
+    />
   </div>
 </template>
 
@@ -331,12 +320,12 @@
       // 附件上传
       beforeUpload(file){
         const isJPG = /^image\/(jpeg|png|jpg)$/.test(file.type)
-        const isLt2M = file.size / 1024 / 1024 < 1
+        const isLt2M = file.size / 1024 / 1024 < 5
         if (!isJPG) {
-          this.$message.error('上传头像图片只能是 JPG 格式!')
+          this.$message.error('上传图片只能是 jpeg|png|jpg 格式!')
         }
         if (!isLt2M) {
-          this.$message.error('上传头像图片大小不能超过 2MB!')
+          this.$message.error('上传图片大小不能超过 5MB!')
         }
         return isJPG && isLt2M
       },

+ 0 - 240
src/views/common/edit_team_item.vue

@@ -1,240 +0,0 @@
-<template>
-  <div>
-    <el-dialog
-      append-to-body
-      :title="title"
-      top="40px"
-      width="620px"
-      :visible.sync="show"
-    >
-      <div style="padding:0 40px;">
-        <el-form :model="team_info">
-          <el-steps :active="setTeamActive" finish-status="success" simple>
-            <el-step title="团队名称"></el-step>
-            <el-step title="选择成员"></el-step>
-            <el-step title="设置队长"></el-step>
-          </el-steps>
-          <el-form-item
-            v-show="setTeamActive==0"
-            label="队名"
-            prop="name"
-            label-width="55px"
-            style="padding:50px 100px"
-          >
-            <el-input v-if="team_info != null" v-model="team_info.name" auto-complete="off"></el-input>
-          </el-form-item
-            v-show="setTeamActive==0">
-
-          <el-form-item
-            prop="name"
-            v-show="setTeamActive==1"
-            style="padding:50px 0px"
-          >
-            <EmployeeSelectorCell :employee_not_select.sync="employee_not_select" title="选择队员" v-model="member_list" :max="20"></EmployeeSelectorCell>
-          </el-form-item>
-
-
-          <el-form-item
-            prop="name"
-            v-show="setTeamActive==2"
-            style="padding:50px 0px"
-          >
-            <EmployeeSelectorCell v-if="member_list.length > 0" title="选择队长" v-model="leader_list" :employee_list.sync="member_list" :multi="false" :max="1"></EmployeeSelectorCell>
-
-          </el-form-item>
-
-        </el-form>
-      </div>
-
-      <div
-        slot="footer"
-        class="dialog-footer"
-        style="text-align:center;"
-        v-show="setTeamActive!=2"
-      >
-        <el-button @click="dialogAddteamVisible = false">取 消</el-button>
-        <el-button @click="setTeamActive--" v-show="setTeamActive>0">上一步</el-button>
-        <el-button type="primary" @click="setTeamNext" v-show="setTeamActive!=2">下一步</el-button>
-      </div>
-
-      <div
-        slot="footer"
-        class="dialog-footer"
-        style="text-align:center;"
-        v-show="setTeamActive==2"
-      >
-        <el-button @click="show = false">取 消</el-button>
-        <el-button @click="setTeamActive--" v-show="setTeamActive==2">上一步</el-button>
-
-        <el-button type="primary" @click="save">确 定</el-button>
-      </div>
-    </el-dialog>
-
-    <el-row :gutter="20">
-      <el-col :span="span" v-for="(item, index) in team_list" :key="index">
-        <el-card class="box-card" shadow="hover" style="margin-top:24px;">
-          <div slot="header" class="clearfix">
-            <span>{{item.name}}</span>
-            <el-button style="float: right; padding: 3px 0" type="text" @click="add(index, item)">修改</el-button>
-            <el-button style="float: right; padding: 3px 0" type="text" @click="del(index, item)">删除</el-button>
-          </div>
-          <div class="member_list_box">
-            <el-tag type="primary" size="small" v-if="item.leader > 0 && employee_map[item.leader]">{{employee_map[item.leader].name}}</el-tag>
-            <el-tag type="primary" plain size="small" :key="employee_id" v-for="employee_id in item.member" v-if="employee_id > 0 && employee_map[employee_id]">{{employee_map[employee_id].name}}</el-tag>
-          </div>
-        </el-card>
-      </el-col>
-    </el-row>
-
-
-
-    <div style="padding:24px; text-align: center;">
-      <el-button type="primary" @click="add(-1, null)">创建团队</el-button>
-    </div>
-
-  </div>
-</template>
-
-<script>
-  import team_item from '@/views/common/team_item'
-  import EmployeeSelectorCell from '@/views/common/EmployeeSelectorCard'
-  export default {
-    components: {EmployeeSelectorCell},
-    name: "team_item",
-    model: {
-      prop: 'list',
-      event: 'value'
-    },
-    props: {
-      span: {
-        type: Number,
-        default: 24
-      },
-      list: {
-        type: Array,
-        default: () => {
-          return []
-        }
-      }
-    },
-    data(){
-      let team_list = this.list
-      return {
-        setTeamActive: 0,
-        employee_not_select: [],
-        bar_height: 0,
-        title: '创建团队',
-        show: false,
-        team_list: team_list,
-        team_info: null,
-        member_list: [],
-        leader_list: [],
-        index: -1,
-        employee_map: this.$store.getters.employee_map
-      }
-    },
-    created(){
-      if(window.plus){
-        this.bar_height = window.plus.navigator.getStatusbarHeight();
-      }
-    },
-    methods:{
-
-      setTeamNext() {
-        if(this.team_info.name == ''){
-          this.$message({
-            message: "团队名称不能为空",
-            type: "warning"
-          })
-          return false
-        }
-        this.setTeamActive ++
-      },
-
-      set_employee_not_select(member){
-        this.employee_not_select = []
-        for(let i in this.team_list){
-          for(let j in this.team_list[i].member){
-            if(member.indexOf(this.team_list[i].member[j]) < 0){
-              this.employee_not_select.push(this.team_list[i].member[j])
-            }
-          }
-        }
-      },
-      del(index){
-        this.$dialog.confirm({
-          title: '删除团队',
-          message: '确定要删除当前团队吗?'
-        }).then(() => {
-          this.team_list.splice(index, 1)
-          this.show = false
-        })
-      },
-      save(){
-        if(this.team_info.name == ''){
-          this.$toast('请输入队名')
-          return false
-        }
-        if(this.member_list.length == 0){
-          this.$toast('请选择队员')
-          return false
-        }
-        if(this.leader_list.length == 0){
-          this.$toast('请选择队长')
-          return false
-        }
-        let member = []
-        for(let i in this.member_list){
-          member.push(this.member_list[i].id)
-        }
-        let leader = this.leader_list[0].id
-        this.team_info.member = member
-        this.team_info.leader = leader
-        if(this.index >= 0){
-          this.team_list[this.index] = this.team_info
-        }else{
-          this.team_list.push(this.team_info)
-        }
-        this.show = false
-      },
-      add(index, data){
-        this.setTeamActive = 0
-        this.index = index
-        if(index >= 0){
-          this.set_employee_not_select(data.member)
-          this.title = '修改团队'
-        }else{
-          this.set_employee_not_select([])
-          this.title = '创建团队'
-        }
-        if(data == null){
-          this.team_info = {
-            name: '',
-            member: [],
-            leader: 0
-          }
-        }else{
-          this.team_info = JSON.parse(JSON.stringify(data))
-        }
-        this.member_list = []
-        this.leader_list = []
-        for(let i in this.team_info.member){
-          this.member_list.push(this.employee_map[this.team_info.member[i]])
-        }
-        if(this.team_info.leader > 0 && this.employee_map[this.team_info.leader]){
-          this.leader_list.push(this.employee_map[this.team_info.leader])
-        }
-        this.show = true
-      },
-      getContainer() {
-        return document.body
-      },
-    }
-  }
-</script>
-
-<style scoped>
-  .member_list_box .van-tag{font-size:0.2rem; margin-left:0.05rem;}
-  .member_list_box .van-tag:first-child{margin-left:0rem;}
-  .add-btn{color:#1989fa;}
-</style>

+ 3 - 2
src/views/common/rewardTask.vue

@@ -78,6 +78,7 @@
               format="yyyy-MM-dd HH:mm"
               value-format="yyyy-MM-dd HH:mm"
               default-time="18:00"
+              :clearable="false"
               >
             </el-date-picker>
           </el-form-item>
@@ -115,8 +116,8 @@
             </el-select>
           </el-form-item>
 
-          <el-form-item label="任务备注" prop="task_remark" :rules="[{ max: 100 ,message: '长度不能超过 100 个字', trigger: 'blur' }]">
-            <el-input type="textarea" :rows="5" v-model="formData.task_remark" placeholder="请输入任务内容(限100字)"></el-input>
+          <el-form-item label="任务备注" prop="task_remark" :rules="[{ max: 300 ,message: '长度不能超过 300 个字', trigger: 'blur' }]">
+            <el-input type="textarea" :rows="5" v-model="formData.task_remark" placeholder="请输入任务内容(限300字)"></el-input>
           </el-form-item>
           <el-form-item label="重复周期" prop="task_cycle">
             <el-select v-model="formData.task_cycle" placeholder="请选择重复周期">

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

@@ -78,6 +78,7 @@
               format="yyyy-MM-dd HH:mm"
               value-format="yyyy-MM-dd HH:mm"
               default-time="18:00"
+              :clearable="false"
               >
             </el-date-picker>
           </el-form-item>
@@ -115,8 +116,8 @@
             </el-select>
           </el-form-item>
 
-          <el-form-item label="任务描述" prop="task_remark" :rules="[{ max: 100 ,message: '长度不能超过 100 个字', trigger: 'blur' }]">
-            <el-input type="textarea" :rows="5" v-model="formData.task_remark" placeholder="请输入任务内容(限100字)"></el-input>
+          <el-form-item label="任务描述" prop="task_remark" :rules="[{ max: 300 ,message: '长度不能超过 300 个字', trigger: 'blur' }]">
+            <el-input type="textarea" :rows="5" v-model="formData.task_remark" placeholder="请输入任务内容(限300字)"></el-input>
           </el-form-item>
           <!-- <el-form-item label="重复周期" prop="task_cycle">
             <el-select v-model="formData.task_cycle" placeholder="请选择重复周期">

+ 11 - 30
src/views/common/temporaryTask.vue

@@ -29,16 +29,6 @@
                 </div>
               </el-col>
             </el-row>
-            <!-- <EmployeeSelector
-              :employee_not_select="approval_not_select"
-              :employee_list="employee_list"
-              :isChecKedAll="true"
-              :can_select_employee="true"
-              :can_select_dept="false"
-              :multi="true"
-              :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: 'change' }]">
             <el-row>
@@ -50,22 +40,12 @@
                 </div>
               </el-col>
             </el-row>
-            <!-- <EmployeeSelector
-              :employee_not_select="reviewer_not_select"
-              :employee_list="reviewer_employee_list"
-              :can_select_employee="true"
-              :can_select_dept="false"
-              :multi="false"
-              :use_employee_list="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' }]">
             <el-radio-group v-model="formData.pt_id" >
               <el-radio v-for="(item,index) in point_types" :key="index" v-show="item.code !== 'JX'" :label="item.id">{{item.name}}</el-radio>
-            </el-radio-group>            
+            </el-radio-group>
           </el-form-item>
 
           <el-form-item label="截止日期" prop="expire_time" v-if="formData.task_cycle == 0" :rules="[{ required: true, message: '请选择截止日期', trigger: 'blur' }]">
@@ -76,6 +56,7 @@
               format="yyyy-MM-dd HH:mm"
               value-format="yyyy-MM-dd HH:mm"
               default-time="18:00"
+              :clearable="false"
               >
             </el-date-picker>
           </el-form-item>
@@ -114,7 +95,7 @@
           </el-form-item>
 
           <el-form-item label="任务备注" prop="task_remark" :rules="[{ max: 300 ,message: '长度不能超过 300 个字', trigger: 'blur' }]">
-            <el-input type="textarea" :rows="5" v-model="formData.task_remark" placeholder="请输入任务内容(限300字)"></el-input>
+            <el-input type="textarea" :rows="5" v-model="formData.task_remark" show-word-limit  placeholder="请输入任务内容(限300字)"></el-input>
           </el-form-item>
           <el-form-item label="重复周期" prop="task_cycle">
             <el-select v-model="formData.task_cycle" placeholder="请选择重复周期">
@@ -125,18 +106,18 @@
           <div style="margin-left: 80px; margin-bottom: 8px;">以天为单位,每逾期一天扣分</div>
           <el-form-item label="逾期扣分" prop="timeout_deduction_point">
             <el-input v-model="formData.timeout_deduction_point" oninput="value=value.replace(/[^\d]/g,'')" placeholder="请输入数值"></el-input>
-          </el-form-item> 
+          </el-form-item>
 
           <el-form-item>
             <el-button type="primary" @click="sub('formData')">提交</el-button>
             <el-button @click="resetForm('formData')">取消</el-button>
           </el-form-item>
-          
+
 
         </el-form>
       </div>
     </el-dialog>
-    
+
     <!-- 执行人 -->
     <EmployeeSelector
       :employee_list="employee_list"
@@ -212,9 +193,9 @@
 
         // 重复周期
         task_cycle_arr: [
-          {value:  0, name: '不重复'}, 
-          {value:  1, name: '每天重复'}, 
-          {value:  2, name: '每周重复'}, 
+          {value:  0, name: '不重复'},
+          {value:  1, name: '每天重复'},
+          {value:  2, name: '每周重复'},
           {value:  3, name: '每月重复'}
         ],
         // 周期时间
@@ -257,7 +238,7 @@
         // /api/integral/work/publish
         // 选择重复任务之后
         // /api/integral/schedule/publish/work
-        
+
         let self = this
         let data = JSON.parse(JSON.stringify(self.formData))
         if(data.task_cycle == 0){
@@ -337,4 +318,4 @@
      padding-left:15px;
      overflow: hidden;
   }
-</style>
+</style>

+ 1 - 21
src/views/common/temporaryTaskAmend.vue

@@ -27,16 +27,6 @@
                 </div>
               </el-col>
             </el-row>
-            <!-- <EmployeeSelector
-              :employee_not_select="approval_not_select"
-              :employee_list="employee_list"
-              :isChecKedAll="false"
-              :can_select_employee="true"
-              :can_select_dept="false"
-              :multi="false"
-              :selected="approval_selected"
-              :visible.sync="show_approval_selector"
-              @confirm="approval_confirm"/> -->
             <EmployeeSelector
               :employee_list="employee_list"
 			        :user_employee_list="true"
@@ -57,16 +47,6 @@
                 </div>
               </el-col>
             </el-row>
-            <!-- <EmployeeSelector
-              :employee_not_select="reviewer_not_select"
-              :employee_list="reviewer_employee_list"
-              :can_select_employee="true"
-              :can_select_dept="false"
-              :multi="false"
-              :use_employee_list="true"
-              :selected="reviewer_selected"
-              :visible.sync="show_reviewer_selector"
-              @confirm="reviewer_confirm"/> -->
             <EmployeeSelector
               :multi="false"
 			        :isChecKedAll="false"
@@ -92,6 +72,7 @@
               format="yyyy-MM-dd HH:mm"
               value-format="yyyy-MM-dd HH:mm"
               default-time="18:00"
+              :clearable="false"
               >
             </el-date-picker>
           </el-form-item>
@@ -158,7 +139,6 @@
 <script>
   import moment from 'moment'
   import EmployeeSelector from '@/views/common/EmployeeSelector'
-  // import EmployeeSelector from '@/views/common/EmployeeSelectorCopy'
   export default {
     name: 'temporaryTask',
     props:{

+ 203 - 151
src/views/integral/EmployeeTable.vue

@@ -2,7 +2,7 @@
   <div>
     <el-alert class="diy-tip" title="温馨提示:" :closable="false"  type="success" description show-icon>
       当前组织架构成员通过微信通讯录同步,员工开启积分管理后才能正式启用并进入“功道云积分制”,如果您的微信通讯录有变动,点击
-      <span class="blue" style="margin-left: 10px;cursor: pointer;" @click="tb()" v-loading="tbLoading">
+      <span class="blue" style="margin-left: 10px;cursor: pointer;" @click="tb()">
         <i class="el-icon-refresh"></i>
         立即同步
       </span>
@@ -30,7 +30,6 @@
               >
                 <div
                   content="tree"
-                  v-show="treedata.length != 0"
                   class="custom-tree-node"
                   slot-scope="{ node, data }"
                   style="font-size: 14px;color: #606266; width:100%; text-align: left;"
@@ -45,7 +44,7 @@
       </el-col>
       <el-col :span="18" class="RuleRight">
         <el-button @click="participation()" :loading="enable_loading" size="medium" type="primary" style="margin-right: 10px;">批量启用积分管理</el-button>
-        <el-input placeholder="输入同事姓名" size="medium" style="width: 230px;" v-model="keywords" clearable @input="searchUser()"></el-input>
+        <el-input placeholder="输入同事姓名" maxlength="20" size="medium" style="width: 230px;" v-model="keywords" clearable @input="searchUser()"></el-input>
         <div style="color: #303133;font-size: 14px;padding:10px 0 0 0; line-height: 32px; overflow: hidden;"></div>
         <div class="list_box">
           <div style="margin-bottom:10px;margin-top:30px;" class="inline-block-btn-list"><div class="gap-right-8 fr" style="display:inline-block; width:180px;"></div></div>
@@ -83,7 +82,6 @@
                     value-format="timestamp"
                     placeholder="选择日期时间"
                     :clearable="false"
-                    :picker-options="assistantOptions"
                   ></el-date-picker>
                 </div>
               </template>
@@ -109,10 +107,16 @@
                 <div :class="[scope.row.is_official == 1 ? 'switch-box' : '']" @click="changeIs(scope.row.is_official, scope.row.id)"><div class="switch"></div></div>
               </template>
             </el-table-column>
+            <el-table-column prop="id" label="操作" >
+              <template slot-scope="scope">
+                <el-link type="primary" :disabled="scope.row.is_creator == 1 || scope.row.is_official == 0"  @click="moreMessage(scope.row.id)" :underline="false">更多信息</el-link>
+              </template>
+            </el-table-column>
             <template slot="empty">
               <noData></noData>
             </template>
           </el-table>
+
           <el-pagination
             @size-change="handleSizeChange"
             @current-change="handleCurrentChange"
@@ -126,99 +130,96 @@
       </el-col>
     </el-row>
 
-    <el-dialog title="设置是否参与排名" :visible.sync="dialogVisible" top="30vh" width="520px" :before-close="handleClose">
-      <div style="margin-left:20px;">
-        <el-radio v-for="(item, index) in radioLi" :key="index" v-model="radio" :label="item.id">
-          <span style="font-size:17px;">{{ item.name }}</span>
-          <p style="font-size:14px;margin:8px 0 0 24px;">{{ item.kam }}</p>
-        </el-radio>
-      </div>
-      <span slot="footer" class="dialog-footer">
-        <el-button @click="dialogVisible = false">取 消</el-button>
-        <el-button type="primary" @click="setRanking" :disabled="rangLoad">确 定</el-button>
-      </span>
+
+
+    <el-dialog  :close-on-click-modal="false" ref="EditInformation_list" title="员工详情" width="500px" :visible.sync="diaTableVisible">
+    	<div style="padding-right:20px;">
+    		<el-form ref="detailForm" v-loading="show_loading">
+    			<el-form-item label="管理上级" prop="name" :label-width="'100px'">
+            <div class="input-box" @click="setSuperior()">
+              <div v-if="superior_list.length==0" class="fontColorT">暂无管理上级</div>
+              <div v-else>
+                <span v-for="(item,index) in superior_list">
+                  <WWOpenData type="userName" :openid="item.name"></WWOpenData>,
+                </span>
+              </div>
+            </div>
+    			</el-form-item>
+    			<el-form-item label="直属上级" prop="name" :label-width="'100px'">
+    				<div class="input-box" @click="dirSuperior()">
+              <div v-if="dirSupervisor.id"><WWOpenData type="userName" :openid="dirSupervisor.name"></WWOpenData></div>
+              <div v-else class="fontColorT">暂无直属上级</div>
+            </div>
+    			</el-form-item>
+    		</el-form>
+    	</div>
     </el-dialog>
+
+    <!-- 设置管理上级 -->
+
+<!--    :employee_list="manageListData"
+    :user_employee_list="true" -->
+
+    <EmployeeSelector
+      title="管理上级"
+      :visible.sync="manageScope_show"
+      :is_filtration_creator="false"
+      :multi="true"
+      :selected="selected_manage"
+      @confirm="manage_confirm"
+    />
+    <!-- 直属上级 -->
+    <EmployeeSelector
+      title="直属上级"
+      :visible.sync="scope_loading"
+      :is_filtration_creator="false"
+      :isChecKedAll="false"
+      :multi="false"
+      :employee_list="superior_list"
+      :user_employee_list="true"
+      :selected="selected_manage"
+      @confirm="dirSup_confirm"
+    />
   </div>
 </template>
 <script>
 import noData from '@/components/noData';
+import EmployeeSelector from '@/views/common/EmployeeSelector'
 import { _debounce } from '@/api/auth';
 export default {
-  components: {
-    noData
-  },
-
+  components: {noData,EmployeeSelector},
   data() {
     return {
-      entryData: {
-        userId: 0,
-        accedence_time: ''
-      },
       is: 1,
       no: 0,
       page: 1,
       perPage: 10,
       total: 0,
       info: {}, //公司信息
-      tips_show: true,
       bmList: [],
       userList: [],
-      class_type: '',
-      treedata: [1],
-      tableData: [],
       keywords: '',
       dept_id: 0,
-
       tableToading: false,
-      tbLoading: false,
       selectIds: [],
       enable_loading: false,
       visible: false,
-
       ruleDeprt: false,
-      dialogVisible: false,
-      rankingtakePartInId: '',
-      radio: '1',
 
-      rangLoad: false,
-      radioLi: [{ id: '1', name: '参与排名', kam: '在排名中展示此人' }, { id: '0', name: '不参与排名', kam: '排名不展示此人(自定义排名除外)' }],
-      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);
-        //     }
-        //   }
-        // ]
-      }
+      // 设置上级
+      newId: 0,
+      diaTableVisible: false,
+      show_loading:false,
+      manageScope_show: false, //管理上级
+      scope_loading: false, //直接上级
+
+      userInfo: {},
+      superior_list: [], //用户上级
+      dirSupervisor:{}, //用户直属上级
+      employeeAll:[],//启用的人员列表
+      manageListData: [],//公司管理员列表
+      employeeList: [],
+      selected_manage: { employee: [], dept: [] },
     };
   },
   watch: {
@@ -226,24 +227,90 @@ export default {
       this.getEmployee();
     }
   },
-  mounted() {
-    this.$nextTick(function() {
-      if (localStorage.getItem('rule')) {
-        this.tips_show = false;
-      } else {
-        this.tips_show = true;
-      }
-    });
-  },
   created() {
     this.getInfo();
-    // this.getDepartment();
     this.getEmployee();
   },
-
+  mounted() {
+    this.filtration();
+    // this.manageList();
+  },
   methods: {
+    manage_confirm(date) {
+    	let manageId = [];
+    	date.employee.forEach(item => manageId.push(item.id))
+    	let data = {
+    		employee_id: this.newId,
+    		manage_id: manageId
+    	}
+    	this.$http('post', '/api/employee/superior', data).then(res =>{
+    			this.$message.success('设置成功');
+    			this.moreMessage();
+    	})
+    },
+    dirSup_confirm(date){
+    	let data = {
+    		employee_ids: [this.newId],
+    		superior_id: date.employee.length > 0 ? date.employee[0].id : null
+    	}
+    	this.$http('post','/api/employee/directly_superior',data).then(res =>{
+    			this.$message.success('设置成功');
+    			this.moreMessage();
+    	})
+    },
+    setSuperior(){
+    	this.selected_manage.employee =JSON.parse(JSON.stringify(this.superior_list));
+    	this.manageScope_show = true
+    },
+    dirSuperior(row){
+    	if(this.dirSupervisor.id){
+    		this.selected_manage.employee = [this.dirSupervisor]
+    	}else{
+    		this.selected_manage.employee = []
+    	}
+    	this.scope_loading = true
+    },
+    moreMessage(id) {
+    	if(id){
+    		this.newId = id
+    	}
+    	this.diaTableVisible = true
+    	this.show_loading = true
+    	this.$http('get', '/api/employee/info', { id: this.newId }).then(res=>{
+        	let data = res.data.data
+          this.userInfo = data
+        	if(data.employee_detail.superior_list){
+        		let employeeD = data.employee_detail
+        		if(employeeD.superior_id != 0){
+        			this.dirSupervisor = employeeD.superior_list.filter(x => x.id == employeeD.superior_id)[0]||{}
+        		}else{
+        			this.dirSupervisor = {}
+        		}
+        		// 过滤已经离职人员
+        		this.superior_list=[...this.employeeAll].filter(x => [...employeeD.superior_list].some(y => y.id === x.id));
+        	}
+      }).finally(() =>{
+    		this.show_loading = false
+    	})
+    },
+    // 所有已启用的人员
+    filtration() {
+      this.$http('get', '/api/employee/index', {page: 0, page_size: 3000,is_official:1 }).then(res => {
+    	 this.employeeAll = res.data.data.list;
+      });
+    },
+    //管理列表
+    manageList(){
+    	let params = {
+    		roles: ['creator', 'admin', 'point_manager', 'dept_manager']
+    	}
+    	this.$http('get', '/api/employee/role_employee', params).then(res =>{
+    		if(res.data.code == 1){
+    			this.manageListData = res.data.data.list
+    		}
+    	})
+    },
     entryclick(row) {
-      console.log(row);
       let data = {
         employee_id: row.id,
         accedence_time: row.accedence_time / 1000
@@ -258,63 +325,13 @@ export default {
           row.entryIf = false;
         });
     },
-    entryTime(row) {
-      console.log(row);
-      row.entryIf = true;
-    },
-
-    setRanking() {
-      this.rangLoad = true;
-      let data = {
-        employee_id: this.rankingtakePartInId,
-        switch: Number(this.radio)
-      };
-      this.$http('post', '/api/employee/ranking_switch', data)
-        .then(res => {
-          if (res.data.code == 1) {
-            this.$message.success({ message: res.data.msg });
-            this.getEmployee();
-          }
-        })
-        .finally(() => {
-          this.dialogVisible = false;
-          setTimeout(() => {
-            this.rangLoad = false;
-          }, 200);
-        });
-    },
-    rankingtakePartIn(id, is_ranking) {
-      this.radio = is_ranking.toString();
-      this.rankingtakePartInId = id;
-      this.dialogVisible = true;
-    },
-    handleClose(done) {
-      done();
-    },
     //同步信息
     tb() {
       this.$http('get', '/api/sync').then(res => {
         if (res.data.code == 1) {
           this.$message.success({ message: '正在同步,请稍候刷新页面查看同步结果' });
-          // this.getEmployee();
-          // this.getInfo();
         }
       });
-      // this.$confirm('下次同步时间需在10分钟之后,是否同步?', '提示', {
-      //   confirmButtonText: '确定',
-      //   cancelButtonText: '取消',
-      //   type: 'warning'
-      // }).then(() => {
-      // 	this.tbLoading = true;
-      // 	this.$http('post','/api/ding/department_sync').then(res => {
-      // 		this.$message.success({ message: '同步成功' });
-      // 		this.dept_id=0;
-      // 		this.getInfo();
-      // 		this.getEmployee();
-      // 	}).finally(()=>{
-      // 		this.tbLoading = false;
-      // 	});
-      // });
     },
     //搜索
     searchUser: _debounce(function() {
@@ -323,17 +340,38 @@ export default {
     }),
     //是否开通
     changeIs(e, id) {
-      var url = e == 1 ? '/api/employee/disable' : '/api/employee/enable';
-      this.$http('post', url, { employee_id: [id] }).then(res => {
-        if (res) {
-          if (e == 0) {
-            this.$message.success({ message: '开启成功,可在"角色权限设置对应管理范围"' });
-          } else {
-            this.$message.success({ message: res.data.msg });
+      if(e==1){
+        this.$confirm("禁用后,相关人员将不再允许进入积分系统,并且移除其上下级管理关系,确认禁用吗?", "提示", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning",
+        }).then(() => {
+            var url = e == 1 ? '/api/employee/disable' : '/api/employee/enable';
+            this.$http('post', url, { employee_id: [id] }).then(res => {
+              if (res) {
+                if (e == 0) {
+                  this.$message.success({ message: '开启成功,可在"角色权限设置对应管理范围"' });
+                } else {
+                  this.$message.success({ message: res.data.msg });
+                }
+                this.getEmployee();
+              }
+            });
+        });
+      }else{
+        var url = e == 1 ? '/api/employee/disable' : '/api/employee/enable';
+        this.$http('post', url, { employee_id: [id] }).then(res => {
+          if (res) {
+            if (e == 0) {
+              this.$message.success({ message: '开启成功,可在"角色权限设置对应管理范围"' });
+            } else {
+              this.$message.success({ message: res.data.msg });
+            }
+            this.getEmployee();
           }
-          this.getEmployee();
-        }
-      });
+        });
+      }
+      
     },
     //批量开通权限
     participation() {
@@ -357,7 +395,6 @@ export default {
     //获取公司信息
     getInfo(is) {
       this.ruleDeprt = true;
-      // api/test?employee_id=155
       this.$http('get', '/api/site/info').then(res => {
         this.info = res.data.data;
         this.getDepartment(is);
@@ -412,7 +449,7 @@ export default {
         params.page = this.page - 1;
       }
       this.$http('get', '/api/employee/index', params)
-        .then(res => {  
+        .then(res => {
         this.total = res.data.data.pageInfo.count;
           let list = res.data.data.list;
           list.forEach(item => {
@@ -433,11 +470,6 @@ export default {
       localStorage.setItem('visible', 'true');
       this.visible = false;
     },
-    //关闭提示
-    tips_close() {
-      localStorage.setItem('rule', 'true');
-      this.tips_show = false;
-    },
     handleSizeChange: function(val) {
       this.perPage = val;
       this.page = 1;
@@ -452,6 +484,26 @@ export default {
 };
 </script>
 <style lang="scss" scoped>
+.input-box{
+    -webkit-appearance: none;
+    background-color: #FFF;
+    background-image: none;
+    border-radius: 4px;
+    border: 1px solid #DCDFE6;
+    box-sizing: border-box;
+    color: #606266;
+    display: inline-block;
+    font-size: inherit;
+    height: 40px;
+    line-height: 40px;
+    outline: 0;
+    padding: 0 15px;
+    transition: border-color .2s cubic-bezier(.645,.045,.355,1);
+    width: 100%;
+    overflow: hidden;
+    text-overflow: ellipsis;
+    white-space: nowrap;
+}
 .name {
   text-overflow: ellipsis;
   display: inline-block;

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

@@ -381,7 +381,7 @@
   </div>
 </template>
 <script>
-  import EmployeeSelectorCell from '@/views/common/EmployeeSelectorCard'
+import EmployeeSelectorCell from '@/views/common/EmployeeSelectorCard'
 import IntegralPkCreateApplicationBtn from "./IntegralPkCreateApplicationBtn";
 import IntegralPkCreateApplicationTeamBtn from "./IntegralPkCreateApplicationTeamBtn";
 import PkRuleCreate from "./PkRuleCreate";

+ 21 - 47
src/views/integral/rule/rule_category.vue

@@ -9,9 +9,9 @@
     <el-row class="display-flex" v-loading="dept_loading">
       <el-col :span="6" class="rule_class_box">
         <div class="padding24">
+
           <el-button class="btn-block" @click="add_class" type="primary">+ 添加规则分类</el-button>
-          <el-tree v-show="dept_list !== null && dept_list.length != 0" :data="dept_list" :props="defaultProps"
-            @node-click="dept_click" :expand-on-click-node="false" :highlight-current="true" class="cate-tree"></el-tree>
+          <el-tree  v-show="dept_list !== null && dept_list.length != 0" :data="dept_list" :props="defaultProps"  @node-click="dept_click" :expand-on-click-node="false" :highlight-current="true" class="cate-tree rule_category_box" style="height: 660px;"></el-tree>
           <div v-show="!dept_loading && dept_list !== null && dept_list.length == 0" class="" style="margin-top: 100px;">
             <div style="padding: 0 10px">
               <img src="static/images/nodata_default.png" width="100%" alt="">
@@ -19,48 +19,25 @@
             <div style="text-align: center; line-height:34px">还没有规则分类</div>
             <div style="text-align: center; color: #26A2FF;" @click="add_class">添加规则分类</div>
           </div>
+
         </div>
       </el-col>
       <el-col :span="18" class="border-right">
         <div class="padding24">
-          <h2><pre style="font-family: Helvetica Neue, Helvetica, PingFang SC, Hiragino Sans GB, Microsoft YaHei, Arial, sans-serif;">{{dept_name}}<el-button style="margin-left: 10px" v-show="show_edit_btn" @click="edit_class">编辑</el-button></pre>
-          </h2>
+          <h2><pre style="font-family: Helvetica Neue, Helvetica, PingFang SC, Hiragino Sans GB, Microsoft YaHei, Arial, sans-serif;">{{dept_name}}<el-button style="margin-left: 10px" v-show="show_edit_btn" @click="edit_class">编辑</el-button></pre></h2>
           <div style="margin-top:2px; margin-bottom:15px;" class="inline-block-btn-list">
-            <el-button
-              type="danger"
-              plain
-              @click="del_item"
-            >批量删除</el-button>
-            <el-button
-              type="primary"
-              @click="add_rule"
-            >添加规则</el-button>
-            <el-button
-              type="primary"
-              plain
-              @click="theImportRules"
-            >导入规则</el-button>
-<!--            <el-button
-              type="primary"
-              plain
-              @click="derivedRule"
-            >导出规则</el-button> -->
+            <el-button type="danger" plain @click="del_item">批量删除</el-button>
+            <el-button type="primary" @click="add_rule">添加规则</el-button>
+            <el-button type="primary" plain @click="theImportRules">导入规则</el-button>
+            <el-button type="primary" plain @click="derivedRule">导出规则</el-button>
             <div class="gap-right-8 fr" style="display:inline-block; width:180px;">
-              <el-input
-                placeholder="搜索规则内容"
-                ref="search-bar"
-                v-model="keyword"
-                class="input-with-select"
-                @keyup.enter.native="onFilterChanged"
-              >
+              <el-input placeholder="搜索规则内容" ref="search-bar" v-model="keyword" class="input-with-select" @keyup.enter.native="onFilterChanged">
                 <el-button slot="append" icon="el-icon-search" @click="onFilterChanged"></el-button>
               </el-input>
             </div>
           </div>
-          <el-table stripe ref="multipleTable" :data="list" tooltip-effect="dark" style="width: 100%" @selection-change="handleSelectionChange"
-            @row-click="editDetails" class="rule_category_box">
-            <el-table-column type="selection" width="55">
-            </el-table-column>
+          <el-table stripe ref="multipleTable" :data="list" tooltip-effect="dark" style="width: 100%" @selection-change="handleSelectionChange" @row-click="editDetails" class="rule_category_box">
+            <el-table-column type="selection" width="55"></el-table-column>
             <el-table-column prop="remark" label="内容" width="500" style="padding-right:30px;"></el-table-column>
             <el-table-column label="分值">
               <template slot-scope="scope">
@@ -95,24 +72,17 @@
       width="700px">
       <el-form :model="rules_detail_form" ref="rules_detail_form" :rules="rules" label-width="80px">
         <el-form-item label="规则内容" prop="remark">
-          <el-input v-model="rules_detail_form.remark" placeholder="请输入规则内容" type="textarea" :rows="3"></el-input>
+          <el-input v-model="rules_detail_form.remark" placeholder="请输入规则内容" type="textarea" :rows="4" maxlength="300" show-word-limit></el-input>
         </el-form-item>
 
         <el-form-item label="所属分类" prop="rule_id">
           <div style="position: relative;">
-            <div style="position: absolute; top: 0; left: 0; right: 0; bottom: 0; z-index: 9;" @click="not_data"
-              v-show="dept_list !==null && dept_list.length == 0"></div>
-              
-          <el-cascader placeholder="请选择分类" v-model="rules_detail_form.rule_id" :options="dept_list" :props="{ checkStrictly: true, label: 'name', value: 'id', children: 'child'}"  @change="cascader_close" ref="cascaderHandle"
-            clearable></el-cascader>
-
-            <!-- <el-cascader placeholder="请选择分类" v-model="rules_detail_form.rule_id" @visible-change="select_rule" @change="cascader_close"
-              :options="dept_list" ref="cascaderHandle" :props="{ checkStrictly: true, label: 'name', value: 'id', children: 'child'}"></el-cascader> -->
+            <div style="position: absolute; top: 0; left: 0; right: 0; bottom: 0; z-index: 9;" @click="not_data" v-show="dept_list !==null && dept_list.length == 0"></div>
+            <el-cascader placeholder="请选择分类" v-model="rules_detail_form.rule_id" :options="dept_list" :props="{ checkStrictly: true, label: 'name', value: 'id', children: 'child'}"  @change="cascader_close" ref="cascaderHandle" clearable></el-cascader>
           </div>
         </el-form-item>
         <el-form-item label="规则类型" prop="pt_id">
-          <el-radio v-model="rules_detail_form.pt_id" :label="item.id" v-for="(item,index) in point_types" :key="index"
-            v-show="item.name !== '绩效分'">{{item.name}}</el-radio>
+          <el-radio v-model="rules_detail_form.pt_id" :label="item.id" v-for="(item,index) in point_types" :key="index" v-show="item.name !== '绩效分'">{{item.name}}</el-radio>
         </el-form-item>
         <el-form-item label="规则积分" prop="range_type">
           <el-radio-group v-model="rules_detail_form.range_type">
@@ -400,7 +370,7 @@
       //导出规则按钮
       derivedRule(){
         let token = getToken()?getToken():this.$getToken
-        window.open(this.publicBASE_API+'/api/download/rule_item/item?employee_id='+this.$store.getters.user_info.id +'&token='+token)
+        window.open(this.publicBASE_API+'/api/download/rule_item/item?employee_id='+this.$userInfo().id +'&token='+token)
       },
       //规则为空时点击 导入规则按钮
       theImportRules(){
@@ -1190,7 +1160,7 @@
             } else {
               self.rules_detail_form.item_id=self.rules_detail_form.id
               // let data = self.rules_detail_form
-              
+
               let datas = self.rules_detail_form
               let data = {}
               for(let key in datas){
@@ -1301,6 +1271,10 @@
 </script>
 
 <style scoped lang="scss">
+  .rule_category_box{
+    height: 600px;
+    overflow-y: scroll;
+  }
   .border-right:after{
     content: " ";
     position: absolute;

+ 34 - 129
src/views/setting/fixed_integral.vue

@@ -33,7 +33,6 @@
                 <template slot="title">
                   <i class="el-icon-edit-outline" @click.stop="edit_grouping(item)"></i>
                   <span class="title_top"><pre style="font-family: Helvetica Neue, Helvetica, PingFang SC, Hiragino Sans GB, Microsoft YaHei, Arial, sans-serif;max-width: calc(100vh - 500px);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;">{{item.name}}</pre></span>
-                  <!-- <i class="el-icon-edit-outline" @click.stop="edit_grouping(item)">编辑</i> -->
                 </template>
                 <span
                   :index="i.toString()"
@@ -74,24 +73,6 @@
 
           <el-col v-if="item_list.length != 0">
             <el-row>
-              <!-- <el-col :span="24" style="font-size:20px;color:#303133;line-height:36px;">
-                <pre  style="font-family: Helvetica Neue, Helvetica, PingFang SC, Hiragino Sans GB, Microsoft YaHei, Arial, sans-serif;display:flex">
-                  <el-popover trigger="hover" placement="top" popper-class="popperSPBOX" style="padding: 9px 0 0 10px;">
-                    <span style="white-space: pre-wrap">{{right_rules_detail.remark}}</span>
-                    <div slot="reference" class="name-wrapper"  style=" max-width: calc(100vh - 500px);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;">
-                      <span style="white-space: pre">{{right_rules_detail.remark}}</span>
-                    </div>
-                  </el-popover>
-                  <el-popover trigger="hover" placement="top" popper-class="popperSPBOX" style="padding: 9px 0 0 10px;">
-                    <span>{{right_rules_detail.min_point}}</span>
-                    <div slot="reference" class="name-wrapper"  style=" max-width: calc(100vh - 830px);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;">
-                      <span>{{right_rules_detail.min_point}}</span>
-                    </div>
-                  </el-popover>
-                  <span style="padding: 9px 0 0 0;">B分</span> -->
-              <!-- <el-button plain style="padding:10px 12px; margin-left: 10px;" @click="edit_rules(right_rules_detail)">编辑</el-button></pre>
-              </el-col> -->
-
               <el-col :span="24" style="white-space: pre-wrap;font-family: Helvetica Neue, Helvetica, PingFang SC, Hiragino Sans GB, Microsoft YaHei, Arial, sans-serif;display:flex;flex-wrap:wrap;font-size:20px;color:#303133;line-height:36px;">
                   <div><span style="font-size:19px">{{right_rules_detail.remark}}</span></div>
                   <div>
@@ -99,8 +80,6 @@
                     <el-button plain style="padding:10px 12px; margin-left: 10px;" @click="edit_rules(right_rules_detail)">编辑</el-button>
                   </div>
               </el-col>
-
-
             </el-row>
             <el-row :gutter="0" style="margin-top:20px;">
               <el-col :span="4">
@@ -109,11 +88,6 @@
               <el-col :span="4">
                 <el-button type="primary" @click="add_employee_show= true">添加人员</el-button>
               </el-col>
-              <!-- <el-button
-                type="primary"
-                plain
-                @click="import_rules_show = true"
-              >导入自动积分</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>
@@ -128,15 +102,6 @@
                     <span style="float: left"><WWOpenData type="userName" :openid="item.name"></WWOpenData></span>
                   </el-option>
                 </el-select>
-                <!-- <el-input
-                  placeholder="输入关键词"
-                  ref="search-bar"
-                  v-model="integralKeywords"
-                  class="input-with-select"
-                  @keyup.enter.native="onFilterChanged"
-                >
-                  <el-button slot="append" icon="el-icon-search" @click="onFilterChanged"></el-button>
-                </el-input> -->
               </el-col>
             </el-row>
             <el-table
@@ -173,6 +138,8 @@
                     <div v-if="scope.row.task_cycle==1">每天</div>
                     <div v-if="scope.row.task_cycle==2">每周</div>
                     <div v-if="scope.row.task_cycle==3">每月</div>
+                    <div v-if="scope.row.task_cycle==4">每季度</div>
+                    <div v-if="scope.row.task_cycle==5">每年</div>
                 </template>
               </el-table-column>
               <template slot="empty">
@@ -205,22 +172,11 @@
     >
       <el-form :model="grouping" ref="grouping" :rules="grouping_rules" label-width="100px">
         <el-form-item label="分类名称" prop="name">
-          <el-input v-model="grouping.name" placeholder="请输入分类名称"></el-input>
+          <el-input v-model="grouping.name" placeholder="请输入分类名称" maxlength="25"></el-input>
         </el-form-item>
         <div style="overflow: hidden;">
-          <el-button
-            class="fl"
-            :disabled="btn_disabled"
-            type="danger"
-            v-show="grouping_type == 'edit'"
-            @click="del_grouping(grouping)"
-          >删除</el-button>
-          <el-button
-            class="fr"
-            :disabled="btn_disabled"
-            type="primary"
-            @click="grouping_btn('grouping')"
-          >确定</el-button>
+          <el-button class="fl" :disabled="btn_disabled" type="danger" v-show="grouping_type == 'edit'" @click="del_grouping(grouping)">删除</el-button>
+          <el-button class="fr" :disabled="btn_disabled" type="primary" @click="grouping_btn('grouping')">确定</el-button>
           <el-button class="fr" :disabled="btn_disabled" @click="grouping_close('grouping')">取消</el-button>
         </div>
       </el-form>
@@ -240,7 +196,7 @@
         label-width="120px"
       >
         <el-form-item label="规则名称" prop="remark">
-          <el-input v-model="rules_detail_form.remark" placeholder="请输入规则名称"></el-input>
+          <el-input v-model="rules_detail_form.remark" placeholder="请输入规则内容" type="textarea" :rows="4" maxlength="300" show-word-limit></el-input>
         </el-form-item>
         <el-form-item label="分类" prop="rule_id">
           <el-select v-model="rules_detail_form.rule_id" style="width: 100%;" placeholder="请选择分类">
@@ -253,15 +209,12 @@
           </el-select>
         </el-form-item>
         <el-form-item label="积分" prop="min_point">
-          <el-input v-model="rules_detail_form.min_point" placeholder="请输入积分"></el-input>
+          <el-input v-model="rules_detail_form.min_point" maxlength="10" placeholder="请输入积分"></el-input>
           <span
             data-v-a17f1960
             style="display: block; font-size: 12px; color: rgb(96, 98, 102);text-align: left;"
-          >固定加分加B分</span>
+          >固定加B分</span>
         </el-form-item>
-        <!-- <el-form-item label="是否与考勤挂钩" prop="is_attendance">
-          <el-switch v-model="rules_detail_form.is_attendance"></el-switch>
-        </el-form-item> -->
         <div style="overflow: hidden;">
           <el-button
             type="danger"
@@ -317,14 +270,6 @@
           注:非在职状态的员工,系统不会执行自动积分
         </span>
         <div>
-          <!-- <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"
             :is_filtration_creator="true"
@@ -375,7 +320,6 @@
               ref="upload"
               :limit = '1'
               :action="integralUpload"
-              :on-preview="handlePreview"
               :on-remove="handleRemove"
               :on-success="handleSuccess"
               :before-upload="beforeFilesUpload"
@@ -463,7 +407,7 @@ export default {
           },
           {
             max: 25,
-            message: "规则名称不能大于25个字",
+            message: "分类名称不能大于25个字",
             trigger: "blur",
           },
         ],
@@ -488,8 +432,8 @@ export default {
             trigger: "blur",
           },
           {
-            max: 50,
-            message: "分类名称不能大于50个字",
+            max: 300,
+            message: "规则名称不能大于300个字",
             trigger: "blur",
           },
         ],
@@ -525,13 +469,20 @@ export default {
           name: "每月自动加分",
           value: 3,
         },
+        {
+          name: "每个季度自动加分",
+          value: 4,
+        },
+        {
+          name: "每年自动加分",
+          value: 5,
+        },
       ],
       task_cycle_name: '',
       add_employee_form: {
         employee_ids: [],
       },
       table_list: [],
-      // selected:{employee:[], dept: []},//选择员工数据
       del_arr: {
         ids: [],
       },
@@ -543,7 +494,7 @@ export default {
       total: 0, //返回的总数据
       page: 1, //默认页数  为1
       pagesize: 10, //每页显示的数据
-      
+
       dropOuOfPers:[],
     };
   },
@@ -551,11 +502,18 @@ export default {
     EmployeeSelector1,
   },
   watch: {
+    add_employee_show(val){
+      if(!val){
+        this.task_cycle_name= '';
+        this.add_employee_form={
+          employee_ids: [],
+        };
+      }
+    },
     select_employee_id(val) {
       this.employee_id = val;
       this.open_right(this.employee_id);
       this.$nextTick(()=>{
-        console.log(this.$refs['dropOuOfref'].selected)
         this.dropOuOfPers = this.$refs['dropOuOfref'].selected
       })
     },
@@ -579,28 +537,9 @@ export default {
         file: this.file
       }
       this.$http('post','/api/integral/auto/import', params).then(res => {
-        if(res.data.code == 1) {
-          // this.import_rules_show = false;
           this.close_import()//成功之后关闭并清除选中的文件
           this.$message.success({message:res.data.msg})
           this.get_rule_trees();
-          // if(res.data.data.list.length != 0){
-          //   this.error_list_show = true
-          //   this.error_list.push(res.data.data)
-          // }else{
-          //   this.$message.success({message:res.data.msg})
-          // }
-          // if(res.data.data.length != 0 && res.data.data.length != undefined){
-          //   this.error_list_show = true
-          //   this.error_list = res.data.data
-          // }else{
-          //   this.get_department_list()
-          // }
-        }else{
-          this.$message({type:'error',message:res.data.msg})
-        }
-      }).catch(()=>{
-
       }).finally(()=>{
         this.save_loading = false
       })
@@ -629,16 +568,10 @@ export default {
         this.import_btn_show = false
       }
     },
-    handlePreview(file) {
-      console.log(file);
-    },
-
-
     handleCurrentChange(val) {
       this.page = val;
       this.open_right(this.handleCurrent);
     },
-
     tips_close() {
       localStorage.setItem("fixed_integral_tips", "true");
       this.tips_show = false;
@@ -698,31 +631,17 @@ export default {
               },5000)
             }
           } else {
-            self.$http("post","/api/integral/auto/add",data,)
-              .then((res) => {
+            self.$http("post","/api/integral/auto/add",data,).then((res) => {
                 if (res.data.code == 1) {
                   self.add_employee_show = false;
-                  self.$message.success(
-                    "此次操作成功" +
-                      res.data.data.success +
-                      "条,失败" +
-                      res.data.data.error +
-                      "条,已经存在的" +
-                      res.data.data.exist +
-                      "条"
-                  );
-                  // self.open_right();
+                  self.$message.success("此次操作成功" + res.data.data.success +"条,失败" + res.data.data.error +"条,已经存在的" + res.data.data.exist + "条");
                   self.get_rule_trees();
                 } else {
                   self.$message.error(res.data.msg);
                 }
-              })
-              .catch((e) => {
-                self.$message.error(e.data.msg);
-              })
-              .finally(() => {
-                self.loading = false;
-              });
+            }).finally(() => {
+              self.loading = false;
+            });
           }
         } else {
           return false;
@@ -730,8 +649,6 @@ export default {
       });
     },
 
-    handleNodeClick(data) {
-    },
     handleSelectionChange(val) {
       this.del_arr.ids = [];
       val.forEach((element) => {
@@ -777,7 +694,6 @@ export default {
     // 编辑规则
     editRule(form) {
       let self = this;
-      // self.table_loading = true
       self.$refs[form].validate((valid) => {
         if (valid) {
           self.btn_disabled = true;
@@ -786,9 +702,7 @@ export default {
           self.rules_detail_form.is_attendance? (self.rules_detail_form.is_attendance = 0):(self.rules_detail_form.is_attendance = 0);
           self.rules_detail_form.item_id = self.rules_detail_form.id;
           data = self.rules_detail_form;
-          // self.right_rules_detail = data
-          self
-            .$http("PUT","/api/integral/rule/items",data,)
+          self.$http("PUT","/api/integral/rule/items",data,)
             .then((res) => {
               if (res.data.code == 1) {
                 self.get_rule_trees();
@@ -963,7 +877,6 @@ export default {
 
     //自动积分规则列表
     open_right(data) {
-      // console.log(data)
       if(this.handleCurrent!=data){
         this.page = 1
       }
@@ -971,14 +884,6 @@ export default {
       let self = this;
       self.rule_list_load = true;
       self.table_loading = true;
-      // var params = {params:{}}
-      // if(data){
-      //   params.params.item_id = data.id || ''
-      //   params.params.employee_id = data.employee_id || ''
-      //   params.params.page = self.page
-      //   self.rule_id = data.rule_id
-      //   self.item_id = data.id
-      // }
       if (data&&data.id) {
         self.add_employee_id = data.id;
         self.add_rulse_id = data.rule_id;

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

@@ -46,7 +46,7 @@
                     </template>
 
                     <div class="gap-right-8 fr" style="display:inline-block; width:180px;" v-if="item_info.code == 'dept_manager'">
-                      <el-input placeholder="搜索员工姓名" ref="search-bar" v-model="keyword" class="input-with-select" @keyup.enter.native="onFilterChanged">
+                      <el-input maxlength="20" placeholder="搜索员工姓名" ref="search-bar" v-model="keyword" class="input-with-select" @keyup.enter.native="onFilterChanged">
                         <el-button slot="append" icon="el-icon-search" @click="onFilterChanged"></el-button>
                       </el-input>
                     </div>

+ 6 - 2
src/views/statistics_new/balanceA.vue

@@ -19,8 +19,8 @@
 				</el-form-item>
 
 				<el-form-item>
-					<el-input v-model="formData.keyword" placeholder="输入同事姓名" max="200" @keyup.enter.native="getList()" class="persons_name">
-            <el-button slot="append" icon="el-icon-search" @click="getList()"></el-button>
+					<el-input v-model="formData.keyword" placeholder="输入同事姓名" maxlength="20" @keyup.enter.native="keywords()" class="persons_name">
+            <el-button slot="append" icon="el-icon-search" @click="keywords()"></el-button>
           </el-input>
 				</el-form-item>
 
@@ -152,6 +152,10 @@
 		},
 		components: {},
     methods: {
+      keywords(){
+        this.formData.page = 1;
+        this.getList();
+      },
 			resetForm(formName){
 				this.clearAPointShow = false
         this.$refs[formName].resetFields();

+ 66 - 85
src/views/statistics_new/integral_event.vue

@@ -1,93 +1,75 @@
 <template>
   <div>
     <div class="integral_event_box">
-      <el-row :gutter="20" style="margin-bottom: 20px;">
-
-        <el-col :span="3">
-          <el-select v-model="newTaskFormType" style="width:110px;" filterable placeholder="请选择">
-            <el-option v-for="item in pullrow" :key="item.id" :label="item.value" :value="item.id"></el-option>
-          </el-select>
-        </el-col>
-        <el-col :span="6" class="display_flex" v-show="newTaskFormType==1">
-          <el-cascader
-            class="date-picker-width"
-            v-model="rule"
-            :options="rule_trees"
-            :props="props"
-            @change="rule_null"
-            ref="rule"
-            clearable
-            filterable
-            change-on-select
-            placeholder="选择规则分类"
-          ></el-cascader>
-        </el-col>
-
-        <el-col :span="6" class="display_flex"  v-show="newTaskFormType==2">
-          <el-cascader
-              @change="ruleautomatic"
+      <el-form :inline="true" :model="formData" class="demo-form-inline">
+          <el-form-item>
+            <el-select v-model="newTaskFormType" style="width:110px;" filterable placeholder="请选择">
+                <el-option v-for="item in pullrow" :key="item.id" :label="item.value" :value="item.id"></el-option>
+            </el-select>
+            <el-cascader
+              v-show="newTaskFormType==1"
               class="date-picker-width"
-              v-model="automaticIntegration"
-              :options="rule_list"
+              v-model="rule"
+              :options="rule_trees"
               :props="props"
-              ref="rule1"
+              @change="rule_null"
+              ref="rule"
+              clearable
               filterable
               change-on-select
-              placeholder="选择自动积分"
-              clearable></el-cascader>
-        </el-col>
-
-        <el-col :span="8" class="display_flex">
-          <span class="label">积分分类</span>
-          <el-select class="date-picker-width" v-model="formData.pt_id" clearable placeholder="请选择积分分类">
-            <el-option v-for="item in point_types" :key="item.name" :label="item.name" :value="item.id"></el-option>
-          </el-select>
-        </el-col>
-        <el-col :span="7" class="display_flex" style="position: relative;">
-          <span class="label">部门</span>
-          <ShowDeptName @confirm="deptConfirm"></ShowDeptName>
-        </el-col>
-      </el-row>
+              placeholder="选择规则分类"
+            ></el-cascader>
+            <el-cascader
+                v-show="newTaskFormType==2"
+                @change="ruleautomatic"
+                class="date-picker-width"
+                v-model="automaticIntegration"
+                :options="rule_list"
+                :props="props"
+                ref="rule1"
+                filterable
+                change-on-select
+                placeholder="选择自动积分"
+                clearable></el-cascader>
+          </el-form-item>
+          <el-form-item label="积分分类">
+            <el-select v-model="formData.pt_id" clearable placeholder="请选择积分分类">
+              <el-option v-for="item in point_types" :key="item.name" :label="item.name" :value="item.id"></el-option>
+            </el-select>
+          </el-form-item>
+          <el-form-item label="部门">
+              <ShowDeptName @confirm="deptConfirm"></ShowDeptName>
+          </el-form-item>
+          <el-form-item label="时间">
+            <el-date-picker
+              v-model="time_slot"
+              type="daterange"
+              value-format="yyyy-MM-dd"
+              range-separator="至"
+              start-placeholder="开始日期"
+              end-placeholder="结束日期"
+            ></el-date-picker>
+          </el-form-item>
+          <el-form-item label="内容搜索">
+              <el-input v-model="formData.keyword" placeholder="输入关键字查找" maxlength="20" @keyup.enter.native="keyWordSelect" class="persons_name">
+                <el-button slot="append" icon="el-icon-search" @click="keyWordSelect"></el-button>
+              </el-input>
+          </el-form-item>
+          <el-form-item label="人员搜索">
+              <el-input v-model="formData.employee_name" placeholder="输入人员名称" maxlength="20" @keyup.enter.native="keyWordSelect" class="persons_name">
+                <el-button slot="append" icon="el-icon-search" @click="keyWordSelect"></el-button>
+              </el-input>
+          </el-form-item>
+      </el-form>
 
-      <el-row :gutter="20" style="margin-bottom: 20px;">
-        <el-col class="time_section display_flex" :span="10">
-          <span class="label">时间</span>
-          <el-date-picker
-            v-model="time_slot"
-            type="daterange"
-            value-format="yyyy-MM-dd"
-            range-separator="至"
-            start-placeholder="开始日期"
-            end-placeholder="结束日期"
-          ></el-date-picker>
-        </el-col>
-        <el-col :span="6" class="display_flex">
-          <el-input v-model="formData.keyword" placeholder="输入关键字查找" maxlength="100" @keyup.enter.native="keyWordSelect" class="persons_name">
-            <el-button slot="append" icon="el-icon-search" @click="keyWordSelect"></el-button>
-          </el-input>
-        </el-col>
 
-        <el-col :span="8" style="padding-left:15px;float:right;position: relative;">
-          <div v-if="dropOuOfPers.currentLabel && dropOuOfPers.currentLabel != ''" class="dropOuOfPersName" @click="takePartIn">
-            <WWOpenData type="userName" :openid="dropOuOfPers.currentLabel"></WWOpenData>
-          </div>
-          <el-select v-model="select_employee_id" ref="dropOuOfref" clearable placeholder="请选择人员">
-            <el-option v-for="item in employee_map" :key="item.id" :label="item.name" :value="item.id">
-              <span style="float: left"><WWOpenData type="userName" :openid="item.name"></WWOpenData></span>
-            </el-option>
-          </el-select>
-        </el-col>
-      </el-row>
 
       <el-row :gutter="20" style="margin-bottom: 20px;">
         <el-col :span="4">
-          <!-- <el-button type="primary" @click="excelImportShow = true">导入数据</el-button> -->
           <el-button type="primary" @click="exportExcel" :disabled="deriveDis">导出当前数据</el-button>
-          <!-- <a :href="aherfUrl" ref="aherfClick" v-if="aherfUrl != ''" v-trigger></a> -->
           <a :href="aherfUrl" ref="aherfClick"></a>
         </el-col>
         <el-col :span="17">
-          <!-- <el-button type="primary" plain @click="swiperShowTrue">轮播排名</el-button> -->
           <el-button class="first-element-btn" v-if="noticeRole" :disabled='selectionID.length==0' @click="deleteInBatches" type="danger" >批量删除</el-button>
         </el-col>
       </el-row>
@@ -365,7 +347,8 @@ export default {
       dept_tree: [],
       formData: {
         page: 1,
-        page_size: 10
+        page_size: 10,
+        employee_name:''
       },
       time_slot: null,
       rule_trees: [],
@@ -587,14 +570,11 @@ export default {
       if(this.deriveJobIf < 5){
         this.$http('get','/api/download/result',{job_id: this.deriveJobId}).then((res)=>{
           if(res.data.code == 1){
-            // window.open(res.data.data.url)
-            // window.location.href = res.data.data.url
             this.aherfUrl = res.data.data.url
             this.deriveJobId = ''
             this.deriveDis = false
             this.$nextTick(()=>{
               this.$refs.aherfClick.click()
-              // this.aderivecli()
             })
           }else{
             setTimeout(()=>{
@@ -617,14 +597,15 @@ export default {
         page: this.formData.page,
         page_size: this.formData.page_size,
       }
-      this.formData.rule_id ? params.rule_id = this.formData.rule_id : ''
-      this.formData.pt_id ? params.pt_id = this.formData.pt_id : ''
+      this.formData.rule_id ? params.rule_id = this.formData.rule_id : '';
+      this.formData.pt_id ? params.pt_id = this.formData.pt_id : '';
       this.formData.employee_ids ? params.employee_ids = this.formData.employee_ids : ''
       this.formData.dept_id ? params.dept_ids = this.formData.dept_id : ''
-      this.formData.start_day ? params.start_day = this.formData.start_day : ''
-      this.formData.end_day ? params.end_day = this.formData.end_day : ''
-      this.formData.keyword ? params.keyword = this.formData.keyword : ''
-      this.$downloadFile('api/download/integral',params,this.$route.path);
+      this.formData.start_day ? params.start_day = this.formData.start_day : '';
+      this.formData.end_day ? params.end_day = this.formData.end_day : '';
+      this.formData.keyword ? params.keyword = this.formData.keyword : '';
+      this.formData.employee_name ? params.employee_name = this.formData.employee_name : '';
+      this.$downloadFile('api/download/integral',params,this.$route.path,'确认导出当前数据?');
     },
     handleSizeChange(val) {
       this.pageLimit = val;
@@ -681,7 +662,7 @@ export default {
     },
     get_rule_trees() {
       let self = this;
-      self.$http('get','/api/integral/rule/trees')
+      self.$http('get','/api/integral/rule/trees',{cycle_type:1})
         .then(res => {
           if (res.data.code == 1) {
             let arr = res.data.data.rule_tree;

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

@@ -7,7 +7,7 @@
             <ShowDeptName :deptId.sync="formData.dept_id"></ShowDeptName>
         </el-col>
         <el-col :span="5" class="search">
-          <el-input v-model="formData.keyword" placeholder="输入同事姓名" @keyup.enter.native="get_all_integral">
+          <el-input v-model="formData.keyword" placeholder="输入同事姓名" maxlength="20" @keyup.enter.native="get_all_integral">
             <el-button slot="append" @click="get_all_integral" icon="el-icon-search"></el-button>
           </el-input>
         </el-col>
@@ -173,14 +173,11 @@ export default {
           job_id: this.deriveJobId
         }).then(res => {
           if (res.data.code == 1) {
-            // window.open(res.data.data.url)
-            // window.location.href = res.data.data.url
             this.aherfUrl = res.data.data.url;
             this.deriveJobId = '';
             this.deriveDis = false;
             this.$nextTick(() => {
               this.$refs.aherfClick.click();
-              // this.aderivecli()
             });
           } else {
             setTimeout(() => {

+ 7 - 11
src/views/statistics_new/lotteryTicket_statistics.vue

@@ -14,16 +14,8 @@
           <ShowDeptName :deptId.sync="formData.dept_id"></ShowDeptName>
         </el-col>
         <el-col :span="5" class="search">
-          <el-input
-            v-model="formData.keywords"
-            placeholder="输入同事姓名"
-            @keyup.enter.native="get_all_integral"
-          >
-            <el-button
-              slot="append"
-              @click="get_all_integral"
-              icon="el-icon-search"
-            ></el-button>
+          <el-input v-model="formData.keywords" placeholder="输入同事姓名"  @keyup.enter.native="keywords"  maxlength="20">
+            <el-button slot="append" @click="keywords" icon="el-icon-search"></el-button>
           </el-input>
         </el-col>
       </el-row>
@@ -84,7 +76,7 @@ export default {
       formData: {
         month: this.$moment().format("YYYY-MM"),
         keywords: "",
-        dept_id: "",
+        dept_id: 0,
         page: 1,
         page_size: 10
       },
@@ -108,6 +100,10 @@ export default {
     this.get_all_integral();
   },
   methods: {
+    keywords(){
+      this.formData.page = 1;
+      this.get_all_integral();
+    },
     //分页
     handleSizeChange1(val) {
       this.pageLimit1 = val;

+ 1 - 2
src/views/statistics_new/manager_statistics.vue

@@ -28,7 +28,7 @@
               <el-input
                 v-model="condition.keyword"
                 placeholder="输入同事姓名"
-                max="200"
+                maxlength="20"
                 @keyup.enter.native="keyWordSelect"
                 class="persons_name"
               >
@@ -53,7 +53,6 @@
             <!-- 导出报表 -->
            <el-form-item>
               <el-button type="primary" plain @click="exportExcel" style="margin-left:20px"  :disabled="deriveDis">导出报表</el-button>
-              <!-- <a :href="aherfUrl" ref="aherfClick"></a> -->
             </el-form-item>
           </el-form>
 

+ 8 - 73
src/views/workbench/grade/apply_list.vue

@@ -11,28 +11,20 @@
         <el-button type="primary" @click="dialogVisible = true">申请积分</el-button>
       </el-col>
       <el-col :span="6" :offset="6">
-        <el-input v-model="formData.keyword" placeholder="输入申请内容" @keyup.enter.native="searchFun">
+        <el-input v-model="formData.keyword" maxlength="20" placeholder="输入申请内容" @keyup.enter.native="searchFun">
           <el-button slot="append" @click="searchFun" icon="el-icon-search"></el-button>
         </el-input>
       </el-col>
     </el-row>
 
-    <el-table
-      :data="dataList"
-      stripe
-      fit
-      v-loading="table_loading"
-      v-if="tabs == 'complete'"
-      @row-click="openDetail"
-    >
+    <el-table :data="dataList" stripe fit  v-loading="table_loading" v-if="tabs == 'complete'" @row-click="openDetail">
       <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">
         <template slot-scope="scope">
-          <span :class="{color_green: scope.row.point > 0, color_red: scope.row.point < 0}">
-            <span v-show="scope.row.point > 0">+</span>
-            {{scope.row.point}} {{scope.row.pt_id==3?'B分':scope.row.pt_id==2?'A分':scope.row.pt_id==1?'绩效分':''}}
+          <span :class="{color_green: scope.row.review_point > 0, color_red: scope.row.review_point < 0}">
+            <span v-show="scope.row.review_point > 0">+</span>{{scope.row.review_point}} {{scope.row.pt_id==3?'B分':scope.row.pt_id==2?'A分':scope.row.pt_id==1?'绩效分':''}}
           </span>
         </template>
       </el-table-column>
@@ -63,28 +55,18 @@
       <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">
-        <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">
+<!--      <el-table-column label="积分" prop="review_point" width="120">
         <template slot-scope="scope">
           <span class="green" v-show="scope.row.point>=0">+{{scope.row.point}} {{$getTypsName(scope.row.pt_id)}}</span>
           <span class="red" v-show="scope.row.point < 0">{{ scope.row.point }} {{$getTypsName(scope.row.pt_id)}}</span>
         </template>
-      </el-table-column>
+      </el-table-column> -->
       <el-table-column label="时间" prop="event_time" width="150"></el-table-column>
       <template slot="empty">
         <div class="nopoint_box" v-if="!formData.keyword">
           <div class="noimg"></div>
           <span class="title">
             暂无待审批数据
-            <!-- 你还没有申请积分 现在
-            <el-button type="text" @click="dialogVisible = true">申请积分</el-button> -->
           </span>
         </div>
         <div class="nopoint_box" v-else>
@@ -111,8 +93,6 @@
           <div class="noimg"></div>
           <span class="title">
             暂无被驳回数据
-            <!-- 你还没有申请积分 现在
-            <el-button type="text" @click="dialogVisible = true">申请积分</el-button> -->
           </span>
         </div>
         <div class="nopoint_box" v-else>
@@ -161,23 +141,10 @@
                 <div style="margin-left: 10px;">
                   <span :class="{ yellow: detail_info.review_status == 0 }">{{ detail_info.status_mark }}</span>
                 </div>
-                <!-- 优化 -->
-                <!-- <div v-for="(item,index) in detail_info.process" :key="index" v-show="item.review_point != 0">
-                  <p v-if="detail_info.status == 1">
-                    <span v-show=" item.review_point >= 0 &&detail_info.item_prize_type == 1 || item.review_point >= 0 && detail_info.item_prize_type == -1|| item.review_point >= 0 && detail_info.item_prize_type == 0" style="color:#f56c6c;font-size:16px;padding-left:8px">+{{item.review_point}}</span>
-                    <span v-show=" item.review_point <= 0 && detail_info.item_prize_type == 2 || item.review_point <= 0 && detail_info.item_prize_type == -1|| item.review_point <= 0 && detail_info.item_prize_type == 0" style="color:#67C23A;font-size:16px;padding-left:8px">{{item.review_point}}</span>
-                    <span> {{detail_info.pt_id==1?'绩效分':detail_info.pt_id==2?'A分':detail_info.pt_id==3?'B分':''}}</span>
-                  </p>
-                </div> -->
               </div>
             </div>
-            <!-- <p class="user_text text_ccc">{{detail_info.review_status_mark}}</p> -->
           </el-col>
         </el-row>
-        <!-- <el-row :gutter="10" v-show="detail_info.source_type_mark">
-          <el-col :span="4">来源类型</el-col>
-          <el-col :span="20">{{detail_info.source_type_mark}}</el-col>
-        </el-row> -->
         <el-row :gutter="10" v-for="(item,index) in detail_info.detail" :key="index">
           <el-col :span="4">{{item.key}}</el-col>
           <el-col :span="20" v-if="item.key == '附件'">
@@ -189,7 +156,7 @@
             >
             </el-image>
           </el-col>
-           <el-col :span="20" v-else-if="item.key == '收益人'">
+          <el-col :span="20" v-else-if="item.key == '收益人'">
             <WWOpenData type="userName" :openid="item.value"></WWOpenData>
 					</el-col>
           <el-col :span="20" v-else-if="item.key == '奖扣目标'">
@@ -200,7 +167,6 @@
 					</el-col>
           <el-col :span="20" v-else>{{ item.value }}</el-col>
         </el-row>
-        
         <el-row :gutter="10" v-if="detail_info.files !=null && detail_info.files > 0">
           <el-col :span="4">图片</el-col>
           <el-col :span="20">
@@ -212,43 +178,12 @@
             ></el-image>
           </el-col>
         </el-row>
-        
         <div v-show="detail_info.process">
         	<Steps :process="detail_info.process"></Steps>
         </div>
         <div class="btn_danger flex-box flex-center-center" v-if="detail_info.applyor_id==$userInfo().id&&detail_info.can_refuse == '1'&&detail_info.source_type==2">
            <el-button type="danger" class="danger" @click="revocation" :loading="cx_loading">撤销</el-button>
          </div>
-        <!-- <div v-show="detail_info.process != false">
-          <p class="row_title">
-            审批
-            <span class="row_tips">多人审批时,以最后一人为准</span>
-          </p>
-
-          <div class="examine_steps">
-            <el-steps direction="vertical" :space="50">
-              <el-step v-for="(item,index) in detail_info.process" :key="index">
-                <template slot="icon">
-                  <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>
-                </template>
-                <template slot="description">
-                  <div>{{item.time}}</div>
-                  <div style="color: #333; margin-bottom: 15px;">{{item.review_remark}}</div>
-                </template>
-              </el-step>
-            </el-steps>
-          </div>
-        </div> -->
       </div>
     </el-drawer>
 
@@ -284,7 +219,7 @@ export default {
 
       dialogVisible: false,
       itemIndex: 0,
-      
+
       cx_loading:false,
       selectId:0,
     };

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

@@ -11,7 +11,7 @@
         <el-button type="primary" @click="point_a" plain>奖扣A分</el-button>
       </el-col>
       <el-col :span="6" :offset="6">
-        <el-input v-model="keyword" placeholder="输入内容" @keyup.enter.native="getData">
+        <el-input v-model="keyword" placeholder="输入内容" maxlength="20" @keyup.enter.native="getData">
           <el-button slot="append" @click="getData" icon="el-icon-search"></el-button>
         </el-input>
       </el-col>

+ 13 - 35
src/views/workbench/performance/add_team_performance.vue

@@ -77,13 +77,7 @@
       :multi="true"
       @confirm="add_employee_confirm"
     />
-    <!-- <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>
-      <span slot="footer">
-         <el-button @click="publicClose()">取消</el-button>
-         <el-button type="primary" @click="sub_add_employee">完成</el-button>
-       </span>
-    </el-dialog> --> 
+    </el-dialog> -->
     <!-- 选择终审人 -->
         <EmployeeSelector
           title="选择终审人"
@@ -96,13 +90,6 @@
           :multi="false"
           @confirm="add_employee_confirm"
       />
-    <!-- <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>
-       <span slot="footer">
-         <el-button @click="publicClose()">取消</el-button>
-         <el-button type="primary" @click="sub_add_employee">完成</el-button>
-       </span>
-    </el-dialog> -->
 
     <!-- 选择终审人 -->
       <EmployeeSelector
@@ -114,14 +101,6 @@
         :selected="selectNotice"
         @confirm="add_employee_confirm"
       />
-    <!-- <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>
-       <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="resultDataShow"
@@ -131,12 +110,12 @@
       width="600px">
         <el-row style="margin-bottom: 20px">
           <el-col :span="24">
-            <span class="color_green" >录入成功:{{resultData.success_count}} 条</span> / 
-            <span class="color_red" >录入失败:{{resultData.fail_count}} 条</span> / 
+            <span class="color_green" >录入成功:{{resultData.success_count}} 条</span> /
+            <span class="color_red" >录入失败:{{resultData.fail_count}} 条</span> /
             <span class="color_gray" >录入总数:{{resultData.total}} 条</span>
           </el-col>
         </el-row>
-        
+
         <div>
           <el-table :data="resultData.list" border stripe>
             <el-table-column
@@ -144,16 +123,16 @@
               width="50">
             </el-table-column>
 
-            <el-table-column 
-              prop="target" 
+            <el-table-column
+              prop="target"
               label="姓名" >
               <template slot-scope="scope">
                 <span><WWOpenData type="userName" :openid="scope.row.target"></WWOpenData></span>
               </template>
             </el-table-column>
 
-            <el-table-column 
-              prop="msg" 
+            <el-table-column
+              prop="msg"
               label="结果">
               <template slot-scope="scope">
                 <span :class="scope.row.status==1?'color_green':'color_red'">{{scope.row.msg}}</span>
@@ -168,9 +147,9 @@
             <el-button type="primary" v-if="Speedy_none" @click="openDetail()" block size="medium" style="width: 100%"> 创建绩效任务 </el-button>
           </el-col>
         </el-row>
-        
+
     </el-dialog>
-    
+
     <el-dialog
     title="沿用往期月绩效"
     :visible.sync="dialogVisible"
@@ -178,7 +157,7 @@
     :before-close="handleClose">
       <div v-loading="handleLoading">
         <span style="color:#101010;">当前要创建的月绩效考核时间为:{{thePerformanceMonth}}</span>
-        <div style="font-size:16px;margin-top:10px;color:#101010;">沿用 
+        <div style="font-size:16px;margin-top:10px;color:#101010;">沿用
           <el-date-picker
           style="width:150px"
             prefix-icon=""
@@ -241,7 +220,7 @@
         </div>
       </div>
     </el-dialog>
-    
+
       <!-- @close='error_list_SX' -->
     <el-dialog
       title="创建结果"
@@ -267,7 +246,6 @@
 </template>
 
 <script>
-// import EmployeeSelector1 from '@/views/common/EmployeeSelector1'
 import EmployeeSelector from '@/views/common/EmployeeSelector';
 export default {
   name: 'add_team_performance',
@@ -586,7 +564,7 @@ export default {
                   self.Speedy_none = true
                 }
                 self.resultDataShow = true
-                
+
               } else {
                 self.$message.error(res.data.msg);
               }

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

@@ -112,13 +112,6 @@
         <el-form-item label="发放奖票">
           <el-switch v-model="ticket_count"></el-switch>
         </el-form-item>
-<!--        <el-form-item label="递交审批">
-          <div class="border flex-box flex-v-ce" @click="add_employee_show = true">
-            <div class="flex-1 fontColorF" v-if="!selectUser.name">请选择</div>
-            <div class="flex-1" v-else>{{selectUser.name}}</div>
-            <i class="el-icon-arrow-down"></i>
-          </div>
-        </el-form-item> -->
         <el-form-item>
           <el-button @click="handleClose2()">取消</el-button>
           <el-button type="primary" @click="submitForm2('examineItem2')">确定</el-button>
@@ -233,7 +226,7 @@
     </el-drawer>
     <!-- 添加人员 -->
     <el-dialog title="添加人员" :visible.sync="add_employee_show" :before-close="publicClose"  width="700px">
-        <EmployeeSelector1 v-if="add_employee_form" ref="Employee" :isChecKedAll="false" :can_select_dept="false" :multi="false" @confirm="add_employee_confirm"></EmployeeSelector1>
+        <!-- <EmployeeSelector1 v-if="add_employee_form" ref="Employee" :isChecKedAll="false" :can_select_dept="false" :multi="false" @confirm="add_employee_confirm"></EmployeeSelector1> -->
          <span slot="footer">
            <el-button @click="publicClose()">取消</el-button>
            <el-button type="primary" @click="sub_add_employee">完成</el-button>
@@ -286,7 +279,7 @@
 </template>
 
 <script>
-    import EmployeeSelector1 from '@/views/common/EmployeeSelector1'
+// import EmployeeSelector1 from '@/views/common/EmployeeSelector1'
 import noData from '@/components/noData';
 export default {
   name: 'participation_detail',

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

@@ -158,7 +158,7 @@
       'formData.status'(val){
         this.formData.page = 1
         this.formData.pt_id = 0
-        this.formData.sort = 'expire'
+        this.formData.sort = 'publish'
         this.list = []
         this.get_list()
       }