This commit is contained in:
Ling53666 2025-05-15 21:01:14 +08:00
parent 9b8553930b
commit 7c371623eb
35 changed files with 620 additions and 401 deletions

19
app.js
View File

@ -1,19 +1,6 @@
// app.js const { checkLogin } = require('./utils/logcheck');
App({ App({
onLaunch() { onLaunch() {
// 展示本地存储能力 checkLogin();
const logs = wx.getStorageSync('logs') || []
logs.unshift(Date.now())
wx.setStorageSync('logs', logs)
// 登录
wx.login({
success: res => {
// 发送 res.code 到后台换取 openId, sessionKey, unionId
}
})
},
globalData: {
userInfo: null
} }
}) });

View File

@ -1,8 +1,8 @@
{ {
"pages": [ "pages": [
"pages/jiedan/jiedan",
"pages/logain/logain", "pages/logain/logain",
"pages/logs/logs", "pages/logs/logs",
"pages/jiedan/jiedan",
"pages/mypage/mypage", "pages/mypage/mypage",
"pages/shop/shop", "pages/shop/shop",
"pages/find/find", "pages/find/find",

View File

@ -25,7 +25,6 @@ text {
.flex-row { .flex-row {
display: flex; display: flex;
flex-direction: row; flex-direction: row;
} }
.flex-col { .flex-col {

BIN
image/20250515110258.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

BIN
image/close.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.6 KiB

31
miniprogram_npm/futext.js Normal file
View File

@ -0,0 +1,31 @@
// miniprogram_npm/rich-text.js
Component({
/**
* 组件的属性列表
*/
properties: {
settlementDesc: {
type: String,
value: ''
},
xiangmuname: {
type: String,
value: ''
}
},
/**
* 组件的初始数据
*/
data: {
},
/**
* 组件的方法列表
*/
methods: {
}
})

View File

@ -0,0 +1,4 @@
{
"component": true,
"usingComponents": {}
}

View File

@ -0,0 +1,12 @@
<view class="fenbu">
<view class="xiangqing">
<view class="titlemessgae">
<image style="width: 20px;height: 20px;margin-left: 20rpx;" src="/image/close.png" mode=""/>
<text style="margin-left: 10rpx; color: #ff8d1a;">{{xiangmuname}}</text>
</view>
<view class="richtext">
<rich-text user-select="true" nodes="{{settlementDesc}}"/>
</view>
</view>
</view>

View File

@ -0,0 +1,27 @@
.xiangqing{
width: 95%;
margin-top: 20rpx;
border-radius: 20px;
background-color: #F8F8F8;
}
.titlemessgae{
width: 100%;
height: 50px;
display: flex;
align-items: center;
}
.richtext {
padding: 0rpx 24rpx 24rpx 0rpx;
border-radius: 16rpx;
font-size: 28rpx;
color: #333;
line-height: 1.8;
box-shadow: 0 4rpx 10rpx rgba(0, 0, 0, 0.05);
}
.fenbu{
width: 100%;
height: 100%;
display: flex;
justify-content: center;
align-items: center;
}

17
package-lock.json generated Normal file
View File

@ -0,0 +1,17 @@
{
"name": "青橙",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"dependencies": {
"mp-html": "^2.5.1"
}
},
"node_modules/mp-html": {
"version": "2.5.1",
"resolved": "https://registry.npmmirror.com/mp-html/-/mp-html-2.5.1.tgz",
"integrity": "sha512-7BEH8dnQ89kOIyjdoYni8zcc0QAg+lgEWg0n9or9q2D4l26JNG+KPzHfttDyisC/5S7aPBblpXrFTYQv475w/Q=="
}
}
}

6
package.json Normal file
View File

@ -0,0 +1,6 @@
{
"dependencies": {
"mp-html": "^2.5.1"
}
}

View File

@ -1,4 +1,4 @@
// pages/find/find.js const { checkLogin } = require('../../utils/logcheck');
Page({ Page({
/** /**
@ -48,7 +48,7 @@ Page({
* 生命周期函数--监听页面显示 * 生命周期函数--监听页面显示
*/ */
onShow() { onShow() {
checkLogin();
}, },
/** /**

View File

@ -1,4 +1,4 @@
// pages/findxiangqing/findxiangqing.js const { checkLogin } = require('../../utils/logcheck');
Page({ Page({
/** /**
@ -26,7 +26,7 @@ Page({
* 生命周期函数--监听页面显示 * 生命周期函数--监听页面显示
*/ */
onShow() { onShow() {
checkLogin();
}, },
/** /**

View File

@ -1,4 +1,5 @@
import {url} from '../../request' import {url} from '../../request'
const { checkLogin } = require('../../utils/logcheck');
Page({ Page({
data: { data: {
list:[], list:[],
@ -40,6 +41,7 @@ Page({
* 生命周期函数--监听页面显示 * 生命周期函数--监听页面显示
*/ */
onShow() { onShow() {
checkLogin();
const that = this const that = this
wx.getStorage({ wx.getStorage({
key: "logmessage", key: "logmessage",

View File

@ -4,6 +4,35 @@ Page({
show: true, show: true,
morenshow: false, morenshow: false,
currentTab: 'code', currentTab: 'code',
countdown: 60, // 设置倒计时时长(秒)
timer: null, // 存储计时器
},
startCountdown() {
this.setData({
isCountingDown: true,
countdown: 60
});
this.data.timer = setInterval(() => {
let count = this.data.countdown;
if (count <= 1) {
clearInterval(this.data.timer);
this.setData({
isCountingDown: false,
countdown: 60
});
} else {
this.setData({
countdown: count - 1
});
}
}, 1000);
},
onUnload() {
// 页面卸载时清除定时器
if (this.data.timer) {
clearInterval(this.data.timer);
}
}, },
// 初始加载 // 初始加载
onShow(){ onShow(){
@ -118,15 +147,14 @@ submit(){
icon: 'success', icon: 'success',
duration: 2000 duration: 2000
}); });
wx.setStorage({ try {
key: "logmessage", wx.setStorageSync('logmessage', {
data: { Authorization: res.data.data
Authorization:res.data.data });
}, console.log("信息存储成功");
success() { } catch (e) {
console.log("信息存储成功"); console.error("存储失败", e);
} }
})
setTimeout(() => { setTimeout(() => {
that.setmessage(); that.setmessage();
wx.switchTab({ wx.switchTab({
@ -135,7 +163,7 @@ submit(){
}, 2000); }, 2000);
}else{ }else{
wx.showToast({ wx.showToast({
title: res.data.message, title: res.data.message||res.data.error,
icon: 'error', icon: 'error',
duration: 2000 duration: 2000
}); });
@ -183,7 +211,7 @@ getcode(){
}else{ }else{
wx.showToast({ wx.showToast({
title: res.data.message, title: res.data.message,
icon: 'success', icon: 'error',
duration: 2000 duration: 2000
}); });
} }
@ -192,6 +220,7 @@ getcode(){
console.error('请求失败', err); console.error('请求失败', err);
} }
}); });
this.startCountdown();
}, },
// 验证码登录提交 // 验证码登录提交
submityanzhengma(){ submityanzhengma(){
@ -230,15 +259,14 @@ submityanzhengma(){
icon: 'success', icon: 'success',
duration: 2000 duration: 2000
}); });
wx.setStorage({ try {
key: "logmessage", wx.setStorageSync('logmessage', {
data: { Authorization: res.data.data
Authorization:res.data.data });
}, console.log("信息存储成功");
success() { } catch (e) {
console.log("信息存储成功"); console.error("存储失败", e);
} }
})
setTimeout(() => { setTimeout(() => {
_this.setmessage(); _this.setmessage();
wx.switchTab({ wx.switchTab({
@ -247,7 +275,7 @@ submityanzhengma(){
}, 2000); }, 2000);
}else{ }else{
wx.showToast({ wx.showToast({
title: res.data.message, title: res.data.message||res.data.error,
icon: 'error', icon: 'error',
duration: 2000 duration: 2000
}); });
@ -278,19 +306,18 @@ setmessage() {
success(res) { success(res) {
console.log('查询成功', res); console.log('查询成功', res);
if (res.data.code==1) { if (res.data.code==1) {
wx.setStorage({ try {
key: "usermessage", wx.setStorageSync("usermessage", {
data: { nickName: res.data.data.nickName,
nickName:res.data.data.nickName, phoneNumber: res.data.data.phoneNumber,
phoneNumber:res.data.data.phoneNumber, userRole: res.data.data.userRole,
userRole:res.data.data.userRole, invitationCode: res.data.data.invitationCode,
invitationCode:res.data.data.invitationCode, userAvatar: res.data.data.userAvatar
userAvatar:res.data.data.userAvatar });
}, console.log("信息存储成功");
success() { } catch (e) {
console.log("信息存储成功"); console.error("信息存储失败", e);
} }
})
} else { } else {
wx.showToast({ wx.showToast({
title: res.data.message, title: res.data.message,

View File

@ -16,7 +16,7 @@
</view> </view>
<view class="flex-row justify-between section mt-21"> <view class="flex-row justify-between section mt-21">
<input class="font_4 text_5" bindinput="yanzhengcode" placeholder="请输入验证码" /> <input class="font_4 text_5" bindinput="yanzhengcode" placeholder="请输入验证码" />
<text bind:tap="getcode" class="font_2 text_6">获取验证码</text> <text bind:tap="{{isCountingDown ? '' : 'getcode'}}"style="color: {{isCountingDown ? '#ccc' : '#ff8d1a'}};" class="font_2 text_6"> {{ isCountingDown ? countdown + '秒后重试' : '获取验证码' }}</text>
</view> </view>
</view> </view>
<view wx:if="{{morenshow==true}}" class="flex-col self-stretch"> <view wx:if="{{morenshow==true}}" class="flex-col self-stretch">
@ -38,7 +38,7 @@
</view> </view>
<view class="flex-col self-stretch group_3"> <view class="flex-col self-stretch group_3">
<view class="flex-row items-center self-start"> <view class="flex-row items-center self-start">
<radio class="radio" color="#ff8d1a" bind:tap="onAgreeChange"></radio> <checkbox class="radio" color="#ff8d1a" bind:tap="onAgreeChange" value="cb" />
<text class="shrink-0 font_5 text_9">我已阅读并同意</text> <text class="shrink-0 font_5 text_9">我已阅读并同意</text>
<text class="font_5 text_10">用户服务协议、隐私政策</text> <text class="font_5 text_10">用户服务协议、隐私政策</text>
</view> </view>

View File

@ -106,9 +106,12 @@
line-height: 26.92rpx; line-height: 26.92rpx;
} }
.text_9 { .text_9 {
margin-left: 50.94rpx; margin-left: 20.94rpx;
color: #000000; color: #000000;
} }
.radio{
margin-left: 30rpx;
}
.text_10 { .text_10 {
color: #d43030; color: #d43030;
margin-left: 10rpx; margin-left: 10rpx;

View File

@ -1,4 +1,4 @@
// pages/mingxi/mingxi.js const { checkLogin } = require('../../utils/logcheck');
Page({ Page({
/** /**
@ -12,7 +12,7 @@ Page({
* 生命周期函数--监听页面加载 * 生命周期函数--监听页面加载
*/ */
onLoad(options) { onLoad(options) {
checkLogin();
}, },
/** /**

View File

@ -1,9 +1,10 @@
const { checkLogin } = require('../../utils/logcheck');
Page({ Page({
data: { data: {
userAvatar:'https://tse2-mm.cn.bing.net/th/id/OIP-C.jHUH4s7TQ48X_B-1iozuJgHaHa?w=207&h=207&c=7&r=0&o=5&dpr=1.5&pid=1.7',
nickName:'请登录'
}, },
myteam(){ myteam(){
@ -19,21 +20,19 @@ Page({
}, },
onShow() { onShow() {
console.log("askjda"); console.log("页面展示 onShow");
const that = this try {
wx.getStorage({ const userInfo = wx.getStorageSync('usermessage');
key: "usermessage", console.log('用户信息:', userInfo);
success(res) { this.setData({
console.log(res.data,'aslkdjas'); nickName: userInfo.nickName || '',
const userInfo = res.data phoneNumber: userInfo.phoneNumber || '',
that.setData({ invitationCode: userInfo.invitationCode || '',
nickName : userInfo.nickName, userAvatar: userInfo.userAvatar || 'https://tse2-mm.cn.bing.net/th/id/OIP-C.jHUH4s7TQ48X_B-1iozuJgHaHa?w=207&h=207&c=7&r=0&o=5&dpr=1.5&pid=1.7'
phoneNumber: userInfo.phoneNumber, });
invitationCode:userInfo.invitationCode, } catch (e) {
userAvatar:userInfo.userAvatar console.error('读取缓存失败:', e);
}); }
}
})
}, },
wodejiedan(){ wodejiedan(){
wx.navigateTo({ wx.navigateTo({

View File

@ -146,6 +146,39 @@ getcode(){
console.error('请求失败', err); console.error('请求失败', err);
} }
}); });
this.startCountdown();
}, },
startCountdown() {
this.setData({
isCountingDown: true,
countdown: 60
});
this.data.timer = setInterval(() => {
let count = this.data.countdown;
if (count <= 1) {
clearInterval(this.data.timer);
this.setData({
isCountingDown: false,
countdown: 60
});
} else {
this.setData({
countdown: count - 1
});
}
}, 1000);
},
onUnload() {
// 页面卸载时清除定时器
if (this.data.timer) {
clearInterval(this.data.timer);
}
},
back(){
wx.navigateTo({
url: '/pages/logain/logain',
})
}
}) })

View File

@ -10,14 +10,14 @@
<view class="flex-col justify-start items-start text-wrapper_1"><input class="text_1 font_2 text_4" bindinput="phone" placeholder="请输入手机号" /></view> <view class="flex-col justify-start items-start text-wrapper_1"><input class="text_1 font_2 text_4" bindinput="phone" placeholder="请输入手机号" /></view>
<view class="flex-row justify-between section mt-20"> <view class="flex-row justify-between section mt-20">
<input class="font_2 text_5" bindinput="yanzhengma" placeholder="请输入验证码" /> <input class="font_2 text_5" bindinput="yanzhengma" placeholder="请输入验证码" />
<text class="font_2 text_6" bind:tap="getcode">获取验证码</text> <text class="font_2 text_6"style="color: {{isCountingDown ? '#ccc' : '#ff8d1a'}};" bind:tap="{{isCountingDown ? '' : 'getcode'}}"> {{ isCountingDown ? countdown + '秒后重试' : '获取验证码' }}</text>
</view> </view>
<view class="flex-col justify-start items-start text-wrapper_2 mt-20"><input class="text_1 font_2" bindinput="password" password type="text" placeholder="请输入密码" /></view> <view class="flex-col justify-start items-start text-wrapper_2 mt-20"><input class="text_1 font_2" bindinput="password" password type="text" placeholder="请输入密码" /></view>
<view class="flex-col justify-start items-start text-wrapper_4 mt-20"> <view class="flex-col justify-start items-start text-wrapper_4 mt-20">
<input class="text_1 font_2 text_7" bindinput="passwordagain" password type="text" placeholder="请再次输入密码" /> <input class="text_1 font_2 text_7" bindinput="passwordagain" password type="text" placeholder="请再次输入密码" />
</view> </view>
</view> </view>
<text class="self-end text_8 mt-16">登陆账号</text> <text class="self-end text_8 mt-16" bind:tap="back">登陆账号</text>
</view> </view>
</view> </view>
<view class="flex-col justify-start items-center self-stretch text-wrapper_3" bind:tap="subimt"> <view class="flex-col justify-start items-center self-stretch text-wrapper_3" bind:tap="subimt">

View File

@ -1,10 +1,11 @@
import {url} from '../../request' import {url} from '../../request'
const { checkLogin } = require('../../utils/logcheck');
Page({ Page({
data: { data: {
items: [null, null, null,null], items: [null, null, null,null],
}, },
onLoad(options) { onLoad(options) {
checkLogin();
}, },
onReady() { onReady() {

View File

@ -1,4 +1,4 @@
// pages/wodetuandui/wodetuandui.js const { checkLogin } = require('../../utils/logcheck');
Page({ Page({
/** /**
@ -12,7 +12,7 @@ Page({
* 生命周期函数--监听页面加载 * 生命周期函数--监听页面加载
*/ */
onLoad(options) { onLoad(options) {
checkLogin();
}, },
/** /**

View File

@ -1,9 +1,11 @@
import {url} from '../../request' import {url} from '../../request'
const { checkLogin } = require('../../utils/logcheck');
Page({ Page({
data: { data: {
}, },
onLoad(options){ onLoad(options){
checkLogin();
const id = options.id const id = options.id
this.setData({ this.setData({
id:id id:id
@ -47,6 +49,9 @@ Page({
icon: 'sucess', icon: 'sucess',
duration: 2000 duration: 2000
}) })
wx.navigateBack({
delta: 1
})
}else{ }else{
wx.showToast({ wx.showToast({
title: res.data.message, title: res.data.message,

View File

@ -7,7 +7,9 @@
<input class="flex-col justify-start items-start text-wrapper_1 mt-10 input_1" bindinput="phone" /> <input class="flex-col justify-start items-start text-wrapper_1 mt-10 input_1" bindinput="phone" />
</view> </view>
</view> </view>
<view class="flex-col justify-start items-center text-wrapper_2 mt-609" bind:tap="submit"> <view class="bottoma">
<text class="text_3">申请资料报备</text> <view class="youbuttonm" bind:tap="jiedan">
</view> <text style="color: white;">申请资料报备</text>
</view>
</view>
</view> </view>

View File

@ -1,8 +1,22 @@
.ml-124 { .ml-124 {
margin-left: 238.46rpx; margin-left: 238.46rpx;
} }
.mt-609 { .bottoma{
margin-top: 1171.15rpx; width: 100%;
height: 60px;
display: flex;
position: fixed;
bottom: 0;
left: 0;
z-index: 999;
}
.youbuttonm{
width: 100%;
height: 100%;
display: flex;
justify-content: center;
align-items: center;
background-color: #ff8d1a;
} }
.page { .page {
background-color: #ffffff; background-color: #ffffff;

View File

@ -1,4 +1,5 @@
import {url} from '../../request' import {url} from '../../request'
const { checkLogin } = require('../../utils/logcheck');
Page({ Page({
/** /**
@ -8,12 +9,9 @@ Page({
projectImage:"", projectImage:"",
selected: 'detail', selected: 'detail',
show:false, show:false,
promoCodeApplyVOList:[] promoCodeApplyVOList:[],
mashow:false
}, },
/**
* 生命周期函数--监听页面加载
*/
onSelect(e) { onSelect(e) {
const key = e.currentTarget.dataset.key; const key = e.currentTarget.dataset.key;
console.log(key,'dianjile'); console.log(key,'dianjile');
@ -33,7 +31,13 @@ Page({
url: '/pages/mingxi/mingxi', url: '/pages/mingxi/mingxi',
}) })
}, },
xianshi(){
this.setData({
mashow:true
})
},
onLoad(options) { onLoad(options) {
checkLogin();
const that = this const that = this
const id = options.id const id = options.id
wx.getStorage({ wx.getStorage({
@ -81,6 +85,11 @@ Page({
wx.navigateBack({ wx.navigateBack({
delta: 1 delta: 1
}) })
},
clossma(){
this.setData({
mashow:false
})
} }
}) })

View File

@ -1,4 +1,6 @@
{ {
"navigationBarTitleText": "项目详情", "navigationBarTitleText": "项目详情",
"usingComponents": {} "usingComponents": {
"futext":"/miniprogram_npm/futext"
}
} }

View File

@ -1,69 +1,38 @@
<view class="flex-col page"> <view class="maxbox">
<view class="kuang">
<view class="mt-34 flex-col group"> <view class="shopimage">
<view class="flex-row relative"> <image class="imagesizeshop" src="{{projectImage}}" mode="aspectFill"/>
<image
class="image_2"
src="{{projectImage}}"
mode="aspectFill"
/>
<text class="self-start font text_2">{{projectName}}</text>
<view class="flex-col justify-start items-start group_2 pos">
<text class="font_2 text_4">{{projectDescription}}</text>
<view class="flex-col justify-start items-center text-wrapper pos_2" bind:tap="mingxi">
<text class="font_2 text_3">结算明细</text>
</view> </view>
</view> <view class="textbox">
</view> <text style="font-size: 16px;margin: 10rpx 0 0 0rpx;">{{projectName}}</text>
<view class="flex-row items-baseline group_3 mt-7"> <text style="font-size: 12px;color: #585857;margin: 10rpx 0 0 0rpx;">{{projectDescription}}</text>
<text class="text_5">最高价</text>
<text class="text_6 ml-3">¥{{projectPrice}}</text>
</view>
</view>
<view class="mt-34 flex-col">
<view class="flex-col group_4">
<view class="flex-row justify-between self-stretch group_5">
<view>
<text class="font_3 text_7" bindtap="onSelect"
data-key="detail"
class="{{ selected === 'detail' ? 'active' : '' }}" >项目详情</text>
<view wx:if="{{selected=='detail'}}" class="self-start section_2" style="margin-top: 10rpx;"></view>
</view>
<view> <view>
<text class="font_3 text_8" <text class="text_5">最高价</text>
bindtap="onSelect" <text class="text_6 ml-3">¥{{projectPrice}}</text>
data-key="code"
class="{{ selected === 'code' ? 'active' : '' }}" >我的推广码</text>
<view wx:if="{{selected=='code'}}" class="self-start section_2" style="margin-top: 10rpx;"></view>
</view> </view>
</view> </view>
<view class="mingxi">
</view> <view class="colorkuang" bind:tap="mingxi">
<view wx:if="{{selected=='detail'}}" class="flex-col mt-19"> <text style="color: #ffffff;font-size: 12px;">结算明细</text>
<view class="flex-col group_6">
<view class="mt-18 flex-col section_4">
<text class="self-start font_3 text_100 color" >结算说明:</text>
<view style="margin-top: 30rpx;">
<rich-text nodes="{{settlementDesc}}"></rich-text>
</view> </view>
</view>
<view class="mt-18 flex-col section_5">
<text class="self-start font_3 text_12 color">项目说明:</text>
<rich-text style="margin-top: 30rpx;" nodes="{{projectDesc}}"></rich-text>
</view>
<view class="mt-18 flex-col section_6">
<text class="self-start font_3 text_15 color">项目流程:</text>
<rich-text style="margin-top: 30rpx;" nodes="{{projectFlow}}"></rich-text>
</view> </view>
</view> </view>
<view class="mt-18 flex-row"> </view>
<view class="flex-col justify-start items-center text-wrapper_2" bind:tap="back"> <view class="lan">
<text class="font_5 text_16">再想想</text> <view class="zuolan">
</view> <text
<view class="flex-col justify-start items-center text-wrapper_3" bind:tap="jiedan"> bindtap="onSelect"
<text class="font_5 text_17">申请推广码</text> data-key="detail"
</view> class="{{ selected === 'detail' ? 'active' : '' }}">项目详情</text>
<view wx:if="{{selected=='detail'}}" class="section_2" style="margin-top: 10rpx;"></view>
</view>
<view class="youlan">
<text
bindtap="onSelect"
data-key="code"
class="{{ selected === 'code' ? 'active' : '' }}"
>我的推广码</text>
<view wx:if="{{selected=='code'}}" class="section_2" style="margin-top: 10rpx;"></view>
</view> </view>
</view> </view>
<!-- 无数据部分 --> <!-- 无数据部分 -->
@ -71,6 +40,12 @@
<image class="imagesize" src="/image/4ec3ad48669184342e84e3641589c19b.png" mode="aspectFill"/> <image class="imagesize" src="/image/4ec3ad48669184342e84e3641589c19b.png" mode="aspectFill"/>
<text>暂无数据</text> <text>暂无数据</text>
</view> </view>
<!-- 项目详情 -->
<view class="xinxibox" wx:if="{{selected=='detail'}}">
<futext xiangmuname="结算说明:" settlementDesc="{{settlementDesc}}"></futext>
<futext xiangmuname="项目说明:" settlementDesc="{{projectDesc}}"></futext>
<futext xiangmuname="项目流程:" settlementDesc="{{projectFlow}}"></futext>
</view>
<!-- 二维码部分 --> <!-- 二维码部分 -->
<view class="mabox" wx:if="{{selected == 'code' && promoCodeApplyVOList.length > 0}}"> <view class="mabox" wx:if="{{selected == 'code' && promoCodeApplyVOList.length > 0}}">
<view class="messagebox" wx:for="{{promoCodeApplyVOList}}"> <view class="messagebox" wx:for="{{promoCodeApplyVOList}}">
@ -92,12 +67,39 @@
</view> </view>
</view> </view>
</view> </view>
<view class="youbox"> <view class="youbox" bind:tap="xianshi">
<image class="imagesize1" src="{{item.projectImage}}" mode="aspectFill"/> <image class="imagesize1" src="{{item.projectImage}}" mode="aspectFill"/>
<text style="margin-top: 10rpx;">查看推广码</text> <text style="margin-top: 10rpx;">查看推广码</text>
</view> </view>
</view> </view>
</view> </view>
</view> </view>
<view class="bottoma">
<view class="zuobuttonm" bind:tap="back">
<text style="color: #D43030;">再想想</text>
</view>
<view class="youbuttonm" bind:tap="jiedan">
<text>我要接单</text>
</view>
</view>
<!-- 项目推广码详情 -->
<view class="tanhcuann" wx:if="{{mashow}}">
<view class="renwuma">
<view class="titlema">
<text style="color: #ff8d1a;font-size: 30px;">项目推广码</text>
<text style="margin-top:50rpx; color: #ff8d1a;">引导用户通过扫描此码来完成相应的任务</text>
</view>
<view class="imagebox">
<image class="masize" src="/image/20250515110258.jpg" mode=""/>
</view>
<view class="erweimacopy">
<view class="copy">
<text>复制推广码</text>
</view>
</view>
<view class="closs" bind:tap="clossma">
<image class="closssize" src="/image/close.png" mode=""/>
</view>
</view> </view>
</view> </view>

View File

@ -1,245 +1,6 @@
.ml-123 {
margin-left: 236.54rpx;
}
.mt-7 {
margin-top: 13.46rpx;
}
.ml-3 { .ml-3 {
margin-left: 5.77rpx; margin-left: 5.77rpx;
} }
.mt-19 {
margin-top: 36.54rpx;
}
.mt-3 {
margin-top: 5.77rpx;
}
.page {
background-color: #ffffff;
width: 100%;
overflow-y: auto;
overflow-x: hidden;
height: 100%;
}
.section {
padding: 34.62rpx 23.08rpx;
background-color: #f8f8f8;
}
.image {
width: 34.62rpx;
height: 19.23rpx;
}
.font {
font-size: 25rpx;
font-family: SourceHanSansCN;
line-height: 23.1rpx;
color: #000000;
}
.text {
font-size: 26.92rpx;
line-height: 24.83rpx;
}
.group {
padding-left: 57.69rpx;
padding-right: 25rpx;
}
.image_2 {
width: 103.85rpx;
height: 103.85rpx;
}
.text_2 {
margin-left: 38.46rpx;
margin-top: 11.54rpx;
font-size: 26.92rpx;
line-height: 24.9rpx;
}
.group_2 {
padding-top: 38.46rpx;
width: 526rpx;
}
.pos {
position: absolute;
right: 0;
top: 15.38rpx;
}
.font_2 {
font-size: 23.08rpx;
font-family: SourceHanSansCN;
line-height: 23.1rpx;
}
.text_4 {
color: #00000080;
font-size: 21.15rpx;
line-height: 21.75rpx;
}
.text-wrapper {
padding: 15.38rpx 0;
background-color: #a5d63fcc;
border-radius: 19.23rpx;
width: 126.92rpx;
}
.pos_2 {
position: absolute;
right: 0;
top: 50%;
transform: translateY(-50%);
}
.text_3 {
color: #ffffff;
line-height: 21.5rpx;
}
.group_3 {
padding: 0 142.31rpx;
}
.text_5 {
color: #00000080;
font-size: 15.38rpx;
font-family: HarmonyOSSansTC;
line-height: 14.42rpx;
}
.text_6 {
color: #e33c64;
font-size: 17.31rpx;
font-family: SourceHanSansCN;
line-height: 13.13rpx;
}
.group_4 {
padding-left: 138.46rpx;
padding-right: 134.62rpx;
}
.group_5 {
padding-bottom: 11.54rpx;
}
.section_2 {
margin-left: 26.92rpx;
background-color: #ff8d1a;
width: 48.08rpx;
height: 3.85rpx;
}
.group_6 {
padding-left: 32.69rpx;
padding-right: 25rpx;
}
.section_3 {
margin-right: 13.46rpx;
padding: 21.15rpx 25rpx 284.62rpx;
background-color: #f8f8f8;
border-radius: 19.23rpx;
}
.image_3 {
width: 34.62rpx;
height: 38.46rpx;
}
.font_3 {
font-size: 25rpx;
font-family: HarmonyOSSansTC;
line-height: 23.1rpx;
color: #000000;
}
.text_8 {
line-height: 23.56rpx;
}
.text_7 {
color: #ff8d1a;
line-height: 23.06rpx;
}
.text_9 {
line-height: 23.19rpx;
}
.section_4 {
margin-left: 13.46rpx;
padding: 15.38rpx 30.77rpx 36.54rpx;
background-color: #f8f8f8;
border-radius: 19.23rpx;
}
.text_10 {
margin-left: 34.62rpx;
line-height: 23.52rpx;
}
.text_100 {
line-height: 23.52rpx;
}
.font_4 {
font-size: 23.08rpx;
font-family: SourceHanSansCN;
line-height: 26.92rpx;
color: #000000;
}
.text_11 {
line-height: 21.69rpx;
}
.equal-division {
align-self: stretch;
margin: 0 15.38rpx;
}
.image_4 {
flex: 1 1 292.31rpx;
}
.equal-division-item {
height: 403.85rpx;
}
.section_5 {
margin-left: 13.46rpx;
padding: 23.08rpx 26.92rpx 30.77rpx;
background-color: #f8f8f8;
border-radius: 19.23rpx;
}
.text_12 {
margin-left: 0.46rpx;
}
.group_7 {
margin-top: 23.08rpx;
}
.text_13 {
text-indent: 0rpx;
}
.text_14 {
margin-top: 38.46rpx;
}
.section_6 {
margin-left: 13.46rpx;
padding: 30.77rpx 46.15rpx 40.38rpx;
background-color: #f8f8f8;
border-radius: 30.81rpx;
}
.text_15 {
line-height: 22.88rpx;
}
.image_5 {
flex: 1 1 292.31rpx;
}
.image_6 {
margin-left: -7.69rpx;
margin-right: 7.69rpx;
flex: 1 1 292.31rpx;
}
.equal-division_2 {
align-self: stretch;
}
.text-wrapper_2 {
padding: 26.92rpx 0;
flex: 1 1 375rpx;
background-color: #cccccc;
height: 84.62rpx;
}
.font_5 {
font-size: 30.77rpx;
font-family: SourceHanSansCN;
line-height: 26.92rpx;
color: #000000;
}
.text_16 {
line-height: 28.31rpx;
}
.text-wrapper_3 {
padding: 26.92rpx 0;
flex: 1 1 375rpx;
background-color: #ff8d1a;
height: 84.62rpx;
}
.text_17 {
line-height: 28.37rpx;
}
.active { .active {
color: #ff8d1a; color: #ff8d1a;
} }
@ -264,10 +25,85 @@
width: 100%; width: 100%;
height: 100%; height: 100%;
display: flex; display: flex;
justify-content: center;
align-items: center; align-items: center;
flex-direction: column; flex-direction: column;
} }
.xinxibox{
width: 100%;
display: flex;
align-items: center;
flex-direction: column;
padding-bottom: 60px;
}
.xiangqing{
width: 95%;
background-color: #cccccc;
margin-top: 20rpx;
border-radius: 20px;
}
.bottoma{
width: 100%;
height: 60px;
background-color: aqua;
display: flex;
position: fixed;
bottom: 0;
left: 0;
z-index: 999;
}
.zuobuttonm{
width: 50%;
height: 100%;
display: flex;
justify-content: center;
align-items: center;
background-color: rgb(255, 255, 255);
}
.youbuttonm{
width: 50%;
height: 100%;
display: flex;
justify-content: center;
align-items: center;
background-color: #ff8d1a;
}
.richtext {
padding: 24rpx;
background-color: #ffffff;
border-radius: 16rpx;
font-size: 28rpx;
color: #333;
line-height: 1.8;
box-shadow: 0 4rpx 10rpx rgba(0, 0, 0, 0.05);
}
/* 去掉 li 的黑点 */
.richtext li {
list-style: none;
padding-left: 0;
margin-left: 0;
}
/* 美化段落和图片 */
.richtext p {
margin-bottom: 16rpx;
}
.richtext img {
max-width: 100%;
border-radius: 8rpx;
margin: 12rpx 0;
}
.richtext h1, .richtext h2, .richtext h3 {
font-weight: bold;
margin: 20rpx 0 12rpx;
}
.titlemessgae{
width: 100%;
height: 50px;
display: flex;
align-items: center;
}
.messagebox{ .messagebox{
width: 90%; width: 90%;
height: 200px; height: 200px;
@ -308,4 +144,147 @@
.imagesize1{ .imagesize1{
width: 100px; width: 100px;
height: 100px; height: 100px;
}
.renwuma{
width: 90%;
height: 80%;
}
.tanhcuann{
width: 100%;
height: 100%;
display: flex;
justify-content: center;
align-items: center;
position: absolute;
top: 0px;
background-color: rgba(138, 135, 135, 0.5);
}
.titlema{
width: 100%;
height: 30%;
background-color: #ffffff;
border-bottom: 1px solid #a09d9d ;
display: flex;
justify-content: center;
align-items: center;
flex-direction: column;
}
.imagebox{
width: 100%;
height: 40%;
display: flex;
justify-content: center;
align-items: center;
background-color: #ffffff;
}
.masize{
width: 200px;
height: 200px;
}
.erweimacopy{
width: 100%;
height: 20%;
display: flex;
justify-content: center;
align-items: center;
background-color: #ffffff;
}
.copy{
width: 180px;
height: 40px;
background-color: rgb(17, 17, 240);
border-radius: 20px;
display: flex;
justify-content: center;
align-items: center;
color: #ffffff;
}
.closs{
width: 100%;
height: 10%;
display: flex;
justify-content: center;
align-items: center;
}
.closssize{
width: 80rpx;
height: 80rpx;
}
.maxbox{
width: 100%;
}
.kuang{
width: 100%;
display: flex;
margin-top: 30rpx;
}
.lan{
width: 100%;
height: 60px;
display: flex;
}
.zuolan{
width: 50%;
height: 100%;
display: flex;
justify-content: center;
align-items: center;
flex-direction: column;
}
.youlan{
width: 50%;
height: 100%;
display: flex;
justify-content: center;
align-items: center;
flex-direction: column;
}
.shopimage{
width: 23%;
display: flex;
justify-content: center;
align-items: center;
}
.textbox{
width: 57%;
height: 100%;
display: flex;
flex-direction: column;
}
.mingxi{
width: 20%;
height: 150rpx;
display: flex;
justify-content: center;
align-items: center;
}
.colorkuang{
width: 70px;
height: 30px;
background-color: #A5D63F;
display: flex;
justify-content: center;
align-items: center;
border-radius: 10rpx;
}
.imagesizeshop{
width: 70px;
height: 70px;
border-radius: 20rpx;
}
.text_5 {
color: #585857;
font-size: 20rpx;
}
.text_6 {
color: #e33c64;
font-size: 20rpx;
}
.section_2 {
background-color: #ff8d1a;
width: 100rpx;
height: 4rpx;
} }

View File

@ -5,7 +5,8 @@ Page({
* 页面的初始数据 * 页面的初始数据
*/ */
data: { data: {
countdown: 60, // 设置倒计时时长(秒)
timer: null, // 存储计时器
}, },
name(e){ name(e){
@ -76,6 +77,34 @@ Page({
console.error('请求失败', err); console.error('请求失败', err);
} }
}); });
this.startCountdown();
},
startCountdown() {
this.setData({
isCountingDown: true,
countdown: 60
});
this.data.timer = setInterval(() => {
let count = this.data.countdown;
if (count <= 1) {
clearInterval(this.data.timer);
this.setData({
isCountingDown: false,
countdown: 60
});
} else {
this.setData({
countdown: count - 1
});
}
}, 1000);
},
onUnload() {
// 页面卸载时清除定时器
if (this.data.timer) {
clearInterval(this.data.timer);
}
}, },
// 注册 // 注册
submit(){ submit(){
@ -161,6 +190,7 @@ Page({
icon: 'error', icon: 'error',
duration: 2000 duration: 2000
}); });
} }
}, },
fail(err) { fail(err) {

View File

@ -13,11 +13,11 @@
<text class="font_2 text_7" bind:tap="getcode">获取验证码</text> <text class="font_2 text_7" bind:tap="getcode">获取验证码</text>
</view> </view>
<view class="flex-col justify-start items-start view_2"><input class="text_3 font_3 text_8" bindinput="code" placeholder="请输入邀请码" /></view> <view class="flex-col justify-start items-start view_2"><input class="text_3 font_3 text_8" bindinput="code" placeholder="请输入邀请码" /></view>
<view class="flex-col justify-start items-start view_3"><input class="text_3 font_3 text_9" bindinput="password" placeholder="请设置密码" /></view> <view class="flex-col justify-start items-start view_3"><input class="text_3 font_3 text_9" bindinput="password" password type="text" placeholder="请设置密码" /></view>
</view> </view>
</view> </view>
<view class="flex-row items-center self-start group_2"> <view class="flex-row items-center self-start group_2">
<radio class="radio" color="#ff8d1a" bind:tap="onAgreeChange"></radio> <checkbox class="radio" color="#ff8d1a" bind:tap="onAgreeChange" />
<text class="shrink-0 font_4 text_10">我已阅读并同意</text> <text class="shrink-0 font_4 text_10">我已阅读并同意</text>
<text class="flex-1 font_4 text_11">青橙用户服务协议、隐私政策</text> <text class="flex-1 font_4 text_11">青橙用户服务协议、隐私政策</text>
</view> </view>

View File

@ -112,9 +112,12 @@
line-height: 26.92rpx; line-height: 26.92rpx;
} }
.text_10 { .text_10 {
margin-left: 35.56rpx; margin-left: 15.56rpx;
color: #000000; color: #000000;
} }
.radio{
margin-left: 30rpx;
}
.text_11 { .text_11 {
color: #d43030; color: #d43030;
margin-left: 10rpx; margin-left: 10rpx;
@ -148,4 +151,4 @@
.imagesize{ .imagesize{
width: 150px; width: 150px;
height: 150px; height: 150px;
} }

View File

@ -1 +1 @@
export const url='http://1.94.237.210:3456'; export const url='http://1.94.237.210:3457';

25
utils/logcheck.js Normal file
View File

@ -0,0 +1,25 @@
function checkLogin() {
try {
const user = wx.getStorageSync('usermessage');
if (!user || (typeof user === 'object' && Object.keys(user).length === 0)) {
wx.showToast({
title: '您未登录请先登录',
icon:'error',
duration:2000
})
setTimeout(() => {
wx.navigateTo({
url: '/pages/logain/logain',
});
}, 2000);
}
} catch (e) {
wx.navigateTo({
url: '/pages/logain/logain',
});
}
}
module.exports = {
checkLogin
};