ef140dfd by zhangmeng

二维码

1 parent 206ec58e
......@@ -827,6 +827,14 @@ export function checkOcr(data) {
})
}
// 赛事二维码
export const getMiniappQrCode = (cptId, query) => {
return request({
url: `/getMiniappQrCode/${cptId}`,
method: 'get'
})
}
// 修改人员
export function editOcr(data) {
return request({
......
<template>
<div>
<index-Ch v-if="language ==0" @pop="openMaster" @pickup="openPickup" @backNumber="openBackNumber" @schSearch="openSchSearch"/>
<index-En v-else @pop="openMaster" @pickup="openPickup" @backNumber="openBackNumber" @schSearch="openSchSearch"/>
<index-Ch
v-if="language ==0" @backNumber="openBackNumber" @pickup="openPickup" @pop="openMaster"
@schSearch="openSchSearch"
/>
<index-En v-else @backNumber="openBackNumber" @pickup="openPickup" @pop="openMaster" @schSearch="openSchSearch" />
<div v-if="showgg" class="fixed_gg">
<!--天气-->
<el-icon class="cclose" @click.stop="showgg=false"><circle-close /></el-icon>
<el-icon class="cclose" @click.stop="showgg=false">
<circle-close />
</el-icon>
<div class="bg-lineg pd20">
<div class="smallToday" @click="popWeather">
<div>
<div class="type">
<weather-icon :type="weatherObj.forecast[0]?.type" :width="50"/>
<weather-icon :type="weatherObj.forecast[0]?.type" :width="50" />
</div>
</div>
<div>
<h3 v-if="language == 0">无锡</h3>
<h3 v-else>WUXI</h3>
<div class="wd_p">{{weatherObj.forecast[0]?.low.slice(2)}}~{{weatherObj.forecast[0]?.high.slice(2)}}</div>
<div class="wd_p">{{ weatherObj.forecast[0]?.low.slice(2) }}~{{ weatherObj.forecast[0]?.high.slice(2) }}
</div>
</div>
</div>
<el-dialog v-model="weatherdialog" width="540" :close-on-click-modal="true"
style="--el-dialog-padding-primary:0;--el-dialog-border-radius:15px;
--el-dialog-bg-color:transparent;overflow: hidden;">
</div>
<el-dialog
v-model="weatherdialog" :close-on-click-modal="true" style="--el-dialog-padding-primary:0;--el-dialog-border-radius:15px;
--el-dialog-bg-color:transparent;overflow: hidden;"
width="540"
>
<div class="bg-lineg pd20">
<div class="weatherbox">
<div class="today">
......@@ -30,44 +38,48 @@
<h1 v-else>WUXI</h1>
</div>
<div>
<div class="wd">{{weatherObj.wendu}}°c</div>
<div class="wd_p">{{weatherObj.forecast[0]?.low.slice(2)}}~{{weatherObj.forecast[0]?.high.slice(2)}}</div>
<div class="week">{{weatherObj.forecast[0]?.week}}</div>
<div class="wd">{{ weatherObj.wendu }}°c</div>
<div class="wd_p">
{{ weatherObj.forecast[0]?.low.slice(2) }}~{{ weatherObj.forecast[0]?.high.slice(2) }}
</div>
<div class="week">{{ weatherObj.forecast[0]?.week }}</div>
</div>
<div>
<div class="type">
<weather-icon :type="weatherObj.forecast[0].type" :width="64"/>
<weather-icon :type="weatherObj.forecast[0].type" :width="64" />
</div>
</div>
</div>
<ul class="wlist">
<li v-for="n in weatherObj.forecast.slice(1,6)">
<div class="type">
<weather-icon :type="n.type||n.wea" :width="32"/>
<weather-icon :type="n.type||n.wea" :width="32" />
</div>
<div class="wd" v-if="n.low">{{n.low.slice(2,-1)}}/{{n.high.slice(2)}}</div>
<div class="wd" v-if="n.tem_night">{{n.tem_night}}/{{n.tem_day}}</div>
<div class="week" v-if="language==1">
{{n.week=='星期一'?'Mon':n.week=='星期二'?'Tue':n.week=='星期三'?'Wed':n.week=='星期四'?'Thu':n.week=='星期五'?'Fri':n.week=='星期六'?'Sat':n.week=='星期日'?'Sun':''}}
<div v-if="n.low" class="wd">{{ n.low.slice(2, -1) }}/{{ n.high.slice(2) }}</div>
<div v-if="n.tem_night" class="wd">{{ n.tem_night }}/{{ n.tem_day }}</div>
<div v-if="language==1" class="week">
{{
n.week == '星期一' ? 'Mon' : n.week == '星期二' ? 'Tue' : n.week == '星期三' ? 'Wed' : n.week == '星期四' ? 'Thu' : n.week == '星期五' ? 'Fri' : n.week == '星期六' ? 'Sat' : n.week == '星期日' ? 'Sun' : ''
}}
</div>
<div class="week" v-else>
{{n.week}}
<div v-else class="week">
{{ n.week }}
</div>
<div class="date mt10" v-if="n.ymd">{{n.ymd.slice(5,10)}}</div>
<div class="date mt10" v-else>{{n.date.slice(5,10)}}</div>
<div v-if="n.ymd" class="date mt10">{{ n.ymd.slice(5, 10) }}</div>
<div v-else class="date mt10">{{ n.date.slice(5, 10) }}</div>
</li>
</ul>
</div>
</div>
</el-dialog>
</div>
<div class="poCode">
<el-image :preview-src-list="['/img/code.jpg']" hide-on-click-modal="true" style="width: 120px;height: 120px;" src="/img/code.jpg"/>
</div>
<dialog-master-class ref="masterClassRef"/>
<pick-up ref="pickupRef"></pick-up>
<back-number ref="backNumberRef"></back-number>
<sch-search ref="schSearchRef"></sch-search>
<!-- <div class="poCode">-->
<!-- <el-image :preview-src-list="['/img/code.jpg']" hide-on-click-modal="true" style="width: 120px;height: 120px;" src="/img/code.jpg"/>-->
<!-- </div>-->
<dialog-master-class ref="masterClassRef" />
<pick-up ref="pickupRef" />
<back-number ref="backNumberRef" />
<sch-search ref="schSearchRef" />
</div>
</template>
......@@ -80,74 +92,95 @@ import DialogMasterClass from '@/viewsPc/components/masterClass'
import PickUp from '@/viewsPc/components/pickup'
import BackNumber from '@/viewsPc/components/querybackNumber'
import SchSearch from '@/viewsPc/components/schSearch'
import {useStorage} from "@vueuse/core/index";
import {ref} from "vue";
import {getWeather} from "@/apiPc/webSite";
import {getCurrentInstance} from "@vue/runtime-core";
const {proxy} = getCurrentInstance()
import { useStorage } from '@vueuse/core/index'
import { ref } from 'vue'
import { getWeather } from '@/apiPc/webSite'
import { getCurrentInstance } from '@vue/runtime-core'
const { proxy } = getCurrentInstance()
const showgg = ref(false)
const language = useStorage('language', 0)
const weatherObj = ref({
forecast:[]
forecast: []
})
const weatherdialog = ref(false)
// init()
function init(){
getWeather().then(res=>{
function init() {
getWeather().then(res => {
weatherObj.value = JSON.parse(res.data).data
showgg.value = true
}).catch(err=>{
}).catch(err => {
showgg.value = false
})
}
const popWeather = () => {
weatherdialog.value = true
}
const openMaster = (params) => {
console.log(params)
var obj = {
title:'大师课申请',
cptId:params.cptId
title: '大师课申请',
cptId: params.cptId
}
proxy.$refs['masterClassRef'].open(obj)
}
const openPickup= (params) => {
const openPickup = (params) => {
console.log(params)
const obj = {
title:'接送机服务',
cptId:params.cptId
title: '接送机服务',
cptId: params.cptId
}
proxy.$refs['pickupRef'].open(obj)
}
const openBackNumber = (params) => {
console.log(params)
const obj = {
title:'背号查询',
cptId:params.cptId
title: '背号查询',
cptId: params.cptId
}
proxy.$refs['backNumberRef'].open(obj)
}
const openSchSearch = (params) => {
console.log(params)
const obj = {
title:'日程查询',
cptId:params.cptId
title: '日程查询',
cptId: params.cptId
}
proxy.$refs['schSearchRef'].open(obj)
}
</script>
<style scoped lang="scss">
.poCode{position: fixed;right: 0;top: 40%;background: #fff;padding: 10px 0 0;border-radius: 10px;overflow: hidden;
box-shadow: 0 2px 8px #aaa;z-index: 99;}
<style lang="scss" scoped>
.poCode {
position: fixed;
right: 0;
top: 40%;
background: #fff;
padding: 10px 0 0;
border-radius: 10px;
overflow: hidden;
box-shadow: 0 2px 8px #aaa;
z-index: 99;
}
@media screen and (max-width: 768px) {
:deep(.zn-Box .zn-btn){margin-top: 10px;font-size: 14px}
:deep(.bgbg){ padding: 3% 5% 0!important;
h1 {font-size: 22px;margin:20px 0 0;}
:deep(.zn-Box .zn-btn) {
margin-top: 10px;
font-size: 14px
}
:deep(.bgbg) {
padding: 3% 5% 0 !important;
h1 {
font-size: 22px;
margin: 20px 0 0;
}
}
.fixed_gg{
.fixed_gg {
transform: scale(0.7);
transform-origin: right;
}
......
......@@ -424,13 +424,22 @@
:src="clubImage"
fit="cover"
preview-teleported
style="width: 124px"
style="width: 120px"
/>
</div>
</div>
<div class="fixed_gg_l club" />
<!-- 群聊-->
<div class="fixed_gg_l club">
<el-image
:preview-src-list="[ fillImgUrl(matchData.chatQrcode) ]"
:src="fillImgUrl(matchData.chatQrcode)"
fit="cover"
preview-teleported
style="width: 120px"
/>
</div>
<affix-invitation ref="dialogInvitationRef" />
</div>
......@@ -456,6 +465,7 @@ import { getAboutUs, getppInfo, getZNList } from '@/apiPc/match'
import AffixInvitation from '/@/viewsPc/match/components/affix-invitation.vue'
import { useStorage } from '@vueuse/core/index'
import useUserStore from '@/store/modules/user'
import { fillImgUrl } from '/@/utils/ruoyi'
const language = useStorage('language', 0)
......@@ -546,7 +556,7 @@ const init = () => {
match.getMaList({ topFlag: 1 }).then((res) => {
maList.value = res.rows
for (const n of maList.value) {
var today = dayjs().format('YYYY-MM-DD HH:mm:ss')
const today = dayjs().format('YYYY-MM-DD HH:mm:ss')
if (n.signBeginTime) {
n.time = dayjs(n.signBeginTime).diff(today, 'millisecond')
} else {
......@@ -559,6 +569,7 @@ const init = () => {
}
}
matchData.value = maList.value[0]
console.log(matchData.value)
})
getpartners()
}
......@@ -1256,8 +1267,8 @@ function applyInvitation() {
}
.club {
width: 160px;
left: 5px;
top: 50%;
width: 130px;
right: 0;
top: 40%;
}
</style>
......
......@@ -410,7 +410,16 @@
/>
</div>
</div>
<!-- 群聊-->
<div class="fixed_gg_l club">
<el-image
:preview-src-list="[ fillImgUrl(matchData.chatQrcode) ]"
:src="fillImgUrl(matchData.chatQrcode)"
fit="cover"
preview-teleported
style="width: 120px"
/>
</div>
<affix-invitation ref="dialogInvitationRef" />
</div>
</template>
......@@ -432,6 +441,7 @@ import AffixInvitation from '/@/viewsPc/match/components/affix-invitation.vue'
import { useStorage } from '@vueuse/core/index'
import useUserStore from '/@/store/modules/user'
import clubImage from '@/assets/logo/club.png'
import { fillImgUrl } from '/@/utils/ruoyi'
const language = useStorage('language', 0)
......@@ -1376,4 +1386,10 @@ function applyInvitation() {
top: 40%;
}
.club {
width: 130px;
right: 0;
top: 40%;
}
</style>
......
......@@ -21,7 +21,7 @@
<img :src="fillImgUrl(matchData.coverUrl)" class="mauto w100 as16_9">
</el-col>
<el-col :lg="matchData.type=='0'?9:16" :md="12" :xl="10" style="position: relative">
<el-col :lg="matchData.type=='0'?9:16" :md="12" :xl="10" class="father" style="position: relative">
<h3 style="margin: 0 0 10px">{{ matchData.name }}</h3>
<div v-if="matchData.type=='1'">
<p class="ppl">
......@@ -124,6 +124,7 @@
<label>{{ language == 0 ? '邮&nbsp;&nbsp;&nbsp;&nbsp;箱' : 'EMAIL' }}</label>
{{ matchData.contactEmail }}</p>
</div>
<div style="height: 30px" />
<div class="ppl_pb">
<el-link
......@@ -161,7 +162,75 @@
{{ language == 0 ? '赛事规程' : 'Competition Regulations' }}
</el-link>
</div>
<div v-if="matchData.type!=1" class="son">
<div v-if="matchData.chatQrcode">
<!-- <div style="font-size: 14px">群聊二维码</div>-->
<el-image
:preview-src-list="[fillImgUrl(matchData.chatQrcode)]"
:src="fillImgUrl(matchData.chatQrcode)"
fit="cover"
preview-teleported
style="width: 50px;height: 50px;margin-left: 10px"
/>
</div>
<div v-if="matchData.liveQrcode">
<!-- <div style="font-size: 14px">直播二维码</div>-->
<el-image
:preview-src-list="[fillImgUrl(matchData.liveQrcode) ]"
:src="fillImgUrl(matchData.liveQrcode)"
fit="cover"
preview-teleported
style="width: 50px;height: 50px;margin-left: 10px"
/>
</div>
<div v-if="matchData.qrcode">
<!-- <div style="font-size: 14px">赛事二维码</div>-->
<el-image
v-if="matchData.qrcode"
:preview-src-list="[fillImgUrl(matchData.qrcode)]"
:src="fillImgUrl(matchData.qrcode)"
fit="cover"
preview-teleported
style="width: 50px;height: 50px;margin-left: 10px"
/>
</div>
</div>
<div v-else class="son2">
<div v-if="matchData.chatQrcode">
<!-- <div style="font-size: 14px">群聊二维码</div>-->
<el-image
:preview-src-list="[fillImgUrl(matchData.chatQrcode)]"
:src="fillImgUrl(matchData.chatQrcode)"
fit="cover"
preview-teleported
style="width: 80px;height: 80px;margin-left: 10px"
/>
</div>
<div v-if="matchData.liveQrcode">
<!-- <div style="font-size: 14px">直播二维码</div>-->
<el-image
:preview-src-list="[fillImgUrl(matchData.liveQrcode) ]"
:src="fillImgUrl(matchData.liveQrcode)"
fit="cover"
preview-teleported
style="width: 80px;height: 80px;margin-left: 10px"
/>
</div>
{{ matchData.cptQrcode }}
<div>
<!-- <div style="font-size: 14px"></div>-->
<el-image
v-if="matchData.qrcode"
:preview-src-list="[fillImgUrl(matchData.qrcode)]"
:src="fillImgUrl(matchData.qrcode)"
fit="cover"
preview-teleported
style="width: 80px;height: 80px;margin-left: 10px"
/>
</div>
</div>
</el-col>
<el-col v-if="matchData.type=='0'" :lg="8" :md="12" :xl="8">
<p v-if="language==0" class="countDownTitle">
......@@ -424,7 +493,9 @@ import useUserStore from '@/store/modules/user'
import { useStorage } from '@vueuse/core/index'
import { Search } from '@element-plus/icons-vue'
import { preCheckForGroup } from '@/apiPc/match'
import { fillImgUrl } from '/@/utils/ruoyi'
const qrUrl = ref()
const user = useUserStore().user
const group = useUserStore().group
const data = reactive({
......@@ -499,6 +570,7 @@ function getMatch(id) {
loading.value = true
match.getMatchById({ id: id }).then(res => {
matchData.value = res.data
console.log(matchData.value)
loading.value = false
const today = dayjs().format('YYYY-MM-DD HH:mm:ss')
time.value = dayjs(res.data.signEndTime).diff(today, 'millisecond')
......@@ -971,6 +1043,22 @@ const reFlash = () => {
// 刷新
location.reload()
}
async function handelQR(id, type) {
let patch
if (type == 1) {
patch = '/pages_match/match/singleLs'
} else {
patch = '/pages_match/match/single'
}
const res = await match.getMiniappQrCode(id, patch)
if (res.data) {
qrUrl.value = 'data:image/gif;base64,' + res.data
} else {
qrUrl.value = undefined
}
}
</script>
<style lang="scss" scoped>
......@@ -1628,4 +1716,22 @@ const reFlash = () => {
}
}
}
.father {
position: relative;
.son {
position: absolute;
bottom: 0;
right: -10%;
display: flex;
}
.son2 {
position: absolute;
bottom: 0;
right: 10%;
display: flex;
}
}
</style>
......
......@@ -84,9 +84,10 @@ export default defineConfig(({ mode, command }) => {
},
'/dev-api': {
// target: 'http://192.168.1.118:8081/',
// target: 'http://192.168.1.118:8081',
target: 'https://jijin.wtwuxicenter.com/stage-api',
// target: 'http://192.168.1.129:8081',
// target: 'https://jijin.wtwuxicenter.com/stage-api',
// target: 'https://wdsfwuxicenter.com/stage-api/',
target: 'http://7s18uou5jv74.ngrok.xiaomiqiu123.top/',
changeOrigin: true,
rewrite: (p) => p.replace(/^\/dev-api/, '')
},
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!