diff --git a/dist.zip b/dist.zip new file mode 100644 index 0000000..32b8921 Binary files /dev/null and b/dist.zip differ diff --git a/src/api/myAxios.ts b/src/api/myAxios.ts index a70960b..c0b52e8 100644 --- a/src/api/myAxios.ts +++ b/src/api/myAxios.ts @@ -6,7 +6,8 @@ import router from "../router"; const myAxios = axios.create({ withCredentials: true, - baseURL:'http://localhost:9091' + // baseURL:'http://localhost:9091' + baseURL:'http://localhost:9092' // baseURL:'http://1.94.237.210:3457' //baseURL:'http://1.94.237.210:8088' //baseURL:'http://27.30.77.229:9091/' diff --git a/src/layout/manage/ManageHeader.vue b/src/layout/manage/ManageHeader.vue index 5903c3a..942ede4 100644 --- a/src/layout/manage/ManageHeader.vue +++ b/src/layout/manage/ManageHeader.vue @@ -76,14 +76,10 @@ const checkLoginStatus = () => { // 检查store中的登录状态 if (store.loginUser.userRole === "notLogin") { console.log("未检测到登录状态,跳转到登录页"); - // 使用replace替换当前路由,禁止返回 router.replace({ path: '/' }); } }; - - -// 生命周期钩子:在组件挂载前检查登录状态 onBeforeMount(() => { checkLoginStatus(); }); @@ -103,7 +99,6 @@ const logout = async () => { try { const token = localStorage.getItem('token'); - // 严格遵循接口文档路径大小写 const res: any = await myAxios.get( "/userInfo/logout", { diff --git a/src/layout/manage/ManageSidebar.vue b/src/layout/manage/ManageSidebar.vue index 86bbebe..ab4f2c8 100644 --- a/src/layout/manage/ManageSidebar.vue +++ b/src/layout/manage/ManageSidebar.vue @@ -69,19 +69,18 @@ import {useRoute, useRouter} from "vue-router"; const route = useRoute(); const router = useRouter(); -// 选中侧边栏 + const selectedKeys = ref(['/userList']); onMounted(() => { setSelectedKey() }) -// 根据路由设置当前选中侧边栏 + const setSelectedKey = () => { selectedKeys.value = [route.path]; } -// 路由跳转 const handleClick = (item: any) => { router.push(item.key) } @@ -89,7 +88,7 @@ const handleClick = (item: any) => { \ No newline at end of file diff --git a/src/view/course/addCourse.vue b/src/view/course/addCourse.vue index 3fc7e72..daf9231 100644 --- a/src/view/course/addCourse.vue +++ b/src/view/course/addCourse.vue @@ -68,16 +68,15 @@ class="select-field" required > - - + +
-
@@ -122,6 +122,7 @@ class="input-field" required placeholder="请输入折扣价" + @input="validatePrices" > @@ -134,11 +135,12 @@ @@ -149,11 +151,12 @@ @@ -161,6 +164,7 @@ +
@@ -168,7 +172,7 @@
@@ -177,7 +181,7 @@
@@ -230,7 +234,7 @@ const handleFileUpload = async (event: Event) => { 'Authorization': storedToken } }); - + console.log(res) if (res.code === 1) { formData.image = res.data; fileName.value = file.name; @@ -280,7 +284,41 @@ const encryptValue = (value: any, key: string): any => { } }; +// 验证函数 +const validatePrices = () => { + if (formData.discountPrice >= formData.originPrice) { + return false; + } + return true; +}; + +const validateRates = () => { + if (formData.secondLevelRate >= formData.firstLevelRate) { + return false; + } + return true; +}; + const handleSubmit = async () => { + // 验证价格和佣金比例 + const isPriceValid = validatePrices(); + const isRateValid = validateRates(); + + let errorMessage = ''; + + if (!isPriceValid) { + errorMessage += '折扣价必须小于原价\n'; + } + + if (!isRateValid) { + errorMessage += '二级佣金比例必须小于一级佣金比例\n'; + } + + if (errorMessage) { + alert(errorMessage); + return; + } + try { if (!validateForm()) { alert('请填写所有必填字段'); @@ -346,6 +384,7 @@ const validateForm = (): boolean => { }; + \ No newline at end of file diff --git a/src/view/course/chapterDetail.vue b/src/view/course/chapterDetail.vue index 9afa4eb..4d168d1 100644 --- a/src/view/course/chapterDetail.vue +++ b/src/view/course/chapterDetail.vue @@ -108,13 +108,7 @@ > 编辑 - - 预览 - + @@ -714,7 +708,6 @@ const handleEditChapter = async () => { const storedToken = localStorage.getItem('token'); if (!storedToken) throw new Error('未找到登录信息'); - // 准备更新数据,修正字段映射问题 const updateData = { id: editForm.value.id, name: editForm.value.name, @@ -748,24 +741,15 @@ const handleEditChapter = async () => { }; -// 预览视频 -const previewVideo = (videoView: string) => { - previewVideoUrl.value = downLoadImage + videoView; - videoPreviewVisible.value = true; -}; - onMounted(() => { - // 从路由参数获取课程ID + courseId.value = route.query.id ? String(route.query.id) : ""; if (courseId.value) { - // 设置章节查询参数中的课程ID searchParams.value.courseId = courseId.value; - // 获取课程详细信息 getCourseDetail(); - // 获取章节列表 getChapterList(); } else { message.error("未获取到课程ID"); diff --git a/src/view/course/courseDetail.vue b/src/view/course/courseDetail.vue index d7d1819..580d0d6 100644 --- a/src/view/course/courseDetail.vue +++ b/src/view/course/courseDetail.vue @@ -121,7 +121,6 @@ const handleFileUpload = async (event: Event) => { message.error('文件上传失败'); previewImage.value = ''; } finally { - // 重置文件输入,允许重复上传同一文件 if (input) input.value = ''; } }; @@ -250,7 +249,7 @@ const updateCourse = () => { } // 创建编辑数据的深拷贝副本 editData.value = JSON.parse(JSON.stringify(courseData.value)); - previewImage.value = ''; // 进入编辑模式时重置预览图 + previewImage.value = ''; isEditing.value = true; }; diff --git a/src/view/course/courseManagement.vue b/src/view/course/courseManagement.vue index 8e0de29..6f686b2 100644 --- a/src/view/course/courseManagement.vue +++ b/src/view/course/courseManagement.vue @@ -92,15 +92,18 @@ {{ record.secondLevelRate }}% -