Bladeren bron

修改首页权限和日程权限

吴朋磊 1 maand geleden
bovenliggende
commit
0a4653e380
2 gewijzigde bestanden met toevoegingen van 20 en 3 verwijderingen
  1. 7 1
      pages/workspace/index.vue
  2. 13 2
      pages/workspace/schedule.vue

+ 7 - 1
pages/workspace/index.vue

@@ -118,7 +118,7 @@
 						</view>
 					</view>
 				</view>
-				<view class="add_schedule_btn" @click="handleAddSchedule">
+				<view v-if="isSchoolManager" class="add_schedule_btn" @click="handleAddSchedule">
 					<image src="@/static/image/workspace/add_icon.png" class="add_icon" mode="aspectFit"></image>
 					<text class="btn_text">新增日程</text>
 				</view>
@@ -200,6 +200,11 @@ const systemItems = ref([
 ]);
 const schoolPopupDialogRef = ref(null);//选择学校
 const schoolsList = computed(()=>store.state.userStore.schoolsList);
+const isSchoolManager = computed(() => {
+	const userInfo = store.state.userStore.userInfo || uni.getStorageSync('userInfo') || {};
+	const roleCodes = userInfo.roleCodes || [];
+	return Array.isArray(roleCodes) && roleCodes.includes('SCHOOL_MANAGER');
+});
 const state = reactive({
 	schoolName:'',
 	schoolId:''
@@ -497,6 +502,7 @@ const showAddScheduleModal = ref(false);
 const scheduleContent = ref('');
 
 const handleAddSchedule = () => {
+	if (!isSchoolManager.value) return;
 	showAddScheduleModal.value = true;
 	scheduleContent.value = '';
 };

+ 13 - 2
pages/workspace/schedule.vue

@@ -44,7 +44,7 @@
 		<view class="schedule_container">
 			<view class="schedule_header">
 				<text class="schedule_date">{{ selectedDate }}</text>
-				<view class="add_btn" @click="handleAddSchedule">
+				<view v-if="isSchoolManager" class="add_btn" @click="handleAddSchedule">
 					<!-- <uni-icons type="‌plus-filled" size="24" color="#fff"></uni-icons> -->
 					<image src="@/static/image/workspace/add.png" class="add_icon" mode="aspectFit"></image>
 					<text>新增日程</text>
@@ -59,7 +59,7 @@
 					<view class="schedule_text_container">
 						<text class="schedule_text" :class="{ expanded: expandedItems[item.id] }">{{ item.title }}</text>
 					</view>
-					<view class="schedule_actions">
+					<view v-if="isSchoolManager" class="schedule_actions">
 						<text class="action_btn delete" @click="handleDelete(item.id)">删除</text>
 						<text class="action_btn edit" @click="handleEdit(item)">编辑</text>
 					</view>
@@ -94,13 +94,20 @@
 
 <script setup lang="ts">
 import { ref, computed, onMounted } from 'vue';
+import { useStore } from 'vuex';
 import workspaceApi from '@/reqApi/workspace';
 import uniIcons from '@/uni_modules/uni-icons/components/uni-icons/uni-icons.vue';
 import { useSafeArea } from '@/common/safeArea';
 import commonHeader from '@/components/commonHeader.vue';
 import NoData from '@/components/noData.vue';
 
+const store = useStore();
 const { statusBarHeight, safeAreaBottom, initSafeArea } = useSafeArea();
+const isSchoolManager = computed(() => {
+	const userInfo = store.state.userStore.userInfo || uni.getStorageSync('userInfo') || {};
+	const roleCodes = userInfo.roleCodes || [];
+	return Array.isArray(roleCodes) && roleCodes.includes('SCHOOL_MANAGER');
+});
 
 interface CalendarDay {
 	date: number;
@@ -265,18 +272,21 @@ const handleBack = () => {
 };
 
 const handleAddSchedule = () => {
+	if (!isSchoolManager.value) return;
 	editItem.value = null;
 	scheduleContent.value = '';
 	showAddModal.value = true;
 };
 
 const handleEdit = (item: { id: string; title: string }) => {
+	if (!isSchoolManager.value) return;
 	editItem.value = item;
 	scheduleContent.value = item.title;
 	showAddModal.value = true;
 };
 
 const handleDelete = async (id: string) => {
+	if (!isSchoolManager.value) return;
 	uni.showModal({
 		title: '提示',
 		content: '确定要删除这条日程吗?',
@@ -302,6 +312,7 @@ const handleCloseModal = () => {
 };
 
 const handleConfirmSchedule = async () => {
+	if (!isSchoolManager.value) return;
 	if (!scheduleContent.value.trim()) {
 		uni.showToast({ title: '请输入日程内容', icon: 'none' });
 		return;