|
|
|
@ -8,6 +8,7 @@ import { useMessage, useToast } from 'wot-design-uni';
|
|
|
|
|
import StatusBlock from './StatusBlock.vue';
|
|
|
|
|
import { useRoute } from 'uni-mini-router';
|
|
|
|
|
import { useUser } from '@/stores/useUser';
|
|
|
|
|
import { onPullDownRefresh } from '@dcloudio/uni-app'
|
|
|
|
|
|
|
|
|
|
const route = useRoute()
|
|
|
|
|
const message = useMessage()
|
|
|
|
@ -31,6 +32,7 @@ const pickerLessonColumns = computed(() => {
|
|
|
|
|
}) : []
|
|
|
|
|
})
|
|
|
|
|
const pickerLessonValue = ref()
|
|
|
|
|
const adviseText = ref('')
|
|
|
|
|
|
|
|
|
|
const selectedLesson = computed(() => {
|
|
|
|
|
if (!pickerLessonValue.value) return null
|
|
|
|
@ -72,11 +74,8 @@ const onStep1 = () => {
|
|
|
|
|
msg: '正在提交...'
|
|
|
|
|
})
|
|
|
|
|
const params = {
|
|
|
|
|
advise: JSON.stringify({
|
|
|
|
|
method: script_file_destination.value,
|
|
|
|
|
uploaded: false
|
|
|
|
|
}),
|
|
|
|
|
scriptUploadTime: dayjs().unix(),
|
|
|
|
|
// advise: adviseText.value,
|
|
|
|
|
// scriptUploadTime: dayjs().unix(),
|
|
|
|
|
courseName: selectedLesson.value.courseName,
|
|
|
|
|
microLessonName: selectedLesson.value.microLessonName,
|
|
|
|
|
userId: selectedLesson.value.userId,
|
|
|
|
@ -97,6 +96,7 @@ const onStep1 = () => {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const onStep2 = (rejected: boolean = false) => {
|
|
|
|
|
console.log("adviseText.value: " + adviseText.value)
|
|
|
|
|
message.confirm({
|
|
|
|
|
title: rejected ? '驳回脚本' : '通过脚本',
|
|
|
|
|
msg: rejected ? '脚本不符合要求,驳回制作方重做' : '请确认脚本合格无误后,再确认审核通过'
|
|
|
|
@ -113,17 +113,15 @@ const onStep2 = (rejected: boolean = false) => {
|
|
|
|
|
BussApi.updateLessonTask(
|
|
|
|
|
selectedLesson.value.id,
|
|
|
|
|
rejected ? {
|
|
|
|
|
advise: JSON.stringify({
|
|
|
|
|
...parseCombinedFileString(selectedLesson.value, 'advise'),
|
|
|
|
|
uploaded: false
|
|
|
|
|
}),
|
|
|
|
|
scriptUploadTime: 0,
|
|
|
|
|
advise: adviseText.value.toString(),
|
|
|
|
|
// scriptUploadTime: 0,
|
|
|
|
|
courseName: selectedLesson.value.courseName,
|
|
|
|
|
microLessonName: selectedLesson.value.microLessonName,
|
|
|
|
|
userId: selectedLesson.value.userId,
|
|
|
|
|
progressStatus: 0
|
|
|
|
|
} : {
|
|
|
|
|
scriptConfirmTime: dayjs().unix(),
|
|
|
|
|
advise: adviseText.value.toString(),
|
|
|
|
|
// scriptConfirmTime: dayjs().unix(),
|
|
|
|
|
courseName: selectedLesson.value.courseName,
|
|
|
|
|
microLessonName: selectedLesson.value.microLessonName,
|
|
|
|
|
userId: selectedLesson.value.userId,
|
|
|
|
@ -142,6 +140,7 @@ const onStep2 = (rejected: boolean = false) => {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const onStep3 = (rejected: boolean = false) => {
|
|
|
|
|
console.log("adviseText.value: " + adviseText.value)
|
|
|
|
|
message.confirm({
|
|
|
|
|
title: rejected ? '驳回视频' : '通过视频',
|
|
|
|
|
msg: rejected ? '视频不符合要求,驳回制作方重做' : '请确认视频合格无误后,再确认审核通过'
|
|
|
|
@ -158,17 +157,15 @@ const onStep3 = (rejected: boolean = false) => {
|
|
|
|
|
BussApi.updateLessonTask(
|
|
|
|
|
selectedLesson.value.id,
|
|
|
|
|
rejected ? {
|
|
|
|
|
advise: JSON.stringify({
|
|
|
|
|
...parseCombinedFileString(selectedLesson.value, 'advise'),
|
|
|
|
|
uploaded: false
|
|
|
|
|
}),
|
|
|
|
|
videoCaptureTime: 0,
|
|
|
|
|
advise: adviseText.value.toString(),
|
|
|
|
|
// videoCaptureTime: 0,
|
|
|
|
|
courseName: selectedLesson.value.courseName,
|
|
|
|
|
microLessonName: selectedLesson.value.microLessonName,
|
|
|
|
|
userId: selectedLesson.value.userId,
|
|
|
|
|
progressStatus: 1
|
|
|
|
|
} : {
|
|
|
|
|
videoConfirmTime: dayjs().unix(),
|
|
|
|
|
advise: adviseText.value.toString(),
|
|
|
|
|
// videoConfirmTime: dayjs().unix(),
|
|
|
|
|
courseName: selectedLesson.value.courseName,
|
|
|
|
|
microLessonName: selectedLesson.value.microLessonName,
|
|
|
|
|
userId: selectedLesson.value.userId,
|
|
|
|
@ -187,6 +184,7 @@ const onStep3 = (rejected: boolean = false) => {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const onPostProduction = (rejected: boolean = false) => {
|
|
|
|
|
console.log("adviseText.value: " + adviseText.value)
|
|
|
|
|
message.confirm({
|
|
|
|
|
title: rejected ? '驳回后期制作' : '通过后期制作',
|
|
|
|
|
msg: rejected ? '后期制作不符合要求,驳回制作方重做' : '请确认后期制作合格无误后,再确认审核通过'
|
|
|
|
@ -203,17 +201,15 @@ const onPostProduction = (rejected: boolean = false) => {
|
|
|
|
|
BussApi.updateLessonTask(
|
|
|
|
|
selectedLesson.value.id,
|
|
|
|
|
rejected ? {
|
|
|
|
|
advise: JSON.stringify({
|
|
|
|
|
...parseCombinedFileString(selectedLesson.value, 'advise'),
|
|
|
|
|
uploaded: false
|
|
|
|
|
}),
|
|
|
|
|
videoCaptureTime: 0,
|
|
|
|
|
advise: adviseText.value.toString(),
|
|
|
|
|
// videoCaptureTime: 0,
|
|
|
|
|
courseName: selectedLesson.value.courseName,
|
|
|
|
|
microLessonName: selectedLesson.value.microLessonName,
|
|
|
|
|
userId: selectedLesson.value.userId,
|
|
|
|
|
progressStatus: 2
|
|
|
|
|
} : {
|
|
|
|
|
videoConfirmTime: dayjs().unix(),
|
|
|
|
|
advise: adviseText.value.toString(),
|
|
|
|
|
// videoConfirmTime: dayjs().unix(),
|
|
|
|
|
courseName: selectedLesson.value.courseName,
|
|
|
|
|
microLessonName: selectedLesson.value.microLessonName,
|
|
|
|
|
userId: selectedLesson.value.userId,
|
|
|
|
@ -232,6 +228,7 @@ const onPostProduction = (rejected: boolean = false) => {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const updateLessons = async () => {
|
|
|
|
|
adviseText.value = ""
|
|
|
|
|
if (!user.userinfo) {
|
|
|
|
|
toast.error({ msg: '请先登录' })
|
|
|
|
|
return
|
|
|
|
@ -289,6 +286,20 @@ const updateLessons = async () => {
|
|
|
|
|
onMounted(() => {
|
|
|
|
|
updateLessons()
|
|
|
|
|
})
|
|
|
|
|
const refresh = async () => {
|
|
|
|
|
try {
|
|
|
|
|
await updateLessons()
|
|
|
|
|
} catch (err) {
|
|
|
|
|
} finally {
|
|
|
|
|
// 停止下拉刷新动画
|
|
|
|
|
uni.stopPullDownRefresh()
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 添加下拉刷新处理函数
|
|
|
|
|
onPullDownRefresh(() => {
|
|
|
|
|
refresh()
|
|
|
|
|
})
|
|
|
|
|
</script>
|
|
|
|
|
|
|
|
|
|
<template>
|
|
|
|
@ -310,21 +321,27 @@ onMounted(() => {
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<div v-if="selectedLessonStage?.step === 0" class="px-2">
|
|
|
|
|
<wd-cell-group>
|
|
|
|
|
<wd-cell title="脚本提交途径" :title-width="'100px'" center custom-class="mb-4">
|
|
|
|
|
<wd-radio-group v-model="script_file_destination" shape="button">
|
|
|
|
|
<wd-radio value="wechat">微信</wd-radio>
|
|
|
|
|
<wd-radio value="qq">QQ</wd-radio>
|
|
|
|
|
<wd-radio value="platform">平台</wd-radio>
|
|
|
|
|
</wd-radio-group>
|
|
|
|
|
</wd-cell>
|
|
|
|
|
</wd-cell-group>
|
|
|
|
|
|
|
|
|
|
<wd-button type="primary" block @click="onStep1" custom-class="w-full">提交脚本</wd-button>
|
|
|
|
|
<div v-if="user.hasRole('teacher')">
|
|
|
|
|
<wd-cell-group>
|
|
|
|
|
<wd-cell title="脚本提交途径" :title-width="'100px'" center custom-class="mb-4">
|
|
|
|
|
<wd-radio-group v-model="script_file_destination" shape="button">
|
|
|
|
|
<wd-radio value="wechat">微信</wd-radio>
|
|
|
|
|
<wd-radio value="qq">QQ</wd-radio>
|
|
|
|
|
<wd-radio value="platform">平台</wd-radio>
|
|
|
|
|
</wd-radio-group>
|
|
|
|
|
</wd-cell>
|
|
|
|
|
</wd-cell-group>
|
|
|
|
|
<wd-button type="primary" block @click="onStep1" custom-class="w-full">提交脚本</wd-button>
|
|
|
|
|
</div>
|
|
|
|
|
<StatusBlock v-else title="脚本还未提交" subtitle="请耐心等待审核">
|
|
|
|
|
<template #icon>
|
|
|
|
|
<div class="i-tabler-progress-bolt text-7xl text-neutral-400"></div>
|
|
|
|
|
</template>
|
|
|
|
|
</StatusBlock>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<div v-if="selectedLessonStage?.step === 1">
|
|
|
|
|
<StatusBlock v-if="!parseCombinedFileString(selectedLesson!, 'advise')?.uploaded" title="脚本已提交"
|
|
|
|
|
subtitle="请耐心等待审核">
|
|
|
|
|
<StatusBlock v-if="user.hasRole('teacher')" title="脚本已提交" subtitle="请耐心等待审核">
|
|
|
|
|
<template #icon>
|
|
|
|
|
<div class="i-tabler-progress-bolt text-7xl text-neutral-400"></div>
|
|
|
|
|
</template>
|
|
|
|
@ -335,47 +352,66 @@ onMounted(() => {
|
|
|
|
|
<div class="i-tabler-progress-check text-7xl text-neutral-400"></div>
|
|
|
|
|
</template>
|
|
|
|
|
</StatusBlock>
|
|
|
|
|
<div class="mt-4 px-4 space-y-2">
|
|
|
|
|
<wd-button type="primary" :round="false" block @click="onStep2()">通过</wd-button>
|
|
|
|
|
<wd-button type="error" :round="false" block @click="onStep2(true)">驳回</wd-button>
|
|
|
|
|
<div class="mt-4 space-y-4">
|
|
|
|
|
<div class="bg-neutral000 rounded-lg px-4 py-3">
|
|
|
|
|
<wd-input v-model="adviseText" title="审核建议" type="text" show-clear show-word-limit :maxlength="50"
|
|
|
|
|
placeholder="请输入审核建议..." block />
|
|
|
|
|
</div>
|
|
|
|
|
<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>
|
|
|
|
|
|
|
|
|
|
<div v-if="selectedLessonStage?.step === 2">
|
|
|
|
|
<StatusBlock v-if="!parseCombinedFileString(selectedLesson!, 'advise')?.uploaded" title="视频拍摄进行中"
|
|
|
|
|
subtitle="请等待线下视频拍摄">
|
|
|
|
|
<StatusBlock v-if="user.hasRole('teacher')" title="视频拍摄进行中" subtitle="请等待线下视频拍摄">
|
|
|
|
|
<template #icon>
|
|
|
|
|
<div class="i-tabler-capture text-7xl text-neutral-400"></div>
|
|
|
|
|
</template>
|
|
|
|
|
</StatusBlock>
|
|
|
|
|
<!-- && selectedLesson && selectedLesson?.videoCaptureTime > 0 -->
|
|
|
|
|
<div v-else>
|
|
|
|
|
<StatusBlock title="视频拍摄已完成" subtitle="请核对后审核">
|
|
|
|
|
<template #icon>
|
|
|
|
|
<div class="i-tabler-capture-filled text-7xl text-neutral-400"></div>
|
|
|
|
|
</template>
|
|
|
|
|
</StatusBlock>
|
|
|
|
|
<div class="mt-4 px-4 space-y-2">
|
|
|
|
|
<wd-button type="primary" :round="false" block @click="onStep3()">通过</wd-button>
|
|
|
|
|
<wd-button type="error" :round="false" block @click="onStep3(true)">驳回</wd-button>
|
|
|
|
|
<div class="mt-4 space-y-4">
|
|
|
|
|
<div class="bg-neutral000 rounded-lg px-4 py-3">
|
|
|
|
|
<wd-input v-model="adviseText" title="审核建议" type="text" show-clear show-word-limit :maxlength="50"
|
|
|
|
|
placeholder="请输入审核建议..." block />
|
|
|
|
|
</div>
|
|
|
|
|
<div class="flex gap-3 px-4">
|
|
|
|
|
<wd-button type="primary" block @click="onStep3()">通过</wd-button>
|
|
|
|
|
<wd-button type="error" block @click="onStep3(true)">驳回</wd-button>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
<div v-if="selectedLessonStage?.step === 3">
|
|
|
|
|
<StatusBlock v-if="!parseCombinedFileString(selectedLesson!, 'advise')?.uploaded" title="后期制作进行中"
|
|
|
|
|
subtitle="请等待视频后期制作">
|
|
|
|
|
<StatusBlock v-if="user.hasRole('teacher')" title="后期制作进行中" subtitle="请等待视频后期制作">
|
|
|
|
|
<template #icon>
|
|
|
|
|
<div class="i-tabler-video text-7xl text-neutral-400"></div>
|
|
|
|
|
</template>
|
|
|
|
|
</StatusBlock>
|
|
|
|
|
<!-- && selectedLesson && selectedLesson?.videoPostProductionTime > 0 -->
|
|
|
|
|
<div v-else>
|
|
|
|
|
<StatusBlock title="后期制作已完成" subtitle="请核对后审核">
|
|
|
|
|
<template #icon>
|
|
|
|
|
<div class="i-tabler-video-filled text-7xl text-neutral-400"></div>
|
|
|
|
|
<div class="i-tabler-video text-7xl text-neutral-400"></div>
|
|
|
|
|
</template>
|
|
|
|
|
</StatusBlock>
|
|
|
|
|
<div class="mt-4 px-4 space-y-2">
|
|
|
|
|
<wd-button type="primary" :round="false" block @click="onPostProduction()">通过</wd-button>
|
|
|
|
|
<wd-button type="error" :round="false" block @click="onPostProduction(true)">驳回</wd-button>
|
|
|
|
|
<div class="mt-4 space-y-4">
|
|
|
|
|
<div class="bg-neutral000 rounded-lg px-4 py-3">
|
|
|
|
|
<wd-input v-model="adviseText" title="审核建议" type="text" show-clear show-word-limit :maxlength="50"
|
|
|
|
|
placeholder="请输入审核建议..." block />
|
|
|
|
|
</div>
|
|
|
|
|
<div class="flex gap-3 px-4">
|
|
|
|
|
<wd-button type="primary" block @click="onPostProduction()">通过</wd-button>
|
|
|
|
|
<wd-button type="error" block @click="onPostProduction(true)">驳回</wd-button>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|