后台新增班级校区重新改版
This commit is contained in:
@@ -1,5 +1,20 @@
|
||||
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 () {
|
||||
return request({
|
||||
@@ -15,8 +30,34 @@ export function getClassStudent (classId, params) {
|
||||
params
|
||||
})
|
||||
}
|
||||
// 校区学段年级班级新增
|
||||
// 新增校区
|
||||
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({
|
||||
url: `/manager/class`,
|
||||
method: 'post',
|
||||
|
||||
@@ -76,17 +76,17 @@
|
||||
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-select @change="onChangeSchool" v-model="schoolForm.campusId" 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-form-item v-if="addNum < 3 && schoolForm.campusId" label="学段">
|
||||
<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-select>
|
||||
</el-form-item>
|
||||
<el-form-item v-if="addNum < 2 && schoolForm.phase" label="年级">
|
||||
<el-select @change="onChangeGrade" v-model="schoolForm.grade" placeholder="请选择年级">
|
||||
<el-form-item v-if="addNum < 2 && schoolForm.periodId" label="年级">
|
||||
<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-select>
|
||||
</el-form-item>
|
||||
@@ -96,18 +96,43 @@
|
||||
</el-select>
|
||||
</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-form-item>
|
||||
<el-form-item label="排序">
|
||||
<el-form-item v-if="addNum == 4" label="排序">
|
||||
<el-input v-model="schoolForm.sort" placeholder="数值越小越靠前(选填)"></el-input>
|
||||
</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>
|
||||
<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"
|
||||
@@ -116,7 +141,7 @@
|
||||
<el-form-item :label="'名称'">
|
||||
<el-input v-model="updateForm.name"></el-input>
|
||||
</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-form-item>
|
||||
</el-form>
|
||||
@@ -161,14 +186,13 @@
|
||||
<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 { getClass, getClassStudent, postManager, putManager, deleteManager, getGuardian , getPeriod, getPeriodType, postPeriod, postGrade, postClass } from "./api";
|
||||
import { getRuleGroup } from "../../regulation/api";
|
||||
import { Loading } from 'element-ui';
|
||||
import { formatDate } from "@/com/index";
|
||||
@@ -228,13 +252,18 @@ export default {
|
||||
activeName: '', // 展开的规则组
|
||||
radio: '', // 校区选中的规则组
|
||||
ruleGroupArr: [], // 规则组数据
|
||||
loadingText: '打包中'
|
||||
periodArr: [], // 查询学段数据
|
||||
periodTypeArr: [], // 查询年级等级数据
|
||||
};
|
||||
},
|
||||
components: {
|
||||
CommonHead,
|
||||
},
|
||||
async created() {
|
||||
getPeriod().then(res => {
|
||||
this.periodArr = res
|
||||
})
|
||||
|
||||
this.ruleList()
|
||||
this.classList()
|
||||
const defaultCheckClass= localStorage.getItem('defaultCheckClass') // 设置之前选中了班级
|
||||
@@ -249,32 +278,11 @@ export default {
|
||||
// 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)
|
||||
// 查询年级等级
|
||||
periodTypeList(periodType){
|
||||
getPeriodType(periodType).then(res => {
|
||||
this.periodTypeArr = res
|
||||
})
|
||||
|
||||
},
|
||||
// 点击确定修改小区规则
|
||||
onClickAffirmRule() {
|
||||
@@ -345,6 +353,7 @@ export default {
|
||||
// 点击修改按钮
|
||||
onClickUpdate() {
|
||||
this.updateForm = {}
|
||||
console.log(this.nodeData)
|
||||
if(this.nodeData){ // 说明点击过节点
|
||||
this.isUpdateDialog = true
|
||||
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() {
|
||||
// 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]]
|
||||
console.log(this.schoolForm)
|
||||
if(this.addNum === 4){
|
||||
if(!this.schoolForm.name){
|
||||
this.$message.error('请输入校区名称')
|
||||
return
|
||||
}
|
||||
postManager(this.schoolForm).then(res =>{
|
||||
this.classList();
|
||||
this.$message.success('新增成功');
|
||||
this.isAddDialog = false
|
||||
});
|
||||
}
|
||||
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('新增成功');
|
||||
})
|
||||
}
|
||||
// 提交
|
||||
postManager(obj).then(res =>{
|
||||
this.classList();
|
||||
this.$message.success('新增成功');
|
||||
this.isAddDialog = false
|
||||
});
|
||||
}else { // 未填写信息提示
|
||||
this.$message.error(errorMessages[missingFields[0]]);
|
||||
}
|
||||
},
|
||||
// 选择校区
|
||||
onChangeSchool(value) {
|
||||
delete this.schoolForm.gradeId // 清空年级
|
||||
delete this.schoolForm.periodId // 清空学段
|
||||
this.phaseArr = this.organizeArr.find( item => item.classId == value).childrenList
|
||||
},
|
||||
// 选择分段
|
||||
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
|
||||
|
||||
// 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) {
|
||||
|
||||
@@ -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>
|
||||
Reference in New Issue
Block a user