|
@@ -1,8 +1,7 @@
|
|
|
<template>
|
|
|
- <div v-if="!loading" class="box-border pb-80">
|
|
|
+ <div v-if="!loading" class="box-border pb-80">
|
|
|
<CreateNoteHeaderBanner v-model:bannerUrl="noteJson.travelNotesBanner" />
|
|
|
-
|
|
|
-
|
|
|
+
|
|
|
<CreateNoteForm
|
|
|
v-model:departureTime="noteJson.departureTime"
|
|
|
v-model:countTimes="noteJson.countTimes"
|
|
@@ -14,60 +13,205 @@
|
|
|
v-model:travelNumber="noteJson.travelNumber"
|
|
|
/>
|
|
|
|
|
|
-
|
|
|
- <div class="flex items-center pl-16 w-full h-40 ">
|
|
|
+ <div class="flex items-center pl-16 pt-16 w-full h-40">
|
|
|
<div class="w-2 h-14 bg-[#FF9300] mr-16"></div>
|
|
|
<h1 class="text-sm font-bold">编辑游记文章</h1>
|
|
|
</div>
|
|
|
-
|
|
|
- <van-cell-group class="border" inset>
|
|
|
- <van-field
|
|
|
- v-model="noteJson.projectTitle"
|
|
|
- rows="1"
|
|
|
- autosize
|
|
|
- label-width="5"
|
|
|
- type="textarea"
|
|
|
- placeholder="从这里开始游记大标题..."
|
|
|
- maxlength="50"
|
|
|
- show-word-limit
|
|
|
+ <div class="mb-12">
|
|
|
+ <van-cell-group class="border" inset>
|
|
|
+ <van-field
|
|
|
+ v-model="noteJson.projectTitle"
|
|
|
+ rows="1"
|
|
|
+ autosize
|
|
|
+ type="textarea"
|
|
|
+ placeholder="从这里开始游记大标题..."
|
|
|
+ maxlength="50"
|
|
|
+ show-word-limit
|
|
|
+ ></van-field>
|
|
|
+ </van-cell-group>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <template v-for="(item, index) in noteJson.travelNotesContent" :key="item.tmpId">
|
|
|
+ <div v-if="item.type === defaultSectionTitle.type" class="h-50 mb-12 relative box-border">
|
|
|
+ <van-cell-group class="border h-full" inset>
|
|
|
+ <van-field
|
|
|
+ v-model="item.content"
|
|
|
+ rows="1"
|
|
|
+ autosize
|
|
|
+ class="text-base"
|
|
|
+ type="textarea"
|
|
|
+ trigger="onChange"
|
|
|
+ validate-trigger="onChange"
|
|
|
+ placeholder="请输入段落标题..."
|
|
|
+ @click-input="handleInsertOrEditTitleIndex(index)"
|
|
|
+ @update:model-value="handleInsertOrEditTitle"
|
|
|
+ >
|
|
|
+ <template #extra>
|
|
|
+ <div class="w-16 h-16 z-0">
|
|
|
+ <img
|
|
|
+ @click="handleDeleteTitle(index)"
|
|
|
+ class="w-full h-full"
|
|
|
+ src="~/assets/img/note-create/delete.svg"
|
|
|
+ alt=""
|
|
|
+ />
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ </van-field>
|
|
|
+ </van-cell-group>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <div
|
|
|
+ v-else-if="item.type === defaultSectionContent.type"
|
|
|
+ class="h-100 mb-12 relative box-border"
|
|
|
+ >
|
|
|
+ <van-cell-group class="border h-full" inset>
|
|
|
+ <van-field
|
|
|
+ v-model="item.content"
|
|
|
+ rows="1"
|
|
|
+ autosize
|
|
|
+ class="text-base border"
|
|
|
+ type="textarea"
|
|
|
+ trigger="onChange"
|
|
|
+ validate-trigger="onChange"
|
|
|
+ placeholder="请在这里输入游记正文..."
|
|
|
+ @click-input="handleInsertOrEditTitleIndex(index)"
|
|
|
+ @update:model-value="handleInsertOrEditTitle"
|
|
|
+ >
|
|
|
+ <template #extra>
|
|
|
+ <div class="w-16 h-16 z-0">
|
|
|
+ <img
|
|
|
+ @click="handleDeleteTitle(index)"
|
|
|
+ class="w-full h-full"
|
|
|
+ src="../../assets/img/note-create/delete.svg"
|
|
|
+ alt=""
|
|
|
+ />
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ </van-field>
|
|
|
+ </van-cell-group>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <div
|
|
|
+ v-else-if="item.type === defaultSectionImage.type"
|
|
|
+ class="relative box-border h-203 mb-12"
|
|
|
>
|
|
|
- </van-field>
|
|
|
- </van-cell-group>
|
|
|
+ <van-cell-group class="border h-full" inset>
|
|
|
+ <!-- <van-field>
|
|
|
+ <template #input>
|
|
|
+ <van-uploader v-model="value">
|
|
|
+ <template #default>
|
|
|
+ <div class="w-full h-full flex justify-center items-center">
|
|
|
+ <button
|
|
|
+ class="box-border active:bg-[#000]/[0.1] text-base flex justify-center items-center px-28 py-10 rounded-full border"
|
|
|
+ >
|
|
|
+ <div class="h-16 w-16 mr-8">
|
|
|
+ <img
|
|
|
+ class="w-full h-full"
|
|
|
+ src="../../assets/img/note-create/img.svg"
|
|
|
+ alt=""
|
|
|
+ />
|
|
|
+ </div>
|
|
|
+
|
|
|
+ 插入图片
|
|
|
+ </button>
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ </van-uploader>
|
|
|
+ </template>
|
|
|
+ </van-field> -->
|
|
|
+
|
|
|
+ <div class="w-full h-full flex justify-center items-center">
|
|
|
+ <van-uploader v-model="fileList" :after-read="afterRead" :multiple="false" >
|
|
|
+ <button
|
|
|
+ @click="handleInsertOrEditTitleIndex(index)"
|
|
|
+ class="box-border active:bg-[#000]/[0.1] text-base flex justify-center items-center px-28 py-10 rounded-full border"
|
|
|
+ >
|
|
|
+ <div class="h-16 w-16 mr-8">
|
|
|
+ <img class="w-full h-full" src="~/assets/img/note-create/img.svg" alt="" />
|
|
|
+ </div>
|
|
|
+
|
|
|
+ 插入图片
|
|
|
+ </button>
|
|
|
+ </van-uploader>
|
|
|
+
|
|
|
+ </div>
|
|
|
+ </van-cell-group>
|
|
|
+ <div v-if="item.content ">
|
|
|
+ <img :src="item.content" alt="Uploaded Image" />
|
|
|
+ </div>
|
|
|
|
|
|
+ <div class="w-86 flex justify-between items-center h-16 absolute top-[10px] right-26 z-1">
|
|
|
+ <span @click="handleSaveCover(item)" class="text-sm text-black-3">设为封面图</span>
|
|
|
+ <div class="w-16 h-16 inline-block">
|
|
|
+ <img
|
|
|
+ @click="handleDeleteImage(index)"
|
|
|
+ class="w-full h-full"
|
|
|
+ src="../../assets/img/note-create/delete.svg"
|
|
|
+ alt=""
|
|
|
+ />
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+
|
|
|
+ <div class="px-16 flex justify-between">
|
|
|
+ <button
|
|
|
+ @click="handleInsertOrEditTitleOk(defaultSectionTitle)"
|
|
|
+ class="w-110 active:bg-[#000]/[0.1] h-44 box-border text-base text-black-3 flex justify-center rounded-md items-center bg-[#F3F3F3]"
|
|
|
+ >
|
|
|
+ <van-icon name="plus" class="mr-5" color="#FF9300" />
|
|
|
+ 插入小标题
|
|
|
+ </button>
|
|
|
+ <button
|
|
|
+ @click="handleInsertOrEditTitleOk(defaultSectionContent)"
|
|
|
+ class="w-110 h-44 active:bg-[#000]/[0.1] box-border text-base text-black-3 flex justify-center rounded-md items-center bg-[#F3F3F3]"
|
|
|
+ >
|
|
|
+ <van-icon name="plus" class="mr-5" color="#FF9300" />
|
|
|
+ 插入内容
|
|
|
+ </button>
|
|
|
+ <!-- @click="handleInsertOrEditTitleOk(defaultSectionImage)" -->
|
|
|
+ <button
|
|
|
+ @click="handleInsertOrEditTitleOk(defaultSectionImage)"
|
|
|
+ class="w-110 active:bg-[#000]/[0.1] h-44 box-border text-base text-black-3 flex justify-center rounded-md items-center bg-[#F3F3F3]"
|
|
|
+ >
|
|
|
+ <van-icon name="plus" class="mr-5" color="#FF9300" />
|
|
|
+ 插入图片
|
|
|
+ </button>
|
|
|
+ </div>
|
|
|
|
|
|
- <div class="fixed box-border p-16 shadow-[0_-4px_4px_0px_rgba(0,0,0,0.1)] bottom-0 left-0 w-full h-80 flex justify-between bg-white items-center">
|
|
|
+ <div
|
|
|
+ class="fixed box-border p-16 shadow-[0_-4px_4px_0px_rgba(0,0,0,0.1)] bottom-0 left-0 w-full h-80 flex justify-between bg-white items-center"
|
|
|
+ >
|
|
|
<div class="flex justify-start items-center h-50">
|
|
|
- <div class="w-50 text-center">
|
|
|
+ <div class="w-50 text-center" @click="handleSaveDraft">
|
|
|
<van-icon name="notes-o" size="24px" />
|
|
|
<p class="text-sm text-black-3">草稿</p>
|
|
|
</div>
|
|
|
- <div class="w-50 text-center">
|
|
|
+ <div class="w-50 text-center">
|
|
|
<van-icon name="eye-o" size="24px" />
|
|
|
<p class="text-sm text-black-3">预览</p>
|
|
|
</div>
|
|
|
-
|
|
|
</div>
|
|
|
|
|
|
-
|
|
|
- <van-button class="w-full h-full flex items-center" size="large" type="primary" round color="#FD9A00" block>
|
|
|
- <div class=" inline-block w-22 h-22 ">
|
|
|
- <van-image
|
|
|
- width="100%"
|
|
|
- height="100%"
|
|
|
- :src="upload"
|
|
|
- />
|
|
|
- </div> 发布
|
|
|
- </van-button>
|
|
|
-
|
|
|
-
|
|
|
+ <van-button
|
|
|
+ class="w-full h-full flex items-center"
|
|
|
+ size="large"
|
|
|
+ type="primary"
|
|
|
+ round
|
|
|
+ color="#FD9A00"
|
|
|
+ block
|
|
|
+ >
|
|
|
+ <template #icon>
|
|
|
+ <van-image width="22" height="22" :src="upload" />
|
|
|
+ </template>
|
|
|
+ 发布
|
|
|
+ </van-button>
|
|
|
</div>
|
|
|
- <div
|
|
|
- class="flex justify-center "
|
|
|
- >
|
|
|
+
|
|
|
+ <div class="flex justify-center">
|
|
|
<div class="mx-auto mt-30 flex w-wrap space-x-50">
|
|
|
- <!-- <div class="min-h-360 w-[860px] pb-80"> -->
|
|
|
- <div>
|
|
|
- <!-- <VueDraggable v-model="noteJson.travelNotesContent">
|
|
|
+ <div>
|
|
|
+ <!-- <VueDraggable v-model="noteJson.travelNotesContent">
|
|
|
<template
|
|
|
v-for="(item, index) in noteJson.travelNotesContent"
|
|
|
:key="item.tmpId"
|
|
@@ -93,23 +237,13 @@
|
|
|
</template>
|
|
|
</template>
|
|
|
</VueDraggable> -->
|
|
|
- <!-- <CreateNoteBottomActions
|
|
|
+ <!-- <CreateNoteBottomActions
|
|
|
class="mt-50"
|
|
|
:publishLoading="publishLoading"
|
|
|
@on-preview="handlePreview"
|
|
|
@on-publish="handlePublish"
|
|
|
/> -->
|
|
|
- </div>
|
|
|
- <!-- </div> -->
|
|
|
- <!-- <el-affix :offset="20">
|
|
|
- <CreateNoteLeftActions
|
|
|
- @on-insert-title="handleInsertOrEditTitle"
|
|
|
- @on-insert-content="handleInsertContent"
|
|
|
- @on-insert-img="handleInsertImage"
|
|
|
-
|
|
|
- />
|
|
|
- @on-save-draft="handleSaveDraft"
|
|
|
- </el-affix> -->
|
|
|
+ </div>
|
|
|
</div>
|
|
|
</div>
|
|
|
|
|
@@ -133,17 +267,15 @@
|
|
|
<!-- <CreateNotePublishResultModal
|
|
|
v-model:visible="publishResultModalOptions.show"
|
|
|
/> -->
|
|
|
-
|
|
|
</div>
|
|
|
</template>
|
|
|
|
|
|
<script setup>
|
|
|
-import upload from '../../assets/img/note-create/upload.svg'
|
|
|
+import upload from '~/assets/img/note-create/upload.svg'
|
|
|
import { cloneDeep } from 'lodash-es'
|
|
|
// import { VueDraggable } from 'vue-draggable-plus'
|
|
|
import { nanoid } from 'nanoid'
|
|
|
|
|
|
-
|
|
|
const { loading, setLoading } = useLoading()
|
|
|
loading.value = false
|
|
|
|
|
@@ -188,30 +320,30 @@ watch(noteJson, () => {}, { deep: true })
|
|
|
// )
|
|
|
|
|
|
// 获取草稿详情
|
|
|
-// async function getNoteDetail() {
|
|
|
-// try {
|
|
|
-// setLoading(true)
|
|
|
-// const res = await request(
|
|
|
-// `/website/tourism/publishTravelNotes/getDraftDetail?writeId=${id.value}`
|
|
|
-// )
|
|
|
-// const data = res.data ?? {}
|
|
|
-// Object.keys(noteJson).forEach((key) => {
|
|
|
-// noteJson[key] = data[key]
|
|
|
-// noteJson.travelNotesContent = data.travelNotesContent ?? []
|
|
|
-// if (noteJson.travelNotesContent.length === 0) {
|
|
|
-// noteJson.travelNotesContent.push({
|
|
|
-// type: defaultSectionContent.type,
|
|
|
-// content: '',
|
|
|
-// tmpId: nanoid()
|
|
|
-// })
|
|
|
-// }
|
|
|
-// })
|
|
|
+async function getNoteDetail() {
|
|
|
+ try {
|
|
|
+ setLoading(true)
|
|
|
+ const res = await request(
|
|
|
+ `/website/tourism/publishTravelNotes/getDraftDetail?writeId=${id.value}`
|
|
|
+ )
|
|
|
+ const data = res.data ?? {}
|
|
|
+ Object.keys(noteJson).forEach((key) => {
|
|
|
+ noteJson[key] = data[key]
|
|
|
+ noteJson.travelNotesContent = data.travelNotesContent ?? []
|
|
|
+ if (noteJson.travelNotesContent.length === 0) {
|
|
|
+ noteJson.travelNotesContent.push({
|
|
|
+ type: defaultSectionContent.type,
|
|
|
+ content: '',
|
|
|
+ tmpId: nanoid()
|
|
|
+ })
|
|
|
+ }
|
|
|
+ })
|
|
|
|
|
|
-// setLoading(false)
|
|
|
-// } catch (error) {
|
|
|
-// setLoading(false)
|
|
|
-// }
|
|
|
-// }
|
|
|
+ setLoading(false)
|
|
|
+ } catch (error) {
|
|
|
+ setLoading(false)
|
|
|
+ }
|
|
|
+}
|
|
|
|
|
|
/************ 插入段落标题逻辑 ********** */
|
|
|
|
|
@@ -220,32 +352,25 @@ const insertTilteOptions = reactive({
|
|
|
content: null,
|
|
|
editIndex: null
|
|
|
})
|
|
|
+const editIndex = ref(null)
|
|
|
|
|
|
// 点击编辑或者新增段落标题,弹出dialog
|
|
|
-function handleInsertOrEditTitle(index) {
|
|
|
- if (index === null || index === undefined) {
|
|
|
- // 新增
|
|
|
- insertTilteOptions.editIndex = null
|
|
|
- insertTilteOptions.content = null
|
|
|
- } else {
|
|
|
- // 编辑
|
|
|
- insertTilteOptions.editIndex = index
|
|
|
- insertTilteOptions.content = noteJson.travelNotesContent[index].content
|
|
|
- }
|
|
|
- insertTilteOptions.show = true
|
|
|
+function handleInsertOrEditTitleIndex(index) {
|
|
|
+ editIndex.value = index
|
|
|
+}
|
|
|
+
|
|
|
+// 点击编辑或者新增段落标题,弹出dialog
|
|
|
+function handleInsertOrEditTitle(value) {
|
|
|
+ noteJson.travelNotesContent[editIndex.value].content = value
|
|
|
}
|
|
|
|
|
|
// 确认编辑或者新增段落标题
|
|
|
function handleInsertOrEditTitleOk(newTitle) {
|
|
|
- if (insertTilteOptions.editIndex === null) {
|
|
|
- noteJson.travelNotesContent.push({
|
|
|
- type: defaultSectionTitle.type,
|
|
|
- content: newTitle,
|
|
|
- tmpId: nanoid()
|
|
|
- })
|
|
|
- } else {
|
|
|
- noteJson.travelNotesContent[insertTilteOptions.editIndex].content = newTitle
|
|
|
- }
|
|
|
+ // if (insertTilteOptions.editIndex === null) {
|
|
|
+ noteJson.travelNotesContent.push({
|
|
|
+ ...newTitle,
|
|
|
+ tmpId: nanoid()
|
|
|
+ })
|
|
|
}
|
|
|
|
|
|
// 删除段落标题
|
|
@@ -264,28 +389,27 @@ function handleInsertContent() {
|
|
|
)
|
|
|
}
|
|
|
|
|
|
-function handleDeleteContent(index) {
|
|
|
- noteJson.travelNotesContent.splice(index, 1)
|
|
|
-}
|
|
|
+// function handleDeleteContent(index) {
|
|
|
+// noteJson.travelNotesContent.splice(index, 1)
|
|
|
+// }
|
|
|
|
|
|
/******************插入图片逻辑*******************/
|
|
|
const insertImageOptions = reactive({
|
|
|
show: false
|
|
|
})
|
|
|
+
|
|
|
function handleInsertImage() {
|
|
|
insertImageOptions.show = true
|
|
|
}
|
|
|
|
|
|
-function handleInsertImageOk(fileUrlList) {
|
|
|
- const imageList = fileUrlList.map((e) => ({
|
|
|
- type: defaultSectionImage.type,
|
|
|
- content: e.fileUrl,
|
|
|
- tmpId: nanoid()
|
|
|
- }))
|
|
|
- noteJson.travelNotesContent = (noteJson.travelNotesContent ?? []).concat(
|
|
|
- imageList
|
|
|
- )
|
|
|
-}
|
|
|
+// function handleInsertImageOk(fileUrlList) {
|
|
|
+// const imageList = fileUrlList.map((e) => ({
|
|
|
+// type: defaultSectionImage.type,
|
|
|
+// content: e.fileUrl,
|
|
|
+// tmpId: nanoid()
|
|
|
+// }))
|
|
|
+// noteJson.travelNotesContent = (noteJson.travelNotesContent ?? []).concat(imageList)
|
|
|
+// }
|
|
|
|
|
|
function handleDeleteImage(index) {
|
|
|
if (noteJson.travelNotesContent[index].type === 'image') {
|
|
@@ -301,23 +425,66 @@ function handleSaveCover(item) {
|
|
|
}
|
|
|
item.cover = 1
|
|
|
})
|
|
|
- ElMessage.success('设置封面成功')
|
|
|
+ showToast('设置封面成功')
|
|
|
}
|
|
|
|
|
|
-//保存为草稿
|
|
|
-// async function handleSaveDraft() {
|
|
|
-// try {
|
|
|
-// await request('/website/tourism/publishTravelNotes/saveDraft', {
|
|
|
-// method: 'post',
|
|
|
-// body: {
|
|
|
-// ...noteJson,
|
|
|
-// id: id.value
|
|
|
-// }
|
|
|
-// })
|
|
|
-// ElMessage.success('草稿保存成功')
|
|
|
-// } finally {
|
|
|
-// }
|
|
|
-// }
|
|
|
+const fileList = ref([])
|
|
|
+// 图片上传
|
|
|
+const afterRead = (file) => {
|
|
|
+ // 此时可以自行将文件上传至服务器
|
|
|
+ uploadFile(file)
|
|
|
+
|
|
|
+
|
|
|
+};
|
|
|
+
|
|
|
+const useAuth = useAuthStore()
|
|
|
+const { token } = storeToRefs(useAuth)
|
|
|
+
|
|
|
+const uploadUrl = `${import.meta.env.VITE_APP_BASE_URL}/admin/app/tourismProjectTravelNotesWrite/upload`
|
|
|
+
|
|
|
+const uploadFile = (file) => {
|
|
|
+ // 使用 FormData 来包装文件,模拟表单提交
|
|
|
+ const formData = new FormData();
|
|
|
+ formData.append('file', file);
|
|
|
+ // 这里假设使用 axios 进行文件上传
|
|
|
+ request(uploadUrl, formData, {
|
|
|
+ headers: {
|
|
|
+ Authorization:token,
|
|
|
+ 'Content-Type': 'multipart/form-data'
|
|
|
+ }
|
|
|
+ }).then(res => {
|
|
|
+ console.log(res,'img1111');
|
|
|
+ // noteJson.travelNotesContent.map(el=>{
|
|
|
+ // if (el.type==='image') {
|
|
|
+ // noteJson.travelNotesContent[editIndex.value].content=''
|
|
|
+ // }
|
|
|
+ // })
|
|
|
+
|
|
|
+
|
|
|
+ // 处理上传成功的逻辑
|
|
|
+ // Toast('上传成功');
|
|
|
+ }).catch(err=> {
|
|
|
+ console.log(err,'img');
|
|
|
+
|
|
|
+ // 处理上传失败的逻辑
|
|
|
+ // Toast('上传失败,请重试');
|
|
|
+ });
|
|
|
+};
|
|
|
+
|
|
|
+// 保存为草稿
|
|
|
+async function handleSaveDraft() {
|
|
|
+ try {
|
|
|
+ await request('/website/tourism/publishTravelNotes/saveDraft', {
|
|
|
+ method: 'post',
|
|
|
+ body: {
|
|
|
+ ...noteJson,
|
|
|
+ // id: id?.value
|
|
|
+ }
|
|
|
+ })
|
|
|
+ showToast('草稿保存成功')
|
|
|
+ } finally {
|
|
|
+ }
|
|
|
+}
|
|
|
|
|
|
// 预览
|
|
|
const previewOptions = reactive({
|
|
@@ -342,39 +509,36 @@ const publishResultModalOptions = reactive({
|
|
|
|
|
|
// 发布
|
|
|
async function handlePublish() {
|
|
|
-
|
|
|
if (!noteJson.travelNotesBanner) {
|
|
|
showNotify({
|
|
|
- message: '请设置游记头图',
|
|
|
- duration: 3000,
|
|
|
- });
|
|
|
+ message: '请设置游记头图',
|
|
|
+ duration: 3000
|
|
|
+ })
|
|
|
return
|
|
|
}
|
|
|
if (!noteJson.projectTitle) {
|
|
|
showNotify({
|
|
|
- message: '请输入游记标题',
|
|
|
- duration: 3000,
|
|
|
- });
|
|
|
+ message: '请输入游记标题',
|
|
|
+ duration: 3000
|
|
|
+ })
|
|
|
return
|
|
|
}
|
|
|
if (!noteJson.endPlace) {
|
|
|
showNotify({
|
|
|
- message: '请选择目的地',
|
|
|
- duration: 3000,
|
|
|
- });
|
|
|
+ message: '请选择目的地',
|
|
|
+ duration: 3000
|
|
|
+ })
|
|
|
return
|
|
|
}
|
|
|
if (noteJson.travelNotesContent.length === 0) {
|
|
|
showNotify({
|
|
|
- message: '游记内容不能为空',
|
|
|
- duration: 3000,
|
|
|
- });
|
|
|
+ message: '游记内容不能为空',
|
|
|
+ duration: 3000
|
|
|
+ })
|
|
|
return
|
|
|
}
|
|
|
|
|
|
- const { data: isPerfect } = await request(
|
|
|
- '/website/tourism/publishTravelNotes/isPerfect'
|
|
|
- )
|
|
|
+ const { data: isPerfect } = await request('/website/tourism/publishTravelNotes/isPerfect')
|
|
|
if (isPerfect === 0) {
|
|
|
// 需要收集个人信息
|
|
|
userInfoOptions.show = true
|