From 690562a397f84a21f6e18e7f8df9dccef09fd19a Mon Sep 17 00:00:00 2001
From: lin <1005713861@163.com>
Date: Fri, 17 Apr 2026 15:00:17 +0800
Subject: [PATCH] feat: 澜品优选提交
---
static/css/collect.css | 2
static/imgs/ad5.png | 0
uni_modules/uni-transition/package.json | 105 +
static/imgs/index-top.png | 0
static/imgs/tb4.png | 0
uni_modules/uni-popup/components/uni-popup/uni-popup.uvue | 90 +
util.js | 9
static/imgs/c1.png | 0
static/imgs/mf6.png | 0
static/imgs/tb11.png | 0
uni_modules/uni-popup/changelog.md | 32
pages/profile/profile.vue | 6
main.js | 15
static/css/my2.css | 156 ++
pages.json | 61
static/imgs/mf4.png | 0
static/imgs/more.png | 0
static/imgs/index-logo.png | 0
uni_modules/uni-transition/components/uni-transition/createAnimation.js | 5
static/imgs/ad2.png | 0
static/imgs/nv4.png | 0
static/imgs/ad4.png | 0
static/imgs/deb.png | 0
uni_modules/uni-transition/changelog.md | 11
static/imgs/mf3.png | 0
static/imgs/logo-icon.png | 0
static/imgs/xxhh.png | 0
static/imgs/notice.png | 0
static/imgs/ad3.png | 0
static/imgs/tb44.png | 0
static/imgs/nv5.png | 0
static/imgs/History.png | 0
static/imgs/mf2.png | 0
pages/my/my_bak.vue | 246 +++
App.vue | 8
static/imgs/nv2.png | 0
uni_modules/uni-popup/package.json | 190 +-
static/imgs/my-bg.png | 0
static/imgs/nv3.png | 0
static/imgs/tb33.png | 0
static/imgs/xxhf.png | 0
pages/my/my.vue | 287 ++--
uni_modules/uni-popup/components/uni-popup-dialog/uni-popup-dialog.vue | 94 +
static/imgs/input-bg.png | 0
static/imgs/Star.png | 0
uni_modules/uni-popup/components/uni-popup/uni-popup.vue | 81
static/imgs/mf1.png | 0
uni_modules/uni-popup/components/uni-popup-share/uni-popup-share.vue | 11
pages/index/index.vue | 745 +++++++----
static/imgs/ad1.png | 0
static/imgs/tb1.png | 0
pages/login/login.vue | 155 -
pages/cates/cates.vue | 1
uni_modules/uni-transition/components/uni-transition/uni-transition.vue | 523 ++++---
static/imgs/c2.png | 0
pages/carts/carts.vue | 2
static/css/ginfo.css | 2
static/imgs/tb2.png | 0
static/css/index.css | 967 ++++++++------
androidPrivacy.json | 6
manifest.json | 32
static/imgs/nv1.png | 0
static/imgs/tb3.png | 0
63 files changed, 2,394 insertions(+), 1,448 deletions(-)
diff --git a/App.vue b/App.vue
index df3e9ab..5b5f8f2 100644
--- a/App.vue
+++ b/App.vue
@@ -6,8 +6,8 @@
if(args){
// 处理args参数,如直达到某新页面等
console.log('args', args)
- if(args.indexOf('lzzzsc-app') >= 0) {
- args = args.replace("lzzzsc-app://", "/")
+ if(args.indexOf('gyq-app') >= 0) {
+ args = args.replace("gyq-app://", "/")
return uni.redirectTo({
url: args
})
@@ -21,7 +21,7 @@
console.log('getConfig', res.data)
if(res.code == 1){
try {
- const token = uni.getStorageSync('lzsc-token');
+ const token = uni.getStorageSync('pig-token');
if (!token) {
/*
uni.redirectTo({
@@ -105,7 +105,7 @@
.noDataBtn{
width: 240upx !important;
margin: 50upx auto;
- background-color: #ff7945;
+ background-color: #4766FE;
color: #ffffff !important;
letter-spacing: 10upx;
height: 70upx;
diff --git a/androidPrivacy.json b/androidPrivacy.json
index 95a0812..de9f37b 100644
--- a/androidPrivacy.json
+++ b/androidPrivacy.json
@@ -1,15 +1,15 @@
{
"version" : "1",
"prompt" : "template",
- "title" : "齐享购商城注册协议和隐私政策",
- "message" : " 请你务必审慎阅读、充分理解“注册协议”和“隐私政策”各条款,包括但不限于:为了更好的向你提供服务,我们需要收集你的设备标识、操作日志等信息用于分析、优化应用性能。<br/> 你可阅读<a href=\"https://www.ncmiruo.com/index/?gp=1 \">《注册协议》</a>和<a href=\"https://www.ncmiruo.com/?gp=2 \">《隐私政策》</a>了解详细信息。并且我们会申请读取您的设备信息,以向您提供安全风控服务。同时您应特别注意前述协议中免除或者限制我们责任的条款、对您权利进行限制的条款。如您已详细阅读并同意金喜易购服务协议和隐私政策,请点击【同意并继续】开始使用我们的服务。",
+ "title" : "澜品优选商城注册协议和隐私政策",
+ "message" : " 请你务必审慎阅读、充分理解“注册协议”和“隐私政策”各条款,包括但不限于:为了更好的向你提供服务,我们需要收集你的设备标识、操作日志等信息用于分析、优化应用性能。<br/> 你可阅读<a href=\"https://lp1994.lpyx.top/?gp=1 \">《注册协议》</a>和<a href=\"https://lp1994.lpyx.top/?gp=2 \">《隐私政策》</a>了解详细信息。并且我们会申请读取您的设备信息,以向您提供安全风控服务。同时您应特别注意前述协议中免除或者限制我们责任的条款、对您权利进行限制的条款。如您已详细阅读并同意澜品优选服务协议和隐私政策,请点击【同意并继续】开始使用我们的服务。",
"buttonAccept" : "同意并继续",
"buttonRefuse" : "暂不同意",
"hrefLoader" : "system",
"backToExit" : "false",
"second" : {
"title" : "确认提示",
- "message" : " 进入应用前,你需先同意<a href=\"https://www.ncmiruo.com/?gp=1\">《注册协议》</a>和<a href=\"https://www.ncmiruo.com/?gp=2\">《隐私政策》</a>,否则将退出应用。",
+ "message" : " 进入应用前,你需先同意<a href=\"https://lp1994.lpyx.top/?gp=1\">《注册协议》</a>和<a href=\"https://lp1994.lpyx.top/?gp=2\">《隐私政策》</a>,否则将退出应用。",
"buttonAccept" : "同意并继续",
"buttonRefuse" : "退出应用"
},
diff --git a/main.js b/main.js
index 404f9a3..ec0bb8b 100644
--- a/main.js
+++ b/main.js
@@ -4,17 +4,18 @@
import Vue from 'vue'
import './uni.promisify.adaptor'
import util from './util.js'
+
Vue.config.productionTip = false
App.mpType = 'app'
-Vue.prototype.$webHost = 'https://rbb98765.zrgy-bbg.com'
+
Vue.prototype.$util = util
-Vue.prototype.$baseUrl = 'https://tmy.xjzbh.com'
+Vue.prototype.$baseUrl = 'https://lp1994.lpyx.top'
Vue.prototype.$bank = [
'中国工商银行',
'中国建设银行',
'中国银行',
'中国农业银行',
- '中国邮政储蓄银行',
+ '中国邮政储蓄银行',
'中国交通银行',
'浦东发展银行',
'中信银行',
@@ -34,7 +35,7 @@
'公司企业',
'政府机关',
'事业单位',
- '社会组织',
+ '社会组织',
'灵活就业',
]
Vue.prototype.$relation = [
@@ -42,7 +43,7 @@
'配偶',
'同事',
'好友',
- '同学',
+ '同学',
'其他',
]
Vue.prototype.$income = [
@@ -50,7 +51,7 @@
'5000-10000',
'10000-20000',
'20000-30000',
- '30000以上',
+ '30000以上',
]
// 全局跳转方法
Vue.prototype.$goWebUrl = function(url) {
@@ -75,4 +76,4 @@
app
}
}
-// #endif
+// #endif
\ No newline at end of file
diff --git a/manifest.json b/manifest.json
index 4cb53e3..6746261 100644
--- a/manifest.json
+++ b/manifest.json
@@ -1,14 +1,14 @@
{
- "name" : "齐享购",
- "appid" : "__UNI__3333B1D",
+ "name" : "澜品优选",
+ "appid" : "__UNI__27C0349",
"description" : "",
- "versionName" : "1.4.0",
- "versionCode" : 140,
+ "versionName" : "1.3.6",
+ "versionCode" : 136,
"transformPx" : false,
/* 5+App特有相关 */
"app-plus" : {
"statusbar" : {
- "immersed" : false
+ "immersed" : true
},
"compatible" : {
"ignoreVersion" : true
@@ -65,7 +65,7 @@
"<uses-permission android:name=\"android.permission.WRITE_SMS\"/>"
],
"minSdkVersion" : 29,
- "schemes" : "miruo-app",
+ "schemes" : "lpyx-app",
"targetSdkVersion" : 30,
"abiFilters" : [ "arm64-v8a" ]
},
@@ -82,7 +82,7 @@
"com.apple.developer.associated-domains" : [ "applinks:www.ncmiruo.com" ]
}
},
- "urltypes" : "miruo-app"
+ "urltypes" : "lpyx-app"
},
/* SDK配置 */
"sdkConfigs" : {
@@ -142,14 +142,28 @@
}
},
"nativePlugins" : {
+ "DC-WBNormal" : {
+ "__plugin_info__" : {
+ "name" : "DC-WBNormal",
+ "description" : "WB Normal SDK uni-app 插件",
+ "platforms" : "Android",
+ "url" : "https://ext.dcloud.net.cn/plugin?id=1491",
+ "android_package_name" : "com.shulan.xjsl",
+ "ios_bundle_id" : "com.shulan.xjsl",
+ "isCloud" : true,
+ "bought" : 1,
+ "pid" : "1491",
+ "parameters" : {}
+ }
+ },
"DC-WBFaceServiceV2" : {
"__plugin_info__" : {
"name" : "DC-WBFaceServiceV2",
"description" : "核身服务",
"platforms" : "Android,iOS",
"url" : "https://ext.dcloud.net.cn/plugin?id=10378",
- "android_package_name" : "",
- "ios_bundle_id" : "com.qxg.app",
+ "android_package_name" : "com.shulan.xjsl",
+ "ios_bundle_id" : "com.shulan.xjsl",
"isCloud" : true,
"bought" : 1,
"pid" : "10378",
diff --git a/pages.json b/pages.json
index 804a26d..47c9185 100644
--- a/pages.json
+++ b/pages.json
@@ -4,13 +4,14 @@
"path": "pages/index/index",
"style": {
"navigationStyle":"custom",
- "navigationBarTitleText": "齐享购"
+ "navigationBarTitleText": "澜品优选"
}
},
{
"path" : "pages/cates/cates",
"style" :
{
+ "navigationStyle":"custom",
"navigationBarTitleText": "分类"
}
},
@@ -209,73 +210,43 @@
"style": {
"navigationBarTitleText": "联系客服"
}
- },
- {
- "path": "pages/quanyi/index",
- "style": {
- "navigationBarTitleText": "会员权益"
- }
- },
- {
- "path": "pages/quanyi/add",
- "style": {
- "navigationBarTitleText": "绑卡"
- }
- },
- {
- "path": "pages/quanshou/index",
- "style": {
- "navigationBarTitleText": "会员权收"
- }
- },
- {
- "path": "pages/web/index",
- "style": {
- "navigationBarTitleText": ""
- }
- },
- {
- "path": "pages/web/xieyi",
- "style": {
- "navigationBarTitleText": "协议"
- }
}
],
"tabBar": {
"color": "#252938",
- "selectedColor": "#FF1472",
+ "selectedColor": "#4766FE",
"borderStyle": "black",
"backgroundColor": "#FFFFFF",
"list": [
{
"pagePath": "pages/index/index",
- "iconPath": "static/imgs/tab-1.png",
- "selectedIconPath": "static/imgs/tab-s-1.png",
+ "iconPath": "static/imgs/tb1.png",
+ "selectedIconPath": "static/imgs/tb11.png",
"text": "首页"
},
- {
- "pagePath": "pages/cates/cates",
- "iconPath": "static/imgs/tab-2.png",
- "selectedIconPath": "static/imgs/tab-s-2.png",
- "text": "分类"
- },
+ // {
+ // "pagePath": "pages/cates/cates",
+ // "iconPath": "/static/imgs/tb2.png",
+ // "selectedIconPath": "/static/imgs/tb2.png",
+ // "text": "分类"
+ // },
{
"pagePath": "pages/carts/carts",
- "iconPath": "static/imgs/tab-3.png",
- "selectedIconPath": "static/imgs/tab-s-3.png",
+ "iconPath": "static/imgs/tb3.png",
+ "selectedIconPath": "static/imgs/tb33.png",
"text": "购物车"
},
{
"pagePath": "pages/my/my",
- "iconPath": "static/imgs/tab-4.png",
- "selectedIconPath": "static/imgs/tab-s-4.png",
+ "iconPath": "static/imgs/tb4.png",
+ "selectedIconPath": "static/imgs/tb44.png",
"text": "我的"
}
]
},
"globalStyle": {
"navigationBarTextStyle": "black",
- "navigationBarTitleText": "齐享购",
+ "navigationBarTitleText": "澜品优选",
"navigationBarBackgroundColor": "#F8F8F8",
"backgroundColor": "#F8F8F8"
},
diff --git a/pages/carts/carts.vue b/pages/carts/carts.vue
index 4185416..5674ad3 100644
--- a/pages/carts/carts.vue
+++ b/pages/carts/carts.vue
@@ -47,7 +47,7 @@
<view class="noData" v-else>
<image src="/static/imgs/noData.png" mode="" style="margin-top: 200upx;"></image>
<view class="">没有购物车信息</view>
- <view class="noDataBtn" @tap="$util.goSwitch('/pages/cates/cates')">去看看</view>
+ <view class="noDataBtn" @tap="$util.goSwitch('/pages/index/index')">去看看</view>
</view>
</view>
<view class="cartsControll" v-if="cartsData.length > 0">
diff --git a/pages/cates/cates.vue b/pages/cates/cates.vue
index 592245e..57c3d31 100644
--- a/pages/cates/cates.vue
+++ b/pages/cates/cates.vue
@@ -67,6 +67,7 @@
getCatesData() {
this.$util.post('Cates/getCates', {catesId: this.catesId, pageIndex: this.pageIndex, pageSize: this.pageSize}).then(res => {
if(res.code == 1) {
+ console.log('catesData',res)
this.catesData = res.data.list
this.getCatesGoods()
}
diff --git a/pages/index/index.vue b/pages/index/index.vue
index 6270525..a84a41c 100644
--- a/pages/index/index.vue
+++ b/pages/index/index.vue
@@ -1,97 +1,106 @@
<template>
- <view class="index">
- <view class="status_bar"></view>
- <view class="index-top">
- <view class="index-title">
- <view class="index-title-view index-title-view1">
- <view class="index-title-view-lf">
- <image src="@/static/imgs/index-logo.png" mode=""></image>
- </view>
- <view class="index-title-view-lf2">趋势好货放心购</view>
+ <view class="page-container index">
+ <!-- <image class="page-bg" src="@/static/imgs/index-top.png" mode="scaleToFill"></image> -->
+ <view class="page-bg"></view>
+ <view class="content" style="padding-bottom: 200rpx;">
+ <!-- #ifdef APP-PLUS -->
+ <view class="uni-popup" :style="{top:isNativeHead?'':StatusBar}" v-if="contactsFlag">
+ <view class="ani uni-custom uni-popup__wrapper">
+ <view class="uni-popup__wrapper-box">
+ <view class="title">通讯权限</view>
+ <view class="content">便于实现好友推荐、联系人同步等功能</view>
+ <view class="btn-group">
+ <button class="cancel-btn" @click="handleReject">拒绝</button>
+ <button class="allow-btn" @click="handleAuthorize">允许</button>
+ </view>
+ </view>
+ </view>
+ </view>
+ <!-- #endif -->
+ <view class="hLogo">
+ <view class="hLogoView">
+ <view class="hLogo-1">
+ <image class="h-logo" src="/static/imgs/index-logo.png" mode=""></image>
</view>
- <view class="index-title-view index-title-view2">
- <view class="index-title-view-rf">
- <view class="">
- <image src="@/static/imgs/qiandao.png" mode=""></image>
- <text>签到打卡</text>
- </view>
- </view>
- <view class="index-title-view-rf">
- <view class="">
- <image src="@/static/imgs/kefu.png" mode=""></image>
- <text>联系客服</text>
- </view>
- </view>
+ <view class="hLogo-2" @tap="$util.goPages('../search/search')">
+ <image class="s-icon" src="/static/imgs/search.png" mode=""></image>
+ <input type="text" placeholder="请搜索您想要的商品" />
+ <view class="s-btn">搜索</view>
</view>
</view>
- <view class="search">
- <view class="search-1">
- <image src="@/static/imgs/s2.png" mode=""></image>
- <input type="text" placeholder="请输入关键词" />
- </view>
- <view class="search-2">
- <view class="">搜索</view>
- </view>
+ </view>
+
+ <view class="cates" v-if="catesNavData">
+ <view class="cates-v" v-for="(item, index) in catesNavData" @tap="$util.goPages('/pages/catesList/catesList?catesId=' + item.id + '&title=' + item.title)">
+ <image class="cates-v-icon" :src="item.icon" mode=""></image>
+ <view class="">{{item.title}}</view>
</view>
- <view class="cates">
- <view class="cates-v" v-for="(item, index) in catesNavData" @tap="$util.goPages('/pages/catesList/catesList?catesId=' + item.id + '&title=' + item.title)">
- <image class="cates-v-icon" :src="item.icon" mode=""></image>
- <view class="">{{item.title}}</view>
- </view>
+ <!-- <view class="cates-v" @tap="$util.goSwitch('/pages/cates/cates')">
+ <image class="cates-v-icon" src="/static/imgs/more.png" mode=""></image>
+ <view class="">更多</view>
+ </view> -->
+ </view>
+
+ <!-- <view class="ad1" @tap="$util.goPages('/pages/catesList/catesList?catesId=11' + '&title=' + '服装鞋包')">
+ <image src="/static/imgs/ad1.png" mode=""></image>
+ </view> -->
+
+ <view class="ad2" @tap="$util.goPages('/pages/catesList/catesList?catesId=3' + '&title=' + '手机数码')">
+ <image src="/static/imgs/ad2.png" mode=""></image>
+ </view>
+
+ <view class="d3-wrap">
+ <view class="ad3" @tap="$util.goPages('/pages/catesList/catesList?catesId=2' + '&title=' + '家用电器')">
+ <image src="/static/imgs/ad3.png" mode=""></image>
+ </view>
+ <view class="ad4" @tap="$util.goPages('/pages/catesList/catesList?catesId=4' + '&title=' + '美妆个护')">
+ <image src="/static/imgs/ad4.png" mode=""></image>
</view>
</view>
- <view class="banner">
- <swiper class="swiper" circular :indicator-dots="indicatorDots" :indicator-color="indicatorColor" :autoplay="autoplay" :indicator-active-color="indicatorActiveColor" :interval="interval" :duration="duration">
- <swiper-item v-for="(item, index) in bannerData" @tap="$util.goPages('/pages/ginfo/ginfo?id=' + item.goodsid)">
- <image lazy-load :src="item.icon" mode=""></image>
- </swiper-item>
- </swiper>
+ <view class="ad5" @tap="$util.goPages('/pages/catesList/catesList?catesId=7' + '&title=' + '家居百货')">
+ <image src="/static/imgs/ad5.png" mode=""></image>
</view>
- <view class="comm">
- <view class="comm-1">
- <view class="comm-title">
- <image src="/static/imgs/ptyx.png" mode=""></image>
- </view>
- <view class="comm-goods">
- <view class="comm-goods-v" v-for="(item, index) in prefGoods" @click="$util.goPages('/pages/ginfo/ginfo?id=' + item.id)">
- <view class="">
- <image :src="item.icon" mode=""></image>
- <text>¥{{item.price}}</text>
+
+ <!-- <view class="c-goods" v-if="hotCates" v-for="(item, index) in hotCates">
+ <view class="ca-ad" v-if="index % 2 == 0">
+ <image src="/static/imgs/c1.png" mode=""></image>
+ </view>
+ <view class="ca-ad" v-else>
+ <image src="/static/imgs/c2.png" mode=""></image>
+ </view>
+ <view class="cGoods">
+ <scroll-view class="scroll-view_H" scroll-x="true">
+ <view class="scroll-view-item_H" v-for="(itm, index) in item.goods" @tap="$util.goPages('/pages/ginfo/ginfo?id=' + itm.id)">
+ <image lazy-load class="goods-icon" :src="itm.icon" mode=""></image>
+ <view class="goods-title">{{itm.title}}</view>
+ <view class="goods-price">
+ <view>¥</view>
+ <view class="red">{{itm.price}}</view>
</view>
</view>
- </view>
+ </scroll-view>
</view>
- <view class="comm-2"></view>
- <view class="comm-3">
- <view class="comm-title">
- <image src="@/static/imgs/jfdh.png" mode=""></image>
- </view>
- <view class="comm-goods">
- <view class="comm-goods-v" v-for="(item, index) in pointGoods" @click="$util.goPages('/pages/ginfo/ginfo?id=' + item.id)">
- <view class="">
- <image :src="item.icon" mode=""></image>
- <text>∮{{item.points}}</text>
+ </view> -->
+ <!-- <view class="c-goods" v-if="hotGoods">
+ <view class="cGoods">
+ <scroll-view class="scroll-view_H" scroll-x="true">
+ <view class="scroll-view-item_H" v-for="(itm, index) in hotGoods" @tap="$util.goPages('/pages/ginfo/ginfo?id=' + itm.id)">
+ <image lazy-load class="goods-icon" :src="itm.icon" mode=""></image>
+ <view class="goods-title">{{itm.title}}</view>
+ <view class="goods-price">
+ <view>¥</view>
+ <view class="red">{{itm.price}}</view>
</view>
</view>
- </view>
+ </scroll-view>
</view>
- </view>
- <view class="hots">
- <view class="hots-title" @tap="$util.goPages('/pages/catesList/catesList?is_hot=1&title=热门推荐')">
- <image class="hots-icon" src="@/static/imgs/rmtj.png" mode=""></image>
- <view class="hots-rgt">
- <text>大家都在买</text>
- <image src="@/static/imgs/right.png" mode=""></image>
- </view>
- </view>
- <view class="hots-goods">
- <view class="hots-goods-v" v-for="(item, index) in hotGoods" @click="$util.goPages('/pages/ginfo/ginfo?id=' + item.id)">
- <view class="">
- <image :src="item.icon" mode=""></image>
- <text>¥{{item.price}}</text>
- </view>
- </view>
+ </view> -->
+
+ <view class="cateNav">
+ <view class="cateNav-item" :class="{active:actIndex===index}" v-for="(item, index) in cateNavList" :key="index" @click="navClick(item,index)">
+ <view class="cateNav-title">{{item.title}}</view>
+ <view class="cateNav-desc">{{item.desc}}</view>
</view>
</view>
<view class="goods-main">
@@ -103,9 +112,9 @@
<view class="goods-price">
<view>¥</view>
<view class="red">{{itm.price}}</view>
- <view class="hyj">
+ <!-- <view class="hyj">
<image src="@/static/imgs/hyj.png" mode=""></image>
- </view>
+ </view> -->
<view>¥</view>
<view class="red">{{itm.price}}</view>
</view>
@@ -113,192 +122,406 @@
</view>
</view>
</view>
- <uni-popup ref="popup2" type="center" :is-mask-click="false">
- <view class="popup-content">
- <view class="edu-view edu-view2">
- <image src="/static/imgs/close.png" class="close-edu" mode="" @tap="$refs.popup2.close()"></image>
- <view class="edu-view-desc2">认证领取额度</view>
- <image class="edu-icon-succ" src="/static/imgs/auths.png" mode=""></image>
- <view class="edu-view-desc3">
- 请您先认证个人信息,然后立即领取额度
- </view>
- <view class="edu-btns" @tap="goLingqu">立即领取</view>
- </view>
- </view>
- </uni-popup>
- </view>
+ <!-- <view class="login-desc" v-if="!userInfo" @tap="$util.goPages('../login/login')">
+ <image class="login-icon" src="/static/imgs/logo-icon.png" mode=""></image>
+ <view class="login-font">登录澜品优选,打开美好生活</view>
+ <view class="login-btn">立即登录</view>
+ </view> -->
+ </view>
+
+ <uni-popup ref="popup2" type="center" :is-mask-click="false">
+ <view class="popup-content">
+ <view class="edu-view edu-view2">
+ <view class="edu-view-desc2">认证领取额度</view>
+ <image class="edu-icon-succ" src="/static/imgs/auths.png" mode=""></image>
+ <view class="edu-view-desc3">
+ 请您先认证个人信息,然后立即领取额度
+ </view>
+ <view class="edu-btns" @tap="go_auth">立即领取</view>
+ <!-- <view class="edu-btns" @tap="$util.goPages('/pages/idcard/idcard')">立即领取</view> -->
+ </view>
+ </view>
+ </uni-popup>
+ </view>
</template>
<script>
- import permision from "@/js_sdk/wa-permission/permission.js"
- export default {
- data() {
- return {
- scrollIndex: 0,
- scrollCurrent: '',
- staHeight: 0,
- paddingHeight: 0,
- indicatorDots: true,
- indicatorColor: '#e3b400',
- indicatorActiveColor: '#ffffff',
- autoplay: true,
- interval: 3000,
- duration: 500,
- bannerData: [],
- catesNavData: [],
- goodsData: [],
- prefGoods: [],
- hotGoods: [],
- pointGoods: [],
- userInfo: null,
- config: null,
+import permision from "@/js_sdk/wa-permission/permission.js"
+export default {
+ props: {
+ // 开启动画
+ animation: {
+ type: Boolean,
+ default: true
+ },
+ type: {
+ type: String,
+ default: 'top'
+ },
+ //是否是原生头部
+ isNativeHead:{
+ type: Boolean,
+ default: true
+ },
+ },
+ data() {
+ return {
+ contactsFlag: false,
+ staHeight: 0,
+ paddingHeight: 0,
+ indicatorDots: true,
+ indicatorColor: '#e3b400',
+ indicatorActiveColor: '#ffffff',
+ autoplay: true,
+ interval: 3000,
+ duration: 500,
+ bannerData: [],
+ catesNavData: [],
+ catesHotData: [],
+ userInfo: null,
+ config: null,
+ statusBarHeight: 30,
+ StatusBar: 0,
+ hotGoods: null,
+ newGoods: null,
+ hotCates: null,
+ catesId: 3,
+ is_hot: '',
+ pageIndex: 1,
+ pageSize: 10,
+ goodsData: [],
+ cateNavList: [
+ {
+ title: '为你推荐',
+ desc: '猜你喜欢',
+ skey: '手机数码',
+ catesId: 3,
+ },{
+ title: '疯狂折扣',
+ desc: '好物精选',
+ skey: '家用电器',
+ catesId: 2,
+ },{
+ title: '哇!超值',
+ desc: '天天低价',
+ skey: '美妆个护',
+ catesId: 4,
+ },{
+ title: '热销排行',
+ desc: '热门榜单',
+ skey: '母婴童玩',
+ catesId: 5,
+ },
+ ],
+ actIndex: 0,
+ }
+ },
+ onShow() {
+ this.getData()
+ this.getConfig()
+ this.getUserInfo()
+ // #ifdef APP-PLUS
+ plus.navigator.setStatusBarBackground('transparent');
+ // #endif
+ },
+ created() {
+ this.catesGoods()
+ },
+ onLoad() {
+ const systemInfo = uni.getSystemInfoSync();
+ this.statusBarHeight = systemInfo.statusBarHeight || 30;
+ },
+ onReady() {
+ // #ifdef APP-PLUS
+ this.getSystemInfo();
+ // #endif
+ },
+ mounted() {
+ },
+ methods: {
+ navClick(data,index) {
+ this.actIndex = index;
+ this.catesId = data.catesId
+ this.catesGoods()
+ },
+ //获取分类商品
+ catesGoods(){
+ this.$util.post('Goods/getCatesGoods', {catesId: this.catesId, is_hot: this.is_hot, pageIndex: this.pageIndex, pageSize: this.pageSize}).then(res => {
+ if(res.code == 1) {
+ this.goodsData = res.data.list
}
- },
- onShow() {
- this.getData()
- this.getConfig()
- this.getUserInfo()
- },
- onLoad() {
- },
- onReady() {
- // #ifdef APP-PLUS
- plus.navigator.setStatusBarBackground('#FFD2D8')
- // #endif
- },
- methods: {
- getData () {
- this.$util.post('Goods/getIndexData').then(res => {
- this.bannerData = res.data.bannerData
- this.catesNavData = res.data.catesNavData
- this.pointGoods = res.data.pointGoods
- this.hotGoods = res.data.hotGoods
- this.prefGoods = res.data.prefGoods
- this.goodsData = res.data.catesNavData[1].goods
- })
- },
- scrollClick (index) {
- this.scrollIndex = index
- this.scrollCurrent = 'scrollItem' + index
- this.goodsData = []
- this.goodsData = this.catesNavData[index].goods
- setTimeout(() => {
- this.scrollCurrent = ''; // 重置以便下次可以滚动到相同位置
- }, 500);
- },
- getConfig() {
- let t = this
- t.$util.post('Index/getConfig').then(res => {
- if(res.code == 1) {
- t.config = res.data
- }
- })
- },
-
- getUserInfo () {
- let t = this
- t.$util.post('User/getUser').then(res => {
- if(res.code == 1){
- this.userInfo = res.data
- if(res.data.over_auth == 0 && t.config.put_open == 2){
- setTimeout(() => {
- t.$refs.popup2.open()
- }, 100)
- } else {
- setTimeout(() => {
- t.$refs.popup2.close()
- }, 100)
- }
- if(res.data.contacts == 0 && uni.getSystemInfoSync().platform == 'android' && this.config.put_open == 2){
- t.requestAndroidPermission('android.permission.READ_CONTACTS')
- }
- }
- })
- },
- goLingqu () {
- if(!this.$util.checkLogin('/pages/index/index')){
- return
- }
- if(this.userInfo && this.userInfo.over_auth == 1) {
- return uni.showToast({
- title: '您已完成认证!',
- icon: 'success'
- })
- }
- let goUrl = ''
- if(this.userInfo.idcard_auth == 0){
- goUrl = '/pages/idcard/idcard'
- } else if(this.userInfo.face_auth == 0){
- goUrl = '/pages/face/face'
- } else if(this.userInfo.job_auth == 0){
- goUrl = '/pages/job/job'
- } else if(this.userInfo.bank_auth == 0){
- goUrl = '/pages/addBank/addBank?backUrl=/pages/edu/edu'
- } else {
- return uni.showToast({
- title: '您已完成认证!',
- icon: 'success'
- })
- }
- if(goUrl != '') {
- uni.navigateTo({
- url: goUrl
- })
- }
- },
- async requestAndroidPermission(permisionID) {
- let t = this
- let result = await permision.requestAndroidPermission(permisionID)
- if (result == 1) {
- t.setContacts()
- } else if (result == 0) {
- this.$util.goSetting()
- } else {
- this.$util.goSetting()
- }
- },
-
- setContacts () {
- uni.showLoading({
- title: '授权中...'
- })
- let self = this
- plus.contacts.getAddressBook(plus.contacts.ADDRESSBOOK_PHONE, addressbook => {
- addressbook.find(["displayName","phoneNumbers"],function(contacts){
- let ob = []
- let phone = []
- for(let i in contacts){
- let json = {}
- if(contacts[i].phoneNumbers.length > 0 && contacts[i].displayName){
- if(phone.indexOf(contacts[i].phoneNumbers[0].value) < 0){
- json.name = contacts[i].displayName
- json.phone = contacts[i].phoneNumbers[0].value
- phone = phone.concat(json.phone)
- ob = ob.concat(json)
- }
- }
- }
+ })
+ },
+ //获取状态栏高度
+ getSystemInfo() {
+ let _this = this;
+ uni.getSystemInfo({
+ success: function(e) {
+ _this.StatusBar = e.statusBarHeight + 'px'; //用于自定义头部时,给手机状态栏留出位置,可通过isNativeHead这个参数控制
+ }
+ })
+ },
+ getConfig() {
+ let t = this
+ t.$util.post('Index/getConfig').then(res => {
+ if(res.code == 1) {
+ console.log('config', res.data)
+ t.config = res.data
+ }
+ })
+ },
+ getUserInfo () {
+ let t = this
+ t.$util.post('User/getUser').then(res => {
+ console.log(res);
+ if(res.code == 1){
+ this.userInfo = res.data
+ if(res.data.over_auth == 0 && t.config.put_open == 2){
+ setTimeout(() => {
+ //t.$refs.popup2.open()
+ }, 100)
+ }
+ // if(res.data.contacts == 0 && uni.getSystemInfoSync().platform == 'android'){
+ // // t.contactsFlag = !t.contactsFlag
+ // t.requestAndroidPermission('android.permission.READ_CONTACTS')
+ // }
+ }
+ })
+ },
+ handleAuthorize() {
+ this.contactsFlag = false;
+ this.requestAndroidPermission('android.permission.READ_CONTACTS')
+ },
+ // 4. 手动点击“拒绝”按钮
+ handleReject() {
+ this.contactsFlag = false;
+ uni.showToast({ title: '已拒绝通讯录权限', icon: 'none' });
+ // 可根据业务需求处理拒绝后的逻辑(如限制功能使用)
+ },
+ go_auth () {
+ let goUrl = ''
+ if(this.userInfo.idcard_auth == 0){
+ goUrl = '/pages/idcard/idcard'
+ } else if(this.userInfo.face_auth == 0){
+ goUrl = '/pages/face/face'
+ } else if(this.userInfo.job_auth == 0){
+ goUrl = '/pages/job/job'
+ } else if(this.userInfo.bank_auth == 0){
+ goUrl = '/pages/addBank/addBank?backUrl=/pages/edu/edu'
+ }
+ console.log(goUrl);
+ if(goUrl != '') {
+ uni.navigateTo({
+ url: goUrl
+ })
+ }else{
+ this.$refs.popup2.close()
+ uni.showToast({
+ title: '无法认证!',
+ icon: 'error'
+ })
+ }
+ },
+ goLingqu () {
+ if(!this.userInfo){
+ return uni.showToast({
+ title: '请先登录!',
+ icon: 'error'
+ })
+ }
+ if(this.userInfo && this.userInfo.over_auth == 1) {
+ return uni.showToast({
+ title: '您已完成认证!',
+ icon: 'success'
+ })
+ }
+ let goUrl = ''
+ if(this.userInfo.idcard_auth == 0){
+ goUrl = '/pages/idcard/idcard'
+ } else if(this.userInfo.face_auth == 0){
+ goUrl = '/pages/face/face'
+ } else if(this.userInfo.job_auth == 0){
+ goUrl = '/pages/job/job'
+ } else if(this.userInfo.bank_auth == 0){
+ goUrl = '/pages/addBank/addBank?backUrl=/pages/edu/edu'
+ } else {
+ return uni.showToast({
+ title: '您已完成认证!',
+ icon: 'success'
+ })
+ }
+ if(goUrl != '') {
+ uni.navigateTo({
+ url: goUrl
+ })
+ }
+ },
+ async requestAndroidPermission(permisionID) {
+ let t = this
+ let result = await permision.requestAndroidPermission(permisionID)
+ if (result == 1) {
+ t.setContacts()
+ } else if (result == 0) {
+ this.$util.goSetting()
+ } else {
+ this.$util.goSetting()
+ }
+ },
+ getData () {
+ this.$util.post('Goods/getIndexData').then(res => {
+ console.log('getIndexData',res)
+ this.bannerData = res.data.bannerData
+ this.catesNavData = res.data.catesNavData
+ this.catesHotData = res.data.catesHotData
+ this.hotGoods = res.data.hotGoods
+ this.newGoods = res.data.newGoods
+ this.hotCates = res.data.hotCates
+ })
+ },
+ setContacts () {
+ uni.showLoading({
+ title: '授权中...'
+ })
+ let self = this
+ plus.contacts.getAddressBook(plus.contacts.ADDRESSBOOK_PHONE, addressbook => {
+ addressbook.find(["displayName","phoneNumbers"],function(contacts){
+ let ob = []
+ let phone = []
+ for(let i in contacts){
+ let json = {}
+ if(contacts[i].phoneNumbers.length > 0 && contacts[i].displayName){
+ if(phone.indexOf(contacts[i].phoneNumbers[0].value) < 0){
+ json.name = contacts[i].displayName
+ json.phone = contacts[i].phoneNumbers[0].value
+ phone = phone.concat(json.phone)
+ ob = ob.concat(json)
+ }
+ }
+ }
- if(ob.length > 0){
- self.$util.post('Contacts/setContacts', ob).then(res => {
- uni.hideLoading()
- uni.showToast({
- title: res.msg || '授权成功!',
- icon: 'success',
- })
- })
- }
- uni.hideLoading()
- })
- },
- function (e){
- this.requestAndroidPermission('android.permission.READ_CONTACTS')
- })
- },
- }
- }
+ if(ob.length > 0){
+ self.$util.post('Contacts/setContacts', ob).then(res => {
+ uni.hideLoading()
+ uni.showToast({
+ title: res.msg || '授权成功!',
+ icon: 'success',
+ })
+ })
+ }
+ uni.hideLoading()
+ })
+ },
+ function (e){
+ this.requestAndroidPermission('android.permission.READ_CONTACTS')
+ })
+ },
+ }
+}
</script>
<style>
- @import url(@/static/css/index.css);
+@import url(@/static/css/index.css);
+</style>
+<style lang="scss">
+ .cateNav {
+ display: flex;
+ justify-content: center;
+ gap: 30rpx;
+ margin-top: 40rpx;
+ margin-bottom: 30rpx;
+ .cateNav-item {
+ width: 20%;
+ text-align: center;
+ .cateNav-title {
+ color: #333333;
+ font-weight: bold;
+ font-size: 32rpx;
+ }
+ .cateNav-desc {
+ color: #666666;
+ font-size: 24rpx;
+ }
+ }
+ .cateNav-item.active {
+ .cateNav-title {
+ color: #4766FE;
+ }
+ .cateNav-desc {
+ color: #ffffff;
+ background-color: #4766FE;
+ border-radius: 50rpx;
+ padding: 12rpx 0;
+ }
+ }
+ }
+.uni-popup {
+ position: fixed;
+ top: 0;
+ bottom: 0;
+ left: 0;
+ right: 0;
+ z-index: 99999;
+ overflow: hidden;
+ &__wrapper {
+ position: absolute;
+ z-index: 9999999;
+ /* #ifndef APP-NVUE */
+ box-sizing: border-box;
+ /* #endif */
+ &.ani {
+ /* #ifndef APP-NVUE */
+ transition: all 0.3s;
+ /* #endif */
+ }
+ &.top {
+ top: 0;
+ width:705rpx;
+ /* #ifdef APP-NVUE */
+ left:22.5rpx;
+ /* #endif */
+ /* #ifndef APP-NVUE */
+ left:0;
+ transform: translateY(-705rpx);
+ /* #endif */
+ }
+ &-box {
+ position: relative;
+ /* #ifndef APP-NVUE */
+ box-sizing: border-box;
+ /* #endif */
+ }
+ &.uni-custom {
+ & .uni-popup__wrapper-box {
+ width: 705rpx;
+ /* #ifndef APP-NVUE */
+ margin: 0 22.5rpx;
+ /* #endif */
+ padding: 30upx;
+ background: #fff;
+ z-index:9999;
+ border: solid 2rpx #ddd;
+ /* #ifndef APP-NVUE */
+ box-sizing: border-box;
+ /* #endif */
+ border-radius: 16rpx;
+ .title{
+ font-size: 32rpx;
+ font-weight: bold;
+ }
+ .content{
+ margin-top: 16rpx;
+ line-height: 1.6;
+ }
+ }
+ &.top{
+ & .uni-popup__wrapper-box {
+ width: 705rpx;
+ }
+ }
+ }
+ &.uni-top{
+ transform: translateY(0);
+ }
+ }
+}
</style>
diff --git a/pages/login/login.vue b/pages/login/login.vue
index b14533a..b80678a 100644
--- a/pages/login/login.vue
+++ b/pages/login/login.vue
@@ -25,7 +25,7 @@
</view>
<view class="loginBtn">
<view class="loginBtn-desc">
- <image @click="agreeClick" class="loginBtn-icon" :src="!loginAct ? '/static/imgs/check.png' : '/static/imgs/checked.png'" ></image>
+ <image @click="agreeClick" class="loginBtn-icon" :src="!loginAct ? '/static/imgs/check.png' : '/static/imgs/checked.png'" mode=""></image>
<text>我已阅读并同意</text>
<text class="blue" @tap="agreeDialog1">《注册协议》</text>
<text class="blue" @tap="agreeDialog2">《隐私政策》</text>
@@ -77,103 +77,62 @@
agreeClick () {
this.loginAct = !this.loginAct
},
- async loginUser() {
- let t = this
-
- if (!t.loginAct) {
- return uni.showToast({
- title: '请阅读并同意协议政策',
- icon: 'error'
- })
- }
-
- if (t.formData.phone == '' || !t.phoneReg.test(t.formData.phone)) {
- return uni.showToast({
- title: '手机号错误!',
- icon: 'error'
- })
- }
-
- if (t.formData.pass == '' && t.formData.loginType == 1) {
- return uni.showToast({
- title: '请输入密码!',
- icon: 'error'
- })
- }
-
- if (t.formData.code == '' && t.formData.loginType == 2) {
- return uni.showToast({
- title: '请输入验证码!',
- icon: 'error'
- })
- }
-
- try {
-
- // 登录接口
- const res = await t.$util.post('User/Login', this.formData)
-
- if (res.code == 1) {
-
- uni.setStorageSync('lzsc-token', res.data.userToken)
- uni.setStorageSync('user-info', JSON.stringify(res.data))
-
- let isSwitch = 0
- let goUrl = ''
-
- // qxgLogin接口
- const ygxRes = await new Promise((resolve, reject) => {
- uni.request({
- url: t.$webHost + '/api/v2/auth/qxgIosUnionLogin?phone=' + t.$util.getUserInfo().phone,
- success: resolve,
- fail: reject
- })
- })
- console.log(ygxRes);
- if(!ygxRes.data.data.boughtEquity){
- goUrl = '/pages/quanyi/index'
- t.$util.goPages(goUrl)
- return
- }
-
- t.qxgLogin = ygxRes.data.data
- uni.setStorageSync('qxgLogin', t.qxgLogin)
-
- if (this.backUrl == '') {
- isSwitch = 1
- goUrl = '/pages/index/index'
- } else {
- goUrl = this.backUrl
- }
-
- uni.showToast({
- title: res.msg || '登录成功'
- })
-
- setTimeout(() => {
- if (isSwitch == 1) {
- t.$util.goSwitch(goUrl)
- } else {
- t.$util.goPages(goUrl)
- }
- }, 1500)
-
- } else {
- uni.showToast({
- title: res.msg || '登录失败',
- icon: 'error'
- })
- }
-
- } catch (err) {
- console.error(err)
-
- uni.showToast({
- title: '请求失败',
- icon: 'error'
- })
- }
- },
+ loginUser () {
+ let t = this
+ if(!t.loginAct) {
+ return uni.showToast({
+ title: '请阅读并同意协议政策',
+ icon: 'error'
+ })
+ }
+ if(t.formData.phone == '' || !t.phoneReg.test(t.formData.phone)){
+ return uni.showToast({
+ title: '手机号错误!',
+ icon: 'error',
+ })
+ }
+ if(t.formData.pass == '' && t.formData.loginType == 1){
+ return uni.showToast({
+ title: '请输入密码!',
+ icon: 'error',
+ })
+ }
+ if(t.formData.code == '' && t.formData.loginType == 2){
+ return uni.showToast({
+ title: '请输入验证码!',
+ icon: 'error',
+ })
+ }
+ t.$util.post('User/Login', this.formData).then(res => {
+ if(res.code == 1) {
+ uni.setStorageSync('pig-token', res.data.userToken)
+ uni.setStorageSync('user-info', JSON.stringify(res.data))
+ let isSwitch = 0
+ let goUrl = ''
+ if(this.backUrl == ''){
+ isSwitch = 1
+ goUrl = '/pages/index/index'
+ } else {
+ goUrl = this.backUrl
+ }
+ uni.showToast({
+ title: res.msg || '登录成功'
+ })
+ setTimeout(() => {
+ if(isSwitch == 1) {
+ t.$util.goSwitch(goUrl)
+ } else {
+ t.$util.goPages(goUrl)
+ }
+ }, 1500)
+ } else {
+ uni.showToast({
+ title: res.msg || '登录失败',
+ icon: 'error'
+ })
+ }
+ })
+ },
sendCode () {
let t = this
if(this.formData.phone == '' || !this.phoneReg.test(t.formData.phone)){
diff --git a/pages/my/my.vue b/pages/my/my.vue
index f357ffe..2e17da6 100644
--- a/pages/my/my.vue
+++ b/pages/my/my.vue
@@ -1,12 +1,13 @@
<template>
- <view class="my">
+ <view class="myView">
+ <image class="myView-bg" src="@/static/imgs/my-bg.png" mode="scaleToFill"></image>
<yk-authpup ref="authpup" type="top" @changeAuth="changeAuth" noticeTitle="便于您使用该功能上传您的照片用于核实身份场景中读取相册内容" permissionID="WRITE_EXTERNAL_STORAGE"></yk-authpup>
<yk-authpup ref="camears" type="top" @changeAuth="changeAuth2" noticeTitle="便于您使用该功能便于您拍摄上传用于核实身份场景" permissionID="CAMERA"></yk-authpup>
- <view class="startBar" style="background-color: #e3b400;"></view>
- <view class="myTop">
- <view class="headimg">
- <image :src="userInfo != null ? userInfo.avatar : '/static/imgs/headimg.png'" class="" mode="widthFix" @tap="setImg"></image>
- <view class="">
+ <view class="startBar"></view>
+ <view class="myContent">
+ <view class="myHeader">
+ <image :src="userInfo != null ? userInfo.avatar : '/static/imgs/headimg.png'" class="avatar" mode="" @tap="setImg"></image>
+ <view class="myNick">
<template>
<view v-if="userInfo == null" @tap="$util.goPages('/pages/login/login')">未登录</view>
<view v-else>{{userInfo.phone}}</view>
@@ -22,107 +23,90 @@
</template>
</template>
<template v-if="userInfo != null && userInfo.face_auth == 0">
- <view class="edu" @tap="$util.checkGoPages('/pages/my/my')">未认证(去认证)</view>
+ <view class="edu" @tap="$util.checkGoPages('/pages/my/my')">未认证</view>
</template>
</view>
</view>
- </view>
-
- <view class="myNavs">
- <view class="myNavs-tips" @tap="$util.checkLogin('/pages/order/order')">
- <text class="myNavs-tips-text">我的订单</text>
- <view class="myNavs-tips-rgt">
- <text>查看全部</text>
- <image src="/static/imgs/right.png" mode=""></image>
+
+ <view class="auth" v-if="userInfo && userInfo.over_auth != 1" @tap="$util.checkGoPages('/pages/my/my')">
+ <image src="@/static/imgs/notice.png" mode=""></image>
+ <text>您还未进行实名认证,点击前往实名认证</text>
+ <view class="">去认证</view>
+ </view>
+
+ <!-- <view class="num-wrapper tui-skeleton-rect">
+ <view class="num-item" style="display: flex;background: white;border-radius: 24rpx;padding: 22rpx;width: 48%;" @tap="$util.checkLogin('/pages/collect/collect')">
+ <view style="padding-right: 32rpx;">
+ <image style="width: 48rpx;height: 48rpx;margin-top: 30rpx;" src="/static/imgs/Star.png"></image>
+ </view>
+ <view style="flex: 1">
+ <view class="txt" style="color: #666;text-align:left">我的收藏</view>
+ <view class="num" style="color: #333;text-align:left;margin-top: 8rpx;">0</view>
+
+ </view>
+ </view>
+ <view style="display: flex;background: white;border-radius: 24rpx;padding: 22rpx;width: 48%;" class="num-item" @tap="$util.checkLogin('/pages/address/address')">
+ <view style="padding-right: 32rpx;">
+ <image style="width: 48rpx;height: 48rpx;margin-top: 30rpx;" src="/static/imgs/History.png"></image>
+ </view>
+ <view style="flex: 1">
+ <view class="txt" style="color: #666;text-align:left">我的地址</view>
+ <view class="num" style="color: #333;text-align:left;margin-top: 5rpx;">0</view>
+
+ </view>
+
+ </view>
+ </view> -->
+
+ <view class="navs">
+ <view class="title" @tap="$util.checkLogin('/pages/order/order')">
+ <text>我的订单</text>
+ <view class="navs-rgt">
+ <text>查看全部</text>
+ <image src="/static/imgs/right.png" mode=""></image>
+ </view>
+ </view>
+ <view class="navCon">
+ <view class="navCon-v" v-for="(item, index) in navData" @tap="$util.checkLogin(item.url)">
+ <image :src="'../../static/imgs/nv' + item.index + '.png'" mode=""></image>
+ <view>{{item.text}}</view>
+ </view>
</view>
</view>
- <view class="myNavs-view">
- <view class="myNavs-item" @tap="$util.checkLogin('/pages/order/order?status=1')">
- <image class="myNavs-item-icon" src="/static/imgs/my-n-1.png" mode="widthFix"></image>
- <text class="myNavs-item-text">待支付</text>
- </view>
- <view class="myNavs-item" @tap="$util.checkLogin('/pages/order/order?status=3')">
- <image class="myNavs-item-icon" src="/static/imgs/my-n-5.png" mode="widthFix"></image>
- <text class="myNavs-item-text">待签约</text>
- </view>
- <view class="myNavs-item" @tap="$util.checkLogin('/pages/order/order?status=4')">
- <image class="myNavs-item-icon" src="/static/imgs/my-n-2.png" mode="widthFix"></image>
- <text class="myNavs-item-text">待发货</text>
- </view>
- <view class="myNavs-item" @tap="$util.checkLogin('/pages/order/order?status=5')">
- <image class="myNavs-item-icon" src="/static/imgs/my-n-3.png" mode="widthFix"></image>
- <text class="myNavs-item-text">待收货</text>
- </view>
- <view class="myNavs-item" @tap="$util.checkLogin('/pages/order/order?status=8')">
- <image class="myNavs-item-icon" src="/static/imgs/my-n-4.png" mode="widthFix"></image>
- <text class="myNavs-item-text">已完成</text>
+
+ <view class="mySer">
+ <view class="title">我的服务</view>
+ <view class="mySerCon">
+ <template v-for="(item, index) in mySerData">
+ <view class="mySerCon-v" @tap="$util.checkLogin(item.url)" v-if="item.index != 6">
+ <image :src="'../../static/imgs/mf' + item.index + '.png'" mode=""></image>
+ <view>{{item.text}}</view>
+ </view>
+ <view class="mySerCon-v" @tap="goKefu" v-else>
+ <image :src="'../../static/imgs/mf' + item.index + '.png'" mode=""></image>
+ <view>{{item.text}}</view>
+ </view>
+ </template>
</view>
</view>
- </view>
-
- <view class="myServe">
- <view class="myNavs-tips">
- <text class="myNavs-tips-text">我的服务</text>
+ <!-- <view style="text-align: center;font-size: 24rpx;color: #666666;margin: 80rpx 0;">
+ 客服电话:400-6229-771(8:00-20:00)
+ </view> -->
+ <view class="myBeiAn">
+ <view class="">
+ <text @tap="agreeDialog1">《用户协议》</text>
+ <text>|</text>
+ <text @tap="agreeDialog2">《隐私政策》</text>
+ </view>
+ <view @tap="goWebUrl('http://beian.miit.gov.cn')">APP备案号: {{Config.icp}}</view>
+ <view @tap="goWebUrl('http://beian.miit.gov.cn')">Copyright © 2025 数澜科技 All Rights Reserved.</view>
+ <!-- <view @tap="goWebUrl('http://beian.miit.gov.cn')">Copyright © 2025 {{Config.url}} All Rights Reserved.</view> -->
+
</view>
- <view class="myServe-view">
- <view class="myServe-item" @tap="$util.checkLogin('/pages/profile/profile')">
- <image src="/static/imgs/my-s-1.png" mode="widthFix"></image>
- <text>个人信息</text>
- </view>
- <view class="myServe-item" @tap="$util.checkLogin('/pages/logs/logs')" v-if="Config && Config.put_open == 2">
- <image src="/static/imgs/my-s-2.png" mode="widthFix"></image>
- <text>账单信息</text>
- </view>
- <view class="myServe-item" @tap="$util.checkLogin('/pages/bank/bank')">
- <image src="/static/imgs/my-s-3.png" mode="widthFix"></image>
- <text>银行卡</text>
- </view>
- <view class="myServe-item" @tap="$util.checkLogin('/pages/address/address')">
- <image src="/static/imgs/my-s-4.png" mode="widthFix"></image>
- <text>我的地址</text>
- </view>
- <view class="myServe-item" @tap="$util.checkLogin('/pages/collect/collect')">
- <image src="/static/imgs/my-s-5.png" mode="widthFix"></image>
- <text>我的收藏</text>
- </view>
- <view class="myServe-item" @tap="goKefu">
- <image src="/static/imgs/my-s-6.png" mode="widthFix"></image>
- <text>联系客服</text>
- </view>
- <view class="myServe-item" @tap="toHuishou" >
- <template v-if="isShop">
- <image src="/static/imgs/quanshou.png" mode="widthFix"></image>
- <text>会员权收</text></template>
-
- </view>
-
- </view>
- </view>
- <view class="myBeiAn">
- <view class="">
- <text @tap="agreeDialog1">《用户协议》</text>
- <text>|</text>
- <text @tap="agreeDialog2">《隐私政策》</text>
- </view>
- <view @tap="goWebUrl('http://beian.miit.gov.cn')">APP备案号: {{Config.icp}}</view>
- <view @tap="goWebUrl('http://beian.miit.gov.cn')">Copyright © 2025 {{Config.url}} All Rights Reserved.</view>
+ <agreePup ref="agreePup1" :gp="1" title="注册协议"></agreePup>
+ <agreePup ref="agreePup2" :gp="2" title="隐私政策"></agreePup>
</view>
- <agreePup ref="agreePup1" :gp="1" title="注册协议"></agreePup>
- <agreePup ref="agreePup2" :gp="2" title="隐私政策"></agreePup>
-
- <uni-popup type="center" ref="comment" >
- <view style="background-image: url('/static/imgs/BOXSDF.png');background-repeat: no-repeat;background-size: 100% 100%">
- <view style="border-radius: 48rpx;padding: 28rpx 20rpx">
- <view style="text-align: center;padding-top: 30rpx;" >
- <image src="/static/imgs/wuImg.png" style="width: 372rpx;height: 240rpx;"></image>
- </view>
- <view style="font-size: 32rpx;font-weight: 600;color: #333333;text-align: center;margin-top: 34rpx;margin-bottom: 80rpx;padding: 0 28rpx;">{{errState}}</view>
- <view @click="$refs.comment.close()" style="font-weight: 500;font-size: 32rpx;color: #fff;text-align: center;padding: 24rpx 28rpx;border-top: 2rpx solid #EEEEEE;background: #FF1472;;border-radius: 40rpx ;">好的</view>
- </view>
- </view>
-
- </uni-popup>
</view>
</template>
@@ -137,58 +121,41 @@
return {
userInfo: this.$util.getUserInfo(),
Config: {put_open: 1},
- isShop:false,
- errState:''
+ navData: [
+ {index: 1, text: '待支付', url: '/pages/order/order?status=1'},
+ {index: 3, text: '待发货', url: '/pages/order/order?status=4'},
+ {index: 4, text: '待收货', url: '/pages/order/order?status=5'},
+ {index: 2, text: '待签约', url: '/pages/order/order?status=3'},
+ {index: 5, text: '已完成', url: '/pages/order/order?status=8'}
+ ],
+ mySerData: [
+ {index: 1, text: '个人信息', url: '/pages/profile/profile'},
+ // {index: 2, text: '账单信息', url: '/pages/logs/logs'},
+ // {index: 3, text: '银行卡', url: '/pages/bank/bank'},
+ {index: 2, text: '我的地址', url: '/pages/address/address'},
+ {index: 3, text: '我的收藏', url: '/pages/collect/collect'},
+ // {index: 4, text: '会员权收', url: '/pages/quanshou/index'},
+ {index: 6, text: '联系客服'},
+ ]
}
},
- onLoad() {
+ onLoad() {
},
- async onShow() {
+ onShow() {
this.getConfig()
this.getUserInfo()
- const _this = this;
- if(_this.$util.getUserInfo()?.phone){
- await uni.request({
- url: _this.$webHost+'/api/v2/auth/qxgIosUnionLogin?phone='+_this.$util.getUserInfo().phone,
- data:{
- customerId: uni.getStorageSync('qxgLogin').customerId,
- appId: uni.getStorageSync('qxgLogin').appId
- },
- success: function (res) {
- _this.isShop = res?.data?.data?.isShop;
- uni.setStorageSync('qxgLogin', res.data.data)
- }
- })
- }
},
methods: {
- toHuishou(){
- const _this = this;
- if(!_this.isShop){
- return
- }
- uni.request({
- url: _this.$webHost+'/api/v2/customer/ryxIsBuyEquity?phone='+_this.$util.getUserInfo().phone,
- data:{
- customerId: uni.getStorageSync('qxgLogin').customerId,
- appId: uni.getStorageSync('qxgLogin').appId
- },
- success: function (res) {
- if(res.data.code==200){
- uni.navigateTo( {
- url: '/pages/quanshou/index'
- })
-
- } else {
- _this.errState = res.data.data;
- _this.$refs.comment.open()
-
- }
- }
- })
-
- },
-
+ // 收藏+浏览记录
+ goMenuPage(url) {
+ if (this.userInfo) {
+ uni.navigateTo({
+ animationType: 'zoom-fade-out',
+ animationDuration: 200,
+ url
+ })
+ }
+ },
goKefu() {
if(this.Config && this.Config.kefu_open == 1) {
this.wechatWork()
@@ -247,7 +214,7 @@
getUserInfo () {
let t = this
t.$util.post('User/getUser').then(res => {
- t.userInfo = res.data
+ t.userInfo = res.data
})
},
agreeDialog1 (e) {
@@ -300,7 +267,35 @@
}
}
</script>
-
<style>
- @import url(/static/css/my.css);
-</style>
+ @import url(/static/css/my2.css);
+
+ .num-wrapper {
+ width: 650rpx;
+ margin: 30rpx auto;
+ z-index: 30;
+ position: relative;
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ color: #fff;
+ gap: 20rpx;
+
+ }
+ .num-wrapper .num-item {
+ width: 33.33%;
+ text-align: center;
+
+
+ }
+ .num-wrapper .num {
+ font-size: 42rpx;
+ font-weight: bold;
+ }
+
+ .num-wrapper .txt {
+ margin-top: 10rpx;
+ font-size: 26rpx;
+ color: rgba(255, 255, 255, 0.6);
+ }
+</style>
\ No newline at end of file
diff --git a/pages/my/my_bak.vue b/pages/my/my_bak.vue
new file mode 100644
index 0000000..8e6ba07
--- /dev/null
+++ b/pages/my/my_bak.vue
@@ -0,0 +1,246 @@
+<template>
+ <view class="my">
+ <yk-authpup ref="authpup" type="top" @changeAuth="changeAuth" noticeTitle="便于您使用该功能上传您的照片用于核实身份场景中读取相册内容" permissionID="WRITE_EXTERNAL_STORAGE"></yk-authpup>
+ <yk-authpup ref="camears" type="top" @changeAuth="changeAuth2" noticeTitle="便于您使用该功能便于您拍摄上传用于核实身份场景" permissionID="CAMERA"></yk-authpup>
+ <view class="startBar"></view>
+ <view class="myTop">
+ <view class="headimg">
+ <image :src="userInfo != null ? userInfo.avatar : '/static/imgs/headimg.png'" class="" mode="" @tap="setImg"></image>
+ <view class="">
+ <template>
+ <view v-if="userInfo == null" @tap="$util.goPages('/pages/login/login')">未登录</view>
+ <view v-else>{{userInfo.phone}}</view>
+ </template>
+ <template v-if="userInfo != null && Config">
+ <template v-if="userInfo.status == 1">
+ <view class="edu" v-if="userInfo != null && userInfo.edu_auth == 0 && Config.put_open == 2 && userInfo.over_auth == 0">额度:未认证</view>
+ <view class="edu" v-else-if="userInfo != null && userInfo.edu_auth == 0 && Config.put_open == 2 && userInfo.over_auth == 1">额度:授信中</view>
+ <view class="edu" v-else-if="userInfo != null && userInfo.edu_auth == 1 && Config.put_open == 2">额度:{{userInfo.const}}</view>
+ </template>
+ <template v-else>
+ <view class="edu">额度:授信失败</view>
+ </template>
+ </template>
+ <template v-if="userInfo != null && userInfo.face_auth == 0">
+ <view class="edu" @tap="$util.checkGoPages('/pages/my/my')">未认证(去认证)</view>
+ </template>
+ </view>
+ </view>
+ </view>
+
+ <view class="myNavs">
+ <view class="myNavs-tips" @tap="$util.checkLogin('/pages/order/order')">
+ <text class="myNavs-tips-text">我的订单</text>
+ <view class="myNavs-tips-rgt">
+ <text>查看全部</text>
+ <image src="/static/imgs/right.png" mode=""></image>
+ </view>
+ </view>
+ <view class="myNavs-view">
+ <view class="myNavs-item" @tap="$util.checkLogin('/pages/order/order?status=1')">
+ <image class="myNavs-item-icon" src="/static/imgs/my-n-1.png" mode=""></image>
+ <text class="myNavs-item-text">待支付</text>
+ </view>
+ <view class="myNavs-item" @tap="$util.checkLogin('/pages/order/order?status=3')">
+ <image class="myNavs-item-icon" src="/static/imgs/my-n-5.png" mode=""></image>
+ <text class="myNavs-item-text">待签约</text>
+ </view>
+ <view class="myNavs-item" @tap="$util.checkLogin('/pages/order/order?status=4')">
+ <image class="myNavs-item-icon" src="/static/imgs/my-n-2.png" mode=""></image>
+ <text class="myNavs-item-text">待发货</text>
+ </view>
+ <view class="myNavs-item" @tap="$util.checkLogin('/pages/order/order?status=5')">
+ <image class="myNavs-item-icon" src="/static/imgs/my-n-3.png" mode=""></image>
+ <text class="myNavs-item-text">待收货</text>
+ </view>
+ <view class="myNavs-item" @tap="$util.checkLogin('/pages/order/order?status=8')">
+ <image class="myNavs-item-icon" src="/static/imgs/my-n-4.png" mode=""></image>
+ <text class="myNavs-item-text">已完成</text>
+ </view>
+ </view>
+ </view>
+
+ <view class="myServe">
+ <view class="myNavs-tips">
+ <text class="myNavs-tips-text">我的服务</text>
+ </view>
+ <view class="myServe-view">
+ <view class="myServe-item" @tap="$util.checkLogin('/pages/profile/profile')">
+ <image src="/static/imgs/my-s-1.png" mode=""></image>
+ <text>个人信息</text>
+ </view>
+ <view class="myServe-item" @tap="$util.checkLogin('/pages/logs/logs')" v-if="Config && Config.put_open == 2">
+ <image src="/static/imgs/my-s-2.png" mode=""></image>
+ <text>账单信息</text>
+ </view>
+ <view class="myServe-item" @tap="$util.checkLogin('/pages/bank/bank')">
+ <image src="/static/imgs/my-s-3.png" mode=""></image>
+ <text>银行卡</text>
+ </view>
+ <view class="myServe-item" @tap="$util.checkLogin('/pages/address/address')">
+ <image src="/static/imgs/my-s-4.png" mode=""></image>
+ <text>我的地址</text>
+ </view>
+ <view class="myServe-item" @tap="$util.checkLogin('/pages/collect/collect')">
+ <image src="/static/imgs/my-s-5.png" mode=""></image>
+ <text>我的收藏</text>
+ </view>
+ <view class="myServe-item" @tap="goKefu">
+ <image src="/static/imgs/my-s-6.png" mode=""></image>
+ <text>联系客服</text>
+ </view>
+ <view class="myServe-item" v-if="Config.put_open == 1">
+
+ </view>
+ </view>
+ </view>
+ <view class="myBeiAn">
+ <view class="">
+ <text @tap="agreeDialog1">《用户协议》</text>
+ <text>|</text>
+ <text @tap="agreeDialog2">《隐私政策》</text>
+ </view>
+ <view @tap="goWebUrl('http://beian.miit.gov.cn')">APP备案号: {{Config.icp}}</view>
+ <view @tap="goWebUrl('http://beian.miit.gov.cn')">Copyright © 2025 {{Config.url}} All Rights Reserved.</view>
+
+ </view>
+ <agreePup ref="agreePup1" :gp="1" title="注册协议"></agreePup>
+ <agreePup ref="agreePup2" :gp="2" title="隐私政策"></agreePup>
+ </view>
+</template>
+
+<script>
+ import ykAuthpup from "@/components/yk-authpup/yk-authpup";
+ import agreePup from "@/components/agreePup/agreePup";
+ export default {
+ components: {
+ agreePup
+ },
+ data() {
+ return {
+ userInfo: this.$util.getUserInfo(),
+ Config: {put_open: 1},
+ }
+ },
+ onLoad() {
+ },
+ onShow() {
+ this.getConfig()
+ this.getUserInfo()
+ },
+ methods: {
+ goKefu() {
+ if(this.Config && this.Config.kefu_open == 1) {
+ this.wechatWork()
+ } else {
+ this.$util.checkLogin('/pages/customer/customer')
+ }
+ },
+ setImg(){
+ if(uni.getSystemInfoSync().platform != 'ios'){
+ this.$refs['authpup'].open()
+ }else{
+ this.chooseImg()
+ }//调起自定义权限目的弹框,具体可看示例里面很详细
+ },
+ changeAuth () {
+ //这里是权限通过后执行自己的代码逻辑
+ if(uni.getSystemInfoSync().platform !='ios'){
+ this.$refs['camears'].open()
+ }
+ this.chooseImg()
+ },
+ changeAuth2(){
+ this.chooseImg()
+ },
+ chooseImg () {
+ let t = this
+ uni.chooseImage({
+ count: 1, // 默认9
+ sizeType: ['original', 'compressed'],
+ success: (chooseImageRes) => {
+ let tempFilePaths = chooseImageRes.tempFilePaths
+ let token = uni.getStorageSync('lzsc-token')
+ let header = {
+ 'Accept': 'application/json',
+ 'authorization': token,
+ }
+ uni.showLoading({
+ title: '上传中..',
+ })
+ uni.uploadFile({
+ url: t.$baseUrl + '/api/user/setAvatar',
+ filePath: tempFilePaths[0],
+ header: header,
+ name: 'file',
+ success: (uploadFileRes) => {
+ uni.hideLoading()
+ let res = JSON.parse(uploadFileRes.data)
+ res = JSON.parse(t.$util.decryptDes(res.data))
+ t.userInfo.avatar = res.avatar
+ uni.setStorageSync('user-info', JSON.stringify(res))
+ }
+ })
+ }
+ })
+ },
+ getUserInfo () {
+ let t = this
+ t.$util.post('User/getUser').then(res => {
+ t.userInfo = res.data
+ })
+ },
+ agreeDialog1 (e) {
+ this.$refs.agreePup1.dialog = !this.$refs.agreePup1.dialog
+ },
+ agreeDialog2 (e) {
+ this.$refs.agreePup2.dialog = !this.$refs.agreePup2.dialog
+ },
+ goWebUrl (url) {
+ // #ifdef APP-PLUS
+ plus.runtime.openURL(url)
+ // #endif
+ },
+ getConfig () {
+ let t = this
+ t.$util.post('Index/getConfig').then(res => {
+ t.Config = res.data
+ })
+ },
+ wechatWork () {
+ let t = this
+ if(t.Config){
+ if(t.Config.put_open == 1){
+ uni.showModal({
+ title: '联系客服',
+ content: '请联系客服电话:' + t.Config.kefu_phone,
+ showCancel: false,
+ success: function (res) {
+ if (res.confirm) {
+ }
+ }
+ });
+ } else {
+ console.log(t.Config)
+ uni.share({
+ provider: "weixin",
+ openCustomerServiceChat: true,
+ customerUrl: t.Config.work_url, //企业微信地址
+ corpid: t.Config.work_id, //企业id
+ success: (res) => {
+ console.log("success:" + JSON.stringify(res))
+ },
+ fail: (err) => {
+ console.log("fail:" + JSON.stringify(err))
+ }
+ })
+ }
+ }
+ }
+ }
+ }
+</script>
+
+<style>
+ @import url(/static/css/my.css);
+</style>
diff --git a/pages/profile/profile.vue b/pages/profile/profile.vue
index c2f61bd..975e879 100644
--- a/pages/profile/profile.vue
+++ b/pages/profile/profile.vue
@@ -27,7 +27,7 @@
<input type="text" disabled v-model="userInfo.idcard" placeholder="请输入身份证" />
</view>
</view>
- <view class="profile-item">
+ <!-- <view class="profile-item">
<text class="label">总余额</text>
<view class="">
<input type="text" disabled v-model="userInfo.edu" placeholder="请输入可用额度" />
@@ -45,7 +45,7 @@
<switch @change="equityOpen" v-if="userInfo.equity_open == 1" checked color="#e3b400" style="transform:scale(0.7)"/>
<switch @change="equityOpen" v-else color="#e3b400" style="transform:scale(0.7)"/>
</view>
- </view>
+ </view> -->
</view>
<view class="logout" @tap="logOut">退出登录</view>
<view class="logout red" @tap="logOff">注销账号</view>
@@ -110,7 +110,7 @@
})
},
logOut () {
- uni.setStorageSync('lzsc-token', null)
+ uni.setStorageSync('pig-token', null)
uni.setStorageSync('user-info', null)
uni.setStorageSync('choose-address',null)
uni.setStorageSync('choose-bank',null)
diff --git a/static/css/collect.css b/static/css/collect.css
index df7dfd3..9d3b773 100644
--- a/static/css/collect.css
+++ b/static/css/collect.css
@@ -1,7 +1,7 @@
.collect-title{
position: fixed;
left: 0;
- top: var(--status-bar-height);
+ top: 0;
z-index: 99;
width: 100%;
background-color: #ebebeb;
diff --git a/static/css/ginfo.css b/static/css/ginfo.css
index 2cba224..a20fcd2 100644
--- a/static/css/ginfo.css
+++ b/static/css/ginfo.css
@@ -111,7 +111,7 @@
width: 88%;
height: 78upx;
border-radius: 50upx;
- background-color: #e3b400;
+ background-color: #4766FE;
color: #ffffff;
display: flex;
justify-content: center;
diff --git a/static/css/index.css b/static/css/index.css
index 9380c7b..f73eb0f 100644
--- a/static/css/index.css
+++ b/static/css/index.css
@@ -1,553 +1,640 @@
page{
- background-color: #EEEBEC;
- font-size: 24upx;
+ background-color: #F7F7F7;
+ font-size: 24upx;
}
-.status_bar {
- height: var(--status-bar-height);
+.content{
+ position: absolute;
+ width: 100%;
+ padding-bottom: calc(var(--window-bottom));
+}
+.page-container {
+ display: flex;
+ flex-direction: column;
+ min-height: 100vh;
+ position: relative;
+ padding-top: 50upx;
+}
+
+.page-bg {
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 620rpx;
+ z-index: 0;
+ background: linear-gradient( 180deg, #47B2FE 0%, rgba(111,245,255,0) 100%);
+}
+.content {
+
+}
+.status-bar {
width: 100%;
}
-.index-top{
- background: url(@/static/imgs/index-bg.png) no-repeat;
- background-size: 100% 100%;
- width: 100%;
+
+.btn-group {
+ display: flex;
+ margin-top: 30rpx;
}
-.index-title{
- padding: 30rpx 0;
- display: flex;
+.cancel-btn {
+ flex: 1;
+ margin-right: 20rpx;
+ background-color: #f5f5f5;
}
-.index-title-view{
- display: flex;
- align-items: center;
-}
-.index-title-view-lf{
- margin: 0 32rpx;
-}
-.index-title-view-lf image{
- width: 144rpx;
- height: 56rpx;
-}
-.index-title-view-lf2{
- width: 200rpx;
- height: 40rpx;
- background: #FF1472;
- border-radius: 8rpx 8rpx 8rpx 8rpx;
- text-align: center;
- color: #ffffff;
- line-height: 40rpx;
-}
-.index-title-view1{
- width: 62%;
-}
-.index-title-view2{
- width: 38%;
-}
-.index-title-view-rf {
- display: flex;
- flex: 1;
- justify-content: center;
- align-items: center;
-}
-.index-title-view-rf image{
- width: 40rpx;
- height: 40rpx;
- display: block;
- margin: 0 auto;
+.allow-btn {
+ flex: 1;
+ background-color: #007aff;
+ color: white;
}
.search{
- width: 100%;
- display: flex;
- margin-top: 20upx;
- margin-bottom: 30upx;
+ position: fixed;
+ left: 0;
+ width: 100%;
+ top: var(--status-bar-height);
+ z-index: 9999;
+ background: #fbf8f8;
+ height: 110upx;
}
-.search-1{
- width: 76%;
- display: flex;
- justify-content: center;
- align-items: center;
+.search-v{
+ width: 94%;
+ margin-left: 3%;
+ display: flex;
+ height: 70upx;
+ margin-top: 20upx;
+ align-items: center;
+ font-size: 24upx;
+ justify-content: center;
+ color: #9e9d9d;
+ background-color: #ffffff;
+ border-radius: 30upx;
}
-.search-1 input{
- width: 76%;
- height: 72rpx;
- background: #FFFFFF;
- border-radius: 50rpx;
- padding-left: 14%;
- font-size: 26upx;
+.search-icon{
+ width: 40upx;
+ height: 40upx;
+ margin-right: 20upx;
}
-.search-1 image{
- position: absolute;
- width: 40rpx;
- height: 40rpx;
- left: 8%;
-}
-.search-2{
- width: 20%;
- display: flex;
- justify-content: center;
- align-items: center;
-}
-.search-2 view{
- width: 112rpx;
- height: 72rpx;
- text-align: center;
- line-height: 72rpx;
- color: #ffffff;
- background: #FF1472;
- border-radius: 200rpx;
-}
-
-.tabs{
- display: flex;
- margin-bottom: 20upx;
-}
-.tabs view{
- padding: 0 35rpx;
- margin-left: 35rpx;
- text-align: center;
- line-height: 56rpx;
- height: 56rpx;
- background: #F3F4F6;
- border-radius: 200rpx;
- color: #364153;
-}
-.tabs .active {
- color: #ffffff;
- background: #FF1472;
-}
-
.banner{
- width: 94%;
- margin: 40upx auto 30upx;
-}
-uni-swiper-item{
- border-radius: 32rpx;
+ width: 94%;
+ margin: 20upx auto 20upx;
}
.swiper, .swiper image{
- width: 100%;
- height: 278rpx;
- border-radius: 32rpx;
+ width: 100%;
+ height: 400upx;
+ border-radius: 16upx;
}
-.comm{
- width: 94%;
- margin: 20upx 3% 40upx;
- display: flex;
-}
-.comm .comm-1{
- width: 48%;
- height: 278rpx;
- border-radius: 32rpx;
- background-color: #ffffff;
-}
-.comm .comm-2{
- width: 4%;
- height: 278rpx;
-}
-.comm .comm-3{
- width: 48%;
- height: 278rpx;
- border-radius: 32rpx;
- background-color: #ffffff;
-}
-.comm-title image{
- width: 128rpx;
- height: 40rpx;
- margin: 24rpx 26rpx;
-}
-.comm-goods{
- display: flex;
-}
-.comm-goods .comm-goods-v{
- flex: 1;
- display: flex;
- text-align: center;
- justify-content: center;
-}
-.comm-goods-v text{
- font-family: PingFang SC, PingFang SC;
- font-weight: 600;
- font-size: 24rpx;
- color: #FB2C36;
- text-align: left;
- font-style: normal;
- text-transform: none;
-}
-.comm-goods image{
- width: 128rpx;
- height: 128rpx;
- border-radius: 20rpx;
-}
-.hots{
- width: 94%;
- margin: 20upx auto 40rpx;
- height: 280rpx;
- background: #FFFFFF;
- border-radius: 32rpx 32rpx 32rpx 32rpx;
-}
-.hots-title{
- padding: 24rpx 26rpx;
-}
-.hots-title .hots-icon{
- width: 192rpx;
- height: 40rpx;
- border-radius: 0rpx 0rpx 0rpx 0rpx;
-}
-.hots-rgt{
- float: right;
- display: flex;
- align-items: center;
-}
-.hots-rgt text{
- font-family: PingFang SC, PingFang SC;
- font-weight: 400;
- font-size: 24rpx;
- color: #666666;
- text-align: left;
- font-style: normal;
- text-transform: none;
- margin-right: 10rpx;
-}
-.hots-rgt image{
- width: 32rpx;
- height: 32rpx;
-}
-.hots-goods{
- display: flex;
-}
-.hots-goods .hots-goods-v{
- flex: 1;
- display: flex;
- text-align: center;
- justify-content: center;
-}
-.hots-goods-v text{
- font-family: PingFang SC, PingFang SC;
- font-weight: 600;
- font-size: 24rpx;
- color: #FB2C36;
- text-align: left;
- font-style: normal;
- text-transform: none;
-}
-.hots-goods image{
- width: 136rpx;
- height: 136rpx;
- border-radius: 20rpx;
-}
-
.cates{
- width: 94%;
- margin: 0upx 3%;
- display: inline-block;
- border-top-left-radius: 10upx;
- border-top-right-radius: 10upx;
- padding: 0upx 0 0upx 0;
+ width: 100%;
+ margin: 0;
+ margin-top: 0rpx;
+ border-radius: 50rpx;
+ /* border-top-right-radius: 30rpx;
+ border-top-left-radius: 30rpx; */
+ background-color: #ffffff;
+ padding: 0;
+ display: flex;
+ flex-wrap: wrap; /* 确保子元素换行 */
+ padding-bottom: 40rpx;
}
.cates-v{
- float: left;
- width: 20%;
- border-radius: 50%;
- margin-bottom: 0upx;
+ width: 25%;
+ margin-bottom: 0upx;
}
.cates-v-icon{
- width: 80upx;
- height: 80upx;
- display: block;
- margin: 40upx auto 20upx;
- border-radius: 50%;
+ width: 90rpx;
+ height: 90rpx;
+ display: block;
+ margin: 40upx auto 20upx;
+ border-radius: 10upx;
}
.cates-v view{
- text-align: center;
- font-size: 24upx;
+ text-align: center;
+ font-size: 24upx;
color: #364153;
}
.goods-main{
- width: 94%;
- margin: 0upx auto 0upx;
- border-bottom-left-radius: 10upx;
- border-bottom-right-radius: 10upx;
- border-top: 1px solid #eeeeee;
+ width: 94%;
+ margin: 10upx auto 30upx;
+ background-color: #ffffff;
+ border-radius: 10upx;
}
.goods-main-title{
- padding: 20upx;
- display: flex;
- align-items: center;
- margin-bottom: 10upx;
+ padding: 20upx;
+ display: flex;
+ align-items: center;
+ margin-bottom: 10upx;
}
.goods-main-icon{
- width: 70upx;
- height: 70upx;
- margin-right: 20upx;
- border-radius: 10upx;
+ width: 70upx;
+ height: 70upx;
+ margin-right: 20upx;
+ border-radius: 10upx;
}
.goods-main-title text{
- font-size: 30upx;
- color: #333333;
- font-weight: 700;
+ font-size: 30upx;
+ color: #333333;
+ font-weight: 700;
}
.goods-icon{
- width: auto;
- height: 340upx;
+ width: auto;
+ height: 340upx;
}
.goods-list{
- width: 100%;
- display: flex;
- flex-wrap: wrap;
- justify-content: space-between;
-}
-.hyj{
- display: flex;
- justify-content: center;
- margin-left: 10rpx;
- margin-right: 10rpx;
-}
-.hyj image{
- width: 74rpx;
- height: 32rpx;
+ width: 96%;
+ display: flex;
+ margin-left: 2%;
+ flex-wrap: wrap;
+ justify-content: space-between;
}
.goods-item{
- width: 48%;
- border-radius: 18upx;
- background-color: #fbf8f8;
- margin-bottom: 30upx;
+ width: 48%;
+ border-radius: 18upx;
+ background-color: #fbf8f8;
+ margin-bottom: 30upx;
}
.goods-icon{
- width: 100%;
- border-radius: 10upx;
- margin-bottom: 20upx;
+ width: 100%;
+ border-radius: 10upx;
+ margin-bottom: 20upx;
}
.goods-price{
- margin-top: 16upx;
- display: flex;
- align-items: center;
- color: #F75451;
- font-size: 26upx;
- padding: 0 14upx;
- padding-bottom: 20upx;
+ margin-top: 0upx;
+ display: flex;
+ align-items: center;
+ color: #F75451;
+ font-size: 26upx;
+ padding: 0 14upx;
+ padding-bottom: 20upx;
}
.goods-price .red{
- font-size: 26upx !important;
- font-weight: 600;
+ margin-left: 10upx;
+ font-size: 24rpx !important;
+ font-weight: 600;
}
.goods-title{
- padding: 0 14upx;
- font-size: 26upx;
- line-height: 42upx;
- font-weight: 700;
- color: #333;
- display: -webkit-box; /* 设置为WebKit内核的弹性盒子模型 */
- -webkit-box-orient: vertical; /* 垂直排列 */
- -webkit-line-clamp: 1; /* 限制显示两行 */
- overflow: hidden; /* 隐藏超出范围的内容 */
- text-overflow: ellipsis; /* 使用省略号 */
+ padding: 0 14upx;
+ font-size: 26upx;
+ line-height: 42upx;
+ font-weight: 700;
+ color: #333;
+ display: -webkit-box; /* 设置为WebKit内核的弹性盒子模型 */
+ -webkit-box-orient: vertical; /* 垂直排列 */
+ -webkit-line-clamp: 1; /* 限制显示两行 */
+ overflow: hidden; /* 隐藏超出范围的内容 */
+ text-overflow: ellipsis; /* 使用省略号 */
}
.more{
- position: absolute;
- right: 10upx;
- display: flex;
- justify-content: center;
- align-items: center;
+ position: absolute;
+ right: 10upx;
+ display: flex;
+ justify-content: center;
+ align-items: center;
}
.more image{
- width: 36upx;
- height: 36upx;
- margin-right: 30rpx;
+ width: 36upx;
+ height: 36upx;
+ margin-right: 30rpx;
}
.lingqu{
- position: fixed;
- left: 0;
- width: 100%;
- height: 100%;
- top: 0;
- z-index: 99999;
+ position: fixed;
+ left: 0;
+ width: 100%;
+ height: 100%;
+ top: 0;
+ z-index: 99999;
}
.lingqu .msk{
- position: absolute;
- width: 100%;
- height: 100%;
- background-color: #000000;
- opacity: .5;
- left: 0;
- top: 0;
+ position: absolute;
+ width: 100%;
+ height: 100%;
+ background-color: #000000;
+ opacity: .5;
+ left: 0;
+ top: 0;
}
.lingquMain{
- width: 70%;
- height: auto;
- position: absolute;
- top: 35%;
- left: 15%;
+ width: 70%;
+ height: auto;
+ position: absolute;
+ top: 35%;
+ left: 15%;
}
.lingquMain image{
- width: 100%;
- border-radius: 20upx;
+ width: 100%;
+ border-radius: 20upx;
}
.auth{
- width: 94%;
- margin: 30upx auto;
- height: 240upx;
+ width: 94%;
+ margin: 110upx auto 0;
+ height: 240upx;
}
.auth image{
- width: 100%;
- height: 100%;
- border-radius: 20upx;
+ width: 100%;
+ height: 100%;
+ border-radius: 20upx;
}
@keyframes floatUp {
- from {
- transform: translateY(100%); /* 从元素原始位置向下移动100% */
- opacity: 0; /* 初始透明度为0 */
- }
- to {
- transform: translateY(0); /* 移动到原始位置 */
- opacity: 1; /* 完全不透明 */
- }
+ from {
+ transform: translateY(100%); /* 从元素原始位置向下移动100% */
+ opacity: 0; /* 初始透明度为0 */
+ }
+ to {
+ transform: translateY(0); /* 移动到原始位置 */
+ opacity: 1; /* 完全不透明 */
+ }
}
.popup-content {
- animation: floatUp 1s ease-out; /* 应用动画,持续时间为1秒,缓动函数为ease-out */
+ animation: floatUp 1s ease-out; /* 应用动画,持续时间为1秒,缓动函数为ease-out */
}
-.edu-view{
- padding: 40upx 0 10upx;
- width: 560upx;
- border-radius: 50upx;
- background-color: #ffffff;
- background-size: 100% 100%;
+.edu-view{
+ padding: 40upx 0 10upx;
+ width: 560upx;
+ border-radius: 50upx;
+ background-color: #ffffff;
+ background-size: 100% 100%;
}
.edu-view2{
- border-radius: 30upx !important;
+ border-radius: 30upx !important;
}
.edu-icon-succ{
- width: 140upx;
- height: 140upx;
- display: block;
- margin: 50upx auto;
+ width: 140upx;
+ height: 140upx;
+ display: block;
+ margin: 50upx auto;
}
.edu-icon-fail{
- width: 200upx;
- height: 100upx;
- display: block;
- margin: 50upx auto;
+ width: 200upx;
+ height: 100upx;
+ display: block;
+ margin: 50upx auto;
}
.edu-view-desc2{
- font-size: 36upx;
- font-weight: 700;
- text-align: center;
+ font-size: 36upx;
+ font-weight: 700;
+ text-align: center;
}
.edu-view-desc3{
- width: 80%;
- margin: 30upx auto;
- text-align: center;
- font-size: 26upx;
- color: #666666;
- line-height: 40upx;
+ width: 80%;
+ margin: 30upx auto;
+ text-align: center;
+ font-size: 26upx;
+ color: #666666;
+ line-height: 40upx;
}
.edu-btns{
- width: 94%;
- border-radius: 50upx;
- margin: 30upx auto 30upx;
- z-index: 99;
- height: 90upx;
- background-color: #e3b400;
- color: #ffffff;
- letter-spacing: 10upx;
- display: flex;
- justify-content: center;
- align-items: center;
- font-weight: 700;
- font-size: 28upx;
+ width: 94%;
+ border-radius: 50upx;
+ margin: 30upx auto 30upx;
+ z-index: 99;
+ height: 90upx;
+ background-color: #e3b400;
+ color: #ffffff;
+ letter-spacing: 10upx;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ font-weight: 700;
+ font-size: 28upx;
}
-
-.auth{
+.hLogo{
+ width: 96%;
+ padding: 40upx 0;
+ margin: 0 auto;
+}
+.hLogoView{
+ display: flex;
+ align-items: center;
+}
+.h-logo{
+ width: 173rpx;
+ height: 41rpx;
+}
+.hLogo-1{
+ margin: 0 30upx;
+ /* margin-bottom: 20rpx; */
+}
+.hLogo-2{
+ position: relative;
+ width: 100%;
+ height: 72rpx;
+ background-color: #ffffff;
+ border-radius: 50rpx;
+ /* background: url(@/static/imgs/input-bg.png) no-repeat;
+ background-size: 100% 100%; */
+}
+.hLogo-2 .s-btn {
+ position: absolute;
+ right: 30rpx;
+ top: 13rpx;
+ text-align: center;
+ width: 96rpx;
+ height: 50rpx;
+ line-height: 50rpx;
+ border-radius: 25rpx;
+ background-color: #4766FE;
+ color: #ffffff;
+}
+.hLogo-2 .s-icon{
+ position: absolute;
+ left: 30rpx;
+ top: 20rpx;
+ width: 30rpx;
+ height: 30rpx;
+}
+.hLogo-2 input{
+ width: 83%;
+ height: 70rpx;
+ line-height: 70rpx;
+ font-size: 28rpx;
+ background: transparent;
+ padding-left: 70rpx;
+}
+.xxhh-v{
+ width: 96%;
+ margin: 0 auto;
+ padding: 10upx 0;
+ height: 195rpx;
position: relative;
}
-.auth-over{
- background: linear-gradient(#e58585, #d19323);
+.xxhh-v-icon{
+ position: absolute;
width: 100%;
height: 100%;
+}
+.xxhh-title{
+ display: flex;
+ padding: 20upx;
+ align-items: center;
+}
+.xxk-icon{
+ width: 201rpx;
+ height: 47rpx;
+ margin-right: 23rpx;
+}
+.xxhh-title text{
+ z-index: 99;
+ font-size: 22rpx;
+ color: #261B18;
+}
+.xxhh-edu{
+ padding-top: 16upx;
+ padding-bottom: 16upx;
+ z-index: 99;
+}
+.xxhh-edu text{
+ margin-left: 20upx;
+ color: #AEA3A2;
+ font-size: 24rpx;
+}
+.xxhh-money{
+ padding-top: 0;
+ margin-left: 10upx;
+}
+.xxhh-money text{
+ font-size: 48rpx;
+ color: #A18685;
+ font-weight: 700;
+}
+
+.xxhf{
+ width: 96%;
+ margin: 0 auto 30upx;
+ height: 325rpx;
+ background: url(@/static/imgs/xxhf.png) no-repeat;
+ background-size: 100%;
border-radius: 20upx;
}
-.auth-over-edu{
- padding: 30upx 50upx;
- color: #ffffff;
-}
-.auth-over-edu text{
- display: block;
-}
-.auth-over-edu-til{
- font-weight: 500;
- font-size: 30upx;
- letter-spacing: 4upx;
- margin-bottom: 14upx;
-}
-.auth-over-edu-price{
+.xxhf-title{
+ padding: 24upx 80upx;
+ color: #5B2D2C;
+ font-size: 32rpx;
font-weight: 700;
- font-size: 80upx;
- letter-spacing: 5upx;
- margin-bottom: 14upx;
}
-.auth-over-btn{
+.xxhf-v{
+ width: 96%;
+ height: 220rpx;
+ margin: 0 auto 5%;
+ display: flex;
+ background-color: #ffffff;
+ border-radius: 20upx;
+}
+.xxhv-v{
+ flex: 1;
+ height: 100%;
+}
+.deb-icon{
+ width: 100%;
+ height: 100%;
+}
+.xxhv-vv-1{
+ width: 180rpx;
+ height: 180rpx;
+ margin: 20rpx 0 20rpx 12%;
+ background: #EFEFEF;
+ border-radius: 14rpx;
+ border: 3px solid #FFABB5;
+}
+.xxhv-vv-2{
+ width: 180rpx;
+ height: 180rpx;
+ margin: 20rpx 0 20rpx 4%;
+ background: #EFEFEF;
+ border-radius: 14rpx;
+ border: 3px solid #FFABB5;
+}
+.xxhv-vv-t{
+ width: 90%;
+ height: 46rpx;
+ margin: -3rpx auto;
+ font-family: Source Han Sans CN;
+ font-weight: 400;
+ font-size: 26rpx;
+ color: #F8F9FD;
+ line-height: 52rpx;
+ background-size: 100%;
+ text-align: center;
+}
+.xxhv-icon{
+ width: 100%;
+ height: 134rpx;
+}
+.xx-icon{
+ width: 80upx;
+ height: 80upx;
+ display: block;
+ margin: 27rpx auto;
+ border-radius: 10rpx;
+}
+.notice{
+ width: 96%;
+ margin: 0 2% 20upx;
+ background: #ffffff;
+ height: 80upx;
+ display: flex;
+ border-radius: 20upx;
+}
+.n-icon{
+ width: 50upx;
+ height: 50upx;
+ margin: 15upx 20upx;
+}
+.marquee-container {
+ width: 100%;
+ overflow: hidden;
+ white-space: nowrap;
+ box-sizing: border-box;
+}
+.marquee-content {
+ height: 100%;
+ line-height: 80upx;
+ font-size: 28upx;
+ color: #e36900;
+ font-weight: 700;
+ display: inline-block;
+ padding-left: 100%; /* 初始偏移 */
+ animation: marquee 10s linear infinite; /* 动画名称、持续时间、速度曲线、重复次数 */
+}
+@keyframes marquee {
+ 0% { transform: translateX(0); }
+ 100% { transform: translateX(-100%); }
+}
+.kttv{
+ width: 156rpx;
+ height: 62rpx;
+ background-size: 100%;
position: absolute;
right: 30upx;
- top: 38%;
- padding: 20upx 50upx;
- border-radius: 30upx;
- background: #ffffff;
- color: #333333;
- font-weight: 700;
- font-size: 28upx;
- box-shadow: 2px 2px 2px #d1233c;
+ bottom: 10upx;
}
-.auth-over-edu-tip{
- font-weight: 700;
- font-size: 32upx;
- letter-spacing: 5upx;
- margin-bottom: 14upx;
-}
-.auth-2{
- height: auto;
+.kttv text{
+ color: #ffffff;
+ margin-left: 30upx;
+ line-height: 62rpx;
}
-.close-edu{
- position: absolute;
- width: 60upx;
- height: 60upx;
- right: 20upx;
- top: 20upx;
+.ad1{
+ width: 96%;
+ margin: 0 auto;
+ margin-top: 30rpx;
+ height: 302rpx;
+}
+.ad1 image{
+ width: 100%;
+ height: 100%;
}
+.ad2{
+ width: 96%;
+ margin: 30upx auto 20upx;
+ height: 370rpx;
+}
+.ad2 image{
+ width: 100%;
+ height: 100%;
+}
+.d3-wrap {
+ width: 96%;
+ margin: 10upx auto 20upx;
+ height: 278rpx;
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+}
+.ad3{
+ width: 50%;
+ height: 278rpx;
+}
+.ad3 image{
+ width: 100%;
+ height: 100%;
+}
+.ad4 image{
+ width: 100%;
+ height: 100%;
+}
+.ad4 {
+ width: 50%;
+ height: 278rpx;
+}
+
+.ad5{
+ width: 96%;
+ margin: 0 auto;
+ margin-top: 30rpx;
+ height: 308rpx;
+}
+.ad5 image{
+ width: 100%;
+ height: 100%;
+}
+
+.ca-ad{
+ width: 96%;
+ margin: 10upx auto 20upx;
+ height: 200rpx;
+}
+.ca-ad image{
+ width: 100%;
+ height: 100%;
+}
+.cGoods{
+ width: 96%;
+ margin: 0 auto 20upx;
+ padding: 20rpx 0;
+}
.scroll-view_H {
white-space: nowrap;
width: 100%;
- background-color: #eeeeee;
}
-
.scroll-view-item_H {
display: inline-block;
- width: 25%;
+ width: 200rpx;
+ padding-top: 20rpx;
text-align: center;
- font-size: 26rpx;
- padding: 20upx 0;
+ font-size: 36rpx;
+ background-color: #ffffff;
+ margin-right: 20rpx;
+ border-radius: 20rpx;
}
-.scroll-view-v{
+.scroll-view-item_H image{
+ width: 118rpx;
+ height: 128rpx;
+}
+
+.login-desc{
display: flex;
align-items: center;
- justify-content: center;
+ width: 96%;
+ position: fixed;
+ left: 2%;
+ bottom: calc(var(--window-bottom) + 20rpx);
+ height: 100rpx;
+ background: rgba(0,0,0,0.7);
+ border-radius: 106rpx 106rpx 106rpx 106rpx;
}
-.scroll-icon{
- width: 40upx;
- height: 40upx;
- border-radius: 30upx;
- margin-right: 10upx;
+.login-icon{
+ margin-left: 20rpx;
+ width: 90rpx;
+ height: 90rpx;
+ margin-right: 30rpx;
}
-::-webkit-scrollbar {
- width: 0px !important; /* 滚动条宽度 */
-}
-/* 设置滚动条宽度 */
-.uni-scroll-view::-webkit-scrollbar {
- width: 0px !important; /* 滚动条宽度 */
-}
-.scroll-active{
- background-color: #ffb16e;
+.login-font{
+ width: 55%;
+ font-size: 26rpx;
color: #ffffff;
}
+.login-btn{
+ width: 156rpx;
+ height: 54rpx;
+ text-align: center;
+ color: #ffffff;
+ line-height: 54rpx;
+ background: #4766FE;
+ border-radius: 62rpx 62rpx 62rpx 62rpx;
+}
+.c-goods{
+ background-color: #f5f5f5;
+}
\ No newline at end of file
diff --git a/static/css/my2.css b/static/css/my2.css
new file mode 100644
index 0000000..10a4e2e
--- /dev/null
+++ b/static/css/my2.css
@@ -0,0 +1,156 @@
+.myView-bg {
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 736rpx;
+ z-index: 0;
+}
+.avatar{
+ width: 112rpx;
+ height: 112rpx;
+ margin: 50rpx 30rpx 50rpx 50rpx;
+ border-radius: 50%;
+}
+.myContent{
+ width: 100%;
+ position: absolute;
+}
+.myHeader{
+ color: #ffffff;
+ display: flex;
+ align-items: center;
+ font-size: 28rpx;
+}
+.myNick{
+ margin-top: 10rpx;
+ color: #333333;
+ font-size: 36rpx;
+}
+.edu {
+ margin-top: 10rpx;
+ width: 108rpx;
+ height: 44rpx;
+ background: rgba(255,255,255,0.1);
+ border-radius: 66rpx 66rpx 66rpx 66rpx;
+ border: 2rpx solid #FFFFFF;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ font-size: 20rpx;
+}
+.auth{
+ display: flex;
+ align-items: center;
+ width: 650rpx;
+ height: 86rpx;
+ margin: 0 auto;
+ background: #FFFFFF;
+ border-radius: 68rpx 68rpx 68rpx 68rpx;
+ font-size: 24rpx;
+ color: #333333;
+}
+.auth image{
+ width: 48rpx;
+ height: 48rpx;
+ margin: 0 10rpx;
+}
+.auth text{
+ margin-right: 30rpx;
+}
+.auth view{
+ width: 100rpx;
+ height: 44rpx;
+ background: #4766FE;
+ border-radius: 50rpx 50rpx 50rpx 50rpx;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ color: #ffffff;
+}
+
+.navs{
+ width: 650rpx;
+ margin: 30rpx auto;
+ background-color: #ffffff;
+ height: 236rpx;
+ border-radius: 20rpx;
+ box-shadow: 0px 0px 0px 1px #f5f5f5;
+}
+.navs .title{
+ padding: 30rpx 20rpx;
+ font-size: 24rpx;
+}
+.navs .title text{
+ font-size: 28rpx;
+ color: #333333;
+ font-weight: 700;
+}
+.navs-rgt{
+ display: flex;
+ align-items: center;
+ float: right;
+}
+.navs-rgt text{
+ font-size: 24rpx !important;
+ font-weight: 500 !important;
+}
+.navs .title image{
+ margin-left: 5rpx;
+ width: 28rpx;
+ height: 28rpx;
+}
+.navCon {
+ margin-top: 15rpx;
+ display: flex;
+}
+.navCon .navCon-v{
+ flex: 1;
+ text-align: center;
+ font-size: 24rpx;
+}
+.navCon image{
+ display: block;
+ width: 64rpx;
+ height: 64rpx;
+ margin: 0 auto 10rpx;
+}
+.mySer{
+ width: 650rpx;
+ margin: 30rpx auto;
+ background-color: #ffffff;
+ height: 402rpx;
+ border-radius: 20rpx;
+ box-shadow: 0px 0px 0px 1px #f5f5f5;
+}
+.mySer .title{
+ padding: 30rpx 20rpx;
+ font-size: 28rpx;
+ color: #333333;
+ font-weight: 700;
+}
+.mySerCon{
+ display: flex;
+ flex-wrap: wrap;
+}
+.mySerCon .mySerCon-v{
+ width: 33.33%;
+ margin-bottom: 50rpx;
+ font-size: 24rpx;
+ text-align: center;
+}
+.mySerCon image{
+ width: 72rpx;
+ height: 72rpx;
+ display: block;
+ margin: 0 auto 10rpx;
+}
+.myBeiAn{
+ margin-top: 50rpx;
+ text-align: center;
+ font-size: 24rpx;
+ color: #666666;
+}
+.myBeiAn view{
+ margin-bottom: 10rpx;
+}
\ No newline at end of file
diff --git a/static/imgs/History.png b/static/imgs/History.png
new file mode 100644
index 0000000..1f80836
--- /dev/null
+++ b/static/imgs/History.png
Binary files differ
diff --git a/static/imgs/Star.png b/static/imgs/Star.png
new file mode 100644
index 0000000..39e4c68
--- /dev/null
+++ b/static/imgs/Star.png
Binary files differ
diff --git a/static/imgs/ad1.png b/static/imgs/ad1.png
new file mode 100644
index 0000000..b161ba9
--- /dev/null
+++ b/static/imgs/ad1.png
Binary files differ
diff --git a/static/imgs/ad2.png b/static/imgs/ad2.png
new file mode 100644
index 0000000..4351966
--- /dev/null
+++ b/static/imgs/ad2.png
Binary files differ
diff --git a/static/imgs/ad3.png b/static/imgs/ad3.png
new file mode 100644
index 0000000..b6dbda1
--- /dev/null
+++ b/static/imgs/ad3.png
Binary files differ
diff --git a/static/imgs/ad4.png b/static/imgs/ad4.png
new file mode 100644
index 0000000..80bfb79
--- /dev/null
+++ b/static/imgs/ad4.png
Binary files differ
diff --git a/static/imgs/ad5.png b/static/imgs/ad5.png
new file mode 100644
index 0000000..dfb1b1f
--- /dev/null
+++ b/static/imgs/ad5.png
Binary files differ
diff --git a/static/imgs/c1.png b/static/imgs/c1.png
new file mode 100644
index 0000000..cc5481e
--- /dev/null
+++ b/static/imgs/c1.png
Binary files differ
diff --git a/static/imgs/c2.png b/static/imgs/c2.png
new file mode 100644
index 0000000..50fd419
--- /dev/null
+++ b/static/imgs/c2.png
Binary files differ
diff --git a/static/imgs/deb.png b/static/imgs/deb.png
new file mode 100644
index 0000000..4bc1f8f
--- /dev/null
+++ b/static/imgs/deb.png
Binary files differ
diff --git a/static/imgs/index-logo.png b/static/imgs/index-logo.png
index 647bc75..d3f2705 100644
--- a/static/imgs/index-logo.png
+++ b/static/imgs/index-logo.png
Binary files differ
diff --git a/static/imgs/index-top.png b/static/imgs/index-top.png
new file mode 100644
index 0000000..187e1f4
--- /dev/null
+++ b/static/imgs/index-top.png
Binary files differ
diff --git a/static/imgs/input-bg.png b/static/imgs/input-bg.png
new file mode 100644
index 0000000..1920a2f
--- /dev/null
+++ b/static/imgs/input-bg.png
Binary files differ
diff --git a/static/imgs/logo-icon.png b/static/imgs/logo-icon.png
new file mode 100644
index 0000000..5f6a7af
--- /dev/null
+++ b/static/imgs/logo-icon.png
Binary files differ
diff --git a/static/imgs/mf1.png b/static/imgs/mf1.png
new file mode 100644
index 0000000..6b5a523
--- /dev/null
+++ b/static/imgs/mf1.png
Binary files differ
diff --git a/static/imgs/mf2.png b/static/imgs/mf2.png
new file mode 100644
index 0000000..55b1bc2
--- /dev/null
+++ b/static/imgs/mf2.png
Binary files differ
diff --git a/static/imgs/mf3.png b/static/imgs/mf3.png
new file mode 100644
index 0000000..f46748e
--- /dev/null
+++ b/static/imgs/mf3.png
Binary files differ
diff --git a/static/imgs/mf4.png b/static/imgs/mf4.png
new file mode 100644
index 0000000..28dfa7f
--- /dev/null
+++ b/static/imgs/mf4.png
Binary files differ
diff --git a/static/imgs/mf6.png b/static/imgs/mf6.png
new file mode 100644
index 0000000..c902a2b
--- /dev/null
+++ b/static/imgs/mf6.png
Binary files differ
diff --git a/static/imgs/more.png b/static/imgs/more.png
new file mode 100644
index 0000000..3caf0ab
--- /dev/null
+++ b/static/imgs/more.png
Binary files differ
diff --git a/static/imgs/my-bg.png b/static/imgs/my-bg.png
new file mode 100644
index 0000000..432dd9a
--- /dev/null
+++ b/static/imgs/my-bg.png
Binary files differ
diff --git a/static/imgs/notice.png b/static/imgs/notice.png
new file mode 100644
index 0000000..d965912
--- /dev/null
+++ b/static/imgs/notice.png
Binary files differ
diff --git a/static/imgs/nv1.png b/static/imgs/nv1.png
new file mode 100644
index 0000000..cdcac92
--- /dev/null
+++ b/static/imgs/nv1.png
Binary files differ
diff --git a/static/imgs/nv2.png b/static/imgs/nv2.png
new file mode 100644
index 0000000..0dcd89d
--- /dev/null
+++ b/static/imgs/nv2.png
Binary files differ
diff --git a/static/imgs/nv3.png b/static/imgs/nv3.png
new file mode 100644
index 0000000..be40aa2
--- /dev/null
+++ b/static/imgs/nv3.png
Binary files differ
diff --git a/static/imgs/nv4.png b/static/imgs/nv4.png
new file mode 100644
index 0000000..24cb650
--- /dev/null
+++ b/static/imgs/nv4.png
Binary files differ
diff --git a/static/imgs/nv5.png b/static/imgs/nv5.png
new file mode 100644
index 0000000..df75b53
--- /dev/null
+++ b/static/imgs/nv5.png
Binary files differ
diff --git a/static/imgs/tb1.png b/static/imgs/tb1.png
new file mode 100644
index 0000000..9a476fc
--- /dev/null
+++ b/static/imgs/tb1.png
Binary files differ
diff --git a/static/imgs/tb11.png b/static/imgs/tb11.png
new file mode 100644
index 0000000..cbeb41b
--- /dev/null
+++ b/static/imgs/tb11.png
Binary files differ
diff --git a/static/imgs/tb2.png b/static/imgs/tb2.png
new file mode 100644
index 0000000..159a854
--- /dev/null
+++ b/static/imgs/tb2.png
Binary files differ
diff --git a/static/imgs/tb3.png b/static/imgs/tb3.png
new file mode 100644
index 0000000..87d45e1
--- /dev/null
+++ b/static/imgs/tb3.png
Binary files differ
diff --git a/static/imgs/tb33.png b/static/imgs/tb33.png
new file mode 100644
index 0000000..0645276
--- /dev/null
+++ b/static/imgs/tb33.png
Binary files differ
diff --git a/static/imgs/tb4.png b/static/imgs/tb4.png
new file mode 100644
index 0000000..27f0239
--- /dev/null
+++ b/static/imgs/tb4.png
Binary files differ
diff --git a/static/imgs/tb44.png b/static/imgs/tb44.png
new file mode 100644
index 0000000..a892f59
--- /dev/null
+++ b/static/imgs/tb44.png
Binary files differ
diff --git a/static/imgs/xxhf.png b/static/imgs/xxhf.png
new file mode 100644
index 0000000..6f519ab
--- /dev/null
+++ b/static/imgs/xxhf.png
Binary files differ
diff --git a/static/imgs/xxhh.png b/static/imgs/xxhh.png
new file mode 100644
index 0000000..9750541
--- /dev/null
+++ b/static/imgs/xxhh.png
Binary files differ
diff --git a/uni_modules/uni-popup/changelog.md b/uni_modules/uni-popup/changelog.md
index bc59f07..20b1e8c 100644
--- a/uni_modules/uni-popup/changelog.md
+++ b/uni_modules/uni-popup/changelog.md
@@ -1,3 +1,35 @@
+## 1.9.10(2025-07-18)
+- 修复 nvue 下弹窗样式错乱的问题 ,更新依赖 uni-transition 组件
+- 更新 示例取消 borderRadius 属性 ,如需内容圆角,用户应该直接在内容插槽中实现
+## 1.9.9(2025-06-11)
+- 修复 uni-popup-dialog 中 setVal 方法报错的问题
+- 修复 uni-popup-dialog 数据双向绑定问题。
+## 1.9.8(2025-04-16)
+- 修复 更新组件示例 ,解决更新数据或保存项目导致弹窗消失的问题
+## 1.9.7(2025-04-14)
+- 修复 uni-popup-dialog 弹出框在vue3中双向绑定问题
+## 1.9.6(2025-01-08)
+- 修复 示例中过期图片地址
+## 1.9.5(2024-10-15)
+- 修复 微信小程序中的getSystemInfo警告
+## 1.9.2(2024-09-21)
+- 修复 uni-popup在android上的重复点击弹出位置不正确的bug
+## 1.9.1(2024-04-02)
+- 修复 uni-popup-dialog vue3下使用value无法进行绑定的bug(双向绑定兼容旧写法)
+## 1.9.0(2024-03-28)
+- 修复 uni-popup-dialog 双向绑定时初始化逻辑修正
+## 1.8.9(2024-03-20)
+- 修复 uni-popup-dialog 数据输入时修正为双向绑定
+## 1.8.8(2024-02-20)
+- 修复 uni-popup 在微信小程序下出现文字向上闪动的bug
+## 1.8.7(2024-02-02)
+- 新增 uni-popup-dialog 新增属性focus:input模式下,是否自动自动聚焦
+## 1.8.6(2024-01-30)
+- 新增 uni-popup-dialog 新增属性maxLength:限制输入框字数
+## 1.8.5(2024-01-26)
+- 新增 uni-popup-dialog 新增属性showClose:控制关闭按钮的显示
+## 1.8.4(2023-11-15)
+- 新增 uni-popup 支持uni-app-x 注意暂时仅支持 `maskClick` `@open` `@close`
## 1.8.3(2023-04-17)
- 修复 uni-popup 重复打开时的 bug
## 1.8.2(2023-02-02)
diff --git a/uni_modules/uni-popup/components/uni-popup-dialog/uni-popup-dialog.vue b/uni_modules/uni-popup/components/uni-popup-dialog/uni-popup-dialog.vue
index b5eee79..12ce2c9 100644
--- a/uni_modules/uni-popup/components/uni-popup-dialog/uni-popup-dialog.vue
+++ b/uni_modules/uni-popup/components/uni-popup-dialog/uni-popup-dialog.vue
@@ -10,14 +10,15 @@
</view>
<view v-else class="uni-dialog-content">
<slot>
- <input class="uni-dialog-input" v-model="val" :type="inputType" :placeholder="placeholderText" :focus="focus" >
+ <input class="uni-dialog-input" :maxlength="maxlength" v-model="val" :type="inputType"
+ :placeholder="placeholderText" :focus="focus">
</slot>
</view>
<view class="uni-dialog-button-group">
- <view class="uni-dialog-button" @click="closeDialog">
+ <view class="uni-dialog-button" v-if="showClose" @click="closeDialog">
<text class="uni-dialog-button-text">{{closeText}}</text>
</view>
- <view class="uni-dialog-button uni-border-left" @click="onOk">
+ <view class="uni-dialog-button" :class="showClose?'uni-border-left':''" @click="onOk">
<text class="uni-dialog-button-text uni-button-color">{{okText}}</text>
</view>
</view>
@@ -28,16 +29,19 @@
<script>
import popup from '../uni-popup/popup.js'
import {
- initVueI18n
+ initVueI18n
} from '@dcloudio/uni-i18n'
import messages from '../uni-popup/i18n/index.js'
- const { t } = initVueI18n(messages)
+ const {
+ t
+ } = initVueI18n(messages)
/**
* PopUp 弹出层-对话框样式
* @description 弹出层-对话框样式
* @tutorial https://ext.dcloud.net.cn/plugin?id=329
* @property {String} value input 模式下的默认值
* @property {String} placeholder input 模式下输入提示
+ * @property {Boolean} focus input模式下是否自动聚焦,默认为true
* @property {String} type = [success|warning|info|error] 主题样式
* @value success 成功
* @value warning 提示
@@ -46,8 +50,10 @@
* @property {String} mode = [base|input] 模式、
* @value base 基础对话框
* @value input 可输入对话框
+ * @showClose {Boolean} 是否显示关闭按钮
* @property {String} content 对话框内容
* @property {Boolean} beforeClose 是否拦截取消事件
+ * @property {Number} maxlength 输入
* @event {Function} confirm 点击确认按钮触发
* @event {Function} close 点击取消按钮触发
*/
@@ -55,16 +61,30 @@
export default {
name: "uniPopupDialog",
mixins: [popup],
- emits:['confirm','close'],
+ emits: ['confirm', 'close', 'update:modelValue', 'input'],
props: {
- inputType:{
+ inputType: {
type: String,
default: 'text'
},
+ showClose: {
+ type: Boolean,
+ default: true
+ },
+ // #ifdef VUE2
value: {
type: [String, Number],
default: ''
},
+ // #endif
+ // #ifdef VUE3
+ modelValue: {
+ type: [Number, String],
+ default: ''
+ },
+ // #endif
+
+
placeholder: {
type: [String, Number],
default: ''
@@ -89,19 +109,26 @@
type: Boolean,
default: false
},
- cancelText:{
+ cancelText: {
type: String,
default: ''
},
- confirmText:{
+ confirmText: {
type: String,
default: ''
+ },
+ maxlength: {
+ type: Number,
+ default: -1,
+ },
+ focus: {
+ type: Boolean,
+ default: true,
}
},
data() {
return {
dialogType: 'error',
- focus: false,
val: ""
}
},
@@ -129,7 +156,22 @@
}
},
value(val) {
- this.val = val
+ this.setVal(val)
+ },
+ // #ifdef VUE3
+ modelValue(val) {
+ this.setVal(val)
+ },
+ // #endif
+ val(val) {
+ // #ifdef VUE2
+ // TODO 兼容 vue2
+ this.$emit('input', val);
+ // #endif
+ // #ifdef VUE3
+ // TODO 兼容 vue3
+ this.$emit('update:modelValue', val);
+ // #endif
}
},
created() {
@@ -138,25 +180,35 @@
// this.popup.closeMask()
if (this.mode === 'input') {
this.dialogType = 'info'
- this.val = this.value
+ this.val = this.value;
+ // #ifdef VUE3
+ this.val = this.modelValue;
+ // #endif
} else {
this.dialogType = this.type
}
},
- mounted() {
- this.focus = true
- },
methods: {
+ /**
+ * 给val属性赋值
+ */
+ setVal(val) {
+ if (this.maxlength != -1 && this.mode === 'input') {
+ this.val = val.slice(0, this.maxlength);
+ } else {
+ this.val = val
+ }
+ },
/**
* 点击确认按钮
*/
onOk() {
- if (this.mode === 'input'){
+ if (this.mode === 'input') {
this.$emit('confirm', this.val)
- }else{
+ } else {
this.$emit('confirm')
}
- if(this.beforeClose) return
+ if (this.beforeClose) return
this.popup.close()
},
/**
@@ -164,17 +216,17 @@
*/
closeDialog() {
this.$emit('close')
- if(this.beforeClose) return
+ if (this.beforeClose) return
this.popup.close()
},
- close(){
+ close() {
this.popup.close()
}
}
}
</script>
-<style lang="scss" >
+<style lang="scss">
.uni-popup-dialog {
width: 300px;
border-radius: 11px;
diff --git a/uni_modules/uni-popup/components/uni-popup-share/uni-popup-share.vue b/uni_modules/uni-popup/components/uni-popup-share/uni-popup-share.vue
index 5be7624..c8945d5 100644
--- a/uni_modules/uni-popup/components/uni-popup-share/uni-popup-share.vue
+++ b/uni_modules/uni-popup/components/uni-popup-share/uni-popup-share.vue
@@ -39,24 +39,25 @@
},
data() {
return {
+ // TODO 替换为自己的图标
bottomData: [{
text: '微信',
- icon: 'https://vkceyugu.cdn.bspapp.com/VKCEYUGU-dc-site/c2b17470-50be-11eb-b680-7980c8a877b8.png',
+ icon: 'https://qiniu-web-assets.dcloud.net.cn/unidoc/zh/unicloudlogo.png',
name: 'wx'
},
{
text: '支付宝',
- icon: 'https://vkceyugu.cdn.bspapp.com/VKCEYUGU-dc-site/d684ae40-50be-11eb-8ff1-d5dcf8779628.png',
- name: 'wx'
+ icon: 'https://qiniu-web-assets.dcloud.net.cn/unidoc/zh/unicloudlogo.png',
+ name: 'ali'
},
{
text: 'QQ',
- icon: 'https://vkceyugu.cdn.bspapp.com/VKCEYUGU-dc-site/e7a79520-50be-11eb-b997-9918a5dda011.png',
+ icon: 'https://qiniu-web-assets.dcloud.net.cn/unidoc/zh/unicloudlogo.png',
name: 'qq'
},
{
text: '新浪',
- icon: 'https://vkceyugu.cdn.bspapp.com/VKCEYUGU-dc-site/0dacdbe0-50bf-11eb-8ff1-d5dcf8779628.png',
+ icon: 'https://qiniu-web-assets.dcloud.net.cn/unidoc/zh/unicloudlogo.png',
name: 'sina'
},
// {
diff --git a/uni_modules/uni-popup/components/uni-popup/uni-popup.uvue b/uni_modules/uni-popup/components/uni-popup/uni-popup.uvue
new file mode 100644
index 0000000..5eb8d5b
--- /dev/null
+++ b/uni_modules/uni-popup/components/uni-popup/uni-popup.uvue
@@ -0,0 +1,90 @@
+<template>
+ <view class="popup-root" v-if="isOpen" v-show="isShow" @click="clickMask">
+ <view @click.stop>
+ <slot></slot>
+ </view>
+ </view>
+</template>
+
+<script>
+ type CloseCallBack = ()=> void;
+ let closeCallBack:CloseCallBack = () :void => {};
+ export default {
+ emits:["close","clickMask"],
+ data() {
+ return {
+ isShow:false,
+ isOpen:false
+ }
+ },
+ props: {
+ maskClick: {
+ type: Boolean,
+ default: true
+ },
+ },
+ watch: {
+ // 设置show = true 时,如果没有 open 需要设置为 open
+ isShow:{
+ handler(isShow) {
+ // console.log("isShow",isShow)
+ if(isShow && this.isOpen == false){
+ this.isOpen = true
+ }
+ },
+ immediate:true
+ },
+ // 设置isOpen = true 时,如果没有 isShow 需要设置为 isShow
+ isOpen:{
+ handler(isOpen) {
+ // console.log("isOpen",isOpen)
+ if(isOpen && this.isShow == false){
+ this.isShow = true
+ }
+ },
+ immediate:true
+ }
+ },
+ methods:{
+ open(){
+ // ...funs : CloseCallBack[]
+ // if(funs.length > 0){
+ // closeCallBack = funs[0]
+ // }
+ this.isOpen = true;
+ },
+ clickMask(){
+ if(this.maskClick == true){
+ this.$emit('clickMask')
+ this.close()
+ }
+ },
+ close(): void{
+ this.isOpen = false;
+ this.$emit('close')
+ closeCallBack()
+ },
+ hiden(){
+ this.isShow = false
+ },
+ show(){
+ this.isShow = true
+ }
+ }
+ }
+</script>
+
+<style>
+.popup-root {
+ position: fixed;
+ top: 0;
+ left: 0;
+ width: 750rpx;
+ height: 100%;
+ flex: 1;
+ background-color: rgba(0, 0, 0, 0.3);
+ justify-content: center;
+ align-items: center;
+ z-index: 99;
+}
+</style>
\ No newline at end of file
diff --git a/uni_modules/uni-popup/components/uni-popup/uni-popup.vue b/uni_modules/uni-popup/components/uni-popup/uni-popup.vue
index 2487d13..5af55e0 100644
--- a/uni_modules/uni-popup/components/uni-popup/uni-popup.vue
+++ b/uni_modules/uni-popup/components/uni-popup/uni-popup.vue
@@ -5,7 +5,7 @@
:duration="duration" :show="showTrans" @click="onTap" />
<uni-transition key="2" :mode-class="ani" name="content" :styles="transClass" :duration="duration"
:show="showTrans" @click="onTap">
- <view class="uni-popup__wrapper" :style="{ backgroundColor: bg }" :class="[popupstyle]" @click="clear">
+ <view class="uni-popup__wrapper" :style="getStyles" :class="[popupstyle]" @click="clear">
<slot />
</view>
</uni-transition>
@@ -39,6 +39,7 @@
* @property {Boolean} isMaskClick = [true|false] 蒙版点击是否关闭弹窗
* @property {String} backgroundColor 主窗口背景色
* @property {String} maskBackgroundColor 蒙版颜色
+ * @property {String} borderRadius 设置圆角(左上、右上、右下和左下) 示例:"10px 10px 10px 10px"
* @property {Boolean} safeArea 是否适配底部安全区
* @event {Function} change 打开关闭弹窗触发,e={show: false}
* @event {Function} maskClick 点击遮罩触发
@@ -86,6 +87,9 @@
type: String,
default: 'rgba(0, 0, 0, 0.4)'
},
+ borderRadius:{
+ type: String,
+ }
},
watch: {
@@ -157,16 +161,25 @@
backgroundColor: 'rgba(0, 0, 0, 0.4)'
},
transClass: {
+ backgroundColor: 'transparent',
+ borderRadius: this.borderRadius || "0",
position: 'fixed',
left: 0,
right: 0
},
maskShow: true,
mkclick: true,
- popupstyle: this.isDesktop ? 'fixforpc-top' : 'top'
+ popupstyle: 'top'
}
},
computed: {
+ getStyles() {
+ let res = { backgroundColor: this.bg };
+ if (this.borderRadius || "0") {
+ res = Object.assign(res, { borderRadius: this.borderRadius })
+ }
+ return res;
+ },
isDesktop() {
return this.popupWidth >= 500 && this.popupHeight >= 500
},
@@ -179,6 +192,17 @@
},
mounted() {
const fixSize = () => {
+ // #ifdef MP-WEIXIN
+ const {
+ windowWidth,
+ windowHeight,
+ windowTop,
+ safeArea,
+ screenHeight,
+ safeAreaInsets
+ } = uni.getWindowInfo()
+ // #endif
+ // #ifndef MP-WEIXIN
const {
windowWidth,
windowHeight,
@@ -187,6 +211,7 @@
screenHeight,
safeAreaInsets
} = uni.getSystemInfoSync()
+ // #endif
this.popupWidth = windowWidth
this.popupHeight = windowHeight + (windowTop || 0)
// TODO fix by mehaotian 是否适配底部安全区 ,目前微信ios 、和 app ios 计算有差异,需要框架修复
@@ -221,6 +246,12 @@
this.setH5Visible()
},
// #endif
+ activated() {
+ this.setH5Visible(!this.showPopup);
+ },
+ deactivated() {
+ this.setH5Visible(true);
+ },
created() {
// this.mkclick = this.isMaskClick || this.maskClick
if (this.isMaskClick === null && this.maskClick === null) {
@@ -240,10 +271,10 @@
this.maskClass.backgroundColor = this.maskBackgroundColor
},
methods: {
- setH5Visible() {
+ setH5Visible(visible = true) {
// #ifdef H5
// fix by mehaotian 处理 h5 滚动穿透的问题
- document.getElementsByTagName('body')[0].style.overflow = 'visible'
+ document.getElementsByTagName('body')[0].style.overflow = visible ? "visible" : "hidden";
// #endif
},
/**
@@ -323,13 +354,15 @@
position: 'fixed',
left: 0,
right: 0,
- backgroundColor: this.bg
+ backgroundColor: this.bg,
+ borderRadius:this.borderRadius || "0"
}
// TODO 兼容 type 属性 ,后续会废弃
if (type) return
this.showPopup = true
this.showTrans = true
this.$nextTick(() => {
+ this.showPoptrans()
if (this.messageChild && this.type === 'message') {
this.messageChild.timerClose()
}
@@ -346,22 +379,26 @@
left: 0,
right: 0,
bottom: 0,
- //paddingBottom: 'constant(safe-area-inset-bottom)', ///兼容 IOS<11.2/
- //paddingBottom: 'env(safe-area-inset-bottom)', ///兼容 IOS>11.2/
- //paddingBottom: this.safeAreaInsets + 'px',
- backgroundColor: this.bg
+ paddingBottom: this.safeAreaInsets + 'px',
+ backgroundColor: this.bg,
+ borderRadius:this.borderRadius || "0",
}
// TODO 兼容 type 属性 ,后续会废弃
if (type) return
- this.showPopup = true
- this.showTrans = true
+ this.showPoptrans()
},
/**
* 中间弹出样式处理
*/
center(type) {
this.popupstyle = 'center'
- this.ani = ['zoom-out', 'fade']
+ //微信小程序下,组合动画会出现文字向上闪动问题,再此做特殊处理
+ // #ifdef MP-WEIXIN
+ this.ani = ['fade']
+ // #endif
+ // #ifndef MP-WEIXIN
+ this.ani = ['zoom-out', 'fade']
+ // #endif
this.transClass = {
position: 'fixed',
/* #ifndef APP-NVUE */
@@ -373,12 +410,12 @@
right: 0,
top: 0,
justifyContent: 'center',
- alignItems: 'center'
+ alignItems: 'center',
+ borderRadius:this.borderRadius || "0"
}
// TODO 兼容 type 属性 ,后续会废弃
if (type) return
- this.showPopup = true
- this.showTrans = true
+ this.showPoptrans()
},
left(type) {
this.popupstyle = 'left'
@@ -389,6 +426,7 @@
bottom: 0,
top: 0,
backgroundColor: this.bg,
+ borderRadius:this.borderRadius || "0",
/* #ifndef APP-NVUE */
display: 'flex',
flexDirection: 'column'
@@ -396,8 +434,7 @@
}
// TODO 兼容 type 属性 ,后续会废弃
if (type) return
- this.showPopup = true
- this.showTrans = true
+ this.showPoptrans()
},
right(type) {
this.popupstyle = 'right'
@@ -408,6 +445,7 @@
right: 0,
top: 0,
backgroundColor: this.bg,
+ borderRadius:this.borderRadius || "0",
/* #ifndef APP-NVUE */
display: 'flex',
flexDirection: 'column'
@@ -415,8 +453,13 @@
}
// TODO 兼容 type 属性 ,后续会废弃
if (type) return
- this.showPopup = true
- this.showTrans = true
+ this.showPoptrans()
+ },
+ showPoptrans(){
+ this.$nextTick(()=>{
+ this.showPopup = true
+ this.showTrans = true
+ })
}
}
}
diff --git a/uni_modules/uni-popup/package.json b/uni_modules/uni-popup/package.json
index f40556b..ae01918 100644
--- a/uni_modules/uni-popup/package.json
+++ b/uni_modules/uni-popup/package.json
@@ -1,87 +1,107 @@
{
- "id": "uni-popup",
- "displayName": "uni-popup 弹出层",
- "version": "1.8.3",
- "description": " Popup 组件,提供常用的弹层",
- "keywords": [
- "uni-ui",
- "弹出层",
- "弹窗",
- "popup",
- "弹框"
+ "id": "uni-popup",
+ "displayName": "uni-popup 弹出层",
+ "version": "1.9.10",
+ "description": " Popup 组件,提供常用的弹层",
+ "keywords": [
+ "uni-ui",
+ "弹出层",
+ "弹窗",
+ "popup",
+ "弹框"
+],
+ "repository": "https://github.com/dcloudio/uni-ui",
+ "engines": {
+ "HBuilderX": "",
+ "uni-app": "^4.06",
+ "uni-app-x": ""
+ },
+ "directories": {
+ "example": "../../temps/example_temps"
+ },
+ "dcloudext": {
+ "sale": {
+ "regular": {
+ "price": "0.00"
+ },
+ "sourcecode": {
+ "price": "0.00"
+ }
+ },
+ "contact": {
+ "qq": ""
+ },
+ "declaration": {
+ "ads": "无",
+ "data": "无",
+ "permissions": "无"
+ },
+ "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui",
+ "type": "component-vue",
+ "darkmode": "x",
+ "i18n": "x",
+ "widescreen": "x"
+ },
+ "uni_modules": {
+ "dependencies": [
+ "uni-scss",
+ "uni-transition"
],
- "repository": "https://github.com/dcloudio/uni-ui",
- "engines": {
- "HBuilderX": ""
- },
- "directories": {
- "example": "../../temps/example_temps"
- },
- "dcloudext": {
- "sale": {
- "regular": {
- "price": "0.00"
- },
- "sourcecode": {
- "price": "0.00"
- }
- },
- "contact": {
- "qq": ""
- },
- "declaration": {
- "ads": "无",
- "data": "无",
- "permissions": "无"
- },
- "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui",
- "type": "component-vue"
- },
- "uni_modules": {
- "dependencies": [
- "uni-scss",
- "uni-transition"
- ],
- "encrypt": [],
- "platforms": {
- "cloud": {
- "tcb": "y",
- "aliyun": "y"
- },
- "client": {
- "App": {
- "app-vue": "y",
- "app-nvue": "y"
- },
- "H5-mobile": {
- "Safari": "y",
- "Android Browser": "y",
- "微信浏览器(Android)": "y",
- "QQ浏览器(Android)": "y"
- },
- "H5-pc": {
- "Chrome": "y",
- "IE": "y",
- "Edge": "y",
- "Firefox": "y",
- "Safari": "y"
- },
- "小程序": {
- "微信": "y",
- "阿里": "y",
- "百度": "y",
- "字节跳动": "y",
- "QQ": "y"
- },
- "快应用": {
- "华为": "u",
- "联盟": "u"
- },
- "Vue": {
- "vue2": "y",
- "vue3": "y"
- }
- }
- }
- }
-}
+ "encrypt": [],
+ "platforms": {
+ "cloud": {
+ "tcb": "x",
+ "aliyun": "x",
+ "alipay": "x"
+ },
+ "client": {
+ "uni-app": {
+ "vue": {
+ "vue2": "√",
+ "vue3": "√"
+ },
+ "web": {
+ "safari": "√",
+ "chrome": "√"
+ },
+ "app": {
+ "vue": "√",
+ "nvue": "√",
+ "android": "√",
+ "ios": "√",
+ "harmony": "√"
+ },
+ "mp": {
+ "weixin": "√",
+ "alipay": "√",
+ "toutiao": "√",
+ "baidu": "√",
+ "kuaishou": "-",
+ "jd": "-",
+ "harmony": "-",
+ "qq": "√",
+ "lark": "-"
+ },
+ "quickapp": {
+ "huawei": "-",
+ "union": "-"
+ }
+ },
+ "uni-app-x": {
+ "web": {
+ "safari": "√",
+ "chrome": "√"
+ },
+ "app": {
+ "android": "√",
+ "ios": "√",
+ "harmony": "√"
+ },
+ "mp": {
+ "weixin": "√"
+ }
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/uni_modules/uni-transition/changelog.md b/uni_modules/uni-transition/changelog.md
index b1a824b..01bfb58 100644
--- a/uni_modules/uni-transition/changelog.md
+++ b/uni_modules/uni-transition/changelog.md
@@ -1,3 +1,14 @@
+## 1.3.6(2025-07-18)
+- 修复 nvue 页面,样式错误问题
+## 1.3.5(2025-06-11)
+- 修复 第一次执行不显示动画的问题
+## 1.3.4(2025-04-16)
+- 修复 页面数据更新到底动画复原的问题
+- 修复 示例页面打开报错的问题
+## 1.3.3(2024-04-23)
+- 修复 当元素会受变量影响自动隐藏的bug
+## 1.3.2(2023-05-04)
+- 修复 NVUE 平台报错的问题
## 1.3.1(2021-11-23)
- 修复 init 方法初始化问题
## 1.3.0(2021-11-19)
diff --git a/uni_modules/uni-transition/components/uni-transition/createAnimation.js b/uni_modules/uni-transition/components/uni-transition/createAnimation.js
index 5f54365..8f89b18 100644
--- a/uni_modules/uni-transition/components/uni-transition/createAnimation.js
+++ b/uni_modules/uni-transition/components/uni-transition/createAnimation.js
@@ -10,7 +10,10 @@
class MPAnimation {
constructor(options, _this) {
this.options = options
- this.animation = uni.createAnimation(options)
+ // 在iOS10+QQ小程序平台下,传给原生的对象一定是个普通对象而不是Proxy对象,否则会报parameter should be Object instead of ProxyObject的错误
+ this.animation = uni.createAnimation({
+ ...options
+ })
this.currentStepAnimates = {}
this.next = 0
this.$ = _this
diff --git a/uni_modules/uni-transition/components/uni-transition/uni-transition.vue b/uni_modules/uni-transition/components/uni-transition/uni-transition.vue
index 0d739bd..7677553 100644
--- a/uni_modules/uni-transition/components/uni-transition/uni-transition.vue
+++ b/uni_modules/uni-transition/components/uni-transition/uni-transition.vue
@@ -1,277 +1,292 @@
<template>
- <view v-if="isShow" ref="ani" :animation="animationData" :class="customClass" :style="transformStyles" @click="onClick"><slot></slot></view>
+ <!-- #ifndef APP-NVUE -->
+ <view v-show="isShow" ref="ani" :animation="animationData" :class="customClass" :style="transformStyles" @click="onClick">
+ <slot></slot>
+ </view>
+ <!-- #endif -->
+ <!-- #ifdef APP-NVUE -->
+ <view v-if="isShow" ref="ani" :animation="animationData" :class="customClass" :style="transformStyles" @click="onClick">
+ <slot></slot>
+ </view>
+ <!-- #endif -->
</template>
<script>
-import { createAnimation } from './createAnimation'
+ import { createAnimation } from './createAnimation'
-/**
- * Transition 过渡动画
- * @description 简单过渡动画组件
- * @tutorial https://ext.dcloud.net.cn/plugin?id=985
- * @property {Boolean} show = [false|true] 控制组件显示或隐藏
- * @property {Array|String} modeClass = [fade|slide-top|slide-right|slide-bottom|slide-left|zoom-in|zoom-out] 过渡动画类型
- * @value fade 渐隐渐出过渡
- * @value slide-top 由上至下过渡
- * @value slide-right 由右至左过渡
- * @value slide-bottom 由下至上过渡
- * @value slide-left 由左至右过渡
- * @value zoom-in 由小到大过渡
- * @value zoom-out 由大到小过渡
- * @property {Number} duration 过渡动画持续时间
- * @property {Object} styles 组件样式,同 css 样式,注意带’-‘连接符的属性需要使用小驼峰写法如:`backgroundColor:red`
- */
-export default {
- name: 'uniTransition',
- emits:['click','change'],
- props: {
- show: {
- type: Boolean,
- default: false
- },
- modeClass: {
- type: [Array, String],
- default() {
- return 'fade'
- }
- },
- duration: {
- type: Number,
- default: 300
- },
- styles: {
- type: Object,
- default() {
- return {}
- }
- },
- customClass:{
- type: String,
- default: ''
- }
- },
- data() {
- return {
- isShow: false,
- transform: '',
- opacity: 1,
- animationData: {},
- durationTime: 300,
- config: {}
- }
- },
- watch: {
- show: {
- handler(newVal) {
- if (newVal) {
- this.open()
- } else {
- // 避免上来就执行 close,导致动画错乱
- if (this.isShow) {
- this.close()
- }
+ /**
+ * Transition 过渡动画
+ * @description 简单过渡动画组件
+ * @tutorial https://ext.dcloud.net.cn/plugin?id=985
+ * @property {Boolean} show = [false|true] 控制组件显示或隐藏
+ * @property {Array|String} modeClass = [fade|slide-top|slide-right|slide-bottom|slide-left|zoom-in|zoom-out] 过渡动画类型
+ * @value fade 渐隐渐出过渡
+ * @value slide-top 由上至下过渡
+ * @value slide-right 由右至左过渡
+ * @value slide-bottom 由下至上过渡
+ * @value slide-left 由左至右过渡
+ * @value zoom-in 由小到大过渡
+ * @value zoom-out 由大到小过渡
+ * @property {Number} duration 过渡动画持续时间
+ * @property {Object} styles 组件样式,同 css 样式,注意带’-‘连接符的属性需要使用小驼峰写法如:`backgroundColor:red`
+ */
+ export default {
+ name: 'uniTransition',
+ emits: ['click', 'change'],
+ props: {
+ show: {
+ type: Boolean,
+ default: false
+ },
+ modeClass: {
+ type: [Array, String],
+ default () {
+ return 'fade'
}
},
- immediate: true
- }
- },
- computed: {
- // 生成样式数据
- stylesObject() {
- let styles = {
- ...this.styles,
- 'transition-duration': this.duration / 1000 + 's'
- }
- let transform = ''
- for (let i in styles) {
- let line = this.toLine(i)
- transform += line + ':' + styles[i] + ';'
- }
- return transform
- },
- // 初始化动画条件
- transformStyles() {
- return 'transform:' + this.transform + ';' + 'opacity:' + this.opacity + ';' + this.stylesObject
- }
- },
- created() {
- // 动画默认配置
- this.config = {
- duration: this.duration,
- timingFunction: 'ease',
- transformOrigin: '50% 50%',
- delay: 0
- }
- this.durationTime = this.duration
- },
- methods: {
- /**
- * ref 触发 初始化动画
- */
- init(obj = {}) {
- if (obj.duration) {
- this.durationTime = obj.duration
- }
- this.animation = createAnimation(Object.assign(this.config, obj),this)
- },
- /**
- * 点击组件触发回调
- */
- onClick() {
- this.$emit('click', {
- detail: this.isShow
- })
- },
- /**
- * ref 触发 动画分组
- * @param {Object} obj
- */
- step(obj, config = {}) {
- if (!this.animation) return
- for (let i in obj) {
- try {
- if(typeof obj[i] === 'object'){
- this.animation[i](...obj[i])
- }else{
- this.animation[i](obj[i])
- }
- } catch (e) {
- console.error(`方法 ${i} 不存在`)
+ duration: {
+ type: Number,
+ default: 300
+ },
+ styles: {
+ type: Object,
+ default () {
+ return {}
}
+ },
+ customClass: {
+ type: String,
+ default: ''
+ },
+ onceRender: {
+ type: Boolean,
+ default: false
+ },
+ },
+ data() {
+ return {
+ isShow: false,
+ transform: '',
+ opacity: 0,
+ animationData: {},
+ durationTime: 300,
+ config: {}
}
- this.animation.step(config)
- return this
},
- /**
- * ref 触发 执行动画
- */
- run(fn) {
- if (!this.animation) return
- this.animation.run(fn)
- },
- // 开始过度动画
- open() {
- clearTimeout(this.timer)
- this.transform = ''
- this.isShow = true
- let { opacity, transform } = this.styleInit(false)
- if (typeof opacity !== 'undefined') {
- this.opacity = opacity
+ watch: {
+ show: {
+ handler(newVal) {
+ if (newVal) {
+ this.open()
+ } else {
+ // 避免上来就执行 close,导致动画错乱
+ if (this.isShow) {
+ this.close()
+ }
+ }
+ },
+ immediate: true
}
- this.transform = transform
- // 确保动态样式已经生效后,执行动画,如果不加 nextTick ,会导致 wx 动画执行异常
- this.$nextTick(() => {
- // TODO 定时器保证动画完全执行,目前有些问题,后面会取消定时器
- this.timer = setTimeout(() => {
- this.animation = createAnimation(this.config, this)
- this.tranfromInit(false).step()
- this.animation.run()
- this.$emit('change', {
- detail: this.isShow
- })
- }, 20)
- })
},
- // 关闭过度动画
- close(type) {
- if (!this.animation) return
- this.tranfromInit(true)
- .step()
- .run(() => {
- this.isShow = false
- this.animationData = null
- this.animation = null
- let { opacity, transform } = this.styleInit(false)
- this.opacity = opacity || 1
- this.transform = transform
- this.$emit('change', {
- detail: this.isShow
- })
- })
- },
- // 处理动画开始前的默认样式
- styleInit(type) {
- let styles = {
- transform: ''
- }
- let buildStyle = (type, mode) => {
- if (mode === 'fade') {
- styles.opacity = this.animationType(type)[mode]
- } else {
- styles.transform += this.animationType(type)[mode] + ' '
+ computed: {
+ // 生成样式数据
+ stylesObject() {
+ let styles = {
+ ...this.styles,
+ 'transition-duration': this.duration / 1000 + 's'
}
- }
- if (typeof this.modeClass === 'string') {
- buildStyle(type, this.modeClass)
- } else {
- this.modeClass.forEach(mode => {
- buildStyle(type, mode)
- })
- }
- return styles
- },
- // 处理内置组合动画
- tranfromInit(type) {
- let buildTranfrom = (type, mode) => {
- let aniNum = null
- if (mode === 'fade') {
- aniNum = type ? 0 : 1
- } else {
- aniNum = type ? '-100%' : '0'
- if (mode === 'zoom-in') {
- aniNum = type ? 0.8 : 1
- }
- if (mode === 'zoom-out') {
- aniNum = type ? 1.2 : 1
- }
- if (mode === 'slide-right') {
- aniNum = type ? '100%' : '0'
- }
- if (mode === 'slide-bottom') {
- aniNum = type ? '100%' : '0'
- }
+ let transform = ''
+ for (let i in styles) {
+ let line = this.toLine(i)
+ transform += line + ':' + styles[i] + ';'
}
- this.animation[this.animationMode()[mode]](aniNum)
+ return transform
+ },
+ // 初始化动画条件
+ transformStyles() {
+ return 'transform:' + this.transform + ';' + 'opacity:' + this.opacity + ';' + this.stylesObject
}
- if (typeof this.modeClass === 'string') {
- buildTranfrom(type, this.modeClass)
- } else {
- this.modeClass.forEach(mode => {
- buildTranfrom(type, mode)
+ },
+ created() {
+ // 动画默认配置
+ this.config = {
+ duration: this.duration,
+ timingFunction: 'ease',
+ transformOrigin: '50% 50%',
+ delay: 0
+ }
+ this.durationTime = this.duration
+ },
+ methods: {
+ /**
+ * ref 触发 初始化动画
+ */
+ init(obj = {}) {
+ if (obj.duration) {
+ this.durationTime = obj.duration
+ }
+ this.animation = createAnimation(Object.assign(this.config, obj), this)
+ },
+ /**
+ * 点击组件触发回调
+ */
+ onClick() {
+ this.$emit('click', {
+ detail: this.isShow
})
- }
+ },
+ /**
+ * ref 触发 动画分组
+ * @param {Object} obj
+ */
+ step(obj, config = {}) {
+ if (!this.animation) return this
+ Object.keys(obj).forEach(key => {
+ const value = obj[key]
+ if (typeof this.animation[key] === 'function') {
+ Array.isArray(value) ?
+ this.animation[key](...value) :
+ this.animation[key](value)
+ }
+ })
+ this.animation.step(config)
+ return this
+ },
+ /**
+ * ref 触发 执行动画
+ */
+ run(fn) {
+ if (!this.animation) return
+ this.animation.run(fn)
+ },
+ // 开始过度动画
+ open() {
+ clearTimeout(this.timer)
+ this.isShow = true
+ // 新增初始状态重置逻辑(关键)
+ this.transform = this.styleInit(false).transform || ''
+ this.opacity = this.styleInit(false).opacity || 0
- return this.animation
- },
- animationType(type) {
- return {
- fade: type ? 1 : 0,
- 'slide-top': `translateY(${type ? '0' : '-100%'})`,
- 'slide-right': `translateX(${type ? '0' : '100%'})`,
- 'slide-bottom': `translateY(${type ? '0' : '100%'})`,
- 'slide-left': `translateX(${type ? '0' : '-100%'})`,
- 'zoom-in': `scaleX(${type ? 1 : 0.8}) scaleY(${type ? 1 : 0.8})`,
- 'zoom-out': `scaleX(${type ? 1 : 1.2}) scaleY(${type ? 1 : 1.2})`
+ // 确保动态样式已经生效后,执行动画,如果不加 nextTick ,会导致 wx 动画执行异常
+ this.$nextTick(() => {
+ // TODO 定时器保证动画完全执行,目前有些问题,后面会取消定时器
+ this.timer = setTimeout(() => {
+ this.animation = createAnimation(this.config, this)
+ this.tranfromInit(false).step()
+ this.animation.run(() => {
+ // #ifdef APP-NVUE
+ this.transform = this.styleInit(false).transform || ''
+ this.opacity = this.styleInit(false).opacity || 1
+ // #endif
+ // #ifndef APP-NVUE
+ this.transform = ''
+ this.opacity = this.styleInit(false).opacity || 1
+ // #endif
+ this.$emit('change', {
+ detail: this.isShow
+ })
+ })
+ }, 80)
+ })
+ },
+ // 关闭过度动画
+ close(type) {
+ if (!this.animation) return
+ this.tranfromInit(true)
+ .step()
+ .run(() => {
+ this.isShow = false
+ this.animationData = null
+ this.animation = null
+ let { opacity, transform } = this.styleInit(false)
+ this.opacity = opacity || 1
+ this.transform = transform
+ this.$emit('change', {
+ detail: this.isShow
+ })
+ })
+ },
+ // 处理动画开始前的默认样式
+ styleInit(type) {
+ let styles = { transform: '', opacity: 1 }
+ const buildStyle = (type, mode) => {
+ const value = this.animationType(type)[mode] // 直接使用 type 控制状态
+ if (mode.startsWith('fade')) {
+ styles.opacity = value
+ } else {
+ styles.transform += value + ' '
+ }
+ }
+
+ if (typeof this.modeClass === 'string') {
+ buildStyle(type, this.modeClass)
+ } else {
+ this.modeClass.forEach(mode => buildStyle(type, mode))
+ }
+ return styles
+ },
+ // 处理内置组合动画
+ tranfromInit(type) {
+ let buildTranfrom = (type, mode) => {
+ let aniNum = null
+ if (mode === 'fade') {
+ aniNum = type ? 0 : 1
+ } else {
+ aniNum = type ? '-100%' : '0'
+ if (mode === 'zoom-in') {
+ aniNum = type ? 0.8 : 1
+ }
+ if (mode === 'zoom-out') {
+ aniNum = type ? 1.2 : 1
+ }
+ if (mode === 'slide-right') {
+ aniNum = type ? '100%' : '0'
+ }
+ if (mode === 'slide-bottom') {
+ aniNum = type ? '100%' : '0'
+ }
+ }
+ this.animation[this.animationMode()[mode]](aniNum)
+ }
+ if (typeof this.modeClass === 'string') {
+ buildTranfrom(type, this.modeClass)
+ } else {
+ this.modeClass.forEach(mode => {
+ buildTranfrom(type, mode)
+ })
+ }
+
+ return this.animation
+ },
+ animationType(type) {
+ return {
+ fade: type ? 1 : 0,
+ 'slide-top': `translateY(${type ? '0' : '-100%'})`,
+ 'slide-right': `translateX(${type ? '0' : '100%'})`,
+ 'slide-bottom': `translateY(${type ? '0' : '100%'})`,
+ 'slide-left': `translateX(${type ? '0' : '-100%'})`,
+ 'zoom-in': `scaleX(${type ? 1 : 0.8}) scaleY(${type ? 1 : 0.8})`,
+ 'zoom-out': `scaleX(${type ? 1 : 1.2}) scaleY(${type ? 1 : 1.2})`
+ }
+ },
+ // 内置动画类型与实际动画对应字典
+ animationMode() {
+ return {
+ fade: 'opacity',
+ 'slide-top': 'translateY',
+ 'slide-right': 'translateX',
+ 'slide-bottom': 'translateY',
+ 'slide-left': 'translateX',
+ 'zoom-in': 'scale',
+ 'zoom-out': 'scale'
+ }
+ },
+ // 驼峰转中横线
+ toLine(name) {
+ return name.replace(/([A-Z])/g, '-$1').toLowerCase()
}
- },
- // 内置动画类型与实际动画对应字典
- animationMode() {
- return {
- fade: 'opacity',
- 'slide-top': 'translateY',
- 'slide-right': 'translateX',
- 'slide-bottom': 'translateY',
- 'slide-left': 'translateX',
- 'zoom-in': 'scale',
- 'zoom-out': 'scale'
- }
- },
- // 驼峰转中横线
- toLine(name) {
- return name.replace(/([A-Z])/g, '-$1').toLowerCase()
}
}
-}
</script>
<style></style>
diff --git a/uni_modules/uni-transition/package.json b/uni_modules/uni-transition/package.json
index d15fdf0..0542c52 100644
--- a/uni_modules/uni-transition/package.json
+++ b/uni_modules/uni-transition/package.json
@@ -1,7 +1,7 @@
{
"id": "uni-transition",
"displayName": "uni-transition 过渡动画",
- "version": "1.3.1",
+ "version": "1.3.6",
"description": "元素的简单过渡动画",
"keywords": [
"uni-ui",
@@ -12,16 +12,14 @@
],
"repository": "https://github.com/dcloudio/uni-ui",
"engines": {
- "HBuilderX": ""
+ "HBuilderX": "",
+ "uni-app": "^4.12",
+ "uni-app-x": ""
},
"directories": {
"example": "../../temps/example_temps"
},
"dcloudext": {
- "category": [
- "前端组件",
- "通用组件"
- ],
"sale": {
"regular": {
"price": "0.00"
@@ -38,48 +36,75 @@
"data": "无",
"permissions": "无"
},
- "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui"
+ "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui",
+ "type": "component-vue",
+ "darkmode": "x",
+ "i18n": "x",
+ "widescreen": "x"
},
"uni_modules": {
- "dependencies": ["uni-scss"],
+ "dependencies": [
+ "uni-scss"
+ ],
"encrypt": [],
"platforms": {
"cloud": {
- "tcb": "y",
- "aliyun": "y"
+ "tcb": "x",
+ "aliyun": "x",
+ "alipay": "x"
},
"client": {
- "App": {
- "app-vue": "y",
- "app-nvue": "y"
+ "uni-app": {
+ "vue": {
+ "vue2": "√",
+ "vue3": "√"
+ },
+ "web": {
+ "safari": "√",
+ "chrome": "√"
+ },
+ "app": {
+ "vue": "√",
+ "nvue": "√",
+ "android": "√",
+ "ios": "√",
+ "harmony": "√"
+ },
+ "mp": {
+ "weixin": {
+ },
+ "alipay": {
+ },
+ "toutiao": {
+ },
+ "baidu": {
+ },
+ "kuaishou": {
+ },
+ "jd": {
+ },
+ "harmony": "-",
+ "qq": "√",
+ "lark": "-"
+ },
+ "quickapp": {
+ "huawei": "√",
+ "union": "√"
+ }
},
- "H5-mobile": {
- "Safari": "y",
- "Android Browser": "y",
- "微信浏览器(Android)": "y",
- "QQ浏览器(Android)": "y"
- },
- "H5-pc": {
- "Chrome": "y",
- "IE": "y",
- "Edge": "y",
- "Firefox": "y",
- "Safari": "y"
- },
- "小程序": {
- "微信": "y",
- "阿里": "y",
- "百度": "y",
- "字节跳动": "y",
- "QQ": "y"
- },
- "快应用": {
- "华为": "u",
- "联盟": "u"
- },
- "Vue": {
- "vue2": "y",
- "vue3": "y"
+ "uni-app-x": {
+ "web": {
+ "safari": "-",
+ "chrome": "-"
+ },
+ "app": {
+ "android": "-",
+ "ios": "-",
+ "harmony": "-"
+ },
+ "mp": {
+ "weixin": "-"
+ }
}
}
}
diff --git a/util.js b/util.js
index e28c766..539933f 100644
--- a/util.js
+++ b/util.js
@@ -1,5 +1,5 @@
import CryptoJS from './node_modules/crypto-js/crypto-js.js'
-const baseUrl = 'https://tmy.xjzbh.com/api/'
+const baseUrl = 'https://lp1994.lpyx.top/api/'
const cryptKey = '2025Shop2025Shop'
const cryptIv = '2025Shop2025Shop'
@@ -38,7 +38,7 @@
}
const getHeader = () => {
- let token = uni.getStorageSync('lzsc-token')
+ let token = uni.getStorageSync('pig-token')
let header = {
'Accept': 'application/json',
'Content-type': 'application/json',
@@ -208,7 +208,8 @@
}
const checkLogin = (url = '', burl = '') => {
- let token = uni.getStorageSync('lzsc-token') ? uni.getStorageSync('lzsc-token') : null
+ console.log('url', url)
+ let token = uni.getStorageSync('pig-token') ? uni.getStorageSync('pig-token') : null
if(token == null){
uni.showModal({
title: '温馨提示',
@@ -237,7 +238,7 @@
}
const checkGoPages = (url = '', burl = '', isgo = 1) => {
- let token = uni.getStorageSync('lzsc-token') ? uni.getStorageSync('lzsc-token') : null
+ let token = uni.getStorageSync('pig-token') ? uni.getStorageSync('pig-token') : null
console.log('token', token)
if(token == null){
uni.showModal({
--
Gitblit v1.9.3