template.uvue 4.2 KB
Newer Older
DCloud_JSON's avatar
DCloud_JSON 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
<template>
  <view class="uni-container">
    <view class="uni-header-logo">
      <image class="uni-header-image" src="/static/templateIndex.png"></image>
    </view>
    <view class="uni-hello-text">
      <text class="hello-text">以下是部分模板示例,更多模板见插件市场:</text>
      <u-link class="hello-link" href="https://ext.dcloud.net.cn" :text="'https://ext.dcloud.net.cn'"
        :inWhiteList="true"></u-link>
    </view>
    <view class="uni-panel" v-for="(item, index) in list" :key="item.id">
      <view class="uni-panel-h" :class="item.open ? 'uni-panel-h-on' : ''" @click="triggerCollapse(index, item)">
        <text class="uni-panel-text" :class="item.enable == false ? 'text-disabled' : ''">{{item.name}}</text>
        <image :src="item.pages.length > 0 ? item.open ? arrowUpIcon : arrowDownIcon : arrowRightIcon" class="uni-icon">
        </image>
      </view>
      <view class="uni-panel-c" v-if="item.open">
        <view class="uni-navigate-item" v-for="(page,key) in item.pages" :key="key" @click="goDetailPage(page)">
19
          <text class="uni-navigate-text" :class="page.enable == false ? 'text-disabled' : ''">{{page.name}}</text>
DCloud_JSON's avatar
DCloud_JSON 已提交
20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
          <image :src="arrowRightIcon" class="uni-icon"></image>
        </view>
      </view>
    </view>
  </view>
</template>

<script lang="ts">
  type Page = {
    name : string,
    enable ?: boolean,
    url : string
  }

  type ListItem = {
    id : string,
    name : string,
    open : boolean,
    pages : Page[],
    url ?: string,
    enable ?: boolean
  }
  export default {
    data() {
      return {
45 46
        list: [
          {
47 48 49 50 51 52 53
            id: "custom-navigationbar",
            url: "custom-navigationbar",
            name: "自定义导航栏",
            open: false,
            enable: false,
            pages: [] as Page[]
          },{
54 55
            id: "drop-card",
            url: "drop-card",
56 57 58
            name: "划走式卡片",
            open: false,
            pages: [] as Page[]
59 60 61 62 63 64 65 66 67 68 69 70 71
          },{
            id: "scroll-fold-nav",
            url: "scroll-fold-nav",
            name: "随滚动折叠的导航栏",
            open: false,
            pages: [] as Page[]
          },
          {
            id: "custom-pull-page",
            url: "custom-pull-page",
            name: "自定义上拉下拉效果",
            open: false,
            pages: [] as Page[]
72 73 74 75 76 77 78 79 80 81 82 83
          },
          {
            id: "swiper-vertical-video",
            url: "swiper-vertical-video",
            name: "竖滑视频",
            open: false,
            pages: [] as Page[]
          },
          {
            id: "sticky",
            url: "sticky",
            name: "吸顶",
84
            open: false,
85
            enable: false,
86 87 88
            pages: [] as Page[]
          },
          {
89 90 91
            id: "swiper-list",
            url: "swiper-list",
            name: "swiper-list",
92
            open: false,
93
            enable: false,
94
            pages: [] as Page[]
DCloud_JSON's avatar
DCloud_JSON 已提交
95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121
          }
        ] as ListItem[],
        arrowUpIcon: '/static/icons/arrow-up.png',
        arrowDownIcon: '/static/icons/arrow-down.png',
        arrowRightIcon: '/static/icons/arrow-right.png',
      }
    },
    methods: {
      triggerCollapse(index ?: number, item : ListItem) {
        if (item.pages.length == 0) {
          const page : Page = {
            name: item.name,
            enable: item.enable,
            url: item.url!
          }
          this.goDetailPage(page);
          return;
        }
        for (var i = 0; i < this.list.length; ++i) {
          if (index == i) {
            this.list[i].open = !this.list[i].open;
          } else {
            this.list[i].open = false;
          }
        }
      },
      goDetailPage(e : Page) {
122
        if (e.enable == false) {
DCloud_JSON's avatar
DCloud_JSON 已提交
123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138
          uni.showToast({
            icon: 'none',
            title: '暂不支持'
          })
          return
        }
        const url = e.url.indexOf('platform') > -1 ? e.url : `/pages/template/${e.url}/${e.url}`
        uni.navigateTo({
          url
        })
      }
    }
  }
</script>

<style>
DCloud_JSON's avatar
DCloud_JSON 已提交
139
  @import '../../common/uni-uvue.css';
DCloud_JSON's avatar
DCloud_JSON 已提交
140 141 142 143 144

  .uni-container {
    flex: 1;
  }
</style>