Просмотр исходного кода

Merge branch 'dev' of http://1.94.207.143:3000/xyy/xyy-m into dev

songzhen 3 месяцев назад
Родитель
Сommit
e6e909a377

+ 51 - 26
src/components/Profile/Notes/Auditing/Item.vue

@@ -1,33 +1,54 @@
 <template>
-  <div class="group flex space-x-10 p-10 transition-all rounded-xl bg-[#FFF]">
-    <img
-      :src="formatImgSrc(data?.tourismUrlsAfterConvert) || noteDraftCoverBg"
-      class="aspect-[4/3] h-109 shrink-0 object-cover"
-    />
+  <van-swipe-cell>
+    <div class="group flex space-x-10 p-10 transition-all rounded-xl bg-[#FFF]">
+      <img
+        :src="formatImgSrc(data?.tourismUrlsAfterConvert) || noteDraftCoverBg"
+        class="aspect-[4/3] h-109 shrink-0 object-cover"
+      />
 
-    <div class="flex w-0 flex-1 flex-col justify-between">
-      <div class="mt-18">
-        <div class="line-clamp-1 break-all text-base font-semibold text-black-3">
-          {{ data?.projectTitle || '未命名草稿' }}
-        </div>
-        <div class="mt-2 text-sm text-black-3">
-          {{ $dayjs(data?.updateTime).format('YYYY/MM/DD') }}
-        </div>
-      </div>
-      <div @click="$emit('onRevoke')" class="flex mb-10 items-center space-x-5">
-        <div class="flex cursor-pointer items-center p-5 text-primary">
-          <span class="w-15 h-15">
-            <img
-              class="w-full h-full shrink-0 object-cover"
-              src="~/assets/img/note-create/cancel.svg"
-              alt=""
-            />
-          </span>
-          <span class="text-base">撤销审核</span>
+      <div class="flex w-0 flex-1 flex-col justify-between">
+        <div class="mt-15">
+          <div class="line-clamp-1 break-all text-base font-semibold text-black-3">
+            {{ data?.projectTitle || '未命名草稿' }}
+          </div>
+          <div class="mt-2 text-sm text-black-3">
+            {{ $dayjs(data?.updateTime).format('YYYY/MM/DD') }}
+          </div>
         </div>
+        <!-- <div @click="$emit('onRevoke')" class="flex mb-10 items-center space-x-5">
+          <div class="flex cursor-pointer items-center p-5 text-primary">
+            <span class="w-15 h-15">
+              <img
+                class="w-full h-full shrink-0 object-cover"
+                src="~/assets/img/note-create/cancel.svg"
+                alt=""
+              />
+            </span>
+            <span class="text-base">撤销审核</span>
+          </div>
+        </div> -->
       </div>
     </div>
-  </div>
+
+    <template #right>
+      <!-- <div> -->
+      <!-- <span class="w-15 h-15">
+          <img
+            class="w-full h-full shrink-0 object-cover"
+            src="~/assets/img/note-create/cancel.svg"
+            alt=""
+          />
+        </span> -->
+      <van-button
+        square
+        text="撤销审核"
+        @click="$emit('onRevoke')"
+        type="warning"
+        class="delete-button"
+      />
+      <!-- </div> -->
+    </template>
+  </van-swipe-cell>
 </template>
 
 <script setup>
@@ -52,4 +73,8 @@ function handleWrite() {
 }
 </script>
 
-<style lang="scss" scoped></style>
+<style lang="scss" scoped>
+.delete-button {
+  height: 100%;
+}
+</style>

+ 1 - 1
src/components/Profile/Notes/Auditing/index.vue

@@ -2,7 +2,7 @@
   <div class="w-full min-h-400 pb-10">
     <!-- v-loading="loading" -->
     <!-- v-if="!loading && !draftList.length" -->
-    <ProfileNotesEmpty v-if="!draftList.length" />
+    <!-- <ProfileNotesEmpty v-if="!draftList.length" /> -->
     <!-- v-else-if="draftList.length" -->
     <!-- <div class="flex flex-col divide-y"> -->
     <div class="flex flex-col divide-y">

+ 65 - 0
src/components/Profile/Notes/Draft/Item.vue

@@ -0,0 +1,65 @@
+<template>
+  <van-swipe-cell>
+    <div class="group flex space-x-10 p-10 transition-all mb-10 bg-[#fff] rounded-xl">
+      <img
+        :src="formatImgSrc(data?.tourismUrlsAfterConvert) || noteDraftCoverBg"
+        class="aspect-[4/3] h-109 shrink-0 rounded-xl object-cover"
+      />
+
+      <div class="flex w-0 flex-1 flex-col justify-between">
+        <div class="pt-15">
+          <div class="line-clamp-2 break-all text-xl font-semibold text-black-3">
+            {{ data?.projectTitle || '未命名草稿' }}
+          </div>
+          <div class="mt-10 text-sm text-black-9">
+            {{ $dayjs(data?.updateTime).format('YYYY-MM-DD') }}
+          </div>
+        </div>
+        <!-- <div class="flex items-center space-x-10">
+          <div
+            @click="handleWrite"
+            class="flex cursor-pointer items-center space-x-5 rounded border border-[#f0f2f5] px-10 py-5 text-primary hover:bg-primary hover:text-white"
+          >
+            <span class="iconfont icon-edit-square" style="font-size: 14px"></span>
+            <span class="text-sm">继续写</span>
+          </div>
+          <div
+            @click="$emit('onDelete')"
+            class="iconfont icon-delete hidden cursor-pointer text-black-6 group-hover:block"
+            style="font-size: 18px"
+          ></div>
+        </div> -->
+      </div>
+    </div>
+    <template #right>
+      <van-button square text="继续写" @click="handleWrite" type="warning" class="delete-button" />
+      <van-button square text="删除" @click="handleWrite" type="danger" class="delete-button" />
+    </template>
+  </van-swipe-cell>
+</template>
+
+<script setup>
+import noteDraftCoverBg from '~/assets/img/note-create/note_draft_cover_bg.jpg'
+
+const props = defineProps({
+  data: {
+    type: Object,
+    default: () => ({})
+  }
+})
+
+function handleWrite() {
+  navigateTo({
+    path: '/note-create',
+    query: {
+      id: props.data.id
+    }
+  })
+}
+</script>
+
+<style lang="scss" scoped>
+.delete-button {
+  height: 100%;
+}
+</style>

+ 66 - 0
src/components/Profile/Notes/Draft/index.vue

@@ -0,0 +1,66 @@
+<template>
+  <div class="min-h-400 pb-10">
+    <!-- v-loading="loading" -->
+    <!-- <ProfileNotesEmpty v-if="!loading && !draftList.length" /> -->
+    <!--  v-else-if="draftList.length" -->
+    <div>
+      <div class="text-black-3 px-10">
+        <p class="text-base font-bold">{{ draftList?.length }}篇草稿</p>
+        <p class="text-sm text-[#FF2929]">
+          【您好,您还有 1000{{ draftList?.length }}篇草稿没有完成,我们期待您的大作哦~】
+        </p>
+      </div>
+      <div class="grid grid-cols-1">
+        <ProfileNotesDraftItem @on-delete="handleDelete(item)" />
+        <!-- v-for="item in draftList"
+          :key="item.id"
+          :data="item"
+          @on-delete="handleDelete(item)" -->
+      </div>
+    </div>
+  </div>
+</template>
+
+<script setup>
+const { loading, setLoading } = useLoading()
+loading.value = true
+
+const draftList = ref([])
+
+async function getNotesList() {
+  setLoading(true)
+  try {
+    const { data } = await request('/website/tourism/publishTravelNotes/getDraftList', {
+      query: {
+        pageNum: 1,
+        pageSize: 10000,
+        type: 0
+      }
+    })
+    draftList.value = data?.dataList
+  } finally {
+    setLoading(false)
+  }
+}
+
+async function handleDelete(item) {
+  ElMessageBox.confirm('确定删除吗?', '提示', {}).then(async () => {
+    try {
+      await request(`/website/tourism/publishTravelNotes/removeByDraftId`, {
+        method: 'post',
+        body: {
+          writeId: item.id
+        }
+      })
+      ElMessage.success('删除成功')
+      // getNotesList()
+    } catch (error) {}
+  })
+}
+
+onMounted(() => {
+  // getNotesList()
+})
+</script>
+
+<style lang="scss" scoped></style>

+ 1 - 1
src/components/Profile/Notes/Published/Item.vue

@@ -14,7 +14,7 @@
         <div class="min-h-70">
           <NuxtLink
             :to="`/yj/${data?.id}`"
-            class="cursor-pointer truncate break-all text-base font-bold text-black-3 transition-all hover:text-primary"
+            class="cursor-pointer truncate break-all text-base font-bold text-black-3 transition-all text-bold"
           >
             {{ data?.projectTitle }}
           </NuxtLink>

+ 74 - 0
src/components/Profile/Notes/Rejected/Item.vue

@@ -0,0 +1,74 @@
+<template>
+  <van-swipe-cell>
+    <div class="group flex space-x-10 p-10 transition-all mb-10 bg-[#fff] rounded-xl">
+      <img
+        :src="formatImgSrc(data?.tourismUrlsAfterConvert) || noteDraftCoverBg"
+        class="aspect-[4/3] h-109 shrink-0 object-cover"
+      />
+
+      <div class="flex w-0 flex-1 flex-col justify-between">
+        <div class="">
+          <div class="mt-15 line-clamp-2 break-all text-xl font-semibold text-black-3">
+            {{ data?.projectTitle || '未命名草稿' }}
+          </div>
+          <!-- <div class="mt-10 text-sm text-black-9">
+            {{ $dayjs(data?.updateTime).format('YYYY-MM-DD') }}
+          </div> -->
+          <div class="line-clamp-3 text-sm text-red-600">
+            审核未通过:{{ data?.reason || '内容可能涉嫌色情淫秽传播,请修改内容' }}
+          </div>
+        </div>
+        <!-- <div class="flex items-center space-x-10">
+          <div
+            @click="handleWrite"
+            class="flex cursor-pointer items-center space-x-5 rounded border border-[#f0f2f5] px-10 py-5 text-primary hover:bg-primary hover:text-white"
+          >
+            <span class="iconfont icon-edit-square" style="font-size: 14px"></span>
+            <span class="text-sm">编辑</span>
+          </div>
+          <div
+            @click="$emit('onDelete')"
+            class="iconfont icon-delete hidden cursor-pointer text-black-6 group-hover:block"
+            style="font-size: 18px"
+          ></div>
+        </div> -->
+      </div>
+    </div>
+    <template #right>
+      <van-button square text="编辑" @click="handleWrite" type="warning" class="delete-button" />
+      <van-button
+        square
+        text="删除"
+        @click="$emit('onDelete')"
+        type="danger"
+        class="delete-button"
+      />
+    </template>
+  </van-swipe-cell>
+</template>
+
+<script setup>
+import noteDraftCoverBg from '~/assets/img/note-create/note_draft_cover_bg.jpg'
+
+const props = defineProps({
+  data: {
+    type: Object,
+    default: () => ({})
+  }
+})
+
+function handleWrite() {
+  navigateTo({
+    path: '/note-create',
+    query: {
+      id: props?.data?.id
+    }
+  })
+}
+</script>
+
+<style lang="scss" scoped>
+.delete-button {
+  height: 100%;
+}
+</style>

+ 61 - 0
src/components/Profile/Notes/Rejected/index.vue

@@ -0,0 +1,61 @@
+<template>
+  <div class="min-h-400 pb-10">
+    <!--  v-loading="loading" -->
+    <!-- <ProfileNotesEmpty /> -->
+    <!-- v-if="!loading && !draftList.length" -->
+    <!-- v-else-if="draftList.length" -->
+    <!-- <div> -->
+    <div class="grid grid-cols-1">
+      <ProfileNotesRejectedItem />
+      <!-- v-for="item in draftList"
+        :key="item.id"
+        :data="item"
+        @on-delete="handleDelete(item)" -->
+    </div>
+    <!-- </div> -->
+  </div>
+</template>
+
+<script setup>
+const { loading, setLoading } = useLoading()
+loading.value = true
+
+const draftList = ref([])
+
+async function getNotesList() {
+  setLoading(true)
+  try {
+    const { data } = await request('/website/tourism/publishTravelNotes/getDraftList', {
+      query: {
+        pageNum: 1,
+        pageSize: 10000,
+        type: 2
+      }
+    })
+    draftList.value = data.dataList
+  } finally {
+    setLoading(false)
+  }
+}
+
+async function handleDelete(item) {
+  ElMessageBox.confirm('确定删除吗?', '提示', {}).then(async () => {
+    try {
+      await request(`/website/tourism/publishTravelNotes/removeByDraftId`, {
+        method: 'post',
+        body: {
+          writeId: item.id
+        }
+      })
+      ElMessage.success('删除成功')
+      getNotesList()
+    } catch (error) {}
+  })
+}
+
+onMounted(() => {
+  // getNotesList()
+})
+</script>
+
+<style lang="scss" scoped></style>

+ 2 - 2
src/pages/profile/index/notes.vue

@@ -13,10 +13,10 @@
           <ProfileNotesAuditing />
         </div>
         <div v-else-if="tab === 'rejected'">
-          <!-- <ProfileNotesRejected /> -->
+          <ProfileNotesRejected />
         </div>
         <div v-else-if="tab === 'draft'">
-          <!-- <ProfileNotesDraft /> -->
+          <ProfileNotesDraft />
         </div>
       </van-pull-refresh>
     </div>