zouyu
2026-05-07 b0d4df5f39525ae7fe252e8ee65d85fd71dca721
src/views/performance/attendance/components/staffClockInRecord.vue
@@ -20,14 +20,20 @@
      //进出门类型列表
      enterOrExitList:[
        {
          effect:'light',
          type:'success',
          label:'进门',
          value:1
        },
        {
          effect:'light',
          type:'',
          label:'出门',
          value:2
        },
        {
          effect:'light',
          type:'info',
          label:'进/出门',
          value:3
        }
@@ -274,6 +280,19 @@
          "value": 10002,
          "label": "异常健康码开门"
        }
      ],
      //上/下班状态列表
      workStateList:[
        {
          label: "上班时间",
          value: "00work",
          disabled: 2//出门记录禁用
        },
        {
          label: "下班时间",
            value: "01offWork",
          disabled: 1//进门记录禁用
        }
      ]
    };
  },
@@ -292,7 +311,8 @@
    changeEnableReport(row){
      let data = {
        id:row.id,
        enableReport:row.enableReport
        enableReport:row.enableReport,
        workStateFlag: row.workStateFlag
      }
      changeEnableReport(data).then(res=>{
        if(res.code===200){
@@ -311,18 +331,23 @@
      return label;
    },
    formatterEnterOrExitType(value){
      let label = "";
      let type = {
        effect:'plain',
        type:'warning',
        label:'未知',
        value:value
      };
      this.enterOrExitList.forEach(item=>{
        if(item.value===value){
          label = item.label
          type = item
        }
      })
      return label;
      return type;
    },
    getDataSourceTypeTag(type) {
      const tagMap = {
        0: 'success',
        1: '',
        1: 'info',
      };
      return tagMap[type] || '';
    },
@@ -353,12 +378,12 @@
        :data="tableData"
        border
        style="width: 100%"
        height="300"
        max-height="900"
        :header-cell-style="{textAlign:'center'}"
        :cell-style="{textAlign:'center'}"
      >
        <el-table-column type="index" label="序号" width="60"></el-table-column>
        <el-table-column label="是否纳入考勤" prop="enableReport" width="120">
        <el-table-column fixed="left" type="index" label="序号" width="60"></el-table-column>
        <el-table-column fixed="left" label="是否纳入考勤" prop="enableReport" width="120">
          <template slot-scope="scope">
            <el-switch
              @change="changeEnableReport(scope.row)"
@@ -368,15 +393,30 @@
            </el-switch>
          </template>
        </el-table-column>
        <el-table-column prop="personCode" label="工号" min-width="150" width="150"></el-table-column>
        <el-table-column prop="personName" label="姓名" min-width="150" width="150"></el-table-column>
        <el-table-column prop="deptName" label="部门名称" min-width="150" width="150"></el-table-column>
        <el-table-column prop="cardNumber" label="卡号" min-width="150" width="150"></el-table-column>
        <el-table-column fixed="left" label="标记为上/下班时间" prop="workStateFlag" width="150">
          <template slot-scope="scope">
            <el-select
              clearable
              szie="small"
              @change="changeEnableReport(scope.row)"
              v-model="scope.row.workStateFlag">
              <el-option :disabled="scope.row.enterOrExit && scope.row.enterOrExit===item.disabled"  v-for="(item,index) in workStateList" :label="item.label" :value="item.value" :key="index"/>
            </el-select>
          </template>
        </el-table-column>
        <el-table-column fixed="left" prop="personCode" label="工号" min-width="120" width="120"></el-table-column>
        <el-table-column fixed="left" prop="personName" label="姓名" min-width="120" width="120"></el-table-column>
        <el-table-column prop="deptName" label="部门名称" min-width="100" width="100"></el-table-column>
        <el-table-column prop="cardNumber" label="卡号" min-width="120" width="120" show-overflow-tooltip></el-table-column>
        <el-table-column prop="enterOrExit" label="进出门类型" min-width="100" width="100" >
          <template slot-scope="scope">
            <el-tag :type="formatterEnterOrExitType(scope.row.enterOrExit).type" :effect="formatterEnterOrExitType(scope.row.enterOrExit).effect">{{formatterEnterOrExitType(scope.row.enterOrExit).label}}</el-tag>
          </template>
        </el-table-column>
        <el-table-column prop="swingTime" label="刷卡时间" min-width="180" width="180"></el-table-column>
        <el-table-column prop="channelName" label="考勤点通道名称" min-width="180" width="180"></el-table-column>
        <el-table-column prop="deviceName" label="考勤设备名称" min-width="150" width="150"></el-table-column>
        <el-table-column prop="deviceCode" label="考勤设备编码" min-width="150" width="150"></el-table-column>
        <el-table-column prop="enterOrExit" label="进出门类型" min-width="150" width="150" :formatter="(row)=>formatterEnterOrExitType(row.enterOrExit)"></el-table-column>
        <el-table-column prop="openType" label="开门类型" min-width="150" width="150" :formatter="(row)=>formatterAttendanceType(row.openType)"></el-table-column>
        <el-table-column prop="isSync" label="数据来源" min-width="150" width="150">
          <template slot-scope="scope">