Explorar el Código

添加全选管理中 开通系统和开通模块 接口调用

lm hace 2 semanas
padre
commit
bd0b76781d
Se han modificado 3 ficheros con 273 adiciones y 37 borrados
  1. 28 0
      src/api/school.ts
  2. 0 6
      src/layout/components/SiderBar.vue
  3. 245 31
      src/views/school/authConfig.vue

+ 28 - 0
src/api/school.ts

@@ -101,6 +101,34 @@ export const addGrade = (data: any) => {
   })
 }
 
+// 学校管理 —— 查询所有系统
+export const getAllSystemApi = (schoolId:any)=>{
+  return request({
+    url: `/adminApi/v1/admin/school/module/allSystemList/${schoolId}`,
+    method: 'get',
+  })
+}
+
+
+// 学校管理 —— 查询所有模块
+export const getAllModuleApi = (schoolId:any)=>{
+  return request({
+    url: `/adminApi/v1/admin/school/module/allSystemModuleList/${schoolId}`,
+    method: 'get',
+  })
+}
+
+
+// 学校管理-添加删除系统和模块
+export const deleteOrAddSystemModuleApi = (data:any)=>{
+  return request({
+    url: `/adminApi/v1/admin/school/module/addSchoolSystemModule`,
+    method: 'post',
+    data
+  })
+}
+
+
 
 
 // 学校管理--查询所有科目

+ 0 - 6
src/layout/components/SiderBar.vue

@@ -48,12 +48,6 @@ onMounted(() => {
     menuItems.value = JSON.parse(menuListStr)
 
     let additionalMenuList = [
-      {
-        icon: "icon_xuexiaoguanli",
-        route: "/main/userSearch",
-        title: "用户查询",
-        label:'',
-      },
       {
         icon: "icon_xuexiaoguanli",
         route: "/main/logMonitor",

+ 245 - 31
src/views/school/authConfig.vue

@@ -4,21 +4,43 @@
       <div class="page_tag">
         <el-radio-group v-model="authType" @change="ChangeTab">
           <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>
       </div>
       <div class="page_jg_20"></div>
+      <!-- 开通年级 选项配置 -->
       <div v-if="authType == '1'" class="grade_content">
         <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-group>
           <!-- <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 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>
     <template #footer>
       <el-button class="button_border_gray cancel" @click="authData.showDialog = false">取消</el-button>
@@ -34,7 +56,12 @@ export default {
 <script lang="ts" setup>
 import { ref, inject, onMounted } from 'vue'
 import { ElMessage } from 'element-plus'
-import { getAllGrade, addGrade } from '@/api/school'
+import { getAllGrade, addGrade,
+        getAllSystemApi, getAllModuleApi,
+        deleteOrAddSystemModuleApi,
+ } from '@/api/school'
+
+
 interface AuthData {
   showDialog: boolean
   schoolName: string
@@ -56,14 +83,58 @@ interface GradeData {
   levelName: string
   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 gradeList = ref<GradeData[]>([]) // 年级列表
 const checkAll = ref<boolean[]>([])
 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 (() => {
+  // 同默认展示的tab有关
   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 = () => {
   getAllGrade(authData.id).then((res: any) => {
     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 {
-    submitLoading.value = true
     let arrList = gradeList.value.map((item: any, index: number) => {
       let arr = item.gradeList.filter((i: any) => selectedGrades.value[index].includes(i.gradeCode))
       return {
@@ -121,6 +250,7 @@ const SubmitForm = async () => {
         gradeList: arr
       }
     }).filter(item => item.gradeList.length)
+    
     console.log(arrList)
     const res = await addGrade({
       tenantCode: authData.tenantCode,
@@ -128,14 +258,98 @@ const SubmitForm = async () => {
       adminLevelInfo: arrList
     })
     if(res.code == 200) {
-      ElMessage.success(res.msg)
-      authData.showDialog = false
+      return res
     } else {
       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>