Commit cd113760 authored by zhengke's avatar zhengke

关注公众号

parent 11c97d0b
...@@ -88,10 +88,11 @@ ...@@ -88,10 +88,11 @@
<template #dropdown> <template #dropdown>
<div class="MarketPopoverMore row wrap pointer"> <div class="MarketPopoverMore row wrap pointer">
<div class="column" v-for="(item, index) in moreList" @click="forward(item)"> <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" /> <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> </div>
<span>{{ item.Name }}</span> <span>{{ item.Id==2?(personalInfor.IsOpenId?item.Name:'已关注公众号' ):item.Name }}</span>
</div> </div>
</div> </div>
</template> </template>
...@@ -100,10 +101,10 @@ ...@@ -100,10 +101,10 @@
<!-- 创建设计 --> <!-- 创建设计 -->
<temDesign :addTem="addVisible" @close="addVisible=false"/> <temDesign :addTem="addVisible" @close="addVisible=false"/>
<OrderReview v-if="orderVisible" :show-person="isShowPerson" :default-type="isShowPerson?1:2" @close="()=>orderVisible=false"></OrderReview> <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> </template>
<script lang="ts" setup> <script lang="ts" setup>
import { ref } from "vue"; import { ref, reactive } from "vue";
import { useUserStore } from "@/store"; import { useUserStore } from "@/store";
import { storeToRefs } from "pinia"; import { storeToRefs } from "pinia";
import { useRouter } from "vue-router"; import { useRouter } from "vue-router";
...@@ -142,15 +143,18 @@ const isPublicAccount = ref(false) ...@@ -142,15 +143,18 @@ const isPublicAccount = ref(false)
const format = (percentage: number) => { const format = (percentage: number) => {
return percentage == 100 ? '' : `` return percentage == 100 ? '' : ``
} }
const moreList = [ const moreList = ref(
[
{ icon: require("@/assets/img/homeMore0.png"), Name: "添加到桌面", Id:1, }, { icon: require("@/assets/img/homeMore0.png"), Name: "添加到桌面", Id:1, },
{ icon: require("@/assets/img/homeMore1.png"), Name: "关注公众号", Id:2, }, { 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/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, }, { 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 TravelDesign = ref({} as any)
const personalInfor = ref({} as any)
const goDesNorm = () => { const goDesNorm = () => {
openNewBlank('/d') openNewBlank('/d')
} }
...@@ -158,12 +162,16 @@ const goDesNorm = () => { ...@@ -158,12 +162,16 @@ const goDesNorm = () => {
const forwardUserCenter = ()=>{ const forwardUserCenter = ()=>{
router.push('/u') router.push('/u')
} }
const forward = (item:any)=>{ const forward = (item:any,type:any)=>{
if(item.Url){ if(item.Url){
current.value = -1
if(item.Url.includes('http://')||item.Url.includes('https://')) openNewBlank(item.Url) if(item.Url.includes('http://')||item.Url.includes('https://')) openNewBlank(item.Url)
else router.push(item.Url) else router.push(item.Url)
}else{ }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 = ()=>{ const loginOutHandler = ()=>{
...@@ -185,6 +193,14 @@ const getDataStatistics = async () => { ...@@ -185,6 +193,14 @@ const getDataStatistics = async () => {
TravelDesign.value = response.data.data 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() getDataStatistics()
getSampleHandler() getSampleHandler()
</script> </script>
......
<template> <template>
<div class="followForm"> <div class="followForm" ref="followForm">
<div class="followForm-bj"></div> <div class="followForm-bj"></div>
<div class="followBox row flex-center"> <div class="followBox row flex-center">
<div class="followBox-center"> <div class="followBox-center">
...@@ -7,25 +7,38 @@ ...@@ -7,25 +7,38 @@
style="height: 33.7vw;"/> style="height: 33.7vw;"/>
<span class="close-btn cursor-pointer column items-center flex-center" <span class="close-btn cursor-pointer column items-center flex-center"
@click="close"><IconClose size="0.83vw"></IconClose></span> @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"> <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> <QRCode value="http://www.viitto.com" style="width: 13.95vw;height: auto;" v-if="qrLoading"></QRCode>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import { ref, onMounted, reactive } from 'vue' import { ref, onMounted, reactive, watch, onBeforeUnmount } from 'vue'
import { useRouter } from "vue-router"; import { useRouter } from "vue-router";
import { storeToRefs } from 'pinia' import { storeToRefs } from 'pinia'
import { useScreenStore } from '@/store' import { useScreenStore } from '@/store'
import { ApiResult } from '@/configs/axios' import { ApiResult } from '@/configs/axios'
import WechatSerice from '@/services/WechatSerice' import UserServices from '@/services/UserService'
const qrCode = ref('none') import { ElMessage, FormInstance } from 'element-plus';
import { useUserStore } from '@/store/user';
const user = useUserStore()
const qrCode = ref('')
const qrLoading = ref(false) const qrLoading = ref(false)
const router = useRouter(); const router = useRouter();
...@@ -39,6 +52,10 @@ const props = defineProps({ ...@@ -39,6 +52,10 @@ const props = defineProps({
Details:{ Details:{
type: Object, type: Object,
default: {}, default: {},
},
show: {
type: Boolean,
default: false,
} }
}) })
const params = reactive({ const params = reactive({
...@@ -49,17 +66,64 @@ const emit = defineEmits<{ ...@@ -49,17 +66,64 @@ const emit = defineEmits<{
(event: 'close'): void, (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 = () => { const close = () => {
emit('close') emit('close')
} }
if(model.value==0 && ConfigId.value) params.ConfigId = ConfigId.value 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 qrLoading.value = true
const response = await WechatSerice.GetShowQrcode({}) if(type)RefreshLoading.value = true
if(response.data.resultCode == ApiResult.SUCCESS){ const result = await UserServices.GetShowQrcode(1)
qrCode.value = response.data.data 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 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:'二维码维码已失效,请重新获取'})
}
}
} }
const goVipIntroduce = () =>{ const goVipIntroduce = () =>{
...@@ -67,7 +131,24 @@ const goVipIntroduce = () =>{ ...@@ -67,7 +131,24 @@ const goVipIntroduce = () =>{
path:`/p/show` 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> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
......
...@@ -79,7 +79,7 @@ const getErrorCode2text = (response: AxiosResponse): string => { ...@@ -79,7 +79,7 @@ const getErrorCode2text = (response: AxiosResponse): string => {
const service = Axios.create({ const service = Axios.create({
// process.env.VUE_APP_API_URL // process.env.VUE_APP_API_URL
//'http://reborn.oytour.com/api/common/post' //'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, timeout: 200000,
headers: { headers: {
'User-Type': 'bus', 'User-Type': 'bus',
......
...@@ -59,8 +59,8 @@ class UserServices { ...@@ -59,8 +59,8 @@ class UserServices {
} }
static async WechatLoginAsync(scene_id: string): Promise<HttpResponse> { static async WechatLoginAsync(scene_id: string,islean:Number): Promise<HttpResponse> {
let msg = { scene_id } let msg = { scene_id,islean }
return Api.Post("Wechat_QrCode_GetSceneId", msg) 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', { ...@@ -113,9 +113,9 @@ export const useUserStore = defineStore('user', {
this.userInfo.logo = ENTERPRISE_DEFAULT_HEADER this.userInfo.logo = ENTERPRISE_DEFAULT_HEADER
} }
}, },
async setUserWechatLoginAsync(scene_id:string) { async setUserWechatLoginAsync(scene_id:string,islean:any) {
try { try {
let response = await UserService.WechatLoginAsync(scene_id) let response = await UserService.WechatLoginAsync(scene_id,islean)
if (response.data.resultCode == ApiResult.SUCCESS) { if (response.data.resultCode == ApiResult.SUCCESS) {
if(!Array.isArray(response.data.data)) { if(!Array.isArray(response.data.data)) {
this.token = response.data.data.token this.token = response.data.data.token
......
...@@ -12,7 +12,8 @@ ...@@ -12,7 +12,8 @@
@click="() => getQrcode(1)" @click="() => getQrcode(1)"
/> />
<Refresh v-else /> <Refresh v-else />
</el-icon></div> </el-icon>
</div>
</div> </div>
</template> </template>
<script lang="ts" setup> <script lang="ts" setup>
...@@ -50,14 +51,15 @@ const loseEffect = ref(false) ...@@ -50,14 +51,15 @@ const loseEffect = ref(false)
const beginTimerHandler = ()=>{ const beginTimerHandler = ()=>{
queryTimer.value = setInterval(async ()=>{ queryTimer.value = setInterval(async ()=>{
await userLoginHandler() await userLoginHandler(0)
},3000) },3000)
} }
const stopTimerHandler = ()=>{ const stopTimerHandler = async ()=>{
if(queryTimer.value){ if(queryTimer.value){
clearInterval(queryTimer.value) clearInterval(queryTimer.value)
queryTimer.value=null queryTimer.value=null
await userLoginHandler(1)
} }
} }
...@@ -77,9 +79,10 @@ const getQrcode = async (type:any) =>{ ...@@ -77,9 +79,10 @@ const getQrcode = async (type:any) =>{
if(type)RefreshLoading.value = false if(type)RefreshLoading.value = false
} }
const userLoginHandler = async ()=>{ const userLoginHandler = async (type:any)=>{
const result = await user.setUserWechatLoginAsync(scene_id.value) const result = await user.setUserWechatLoginAsync(scene_id.value,type)
if(result.status=='SUCCESS'){ if(result.status=='SUCCESS'){
if(!type) {
stopTimerHandler() stopTimerHandler()
ElMessage.success({message:'登录成功'}) ElMessage.success({message:'登录成功'})
if(inviteInfo.value){ if(inviteInfo.value){
...@@ -87,11 +90,14 @@ const userLoginHandler = async ()=>{ ...@@ -87,11 +90,14 @@ const userLoginHandler = async ()=>{
localStorage.setItem('sure_invite',JSON.stringify(inviteInfo.value)) localStorage.setItem('sure_invite',JSON.stringify(inviteInfo.value))
} }
location.href='/space'; location.href='/space';
}
}else if(result.status=='ERROR') { }else if(result.status=='ERROR') {
if(!type) {
stopTimerHandler() stopTimerHandler()
loseEffect.value = true loseEffect.value = true
ElMessage.error({message:'二维码维码已失效,请重新获取'}) ElMessage.error({message:'二维码维码已失效,请重新获取'})
} }
}
} }
......
...@@ -532,15 +532,12 @@ const GetTripTemplate = async () =>{ ...@@ -532,15 +532,12 @@ const GetTripTemplate = async () =>{
VIEWPORT_VER_SIZE.Value = 1240 VIEWPORT_VER_SIZE.Value = 1240
} }
// if(searchData.value.isTeamManage) mainStore.setToolbarState(ToolbarStates.EL_TEMPLATEDATA) // if(searchData.value.isTeamManage) mainStore.setToolbarState(ToolbarStates.EL_TEMPLATEDATA)
setTimeout(()=>{
loadingObj.close()
},300)
if(ConfigId.value==0) return if(ConfigId.value==0) return
if(TempId.value&&!searchData.value.TempId) await GetTripConfig() if(TempId.value&&!searchData.value.TempId) await GetTripConfig()
if(model.value!=3) await GetTripFiledData() if(model.value!=3) await GetTripFiledData()
}else{
loadingObj.close()
} }
loadingObj.close()
} catch (error) { } catch (error) {
loadingObj.close() loadingObj.close()
} }
......
<template> <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 /> <divider />
<div class="q-mb-md row items-center"> <div class="q-mb-md row items-center">
<div class="text-small col">数据绑定</div> <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