Commit cd113760 authored by zhengke's avatar zhengke

关注公众号

parent 11c97d0b
......@@ -88,10 +88,11 @@
<template #dropdown>
<div class="MarketPopoverMore row wrap pointer">
<div class="column" v-for="(item, index) in moreList" @click="forward(item)">
<div>
<div style="position: relative;">
<img :src="item.icon" width="34" height="34" />
<span v-if="item.Id==2" style="position: absolute;background: red;right: -25px;top: 0;border-radius: 50%;opacity: 0;" @click.stop="forward(item,1)">&nbsp;</span>
</div>
<span>{{ item.Name }}</span>
<span>{{ item.Id==2?(personalInfor.IsOpenId?item.Name:'已关注公众号' ):item.Name }}</span>
</div>
</div>
</template>
......@@ -100,10 +101,10 @@
<!-- 创建设计 -->
<temDesign :addTem="addVisible" @close="addVisible=false"/>
<OrderReview v-if="orderVisible" :show-person="isShowPerson" :default-type="isShowPerson?1:2" @close="()=>orderVisible=false"></OrderReview>
<follow v-if="isPublicAccount" @close="isPublicAccount=false"></follow>
<follow v-show="isPublicAccount" :show="isPublicAccount" @close="isPublicAccount=false,getInfo()"></follow>
</template>
<script lang="ts" setup>
import { ref } from "vue";
import { ref, reactive } from "vue";
import { useUserStore } from "@/store";
import { storeToRefs } from "pinia";
import { useRouter } from "vue-router";
......@@ -142,15 +143,18 @@ const isPublicAccount = ref(false)
const format = (percentage: number) => {
return percentage == 100 ? '' : ``
}
const moreList = [
const moreList = ref(
[
{ icon: require("@/assets/img/homeMore0.png"), Name: "添加到桌面", Id:1, },
{ icon: require("@/assets/img/homeMore1.png"), Name: "关注公众号", Id:2, },
{ icon: require("@/assets/img/homeMore2.png"), Name: "我的订单", Url:'/u/order', Id:3, },
{ icon: require("@/assets/img/homeMore3.png"), Name: "意见反馈", Url:'https://work.weixin.qq.com/kfid/kfc378aada578ca8b0e', Id:4, },
];
] as any);
const TravelDesign = ref({} as any)
const personalInfor = ref({} as any)
const goDesNorm = () => {
openNewBlank('/d')
}
......@@ -158,12 +162,16 @@ const goDesNorm = () => {
const forwardUserCenter = ()=>{
router.push('/u')
}
const forward = (item:any)=>{
const forward = (item:any,type:any)=>{
if(item.Url){
current.value = -1
if(item.Url.includes('http://')||item.Url.includes('https://')) openNewBlank(item.Url)
else router.push(item.Url)
}else{
// if(item.Id==2) isPublicAccount.value = true
if(item.Id==2&&type){
if(item.Id==2&&personalInfor.value.IsOpenId) isPublicAccount.value = true
}
}
}
const loginOutHandler = ()=>{
......@@ -185,6 +193,14 @@ const getDataStatistics = async () => {
TravelDesign.value = response.data.data
}
}
const getInfo = async () => {
const response = await UserServices.GetMemberUserInfo()
if(response.data.resultCode == ApiResult.SUCCESS){
personalInfor.value = response.data.data
}
}
getInfo()
getDataStatistics()
getSampleHandler()
</script>
......
<template>
<div class="followForm">
<div class="followForm" ref="followForm">
<div class="followForm-bj"></div>
<div class="followBox row flex-center">
<div class="followBox-center">
......@@ -7,25 +7,38 @@
style="height: 33.7vw;"/>
<span class="close-btn cursor-pointer column items-center flex-center"
@click="close"><IconClose size="0.83vw"></IconClose></span>
<div v-if="!qrCode||loseEffect" class="q-pt-md" style="position: absolute;right: 11vw;top: 27vw">
<el-icon class="cursor-pointer">
<RefreshRight
v-if="!RefreshLoading"
@click="() => getQrcode(1)"
color="#564bec"
/>
<Refresh v-else color="#564bec"/>
</el-icon>
</div>
<div class="pa followBoxQR" style="font-size: 0.73vw;" v-loading="qrLoading">
<QRCode :value="qrCode" style="width: 13.95vw;height: auto;" v-if="!qrLoading"></QRCode>
<img :src="qrCode" style="width: 13.95vw;height: auto;" v-if="!qrLoading"></img>
<QRCode value="http://www.viitto.com" style="width: 13.95vw;height: auto;" v-if="qrLoading"></QRCode>
</div>
</div>
</div>
</div>
</div>
</template>
<script setup lang="ts">
import { ref, onMounted, reactive } from 'vue'
import { ref, onMounted, reactive, watch, onBeforeUnmount } from 'vue'
import { useRouter } from "vue-router";
import { storeToRefs } from 'pinia'
import { useScreenStore } from '@/store'
import { ApiResult } from '@/configs/axios'
import WechatSerice from '@/services/WechatSerice'
const qrCode = ref('none')
import UserServices from '@/services/UserService'
import { ElMessage, FormInstance } from 'element-plus';
import { useUserStore } from '@/store/user';
const user = useUserStore()
const qrCode = ref('')
const qrLoading = ref(false)
const router = useRouter();
......@@ -39,6 +52,10 @@ const props = defineProps({
Details:{
type: Object,
default: {},
},
show: {
type: Boolean,
default: false,
}
})
const params = reactive({
......@@ -49,17 +66,64 @@ const emit = defineEmits<{
(event: 'close'): void,
}>()
const queryTimer = ref<any>(null)
const loseEffect = ref(false)
const scene_id = ref('')
const RefreshLoading = ref(false)
const followForm = ref()
const close = () => {
emit('close')
}
if(model.value==0 && ConfigId.value) params.ConfigId = ConfigId.value
const getQrcode = async () => {
const beginTimerHandler = ()=>{
queryTimer.value = setInterval(async ()=>{
await userLoginHandler(0)
},3000)
}
const stopTimerHandler = async ()=>{
if(queryTimer.value){
clearInterval(queryTimer.value)
queryTimer.value=null
userLoginHandler(1)
}
}
const getQrcode = async (type:any) =>{
qrLoading.value = true
const response = await WechatSerice.GetShowQrcode({})
if(response.data.resultCode == ApiResult.SUCCESS){
qrCode.value = response.data.data
if(type)RefreshLoading.value = true
const result = await UserServices.GetShowQrcode(1)
if(result.data.resultCode==ApiResult.SUCCESS){
if(result.data.data&&result.data.data.url) qrCode.value = result.data.data.url
if(result.data.data&&result.data.data.scene_id) {
beginTimerHandler()
scene_id.value = result.data.data.scene_id
}
loseEffect.value = false
qrLoading.value = false
}else qrLoading.value = false
if(type)RefreshLoading.value = false
}
const userLoginHandler = async (type:any)=>{
const result = await user.setUserWechatLoginAsync(scene_id.value,type)
if(result.status=='SUCCESS'){
if(!type) {
stopTimerHandler()
ElMessage.success({message:'关注成功'})
location.reload()
}
}else if(result.status=='ERROR') {
if(!type) {
stopTimerHandler()
loseEffect.value = true
ElMessage.error({message:'二维码维码已失效,请重新获取'})
}
}
qrLoading.value = false
}
const goVipIntroduce = () =>{
......@@ -67,7 +131,24 @@ const goVipIntroduce = () =>{
path:`/p/show`
})
}
getQrcode()
watch(()=>props.show,(n,o)=>{
if(!n) stopTimerHandler()
if(n) getQrcode()
},{
immediate: true
})
onMounted( () => {
document.addEventListener('click', (e) => {
if (props.show&&followForm.value) {
followForm.value.click()
}
});
})
onBeforeUnmount(() => {
document.removeEventListener('click', () => {});
})
</script>
<style lang="scss" scoped>
......
......@@ -79,7 +79,7 @@ const getErrorCode2text = (response: AxiosResponse): string => {
const service = Axios.create({
// process.env.VUE_APP_API_URL
//'http://reborn.oytour.com/api/common/post'
baseURL: process.env.VUE_APP_API_URL,
baseURL: 'http://192.168.5.34/api/common/post',
timeout: 200000,
headers: {
'User-Type': 'bus',
......
......@@ -59,8 +59,8 @@ class UserServices {
}
static async WechatLoginAsync(scene_id: string): Promise<HttpResponse> {
let msg = { scene_id }
static async WechatLoginAsync(scene_id: string,islean:Number): Promise<HttpResponse> {
let msg = { scene_id,islean }
return Api.Post("Wechat_QrCode_GetSceneId", msg)
}
......
import Api,{ HttpResponse, Result } from './../utils/request';
class WechatSerice{
static async GetShowQrcode(params:any):Promise<HttpResponse>{
return Api.Post("Wechat_QrCode_GetShowQrcode",params)
}
}
export default WechatSerice;
\ No newline at end of file
......@@ -113,9 +113,9 @@ export const useUserStore = defineStore('user', {
this.userInfo.logo = ENTERPRISE_DEFAULT_HEADER
}
},
async setUserWechatLoginAsync(scene_id:string) {
async setUserWechatLoginAsync(scene_id:string,islean:any) {
try {
let response = await UserService.WechatLoginAsync(scene_id)
let response = await UserService.WechatLoginAsync(scene_id,islean)
if (response.data.resultCode == ApiResult.SUCCESS) {
if(!Array.isArray(response.data.data)) {
this.token = response.data.data.token
......
......@@ -12,7 +12,8 @@
@click="() => getQrcode(1)"
/>
<Refresh v-else />
</el-icon></div>
</el-icon>
</div>
</div>
</template>
<script lang="ts" setup>
......@@ -50,14 +51,15 @@ const loseEffect = ref(false)
const beginTimerHandler = ()=>{
queryTimer.value = setInterval(async ()=>{
await userLoginHandler()
await userLoginHandler(0)
},3000)
}
const stopTimerHandler = ()=>{
const stopTimerHandler = async ()=>{
if(queryTimer.value){
clearInterval(queryTimer.value)
queryTimer.value=null
await userLoginHandler(1)
}
}
......@@ -77,20 +79,24 @@ const getQrcode = async (type:any) =>{
if(type)RefreshLoading.value = false
}
const userLoginHandler = async ()=>{
const result = await user.setUserWechatLoginAsync(scene_id.value)
const userLoginHandler = async (type:any)=>{
const result = await user.setUserWechatLoginAsync(scene_id.value,type)
if(result.status=='SUCCESS'){
stopTimerHandler()
ElMessage.success({message:'登录成功'})
if(inviteInfo.value){
localStorage.removeItem('invite')
localStorage.setItem('sure_invite',JSON.stringify(inviteInfo.value))
if(!type) {
stopTimerHandler()
ElMessage.success({message:'登录成功'})
if(inviteInfo.value){
localStorage.removeItem('invite')
localStorage.setItem('sure_invite',JSON.stringify(inviteInfo.value))
}
location.href='/space';
}
location.href='/space';
}else if(result.status=='ERROR') {
stopTimerHandler()
loseEffect.value = true
ElMessage.error({message:'二维码维码已失效,请重新获取'})
if(!type) {
stopTimerHandler()
loseEffect.value = true
ElMessage.error({message:'二维码维码已失效,请重新获取'})
}
}
}
......
......@@ -532,15 +532,12 @@ const GetTripTemplate = async () =>{
VIEWPORT_VER_SIZE.Value = 1240
}
// if(searchData.value.isTeamManage) mainStore.setToolbarState(ToolbarStates.EL_TEMPLATEDATA)
setTimeout(()=>{
loadingObj.close()
},300)
if(ConfigId.value==0) return
if(TempId.value&&!searchData.value.TempId) await GetTripConfig()
if(model.value!=3) await GetTripFiledData()
}else{
loadingObj.close()
}
loadingObj.close()
} catch (error) {
loadingObj.close()
}
......
<template>
<div class="element-data-mapping" v-if="handleElement && handleElement.dataMapping&&userInfo.isp==2">
<div class="element-data-mapping" v-if="handleElement && handleElement.dataMapping&&userInfo.isp">
<divider />
<div class="q-mb-md row items-center">
<div class="text-small col">数据绑定</div>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment