From b0fb9cbf7eea64dd52a7c599a9504eb40ae643eb Mon Sep 17 00:00:00 2001
From: luohairen <3399054449@qq.com>
Date: 星期一, 11 十一月 2024 15:32:44 +0800
Subject: [PATCH] 错题本分页
---
src/views/class-management/ClassStaff.vue | 186 ++++++++++++++++++++++++++++++---------------
1 files changed, 123 insertions(+), 63 deletions(-)
diff --git a/src/views/class-management/ClassStaff.vue b/src/views/class-management/ClassStaff.vue
index 88caf31..99739bf 100644
--- a/src/views/class-management/ClassStaff.vue
+++ b/src/views/class-management/ClassStaff.vue
@@ -3,18 +3,18 @@
<div class="app-container">
<div style="display: flex; flex-direction: row">
<div style="padding-bottom:20px">
- <span class="item">{{ title }}</span>
+ <span class="item">{{ this.$route.query.className }}</span>
<el-button class="item" @click="handlerAddStudent" type="primary" size="small">鏂板瀛﹀憳</el-button>
- <el-button class="item" @click="open = true" type="primary" size="small">瀛﹀憳璋冩暣</el-button>
+ <el-button class="item" @click="openManage" type="primary" size="small">瀛﹀憳璋冩暣</el-button>
</div>
<div>
<el-form :inline="true" :model="searchForm" class="demo-form-inline">
<el-form-item label="瀛﹀憳濮撳悕">
- <el-input v-model="searchForm.studentName" size="small" clearable @clear="page"
+ <el-input v-model="searchForm.studentName" size="small" clearable @clear="page" @input="page"
placeholder="瀛﹀憳濮撳悕"></el-input>
</el-form-item>
<el-form-item>
- <el-button type="primary" @click="page">鏌ヨ</el-button>
+ <el-button type="primary" @click="page" size="small">鏌ヨ</el-button>
</el-form-item>
</el-form>
</div>
@@ -53,22 +53,12 @@
label="鐢佃瘽"
>
</el-table-column>
- <el-table-column
- label="鎿嶄綔"
- align="center"
- width="300px"
- >
- <template slot-scope="scope">
- <el-button @click="handlerEditStudent(scope.row)" type="warning" size="small">缂栬緫</el-button>
- <el-button @click="remove(scope.row.id)" type="danger" size="small">鍒犻櫎</el-button>
- </template>
- </el-table-column>
</el-table>
<div
class="block"
style="display: flex; margin-top: 40px;"
>
- <pagination v-show="total>0" :total="total" :page.sync="searchForm.pageNum"
+ <pagination v-show="total>0" :total="total" :page.sync="searchForm.currentPage"
:limit.sync="searchForm.pageSize"
@pagination="page"/>
</div>
@@ -76,26 +66,38 @@
:title="studentTitle"
:visible.sync="addOpen"
width="700px"
- :before-close="handleAddClose">
+ :before-close="handleAddClose"
+ :close-on-click-modal="false">
<el-form :model="studentForm" :rules="studentRules" ref="studentForm" label-width="100px" class="demo-ruleForm">
- <el-form-item label="濮撳悕" prop="realName">
- <el-input v-model="studentForm.realName"></el-input>
- </el-form-item>
- <el-form-item label="鎬у埆" prop="sex">
- <el-select v-model="studentForm.sex">
- <el-option label="鐢�" :value="1"></el-option>
- <el-option label="濂�" :value="2"></el-option>
- </el-select>
- </el-form-item>
- <el-form-item label="鐢佃瘽" prop="phone">
- <el-input v-model="studentForm.phone"></el-input>
- </el-form-item>
- <el-form-item label="鐧诲綍璐﹀彿" prop="account">
- <el-input v-model="studentForm.account"></el-input>
- </el-form-item>
- <el-form-item label="鐧诲綍瀵嗙爜" prop="password">
- <el-input v-model="studentForm.password" show-password placeholder="涓嶅~鍐欎細浣跨敤榛樿202406"></el-input>
- </el-form-item>
+ <el-form-item label="鐪熷疄濮撳悕锛�" prop="realName">
+ <el-input v-model="studentForm.realName"></el-input>
+ </el-form-item>
+ <el-form-item label="鎵嬫満鍙风爜锛�" prop="phone">
+ <el-input v-model="studentForm.phone"></el-input>
+ </el-form-item>
+ <el-form-item label="鐧诲綍璐﹀彿锛�" prop="userName">
+ <el-input v-model="studentForm.userName" autocomplete="off"></el-input>
+ </el-form-item>
+ <el-form-item v-if="!studentForm.id" label="鐧诲綍瀵嗙爜锛�" prop="password">
+ <el-input v-model="studentForm.password" show-password autocomplete="off"></el-input>
+ </el-form-item>
+ <el-form-item label="骞撮緞锛�">
+ <el-input v-model="studentForm.age"></el-input>
+ </el-form-item>
+ <el-form-item label="鎬у埆锛�">
+ <el-select v-model="studentForm.sex" placeholder="鎬у埆" clearable>
+ <el-option v-for="item in sexEnum" :key="item.key" :value="item.key" :label="item.value"></el-option>
+ </el-select>
+ </el-form-item>
+ <el-form-item label="鍑虹敓鏃ユ湡锛�">
+ <el-date-picker v-model="studentForm.birthDay" type="date" value-format="yyyy-MM-dd" placeholder="閫夋嫨鏃ユ湡"/>
+ </el-form-item>
+
+ <el-form-item label="鐘舵�侊細">
+ <el-select v-model="studentForm.status" placeholder="鐘舵��">
+ <el-option v-for="item in statusEnum" :key="item.key" :value="item.key" :label="item.value"></el-option>
+ </el-select>
+ </el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="handleAddClose">鍙� 娑�</el-button>
@@ -132,33 +134,70 @@
<script>
// 寮曞叆褰堝嚭绐楀彛绲勪欢
import UserApi from '@/api/user'
-import { updateClassesUser, getClassesUsers, deleteClassesUserById, addClassesUser, edit } from '@/api/classesUser'
+import { mapGetters, mapState } from 'vuex'
+import {
+ updateClassesUser,
+ getClassesUsers,
+ deleteClassesUserById,
+ addClassesUser,
+ editClassesUser
+} from '@/api/classesUser'
import Pagination from '@/components/Pagination'
export default {
components: { Pagination },
data () {
+ var validatePassword = (rule, value, callback) => {
+ if (value === '') {
+ callback(new Error('璇疯緭鍏ョ櫥褰曞瘑鐮�'))
+ } else if (!/[A-Z]/.test(value)) {
+ callback(new Error('瀵嗙爜蹇呴』鍖呭惈鑷冲皯涓�涓ぇ鍐欏瓧姣�'))
+ } else if (!/[a-z]/.test(value)) {
+ callback(new Error('瀵嗙爜蹇呴』鍖呭惈鑷冲皯涓�涓皬鍐欏瓧姣�'))
+ } else if (!/[0-9]/.test(value)) {
+ callback(new Error('瀵嗙爜蹇呴』鍖呭惈鑷冲皯涓�涓暟瀛�'))
+ } else {
+ callback()
+ }
+ }
+ var validatePhone = (rule, value, callback) => {
+ // 鎵嬫満鍙峰拰搴ф満鍙烽獙璇侀�昏緫
+ const phoneRegex = /^1[3-9]\d{9}$/; // 鎵嬫満鍙锋牸寮�
+ const landlineRegex = /^\d{3,4}-?\d{7,8}$/; // 搴ф満鍙锋牸寮忥紝鍙互鍖呭惈鍖哄彿鍜屽彲閫夌殑杩炲瓧绗�
+
+ if (!value) {
+ callback(new Error('璇疯緭鍏ユ墜鏈哄彿鎴栧骇鏈哄彿'));
+ } else if (!phoneRegex.test(value)) {
+ if (!landlineRegex.test(value)){
+ callback(new Error('鎵嬫満鍙锋垨搴ф満鍙锋牸寮忎笉姝g‘'));
+ }
+ } else {
+ callback();
+ }
+ }
return {
studentForm: {
+ id: null,
realName: '',
sex: 1,
phone: '',
+ birthDay: '',
age: null,
- account: '',
+ userName: '',
password: ''
},
studentRules: {
- realName: [
- { required: true, message: '璇峰~鍐欏鍛樺鍚�', trigger: 'blur' },
+ userName: [
+ { required: true, message: '璇疯緭鍏ョ櫥褰曡处鍙�', trigger: 'blur' }
],
- sex: [
- { required: true, message: '璇烽�夋嫨瀛﹀憳鎬у埆', trigger: 'change' },
+ realName: [
+ { required: true, message: '璇疯緭鍏ョ湡瀹炲鍚�', trigger: 'blur' }
+ ],
+ password: [
+ { validator: validatePassword, trigger: 'blur' }
],
phone: [
- { required: true, message: '璇峰~鍐欏鍛樼數璇�', trigger: 'blur' },
- ],
- account: [
- { required: true, message: '璇峰~鍐欏鍛樼櫥褰曡处鍙�', trigger: 'blur' },
+ { validator: validatePhone, trigger: 'blur' }
]
},
studentTitle: '鏂板瀛﹀憳',
@@ -168,7 +207,7 @@
searchForm: {
studentName: '',
pageSize: 10,
- pageNum: 1,
+ currentPage: 1,
classesId: null
},
classes: {
@@ -181,9 +220,9 @@
formLabelAlign: {
type: '',
user: '',
- region: '',
+ region: ''
},
- tableData: [],
+ tableData: []
}
},
mounted () {
@@ -193,6 +232,10 @@
this.getStudentList()
},
methods: {
+ openManage () {
+ this.getClassesCurrentUserList(this.classes.id)
+ this.open = true
+ },
handlerEditStudent (row) {
this.studentForm = row
this.studentTitle = '缂栬緫瀛﹀憳'
@@ -204,29 +247,28 @@
},
submitStudentForm () {
this.$refs['studentForm'].validate((valid) => {
+ console.log(this.studentForm)
if (valid) {
this.studentForm.classesId = this.classes.id
- if (this.studentForm.id) {
- edit(this.studentForm).then(res => {
- this.addOpen = false
- this.$message.success(res.data.message)
- this.page()
- })
- }
addClassesUser(this.studentForm).then(res => {
this.addOpen = false
this.$message.success(res.data.message)
this.page()
+ this.resetStudentForm()
})
}
})
},
resetStudentForm () {
this.studentForm = {
+ id: null,
realName: '',
- sex: '',
+ sex: 1,
phone: '',
- age: null
+ birthDay: '',
+ age: null,
+ userName: '',
+ password: ''
}
},
handleAddClose () {
@@ -234,9 +276,15 @@
this.resetStudentForm()
},
remove (id) {
- deleteClassesUserById(id).then(res => {
- this.$message.success(res.data.message)
- this.page()
+ this.$confirm('纭鏄惁鍒犻櫎?', '鎻愮ず', {
+ confirmButtonText: '纭畾',
+ cancelButtonText: '鍙栨秷',
+ type: 'warning'
+ }).then(() => {
+ deleteClassesUserById(id).then(res => {
+ this.$message.success(res.data.message)
+ this.page()
+ })
})
},
sexFormatter (row) {
@@ -265,6 +313,8 @@
this.searchForm.classesId = this.classes.id
getClassesUsers(this.searchForm).then(res => {
this.tableData = res.data.data
+ this.total = res.data.total
+ this.loading = false
})
},
submitForm () {
@@ -295,17 +345,28 @@
// 鐢熸垚璇曞嵎
getCreate () {
// 璺宠浆鍒扮敓鎴愰〉闈�
- //璺宠浆鍒板搴旂殑绠$悊椤甸潰
+ // 璺宠浆鍒板搴旂殑绠$悊椤甸潰
this.$router.push({
- path: '/manage/test-paper-generation',
+ path: '/manage/test-paper-generation'
})
},
// 寮圭獥
// 鎺ユ敹寮圭獥缁勪欢杩斿洖鐨勮〃鍗曞��
parentGoods (obj) {
console.log(obj, '寮圭獥缁勪欢鐨勮〃鍗曞��')
- },
+ }
},
+ computed: {
+ ...mapGetters('enumItem', [
+ 'enumFormat'
+ ]),
+ ...mapState('enumItem', {
+ sexEnum: state => state.user.sexEnum,
+ roleEnum: state => state.user.roleEnum,
+ statusEnum: state => state.user.statusEnum,
+ levelEnum: state => state.user.levelEnum
+ })
+ }
}
</script>
<style scoped lang="scss">
@@ -324,4 +385,3 @@
margin-right: 5px;
}
</style>
-
--
Gitblit v1.8.0