RIceWqy 2 years ago
parent 208dc9bbaa
commit 54b943ed6b

@ -11,6 +11,7 @@ VITE_APP_MP_APPID = 'wx42bbe857570c5b40'
# 统一接口域名
# VITE_APP_BASE_API = 'http://gateway.ruixininfo.com:8086/'
# VITE_APP_BASE_API = 'https://shop.ruixininfo.com'
VITE_APP_BASE_API = 'http://127.0.0.1:8086'
# 图片域名
VITE_APP_RESOURCES_URL = 'https://img.mall4j.com/'

@ -11,6 +11,6 @@ VITE_APP_MP_APPID = 'wx42bbe857570c5b40'
# 统一接口域名
# VITE_APP_BASE_API = 'http://gateway.ruixininfo.com:8086/'
VITE_APP_BASE_API = 'http://127.0.0.1:8086'
VITE_APP_BASE_API = 'https://shop.ruixininfo.com'
# 图片域名
VITE_APP_RESOURCES_URL = 'https://img.mall4j.com/'

@ -10,7 +10,7 @@ VITE_APP_ENV = 'testing'
VITE_APP_MP_APPID = 'wx42bbe857570c5b40'
# 统一接口域名
# VITE_APP_BASE_API = 'http://gateway.ruixininfo.com:8086/'
VITE_APP_BASE_API = 'http://127.0.0.1:8086'
VITE_APP_BASE_API = 'https://shop.ruixininfo.com'
# VITE_APP_BASE_API = 'http://127.0.0.1:8086'
# 图片域名
VITE_APP_RESOURCES_URL = 'https://img.mall4j.com/'

Binary file not shown.

@ -1,6 +1,5 @@
{
"pages": [
{
"pages": [{
"path": "pages/index/index",
"style": {
"backgroundTextStyle": "dark",
@ -180,7 +179,7 @@
"path": "pages/member-info-detail/member-info-detail",
"style": {
"backgroundTextStyle": "light",
"navigationBarTitleText": "会员信息详情",
"navigationBarTitleText": "档案信息",
"navigationBarTextStyle": "black",
"navigationBarBackgroundColor": "#fafafa"
}
@ -191,17 +190,26 @@
{
"path": "pages/register/register"
},
{
"path": "pages/agreement/agreement",
"style": {
"backgroundTextStyle": "light",
"navigationBarTitleText": "用户协议",
"navigationBarTextStyle": "black",
"navigationBarBackgroundColor": "#fafafa"
}
}
],
"tabBar": {
"selectedColor": "#3a86b9",
"color": "#b8b8b8",
"list": [
{
"list": [{
"pagePath": "pages/index/index",
"text": "首页",
"iconPath": "/static/images/tabbar/homepage.png",
"selectedIconPath": "/static/images/tabbar/homepage-sel.png"
},
{
"pagePath": "pages/category/category",

@ -1,6 +1,6 @@
<template>
<view class="con">
<image src="@/static/logo.png" />
<image src="@/static/logo.png" style="display: none;" />
<!-- 登录 -->
<view class="login-form">
<view :class="['item',errorTips==1? 'error':'']">

@ -0,0 +1,85 @@
<template>
<view>
注册服务条款
尊敬的用户欢迎您注册成为本网站用户在注册前请您仔细阅读如下服务条款
本服务协议双方为本网站与本网站用户本服务协议具有合同效力
您确认本服务协议后本服务协议即在您和本网站之间产生法律效力请您务必在注册之前认真阅读全部服务协议内容如有任何疑问可向本网站咨询
无论您事实上是否在注册之前认真阅读了本服务协议只要您点击协议正本下方的"注册"按钮并按照本网站注册程序成功注册为用户您的行为仍然表示您同意并签署了本服务协议
1本网站服务条款的确认和接纳
本网站各项服务的所有权和运作权归本网站拥有
2用户必须
(1)自行配备上网的所需设备 包括个人电脑调制解调器或其他必备上网装置
(2)自行负担个人上网所支付的与此服务有关的电话费用 网络费用
3用户在本网站上交易平台上不得发布下列违法信息
(1)反对宪法所确定的基本原则的
(2).危害国家安全泄露国家秘密颠覆国家政权破坏国家统一的
(3).损害国家荣誉和利益的
(4).煽动民族仇恨民族歧视破坏民族团结的
(5).破坏国家宗教政策宣扬邪教和封建迷信的
(6).散布谣言扰乱社会秩序破坏社会稳定的
(7).散布淫秽色情赌博暴力凶杀恐怖或者教唆犯罪的
(8).侮辱或者诽谤他人侵害他人合法权益的
(9).含有法律行政法规禁止的其他内容的
4 有关个人资料
用户同意
(1) 提供及时详尽及准确的个人资料
(2).同意接收来自本网站的信息
(3) 不断更新注册资料符合及时详尽准确的要求所有原始键入的资料将引用为注册资料
(4)本网站不公开用户的姓名地址电子邮箱和笔名以下情况除外
a用户授权本网站透露这些信息
b相应的法律及程序要求本网站提供用户的个人资料如果用户提供的资料包含有不正确的信息本网站保留结束用户使用本网站信息服务资格的权利
5. 用户在注册时应当选择稳定性及安全性相对较好的电子邮箱并且同意接受并阅读本网站发往用户的各类电子邮件如用户未及时从自己的电子邮箱接受电子邮件或因用户电子邮箱或用户电子邮件接收及阅读程序本身的问题使电子邮件无法正常接收或阅读的只要本网站成功发送了电子邮件应当视为用户已经接收到相关的电子邮件电子邮件在发信服务器上所记录的发出时间视为送达时间
6 服务条款的修改
本网站有权在必要时修改服务条款本网站服务条款一旦发生变动将会在重要页面上提示修改内容如果不同意所改动的内容用户可以主动取消获得的本网站信息服务如果用户继续享用本网站信息服务则视为接受服务条款的变动本网站保留随时修改或中断服务而不需通知用户的权利本网站行使修改或中断服务的权利不需对用户或第三方负责
7 用户隐私制度
尊重用户个人隐私是本网站的一项基本政策所以本网站一定不会在未经合法用户授权时公开编辑或透露其注册资料及保存在本网站中的非公开内容除非有法律许可要求或本网站在诚信的基础上认为透露这些信息在以下四种情况是必要的
(1) 遵守有关法律规定遵从本网站合法服务程序
(2) 保持维护本网站的商标所有权
(3) 在紧急情况下竭力维护用户个人和社会大众的隐私安全
(4)符合其他相关的要求
本网站保留发布会员人口分析资询的权利
8用户的帐号密码和安全性
你一旦注册成功成为用户你将得到一个密码和帐号如果你不保管好自己的帐号和密码安全将负全部责任另外每个用户都要对其帐户中的所有活动和事件负全责你可随时根据指示改变你的密码也可以结束旧的帐户重开一个新帐户用户同意若发现任何非法使用用户帐号或安全漏洞的情况请立即通告本网站
9 拒绝提供担保
用户明确同意信息服务的使用由用户个人承担风险 本网站不担保服务不会受中断对服务的及时性安全性出错发生都不作担保但会在能力范围内避免出错
10有限责任
本网站对任何直接间接偶然特殊及继起的损害不负责任这些损害来自不正当使用本网站服务或用户传送的信息不符合规定等这些行为都有可能导致本网站形象受损所以本网站事先提出这种损害的可能性同时会尽量避免这种损害的发生
11信息的储存及限制
本网站有判定用户的行为是否符合本网站服务条款的要求和精神的权利如果用户违背本网站服务条款的规定本网站有权中断其服务的帐号
12用户管理
用户必须遵循
(1) 使用信息服务不作非法用途
(2) 不干扰或混乱网络服务
(3) 遵守所有使用服务的网络协议规定程序和惯例用户的行为准则是以因特网法规政策程序和惯例为根据的
13保障
用户同意保障和维护本网站全体成员的利益负责支付由用户使用超出服务范围引起的律师费用违反服务条款的损害补偿费用其它人使用用户的电脑帐号和其它知识产权的追索费
14结束服务
用户或本网站可随时根据实际情况中断一项或多项服务本网站不需对任何个人或第三方负责而随时中断服务用户若反对任何服务条款的建议或对后来的条款修改有异议或对本网站服务不满用户可以行使如下权利
(1) 不再使用本网站信息服务
(2) 通知本网站停止对该用户的服务
结束用户服务后用户使用本网站服务的权利马上中止从那时起用户没有权利本网站也没有义务传送任何未处理的信息或未完成的服务给用户或第三方
15通告
所有发给用户的通告都可通过重要页面的公告或电子邮件或常规的信件传送服务条款的修改服务变更或其它重要事件的通告都会以此形式进行
16信息内容的所有权
本网站定义的信息内容包括文字软件声音相片录象图表在广告中全部内容本网站为用户提供的其它信息所有这些内容受版权商标标签和其它财产所有权法律的保护所以用户只能在本网站和广告商授权下才能使用这些内容而不能擅自复制再造这些内容或创造与内容有关的派生产品
17法律
本网站信息服务条款要与中华人民共和国的法律解释一致用户和本网站一致同意服从本网站所在地有管辖权的法院管辖如发生本网站服务条款与中华人民共和国法律相抵触时则这些条款将完全按法律规定重新解释而其它条款则依旧保持对用户的约束力
</view>
</template>
<script>
export default {
data() {
return {
}
},
methods: {
}
}
</script>
<style>
</style>

@ -69,17 +69,17 @@
<view
class="item"
data-sts="3"
@tap="toClassifyPage"
@tap="toMemberPage"
>
<image src="@/static/images/icon/neweveryday.png" />
<text>每日疯抢</text>
<text>会员专区</text>
</view>
<view
class="item"
@tap="toCouponCenter"
@tap="toScorePage"
>
<image src="@/static/images/icon/newprods.png" />
<text>领优惠券</text>
<text>积分商城</text>
</view>
</view>
@ -410,6 +410,11 @@ const toSearchPage = () => {
url: '/pages/search-page/search-page'
})
}
const toMemberPage = () => {
uni.navigateTo({
url: '/pages/member/member'
})
}
/**
* 跳转商品活动页面
@ -428,6 +433,11 @@ const toClassifyPage = (e) => {
url
})
}
const toScorePage = () => {
uni.navigateTo({
url: '/pages/score/score'
})
}
/**
* 跳转公告列表页面
*/

@ -1,3 +1,17 @@
.item {
margin-bottom: 10px; //
}
.agree-checkbox {
margin-top: 10px; //
}
/* 样式表中的额外样式定义 */
.password-hint {
font-size: 12px; /* 调整字体大小 */
color: #888; /* 设置灰色文本颜色 */
margin-left: 8px; /* 添加左侧边距 */
}
.con {
background: #fff;
height: 100%;
@ -35,6 +49,18 @@ image {
padding: 8rpx;
margin-top: 80rpx;
}
.authorized-argee {
width: 90%;
margin: 0 auto;
text-align: center;
color: #000; /* 将颜色更改为黑色 */
border: none; //
border-radius: 6rpx;
font-size: 26rpx;
padding: 8rpx;
margin-top: 80rpx;
opacity: 1; //
}
.to-idx-btn {
width: 90%;
margin: 0 auto;

@ -1,7 +1,7 @@
<template>
<view class="register">
<view class="con">
<image src="@/static/logo.png" />
<image src="@/static/logo.png" style="display: none;" />
<!-- 登录 -->
<view class="login-form">
<view :class="['item',errorTips==1? 'error':'']">
@ -9,22 +9,18 @@
<text class="input-item">
账号
</text>
<input
type="text"
data-type="account"
placeholder-class="inp-palcehoder"
placeholder="请输入账号名称"
@input="getInputVal"
>
</view>
<view
v-if="errorTips==1"
class="error-text"
>
<input type="text" data-type="account" placeholder-class="inp-palcehoder" placeholder="请输入账号名称"
@input="getInputVal">
</view>
<view class="password-hint">
至少4位
</view>
<view v-if="errorTips==1" class="error-text">
<text class="warning-icon">
!
</text>
请输入账号
请输入正确的账号
</view>
</view>
<view :class="['item',errorTips==2? 'error':'']">
@ -32,46 +28,96 @@
<text class="input-item">
密码
</text>
<input
type="password"
data-type="password"
placeholder-class="inp-palcehoder"
placeholder="请输入密码"
@input="getInputVal"
>
</view>
<view
v-if="errorTips==2"
class="error-text"
>
<input type="password" data-type="password" placeholder-class="inp-palcehoder" placeholder="请输入密码"
@input="getInputVal">
</view>
<view class="password-hint">
至少6位
</view>
<view v-if="errorTips==2" class="error-text">
<text class="warning-icon">
!
</text>
请输入密码
请输入正确的密码
</view>
<view :class="['item', errorTips==3 ? 'error' : '']">
<view class="account">
<text class="input-item">
确认密码
</text>
<input type="password" data-type="confirmPassword" placeholder-class="inp-palcehoder"
placeholder="请再次输入密码" @input="getInputValConfirmCredentials">
</view>
<view v-if="errorTips==3" class="error-text">
<text class="warning-icon">
!
</text>
密码不一致请重新输入
</view>
</view>
</view>
<!-- 添加手机号输入框 -->
<view :class="['item', errorTips==4 ? 'error' : '']">
<view class="account">
<text class="input-item">
手机号
</text>
<input type="tel" data-type="phone" placeholder-class="inp-palcehoder" placeholder="请输入手机号"
@input="getInputValPhone">
</view>
<view v-if="errorTips==4" class="error-text">
<text class="warning-icon">
!
</text>
请输入正确的手机号
</view>
</view>
<!-- 发送验证码按钮 -->
<button class="send-code-btn" @tap="sendVerificationCode" :disabled="codeSending">
{{ codeSending ? '发送中...' : '发送验证码' }}
</button>
<!-- 验证码输入框 -->
<view :class="['item', errorTips==5 ? 'error' : '']">
<view class="account">
<text class="input-item">
验证码
</text>
<input type="number" data-type="verificationCode" placeholder-class="inp-palcehoder" placeholder="请输入验证码"
@input="getInputValCode">
</view>
<view v-if="errorTips==5" class="error-text">
<text class="warning-icon">
!
</text>
请输入正确的验证码
</view>
</view>
<view class="operate">
<view
class="to-register"
@tap="toLogin"
>
<view class="to-register" @tap="toLogin">
已有账号
<text>去登录></text>
</view>
</view>
</view>
<!-- 添加复选框和协议链接 -->
<view>
<button
class="authorized-btn"
@tap="toRegister"
>
<checkbox-group @change="handleAgreeChange" class="authorized-argee">
<checkbox :value="agree" :checked="agree" />
<span class="agree-text">
我已阅读并同意
<router-link @tap="toAgree" to="/pages/argeement/argeement">
用户协议
</router-link>
</span>
</checkbox-group>
<view class="password-hint">
请先阅读并同意 用户协议
</view>
<button class="authorized-btn" @tap="toRegister" :disabled="!agree">
注册
</button>
<button
class="to-idx-btn"
@tap="toIndex"
>
<button class="to-idx-btn" @tap="toIndex">
回到首页
</button>
</view>
@ -80,51 +126,125 @@
</template>
<script setup>
import { encrypt } from '@/utils/crypto.js'
import {
encrypt
} from '@/utils/crypto.js'
/**
/**
* 生命周期函数--监听页面显示
*/
onShow(() => {
onShow(() => {
//
uni.setNavigationBarTitle({
title: '用户注册'
})
})
})
const principal = ref('') //
const credentials = ref('') //
/**
const confirmCredentials = ref(''); //
const phone = ref(''); //
const verificationCode = ref(''); //
const codeSending = ref(false); //
/**
* 发送验证码
*/
const sendVerificationCode = () => {
const phoneReg = /^[1][3,4,5,6,7,8,9][0-9]{9}$/;
if (!phoneReg.test(phone.value)) {
errorTips.value = 4;
return;
}
codeSending.value = true
http.request({
url: '/sms/send',
method: 'post',
data: {
mobile: phone.value
}
})
.then((data) => {
codeSending.value = false
if (data.code === "00000" ){
uni.showToast({
title: data.data,
icon: 'none',
duration: 1500
})
}
})
}
const agree = ref(false);
const handleAgreeChange = () => {
agree.value = !agree.value;
}
const principal = ref('') //
const credentials = ref('') //
/**
* 输入框的值
*/
const getInputVal = (e) => {
const getInputVal = (e) => {
const type = e.currentTarget.dataset.type
if (type == 'account') {
principal.value = e.detail.value
} else if (type == 'password') {
credentials.value = e.detail.value
}
}
}
const getInputValConfirmCredentials = (e) => {
const errorTips = ref(0) // : 1 2
/**
confirmCredentials.value = e.detail.value
}
const getInputValCode = (e)=>{
verificationCode.value = e.detail.value
}
const getInputValPhone = (e) => {
phone.value = e.detail.value
}
const errorTips = ref(0) // : 1 2
/**
* 注册
*/
const toRegister = () => {
if (principal.value.length == 0) {
const toRegister = () => {
if (principal.value.length == 0 || principal.value.length < 4) {
errorTips.value = 1
} else if (credentials.value.length == 0) {
} else if (credentials.value.length == 0 || credentials.value.length < 6) {
errorTips.value = 2
} else {
errorTips.value = 0
//
if (credentials.value !== confirmCredentials.value) {
errorTips.value = 3;
return;
}
//
const phoneReg = /^[1][3,4,5,6,7,8,9][0-9]{9}$/;
if (!phoneReg.test(phone.value)) {
errorTips.value = 4;
return;
}
//
if (verificationCode.value.length !== 6) {
errorTips.value = 5;
return;
}
uni.showLoading()
http.request({
url: '/user/register',
method: 'post',
data: {
userName: principal.value,
passWord: encrypt(credentials.value)
passWord: encrypt(credentials.value),
verificationCode:verificationCode.value,
phone:phone.value
}
})
.then(() => {
@ -141,26 +261,30 @@ const toRegister = () => {
}, 1800)
})
}
}
/**
}
/**
* 去登陆
*/
const toLogin = () => {
const toLogin = () => {
uni.navigateTo({
url: '/pages/accountLogin/accountLogin'
})
}
/**
}
const toAgree = () => {
uni.navigateTo({
url: '/pages/agreement/agreement'
})
}
/**
* 回到首页
*/
const toIndex = () => {
const toIndex = () => {
uni.switchTab({
url: '/pages/index/index'
})
}
}
</script>
<style lang="scss" scoped>
@import "./register.scss";
@import "./register.scss";
</style>

@ -75,7 +75,7 @@
</view>
<!--end 订单状态 -->
<view class="prod-col">
<view class="prod-col" style="display: none;" >
<view class="col-item" @tap="myCollectionHandle">
<view v-if="loginResult" class="num">
{{ collectionCount }}
@ -115,39 +115,39 @@
<view class="memu-item" @tap="toMemberInfoPage">
<view class="i-name">
<image src="@/static/images/icon/promotion.png" />
<text>会员信息</text>
<text>档案信息</text>
</view>
<view class="arrowhead" />
</view>
<view class="memu-item" @tap="toScorePage">
<view class="i-name">
<image src="@/static/images/icon/promotion.png" />
<image src="@/static/images/icon/myCoupon.png" />
<text>积分商城</text>
</view>
<view class="arrowhead" />
</view>
<view class="memu-item" @tap="toMemberPage">
<view class="i-name">
<image src="@/static/images/icon/promotion.png" />
<image src="@/static/images/icon/getCoupon.png" />
<text>会员专区</text>
</view>
<view class="arrowhead" />
</view>
<view class="memu-item" @tap="toDistCenter">
<view class="memu-item" @tap="toDistCenter" style="display: none;" >
<view class="i-name">
<image src="@/static/images/icon/promotion.png" />
<text>分销中心</text>
</view>
<view class="arrowhead" />
</view>
<view class="memu-item" @tap="toCouponCenter">
<view class="memu-item" @tap="toCouponCenter" style="display: none;" >
<view class="i-name">
<image src="@/static/images/icon/getCoupon.png" />
<text>领券中心</text>
</view>
<view class="arrowhead" />
</view>
<view class="memu-item" @tap="toMyCouponPage">
<view class="memu-item" @tap="toMyCouponPage" style="display: none;" >
<view class="i-name">
<image src="@/static/images/icon/myCoupon.png" />
<text>我的优惠券</text>

Loading…
Cancel
Save