浏览代码

new homework page for student

hare8999@163.com 2 年之前
父节点
当前提交
b432e3e6f0

+ 1 - 0
src/components/UploadDialog/index.vue

@@ -103,6 +103,7 @@ export default {
       default: false
     },
     isZdy: {
+      // 是否自定义
       type: Boolean,
       default: true
     },

+ 2 - 2
src/views/evaluating/main.vue

@@ -16,7 +16,7 @@
                   <el-image :src="`${$imgBase}index/daoxue/icon_paper.png`"></el-image>
                   <p class="bold">{{ item.title }}</p>
                 </div>
-                <p class="mt20 mb20" style="color:#CECECE">少儿数字内容</p>
+                <p class="mt20 mb20" style="color:#CECECE"></p>
                 <div>
                   <el-button type="primary" @click="$router.push(item.path)">立即查询</el-button>
                 </div>
@@ -37,7 +37,7 @@
                   <el-image :src="`${$imgBase}index/daoxue/icon_paper.png`"></el-image>
                   <p class="bold">{{ item.title }}</p>
                 </div>
-                <p class="mt20 mb20" style="color:#CECECE">少儿数字内容</p>
+                <p class="mt20 mb20" style="color:#CECECE"></p>
                 <div>
                   <el-button type="primary" @click="$router.push(item.path)">立即查询</el-button>
                 </div>

+ 71 - 3
src/views/questioncenter/components/generate-tabs/paper-work-publish.vue

@@ -7,22 +7,45 @@
       <template #type="{display}">
         {{ translateType(display) }}
       </template>
+      <template #action="{row}">
+        <div>
+          <el-button v-if="row.type == paperWorkType.value" type="text" icon="el-icon-edit"
+                     @click="clickEditPaper(row)">编辑
+          </el-button>
+          <el-button type="text" icon="el-icon-connection" @click="clickPublish(row)">发布</el-button>
+        </div>
+      </template>
     </dynamic-table>
     <pagination v-if="total>0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize"
                 @pagination="getList"></pagination>
+    <upload-dialog
+      v-if="uploadOption.dialogVisible"
+      scene="发布"
+      :title="uploadOption.title"
+      :pageName="uploadOption.pageName"
+      :isZdy="false"
+      :selectType="uploadOption.selectType"
+      :dialogVisible="uploadOption.dialogVisible"
+      @handleClose="handleUploadReady"
+      @dialogVisibleClose="uploadOption.dialogVisible=false"
+    ></upload-dialog>
   </el-card>
 </template>
 
 <script>
 import DynamicTable from '@/components/dynamic-table/index'
-import { getHomeworks } from '@/api/webApi/homework'
+import { getHomeworks, publicStudentHomework } from '@/api/webApi/homework'
 import consts from '@/common/mx-const'
+import { download, listCustomerPaperQeustions } from '@/api/webApi/webQue'
+import { mapGetters } from 'vuex'
 
 export default {
   name: 'paper-work-publish',
   components: { DynamicTable },
   data() {
     return {
+      extraData: { type: consts.enum.generateScene.paperWork.value },
+      paperWorkType: Object.freeze(consts.enum.homeworkTypes.find(t => t.value == 1)),
       queryParams: {
         pageNum: 1,
         pageSize: 20
@@ -32,11 +55,21 @@ export default {
         { prop: 'type', label: '类型', width: '120px', slotBody: 'type' },
         { prop: 'title', label: '标题' },
         { prop: 'createTime', label: '创建时间', width: '180px' },
-        { prop: 'action', label: '操作', width: '80px' }],
+        { prop: 'action', label: '操作', width: '120px', slotBody: 'action' }],
       rows: [],
-      total: 0
+      total: 0,
+      uploadWork: null,
+      uploadOption: {
+        title: '发布作业',
+        pageName: '',
+        selectType: '',
+        dialogVisible: false
+      }
     }
   },
+  computed: {
+    ...mapGetters(['period'])
+  },
   mounted() {
     this.getList()
   },
@@ -53,6 +86,41 @@ export default {
     translateType(type) {
       const enumType = consts.enum.homeworkTypes.find(t => t.value == type)
       return enumType?.label || type
+    },
+    clickEditPaper(paper) {
+      listCustomerPaperQeustions(paper.content).then((res) => {
+        localStorage.setItem(
+          'paperData',
+          JSON.stringify({
+            paperId: paper.content,
+            paperTitle: paper.name || paper.title,
+            subjectId: paper.subjectid
+          })
+        )
+        localStorage.setItem('questionList', JSON.stringify(res.rows))
+        this.$router.push({
+          path: '/question-center/generatingPaperCenter/paper',
+          query: this.extraData
+        })
+      })
+    },
+    clickDownloadPaper(paperId) {
+      download(paperId, this.period)
+    },
+    clickPublish(work) {
+      this.uploadWork = work
+      this.uploadOption.selectType = 'student'
+      this.uploadOption.dialogVisible = true
+    },
+    async handleUploadReady(type, name, selectData) {
+      const commit = {
+        workId: this.uploadWork.id,
+        stuIds: selectData.checkedStudent,
+        remark: selectData.remark
+      }
+      await publicStudentHomework(commit)
+      this.uploadOption.dialogVisible = false
+      this.msgSuccess('发布成功')
     }
   }
 }

+ 44 - 0
src/views/questioncenter/homework.vue

@@ -0,0 +1,44 @@
+<template>
+  <div class="app-container">
+    <el-card>
+      <dynamic-table :columns="columns" :rows="rows"></dynamic-table>
+      <pagination v-if="total>0" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize"
+                  @pagination="getList"></pagination>
+    </el-card>
+  </div>
+</template>
+
+<script>
+import DynamicTable from '@/components/dynamic-table/index'
+import { getStudentHomeworks } from '@/api/webApi/homework'
+
+export default {
+  name: 'homework',
+  components: { DynamicTable },
+  data() {
+    return {
+      queryParams: {
+        pageNum: 1,
+        pageSize: 20
+      },
+      columns: [],
+      rows: [],
+      total: 0
+    }
+  },
+  mounted() {
+    this.getList()
+  },
+  methods: {
+    async getList() {
+      const res = await getStudentHomeworks(this.queryParams)
+      this.rows = res.rows || res.data
+      this.total = res.total || this.rows.length
+    }
+  }
+}
+</script>
+
+<style scoped>
+
+</style>

+ 1 - 1
src/views/questioncenter/paper.vue

@@ -4,7 +4,7 @@
       <el-card style="margin-bottom: 10px; text-align: center">
         <el-input v-model="papername" style="width: 150px" />
         <el-button style="margin-left: 10px" type="text" @click="savePaper" :loading="isLoading">保存试卷</el-button>
-        <el-button style="margin-left: 10px" type="text" @click="toQuestionList()">继续出题</el-button>
+        <el-button style="margin-left: 10px" type="text" @click="toQuestionList()">返回</el-button>
       </el-card>
       <el-card style="margin-bottom: 10px" v-for="(questionData, index) in questionList" :key="index">
         <div :class="'drag_' + index">