accountTable.vue 4.5 KB
<template>
  <div class="party-table">
    <el-table
      border
      :data="list"
      style="width: 100%; height: 100%"
      height="100%"
    >
      <el-table-column label="序号" align="center" width="100">
        <template slot-scope="scope">
          <span>{{ (currentPage - 1) * 10 + scope.$index + 1 }}</span>
        </template>
      </el-table-column>
      <el-table-column
        align="center"
        v-for="(item, index) in feildList"
        :key="index"
        :prop="item.prop"
        :label="item.label"
        :width="item.width"
        
      >
        <template slot-scope="scope">
          <div v-if="item.isEdit" class="table-btn-group">
            <el-tooltip content="修改" placement="top">
              <el-button
                circle
                :disabled="scope.row.statusName !== '活跃'"
                @click="handleOperate(scope.row, 'edit')"
              >
                <i class="icon-table icon-edit"></i>
              </el-button>
            </el-tooltip>
            <el-tooltip content="重置密码" placement="top">
              <el-button
                circle
                :disabled="scope.row.statusName !== '活跃'"
                @click="handleOperate(scope.row, 'reset')"
              >
                <i class="icon-table icon-reset"></i>
              </el-button>
            </el-tooltip>
            <el-tooltip content="禁用" placement="top">
              <el-button
                circle
                :disabled="scope.row.statusName !== '活跃'"
                @click="handleOperate(scope.row, 'disable')"
              >
                <i class="icon-table icon-disable"></i>
              </el-button>
            </el-tooltip>
            <el-tooltip content="激活" placement="top">
              <el-button
                circle
                :disabled="scope.row.statusName !== '禁用'"
                @click="handleOperate(scope.row, 'enable')"
              >
                <i class="icon-table icon-enable"></i>
              </el-button>
            </el-tooltip>
            <el-tooltip content="审核详情" placement="top">
              <el-button
                circle
                :disabled="scope.row.statusName == '活跃'"
                @click="handleOperate(scope.row, 'examine')"
              >
                <i class="icon-table icon-detail"></i>
              </el-button>
            </el-tooltip>
          </div>
          <div v-else>
            <span v-if="item.prop === 'roleList'">
              {{ accoutRoleList(scope.row[item.prop]) }}
            </span>
             <span v-else-if="item.prop === 'exiredDate'">
              {{ scope.row[item.prop] || '永久有效' }}
            </span>
            <span v-else>{{ scope.row[item.prop] }}</span>
          </div>
        </template>
      </el-table-column>
    </el-table>
    <audit-info ref="audit" />
  </div>
</template>
<script>
// status 1 启用 2 禁用
import auditInfo from "../auditInfo.vue";
export default {
  data() {
    return {};
  },
  props: {
    currentPage: {
      type: Number,
      default: 1,
    },
    list: {
      type: Array,
      default: () => {
        return [];
      },
    },
    feildList: {
      type: Array,
      default: () => {
        return [];
      },
    },
    rolesList: {
      type: Array,
      default: () => {
        return [];
      },
    },
  },
  components:{auditInfo},
  methods: {
    accoutRoleList(roleArray) {
      if (!this.rolesList.length || !roleArray) {
        return false;
      }
      let roleName = [];
      this.rolesList.forEach((r) => {
        roleArray.forEach((a) => {
          if (r.id == a) {
            roleName.push(r.name);
          }
        });
      });
      return roleName.join("、");
    },
    handleOperate(row, type) {
      if (type != "edit" && type != "examine") {
        this.$confirm("确认进行此操作?", "提示", {
          confirmButtonText: "确定",
          cancelButtonText: "取消",
          type: "warning",
        })
          .then(() => {
            this.handlEmitMsg(row, type);
          })
          .catch(() => {});
      } else if (type == "examine") {
        this.$refs.audit.id = row.id;
        this.$refs.audit.getDetailById();
        this.$refs.audit.dialogVisible = true;
      } else {
        this.handlEmitMsg(row, type);
      }
    },
    handlEmitMsg(row, type) {
      this.$emit("action", {
        row: row,
        type: type,
      });
    },
  },
};
</script>
<style lang="less">
@import "../../../style/table.less";
</style>