|
@@ -4,21 +4,43 @@
|
|
|
<div class="page_tag">
|
|
<div class="page_tag">
|
|
|
<el-radio-group v-model="authType" @change="ChangeTab">
|
|
<el-radio-group v-model="authType" @change="ChangeTab">
|
|
|
<el-radio-button value="1">开通年级</el-radio-button>
|
|
<el-radio-button value="1">开通年级</el-radio-button>
|
|
|
- <el-radio-button value="2" disabled>开通模块</el-radio-button>
|
|
|
|
|
|
|
+ <el-radio-button value="2">开通系统</el-radio-button>
|
|
|
|
|
+ <el-radio-button value="3">开通模块</el-radio-button>
|
|
|
</el-radio-group>
|
|
</el-radio-group>
|
|
|
</div>
|
|
</div>
|
|
|
<div class="page_jg_20"></div>
|
|
<div class="page_jg_20"></div>
|
|
|
|
|
+ <!-- 开通年级 选项配置 -->
|
|
|
<div v-if="authType == '1'" class="grade_content">
|
|
<div v-if="authType == '1'" class="grade_content">
|
|
|
<div v-for="(grade, index) in gradeList" :key="grade.levelCode" class="grade_level">
|
|
<div v-for="(grade, index) in gradeList" :key="grade.levelCode" class="grade_level">
|
|
|
- <el-checkbox v-model="checkAll[index]" :indeterminate="!checkAll[index] && selectedGrades[index]?.length > 0" :label="grade.levelName" @click="CheckAllChange(index)" />
|
|
|
|
|
- <el-checkbox-group v-model="selectedGrades[index]" @change="(val: string[]) => handleGradeChange(val, index)">
|
|
|
|
|
|
|
+ <el-checkbox v-model="checkAll[index]" :indeterminate="!checkAll[index] && selectedGrades[index]?.length > 0" :label="grade.levelName" @click="CheckAllChange(index,'grade')" />
|
|
|
|
|
+ <el-checkbox-group v-model="selectedGrades[index]" @change="(val: string[]) => HandleCheckChange(val, index,'grade')">
|
|
|
<el-checkbox v-for="item in grade.gradeList" :key="item.gradeCode" :label="item.gradeName" :value="item.gradeCode" />
|
|
<el-checkbox v-for="item in grade.gradeList" :key="item.gradeCode" :label="item.gradeName" :value="item.gradeCode" />
|
|
|
</el-checkbox-group>
|
|
</el-checkbox-group>
|
|
|
<!-- <div>
|
|
<!-- <div>
|
|
|
- <el-checkbox v-model="selectedGrades[index]" :label="item.gradeName" v-for="item in grade.gradeList" :key="item.gradeCode" @change="(val) =>handleGradeChange(val, item)" />
|
|
|
|
|
|
|
+ <el-checkbox v-model="selectedGrades[index]" :label="item.gradeName" v-for="item in grade.gradeList" :key="item.gradeCode" @change="(val) =>HandleCheckChange(val, item)" />
|
|
|
</div> -->
|
|
</div> -->
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
|
|
|
+
|
|
|
|
|
+ <!-- 开通系统 选项配置 -->
|
|
|
|
|
+ <div v-if="authType == '2'" class="grade_content">
|
|
|
|
|
+ <el-checkbox-group v-model="selectedSystem">
|
|
|
|
|
+ <el-checkbox v-for="item in systemList" :key="item.id" :label="item.name" :value="item.id" />
|
|
|
|
|
+ </el-checkbox-group>
|
|
|
|
|
+ </div>
|
|
|
|
|
+
|
|
|
|
|
+ <!-- 开通模块 选项配置 -->
|
|
|
|
|
+ <div v-if="authType == '3'" class="grade_content">
|
|
|
|
|
+ <div v-for="(module, index) in moduleList" :key="module.id" class="grade_level">
|
|
|
|
|
+ <el-checkbox v-model="moduleCheckAll[index]" :indeterminate="!moduleCheckAll[index] && selectedModules[index]?.length > 0" :label="module.name"
|
|
|
|
|
+ @click="CheckAllChange(index,'module')" />
|
|
|
|
|
+ <el-checkbox-group v-model="selectedModules[index]" @change="(val: string[]) => HandleCheckChange(val, index,'module')">
|
|
|
|
|
+ <el-checkbox v-for="item in module.moduleList" :key="item.id" :label="item.name" :value="item.id" />
|
|
|
|
|
+ </el-checkbox-group>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
</div>
|
|
</div>
|
|
|
<template #footer>
|
|
<template #footer>
|
|
|
<el-button class="button_border_gray cancel" @click="authData.showDialog = false">取消</el-button>
|
|
<el-button class="button_border_gray cancel" @click="authData.showDialog = false">取消</el-button>
|
|
@@ -34,7 +56,12 @@ export default {
|
|
|
<script lang="ts" setup>
|
|
<script lang="ts" setup>
|
|
|
import { ref, inject, onMounted } from 'vue'
|
|
import { ref, inject, onMounted } from 'vue'
|
|
|
import { ElMessage } from 'element-plus'
|
|
import { ElMessage } from 'element-plus'
|
|
|
-import { getAllGrade, addGrade } from '@/api/school'
|
|
|
|
|
|
|
+import { getAllGrade, addGrade,
|
|
|
|
|
+ getAllSystemApi, getAllModuleApi,
|
|
|
|
|
+ deleteOrAddSystemModuleApi,
|
|
|
|
|
+ } from '@/api/school'
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
interface AuthData {
|
|
interface AuthData {
|
|
|
showDialog: boolean
|
|
showDialog: boolean
|
|
|
schoolName: string
|
|
schoolName: string
|
|
@@ -56,14 +83,58 @@ interface GradeData {
|
|
|
levelName: string
|
|
levelName: string
|
|
|
levelNumder?: number
|
|
levelNumder?: number
|
|
|
}
|
|
}
|
|
|
-const gradeList = ref<GradeData[]>([])
|
|
|
|
|
-const authType = ref('1')
|
|
|
|
|
|
|
+
|
|
|
|
|
+interface SystemData {
|
|
|
|
|
+ id:string
|
|
|
|
|
+ name:string
|
|
|
|
|
+ isSelect:string | number
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+interface ModuleData {
|
|
|
|
|
+ id:string
|
|
|
|
|
+ moduleList:SystemData[]
|
|
|
|
|
+ name:string
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+const authType = ref('1') //默认展示的tab
|
|
|
const submitLoading = ref(false)
|
|
const submitLoading = ref(false)
|
|
|
|
|
+
|
|
|
|
|
+const gradeList = ref<GradeData[]>([]) // 年级列表
|
|
|
const checkAll = ref<boolean[]>([])
|
|
const checkAll = ref<boolean[]>([])
|
|
|
const selectedGrades = ref<string[][]>([])
|
|
const selectedGrades = ref<string[][]>([])
|
|
|
|
|
+
|
|
|
|
|
+const systemList = ref<SystemData[]>([]) // 系统列表
|
|
|
|
|
+const selectedSystem = ref<string[]>([]) //选择的系统列表
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+const moduleList = ref<ModuleData[]>([]) //不同系统下的模块列表
|
|
|
|
|
+const selectedModules = ref<string[][]>([]) // 选择的不同系统模块列表
|
|
|
|
|
+const moduleCheckAll = ref<boolean[]>([]) //不同系统下模块的全选
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
onMounted (() => {
|
|
onMounted (() => {
|
|
|
|
|
+ // 同默认展示的tab有关
|
|
|
GetAllGrade()
|
|
GetAllGrade()
|
|
|
})
|
|
})
|
|
|
|
|
+
|
|
|
|
|
+// Tab切换
|
|
|
|
|
+const ChangeTab = async (val: any) => {
|
|
|
|
|
+ console.log(val)
|
|
|
|
|
+ switch(val){
|
|
|
|
|
+ case '1':
|
|
|
|
|
+ GetAllGrade()
|
|
|
|
|
+ break
|
|
|
|
|
+ case '2':
|
|
|
|
|
+ await GetAllSystemModule()
|
|
|
|
|
+ break
|
|
|
|
|
+ case '3':
|
|
|
|
|
+ await GetAllModule()
|
|
|
|
|
+ break
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+// 获取【开通年级】的 年级列表
|
|
|
const GetAllGrade = () => {
|
|
const GetAllGrade = () => {
|
|
|
getAllGrade(authData.id).then((res: any) => {
|
|
getAllGrade(authData.id).then((res: any) => {
|
|
|
if(res.code == 200 && res.data) {
|
|
if(res.code == 200 && res.data) {
|
|
@@ -84,33 +155,91 @@ const GetAllGrade = () => {
|
|
|
}
|
|
}
|
|
|
})
|
|
})
|
|
|
}
|
|
}
|
|
|
-const ChangeTab = (val: any) => {
|
|
|
|
|
- console.log(val)
|
|
|
|
|
|
|
+
|
|
|
|
|
+// 获取【开通系统】的 系统列表
|
|
|
|
|
+const GetAllSystemModule = async ()=>{
|
|
|
|
|
+ let res = await getAllSystemApi(authData.id)
|
|
|
|
|
+ if(res?.code == 200){
|
|
|
|
|
+ systemList.value = res.data
|
|
|
|
|
+ // 初始勾选项赋值
|
|
|
|
|
+ selectedSystem.value = res.data.filter((item:SystemData)=>{
|
|
|
|
|
+ return item.isSelect == '1'
|
|
|
|
|
+ }).map((itm:SystemData)=>{
|
|
|
|
|
+ return itm.id
|
|
|
|
|
+ })
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
-const CheckAllChange = (index: number) => {
|
|
|
|
|
- if(!checkAll.value[index]) {
|
|
|
|
|
- selectedGrades.value[index] = gradeList.value[index].gradeList.map(item => item.gradeCode)
|
|
|
|
|
- }else {
|
|
|
|
|
- selectedGrades.value[index] = []
|
|
|
|
|
|
|
+
|
|
|
|
|
+// 获取【开通模块】的 不同系统模块列表
|
|
|
|
|
+const GetAllModule = async()=>{
|
|
|
|
|
+ let res = await getAllModuleApi(authData.id)
|
|
|
|
|
+ if(res?.code == 200){
|
|
|
|
|
+ moduleList.value = res.data
|
|
|
|
|
+
|
|
|
|
|
+ selectedModules.value = res.data.map((systemModules:ModuleData)=>{
|
|
|
|
|
+ return systemModules.moduleList.filter(module=>{
|
|
|
|
|
+ return module.isSelect == '1'
|
|
|
|
|
+ }).map(item=>{
|
|
|
|
|
+ return item.id
|
|
|
|
|
+ })
|
|
|
|
|
+ })
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
-const handleGradeChange = (val: any[], index: number) => {
|
|
|
|
|
- console.log(index)
|
|
|
|
|
- console.log(val)
|
|
|
|
|
- if(gradeList.value[index].gradeList.length == val.length) {
|
|
|
|
|
- checkAll.value[index] = true
|
|
|
|
|
- } else if(val.length == 0) {
|
|
|
|
|
- checkAll.value[index] = false
|
|
|
|
|
- } else {
|
|
|
|
|
- checkAll.value[index] = false
|
|
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+// 处理 年级/模块 【全选】 选项内容的变更
|
|
|
|
|
+const CheckAllChange = (index: number,type:string) => {
|
|
|
|
|
+ switch(type){
|
|
|
|
|
+ case 'grade':{
|
|
|
|
|
+ if(!checkAll.value[index]) {
|
|
|
|
|
+ selectedGrades.value[index] = gradeList.value[index].gradeList.map(item => item.gradeCode)
|
|
|
|
|
+ }else {
|
|
|
|
|
+ selectedGrades.value[index] = []
|
|
|
|
|
+ }
|
|
|
|
|
+ break
|
|
|
|
|
+ }
|
|
|
|
|
+ case 'module':{
|
|
|
|
|
+ if(!moduleCheckAll.value[index]) {
|
|
|
|
|
+ selectedModules.value[index] = moduleList.value[index].moduleList.map(item => item.id)
|
|
|
|
|
+ }else {
|
|
|
|
|
+ selectedModules.value[index] = []
|
|
|
|
|
+ }
|
|
|
|
|
+ break
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
-const SubmitForm = async () => {
|
|
|
|
|
- if(!authData) {
|
|
|
|
|
- return
|
|
|
|
|
|
|
+
|
|
|
|
|
+// 处理 年级/模块【多选】 选项内容的变更
|
|
|
|
|
+const HandleCheckChange = (val: any[], index: number,type:string) => {
|
|
|
|
|
+ console.log(index,val)
|
|
|
|
|
+
|
|
|
|
|
+ switch(type){
|
|
|
|
|
+ case 'grade':
|
|
|
|
|
+ if(gradeList.value[index].gradeList.length == val.length) {
|
|
|
|
|
+ checkAll.value[index] = true
|
|
|
|
|
+ } else if(val.length == 0) {
|
|
|
|
|
+ checkAll.value[index] = false
|
|
|
|
|
+ } else {
|
|
|
|
|
+ checkAll.value[index] = false
|
|
|
|
|
+ }
|
|
|
|
|
+ break
|
|
|
|
|
+
|
|
|
|
|
+ case 'module':
|
|
|
|
|
+ if(moduleList.value[index].moduleList.length == val.length) {
|
|
|
|
|
+ moduleCheckAll.value[index] = true
|
|
|
|
|
+ } else if(val.length == 0) {
|
|
|
|
|
+ moduleCheckAll.value[index] = false
|
|
|
|
|
+ } else {
|
|
|
|
|
+ moduleCheckAll.value[index] = false
|
|
|
|
|
+ }
|
|
|
|
|
+ break
|
|
|
}
|
|
}
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+// 【开通年级】的信息提交
|
|
|
|
|
+const GradeSubmit = async ()=>{
|
|
|
try {
|
|
try {
|
|
|
- submitLoading.value = true
|
|
|
|
|
let arrList = gradeList.value.map((item: any, index: number) => {
|
|
let arrList = gradeList.value.map((item: any, index: number) => {
|
|
|
let arr = item.gradeList.filter((i: any) => selectedGrades.value[index].includes(i.gradeCode))
|
|
let arr = item.gradeList.filter((i: any) => selectedGrades.value[index].includes(i.gradeCode))
|
|
|
return {
|
|
return {
|
|
@@ -121,6 +250,7 @@ const SubmitForm = async () => {
|
|
|
gradeList: arr
|
|
gradeList: arr
|
|
|
}
|
|
}
|
|
|
}).filter(item => item.gradeList.length)
|
|
}).filter(item => item.gradeList.length)
|
|
|
|
|
+
|
|
|
console.log(arrList)
|
|
console.log(arrList)
|
|
|
const res = await addGrade({
|
|
const res = await addGrade({
|
|
|
tenantCode: authData.tenantCode,
|
|
tenantCode: authData.tenantCode,
|
|
@@ -128,14 +258,98 @@ const SubmitForm = async () => {
|
|
|
adminLevelInfo: arrList
|
|
adminLevelInfo: arrList
|
|
|
})
|
|
})
|
|
|
if(res.code == 200) {
|
|
if(res.code == 200) {
|
|
|
- ElMessage.success(res.msg)
|
|
|
|
|
- authData.showDialog = false
|
|
|
|
|
|
|
+ return res
|
|
|
} else {
|
|
} else {
|
|
|
ElMessage.error(res.msg)
|
|
ElMessage.error(res.msg)
|
|
|
|
|
+ return false
|
|
|
|
|
+ }
|
|
|
|
|
+ } catch {
|
|
|
|
|
+ return false
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+// 【开通系统】的信息提交
|
|
|
|
|
+const SystemSubmit = async ()=>{
|
|
|
|
|
+ let finalSelectSystemParams = systemList.value?.map(system=>{
|
|
|
|
|
+ return {
|
|
|
|
|
+ id:system.id,
|
|
|
|
|
+ name:system.name,
|
|
|
|
|
+ isSelect: selectedSystem.value.includes(system.id) ? 1 : 0,
|
|
|
|
|
+ }
|
|
|
|
|
+ }) || []
|
|
|
|
|
+ let params = {
|
|
|
|
|
+ schoolInfoId: authData.id,
|
|
|
|
|
+ moduleType: authType.value == '2' ? 1 : (authType.value == '3' ? 2 : ''), //1 系统 2 模块
|
|
|
|
|
+ adminModuleInfo: finalSelectSystemParams
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ let res = undefined
|
|
|
|
|
+ try{
|
|
|
|
|
+ res = await deleteOrAddSystemModuleApi(params)
|
|
|
|
|
+ }catch{}
|
|
|
|
|
+
|
|
|
|
|
+ if(res?.code == 200) {
|
|
|
|
|
+ return res
|
|
|
|
|
+ } else {
|
|
|
|
|
+ return false
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+// 【开通模块】的信息提交
|
|
|
|
|
+const ModuleSubmit = async ()=>{
|
|
|
|
|
+ let finalSelectSystemParams = moduleList.value?.map((systemModule,index)=>{
|
|
|
|
|
+ let systemModuleList = systemModule.moduleList.map(module=>{
|
|
|
|
|
+ return {
|
|
|
|
|
+ id:module.id,
|
|
|
|
|
+ name:module.name,
|
|
|
|
|
+ isSelect: selectedModules.value[index].includes(module.id) ? 1 : 0,
|
|
|
|
|
+ }
|
|
|
|
|
+ })
|
|
|
|
|
+ return systemModuleList
|
|
|
|
|
+ }) || []
|
|
|
|
|
+
|
|
|
|
|
+ let params = {
|
|
|
|
|
+ schoolInfoId: authData.id,
|
|
|
|
|
+ moduleType: authType.value == '2' ? 1 : (authType.value == '3' ? 2 : ''), //1 系统 2 模块
|
|
|
|
|
+ // 目前需要开通的模块只有一个系统下有,先固定取 finalSelectSystemParams二维数组 的第一个
|
|
|
|
|
+ adminModuleInfo: finalSelectSystemParams[0]
|
|
|
|
|
+ }
|
|
|
|
|
+ let res = undefined
|
|
|
|
|
+ try{
|
|
|
|
|
+ res = await deleteOrAddSystemModuleApi(params)
|
|
|
|
|
+ }catch{}
|
|
|
|
|
+
|
|
|
|
|
+ if(res?.code == 200) {
|
|
|
|
|
+ return res
|
|
|
|
|
+ } else {
|
|
|
|
|
+ return false
|
|
|
}
|
|
}
|
|
|
- } catch {} finally {
|
|
|
|
|
- submitLoading.value = false
|
|
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+// 整体信息的提交
|
|
|
|
|
+const SubmitForm = async () => {
|
|
|
|
|
+ if(!authData) {
|
|
|
|
|
+ return
|
|
|
|
|
+ }
|
|
|
|
|
+ // 初始 loading加载和变量初始化
|
|
|
|
|
+ let res = undefined
|
|
|
|
|
+ submitLoading.value = true
|
|
|
|
|
+
|
|
|
|
|
+ // 中间 处理不同的请求
|
|
|
|
|
+ if(authType.value == '1'){
|
|
|
|
|
+ res = await GradeSubmit()
|
|
|
|
|
+ }else if(authType.value == '2'){
|
|
|
|
|
+ res = await SystemSubmit()
|
|
|
|
|
+ }else if(authType.value == '3'){
|
|
|
|
|
+ res = await ModuleSubmit()
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ //结尾 响应结果整体处理
|
|
|
|
|
+ if(res) {
|
|
|
|
|
+ ElMessage.success(res.msg)
|
|
|
|
|
+ authData.showDialog = false
|
|
|
}
|
|
}
|
|
|
|
|
+ submitLoading.value = false
|
|
|
}
|
|
}
|
|
|
</script>
|
|
</script>
|
|
|
|
|
|