yunshanghui-2.0/pages/index/pizz_info.vue

407 lines
14 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<view class="xh_bg">
<tn-nav-bar customBack :bottomShadow="false" backgroundColor="transparent">
<view class="custom-nav tn-flex tn-flex-col-center tn-flex-row-center">
<view style="color: #ffffff;;text-align: left;font-size: 36rpx;font-weight: 600;">
<text>协会介绍</text>
</view>
</view>
<view slot="back" class='tn-custom-nav-bar__back' @click="goBack">
<text class='tn-icon-left-circle-simple' style="font-size: 60rpx;color: #ffffff;"></text>
</view>
</tn-nav-bar>
<view :style="{paddingTop: vuex_custom_bar_height + 'px'}">
<!-- <view style="position: relative;">
<swiper class="card-swiper" :circular="true" :autoplay="true" duration="500" interval="8000"
@change="cardSwiper" style="height: 370rpx;">
<swiper-item style="padding: 0px;border-radius: 0;">
<view class="swiper-item image-banner"
:style="'background-image:url('+ apiImgUrl+info.association_image + ');background-size: contain; background-position:center; background-repeat: no-repeat;border-radius: 0;'">
</view>
</swiper-item>
</swiper>
<view style="position: absolute;top: 10px;right: 10px;" @click="openQrcode">
<view
style="position: relative;;background-color: rgba(255, 255, 255, 0.9);box-shadow: 0rpx 0rpx 10rpx 0rpx rgba(12,0,5,0.2);">
<text class="tn-icon-qr-code" style="font-size: 40rpx;"></text>
</view>
</view>
</view> -->
</view>
<!-- <view style="padding:20rpx 30rpx;">
<view class="custom-nav tn-flex tn-flex-col-center tn-flex-row-between" style="font-size: 30rpx;">
<view style="min-width: 200rpx;">协会地址</view>
<view>{{info.association_dizhi}}</view>
</view>
<view style="margin: 20rpx 0rpx;font-size: 30rpx;"
class="custom-nav tn-flex tn-flex-col-center tn-flex-row-between">
<view style="min-width: 200rpx;">协会邮箱</view>
<view>{{info.association_emal}}</view>
</view>
<view class="custom-nav tn-flex tn-flex-col-center tn-flex-row-between" style="font-size: 30rpx;">
<view style="min-width: 200rpx;">联系方式</view>
<view>{{info.association_phone}}</view>
</view>
</view> -->
<view class="bg_title_center" style="margin-top: 80rpx;position: relative;">
<image src="/static/xh_title.png" style="width: 100%;" mode="widthFix" class="no-img"></image>
<view style="position: absolute;top: 55rpx;width: 100%;text-align: center;">
<image :src="apiImgUrl+info.association_image"
style="vertical-align: middle;width: 100rpx;height: 100rpx;border-radius: 50%;"></image>
<text
style="vertical-align: middle;margin-left: 20rpx;font-size: 40rpx;">{{info.association_name}}</text>
<view style="text-align: left;width: 90%;padding-left: 70rpx;margin-top: 30rpx;">
<view class="custom-nav tn-flex" style="font-size: 26rpx;">
<view style="width: 172rpx;">协会地址</view>
<view>{{info.association_dizhi}}</view>
</view>
<view style="margin: 30rpx 0rpx;font-size: 26rpx;" class="custom-nav tn-flex">
<view>协会邮箱</view>
<view>{{info.association_emal}}</view>
</view>
<view class="custom-nav tn-flex " style="font-size: 26rpx;">
<view>联系方式</view>
<view>{{info.association_phone}}</view>
</view>
<view @click="openQrcode" class="custom-nav tn-flex tn-flex-col-center"
style="font-size: 26rpx;margin-top: 30rpx;">
<view>联系方式</view>
<view><text class="tn-icon-qr-code" style="font-size: 40rpx;"></text></view>
</view>
</view>
</view>
</view>
<view style="padding:10rpx 30rpx 200rpx 30rpx;background-color: #ffffff">
<tn-tabs :list="list" :isScroll="false" :activeItemStyle="{'fontWeight':'600','fontSize':'30rpx'}"
activeColor="#000" inactiveColor="#9B9B9B" :barWidth="50" :barHeight="6"
:barStyle="{'background': 'linear-gradient(-45deg, #2368F2, #2368F2)','borderRadius': '4rpx'}"
:current="current" name="name" @change="change"></tn-tabs>
<view style="height: 1rpx;background-color: #EEEEEE;width: 100%;margin: 20rpx 0rpx;"></view>
<!-- <view style="margin-top: 20rpx;position: relative;">-->
<!-- <image src="/static/b1.png"-->
<!-- style="width: 100rpx;height: 100rpx;position: absolute;left: 0;right: 0;top: 38%;z-index: 10;margin: 0 auto;">-->
<!-- </image>-->
<!-- <image src="/static/t7.jpg" style="width: 100%;border-radius: 20rpx;" mode="widthFix"></image>-->
<!-- </view>-->
<view style="line-height: 50rpx; text-indent: 2em;margin-top: 20rpx;" v-if="current==0">
<div v-html="info.association_desc"></div>
</view>
<view style="line-height: 50rpx; text-indent: 2em;margin-top: 20rpx;" v-if="current==2">
<div v-html="info.association_guizhang"></div>
</view>
<view style="line-height: 50rpx; text-indent: 2em;margin-top: 20rpx;" v-if="current==3">
<div v-html="info.ruhuixizhu"></div>
</view>
<view style="padding: 30rpx;text-align: center; " v-if="current==1">
<view style="width: 100%;background-color: #ffffff;z-index: 1;">
<tn-tabs :list="tab_list" :isScroll="false" :current="tab_current" name="name" activeColor="#000000"
:activeItemStyle="{backgroundColor:'#F2F2F2'}" :showBar='false' @change="tab_change"></tn-tabs>
</view>
<view style="padding: 30rpx 0rpx;text-align: center;padding-top: 30rpx;">
<template v-for="(item, index) in architecture" v-if="item.neirong.length>0">
<tn-button backgroundColor="#82B2FF" height="50rpx"
fontColor="#ffffff">{{item.position_name}}</tn-button>
<tn-grid align="center" col="5" hoverClass="none">
<tn-grid-item v-if="item.neirong" style="width:20%" v-for="(v,i) in item.neirong"
@click="openUrl('/pages/packageA/user/my_card?id='+v.member_id)">
<view style="padding: 30rpx;">
<image :src="apiImgUrl+v.photo_image"
style="width: 100rpx;height: 100rpx;border-radius: 50%;">
</image>
<view>{{v.nikename}}</view>
</view>
</tn-grid-item>
<view style="height: 30rpx;width: 100%;"></view>
<tn-grid-item v-if="!item.neirong" style="width:20%">
<view style="padding: 30rpx;">
<view>暂无</view>
</view>
</tn-grid-item>
</tn-grid>
</template>
</view>
<!-- <template v-for="(item, index) in architecture">
<tn-button backgroundColor="#E83A30" height="50rpx" width="250rpx"
fontColor="#ffffff">{{item.position_name}}</tn-button>
<tn-grid align="center" col="5">
<tn-grid-item v-if="item.neirong" style="width:20%" v-for="(v,i) in item.neirong">
<view style="padding: 30rpx;">
<image :src="apiImgUrl+v.photo_image"
style="width: 100rpx;height: 100rpx;border-radius: 50%;">
</image>
<view>{{v.nikename}}</view>
</view>
</tn-grid-item>
<tn-grid-item v-if="!item.neirong" style="width:20%">
<view style="padding: 30rpx;">
<view>暂无</view>
</view>
</tn-grid-item>
</tn-grid>
</template> -->
</view>
</view>
<!-- <view style="position: fixed;bottom: 50rpx;width: 100%;">
<view class="tn-flex tn-flex-row-around"> -->
<!-- <view @click="openUrl('/pages/index/directory?id='+info.id)"
style="color: #fff;;letter-spacing: 10rpx;line-height: 70rpx;;text-align: center;;width: 300rpx;height: 70rpx;background: linear-gradient(-45deg, #4AA2EF, #3A7FF4);border-radius: 50rpx;">
会员名录</view> -->
<!-- <view v-if="userInfo.association_id!=association_id" @click="openUrl('/pages/index/apply_in')"
style="color: #fff;;letter-spacing: 10rpx;line-height: 70rpx;;text-align: center;;width: 300rpx;height: 70rpx;background: linear-gradient(270deg, #EE7E45, #EE9657);border-radius: 50rpx;">
申请入会</view> -->
<!-- <view v-if="userInfo.association_id!=association_id"
@click="openUrl('/pages/index/apply_in?association_id='+association_id)"
style="position: fixed;bottom: 260rpx;right: 20rpx;line-height: 35rpx;color: #fff;;text-align: center;width: 100rpx;height: 100rpx;background: linear-gradient(270deg, #EE7E45, #EE9657);border-radius: 50%;">
<view style="padding-top: 16rpx;">申请</view>
<view>入会</view>
</view>
<view style="position: fixed;bottom: 250rpx; width: 100%;">
<view class="tn-flex tn-flex-row-around">
<view @click="openUrl('/pages/index/directory_back?id='+info.id)"
style="position: absolute; right:20rpx;color: #fff; line-height:35rpx;text-align: center;width: 100rpx;height: 100rpx;background: linear-gradient(-45deg, #4AA2EF, #3A7FF4);border-radius: 50%;">
<view style="padding-top: 16rpx;">会员</view>
<view>名录</view>
</view>
</view>
</view> -->
<!-- </view> -->
<tn-popup :closeBtn="true" v-model="show" mode="center" width="500rpx" height="600rpx">
<!-- <div style="text-align: center;padding: 30rpx;font-size: 32rpx;font-weight: 600;">使用二维码邀请入会</div> -->
<view style="text-align: center;margin-top: 40rpx;">
<image :src="qrcode_url" style="width: 400rpx;height: 400rpx;"></image>
</view>
<view style="text-align: center;margin-top: 40rpx;">
<tn-button shape="round" backgroundColor="#82B2FF" fontColor="#ffffff"
@click="saveBase64">保存图片</tn-button>
</view>
</tn-popup>
<!-- <tn-tabbar :outHeight="140" :height="120" v-model="currentIndex" :list="tabbarList" activeColor="#3377FF"
inactiveColor="#AAAAAA" activeIconColor="#3377FF" inactiveIconColor="#8A8E99" :animation="true"
:safeAreaInsetBottom="true" @change="switchTabbar"></tn-tabbar> -->
</view>
</template>
<script>
import {
associationInfo,
architectureList,
getUserIndex,
} from '@/util/api.js';
import store from "@/store";
export default {
data() {
return {
show: false,
currentIndex: -1,
// 底部tabbar菜单数据
tabbarList: [{
title: '首页',
activeIcon: '/static/01_1.png',
inactiveIcon: '/static/01.png'
},
{
title: '通讯录',
activeIcon: '/static/02_2.png',
inactiveIcon: '/static/02.png'
},
{
title: '发现',
activeIcon: '/static/03_3.png',
inactiveIcon: '/static/03.png'
},
{
title: '个人中心',
activeIcon: '/static/04_4.png',
inactiveIcon: '/static/04.png'
}
],
topCurrent: 0,
swiperList: [{
url: '/static/banner1.jpg',
}],
tab_list: [{
name: '理事会'
}, {
name: '监事会'
}],
list: [{
name: '协会简介'
}, {
name: '组织架构'
}, {
name: '规章制度',
}, {
name: '入会须知',
}],
current: 0,
cardCur: 0,
info: {},
apiImgUrl: this.$store.state.imgUrl,
qrcode_url: '',
architecture: [],
association_id: 0,
userInfo: {},
type: 1,
tab_current: 0
}
},
onLoad(d) {
console.log(d);
this.association_id = d.id;
this.getAssociationInfo();
this.getArchitectureList();
},
methods: {
openQrcode() {
uni.showLoading({
title: '生成中',
mask: true,
});
var that = this;
uni.request({
url: store.state.apiUrl + '/move/login/getUnlimitedQRCode',
method: 'POST',
data: {
path: 'pages/index/index',
scene: "gid=" + this.association_id
},
responseType: 'arraybuffer',
arraybuffer: true,
success: (result) => {
const url = 'data:image/png;base64,' + uni.arrayBufferToBase64(result.data);
that.base64ToImage(url);
}
})
},
base64ToImage(base64Data) {
var that = this;
const fs = uni.getFileSystemManager();
var filePath = wx.env.USER_DATA_PATH + '/qrcode.jpg';
const base64 = base64Data.split(',')[1]; // 获取base64字符串部分
fs.writeFile({
filePath: filePath,
data: base64,
encoding: 'base64',
success: (res) => {
that.qrcode_url = filePath;
console.log('图片保存成功', filePath);
// 成功回调
that.show = true;
uni.hideLoading()
},
fail: (err) => {
console.error('图片保存失败', err);
uni.hideLoading()
// 失败回调
}
});
},
saveBase64() {
wx.saveImageToPhotosAlbum({
filePath: this.qrcode_url,
success: function(res) {
wx.showToast({
title: '保存成功',
})
},
fail: function(err) {
console.log(err, '失败')
}
})
},
tab_change(d) {
this.tab_current = d;
this.type = d + 1;
this.architecture = [];
this.getArchitectureList();
},
getArchitectureList() {
architectureList({
association_id: this.association_id,
type: this.type,
})
.then(res => {
console.log(res);
if (res.code == 1) {
this.architecture = res.data;
}
})
.catch(error => {
uni.showToast({
title: error,
icon: 'none',
duration: 2000
});
})
},
getAssociationInfo() {
console.log('discovery');
associationInfo({
association_id: this.association_id
})
.then(res => {
console.log(res);
if (res.code == 1) {
var key = res.data;
if (key.association_desc.indexOf("<img") != -1) {
key.association_desc = getApp().addWidthToImages(key.association_desc);
}
this.info = key;
}
})
.catch(error => {
uni.showToast({
title: error,
icon: 'none',
duration: 2000
});
})
},
openUrl(url) {
// var uid = uni.getStorageSync('uid');
// if (!uid) {
// uni.showToast({
// title: '请登录!',
// icon: 'none',
// duration: 2000
// });
// return;
// }
uni.navigateTo({
url: url
})
},
goBack() {
if (getCurrentPages().length > 1) {
uni.navigateBack()
} else {
uni.redirectTo({
url: '/pages/index/index'
})
}
},
switchTabbar(d) {
console.log(d);
uni.$emit('depId', {
index: d
})
uni.navigateBack()
},
change(e) {
this.current = e;
},
}
}
</script>
<style scoped>
.xh_bg {
letter-spacing: 1rpx;
background: url('https://ysx.hschool.com.cn/uploads/1/20250508/939229a8d7b1eff5003689808630e08d.png') no-repeat;
background-size: 100%;
}
</style>