提交 c4ac8abb authored 作者: 王鹏飞's avatar 王鹏飞

chore: update

上级 73bb10e1
<script setup lang="ts"> <script setup lang="ts">
import { Close } from '@element-plus/icons-vue' import { Close } from '@element-plus/icons-vue'
import { onKeyStroke } from '@vueuse/core'
interface FileItem { interface FileItem {
name: string name: string
...@@ -15,6 +16,14 @@ withDefaults(defineProps<Props>(), { ...@@ -15,6 +16,14 @@ withDefaults(defineProps<Props>(), {
modelValue: false, modelValue: false,
index: 0 index: 0
}) })
const emit = defineEmits<{
(e: 'update:modelValue', visible: boolean): void
}>()
// esc 关闭
onKeyStroke('Escape', () => {
emit('update:modelValue', false)
})
</script> </script>
<template> <template>
......
...@@ -16,28 +16,29 @@ defineEmits<{ ...@@ -16,28 +16,29 @@ defineEmits<{
<div class="discuss-item"> <div class="discuss-item">
<div class="discuss-box"> <div class="discuss-box">
<div class="discuss-box-user"> <div class="discuss-box-user">
<img :src="info.created_operator_avatar" /> <div class="discuss-box-user__avatar"><img :src="info.created_operator_avatar" /></div>
<p>{{ info.student_id_name }}</p> <div class="discuss-box-user__content">
<h3>{{ info.student_id_name }}</h3>
<p>{{ info.created_time }}</p>
</div>
<div class="button-comment">
<el-icon><ChatLineRound></ChatLineRound></el-icon>{{ info.replies_num }}
</div>
</div> </div>
<div class="discuss-box-main"> <div class="discuss-box-main">
<div class="discuss-box-header">
<p class="discuss-box-time">{{ info.created_time }}</p>
<div class="tools">
<el-icon><ChatLineRound></ChatLineRound></el-icon>{{ info.replies_num }}
</div>
</div>
<h3>{{ info.title }}</h3> <h3>{{ info.title }}</h3>
<div class="discuss-box-content" v-html="info.content"></div> <div class="discuss-box-content" v-html="info.content"></div>
</div> </div>
</div> </div>
<div class="discuss-box discuss-comment" v-for="item in list" :key="item.id"> <div class="discuss-comment" v-for="item in list" :key="item.id">
<div class="discuss-box-user"> <div class="discuss-comment__avatar">
<img :src="item.sso_id_avatar" /> <img :src="item.sso_id_avatar" />
<p>{{ item.sso_id_name }}</p>
</div> </div>
<div class="discuss-box-main"> <div class="discuss-comment-content">
<p class="discuss-box-time">{{ item.created_time }}</p> <span class="discuss-comment__username">{{ item.sso_id_name }}</span
<div class="discuss-box-content" v-html="item.content"></div> >
<span v-html="item.content"></span>
<p class="discuss-comment-time">{{ item.created_time }}</p>
</div> </div>
</div> </div>
</div> </div>
...@@ -45,56 +46,104 @@ defineEmits<{ ...@@ -45,56 +46,104 @@ defineEmits<{
<style lang="scss" scoped> <style lang="scss" scoped>
.discuss-box { .discuss-box {
padding-bottom: 20px;
border-bottom: 1px solid #e6e6e6;
}
.discuss-box-user {
display: flex; display: flex;
margin: 10px 0; align-items: center;
padding: 10px; .button-comment {
font-size: 12px; display: flex;
color: var(--main-color); align-items: center;
border-radius: 10px; justify-content: center;
border: 1px solid var(--main-color); color: #333333;
&.discuss-comment { cursor: pointer;
margin-left: 40px; &.is-active {
color: #016fa0; color: var(--main-color);
border: 1px solid #016fa0; }
}
.el-icon {
font-size: 16px;
margin-left: 10px;
margin-right: 5px;
} }
} }
.discuss-box-user { .discuss-box-user__avatar {
width: 40px;
height: 40px;
border-radius: 50%;
overflow: hidden;
img { img {
width: 50px; width: 100%;
height: 50px; height: 100%;
border-radius: 50%;
overflow: hidden;
object-fit: cover; object-fit: cover;
} }
}
.discuss-box-user__content {
flex: 1;
margin-left: 10px;
overflow: hidden;
h3 {
font-size: 16px;
font-weight: 500;
line-height: 20px;
color: #333333;
}
p { p {
text-align: center; font-size: 14px;
font-weight: 400;
line-height: 20px;
color: #999999;
} }
} }
.discuss-box-main { .discuss-box-main {
flex: 1; margin-left: 50px;
padding-left: 10px;
h3 { h3 {
font-size: 14px; padding: 16px 0;
font-size: 16px;
font-weight: 500; font-weight: 500;
line-height: 20px;
color: #333333;
} }
} }
.discuss-box-content { .discuss-box-content {
padding: 5px 0; font-size: 16px;
color: #555; font-weight: 400;
line-height: 24px;
color: #333333;
} }
.discuss-box-header {
.discuss-comment {
display: flex; display: flex;
align-items: center; margin-top: 20px;
justify-content: space-between; }
.tools { .discuss-comment__avatar {
display: flex; width: 32px;
align-items: center; height: 32px;
.el-icon { border-radius: 50%;
font-size: 16px; overflow: hidden;
margin-left: 10px; img {
margin-right: 5px; width: 100%;
color: #333333; height: 100%;
} object-fit: cover;
} }
} }
.discuss-comment-content {
flex: 1;
margin-left: 10px;
color: #333;
overflow: hidden;
}
.discuss-comment__username {
font-size: 16px;
line-height: 20px;
color: var(--main-color);
}
.discuss-comment-time {
margin-top: 10px;
font-size: 14px;
line-height: 20px;
color: #999999;
text-align: right;
}
</style> </style>
...@@ -78,8 +78,14 @@ function handleSubmit() { ...@@ -78,8 +78,14 @@ function handleSubmit() {
<template> <template>
<el-dialog title="学生实验评分" :close-on-click-modal="false" @update:modelValue="$emit('update:modelValue')"> <el-dialog title="学生实验评分" :close-on-click-modal="false" @update:modelValue="$emit('update:modelValue')">
<el-form :rules="rules" label-width="120px" label-suffix=":" v-if="detail"> <el-form :rules="rules" label-width="120px" label-suffix=":" v-if="detail">
<el-form-item label="实验名称">{{ detail.experiment_name }}</el-form-item> <el-row>
<el-form-item label="实验课程名称">{{ detail.course_name }}</el-form-item> <el-col :span="12">
<el-form-item label="实验名称">{{ detail.experiment_name }}</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="实验课程名称">{{ detail.course_name }}</el-form-item>
</el-col>
</el-row>
<el-row> <el-row>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="学生姓名">{{ detail.student_name }}</el-form-item> <el-form-item label="学生姓名">{{ detail.student_name }}</el-form-item>
...@@ -96,24 +102,8 @@ function handleSubmit() { ...@@ -96,24 +102,8 @@ function handleSubmit() {
<el-form-item label="所属班级">{{ detail.class_name }}</el-form-item> <el-form-item label="所属班级">{{ detail.class_name }}</el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-form-item label="实验报告文件">
<p v-if="file"> <el-form-item label="实验成绩" class="form-item-score">
<a :href="file.url" target="_blank">
<el-icon><Document /></el-icon>{{ file.name }}
</a>
</p>
</el-form-item>
<el-form-item label="实验过程截图">
<ul class="picture-list">
<li v-for="item in pictures" :key="item.url">
<p class="t1">
<a :href="item.url" target="_blank">{{ item.name }}</a>
</p>
<p class="t2">截图时间:{{ item.upload_time }}</p>
</li>
</ul>
</el-form-item>
<el-form-item label="实验成绩">
<el-form <el-form
ref="formRef" ref="formRef"
:model="form" :model="form"
...@@ -137,6 +127,23 @@ function handleSubmit() { ...@@ -137,6 +127,23 @@ function handleSubmit() {
</el-form-item> </el-form-item>
</el-form> </el-form>
</el-form-item> </el-form-item>
<el-form-item label="实验报告文件">
<div v-if="file">
<a :href="file.url" target="_blank" class="file-item">
<el-icon><Document /></el-icon>{{ file.name }}
</a>
</div>
</el-form-item>
<el-form-item label="实验过程截图">
<ul class="picture-list">
<li v-for="item in pictures" :key="item.url">
<p class="t1">
<a :href="item.url" target="_blank">{{ item.name }}</a>
</p>
<p class="t2">截图时间:{{ item.upload_time }}</p>
</li>
</ul>
</el-form-item>
<el-row justify="center"> <el-row justify="center">
<el-button type="primary" round auto-insert-space @click="handleSubmit">保存</el-button> <el-button type="primary" round auto-insert-space @click="handleSubmit">保存</el-button>
<el-button round auto-insert-space @click="$emit('update:modelValue', false)">取消</el-button> <el-button round auto-insert-space @click="$emit('update:modelValue', false)">取消</el-button>
...@@ -146,6 +153,14 @@ function handleSubmit() { ...@@ -146,6 +153,14 @@ function handleSubmit() {
</template> </template>
<style lang="scss" scoped> <style lang="scss" scoped>
.file-item {
display: flex;
align-items: center;
color: var(--main-color);
.el-icon {
margin-right: 5px;
}
}
.picture-list { .picture-list {
width: 100%; width: 100%;
li { li {
...@@ -153,7 +168,7 @@ function handleSubmit() { ...@@ -153,7 +168,7 @@ function handleSubmit() {
justify-content: space-between; justify-content: space-between;
} }
a { a {
color: blue; color: var(--main-color);
} }
.t1 { .t1 {
flex: 1; flex: 1;
...@@ -161,8 +176,16 @@ function handleSubmit() { ...@@ -161,8 +176,16 @@ function handleSubmit() {
text-overflow: ellipsis; text-overflow: ellipsis;
overflow: hidden; overflow: hidden;
} }
.t2 { }
flex: 1; .form-item-score {
padding-top: 10px;
background-color: #f8f9fb;
border-radius: 16px;
:deep(.el-form-item__label) {
text-align: center;
}
.el-input-number {
width: 100px;
} }
} }
</style> </style>
...@@ -5,7 +5,7 @@ import { useInfiniteScroll } from '@vueuse/core' ...@@ -5,7 +5,7 @@ import { useInfiniteScroll } from '@vueuse/core'
import DiscussItem from './DiscussItem.vue' import DiscussItem from './DiscussItem.vue'
import { getExperimentDiscussList } from '../api' import { getExperimentDiscussList } from '../api'
const DiscussAddDialog = defineAsyncComponent(() => import('./DiscussAddDialog.vue')) const DiscussPublish = defineAsyncComponent(() => import('./DiscussPublish.vue'))
interface Props { interface Props {
experiment_id?: string experiment_id?: string
} }
...@@ -41,8 +41,6 @@ const isEmpty = $computed(() => { ...@@ -41,8 +41,6 @@ const isEmpty = $computed(() => {
return !props.experiment_id || !list.length return !props.experiment_id || !list.length
}) })
const dialogVisible = $ref(false)
// 滚动加载 // 滚动加载
const scrollRef = ref<HTMLElement>() const scrollRef = ref<HTMLElement>()
useInfiniteScroll( useInfiniteScroll(
...@@ -64,9 +62,8 @@ useInfiniteScroll( ...@@ -64,9 +62,8 @@ useInfiniteScroll(
<el-radio :label="3">我的小组</el-radio> <el-radio :label="3">我的小组</el-radio>
<el-radio :label="4">我的班级</el-radio> <el-radio :label="4">我的班级</el-radio>
</el-radio-group> </el-radio-group>
<el-row justify="end"> <!-- 发表新话题 -->
<el-button round type="primary" @click="dialogVisible = true">发表新话题</el-button> <DiscussPublish :experiment_id="experiment_id" @update="fetchInfo(true)" v-if="experiment_id"></DiscussPublish>
</el-row>
<el-empty description="暂无数据" v-if="isEmpty" /> <el-empty description="暂无数据" v-if="isEmpty" />
<template v-else> <template v-else>
<div class="discuss-scroll" ref="scrollRef"> <div class="discuss-scroll" ref="scrollRef">
...@@ -81,13 +78,6 @@ useInfiniteScroll( ...@@ -81,13 +78,6 @@ useInfiniteScroll(
</div> </div>
</template> </template>
</div> </div>
<!-- 发表新话题 -->
<DiscussAddDialog
v-model="dialogVisible"
:experiment_id="experiment_id"
@update="fetchInfo(true)"
v-if="dialogVisible && experiment_id"
></DiscussAddDialog>
</template> </template>
<style lang="scss" scoped> <style lang="scss" scoped>
......
...@@ -11,7 +11,6 @@ const props = defineProps<Props>() ...@@ -11,7 +11,6 @@ const props = defineProps<Props>()
const emit = defineEmits<{ const emit = defineEmits<{
(e: 'update'): void (e: 'update'): void
(e: 'update:modelValue', visible: boolean): void
}>() }>()
const formRef = $ref<FormInstance>() const formRef = $ref<FormInstance>()
...@@ -30,26 +29,23 @@ function handleAdd() { ...@@ -30,26 +29,23 @@ function handleAdd() {
addExperimentDiscussComment(params).then(() => { addExperimentDiscussComment(params).then(() => {
ElMessage({ message: '评论成功', type: 'success' }) ElMessage({ message: '评论成功', type: 'success' })
emit('update') emit('update')
emit('update:modelValue', false) formRef?.resetFields()
}) })
} }
</script> </script>
<template> <template>
<el-dialog <el-form
title="话题评论" ref="formRef"
:close-on-click-modal="false" :model="form"
width="600px" :rules="rules"
@update:modelValue="$emit('update:modelValue')" style="border-top: 1px dashed #e6e6e6; border-bottom: 1px dashed #e6e6e6; padding: 20px 0"
> >
<el-form ref="formRef" :model="form" :rules="rules"> <el-form-item prop="content">
<el-form-item prop="content"> <el-input type="textarea" v-model="form.content" :autosize="{ minRows: 4, maxRows: 6 }" />
<el-input type="textarea" v-model="form.content" :autosize="{ minRows: 4, maxRows: 6 }" /> </el-form-item>
</el-form-item> <el-row justify="end">
<el-row justify="center"> <el-button type="primary" @click="handleSubmit">评论</el-button>
<el-button round auto-insert-space @click="$emit('update:modelValue', false)">取消</el-button> </el-row>
<el-button type="primary" round auto-insert-space @click="handleSubmit">评论</el-button> </el-form>
</el-row>
</el-form>
</el-dialog>
</template> </template>
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
import type { ExperimentDiscussType } from '../types' import type { ExperimentDiscussType } from '../types'
import { ChatLineRound } from '@element-plus/icons-vue' import { ChatLineRound } from '@element-plus/icons-vue'
const DiscussCommentAddDialog = defineAsyncComponent(() => import('./DiscussCommentAddDialog.vue')) const DiscussCommentPublish = defineAsyncComponent(() => import('./DiscussCommentPublish.vue'))
interface Props { interface Props {
data: ExperimentDiscussType data: ExperimentDiscussType
...@@ -13,113 +13,156 @@ defineEmits<{ ...@@ -13,113 +13,156 @@ defineEmits<{
(e: 'update'): void (e: 'update'): void
}>() }>()
const commentDialogVisible = $ref(false)
const commentVisible = $ref(false) const commentVisible = $ref(false)
const commentButtonText = $computed(() => (commentVisible ? '收起' : '展开'))
</script> </script>
<template> <template>
<div class="discuss-item"> <div class="discuss-item">
<div class="discuss-box"> <div class="discuss-box">
<div class="discuss-box-user"> <div class="discuss-box-user">
<img :src="data.sso_user.avatar" /> <div class="discuss-box-user__avatar"><img :src="data.sso_user.avatar" /></div>
<p>{{ data.sso_user.real_name || data.sso_user.nickname || data.sso_user.username }}</p> <div class="discuss-box-user__content">
<h3>{{ data.sso_user.real_name || data.sso_user.nickname || data.sso_user.username }}</h3>
<p>{{ data.created_time }}</p>
</div>
</div> </div>
<div class="discuss-box-main"> <div class="discuss-box-main">
<div class="discuss-box-header">
<p class="discuss-box-time">{{ data.created_time }}</p>
<div class="tools">
<el-button size="small" type="primary" plain round @click="commentVisible = !commentVisible">
{{ commentButtonText }}
</el-button>
<el-icon><ChatLineRound></ChatLineRound></el-icon>{{ data.reply_count }}
</div>
</div>
<h3>{{ data.title }}</h3> <h3>{{ data.title }}</h3>
<div class="discuss-box-content" v-html="data.content"></div> <div class="discuss-box-content" v-html="data.content"></div>
</div> </div>
<div class="discuss-box-footer">
<div class="button-comment" :class="{ 'is-active': commentVisible }" @click="commentVisible = !commentVisible">
<el-icon><ChatLineRound></ChatLineRound></el-icon>{{ data.reply_count }}
</div>
</div>
</div> </div>
<template v-if="commentVisible"> <template v-if="commentVisible">
<div class="discuss-box discuss-comment" v-for="item in data.replies" :key="item.id"> <!-- 我要评论 -->
<div class="discuss-box-user"> <DiscussCommentPublish :data="data" @update="$emit('update')"></DiscussCommentPublish>
<div class="discuss-comment" v-for="item in data.replies" :key="item.id">
<div class="discuss-comment__avatar">
<img :src="item.sso_user.avatar" /> <img :src="item.sso_user.avatar" />
<p>{{ item.sso_user.real_name || item.sso_user.nickname || item.sso_user.username }}</p>
</div> </div>
<div class="discuss-box-main"> <div class="discuss-comment-content">
<p class="discuss-box-time">{{ item.created_time }}</p> <span class="discuss-comment__username">{{
<div class="discuss-box-content" v-html="item.content"></div> item.sso_user.real_name || item.sso_user.nickname || item.sso_user.username
}}</span
>
<span v-html="item.content"></span>
<p class="discuss-comment-time">{{ item.created_time }}</p>
</div> </div>
</div> </div>
</template> </template>
<el-row justify="end" style="margin-top: 10px">
<el-button round type="primary" size="small" @click="commentDialogVisible = true">我要评论</el-button>
</el-row>
</div> </div>
<!-- 我要评论 -->
<DiscussCommentAddDialog
:data="data"
v-model="commentDialogVisible"
@update="$emit('update')"
v-if="commentDialogVisible"
></DiscussCommentAddDialog>
</template> </template>
<style lang="scss" scoped> <style lang="scss" scoped>
.discuss-item { .discuss-item {
margin-top: 10px; margin-top: 10px;
padding: 10px 0; border-top: 1px solid #e6e6e6;
border-top: 1px dashed #ccc;
} }
.discuss-box { .discuss-box {
display: flex; padding: 20px 0 10px;
margin: 10px 0;
padding: 10px;
font-size: 12px;
color: var(--main-color);
border-radius: 10px;
border: 1px solid var(--main-color);
&.discuss-comment {
margin-left: 40px;
color: #016fa0;
border: 1px solid #016fa0;
}
} }
.discuss-box-user { .discuss-box-user {
display: flex;
align-items: center;
}
.discuss-box-user__avatar {
width: 40px;
height: 40px;
border-radius: 50%;
overflow: hidden;
img { img {
width: 50px; width: 100%;
height: 50px; height: 100%;
border-radius: 50%;
overflow: hidden;
object-fit: cover; object-fit: cover;
} }
}
.discuss-box-user__content {
flex: 1;
margin-left: 10px;
overflow: hidden;
h3 {
font-size: 16px;
font-weight: 500;
line-height: 20px;
color: #333333;
}
p { p {
text-align: center; font-size: 14px;
font-weight: 400;
line-height: 20px;
color: #999999;
} }
} }
.discuss-box-main { .discuss-box-main {
flex: 1; margin-left: 50px;
padding-left: 10px;
h3 { h3 {
font-size: 14px; padding: 16px 0;
font-size: 16px;
font-weight: 500; font-weight: 500;
line-height: 20px;
color: #333333;
} }
} }
.discuss-box-content { .discuss-box-content {
padding: 5px 0; font-size: 16px;
color: #555; font-weight: 400;
line-height: 24px;
color: #333333;
} }
.discuss-box-header { .discuss-box-footer {
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: space-between; justify-content: flex-end;
.tools { margin-top: 10px;
.button-comment {
display: flex; display: flex;
align-items: center; align-items: center;
.el-icon { justify-content: center;
font-size: 16px; color: #333333;
margin-left: 10px; cursor: pointer;
margin-right: 5px; &.is-active {
color: #333333; color: var(--main-color);
} }
} }
.el-icon {
font-size: 16px;
margin-left: 10px;
margin-right: 5px;
}
}
.discuss-comment {
display: flex;
margin-top: 20px;
}
.discuss-comment__avatar {
width: 32px;
height: 32px;
border-radius: 50%;
overflow: hidden;
img {
width: 100%;
height: 100%;
object-fit: cover;
}
}
.discuss-comment-content {
flex: 1;
margin-left: 10px;
color: #333;
overflow: hidden;
}
.discuss-comment__username {
font-size: 16px;
line-height: 20px;
color: var(--main-color);
}
.discuss-comment-time {
margin-top: 10px;
font-size: 14px;
line-height: 20px;
color: #999999;
text-align: right;
} }
</style> </style>
...@@ -10,14 +10,13 @@ const props = defineProps<Props>() ...@@ -10,14 +10,13 @@ const props = defineProps<Props>()
const emit = defineEmits<{ const emit = defineEmits<{
(e: 'update'): void (e: 'update'): void
(e: 'update:modelValue', visible: boolean): void
}>() }>()
const formRef = $ref<FormInstance>() const formRef = $ref<FormInstance>()
const form = reactive({ title: '', content: '' }) const form = reactive({ title: '', content: '' })
const rules = ref<FormRules>({ const rules = ref<FormRules>({
title: [{ required: true, message: '请输入话题标题', trigger: 'blur' }], title: [{ required: true, message: '请输入话题标题' }],
content: [{ required: true, message: '请输入话题描述', trigger: 'blur' }] content: [{ required: true, message: '请输入话题描述' }]
}) })
// 提交 // 提交
...@@ -30,29 +29,21 @@ function handleAdd() { ...@@ -30,29 +29,21 @@ function handleAdd() {
addExperimentDiscuss(params).then(() => { addExperimentDiscuss(params).then(() => {
ElMessage({ message: '发表成功', type: 'success' }) ElMessage({ message: '发表成功', type: 'success' })
emit('update') emit('update')
emit('update:modelValue', false) formRef?.resetFields()
}) })
} }
</script> </script>
<template> <template>
<el-dialog <el-form ref="formRef" :model="form" :rules="rules" style="padding: 20px 0 10px">
title="发表新话题" <el-form-item prop="title">
:close-on-click-modal="false" <el-input v-model="form.title" placeholder="话题标题"></el-input>
width="600px" </el-form-item>
@update:modelValue="$emit('update:modelValue')" <el-form-item prop="content">
> <el-input type="textarea" v-model="form.content" placeholder="话题描述" :autosize="{ minRows: 4, maxRows: 6 }" />
<el-form ref="formRef" :model="form" :rules="rules"> </el-form-item>
<el-form-item label="话题标题" prop="title"> <el-row justify="end">
<el-input v-model="form.title"></el-input> <el-button type="primary" @click="handleSubmit">发表</el-button>
</el-form-item> </el-row>
<el-form-item label="话题描述" prop="content"> </el-form>
<el-input type="textarea" v-model="form.content" :autosize="{ minRows: 4, maxRows: 6 }" />
</el-form-item>
<el-row justify="center">
<el-button round auto-insert-space @click="$emit('update:modelValue', false)">取消</el-button>
<el-button type="primary" round auto-insert-space @click="handleSubmit">发布</el-button>
</el-row>
</el-form>
</el-dialog>
</template> </template>
...@@ -23,11 +23,12 @@ onMounted(() => { ...@@ -23,11 +23,12 @@ onMounted(() => {
<div class="video-item"> <div class="video-item">
<h2>{{ data.name }}</h2> <h2>{{ data.name }}</h2>
<!-- <img :src="data.cover" /> --> <!-- <img :src="data.cover" /> -->
<AppVideoPlayer <div style="height: 200px" v-if="playUrl">
:options="{ sources: [{ src: playUrl, type: 'application/x-mpegURL' }] }" <AppVideoPlayer
style="width: 100%" :options="{ sources: [{ src: playUrl, type: 'application/x-mpegURL' }] }"
v-if="playUrl" style="width: 100%; height: 100%"
></AppVideoPlayer> ></AppVideoPlayer>
</div>
</div> </div>
</template> </template>
......
...@@ -88,7 +88,7 @@ onUnmounted(() => { ...@@ -88,7 +88,7 @@ onUnmounted(() => {
// 上传截图 // 上传截图
function uploadPicture(url: string) { function uploadPicture(url: string) {
const pictures = detail?.pictures || [] const pictures = detail?.pictures || []
pictures.unshift({ url, name: 'screenshot.png', upload_time: dayjs().format('YYYY-MM-DD HH:mm:ss') }) pictures.unshift({ url, name: Date.now() + '.png', upload_time: dayjs().format('YYYY-MM-DD HH:mm:ss') })
uploadExperimentPicture({ experiment_id: form.experiment_id, pictures: JSON.stringify(pictures) }).then(() => { uploadExperimentPicture({ experiment_id: form.experiment_id, pictures: JSON.stringify(pictures) }).then(() => {
fetchInfo() fetchInfo()
screenshotLoading = false screenshotLoading = false
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论