help_center.vue 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. <template>
  2. <Theme>
  3. <view class="wrap">
  4. <Navbar title="帮助中心" fixed border>
  5. <template #right>
  6. <navMenu :options="{ icon: 'icon-home', text: '主页' }" />
  7. </template>
  8. </Navbar>
  9. <view class="content">
  10. <view class="tabs">
  11. <Tab :tabList="detail" :active="tabActive" keyName="name" size="24rpx" isTran @confirm="tabClick" />
  12. </view>
  13. <view class="question_list">
  14. <up-collapse :border="false" accordion :value="collapseValue" ref="collapseRef">
  15. <view class="_list" v-for="item, index in list" :key="index">
  16. <up-collapse-item :name="item.id" :border="false">
  17. <template #title>
  18. <view class="_list_title">
  19. {{ item.title }}
  20. </view>
  21. </template>
  22. <view class="_list_cont">
  23. <rich-text :nodes="item.content"></rich-text>
  24. </view>
  25. </up-collapse-item>
  26. </view>
  27. </up-collapse>
  28. </view>
  29. </view>
  30. </view>
  31. </Theme>
  32. </template>
  33. <script setup>
  34. import Navbar from "@/components/navbar"
  35. import navMenu from '@/components/nav_menu';
  36. import { ref, computed, nextTick } from "vue";
  37. import { CONTENT_HELP } from "@/api"
  38. import Tab from "@/components/tabs"
  39. const collapseRef = ref(null);
  40. const detail = ref([]);
  41. const tabActive = ref(0);
  42. const collapseValue = ref('');
  43. const list = computed(() => {
  44. return detail.value.length && (detail.value[tabActive.value].lists || []);
  45. })
  46. const tabClick = (item, index) => {
  47. collapseValue.value = '';
  48. tabActive.value = index;
  49. nextTick(() => {
  50. collapseRef.value && collapseRef.value.init();
  51. })
  52. }
  53. const getDetail = async () => {
  54. try {
  55. const res = await CONTENT_HELP();
  56. detail.value = res.data;
  57. } catch (error) { }
  58. }
  59. getDetail();
  60. </script>
  61. <style lang="less" scoped>
  62. @import url('@/style.less');
  63. .wrap {
  64. min-height: 100vh;
  65. background-color: var(--bg);
  66. .content {
  67. padding: 0 24rpx;
  68. overflow: hidden;
  69. .question_list {
  70. margin: 24rpx 0;
  71. background-color: var(--light);
  72. border-radius: 16rpx;
  73. /deep/ .u-collapse {
  74. .u-cell__left-icon-wrap {
  75. margin-right: 0;
  76. }
  77. .u-cell--clickable {
  78. background-color: transparent;
  79. }
  80. .u-cell__body {
  81. padding: 0;
  82. height: 96rpx;
  83. color: var(--text);
  84. .size(28rpx);
  85. }
  86. .u-collapse-item__content__text {
  87. padding: 0;
  88. padding-bottom: 20rpx;
  89. }
  90. }
  91. ._list {
  92. padding: 0 40rpx;
  93. border-bottom: 1px solid var(--bg);
  94. &:last-child {
  95. border-bottom: none;
  96. }
  97. ._list_cont {
  98. padding: 16rpx;
  99. background-color: #f7f8fa;
  100. border-radius: 16rpx;
  101. color: var(--text);
  102. .size(24rpx);
  103. /deep/ img {
  104. width: 100%;
  105. }
  106. }
  107. }
  108. }
  109. }
  110. }
  111. </style>