luoyb
2021-04-27 1cab74c1a81df1160f11745b9a53142a21b99d73
src/views/yunpan/fujian.vue
@@ -1,654 +1,986 @@
<template>
  <div>
    <el-container>
      <el-header :height="headerHeight">
        <el-row class="search-title">
          <el-col :span="18" class="title">
            <div class="zs-title">附件管理</div>
          </el-col>
          <el-col :span="6" class="search">
            <el-input v-model="empName" class="input-empName" maxlength="10" size="medium" style="width:220px">
              <el-button slot="append" icon="el-icon-search" @click.native="findEmpAccessory()" />
            </el-input>
            <el-button
              type="danger"
              size="mini"
              class="hr-but-all"
              @click="advancedQueryShowMethods"
            >高级查询</el-button>
          </el-col>
        </el-row>
        <el-form v-show="advancedQueryShow" ref="queryform" :model="queryform">
          <el-row>
            <el-col :span="3">员工编号:
              <el-input v-model="queryform.empNumb" size="small" maxlength="20" style="width:85px" />
            </el-col>
            <el-col :span="3">姓名:
              <el-input v-model="queryform.empName" size="small" maxlength="10" style="width:110px" />
            </el-col>
            <el-col :span="4">身份证号:
              <el-input v-model="queryform.certificateNumb" size="small" maxlength="18" style="width:140px" />
            </el-col>
            <el-col :span="3">护卫点:
              <el-input v-model="queryform.deptName" size="small" maxlength="20" style="width:100px" />
            </el-col>
            <el-col :span="8">入职日期:
              <el-date-picker
                v-model="queryform.entryDate"
                size="small"
                type="daterange"
                align="right"
                unlink-panels
                range-separator="至"
                value-format="yyyy-MM-dd"
                start-placeholder="开始日期"
                end-placeholder="结束日期"
                :picker-options="pickerOptions"
              />
            </el-col>
            <el-col :span="3">
              <el-button size="mini" class="hr-but-all" type="primary" @click="findEmpAccessoryAll()">查询</el-button>
              <el-button size="mini" class="hr-but" type="danger" @click="resetQueryform()">重置</el-button>
            </el-col>
          </el-row>
          <el-row>
            <el-col :span="24">
              <table id="searchTable">
                <tr>
                  <td class="td">性别</td>
                  <td class="td-group">
                    <el-radio-group v-model="queryform.sex" class="fj-radio">
                      <el-radio :label="-1">全部</el-radio>
                      <el-radio :label="1">男性</el-radio>
                      <el-radio :label="2">女性</el-radio>
                    </el-radio-group>
                  </td>
                </tr>
                <tr>
                  <td class="td">最高学历</td>
                  <td class="td-group">
                    <el-radio-group v-model="queryform.education" class="fj-radio">
                      <el-radio :label="-1">全部</el-radio>
                      <el-radio :label="91">无学历</el-radio>
                      <el-radio :label="81">小学</el-radio>
                      <el-radio :label="71">初中</el-radio>
                      <el-radio :label="61">高中</el-radio>
                      <el-radio :label="42">中技</el-radio>
                      <el-radio :label="41">中专</el-radio>
                      <el-radio :label="31">大学专科</el-radio>
                      <el-radio :label="21">大学本科</el-radio>
                      <el-radio :label="11">硕士</el-radio>
                      <el-radio :label="10">博士</el-radio>
                    </el-radio-group>
                  </td>
                </tr>
                <tr>
                  <td class="td">政治面貌</td>
                  <td class="td-group">
                    <el-radio-group v-model="queryform.politics" class="fj-radio">
                      <el-radio :label="-1">全部</el-radio>
                      <el-radio label="01">党员</el-radio>
                      <el-radio label="02">预备</el-radio>
                      <el-radio label="03">共青</el-radio>
                      <el-radio label="04">民革</el-radio>
                      <el-radio label="05">民盟</el-radio>
                      <el-radio label="06">民建</el-radio>
                      <el-radio label="07">民进</el-radio>
                      <el-radio label="08">农工</el-radio>
                      <el-radio label="09">致公</el-radio>
                      <el-radio label="10">九三</el-radio>
                      <el-radio label="11">台盟</el-radio>
                      <el-radio label="12">民主</el-radio>
                      <el-radio label="12">群众</el-radio>
                    </el-radio-group>
                  </td>
                </tr>
                <tr>
                  <td class="td">年龄</td>
                  <td class="td-group">
                    <el-radio-group v-model="queryform.age" class="fj-radio">
                      <el-radio :label="-1">全部</el-radio>
                      <el-radio :label="1">18-29</el-radio>
                      <el-radio :label="2">30-39</el-radio>
                      <el-radio :label="3">40-49</el-radio>
                      <el-radio :label="4">50-59</el-radio>
                      <el-radio :label="5">60-69</el-radio>
                      <el-radio :label="6">69及以上</el-radio>
                    </el-radio-group>
                  </td>
                </tr>
                <tr>
                  <td class="td">档案情况</td>
                  <td class="td-group">
                    <el-radio-group v-model="queryform.archivesStatus" class="fj-radio">
                      <el-radio :label="-1">全部</el-radio>
                      <el-radio :label="1">已移交</el-radio>
                      <el-radio :label="0">未移交</el-radio>
                    </el-radio-group>
                  </td>
                </tr>
                <tr>
                  <td class="td">保险类型</td>
                  <td class="td-group">
                    <el-radio-group v-model="queryform.insuranceType" class="fj-radio">
                      <el-radio :label="-1">全部</el-radio>
                      <el-radio :label="1">(深户)五险一档</el-radio>
                      <el-radio :label="2">(非深户)五险一档</el-radio>
                      <el-radio :label="3">(非深户)五险二档</el-radio>
                      <el-radio :label="4">(非深户)五险三档)</el-radio>
                      <el-radio :label="5">(非深户)四险一档</el-radio>
                    </el-radio-group>
                  </td>
                </tr>
              </table>
            </el-col>
          </el-row>
        </el-form>
      </el-header>
      <el-main>
        <el-row style="margin-bottom: 10px;height: 40px;">
          <el-col :span="24">
            <el-button class="hr-but-all" type="danger" @click="dialogFormVisible = true">新建标签</el-button>
            <el-popconfirm title="是否删除标签?" @onConfirm="deldialogFormVisible = true">
              <el-button slot="reference" class="hr-but" type="danger">删除标签</el-button>
            </el-popconfirm>
            <el-button class="hr-but-all" type="danger" @click="downloaddialogFormVisible = true">下载附件</el-button>
            <el-dialog
              title="新建标签"
              :visible.sync="dialogFormVisible"
              width="25%"
              class="add-label"
            >
              <el-form ref="labelform" :model="labelform" :rules="rules">
                <el-form-item
                  label="标签名称:"
                  :label-width="formLabelWidth"
                  prop="labelname"
                >
                  <el-input v-model="labelform.labelname" autocomplete="off" />
                </el-form-item>
                <el-form-item
                  label="标签code:"
                  :label-width="formLabelWidth"
                  prop="labelcode"
                >
                  <el-input v-model="labelform.labelcode" autocomplete="off" />
                </el-form-item>
                <el-form-item label="标签排序:" :label-width="formLabelWidth" prop="sort">
                  <el-input-number
                    v-model="labelform.sort"
                    :min="0"
                    :max="100"
                    label="排序"
                  />
                </el-form-item></el-form>
              <div slot="footer" class="dialog-footer">
                <el-button @click="dialogFormVisible = false">取 消</el-button>
                <el-button
                  type="primary"
                  @click="addlabel('labelform')"
                >确 定</el-button>
              </div>
            </el-dialog>
            <el-dialog
              title="删除标签"
              :visible.sync="deldialogFormVisible"
              width="25%"
              class="add-label"
            >
              <el-form ref="dellabelform" :model="labelform" :rules="delrules">
                <el-form-item
                  label="标签名称:"
                  :label-width="formLabelWidth"
                  prop="labelid"
                >
                  <el-select v-model="labelform.labelid" placeholder="请选择标签名称">
                    <el-option
                      v-for="item in labelData"
                      :key="item.labelid"
                      :value="item.labelid"
                      :label="item.labelname"
                    />
                  </el-select>
                </el-form-item>
              </el-form>
              <div slot="footer" class="dialog-footer">
                <el-button @click="deldialogFormVisible = false">取 消</el-button>
                <el-button
                  type="primary"
                  @click="dellabel('dellabelform')"
                >确 定</el-button>
              </div>
            </el-dialog>
            <el-dialog
              title="下载附件"
              :visible.sync="downloaddialogFormVisible"
              width="25%"
              class="add-label"
            >
              <el-form ref="dellabelform" :model="labelform" :rules="delrules">
                <el-form-item
                  label="标签名称:"
                  :label-width="formLabelWidth"
                  prop="labelid"
                >
                  <el-select v-model="labelform.labelid" placeholder="请选择标签名称">
                    <el-option
                      key="-1"
                      value="-1"
                      label="全部"
                    />
                    <el-option
                      v-for="item in labelData"
                      :key="item.labelid"
                      :value="item.labelid"
                      :label="item.labelname"
                    />
                  </el-select>
                </el-form-item>
              </el-form>
              <div slot="footer" class="dialog-footer">
                <el-button @click="downloaddialogFormVisible = false">取 消</el-button>
                <el-button
                  type="primary"
                  @click="downloadlabel('dellabelform')"
                >确 定</el-button>
              </div>
            </el-dialog>
          </el-col>
        </el-row>
        <el-dialog title="附件管理" :visible.sync="dialogShowUploadfj" width="80%" class="fjgl-class" top="10px">
          <uploadfj v-if="dialogShowUploadfj" :rowitem="rowitem" @cancleChooseUser="cancleChooseUser()" />
        </el-dialog>
        <el-table ref="empAccessoryTable" :data="tableData" class="fj-table" style="width: 100%;color: #000;">
          <el-table-column
            type="selection"
            width="55"
          />
          <el-table-column label="操作" width="120">
            <template slot-scope="scope">
              <el-button
                type="text"
                size="small"
                @click.native.prevent="dialogShow(scope.$index, scope.row)"
              >
                上传
              </el-button>
            </template>
          </el-table-column>
          <el-table-column prop="empName" label="姓名" width="100" />
          <el-table-column prop="certificateNumb" label="身份证号" width="180" />
          <el-table-column prop="deptName" label="护卫点(部门)" width="180" />
          <el-table-column prop="jobName" label="岗位" width="100" />
          <template v-for="(col) in labelData">
            <el-table-column :key="col.labelid" :prop="col.labelcode" :label="col.labelname">
              <template slot-scope="scope">
                <el-link type="primary"> {{ scope.row[col.labelcode] }}</el-link>
              </template>
            </el-table-column>
          </template>
        </el-table>
        <pagination
          v-show="total>0"
          :total="total"
          :page.sync="pagination.num"
          :limit.sync="pagination.size"
          @pagination="search"
        />
      </el-main>
    </el-container>
  </div>
</template>
<script>
import Pagination from '@/components/Pagination'
export default {
  components: {
    Pagination
  },
  data() {
    return {
      downloaddialogFormVisible: false,
      deldialogFormVisible: false,
      formLabelWidth: '100px',
      dialogFormVisible: false,
      labelform: {
        labelname: '',
        labelid: '',
        labelcode: '',
        empIds: '',
        sort: 0
      },
      rules: {
        labelname: [
          { required: true, message: '请输入标签名称', trigger: 'blur' },
          { min: 2, max: 10, message: '长度在 2 到 10 个字符', trigger: 'blur' }
        ],
        labelcode: [
          { required: true, message: '请输入标签code', trigger: 'blur' },
          { min: 3, max: 10, message: '长度在 3 到 20 个字符', trigger: 'blur' }
        ],
        sort: [{ required: true, message: '请输入排序', type: 'number', trigger: 'blur' }]
      },
      delrules: {
        labelid: [{ required: true, message: '请选择标签', trigger: 'change' }]
      },
      dialogShowUploadfj: false,
      empName: '',
      queryform: {
        empNumb: '',
        empName: '',
        certificateNumb: '',
        deptName: '',
        entryDate: '',
        sex: -1,
        education: -1,
        politics: -1,
        age: -1,
        archivesStatus: -1,
        insuranceType: -1
      },
      total: 0, // 总数量
      pagination: { // 分页参数
        size: 10,
        num: 1
      },
      headerHeight: '20px',
      advancedQueryShow: false,
      dialogTableVisible: false,
      pickerOptions: {
        shortcuts: [
          {
            text: '最近一周',
            onClick(picker) {
              const end = new Date()
              const start = new Date()
              start.setTime(start.getTime() - 3600 * 1000 * 24 * 7)
              picker.$emit('pick', [start, end])
            }
          },
          {
            text: '最近一个月',
            onClick(picker) {
              const end = new Date()
              const start = new Date()
              start.setTime(start.getTime() - 3600 * 1000 * 24 * 30)
              picker.$emit('pick', [start, end])
            }
          },
          {
            text: '最近三个月',
            onClick(picker) {
              const end = new Date()
              const start = new Date()
              start.setTime(start.getTime() - 3600 * 1000 * 24 * 90)
              picker.$emit('pick', [start, end])
            }
          }
        ]
      },
      tableData: [],
      labelData: [],
      defaultProps: {
        children: 'children',
        label: 'label'
      },
      rowitem: {}
    }
  },
  mounted() {
    this.initLabel()
    this.fetch()
  },
  methods: {
    downloadlabel(formName) {
      this.$refs[formName].validate(valid => {
        if (valid) {
          var selected = this.$refs.empAccessoryTable.selection
          if (selected.length < 1) {
            this.$message({
              message: '请选择数据!',
              type: 'warning'
            })
            return
          }
          const empIds = []
          selected.forEach((j) => {
            empIds.push(j.empId)
          })
          this.labelform.empIds = empIds
          this.$download('hr/empAccessory/singledownload', { ...this.labelform }, '附件_' + new Date().getTime() + '.zip').then(() => {
            this.downloaddialogFormVisible = false
            this.$message({
              message: this.$t('下载成功'),
              type: 'success'
            })
          })
        }
      })
    },
    dellabel(formName) {
      this.$refs[formName].validate(valid => {
        if (valid) {
          this.$get('hr/empAccessory/' + this.labelform.labelid).then((r) => {
            if (r.data.data > 0) {
              this.$message({
                message: this.$t('标签内还有' + r.data.data + '个附件,若要删除请先转存附件!'),
                type: 'warning'
              })
            } else {
              this.$delete('hr/label', { ...this.labelform }).then(() => {
                this.dialogFormVisible = false
                this.$message({
                  message: this.$t('tips.deleteSuccess'),
                  type: 'success'
                })
                this.deldialogFormVisible = false
                // 初始加载
                this.initLabel()
                this.fetch()
              })
            }
          })
        }
      })
    },
    addlabel(formName) {
      this.$refs[formName].validate(valid => {
        if (valid) {
          this.$post('hr/label', { ...this.labelform }).then(() => {
            this.dialogFormVisible = false
            this.$message({
              message: this.$t('tips.createSuccess'),
              type: 'success'
            })
            this.labelform.labelname = ''
            this.labelform.sort = 0
            this.labelform.labelcode = ''
            // 初始加载
            this.initLabel()
            this.fetch()
          })
        }
      })
    },
    dialogShow(index, tableData) {
      this.rowitem = tableData
      this.dialogShowUploadfj = true
    },
    cancleChooseUser() {
      this.dialogShowUploadfj = false
    },
    skipuploadfj() {
      this.resolvePath('/uploadfj')
    },
    resetQueryform() {
      this.queryform = {
        empNumb: '',
        empName: '',
        certificateNumb: '',
        deptName: '',
        entryDate: '',
        sex: -1,
        education: -1,
        politics: -1,
        age: -1,
        archivesStatus: -1,
        insuranceType: -1
      }
    },
    findEmpAccessoryAll() {
      this.fetch({
        ...this.queryform
      })
    },
    findEmpAccessory() {
      var params = { empName: this.empName }
      this.fetch({
        ...params
      })
    },
    // 翻页方法
    search() {
      this.fetch({
        ...this.queryform
      })
    },
    handleNodeClick(data) {
      console.log(data)
    },
    fetch(params = {}) {
      params.pageSize = this.pagination.size
      params.pageNum = this.pagination.num
      this.$get('hr/empAccessory/list', {
        ...params
      }).then((r) => {
        const data = r.data.data
        this.total = data.total
        this.tableData = data.rows
      })
    },
    initLabel() {
      this.$get('hr/label').then((r) => {
        this.labelData = r.data.data
      })
    },
    advancedQueryShowMethods() {
      if (this.advancedQueryShow) {
        this.headerHeight = '70px'
        this.advancedQueryShow = false
      } else {
        this.headerHeight = '330px'
        this.advancedQueryShow = true
      }
    },
    showEmpInfo() {
      this.dialogTableVisible = true
    }
  }
}
</script>
<style lang="scss" scoped>
.el-main {
   margin-top: 10px;
}
.el-input-number {
   width: 100%;
}
</style>
<style lang="scss">
.fjgl-class{
    height: 90%;
     overflow: auto;
}
.add-lable {
   text-align: initial;
}
.input-empName .el-input-group__append{
      padding: 0 15px 0 0;
}
.fj-table thead {
    color: #000;
}
.fj-radio{
.el-radio__input.is-checked .el-radio__inner {
    border-color: #a32c30;;
    background: #a32c30;;
}
.el-radio__label {
   color: #000 !important;
}
}
.td {
   background-color: #dddcdc !important;
   width: 160px;
   text-align: center;
}
.td-group {
   padding-left: 20px;
}
.search-title {
   height: 50px;
   .search {
      position: relative;
      top: 50%;
      transform: translateY(-50%);
   }
   .title {
      position: relative;
      top: 40%;
      transform: translateY(-50%);
   }
   .zs-title {
      border-left: 4px solid #a32c30;
      padding-left: 10px;
      font-size: 16px;
   }
}
#searchTable {
   margin-top: 10px;
   border-collapse: collapse;
   width: 100%;
}
#searchTable td,
#searchTable th {
   border: 1px solid #b0b0b0;
   color: #000;
   height: 40px;
   background-color: #fff;
}
#ygxq table {
   color: #000;
   border-collapse: collapse;
   margin: 0 auto;
   text-align: center;
   width: 100%;
   margin-top: 20px;
}
#ygxq table td,
#ygxq table th {
   border: 1px solid #eae9e9;
   color: #666;
   height: 30px;
}
#ygxq table thead th {
   background-color: #fff;
   width: 100px;
}
#ygxq table tr:nth-child(odd) {
   background: #fff;
}
#ygxq table tr:nth-child(even) {
   background: #f5fafa;
}
</style>
<template>
  <div style="background-color: #fff;height: 100%;">
    <el-container>
      <el-header :height="headerHeight">
        <el-row class="search-title">
          <el-col :span="16" class="title">
            <div class="zs-title">附件管理</div>
          </el-col>
          <el-col :span="8" class="search">
            <el-input v-model="basic" class="input-empName" maxlength="18" size="medium" style="width:220px" />
            <span class="search-btn" @click="findEmpAccessory">查询</span>
            <span class="sup-search-btn" @click="advancedQueryShowMethods">高级查询</span>
          </el-col>
        </el-row>
        <el-form v-show="advancedQueryShow" ref="queryform" :model="queryform">
          <el-row style="margin: 10px 0px;">
            <el-col :span="4">员工编号:
              <el-input v-model="queryform.empNumb" size="small" maxlength="20" style="width:140px" />
            </el-col>
            <el-col :span="4">姓名:
              <el-input v-model="queryform.empName" size="small" maxlength="10" style="width:140px" />
            </el-col>
            <el-col :span="4">身份证号:
              <el-input v-model="queryform.certificateNumb" size="small" maxlength="18" style="width:140px" />
            </el-col>
            <el-col :span="4">护卫点:
              <el-input v-model="queryform.deptName" size="small" maxlength="20" style="width:140px" />
            </el-col>
            <el-col :span="8">入职日期:
              <el-date-picker
                v-model="queryform.entryDate"
                size="small"
                type="daterange"
                align="right"
                unlink-panels
                range-separator="至"
                value-format="yyyy-MM-dd"
                start-placeholder="开始日期"
                end-placeholder="结束日期"
                :picker-options="pickerOptions"
              />
            </el-col>
          </el-row>
          <el-row>
            <el-col :span="20">
              文件名:
              <el-input v-model="queryform.fileName" size="small" maxlength="20" style="width:140px" />
            </el-col>
            <el-col :span="4">
              <el-button size="mini" class="hr-but-all" type="primary" @click="findEmpAccessoryAll()">查询</el-button>
              <el-button size="mini" class="hr-but" type="danger" @click="resetQueryform()">重置</el-button>
            </el-col>
          </el-row>
          <el-row>
            <el-col :span="24">
              <table id="searchTable" class="searchTable">
                <tr>
                  <td class="td">性别:</td>
                  <td class="td-group">
                    <el-checkbox-group v-model="queryform.sex" class="fj-checkbox">
                      <el-checkbox label="" @change="selectAllSex">全部</el-checkbox>
                      <el-checkbox
                        v-for="data in sexOptions"
                        :key="data.dicItemName"
                        :label="data.dicItemCode"
                      >
                        {{ data.dicItemName }}
                      </el-checkbox>
                    </el-checkbox-group>
                  </td>
                </tr>
                <tr>
                  <td class="td">最高学历:</td>
                  <td class="td-group">
                    <el-checkbox-group v-model="queryform.education" class="fj-checkbox">
                      <el-checkbox label="" @change="selectAllEducation">全部</el-checkbox>
                      <el-checkbox
                        v-for="data in educationOptions"
                        :key="data.dicItemName"
                        :label="data.dicItemCode"
                      >
                        {{ data.dicItemName }}
                      </el-checkbox>
                    </el-checkbox-group>
                  </td>
                </tr>
                <tr>
                  <td class="td">政治面貌:</td>
                  <td class="td-group">
                    <el-checkbox-group v-model="queryform.politics" class="fj-checkbox">
                      <el-checkbox label="" @change="selectAllPolitics">全部</el-checkbox>
                      <el-checkbox
                        v-for="data in statusOptions"
                        :key="data.dicItemName"
                        :label="data.dicItemCode"
                      >
                        {{ data.dicItemName }}
                      </el-checkbox>
                    </el-checkbox-group>
                  </td>
                </tr>
                <tr>
                  <td class="td">年龄:</td>
                  <td class="td-group">
                    <el-checkbox-group v-model="queryform.age" class="fj-checkbox">
                      <el-checkbox label="" @change="selectAllAgeStr">全部</el-checkbox>
                      <el-checkbox
                        v-for="data in ageStrOptions"
                        :key="data.dicItemName"
                        :label="data.dicItemCode"
                      >
                        {{ data.dicItemName }}
                      </el-checkbox>
                    </el-checkbox-group>
                  </td>
                </tr>
                <tr>
                  <td class="td">档案情况:</td>
                  <td class="td-group">
                    <el-checkbox-group v-model="queryform.archivesStatus" class="fj-checkbox">
                      <el-checkbox label="" @change="selectAllArchivesStatus">全部</el-checkbox>
                      <el-checkbox
                        v-for="data in archivesStatusOptions"
                        :key="data.dicItemName"
                        :label="data.dicItemCode"
                      >
                        {{ data.dicItemName }}
                      </el-checkbox>
                    </el-checkbox-group>
                  </td>
                </tr>
                <tr>
                  <td class="td">社保档位:</td>
                  <td class="td-group">
                    <el-checkbox-group v-model="queryform.insuranceType" class="fj-checkbox">
                      <el-checkbox label="" @change="selectAllInsuranceType">全部</el-checkbox>
                      <el-checkbox
                        v-for="data in insuranceTypeOptions"
                        :key="data.dicItemName"
                        :label="data.dicItemCode"
                      >
                        {{ data.dicItemName }}
                      </el-checkbox>
                    </el-checkbox-group>
                  </td>
                </tr>
                <tr>
                  <td class="td">员工状态:</td>
                  <td class="td-group">
                    <el-checkbox-group v-model="queryform.empStatus" class="fj-checkbox">
                      <el-checkbox label="" @change="selectAllEmpStatus">全部</el-checkbox>
                      <el-checkbox label="0">在职</el-checkbox>
                      <el-checkbox label="1">离职</el-checkbox>
                      <el-checkbox label="2">退休</el-checkbox>
                    </el-checkbox-group>
                  </td>
                </tr>
                <tr>
                  <td class="td">工作证:</td>
                  <td class="td-group">
                    <el-checkbox-group v-model="queryform.empCardStatus" class="fj-checkbox">
                      <el-checkbox label="" @change="selectAllEmpCardStatus">全部</el-checkbox>
                      <el-checkbox
                        v-for="data in empCardStatusOptions"
                        :key="data.dicItemName"
                        :label="data.dicItemCode"
                      >
                        {{ data.dicItemName }}
                      </el-checkbox>
                    </el-checkbox-group>
                  </td>
                </tr>
                <tr>
                  <td class="td">员工手册:</td>
                  <td class="td-group">
                    <el-checkbox-group v-model="queryform.handbookStatus" class="fj-checkbox">
                      <el-checkbox label="" @change="selectAllHandbookStatus">全部</el-checkbox>
                      <el-checkbox
                        v-for="data in handbookStatusOptions"
                        :key="data.dicItemName"
                        :label="data.dicItemCode"
                      >
                        {{ data.dicItemName }}
                      </el-checkbox>
                    </el-checkbox-group>
                  </td>
                </tr>
                <tr>
                  <td class="td">员工类型:</td>
                  <td class="td-group">
                    <el-checkbox-group v-model="queryform.empType" class="fj-checkbox">
                      <el-checkbox label="" @change="selectAllEmpType">全部</el-checkbox>
                      <el-checkbox
                        v-for="data in empTypeOptions"
                        :key="data.dicItemName"
                        :label="data.dicItemCode"
                      >
                        {{ data.dicItemName }}
                      </el-checkbox>
                    </el-checkbox-group>
                  </td>
                </tr>
                <tr>
                  <td class="td">入职类型:</td>
                  <td class="td-group">
                    <el-checkbox-group v-model="queryform.entryType" class="fj-checkbox">
                      <el-checkbox label="" @change="selectAllEntryType">全部</el-checkbox>
                      <el-checkbox :label="4">新入职</el-checkbox>
                      <el-checkbox :label="5">最新入职</el-checkbox>
                      <el-checkbox :label="6">返聘入职</el-checkbox>
                    </el-checkbox-group>
                  </td>
                </tr>
                <tr>
                  <td class="td">相关证件:</td>
                  <td class="td-group">
                    <el-checkbox-group v-model="queryform.certificateList" class="fj-checkbox">
                      <el-checkbox label="" @change="selectAllCertificateList">全部</el-checkbox>
                      <el-checkbox
                        v-for="data in certificateListOptions"
                        :key="data.dicItemName"
                        :label="data.dicItemCode"
                      >
                        {{ data.dicItemName }}
                      </el-checkbox>
                    </el-checkbox-group>
                  </td>
                </tr>
              </table>
            </el-col>
          </el-row>
        </el-form>
      </el-header>
      <el-main style="height: 85vh;">
        <el-row style="margin-bottom: 10px;height: 40px;">
          <el-col :span="24">
            <el-button class="hr-but-all" type="danger" @click="dialogFormVisible = true">新建标签</el-button>
            <el-button type="primary" @click="deldialogFormVisible = true">删除标签</el-button>
            <el-button class="hr-but-all" type="danger" @click="downloaddialogFormVisible = true">下载附件</el-button>
            <el-dialog
              title="新建标签"
              :visible.sync="dialogFormVisible"
              width="25%"
              class="add-label"
            >
              <el-form ref="labelform" :model="labelform" :rules="rules">
                <el-form-item
                  label="标签名称:"
                  :label-width="formLabelWidth"
                  prop="labelname"
                >
                  <el-input v-model="labelform.labelname" autocomplete="off" />
                </el-form-item>
                <el-form-item
                  label="标签code:"
                  :label-width="formLabelWidth"
                  prop="labelcode"
                >
                  <el-input v-model="labelform.labelcode" autocomplete="off" />
                </el-form-item>
                <el-form-item label="标签排序:" :label-width="formLabelWidth" prop="sort">
                  <el-input-number
                    v-model="labelform.sort"
                    :min="0"
                    :max="100"
                    label="排序"
                  />
                </el-form-item></el-form>
              <div slot="footer" class="dialog-footer">
                <el-button @click="dialogFormVisible = false">取 消</el-button>
                <el-button
                  type="primary"
                  @click="addlabel('labelform')"
                >确 定</el-button>
              </div>
            </el-dialog>
            <el-dialog
              title="删除标签"
              :visible.sync="deldialogFormVisible"
              width="25%"
              class="add-label"
            >
              <el-form ref="dellabelform" :model="labelform" :rules="delrules">
                <el-form-item
                  label="标签名称:"
                  :label-width="formLabelWidth"
                  prop="labelid"
                >
                  <el-select v-model="labelform.labelid" placeholder="请选择标签名称">
                    <el-option
                      v-for="item in labelData"
                      :key="item.labelid"
                      :value="item.labelid"
                      :label="item.labelname"
                    />
                  </el-select>
                </el-form-item>
              </el-form>
              <div slot="footer" class="dialog-footer">
                <el-button @click="deldialogFormVisible = false">取 消</el-button>
                <el-button
                  type="primary"
                  @click="dellabel('dellabelform')"
                >确 定</el-button>
              </div>
            </el-dialog>
            <el-dialog
              title="下载附件"
              :visible.sync="downloaddialogFormVisible"
              width="25%"
              class="add-label"
            >
              <el-form ref="dellabelform" :model="labelform" :rules="delrules">
                <el-form-item
                  label="标签名称:"
                  :label-width="formLabelWidth"
                  prop="labelid"
                >
                  <el-select v-model="labelform.labelid" placeholder="请选择标签名称">
                    <el-option
                      key="-1"
                      value="-1"
                      label="全部"
                    />
                    <el-option
                      v-for="item in labelData"
                      :key="item.labelid"
                      :value="item.labelid"
                      :label="item.labelname"
                    />
                  </el-select>
                </el-form-item>
              </el-form>
              <div slot="footer" class="dialog-footer">
                <el-button @click="downloaddialogFormVisible = false">取 消</el-button>
                <el-button
                  type="primary"
                  @click="downloadlabel('dellabelform')"
                >确 定</el-button>
              </div>
            </el-dialog>
          </el-col>
        </el-row>
        <el-dialog title="附件管理" :visible.sync="dialogShowUploadfj" height="100vh" fullscreen class="fjgl-class" @close="closeDialog()">
          <uploadfj v-if="dialogShowUploadfj" :rowitem="rowitem" :tableindex="tableindex" />
        </el-dialog>
        <el-row>
          <el-col :span="21" style="line-height: 50px;">
            已为您搜索出<span style="color:red">{{ total }}</span>条符合条件的记录
          </el-col>
        </el-row>
        <el-table
          ref="empAccessoryTable"
          :data="tableData"
          stripe
          border
          :cell-style="{padding:'4.8px 0','text-align':'center'}"
          :header-cell-style="{'height':'5.3vh','background-color':'#e6e6e6','text-align':'center'}"
          style="width: 100%;color: #000;"
          @sort-change="changeSort"
        >
          <el-table-column
            type="selection"
            width="55"
          />
          <el-table-column label="操作" width="80">
            <template slot-scope="scope">
              <span
                style="color: #a00515;display: inline-block;width: 50%;cursor: pointer"
                @click="dialogShow(scope.$index, scope.row)"
              >上传</span>
            </template>
          </el-table-column>
          <el-table-column show-overflow-tooltip prop="empNumb" label="编号" width="90px" sortable="custom" :sort-orders="['ascending', 'descending']" />
          <el-table-column show-overflow-tooltip prop="deptName" label="护卫点(部门)" width="140px" sortable="custom" :sort-orders="['ascending', 'descending']" />
          <el-table-column show-overflow-tooltip prop="jobName" label="岗位" width="90px" sortable="custom" :sort-orders="['ascending', 'descending']" />
          <el-table-column show-overflow-tooltip prop="certificateNumb" label="身份证号码" width="180px" sortable="custom" :sort-orders="['ascending', 'descending']" />
          <el-table-column show-overflow-tooltip prop="empName" label="姓名" width="90px" sortable="custom" :sort-orders="['ascending', 'descending']" />
          <template v-for="(col) in labelData">
            <el-table-column :key="col.labelid" show-overflow-tooltip :prop="col.labelcode" :label="col.labelname">
              <template slot-scope="scope">
                <el-link type="primary" :class="{ number: scope.row[col.labelcode] !== 0}" @click.native="dialogShow(scope.$index, scope.row, scope.column.property)"> {{ scope.row[col.labelcode] }}</el-link>
              </template>
            </el-table-column>
          </template>
        </el-table>
        <pagination
          v-show="total>0"
          style="text-align: right;width: 98%;"
          :total="total"
          :page.sync="pagination.num"
          :limit.sync="pagination.size"
          @pagination="search"
        />
      </el-main>
    </el-container>
  </div>
</template>
<script>
import Pagination from '@/components/Pagination'
import { Loading } from 'element-ui'
export default {
  components: {
    Pagination
  },
  data() {
    return {
      sort: {}, // 排序
      queryCheckAll: {
        sexcheckAll: false,
        sexisIndeterminate: true
      },
      downloaddialogFormVisible: false,
      deldialogFormVisible: false,
      formLabelWidth: '100px',
      dialogFormVisible: false,
      labelform: {
        labelname: '',
        labelid: '',
        labelcode: '',
        empIds: '',
        sort: 0
      },
      rules: {
        labelname: [
          { required: true, message: '请输入标签名称', trigger: 'blur' },
          { min: 2, max: 10, message: '长度在 2 到 10 个字符', trigger: 'blur' }
        ],
        labelcode: [
          { required: true, message: '请输入标签code', trigger: 'blur' },
          { min: 3, max: 10, message: '长度在 3 到 20 个字符', trigger: 'blur' }
        ],
        sort: [{ required: true, message: '请输入排序', type: 'number', trigger: 'blur' }]
      },
      delrules: {
        labelid: [{ required: true, message: '请选择标签', trigger: 'change' }]
      },
      dialogShowUploadfj: false,
      basic: '',
      queryform: {
        basic: '',
        empNumb: '',
        empName: '',
        certificateNumb: '',
        deptName: '',
        entryDate: '',
        sex: [],
        education: [],
        politics: [],
        age: [],
        archivesStatus: [],
        insuranceType: [],
        empStatus: [],
        empCardStatus: [],
        handbookStatus: [],
        empType: [],
        entryType: [],
        certificateList: []
      },
      total: 0, // 总数量
      pagination: { // 分页参数
        size: 15,
        num: 1
      },
      headerHeight: '20px',
      advancedQueryShow: false,
      dialogTableVisible: false,
      pickerOptions: {
        shortcuts: [
          {
            text: '最近一周',
            onClick(picker) {
              const end = new Date()
              const start = new Date()
              start.setTime(start.getTime() - 3600 * 1000 * 24 * 7)
              picker.$emit('pick', [start, end])
            }
          },
          {
            text: '最近一个月',
            onClick(picker) {
              const end = new Date()
              const start = new Date()
              start.setTime(start.getTime() - 3600 * 1000 * 24 * 30)
              picker.$emit('pick', [start, end])
            }
          },
          {
            text: '最近三个月',
            onClick(picker) {
              const end = new Date()
              const start = new Date()
              start.setTime(start.getTime() - 3600 * 1000 * 24 * 90)
              picker.$emit('pick', [start, end])
            }
          }
        ]
      },
      tableData: [],
      labelData: [],
      defaultProps: {
        children: 'children',
        label: 'label'
      },
      tableindex: 0,
      rowitem: {},
      sexOptions: [],
      insuranceTypeOptions: [],
      educationOptions: [],
      statusOptions: [],
      ageStrOptions: [],
      archivesStatusOptions: [],
      empCardStatusOptions: [],
      handbookStatusOptions: [],
      empTypeOptions: []
    }
  },
  mounted() {
    this.initLabel()
    this.fetch()
    this.getDicts('empType').then(response => {
      this.empTypeOptions = response.data
    })
    this.getDicts('empCardStatus').then(response => {
      this.empCardStatusOptions = response.data
    })
    this.getDicts('handbookStatus').then(response => {
      this.handbookStatusOptions = response.data
    })
    this.getDicts('sex').then(response => {
      this.sexOptions = response.data
    })
    this.getDicts('EDUCATION').then(response => {
      this.educationOptions = response.data
    })
    this.getDicts('PLITICAL').then(response => {
      this.statusOptions = response.data
    })
    this.getDicts('ageStr').then(response => {
      this.ageStrOptions = response.data
    })
    this.getDicts('archivesStatus').then(response => {
      this.archivesStatusOptions = response.data
    })
    this.getDicts('INSURANCETYPE').then(response => {
      this.insuranceTypeOptions = response.data
    })
    this.getDicts('certificateList').then(response => {
      this.certificateListOptions = response.data
    })
  },
  methods: {
    changeSort(val) {
      this.sort.field = val.prop
      this.sort.order = val.order
      this.search()
    },
    closeDialog() {
      this.search()
    },
    handleCheckAllChange(val) {
      this.queryCheckAll.sexisIndeterminate = false
    },
    downloadlabel(formName) {
      this.$refs[formName].validate(valid => {
        if (valid) {
          var selected = this.$refs.empAccessoryTable.selection
          if (selected.length < 1) {
            this.$message({
              message: '请选择数据!',
              type: 'warning'
            })
            return
          }
          const empIds = []
          selected.forEach((j) => {
            empIds.push(j.empId)
          })
          this.labelform.empIds = empIds
          const loadingInstance = Loading.service({ fullscreen: true })
          this.$download('hr/empAccessory/singledownload', { ...this.labelform }, '附件_' + new Date().getTime() + '.zip').then(() => {
            this.downloaddialogFormVisible = false
            loadingInstance.close()
            this.$message({
              message: this.$t('下载成功'),
              type: 'success'
            })
          })
        }
      })
    },
    dellabel(formName) {
      this.$refs[formName].validate(valid => {
        if (valid) {
          this.$get('hr/empAccessory/' + this.labelform.labelid).then((r) => {
            if (r.data.data > 0) {
              this.$message({
                message: this.$t('标签内还有' + r.data.data + '个附件,若要删除请先转存附件!'),
                type: 'warning'
              })
            } else {
              this.$delete('hr/label', { ...this.labelform }).then(() => {
                this.dialogFormVisible = false
                this.$message({
                  message: this.$t('tips.deleteSuccess'),
                  type: 'success'
                })
                this.deldialogFormVisible = false
                // 初始加载
                this.initLabel()
                this.fetch()
              })
            }
          })
        }
      })
    },
    addlabel(formName) {
      this.$refs[formName].validate(valid => {
        if (valid) {
          this.$post('hr/label', { ...this.labelform }).then(() => {
            this.dialogFormVisible = false
            this.$message({
              message: this.$t('tips.createSuccess'),
              type: 'success'
            })
            this.labelform.labelname = ''
            this.labelform.sort = 0
            this.labelform.labelcode = ''
            // 初始加载
            this.initLabel()
            this.fetch()
          })
        }
      })
    },
    dialogShow(index, tableData, property) {
      var this_ = this
      this_.rowitem = tableData
      this_.labelData.forEach((j) => {
        if (j.labelcode === property) {
          this_.tableindex = this_.labelData.indexOf(j)
        }
      })
      this.dialogShowUploadfj = true
    },
    skipuploadfj() {
      this.resolvePath('/uploadfj')
    },
    resetQueryform() {
      this.basic = ''
      this.queryform = {
        empNumb: '',
        empName: '',
        certificateNumb: '',
        deptName: '',
        entryDate: '',
        fileName: '',
        sex: [],
        education: [],
        politics: [],
        age: [],
        archivesStatus: [],
        insuranceType: []
      }
    },
    findEmpAccessoryAll() {
      this.fetch({
        ...this.queryform
      })
    },
    findEmpAccessory() {
      var params = { basic: this.basic }
      this.fetch({
        ...params
      })
    },
    // 刷新方法
    search() {
      if (this.basic === '') {
        this.fetch({
          ...this.queryform,
          ...this.sort
        })
      } else {
        var params = { basic: this.basic }
        this.fetch({
          ...params,
          ...this.sort
        })
      }
    },
    handleNodeClick(data) {
      console.log(data)
    },
    fetch(params = {}) {
      params.pageSize = this.pagination.size
      params.pageNum = this.pagination.num
      this.$get('hr/empAccessory/list', {
        ...params
      }).then((r) => {
        const data = r.data.data
        this.total = data.total
        this.tableData = data.rows
      })
    },
    initLabel() {
      this.$get('hr/label').then((r) => {
        this.labelData = r.data.data
      })
    },
    advancedQueryShowMethods() {
      if (this.advancedQueryShow) {
        this.headerHeight = '20px'
        this.advancedQueryShow = false
      } else {
        this.headerHeight = 'auto'
        this.advancedQueryShow = true
      }
    },
    selectAllSex(val) {
      if (val) {
        this.queryform.sex = this.dicListToArr(this.sexOptions)
      } else {
        this.queryform.sex = []
      }
    },
    selectAllEducation(val) {
      if (val) {
        this.queryform.education = this.dicListToArr(this.educationOptions)
      } else {
        this.queryform.education = []
      }
    },
    selectAllPolitics(val) {
      if (val) {
        this.queryform.politics = this.dicListToArr(this.statusOptions)
      } else {
        this.queryform.politics = []
      }
    },
    selectAllAgeStr(val) {
      if (val) {
        this.queryform.ageStr = this.dicListToArr(this.ageStrOptions)
      } else {
        this.queryform.ageStr = []
      }
    },
    selectAllArchivesStatus(val) {
      if (val) {
        this.queryform.archivesStatus = this.dicListToArr(this.archivesStatusOptions)
      } else {
        this.queryform.archivesStatus = []
      }
    },
    selectAllInsuranceType(val) {
      if (val) {
        this.queryform.insuranceType = this.dicListToArr(this.insuranceTypeOptions)
      } else {
        this.queryform.insuranceType = []
      }
    },
    selectAllEmpType(val) {
      if (val) {
        this.queryform.empType = this.dicListToArr(this.empTypeOptions)
      } else {
        this.queryform.empType = []
      }
    },
    selectAllHandbookStatus(val) {
      if (val) {
        this.queryform.handbookStatus = this.dicListToArr(this.handbookStatusOptions)
      } else {
        this.queryform.handbookStatus = []
      }
    },
    selectAllEmpStatus(val) {
      if (val) {
        this.queryform.empStatus = ['0', '1', '2', '3']
      } else {
        this.queryform.empStatus = []
      }
    },
    selectAllEntryType(val) {
      if (val) {
        this.queryParams.entryType = [20, 21, 22]
      } else {
        this.queryParams.entryType = []
      }
    },
    selectAllEmpCardStatus(val) {
      if (val) {
        this.queryform.empCardStatus = this.dicListToArr(this.empCardStatusOptions)
      } else {
        this.queryform.empCardStatus = []
      }
    },
    selectAllDimissionType(val) {
      if (val) {
        this.queryform.inOutType = this.dicListToArr(this.dimissionTypeOptions)
      } else {
        this.queryform.inOutType = []
      }
    },
    selectAllCertificateList(val) {
      if (val) {
        this.queryform.certificateList = this.dicListToArr(this.certificateListOptions)
      } else {
        this.queryform.certificateList = []
      }
    },
    // dic列表转为数组
    dicListToArr(dicList) {
      var arr = []
      for (var i = 0; i < dicList.length; i++) {
        var dic = dicList[i]
        arr.push(dic.dicItemCode)
      }
      return arr
    }
  }
}
</script>
<style lang="scss" scoped>
.number{
  color: #5CB87A;
  font-size: 16px;
  font-weight: 600;
}
.el-main {
   margin-top: 10px;
}
.el-input-number {
   width: 100%;
}
.searchTable {
  margin-top: 10px;
  border-collapse: collapse;
  width: 100%;
  tr {
    border-bottom: 1px dashed #d9dadb;
  }
  .td {
    width: 90px;
    text-align: right;
  }
  .td-group {
    padding-left: 20px;
  }
}
</style>
<style lang="scss">
.el-image-viewer__btn{
 color: #a00515;
}
.fj-checkbox{
  .el-checkbox__input.is-checked .el-checkbox__inner {
      border-color: #a32c30;;
      background: #a32c30;;
  }
  .el-checkbox__label {
    color: #000 !important;
  }
}
.fjgl-class{
     overflow: auto;
  .el-dialog__body {
    padding: 0 20px;
  }
  button.el-dialog__headerbtn {
    height: 30px;
    width: 30px;
    background-color: #a00515;
    opacity: 0.8;
    line-height: 30px;
    border-radius: 50%;
    i {
      color: #fff !important;
    }
    &:hover {
      opacity: 0.5;
    }
  }
}
.add-lable {
   text-align: initial;
}
.input-empName .el-input-group__append{
      padding: 0 15px 0 0;
}
.fj-table thead {
    color: #000;
}
.td-group {
   padding-left: 20px;
}
.search-title {
   height: 50px;
   .search {
      position: relative;
      top: 50%;
      transform: translateY(-50%);
   }
   .title {
      position: relative;
      top: 40%;
      transform: translateY(-50%);
   }
   .zs-title {
      border-left: 4px solid #a32c30;
      padding-left: 10px;
      font-size: 16px;
   }
}
#searchTable {
   margin-top: 10px;
   border-collapse: collapse;
   width: 100%;
}
#searchTable td,
#searchTable th {
  border: 0;
  color: #000;
  height: 50px;
  background-color: #fff;
}
#ygxq table {
   color: #000;
   border-collapse: collapse;
   margin: 0 auto;
   text-align: center;
   width: 100%;
   margin-top: 20px;
}
#ygxq table thead th {
   background-color: #fff;
   width: 100px;
}
#ygxq table tr:nth-child(odd) {
   background: #fff;
}
#ygxq table tr:nth-child(even) {
   background: #f5fafa;
}
.search-btn {
  display: inline-block;
  width: 3.64vw;
  height: 3.2vh;
  line-height: 3.2vh;
  text-align: center;
  background-color: #a00515;
  color: #fff;
  margin-left: 1vw;
  box-sizing: border-box;
  cursor: pointer;
  vertical-align: middle;
}
.sup-search-btn {
  display: inline-block;
  width: 5.2vw;
  height: 3.2vh;
  line-height: 3.2vh;
  text-align: center;
  margin-left: 1vw;
  color: #a00515;
  border: 1px solid #a00515;
  box-sizing: border-box;
  cursor: pointer;
  vertical-align: middle;
}
</style>