feat: 更新课程管理功能
This commit is contained in:
parent
bb319d7946
commit
5babb8f930
1
components.d.ts
vendored
1
components.d.ts
vendored
@ -9,6 +9,7 @@ declare module 'vue' {
|
|||||||
export interface GlobalComponents {
|
export interface GlobalComponents {
|
||||||
PageWrapper: typeof import('./src/components/page-wrapper.vue')['default']
|
PageWrapper: typeof import('./src/components/page-wrapper.vue')['default']
|
||||||
TabBar: typeof import('./src/components/TabBar.vue')['default']
|
TabBar: typeof import('./src/components/TabBar.vue')['default']
|
||||||
|
WdBadge: typeof import('wot-design-uni/components/wd-badge/wd-badge.vue')['default']
|
||||||
WdButton: typeof import('wot-design-uni/components/wd-button/wd-button.vue')['default']
|
WdButton: typeof import('wot-design-uni/components/wd-button/wd-button.vue')['default']
|
||||||
WdCell: typeof import('wot-design-uni/components/wd-cell/wd-cell.vue')['default']
|
WdCell: typeof import('wot-design-uni/components/wd-cell/wd-cell.vue')['default']
|
||||||
WdCellGroup: typeof import('wot-design-uni/components/wd-cell-group/wd-cell-group.vue')['default']
|
WdCellGroup: typeof import('wot-design-uni/components/wd-cell-group/wd-cell-group.vue')['default']
|
||||||
|
@ -198,6 +198,7 @@ export default class BussApi {
|
|||||||
*/
|
*/
|
||||||
static updateLessonTask(id: number, params: UpdateLessonTaskRequest): Promise<LessonTask> {
|
static updateLessonTask(id: number, params: UpdateLessonTaskRequest): Promise<LessonTask> {
|
||||||
const user = useUser();
|
const user = useUser();
|
||||||
|
console.log("params: " + JSON.stringify(params))
|
||||||
return http
|
return http
|
||||||
.server()
|
.server()
|
||||||
.put(`lesson-tasks/${id}`, params, {
|
.put(`lesson-tasks/${id}`, params, {
|
||||||
|
@ -5,6 +5,7 @@ export const useConfig = defineStore('config', () => {
|
|||||||
// const BASE_URL = ref<string>("https://ppmp.fenshenzhike.com/api");
|
// 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://localhost:1218/api");
|
||||||
const BASE_URL = ref<string>("http://192.168.0.178:1218/api");
|
const BASE_URL = ref<string>("http://192.168.0.178:1218/api");
|
||||||
|
// const BASE_URL = ref<string>("http://192.30.5.16:1218/api");
|
||||||
|
|
||||||
return {
|
return {
|
||||||
BASE_URL
|
BASE_URL
|
||||||
|
@ -60,7 +60,8 @@
|
|||||||
"navigationBarTextStyle": "black",
|
"navigationBarTextStyle": "black",
|
||||||
"navigationBarTitleText": "XSH PPMP",
|
"navigationBarTitleText": "XSH PPMP",
|
||||||
"navigationBarBackgroundColor": "#F8F8F8",
|
"navigationBarBackgroundColor": "#F8F8F8",
|
||||||
"backgroundColor": "#F8F8F8"
|
"backgroundColor": "#F8F8F8",
|
||||||
|
"enablePullDownRefresh": true
|
||||||
},
|
},
|
||||||
"easycom": {
|
"easycom": {
|
||||||
"autoscan": true,
|
"autoscan": true,
|
||||||
|
@ -165,9 +165,6 @@ const getUsernameById = (userId: number) => {
|
|||||||
<wd-tag custom-class="op-60" plain>
|
<wd-tag custom-class="op-60" plain>
|
||||||
共{{ courses.length }}节微课
|
共{{ courses.length }}节微课
|
||||||
</wd-tag>
|
</wd-tag>
|
||||||
<!-- <wd-tag v-if="teacherFilterValue === 0" custom-class="w-fit" plain>
|
|
||||||
{{ getUsernameById(courses[0]?.userId) }}
|
|
||||||
</wd-tag> -->
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="flex items-center gap-4">
|
<div class="flex items-center gap-4">
|
||||||
@ -199,12 +196,16 @@ const getUsernameById = (userId: number) => {
|
|||||||
</template>
|
</template>
|
||||||
<div class="w-full">
|
<div class="w-full">
|
||||||
<wd-status-tip v-if="courses.length === 0" image="content" tip="没有课程小节" />
|
<wd-status-tip v-if="courses.length === 0" image="content" tip="没有课程小节" />
|
||||||
<div v-else v-for="(lesson, i) in courses" :key="i" @click="openLessonDetail(lesson.id)"
|
<div v-else v-for="(lesson, i) in courses" :key="i" @click="openLessonDetail(lesson.id)" class="w-full py-2 flex justify-between items-center gap-20 border-b border-b-solid border-neutral-100
|
||||||
class="w-full py-2 flex justify-between items-center gap-20 border-b border-b-solid border-neutral-100 last:border-b-0 first:pt-0 last:pb-0">
|
last:border-b-0 first:pt-0 last:pb-0">
|
||||||
<div class="flex items-center gap-1">
|
<div class="flex items-center gap-1">
|
||||||
|
<wd-badge is-dot hidden>
|
||||||
|
<div is-dot>
|
||||||
<div v-if="calcLessonProgress(lesson) === 100" class="i-tabler-circle-check"></div>
|
<div v-if="calcLessonProgress(lesson) === 100" class="i-tabler-circle-check"></div>
|
||||||
<div v-else-if="calcLessonProgress(lesson) === 0" class="i-tabler-circle-dashed"></div>
|
<div v-else-if="calcLessonProgress(lesson) === 0" class="i-tabler-circle-dashed"></div>
|
||||||
<div v-else class="i-tabler-hourglass-empty"></div>
|
<div v-else class="i-tabler-hourglass-empty"></div>
|
||||||
|
</div>
|
||||||
|
</wd-badge>
|
||||||
<span>{{ lesson.microLessonName || '无标题视频' }}</span>
|
<span>{{ lesson.microLessonName || '无标题视频' }}</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="w-24 flex items-center gap-3">
|
<div class="w-24 flex items-center gap-3">
|
||||||
|
@ -8,6 +8,7 @@ import { useMessage, useToast } from 'wot-design-uni';
|
|||||||
import StatusBlock from './StatusBlock.vue';
|
import StatusBlock from './StatusBlock.vue';
|
||||||
import { useRoute } from 'uni-mini-router';
|
import { useRoute } from 'uni-mini-router';
|
||||||
import { useUser } from '@/stores/useUser';
|
import { useUser } from '@/stores/useUser';
|
||||||
|
import { onPullDownRefresh } from '@dcloudio/uni-app'
|
||||||
|
|
||||||
const route = useRoute()
|
const route = useRoute()
|
||||||
const message = useMessage()
|
const message = useMessage()
|
||||||
@ -31,6 +32,7 @@ const pickerLessonColumns = computed(() => {
|
|||||||
}) : []
|
}) : []
|
||||||
})
|
})
|
||||||
const pickerLessonValue = ref()
|
const pickerLessonValue = ref()
|
||||||
|
const adviseText = ref('')
|
||||||
|
|
||||||
const selectedLesson = computed(() => {
|
const selectedLesson = computed(() => {
|
||||||
if (!pickerLessonValue.value) return null
|
if (!pickerLessonValue.value) return null
|
||||||
@ -72,11 +74,8 @@ const onStep1 = () => {
|
|||||||
msg: '正在提交...'
|
msg: '正在提交...'
|
||||||
})
|
})
|
||||||
const params = {
|
const params = {
|
||||||
advise: JSON.stringify({
|
// advise: adviseText.value,
|
||||||
method: script_file_destination.value,
|
// scriptUploadTime: dayjs().unix(),
|
||||||
uploaded: false
|
|
||||||
}),
|
|
||||||
scriptUploadTime: dayjs().unix(),
|
|
||||||
courseName: selectedLesson.value.courseName,
|
courseName: selectedLesson.value.courseName,
|
||||||
microLessonName: selectedLesson.value.microLessonName,
|
microLessonName: selectedLesson.value.microLessonName,
|
||||||
userId: selectedLesson.value.userId,
|
userId: selectedLesson.value.userId,
|
||||||
@ -97,6 +96,7 @@ const onStep1 = () => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const onStep2 = (rejected: boolean = false) => {
|
const onStep2 = (rejected: boolean = false) => {
|
||||||
|
console.log("adviseText.value: " + adviseText.value)
|
||||||
message.confirm({
|
message.confirm({
|
||||||
title: rejected ? '驳回脚本' : '通过脚本',
|
title: rejected ? '驳回脚本' : '通过脚本',
|
||||||
msg: rejected ? '脚本不符合要求,驳回制作方重做' : '请确认脚本合格无误后,再确认审核通过'
|
msg: rejected ? '脚本不符合要求,驳回制作方重做' : '请确认脚本合格无误后,再确认审核通过'
|
||||||
@ -113,17 +113,15 @@ const onStep2 = (rejected: boolean = false) => {
|
|||||||
BussApi.updateLessonTask(
|
BussApi.updateLessonTask(
|
||||||
selectedLesson.value.id,
|
selectedLesson.value.id,
|
||||||
rejected ? {
|
rejected ? {
|
||||||
advise: JSON.stringify({
|
advise: adviseText.value.toString(),
|
||||||
...parseCombinedFileString(selectedLesson.value, 'advise'),
|
// scriptUploadTime: 0,
|
||||||
uploaded: false
|
|
||||||
}),
|
|
||||||
scriptUploadTime: 0,
|
|
||||||
courseName: selectedLesson.value.courseName,
|
courseName: selectedLesson.value.courseName,
|
||||||
microLessonName: selectedLesson.value.microLessonName,
|
microLessonName: selectedLesson.value.microLessonName,
|
||||||
userId: selectedLesson.value.userId,
|
userId: selectedLesson.value.userId,
|
||||||
progressStatus: 0
|
progressStatus: 0
|
||||||
} : {
|
} : {
|
||||||
scriptConfirmTime: dayjs().unix(),
|
advise: adviseText.value.toString(),
|
||||||
|
// scriptConfirmTime: dayjs().unix(),
|
||||||
courseName: selectedLesson.value.courseName,
|
courseName: selectedLesson.value.courseName,
|
||||||
microLessonName: selectedLesson.value.microLessonName,
|
microLessonName: selectedLesson.value.microLessonName,
|
||||||
userId: selectedLesson.value.userId,
|
userId: selectedLesson.value.userId,
|
||||||
@ -142,6 +140,7 @@ const onStep2 = (rejected: boolean = false) => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const onStep3 = (rejected: boolean = false) => {
|
const onStep3 = (rejected: boolean = false) => {
|
||||||
|
console.log("adviseText.value: " + adviseText.value)
|
||||||
message.confirm({
|
message.confirm({
|
||||||
title: rejected ? '驳回视频' : '通过视频',
|
title: rejected ? '驳回视频' : '通过视频',
|
||||||
msg: rejected ? '视频不符合要求,驳回制作方重做' : '请确认视频合格无误后,再确认审核通过'
|
msg: rejected ? '视频不符合要求,驳回制作方重做' : '请确认视频合格无误后,再确认审核通过'
|
||||||
@ -158,17 +157,15 @@ const onStep3 = (rejected: boolean = false) => {
|
|||||||
BussApi.updateLessonTask(
|
BussApi.updateLessonTask(
|
||||||
selectedLesson.value.id,
|
selectedLesson.value.id,
|
||||||
rejected ? {
|
rejected ? {
|
||||||
advise: JSON.stringify({
|
advise: adviseText.value.toString(),
|
||||||
...parseCombinedFileString(selectedLesson.value, 'advise'),
|
// videoCaptureTime: 0,
|
||||||
uploaded: false
|
|
||||||
}),
|
|
||||||
videoCaptureTime: 0,
|
|
||||||
courseName: selectedLesson.value.courseName,
|
courseName: selectedLesson.value.courseName,
|
||||||
microLessonName: selectedLesson.value.microLessonName,
|
microLessonName: selectedLesson.value.microLessonName,
|
||||||
userId: selectedLesson.value.userId,
|
userId: selectedLesson.value.userId,
|
||||||
progressStatus: 1
|
progressStatus: 1
|
||||||
} : {
|
} : {
|
||||||
videoConfirmTime: dayjs().unix(),
|
advise: adviseText.value.toString(),
|
||||||
|
// videoConfirmTime: dayjs().unix(),
|
||||||
courseName: selectedLesson.value.courseName,
|
courseName: selectedLesson.value.courseName,
|
||||||
microLessonName: selectedLesson.value.microLessonName,
|
microLessonName: selectedLesson.value.microLessonName,
|
||||||
userId: selectedLesson.value.userId,
|
userId: selectedLesson.value.userId,
|
||||||
@ -187,6 +184,7 @@ const onStep3 = (rejected: boolean = false) => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const onPostProduction = (rejected: boolean = false) => {
|
const onPostProduction = (rejected: boolean = false) => {
|
||||||
|
console.log("adviseText.value: " + adviseText.value)
|
||||||
message.confirm({
|
message.confirm({
|
||||||
title: rejected ? '驳回后期制作' : '通过后期制作',
|
title: rejected ? '驳回后期制作' : '通过后期制作',
|
||||||
msg: rejected ? '后期制作不符合要求,驳回制作方重做' : '请确认后期制作合格无误后,再确认审核通过'
|
msg: rejected ? '后期制作不符合要求,驳回制作方重做' : '请确认后期制作合格无误后,再确认审核通过'
|
||||||
@ -203,17 +201,15 @@ const onPostProduction = (rejected: boolean = false) => {
|
|||||||
BussApi.updateLessonTask(
|
BussApi.updateLessonTask(
|
||||||
selectedLesson.value.id,
|
selectedLesson.value.id,
|
||||||
rejected ? {
|
rejected ? {
|
||||||
advise: JSON.stringify({
|
advise: adviseText.value.toString(),
|
||||||
...parseCombinedFileString(selectedLesson.value, 'advise'),
|
// videoCaptureTime: 0,
|
||||||
uploaded: false
|
|
||||||
}),
|
|
||||||
videoCaptureTime: 0,
|
|
||||||
courseName: selectedLesson.value.courseName,
|
courseName: selectedLesson.value.courseName,
|
||||||
microLessonName: selectedLesson.value.microLessonName,
|
microLessonName: selectedLesson.value.microLessonName,
|
||||||
userId: selectedLesson.value.userId,
|
userId: selectedLesson.value.userId,
|
||||||
progressStatus: 2
|
progressStatus: 2
|
||||||
} : {
|
} : {
|
||||||
videoConfirmTime: dayjs().unix(),
|
advise: adviseText.value.toString(),
|
||||||
|
// videoConfirmTime: dayjs().unix(),
|
||||||
courseName: selectedLesson.value.courseName,
|
courseName: selectedLesson.value.courseName,
|
||||||
microLessonName: selectedLesson.value.microLessonName,
|
microLessonName: selectedLesson.value.microLessonName,
|
||||||
userId: selectedLesson.value.userId,
|
userId: selectedLesson.value.userId,
|
||||||
@ -232,6 +228,7 @@ const onPostProduction = (rejected: boolean = false) => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const updateLessons = async () => {
|
const updateLessons = async () => {
|
||||||
|
adviseText.value = ""
|
||||||
if (!user.userinfo) {
|
if (!user.userinfo) {
|
||||||
toast.error({ msg: '请先登录' })
|
toast.error({ msg: '请先登录' })
|
||||||
return
|
return
|
||||||
@ -289,6 +286,20 @@ const updateLessons = async () => {
|
|||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
updateLessons()
|
updateLessons()
|
||||||
})
|
})
|
||||||
|
const refresh = async () => {
|
||||||
|
try {
|
||||||
|
await updateLessons()
|
||||||
|
} catch (err) {
|
||||||
|
} finally {
|
||||||
|
// 停止下拉刷新动画
|
||||||
|
uni.stopPullDownRefresh()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 添加下拉刷新处理函数
|
||||||
|
onPullDownRefresh(() => {
|
||||||
|
refresh()
|
||||||
|
})
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
@ -310,6 +321,7 @@ onMounted(() => {
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div v-if="selectedLessonStage?.step === 0" class="px-2">
|
<div v-if="selectedLessonStage?.step === 0" class="px-2">
|
||||||
|
<div v-if="user.hasRole('teacher')">
|
||||||
<wd-cell-group>
|
<wd-cell-group>
|
||||||
<wd-cell title="脚本提交途径" :title-width="'100px'" center custom-class="mb-4">
|
<wd-cell title="脚本提交途径" :title-width="'100px'" center custom-class="mb-4">
|
||||||
<wd-radio-group v-model="script_file_destination" shape="button">
|
<wd-radio-group v-model="script_file_destination" shape="button">
|
||||||
@ -319,12 +331,17 @@ onMounted(() => {
|
|||||||
</wd-radio-group>
|
</wd-radio-group>
|
||||||
</wd-cell>
|
</wd-cell>
|
||||||
</wd-cell-group>
|
</wd-cell-group>
|
||||||
|
|
||||||
<wd-button type="primary" block @click="onStep1" custom-class="w-full">提交脚本</wd-button>
|
<wd-button type="primary" block @click="onStep1" custom-class="w-full">提交脚本</wd-button>
|
||||||
</div>
|
</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">
|
<div v-if="selectedLessonStage?.step === 1">
|
||||||
<StatusBlock v-if="!parseCombinedFileString(selectedLesson!, 'advise')?.uploaded" title="脚本已提交"
|
<StatusBlock v-if="user.hasRole('teacher')" title="脚本已提交" subtitle="请耐心等待审核">
|
||||||
subtitle="请耐心等待审核">
|
|
||||||
<template #icon>
|
<template #icon>
|
||||||
<div class="i-tabler-progress-bolt text-7xl text-neutral-400"></div>
|
<div class="i-tabler-progress-bolt text-7xl text-neutral-400"></div>
|
||||||
</template>
|
</template>
|
||||||
@ -335,47 +352,66 @@ onMounted(() => {
|
|||||||
<div class="i-tabler-progress-check text-7xl text-neutral-400"></div>
|
<div class="i-tabler-progress-check text-7xl text-neutral-400"></div>
|
||||||
</template>
|
</template>
|
||||||
</StatusBlock>
|
</StatusBlock>
|
||||||
<div class="mt-4 px-4 space-y-2">
|
<div class="mt-4 space-y-4">
|
||||||
<wd-button type="primary" :round="false" block @click="onStep2()">通过</wd-button>
|
<div class="bg-neutral000 rounded-lg px-4 py-3">
|
||||||
<wd-button type="error" :round="false" block @click="onStep2(true)">驳回</wd-button>
|
<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>
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div v-if="selectedLessonStage?.step === 2">
|
<div v-if="selectedLessonStage?.step === 2">
|
||||||
<StatusBlock v-if="!parseCombinedFileString(selectedLesson!, 'advise')?.uploaded" title="视频拍摄进行中"
|
<StatusBlock v-if="user.hasRole('teacher')" title="视频拍摄进行中" subtitle="请等待线下视频拍摄">
|
||||||
subtitle="请等待线下视频拍摄">
|
|
||||||
<template #icon>
|
<template #icon>
|
||||||
<div class="i-tabler-capture text-7xl text-neutral-400"></div>
|
<div class="i-tabler-capture text-7xl text-neutral-400"></div>
|
||||||
</template>
|
</template>
|
||||||
</StatusBlock>
|
</StatusBlock>
|
||||||
|
<!-- && selectedLesson && selectedLesson?.videoCaptureTime > 0 -->
|
||||||
<div v-else>
|
<div v-else>
|
||||||
<StatusBlock title="视频拍摄已完成" subtitle="请核对后审核">
|
<StatusBlock title="视频拍摄已完成" subtitle="请核对后审核">
|
||||||
<template #icon>
|
<template #icon>
|
||||||
<div class="i-tabler-capture-filled text-7xl text-neutral-400"></div>
|
<div class="i-tabler-capture-filled text-7xl text-neutral-400"></div>
|
||||||
</template>
|
</template>
|
||||||
</StatusBlock>
|
</StatusBlock>
|
||||||
<div class="mt-4 px-4 space-y-2">
|
<div class="mt-4 space-y-4">
|
||||||
<wd-button type="primary" :round="false" block @click="onStep3()">通过</wd-button>
|
<div class="bg-neutral000 rounded-lg px-4 py-3">
|
||||||
<wd-button type="error" :round="false" block @click="onStep3(true)">驳回</wd-button>
|
<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>
|
||||||
</div>
|
</div>
|
||||||
<div v-if="selectedLessonStage?.step === 3">
|
<div v-if="selectedLessonStage?.step === 3">
|
||||||
<StatusBlock v-if="!parseCombinedFileString(selectedLesson!, 'advise')?.uploaded" title="后期制作进行中"
|
<StatusBlock v-if="user.hasRole('teacher')" title="后期制作进行中" subtitle="请等待视频后期制作">
|
||||||
subtitle="请等待视频后期制作">
|
|
||||||
<template #icon>
|
<template #icon>
|
||||||
<div class="i-tabler-video text-7xl text-neutral-400"></div>
|
<div class="i-tabler-video text-7xl text-neutral-400"></div>
|
||||||
</template>
|
</template>
|
||||||
</StatusBlock>
|
</StatusBlock>
|
||||||
|
<!-- && selectedLesson && selectedLesson?.videoPostProductionTime > 0 -->
|
||||||
<div v-else>
|
<div v-else>
|
||||||
<StatusBlock title="后期制作已完成" subtitle="请核对后审核">
|
<StatusBlock title="后期制作已完成" subtitle="请核对后审核">
|
||||||
<template #icon>
|
<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>
|
</template>
|
||||||
</StatusBlock>
|
</StatusBlock>
|
||||||
<div class="mt-4 px-4 space-y-2">
|
<div class="mt-4 space-y-4">
|
||||||
<wd-button type="primary" :round="false" block @click="onPostProduction()">通过</wd-button>
|
<div class="bg-neutral000 rounded-lg px-4 py-3">
|
||||||
<wd-button type="error" :round="false" block @click="onPostProduction(true)">驳回</wd-button>
|
<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>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -28,12 +28,6 @@ export interface LessonTask {
|
|||||||
createdAt: number;
|
createdAt: number;
|
||||||
/** 更新时间(时间戳) */
|
/** 更新时间(时间戳) */
|
||||||
updatedAt: number;
|
updatedAt: number;
|
||||||
/** 脚本文件路径 */
|
|
||||||
script_file?: string;
|
|
||||||
/** 视频拍摄文件路径 */
|
|
||||||
capture_file?: string;
|
|
||||||
/** 素材文件路径 */
|
|
||||||
material_file?: string;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface LessonTaskPagination {
|
export interface LessonTaskPagination {
|
||||||
|
Loading…
Reference in New Issue
Block a user