后台新增班级校区重新改版

This commit is contained in:
xiayuping666
2024-05-27 18:00:58 +08:00
parent 27e92af29d
commit 18608f734e
3 changed files with 734 additions and 66 deletions
+42 -1
View File
@@ -1,5 +1,20 @@
import request from '@/utils/request'; import request from '@/utils/request';
// 查询学段等级
export function getPeriod () {
return request({
url: '/manager/level/period',
method: 'get',
})
}
// 查询年级等级
export function getPeriodType (periodType) {
return request({
url: `/manager/level/grade/${periodType}`,
method: 'get',
})
}
// 获取组织结构 // 获取组织结构
export function getClass () { export function getClass () {
return request({ return request({
@@ -15,8 +30,34 @@ export function getClassStudent (classId, params) {
params params
}) })
} }
// 校区学段年级班级新增 // 新增校区
export function postManager (data) { export function postManager (data) {
return request({
url: `/manager/class/campus`,
method: 'post',
data
})
}
// 新增学段
export function postPeriod (data) {
return request({
url: `/manager/class/period`,
method: 'post',
data
})
}
// 新增年级
export function postGrade (data) {
return request({
url: `/manager/class/grade`,
method: 'post',
data
})
}
// 新增班级
export function postClass (data) {
return request({ return request({
url: `/manager/class`, url: `/manager/class`,
method: 'post', method: 'post',
+166 -60
View File
@@ -76,17 +76,17 @@
width="30%"> width="30%">
<el-form ref="schoolForm" :model="schoolForm" label-width="80px"> <el-form ref="schoolForm" :model="schoolForm" label-width="80px">
<el-form-item v-if="addNum < 4" label="校区"> <el-form-item v-if="addNum < 4" label="校区">
<el-select @change="onChangeSchool" v-model="schoolForm.school" placeholder="请选择校区"> <el-select @change="onChangeSchool" v-model="schoolForm.campusId" placeholder="请选择校区">
<el-option v-for="item in organizeArr" :label="item.className" :value="item.classId"></el-option> <el-option v-for="item in organizeArr" :label="item.className" :value="item.classId"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item v-if="addNum < 3 && schoolForm.school" label="学段"> <el-form-item v-if="addNum < 3 && schoolForm.campusId" label="学段">
<el-select @change="onChangePhase" v-model="schoolForm.phase" placeholder="请选择学段"> <el-select @change="onChangePhase" v-model="schoolForm.periodId" placeholder="请选择学段">
<el-option v-for="item in phaseArr" :label="item.className" :value="item.classId"></el-option> <el-option v-for="item in phaseArr" :label="item.className" :value="item.classId"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item v-if="addNum < 2 && schoolForm.phase" label="年级"> <el-form-item v-if="addNum < 2 && schoolForm.periodId" label="年级">
<el-select @change="onChangeGrade" v-model="schoolForm.grade" placeholder="请选择年级"> <el-select @change="onChangeGrade" v-model="schoolForm.gradeId" placeholder="请选择年级">
<el-option v-for="item in gradeArr" :label="item.className" :value="item.classId"></el-option> <el-option v-for="item in gradeArr" :label="item.className" :value="item.classId"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
@@ -96,18 +96,43 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item :label="labelEnum[addNum]+'名称'"> <el-form-item v-if="addNum == 4" :label="labelEnum[addNum]+'名称'">
<el-input v-model="schoolForm.name"></el-input> <el-input v-model="schoolForm.name"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="排序"> <el-form-item v-if="addNum == 4" label="排序">
<el-input v-model="schoolForm.sort" placeholder="数值越小越靠前(选填)"></el-input> <el-input v-model="schoolForm.sort" placeholder="数值越小越靠前(选填)"></el-input>
</el-form-item> </el-form-item>
<el-form-item v-if="addNum == 3" :label="labelEnum[addNum]+'名称'">
<el-select v-model="schoolForm.levelId" placeholder="请选择学段等级">
<el-option v-for="item in periodArr" :label="item.name" :value="item.id"></el-option>
</el-select>
</el-form-item>
<el-form-item v-if="addNum == 2" :label="labelEnum[addNum]+'名称'">
<el-select v-model="schoolForm.levelId" placeholder="请选择年级">
<el-option v-for="item in periodTypeArr" :label="item.name" :value="item.id"></el-option>
</el-select>
</el-form-item>
<el-form-item v-if="addNum == 2" label="开始时间">
<el-date-picker
v-model="schoolForm.startYear"
type="year"
value-format="yyyy"
placeholder="请选择开始时间">
</el-date-picker>
</el-form-item>
<el-form-item v-if="addNum == 1" label="班级">
<el-input v-model="schoolForm.classLevel" placeholder="请输入班级" type="number">
<template slot="append"></template>
</el-input>
</el-form-item>
</el-form> </el-form>
<span slot="footer" class="dialog-footer"> <span slot="footer" class="dialog-footer">
<el-button @click="isAddDialog = false"> </el-button> <el-button @click="isAddDialog = false"> </el-button>
<el-button type="primary" @click="onClickAffirm"> </el-button> <el-button type="primary" @click="onClickAffirm"> </el-button>
</span> </span>
</el-dialog> </el-dialog>
<el-dialog <el-dialog
title="修改名称" title="修改名称"
:visible.sync="isUpdateDialog" :visible.sync="isUpdateDialog"
@@ -116,7 +141,7 @@
<el-form-item :label="'名称'"> <el-form-item :label="'名称'">
<el-input v-model="updateForm.name"></el-input> <el-input v-model="updateForm.name"></el-input>
</el-form-item> </el-form-item>
<el-form-item :label="'排序'"> <el-form-item v-if="nodeData.superId == 0" :label="'排序'">
<el-input v-model="updateForm.sort" placeholder="数值越小越靠前"></el-input> <el-input v-model="updateForm.sort" placeholder="数值越小越靠前"></el-input>
</el-form-item> </el-form-item>
</el-form> </el-form>
@@ -161,14 +186,13 @@
<el-button type="primary" @click="onClickAffirmRule"> </el-button> <el-button type="primary" @click="onClickAffirmRule"> </el-button>
</span> </span>
</el-dialog> </el-dialog>
<input @change="onClickFile($event)" type="file">
</div> </div>
</template> </template>
<script> <script>
import columns from "./columns"; import columns from "./columns";
import { getClass, getClassStudent, postManager, putManager, deleteManager, getGuardian } from "./api"; import { getClass, getClassStudent, postManager, putManager, deleteManager, getGuardian , getPeriod, getPeriodType, postPeriod, postGrade, postClass } from "./api";
import { getRuleGroup } from "../../regulation/api"; import { getRuleGroup } from "../../regulation/api";
import { Loading } from 'element-ui'; import { Loading } from 'element-ui';
import { formatDate } from "@/com/index"; import { formatDate } from "@/com/index";
@@ -228,13 +252,18 @@ export default {
activeName: '', // 展开的规则组 activeName: '', // 展开的规则组
radio: '', // 校区选中的规则组 radio: '', // 校区选中的规则组
ruleGroupArr: [], // 规则组数据 ruleGroupArr: [], // 规则组数据
loadingText: '打包中' periodArr: [], // 查询学段数据
periodTypeArr: [], // 查询年级等级数据
}; };
}, },
components: { components: {
CommonHead, CommonHead,
}, },
async created() { async created() {
getPeriod().then(res => {
this.periodArr = res
})
this.ruleList() this.ruleList()
this.classList() this.classList()
const defaultCheckClass= localStorage.getItem('defaultCheckClass') // 设置之前选中了班级 const defaultCheckClass= localStorage.getItem('defaultCheckClass') // 设置之前选中了班级
@@ -249,32 +278,11 @@ export default {
// let worker = new Worker(workerUrl); // let worker = new Worker(workerUrl);
}, },
methods: { methods: {
// 查询年级等级
async onClickFile(e) { periodTypeList(periodType){
loading = Loading.service({ getPeriodType(periodType).then(res => {
lock: true, this.periodTypeArr = res
text: '打包上传中...',
spinner: 'el-icon-loading',
background: 'rgba(0, 0, 0, 0.7)'
});
const file = e.target.files[0]
cutUpload(file, true, (progressEvent) =>{
let progressNum = (progressEvent.loaded / progressEvent.total) * 100
loading.text = '上传进度' + progressNum.toFixed(2) + '%'
if(progressNum == 100){
console.log('完成')
loading.text = '上传完成!'
console.log(loading.text)
setTimeout(() => {
loading.close();
}, 1000);
}
console.log(progressEvent.loaded + '/' + progressEvent.total);
}).then(res =>{
console.log(res)
}) })
}, },
// 点击确定修改小区规则 // 点击确定修改小区规则
onClickAffirmRule() { onClickAffirmRule() {
@@ -345,6 +353,7 @@ export default {
// 点击修改按钮 // 点击修改按钮
onClickUpdate() { onClickUpdate() {
this.updateForm = {} this.updateForm = {}
console.log(this.nodeData)
if(this.nodeData){ // 说明点击过节点 if(this.nodeData){ // 说明点击过节点
this.isUpdateDialog = true this.isUpdateDialog = true
this.updateForm = { this.updateForm = {
@@ -370,45 +379,142 @@ export default {
}); });
}, },
// 点击确认新增 // 点击确认新增
// onClickAffirm() {
// // const { school, phase, grade, name } = this.schoolForm;
// const errorMessages = {
// school: '请选择校区',
// phase: '请选择学段',
// grade: '请选择年级',
// name: '请输入'+ this.labelEnum[this.addNum] + '名称',
// };
// const requiredFields = {
// 1: ['school', 'phase', 'grade', 'name'],
// 2: ['school', 'phase', 'name', ],
// 3: ['school', 'name', ],
// 4: ['name'],
// }
// // 过滤必填未填写的字段
// const missingFields = requiredFields[this.addNum].filter(field => !this.schoolForm[field]);
// if(missingFields.length === 0){ // 判断必填项是否填写
// let obj = { name: this.schoolForm.name, superId: 0, sort: this.schoolForm.sort }
// if(this.addNum !== 4 ){
// let len = requiredFields[this.addNum].length
// obj.superId = this.schoolForm[requiredFields[this.addNum][len-2]]
// }
// // 提交
// postManager(obj).then(res =>{
// this.classList();
// this.$message.success('新增成功');
// this.isAddDialog = false
// });
// }else { // 未填写信息提示
// this.$message.error(errorMessages[missingFields[0]]);
// }
// },
onClickAffirm() { onClickAffirm() {
// const { school, phase, grade, name } = this.schoolForm; console.log(this.schoolForm)
const errorMessages = { if(this.addNum === 4){
school: '请选择校区', if(!this.schoolForm.name){
phase: '请选择学段', this.$message.error('请输入校区名称')
grade: '请选择年级', return
name: '请输入'+ this.labelEnum[this.addNum] + '名称',
};
const requiredFields = {
1: ['school', 'phase', 'grade', 'name'],
2: ['school', 'phase', 'name', ],
3: ['school', 'name', ],
4: ['name'],
} }
// 过滤必填未填写的字段 postManager(this.schoolForm).then(res =>{
const missingFields = requiredFields[this.addNum].filter(field => !this.schoolForm[field]);
if(missingFields.length === 0){ // 判断必填项是否填写
let obj = { name: this.schoolForm.name, superId: 0, sort: this.schoolForm.sort }
if(this.addNum !== 4 ){
let len = requiredFields[this.addNum].length
obj.superId = this.schoolForm[requiredFields[this.addNum][len-2]]
}
// 提交
postManager(obj).then(res =>{
this.classList(); this.classList();
this.$message.success('新增成功'); this.$message.success('新增成功');
this.isAddDialog = false this.isAddDialog = false
}); });
}else { // 未填写信息提示 }
this.$message.error(errorMessages[missingFields[0]]); if(this.addNum === 3){ // 新增学段
if(!this.schoolForm.campusId){
this.$message.error('请选择校区')
return
}
if(!this.schoolForm.levelId){
this.$message.error('请选择学段')
return
}
postPeriod(this.schoolForm ).then(res =>{
this.classList();
this.isAddDialog = false
this.$message.success('新增成功');
})
}
if(this.addNum === 2){ // 新增年级
if(!this.schoolForm.campusId){
this.$message.error('请选择校区')
return
}
if(!this.schoolForm.periodId){
this.$message.error('请选择学段')
return
}
if(!this.schoolForm.levelId){
this.$message.error('请选择年级')
return
}
if(!this.schoolForm.startYear){
this.$message.error('请选择开始时间')
return
}
postGrade(this.schoolForm).then(res =>{
this.classList();
this.isAddDialog = false
this.$message.success('新增成功');
})
}
if(this.addNum === 1){ // 新增班级
if(!this.schoolForm.campusId){
this.$message.error('请选择校区')
return
}
if(!this.schoolForm.periodId){
this.$message.error('请选择学段')
return
}
if(!this.schoolForm.gradeId){
this.$message.error('请选择年级')
return
}
if(!this.schoolForm.classLevel){
this.$message.error('请输入班级')
return
}
let obj = { ...this.schoolForm }
console.log('this.classArr.find(it => { return it.classId == this.schoolForm.gradeId }).feature')
console.log(this.gradeArr)
console.log(this.schoolForm.gradeId)
const feature = JSON.parse(this.gradeArr.find(it => { return it.classId == this.schoolForm.gradeId }).feature)
const levelId = this.periodTypeArr.find(item => { return item.level == feature.grade_level }).id
console.log('levelId')
console.log(levelId)
obj.levelId = levelId
postClass(obj).then(res =>{
this.classList();
this.isAddDialog = false
this.$message.success('新增成功');
})
} }
}, },
// 选择校区 // 选择校区
onChangeSchool(value) { onChangeSchool(value) {
delete this.schoolForm.gradeId // 清空年级
delete this.schoolForm.periodId // 清空学段
this.phaseArr = this.organizeArr.find( item => item.classId == value).childrenList this.phaseArr = this.organizeArr.find( item => item.classId == value).childrenList
}, },
// 选择分段 // 选择分段
onChangePhase(value) { onChangePhase(value) {
delete this.schoolForm.gradeId
const periodName = this.phaseArr.find( item => item.classId == value).className // 学段名
const feature = JSON.parse(this.phaseArr.find( item => item.classId == value).feature) // 学段名
this.periodTypeList(feature.period_type)
this.gradeArr = this.phaseArr.find( item => item.classId == value).childrenList this.gradeArr = this.phaseArr.find( item => item.classId == value).childrenList
// console.log(feature)
// console.log(this.gradeArr)
// console.log(periodName)
// console.log(this.periodArr.find( item => item.name == periodName))
// this.periodTypeList(this.periodArr.find( item => item.name == periodName).type)
}, },
// 选择年级 // 选择年级
onChangeGrade(value) { onChangeGrade(value) {
@@ -0,0 +1,521 @@
<template>
<div class="box">
<div class="side-nav">
<h3>班级管理</h3>
<div>
<el-tree :data="organizeArr" node-key="classId"
ref="areaTrees"
:default-expanded-keys="defaultCheckedKeys"
:default-checked-keys="defaultCheckedKeys"
accordion
:highlight-current="true"
:props="defaultProps" @node-click="handleNodeClick"
></el-tree>
<div class="add-box">
<div class="add-list">
<el-button @click="isAddDialog = true; addNum = 1; resetSchoolForm()" size="medium" class="el-icon-plus">新增班级</el-button>
</div>
<div class="add-list">
<el-button @click="isAddDialog = true; addNum = 2;resetSchoolForm()" size="medium" class="el-icon-plus">新增年级</el-button>
</div>
<div class="add-list">
<el-button @click="isAddDialog = true; addNum = 3;resetSchoolForm()" size="medium" class="el-icon-plus">新增学段</el-button>
</div>
<div class="add-list">
<el-button @click="isAddDialog = true; addNum = 4;resetSchoolForm()" size="medium" class="el-icon-plus">新增校区</el-button>
</div>
</div>
</div>
</div>
<div class="form-adapt-container">
<el-card shadow="hover">
<!-- <h4>{{ classData.className}}</h4> -->
<div style="display: flex;">
<div style="margin-right: 10px; font-size: 16px; line-height: 27px; font-weight: 700;">{{ nodeData.className }}</div>
<!-- <div v-else style="margin-right: 10px; font-size: 16px; line-height: 27px;font-weight: 700;">{{ classData.className}}</div> -->
<el-button @click="onClickUpdate" v-if="nodeData.className" size="mini" type="warning" class="el-icon-edit">修改名称</el-button>
<el-button @click="onClickRemove" v-if="nodeData.className" size="mini" type="danger" class="el-icon-delete">删除</el-button>
<el-button @click="onClickUpdateRule" v-if="nodeData.className && nodeData.superId === '0'" size="mini" type="primary" class="el-icon-setting">设置规则</el-button>
</div>
</el-card>
<el-card shadow="hover" style=" margin-top: 20px;" >
<div style="margin-bottom: 10px;">
<el-button type="primary">添加学生</el-button>
</div>
<el-table
:data="studentArr"
:row-style="{ height: '50px' }"
border
>
<el-table-column label="学生姓名" prop="name"></el-table-column>
<el-table-column label="学生照片" prop="faceImg">
<template slot-scope="scope">
<img :src="scope.row.faceImg" alt="" style="width: 100px; height: 100px;">
</template>
</el-table-column>
<el-table-column label="手机号" prop="mobile"></el-table-column>
<el-table-column label="家长" prop="relation"></el-table-column>
</el-table>
</el-card>
<Pagination
:total="total"
:pageNum="query.current"
:pageSize="query.size"
@clickCurrent="onClickCurrent"
@clickSize="onClickSize"
/>
</div>
<!-- 新增 -->
<el-dialog
:title="addEnum[addNum]"
:visible.sync="isAddDialog"
width="30%">
<el-form ref="schoolForm" :model="schoolForm" label-width="80px">
<el-form-item v-if="addNum < 4" label="校区">
<el-select @change="onChangeSchool" v-model="schoolForm.school" placeholder="请选择校区">
<el-option v-for="item in organizeArr" :label="item.className" :value="item.classId"></el-option>
</el-select>
</el-form-item>
<el-form-item v-if="addNum < 3 && schoolForm.school" label="学段">
<el-select @change="onChangePhase" v-model="schoolForm.phase" placeholder="请选择学段">
<el-option v-for="item in phaseArr" :label="item.className" :value="item.classId"></el-option>
</el-select>
</el-form-item>
<el-form-item v-if="addNum < 2 && schoolForm.phase" label="年级">
<el-select @change="onChangeGrade" v-model="schoolForm.grade" placeholder="请选择年级">
<el-option v-for="item in gradeArr" :label="item.className" :value="item.classId"></el-option>
</el-select>
</el-form-item>
<el-form-item v-if="addNum < 1 && schoolForm.grade" label="班级">
<el-select v-model="schoolForm.class" placeholder="请选择班级">
<el-option v-for="item in classArr" :label="item.className" :value="item.classId"></el-option>
</el-select>
</el-form-item>
<el-form-item :label="labelEnum[addNum]+'名称'">
<el-input v-model="schoolForm.name"></el-input>
</el-form-item>
<el-form-item label="排序">
<el-input v-model="schoolForm.sort" placeholder="数值越小越靠前(选填)"></el-input>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="isAddDialog = false"> </el-button>
<el-button type="primary" @click="onClickAffirm"> </el-button>
</span>
</el-dialog>
<el-dialog
title="修改名称"
:visible.sync="isUpdateDialog"
width="30%">
<el-form ref="updateForm" :model="updateForm" label-width="80px">
<el-form-item :label="'名称'">
<el-input v-model="updateForm.name"></el-input>
</el-form-item>
<el-form-item :label="'排序'">
<el-input v-model="updateForm.sort" placeholder="数值越小越靠前"></el-input>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="isUpdateDialog = false"> </el-button>
<el-button type="primary" @click="onClickAffirmUpdate"> </el-button>
</span>
</el-dialog>
<el-dialog :visible.sync="isRuleDialog" title="学校进出校规则设定">
<el-collapse>
<el-collapse-item v-for="item in ruleGroupArr" :key="item.id">
<template slot="title">
<el-radio v-model="radio" :label="item.id">{{ item.groupName }}</el-radio>
</template>
<el-table
:data="item.ruleList"
:row-style="{ height: '50px',}"
class="group-table"
>
<el-table-column label="开始时间" prop="startTime"></el-table-column>
<el-table-column label="结束时间" prop="endTime"></el-table-column>
<el-table-column label="规则" prop="avatar">
<template slot-scope="scope">
<div>
<div v-if="!scope.row.ruleObj.MORNING" class="rule-checkout-list">
<el-checkbox v-model="scope.row.ruleObj.INTO">进校</el-checkbox>
<el-checkbox v-model="scope.row.ruleObj.OUT">出校</el-checkbox>
</div>
<div v-else>
早上到校时间
</div>
</div>
</template>
</el-table-column>
</el-table>
</el-collapse-item>
</el-collapse>
<span slot="footer" class="dialog-footer">
<el-button @click="isRuleDialog = false"> </el-button>
<el-button type="primary" @click="onClickAffirmRule"> </el-button>
</span>
</el-dialog>
<input @change="onClickFile($event)" type="file">
</div>
</template>
<script>
import columns from "./columns";
import { getClass, getClassStudent, postManager, putManager, deleteManager, getGuardian } from "./api";
import { getRuleGroup } from "../../regulation/api";
import { Loading } from 'element-ui';
import { formatDate } from "@/com/index";
import CommonHead from './components/CommonHead.vue'
import { cutUpload } from "@/com/cutUpload";
// import workerUrl from '@/com/worker.js';
// import { cutFile } from '@/com/cutFile'
const FlagEnum = {
INTO: 0,// 进
OUT: 1,// 出
MORNING: 2, // 早上到校时间
};
let loading
export default {
name: "deviceManagement",
data() {
return {
columns,
total: 0,
query: {
current: 1,
size: 10,
},
defaultProps: {
children: 'childrenList',
label: 'className'
},
loading: false,
equipmentList: [],
dialogVisible: false,
organizeArr: [], // 校区班级列表
studentArr: [],// 学生列表
classData: {
classId: null,
className: ''
}, // 选中的班级
total: 0,
defaultCheckedKeys: [],
isAddDialog: false, // 新增弹框
schoolForm:{}, // 学校分段年级班级信息
addNum: 0, // 新增学校4分段3年级2班级1
phaseArr: [], // 分段数据
gradeArr: [], // 年级数据
classArr: [], // 班级数据
addEnum: ['', '新增班级', '新增年级', '新增学段', '新增校区'],
labelEnum: ['', '班级', '年级', '学段', '校区'],
form: { },
nodeData: '', // 选中的节点
isUpdateDialog: false, // 修改弹框
updateForm: { // 修改信息
superId: '',
name: ''
},
/* 设置规则组 */
isRuleDialog: false, // 进出校规则模态框
activeName: '', // 展开的规则组
radio: '', // 校区选中的规则组
ruleGroupArr: [], // 规则组数据
loadingText: '打包中'
};
},
components: {
CommonHead,
},
async created() {
this.ruleList()
this.classList()
const defaultCheckClass= localStorage.getItem('defaultCheckClass') // 设置之前选中了班级
if(defaultCheckClass){
this.nodeData = JSON.parse(defaultCheckClass)
this.defaultCheckedKeys = [this.nodeData.classId]
this.studentList(this.nodeData.classId)
}
},
mounted () {
// console.log(workerUrl)
// let worker = new Worker(workerUrl);
},
methods: {
async onClickFile(e) {
loading = Loading.service({
lock: true,
text: '打包上传中...',
spinner: 'el-icon-loading',
background: 'rgba(0, 0, 0, 0.7)'
});
const file = e.target.files[0]
cutUpload(file, true, (progressEvent) =>{
let progressNum = (progressEvent.loaded / progressEvent.total) * 100
loading.text = '上传进度' + progressNum.toFixed(2) + '%'
if(progressNum == 100){
console.log('完成')
loading.text = '上传完成!'
console.log(loading.text)
setTimeout(() => {
loading.close();
}, 1000);
}
console.log(progressEvent.loaded + '/' + progressEvent.total);
}).then(res =>{
console.log(res)
})
},
// 点击确定修改小区规则
onClickAffirmRule() {
console.log(this.radio)
if(!this.radio){
this.$message.error('请选择需要设置的规则组')
return
}
this.ruleGroupForm.ruleGroupId = this.radio
putManager(this.ruleGroupForm).then(res =>{
this.$message.success('修改成功')
this.classList();
this.nodeData = this.ruleGroupForm.ruleGroupId
this.isRuleDialog = false
})
},
// 点击设置规则组
onClickUpdateRule () {
this.isRuleDialog = true
console.log(this.nodeData)
this.ruleGroupForm = JSON.parse(JSON.stringify(this.nodeData))
this.radio = this.ruleGroupForm.ruleGroupId
},
// 规则组列表
ruleList(){
getRuleGroup().then( res =>{
if(res.length){
this.ruleGroupArr = res
res.map(item =>{
if(item.ruleList.length){ // 说明存在规则
item.ruleList.map(it =>{
let obj = {
INTO: false,// 进
OUT: false,// 出
MORNING: false, // 早上到校时间
}
if(it.enabledFlags.length){
it.enabledFlags.forEach(key =>{
console.log(FlagEnum[key])
obj[key] = this.decryption(FlagEnum[key], it.flag)
it.ruleObj = obj
})
}else {
it.ruleObj = obj
}
})
}
return item
})
console.log(this.ruleGroupArr)
}
})
},
// 点击确定修改
onClickAffirmUpdate() {
putManager(this.updateForm).then(res =>{
this.classList();
this.$message.success('修改成功')
this.isUpdateDialog = false
this.nodeData.className = this.updateForm.name
})
},
// 点击修改按钮
onClickUpdate() {
this.updateForm = {}
if(this.nodeData){ // 说明点击过节点
this.isUpdateDialog = true
this.updateForm = {
classId: this.nodeData.classId,
name: this.nodeData.className,
sort: this.nodeData.sort
}
}
},
onClickRemove () {
this.$confirm(`删除包含下级所以数据,确定要删除${this.nodeData.className}吗?`, '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
deleteManager(this.nodeData.classId).then(res => {
this.classList();
this.$message({ type: 'success', message: '删除成功!' });
this.nodeData = ''
})
}).catch(() => {
this.$message({ type: 'info', message: '已取消删除' });
});
},
// 点击确认新增
onClickAffirm() {
// const { school, phase, grade, name } = this.schoolForm;
const errorMessages = {
school: '请选择校区',
phase: '请选择学段',
grade: '请选择年级',
name: '请输入'+ this.labelEnum[this.addNum] + '名称',
};
const requiredFields = {
1: ['school', 'phase', 'grade', 'name'],
2: ['school', 'phase', 'name', ],
3: ['school', 'name', ],
4: ['name'],
}
// 过滤必填未填写的字段
const missingFields = requiredFields[this.addNum].filter(field => !this.schoolForm[field]);
if(missingFields.length === 0){ // 判断必填项是否填写
let obj = { name: this.schoolForm.name, superId: 0, sort: this.schoolForm.sort }
if(this.addNum !== 4 ){
let len = requiredFields[this.addNum].length
obj.superId = this.schoolForm[requiredFields[this.addNum][len-2]]
}
// 提交
postManager(obj).then(res =>{
this.classList();
this.$message.success('新增成功');
this.isAddDialog = false
});
}else { // 未填写信息提示
this.$message.error(errorMessages[missingFields[0]]);
}
},
// 选择校区
onChangeSchool(value) {
this.phaseArr = this.organizeArr.find( item => item.classId == value).childrenList
},
// 选择分段
onChangePhase(value) {
this.gradeArr = this.phaseArr.find( item => item.classId == value).childrenList
},
// 选择年级
onChangeGrade(value) {
this.classArr = this.gradeArr.find( item => item.classId == value).childrenList
},
handleNodeClick(item) {
this.nodeData = item
// localStorage.setItem('defaultCheckClass', JSON.stringify(item) )
if(item.childrenList.length === 0 && item.classId !== this.classData.classId) {
this.studentList(item.classId)
this.classData = item
}else {
this.classData = ''
this.studentList(item.classId)
}
},
// 班级列表
classList(){
getClass().then( res =>{
this.nodeData.classId ? this.defaultCheckedKeys = [this.nodeData.classId] : ''
this.organizeArr = res
})
},
// 获取班级学生列表
studentList(classId){
getClassStudent(classId, this.query).then( res =>{
this.studentArr = res.records
this.total = res.total
})
},
// 点击切换页数
onClickCurrent(val) {
this.query.current = val;
this.studentList(this.classData.classId);
},
// 点击了每页页数
onClickSize(val) {
this.query.size = val;
this.studentList(this.classData.classId);
},
// 重置班级年级下拉数据
resetSchoolForm() {
this.schoolForm = {}
this.phaseArr = []
this.gradeArr = []
this.classArr = []
},
decryption (flagEnum, flag){
let bitValue = 1 << flagEnum
return (flag & bitValue) == bitValue;
},
encryption(flagEnum, bool, flag) {
let bitValue = 1 << flagEnum;
flag = bool ? flag | bitValue : flag & ~bitValue;
return flag;
},
},
};
</script>
<style lang="scss" scoped>
.box{
display: flex;
.side-nav{
width: 250px;
height: 100%;
background-color: #fff;
padding: 20px 20px 20px 20px;
box-sizing: border-box;
margin-right: 20px;
h3{
margin-bottom: 20px;
}
.add-box{
padding: 5px;
box-sizing: border-box;
.add-list{
margin: 0 0 10px;
}
}
}
.form-adapt-container{
flex: 1;
}
}
.material-list{
width: 100%;
.top-box{
display: flex;
}
.label{
display: flex; flex: 1; align-items: center;
height: 36px;
}
.delete-box{
width: 30px;
height: 40px;
display: flex;
align-items: center;
justify-content: center;
cursor: pointer;
}
}
.content::-webkit-scrollbar {
width: 0; /* 设置滚动条的宽度 */
}
</style>