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

chore: update

上级 e548acd9
......@@ -2,7 +2,6 @@
import type { FormInstance, FormRules } from 'element-plus'
import { ElMessage } from 'element-plus'
import AppUpload from '@/components/base/AppUpload.vue'
import AppEditor from '@/components/base/AppEditor.vue'
import { replyToPost } from '../api'
import { isVideo } from '@/utils/index'
interface Props {
......@@ -69,7 +68,12 @@ function beforeUpload(file: any) {
@update:modelValue="$emit('update:modelValue')">
<el-form ref="formRef" :model="form" :rules="rules" hide-required-asterisk label-position="top">
<el-form-item prop="content">
<AppEditor v-model="form.content" :height="300" />
<el-input
type="textarea"
show-word-limit
:autosize="{ minRows: 10, maxRows: 12 }"
:maxlength="500"
v-model="form.content"></el-input>
</el-form-item>
<el-form-item prop="files">
<AppUpload v-model="form.files" accept="image/*,video/*" :beforeUpload="beforeUpload">
......
......@@ -5,6 +5,7 @@ import { ElMessage, ElInput } from 'element-plus'
import DiscussItemCommentList from './DiscussItemCommentList.vue'
import FileList from './FileList.vue'
import { replyToPost } from '../api'
import { content2Html } from '@/utils'
interface Props {
landlordId: string
......@@ -91,7 +92,7 @@ function handleSubmit() {
</div>
<div class="discuss-item__right">
<div class="discuss-item__main">
<div class="discuss-item__content" v-html="data.content"></div>
<div class="discuss-item__content" v-html="content2Html(data.content)"></div>
<FileList preview :data="data.files" v-if="data.files.length" />
</div>
<p class="discuss-item__time">{{ data.updated_time }}</p>
......@@ -102,6 +103,7 @@ function handleSubmit() {
<el-form-item prop="content">
<el-input
type="textarea"
show-word-limit
:autosize="{ minRows: 6, maxRows: 6 }"
:maxlength="100"
v-model="form.content"
......
......@@ -3,6 +3,7 @@ import type { FormInstance, FormRules } from 'element-plus'
import type { DiscussItem, DiscussCommentItem, User } from '../types'
import { ElMessage, ElInput } from 'element-plus'
import { getCommitList, replyToPost } from '../api'
import { content2Html } from '@/utils'
interface Props {
data: DiscussItem
......@@ -110,7 +111,7 @@ defineExpose({ refresh })
>
</span>
</div>
<div class="discuss-comment-item-bd">{{ item.content }}</div>
<div class="discuss-comment-item-bd" v-html="content2Html(item.content)"></div>
<div class="discuss-comment-item-ft">
<p>来自于{{ item.created_time }}</p>
<div class="discuss-item__comment" @click="handleReply(item)"><p>回复</p></div>
......@@ -123,6 +124,7 @@ defineExpose({ refresh })
<el-form-item prop="content">
<el-input
type="textarea"
show-word-limit
:autosize="{ minRows: 6, maxRows: 6 }"
:maxlength="100"
v-model="form.content"
......
......@@ -2,7 +2,6 @@
import type { FormInstance, FormRules } from 'element-plus'
import { ElMessage } from 'element-plus'
import AppUpload from '@/components/base/AppUpload.vue'
import AppEditor from '@/components/base/AppEditor.vue'
import { createPost } from '../api'
import { useMapStore } from '@/stores/map'
import { useGetCourseList } from '@/composables/useGetCourseList'
......@@ -43,6 +42,7 @@ const rules = ref<FormRules>({
watchEffect(() => {
courseValue.value = form.course_id
const course = courses.value.find(item => item.course_id === form.course_id)
form.chapter_id = ''
form.semester_id = course ? course.semester.id : ''
})
// 提交
......@@ -107,7 +107,12 @@ function beforeUpload(file: any) {
<el-input v-model="form.title" />
</el-form-item>
<el-form-item label="正文内容" prop="content">
<AppEditor v-model="form.content" :height="300" />
<el-input
type="textarea"
show-word-limit
:autosize="{ minRows: 10, maxRows: 12 }"
:maxlength="500"
v-model="form.content"></el-input>
</el-form-item>
<el-form-item prop="files">
<AppUpload v-model="form.files" accept="image/*,video/*" :beforeUpload="beforeUpload">
......
......@@ -41,28 +41,6 @@ const params = reactive({
})
// 列表配置
const listOptions = computed(() => {
const filters = [
{
type: 'select',
prop: 'chapter_id',
placeholder: '请选择',
options: chapterList,
labelKey: 'name',
valueKey: 'id'
},
{ type: 'select', prop: 'search_by', placeholder: '请选择', options: bbsSearchByList },
{ type: 'select', prop: 'type', placeholder: '请选择', options: currentTypes },
{ type: 'select', prop: 'order_by', placeholder: '请选择', options: bbsOrderByList }
]
!props.courseId &&
filters.unshift({
type: 'select',
prop: 'course_id',
placeholder: '请选择',
options: courseList,
labelKey: 'name',
valueKey: 'course_id'
})
return {
hasFilterButton: false,
remote: {
......@@ -72,17 +50,39 @@ const listOptions = computed(() => {
if (params.course_id !== requestParams.course_id) {
requestParams.chapter_id = ''
}
params.course_id = requestParams.course_id || ''
courseValue.value = params.course_id
Object.assign(params, requestParams)
courseValue.value = requestParams.course_id
return requestParams
},
callback(res: { total: number; data: any }) {
return { total: res.total, list: res.data }
}
},
filters
}
}
})
const filters = $computed(() => {
return [
!props.courseId && {
type: 'select',
prop: 'course_id',
placeholder: '请选择',
options: courseList,
labelKey: 'name',
valueKey: 'course_id'
},
{
type: 'select',
prop: 'chapter_id',
placeholder: '请选择',
options: chapterList,
labelKey: 'name',
valueKey: 'id'
},
{ type: 'select', prop: 'search_by', placeholder: '请选择', options: bbsSearchByList },
{ type: 'select', prop: 'type', placeholder: '请选择', options: currentTypes },
{ type: 'select', prop: 'order_by', placeholder: '请选择', options: bbsOrderByList }
]
})
// 刷新
function handleRefetch() {
appList?.refetch()
......@@ -91,7 +91,7 @@ const postFormVisible = $ref(false)
</script>
<template>
<AppList v-bind="listOptions" ref="appList">
<AppList :filters="filters" v-bind="listOptions" ref="appList">
<template #header-prepend>
<el-button round type="primary" @click="postFormVisible = true" style="margin-right: 30px">我要发帖</el-button>
</template>
......
......@@ -21,3 +21,7 @@ export function formatQuestionType(type: QuestionType) {
export function isVideo(url: string) {
return url.includes('.mp4')
}
export function content2Html(content: string) {
return content.replaceAll('\n', '<br>')
}
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论