吉林工行提交一次
|
@ -1 +0,0 @@
|
|||
.main-title-color[data-v-cc0dc560]{color:#d14328}
|
|
@ -1 +0,0 @@
|
|||
var t=Object.defineProperty,e=Object.defineProperties,a=Object.getOwnPropertyDescriptors,n=Object.getOwnPropertySymbols,o=Object.prototype.hasOwnProperty,s=Object.prototype.propertyIsEnumerable,l=(e,a,n)=>a in e?t(e,a,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[a]=n,i=(t,e)=>{for(var a in e||(e={}))o.call(e,a)&&l(t,a,e[a]);if(n)for(var a of n(e))s.call(e,a)&&l(t,a,e[a]);return t},r=(t,n)=>e(t,a(n)),c=(t,e,a)=>new Promise(((n,o)=>{var s=t=>{try{i(a.next(t))}catch(e){o(e)}},l=t=>{try{i(a.throw(t))}catch(e){o(e)}},i=t=>t.done?n(t.value):Promise.resolve(t.value).then(s,l);i((a=a.apply(t,e)).next())}));import{r as u,s as d,d as p,g as v,a as y,b as f,u as m,n as _,c as g,o as O,e as b,f as h,h as w,i as j,w as I,j as x,k,l as P,m as $,p as T,q as D,_ as L}from"./index-DLP_m7Cj.js";const C=t=>new Promise(((e,a)=>{u(r(i({},t),{dataType:"json",header:{"content-type":"application/json"},responseType:"json",success(t){var n,o,s;(null==(n=t.data)?void 0:n.code)>=200&&(null==(o=t.data)?void 0:o.code)<300?e(t.data):401===(null==(s=t.data)?void 0:s.code)?(window.parent.postMessage({data:{type:"logout"}},"*"),a(t)):e(t.data)},fail(t){d({icon:"none",title:"网络错误,换个网络试试"}),a(t)}}))}));C.get=(t,e)=>C({url:t,query:e,method:"GET"}),C.post=(t,e,a,n=!1)=>C({url:t,query:a,data:e,method:"POST",hideErrorToast:n});const E=t=>C.get("/v1/content",t),S=L(p(r(i({},{name:"Home"}),{__name:"index",setup(t){const{safeAreaInsets:e}=v(),a=y({}),n=f(""),o=f(""),s=m();let l="activity",i=null;const r={Interface:"api_code",lottery:"lottery_code",activity:"activity_code"},u=y({url:"",title:""});function p(){return c(this,null,(function*(){const t={};t[r[l]]=n.value||"",s.reset();L(yield E(t))}))}function L(t){if(200===t.code){const{login_content_template:e,login_content_templates:l,content_templates:i,token:r}=t.data;n.value=t.data.activity_code,Object.assign(a,t.data),1===e.validate_login?Object.assign(u,{url:C(l.source+`?activity_code=${n.value}`),title:l.moduledesc}):2===e.validate_login&&Object.assign(u,{url:C(i.source+`?activity_code=${n.value}&token=${r}`),title:i.moduledesc}),g({title:u.title}),s.setUserInfo({srcList:u,contentData:a,activityCode:n.value,token:r,lottery:o.value})}else d({title:t.message,icon:"none"})}function C(t){const e=(new Date).getTime();return t+(t.includes("?")?"×tamp=":"?timestamp=")+e}window.parent.addEventListener("message",(function(t){let e={url:"",title:""};switch(t.data.data.type){case"login":case"couponBack":e={url:a.content_templates.source+`?activity_code=${n.value}`,title:a.content_templates.moduledesc};break;case"coupon":e={url:a.user_content_templates.source+`?activity_code=${n.value}`,title:a.user_content_templates.moduledesc};break;case"product":const o=`product_id=${t.data.data.product_id}&id=${t.data.data.id}&activity_code=${n.value}`,s=encodeURIComponent(o);e={url:a.user_content_templates.source+`#/pages/coupon/product?url=${s}`,title:a.user_content_templates.moduledesc};break;case"logout":return p()}_((()=>{Object.assign(u,{url:C(e.url),title:e.title}),g({title:u.title}),s.setUserInfo({srcList:u,contentData:a,activityCode:n.value,token:a.token,lottery:o.value})}))}));const S=()=>{i=setInterval((()=>c(this,null,(function*(){const t={};t[r[l]]=o.value||"";const e=yield E(t);JSON.stringify(e.data)!==JSON.stringify(s.userInfo.contentData)&&(d({title:"活动发生变更",icon:"none"}),L(e))}))),6e4)};return O((()=>{n.value=(()=>{const t=window.location.href;if(-1!==t.indexOf("#/")){let e="";const a=-1!==t.indexOf("#/")?t.split("#/")[1]:t.split("/")[t.split("/").length-1];return e=-1===a.indexOf("/")?a||"":a.split("/")[0],-1===e.indexOf("-")?l="activity":(l=e.split("-")[0],e=e.split("-")[1]),e}if(-1!==t.indexOf("?")){let e="";return e=t.split("=")[1],l=e.split("-")[0],e.split("-")[1]}{const e=t.split("/"),a=e[e.length-1];let n="";return-1===a.indexOf("-")?(n=a,l="activity"):(l=a.split("-")[0],n=a.split("-")[1]),n}})(),o.value=n.value,!s.userInfo.srcList.url||s.userInfo.lottery!==o.value&&s.userInfo.activityCode!==n.value?p():(n.value=s.userInfo.activityCode,Object.assign(u,s.userInfo.srcList,{url:C(s.userInfo.srcList.url)}),Object.assign(a,s.userInfo.contentData),g({title:u.title})),S()})),b((()=>{clearInterval(i),i=null})),(t,a)=>{const n=T,o=D,s=h("layout-default-uni");return w(),j(s,null,{default:I((()=>{var t;return[x(o,{class:"bg-white overflow-hidden pt-2 px-4",style:$({marginTop:(null==(t=k(e))?void 0:t.top)+"px"})},{default:I((()=>[k(u).url?(w(),j(n,{key:0,src:k(u).url},null,8,["src"])):P("",!0)])),_:1},8,["style"])]})),_:1})}}})),[["__scopeId","data-v-cc0dc560"]]);export{S as default};
|
|
@ -1,7 +1,7 @@
|
|||
<!doctype html>
|
||||
<html build-date="2024-07-10 11:36:57">
|
||||
<html build-date="2024-07-12 18:36:23">
|
||||
<head>
|
||||
<link rel="stylesheet" href="./assets/uni.ad4bcb33.css">
|
||||
<link rel="stylesheet" href="./assets/uni.b8118566.css">
|
||||
|
||||
<meta charset="UTF-8" />
|
||||
<!-- <link rel="shortcut icon" href="favicon.ico" type="image/x-icon" /> -->
|
||||
|
@ -19,8 +19,8 @@
|
|||
<title>场景营销</title>
|
||||
<!--preload-links-->
|
||||
<!--app-context-->
|
||||
<script type="module" crossorigin src="./assets/index-DLP_m7Cj.js"></script>
|
||||
<link rel="stylesheet" crossorigin href="./assets/index-DfE4H0b6.css">
|
||||
<script type="module" crossorigin src="./assets/index-B8Jl9LC_.js"></script>
|
||||
<link rel="stylesheet" crossorigin href="./assets/index-Uzx5Hyrd.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
|
|
@ -41,16 +41,60 @@ export default defineUniPages({
|
|||
],
|
||||
},
|
||||
pages: [
|
||||
// {
|
||||
// path: 'pages/index/index',
|
||||
// type: 'home',
|
||||
// style: {
|
||||
// navigationStyle: 'custom',
|
||||
// },
|
||||
// },
|
||||
{
|
||||
path: 'pages/index/index',
|
||||
path: 'pages/jlgh/login',
|
||||
type: 'home',
|
||||
style: {
|
||||
navigationStyle: 'custom',
|
||||
},
|
||||
},
|
||||
{
|
||||
path: 'pages/jlgh/index',
|
||||
type: 'page',
|
||||
style: {
|
||||
navigationStyle: 'custom',
|
||||
},
|
||||
},
|
||||
{
|
||||
path: 'pages/jlgh/coupon',
|
||||
type: 'page',
|
||||
style: {
|
||||
navigationStyle: 'custom',
|
||||
},
|
||||
},
|
||||
{
|
||||
path: 'pages/jlgh/redeem',
|
||||
type: 'page',
|
||||
style: {
|
||||
navigationStyle: 'custom',
|
||||
},
|
||||
},
|
||||
],
|
||||
})
|
||||
|
||||
// 吉林工行活动页
|
||||
// {
|
||||
// path: 'pages/jlgh/login',
|
||||
// type: 'home',
|
||||
// style: {
|
||||
// navigationStyle: 'custom',
|
||||
// },
|
||||
// },
|
||||
// {
|
||||
// path: 'pages/jlgh/index',
|
||||
// type: 'page',
|
||||
// style: {
|
||||
// navigationStyle: 'custom',
|
||||
// },
|
||||
// }
|
||||
|
||||
// 工行-卡券页
|
||||
// {
|
||||
// path: 'pages/coupon/index',
|
||||
|
|
|
@ -16,6 +16,11 @@ onHide(() => {
|
|||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
body {
|
||||
font-family:
|
||||
PingFang SC,
|
||||
Source Han Sans;
|
||||
}
|
||||
/* stylelint-disable selector-type-no-unknown */
|
||||
button::after {
|
||||
border: none;
|
||||
|
|
|
@ -55,6 +55,9 @@ const httpInterceptor = {
|
|||
const { token } = userStore.userInfo as unknown as IUserInfo
|
||||
if (token) {
|
||||
options.header.Authorization = `Bearer ${token}`
|
||||
} else {
|
||||
const testToken = `bff4bdbc2f91207fd0333f418ca828c1ac5`
|
||||
options.header.Authorization = `Bearer ${testToken}`
|
||||
}
|
||||
},
|
||||
}
|
||||
|
|
|
@ -39,11 +39,33 @@
|
|||
},
|
||||
"pages": [
|
||||
{
|
||||
"path": "pages/index/index",
|
||||
"path": "pages/jlgh/login",
|
||||
"type": "home",
|
||||
"style": {
|
||||
"navigationStyle": "custom"
|
||||
}
|
||||
},
|
||||
{
|
||||
"path": "pages/jlgh/coupon",
|
||||
"type": "page",
|
||||
"style": {
|
||||
"navigationStyle": "custom"
|
||||
}
|
||||
},
|
||||
{
|
||||
"path": "pages/jlgh/index",
|
||||
"type": "page",
|
||||
"layout": "default",
|
||||
"style": {
|
||||
"navigationStyle": "custom"
|
||||
}
|
||||
},
|
||||
{
|
||||
"path": "pages/jlgh/redeem",
|
||||
"type": "page",
|
||||
"style": {
|
||||
"navigationStyle": "custom"
|
||||
}
|
||||
}
|
||||
],
|
||||
"subPackages": []
|
||||
|
|
|
@ -241,7 +241,8 @@ const intervalData = () => {
|
|||
}
|
||||
|
||||
onLoad(() => {
|
||||
activityCode.value = getUrlPathName()
|
||||
// activityCode.value = getUrlPathName()
|
||||
activityCode.value = 'TT123copycopycopy'
|
||||
lottery.value = activityCode.value
|
||||
if (
|
||||
!useStore.userInfo.srcList.url ||
|
||||
|
|
|
@ -0,0 +1,53 @@
|
|||
import { http } from '@/utils/http'
|
||||
export interface IFooItem {
|
||||
id: string
|
||||
name: string
|
||||
}
|
||||
|
||||
export const getSms = (params: any) => {
|
||||
return http.get('/v1/service/sms', params)
|
||||
}
|
||||
|
||||
export const getLogin = (params: any) => {
|
||||
return http.post('/v1/user/login', params)
|
||||
}
|
||||
|
||||
export const getCode = (params: any) => {
|
||||
return http.post('/v1/auth/user/equities/code', params)
|
||||
}
|
||||
|
||||
export const getCouponList = (params: any) => {
|
||||
return http.get('/v1/auth/user/coupon/list', params)
|
||||
}
|
||||
|
||||
export const getProducts = (params: any) => {
|
||||
return http.get('/v1/activity/products', params)
|
||||
}
|
||||
|
||||
export const lottery = (params: any) => {
|
||||
return http.post('/v1/lottery', params)
|
||||
}
|
||||
|
||||
export const exchange = (params: any) => {
|
||||
return http.post('/v1/auth/user/coupon/exchange', params)
|
||||
}
|
||||
|
||||
export const getProductDetail = (params: any) => {
|
||||
return http.get('/v1/activity/product/detail', params)
|
||||
}
|
||||
|
||||
export const getOrderDetail = (params: any) => {
|
||||
return http.get('/v1/auth/user/order/detail', params)
|
||||
}
|
||||
|
||||
export default {
|
||||
getSms,
|
||||
getLogin,
|
||||
getCode,
|
||||
getCouponList,
|
||||
getProducts,
|
||||
lottery,
|
||||
exchange,
|
||||
getProductDetail,
|
||||
getOrderDetail,
|
||||
}
|
|
@ -0,0 +1,275 @@
|
|||
<template>
|
||||
<scroll-view scroll-y class="page-wrapper">
|
||||
<view v-if="list.length" class="page-container">
|
||||
<view v-for="(item, index) in list" :key="index" class="mt30 pos bgwhite ptb30 plr20">
|
||||
<view
|
||||
class="abs f18 f-center"
|
||||
style="
|
||||
top: 0;
|
||||
right: 0;
|
||||
width: 82rpx;
|
||||
height: 38rpx;
|
||||
line-height: 38rpx;
|
||||
color: #c0513d;
|
||||
background: #fceceb;
|
||||
border-radius: 0rpx 20rpx;
|
||||
"
|
||||
>
|
||||
新获得
|
||||
</view>
|
||||
<view>
|
||||
<view class="flex_between flex_items mt30 bbe9s pb20" style="width: calc(100% - 40rpx)">
|
||||
<view class="flex_start flex_items">
|
||||
<view style="width: 120rpx; height: 120rpx; border-radius: 12rpx">
|
||||
<image
|
||||
:src="item.show_pic"
|
||||
style="width: 120rpx; height: 120rpx; border-radius: 12rpx"
|
||||
mode=""
|
||||
></image>
|
||||
<!-- <image
|
||||
v-if="item.prize_type == 2"
|
||||
:src="item.prize_data.main_image"
|
||||
style="width: 120rpx; height: 120rpx; border-radius: 12rpx"
|
||||
mode=""
|
||||
></image> -->
|
||||
</view>
|
||||
<view class="ml30 flex_column" style="width: 350rpx">
|
||||
<view class="f30 bold three">{{ item.show_name }}</view>
|
||||
<text class="f30 mt30" style="color: #888">{{ item.expiration_time }}</text>
|
||||
</view>
|
||||
</view>
|
||||
<view class="flex_start flex_items mr20" style="color: #eb5e42">
|
||||
<view class="f24">¥</view>
|
||||
<text class="f48 bolder one">{{ item.amount }}</text>
|
||||
</view>
|
||||
</view>
|
||||
<view class="mt40 flex_between flex_items">
|
||||
<text class="f28" style="color: #4d4d4d">
|
||||
{{ item.activity_title }}
|
||||
</text>
|
||||
<view class="flex_start flex_items">
|
||||
<view
|
||||
v-if="item.status == 1"
|
||||
@click="dui(item)"
|
||||
class="f24 f-center mr20"
|
||||
style="
|
||||
width: 124rpx;
|
||||
height: 48rpx;
|
||||
line-height: 48rpx;
|
||||
color: #a0a0a0;
|
||||
background: #fff;
|
||||
border: 1px solid #e9e9e9;
|
||||
border-radius: 23rpx;
|
||||
"
|
||||
>
|
||||
兑换
|
||||
</view>
|
||||
<!-- <view
|
||||
v-else
|
||||
class="f24 f-center mr20"
|
||||
style="
|
||||
width: 124rpx;
|
||||
height: 48rpx;
|
||||
line-height: 48rpx;
|
||||
color: #a0a0a0;
|
||||
background: #fff;
|
||||
border: 1rpx solid #e9e9e9;
|
||||
border-radius: 23rpx;
|
||||
"
|
||||
>
|
||||
兑换中
|
||||
</view> -->
|
||||
<view
|
||||
v-else
|
||||
class="f24 f-center mr20"
|
||||
style="
|
||||
width: 124rpx;
|
||||
height: 48rpx;
|
||||
line-height: 48rpx;
|
||||
color: #a0a0a0;
|
||||
background: #fff;
|
||||
border: 1 px solid #e9e9e9;
|
||||
border-radius: 23rpx;
|
||||
"
|
||||
>
|
||||
已兑换
|
||||
</view>
|
||||
<!-- <view
|
||||
@click="gomypre(item.prize_data.id)"
|
||||
class="f24 f-center"
|
||||
style="
|
||||
width: 124rpx;
|
||||
height: 48rpx;
|
||||
line-height: 48rpx;
|
||||
color: #fff;
|
||||
background: linear-gradient(90deg, #ea5c41 0%, #ec7852 100%);
|
||||
border-radius: 23rpx;
|
||||
"
|
||||
>
|
||||
查看
|
||||
</view> -->
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view
|
||||
v-else
|
||||
class="flex_center flex_items f24"
|
||||
style="width: 100%; height: 600rpx; color: #888"
|
||||
>
|
||||
<text>--暂无数据--</text>
|
||||
</view>
|
||||
</scroll-view>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup>
|
||||
import api from './api'
|
||||
|
||||
const istrue = ref<boolean>(false)
|
||||
const isShow = ref<boolean>(false)
|
||||
const list = reactive<any>([])
|
||||
const query = reactive<any>({
|
||||
activity_code: 'zgp',
|
||||
})
|
||||
|
||||
const dui = (item) => {
|
||||
item.activity_code = query.activity_code
|
||||
uni.navigateTo({
|
||||
url: '/pages/jlgh/redeem?item=' + JSON.stringify(item),
|
||||
})
|
||||
}
|
||||
|
||||
const gomypre = (idx) => {
|
||||
if (idx.status === 1) {
|
||||
const url =
|
||||
'product_id=' +
|
||||
idx.product_id +
|
||||
'&id=' +
|
||||
idx.id +
|
||||
'&activity_code=' +
|
||||
query.activity_code +
|
||||
'&mobile=' +
|
||||
idx.mobile +
|
||||
'&account_type=' +
|
||||
idx.account_type +
|
||||
'&product_form=' +
|
||||
idx.product_form
|
||||
const newUrl = encodeURIComponent(url)
|
||||
uni.navigateTo({
|
||||
url: '/pages/tt-coupon/product?url=' + newUrl,
|
||||
})
|
||||
} else {
|
||||
if (idx.product_form === 3) {
|
||||
uni.showModal({
|
||||
content: `卡密:${idx.order_info}`,
|
||||
showCancel: false,
|
||||
})
|
||||
} else if (idx.product_form === 1) {
|
||||
idx.order_info && window.open(idx.order_info)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function getData() {
|
||||
const params = {
|
||||
page: 1,
|
||||
page_size: 10,
|
||||
activity_code: query.activity_code,
|
||||
}
|
||||
api.getCouponList(params).then((res: any) => {
|
||||
if (res.code === 200) {
|
||||
uni.stopPullDownRefresh()
|
||||
uni.hideLoading()
|
||||
if (res.data.data.length === 0) {
|
||||
uni.showToast({
|
||||
title: '暂无数据',
|
||||
icon: 'none',
|
||||
})
|
||||
istrue.value = true
|
||||
return false
|
||||
}
|
||||
istrue.value = true
|
||||
for (let i = 0; i < res.data.data.length; i++) {
|
||||
// res.data.data[i].prize_data = JSON.parse(res.data.data.data[i].prize_data)
|
||||
list.push(res.data.data[i])
|
||||
}
|
||||
} else {
|
||||
istrue.value = true
|
||||
uni.hideLoading()
|
||||
uni.showToast({
|
||||
icon: 'none',
|
||||
title: res.message,
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
const getUrlParm = () => {
|
||||
const url = window.location.href
|
||||
const theRequest = {}
|
||||
if (url.indexOf('?') !== -1) {
|
||||
const index = url.indexOf('?')
|
||||
let str = url.slice(index + 1)
|
||||
str = str.indexOf('#') !== -1 ? str.split('#')[0] : str
|
||||
const strs = str.split('&')
|
||||
for (let i = 0; i < strs.length; i++) {
|
||||
theRequest[strs[i].split('=')[0]] = strs[i].split('=')[1]
|
||||
}
|
||||
}
|
||||
return theRequest
|
||||
}
|
||||
|
||||
onNavigationBarButtonTap((options) => {
|
||||
if (options.index === 0) {
|
||||
window.parent.postMessage(
|
||||
{
|
||||
data: {
|
||||
type: 'couponBack',
|
||||
},
|
||||
},
|
||||
'*',
|
||||
)
|
||||
return false
|
||||
}
|
||||
})
|
||||
|
||||
onLoad(() => {
|
||||
Object.assign(query, getUrlParm())
|
||||
getData()
|
||||
})
|
||||
</script>
|
||||
|
||||
<style>
|
||||
@import './style.css';
|
||||
.page-wrapper {
|
||||
box-sizing: border-box;
|
||||
width: 100vw;
|
||||
height: 100vh;
|
||||
overflow-y: auto;
|
||||
background: #f2f4f3;
|
||||
}
|
||||
.page-container {
|
||||
box-sizing: border-box;
|
||||
display: inline-block;
|
||||
width: 100%;
|
||||
padding: 0 28rpx;
|
||||
}
|
||||
|
||||
.three {
|
||||
display: -webkit-box;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
-webkit-line-clamp: 2;
|
||||
-webkit-box-orient: vertical;
|
||||
}
|
||||
|
||||
.one {
|
||||
display: -webkit-box;
|
||||
width: 150rpx;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
-webkit-line-clamp: 1;
|
||||
-webkit-box-orient: vertical;
|
||||
}
|
||||
</style>
|
|
@ -0,0 +1,598 @@
|
|||
<route lang="json5" type="page">
|
||||
{
|
||||
layout: 'default',
|
||||
style: {
|
||||
navigationStyle: 'custom',
|
||||
},
|
||||
}
|
||||
</route>
|
||||
|
||||
<template>
|
||||
<view class="index" style="border: 1px solid transparent">
|
||||
<!-- 中将 -->
|
||||
<view class="mask flex_items flex_column flex_center" v-if="ismask2">
|
||||
<view class="mk2 plr50 flex_column flex_items" style="">
|
||||
<view class="flex-col-center flex_items" style="width: 100%; padding-top: 50rpx">
|
||||
<text v-if="isz == 1" class="f36 bold" style="margin-top: 100rpx; color: #003a6e">
|
||||
恭喜您获得
|
||||
</text>
|
||||
<text v-if="isz == 0" class="f36 bold" style="margin-top: 100rpx; color: #003a6e"></text>
|
||||
</view>
|
||||
<text class="f40 mt40" style="color: #003a6e">{{ jiang }}</text>
|
||||
<text v-if="isz === 1" class="f24 mt10" style="color: #003a6e">请到【我的奖品】中查看</text>
|
||||
<view
|
||||
v-if="isz == 1"
|
||||
@click="mypre"
|
||||
class="mt50 f-center f28"
|
||||
style="
|
||||
width: 336rpx;
|
||||
height: 72rpx;
|
||||
line-height: 72rpx;
|
||||
color: #fff;
|
||||
background: #db8267;
|
||||
border-radius: 68rpx;
|
||||
"
|
||||
>
|
||||
去查看
|
||||
</view>
|
||||
</view>
|
||||
<image
|
||||
src="@/static/images/jlgh/guan1.png"
|
||||
@click="closemsk"
|
||||
style="width: 52rpx; height: 52rpx; margin-top: 150rpx"
|
||||
mode=""
|
||||
></image>
|
||||
</view>
|
||||
<!-- mask -->
|
||||
<view class="mask flex_items flex_center" v-if="ismask" @click="closemsk">
|
||||
<view class="mk plr50" style="">
|
||||
<view class="flex_between flex_items mt40 mlr30">
|
||||
<view></view>
|
||||
<text class="f30 bold" style="color: #003a6e">活动规则111</text>
|
||||
<image
|
||||
src="../../static/images/jlgh/guan.png"
|
||||
@click="closemsk"
|
||||
style="width: 36rpx; height: 36rpx"
|
||||
mode=""
|
||||
></image>
|
||||
</view>
|
||||
<rich-text v-if="contentMsg" :nodes="contentMsg"></rich-text>
|
||||
<view v-else class="f24 mt30 mlr30" style="color: #2b6da8">
|
||||
<view>1.【活动时间】2023年11月1日至2023年12月 31日</view>
|
||||
<view class="mt20">
|
||||
2.【活动内容】此为文字内容此为文字内容此为文字内容此为文字内容此为文字内容此为文字内容此为文字内容此为文字内容此为文字内容此为文字内容此为文字内容此为文字内容此为文字内容。
|
||||
</view>
|
||||
<view class="mt20">
|
||||
3.【活动细则】此为文字内容此为文字内容此为文字内容此为文字内容此为文字内容此为文字内容此为文字内容此为文字内容此为文字内容此为文字内容此为文字内容此为文字内容此为文字内容。
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="pos flex-center flex_items" style="margin-top: 52rpx">
|
||||
<image src="../../static/images/jlgh/title.png" mode="" class="banner"></image>
|
||||
<image src="../../static/images/jlgh/big-title.png" mode="" class="big-banner"></image>
|
||||
</view>
|
||||
<view class="flex_items flex_center">
|
||||
<view class="t2 flex_items flex_center">
|
||||
<text class="f22 tips">一汽代发工资客户专属活动</text>
|
||||
</view>
|
||||
</view>
|
||||
<view class="flex_between">
|
||||
<view></view>
|
||||
<view class="flex_column flex_items mt50">
|
||||
<view
|
||||
@click="openmask"
|
||||
class="tagr flex_items flex_center"
|
||||
style="z-index: 8; color: #f67b24"
|
||||
>
|
||||
<text class="f24">活动规则</text>
|
||||
<wd-icon
|
||||
name="arrow-right"
|
||||
size="16px"
|
||||
style="margin-top: 2rpx; margin-left: 6rpx"
|
||||
></wd-icon>
|
||||
</view>
|
||||
<view
|
||||
@click="mypre"
|
||||
class="tagr flex_items flex_center mt20"
|
||||
style="z-index: 8; color: #f67b24"
|
||||
>
|
||||
<text class="f24">我的奖品</text>
|
||||
<wd-icon
|
||||
name="arrow-right"
|
||||
size="16px"
|
||||
style="margin-top: 2rpx; margin-left: 6rpx"
|
||||
></wd-icon>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="pos">
|
||||
<almost-lottery
|
||||
:lotteryBg="lotteryBg"
|
||||
:colors="['#fff', '#FFDFD4']"
|
||||
:strFontColors="['#FF4100', '#FF4100']"
|
||||
:strMarginOutside="30"
|
||||
:imgMarginStr="50"
|
||||
:imgWidth="62"
|
||||
:imgHeight="38"
|
||||
:imgCircled="false"
|
||||
:lottery-size="lotteryConfig.lotterySize"
|
||||
:ring-count="6"
|
||||
:duration="2"
|
||||
:self-rotaty="false"
|
||||
:img-circled="true"
|
||||
:canvasCached="true"
|
||||
:prize-list="prizeList"
|
||||
:prize-index="prizeIndex"
|
||||
@reset-index="prizeIndex = -1"
|
||||
@draw-before="handleDrawBefore"
|
||||
@draw-start="handleDrawStart"
|
||||
@draw-end="handleDrawEnd"
|
||||
@finish="handleDrawFinish"
|
||||
v-if="prizeList.length"
|
||||
/>
|
||||
<view class="flex_items flex_center pos" style="">
|
||||
<view
|
||||
@click="submit"
|
||||
style="
|
||||
top: 100rpx;
|
||||
left: 50%;
|
||||
z-index: 2;
|
||||
width: 176rpx;
|
||||
height: 80rpx;
|
||||
transform: translate(-50%);
|
||||
"
|
||||
class="abs"
|
||||
></view>
|
||||
<image
|
||||
class="abs"
|
||||
:src="dizuo"
|
||||
style="top: -720rpx; left: 5 0%; width: 80%"
|
||||
mode="widthFix"
|
||||
></image>
|
||||
</view>
|
||||
</view>
|
||||
<!-- 次数 -->
|
||||
<view class="flex_items flex_center" style="margin-top: 290rpx">
|
||||
<view
|
||||
class="f28 f-center"
|
||||
style="
|
||||
width: 300rpx;
|
||||
height: 72rpx;
|
||||
line-height: 72rpx;
|
||||
color: #fff;
|
||||
background: linear-gradient(135deg, #e9533b 0%, #f8a797 100%);
|
||||
border-radius: 16rpx;
|
||||
"
|
||||
>
|
||||
剩余抽奖次数: {{ freeNum }}次
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import AlmostLottery from '@/uni_modules/almost-lottery/components/almost-lottery/almost-lottery.vue'
|
||||
// import { clearCacheFile, clearStore } from '@/uni_modules/almost-lottery/utils/almost-utils.js'
|
||||
import lotteryBg from '../../static/images/jlgh/panpan.png'
|
||||
import dizuo from '../../static/images/jlgh/dizuo.png'
|
||||
import Api from './api'
|
||||
import { useUserStore } from '@/store'
|
||||
export default {
|
||||
name: 'Home',
|
||||
components: {
|
||||
AlmostLottery,
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
// 以下是转盘配置相关数据
|
||||
lotteryConfig: {
|
||||
lotterySize: 600, // 抽奖转盘的整体尺寸,单位rpx
|
||||
actionSize: 180, // 抽奖按钮的尺寸,单位rpx
|
||||
},
|
||||
lotteryBg, // 转盘外环图,如有需要,请参考替换为自己的设计稿
|
||||
prizeList: [], // 奖品数据
|
||||
prizeIndex: -1, // 中奖下标
|
||||
prizeing: false, // 是否正在抽奖中,避免重复触发
|
||||
// 以下与业务相关
|
||||
lottery_code: '',
|
||||
freeNum: 0, // 抽奖次数
|
||||
loading: false,
|
||||
rules: [],
|
||||
dizuo,
|
||||
jiang: '',
|
||||
ismask2: false,
|
||||
ismask: false,
|
||||
isz: 1,
|
||||
activity_code: '',
|
||||
contentMsg: '',
|
||||
isStatus: false,
|
||||
id: '',
|
||||
}
|
||||
},
|
||||
onLoad(options) {
|
||||
// eslint-disable-next-line camelcase
|
||||
const { activity_code = 'TT123copycopy', token } = this.getUrlParams()
|
||||
const useStore = useUserStore()
|
||||
if (token) {
|
||||
useStore.setUserInfo({ token })
|
||||
}
|
||||
// eslint-disable-next-line camelcase
|
||||
this.activity_code = activity_code
|
||||
// const token = 'eb1272c9c7e5f5032e75aa76222f63ae91'
|
||||
// const useStore = useUserStore()
|
||||
// useStore.setUserInfo({ token })
|
||||
this.prizeList = []
|
||||
this.getConfig()
|
||||
},
|
||||
created() {},
|
||||
mounted() {},
|
||||
onUnload() {
|
||||
uni.hideLoading()
|
||||
},
|
||||
methods: {
|
||||
getUrlParams() {
|
||||
const url = window.location.href
|
||||
const theRequest = {}
|
||||
if (url.indexOf('?') !== -1) {
|
||||
const index = url.indexOf('?')
|
||||
let str = url.slice(index + 1)
|
||||
str = str.indexOf('#') !== -1 ? str.split('#')[0] : str
|
||||
const strs = str.split('&')
|
||||
for (let i = 0; i < strs.length; i++) {
|
||||
theRequest[strs[i].split('=')[0]] = strs[i].split('=')[1]
|
||||
}
|
||||
}
|
||||
return theRequest
|
||||
},
|
||||
// 活动活动配置信息
|
||||
getConfig() {
|
||||
// uni.showLoading({
|
||||
// title: '加载中...',
|
||||
// })
|
||||
const params = {
|
||||
activity_code: this.activity_code,
|
||||
}
|
||||
Api.getCode(params).then((res) => {
|
||||
uni.hideLoading()
|
||||
if (res.code === 200) {
|
||||
// eslint-disable-next-line camelcase
|
||||
const { activity_info, status, lottery_code, lottery_count, use_lottery_count } = res.data
|
||||
// eslint-disable-next-line camelcase
|
||||
this.freeNum = lottery_count - use_lottery_count
|
||||
this.freeNum = this.freeNum > 0 ? this.freeNum : 0
|
||||
// eslint-disable-next-line camelcase
|
||||
this.status = activity_info?.status || 0
|
||||
// eslint-disable-next-line camelcase
|
||||
this.lottery_code = lottery_code
|
||||
// eslint-disable-next-line camelcase
|
||||
this.contentMsg = activity_info.activity_description
|
||||
if (res.data.status === 3) {
|
||||
this.isStatus = true
|
||||
uni.showToast({
|
||||
title: '权益已失效',
|
||||
icon: 'none',
|
||||
})
|
||||
}
|
||||
this.getPrizeList()
|
||||
} else {
|
||||
uni.showToast({
|
||||
title: res.message,
|
||||
icon: 'error',
|
||||
})
|
||||
}
|
||||
})
|
||||
},
|
||||
// 获取奖品列表
|
||||
getPrizeList() {
|
||||
Api.getProducts({
|
||||
activity_code: this.activity_code || 'zgp',
|
||||
}).then((res) => {
|
||||
if (res.code === 200) {
|
||||
const { products } = res.data
|
||||
products.length > 0 &&
|
||||
products.forEach((item) => {
|
||||
this.prizeList.push({
|
||||
prizeId: item.product_id,
|
||||
prizeName: item.show_name,
|
||||
name: item.show_name,
|
||||
})
|
||||
})
|
||||
this.prizeList.push({
|
||||
prizeId: 0,
|
||||
prizeName: '谢谢参与',
|
||||
name: '未中奖',
|
||||
})
|
||||
} else {
|
||||
uni.showToast({
|
||||
title: res.message,
|
||||
icon: 'none',
|
||||
})
|
||||
}
|
||||
})
|
||||
},
|
||||
// 抽奖开始之前
|
||||
handleDrawBefore(callback) {
|
||||
// 还有免费数次足够抽一次
|
||||
if (this.freeNum > 0) {
|
||||
this.handleDrawStart()
|
||||
} else {
|
||||
uni.showToast({
|
||||
title: '抽奖次数已用完',
|
||||
icon: 'error',
|
||||
})
|
||||
}
|
||||
},
|
||||
// 本次抽奖开始
|
||||
handleDrawStart() {
|
||||
console.log('触发抽奖按钮')
|
||||
if (this.prizeing) {
|
||||
uni.showToast({
|
||||
title: '抽奖还未结束',
|
||||
icon: 'none',
|
||||
})
|
||||
return false
|
||||
}
|
||||
this.prizeing = true
|
||||
this.tryLotteryDraw()
|
||||
},
|
||||
// 尝试发起抽奖
|
||||
tryLotteryDraw() {
|
||||
const params = {
|
||||
lottery_code: this.lottery_code,
|
||||
}
|
||||
if (this.status === 1 || this.status === 5) {
|
||||
this.prizeing = false
|
||||
uni.showToast({
|
||||
title: '活动未开始',
|
||||
icon: 'error',
|
||||
})
|
||||
return
|
||||
}
|
||||
if (this.status === 3 || this.status === 4) {
|
||||
this.prizeing = false
|
||||
uni.showToast({
|
||||
title: '活动已结束',
|
||||
icon: 'error',
|
||||
})
|
||||
return
|
||||
}
|
||||
if (this.prizeList.length === 0 || this.prizeList.length === 1) {
|
||||
this.prizeing = false
|
||||
uni.showToast({
|
||||
title: '无抽奖商品',
|
||||
icon: 'error',
|
||||
})
|
||||
return
|
||||
}
|
||||
if (this.status !== 2) {
|
||||
this.prizeing = false
|
||||
uni.showToast({
|
||||
title: '活动异常',
|
||||
icon: 'error',
|
||||
})
|
||||
return
|
||||
}
|
||||
Api.lottery(params)
|
||||
.then((res) => {
|
||||
this.freeNum = res.data.lottery_count
|
||||
if (res.code === 200) {
|
||||
// eslint-disable-next-line camelcase
|
||||
const { coupon_id, product_id, product_index } = res.data
|
||||
// eslint-disable-next-line camelcase
|
||||
const index = this.prizeList.findIndex((item) => item.prizeId === product_id)
|
||||
this.prizeIndex = index
|
||||
} else if (res.message === '未中奖') {
|
||||
this.prizeIndex = this.prizeList.findIndex((ele) => ele.prizeId === 0)
|
||||
} else {
|
||||
this.prizeing = false
|
||||
uni.showToast({
|
||||
title: res.message,
|
||||
icon: 'none',
|
||||
})
|
||||
}
|
||||
})
|
||||
.catch(() => {
|
||||
// this.prizeIndex = this.prizeList.findIndex((ele) => ele.prizeId === 0)
|
||||
})
|
||||
},
|
||||
// 本次抽奖结束
|
||||
handleDrawEnd() {
|
||||
console.log('旋转结束,执行拿到结果后到逻辑')
|
||||
// 旋转结束后,开始处理拿到结果后的逻辑
|
||||
const prizeName = this.prizeList[this.prizeIndex].name
|
||||
console.log('2222', prizeName)
|
||||
let tipContent = ''
|
||||
if (prizeName === '谢谢参与' || prizeName === '未中奖') {
|
||||
tipContent = '很遗憾,没有中奖,请再接再厉!'
|
||||
this.isz = 0
|
||||
} else {
|
||||
this.isz = 1
|
||||
tipContent = `恭喜您,获得 ${prizeName} !`
|
||||
}
|
||||
this.jiang = tipContent
|
||||
this.prizeing = false
|
||||
this.ismask2 = true
|
||||
},
|
||||
// 抽奖转盘绘制完成
|
||||
handleDrawFinish(res) {
|
||||
console.log('抽奖转盘绘制完成', res)
|
||||
if (res.ok) {
|
||||
// 计算结束绘制的时间
|
||||
if (console.timeEnd) {
|
||||
console.timeEnd('绘制转盘用时')
|
||||
}
|
||||
}
|
||||
let stoTimer = setTimeout(() => {
|
||||
stoTimer = null
|
||||
uni.hideLoading()
|
||||
uni.showToast({
|
||||
title: res.msg,
|
||||
mask: true,
|
||||
icon: 'none',
|
||||
})
|
||||
}, 50)
|
||||
},
|
||||
|
||||
submit() {
|
||||
if (this.freeNum > 0) {
|
||||
this.handleDrawStart()
|
||||
} else {
|
||||
uni.showToast({
|
||||
title: '抽奖次数已用完',
|
||||
icon: 'error',
|
||||
})
|
||||
}
|
||||
},
|
||||
mypre() {
|
||||
// window.parent.postMessage(
|
||||
// {
|
||||
// data: {
|
||||
// message: 'success',
|
||||
// type: 'coupon',
|
||||
// },
|
||||
// },
|
||||
// '*',
|
||||
// )
|
||||
console.log(111)
|
||||
uni.navigateTo({
|
||||
url: '/pages/jlgh/coupon',
|
||||
})
|
||||
},
|
||||
closemsk() {
|
||||
this.ismask = false
|
||||
this.ismask2 = false
|
||||
},
|
||||
openmask() {
|
||||
this.ismask = true
|
||||
},
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
@import './style.css';
|
||||
.index {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100vh;
|
||||
overflow: auto;
|
||||
background: url('@/static/images/jlgh/bg-index.png') no-repeat left top #d8231c;
|
||||
background-size: 100% 100%;
|
||||
|
||||
.navRight {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
width: 144rpx;
|
||||
height: 46rpx;
|
||||
padding-left: 20rpx;
|
||||
background: rgba(0, 0, 0, 0.1);
|
||||
border-radius: 40rpx 0rpx 0rpx 40rpx;
|
||||
/* stylelint-disable-next-line selector-type-no-unknown */
|
||||
uni-text {
|
||||
font-size: 24rpx;
|
||||
color: #fff;
|
||||
}
|
||||
/* stylelint-disable-next-line selector-type-no-unknown */
|
||||
uni-image {
|
||||
width: 10rpx;
|
||||
height: 17rpx;
|
||||
margin-left: 4rpx;
|
||||
}
|
||||
}
|
||||
|
||||
.t2 {
|
||||
width: 540rpx;
|
||||
height: 62rpx;
|
||||
background-image: url('../../static/images/jlgh/k1.png');
|
||||
background-size: 100% 100%;
|
||||
}
|
||||
|
||||
.tagr {
|
||||
width: 159rpx;
|
||||
height: 44rpx;
|
||||
background: linear-gradient(180deg, #fff9de 0%, #ffd96e 100%);
|
||||
border-radius: 22rpx 0rpx 0rpx 22rpx;
|
||||
}
|
||||
|
||||
.tips {
|
||||
font-size: 28rpx;
|
||||
font-weight: 700;
|
||||
color: #fffbcc;
|
||||
}
|
||||
|
||||
.banner {
|
||||
display: block;
|
||||
width: 252rpx;
|
||||
height: 74rpx;
|
||||
margin: 20rpx auto;
|
||||
}
|
||||
|
||||
.big-banner {
|
||||
display: block;
|
||||
width: 534rpx;
|
||||
height: 130rpx;
|
||||
margin: 16rpx auto 20rpx;
|
||||
}
|
||||
|
||||
.title {
|
||||
margin-bottom: 20rpx;
|
||||
font-size: 48rpx;
|
||||
font-weight: bold;
|
||||
color: #fff;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.mk {
|
||||
width: 550rpx;
|
||||
height: 900rpx;
|
||||
background-image: url('../../static/images/jlgh/mk.png');
|
||||
background-size: 100% 100%;
|
||||
}
|
||||
|
||||
.mk2 {
|
||||
width: 494rpx;
|
||||
height: 684rpx;
|
||||
background-image: url('../../static/images/jlgh/zj.png');
|
||||
background-size: 100% 100%;
|
||||
}
|
||||
|
||||
.mask {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
z-index: 10;
|
||||
width: 100%;
|
||||
height: 100vh;
|
||||
background: rgba(0, 0, 0, 0.6);
|
||||
}
|
||||
|
||||
.marquee {
|
||||
box-sizing: border-box;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
width: 100%;
|
||||
overflow: hidden;
|
||||
color: #3a3a3a;
|
||||
}
|
||||
|
||||
.marquee_title {
|
||||
align-items: center;
|
||||
height: 21px;
|
||||
padding: 0 20px;
|
||||
font-size: 14px;
|
||||
border-right: 1px solid #d8d8d8;
|
||||
}
|
||||
|
||||
.marquee_box {
|
||||
position: relative;
|
||||
display: block;
|
||||
width: 100%;
|
||||
height: 500rpx;
|
||||
margin: 0 auto;
|
||||
overflow: hidden;
|
||||
}
|
||||
}
|
||||
</style>
|
|
@ -0,0 +1,268 @@
|
|||
<route lang="json5" type="page">
|
||||
{
|
||||
style: {
|
||||
navigationStyle: 'custom',
|
||||
navigationBarTitleText: '登录页',
|
||||
},
|
||||
}
|
||||
</route>
|
||||
<template>
|
||||
<view
|
||||
class="login"
|
||||
:style="{
|
||||
marginTop: safeAreaInsets?.top + 'px',
|
||||
height: `calc(100vh - ${safeAreaInsets?.top + 'px' || 0})`,
|
||||
}"
|
||||
>
|
||||
<view class="group">
|
||||
<image src="@/static/images/jlgh/icon-shou.png" mode="scaleToFill" class="icon-shou" />
|
||||
<view class="login-title">欢迎来到登录页</view>
|
||||
<view class="login-small-title">请验证后登录</view>
|
||||
<view class="login-container">
|
||||
<view class="flex flex-items-center box-border form-item">
|
||||
<image
|
||||
src="@/static/images/jlgh/icon-phone.png"
|
||||
style="width: 24rpx; height: 38rpx; margin-right: 26rpx"
|
||||
/>
|
||||
<wd-input
|
||||
autosize
|
||||
size="32rpx"
|
||||
class="login-input"
|
||||
placeholder="请输入手机号"
|
||||
v-model="phone"
|
||||
/>
|
||||
</view>
|
||||
<view class="flex flex-items-center box-border form-item">
|
||||
<image
|
||||
src="@/static/images/jlgh/icon-pwd.png"
|
||||
style="width: 26rpx; height: 30rpx; margin-right: 26rpx"
|
||||
/>
|
||||
<wd-input
|
||||
autosize
|
||||
class="login-input"
|
||||
suffix-icon="wd-icon-camera"
|
||||
placeholder="请输入验证码"
|
||||
size="32rpx"
|
||||
v-model="code"
|
||||
>
|
||||
<template #suffix>
|
||||
<view class="login-valid" @click="getValid">{{ codemsg }}</view>
|
||||
</template>
|
||||
</wd-input>
|
||||
</view>
|
||||
</view>
|
||||
<view
|
||||
class="flex flex-items-center flex-justify-center login-btn"
|
||||
type="error"
|
||||
@click="login"
|
||||
>
|
||||
立即登录
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup>
|
||||
import { getSms, getLogin } from '@/service/login/index'
|
||||
import { debounce } from '@/utils/index'
|
||||
import { useUserStore } from '@/store'
|
||||
|
||||
const { safeAreaInsets } = uni.getSystemInfoSync()
|
||||
|
||||
const code = ref<number>(null)
|
||||
const phone = ref<number>(null)
|
||||
const codemsg = ref<string>('发送验证码')
|
||||
const codesecond = ref<number>(60)
|
||||
const useStore = useUserStore()
|
||||
const tabAction = ref<string>('validLogin')
|
||||
const query = reactive<any>({})
|
||||
|
||||
const getUrlParm = () => {
|
||||
const url = window.location.href
|
||||
const theRequest = {}
|
||||
if (url.indexOf('?') !== -1) {
|
||||
const index = url.indexOf('?')
|
||||
const str = url.slice(index + 1)
|
||||
const strs = str.split('&')
|
||||
for (let i = 0; i < strs.length; i++) {
|
||||
theRequest[strs[i].split('=')[0]] = strs[i].split('=')[1]
|
||||
}
|
||||
}
|
||||
return theRequest
|
||||
}
|
||||
|
||||
onLoad(() => {
|
||||
Object.assign(query, getUrlParm())
|
||||
})
|
||||
|
||||
const login = async () => {
|
||||
if (!phone.value) {
|
||||
uni.showToast({
|
||||
title: '手机号不能为空',
|
||||
icon: 'none',
|
||||
})
|
||||
return false
|
||||
}
|
||||
if (!code.value) {
|
||||
uni.showToast({
|
||||
title: '验证码不能为空',
|
||||
icon: 'none',
|
||||
})
|
||||
return false
|
||||
}
|
||||
const params = {
|
||||
phone: phone.value,
|
||||
code: code.value,
|
||||
activity_code: query.activity_code || 'TT123copycopy',
|
||||
}
|
||||
const res: any = await getLogin(params)
|
||||
if (res.code === 200) {
|
||||
const token = res.data.token
|
||||
useStore.setUserInfo({ token })
|
||||
// #ifdef H5
|
||||
// window.parent.postMessage(
|
||||
// {
|
||||
// data: {
|
||||
// message: 'success',
|
||||
// type: 'login',
|
||||
// },
|
||||
// },
|
||||
// '*',
|
||||
// )
|
||||
uni.navigateTo({
|
||||
url: '/pages/jlgh/index',
|
||||
})
|
||||
// #endif
|
||||
} else {
|
||||
uni.showToast({
|
||||
title: res.message,
|
||||
icon: 'none',
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
const getPhoneVaild = async () => {
|
||||
const params = { phone: phone.value }
|
||||
const res: any = await getSms(params)
|
||||
if (res.code === 200) {
|
||||
uni.showToast({
|
||||
title: '发送成功',
|
||||
icon: 'success',
|
||||
duration: 800,
|
||||
})
|
||||
setTimeout(function () {
|
||||
if (codemsg.value) {
|
||||
codesecond.value = 60
|
||||
codemsg.value = codesecond.value + 's'
|
||||
const intTimer = setInterval(() => {
|
||||
codesecond.value -= 1
|
||||
codemsg.value = codesecond.value + 's'
|
||||
if (codesecond.value === 0) {
|
||||
clearInterval(intTimer)
|
||||
codemsg.value = '重新发送'
|
||||
}
|
||||
}, 1000)
|
||||
}
|
||||
}, 800)
|
||||
} else {
|
||||
uni.showToast({
|
||||
title: res.message,
|
||||
icon: 'none',
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
const getValid = debounce(async () => {
|
||||
if (!phone.value) {
|
||||
uni.showToast({
|
||||
title: '手机号不能为空',
|
||||
icon: 'none',
|
||||
})
|
||||
return false
|
||||
}
|
||||
getPhoneVaild()
|
||||
}, 300)
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
.wd-input::after {
|
||||
height: 0 !important;
|
||||
background: transparent !important;
|
||||
}
|
||||
.icon-shou {
|
||||
position: fixed;
|
||||
top: 114rpx;
|
||||
right: 0;
|
||||
z-index: 1;
|
||||
width: 372rpx;
|
||||
height: 436rpx;
|
||||
}
|
||||
.login-container {
|
||||
position: relative;
|
||||
z-index: 2;
|
||||
box-sizing: border-box;
|
||||
width: 688rpx;
|
||||
height: 406rpx;
|
||||
padding-top: 20rpx;
|
||||
background: #ffffff;
|
||||
border-radius: 54rpx;
|
||||
}
|
||||
.login {
|
||||
position: relative;
|
||||
z-index: 2;
|
||||
width: 100vw;
|
||||
background-image: url('@/static/images/jlgh/bg-login.png');
|
||||
background-size: 100% 100%;
|
||||
}
|
||||
.login-title {
|
||||
position: relative;
|
||||
z-index: 2;
|
||||
margin-bottom: 24rpx;
|
||||
font-size: 56rpx;
|
||||
font-weight: 500;
|
||||
color: #292929;
|
||||
}
|
||||
.login-small-title {
|
||||
margin-bottom: 140rpx;
|
||||
font-size: 32rpx;
|
||||
font-weight: 400;
|
||||
color: #dc9393;
|
||||
}
|
||||
.group {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
padding: 228rpx 31rpx 0;
|
||||
}
|
||||
.form-item {
|
||||
width: 596rpx;
|
||||
height: 98rpx;
|
||||
padding: 30rpx 50rpx;
|
||||
margin: 56rpx auto 0;
|
||||
background: #fcf0f0;
|
||||
border-radius: 49rpx 49rpx 49rpx 49rpx;
|
||||
}
|
||||
.login-input {
|
||||
width: 584rpx;
|
||||
background-color: transparent !important;
|
||||
border: none !important;
|
||||
}
|
||||
.login-btn {
|
||||
width: 676rpx;
|
||||
height: 96rpx;
|
||||
margin-top: 58rpx;
|
||||
font-size: 32rpx;
|
||||
font-weight: 500;
|
||||
color: #ffffff;
|
||||
background: url('@/static/images/jlgh/bg-login-btn.png') no-repeat;
|
||||
background-position: center;
|
||||
border: 5rpx solid #ffccb0;
|
||||
border-radius: 48rpx 48rpx 48rpx 48rpx;
|
||||
box-shadow: in set 0rpx 2rpx 4rpx 0rpx rgba(255, 255, 255, 0.3);
|
||||
}
|
||||
.login-valid {
|
||||
display: inline-block;
|
||||
font-size: 24rpx;
|
||||
font-weight: 350;
|
||||
color: #fc6464;
|
||||
}
|
||||
</style>
|
|
@ -0,0 +1,178 @@
|
|||
<route lang="json5" type="page">
|
||||
{
|
||||
style: {
|
||||
navigationBarTitleText: '兑换页',
|
||||
},
|
||||
}
|
||||
</route>
|
||||
<template>
|
||||
<view class="redeem pos">
|
||||
<view
|
||||
v-if="ismask"
|
||||
class="mask flex_center flex_items"
|
||||
style="
|
||||
position: fixed;
|
||||
z-index: 1;
|
||||
width: 100%;
|
||||
height: 100vh;
|
||||
background: rgba(0, 0, 0, 0.6);
|
||||
"
|
||||
>
|
||||
<view
|
||||
class="flex_column flex_items bgwhite"
|
||||
style="width: calc(100% - 200rpx); padding: 50rpx; border-radius: 16rpx"
|
||||
>
|
||||
<image class="" style="width: 120rpx; height: 120rpx" mode=""></image>
|
||||
<text class="f40 mt50" style="color: #333">领取成功</text>
|
||||
<text class="f28 mt30" style="color: #808080">恭喜,奖品已经成功兑换,请到平台查看。</text>
|
||||
<view class="flex_items flex_center mt50">
|
||||
<view
|
||||
@click="gomy"
|
||||
class="f32 f-center"
|
||||
style="
|
||||
width: 280rpx;
|
||||
height: 80rpx;
|
||||
line-height: 80rpx;
|
||||
color: #fff;
|
||||
background: linear-gradient(270deg, #ff9843 0%, #f43139 100%);
|
||||
border-radius: 54rpx;
|
||||
"
|
||||
>
|
||||
确认
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="flex_items flex_center" style="width: 100%">
|
||||
<view
|
||||
class="bgwhite pb30 plr20 pt20 mt35"
|
||||
style="width: calc(100% - 100rpx); border-radius: 20rpx"
|
||||
>
|
||||
<view class="flex_between flex_items pb20 bbe9s">
|
||||
<view class="flex_start flex_items">
|
||||
<image
|
||||
:src="info.show_pic"
|
||||
style="width: 104rpx; height: 104rpx; border-radius: 12rpx"
|
||||
mode=""
|
||||
></image>
|
||||
<view class="flex_column f30 ml30" style="color: #333">
|
||||
<text class="bold">{{ info.show_name }}</text>
|
||||
<view class="f24 mt15" style="color: #666">
|
||||
{{ info.expiration_time }}
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="flex_start flex_items mr20" style="color: #eb5e42">
|
||||
<view class="f24">¥</view>
|
||||
<text class="f48 bolder one">{{ info.amount }}</text>
|
||||
</view>
|
||||
</view>
|
||||
<view class="pt20 f22" style="color: #666">
|
||||
{{ info.amount }}元积分兑换券,积分已经充值到用户
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view v-if="info.product_form !== 3" class="flex_items flex_center" style="width: 100%">
|
||||
<view
|
||||
class="bgwhite pb30 plr20 pt20 mt35 flex_column"
|
||||
style="width: calc(100% - 100rpx); border-radius: 20rpx"
|
||||
>
|
||||
<text class="f30 mt30 bold" style="color: #333">充值账号</text>
|
||||
<wd-input
|
||||
class="mt30"
|
||||
fontSize="14"
|
||||
:placeholder="
|
||||
info.account_type === 1
|
||||
? '请输入手机号'
|
||||
: info.account_type === 2
|
||||
? '请输入QQ'
|
||||
: '请输入充值账号'
|
||||
"
|
||||
v-model="info.mobile"
|
||||
></wd-input>
|
||||
<text class="f26 mt40" style="color: #4d4d4d">温馨提示</text>
|
||||
<view class="mt20 f24" style="color: #4d4d4d">
|
||||
<view>1.此商品兑换后不支持七天无理由退换货,请谨慎兑换。</view>
|
||||
<view class="mt20">2.刷信誉、兼职等理由均为诈骗术,请勿相信任何诱导行为。</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="flex_items flex_center abs" style="bottom: 60rpx; left: 0; width: 100%">
|
||||
<view
|
||||
@click="dui"
|
||||
class="f-center f32"
|
||||
style="
|
||||
width: 638rpx;
|
||||
height: 108rpx;
|
||||
line-height: 108rpx;
|
||||
color: #fff;
|
||||
background: linear-gradient(270deg, #ff9843 0%, #f43139 100%);
|
||||
border-radius: 54rpx;
|
||||
"
|
||||
>
|
||||
立即兑换
|
||||
</view>
|
||||
</view>
|
||||
<Ywatermark :info="'蓝色兄弟'"></Ywatermark>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup>
|
||||
import api from './api'
|
||||
|
||||
const ismask = ref<boolean>(false)
|
||||
const info = reactive<any>({})
|
||||
const phone = ref<string>('')
|
||||
|
||||
onLoad((options) => {
|
||||
console.log(options)
|
||||
Object.assign(info, JSON.parse(options.item))
|
||||
})
|
||||
|
||||
function gomy() {
|
||||
ismask.value = false
|
||||
uni.navigateTo({
|
||||
url: `/pages/jlgh/index?activity_code=${info.activity_code}`,
|
||||
})
|
||||
}
|
||||
|
||||
function dui() {
|
||||
uni.showLoading({
|
||||
title: '兑换中...',
|
||||
})
|
||||
if (info.product_form !== 3 && !info.mobile) {
|
||||
return uni.showToast({
|
||||
title: '请输入充值账号',
|
||||
icon: 'none',
|
||||
})
|
||||
}
|
||||
const params = { id: info.id, account: info.mobile, account_type: info.account_type }
|
||||
api.exchange(params).then((res: any) => {
|
||||
if (res.code === 200) {
|
||||
ismask.value = true
|
||||
uni.hideLoading()
|
||||
// uni.navigateTo({
|
||||
// url: '/pages/tt-coupon/index?activity_code=',
|
||||
// })
|
||||
} else {
|
||||
uni.hideLoading()
|
||||
uni.showToast({
|
||||
title: res.message,
|
||||
icon: 'none',
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
@use './style.css';
|
||||
|
||||
page {
|
||||
background: #f5f5f5 !important;
|
||||
}
|
||||
|
||||
.redeem {
|
||||
height: calc(100vh - 50px);
|
||||
}
|
||||
</style>
|
|
@ -0,0 +1,546 @@
|
|||
/*每个页面公共css */
|
||||
page {
|
||||
background: #fff !important;
|
||||
}
|
||||
|
||||
.pos {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.abs {
|
||||
position: absolute;
|
||||
}
|
||||
|
||||
.flex-center {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.flex-row-jus-center {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: space-between;
|
||||
}
|
||||
|
||||
.flex-row-center {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.flex-col-center {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.ellipsis-two {
|
||||
display: -webkit-box;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
word-wrap: break-word;
|
||||
white-space: normal !important;
|
||||
-webkit-line-clamp: 2;
|
||||
-webkit-box-orient: vertical;
|
||||
}
|
||||
|
||||
.ellipsis-one {
|
||||
display: -webkit-box;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
word-wrap: break-word;
|
||||
white-space: normal !important;
|
||||
-webkit-line-clamp: 1;
|
||||
-webkit-box-orient: vertical;
|
||||
}
|
||||
|
||||
.bold {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.bolder {
|
||||
font-weight: bolder;
|
||||
}
|
||||
/* ----------------------------- */
|
||||
.flex_start {
|
||||
display: -webkit-flex;
|
||||
display: flex;
|
||||
justify-content: flex-start;
|
||||
}
|
||||
|
||||
.flex_end {
|
||||
display: -webkit-flex;
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
}
|
||||
|
||||
.flex_center {
|
||||
display: -webkit-flex;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.flex_around {
|
||||
display: -webkit-flex;
|
||||
display: flex;
|
||||
justify-content: space-around;
|
||||
}
|
||||
|
||||
.flex_between {
|
||||
display: -webkit-flex;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
}
|
||||
|
||||
.flex_warp {
|
||||
display: -webkit-flex;
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
width: 100%;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.flex_items {
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.flex_column {
|
||||
display: -webkit-flex;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
.mlr10 {
|
||||
margin-right: 10rpx;
|
||||
margin-left: 10rpx;
|
||||
}
|
||||
|
||||
.mlr20 {
|
||||
margin-right: 20rpx;
|
||||
margin-left: 20rpx;
|
||||
}
|
||||
|
||||
.mlr30 {
|
||||
margin-right: 30rpx;
|
||||
margin-left: 30rpx;
|
||||
}
|
||||
|
||||
.mtb10 {
|
||||
margin-top: 10rpx;
|
||||
margin-bottom: 10rpx;
|
||||
}
|
||||
|
||||
.mtb20 {
|
||||
margin-top: 20rpx;
|
||||
margin-bottom: 20rpx;
|
||||
}
|
||||
|
||||
.mtb30 {
|
||||
margin-top: 30rpx;
|
||||
margin-bottom: 30rpx;
|
||||
}
|
||||
|
||||
.mt5 {
|
||||
margin-top: 5rpx;
|
||||
}
|
||||
|
||||
.mt10 {
|
||||
margin-top: 10rpx;
|
||||
}
|
||||
|
||||
.mt15 {
|
||||
margin-top: 15rpx;
|
||||
}
|
||||
|
||||
.mt20 {
|
||||
margin-top: 20rpx;
|
||||
}
|
||||
|
||||
.mt25 {
|
||||
margin-top: 25rpx;
|
||||
}
|
||||
|
||||
.mt30 {
|
||||
margin-top: 30rpx;
|
||||
}
|
||||
|
||||
.mt35 {
|
||||
margin-top: 35rpx;
|
||||
}
|
||||
|
||||
.mt40 {
|
||||
margin-top: 40rpx;
|
||||
}
|
||||
|
||||
.mt50 {
|
||||
margin-top: 50rpx;
|
||||
}
|
||||
|
||||
.mt60 {
|
||||
margin-top: 60rpx;
|
||||
}
|
||||
|
||||
.mt80 {
|
||||
margin-top: 80rpx;
|
||||
}
|
||||
|
||||
.mt100 {
|
||||
margin-top: 100rpx;
|
||||
}
|
||||
|
||||
.mt120 {
|
||||
margin-top: 120rpx;
|
||||
}
|
||||
|
||||
.ml5 {
|
||||
margin-left: 5rpx;
|
||||
}
|
||||
|
||||
.ml10 {
|
||||
margin-left: 10rpx;
|
||||
}
|
||||
|
||||
.ml15 {
|
||||
margin-left: 15rpx;
|
||||
}
|
||||
|
||||
.ml20 {
|
||||
margin-left: 20rpx;
|
||||
}
|
||||
|
||||
.ml25 {
|
||||
margin-left: 20rpx;
|
||||
}
|
||||
|
||||
.ml30 {
|
||||
margin-left: 30rpx;
|
||||
}
|
||||
|
||||
.ml35 {
|
||||
margin-left: 35rpx;
|
||||
}
|
||||
|
||||
.mb5 {
|
||||
margin-bottom: 5rpx;
|
||||
}
|
||||
|
||||
.mb10 {
|
||||
margin-bottom: 10rpx;
|
||||
}
|
||||
|
||||
.mb15 {
|
||||
margin-bottom: 15rpx;
|
||||
}
|
||||
|
||||
.mb20 {
|
||||
margin-bottom: 20rpx;
|
||||
}
|
||||
|
||||
.mb25 {
|
||||
margin-bottom: 25rpx;
|
||||
}
|
||||
|
||||
.mb30 {
|
||||
margin-bottom: 30rpx;
|
||||
}
|
||||
|
||||
.mb40 {
|
||||
margin-bottom: 40rpx;
|
||||
}
|
||||
|
||||
.mb100 {
|
||||
margin-bottom: 100rpx;
|
||||
}
|
||||
|
||||
.mr5 {
|
||||
margin-right: 5rpx;
|
||||
}
|
||||
|
||||
.mr10 {
|
||||
margin-right: 10rpx;
|
||||
}
|
||||
|
||||
.mr15 {
|
||||
margin-right: 15rpx;
|
||||
}
|
||||
|
||||
.mr20 {
|
||||
margin-right: 20rpx;
|
||||
}
|
||||
|
||||
.mr25 {
|
||||
margin-right: 25rpx;
|
||||
}
|
||||
|
||||
.mr30 {
|
||||
margin-right: 30rpx;
|
||||
}
|
||||
|
||||
.mr40 {
|
||||
margin-right: 40rpx;
|
||||
}
|
||||
|
||||
.mr50 {
|
||||
margin-right: 50rpx;
|
||||
}
|
||||
/* 内边距 */
|
||||
|
||||
.p20 {
|
||||
padding: 20rpx;
|
||||
}
|
||||
|
||||
.p30 {
|
||||
padding: 30rpx;
|
||||
}
|
||||
|
||||
.ptb5 {
|
||||
padding-top: 5rpx;
|
||||
padding-bottom: 5rpx;
|
||||
}
|
||||
|
||||
.ptb15 {
|
||||
padding-top: 15rpx;
|
||||
padding-bottom: 15rpx;
|
||||
}
|
||||
|
||||
.ptb10 {
|
||||
padding-top: 10rpx;
|
||||
padding-bottom: 10rpx;
|
||||
}
|
||||
|
||||
.ptb20 {
|
||||
padding-top: 20rpx;
|
||||
padding-bottom: 20rpx;
|
||||
}
|
||||
|
||||
.ptb25 {
|
||||
padding-top: 25rpx;
|
||||
padding-bottom: 25rpx;
|
||||
}
|
||||
|
||||
.ptb30 {
|
||||
padding-top: 30rpx;
|
||||
padding-bottom: 30rpx;
|
||||
}
|
||||
|
||||
.ptb40 {
|
||||
padding-top: 40rpx;
|
||||
padding-bottom: 40rpx;
|
||||
}
|
||||
|
||||
.ptb50 {
|
||||
padding-top: 50rpx;
|
||||
padding-bottom: 50rpx;
|
||||
}
|
||||
|
||||
.plr15 {
|
||||
padding-right: 15rpx;
|
||||
padding-left: 15rpx;
|
||||
}
|
||||
|
||||
.plr10 {
|
||||
padding-right: 10rpx;
|
||||
padding-left: 10rpx;
|
||||
}
|
||||
|
||||
.plr20 {
|
||||
padding-right: 20rpx;
|
||||
padding-left: 20rpx;
|
||||
}
|
||||
|
||||
.plr30 {
|
||||
padding-right: 30rpx;
|
||||
padding-left: 30rpx;
|
||||
}
|
||||
|
||||
.plr50 {
|
||||
padding-right: 50rpx;
|
||||
padding-left: 50rpx;
|
||||
}
|
||||
|
||||
.pt5 {
|
||||
padding-top: 5rpx;
|
||||
}
|
||||
|
||||
.pt10 {
|
||||
padding-top: 10rpx;
|
||||
}
|
||||
|
||||
.pt15 {
|
||||
padding-top: 15rpx;
|
||||
}
|
||||
|
||||
.pt20 {
|
||||
padding-top: 20rpx;
|
||||
}
|
||||
|
||||
.pt30 {
|
||||
padding-top: 30rpx;
|
||||
}
|
||||
|
||||
.pt35 {
|
||||
padding-top: 35rpx;
|
||||
}
|
||||
|
||||
.pt50 {
|
||||
padding-top: 50rpx;
|
||||
}
|
||||
|
||||
.pb10 {
|
||||
padding-bottom: 10rpx;
|
||||
}
|
||||
|
||||
.pb20 {
|
||||
padding-bottom: 20rpx;
|
||||
}
|
||||
|
||||
.pb30 {
|
||||
padding-bottom: 30rpx;
|
||||
}
|
||||
|
||||
.pb35 {
|
||||
padding-bottom: 35rpx;
|
||||
}
|
||||
|
||||
.pb40 {
|
||||
padding-bottom: 40rpx;
|
||||
}
|
||||
|
||||
.pb80 {
|
||||
padding-bottom: 80rpx;
|
||||
}
|
||||
|
||||
.pl10 {
|
||||
padding-left: 10rpx;
|
||||
}
|
||||
|
||||
.pl15 {
|
||||
padding-left: 15rpx;
|
||||
}
|
||||
|
||||
.pl20 {
|
||||
padding-left: 20rpx;
|
||||
}
|
||||
|
||||
.pl30 {
|
||||
padding-left: 30rpx;
|
||||
}
|
||||
|
||||
.pl60 {
|
||||
padding-left: 60rpx;
|
||||
}
|
||||
|
||||
.pl50 {
|
||||
padding-left: 50rpx;
|
||||
}
|
||||
|
||||
.pr20 {
|
||||
padding-right: 20rpx;
|
||||
}
|
||||
|
||||
.pr30 {
|
||||
padding-right: 30rpx;
|
||||
}
|
||||
|
||||
.p10 {
|
||||
padding: 10rpx;
|
||||
}
|
||||
|
||||
.p15 {
|
||||
padding: 15rpx;
|
||||
}
|
||||
/* 底部边框 */
|
||||
|
||||
.bbe9s {
|
||||
border-bottom: 1rpx solid #e9e9e9;
|
||||
}
|
||||
|
||||
.bgwhite {
|
||||
background: white;
|
||||
}
|
||||
/* 字体大小 */
|
||||
|
||||
.f80 {
|
||||
font-size: 80rpx;
|
||||
}
|
||||
|
||||
.f50 {
|
||||
font-size: 50rpx;
|
||||
}
|
||||
|
||||
.f58 {
|
||||
font-size: 58rpx;
|
||||
}
|
||||
|
||||
.f40 {
|
||||
font-size: 40rpx;
|
||||
}
|
||||
|
||||
.f44 {
|
||||
font-size: 44rpx;
|
||||
}
|
||||
|
||||
.f48 {
|
||||
font-size: 48rpx;
|
||||
}
|
||||
|
||||
.f38 {
|
||||
font-size: 38rpx;
|
||||
}
|
||||
|
||||
.f36 {
|
||||
font-size: 36rpx;
|
||||
}
|
||||
|
||||
.f34 {
|
||||
font-size: 34rpx;
|
||||
}
|
||||
|
||||
.f32 {
|
||||
font-size: 32rpx;
|
||||
}
|
||||
|
||||
.f30 {
|
||||
font-size: 30rpx;
|
||||
}
|
||||
|
||||
.f28 {
|
||||
font-size: 28rpx;
|
||||
}
|
||||
|
||||
.f26 {
|
||||
font-size: 26rpx;
|
||||
}
|
||||
|
||||
.f24 {
|
||||
font-size: 24rpx;
|
||||
}
|
||||
|
||||
.f22 {
|
||||
font-size: 22rpx;
|
||||
}
|
||||
|
||||
.f20 {
|
||||
font-size: 20rpx;
|
||||
}
|
||||
|
||||
.f18 {
|
||||
font-size: 18rpx;
|
||||
}
|
||||
|
||||
.f16 {
|
||||
font-size: 16rpx;
|
||||
}
|
||||
|
||||
.f-center {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.divbox {
|
||||
box-shadow: 0 0 9px #e2e2e2;
|
||||
}
|
||||
|
||||
.bte9s {
|
||||
border-top: 1px solid #e9e9e9;
|
||||
}
|
|
@ -17,7 +17,7 @@
|
|||
<view class="group">
|
||||
<view class="login-title">欢迎来到登录页</view>
|
||||
<wd-tabs v-model="tabAction">
|
||||
<wd-tab key="validLogin" title="验证码登录">
|
||||
<wd-tab key="validLogin" title="验证码登录11">
|
||||
<wd-input
|
||||
autosize
|
||||
size="32px"
|
||||
|
@ -190,8 +190,8 @@ const getValid = debounce(async () => {
|
|||
}
|
||||
.login-title {
|
||||
margin-bottom: 84rpx;
|
||||
font-weight: 500;
|
||||
font-size: 44rpx;
|
||||
font-weight: 500;
|
||||
color: #311d1d;
|
||||
}
|
||||
.group {
|
||||
|
@ -200,26 +200,26 @@ const getValid = debounce(async () => {
|
|||
padding: 228rpx 36rpx 0;
|
||||
}
|
||||
.login-input {
|
||||
margin-top: 10px;
|
||||
width: 604rpx;
|
||||
// height: 110rpx;
|
||||
padding: 16rpx 36rpx;
|
||||
margin-top: 10px;
|
||||
// line-height: 110rpx;
|
||||
background: #ffffff;
|
||||
border-radius: 20rpx 20rpx 20rpx 20rpx;
|
||||
}
|
||||
.login-btn {
|
||||
margin-top: 50rpx;
|
||||
width: 676rpx;
|
||||
height: 110rpx;
|
||||
text-align: center;
|
||||
margin-top: 50rpx;
|
||||
font-size: 32rpx;
|
||||
font-weight: 500;
|
||||
line-height: 110rpx;
|
||||
color: #ffffff;
|
||||
text-align: center;
|
||||
cursor: pointer;
|
||||
background: #ff4a3e;
|
||||
border-radius: 20rpx 20rpx 20rpx 20rpx;
|
||||
cursor: pointer;
|
||||
font-weight: 500;
|
||||
font-size: 32rpx;
|
||||
color: #ffffff;
|
||||
}
|
||||
.login-valid {
|
||||
display: inline-block;
|
||||
|
|
|
@ -49,7 +49,7 @@
|
|||
<view class="mk plr50" style="">
|
||||
<view class="flex_between flex_items mt40 mlr30">
|
||||
<view></view>
|
||||
<text class="f30 bold" style="color: #003a6e">活动规则</text>
|
||||
<text class="f30 bold" style="color: #003a6e">活动规则111</text>
|
||||
<image
|
||||
src="../../static/images/turntable/guan.png"
|
||||
@click="closemsk"
|
||||
|
|
|
@ -12,14 +12,14 @@
|
|||
<view
|
||||
class="abs f18 f-center"
|
||||
style="
|
||||
color: #c0513d;
|
||||
top: 0;
|
||||
right: 0;
|
||||
width: 82rpx;
|
||||
height: 38rpx;
|
||||
line-height: 38rpx;
|
||||
color: #c0513d;
|
||||
background: #fceceb;
|
||||
border-radius: 0rpx 20rpx;
|
||||
right: 0;
|
||||
top: 0;
|
||||
"
|
||||
>
|
||||
新获得
|
||||
|
@ -60,11 +60,11 @@
|
|||
class="f24 f-center mr20"
|
||||
style="
|
||||
width: 124rpx;
|
||||
line-height: 48rpx;
|
||||
border: 1px solid #e9e9e9;
|
||||
color: #a0a0a0;
|
||||
height: 48rpx;
|
||||
line-height: 48rpx;
|
||||
color: #a0a0a0;
|
||||
background: #fff;
|
||||
border: 1px solid #e9e9e9;
|
||||
border-radius: 23rpx;
|
||||
"
|
||||
>
|
||||
|
@ -75,11 +75,11 @@
|
|||
class="f24 f-center mr20"
|
||||
style="
|
||||
width: 124rpx;
|
||||
line-height: 48rpx;
|
||||
border: 1px solid #e9e9e9;
|
||||
color: #a0a0a0;
|
||||
height: 48rpx;
|
||||
line-height: 48rpx;
|
||||
color: #a0a0a0;
|
||||
background: #fff;
|
||||
border: 1px solid #e9e9e9;
|
||||
border-radius: 23rpx;
|
||||
"
|
||||
>
|
||||
|
@ -94,9 +94,9 @@
|
|||
]"
|
||||
style="
|
||||
width: 124rpx;
|
||||
height: 48rpx;
|
||||
line-height: 48rpx;
|
||||
color: #fff;
|
||||
height: 48rpx;
|
||||
background: linear-gradient(90deg, #ea5c41 0%, #ec7852 100%);
|
||||
border-radius: 23rpx;
|
||||
"
|
||||
|
@ -111,7 +111,7 @@
|
|||
<view
|
||||
v-else
|
||||
class="flex_center flex_items f24"
|
||||
style="color: #888; height: 600rpx; width: 100%"
|
||||
style="width: 100%; height: 600rpx; color: #888"
|
||||
>
|
||||
<text>--暂无数据--</text>
|
||||
</view>
|
||||
|
@ -245,19 +245,19 @@ page {
|
|||
background: #848486 !important;
|
||||
}
|
||||
.three {
|
||||
display: -webkit-box;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
display: -webkit-box;
|
||||
-webkit-line-clamp: 2;
|
||||
-webkit-box-orient: vertical;
|
||||
}
|
||||
|
||||
.one {
|
||||
display: -webkit-box;
|
||||
width: 150rpx;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
display: -webkit-box;
|
||||
-webkit-line-clamp: 1;
|
||||
-webkit-box-orient: vertical;
|
||||
width: 150rpx;
|
||||
}
|
||||
</style>
|
||||
|
|
|
@ -12,10 +12,10 @@
|
|||
v-show="show"
|
||||
@click="show = false"
|
||||
style="
|
||||
width: 100%;
|
||||
height: 100vh;
|
||||
position: fixed;
|
||||
z-index: 1;
|
||||
width: 100%;
|
||||
height: 100vh;
|
||||
background: rgba(0, 0, 0, 0.6);
|
||||
"
|
||||
></view>
|
||||
|
@ -31,8 +31,8 @@
|
|||
v-if="index == current"
|
||||
class="mt10"
|
||||
style="
|
||||
height: 6rpx;
|
||||
width: 30rpx;
|
||||
height: 6rpx;
|
||||
background: linear-gradient(157deg, #ffbca0 0%, #ff8a5d 100%);
|
||||
"
|
||||
></view>
|
||||
|
@ -109,14 +109,14 @@
|
|||
</template>
|
||||
</view>
|
||||
</view>
|
||||
<view style="height: 130rpx; width: 100%"></view>
|
||||
<view style="width: 100%; height: 130rpx"></view>
|
||||
</view>
|
||||
</view>
|
||||
<view v-if="current == 1">
|
||||
<view class="bgwhite p30">
|
||||
<view class="flex_start flex_items p30 bbe9s">
|
||||
<text class="f28" style="color: #333333">商品</text>
|
||||
<view class="f26 ml35" style="color: #666666; width: 520rpx">{{ info.show_name }}</view>
|
||||
<view class="f26 ml35" style="width: 520rpx; color: #666666">{{ info.show_name }}</view>
|
||||
</view>
|
||||
<view class="flex_start flex_items p30 bbe9s">
|
||||
<text class="f28" style="color: #333333">公司</text>
|
||||
|
@ -139,7 +139,7 @@
|
|||
<!-- t5 -->
|
||||
<view
|
||||
class="bgwhite p30 flex_center flex_items"
|
||||
style="position: fixed; width: 100%; left: 0; bottom: 0"
|
||||
style="position: fixed; bottom: 0; left: 0; width: 100%"
|
||||
>
|
||||
<view class="flex_center flex_items">
|
||||
<!-- <image :src="imgUrl + 'dd.png'" style="width: 40rpx; height: 40rpx" mode=""></image>
|
||||
|
@ -196,7 +196,7 @@
|
|||
<text class="f26" style="color: #b2b2b2">{{ info.product_amount }}元</text>
|
||||
<view
|
||||
class="abs"
|
||||
style="width: 100%; height: 2rpx; background: #b8b8b8; top: 22rpx"
|
||||
style="top: 22rpx; width: 100%; height: 2rpx; background: #b8b8b8"
|
||||
></view>
|
||||
</view>
|
||||
</view>
|
||||
|
@ -230,9 +230,9 @@
|
|||
style="
|
||||
width: 638rpx;
|
||||
height: 108rpx;
|
||||
color: #fff;
|
||||
background: linear-gradient(90deg, #ff898e 0%, #f43139 100%);
|
||||
border-radius: 54rpx;
|
||||
color: #fff;
|
||||
"
|
||||
>
|
||||
<text class="f32 bold">确认兑换</text>
|
||||
|
@ -383,27 +383,26 @@ page {
|
|||
}
|
||||
|
||||
.dk {
|
||||
z-index: 2;
|
||||
width: 100%;
|
||||
position: fixed;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
z-index: 2;
|
||||
width: 100%;
|
||||
position: fixed;
|
||||
border-top-left-radius: 12rpx;
|
||||
border-top-right-radius: 12rpx;
|
||||
}
|
||||
|
||||
.nochosem {
|
||||
font-size: 22rpx;
|
||||
color: #666666;
|
||||
background: #f2f2f7;
|
||||
border-radius: 20rpx 20rpx 20rpx 20rpx;
|
||||
color: #666666;
|
||||
font-size: 22rpx;
|
||||
}
|
||||
|
||||
.chosem {
|
||||
background: #f5393a;
|
||||
color: #fff;
|
||||
border-radius: 20rpx 20rpx 20rpx 20rpx;
|
||||
font-size: 22rpx;
|
||||
color: #fff;
|
||||
background: #f5393a;
|
||||
border-radius: 20rpx 20rpx 20rpx 20rpx;
|
||||
}
|
||||
</style>
|
||||
|
|
|
@ -11,16 +11,16 @@
|
|||
v-if="ismask"
|
||||
class="mask flex_center flex_items"
|
||||
style="
|
||||
width: 100%;
|
||||
height: 100vh;
|
||||
position: fixed;
|
||||
z-index: 1;
|
||||
width: 100%;
|
||||
height: 100vh;
|
||||
background: rgba(0, 0, 0, 0.6);
|
||||
"
|
||||
>
|
||||
<view
|
||||
class="flex_column flex_items bgwhite"
|
||||
style="padding: 50rpx; border-radius: 16rpx; width: calc(100% - 200rpx)"
|
||||
style="width: calc(100% - 200rpx); padding: 50rpx; border-radius: 16rpx"
|
||||
>
|
||||
<image
|
||||
class=""
|
||||
|
@ -38,9 +38,9 @@
|
|||
width: 280rpx;
|
||||
height: 80rpx;
|
||||
line-height: 80rpx;
|
||||
color: #fff;
|
||||
background: linear-gradient(270deg, #ff9843 0%, #f43139 100%);
|
||||
border-radius: 54rpx;
|
||||
color: #fff;
|
||||
"
|
||||
>
|
||||
确认
|
||||
|
@ -102,7 +102,7 @@
|
|||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="flex_items flex_center abs" style="width: 100%; bottom: 60rpx; left: 0">
|
||||
<view class="flex_items flex_center abs" style="bottom: 60rpx; left: 0; width: 100%">
|
||||
<view
|
||||
@click="dui"
|
||||
class="f-center f32"
|
||||
|
@ -110,9 +110,9 @@
|
|||
width: 638rpx;
|
||||
height: 108rpx;
|
||||
line-height: 108rpx;
|
||||
color: #fff;
|
||||
background: linear-gradient(270deg, #ff9843 0%, #f43139 100%);
|
||||
border-radius: 54rpx;
|
||||
color: #fff;
|
||||
"
|
||||
>
|
||||
立即兑换
|
||||
|
|
After Width: | Height: | Size: 736 KiB |
After Width: | Height: | Size: 17 KiB |
After Width: | Height: | Size: 310 KiB |
After Width: | Height: | Size: 16 KiB |
After Width: | Height: | Size: 30 KiB |
After Width: | Height: | Size: 1.4 KiB |
After Width: | Height: | Size: 1013 B |
After Width: | Height: | Size: 301 B |
After Width: | Height: | Size: 394 B |
After Width: | Height: | Size: 117 KiB |
After Width: | Height: | Size: 1.4 KiB |
After Width: | Height: | Size: 25 KiB |
After Width: | Height: | Size: 17 KiB |
After Width: | Height: | Size: 3.7 KiB |
After Width: | Height: | Size: 6.1 KiB |
After Width: | Height: | Size: 96 KiB |
|
@ -4,7 +4,10 @@
|
|||
// Generated by vite-plugin-uni-pages
|
||||
|
||||
interface NavigateToOptions {
|
||||
url: "/pages/index/index";
|
||||
url: "/pages/jlgh/login" |
|
||||
"/pages/jlgh/coupon" |
|
||||
"/pages/jlgh/index" |
|
||||
"/pages/jlgh/redeem";
|
||||
}
|
||||
interface RedirectToOptions extends NavigateToOptions {}
|
||||
|
||||
|
|
|
@ -42,7 +42,7 @@
|
|||
transitionDuration: `${transitionDuration}s`,
|
||||
}"
|
||||
></image>
|
||||
<image
|
||||
<!-- <image
|
||||
class="almost-lottery__action-bg"
|
||||
mode="widthFix"
|
||||
:src="actionBg"
|
||||
|
@ -55,7 +55,7 @@
|
|||
transitionDuration: `${transitionDuration}s`,
|
||||
}"
|
||||
@click="handleActionStart"
|
||||
></image>
|
||||
></image> -->
|
||||
</template>
|
||||
</view>
|
||||
|
||||
|
|