马宇豪
2023-09-26 8d6b6b8f322e83c82c24e1128d34f6106e6021c7
src/views/coalMine/cPeopleManage/index.vue
@@ -3,7 +3,7 @@
    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
      <el-form-item label="用户姓名" prop="userName">
        <el-input
          v-model="queryParams.userName"
          v-model="queryParams.name"
          placeholder="请输入用户姓名"
          clearable
          @keyup.enter.native="handleQuery"
@@ -11,18 +11,11 @@
      </el-form-item>
      <el-form-item label="身份证号" prop="idCard">
        <el-input
          v-model="queryParams.idCard"
          v-model="queryParams.code"
          placeholder="请输入身份证号"
          clearable
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label="作业类型">
        <el-cascader
          v-model="classiFy"
          :options="expertTypes"
          :props="{ expandTrigger: 'hover', value: 'id',label: 'label'}"
          @change="handleChange"></el-cascader>
      </el-form-item>
      <el-form-item>
        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
@@ -37,104 +30,198 @@
          plain
          icon="el-icon-plus"
          size="mini"
          @click="handleAdd"
          @click="openPeople({},'add')"
          v-hasPermi="['system:experts:add']"
        >新增</el-button>
      </el-col>
      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
      <right-toolbar :showSearch.sync="showSearch" @queryTable="getPage"></right-toolbar>
    </el-row>
    <el-table v-loading="loading" :data="expertList">
    <el-table v-loading="loading" :data="dataList">
      <el-table-column type="index" label="序号" width="55" align="center" />
      <el-table-column label="姓名" align="center" prop="name" />
      <el-table-column label="性别" align="center" prop="name" />
      <el-table-column label="身份证号" align="center" prop="name" />
      <el-table-column label="电话" align="center" prop="phone"/>
      <el-table-column label="民族" align="center" prop="phone"/>
      <el-table-column label="所属单位" align="center" prop="phone"/>
      <el-table-column label="最高学历" align="center" prop="degree" />
      <el-table-column label="资格类型" align="center" prop="job" />
      <el-table-column label="作业证书" align="center" prop="speciality" />
      <el-table-column label="关联作业次数" align="center"/>
      <el-table-column label="违章次数" align="center"/>
      <el-table-column label="证件照片" align="center"/>
      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
      <el-table-column label="性别" align="center" prop="sex">
        <template #default="scope">
          <el-button
            size="mini"
            type="text"
            icon="el-icon-edit"
            @click="handleUpdate(scope.row)"
          >编辑</el-button>
          <el-button
            size="mini"
            type="text"
            icon="el-icon-view"
            @click="handleView(scope.row)"
          >查看</el-button>
<!--          <el-button-->
<!--            size="mini"-->
<!--            type="text"-->
<!--            icon="el-icon-delete"-->
<!--            @click="handleDelete(scope.row)"-->
<!--            v-hasPermi="['system:experts:remove']"-->
<!--          >删除</el-button>-->
          {{ scope.row.sex == 0?'男':'女' }}
        </template>
      </el-table-column>
      <el-table-column label="身份证号" align="center" prop="code" />
      <el-table-column label="电话" align="center" prop="mobilePhone"/>
      <el-table-column label="民族" align="center" prop="nationCode">
        <template #default="scope">
          {{getNationName(scope.row.nationCode)}}
        </template>
      </el-table-column>
      <el-table-column label="最高学历" align="center" prop="eduLevel"/>
      <el-table-column label="证件照片" align="center" prop="photoPath">
        <template #default="scope">
          <el-button type="text" @click="viewFile(scope.row.photoAttachment)">预览</el-button>
        </template>
      </el-table-column>
      <el-table-column label="个人履历" align="center">
        <template #default="scope">
          <el-button type="text" @click="openExperience(scope.row)">管理<span v-if="scope.row.cmStaffResumes && scope.row.cmStaffResumes.length>0">({{scope.row.cmStaffResumes.length}})</span></el-button>
        </template>
      </el-table-column>
      <el-table-column label="资格证书" align="center">
        <template #default="scope">
          <el-button type="text" @click="openCert(scope.row)">管理<span v-if="scope.row.cmStaffQas && scope.row.cmStaffQas.length>0">({{scope.row.cmStaffQas.length}})</span></el-button>
        </template>
      </el-table-column>
      <el-table-column label="培训经历" align="center">
        <template #default="scope">
          <el-button type="text" @click="openTrain(scope.row)">管理<span v-if="scope.row.cmStaffTrains && scope.row.cmStaffTrains.length>0">({{scope.row.cmStaffTrains.length}})</span></el-button>
        </template>
      </el-table-column>
      <el-table-column label="考试经历" align="center">
        <template #default="scope">
          <el-button type="text" @click="openExam(scope.row)">管理<span v-if="scope.row.cmStaffExams && scope.row.cmStaffExams.length>0">({{scope.row.cmStaffExams.length}})</span></el-button>
        </template>
      </el-table-column>
      <el-table-column label="操作" align="center" width="200" class-name="small-padding fixed-width">
        <template #default="scope">
          <el-button size="mini" type="text" icon="el-icon-edit" @click="openPeople(scope.row,'edit')">编辑</el-button>
          <el-button size="mini" type="text" icon="el-icon-view" @click="openPeople(scope.row,'view')">查看</el-button>
          <el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)" v-hasPermi="['system:experts:remove']">删除</el-button>
<!--          <el-button size="mini" type="text" icon="el-icon-edit" @click="openExperience(scope.row)">个人履历</el-button>-->
<!--          <el-button size="mini" type="text" icon="el-icon-edit" @click="openCert(scope.row)">资格证书</el-button>-->
<!--          <el-button size="mini" type="text" icon="el-icon-edit" @click="openTrain(scope.row)">培训经历</el-button>-->
        </template>
      </el-table-column>
    </el-table>
    <pagination
      v-show="total>0"
      :total="total"
      :page.sync="queryParams.pageIndex"
      :page.sync="queryParams.pageNum"
      :limit.sync="queryParams.pageSize"
      @pagination="getList"
      @pagination="getPage"
    />
    <peopleDialog ref="peopleDialog" @closeDialog="resetQuery"></peopleDialog>
    <experienceDialog ref="experienceDialog" @closeDialog="resetQuery"></experienceDialog>
    <certDialog ref="certDialog" @closeDialog="resetQuery"></certDialog>
    <trainDialog ref="trainDialog" @closeDialog="resetQuery"></trainDialog>
    <examDialog ref="examDialog" @closeDialog="resetQuery"></examDialog>
  </div>
</template>
<script>
import peopleDialog from "@/views/coalMine/cPeopleManage/components/peopleDialog";
import experienceDialog from "@/views/coalMine/cPeopleManage/components/experienceDialog";
import certDialog from "@/views/coalMine/cPeopleManage/components/certDialog"
import trainDialog from "@/views/coalMine/cPeopleManage/components/trainDialog"
import examDialog from "@/views/coalMine/cPeopleManage/components/examDialog"
import { getPeoplePage,delPeople } from "@/api/coalMine/people";
import axios from "axios";
import { getToken } from "@/utils/auth";
export default {
  name: "cPeopleManage",
  dicts: [],
  components: {},
  dicts: ['sys_nation_code'],
  components: { peopleDialog, experienceDialog, certDialog, trainDialog, examDialog },
  data() {
    return {
      loading: false,
      single: true,
      multiple: true,
      showSearch: true,
      addForm: false,
      total: 0,
      expertTypes: [],
      expertList: [],
      queryParams: {},
      classiFy: [],
      form: {},
      rules: {
        classifyName: [
          { required: true, message: "分类名称不能为空", trigger: "blur" }
        ]
      }
      dataList: [],
      queryParams: {
        code: '',
        name: '',
        pageNum: 1,
        pageSize: 10
      },
    };
  },
  created() {
    const t = this
    t.getPage()
  },
  methods: {
    getList(){
    async getPage(){
      const t = this
      t.loading = true
      const res = await getPeoplePage(t.queryParams)
      if(res.code == 200){
        t.dataList = res.rows
        t.total = res.total
      }else{
        t.$message({
          message: res.msg,
          type: 'warning'
        })
      }
      t.loading = false
    },
    handleChange(){
    getNationName(code){
      let obj = JSON.parse(JSON.stringify(this.dict.type.sys_nation_code)).find(i=>i.value == code)
      if(obj){
        return obj.label
      }else{
        return '无'
      }
    },
    openPeople(data,type){
      this.$refs.peopleDialog.openDialog(data,type)
    },
    openExperience(data){
      this.$refs.experienceDialog.openDialog(data)
    },
    openCert(data){
      this.$refs.certDialog.openDialog(data)
    },
    openTrain(data){
      this.$refs.trainDialog.openDialog(data)
    },
    openExam(data){
      this.$refs.examDialog.openDialog(data)
    },
    handleDelete(row){
      this.$confirm('此操作将永久删除该条数据, 是否继续?', '提示', {
        confirmButtonText: '确定',
        cancelButtonText: '取消',
        type: 'warning'
      }).then(async () => {
        const res = await delPeople(row.id)
        if(res.code == 200){
          this.$message({
            type: 'success',
            message: '删除成功!'
          });
          await this.getPage()
        }else{
          this.$message({
            type: 'warning',
            message: res.msg
          });
        }
      }).catch(() => {
      });
    },
    handleQuery(){
      this.queryParams.pageNum = 1
      this.getPage()
    },
    resetQuery(){
      this.$refs['queryForm'].resetFields()
      this.getPage()
    },
    handleAdd(){
    },
    viewFile(file){
      axios.get(process.env.VUE_APP_BASE_API + file.fileUrl,{headers:{'Content-Type': 'application/json','Authorization': "Bearer " + getToken()},responseType: 'blob'}).then(res=>{
        if (res) {
          const link = document.createElement('a')
          let blob = new Blob([res.data],{type: res.data.type})
          link.style.display = "none";
          link.href = URL.createObjectURL(blob); // 创建URL
          window.open(link.href)
        } else {
          this.$message.error('获取文件失败')
    }
      })
    },
  }
};
</script>