标品
							
								
								
									
										661
									
								
								src/project/biaopin/AppHome/AppHome.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,661 @@
 | 
			
		||||
<template>
 | 
			
		||||
  <div class="page">
 | 
			
		||||
    <div class="header-content">
 | 
			
		||||
      <u-navbar :is-back="false" title="基层治理" title-color="#000" title-width="300" title-size="32" :title-bold="true" :background="backgroundNavbar"></u-navbar>
 | 
			
		||||
      <div class="header-bg">
 | 
			
		||||
        <!-- <div class="weather-info" v-if="weatherInfo.wea">
 | 
			
		||||
          <img :src="weatherInfo.icon" alt="" />
 | 
			
		||||
          <p>今天:{{weatherInfo.wea}}{{weatherInfo.tem2}}~{{weatherInfo.tem1}},{{weatherInfo.air_tips}}</p>
 | 
			
		||||
        </div> -->
 | 
			
		||||
        <div class="swiper-content">
 | 
			
		||||
          <u-swiper :list="swiperList" mode="none" height="364" bg-color="none" @click="handleBannerClick"/>
 | 
			
		||||
        </div>
 | 
			
		||||
        <div class="notice">
 | 
			
		||||
          <img :src="`${cdn}/notice-new.png`" alt="">
 | 
			
		||||
          <u-notice-bar mode="vertical" color="#4181FF" style="flex: 1;" :volume-icon="false" :is-circular="false"
 | 
			
		||||
            duration="5000" speed="5000" :list="noticeList" @click="clickNotice"/>
 | 
			
		||||
        </div>
 | 
			
		||||
      </div>
 | 
			
		||||
    </div>
 | 
			
		||||
    <div class="app-list" v-for="(item, index) in appList" :key="index">
 | 
			
		||||
      <div class="title-content">
 | 
			
		||||
        <h2>{{item.name}}</h2>
 | 
			
		||||
        <div @click="toService()">更多<img src="https://cdn.cunwuyun.cn/wechat/wuxi/right-icon-blue.png" alt=""></div>
 | 
			
		||||
      </div>
 | 
			
		||||
      <div class="banner-flex" v-if="item.bannerApp && item.bannerApp.length">
 | 
			
		||||
        <div class="item-banner" v-for="(banner, bannerIndex) in item.bannerApp" :key="bannerIndex" @click="openApp(banner)">
 | 
			
		||||
          <img :src="banner.pictureUrl" alt="">
 | 
			
		||||
        </div>
 | 
			
		||||
      </div>
 | 
			
		||||
      <div class="app-content" v-if="item.apps && item.apps.length">
 | 
			
		||||
        <div class="item-app" v-for="(app, appIndex) in item.apps" :key="appIndex" @click="openApp(app)">
 | 
			
		||||
          <img :src="app.pictureUrl">
 | 
			
		||||
          <p>{{app.name}}</p>
 | 
			
		||||
        </div>
 | 
			
		||||
      </div>
 | 
			
		||||
    </div>
 | 
			
		||||
    <template v-if="categorys&&categorys.length>0">
 | 
			
		||||
      <u-tabs :list="categorys.map(e=>({name:e.categoryName}))" font-size="40" bg-color="transparent"
 | 
			
		||||
              inactive-color="#999999" :active-item-style="active"
 | 
			
		||||
              :is-scroll="true" :current="index" @change="tabChange"/>
 | 
			
		||||
      <div class="list-wrap" v-if="categoryList && categoryList.length>0">
 | 
			
		||||
        <div class="list-card" v-for="(category,index) in categoryList" :key="index"
 | 
			
		||||
             @click="$linkTo('/mods/AppContent/contentDetail?id='+category.id)">
 | 
			
		||||
          <div class="header">{{ category.title }}</div>
 | 
			
		||||
          <div class="content-wrap"
 | 
			
		||||
               v-if="category.contentType==0 && category.files && category.files.length<3&&category.files.length>0">
 | 
			
		||||
            <img class="img" :src="item.url" v-for="(item,index) in category.files.slice(0,1)" :key="index.id">
 | 
			
		||||
          </div>
 | 
			
		||||
          <div class="content-wrap" v-if="category.contentType==0 && category.files && category.files.length >= 3">
 | 
			
		||||
            <img class="min-img" :src="item.url" v-for="(item,index) in  category.files.slice(0,3)" :key="index.id">
 | 
			
		||||
          </div>
 | 
			
		||||
          <div class="content-wrap" v-if="category.contentType == 1">
 | 
			
		||||
            <img class="img" :src="category.pictureUrl" alt=""/>
 | 
			
		||||
            <img class="play-icon" :src="`${cdn}/play.png`" alt=""/>
 | 
			
		||||
          </div>
 | 
			
		||||
          <div class="bottom">
 | 
			
		||||
            <div class="left">
 | 
			
		||||
              <div class="tag">{{ category.categoryName }}</div>
 | 
			
		||||
              {{ category.createTime }}
 | 
			
		||||
            </div>
 | 
			
		||||
            <div class="right">
 | 
			
		||||
              <em>{{ category.viewCount }}</em>
 | 
			
		||||
              人看过
 | 
			
		||||
            </div>
 | 
			
		||||
          </div>
 | 
			
		||||
        </div>
 | 
			
		||||
      </div>
 | 
			
		||||
      <AiEmpty v-else/>
 | 
			
		||||
    </template>
 | 
			
		||||
    <AiLogin ref="login"/>
 | 
			
		||||
  </div>
 | 
			
		||||
</template>
 | 
			
		||||
<script>
 | 
			
		||||
import {mapActions, mapState} from 'vuex'
 | 
			
		||||
 | 
			
		||||
export default {
 | 
			
		||||
  customNavigation: true,
 | 
			
		||||
  name: 'AppHome',
 | 
			
		||||
  appName: "首页",
 | 
			
		||||
  data() {
 | 
			
		||||
    return {
 | 
			
		||||
      cdn: "https://cdn.cunwuyun.cn/wxmp",
 | 
			
		||||
      swiperList: ['https://cdn.cunwuyun.cn/wechat/biaopin/home/home-swiper1.png'],
 | 
			
		||||
      index: 0,
 | 
			
		||||
      grids: [],
 | 
			
		||||
      activeList: [],
 | 
			
		||||
      notices: [],
 | 
			
		||||
      categorys: [],
 | 
			
		||||
      categoryList: [],
 | 
			
		||||
      search: {areaId: ''},
 | 
			
		||||
      backgroundNavbar: {
 | 
			
		||||
        background: 'url(https://cdn.cunwuyun.cn/wechat/wuxi/wuxi-nav-bg.png) no-repeat',
 | 
			
		||||
        backgroundSize: 'cover',
 | 
			
		||||
      },
 | 
			
		||||
      appList: [], //应用列表
 | 
			
		||||
      weatherInfo: {}
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  computed: {
 | 
			
		||||
    ...mapState(['user', 'token']),
 | 
			
		||||
    active() {
 | 
			
		||||
      return {
 | 
			
		||||
        fontSize: '22px',
 | 
			
		||||
        color: '#333333',
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    noticeList() {
 | 
			
		||||
      let {notices} = this
 | 
			
		||||
      return notices?.length > 0 ? notices?.map(e => e.title) || ['暂无公告'] : ['暂无公告']
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  onReady() {
 | 
			
		||||
    // uni.setNavigationBarTitle({title: "基层治理"})
 | 
			
		||||
  },
 | 
			
		||||
  onLoad() {
 | 
			
		||||
    this.autoLogin().then(() => {
 | 
			
		||||
      this.getSwiperList();
 | 
			
		||||
      this.getName();
 | 
			
		||||
      // this.getGrids();
 | 
			
		||||
      this.getActive();
 | 
			
		||||
      this.getNotice();
 | 
			
		||||
      this.getAppList()
 | 
			
		||||
      this.getWeather()
 | 
			
		||||
    })
 | 
			
		||||
  },
 | 
			
		||||
  methods: {
 | 
			
		||||
    ...mapActions(['autoLogin', 'authCheck']),
 | 
			
		||||
    getName() {
 | 
			
		||||
      this.$instance.post("/app/appcontentmoduleinfo/listByName", null, {
 | 
			
		||||
        params: {names: "新闻发布"},
 | 
			
		||||
        withoutToken: true
 | 
			
		||||
      }).then(res => {
 | 
			
		||||
        if (res?.data[0]?.categoryList?.length) {
 | 
			
		||||
          this.categorys = res.data[0]["categoryList"];
 | 
			
		||||
          this.search.moduleId = res.data[0]['id']
 | 
			
		||||
          this.search.categoryId = res.data[0]['categoryList'][0]['id']
 | 
			
		||||
          this.getCategoryList()
 | 
			
		||||
        }
 | 
			
		||||
      })
 | 
			
		||||
    },
 | 
			
		||||
    tabChange(idx) {
 | 
			
		||||
      this.index = idx
 | 
			
		||||
      this.search.categoryId = this.categorys[idx]['id']
 | 
			
		||||
      this.getCategoryList()
 | 
			
		||||
    },
 | 
			
		||||
    getCategoryList() {
 | 
			
		||||
      this.$instance.post("/app/appcontentinfo/list", null, {
 | 
			
		||||
        params: {...this.search, size: 100}
 | 
			
		||||
      }).then(res => {
 | 
			
		||||
        if (res?.data) {
 | 
			
		||||
          this.categoryList = res.data.records;
 | 
			
		||||
        }
 | 
			
		||||
      })
 | 
			
		||||
    },
 | 
			
		||||
    clickNotice(val) {
 | 
			
		||||
      const id = this.notices[val]["id"];
 | 
			
		||||
      if (id) {
 | 
			
		||||
        uni.navigateTo({
 | 
			
		||||
          url: "/mods/AppNotice/AppNotice?id=" + id
 | 
			
		||||
        })
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    handleActive({type, appId, url}) {
 | 
			
		||||
      if (type == 0) {
 | 
			
		||||
        uni.navigateToMiniProgram({appId})
 | 
			
		||||
      } else if (type == 1) {
 | 
			
		||||
        this.$linkTo("/subPages/h5/webview?link=" + url);
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    getNotice() {
 | 
			
		||||
      this.$instance.post("/app/appmininotice/list", null, {
 | 
			
		||||
        params: {size: 999},
 | 
			
		||||
        withoutToken: true
 | 
			
		||||
      }).then(res => {
 | 
			
		||||
        if (res?.data) {
 | 
			
		||||
          this.notices = res.data.records;
 | 
			
		||||
        }
 | 
			
		||||
      })
 | 
			
		||||
    },
 | 
			
		||||
    getActive() {
 | 
			
		||||
      this.$instance.post("/app/appminitopicconfig/list", null, {
 | 
			
		||||
        params: {size: 999},
 | 
			
		||||
        withoutToken: true
 | 
			
		||||
      }).then(res => {
 | 
			
		||||
        if (res?.data) {
 | 
			
		||||
          this.activeList = res.data.records;
 | 
			
		||||
        }
 | 
			
		||||
      })
 | 
			
		||||
    },
 | 
			
		||||
    /**
 | 
			
		||||
     * 获取顶部九宫格
 | 
			
		||||
     */
 | 
			
		||||
    getGrids() {
 | 
			
		||||
      this.$instance.post("/app/appminihomeconfig/list", null, {
 | 
			
		||||
        params: {picked: 1},
 | 
			
		||||
        withoutToken: true
 | 
			
		||||
      }).then(res => {
 | 
			
		||||
        if (res?.data) {
 | 
			
		||||
          this.grids = res.data.records;
 | 
			
		||||
        }
 | 
			
		||||
      })
 | 
			
		||||
    },
 | 
			
		||||
    getSwiperList() {
 | 
			
		||||
      this.$instance.post('/app/appbanner/listForWx', null, {
 | 
			
		||||
        withoutToken: true
 | 
			
		||||
      }).then((res) => {
 | 
			
		||||
        if (res?.data) {
 | 
			
		||||
          this.swiperList = res.data?.map((e) => ({...e, image: e.imgUrl})) || []
 | 
			
		||||
        }
 | 
			
		||||
      })
 | 
			
		||||
    },
 | 
			
		||||
    handleClick({type, appId, modulePath, url, checkType, corpId}) {
 | 
			
		||||
      //先判读是不是系统应用
 | 
			
		||||
      if (type != "0") {
 | 
			
		||||
        if (type == "1") {
 | 
			
		||||
          uni.navigateToMiniProgram({appId});
 | 
			
		||||
        } else if (type == "2") {
 | 
			
		||||
          uni.navigateTo({url: "/subPages/h5/webview?link=" + url});
 | 
			
		||||
        } else if (type == "3") {
 | 
			
		||||
          this.$linkTo(url);
 | 
			
		||||
        } else if (type == "4") {
 | 
			
		||||
          uni.openCustomerServiceChat({
 | 
			
		||||
            extInfo: {url: url},
 | 
			
		||||
            corpId: corpId,
 | 
			
		||||
            fail: () => {
 | 
			
		||||
              this.$u.toast('请使用普通微信打开小程序进行咨询');
 | 
			
		||||
            }
 | 
			
		||||
          });
 | 
			
		||||
        }
 | 
			
		||||
      } else if (type && type == "0") {
 | 
			
		||||
        uni.showLoading({title: '正在进入应用...'})
 | 
			
		||||
        this.authCheck({checkType, modulePath}).finally(() => uni.hideLoading())
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    handleBannerClick(index) {
 | 
			
		||||
      if (!this.swiperList[index].linkUrl) return
 | 
			
		||||
 | 
			
		||||
      if (this.swiperList[index].type == '0') {  //0 h5链接; 1 小程序链接; 2外部小程序
 | 
			
		||||
        this.$linkTo(`/subPages/h5/webview?link=${this.swiperList?.[index]?.linkUrl}&title=${this.swiperList?.[index]?.title}`)
 | 
			
		||||
      } else if (this.swiperList[index].type == '1') {
 | 
			
		||||
        this.$linkTo(`${this.swiperList?.[index]?.linkUrl}`)
 | 
			
		||||
      } else {
 | 
			
		||||
        wx.navigateToMiniProgram({
 | 
			
		||||
          appId: this.swiperList[index].linkUrl
 | 
			
		||||
        })
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    getAppList() {
 | 
			
		||||
      this.$instance.get("/wuxi_home.json", null, { withoutToken: true }).then(res => {
 | 
			
		||||
        if (res.length) {
 | 
			
		||||
          this.appList = res
 | 
			
		||||
        }
 | 
			
		||||
      })
 | 
			
		||||
    },
 | 
			
		||||
    toService() {
 | 
			
		||||
      uni.switchTab({
 | 
			
		||||
        url: '/pages/AppModules/AppModules'
 | 
			
		||||
      })
 | 
			
		||||
    },
 | 
			
		||||
    openApp(row) {
 | 
			
		||||
      if(row.type == 1) { //type  0:内置应用, 1:外链, 2:tabbar页面
 | 
			
		||||
        uni.navigateToMiniProgram({appId: row.appId});
 | 
			
		||||
      }else if(row.type == 2) {
 | 
			
		||||
        uni.switchTab({url: row.modulePath})
 | 
			
		||||
      }else {
 | 
			
		||||
        uni.navigateTo({url: row.modulePath})
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    getWeather() {
 | 
			
		||||
      this.$instance.post("/app/weather/queryWeather", {cityId: 101041800}, { withoutToken: true }).then(res => {
 | 
			
		||||
        if (res.data) {
 | 
			
		||||
          this.weatherInfo = res.data
 | 
			
		||||
          this.weatherInfo.icon = 'https://cdn.cunwuyun.cn/wuxi/home/weather-'+this.weatherInfo.wea_img+'.png'
 | 
			
		||||
        }
 | 
			
		||||
      })
 | 
			
		||||
    },
 | 
			
		||||
  },
 | 
			
		||||
 | 
			
		||||
  onShareAppMessage() {
 | 
			
		||||
    return {
 | 
			
		||||
      title: '欢迎使用基层治理~',
 | 
			
		||||
      path: `/pages/AppHome/AppHome`
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
}
 | 
			
		||||
</script>
 | 
			
		||||
 | 
			
		||||
<style scoped lang="scss">
 | 
			
		||||
@import "~dvcp-wui/common";
 | 
			
		||||
 | 
			
		||||
.page {
 | 
			
		||||
  width: 100%;
 | 
			
		||||
  min-height: 100%;
 | 
			
		||||
  background-color: #fff;
 | 
			
		||||
  position: relative;
 | 
			
		||||
 | 
			
		||||
  .header-content {
 | 
			
		||||
    .header-bg {
 | 
			
		||||
      background: url('https://cdn.cunwuyun.cn/wechat/wuxi/wuxi-header-bg.png') center;
 | 
			
		||||
      background-size: 100% 100%;
 | 
			
		||||
    }
 | 
			
		||||
    .weather-info {
 | 
			
		||||
      font-family: PingFangSC-Regular;
 | 
			
		||||
      font-weight: 400;
 | 
			
		||||
      font-size: 28px;
 | 
			
		||||
      color: #222;
 | 
			
		||||
      padding: 12px 34px;
 | 
			
		||||
      display: flex;
 | 
			
		||||
      img {
 | 
			
		||||
        width: 56px;
 | 
			
		||||
        height: 52px;
 | 
			
		||||
        margin-right: 12px;
 | 
			
		||||
        vertical-align: middle;
 | 
			
		||||
      }
 | 
			
		||||
      p {
 | 
			
		||||
        width: calc(100% - 68px);
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
    .swiper-content {
 | 
			
		||||
      width: 686px;
 | 
			
		||||
      height: 364px;
 | 
			
		||||
      margin: 0 auto 24px;
 | 
			
		||||
    }
 | 
			
		||||
    ::v-deep .notice {
 | 
			
		||||
      width: 686px;
 | 
			
		||||
      height: 88px;
 | 
			
		||||
      box-sizing: border-box;
 | 
			
		||||
      padding: 0 24px;
 | 
			
		||||
      margin: 0 auto;
 | 
			
		||||
      background: #FFFFFF;
 | 
			
		||||
      box-shadow: 0 0 8px 0 rgba(0, 0, 0, 0.02);
 | 
			
		||||
      border-radius: 16px;
 | 
			
		||||
      display: flex;
 | 
			
		||||
      align-items: center;
 | 
			
		||||
      justify-content: center;
 | 
			
		||||
 | 
			
		||||
      & > img {
 | 
			
		||||
        width: 128px;
 | 
			
		||||
        height: 52px;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      .u-news-item {
 | 
			
		||||
        text-overflow: ellipsis;
 | 
			
		||||
        overflow: hidden;
 | 
			
		||||
        white-space: nowrap;
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  // .app-list {
 | 
			
		||||
  //   margin-bottom: 24px;
 | 
			
		||||
  // }
 | 
			
		||||
 | 
			
		||||
  .title-content {
 | 
			
		||||
    display: flex;
 | 
			
		||||
    justify-content: space-between;
 | 
			
		||||
    padding: 32px;
 | 
			
		||||
    line-height: 40px;
 | 
			
		||||
    h2 {
 | 
			
		||||
      font-family: PingFangSC-Medium;
 | 
			
		||||
      font-weight: 500;
 | 
			
		||||
      font-size: 34px;
 | 
			
		||||
      color: #222;
 | 
			
		||||
    }
 | 
			
		||||
    div {
 | 
			
		||||
      font-family: PingFangSC-Regular;
 | 
			
		||||
      font-size: 28px;
 | 
			
		||||
      color: #687DA6;
 | 
			
		||||
      img {
 | 
			
		||||
        width: 32px;
 | 
			
		||||
        height: 32px;
 | 
			
		||||
        margin-left: 6px;
 | 
			
		||||
        vertical-align: middle;
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  .banner-flex {
 | 
			
		||||
    display: flex;
 | 
			
		||||
    justify-content: space-between;
 | 
			
		||||
    padding: 0 32px;
 | 
			
		||||
    .item-banner {
 | 
			
		||||
      width: calc(50% - 16px);
 | 
			
		||||
      height: 160px;
 | 
			
		||||
      position: relative;
 | 
			
		||||
      img {
 | 
			
		||||
        width: 100%;
 | 
			
		||||
        height: 100%;
 | 
			
		||||
      }
 | 
			
		||||
      .banner-text {
 | 
			
		||||
        position: absolute;
 | 
			
		||||
        top: 26px;
 | 
			
		||||
        left: 28px;
 | 
			
		||||
      }
 | 
			
		||||
      h2 {
 | 
			
		||||
        font-family: PingFangSC-Medium;
 | 
			
		||||
        font-weight: 500;
 | 
			
		||||
        font-size: 30px;
 | 
			
		||||
        line-height: 48px;
 | 
			
		||||
      }
 | 
			
		||||
      p {
 | 
			
		||||
        font-family: PingFangSC-Regular;
 | 
			
		||||
        font-size: 22px;
 | 
			
		||||
        line-height: 32px;
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
    .color-3872BC {
 | 
			
		||||
      color: #3872BC;
 | 
			
		||||
    }
 | 
			
		||||
    .color-CE5A5A {
 | 
			
		||||
      color: #CE5A5A;
 | 
			
		||||
    }
 | 
			
		||||
    .color-409681 {
 | 
			
		||||
      color: #409681;
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  .app-content {
 | 
			
		||||
    padding: 48px 16px 8px;
 | 
			
		||||
    // display: flex;
 | 
			
		||||
    .item-app {
 | 
			
		||||
      display: inline-block;
 | 
			
		||||
      width: 25%;
 | 
			
		||||
      text-align: center;
 | 
			
		||||
      margin-bottom: 20px;
 | 
			
		||||
      img {
 | 
			
		||||
        width: 96px;
 | 
			
		||||
        height: 96px;
 | 
			
		||||
      }
 | 
			
		||||
      p {
 | 
			
		||||
        font-family: PingFangSC-Regular;
 | 
			
		||||
        font-size: 26px;
 | 
			
		||||
        color: #222;
 | 
			
		||||
        text-align: center;
 | 
			
		||||
        line-height: 36px;
 | 
			
		||||
        margin-top: 16px;
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
    .item-app:nth-of-type(4n) {
 | 
			
		||||
      margin-right: 0;
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  .banner-content {
 | 
			
		||||
    display: flex;
 | 
			
		||||
    padding: 0 32px;
 | 
			
		||||
    .banner-left {
 | 
			
		||||
      width: 322px;
 | 
			
		||||
      height: 462px;
 | 
			
		||||
      margin-right: 30px;
 | 
			
		||||
      position: relative;
 | 
			
		||||
      h2 {
 | 
			
		||||
        font-family: PingFangSC-SNaNpxibold;
 | 
			
		||||
        font-weight: 600;
 | 
			
		||||
        font-size: 36px;
 | 
			
		||||
        line-height: 48px;
 | 
			
		||||
        margin-bottom: 4px;
 | 
			
		||||
      }
 | 
			
		||||
      p {
 | 
			
		||||
        font-family: PingFangSC-Regular;
 | 
			
		||||
        font-size: 22px;
 | 
			
		||||
        line-height: 40px;
 | 
			
		||||
        img {
 | 
			
		||||
          width: 20px;
 | 
			
		||||
          height: 20px;
 | 
			
		||||
          margin-right: 8px;
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
    .color-4C3FCD {
 | 
			
		||||
      color: #4C3FCD;
 | 
			
		||||
    }
 | 
			
		||||
    .banner-right {
 | 
			
		||||
      .item {
 | 
			
		||||
        width: 334px;
 | 
			
		||||
        height: 216px;
 | 
			
		||||
        position: relative;
 | 
			
		||||
        h2 {
 | 
			
		||||
          font-family: PingFangSC-SNaNpxibold;
 | 
			
		||||
          font-weight: 500;
 | 
			
		||||
          font-size: 30px;
 | 
			
		||||
          line-height: 48px;
 | 
			
		||||
          margin-bottom: 4px;
 | 
			
		||||
        }
 | 
			
		||||
        p {
 | 
			
		||||
          font-family: PingFangSC-Regular;
 | 
			
		||||
          font-size: 22px;
 | 
			
		||||
          line-height: 32px;
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
      .item:nth-of-type(1) {
 | 
			
		||||
        margin-bottom: 30px;
 | 
			
		||||
      }
 | 
			
		||||
      .color-DF863E {
 | 
			
		||||
        color: #DF863E;
 | 
			
		||||
      }
 | 
			
		||||
      .color-D9606E {
 | 
			
		||||
        color: #D9606E;
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
    .banner-img {
 | 
			
		||||
      width: 100%;
 | 
			
		||||
      height: 100%;
 | 
			
		||||
    }
 | 
			
		||||
    .banner-text {
 | 
			
		||||
      position: absolute;
 | 
			
		||||
      top: 26px;
 | 
			
		||||
      left: 28px;
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  .grid-content {
 | 
			
		||||
    box-sizing: border-box;
 | 
			
		||||
 | 
			
		||||
    .grid-item {
 | 
			
		||||
      img {
 | 
			
		||||
        width: 108px;
 | 
			
		||||
        height: 108px;
 | 
			
		||||
        object-fit: fill;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      .grid-text {
 | 
			
		||||
        font-size: 26px;
 | 
			
		||||
        font-weight: 400;
 | 
			
		||||
        color: #333333;
 | 
			
		||||
        line-height: 36px;
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
  .list-wrap {
 | 
			
		||||
    box-sizing: border-box;
 | 
			
		||||
    padding: 32px;
 | 
			
		||||
 | 
			
		||||
    .list-card {
 | 
			
		||||
      width: 100%;
 | 
			
		||||
      min-height: 100px;
 | 
			
		||||
      background: #FFFFFF;
 | 
			
		||||
      box-shadow: 0 0 8px 0 rgba(0, 0, 0, 0.02);
 | 
			
		||||
      border-radius: 16px;
 | 
			
		||||
      box-sizing: border-box;
 | 
			
		||||
      padding: 32px;
 | 
			
		||||
      margin-bottom: 24px;
 | 
			
		||||
 | 
			
		||||
      .header {
 | 
			
		||||
        font-size: 36px;
 | 
			
		||||
        font-weight: 600;
 | 
			
		||||
        color: #333333;
 | 
			
		||||
        line-height: 50px;
 | 
			
		||||
        display: -webkit-box;
 | 
			
		||||
        -webkit-box-orient: vertical;
 | 
			
		||||
        -webkit-line-clamp: 2;
 | 
			
		||||
        overflow: hidden;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      .content-wrap {
 | 
			
		||||
        display: flex;
 | 
			
		||||
        gap: 4px;
 | 
			
		||||
        flex-wrap: wrap;
 | 
			
		||||
        margin-top: 24px;
 | 
			
		||||
        position: relative;
 | 
			
		||||
 | 
			
		||||
        .img {
 | 
			
		||||
          width: 100%;
 | 
			
		||||
          height: 350px;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        .min-img {
 | 
			
		||||
          width: 204px;
 | 
			
		||||
          height: 204px;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        .play-icon {
 | 
			
		||||
          width: 80px;
 | 
			
		||||
          height: 80px;
 | 
			
		||||
          border-radius: 50%;
 | 
			
		||||
          position: absolute;
 | 
			
		||||
          left: 50%;
 | 
			
		||||
          top: 50%;
 | 
			
		||||
          transform: translate(-50%, -50%);
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      .bottom {
 | 
			
		||||
        display: flex;
 | 
			
		||||
        align-items: center;
 | 
			
		||||
        justify-content: space-between;
 | 
			
		||||
        margin-top: 24px;
 | 
			
		||||
 | 
			
		||||
        .left {
 | 
			
		||||
          display: flex;
 | 
			
		||||
          align-items: center;
 | 
			
		||||
          font-size: 28px;
 | 
			
		||||
          font-weight: 400;
 | 
			
		||||
          color: #999999;
 | 
			
		||||
 | 
			
		||||
          .tag {
 | 
			
		||||
            width: 144px;
 | 
			
		||||
            height: 48px;
 | 
			
		||||
            background: #EEEEEE;
 | 
			
		||||
            border-radius: 24px;
 | 
			
		||||
            display: flex;
 | 
			
		||||
            align-items: center;
 | 
			
		||||
            justify-content: center;
 | 
			
		||||
            font-size: 28px;
 | 
			
		||||
            font-weight: 400;
 | 
			
		||||
            color: #999999;
 | 
			
		||||
            margin-right: 16px;
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        .right {
 | 
			
		||||
          font-size: 28px;
 | 
			
		||||
          font-weight: 400;
 | 
			
		||||
          color: #999999;
 | 
			
		||||
          display: flex;
 | 
			
		||||
          align-items: center;
 | 
			
		||||
 | 
			
		||||
          em {
 | 
			
		||||
            font-style: normal;
 | 
			
		||||
            color: #4181FF;
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  header {
 | 
			
		||||
    font-size: 44px;
 | 
			
		||||
    font-weight: 600;
 | 
			
		||||
    color: #333333;
 | 
			
		||||
    padding: 0 32px;
 | 
			
		||||
    margin-bottom: 32px;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  .scroll-wrap {
 | 
			
		||||
    box-sizing: border-box;
 | 
			
		||||
    padding: 0 32px;
 | 
			
		||||
    width: 100%;
 | 
			
		||||
    white-space: nowrap;
 | 
			
		||||
    margin-bottom: 24px;
 | 
			
		||||
 | 
			
		||||
    .scroll-card {
 | 
			
		||||
      display: inline-block;
 | 
			
		||||
      width: 440px;
 | 
			
		||||
      height: 240px;
 | 
			
		||||
      box-shadow: 0 0 8px 0 rgba(0, 0, 0, 0.02);
 | 
			
		||||
      border-radius: 16px;
 | 
			
		||||
      margin-right: 32px;
 | 
			
		||||
 | 
			
		||||
      &:last-child {
 | 
			
		||||
        margin-right: 0;
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
</style>
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								src/project/biaopin/AppHome/home.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 1.6 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								src/project/biaopin/AppHome/home_selected.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 1.5 KiB  | 
							
								
								
									
										122
									
								
								src/project/biaopin/AppHome/openPage.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,122 @@
 | 
			
		||||
<template>
 | 
			
		||||
  <div class="openPage">
 | 
			
		||||
    <!-- <img class="images" :src="picUrl" alt=""> -->
 | 
			
		||||
    <div class="uni-swiper-dot-box">
 | 
			
		||||
			<swiper class="swiper-box" @change="change" :current="current">
 | 
			
		||||
				<swiper-item v-for="(item, index) in imgList" :key="index">
 | 
			
		||||
					<img :src="item" alt="" class="banner-img">
 | 
			
		||||
				</swiper-item>
 | 
			
		||||
			</swiper>
 | 
			
		||||
      <div class="dot-list">
 | 
			
		||||
        <span v-for="(item, index) in dotList" :key="index" :class="current == index ? 'active' : ''"></span>
 | 
			
		||||
      </div>
 | 
			
		||||
		</div>
 | 
			
		||||
  </div>
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
<script>
 | 
			
		||||
export default {
 | 
			
		||||
  name: "openPage",
 | 
			
		||||
  customNavigation: true,
 | 
			
		||||
  data() {
 | 
			
		||||
    return {
 | 
			
		||||
      picUrl: '',
 | 
			
		||||
      status: '',
 | 
			
		||||
      imgList: [
 | 
			
		||||
        'https://cdn.cunwuyun.cn/wechat/wuxi/wuxi-page1.png',
 | 
			
		||||
        'https://cdn.cunwuyun.cn/wechat/wuxi/wuxi-page2.png',
 | 
			
		||||
        'https://cdn.cunwuyun.cn/wechat/wuxi/wuxi-page3.png',
 | 
			
		||||
      ],
 | 
			
		||||
			current: 0,
 | 
			
		||||
      dotList: [0, 1, 2]
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  methods: {
 | 
			
		||||
    change(e) {
 | 
			
		||||
			this.current = e.detail.current;
 | 
			
		||||
      if(this.current == 2) {
 | 
			
		||||
        setTimeout(() => {
 | 
			
		||||
          uni.switchTab({
 | 
			
		||||
            url: '/pages/AppHome/AppHome'
 | 
			
		||||
          })
 | 
			
		||||
        }, 2000)
 | 
			
		||||
      }
 | 
			
		||||
		},
 | 
			
		||||
    getStatus() {
 | 
			
		||||
      this.$instance.post('/app/appwechatguidepage/enableStatus',null, { withoutToken: true }).then(res=> {
 | 
			
		||||
        if(res?.data) {
 | 
			
		||||
          this.status = res.data
 | 
			
		||||
          if(this.status==0) {
 | 
			
		||||
            uni.switchTab({
 | 
			
		||||
              url: '/pages/AppHome/AppHome'
 | 
			
		||||
            })
 | 
			
		||||
          } else {
 | 
			
		||||
            // this.getList()
 | 
			
		||||
            // setTimeout(() => {
 | 
			
		||||
            //   uni.switchTab({
 | 
			
		||||
            //     url: '/pages/AppHome/AppHome'
 | 
			
		||||
            //   })
 | 
			
		||||
            // }, 3000)
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
      })
 | 
			
		||||
    },
 | 
			
		||||
    getList() {
 | 
			
		||||
      this.$instance.post('/app/appwechatguidepage/listForXCX',null, {
 | 
			
		||||
        withoutToken: true,
 | 
			
		||||
        params: {
 | 
			
		||||
          current: 1,
 | 
			
		||||
          size: 100,
 | 
			
		||||
        }
 | 
			
		||||
      }).then(res=> {
 | 
			
		||||
        if(res?.data) {
 | 
			
		||||
          let nums = res.data.records
 | 
			
		||||
          let index = Math.floor(Math.random() * nums.length)
 | 
			
		||||
          this.picUrl = nums[index].picUrl
 | 
			
		||||
        }
 | 
			
		||||
      })
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  onShow() {
 | 
			
		||||
    this.getStatus()
 | 
			
		||||
  },
 | 
			
		||||
}
 | 
			
		||||
</script>
 | 
			
		||||
 | 
			
		||||
<style scoped lang="scss">
 | 
			
		||||
.openPage {
 | 
			
		||||
  width: 100%;
 | 
			
		||||
  height: 100vh;
 | 
			
		||||
  box-sizing: border-box;
 | 
			
		||||
  ::v-deep .uni-swiper-dot-box {
 | 
			
		||||
    width: 100%!important;
 | 
			
		||||
    height: 100%!important;
 | 
			
		||||
  }
 | 
			
		||||
  ::v-deep .swiper-box {
 | 
			
		||||
    height: 100%!important;
 | 
			
		||||
  }
 | 
			
		||||
  .banner-img {
 | 
			
		||||
    width: 100%;
 | 
			
		||||
    height: 100%;
 | 
			
		||||
  }
 | 
			
		||||
  .dot-list {
 | 
			
		||||
    position: fixed;
 | 
			
		||||
    bottom: 118px;
 | 
			
		||||
    width: 100%;
 | 
			
		||||
    text-align: center;
 | 
			
		||||
    span {
 | 
			
		||||
      display: inline-block;
 | 
			
		||||
      width: 12px;
 | 
			
		||||
      height: 12px;
 | 
			
		||||
      opacity: 0.3;
 | 
			
		||||
      background: #026AF2;
 | 
			
		||||
      border-radius: 6px;
 | 
			
		||||
      margin-right: 8px;
 | 
			
		||||
    }
 | 
			
		||||
    .active {
 | 
			
		||||
      width: 22px;
 | 
			
		||||
      opacity: 1;
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
</style>
 | 
			
		||||
							
								
								
									
										0
									
								
								src/project/biaopin/AppIntegral/AppIntegral.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										
											BIN
										
									
								
								src/project/biaopin/AppIntegral/integral.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 2.1 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								src/project/biaopin/AppIntegral/integral_select.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 2.2 KiB  | 
@@ -44,12 +44,12 @@
 | 
			
		||||
            <span>{{ item.label }}</span>
 | 
			
		||||
          </button>
 | 
			
		||||
        </div>
 | 
			
		||||
        <div class="item" hover-class="bg-hover" @click="scan">
 | 
			
		||||
        <!-- <div class="item" hover-class="bg-hover" @click="scan">
 | 
			
		||||
          <div class="block">
 | 
			
		||||
            <img class="icon" src="https://cdn.cunwuyun.cn/wxmp/mine/saoyisao.png" alt="">
 | 
			
		||||
          </div>
 | 
			
		||||
          <span class="desc">扫一扫</span>
 | 
			
		||||
        </div>
 | 
			
		||||
        </div> -->
 | 
			
		||||
      </div>
 | 
			
		||||
    </div>
 | 
			
		||||
    <div class="logout" v-if="token">
 | 
			
		||||
@@ -85,23 +85,35 @@ export default {
 | 
			
		||||
          //   type: 'token'
 | 
			
		||||
          // },
 | 
			
		||||
          {
 | 
			
		||||
            icon: "https://cdn.cunwuyun.cn/fengdu/mdpi_icon-fengshouma.png",
 | 
			
		||||
            label: "我的丰收码",
 | 
			
		||||
            path: "./myHarvestQR",
 | 
			
		||||
            icon: "https://cdn.cunwuyun.cn/wechat/biaopin/mine/mine-icon-wdjt.png",
 | 
			
		||||
            label: "我的家庭",
 | 
			
		||||
            path: "./myFamily",
 | 
			
		||||
            type: 'token'
 | 
			
		||||
          },
 | 
			
		||||
          {
 | 
			
		||||
            icon: "https://cdn.cunwuyun.cn/wxmp/mine/wodejifen.png",
 | 
			
		||||
            icon: "https://cdn.cunwuyun.cn/wechat/biaopin/mine/mine-icon-wdjf.png",
 | 
			
		||||
            label: "我的积分",
 | 
			
		||||
            path: "./myIntegral",
 | 
			
		||||
            type: 'token'
 | 
			
		||||
          },
 | 
			
		||||
          {
 | 
			
		||||
            icon: "https://cdn.cunwuyun.cn/wxmp/mine/wodejiating.png",
 | 
			
		||||
            label: "我的家庭",
 | 
			
		||||
            path: "./myFamily",
 | 
			
		||||
            icon: "https://cdn.cunwuyun.cn/wechat/biaopin/mine/mine-icon-wdewm.png",
 | 
			
		||||
            label: "我的二维码",
 | 
			
		||||
            path: "./myHarvestQR",
 | 
			
		||||
            type: 'token'
 | 
			
		||||
          },
 | 
			
		||||
          {
 | 
			
		||||
            icon: "https://cdn.cunwuyun.cn/wechat/biaopin/mine/mine-icon-sys.png",
 | 
			
		||||
            label: "扫一扫",
 | 
			
		||||
            path: "./myHarvestQR",
 | 
			
		||||
            type: 'scan'
 | 
			
		||||
          },
 | 
			
		||||
          {
 | 
			
		||||
            icon: "https://cdn.cunwuyun.cn/wechat/biaopin/mine/mine-icon-fxxcx.png",
 | 
			
		||||
            label: "分享小程序",
 | 
			
		||||
            path: "./myHarvestQR",
 | 
			
		||||
            type: 'share'
 | 
			
		||||
          },
 | 
			
		||||
        ],
 | 
			
		||||
        // [
 | 
			
		||||
        //   {
 | 
			
		||||
@@ -156,6 +168,17 @@ export default {
 | 
			
		||||
              this.$linkTo(url)
 | 
			
		||||
            }
 | 
			
		||||
          }
 | 
			
		||||
          if (type == 'scan') {
 | 
			
		||||
            this.scan()
 | 
			
		||||
          }
 | 
			
		||||
          if (type == 'share') {
 | 
			
		||||
            uni.showShareMenu({
 | 
			
		||||
              // withShareTicket: true,
 | 
			
		||||
              menus: ['shareAppMessage', 'shareTimeline'],//开启转发好友和转发朋友圈按钮
 | 
			
		||||
              title: '欢迎使用数字乡村治理服务一体化平台~',
 | 
			
		||||
              path: `/pages/AppModules/AppModules`
 | 
			
		||||
            })
 | 
			
		||||
          }
 | 
			
		||||
          if (type == 'null') {
 | 
			
		||||
            this.$u.toast('内容建设中...')
 | 
			
		||||
          }
 | 
			
		||||
@@ -231,7 +254,7 @@ export default {
 | 
			
		||||
    .header-info {
 | 
			
		||||
      width: 100%;
 | 
			
		||||
      height: 100%;
 | 
			
		||||
      background: url('https://cdn.cunwuyun.cn/fengdu/mdpi_img-bg2.png') no-repeat;
 | 
			
		||||
      background: url('https://cdn.cunwuyun.cn/wechat/biaopin/mine/mine-top-bg.png') no-repeat;
 | 
			
		||||
      background: 100% auto;
 | 
			
		||||
      box-sizing: border-box;
 | 
			
		||||
      padding: 240px 0 0 48px;
 | 
			
		||||
 
 | 
			
		||||
| 
		 Before Width: | Height: | Size: 993 B After Width: | Height: | Size: 1.5 KiB  | 
| 
		 Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 1.5 KiB  | 
							
								
								
									
										176
									
								
								src/project/biaopin/AppModules/AppModules.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,176 @@
 | 
			
		||||
<template>
 | 
			
		||||
  <div class="wrapper">
 | 
			
		||||
    <!-- <div class="header" :class="[isFixed ? 'header-active' : '']">
 | 
			
		||||
      <div class="status-bar" :style="{height: statusBarHeight + 'px'}"></div>
 | 
			
		||||
      <div class="nav-bar">
 | 
			
		||||
        <h2>服务</h2>
 | 
			
		||||
      </div>
 | 
			
		||||
    </div> -->
 | 
			
		||||
    <u-navbar :is-back="false" title="服务" title-color="#000" title-width="300" title-size="32" :title-bold="true" :background="backgroundNavbar"></u-navbar>
 | 
			
		||||
    <div class="header-bg"></div>
 | 
			
		||||
    <div class="body" v-if="list">
 | 
			
		||||
      <div class="card" v-for="(obj,key) in list" :key="key">
 | 
			
		||||
        <div class="title">{{ $dict.getLabel('homeConfigMenuType', key) }}</div>
 | 
			
		||||
        <u-grid :col="4" hover-class="text-hover">
 | 
			
		||||
          <u-grid-item
 | 
			
		||||
              v-for="(item, index) in obj" :key="index" class="grid-item" :custom-style="{padding:'9px 0'}"
 | 
			
		||||
              @click="handleClick(item)">
 | 
			
		||||
            <img :src="item.pictureUrl" alt=""/>
 | 
			
		||||
            <div class="grid-text">{{ item.name }}</div>
 | 
			
		||||
          </u-grid-item>
 | 
			
		||||
        </u-grid>
 | 
			
		||||
      </div>
 | 
			
		||||
    </div>
 | 
			
		||||
  </div>
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
<script>
 | 
			
		||||
import {mapActions, mapState} from "vuex";
 | 
			
		||||
 | 
			
		||||
export default {
 | 
			
		||||
  name: "AppModules",
 | 
			
		||||
  appName: "服务",
 | 
			
		||||
  customNavigation: true,
 | 
			
		||||
  computed: {
 | 
			
		||||
    ...mapState(['user', 'token']),
 | 
			
		||||
  },
 | 
			
		||||
  data() {
 | 
			
		||||
    return {
 | 
			
		||||
      list: null,
 | 
			
		||||
      isFixed: false,
 | 
			
		||||
      statusBarHeight: 20,
 | 
			
		||||
      backgroundNavbar: {
 | 
			
		||||
        background: 'url(https://cdn.cunwuyun.cn/wechat/wuxi/wuxi-nav-bg.png) no-repeat',
 | 
			
		||||
        backgroundSize: 'cover',
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  onLoad() {
 | 
			
		||||
    this.statusBarHeight = uni.getSystemInfoSync().statusBarHeight;
 | 
			
		||||
    this.$dict.load("homeConfigMenuType").then(() => {
 | 
			
		||||
      this.getList()
 | 
			
		||||
    });
 | 
			
		||||
  },
 | 
			
		||||
  methods: {
 | 
			
		||||
    ...mapActions(['authCheck']),
 | 
			
		||||
    handleClick({type, appId, modulePath, url, checkType, corpId}) {
 | 
			
		||||
      if (checkType == 3 && this.user.partyStatusForWX != 2) { //张硕让改的
 | 
			
		||||
        return this.$u.toast('您还不是党员,暂时无法使用该功能')
 | 
			
		||||
      }
 | 
			
		||||
      //先判读是不是系统应用
 | 
			
		||||
      if (type != "0") {
 | 
			
		||||
        if (type == "1") {
 | 
			
		||||
          uni.navigateToMiniProgram({appId});
 | 
			
		||||
        } else if (type == "2") {
 | 
			
		||||
          uni.navigateTo({url: "/subPages/h5/webview?link=" + url});
 | 
			
		||||
        } else if (type == "3") {
 | 
			
		||||
          this.$linkTo(url);
 | 
			
		||||
        } else if (type == "4") {
 | 
			
		||||
          uni.openCustomerServiceChat({
 | 
			
		||||
            extInfo: {url: url},
 | 
			
		||||
            corpId: corpId,
 | 
			
		||||
            fail: () => {
 | 
			
		||||
              this.$u.toast('请使用普通微信打开小程序进行咨询');
 | 
			
		||||
            }
 | 
			
		||||
          });
 | 
			
		||||
        }
 | 
			
		||||
      } else if (type && type == "0") {
 | 
			
		||||
        uni.showLoading({title: '正在进入应用...'})
 | 
			
		||||
        this.authCheck({checkType, modulePath}).finally(() => uni.hideLoading())
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    getList() {
 | 
			
		||||
      this.$instance.post("/app/appminihomeconfig/listAll", null, {withoutToken: true}).then(res => {
 | 
			
		||||
        if (res?.data) {
 | 
			
		||||
          this.list = res.data.all;
 | 
			
		||||
        }
 | 
			
		||||
      })
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
  },
 | 
			
		||||
  onPageScroll(params) {
 | 
			
		||||
    this.isFixed = params.scrollTop > 60;
 | 
			
		||||
  },
 | 
			
		||||
  onShareAppMessage() {
 | 
			
		||||
    return {
 | 
			
		||||
      title: '欢迎使用数字乡村治理服务一体化平台~',
 | 
			
		||||
      path: `/pages/AppModules/AppModules`
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
}
 | 
			
		||||
</script>
 | 
			
		||||
 | 
			
		||||
<style lang="scss" scoped>
 | 
			
		||||
.header {
 | 
			
		||||
  position: fixed;
 | 
			
		||||
  left: 0;
 | 
			
		||||
  top: 0;
 | 
			
		||||
  z-index: 0;
 | 
			
		||||
  width: 100%;
 | 
			
		||||
  opacity: 0;
 | 
			
		||||
  transition: all 0.2s ease;
 | 
			
		||||
 | 
			
		||||
  &.header-active {
 | 
			
		||||
    z-index: 1111;
 | 
			
		||||
    opacity: 1;
 | 
			
		||||
    background: #4181FF;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  .nav-bar {
 | 
			
		||||
    position: relative;
 | 
			
		||||
    height: 88px;
 | 
			
		||||
    line-height: 88px;
 | 
			
		||||
    color: #fff;
 | 
			
		||||
    font-size: 32px;
 | 
			
		||||
    text-align: center;
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.header-bg {
 | 
			
		||||
  height: 592px;
 | 
			
		||||
  background: url('https://cdn.cunwuyun.cn/wechat/wuxi/wuxi-header-bg.png') center;
 | 
			
		||||
  background-size: 100% 100%;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.liner {
 | 
			
		||||
  height: 192px;
 | 
			
		||||
  background: linear-gradient(360deg, #F3F6F9 0%, #4181FF 100%);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.body {
 | 
			
		||||
  margin-top: -568px;
 | 
			
		||||
 | 
			
		||||
  .card {
 | 
			
		||||
    width: 686px;
 | 
			
		||||
    min-height: 304px;
 | 
			
		||||
    background: #FFFFFF;
 | 
			
		||||
    box-shadow: 0 0 8px 0 rgba(0, 0, 0, 0.02);
 | 
			
		||||
    border-radius: 16px;
 | 
			
		||||
    margin: 0 auto 24px;
 | 
			
		||||
    box-sizing: border-box;
 | 
			
		||||
    padding: 32px;
 | 
			
		||||
 | 
			
		||||
    .title {
 | 
			
		||||
      font-size: 34px;
 | 
			
		||||
      font-weight: 600;
 | 
			
		||||
      color: #333333;
 | 
			
		||||
      line-height: 48px;
 | 
			
		||||
      margin-bottom: 36px;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    .grid-item {
 | 
			
		||||
      img {
 | 
			
		||||
        width: 108px;
 | 
			
		||||
        height: 108px;
 | 
			
		||||
        object-fit: fill;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      .grid-text {
 | 
			
		||||
        font-size: 26px;
 | 
			
		||||
        font-weight: 400;
 | 
			
		||||
        color: #333333;
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
</style>
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								src/project/biaopin/AppModules/service.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 1.5 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								src/project/biaopin/AppModules/service_selected.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 1.4 KiB  | 
@@ -0,0 +1,102 @@
 | 
			
		||||
<template>
 | 
			
		||||
  <div class="AppCommunityInfo" v-if="pageShow">
 | 
			
		||||
    <h2>{{ info.title }}</h2>
 | 
			
		||||
    <div class="info-info">
 | 
			
		||||
      <span>{{ info.areaName }}</span>
 | 
			
		||||
      <span>{{ info.createDate }}</span>
 | 
			
		||||
    </div>
 | 
			
		||||
    <image class="banner" @click="preview(banner)" v-if="banner" mode="widthFix" :src="banner"/>
 | 
			
		||||
    <div class="rich-content">
 | 
			
		||||
      <u-parse :html="info.content"></u-parse>
 | 
			
		||||
    </div>
 | 
			
		||||
    <AiEmpty v-if="!info.title"></AiEmpty>
 | 
			
		||||
  </div>
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
<script>
 | 
			
		||||
export default {
 | 
			
		||||
  name: "AppCommunityInfo",
 | 
			
		||||
  appName: "社区简介",
 | 
			
		||||
  data() {
 | 
			
		||||
    return {
 | 
			
		||||
      pageShow: false,
 | 
			
		||||
      info: {},
 | 
			
		||||
      banner: ''
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
 | 
			
		||||
  onLoad(query) {
 | 
			
		||||
    if (query.type !== '0') {
 | 
			
		||||
      uni.setNavigationBarTitle({
 | 
			
		||||
        title: query.type == 4 ? '社区公约' : '党员阵地'
 | 
			
		||||
      })
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    this.$loading()
 | 
			
		||||
    this.getInfo(query.type)
 | 
			
		||||
  },
 | 
			
		||||
 | 
			
		||||
  methods: {
 | 
			
		||||
    getInfo(type) {
 | 
			
		||||
      this.$instance.post(`/app/appcountrysidetourism/queryDetailByAreaIdForWX?areaId=${uni.getStorageSync('areaId')}&type=${type}`).then(res => {
 | 
			
		||||
        if (res.code === 0 && res.data) {
 | 
			
		||||
          this.info = res.data
 | 
			
		||||
          this.banner = res.data.thumbUrl ? JSON.parse(res.data.thumbUrl)[0].url : ''
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        this.$nextTick(() => {
 | 
			
		||||
          this.pageShow = true
 | 
			
		||||
        })
 | 
			
		||||
      })
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    preview(url) {
 | 
			
		||||
      uni.previewImage({
 | 
			
		||||
        urls: [url],
 | 
			
		||||
        current: url
 | 
			
		||||
      })
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
</script>
 | 
			
		||||
 | 
			
		||||
<style lang="scss" scoped>
 | 
			
		||||
.AppCommunityInfo {
 | 
			
		||||
  min-height: 100vh;
 | 
			
		||||
  padding: 0 32px 40px;
 | 
			
		||||
  box-sizing: border-box;
 | 
			
		||||
  background-color: #fff;
 | 
			
		||||
 | 
			
		||||
  .banner {
 | 
			
		||||
    width: 100%;
 | 
			
		||||
    margin-bottom: 20px;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  h2 {
 | 
			
		||||
    line-height: 1.3;
 | 
			
		||||
    padding: 32px 0 16px;
 | 
			
		||||
    font-size: 48px;
 | 
			
		||||
    font-weight: 600;
 | 
			
		||||
    color: #333;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  .info-info {
 | 
			
		||||
    display: flex;
 | 
			
		||||
    align-items: center;
 | 
			
		||||
    margin-bottom: 30px;
 | 
			
		||||
 | 
			
		||||
    span {
 | 
			
		||||
      color: #999999;
 | 
			
		||||
      font-size: 30px;
 | 
			
		||||
 | 
			
		||||
      &:last-child {
 | 
			
		||||
        margin-left: 32px;
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  ::v-deep.emptyWrap {
 | 
			
		||||
    width: 100%;
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
</style>
 | 
			
		||||
@@ -0,0 +1,666 @@
 | 
			
		||||
<template>
 | 
			
		||||
  <div class="AppPartyEnteringCommunity">
 | 
			
		||||
    <div class="header" :class="[isFixed ? 'header-active' : '']">
 | 
			
		||||
      <div class="status-bar" :style="{height: statusBarHeight + 'px'}"></div>
 | 
			
		||||
      <div class="nav-bar">
 | 
			
		||||
        <h2>进村</h2>
 | 
			
		||||
      </div>
 | 
			
		||||
    </div>
 | 
			
		||||
    <header>
 | 
			
		||||
      <image src="https://cdn.cunwuyun.cn/wechat/biaopin/custom/custom-top-bg.png"/>
 | 
			
		||||
      <div>
 | 
			
		||||
        <AiAreaPicker :selectRoot="false" ref="area" :value="areaId" :name.sync="areaName" :areaId="$areaId"
 | 
			
		||||
                      @input="areaSelect">
 | 
			
		||||
          <div class="ai-area__wrapper">
 | 
			
		||||
            <span class="label" v-if="areaName">{{ areaName }}</span>
 | 
			
		||||
            <span v-else>请选择</span>
 | 
			
		||||
            <image src="/static/img/area-bottom.png"/>
 | 
			
		||||
          </div>
 | 
			
		||||
        </AiAreaPicker>
 | 
			
		||||
        <div class="welcome">欢迎进入{{ areaName }}</div>
 | 
			
		||||
        <div class="tag" v-if="user.homeArea === areaId">我的家乡</div>
 | 
			
		||||
        <div class="tag1" @click="updateUserInfo" v-if="!user.homeArea && token">设为家乡</div>
 | 
			
		||||
      </div>
 | 
			
		||||
    </header>
 | 
			
		||||
    <div class="card">
 | 
			
		||||
      <div class="card-item" hover-class="text-hover" @click="$linkTo('./AppCommunityInfo?type=0')">
 | 
			
		||||
        <image src="https://cdn.cunwuyun.cn/wechat/biaopin/custom/custom-banner-sqjj.png"/>
 | 
			
		||||
      </div>
 | 
			
		||||
      <div class="card-item" hover-class="text-hover" @click="$linkTo('./AppCommunityInfo?type=4')">
 | 
			
		||||
        <image src="https://cdn.cunwuyun.cn/wechat/biaopin/custom/custom-banner-sqgy.png"/>
 | 
			
		||||
      </div>
 | 
			
		||||
      <!-- <div class="card-item" hover-class="text-hover" @click="$linkTo('./AppCommunityInfo?type=5')">
 | 
			
		||||
        <image src="https://cdn.cunwuyun.cn/pingchang/dyzd.png"/>
 | 
			
		||||
      </div>
 | 
			
		||||
      <div class="card-item" hover-class="text-hover"
 | 
			
		||||
           @click="$linkTo('/mods/AppVillagerDiscussion/AppVillagerDiscussion')">
 | 
			
		||||
        <image src="https://cdn.cunwuyun.cn/pingchang/jmys.png"/>
 | 
			
		||||
      </div> -->
 | 
			
		||||
    </div>
 | 
			
		||||
    <!-- <div class="banner" @click="linkTo('/mods/AppCreditPoints/AppCpSupermarket', 'idNumber')">
 | 
			
		||||
      <image src="/static/img/jf-banner.png" class="banner"/>
 | 
			
		||||
    </div> -->
 | 
			
		||||
    <tempalte v-if="publicList.length">
 | 
			
		||||
      <div class="title-wrap">
 | 
			
		||||
        <span class="title">三务公开</span>
 | 
			
		||||
        <div class="right" hover-class="text-hover"
 | 
			
		||||
             @click="$linkTo(`/mods/AppContent/AppContent?names=三务公开&areaId=${areaId}`)">
 | 
			
		||||
          <span class="title-more">更多专题</span>
 | 
			
		||||
          <u-icon name="arrow-right" size="28" color="#999999"></u-icon>
 | 
			
		||||
        </div>
 | 
			
		||||
      </div>
 | 
			
		||||
      <div class="list-news">
 | 
			
		||||
        <div class="news-wrap" v-for="(item,index) in publicList" :key="index"
 | 
			
		||||
             @click="$linkTo('/mods/AppContent/contentDetail?id='+ item.id)">
 | 
			
		||||
          <div class="news-title">{{ item.title }}</div>
 | 
			
		||||
          <div class="news-bottom">
 | 
			
		||||
            <div class="tag">{{ item.categoryName }}</div>
 | 
			
		||||
            <div class="date">{{ item.createTime ? item.createTime.split(' ')[0] : '' }}</div>
 | 
			
		||||
            <div class="view">
 | 
			
		||||
              <em>{{ item.viewCount }}</em>
 | 
			
		||||
              人看过
 | 
			
		||||
            </div>
 | 
			
		||||
          </div>
 | 
			
		||||
        </div>
 | 
			
		||||
      </div>
 | 
			
		||||
    </tempalte>
 | 
			
		||||
    <div class="title-wrap" v-if="activityList.length">
 | 
			
		||||
      <span class="title">专题活动</span>
 | 
			
		||||
      <div class="right">
 | 
			
		||||
        <span class="title-more" @click="$linkTo('/mods/AppVillageActivity/AppVillageActivity')">更多活动</span>
 | 
			
		||||
        <u-icon name="arrow-right" size="28" color="#999999"></u-icon>
 | 
			
		||||
      </div>
 | 
			
		||||
    </div>
 | 
			
		||||
    <scroll-view :scroll-x="true" style="width: 100%" class="scroll-wrap" v-if="activityList.length">
 | 
			
		||||
      <div
 | 
			
		||||
          class="scroll-card"
 | 
			
		||||
          @click="$linkTo('/mods/AppVillageActivity/ActivityDetail?id=' + item.id)"
 | 
			
		||||
          hover-class="text-hover"
 | 
			
		||||
          v-for="(item, index) in activityList"
 | 
			
		||||
          :key="index">
 | 
			
		||||
        <image :src="item.url" mode="aspectFill"/>
 | 
			
		||||
        <div class="text">
 | 
			
		||||
          <span>{{ item.title }}</span>
 | 
			
		||||
        </div>
 | 
			
		||||
      </div>
 | 
			
		||||
      <AiEmpty v-if="!activityList.length"></AiEmpty>
 | 
			
		||||
    </scroll-view>
 | 
			
		||||
    <!-- <div class="title-wrap">
 | 
			
		||||
      <span class="title">乡村相册</span>
 | 
			
		||||
    </div>
 | 
			
		||||
    <div class="album-list">
 | 
			
		||||
      <div
 | 
			
		||||
          class="album"
 | 
			
		||||
          v-for="(item, index) in albumList"
 | 
			
		||||
          hover-class="text-hover"
 | 
			
		||||
          :key="index"
 | 
			
		||||
          @click="$linkTo('/mods/AppPhotoAlbum/AppPhotoAlbum?type=' + item.type + '&name=' + item.name + '&url=' + item.coverImg)">
 | 
			
		||||
        <image :src="item.coverImg"/>
 | 
			
		||||
        <div class="total">共{{ item.total }}张</div>
 | 
			
		||||
        <div class="desc">{{ item.name }}</div>
 | 
			
		||||
      </div>
 | 
			
		||||
      <AiEmpty style="width: 100%" v-if="!albumList.length"></AiEmpty>
 | 
			
		||||
    </div> -->
 | 
			
		||||
    <AiLogin ref="login"/>
 | 
			
		||||
  </div>
 | 
			
		||||
</template>
 | 
			
		||||
<script>
 | 
			
		||||
import {mapActions, mapState} from 'vuex'
 | 
			
		||||
 | 
			
		||||
export default {
 | 
			
		||||
  name: "AppPartyEnteringCommunity",
 | 
			
		||||
  appName: "社区",
 | 
			
		||||
  customNavigation: true,
 | 
			
		||||
  data() {
 | 
			
		||||
    return {
 | 
			
		||||
      isFixed: false,
 | 
			
		||||
      statusBarHeight: 20,
 | 
			
		||||
      top: 0,
 | 
			
		||||
      areaName: '',
 | 
			
		||||
      areaId: '',
 | 
			
		||||
      $areaId: '',
 | 
			
		||||
      albumList: [],
 | 
			
		||||
      activityList: [],
 | 
			
		||||
      publicList: [],
 | 
			
		||||
      moduleId: "",
 | 
			
		||||
      isInit: false
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
 | 
			
		||||
  onLoad() {
 | 
			
		||||
    this.areaId = this.$mp.query.areaId || this.$areaId
 | 
			
		||||
    this.areaName = this.$mp.query.areaName || this.$areaName
 | 
			
		||||
    this.statusBarHeight = uni.getSystemInfoSync().statusBarHeight
 | 
			
		||||
    this.autoLogin()
 | 
			
		||||
 | 
			
		||||
    this.$nextTick(() => {
 | 
			
		||||
      this.getName()
 | 
			
		||||
      this.getAlbumList()
 | 
			
		||||
      this.getActiveList()
 | 
			
		||||
    })
 | 
			
		||||
    uni.$on('update', () => {
 | 
			
		||||
      this.getAlbumList()
 | 
			
		||||
    })
 | 
			
		||||
  },
 | 
			
		||||
 | 
			
		||||
  computed: {
 | 
			
		||||
    ...mapState(['user', 'token'])
 | 
			
		||||
  },
 | 
			
		||||
 | 
			
		||||
  onShow() {
 | 
			
		||||
    this.$nextTick(() => {
 | 
			
		||||
      this.token && this.getUserInfo()
 | 
			
		||||
    })
 | 
			
		||||
 | 
			
		||||
    if (this.user.homeArea) {
 | 
			
		||||
      if (!this.isInit) {
 | 
			
		||||
        this.areaId = this.user.homeArea
 | 
			
		||||
        this.areaName = this.user.homeName
 | 
			
		||||
        uni.setStorageSync('areaId', this.user.homeArea)
 | 
			
		||||
        uni.setStorageSync('areaName', this.user.homeName)
 | 
			
		||||
        this.isInit = true
 | 
			
		||||
      }
 | 
			
		||||
    } else if (!this.isInit && !this.user.homeArea) {
 | 
			
		||||
      setTimeout(() => {
 | 
			
		||||
        this.$dialog.alert({
 | 
			
		||||
          content: '请选择您的家乡'
 | 
			
		||||
        }).then(() => {
 | 
			
		||||
          this.$refs.area?.handleJump()
 | 
			
		||||
          this.isInit = true
 | 
			
		||||
        })
 | 
			
		||||
      }, 600)
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
 | 
			
		||||
  methods: {
 | 
			
		||||
    ...mapActions(['autoLogin', 'getUserInfo']),
 | 
			
		||||
    getName() {
 | 
			
		||||
      this.$instance.post("/app/appcontentmoduleinfo/listByNames", null, {
 | 
			
		||||
        params: {names: "三务公开"}
 | 
			
		||||
      }).then(res => {
 | 
			
		||||
        if (res.data && res.data.length) {
 | 
			
		||||
          this.moduleId = res.data[0]["id"];
 | 
			
		||||
          this.getPublicList();
 | 
			
		||||
        }
 | 
			
		||||
      })
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    updateUserInfo() {
 | 
			
		||||
      if (this.areaId.endsWith('000')) {
 | 
			
		||||
        this.$dialog.alert({
 | 
			
		||||
          content: '请选择村'
 | 
			
		||||
        }).then(() => {
 | 
			
		||||
        })
 | 
			
		||||
 | 
			
		||||
        return false
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      this.$instance.post("/app/appwechatuser/updateById", {
 | 
			
		||||
        id: this.user.id,
 | 
			
		||||
        homeArea: this.areaId,
 | 
			
		||||
        homeName: this.areaName
 | 
			
		||||
      }).then(res => {
 | 
			
		||||
        if (res.code === 0) {
 | 
			
		||||
          this.getUserInfo()
 | 
			
		||||
        }
 | 
			
		||||
      })
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    getPublicList() {
 | 
			
		||||
      this.$instance.post("/app/appcontentinfo/list", null, {
 | 
			
		||||
        params: {moduleId: this.moduleId, size: 3, areaId: this.areaId}
 | 
			
		||||
      }).then(res => {
 | 
			
		||||
        if (res?.data) {
 | 
			
		||||
          this.publicList = res.data.records;
 | 
			
		||||
        }
 | 
			
		||||
      })
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    linkTo(url, type) {
 | 
			
		||||
      if (type) {
 | 
			
		||||
        if (this.token) {
 | 
			
		||||
          if (type === 'idNumber') {
 | 
			
		||||
            if (!this.user.residentId) {
 | 
			
		||||
              this.$linkTo('/mods/AppAuth/AppAuth')
 | 
			
		||||
            } else {
 | 
			
		||||
              this.$linkTo(url)
 | 
			
		||||
            }
 | 
			
		||||
          }
 | 
			
		||||
        } else {
 | 
			
		||||
          this.$refs.login.show()
 | 
			
		||||
        }
 | 
			
		||||
      } else {
 | 
			
		||||
        this.$linkTo(url)
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    areaSelect(v) {
 | 
			
		||||
      this.areaId = v
 | 
			
		||||
      this.isMore = false
 | 
			
		||||
      this.current = 0
 | 
			
		||||
      this.newsList = []
 | 
			
		||||
 | 
			
		||||
      this.$nextTick(() => {
 | 
			
		||||
        this.getActiveList()
 | 
			
		||||
        this.getAlbumList()
 | 
			
		||||
        this.getPublicList()
 | 
			
		||||
        uni.setStorageSync('areaId', this.areaId)
 | 
			
		||||
        uni.setStorageSync('areaName', this.areaName)
 | 
			
		||||
      })
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    getAlbumList() {
 | 
			
		||||
      this.$instance.post(`/app/appvillagepicturealbum/queryAlbumMenu?areaId=${this.areaId}`).then(res => {
 | 
			
		||||
        if (res.code == 0) {
 | 
			
		||||
          this.albumList = res.data.map(v => {
 | 
			
		||||
            return {
 | 
			
		||||
              ...v,
 | 
			
		||||
              coverImg: `${this.$cdn}/dvcp/album/album${v.type}.png`
 | 
			
		||||
            }
 | 
			
		||||
          })
 | 
			
		||||
        }
 | 
			
		||||
      })
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    getActiveList() {
 | 
			
		||||
      this.$instance.post(`/app/appvillageactivityinfo/listUp`, null, {
 | 
			
		||||
        params: {
 | 
			
		||||
          current: 1,
 | 
			
		||||
          size: 6,
 | 
			
		||||
          areaId: this.areaId
 | 
			
		||||
        }
 | 
			
		||||
      }).then(res => {
 | 
			
		||||
        if (res.code == 0) {
 | 
			
		||||
          this.activityList = res.data.records.map(v => {
 | 
			
		||||
            return {
 | 
			
		||||
              ...v,
 | 
			
		||||
              url: v.url ? JSON.parse(v.url)[0].url : ''
 | 
			
		||||
            }
 | 
			
		||||
          })
 | 
			
		||||
        }
 | 
			
		||||
      })
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
 | 
			
		||||
  onShareAppMessage() {
 | 
			
		||||
    return {
 | 
			
		||||
      title: '欢迎使用数字党建平昌~',
 | 
			
		||||
      path: `/pages/AppPartyEnteringCommunity/AppPartyEnteringCommunity`
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
 | 
			
		||||
  onPageScroll(params) {
 | 
			
		||||
    this.isFixed = params.scrollTop > 60;
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
</script>
 | 
			
		||||
 | 
			
		||||
<style scoped lang="scss">
 | 
			
		||||
.AppPartyEnteringCommunity {
 | 
			
		||||
  min-height: 100%;
 | 
			
		||||
  background: #F3F6F9;
 | 
			
		||||
 | 
			
		||||
  ::v-deep .emptyImg {
 | 
			
		||||
    margin-top: 0 !important;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  .header {
 | 
			
		||||
    position: fixed;
 | 
			
		||||
    left: 0;
 | 
			
		||||
    top: 0;
 | 
			
		||||
    z-index: 0;
 | 
			
		||||
    width: 100%;
 | 
			
		||||
    opacity: 0;
 | 
			
		||||
    transition: all 0.2s ease;
 | 
			
		||||
 | 
			
		||||
    &.header-active {
 | 
			
		||||
      z-index: 1111;
 | 
			
		||||
      opacity: 1;
 | 
			
		||||
      background: #4181FF;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    .nav-bar {
 | 
			
		||||
      position: relative;
 | 
			
		||||
      height: 88px;
 | 
			
		||||
      line-height: 88px;
 | 
			
		||||
      color: #fff;
 | 
			
		||||
      font-size: 32px;
 | 
			
		||||
      text-align: center;
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  & > header {
 | 
			
		||||
    position: relative;
 | 
			
		||||
    height: 480px;
 | 
			
		||||
    box-sizing: border-box;
 | 
			
		||||
    padding-left: 32px;
 | 
			
		||||
 | 
			
		||||
    & > div {
 | 
			
		||||
      position: relative;
 | 
			
		||||
      z-index: 11;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    .ai-area__wrapper {
 | 
			
		||||
      display: flex;
 | 
			
		||||
      align-items: center;
 | 
			
		||||
      padding-top: 100px;
 | 
			
		||||
 | 
			
		||||
      span {
 | 
			
		||||
        margin-right: 16px;
 | 
			
		||||
        color: #FFFFFF;
 | 
			
		||||
        font-size: 44px;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      image {
 | 
			
		||||
        width: 16px;
 | 
			
		||||
        height: 8px;
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    & > image {
 | 
			
		||||
      position: absolute;
 | 
			
		||||
      left: 0;
 | 
			
		||||
      top: 0;
 | 
			
		||||
      z-index: 1;
 | 
			
		||||
      width: 100%;
 | 
			
		||||
      height: 480px;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    .welcome {
 | 
			
		||||
      font-size: 28px;
 | 
			
		||||
      font-weight: 400;
 | 
			
		||||
      color: #FFFFFF;
 | 
			
		||||
      line-height: 40px;
 | 
			
		||||
      margin-top: 20px;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    .tag {
 | 
			
		||||
      width: 120px;
 | 
			
		||||
      height: 44px;
 | 
			
		||||
      background: rgba(0, 0, 0, 0.3);
 | 
			
		||||
      border-radius: 8px;
 | 
			
		||||
      display: flex;
 | 
			
		||||
      align-items: center;
 | 
			
		||||
      justify-content: center;
 | 
			
		||||
      font-size: 22px;
 | 
			
		||||
      font-weight: 400;
 | 
			
		||||
      color: #c0cae0;
 | 
			
		||||
      margin-top: 16px;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    .tag1 {
 | 
			
		||||
      width: 120px;
 | 
			
		||||
      height: 44px;
 | 
			
		||||
      border: 1px solid #c0cae0;
 | 
			
		||||
      background: rgba(0, 0, 0, 0.1);
 | 
			
		||||
      border-radius: 8px;
 | 
			
		||||
      display: flex;
 | 
			
		||||
      align-items: center;
 | 
			
		||||
      justify-content: center;
 | 
			
		||||
      font-size: 22px;
 | 
			
		||||
      font-weight: 400;
 | 
			
		||||
      color: #c0cae0;
 | 
			
		||||
      margin-top: 16px;
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  .card {
 | 
			
		||||
    position: relative;
 | 
			
		||||
    left: 32px;
 | 
			
		||||
    z-index: 1;
 | 
			
		||||
    background: #FFFFFF;
 | 
			
		||||
    border-radius: 32px;
 | 
			
		||||
    margin-top: -132px;
 | 
			
		||||
    box-sizing: border-box;
 | 
			
		||||
    padding: 28px 24px 0 24px;
 | 
			
		||||
    display: flex;
 | 
			
		||||
    align-items: center;
 | 
			
		||||
    justify-content: space-between;
 | 
			
		||||
    flex-wrap: wrap;
 | 
			
		||||
    width: 686px;
 | 
			
		||||
    box-sizing: border-box;
 | 
			
		||||
 | 
			
		||||
    .card-item {
 | 
			
		||||
      width: 308px;
 | 
			
		||||
      height: 144px;
 | 
			
		||||
      margin-bottom: 28px;
 | 
			
		||||
 | 
			
		||||
      image {
 | 
			
		||||
        width: 308px;
 | 
			
		||||
        height: 144px;
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  .banner {
 | 
			
		||||
    position: relative;
 | 
			
		||||
    z-index: 2;
 | 
			
		||||
    height: 200px;
 | 
			
		||||
    background: linear-gradient(180deg, #FFFFFF 0%, #F3F6F9 100%);
 | 
			
		||||
 | 
			
		||||
    image {
 | 
			
		||||
      display: block;
 | 
			
		||||
      width: 692px;
 | 
			
		||||
      height: 200px;
 | 
			
		||||
      margin: 0 auto;
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  .title-wrap {
 | 
			
		||||
    display: flex;
 | 
			
		||||
    align-items: center;
 | 
			
		||||
    justify-content: space-between;
 | 
			
		||||
    box-sizing: border-box;
 | 
			
		||||
    padding: 32px 32px 24px;
 | 
			
		||||
 | 
			
		||||
    .title {
 | 
			
		||||
      font-family: PingFangSC-Medium;
 | 
			
		||||
      font-weight: 500;
 | 
			
		||||
      font-size: 34px;
 | 
			
		||||
      color: #222;
 | 
			
		||||
      line-height: 40px;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    .right {
 | 
			
		||||
 | 
			
		||||
      .title-more {
 | 
			
		||||
        font-size: 28px;
 | 
			
		||||
        font-weight: 400;
 | 
			
		||||
        line-height: 40px;
 | 
			
		||||
        color: #687DA6;
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  .album-list {
 | 
			
		||||
    box-sizing: border-box;
 | 
			
		||||
    padding: 0 32px 32px;
 | 
			
		||||
    display: flex;
 | 
			
		||||
    align-items: center;
 | 
			
		||||
    flex-wrap: wrap;
 | 
			
		||||
    gap: 16px;
 | 
			
		||||
 | 
			
		||||
    .album {
 | 
			
		||||
      position: relative;
 | 
			
		||||
      width: 218px;
 | 
			
		||||
      height: 240px;
 | 
			
		||||
      background: #FFFFFF;
 | 
			
		||||
      box-shadow: 0 0 8px 0 rgba(0, 0, 0, 0.02);
 | 
			
		||||
      border-radius: 16px;
 | 
			
		||||
      overflow: hidden;
 | 
			
		||||
 | 
			
		||||
      image {
 | 
			
		||||
        position: absolute;
 | 
			
		||||
        left: 0;
 | 
			
		||||
        top: 0;
 | 
			
		||||
        z-index: 1;
 | 
			
		||||
        width: 100%;
 | 
			
		||||
        height: 100%;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      .total {
 | 
			
		||||
        display: flex;
 | 
			
		||||
        position: absolute;
 | 
			
		||||
        align-items: center;
 | 
			
		||||
        justify-content: center;
 | 
			
		||||
        right: 8px;
 | 
			
		||||
        top: 8px;
 | 
			
		||||
        z-index: 2;
 | 
			
		||||
        width: 74px;
 | 
			
		||||
        height: 40px;
 | 
			
		||||
        background: rgba(0, 0, 0, .6);
 | 
			
		||||
        border-radius: 8px;
 | 
			
		||||
        font-size: 22px;
 | 
			
		||||
        font-weight: 400;
 | 
			
		||||
        color: #FFFFFF;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      .desc {
 | 
			
		||||
        position: absolute;
 | 
			
		||||
        bottom: 16px;
 | 
			
		||||
        left: 0;
 | 
			
		||||
        z-index: 2;
 | 
			
		||||
        width: 100%;
 | 
			
		||||
        height: 40px;
 | 
			
		||||
        line-height: 40px;
 | 
			
		||||
        padding: 0 12px;
 | 
			
		||||
        font-size: 32px;
 | 
			
		||||
        text-align: center;
 | 
			
		||||
        color: #FFFFFF;
 | 
			
		||||
        font-weight: 600;
 | 
			
		||||
        box-sizing: border-box;
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  .list-news {
 | 
			
		||||
    box-sizing: border-box;
 | 
			
		||||
    padding: 0 32px;
 | 
			
		||||
 | 
			
		||||
    .news-wrap {
 | 
			
		||||
      height: 186px;
 | 
			
		||||
      background: #FFFFFF;
 | 
			
		||||
      box-shadow: 0 0 8px 0 rgba(0, 0, 0, 0.02);
 | 
			
		||||
      border-radius: 16px;
 | 
			
		||||
      box-sizing: border-box;
 | 
			
		||||
      padding: 32px;
 | 
			
		||||
      display: flex;
 | 
			
		||||
      flex-direction: column;
 | 
			
		||||
      justify-content: space-between;
 | 
			
		||||
      margin-bottom: 24px;
 | 
			
		||||
 | 
			
		||||
      &:last-child {
 | 
			
		||||
        margin-bottom: 0;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      .news-title {
 | 
			
		||||
        font-size: 36px;
 | 
			
		||||
        font-weight: 600;
 | 
			
		||||
        color: #333333;
 | 
			
		||||
        overflow: hidden;
 | 
			
		||||
        text-overflow: ellipsis;
 | 
			
		||||
        white-space: nowrap;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      .news-bottom {
 | 
			
		||||
        display: flex;
 | 
			
		||||
        align-items: center;
 | 
			
		||||
 | 
			
		||||
        .tag {
 | 
			
		||||
          width: 144px;
 | 
			
		||||
          height: 48px;
 | 
			
		||||
          background: #EEEEEE;
 | 
			
		||||
          border-radius: 24px;
 | 
			
		||||
          display: flex;
 | 
			
		||||
          align-items: center;
 | 
			
		||||
          justify-content: center;
 | 
			
		||||
          font-size: 28px;
 | 
			
		||||
          font-weight: 400;
 | 
			
		||||
          color: #999999;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        .date {
 | 
			
		||||
          font-size: 28px;
 | 
			
		||||
          font-weight: 400;
 | 
			
		||||
          color: #999999;
 | 
			
		||||
          margin-left: 16px;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        .view {
 | 
			
		||||
          font-size: 28px;
 | 
			
		||||
          font-weight: 400;
 | 
			
		||||
          color: #999999;
 | 
			
		||||
          margin-left: auto;
 | 
			
		||||
          display: flex;
 | 
			
		||||
          align-items: center;
 | 
			
		||||
 | 
			
		||||
          & > em {
 | 
			
		||||
            color: #4181FF;
 | 
			
		||||
            font-style: normal;
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  .scroll-wrap {
 | 
			
		||||
    box-sizing: border-box;
 | 
			
		||||
    padding: 0 32px;
 | 
			
		||||
    width: 100%;
 | 
			
		||||
    white-space: nowrap;
 | 
			
		||||
 | 
			
		||||
    .scroll-card {
 | 
			
		||||
      display: inline-block;
 | 
			
		||||
      width: 400px;
 | 
			
		||||
      height: 332px;
 | 
			
		||||
      background: #FFFFFF;
 | 
			
		||||
      box-shadow: 0 0 8px 0 rgba(0, 0, 0, 0.02);
 | 
			
		||||
      border-radius: 16px;
 | 
			
		||||
      margin-right: 32px;
 | 
			
		||||
      font-size: 0;
 | 
			
		||||
 | 
			
		||||
      & > image {
 | 
			
		||||
        width: 400px;
 | 
			
		||||
        height: 240px;
 | 
			
		||||
        border-radius: 16px 16px 0 0;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      .text {
 | 
			
		||||
        height: calc(100% - 240px);
 | 
			
		||||
        display: flex;
 | 
			
		||||
        align-items: center;
 | 
			
		||||
        box-sizing: border-box;
 | 
			
		||||
        padding: 0 32px;
 | 
			
		||||
 | 
			
		||||
        & > span {
 | 
			
		||||
          font-size: 32px;
 | 
			
		||||
          font-weight: 600;
 | 
			
		||||
          color: #333333;
 | 
			
		||||
          overflow: hidden;
 | 
			
		||||
          text-overflow: ellipsis;
 | 
			
		||||
          white-space: nowrap;
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
      &:last-child {
 | 
			
		||||
        margin-right: 0;
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  ::v-deep .AiArea {
 | 
			
		||||
    padding-top: 64px;
 | 
			
		||||
    height: 88px;
 | 
			
		||||
 | 
			
		||||
    ._img {
 | 
			
		||||
      display: none;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    .area-name {
 | 
			
		||||
      font-size: 44px;
 | 
			
		||||
      font-weight: 600;
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
</style>
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								src/project/biaopin/AppPartyEnteringCommunity/custom.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 2.0 KiB  | 
| 
		 After Width: | Height: | Size: 2.0 KiB  |