lrf402788946 преди 4 години
родител
ревизия
ae7aef7bd8
променени са 1 файла, в които са добавени 209 реда и са изтрити 209 реда
  1. 209 209
      src/views/classes/name-list.vue

+ 209 - 209
src/views/classes/name-list.vue

@@ -1,209 +1,209 @@
-<template>
-  <div id="name-list">
-    <list-frame :title="mainTitle" @query="search" :total="total" :needFilter="false" :needAdd="false">
-      <el-col :span="24" class="printingBtn">
-        <!-- <el-button type="primary" size="mini" @click="toPrint()">打印名牌</el-button> -->
-        <el-col :span="12">
-          <el-input placeholder="请输入学生姓名" v-model="stuname" class="input-with-select">
-            <el-button slot="append" icon="el-icon-search" @click="search()"></el-button>
-          </el-input>
-        </el-col>
-        <el-col :span="12">
-          <el-button type="primary" size="mini" @click="addstu()">添加学生</el-button>
-          <el-button type="primary" size="mini" @click="toComputIsFine()" :disabled="this.defaultOption.classid ? false : true">设置优秀学员</el-button>
-          <el-button type="primary" size="mini" @click="toExportList()">导出学生名单</el-button>
-        </el-col>
-      </el-col>
-      <data-table :fields="fields" :data="list" :opera="opera" @edit="toEdit" @delete="toDelete" @post="toPost"> </data-table>
-    </list-frame>
-    <el-drawer title="任职" :visible.sync="drawer" direction="rtl" @close="toClose">
-      <data-form :data="form" :fields="formFields" :rules="rules" :isNew="false">
-        <template #radios="{item}">
-          <template v-if="item.model === 'job'">
-            <el-radio label="1">班长</el-radio>
-            <el-radio label="0">学委</el-radio>
-          </template>
-        </template>
-        <template #custom="{ item, form }">
-          <template v-if="item.model === 'gender'">
-            {{ form[item.model] }}
-          </template>
-        </template>
-      </data-form>
-    </el-drawer>
-  </div>
-</template>
-
-<script>
-import _ from 'lodash';
-import listFrame from '@frame/layout/admin/list-frame';
-import dataTable from '@frame/components/data-table';
-import dataForm from '@frame/components/form';
-import { mapState, createNamespacedHelpers } from 'vuex';
-const { mapActions } = createNamespacedHelpers('student');
-const { mapActions: group } = createNamespacedHelpers('group');
-export default {
-  metaInfo: { title: '班级名单' },
-  name: 'name-list',
-  props: {},
-  components: {
-    listFrame,
-    dataTable,
-    dataForm,
-  },
-  data: function() {
-    var _this = this;
-    return {
-      opera: [
-        {
-          label: '编辑',
-          icon: 'el-icon-edit',
-          method: 'edit',
-        },
-        {
-          label: '删除',
-          icon: 'el-icon-delete',
-          method: 'delete',
-          confirm: true,
-          // display: i => {
-          //   // return !_this.groupList.find(stu => {
-          //   //   return stu.stuid == i.id;
-          //   // });
-          //   return !_this.groupList.find(stu => stu.stuid == i.id);
-          // },
-        },
-        // {
-        //   label: '管理任职',
-        //   icon: 'el-icon-check',
-        //   method: 'post',
-        // },
-      ],
-      fields: [
-        { label: '姓名', prop: 'name', filter: 'input' },
-        { label: '性别', prop: 'gender' },
-        { label: '民族', prop: 'nation' },
-        { label: '学校', prop: 'school_name' },
-        { label: '院系', prop: 'faculty' },
-        { label: '专业', prop: 'major' },
-        { label: '职务', prop: 'job' },
-        { label: '手机号', prop: 'phone' },
-        { label: '是否优秀', prop: 'is_fine', format: i => (i === '0' ? '否' : i === '1' ? '是' : '无资格') },
-      ],
-      list: [],
-      total: 0,
-      form: {},
-      drawer: false,
-      formFields: [
-        { label: '姓名', model: 'name', type: 'text' },
-        { label: '性别', model: 'gender', custom: true },
-        { label: '手机号', model: 'phone', type: 'text' },
-        { label: '职务', required: true, model: 'job', type: 'radio' },
-      ],
-      rules: {},
-      // 组
-      groupList: [],
-      // 查询
-      // 学生姓名
-      stuname: '',
-    };
-  },
-  created() {
-    this.seachGroup();
-  },
-  methods: {
-    ...mapActions(['query', 'delete', 'computedIsFine', 'toExport']),
-    ...group({ groupQuery: 'query' }),
-    async seachGroup() {
-      let classid = this.id;
-      let res = await this.groupQuery({ classid });
-      if (this.$checkRes(res)) {
-        let arr = res.data.map(item => item.students);
-        arr = _.flattenDeep(arr);
-        console.log(arr);
-        this.$set(this, `groupList`, arr);
-      }
-    },
-    async search({ skip = 0, limit = 10, ...info } = {}) {
-      if (this.id) {
-        if (this.stuname) info.name = this.stuname;
-        const res = await this.query({ skip, limit, ...info, classid: this.id });
-        if (this.$checkRes(res)) {
-          this.$set(this, `list`, res.data);
-          this.$set(this, `total`, res.total);
-        }
-      }
-    },
-    // 添加
-    addstu() {
-      this.$router.push({ path: '/student/createStu' });
-    },
-    toEdit({ data }) {
-      this.$router.push({ path: '/student/detail', query: { id: data.id } });
-    },
-    async toDelete({ data }) {
-      const res = await this.delete(data.id);
-      this.$checkRes(res, '删除成功', '删除失败');
-      this.search();
-    },
-    toPost({ data }) {
-      this.$set(this, `form`, JSON.parse(JSON.stringify(data)));
-      this.drawer = true;
-    },
-    toClose() {
-      this.drawer = false;
-      this.form = {};
-    },
-    toreturn() {
-      window.history.go(-1);
-    },
-    // 打印名牌
-    toPrint() {
-      this.$router.push({ path: '/classes/namCard', query: { id: this.id } });
-    },
-    // 计算优秀学员
-    async toComputIsFine() {
-      const res = await this.computedIsFine(this.defaultOption.classid);
-      if (this.$checkRes(res, '优秀学员设置成功', res.errmsg || '优秀学员设置失败')) this.search();
-    },
-    // 导出学生名单
-    async toExportList() {
-      const msg = this.$message({ duration: 0, message: '正在导出,请稍后...' });
-      const res = await this.toExport({ type: 'class', classid: this.id });
-      msg.close();
-      if (this.$checkRes(res)) {
-        const { data } = res;
-        window.open(data);
-      }
-    },
-  },
-  computed: {
-    ...mapState(['user', 'defaultOption']),
-    id() {
-      return this.defaultOption.classid;
-    },
-    mainTitle() {
-      let meta = this.$route.meta;
-      let main = meta.title || '';
-      let sub = meta.sub || '';
-      let title = main + sub;
-      return title;
-    },
-  },
-  watch: {
-    id: {
-      handler(val) {
-        if (val) this.search();
-        else this.$set(this, `list`, []);
-      },
-      immediate: true,
-    },
-  },
-};
-</script>
-
-<style lang="less" scoped>
-.printingBtn {
-  text-align: right;
-  padding: 10px 0;
-}
-</style>
+<template>
+  <div id="name-list">
+    <list-frame :title="mainTitle" @query="search" :total="total" :needFilter="false" :needAdd="false">
+      <el-col :span="24" class="printingBtn">
+        <!-- <el-button type="primary" size="mini" @click="toPrint()">打印名牌</el-button> -->
+        <el-col :span="12">
+          <el-input placeholder="请输入学生姓名" v-model="stuname" class="input-with-select">
+            <el-button slot="append" icon="el-icon-search" @click="search()"></el-button>
+          </el-input>
+        </el-col>
+        <el-col :span="12">
+          <el-button type="primary" size="mini" @click="addstu()">添加学生</el-button>
+          <el-button type="primary" size="mini" @click="toComputIsFine()" :disabled="this.defaultOption.classid ? false : true">设置优秀学员</el-button>
+          <el-button type="primary" size="mini" @click="toExportList()">导出学生名单</el-button>
+        </el-col>
+      </el-col>
+      <data-table :fields="fields" :data="list" :opera="opera" @edit="toEdit" @delete="toDelete" @post="toPost"> </data-table>
+    </list-frame>
+    <el-drawer title="任职" :visible.sync="drawer" direction="rtl" @close="toClose">
+      <data-form :data="form" :fields="formFields" :rules="rules" :isNew="false">
+        <template #radios="{item}">
+          <template v-if="item.model === 'job'">
+            <el-radio label="1">班长</el-radio>
+            <el-radio label="0">学委</el-radio>
+          </template>
+        </template>
+        <template #custom="{ item, form }">
+          <template v-if="item.model === 'gender'">
+            {{ form[item.model] }}
+          </template>
+        </template>
+      </data-form>
+    </el-drawer>
+  </div>
+</template>
+
+<script>
+import _ from 'lodash';
+import listFrame from '@frame/layout/admin/list-frame';
+import dataTable from '@frame/components/data-table';
+import dataForm from '@frame/components/form';
+import { mapState, createNamespacedHelpers } from 'vuex';
+const { mapActions } = createNamespacedHelpers('student');
+const { mapActions: group } = createNamespacedHelpers('group');
+export default {
+  metaInfo: { title: '班级名单' },
+  name: 'name-list',
+  props: {},
+  components: {
+    listFrame,
+    dataTable,
+    dataForm,
+  },
+  data: function() {
+    var _this = this;
+    return {
+      opera: [
+        {
+          label: '编辑',
+          icon: 'el-icon-edit',
+          method: 'edit',
+        },
+        // {
+        //   label: '删除',
+        //   icon: 'el-icon-delete',
+        //   method: 'delete',
+        //   confirm: true,
+        //   // display: i => {
+        //   //   // return !_this.groupList.find(stu => {
+        //   //   //   return stu.stuid == i.id;
+        //   //   // });
+        //   //   return !_this.groupList.find(stu => stu.stuid == i.id);
+        //   // },
+        // },
+        // {
+        //   label: '管理任职',
+        //   icon: 'el-icon-check',
+        //   method: 'post',
+        // },
+      ],
+      fields: [
+        { label: '姓名', prop: 'name', filter: 'input' },
+        { label: '性别', prop: 'gender' },
+        { label: '民族', prop: 'nation' },
+        { label: '学校', prop: 'school_name' },
+        { label: '院系', prop: 'faculty' },
+        { label: '专业', prop: 'major' },
+        { label: '职务', prop: 'job' },
+        { label: '手机号', prop: 'phone' },
+        { label: '是否优秀', prop: 'is_fine', format: i => (i === '0' ? '否' : i === '1' ? '是' : '无资格') },
+      ],
+      list: [],
+      total: 0,
+      form: {},
+      drawer: false,
+      formFields: [
+        { label: '姓名', model: 'name', type: 'text' },
+        { label: '性别', model: 'gender', custom: true },
+        { label: '手机号', model: 'phone', type: 'text' },
+        { label: '职务', required: true, model: 'job', type: 'radio' },
+      ],
+      rules: {},
+      // 组
+      groupList: [],
+      // 查询
+      // 学生姓名
+      stuname: '',
+    };
+  },
+  created() {
+    this.seachGroup();
+  },
+  methods: {
+    ...mapActions(['query', 'delete', 'computedIsFine', 'toExport']),
+    ...group({ groupQuery: 'query' }),
+    async seachGroup() {
+      let classid = this.id;
+      let res = await this.groupQuery({ classid });
+      if (this.$checkRes(res)) {
+        let arr = res.data.map(item => item.students);
+        arr = _.flattenDeep(arr);
+        console.log(arr);
+        this.$set(this, `groupList`, arr);
+      }
+    },
+    async search({ skip = 0, limit = 10, ...info } = {}) {
+      if (this.id) {
+        if (this.stuname) info.name = this.stuname;
+        const res = await this.query({ skip, limit, ...info, classid: this.id });
+        if (this.$checkRes(res)) {
+          this.$set(this, `list`, res.data);
+          this.$set(this, `total`, res.total);
+        }
+      }
+    },
+    // 添加
+    addstu() {
+      this.$router.push({ path: '/student/createStu' });
+    },
+    toEdit({ data }) {
+      this.$router.push({ path: '/student/detail', query: { id: data.id } });
+    },
+    async toDelete({ data }) {
+      const res = await this.delete(data.id);
+      this.$checkRes(res, '删除成功', '删除失败');
+      this.search();
+    },
+    toPost({ data }) {
+      this.$set(this, `form`, JSON.parse(JSON.stringify(data)));
+      this.drawer = true;
+    },
+    toClose() {
+      this.drawer = false;
+      this.form = {};
+    },
+    toreturn() {
+      window.history.go(-1);
+    },
+    // 打印名牌
+    toPrint() {
+      this.$router.push({ path: '/classes/namCard', query: { id: this.id } });
+    },
+    // 计算优秀学员
+    async toComputIsFine() {
+      const res = await this.computedIsFine(this.defaultOption.classid);
+      if (this.$checkRes(res, '优秀学员设置成功', res.errmsg || '优秀学员设置失败')) this.search();
+    },
+    // 导出学生名单
+    async toExportList() {
+      const msg = this.$message({ duration: 0, message: '正在导出,请稍后...' });
+      const res = await this.toExport({ type: 'class', classid: this.id });
+      msg.close();
+      if (this.$checkRes(res)) {
+        const { data } = res;
+        window.open(data);
+      }
+    },
+  },
+  computed: {
+    ...mapState(['user', 'defaultOption']),
+    id() {
+      return this.defaultOption.classid;
+    },
+    mainTitle() {
+      let meta = this.$route.meta;
+      let main = meta.title || '';
+      let sub = meta.sub || '';
+      let title = main + sub;
+      return title;
+    },
+  },
+  watch: {
+    id: {
+      handler(val) {
+        if (val) this.search();
+        else this.$set(this, `list`, []);
+      },
+      immediate: true,
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped>
+.printingBtn {
+  text-align: right;
+  padding: 10px 0;
+}
+</style>