school.vue 6.99 KB
<template>
  <div>
    <back-box>
      <template slot="title">
        <span>学校设置</span>
      </template>
      <template slot="btns">
        <el-tooltip effect="dark" content="导入学校名单" placement="bottom">
          <el-button
            type="primary"
            icon="el-icon-upload2"
            size="mini"
            plain
            circle
            @click="diaUp = true"
          ></el-button>
        </el-tooltip>
      </template>
    </back-box>
    <div class="page-content">
      <div class="content-box">
        <i class="el-icon-edit"></i>
        <ul class="school-info">
          <li class="school-item">
            <span class="s1">学校名称:</span>
            <span class="s2">{{ school.schoolName || "--" }}</span>
          </li>
          <li class="school-item">
            <span class="s1">授课端管理密码:</span>
            <span class="s2">{{ school.managePwd || "--" }}</span>
          </li>
          <li class="school-item">
            <span class="s1">联系人:</span>
            <span class="s2">{{ school.contactPerson || "--" }}</span>
          </li>
          <li class="school-item">
            <span class="s1">手机号码:</span>
            <span class="s2">{{ school.contactPhone || "--" }}</span>
          </li>
          <li class="school-item">
            <span class="s1">学段:</span>
            <span class="s2">{{
              school.sections | getSections(school.sections)
            }}</span>
          </li>
          <li class="school-item">
            <span class="s1">所属集团:</span>
            <span class="s2">{{ school.tenantName || "--" }}</span>
          </li>
        </ul>
        <div class="grade-box">
          <p class="h-title">年级管理</p>
          <ul class="grade-info">
            <li
              class="grade-item"
              v-for="item in tableData"
              :key="item.grade"
              @click="setGrade(item)"
            >
              <p class="grade-name">{{ item.gradeName }}</p>
              <div class="grade-class">
                <p>
                  <i class="fa fa-building"></i>班级:{{
                    item.classList.length
                  }}个
                </p>
                <p>
                  <i class="fa fa-book"></i>科目:{{
                    item.subjectNames.length
                  }}个
                </p>
              </div>
            </li>
          </ul>
          <el-empty
            :image-size="100"
            v-if="!tableData.length && loading == false"
            description="没有更多数据"
          ></el-empty>
        </div>
      </div>
    </div>
    <el-dialog title="导入学校名单" :visible.sync="diaUp" width="400">
      <up-load id="downDevice" :url="url" fileName="学校名单">
        <p class="down-txt" slot="down">
          通过Excel名单导入学校名单,点击
          <el-link type="danger" @click="downExcel">模板下载</el-link> 。
        </p>
      </up-load>
      <div class="dialog-footer" slot="footer">
        <el-button @click="diaUp = false">取 消</el-button>
      </div>
    </el-dialog>
  </div>
</template>

<script>
import { downloadFile } from "@/utils";
export default {
  filters: {
    getSections(val) {
      let arr = val.split(",");
      let sections = arr.map((item) => {
        let txt;
        switch (item) {
          case "0":
            txt = "未知";
            break;
          case "1":
            txt = "小学";
            break;
          case "2":
            txt = "初中";
            break;
          case "3":
            txt = "高中";
            break;
          case "4":
            txt = "大学";
            break;
          case "7":
            txt = "未知";
            break;
          default:
            txt = "未知";
        }
        return txt;
      });
      return sections.join(",");
    },
  },
  data() {
    return {
      url: "xxx",
      diaUp: false,
      loading: false,
      school: {
        schoolName: "长水实验中学",
        managePwd: "123456",
        contactPerson: "张老师",
        contactPhone: "13548645321",
        sections: "初中",
        tenantName: "长水集团",
      },
      tableData: [],
    };
  },
  created() {
    this._QueryDataSchool();
    this._QueryDataGrade();
  },
  methods: {
    setGrade(obj) {},
    async _QueryDataSchool() {
      this.loading = true;
      const { data, status, info } = await this.$request.schoolDetail();
      this.loading = false;
      console.log(status);
      if (status === 0) {
        this.school = { ...data };
      } else {
        this.$message.error(info);
      }
    },
    async _QueryDataGrade() {
      this.loading = true;
      const { data, status, info } = await this.$request.gradeList();
      this.loading = false;
      console.log(status);
      if (status === 0) {
        this.tableData = data.list || [];
      } else {
        this.$message.error(info);
      }
    },
    async downExcel() {
      let data = await this.$request.downDevice({
        id: this.id,
      });
      if (data && !data.code) {
        let blob = new Blob([data], {
          type: "application/vnd.ms-excel;charset=utf-8",
        });
        downloadFile(`设备信息.xlsx`, blob);
      } else {
        this.$message.error(data.message);
      }
    },
  },
};
</script>

<style lang="scss" scoped>
.page-content {
  padding: 20px;
  .content-box {
    background: #f8f8f8;
    border-radius: 16px;
    position: relative;
    .el-icon-edit {
      position: absolute;
      top: 12px;
      right: 12px;
      padding: 5px;
      font-size: 18px;
      cursor: pointer;
      &:hover {
        color: #36f;
      }
    }
  }
  .school-info {
    display: flex;
    flex-wrap: wrap;
    padding: 16px 0;
    border-bottom: 0.5px solid #f2f2f2;
    .school-item {
      width: 50%;
      line-height: 48px;
      padding-left: 100px;
      display: flex;
      box-sizing: border-box;
      .s1 {
        width: 160px;
        font-size: 15px;
        color: #888;
      }
      .s2 {
        flex: 1;
      }
    }
  }
  .grade-box {
    padding: 20px;
    .grade-info {
      display: flex;
      flex-wrap: wrap;
      padding: 20px;
      .grade-item {
        width: 300px;
        margin-right: 50px;
        margin-bottom: 40px;
        box-sizing: border-box;
        padding: 12px 16px;
        border-radius: 10px;
        box-shadow: 1px 1px 3px #888;
        cursor: pointer;
        transition: all .5s;
        &:hover{
          transform: translate(-2px,-5px);
          box-shadow: 5px 5px 10px #888;
        }
      }
      .grade-name {
        font-size: 16px;
        font-weight: bold;
        line-height: 18px;
        padding-bottom: 12px;
      }
      .grade-class {
        display: flex;
        justify-content: space-between;
        font-size: 15px;
        padding-right: 20px;
        .fa {
          font-size: 18px;
          margin-right: 5px;
          color: #a4a4a4;
        }
        .fa-book {
          font-size: 20px;
        }
      }
    }
  }
}
</style>