feat: 优化驳回状态判断和显示逻辑
1. 添加 isRejectAdvise 方法判断驳回状态 2. 添加 getAdviseText 方法获取修改建议文本 3. 优化各步骤的状态显示逻辑 4. 修复状态流转问题
This commit is contained in:
parent
8452965556
commit
4406934444
@ -4,8 +4,8 @@ import { ref } from "vue";
|
||||
export const useConfig = defineStore('config', () => {
|
||||
// const BASE_URL = ref<string>("https://ppmp.fenshenzhike.com/api");
|
||||
// const BASE_URL = ref<string>("http://localhost:1218/api");
|
||||
const BASE_URL = ref<string>("http://192.168.0.119:1218/api");
|
||||
// const BASE_URL = ref<string>("http://192.30.5.11:1218/api");
|
||||
// const BASE_URL = ref<string>("http://192.168.0.119:1218/api");
|
||||
const BASE_URL = ref<string>("http://192.30.5.20:1218/api");
|
||||
|
||||
return {
|
||||
BASE_URL
|
||||
|
@ -32,7 +32,7 @@ const pickerLessonColumns = computed(() => {
|
||||
}) : []
|
||||
})
|
||||
const pickerLessonValue = ref()
|
||||
const adviseText = ref<string>('')
|
||||
const adviseTextValue = ref<string>('')
|
||||
|
||||
const selectedLesson = computed(() => {
|
||||
if (!pickerLessonValue.value) return null
|
||||
@ -44,6 +44,43 @@ const selectedLessonStage = computed(() => {
|
||||
return extractLessonStage(selectedLesson.value)
|
||||
})
|
||||
|
||||
/**
|
||||
* 判断advise是否为驳回状态
|
||||
* @param advise 修改建议字符串
|
||||
* @returns {boolean} 是否为驳回状态
|
||||
*/
|
||||
const isRejectAdvise = (advise: string | undefined): boolean => {
|
||||
try {
|
||||
if (!advise) return false
|
||||
const adviseObj = JSON.parse(advise)
|
||||
return 'reject' in adviseObj
|
||||
} catch {
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
||||
const adviseText = computed(() => {
|
||||
try {
|
||||
if (!selectedLesson.value?.advise) return '暂无修改建议'
|
||||
const adviseObj = JSON.parse(selectedLesson.value.advise)
|
||||
return adviseObj.reject || '暂无修改建议'
|
||||
} catch {
|
||||
return selectedLesson?.value?.advise || '暂无修改建议'
|
||||
}
|
||||
})
|
||||
|
||||
const getAdviseText = (adviseString: string | undefined): string => {
|
||||
try {
|
||||
if (!adviseString) return ''
|
||||
const adviseObj = JSON.parse(adviseString)
|
||||
const rejectText = adviseObj.reject || ''
|
||||
return rejectText
|
||||
} catch (e) {
|
||||
console.error('JSON解析失败:', e)
|
||||
return ''
|
||||
}
|
||||
}
|
||||
|
||||
const onCoursePick = ({ value }: { value: string }) => {
|
||||
pickerCourseValue.value = value
|
||||
pickerLessonValue.value = undefined
|
||||
@ -74,7 +111,7 @@ const onStep0 = () => {
|
||||
msg: '正在提交...'
|
||||
})
|
||||
const params = {
|
||||
advise: "",
|
||||
advise: JSON.stringify({ confirm: "" }),
|
||||
courseName: selectedLesson.value.courseName,
|
||||
microLessonName: selectedLesson.value.microLessonName,
|
||||
userId: selectedLesson.value.userId,
|
||||
@ -114,13 +151,13 @@ const onStep1 = (rejected: boolean = false) => {
|
||||
BussApi.updateLessonTask(
|
||||
selectedLesson.value.id,
|
||||
rejected ? {
|
||||
advise: adviseText.value.toString(),
|
||||
advise: JSON.stringify({ reject: adviseTextValue.value.toString() }),
|
||||
courseName: selectedLesson.value.courseName,
|
||||
microLessonName: selectedLesson.value.microLessonName,
|
||||
userId: selectedLesson.value.userId,
|
||||
progressStatus: ProgressStatus.NOT_STARTED//0
|
||||
} : {
|
||||
advise: "",
|
||||
advise: JSON.stringify({ confirm: "" }),
|
||||
courseName: selectedLesson.value.courseName,
|
||||
microLessonName: selectedLesson.value.microLessonName,
|
||||
userId: selectedLesson.value.userId,
|
||||
@ -156,13 +193,13 @@ const onStep2 = (rejected: boolean = false) => {
|
||||
BussApi.updateLessonTask(
|
||||
selectedLesson.value.id,
|
||||
rejected ? {
|
||||
advise: adviseText.value.toString(),
|
||||
advise: JSON.stringify({ reject: adviseTextValue.value.toString() }),
|
||||
courseName: selectedLesson.value.courseName,
|
||||
microLessonName: selectedLesson.value.microLessonName,
|
||||
userId: selectedLesson.value.userId,
|
||||
progressStatus: ProgressStatus.SCRIPT_CREATING//1
|
||||
} : {
|
||||
advise: "",
|
||||
advise: JSON.stringify({ confirm: "" }),
|
||||
courseName: selectedLesson.value.courseName,
|
||||
microLessonName: selectedLesson.value.microLessonName,
|
||||
userId: selectedLesson.value.userId,
|
||||
@ -198,13 +235,13 @@ const onStep3 = (rejected: boolean = false) => {
|
||||
BussApi.updateLessonTask(
|
||||
selectedLesson.value.id,
|
||||
rejected ? {
|
||||
advise: adviseText.value.toString(),
|
||||
advise: JSON.stringify({ reject: 'huertian' + adviseTextValue.value.toString() }),
|
||||
courseName: selectedLesson.value.courseName,
|
||||
microLessonName: selectedLesson.value.microLessonName,
|
||||
userId: selectedLesson.value.userId,
|
||||
progressStatus: ProgressStatus.SCRIPT_CONFIRMED//3
|
||||
} : {
|
||||
advise: "",
|
||||
advise: JSON.stringify({ confirm: "" }),
|
||||
courseName: selectedLesson.value.courseName,
|
||||
microLessonName: selectedLesson.value.microLessonName,
|
||||
userId: selectedLesson.value.userId,
|
||||
@ -239,13 +276,13 @@ const onStep4 = (rejected: boolean = false) => {
|
||||
BussApi.updateLessonTask(
|
||||
selectedLesson.value.id,
|
||||
rejected ? {
|
||||
advise: adviseText.value.toString(),
|
||||
advise: JSON.stringify({ reject: adviseTextValue.value.toString() }),
|
||||
courseName: selectedLesson.value.courseName,
|
||||
microLessonName: selectedLesson.value.microLessonName,
|
||||
userId: selectedLesson.value.userId,
|
||||
progressStatus: ProgressStatus.VIDEO_CREATING//4
|
||||
progressStatus: ProgressStatus.SCRIPT_CONFIRMED//3
|
||||
} : {
|
||||
advise: "",
|
||||
advise: JSON.stringify({ confirm: "" }),
|
||||
courseName: selectedLesson.value.courseName,
|
||||
microLessonName: selectedLesson.value.microLessonName,
|
||||
userId: selectedLesson.value.userId,
|
||||
@ -264,7 +301,7 @@ const onStep4 = (rejected: boolean = false) => {
|
||||
}
|
||||
|
||||
const updateLessons = async () => {
|
||||
adviseText.value = ""
|
||||
adviseTextValue.value = ""
|
||||
if (!user.userinfo) {
|
||||
toast.error({ msg: '请先登录' })
|
||||
return
|
||||
@ -351,7 +388,7 @@ onPullDownRefresh(() => {
|
||||
:columns-height="280" label-width="80px" safe-area-inset-bottom title="微课选择" :disabled="!pickerCourseValue" />
|
||||
</div>
|
||||
<wd-message-box selector="wd-message-box-slot">
|
||||
<wd-textarea v-model="adviseText" type="text" clear-trigger="focus" clearable auto-height show-word-limit
|
||||
<wd-textarea v-model="adviseTextValue" type="text" clear-trigger="focus" clearable auto-height show-word-limit
|
||||
:focus-when-clear="false" :maxlength="100" placeholder="请输入审核建议..." block />
|
||||
</wd-message-box>
|
||||
<div class="p-2 pt-4">
|
||||
@ -366,9 +403,9 @@ onPullDownRefresh(() => {
|
||||
|
||||
<div v-if="selectedLessonStage?.step === 0" class="px-2">
|
||||
<div v-if="user.hasRole('teacher')">
|
||||
<div v-if="selectedLesson?.advise && selectedLesson.advise.length > 0" class=" m-2 text-sm">
|
||||
<div v-if="isRejectAdvise(selectedLesson?.advise)" class="m-2 text-sm">
|
||||
<wd-card title="修改建议">
|
||||
{{ selectedLesson?.advise }}
|
||||
{{ adviseText }}
|
||||
</wd-card>
|
||||
</div>
|
||||
<wd-cell-group>
|
||||
@ -391,21 +428,21 @@ onPullDownRefresh(() => {
|
||||
|
||||
<div v-if="selectedLessonStage?.step === 1">
|
||||
<div v-if="user.hasRole('teacher')">
|
||||
<StatusBlock title="脚本已提交" subtitle="请耐心等待审核">
|
||||
<StatusBlock title="脚本制作已完成" subtitle="请核对并审核">
|
||||
<template #icon>
|
||||
<div class="i-tabler-progress-bolt text-7xl text-neutral-400 "></div>
|
||||
<div class="i-tabler-progress-check text-7xl text-neutral-400"></div>
|
||||
</template>
|
||||
</StatusBlock>
|
||||
</div>
|
||||
<div v-else>
|
||||
<div v-if="selectedLesson?.advise && selectedLesson.advise.length > 0" class=" m-2 text-sm">
|
||||
<div v-if="isRejectAdvise(selectedLesson?.advise) === true" class=" m-2 text-sm">
|
||||
<wd-card title="修改建议">
|
||||
{{ selectedLesson?.advise }}
|
||||
{{ adviseText }}
|
||||
</wd-card>
|
||||
</div>
|
||||
<StatusBlock title="脚本制作已完成" subtitle="请核对并审核">
|
||||
<StatusBlock title="脚本已提交" subtitle="请耐心等待审核">
|
||||
<template #icon>
|
||||
<div class="i-tabler-progress-check text-7xl text-neutral-400"></div>
|
||||
<div class="i-tabler-progress-bolt text-7xl text-neutral-400 "></div>
|
||||
</template>
|
||||
</StatusBlock>
|
||||
<div class="mt-4 space-y-4">
|
||||
@ -418,33 +455,33 @@ onPullDownRefresh(() => {
|
||||
</div>
|
||||
|
||||
<div v-if="selectedLessonStage?.step === 2">
|
||||
<div v-if="!user.hasRole('teacher')">
|
||||
<div v-if="user.hasRole('teacher')">
|
||||
<StatusBlock title="脚本审核已完成" subtitle="请确认脚本内容">
|
||||
<template #icon>
|
||||
<div class="i-tabler-file-text text-7xl text-neutral-400"></div>
|
||||
</template>
|
||||
</StatusBlock>
|
||||
<div class="mt-4 space-y-4">
|
||||
<div class="flex gap-3 px-4">
|
||||
<wd-button type="primary" block @click="onStep2()">确认</wd-button>
|
||||
<wd-button type="error" block @click="onStep2(true)">驳回</wd-button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div v-else>
|
||||
<StatusBlock title="脚本确认进行中" subtitle="请等待脚本内容确认">
|
||||
<template #icon>
|
||||
<div class="i-tabler-file-text text-7xl text-neutral-400"></div>
|
||||
</template>
|
||||
</StatusBlock>
|
||||
</div>
|
||||
<div v-else>
|
||||
<StatusBlock title="脚本审核已完成" subtitle="请确认脚本内容">
|
||||
<template #icon>
|
||||
<div class="i-tabler-file-text text-7xl text-neutral-400"></div>
|
||||
</template>
|
||||
</StatusBlock>
|
||||
</div>
|
||||
<div v-if="user.hasRole('teacher')" class="mt-4 space-y-4">
|
||||
<div class="flex gap-3 px-4">
|
||||
<wd-button type="primary" block @click="onStep2()">确认</wd-button>
|
||||
<wd-button type="error" block @click="onStep2(true)">驳回</wd-button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div v-if="selectedLessonStage?.step === 3">
|
||||
<div v-if="user.hasRole('teacher')">
|
||||
<div v-if="selectedLesson?.advise && selectedLesson.advise.length > 0" class=" m-2 text-sm">
|
||||
<div v-if="getAdviseText(selectedLesson?.advise).startsWith('huertian')" class=" m-2 text-sm">
|
||||
<wd-card title="修改建议">
|
||||
{{ selectedLesson?.advise }}
|
||||
{{ getAdviseText(selectedLesson?.advise).substring('huertian'.length) }}
|
||||
</wd-card>
|
||||
</div>
|
||||
<StatusBlock title="视频拍摄制作进行中" subtitle="请等待视频拍摄制作">
|
||||
@ -454,16 +491,19 @@ onPullDownRefresh(() => {
|
||||
</StatusBlock>
|
||||
</div>
|
||||
<div v-else>
|
||||
<div v-if="!getAdviseText(selectedLesson?.advise).startsWith('huertian')">
|
||||
<div v-if="isRejectAdvise(selectedLesson?.advise) === true" class=" m-2 text-sm">
|
||||
<wd-card title="修改建议">
|
||||
{{ adviseText }}
|
||||
</wd-card>
|
||||
</div>
|
||||
</div>
|
||||
<StatusBlock title="视频拍摄制作进行中" subtitle="完成后请确认">
|
||||
<template #icon>
|
||||
<div class="i-tabler-video text-7xl text-neutral-400"></div>
|
||||
</template>
|
||||
</StatusBlock>
|
||||
<div class="mt-4 space-y-4">
|
||||
<div class="bg-neutral000 rounded-lg px-4 py-3">
|
||||
<wd-textarea v-model="adviseText" title="审核建议" type="text" clear-trigger="focus" clearable auto-height
|
||||
show-word-limit :focus-when-clear="false" :maxlength="100" placeholder="请输入审核建议..." block />
|
||||
</div>
|
||||
<div class="flex gap-3 px-4 center">
|
||||
<wd-button type="primary" block @click="onStep3()">通过</wd-button>
|
||||
<wd-button type="error" block @click="onStep3(true)">驳回</wd-button>
|
||||
@ -473,30 +513,26 @@ onPullDownRefresh(() => {
|
||||
</div>
|
||||
|
||||
<div v-if="selectedLessonStage?.step === 4">
|
||||
<div v-if="!user.hasRole('teacher')">
|
||||
<StatusBlock title="视频内容确认中" subtitle="请等待视频内容确认">
|
||||
<template #icon>
|
||||
<div class="i-tabler-brand-parsinta text-7xl text-neutral-400"></div>
|
||||
</template>
|
||||
</StatusBlock>
|
||||
</div>
|
||||
<div v-else>
|
||||
<div v-if="user.hasRole('teacher')">
|
||||
<StatusBlock title="视频拍摄制作已完成" subtitle="请确认视频内容">
|
||||
<template #icon>
|
||||
<div class="i-tabler-brand-parsinta text-7xl text-neutral-400"></div>
|
||||
</template>
|
||||
</StatusBlock>
|
||||
<div class="mt-4 space-y-4">
|
||||
<div class="bg-neutral000 rounded-lg px-4 py-3">
|
||||
<wd-textarea v-model="adviseText" title="审核建议" type="text" clear-trigger="focus" clearable auto-height
|
||||
show-word-limit :focus-when-clear="false" :maxlength="100" placeholder="请输入审核建议..." block />
|
||||
</div>
|
||||
<div class="flex gap-3 px-4">
|
||||
<wd-button type="primary" block @click="onStep4()">通过</wd-button>
|
||||
<wd-button type="error" block @click="onStep4(true)">驳回</wd-button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div v-else>
|
||||
<StatusBlock title="视频内容确认中" subtitle="请等待视频内容确认">
|
||||
<template #icon>
|
||||
<div class="i-tabler-brand-parsinta text-7xl text-neutral-400"></div>
|
||||
</template>
|
||||
</StatusBlock>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div v-else-if="selectedLessonStage?.step === 5">
|
||||
@ -505,7 +541,6 @@ onPullDownRefresh(() => {
|
||||
<div class="i-tabler-clipboard-check text-7xl text-neutral-400"></div>
|
||||
</template>
|
||||
</StatusBlock>
|
||||
<!-- <wd-status-tip image="comment" tip="该微课已完成" /> -->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
Loading…
Reference in New Issue
Block a user