Bläddra i källkod

修改单校权限判断问题

吴朋磊 1 månad sedan
förälder
incheckning
1315af3eea
1 ändrade filer med 43 tillägg och 7 borttagningar
  1. 43 7
      pages/workspace/index.vue

+ 43 - 7
pages/workspace/index.vue

@@ -207,16 +207,16 @@ const state = reactive({
 const modulesList = ref([]);
 const moduleMap = computed(() => {
 	const map = {};
-	modulesList.value.forEach(item => {
-		map[item.id] = item;
+	(modulesList.value || []).forEach(item => {
+		if (item == null || item.id == null) return;
+		map[String(item.id)] = item;
 	});
 	return map;
 });
 
 const getModulePermission = (itemId) => {
-	const module = moduleMap.value[itemId];
-	if (!module) return 1;
-	return module.isSelect;
+	const module = moduleMap.value[String(itemId)];
+	return module && module.isSelect == 1 ? 1 : 0;
 };
 
 const largeCard = computed(() => systemItems.value.find(item => item.isLarge));
@@ -367,14 +367,50 @@ onMounted(() => {
 onShow(() => {
 	pageInit();
 });
+const getSchoolsList = () => {
+	const list = store.state.userStore.schoolsList || uni.getStorageSync('schoolsList') || [];
+	return Array.isArray(list) ? list : [];
+};
+const getLoginSchoolModules = () => {
+	const schools = getSchoolsList();
+	const schoolId = store.state.userStore.userInfo?.schoolId || state.schoolId;
+	const currentSchool = schools.find(item => item && item.schoolId == schoolId);
+	const school = currentSchool || schools[0];
+	if (school && school.modules != null) {
+		return Array.isArray(school.modules) ? school.modules : [];
+	}
+	const schoolWithModules = schools.find(item => item && item.modules != null);
+	if (schoolWithModules) {
+		return Array.isArray(schoolWithModules.modules) ? schoolWithModules.modules : [];
+	}
+	return null;
+};
+const resolveModulesList = () => {
+	const loginModules = getLoginSchoolModules();
+	if (loginModules != null) {
+		return loginModules;
+	}
+	const fromStore = store.state.userStore.modulesList;
+	if (Array.isArray(fromStore) && fromStore.length) {
+		return fromStore;
+	}
+	const fromStorage = uni.getStorageSync('modulesList');
+	if (Array.isArray(fromStorage) && fromStorage.length) {
+		return fromStorage;
+	}
+	return [];
+};
 const pageInit = () => {
-	modulesList.value = store.state.userStore.modulesList || uni.getStorageSync('modulesList') || [];
+	const modules = resolveModulesList();
+	modulesList.value = modules;
+	store.dispatch('setModulesList', modules);
+	uni.setStorageSync('modulesList', modules);
 	fetchScheduleList();
 }
 const handleSystemClick = (item) => {
 	console.log(item,9888)
 	const isSelect = getModulePermission(item.id);
-	if (isSelect == 0) {
+	if (isSelect != 1) {
 		uni.showToast({ title: '暂无权限,敬请期待!', icon: 'none' });
 		return;
 	}