index.vue 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. <template>
  2. <div ref="container" class="w-full box-border pb-16 px-20 bg-[#F8F8F8]">
  3. <van-sticky :offset-top="50" :container="container">
  4. <ProfileNotesTabs :tabs="tabs"></ProfileNotesTabs>
  5. </van-sticky>
  6. <div class="w-full h-[200vh]">
  7. <van-pull-refresh v-model="loading" @refresh="onRefresh">
  8. <div v-if="tab === 'published'">
  9. <ProfileNotesPublished />
  10. </div>
  11. <div v-else-if="tab === 'auditing'">
  12. <ProfileNotesAuditing />
  13. </div>
  14. <div v-else-if="tab === 'rejected'">
  15. <ProfileNotesRejected />
  16. </div>
  17. <div v-else-if="tab === 'draft'">
  18. <ProfileNotesDraft />
  19. </div>
  20. </van-pull-refresh>
  21. </div>
  22. </div>
  23. </template>
  24. <script setup>
  25. const tabs = [
  26. {
  27. lable: '已发布',
  28. name: 'published',
  29. to: ''
  30. },
  31. {
  32. lable: '审核中',
  33. name: 'auditing',
  34. to: ''
  35. },
  36. {
  37. lable: '未通过',
  38. name: 'rejected',
  39. to: ''
  40. },
  41. {
  42. lable: '草稿箱',
  43. name: 'draft',
  44. to: ''
  45. }
  46. ]
  47. const route = useRoute()
  48. const container = ref(null)
  49. const tab = useRouteQuery('tab')
  50. const { loading, setLoading } = useLoading()
  51. const onRefresh = () => {
  52. setTimeout(() => {
  53. try {
  54. showToast('刷新成功')
  55. loading.value = false
  56. } catch (err) {
  57. showToast('刷新失败')
  58. }
  59. }, 1000)
  60. }
  61. watch(
  62. tab,
  63. (val) => {
  64. if (val) return
  65. navigateTo({
  66. path: route.fullPath,
  67. query: {
  68. tab: tabs[0].name
  69. },
  70. replace: true
  71. })
  72. },
  73. { immediate: true }
  74. )
  75. </script>
  76. <style lang="scss" scoped></style>