Browse Source

保留老数据

1
mo 2 years ago
parent
commit
ebb6e5f448

+ 1 - 1
src/store/modules/permission.js

@@ -499,7 +499,7 @@ function setDetailRoute(accessedRoutes) {
           hidden: true,
           meta: {
             noCache: "1",
-            title: "VIP/乐理课详情",
+            title: "训练详情",
             belongTopMenu: "/business",
             activeMenu: "/afterSchoolManager",
             id: "xx10"

+ 17 - 17
src/views/afterSchoolManager/afterSchoolDetail.vue

@@ -3,10 +3,11 @@
   <div class="m-container">
     <h2>
       <!-- <div class='squrt'></div> {{ pageName }} -->
-      <el-page-header @back="goBack"
-                      :content="title"></el-page-header>
+      <el-page-header @back="goBack" :content="title"></el-page-header>
     </h2>
-    <afterWorkList saveKey="afterSchoolDetail" />
+    <div class="m-core">
+      <afterWorkList saveKey="afterSchoolDetail" />
+    </div>
   </div>
 </template>
 
@@ -14,27 +15,26 @@
 import afterWorkList from "@/views/afterSchoolManager/afterWorkList";
 export default {
   components: { afterWorkList },
-  data () {
+  data() {
     return {
-      title: '',
-      id: null
+      title: "",
+      id: null,
     };
   },
   //生命周期 - 挂载完成(可以访问DOM元素)
-  mounted () {
+  mounted() {
     this.init();
   },
   methods: {
-    init () {
-      this.title = this.$route.query.title
-      this.id = this.$route.query.extracurricularExercisesId
+    init() {
+      this.title = this.$route.query.title;
+      this.id = this.$route.query.extracurricularExercisesId;
     },
-    goBack () {
-      this.$store.dispatch('delVisitedViews', this.$route)
-      this.$router.push({ path: "/afterSchoolManager"});
-    }
-  }
+    goBack() {
+      this.$store.dispatch("delVisitedViews", this.$route);
+      this.$router.push({ path: "/afterSchoolManager" });
+    },
+  },
 };
 </script>
-<style lang='scss' scoped>
-</style>
+<style lang="scss" scoped></style>

+ 494 - 0
src/views/afterSchoolManager/components/oldAfterWorkList.vue

@@ -0,0 +1,494 @@
+<!--  -->
+<template>
+  <div class>
+    <!-- <h2>
+      <div class="squrt"></div>课外训练
+    </h2>-->
+    <div>
+      <save-form
+        :inline="true"
+        :model="searchForm"
+        @submit="search"
+        :saveKey="formSaveKey"
+        @reset="onReSet"
+        v-if="show"
+        ref="saveForm"
+      >
+        <el-form-item>
+          <el-input
+            v-model.trim="searchForm.search"
+            @keyup.enter.native="
+              (e) => {
+                e.target.blur();
+                $refs.saveForm.save();
+                search();
+              }
+            "
+            clearable
+            placeholder="请输入标题 学生姓名"
+          ></el-input>
+        </el-form-item>
+        <el-form-item prop="organId">
+          <el-select
+            class="multiple"
+            v-model.trim="searchForm.organIdList"
+            filterable
+            clearable
+            placeholder="请选择分部"
+          >
+            <el-option
+              v-for="(item, index) in selects.branchs"
+              :key="index"
+              :label="item.name"
+              :value="item.id"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item>
+          <el-select
+            v-model.trim="searchForm.cloudHomeworkFlag"
+            class="organSelect"
+            filterable
+            clearable
+            placeholder="是否云教练布置"
+          >
+            <el-option label="是" :value="true"></el-option>
+            <el-option label="否" :value="false"></el-option>
+          </el-select>
+        </el-form-item>
+
+        <el-form-item>
+          <el-select placeholder="是否提交" v-model="searchForm.status" clearable>
+            <el-option label="是" value="1"></el-option>
+            <el-option label="否" value="0"></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item>
+          <el-select placeholder="是否评价" v-model="searchForm.isReplied" clearable>
+            <el-option label="是" value="1"></el-option>
+            <el-option label="否" value="0"></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item>
+          <el-select
+            placeholder="及时评价"
+            v-model="searchForm.isRepliedTimely"
+            clearable
+          >
+            <el-option label="是" value="1"></el-option>
+            <el-option label="否" value="0"></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item>
+          <el-select
+            placeholder="是否有vip"
+            v-model="searchForm.existVipCourse"
+            clearable
+          >
+            <el-option label="是" value="1"></el-option>
+            <el-option label="否" value="0"></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item>
+          <el-date-picker
+            v-model.trim="searchForm.timer"
+            style="width: 400px"
+            type="daterange"
+            value-format="yyyy-MM-dd"
+            range-separator="至"
+            start-placeholder="布置开始日期"
+            end-placeholder="布置结束日期"
+            :picker-options="{
+              firstDayOfWeek: 1,
+            }"
+          ></el-date-picker>
+        </el-form-item>
+        <el-form-item>
+          <el-date-picker
+            v-model.trim="searchForm.expireDate"
+            style="width: 400px"
+            type="daterange"
+            value-format="yyyy-MM-dd"
+            range-separator="至"
+            start-placeholder="截止开始日期"
+            end-placeholder="截止结束日期"
+            :picker-options="{
+              firstDayOfWeek: 1,
+            }"
+          ></el-date-picker>
+        </el-form-item>
+
+        <el-form-item>
+          <el-button type="danger" native-type="submit">搜索</el-button>
+          <el-button type="primary" native-type="reset">重置</el-button>
+          <el-button
+            @click="onExport"
+            type="primary"
+            v-permission="'export/extraExercisesReplys'"
+            >导出</el-button
+          >
+        </el-form-item>
+      </save-form>
+      <div class="tableWrap">
+        <el-table
+          style="width: 100%"
+          :header-cell-style="{ background: '#EDEEF0', color: '#444' }"
+          :data="tableList"
+        >
+          <el-table-column align="center" prop="createTime" label="布置时间" width="150">
+            <template slot-scope="scope">{{
+              scope.row.createTime | dateForMinFormat
+            }}</template>
+          </el-table-column>
+          <el-table-column align="center" prop="expireDate" label="截止时间" width="150">
+            <template slot-scope="scope">{{
+              scope.row.expireDate | dateForMinFormat
+            }}</template>
+          </el-table-column>
+          <el-table-column align="center" prop="title" label="训练标题">
+            <template slot-scope="scope">
+              <div>
+                <div v-if="scope.row.extracurricularExercises">
+                  {{ scope.row.extracurricularExercises.title }}
+                </div>
+              </div>
+            </template>
+          </el-table-column>
+          <el-table-column
+            align="center"
+            prop="teacherName"
+            label="老师"
+          ></el-table-column>
+          <el-table-column
+            align="center"
+            prop="organName"
+            label="学员分部"
+          ></el-table-column>
+          <el-table-column align="center" prop="createTime" label="学生姓名">
+            <template slot-scope="scope">
+              <div>
+                <div v-if="scope.row.user">{{ scope.row.user.username }}</div>
+              </div>
+            </template>
+          </el-table-column>
+          <el-table-column
+            align="center"
+            prop="userId"
+            label="学生编号"
+          ></el-table-column>
+          <el-table-column align="center" label="提交训练">
+            <template slot-scope="scope">
+              <div>{{ scope.row.status ? "是" : "否" }}</div>
+            </template>
+          </el-table-column>
+          <el-table-column align="center" prop="createTime" label="提交时间" width="150">
+            <template slot-scope="scope">{{
+              scope.row.submitTime | dateForMinFormat
+            }}</template>
+          </el-table-column>
+          <el-table-column align="center" prop="isReplied" label="是否评价">
+            <template slot-scope="scope">
+              <div>{{ scope.row.isReplied ? "是" : "否" }}</div>
+            </template>
+          </el-table-column>
+          <el-table-column align="center" label="是否有vip" width="100" fixed="right">
+            <template slot-scope="scope">
+              <div>{{ scope.row.existVipCourse ? "是" : "否" }}</div>
+            </template>
+          </el-table-column>
+          <el-table-column
+            align="center"
+            prop="isRepliedTimely"
+            label="及时评价"
+            width="100"
+            fixed="right"
+          >
+            <template slot-scope="scope">
+              <div>{{ scope.row.isRepliedTimely ? "是" : "否" }}</div>
+            </template>
+          </el-table-column>
+          <el-table-column align="center" prop="actualTeacherName" label="是否云教练布置">
+            <template slot-scope="scope">
+              <div>
+                {{ scope.row.musicScoreId ? "是" : "否" }}
+              </div>
+            </template>
+          </el-table-column>
+          <!-- <el-table-column align="center" prop="teacherName" label="老师姓名">
+            <template slot-scope="scope">
+              <div v-if="scope.row.extracurricularExercises&&scope.row.extracurricularExercises.teacher">{{scope.row.extracurricularExercises.teacher.username}}</div>
+            </template>
+          </el-table-column>-->
+          <el-table-column align="center" label="操作" fixed="right">
+            <template slot-scope="scope">
+              <div>
+                <el-button
+                  type="text"
+                  v-permission="'afterWorkList/look'"
+                  @click="lookDetail(scope.row)"
+                  >查看</el-button
+                >
+              </div>
+            </template>
+          </el-table-column>
+        </el-table>
+        <pagination
+          :saveKey="formSaveKey"
+          sync
+          :total.sync="rules.total"
+          :page.sync="rules.page"
+          :limit.sync="rules.limit"
+          :page-sizes="rules.page_size"
+          @pagination="getList"
+        />
+      </div>
+    </div>
+    <el-dialog title="课外训练详情" :visible.sync="afterSchoolVisible" width="600px">
+      <el-form :model="visibleForm" label-width="100px">
+        <el-form-item label="老师姓名">
+          <el-input v-model="visibleForm.teacherName" disabled></el-input>
+        </el-form-item>
+        <el-form-item label="学生姓名">
+          <el-input v-model="visibleForm.studentName" disabled></el-input>
+        </el-form-item>
+        <el-form-item label="截止时间">
+          <el-input v-model="visibleForm.expiryDate" disabled></el-input>
+        </el-form-item>
+        <el-form-item label="训练标题">
+          <el-input v-model="visibleForm.title" disabled></el-input>
+        </el-form-item>
+        <el-form-item label="训练内容">
+          <el-input
+            type="textarea"
+            rows="5"
+            v-model="visibleForm.content"
+            disabled
+          ></el-input>
+        </el-form-item>
+
+        <el-form-item
+          label="学生上传"
+          v-for="(item, index) in visibleForm.attachments"
+          :key="index"
+        >
+          <!-- <el-button type="primary" v-if="item" @click="lookWork(item)">点击播放</el-button> -->
+          <p class="schoolCell" v-if="item" @click="lookWork(item)">点击播放</p>
+        </el-form-item>
+      </el-form>
+    </el-dialog>
+    <el-dialog title="查看训练" width="680px" append-to-body :visible.sync="workVisible">
+      <!-- activeUrl -->
+      <video style="width: 640px" :src="activeSrc" ref="dialogVideo" controls="controls">
+        您的浏览器不支持视频播放
+      </video>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import pagination from "@/components/Pagination/index";
+import {
+  extracurricularExercisesReply,
+  findStudentExtraExerciseDetail,
+} from "@/api/afterSchool";
+import { getEmployeeOrgan } from "@/api/buildTeam";
+import { Export } from "@/utils/downLoadFile";
+import axios from "axios";
+import { getToken } from "@/utils/auth";
+export default {
+  props: ["id", "saveKey"],
+  components: { pagination },
+  data() {
+    const that = this;
+    return {
+      formSaveKey: that.saveKey || "afterWorkList",
+      searchForm: {
+        search: null,
+        timer: [],
+        status: null,
+        isReplied: null,
+        isRepliedTimely: null,
+        isView: null,
+        organIdList: null,
+        expireDate: [],
+        existVipCourse: null,
+        cloudHomeworkFlag: null,
+      },
+      rules: {
+        // 分页规则
+        limit: 10, // 限制显示条数
+        page: 1, // 当前页
+        total: 0, // 总条数
+        page_size: [10, 20, 40, 50], // 选择限制显示条数
+      },
+      teacherList: [],
+      tableList: [],
+      organList: [],
+      visibleForm: {
+        expiryDate: "",
+        teacherName: "",
+        title: "",
+        studentName: "",
+        content: "",
+        attachments: [],
+      },
+      afterSchoolVisible: false,
+      workVisible: false,
+      activeSrc: "",
+      extracurricularExercisesId: null,
+      show: true,
+    };
+  },
+  //生命周期 - 创建完成(可以访问当前this实例)
+  created() {},
+  //生命周期 - 挂载完成(可以访问DOM元素)
+  mounted() {
+    this.$store.dispatch("setBranchs");
+    this.init();
+  },
+  methods: {
+    init() {
+      this.extracurricularExercisesId = this.$route.query.extracurricularExercisesId;
+      if (this.extracurricularExercisesId) {
+        this.show = false;
+      }
+      this.searchForm.search = this.$route.query.studentId;
+      if (this.$route.query.startTime && this.$route.query.endTime) {
+        this.searchForm.timer = [this.$route.query.startTime, this.$route.query.endTime];
+      }
+      //  (this.$route.query)
+      this.getList();
+    },
+    getList() {
+      // assignStartTime  assignEndTime page search teacherId title
+      let obj = this.getDate();
+      extracurricularExercisesReply(obj).then((res) => {
+        if (res.code == 200) {
+          this.tableList = res.data.rows;
+          this.rules.total = res.data.total;
+        }
+      });
+    },
+    search() {
+      this.rules.page = 1;
+      this.getList();
+    },
+    // 导出
+    async onExport() {
+      let obj = this.getDate();
+      await Export(
+        this,
+        {
+          url: "/api-web/export/extraExercisesReplys",
+          fileName: "课外训练(学员).xls",
+          method: "get",
+          params: obj,
+        },
+        "您确定导出列表?"
+      );
+    },
+    getDate() {
+      let obj = {};
+      if (this.searchForm.timer && this.searchForm.timer.length > 0) {
+        obj.submitStartTime = this.searchForm.timer[0];
+        obj.submitEndTime = this.searchForm.timer[1];
+      }
+      if (this.searchForm.expireDate && this.searchForm.expireDate.length > 0) {
+        obj.expireStartDate = this.searchForm.expireDate[0];
+        obj.expireEndDate = this.searchForm.expireDate[1];
+      }
+      obj.page = this.rules.page;
+
+      (obj.rows = this.rules.limit),
+        this.searchForm.teacherId ? (obj.teacherId = this.searchForm.teacherId) : null;
+      this.searchForm.search ? (obj.search = this.searchForm.search) : null;
+      this.searchForm.status ? (obj.status = this.searchForm.status) : null;
+      this.searchForm.isReplied ? (obj.isReplied = this.searchForm.isReplied) : null;
+      this.searchForm.isRepliedTimely
+        ? (obj.isRepliedTimely = this.searchForm.isRepliedTimely)
+        : null;
+      this.searchForm.isView ? (obj.isView = this.searchForm.isView) : null;
+      this.extracurricularExercisesId && this.extracurricularExercisesId != "yes"
+        ? (obj.extracurricularExercisesId = this.extracurricularExercisesId)
+        : null;
+      this.searchForm.organIdList
+        ? (obj.organIdList = this.searchForm.organIdList)
+        : null;
+      this.searchForm.existVipCourse
+        ? (obj.existVipCourse = this.searchForm.existVipCourse)
+        : null;
+      obj.cloudHomeworkFlag = this.searchForm.cloudHomeworkFlag;
+      return obj;
+    },
+    onReSet() {
+      this.searchForm = {
+        search: null,
+        timer: [],
+        status: null,
+        isReplied: null,
+        isRepliedTimely: null,
+        isView: null,
+        organId: null,
+        expireDate: [],
+        existVipCourse: null,
+        cloudHomeworkFlag: null,
+      };
+      this.extracurricularExercisesId = null;
+      this.getList();
+    },
+    lookDetail(row) {
+      //   this.afterSchoolVisible = true;
+      //    (row)
+      findStudentExtraExerciseDetail({
+        studentExerciseId: row.id,
+      }).then((res) => {
+        if (res.code == 200) {
+          this.visibleForm = {
+            expiryDate: res.data.expiryDate,
+            teacherName: res.data.teacherName,
+            title: row.extracurricularExercises.title,
+            studentName: res.data.studentName,
+            content: res.data.content,
+            attachments: res.data.attachments.split(","),
+          };
+          //    (this.visibleForm)
+          this.afterSchoolVisible = true;
+        }
+      });
+    },
+    lookWork(src) {
+      this.activeSrc = src;
+      this.workVisible = true;
+    },
+  },
+  watch: {
+    workVisible(val) {
+      if (!val) {
+        this.activeSrc = "";
+      }
+    },
+  },
+};
+</script>
+<style lang="scss" scoped>
+.schoolCell {
+  width: 400px;
+  color: #333;
+  background-color: #f5f7fa;
+  border-color: #e4e7ed;
+  height: 40px;
+  line-height: 40px;
+  outline: 0;
+  padding: 0 15px;
+  border-radius: 4px;
+  border: 1px solid #dcdfe6;
+  display: inline-block;
+  box-sizing: border-box;
+  white-space: nowrap;
+  text-overflow: ellipsis;
+  overflow: hidden;
+}
+::v-deep .el-textarea.is-disabled .el-textarea__inner {
+  color: #333;
+}
+</style>

+ 5 - 1
src/views/afterSchoolManager/index.vue

@@ -13,6 +13,9 @@
         <el-tab-pane lazy label="学员布置" name="2">
           <afterWorkList v-if="activeIndex == 2"></afterWorkList>
         </el-tab-pane>
+        <el-tab-pane lazy label="学员历史" name="3">
+          <oldAfterWorkList v-if="activeIndex == 3"></oldAfterWorkList>
+        </el-tab-pane>
       </tab-router>
     </div>
   </div>
@@ -21,8 +24,9 @@
 <script>
 import afterSchoolList from "@/views/afterSchoolManager/afterSchoolList";
 import afterWorkList from "@/views/afterSchoolManager/afterWorkList";
+import oldAfterWorkList from "@/views/afterSchoolManager/components/oldAfterWorkList.vue";
 export default {
-  components: { afterSchoolList, afterWorkList },
+  components: { afterSchoolList, afterWorkList, oldAfterWorkList },
   data() {
     const query = this.$route.query;
     return {