龚焕茏
2024-09-10 c07afd1671f6a3444bdb1f9652662d8e49958c99
班级考勤报表导出
3个文件已修改
108 ■■■■■ 已修改文件
src/router/index.js 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/class/index.vue 91 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/home/index.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/router/index.js
@@ -95,6 +95,19 @@
      },
    ],
  },
  {
    path: "/",
    component: Layout,
    redirect: "/class",
    children: [
      {
        path: "/class",
        name: "Class",
        component: () => import("@/views/class/index"),
        meta: { title: "班级", icon: "table" },
      },
    ],
  },
  // {
  //   path: "/educational",
  //   component: Layout,
src/views/class/index.vue
@@ -6,34 +6,19 @@
    </el-tabs>
    <div style="display: flex; flex-direction: row-reverse">
      <div style="width: 300px">
        <el-input
          placeholder="按班级名称搜索"
          v-model="data.keyword"
          class="input-with-select"
          size="small"
        >
          <el-button
            slot="append"
            icon="el-icon-search"
            @click="fetchData"
          ></el-button>
        <el-input placeholder="按班级名称搜索" v-model="data.keyword" class="input-with-select" size="small">
          <el-button slot="append" icon="el-icon-search" @click="fetchData"></el-button>
        </el-input>
      </div>
    </div>
    <div style="height: calc(100vh - 248px)">
      <el-table
        v-loading="listLoading"
        :data="list"
        element-loading-text="Loading"
        fit
        v-if="activeName == 'all'"
        height="100%"
      >
      <el-table v-loading="listLoading" :data="list" element-loading-text="Loading" fit v-if="activeName == 'all'"
        height="100%">
        <el-table-column label="班级名称">
          <template slot-scope="scope">
            <el-link type="primary" :underline="false">{{
              scope.row.team.name
            }}</el-link>
      scope.row.team.name
    }}</el-link>
          </template>
        </el-table-column>
        <el-table-column label="班级人数" width="200">
@@ -41,23 +26,23 @@
        </el-table-column>
        <el-table-column label="课包/会员卡" width="200">
          <template slot-scope="scope">{{
            scope.row.team.voucher.name
          }}</template>
      scope.row.team.voucher.name
    }}</template>
        </el-table-column>
        <el-table-column label="教师" width="">
          <template slot-scope="scope">{{
            concatenateArray(scope.row.team.sessionStaffs)
          }}</template>
        concatenateArray(scope.row.team.sessionStaffs)
      }}</template>
        </el-table-column>
        <el-table-column label="操作" width="200">
          <template slot-scope="scope">
            <el-button type="text" @click="handleExport(scope.row)">
              导出
            </el-button>
          </template>
        </el-table-column>
      </el-table>
      <el-table
        v-loading="listLoading"
        :data="list"
        element-loading-text="Loading"
        fit
        height="100%"
        v-else
      >
      <el-table v-loading="listLoading" :data="list" element-loading-text="Loading" fit height="100%" v-else>
        <el-table-column label="班级名称">
          <template slot-scope="scope">{{ scope.row.name }} </template>
        </el-table-column>
@@ -72,17 +57,23 @@
      </el-table>
    </div>
    <div>
      <el-pagination
        @size-change="handleSizeChange"
        @current-change="handleCurrentChange"
        :current-page="data.pageIn.index + 1"
        :page-sizes="[10, 20, 30, 40]"
        :page-size="data.pageIn.size"
        layout="total, sizes, prev, pager, next, jumper"
        :total="total"
      >
      <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange"
        :current-page="data.pageIn.index + 1" :page-sizes="[10, 20, 30, 40]" :page-size="data.pageIn.size"
        layout="total, sizes, prev, pager, next, jumper" :total="total">
      </el-pagination>
    </div>
    <el-dialog title="导出" :visible.sync="dialogVisible" width="50%">
      <el-form ref="form" :model="form" label-width="180px">
        <el-form-item label="日期范围">
          <el-date-picker v-model="form.dateRange" type="daterange" range-separator="至" start-placeholder="开始日期"
            end-placeholder="结束日期" value-format="yyyy-MM-dd"></el-date-picker>
        </el-form-item>
      </el-form>
      <div slot="footer" class="dialog-footer">
        <el-button @click="dialogVisible = false">取 消</el-button>
        <el-button type="primary" @click="confirmExport">导 出</el-button>
      </div>
    </el-dialog>
  </div>
</template>
@@ -102,6 +93,12 @@
  },
  data() {
    return {
      dialogVisible: false,
      form: {
        dateRange: [],
        teamId: "",
        name: "",
      },
      list: null,
      listLoading: true,
      activeName: "all",
@@ -126,6 +123,16 @@
    this.fetchData();
  },
  methods: {
    handleExport(row) {
      this.form.dateRange = [];
      this.form.teamId = row.team.id;
      this.form.name = row.team.name;
      this.dialogVisible = true;
    },
    confirmExport() {
      this.download('exportSignIn?teamId=' + this.form.teamId + '&startTime=' + this.form.dateRange[0] + '&endTime=' + this.form.dateRange[1], {
      }, `${this.form.name}上课签到表.xlsx`)
    },
    handleSizeChange(val) {
      this.data.pageIn.size = val;
      this.fetchData("pageIn");
src/views/home/index.vue
@@ -48,9 +48,9 @@
  methods: {
    getUserDate() {
      login({
        code: "021dbA000NZ9LS1gKd400jYDAX1dbA0L",
        code: "041C8oFa14gC8I0FDRHa1cw5ae1C8oFj",
      }).then((res) => {
        localStorage.setItem("user", JSON.stringify(res.data));
        localStorage.setItem("user", JSON.stringify(res));
      });
    },
  },