123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146 |
- <template>
- <el-dialog
- class="page-dialog"
- :visible.sync="modalIsShow"
- title="分配班级"
- top="10vh"
- width="800px"
- :close-on-click-modal="false"
- :close-on-press-escape="false"
- append-to-body
- @opened="visibleChange"
- >
- <div class="part-box part-box-pad">
- <el-form ref="FilterForm" label-position="left" label-width="85px" inline>
- <el-form-item>
- <el-input
- v-model.trim="filterLabel"
- placeholder="请输入班级名称"
- clearable
- @change="labelChange"
- ></el-input>
- </el-form-item>
- <!-- <el-form-item>
- <el-button type="primary" @click="toPage(1)">查询</el-button>
- </el-form-item> -->
- </el-form>
- <el-table
- ref="TableList"
- :data="dataList"
- @selection-change="handleSelectionChange"
- >
- <el-table-column width="55" align="center">
- <template slot="header">
- <el-checkbox
- v-model="checkAll"
- @change="checkAllChagne"
- ></el-checkbox>
- </template>
- <template slot-scope="scope">
- <el-checkbox v-model="scope.row.checked"></el-checkbox>
- </template>
- </el-table-column>
- <el-table-column prop="clazzName" label="教学班"></el-table-column>
- <el-table-column prop="teachers" label="当前分配人"></el-table-column>
- </el-table>
- </div>
- <div slot="footer">
- <el-button type="primary" :loading="loading" @click="submit"
- >确认</el-button
- >
- <el-button @click="cancel">取消</el-button>
- </div>
- </el-dialog>
- </template>
- <script>
- import { teacherSimpleCourseQuery, teacherSimpleAssignCourse } from "../../api";
- export default {
- name: "select-dimension-dialog",
- props: {
- teacher: {
- type: Object,
- default() {
- return {};
- },
- },
- },
- data() {
- return {
- modalIsShow: false,
- orignDataList: [],
- dataList: [],
- filterLabel: "",
- loading: false,
- };
- },
- methods: {
- async getList() {
- const data = await teacherSimpleCourseQuery({
- examId: this.teacher.examId,
- courseCode: this.teacher.courseCode,
- });
- this.orignDataList = (data || []).map((item) => {
- if (item.teacherList && item.teacherList.length) {
- item.teachers = item.teacherList.map((t) => t.name).join(",");
- item.checked = item.teacherList.some((t) => t.id === this.teacher.id);
- } else {
- item.teachers = "公共班级";
- item.checked = false;
- }
- return item;
- });
- },
- handleSelectionChange(val) {
- this.multipleSelection = val.map((item) => item.clazzId);
- },
- checkAllChagne(checked) {
- this.dataList.forEach((item) => {
- item.checked = checked;
- });
- },
- labelChange() {
- const escapeRegexpString = (value = "") =>
- String(value).replace(/[|\\{}()[\]^$+*?.]/g, "\\$&");
- const reg = new RegExp(escapeRegexpString(this.filterLabel), "i");
- this.dataList = this.orignDataList.filter((item) =>
- reg.test(item.clazzName)
- );
- },
- visibleChange() {
- this.getList();
- },
- cancel() {
- this.modalIsShow = false;
- },
- open() {
- this.modalIsShow = true;
- },
- async submit() {
- const clazzIdList = this.orignDataList
- .filter((item) => item.checked)
- .map((item) => item.clazzId);
- if (!clazzIdList.length) {
- this.$message.error("请选择班级");
- return;
- }
- if (this.loading) return;
- this.loading = true;
- const res = await teacherSimpleAssignCourse({
- examId: this.teacher.examId,
- courseCode: this.teacher.courseCode,
- teacherId: this.teacher.id,
- clazzIdList,
- });
- this.loading = false;
- if (!res) return;
- this.$message.success("保存成功!");
- this.cancel();
- },
- },
- };
- </script>
|