lrf402788946 4 роки тому
батько
коміт
50c6159f9e

+ 12 - 0
src/views/new-plan/arrange/school-arrange.vue

@@ -23,6 +23,7 @@
           :changeRange="changeRange"
           :changeRange="changeRange"
           :proAffix="proAffix"
           :proAffix="proAffix"
           :classTypeList="classTypeList"
           :classTypeList="classTypeList"
+          :schStuList="schStuList"
         ></a-table>
         ></a-table>
       </el-card>
       </el-card>
     </detail-frame>
     </detail-frame>
@@ -98,6 +99,7 @@ const { mapActions: util } = createNamespacedHelpers('util');
 const { mapActions: school } = createNamespacedHelpers('school');
 const { mapActions: school } = createNamespacedHelpers('school');
 const { mapActions: schPlan } = createNamespacedHelpers('schPlan');
 const { mapActions: schPlan } = createNamespacedHelpers('schPlan');
 const { mapActions: classtype } = createNamespacedHelpers('classtype');
 const { mapActions: classtype } = createNamespacedHelpers('classtype');
+const { mapActions: student } = createNamespacedHelpers('student');
 // 表中变量:
 // 表中变量:
 // batch-${batchid}:${batch}
 // batch-${batchid}:${batch}
 // batch_type-${batchid}:${type} 这期是什么类型的班级
 // batch_type-${batchid}:${type} 这期是什么类型的班级
@@ -126,6 +128,8 @@ export default {
       already: false,
       already: false,
       options: undefined,
       options: undefined,
       classTypeList: [],
       classTypeList: [],
+      // 学校学生
+      schStuList: [],
     };
     };
   },
   },
   async created() {
   async created() {
@@ -137,6 +141,7 @@ export default {
   },
   },
   methods: {
   methods: {
     ...util({ modelFetch: 'fetch' }),
     ...util({ modelFetch: 'fetch' }),
+    ...student({ getSchoolStudent: 'schoolStudent' }),
     ...trainPlan({ getTrainPlan: 'fetch', exportPlan: 'exportSchoolPlan' }),
     ...trainPlan({ getTrainPlan: 'fetch', exportPlan: 'exportSchoolPlan' }),
     ...school(['query']),
     ...school(['query']),
     ...schPlan({ schPlanQuery: 'query', createSchPlan: 'create', updateSchPlan: 'update', setSchPlan: 'schArrange' }),
     ...schPlan({ schPlanQuery: 'query', createSchPlan: 'create', updateSchPlan: 'update', setSchPlan: 'schArrange' }),
@@ -741,6 +746,13 @@ export default {
     async getOtherList() {
     async getOtherList() {
       const res = await this.getClassType();
       const res = await this.getClassType();
       if (this.$checkRes(res)) this.$set(this, `classTypeList`, res.data);
       if (this.$checkRes(res)) this.$set(this, `classTypeList`, res.data);
+      const { planid } = this.defaultOption;
+      const schoolStudent = await this.getSchoolStudent({ planid });
+      console.log(schoolStudent);
+      if (this.$checkRes(schoolStudent)) {
+        const { data } = schoolStudent;
+        this.$set(this, `schStuList`, data);
+      }
     },
     },
     getProp(data, prop) {
     getProp(data, prop) {
       if (prop.includes('hascar')) {
       if (prop.includes('hascar')) {

+ 11 - 2
src/views/new-plan/arrange/table/table.vue

@@ -79,6 +79,7 @@ export default {
     proAffix: { type: Function },
     proAffix: { type: Function },
     getDesignate: { type: Function },
     getDesignate: { type: Function },
     classTypeList: { type: Array, default: () => [] },
     classTypeList: { type: Array, default: () => [] },
+    schStuList: { type: Array, default: () => [] },
   },
   },
   components: {},
   components: {},
   data: function() {
   data: function() {
@@ -189,8 +190,16 @@ export default {
     },
     },
     //单元格样式
     //单元格样式
     cellStyle({ row, column, rowIndex, columnIndex }) {
     cellStyle({ row, column, rowIndex, columnIndex }) {
-      if (!column.property || column.property == 'name' || column.property.includes('number')) return '';
-      else if (!_.get(row, 'daterange')) return '';
+      if (!column.property || column.property.includes('number')) return '';
+      else if (column.property == 'name') {
+        const { code } = row;
+        const r = this.schStuList.find(f => f.schid === code);
+        if (r) {
+          const { schnum } = r;
+          if (schnum > 0) return { background: '#409EFFA0' };
+        }
+        return '';
+      } else if (!_.get(row, 'daterange')) return '';
       else {
       else {
         let r = this.proAffix(column.property);
         let r = this.proAffix(column.property);
         let batch = this.tList
         let batch = this.tList

+ 21 - 1
src/views/task/index.vue

@@ -8,12 +8,21 @@
           </el-select>
           </el-select>
         </el-form-item>
         </el-form-item>
       </el-form>
       </el-form>
+      <el-row class="btn_bar" type="flex" justify="end">
+        <el-col :span="2">
+          <el-button type="primary" size="small" @click="eDialog = true">导出</el-button>
+        </el-col>
+      </el-row>
       <data-table :fields="fields" :data="tableData" :opera="opera" @view="toTaskList"></data-table>
       <data-table :fields="fields" :data="tableData" :opera="opera" @view="toTaskList"></data-table>
     </list-frame>
     </list-frame>
+    <el-dialog :visible.sync="eDialog" title="导出" width="30%">
+      <export-range :usestudent="false" @toExport="toExport" @close="eDialog = false"></export-range>
+    </el-dialog>
   </div>
   </div>
 </template>
 </template>
 
 
 <script>
 <script>
+import exportRange from '@frame/components/export-range.vue';
 import listFrame from '@frame/layout/admin/list-frame';
 import listFrame from '@frame/layout/admin/list-frame';
 import dataTable from '@frame/components/data-table';
 import dataTable from '@frame/components/data-table';
 import _ from 'lodash';
 import _ from 'lodash';
@@ -21,11 +30,13 @@ import { mapState, createNamespacedHelpers, mapGetters } from 'vuex';
 const { mapActions: lesson } = createNamespacedHelpers('lesson');
 const { mapActions: lesson } = createNamespacedHelpers('lesson');
 const { mapActions: util } = createNamespacedHelpers('util');
 const { mapActions: util } = createNamespacedHelpers('util');
 const { mapActions: classes } = createNamespacedHelpers('classes');
 const { mapActions: classes } = createNamespacedHelpers('classes');
+const { mapActions: task } = createNamespacedHelpers('task');
 export default {
 export default {
   name: 'index',
   name: 'index',
   props: {},
   props: {},
-  components: { listFrame, dataTable },
+  components: { listFrame, dataTable, exportRange },
   data: () => ({
   data: () => ({
+    eDialog: false,
     opera: [
     opera: [
       {
       {
         label: '查看学生作业',
         label: '查看学生作业',
@@ -60,6 +71,7 @@ export default {
     return { title: this.$route.meta.title };
     return { title: this.$route.meta.title };
   },
   },
   methods: {
   methods: {
+    ...task(['export']),
     ...classes({ getClass: 'query' }),
     ...classes({ getClass: 'query' }),
     ...lesson({ lessionInfo: 'fetch', lessionList: 'query' }),
     ...lesson({ lessionInfo: 'fetch', lessionList: 'query' }),
     ...util({ modelFetch: 'fetch' }),
     ...util({ modelFetch: 'fetch' }),
@@ -103,6 +115,14 @@ export default {
         this.$set(this, `classList`, duplicate);
         this.$set(this, `classList`, duplicate);
       }
       }
     },
     },
+    // 导出作业
+    async toExport(range) {
+      let data = { range };
+      const res = await this.export(data);
+      if (this.$checkRes(res, '导出成功', res.errmsg || '导出失败')) {
+        window.open(res.data);
+      }
+    },
   },
   },
   watch: {
   watch: {
     defaultOption: {
     defaultOption: {