解决merge
@@ -4,7 +4,7 @@
|
|||||||
"configurations": [{
|
"configurations": [{
|
||||||
"app-plus" :
|
"app-plus" :
|
||||||
{
|
{
|
||||||
"launchtype" : "local"
|
"launchtype" : "remote"
|
||||||
},
|
},
|
||||||
"default" :
|
"default" :
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ const request = (parameter, hideLoding = true) => {
|
|||||||
// 注入header
|
// 注入header
|
||||||
config.header = {
|
config.header = {
|
||||||
'Accept': 'application/json',
|
'Accept': 'application/json',
|
||||||
'Authorization': store.getters.getToken || ''
|
'Authorization': store.getters.getToken || uni.getStorageSync('token')
|
||||||
}
|
}
|
||||||
// 加载提示
|
// 加载提示
|
||||||
if(!hideLoding) uni.showLoading({
|
if(!hideLoding) uni.showLoading({
|
||||||
@@ -137,6 +137,8 @@ const errToast = (code) => {
|
|||||||
// 更新token
|
// 更新token
|
||||||
const updateToken = (token) => {
|
const updateToken = (token) => {
|
||||||
store.commit('setToken', token)
|
store.commit('setToken', token)
|
||||||
|
// 清除退出登录标识
|
||||||
|
uni.removeStorageSync('isnew')
|
||||||
}
|
}
|
||||||
|
|
||||||
// 处理登录提示
|
// 处理登录提示
|
||||||
|
|||||||
@@ -24,7 +24,70 @@ const recharge = (data) => {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 充值订单信息
|
||||||
|
const payment = (data) => {
|
||||||
|
return request({
|
||||||
|
url: "user/transaction/recharge/payment",
|
||||||
|
method: "POST",
|
||||||
|
data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 充值记录
|
||||||
|
const log = (data) => {
|
||||||
|
return request({
|
||||||
|
url: 'user/transaction/recharge/lists'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取钱包地址
|
||||||
|
const code = () => {
|
||||||
|
return request({
|
||||||
|
url: 'chain/account/code'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 转账初始化
|
||||||
|
const transfer = () => {
|
||||||
|
return request({
|
||||||
|
url: 'user/transaction/transfer'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 设置支付密码
|
||||||
|
const setpassword = data => {
|
||||||
|
return request({
|
||||||
|
url: 'user/transaction/setpassword',
|
||||||
|
method: 'POST',
|
||||||
|
data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取验证码
|
||||||
|
const getSms = data => {
|
||||||
|
return request({
|
||||||
|
url: 'user/transaction/setpassword/sms',
|
||||||
|
method: 'POST'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 提交转账
|
||||||
|
const submitTransfer = data => {
|
||||||
|
return request({
|
||||||
|
url: 'user/transaction/transfer/store',
|
||||||
|
method: 'POST',
|
||||||
|
data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
export {
|
export {
|
||||||
dt,
|
dt,
|
||||||
recharge
|
recharge,
|
||||||
|
payment,
|
||||||
|
log,
|
||||||
|
code,
|
||||||
|
transfer,
|
||||||
|
setpassword,
|
||||||
|
getSms,
|
||||||
|
submitTransfer
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,7 +15,22 @@ const life = () =>{
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 共分首页
|
||||||
|
const glz = () => {
|
||||||
|
return request({
|
||||||
|
url: 'user/glz/index'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 签到
|
||||||
|
const sign = () => {
|
||||||
|
return request({
|
||||||
|
url: 'user/glz/sign'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
export {
|
export {
|
||||||
life
|
life,
|
||||||
|
glz,
|
||||||
|
sign
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,16 +21,34 @@ const goods = id => {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
// 套餐列表
|
// 店铺列表
|
||||||
const meals = (id, categoryId) => {
|
const shops = (categoryId) => {
|
||||||
return request({
|
return request({
|
||||||
url: 'mall/meals/' + id,
|
url: 'mall/shops',
|
||||||
data: {
|
data: {
|
||||||
category_id: categoryId
|
category_id: categoryId
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 店铺详情
|
||||||
|
const shopsDetail = (shopId) => {
|
||||||
|
return request({
|
||||||
|
url: 'mall/shops/' + shopId,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 店铺商品
|
||||||
|
const shopsGoods = (shop_id, category_id) => {
|
||||||
|
return request({
|
||||||
|
url: 'mall/goods',
|
||||||
|
data: {
|
||||||
|
shop_id,
|
||||||
|
category_id
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
// 商品列表
|
// 商品列表
|
||||||
const lists = data => {
|
const lists = data => {
|
||||||
return request({
|
return request({
|
||||||
@@ -66,7 +84,9 @@ const classify = id => {
|
|||||||
export {
|
export {
|
||||||
mall,
|
mall,
|
||||||
goods,
|
goods,
|
||||||
meals,
|
shops,
|
||||||
|
shopsDetail,
|
||||||
|
shopsGoods,
|
||||||
lists,
|
lists,
|
||||||
buy,
|
buy,
|
||||||
verify,
|
verify,
|
||||||
|
|||||||
21
apis/interfaces/team.js
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
|
||||||
|
/**
|
||||||
|
* Web唐明明
|
||||||
|
* 匆匆数载恍如梦,岁月迢迢华发增。
|
||||||
|
* 碌碌无为枉半生,一朝惊醒万事空。
|
||||||
|
* moduleName: 团队
|
||||||
|
*/
|
||||||
|
|
||||||
|
import { request } from '../index'
|
||||||
|
|
||||||
|
// 团队
|
||||||
|
const relations = (data) => {
|
||||||
|
return request({
|
||||||
|
url: 'user/relations',
|
||||||
|
data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
export {
|
||||||
|
relations
|
||||||
|
}
|
||||||
@@ -14,7 +14,22 @@ const info = () =>{
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 导出助记词
|
||||||
|
const chainSeed = () => {
|
||||||
|
return request({
|
||||||
|
url: 'chain/safe/seed'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取邀请码
|
||||||
|
const invitationCode = () => {
|
||||||
|
return request({
|
||||||
|
url: 'user/invite'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
export {
|
export {
|
||||||
info
|
info,
|
||||||
|
chainSeed,
|
||||||
|
invitationCode
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,14 +18,14 @@ const vip = () =>{
|
|||||||
// 开通会员
|
// 开通会员
|
||||||
const vipPay = () => {
|
const vipPay = () => {
|
||||||
return request({
|
return request({
|
||||||
url: ''
|
url: 'user/identities/buyvip'
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
// 获取支付信息
|
// 获取支付信息
|
||||||
const payInfo = () => {
|
const payInfo = (orderId) => {
|
||||||
return request({
|
return request({
|
||||||
url: ''
|
url: 'user/identities/pay/' + orderId + '/wechat'
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name" : "ZH-HEALTH",
|
"name" : "共力生态",
|
||||||
"appid" : "__UNI__DE7B0E6",
|
"appid" : "__UNI__DE7B0E6",
|
||||||
"description" : "ZH-HEALTH,您手上的健康管理专家",
|
"description" : "共力生态",
|
||||||
"versionName" : "1.0.22",
|
"versionName" : "1.0.22",
|
||||||
"versionCode" : 100,
|
"versionCode" : 100,
|
||||||
"transformPx" : false,
|
"transformPx" : false,
|
||||||
@@ -78,7 +78,7 @@
|
|||||||
"payment" : {
|
"payment" : {
|
||||||
"weixin" : {
|
"weixin" : {
|
||||||
"__platform__" : [ "android" ],
|
"__platform__" : [ "android" ],
|
||||||
"appid" : "wx74b2fcb478707364",
|
"appid" : "wxcb85e48d044bc5ee",
|
||||||
"UniversalLinks" : ""
|
"UniversalLinks" : ""
|
||||||
},
|
},
|
||||||
"alipay" : {
|
"alipay" : {
|
||||||
@@ -87,14 +87,12 @@
|
|||||||
},
|
},
|
||||||
"share" : {
|
"share" : {
|
||||||
"weixin" : {
|
"weixin" : {
|
||||||
"appid" : "wx74b2fcb478707364",
|
"appid" : "wxcb85e48d044bc5ee",
|
||||||
"UniversalLinks" : ""
|
"UniversalLinks" : ""
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"ad" : {},
|
"ad" : {},
|
||||||
"push" : {
|
"push" : {},
|
||||||
"unipush" : {}
|
|
||||||
},
|
|
||||||
"geolocation" : {
|
"geolocation" : {
|
||||||
"system" : {
|
"system" : {
|
||||||
"__platform__" : [ "android" ]
|
"__platform__" : [ "android" ]
|
||||||
|
|||||||
171
pages.json
@@ -1,6 +1,5 @@
|
|||||||
{
|
{
|
||||||
"pages" : [
|
"pages": [{
|
||||||
{
|
|
||||||
"path": "pages/auth/auth",
|
"path": "pages/auth/auth",
|
||||||
"name": "Auth",
|
"name": "Auth",
|
||||||
"style": {
|
"style": {
|
||||||
@@ -16,24 +15,26 @@
|
|||||||
"navigationBarBackgroundColor": "#FFF",
|
"navigationBarBackgroundColor": "#FFF",
|
||||||
"app-plus": {
|
"app-plus": {
|
||||||
"titleNView": {
|
"titleNView": {
|
||||||
"buttons" : [
|
"buttons": [{
|
||||||
{
|
|
||||||
"text": "退出登录",
|
"text": "退出登录",
|
||||||
"fontSize": "14",
|
"fontSize": "14",
|
||||||
"width": "80px",
|
"width": "80px",
|
||||||
"color": "#34CE98"
|
"color": "#34CE98"
|
||||||
}
|
}]
|
||||||
]
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
}, {
|
||||||
{
|
|
||||||
"path": "pages/life/life",
|
"path": "pages/life/life",
|
||||||
"name": "Life",
|
"name": "Life",
|
||||||
"style": {
|
"style": {
|
||||||
"navigationBarTitleText": "共力人生",
|
"navigationBarTitleText": "共力人生",
|
||||||
"navigationStyle" : "custom"
|
"navigationStyle": "custom",
|
||||||
|
"app-plus": {
|
||||||
|
"titleNView": {
|
||||||
|
"type": "transparent"
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -45,15 +46,13 @@
|
|||||||
"app-plus": {
|
"app-plus": {
|
||||||
"titleNView": {
|
"titleNView": {
|
||||||
"backgroundColor": "#FFFFFF",
|
"backgroundColor": "#FFFFFF",
|
||||||
"buttons" : [
|
"buttons": [{
|
||||||
{
|
|
||||||
"float": "right",
|
"float": "right",
|
||||||
"text": "\ue603",
|
"text": "\ue603",
|
||||||
"fontSrc": "/static/iconfont.ttf",
|
"fontSrc": "/static/iconfont.ttf",
|
||||||
"color": "#000",
|
"color": "#000",
|
||||||
"fontSize": "20px"
|
"fontSize": "20px"
|
||||||
}
|
}]
|
||||||
]
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -63,7 +62,13 @@
|
|||||||
"name": "User",
|
"name": "User",
|
||||||
"style": {
|
"style": {
|
||||||
"navigationBarTitleText": "我的",
|
"navigationBarTitleText": "我的",
|
||||||
"navigationStyle" : "custom"
|
"navigationBarTextStyle": "white",
|
||||||
|
"app-plus": {
|
||||||
|
"titleNView": {
|
||||||
|
"backgroundColor": "#34CE98",
|
||||||
|
"type": "transparent"
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -75,6 +80,7 @@
|
|||||||
"navigationBarTextStyle": "white"
|
"navigationBarTextStyle": "white"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
"path": "pages/store/goods",
|
"path": "pages/store/goods",
|
||||||
"name": "StoreGoods",
|
"name": "StoreGoods",
|
||||||
@@ -105,6 +111,14 @@
|
|||||||
"navigationBarBackgroundColor": "#FFFFFF",
|
"navigationBarBackgroundColor": "#FFFFFF",
|
||||||
"enablePullDownRefresh": false
|
"enablePullDownRefresh": false
|
||||||
}
|
}
|
||||||
|
},{
|
||||||
|
"path": "pages/order/logistics",
|
||||||
|
"name": "OrderLogistics",
|
||||||
|
"style": {
|
||||||
|
"navigationBarTitleText": "物流进度",
|
||||||
|
"navigationBarBackgroundColor": "#FFFFFF",
|
||||||
|
"enablePullDownRefresh": false
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"path": "pages/order/details",
|
"path": "pages/order/details",
|
||||||
@@ -114,14 +128,6 @@
|
|||||||
"enablePullDownRefresh": false
|
"enablePullDownRefresh": false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"path" : "pages/order/logistics",
|
|
||||||
"name" : "OrderLogistics",
|
|
||||||
"style" : {
|
|
||||||
"navigationBarTitleText" : "物流信息",
|
|
||||||
"enablePullDownRefresh" : false
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"path": "pages/address/index",
|
"path": "pages/address/index",
|
||||||
"name": "Address",
|
"name": "Address",
|
||||||
@@ -175,11 +181,18 @@
|
|||||||
"path": "pages/refund/list",
|
"path": "pages/refund/list",
|
||||||
"name": "OrderRefund",
|
"name": "OrderRefund",
|
||||||
"style": {
|
"style": {
|
||||||
"navigationBarTitleText" : "退款/售后",
|
"navigationBarTitleText": "退换货",
|
||||||
"navigationBarBackgroundColor" : "#FFFFFF",
|
"navigationBarBackgroundColor": "#FFFFFF"
|
||||||
"enablePullDownRefresh" : true
|
}
|
||||||
|
}, {
|
||||||
|
"path": "pages/refund/exchange",
|
||||||
|
"name": "Exchange",
|
||||||
|
"style": {
|
||||||
|
"navigationBarTitleText": "换货",
|
||||||
|
"navigationBarBackgroundColor": "#FFFFFF"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
"path": "pages/refund/detail",
|
"path": "pages/refund/detail",
|
||||||
"name": "OrderRefundDetail",
|
"name": "OrderRefundDetail",
|
||||||
@@ -220,14 +233,6 @@
|
|||||||
"navigationBarBackgroundColor": "#FFFFFF"
|
"navigationBarBackgroundColor": "#FFFFFF"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"path" : "pages/refund/exchange",
|
|
||||||
"name" : "Exchange",
|
|
||||||
"style" : {
|
|
||||||
"navigationBarTitleText" : "换货",
|
|
||||||
"navigationBarBackgroundColor" : "#FFFFFF"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"path": "pages/refund/refund_money",
|
"path": "pages/refund/refund_money",
|
||||||
"name": "RefundMoney",
|
"name": "RefundMoney",
|
||||||
@@ -244,8 +249,7 @@
|
|||||||
"navigationBarBackgroundColor": "#34CE98",
|
"navigationBarBackgroundColor": "#34CE98",
|
||||||
"navigationBarTextStyle": "white"
|
"navigationBarTextStyle": "white"
|
||||||
}
|
}
|
||||||
},
|
}, {
|
||||||
{
|
|
||||||
"path": "pages/account/dt",
|
"path": "pages/account/dt",
|
||||||
"name": "AccountDt",
|
"name": "AccountDt",
|
||||||
"style": {
|
"style": {
|
||||||
@@ -255,37 +259,31 @@
|
|||||||
"navigationBarTextStyle": "white",
|
"navigationBarTextStyle": "white",
|
||||||
"app-plus": {
|
"app-plus": {
|
||||||
"titleNView": {
|
"titleNView": {
|
||||||
"buttons" : [
|
"buttons": [{
|
||||||
{
|
|
||||||
"text": "充值",
|
"text": "充值",
|
||||||
"width": "60",
|
"width": "60",
|
||||||
"fontSize": "14"
|
"fontSize": "14"
|
||||||
}
|
}]
|
||||||
]
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
}, {
|
||||||
{
|
|
||||||
"path": "pages/account/recharge",
|
"path": "pages/account/recharge",
|
||||||
"name": "AccountRecharge",
|
"name": "AccountRecharge",
|
||||||
"style": {
|
"style": {
|
||||||
"navigationBarTitleText" : "DT积分充值",
|
"navigationBarTitleText": "充值",
|
||||||
"navigationBarBackgroundColor": "#FFFFFF",
|
"navigationBarBackgroundColor": "#FFFFFF",
|
||||||
"app-plus": {
|
"app-plus": {
|
||||||
"titleNView": {
|
"titleNView": {
|
||||||
"buttons" : [
|
"buttons": [{
|
||||||
{
|
|
||||||
"text": "充值记录",
|
"text": "充值记录",
|
||||||
"width": "80",
|
"width": "80",
|
||||||
"fontSize": "14"
|
"fontSize": "14"
|
||||||
}
|
}]
|
||||||
]
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
}, {
|
||||||
{
|
|
||||||
"path": "pages/vip/vip",
|
"path": "pages/vip/vip",
|
||||||
"name": "Vip",
|
"name": "Vip",
|
||||||
"style": {
|
"style": {
|
||||||
@@ -294,20 +292,18 @@
|
|||||||
"navigationBarTextStyle": "white",
|
"navigationBarTextStyle": "white",
|
||||||
"backgroundColorTop": "#242430"
|
"backgroundColorTop": "#242430"
|
||||||
}
|
}
|
||||||
},
|
}, {
|
||||||
{
|
|
||||||
"path": "pages/vip/agreement",
|
"path": "pages/vip/agreement",
|
||||||
"style": {
|
"style": {
|
||||||
"navigationBarTitleText": "共力会员协议"
|
"navigationBarTitleText": "共力会员协议"
|
||||||
}
|
}
|
||||||
},
|
}, {
|
||||||
{
|
|
||||||
"path": "pages/team/index",
|
"path": "pages/team/index",
|
||||||
"name": "Team",
|
"name": "Team",
|
||||||
"style": {
|
"style": {
|
||||||
"navigationBarTitleText" : "共力团队",
|
"navigationBarTitleText": "共力团队"
|
||||||
"enablePullDownRefresh" : false
|
|
||||||
}
|
}
|
||||||
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"path": "pages/store/shop/shopDetail",
|
"path": "pages/store/shop/shopDetail",
|
||||||
@@ -320,35 +316,81 @@
|
|||||||
"path": "pages/store/shop/shopList",
|
"path": "pages/store/shop/shopList",
|
||||||
"name": "ShopList",
|
"name": "ShopList",
|
||||||
"style": {
|
"style": {
|
||||||
"navigationBarTitleText" : "更多店铺",
|
"navigationBarTitleText": "店铺",
|
||||||
"navigationBarBackgroundColor": "#FFFFFF",
|
"navigationBarBackgroundColor": "#FFFFFF",
|
||||||
"enablePullDownRefresh": true
|
"enablePullDownRefresh": true
|
||||||
}
|
}
|
||||||
|
}, {
|
||||||
|
"path": "pages/account/log",
|
||||||
|
"name": "AccountLog",
|
||||||
|
"style": {
|
||||||
|
"navigationBarTitleText": "充值记录",
|
||||||
|
"navigationBarBackgroundColor": "#FFFFFF"
|
||||||
|
}
|
||||||
|
}, {
|
||||||
|
"path": "pages/account/transfer",
|
||||||
|
"name": "AccountTransfer",
|
||||||
|
"style": {
|
||||||
|
"navigationBarTitleText": "转账",
|
||||||
|
"navigationBarBackgroundColor": "#F3F6FB"
|
||||||
|
}
|
||||||
|
}, {
|
||||||
|
"path": "pages/account/resetPassword",
|
||||||
|
"name": "AccountResetPassword",
|
||||||
|
"style": {
|
||||||
|
"navigationBarTitleText": "钱包密码",
|
||||||
|
"navigationBarBackgroundColor": "#F3F6FB"
|
||||||
|
}
|
||||||
|
}, {
|
||||||
|
"path": "pages/account/results",
|
||||||
|
"name": "Accountresults",
|
||||||
|
"style": {
|
||||||
|
"navigationBarTitleText": "转账结果",
|
||||||
|
"navigationBarBackgroundColor": "#FFFFFF"
|
||||||
|
}
|
||||||
|
}, {
|
||||||
|
"path": "pages/account/code",
|
||||||
|
"name": "AccountCode",
|
||||||
|
"style": {
|
||||||
|
"navigationBarTitleText": "收款码",
|
||||||
|
"navigationBarBackgroundColor": "#34CE98",
|
||||||
|
"backgroundColorTop": "#34CE98",
|
||||||
|
"navigationBarTextStyle": "white"
|
||||||
|
}
|
||||||
|
}, {
|
||||||
|
"path": "pages/invitation/invitation",
|
||||||
|
"name": "Invitation",
|
||||||
|
"style": {
|
||||||
|
"navigationStyle": "custom",
|
||||||
|
"disableScroll": true
|
||||||
|
}
|
||||||
|
}, {
|
||||||
|
"path": "pages/life/capacity",
|
||||||
|
"name": "Capacity",
|
||||||
|
"style": {
|
||||||
|
"navigationBarTitleText": "-"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"tabBar": {
|
"tabBar": {
|
||||||
"borderStyle": "white",
|
"borderStyle": "white",
|
||||||
"selectedColor": "#34CE98",
|
"selectedColor": "#34CE98",
|
||||||
"list" : [
|
"list": [{
|
||||||
{
|
|
||||||
"iconPath": "static/tabBar/tabBar_02.png",
|
"iconPath": "static/tabBar/tabBar_02.png",
|
||||||
"selectedIconPath": "static/tabBar/tabBar_show_02.png",
|
"selectedIconPath": "static/tabBar/tabBar_show_02.png",
|
||||||
"pagePath": "pages/life/life",
|
"pagePath": "pages/life/life",
|
||||||
"text": "共力人生"
|
"text": "共力人生"
|
||||||
},
|
}, {
|
||||||
{
|
|
||||||
"iconPath": "static/tabBar/tabBar_02.png",
|
"iconPath": "static/tabBar/tabBar_02.png",
|
||||||
"selectedIconPath": "static/tabBar/tabBar_show_02.png",
|
"selectedIconPath": "static/tabBar/tabBar_show_02.png",
|
||||||
"pagePath": "pages/store/index",
|
"pagePath": "pages/store/index",
|
||||||
"text": "DT商城"
|
"text": "DT商城"
|
||||||
},
|
}, {
|
||||||
{
|
|
||||||
"iconPath": "static/tabBar/tabBar_03.png",
|
"iconPath": "static/tabBar/tabBar_03.png",
|
||||||
"selectedIconPath": "static/tabBar/tabBar_show_03.png",
|
"selectedIconPath": "static/tabBar/tabBar_show_03.png",
|
||||||
"pagePath": "pages/user/index",
|
"pagePath": "pages/user/index",
|
||||||
"text": "我的"
|
"text": "我的"
|
||||||
}
|
}]
|
||||||
]
|
|
||||||
},
|
},
|
||||||
"globalStyle": {
|
"globalStyle": {
|
||||||
"navigationBarTextStyle": "black",
|
"navigationBarTextStyle": "black",
|
||||||
@@ -359,5 +401,8 @@
|
|||||||
},
|
},
|
||||||
"easycom": {
|
"easycom": {
|
||||||
"^u-(.*)": "uview-ui/components/u-$1/u-$1.vue"
|
"^u-(.*)": "uview-ui/components/u-$1/u-$1.vue"
|
||||||
|
},
|
||||||
|
"condition": { //模式配置,仅开发期间生效
|
||||||
|
"current": 0 //当前激活的模式(list 的索引项)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
124
pages/account/code.vue
Normal file
@@ -0,0 +1,124 @@
|
|||||||
|
<template>
|
||||||
|
<view class="vertical code">
|
||||||
|
<view class="vertical code-content">
|
||||||
|
<view class="sub-title">扫码转入DT积分</view>
|
||||||
|
<view class="code-img">
|
||||||
|
<image :src="code" mode="widthFix" />
|
||||||
|
</view>
|
||||||
|
<view class="hr"></view>
|
||||||
|
<view class="sub-title">钱包地址</view>
|
||||||
|
<view class="hash">{{address || '-'}}</view>
|
||||||
|
<view class="buttons">
|
||||||
|
<button class="item greed" type="default" @click="copyAddress">复制</button>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view class="footer">共力生态</view>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { code } from '@/apis/interfaces/account'
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
address: '',
|
||||||
|
code: ''
|
||||||
|
};
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
code().then(res=>{
|
||||||
|
this.code = res.image
|
||||||
|
this.address = res.address
|
||||||
|
}).catch(err=>{
|
||||||
|
uni.showToast({
|
||||||
|
icon: 'none',
|
||||||
|
title: err.message
|
||||||
|
})
|
||||||
|
})
|
||||||
|
},
|
||||||
|
methods:{
|
||||||
|
copyAddress(){
|
||||||
|
uni.setClipboardData({
|
||||||
|
data: this.address
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.code{
|
||||||
|
height: 100vh;
|
||||||
|
background:linear-gradient(to bottom, $main-color, #22ab98);
|
||||||
|
padding-bottom: env(safe-area-inset-bottom);
|
||||||
|
padding-bottom: constant(safe-area-inset-bottom);
|
||||||
|
box-sizing: border-box;
|
||||||
|
// 收款码
|
||||||
|
.code-content{
|
||||||
|
text-align: center;
|
||||||
|
background: white;
|
||||||
|
margin: 0 8vw;
|
||||||
|
border-radius: $radius;
|
||||||
|
padding: $padding * 2;
|
||||||
|
height: 70vh;
|
||||||
|
box-shadow: 0 0 6rpx 6rpx rgba($color: #000000, $alpha: .02);
|
||||||
|
box-sizing: border-box;
|
||||||
|
.sub-title{
|
||||||
|
font-size: $title-size;
|
||||||
|
}
|
||||||
|
.code-img{
|
||||||
|
width: 20vh;
|
||||||
|
height: 20vh;
|
||||||
|
margin: $margin * 3 0 $margin * 2;
|
||||||
|
display: inline-block;
|
||||||
|
background-image: url(../../static/background/wallet-code-background.png);
|
||||||
|
padding: $padding;
|
||||||
|
box-sizing: border-box;
|
||||||
|
background-position: center;
|
||||||
|
background-size: cover;
|
||||||
|
image{
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.hr{
|
||||||
|
height: 1rpx;
|
||||||
|
background: $border-color;
|
||||||
|
margin: $margin * 2 0;
|
||||||
|
}
|
||||||
|
.hash{
|
||||||
|
word-wrap: break-word;
|
||||||
|
font-size: 28rpx;
|
||||||
|
padding: $padding 0;
|
||||||
|
}
|
||||||
|
.buttons{
|
||||||
|
display: flex;
|
||||||
|
padding-top: $padding * 2;
|
||||||
|
.item{
|
||||||
|
width: 40%;
|
||||||
|
height: 80rpx;
|
||||||
|
line-height: 80rpx;
|
||||||
|
border-radius: 40rpx;
|
||||||
|
font-size: $title-size;
|
||||||
|
color: white;
|
||||||
|
&::after{
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
&.red{
|
||||||
|
background: $text-price;
|
||||||
|
}
|
||||||
|
&.greed{
|
||||||
|
background: $main-color;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// 底部
|
||||||
|
.footer{
|
||||||
|
height: 10vh;
|
||||||
|
line-height: 10vh;
|
||||||
|
text-align: center;
|
||||||
|
font-size: 28rpx;
|
||||||
|
color: rgba(255, 255, 255, .5);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@@ -1,20 +1,19 @@
|
|||||||
<template>
|
<template>
|
||||||
<view class="content">
|
<view class="content">
|
||||||
<view class="dt-header">
|
<view class="dt-header">
|
||||||
|
<view class="dt-header-number">
|
||||||
<view class="title">DT积分余额</view>
|
<view class="title">DT积分余额</view>
|
||||||
<view class="num">{{score}}</view>
|
<view class="num">{{score}}</view>
|
||||||
</view>
|
</view>
|
||||||
|
<button class="transfer" size="mini" @click="onTransfer('AccountCode')">收款</button>
|
||||||
|
<button class="transfer" size="mini" @click="onTransfer('AccountTransfer')">转账</button>
|
||||||
|
</view>
|
||||||
<block v-if="logs.length > 0">
|
<block v-if="logs.length > 0">
|
||||||
<view class="logs-title">账户记录</view>
|
<view class="logs-title">账户记录</view>
|
||||||
<view class="logs-item">
|
<view class="logs-item" v-for="(item,index) in logs" :key="index">
|
||||||
<view class="logs-item-title">账户充值</view>
|
<view class="logs-item-title">{{item.remark}}</view>
|
||||||
<view class="logs-item-time">2022-06-07 10:10:51</view>
|
<view class="logs-item-time">{{item.created_at}}</view>
|
||||||
<view class="logs-item-price add">+1000.0</view>
|
<view class="logs-item-price" :class="item.amount > 0 ? 'add': 'remove'">{{item.amount}}</view>
|
||||||
</view>
|
|
||||||
<view class="logs-item">
|
|
||||||
<view class="logs-item-title">账户充值</view>
|
|
||||||
<view class="logs-item-time">2022-06-07 10:10:51</view>
|
|
||||||
<view class="logs-item-price remove">-1000.0</view>
|
|
||||||
</view>
|
</view>
|
||||||
</block>
|
</block>
|
||||||
<block v-else>
|
<block v-else>
|
||||||
@@ -50,8 +49,15 @@
|
|||||||
this.logs = res.lists.data
|
this.logs = res.lists.data
|
||||||
this.page = res.lists.page
|
this.page = res.lists.page
|
||||||
}).catch(err => {
|
}).catch(err => {
|
||||||
console.log(err)
|
uni.showToast({
|
||||||
|
title: err.message,
|
||||||
|
icon : 'none'
|
||||||
})
|
})
|
||||||
|
})
|
||||||
|
},
|
||||||
|
// 转账
|
||||||
|
onTransfer(name){
|
||||||
|
this.$Router.push({name})
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
onNavigationBarButtonTap() {
|
onNavigationBarButtonTap() {
|
||||||
@@ -68,17 +74,40 @@
|
|||||||
background: $window-color;
|
background: $window-color;
|
||||||
min-height: 100vh;
|
min-height: 100vh;
|
||||||
.dt-header{
|
.dt-header{
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
flex-direction: row;
|
||||||
background: $main-color;
|
background: $main-color;
|
||||||
padding: $padding*3 $padding $padding*2;
|
padding: $padding*3 $padding $padding*2;
|
||||||
|
align-items: center;
|
||||||
|
.dt-header-number{
|
||||||
|
width: calc(100% - 330rpx);
|
||||||
.title{
|
.title{
|
||||||
color: rgba(255, 255, 255, .9);
|
color: rgba(255, 255, 255, .9);
|
||||||
font-size: 28rpx;
|
font-size: 28rpx;
|
||||||
|
@extend .nowrap;
|
||||||
}
|
}
|
||||||
.num{
|
.num{
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
font-size: 60rpx;
|
font-size: 60rpx;
|
||||||
padding-top: 10rpx;
|
padding-top: 10rpx;
|
||||||
color: white;
|
color: white;
|
||||||
|
@extend .nowrap;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.transfer[size="mini"]{
|
||||||
|
width: 150rpx;
|
||||||
|
height: 80rpx;
|
||||||
|
border-radius: 40rpx;
|
||||||
|
line-height: 80rpx;
|
||||||
|
background: white;
|
||||||
|
font-size: 30rpx;
|
||||||
|
color: $main-color;
|
||||||
|
margin: 0;
|
||||||
|
font-weight: bold;
|
||||||
|
&::after{
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// 账户记录
|
// 账户记录
|
||||||
|
|||||||
90
pages/account/log.vue
Normal file
@@ -0,0 +1,90 @@
|
|||||||
|
<template>
|
||||||
|
<view class="logs">
|
||||||
|
<block v-if="logs.length > 0">
|
||||||
|
<view class="logs-item" v-for="(item, index) in logs" :key="index">
|
||||||
|
<view class="logs-item-flex">
|
||||||
|
<view class="title">充值DT积分</view>
|
||||||
|
<view class="price">{{item.amount}}</view>
|
||||||
|
</view>
|
||||||
|
<view class="logs-item-flex">
|
||||||
|
<view class="time">{{item.created_at}}</view>
|
||||||
|
<view class="status">{{item.status_text}}</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</block>
|
||||||
|
<block v-else>
|
||||||
|
<view class="vertical pages-empty">
|
||||||
|
<u-empty
|
||||||
|
icon="http://cdn.uviewui.com/uview/empty/list.png"
|
||||||
|
textColor="#999"
|
||||||
|
text="暂无充值记录"
|
||||||
|
>
|
||||||
|
</u-empty>
|
||||||
|
</view>
|
||||||
|
</block>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { log } from '@/apis/interfaces/account.js'
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
logs: [],
|
||||||
|
pages: {}
|
||||||
|
};
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
log().then(res => {
|
||||||
|
this.logs = res.data
|
||||||
|
this.pages = res.pages
|
||||||
|
}).catch(err => {
|
||||||
|
uni.showToast({
|
||||||
|
title: err.message,
|
||||||
|
icon : 'none'
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss">
|
||||||
|
// 数据为空
|
||||||
|
.pages-empty{
|
||||||
|
height: 80vh;
|
||||||
|
}
|
||||||
|
// 记录
|
||||||
|
.logs{
|
||||||
|
background-color: $window-color;
|
||||||
|
min-height: 100vh;
|
||||||
|
overflow: hidden;
|
||||||
|
box-sizing: border-box;
|
||||||
|
padding: 10rpx 0;
|
||||||
|
.logs-item{
|
||||||
|
border-radius: $radius;
|
||||||
|
background: white;
|
||||||
|
margin: ($margin - 10) $margin;
|
||||||
|
padding: $padding;
|
||||||
|
&-flex{
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
.title{
|
||||||
|
font-weight: bold;
|
||||||
|
font-size: 32rpx;
|
||||||
|
}
|
||||||
|
.price{
|
||||||
|
font-size: 30rpx;
|
||||||
|
font-weight: bold;
|
||||||
|
line-height: 40rpx;
|
||||||
|
color: $text-price;
|
||||||
|
}
|
||||||
|
.time,
|
||||||
|
.status{
|
||||||
|
font-size: 26rpx;
|
||||||
|
line-height: 40rpx;
|
||||||
|
color: gray;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@@ -15,25 +15,25 @@
|
|||||||
</view>
|
</view>
|
||||||
<view class="recharge-fast">
|
<view class="recharge-fast">
|
||||||
<view class="recharge-fast-item" @click="onRecharge(50)">
|
<view class="recharge-fast-item" @click="onRecharge(50)">
|
||||||
<view class="recharge-fast-price">50<text>元</text></view>
|
|
||||||
<view class="recharge-fast-numb">50<text>DT积分</text></view>
|
|
||||||
</view>
|
|
||||||
<view class="recharge-fast-item" @click="onRecharge(100)">
|
|
||||||
<view class="recharge-fast-price">100<text>元</text></view>
|
<view class="recharge-fast-price">100<text>元</text></view>
|
||||||
<view class="recharge-fast-numb">100<text>DT积分</text></view>
|
<view class="recharge-fast-numb">100<text>DT积分</text></view>
|
||||||
</view>
|
</view>
|
||||||
<view class="recharge-fast-item" @click="onRecharge(200)">
|
<view class="recharge-fast-item" @click="onRecharge(100)">
|
||||||
<view class="recharge-fast-price">200<text>元</text></view>
|
<view class="recharge-fast-price">200<text>元</text></view>
|
||||||
<view class="recharge-fast-numb">200<text>DT积分</text></view>
|
<view class="recharge-fast-numb">200<text>DT积分</text></view>
|
||||||
</view>
|
</view>
|
||||||
<view class="recharge-fast-item" @click="onRecharge(500)">
|
<view class="recharge-fast-item" @click="onRecharge(200)">
|
||||||
<view class="recharge-fast-price">500<text>元</text></view>
|
<view class="recharge-fast-price">500<text>元</text></view>
|
||||||
<view class="recharge-fast-numb">500<text>DT积分</text></view>
|
<view class="recharge-fast-numb">500<text>DT积分</text></view>
|
||||||
</view>
|
</view>
|
||||||
<view class="recharge-fast-item" @click="onRecharge(1000)">
|
<view class="recharge-fast-item" @click="onRecharge(500)">
|
||||||
<view class="recharge-fast-price">1000<text>元</text></view>
|
<view class="recharge-fast-price">1000<text>元</text></view>
|
||||||
<view class="recharge-fast-numb">1000<text>DT积分</text></view>
|
<view class="recharge-fast-numb">1000<text>DT积分</text></view>
|
||||||
</view>
|
</view>
|
||||||
|
<view class="recharge-fast-item" @click="onRecharge(1000)">
|
||||||
|
<view class="recharge-fast-price">3000<text>元</text></view>
|
||||||
|
<view class="recharge-fast-numb">3000<text>DT积分</text></view>
|
||||||
|
</view>
|
||||||
<view class="recharge-fast-item" @click="onRecharge(5000)">
|
<view class="recharge-fast-item" @click="onRecharge(5000)">
|
||||||
<view class="recharge-fast-price">5000<text>元</text></view>
|
<view class="recharge-fast-price">5000<text>元</text></view>
|
||||||
<view class="recharge-fast-numb">5000<text>DT积分</text></view>
|
<view class="recharge-fast-numb">5000<text>DT积分</text></view>
|
||||||
@@ -48,7 +48,7 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import { recharge } from "@/apis/interfaces/account"
|
import { recharge, payment } from "@/apis/interfaces/account"
|
||||||
export default {
|
export default {
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
@@ -68,21 +68,42 @@
|
|||||||
// 充值
|
// 充值
|
||||||
onRecharge(value){
|
onRecharge(value){
|
||||||
uni.showLoading({
|
uni.showLoading({
|
||||||
title: '加载中'
|
title: '提交订单'
|
||||||
})
|
})
|
||||||
recharge({
|
recharge({
|
||||||
amount: typeof(value) === 'number' ? value: this.priceValue
|
amount: typeof(value) === 'number' ? value: this.priceValue
|
||||||
}).then(res => {
|
}).then(res => {
|
||||||
console.log(res)
|
if(res.order_id){
|
||||||
|
uni.showLoading({
|
||||||
|
title: '获取支付信息'
|
||||||
|
})
|
||||||
|
this.getPayInfo(res.order_id)
|
||||||
|
}
|
||||||
|
}).catch(err => {
|
||||||
|
uni.showToast({
|
||||||
|
title: err.message,
|
||||||
|
icon : 'none'
|
||||||
|
})
|
||||||
|
})
|
||||||
|
},
|
||||||
|
// 获取充值信息
|
||||||
|
getPayInfo(order_id){
|
||||||
|
payment({order_id}).then(res => {
|
||||||
uni.requestPayment({
|
uni.requestPayment({
|
||||||
provider: 'wxpay',
|
provider: 'wxpay',
|
||||||
orderInfo: res,
|
orderInfo: JSON.parse(res),
|
||||||
success: res => {
|
success: res => {
|
||||||
console.log(res)
|
uni.redirectTo({
|
||||||
|
url: './results?type=recharge'
|
||||||
|
})
|
||||||
},
|
},
|
||||||
fail(err) {
|
fail(err) {
|
||||||
|
let showToast = err.errMsg
|
||||||
|
if(err.errMsg === 'requestPayment:fail [payment微信:-2]User canceled'){
|
||||||
|
showToast = '充值被取消'
|
||||||
|
}
|
||||||
uni.showToast({
|
uni.showToast({
|
||||||
title: err.errMsg,
|
title: showToast,
|
||||||
icon : 'none'
|
icon : 'none'
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@@ -96,7 +117,7 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
onNavigationBarButtonTap() {
|
onNavigationBarButtonTap() {
|
||||||
console.log('充值记录')
|
this.$Router.push({name: 'AccountLog'})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
203
pages/account/resetPassword.vue
Normal file
@@ -0,0 +1,203 @@
|
|||||||
|
<template>
|
||||||
|
<view class="content">
|
||||||
|
<!-- 设置支付密码 -->
|
||||||
|
<view class="password">
|
||||||
|
<view class="prompt">
|
||||||
|
<view class="prompt-code">验证码已发送至{{phone}} <button size="mini" :disabled="getCodeState" @click="getCode">{{sendCode}}</button></view>
|
||||||
|
<view>请设置6位数字密码。建议不要使用连续的数字。</view>
|
||||||
|
</view>
|
||||||
|
<view class="group">
|
||||||
|
<view class="inputs">
|
||||||
|
<label>设密码</label>
|
||||||
|
<input type="number" v-model="password" maxlength="6" password placeholder="请设置支付密码" />
|
||||||
|
</view>
|
||||||
|
<view class="inputs">
|
||||||
|
<label>确认密码</label>
|
||||||
|
<input type="number" v-model="verify" maxlength="6" password placeholder="请确认支付密码" />
|
||||||
|
</view>
|
||||||
|
<view class="inputs">
|
||||||
|
<label>验证码</label>
|
||||||
|
<input type="number" v-model="code" maxlength="4" placeholder="请输入验证码" />
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<!-- 按钮 -->
|
||||||
|
<view class="buttons">
|
||||||
|
<button type="default" form-type="submit" @click="createWallet">确认</button>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { setpassword, getSms } from '@/apis/interfaces/account'
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
sendCode : '',
|
||||||
|
getCodeState: false,
|
||||||
|
phone : '',
|
||||||
|
code : '',
|
||||||
|
password : '',
|
||||||
|
verify : ''
|
||||||
|
}
|
||||||
|
},
|
||||||
|
onLoad() {
|
||||||
|
this.phone = this.$Route.query.phone
|
||||||
|
this.getCode()
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
// 获取验证码
|
||||||
|
getCode(){
|
||||||
|
let outTime;
|
||||||
|
let smsTime = 60;
|
||||||
|
getSms().then(res => {
|
||||||
|
uni.showToast({
|
||||||
|
title: res,
|
||||||
|
icon: "none",
|
||||||
|
});
|
||||||
|
this.getCodeState = true;
|
||||||
|
this.sendCode = smsTime + 's后重新获取';
|
||||||
|
outTime = setInterval(() => {
|
||||||
|
if (smsTime <= 1) {
|
||||||
|
this.getCodeState = false;
|
||||||
|
this.sendCode = '重新获取';
|
||||||
|
clearInterval(outTime);
|
||||||
|
return
|
||||||
|
}
|
||||||
|
this.sendCode = smsTime + 's后重新获取';
|
||||||
|
smsTime -= 1;
|
||||||
|
}, 1000);
|
||||||
|
}).catch((err) => {
|
||||||
|
uni.showToast({
|
||||||
|
title: err.message,
|
||||||
|
icon: "none",
|
||||||
|
});
|
||||||
|
});
|
||||||
|
},
|
||||||
|
// 激活钱包
|
||||||
|
createWallet() {
|
||||||
|
if (this.password === '' || this.verify === '') {
|
||||||
|
uni.showToast({
|
||||||
|
icon: 'none',
|
||||||
|
title: '请设置支付密码'
|
||||||
|
})
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if (this.password !== this.verify) {
|
||||||
|
uni.showToast({
|
||||||
|
icon: 'none',
|
||||||
|
title: '两次输入密码不一致'
|
||||||
|
})
|
||||||
|
return
|
||||||
|
}
|
||||||
|
setpassword({
|
||||||
|
password: this.password,
|
||||||
|
password_confirmation: this.verify,
|
||||||
|
code: this.code
|
||||||
|
}).then(res => {
|
||||||
|
uni.showModal({
|
||||||
|
title: '提示',
|
||||||
|
content: '支付密码设置成功',
|
||||||
|
showCancel:false,
|
||||||
|
success: res=> {
|
||||||
|
uni.navigateBack()
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}).catch(err => {
|
||||||
|
console.log(err)
|
||||||
|
uni.showToast({
|
||||||
|
icon: 'none',
|
||||||
|
title: err.message
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.content{
|
||||||
|
background: $window-color;
|
||||||
|
min-height: 100vh;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
// 副标题
|
||||||
|
.sub-title {
|
||||||
|
color: $text-gray;
|
||||||
|
text-align: center;
|
||||||
|
margin: $margin * 2 $margin;
|
||||||
|
font-size: $title-size-m;
|
||||||
|
}
|
||||||
|
// 设置密码
|
||||||
|
.password {
|
||||||
|
padding: 0 $padding;
|
||||||
|
|
||||||
|
.prompt {
|
||||||
|
margin-top: $margin * 2;
|
||||||
|
font-size: $title-size-m;
|
||||||
|
color: gray;
|
||||||
|
text-align: center;
|
||||||
|
&-code{
|
||||||
|
line-height: 50rpx;
|
||||||
|
button[size="mini"]{
|
||||||
|
vertical-align: top;
|
||||||
|
margin-left: 20rpx;
|
||||||
|
font-size: $title-size-m;
|
||||||
|
background: transparent;
|
||||||
|
color: $main-color;
|
||||||
|
height: 50rpx;
|
||||||
|
line-height: 50rpx;
|
||||||
|
width: auto;
|
||||||
|
padding: 0;
|
||||||
|
&::after{
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.group {
|
||||||
|
margin-top: $margin;
|
||||||
|
border-radius: $radius-m;
|
||||||
|
box-shadow: 0 0 4rpx 4rpx rgba($color: $text-color, $alpha: .02);
|
||||||
|
background-color: white;
|
||||||
|
|
||||||
|
.inputs {
|
||||||
|
padding: $padding $padding + 10;
|
||||||
|
border-bottom: solid 1rpx $border-color;
|
||||||
|
|
||||||
|
&:last-child {
|
||||||
|
border-bottom: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
label {
|
||||||
|
color: $text-gray;
|
||||||
|
font-size: $title-size-m;
|
||||||
|
}
|
||||||
|
|
||||||
|
input {
|
||||||
|
height: 70rpx;
|
||||||
|
line-height: 70rpx;
|
||||||
|
font-size: $title-size;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 按钮
|
||||||
|
.buttons {
|
||||||
|
padding: $padding*2 $padding;
|
||||||
|
button {
|
||||||
|
border-radius: 45rpx;
|
||||||
|
height: 90rpx;
|
||||||
|
line-height: 90rpx;
|
||||||
|
background-color: $main-color;
|
||||||
|
color: white;
|
||||||
|
font-weight: bold;
|
||||||
|
font-size: $title-size;
|
||||||
|
&::after{
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
90
pages/account/results.vue
Normal file
@@ -0,0 +1,90 @@
|
|||||||
|
<template>
|
||||||
|
<view>
|
||||||
|
<view class="vertical results">
|
||||||
|
<uni-icons type="checkbox-filled" size="88" color="#34CE98"></uni-icons>
|
||||||
|
<view class="title">{{type !== 'recharge' ? '转账交易已提交' : '充值信息已提交'}}</view>
|
||||||
|
<view class="sub-title">预计10秒内到账,{{type !== 'recharge' ? '可在DT积分账户交易记录中查询,以实际到账时间为准' : '可在DT积分账户交易记录中查询,如充值失败充值金额原路退还'}}</view>
|
||||||
|
<view class="hash" v-if="type !== 'recharge'">
|
||||||
|
<view class="hash-title">交易哈希</view>
|
||||||
|
<view class="hash-text">{{hash}}</view>
|
||||||
|
</view>
|
||||||
|
<button class="results-button" type="default" @click="navBack">返回</button>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
type: 'recharge',
|
||||||
|
hash: ''
|
||||||
|
};
|
||||||
|
},
|
||||||
|
onLoad(e){
|
||||||
|
this.type = e.type
|
||||||
|
if(e.type === 'recharge'){
|
||||||
|
uni.setNavigationBarTitle({
|
||||||
|
title: '充值结果'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
if(e.hash){
|
||||||
|
this.hash = e.hash
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods:{
|
||||||
|
navBack(){
|
||||||
|
uni.navigateBack()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.results{
|
||||||
|
height: 100vh;
|
||||||
|
box-sizing: border-box;
|
||||||
|
text-align: center;
|
||||||
|
padding-left: $padding * 3;
|
||||||
|
padding-right: $padding * 3;
|
||||||
|
padding-bottom: 20vh;
|
||||||
|
.title{
|
||||||
|
font-size: $title-size + 8;
|
||||||
|
color: $text-color;
|
||||||
|
font-weight: bold;
|
||||||
|
line-height: 80rpx;
|
||||||
|
padding: $padding 0;
|
||||||
|
}
|
||||||
|
.sub-title{
|
||||||
|
color: $text-gray;
|
||||||
|
line-height: 40rpx;
|
||||||
|
}
|
||||||
|
.hash{
|
||||||
|
background-color: white;
|
||||||
|
padding: $padding * 2;
|
||||||
|
border-radius: $radius-lg;
|
||||||
|
margin-top: $margin * 2;
|
||||||
|
font-size: $title-size;
|
||||||
|
color: $text-color;
|
||||||
|
.hash-title{
|
||||||
|
padding-bottom: $padding;
|
||||||
|
}
|
||||||
|
.hash-text{
|
||||||
|
word-break:break-all;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.results-button{
|
||||||
|
margin-top: $margin * 3;
|
||||||
|
height: 90rpx;
|
||||||
|
line-height: 90rpx;
|
||||||
|
border-radius: 45rpx;
|
||||||
|
background-color: $main-color;
|
||||||
|
color: white;
|
||||||
|
font-size: $title-size;
|
||||||
|
font-weight: bold;
|
||||||
|
&::after{
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
227
pages/account/transfer.vue
Normal file
@@ -0,0 +1,227 @@
|
|||||||
|
<template>
|
||||||
|
<view class="transfer">
|
||||||
|
<!-- 账户余额 -->
|
||||||
|
<view class="transfer-block">
|
||||||
|
<view class="unit">DT积分</view>
|
||||||
|
<view class="transfer-flex">
|
||||||
|
<view class="item ellipsis">
|
||||||
|
<label>余额</label>{{balance || '0.00'}}
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view class="sub-title">
|
||||||
|
<text>请认真确认地址及数量,地址错误无法找回</text>
|
||||||
|
</view>
|
||||||
|
<!-- 转账信息 -->
|
||||||
|
<view class="password">
|
||||||
|
<view class="group">
|
||||||
|
<view class="inputs input-scan">
|
||||||
|
<label>接收地址</label>
|
||||||
|
<input type="text" placeholder="请输入接收地址" v-model="address" />
|
||||||
|
<view class="input-scan-icon" @click="scanCode">
|
||||||
|
<uni-icons type="scan" size="22" color="#34CE98"></uni-icons>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view class="inputs">
|
||||||
|
<label>转账数量</label>
|
||||||
|
<input type="number" placeholder="请输入转账数量" v-model="number" />
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view class="group">
|
||||||
|
<view class="inputs">
|
||||||
|
<label>交易密码</label>
|
||||||
|
<input type="password" placeholder="请输入安全密码" v-model="password" />
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<!-- 按钮 -->
|
||||||
|
<view class="buttons">
|
||||||
|
<button type="default" @click="submitTransfer">转账</button>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { transfer, submitTransfer } from '@/apis/interfaces/account'
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
balance : '0.00',
|
||||||
|
address : '',
|
||||||
|
number : '',
|
||||||
|
password : ''
|
||||||
|
}
|
||||||
|
},
|
||||||
|
onLoad(e){
|
||||||
|
if(e.hashAddress) this.address = e.hashAddress
|
||||||
|
},
|
||||||
|
onShow() {
|
||||||
|
uni.showLoading({
|
||||||
|
title: '获取账户信息',
|
||||||
|
})
|
||||||
|
transfer().then(res => {
|
||||||
|
let phone = res.mobile
|
||||||
|
this.balance = res.balance
|
||||||
|
if(!res.has_transfer_password){
|
||||||
|
uni.showModal({
|
||||||
|
title : '提示',
|
||||||
|
content : '暂未设置账户密码,无法发起转账,请设置后重试',
|
||||||
|
cancelText : '稍后设置',
|
||||||
|
confirmText : '立即设置',
|
||||||
|
success : modalRes => {
|
||||||
|
if(modalRes.confirm){
|
||||||
|
this.$Router.push({name: 'AccountResetPassword', params: {phone}})
|
||||||
|
return
|
||||||
|
}
|
||||||
|
this.$Router.back()
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
uni.hideLoading()
|
||||||
|
}).catch(err => {
|
||||||
|
uni.showToast({
|
||||||
|
title: err.message,
|
||||||
|
icon : 'none'
|
||||||
|
})
|
||||||
|
})
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
// 转账
|
||||||
|
submitTransfer(){
|
||||||
|
if(this.address === '' || this.number === '' || this.password === ''){
|
||||||
|
let messageText
|
||||||
|
if(this.address === '') messageText = '请输入接收地址'
|
||||||
|
else if(this.number === '') messageText = '请输入转账数量'
|
||||||
|
else if(this.password === '') messageText = '请输入支付密码'
|
||||||
|
uni.showToast({
|
||||||
|
icon: 'none',
|
||||||
|
title: messageText
|
||||||
|
})
|
||||||
|
return
|
||||||
|
}
|
||||||
|
// 提交转账信息
|
||||||
|
submitTransfer({
|
||||||
|
addr: this.address,
|
||||||
|
amount: this.number,
|
||||||
|
transfer_password: this.password
|
||||||
|
}).then(res => {
|
||||||
|
uni.redirectTo({
|
||||||
|
url: './results?hash=' + res.hash + '&number=' + this.amount
|
||||||
|
})
|
||||||
|
}).catch(err => {
|
||||||
|
uni.showToast({
|
||||||
|
icon: 'none',
|
||||||
|
title: err.message
|
||||||
|
})
|
||||||
|
})
|
||||||
|
},
|
||||||
|
// 扫码
|
||||||
|
scanCode(){
|
||||||
|
uni.scanCode({
|
||||||
|
scanType: ['qrCode'],
|
||||||
|
success: res=> {
|
||||||
|
this.address = res.result
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.transfer{
|
||||||
|
background: $window-color;
|
||||||
|
min-height: 100vh;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
// 账户余额
|
||||||
|
.transfer-block{
|
||||||
|
background-color: window-color;
|
||||||
|
margin: $margin;
|
||||||
|
border-radius: $radius;
|
||||||
|
box-shadow: 0 0 4rpx 4rpx rgba($color: $text-color, $alpha: .02);
|
||||||
|
background-color: white;
|
||||||
|
padding: $padding $padding + 10;
|
||||||
|
.unit{
|
||||||
|
font-weight: bold;
|
||||||
|
font-size: $title-size + 10;
|
||||||
|
line-height: 90rpx;
|
||||||
|
color: $text-color;
|
||||||
|
}
|
||||||
|
.transfer-flex{
|
||||||
|
display: flex;
|
||||||
|
padding: $padding 0;
|
||||||
|
border-top: solid 1rpx $border-color;
|
||||||
|
.item{
|
||||||
|
width: 100%;
|
||||||
|
font-size: $title-size-m;
|
||||||
|
& > label{
|
||||||
|
color: $text-gray;
|
||||||
|
padding-right: $padding/2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// 提示信息
|
||||||
|
.sub-title{
|
||||||
|
color: $text-gray;
|
||||||
|
text-align: center;
|
||||||
|
margin: $margin*2 $margin $margin $margin;
|
||||||
|
font-size: $title-size-m;
|
||||||
|
}
|
||||||
|
// 转账信息
|
||||||
|
.password{
|
||||||
|
padding: 0 $padding;
|
||||||
|
.group{
|
||||||
|
margin-top: $margin;
|
||||||
|
border-radius: $radius;
|
||||||
|
box-shadow: 0 0 4rpx 4rpx rgba($color: $text-color, $alpha: .02);
|
||||||
|
background-color: white;
|
||||||
|
.inputs{
|
||||||
|
padding: $padding $padding + 10;
|
||||||
|
border-bottom: solid 1rpx $border-color;
|
||||||
|
&:last-child{
|
||||||
|
border-bottom: none;
|
||||||
|
}
|
||||||
|
label{
|
||||||
|
color: $text-gray;
|
||||||
|
font-size: $title-size-m;
|
||||||
|
}
|
||||||
|
input{
|
||||||
|
height: 70rpx;
|
||||||
|
line-height: 70rpx;
|
||||||
|
font-size: $title-size;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.input-scan{
|
||||||
|
position: relative;
|
||||||
|
padding-right: ($padding*2) + 70;
|
||||||
|
.input-scan-icon{
|
||||||
|
position: absolute;
|
||||||
|
bottom: $padding;
|
||||||
|
right: $padding;
|
||||||
|
height: 70rpx;
|
||||||
|
width: 70rpx;
|
||||||
|
line-height: 70rpx;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// 按钮
|
||||||
|
.buttons{
|
||||||
|
padding: $padding*2 $padding;
|
||||||
|
button{
|
||||||
|
height: 90rpx;
|
||||||
|
line-height: 90rpx;
|
||||||
|
background-color: $main-color;
|
||||||
|
border-radius: 45rpx;
|
||||||
|
color: white;
|
||||||
|
font-weight: bold;
|
||||||
|
font-size: $title-size;
|
||||||
|
&::after{
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@@ -13,6 +13,9 @@
|
|||||||
<input v-model="code" type="number" maxlength="4" placeholder="输入验证码">
|
<input v-model="code" type="number" maxlength="4" placeholder="输入验证码">
|
||||||
<button :disabled="getSms" size="mini" @click="getPhoneCode()">{{sendCode}}</button>
|
<button :disabled="getSms" size="mini" @click="getPhoneCode()">{{sendCode}}</button>
|
||||||
</view>
|
</view>
|
||||||
|
<view class="auth-input">
|
||||||
|
<input v-model="parentId" type="number" placeholder="输入邀请码">
|
||||||
|
</view>
|
||||||
<view class="auth-button">
|
<view class="auth-button">
|
||||||
<button @click="login('code')">登录</button>
|
<button @click="login('code')">登录</button>
|
||||||
</view>
|
</view>
|
||||||
@@ -36,6 +39,7 @@
|
|||||||
return {
|
return {
|
||||||
phone : '18245180131',
|
phone : '18245180131',
|
||||||
code : '',
|
code : '',
|
||||||
|
parentId: '',
|
||||||
getSms : false,
|
getSms : false,
|
||||||
sendCode: '获取验证码'
|
sendCode: '获取验证码'
|
||||||
};
|
};
|
||||||
@@ -83,10 +87,11 @@
|
|||||||
smsAuth({
|
smsAuth({
|
||||||
mobileNo : this.phone,
|
mobileNo : this.phone,
|
||||||
code : this.code,
|
code : this.code,
|
||||||
|
parent_id : this.parentId
|
||||||
}).then((res) => {
|
}).then((res) => {
|
||||||
this.$store.commit('setToken', res.token_type + ' ' + res.access_token);
|
this.$store.commit('setToken', res.token_type + ' ' + res.access_token);
|
||||||
this.$store.commit('setIsNew', res.is_new ? 0 : 1)
|
|
||||||
if(res.is_new){
|
if(res.is_new){
|
||||||
|
uni.setStorageSync('isnew', res.is_new ? 0 : 1)
|
||||||
this.$Router.replace({name: 'AuthRole'})
|
this.$Router.replace({name: 'AuthRole'})
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|||||||
193
pages/invitation/invitation.vue
Normal file
@@ -0,0 +1,193 @@
|
|||||||
|
|
||||||
|
<template>
|
||||||
|
<view class="invitation">
|
||||||
|
<view class="invitation-refund">
|
||||||
|
<view class="invitation-refund-btn" @click="onBack">
|
||||||
|
<uni-icons type="back" color="white" size="24"></uni-icons>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<image class="invitation-back" src="@/static/img/code_back.png" mode="aspectFill"></image>
|
||||||
|
<view class="invitation-content">
|
||||||
|
<view class="invitation-lay">
|
||||||
|
<image class="invitation-code" :src="code"></image>
|
||||||
|
<view class="invitation-text">
|
||||||
|
<view class="invitation-text-code" @click="copyInvite"><text>{{invite}}</text>点击复制</view>
|
||||||
|
<view class="invitation-text-sub">扫码下载共力生态App</view>
|
||||||
|
<view class="invitation-text-sub">邀请好友增加共力分增长</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<button class="invitation-btn" @click="onShare">分享邀请</button>
|
||||||
|
</view>
|
||||||
|
<!-- 分享 -->
|
||||||
|
<uni-popup ref="popupShare" type="share" background-color="#fff">
|
||||||
|
<uni-popup-share title="分享到" @select="select"></uni-popup-share>
|
||||||
|
</uni-popup>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { invitationCode } from '@/apis/interfaces/user.js'
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
invite: '',
|
||||||
|
code : '',
|
||||||
|
};
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
invitationCode().then(res => {
|
||||||
|
this.invite = res[0].invite
|
||||||
|
this.code = res[0].code
|
||||||
|
})
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
// 返回
|
||||||
|
onBack(){
|
||||||
|
this.$Router.back()
|
||||||
|
},
|
||||||
|
// 复制邀请码
|
||||||
|
copyInvite(){
|
||||||
|
uni.setClipboardData({
|
||||||
|
data: this.invite,
|
||||||
|
success() {
|
||||||
|
uni.showToast({
|
||||||
|
title: '邀请码已复制',
|
||||||
|
icon : 'none'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
// 分享
|
||||||
|
onShare(){
|
||||||
|
this.$refs.popupShare.open();
|
||||||
|
},
|
||||||
|
// 分享选项
|
||||||
|
select(e){
|
||||||
|
switch(e.item.name){
|
||||||
|
case 'wxchum':
|
||||||
|
uni.share({
|
||||||
|
provider: 'weixin',
|
||||||
|
scene : 'WXSceneSession',
|
||||||
|
type : 0,
|
||||||
|
href : 'https://www.baidu.com',
|
||||||
|
title : '共力生态',
|
||||||
|
summary : '共力生态 共力 共赢 共享 带你进入web3.0!',
|
||||||
|
imageUrl: 'https://gl-ecological.oss-cn-zhangjiakou.aliyuncs.com/images/2022/06/10/e763ae96ce9d0b4407b68e66963c7cb2.jpg',
|
||||||
|
fail(err) {
|
||||||
|
uni.showToast({
|
||||||
|
title: err.errMsg,
|
||||||
|
icon : 'none'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
})
|
||||||
|
break;
|
||||||
|
case 'wxcircle':
|
||||||
|
uni.share({
|
||||||
|
provider: 'weixin',
|
||||||
|
scene : 'WXSceneTimeline',
|
||||||
|
type : 0,
|
||||||
|
href : 'https://www.baidu.com',
|
||||||
|
title : '共力生态 共力 共赢 共享',
|
||||||
|
imageUrl: 'https://gl-ecological.oss-cn-zhangjiakou.aliyuncs.com/images/2022/06/10/e763ae96ce9d0b4407b68e66963c7cb2.jpg',
|
||||||
|
fail(err) {
|
||||||
|
uni.showToast({
|
||||||
|
title: err.errMsg,
|
||||||
|
icon : 'none'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
})
|
||||||
|
break;
|
||||||
|
case 'qq':
|
||||||
|
uni.showToast({
|
||||||
|
title: 'qq好友分享近期开放,敬请期待',
|
||||||
|
icon : 'none'
|
||||||
|
})
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss">
|
||||||
|
.invitation{
|
||||||
|
position: relative;
|
||||||
|
background: #1c2472;
|
||||||
|
min-height: 100vh;
|
||||||
|
.invitation-refund{
|
||||||
|
@extend .ios-top;
|
||||||
|
position: absolute;
|
||||||
|
top: 30rpx;
|
||||||
|
left: $margin*2;
|
||||||
|
z-index: 9;
|
||||||
|
.invitation-refund-btn{
|
||||||
|
border-radius: 50%;
|
||||||
|
line-height: 58rpx;
|
||||||
|
width: 58rpx;
|
||||||
|
height: 58rpx;
|
||||||
|
text-align: center;
|
||||||
|
font-weight: bold;
|
||||||
|
background: rgba(0, 0, 0, .5);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.invitation-back{
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.invitation-content{
|
||||||
|
padding: $padding*2;
|
||||||
|
position: absolute;
|
||||||
|
bottom: 5vh;
|
||||||
|
width: 100%;
|
||||||
|
box-sizing: border-box;
|
||||||
|
.invitation-lay{
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
justify-content: space-between;
|
||||||
|
align-items: center;
|
||||||
|
background: rgba(0, 0, 0, .5);
|
||||||
|
border-radius: $radius;
|
||||||
|
padding: $padding;
|
||||||
|
margin-bottom: $margin;
|
||||||
|
color: white;
|
||||||
|
.invitation-code{
|
||||||
|
width: 168rpx;
|
||||||
|
height: 168rpx;
|
||||||
|
background: white;
|
||||||
|
}
|
||||||
|
.invitation-text{
|
||||||
|
width: calc(100% - 198rpx);
|
||||||
|
.invitation-text-code{
|
||||||
|
font-size: 26rpx;
|
||||||
|
line-height: 50rpx;
|
||||||
|
text{
|
||||||
|
font-weight: bold;
|
||||||
|
font-size: 40rpx;
|
||||||
|
margin-right: 10rpx;
|
||||||
|
text-decoration: underline;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.invitation-text-sub{
|
||||||
|
font-size: 26rpx;
|
||||||
|
line-height: 50rpx;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.invitation-btn{
|
||||||
|
height: 90rpx;
|
||||||
|
line-height: 90rpx;
|
||||||
|
border-radius: 45rpx;
|
||||||
|
font-size: 32rpx;
|
||||||
|
font-weight: bold;
|
||||||
|
background: linear-gradient(to top left, #2b307f, #83a8de);
|
||||||
|
color: white;
|
||||||
|
&::after{
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
232
pages/life/capacity.vue
Normal file
@@ -0,0 +1,232 @@
|
|||||||
|
<template>
|
||||||
|
<view class="capacity">
|
||||||
|
<view class="capacity-title">共力分总产率/小时<text>{{baseHour}}GLF/h</text></view>
|
||||||
|
<view class="capacity-sbutitle">总产率=角色产率+团队产率+共建产率+共力值产率</view>
|
||||||
|
<view class="capacity-block">
|
||||||
|
<view class="capacity-block-title">
|
||||||
|
<view class="title">我的角色</view>
|
||||||
|
<view class="nickname">{{nickname}}</view>
|
||||||
|
</view>
|
||||||
|
<view class="capacity-block-glf">{{identityText}}:{{base}}GLF/h</view>
|
||||||
|
</view>
|
||||||
|
<view class="capacity-block">
|
||||||
|
<view class="capacity-block-title">
|
||||||
|
<view class="title">成员产率({{group.effect}}/{{group.count}})<text>{{group.capacity}}GLF/h</text></view>
|
||||||
|
<view class="more" @click="onInvitation">邀请更多好友</view>
|
||||||
|
</view>
|
||||||
|
<view class="capacity-block-table">
|
||||||
|
<view class="header">
|
||||||
|
<view class="flex-item">家族成员产率</view>
|
||||||
|
</view>
|
||||||
|
<view class="flex">
|
||||||
|
<view class="flex-item">{{recommend.vip}}人在线(会员)</view>
|
||||||
|
<view class="flex-item">{{recommend.vip_text}}</view>
|
||||||
|
</view>
|
||||||
|
<view class="flex">
|
||||||
|
<view class="flex-item">{{recommend.novip}}人在线(普通用户)</view>
|
||||||
|
<view class="flex-item">{{recommend.novip_text}}</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view class="capacity-block-table">
|
||||||
|
<view class="header">
|
||||||
|
<view class="flex-item">伙伴成员</view>
|
||||||
|
</view>
|
||||||
|
<view class="flex">
|
||||||
|
<view class="flex-item">{{partner.vip}}人在线(会员)</view>
|
||||||
|
<view class="flex-item">{{partner.vip_text}}</view>
|
||||||
|
</view>
|
||||||
|
<view class="flex">
|
||||||
|
<view class="flex-item">{{partner.novip}}人在线(会员)</view>
|
||||||
|
<view class="flex-item">{{partner.novip_text}}</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view class="capacity-block">
|
||||||
|
<view class="capacity-block-title">
|
||||||
|
<view class="title">共建产率<text>0GLF/h</text></view>
|
||||||
|
<view class="subtitle">-/-</view>
|
||||||
|
</view>
|
||||||
|
<view class="capacity-block-text">产品当前设置共建者每日可以通过看广告获得共建值(暂未开放,敬请期待)</view>
|
||||||
|
</view>
|
||||||
|
<view class="capacity-block">
|
||||||
|
<view class="capacity-block-title">
|
||||||
|
<view class="title">共力值产率<text>0GLF/h</text></view>
|
||||||
|
<view class="subtitle">-/-</view>
|
||||||
|
</view>
|
||||||
|
<view class="capacity-block-text">根据正常用户的使用在平台的使用习惯,购物等行为产生对应共力值(暂未开放,敬请期待)</view>
|
||||||
|
</view>
|
||||||
|
<view class="capacity-hint">
|
||||||
|
PS产品设置每100个共力值或共建值可以加速5%的角色产率;
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { glz } from '@/apis/interfaces/life.js'
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
identityText: '普通用户',
|
||||||
|
baseHour : 0,
|
||||||
|
base : 0,
|
||||||
|
group : {
|
||||||
|
count : 0,
|
||||||
|
effect : 0,
|
||||||
|
capacity: 0,
|
||||||
|
},
|
||||||
|
nickname : '',
|
||||||
|
recommend : {
|
||||||
|
vip : '-',
|
||||||
|
vip_count : '-',
|
||||||
|
novip : '-',
|
||||||
|
novip_count : '-',
|
||||||
|
vip_text : '-',
|
||||||
|
novip_text : '-',
|
||||||
|
},
|
||||||
|
partner : {
|
||||||
|
vip : '-',
|
||||||
|
vip_count : '-',
|
||||||
|
novip : '-',
|
||||||
|
novip_count : '-',
|
||||||
|
vip_text : '-',
|
||||||
|
novip_text : '-',
|
||||||
|
}
|
||||||
|
};
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
uni.showLoading({
|
||||||
|
title: '加载中...'
|
||||||
|
})
|
||||||
|
glz().then(res => {
|
||||||
|
this.nickname = res.nickname
|
||||||
|
this.identityText = res.identity_text
|
||||||
|
this.baseHour = res.base_hour
|
||||||
|
this.base = res.base
|
||||||
|
this.group = res.group
|
||||||
|
this.recommend = res.recommend
|
||||||
|
this.partner = res.partner
|
||||||
|
uni.setNavigationBarTitle({
|
||||||
|
title: res.glz + 'GLF'
|
||||||
|
})
|
||||||
|
uni.hideLoading()
|
||||||
|
}).catch(err => {
|
||||||
|
uni.showToast({
|
||||||
|
title: err.message,
|
||||||
|
icon : 'none'
|
||||||
|
})
|
||||||
|
})
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
onInvitation(){
|
||||||
|
this.$Router.push({name: 'Invitation'})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss">
|
||||||
|
.capacity{
|
||||||
|
background: $window-color;
|
||||||
|
min-height: 100vh;
|
||||||
|
padding: $padding;
|
||||||
|
box-sizing: border-box;
|
||||||
|
&-hint{
|
||||||
|
font-size: 26rpx;
|
||||||
|
color: gray;
|
||||||
|
line-height: 40rpx;
|
||||||
|
padding: $padding 0;
|
||||||
|
}
|
||||||
|
&-title{
|
||||||
|
font-size: 38rpx;
|
||||||
|
font-weight: bold;
|
||||||
|
line-height: 60rpx;
|
||||||
|
text{
|
||||||
|
margin-left: 10rpx;
|
||||||
|
color: $main-color;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
&-sbutitle{
|
||||||
|
font-size: 26rpx;
|
||||||
|
line-height: 40rpx;
|
||||||
|
}
|
||||||
|
&-block{
|
||||||
|
background: white;
|
||||||
|
margin-top: $margin;
|
||||||
|
border-radius: $radius;
|
||||||
|
padding: $padding;
|
||||||
|
&-glf{
|
||||||
|
color: $main-color;
|
||||||
|
font-size: 30rpx;
|
||||||
|
}
|
||||||
|
&-title{
|
||||||
|
font-weight: bold;
|
||||||
|
font-size: 34rpx;
|
||||||
|
padding-bottom: 30rpx;
|
||||||
|
line-height: 60rpx;
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
.title{
|
||||||
|
text{
|
||||||
|
color: $main-color;
|
||||||
|
font-weight: normal;
|
||||||
|
padding-left: 10rpx;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.more{
|
||||||
|
background: $main-color;
|
||||||
|
color: white;
|
||||||
|
font-weight: bold;
|
||||||
|
font-size: 28rpx;
|
||||||
|
border-radius: 25rpx;
|
||||||
|
line-height: 60rpx;
|
||||||
|
width: 230rpx;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
.subtitle{
|
||||||
|
font-weight: normal;
|
||||||
|
font-size: 24rpx;
|
||||||
|
color: $main-color;
|
||||||
|
}
|
||||||
|
.nickname{
|
||||||
|
color: gray;
|
||||||
|
font-size: 30rpx;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
&-text{
|
||||||
|
font-size: 28rpx;
|
||||||
|
color: gray;
|
||||||
|
line-height: 40rpx;
|
||||||
|
}
|
||||||
|
&-table{
|
||||||
|
border:solid 1px $border-color;
|
||||||
|
margin-bottom: 20rpx;
|
||||||
|
&:last-child{
|
||||||
|
margin-top: 0;
|
||||||
|
}
|
||||||
|
.header{
|
||||||
|
background: $border-color;
|
||||||
|
line-height: 50rpx;
|
||||||
|
padding: 0 15rpx;
|
||||||
|
font-size: 26rpx;
|
||||||
|
color: gray;
|
||||||
|
}
|
||||||
|
.flex{
|
||||||
|
display: flex;
|
||||||
|
border-top: solid 1rpx $border-color;
|
||||||
|
color: gray;
|
||||||
|
.flex-item{
|
||||||
|
width: 50%;
|
||||||
|
box-sizing: border-box;
|
||||||
|
line-height: 50rpx;
|
||||||
|
padding: 0 15rpx;
|
||||||
|
font-size: 24rpx;
|
||||||
|
&:first-child{
|
||||||
|
border-right: solid 1rpx $border-color;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@@ -3,11 +3,28 @@
|
|||||||
<!-- 账户信息 -->
|
<!-- 账户信息 -->
|
||||||
<view class="life-header">
|
<view class="life-header">
|
||||||
<view class="life-header-flex">
|
<view class="life-header-flex">
|
||||||
<view class="life-header-item">0.00共力值</view>
|
<view class="life-header-item">{{glz}}<text>GLF</text></view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<!-- 共力人生 -->
|
<!-- 共力人生 -->
|
||||||
<view class="life-cover">
|
<view class="life-cover">
|
||||||
|
<view class="life-sign">
|
||||||
|
<view class="life-sign-icon number-float" @click="onSign">
|
||||||
|
<view class="life-sign-icon-text">{{isSign ? 'GLF': '签到'}}</view>
|
||||||
|
<image class="life-sign-icon-image" :src="require('@/static/icon/sign_btn.png')" alt="签到"></image>
|
||||||
|
</view>
|
||||||
|
<view class="life-sign-num">0</view>
|
||||||
|
<view class="life-sign-unit">GLF/h</view>
|
||||||
|
<view class="life-sign-time">
|
||||||
|
<u-count-down :time="nextSignAt" format="HH:mm:ss" @change="TimeDown">
|
||||||
|
<view class="time">
|
||||||
|
<text class="time__item">{{ timeData.hours > 9 ? timeData.hours: '0'+timeData.hours}}:</text>
|
||||||
|
<text class="time__item">{{ timeData.minutes > 9 ? timeData.minutes: '0'+timeData.minutes }}:</text>
|
||||||
|
<text class="time__item">{{ timeData.seconds > 9 ? timeData.seconds: '0'+timeData.seconds }}</text>
|
||||||
|
</view>
|
||||||
|
</u-count-down>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
<image class="life-cover-back" :src="require('@/static/life/back.png')"></image>
|
<image class="life-cover-back" :src="require('@/static/life/back.png')"></image>
|
||||||
<view class="life-role">
|
<view class="life-role">
|
||||||
<image class="life-role-src" :src="figurePath" mode="widthFix"/>
|
<image class="life-role-src" :src="figurePath" mode="widthFix"/>
|
||||||
@@ -55,7 +72,7 @@
|
|||||||
<view class="other-subtitle">{{message > 0 ? message + '条未读消息': '暂无消息'}}</view>
|
<view class="other-subtitle">{{message > 0 ? message + '条未读消息': '暂无消息'}}</view>
|
||||||
<image class="other-back" src="../../static/life/icon_07.png"></image>
|
<image class="other-back" src="../../static/life/icon_07.png"></image>
|
||||||
</view>
|
</view>
|
||||||
<view class="life-flex-item other">
|
<view class="life-flex-item other" @click="onNav({name: 'Invitation'}, '')">
|
||||||
<view class="other-title">
|
<view class="other-title">
|
||||||
<image src="../../static/life/icon_03.png" mode="widthFix"></image>
|
<image src="../../static/life/icon_03.png" mode="widthFix"></image>
|
||||||
邀请朋友
|
邀请朋友
|
||||||
@@ -84,7 +101,10 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import { life } from '@/apis/interfaces/life.js'
|
import { life, sign } from '@/apis/interfaces/life.js'
|
||||||
|
|
||||||
|
var account;
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
@@ -103,18 +123,72 @@
|
|||||||
init: 0,
|
init: 0,
|
||||||
pay: 0,
|
pay: 0,
|
||||||
delivered: 0
|
delivered: 0
|
||||||
}
|
},
|
||||||
|
nextSignAt : 0,
|
||||||
|
glz : 0,
|
||||||
|
base_hour : 0,
|
||||||
|
base_seconds: 0,
|
||||||
|
timeData : {},
|
||||||
|
isSign : false,
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
created() {
|
onShow() {
|
||||||
|
this.getLife()
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
// 倒计时
|
||||||
|
TimeDown(e){
|
||||||
|
this.timeData = e
|
||||||
|
},
|
||||||
// 共力人生
|
// 共力人生
|
||||||
|
getLife(){
|
||||||
life().then(res => {
|
life().then(res => {
|
||||||
|
this.glz = res.account.glz
|
||||||
|
this.base_hour = res.account.base_hour
|
||||||
|
this.base_seconds = res.account.base_seconds
|
||||||
|
this.nextSignAt = res.next_sign_at * 1000
|
||||||
this.nickname = res.nickname
|
this.nickname = res.nickname
|
||||||
this.figurePath = res.figure_path
|
this.figurePath = res.figure_path
|
||||||
this.identity = res.identity
|
this.identity = res.identity
|
||||||
this.children = res.children
|
this.children = res.children
|
||||||
this.message = res.message
|
this.message = res.message
|
||||||
this.order = res.order
|
this.order = res.order
|
||||||
|
this.isSign = res.is_sign
|
||||||
|
if(res.is_sign){
|
||||||
|
this.outTime()
|
||||||
|
}
|
||||||
|
}).catch(err => {
|
||||||
|
uni.showToast({
|
||||||
|
title: err.message,
|
||||||
|
icon : 'none'
|
||||||
|
})
|
||||||
|
})
|
||||||
|
},
|
||||||
|
// 计时器
|
||||||
|
outTime(){
|
||||||
|
account = setInterval(() =>{
|
||||||
|
let newGlz = (Number(this.glz) + this.base_seconds)
|
||||||
|
this.glz = newGlz.toFixed(4)
|
||||||
|
}, 1000)
|
||||||
|
},
|
||||||
|
// 签到
|
||||||
|
onSign(){
|
||||||
|
|
||||||
|
console.log(this.isSign)
|
||||||
|
|
||||||
|
if(this.isSign){
|
||||||
|
this.$Router.push({name: 'Capacity'})
|
||||||
|
return
|
||||||
|
}
|
||||||
|
uni.showLoading({
|
||||||
|
title: '签到中..'
|
||||||
|
})
|
||||||
|
sign().then(res => {
|
||||||
|
uni.showToast({
|
||||||
|
title: '签到成功',
|
||||||
|
icon : 'none'
|
||||||
|
})
|
||||||
|
this.getLife()
|
||||||
}).catch(err => {
|
}).catch(err => {
|
||||||
uni.showToast({
|
uni.showToast({
|
||||||
title: err.message,
|
title: err.message,
|
||||||
@@ -122,7 +196,6 @@
|
|||||||
})
|
})
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
methods: {
|
|
||||||
// 我的订单
|
// 我的订单
|
||||||
onNav(name, type){
|
onNav(name, type){
|
||||||
if(type){
|
if(type){
|
||||||
@@ -138,10 +211,31 @@
|
|||||||
icon : 'none'
|
icon : 'none'
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
onHide() {
|
||||||
|
clearInterval(account)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
/* 气泡漂浮 */
|
||||||
|
.number-float{
|
||||||
|
animation: 4s octfloat infinite;
|
||||||
|
}
|
||||||
|
@keyframes octfloat{
|
||||||
|
0%{
|
||||||
|
margin-top: 0;
|
||||||
|
}
|
||||||
|
50%{
|
||||||
|
margin-top: 15rpx;
|
||||||
|
}
|
||||||
|
100%{
|
||||||
|
margin-top: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
.life{
|
.life{
|
||||||
min-height: 100vh;
|
min-height: 100vh;
|
||||||
@@ -347,7 +441,13 @@
|
|||||||
border-radius: 35rpx;
|
border-radius: 35rpx;
|
||||||
padding: 0 20rpx;
|
padding: 0 20rpx;
|
||||||
margin-right: 20rpx;
|
margin-right: 20rpx;
|
||||||
font-size: 28rpx;
|
font-size: 42rpx;
|
||||||
|
font-weight: bold;
|
||||||
|
text{
|
||||||
|
font-weight: normal;
|
||||||
|
padding-left: 5rpx;
|
||||||
|
font-size: 70%;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -357,6 +457,64 @@
|
|||||||
width: 100%;
|
width: 100%;
|
||||||
padding-top: 134%;
|
padding-top: 134%;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
|
.life-sign{
|
||||||
|
position: absolute;
|
||||||
|
top: 15vh;
|
||||||
|
right: $margin * 2;
|
||||||
|
z-index: 999;
|
||||||
|
text-align: center;
|
||||||
|
.life-sign-icon{
|
||||||
|
display: inline-block;
|
||||||
|
width: 98rpx;
|
||||||
|
height: 98rpx;
|
||||||
|
border-radius: 50%;
|
||||||
|
position: relative;
|
||||||
|
.life-sign-icon-image{
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
width: 98rpx;
|
||||||
|
height: 98rpx;
|
||||||
|
}
|
||||||
|
.life-sign-icon-text{
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
width: 98rpx;
|
||||||
|
height: 98rpx;
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-around;
|
||||||
|
align-items: center;
|
||||||
|
z-index: 1;
|
||||||
|
font-size: 28rpx;
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.life-sign-num{
|
||||||
|
color: #f79824;
|
||||||
|
font-size: 36rpx;
|
||||||
|
line-height: 30rpx;
|
||||||
|
height: 30rpx;
|
||||||
|
text-shadow: 0 2rpx 2rpx rgba(0, 0, 0, .3);
|
||||||
|
}
|
||||||
|
.life-sign-unit{
|
||||||
|
font-weight: bold;
|
||||||
|
color: #f79824;
|
||||||
|
font-size: 30rpx;
|
||||||
|
line-height: 40rpx;
|
||||||
|
text-shadow: 0 2rpx 2rpx rgba(0, 0, 0, .3);
|
||||||
|
}
|
||||||
|
.life-sign-time{
|
||||||
|
.time{
|
||||||
|
@include flex;
|
||||||
|
align-items: center;
|
||||||
|
&__item {
|
||||||
|
color: #333;
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
.life-cover-back{
|
.life-cover-back{
|
||||||
position: absolute;
|
position: absolute;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
|
|||||||
@@ -47,12 +47,12 @@
|
|||||||
type: "paid",
|
type: "paid",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "待签收",
|
name: "待收货",
|
||||||
type: "delivered",
|
type: "delivered",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "已完成",
|
name: " 已签收",
|
||||||
type: "completed",
|
type: "signed",
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
index: '0',
|
index: '0',
|
||||||
@@ -187,7 +187,7 @@
|
|||||||
this.$Router.push({
|
this.$Router.push({
|
||||||
name: 'OrderLogistics',
|
name: 'OrderLogistics',
|
||||||
params: {
|
params: {
|
||||||
orderNo
|
orderNo: orderNo,
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
break;
|
break;
|
||||||
@@ -259,7 +259,7 @@
|
|||||||
})
|
})
|
||||||
break;
|
break;
|
||||||
case 'shopsDetail':
|
case 'shopsDetail':
|
||||||
this.$Router.push({ name: 'ShopDetail', params: {shopId: shopId}})
|
this.$Router.push({ name: 'ShopDetail', params: {ShopId: shopId}})
|
||||||
break;
|
break;
|
||||||
case 'goodsDetail':
|
case 'goodsDetail':
|
||||||
this.$Router.push({ name: 'StoreGoods', params: {id: goodsId}})
|
this.$Router.push({ name: 'StoreGoods', params: {id: goodsId}})
|
||||||
@@ -325,4 +325,5 @@
|
|||||||
.pages-load {
|
.pages-load {
|
||||||
padding-bottom: $padding;
|
padding-bottom: $padding;
|
||||||
}
|
}
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -119,7 +119,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.afterSales {
|
.afterSales {
|
||||||
background-color: #f9f9f9;
|
background-color: $window-color;
|
||||||
min-height: 100vh;
|
min-height: 100vh;
|
||||||
|
|
||||||
.service-content {
|
.service-content {
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
<!-- 订单列表 -->
|
<!-- 订单列表 -->
|
||||||
<view class="order--content" :class="[true ? 'chunk': 'broad']" v-for="(item, arrayIndex) in array"
|
<view class="order--content" :class="[true ? 'chunk': 'broad']" v-for="(item, arrayIndex) in array"
|
||||||
:key="arrayIndex">
|
:key="arrayIndex">
|
||||||
<view class="order--group--header" @click=" $Router.push({ name: 'ShopDetail', params: {shopId: item.shop.shop_id}})">
|
<view class="order--group--header" @click=" $Router.push({ name: 'ShopDetail', params: {ShopId: item.shop.shop_id}})">
|
||||||
<image class="logo" v-if="item.shop.cover != ''" :src="item.shop.cover" mode="aspectFill"></image>
|
<image class="logo" v-if="item.shop.cover != ''" :src="item.shop.cover" mode="aspectFill"></image>
|
||||||
<view class="store">
|
<view class="store">
|
||||||
{{item.shop.name}}
|
{{item.shop.name}}
|
||||||
|
|||||||
@@ -25,12 +25,12 @@
|
|||||||
</view>
|
</view>
|
||||||
|
|
||||||
<!-- 店铺信息 -->
|
<!-- 店铺信息 -->
|
||||||
<view class="shopInfo" @click="toShop(2)" v-if="goods.shop">
|
<view class="shopInfo" @click="toShop(goods.shop.shop_id)" v-if="goods.shop">
|
||||||
<view class="shopInfo-title-left">
|
<view class="shopInfo-title-left">
|
||||||
<image class="shop-logo" :src="goods.shop.cover" mode="aspectFill" />
|
<image class="shop-logo" :src="goods.shop.cover" mode="aspectFill" />
|
||||||
<view class="shop-title">
|
<view class="shop-title">
|
||||||
<view class="shop-titl" >{{goods.shop.name}}</view>
|
<view class="shop-titl" >{{goods.shop.name}}</view>
|
||||||
<view> 商品质量:<span class='no'>5.0</span> <text style="padding-left: 20rpx;">服务态度:<span class='no'>5.0</span></text> </view>
|
<view> 店铺评分:<span class='no'>5.0</span> <text style="padding-left: 20rpx;">服务态度:<span class='no'>5.0</span></text> </view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<view class="shopInfo-title-right" >全部商品 {{goods.shop.goods_count || 0}} <uni-icons type="right" color="grey"/></view>
|
<view class="shopInfo-title-right" >全部商品 {{goods.shop.goods_count || 0}} <uni-icons type="right" color="grey"/></view>
|
||||||
@@ -45,7 +45,7 @@
|
|||||||
</view>
|
</view>
|
||||||
<!-- 立即购买 -->
|
<!-- 立即购买 -->
|
||||||
<view class="footer">
|
<view class="footer">
|
||||||
<view @click="toShop(2)" class=" shop"><uni-icons type="shop" size="26" color="grey"/>店铺</view>
|
<view @click="toShop(goods.shop.shop_id)" class=" shop"><uni-icons type="shop" size="26" color="grey"/>店铺</view>
|
||||||
<button type="default" hover-class="none" @click="buy">立即购买</button>
|
<button type="default" hover-class="none" @click="buy">立即购买</button>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
@@ -96,7 +96,7 @@
|
|||||||
this.$Router.push({
|
this.$Router.push({
|
||||||
name: 'ShopDetail',
|
name: 'ShopDetail',
|
||||||
params: {
|
params: {
|
||||||
shopId: id
|
ShopId: id
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,6 +15,7 @@
|
|||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
<!-- 健康产品分类 -->
|
<!-- 健康产品分类 -->
|
||||||
<u-scroll-list class="classify-box" indicatorColor="#ddd" indicatorActiveColor="#34CE98">
|
<u-scroll-list class="classify-box" indicatorColor="#ddd" indicatorActiveColor="#34CE98">
|
||||||
<view v-for="(item, index) in goodTabs" :key="index" class="classify-item" @click="$Router.push({name: 'StoreList', params: {id: item.category_id, title: item.name}})">
|
<view v-for="(item, index) in goodTabs" :key="index" class="classify-item" @click="$Router.push({name: 'StoreList', params: {id: item.category_id, title: item.name}})">
|
||||||
@@ -24,6 +25,7 @@
|
|||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</u-scroll-list>
|
</u-scroll-list>
|
||||||
|
|
||||||
<!-- 每日上新 -->
|
<!-- 每日上新 -->
|
||||||
<view class="new-box">
|
<view class="new-box">
|
||||||
<view class="title">上新精选<text class="title-des"> | 精品上新新品推荐</text></view>
|
<view class="title">上新精选<text class="title-des"> | 精品上新新品推荐</text></view>
|
||||||
@@ -43,9 +45,9 @@
|
|||||||
<view class="title">推荐店铺 <view class="more"><text class="title-des"> | 您身边的优质体验店</text> <text class="more-txt" @click="$Router.push({name: 'ShopList'})">更多></text></view></view>
|
<view class="title">推荐店铺 <view class="more"><text class="title-des"> | 您身边的优质体验店</text> <text class="more-txt" @click="$Router.push({name: 'ShopList'})">更多></text></view></view>
|
||||||
<view class="card-box">
|
<view class="card-box">
|
||||||
<block v-for="(item, index) in shops" :key="index">
|
<block v-for="(item, index) in shops" :key="index">
|
||||||
<view class="card-box-item" style="{'backgrond': #FFF}" v-if="index<4" @click="$Router.push({name: 'ShopDetail', params: {id: item.shop_id}})">
|
<view class="card-box-item" style="{'backgrond': #FFF}" v-if="index < 4" @click="$Router.push({name: 'ShopDetail', params: {ShopId: item.shop_id}})">
|
||||||
<view class="card-title">{{item.name}}</view>
|
<view class="card-title">{{item.name}}</view>
|
||||||
<view class="card-subtitle">距离1.5M</view>
|
<view class="card-subtitle"> </view>
|
||||||
<view class="card-btn">前往体验</view>
|
<view class="card-btn">前往体验</view>
|
||||||
<image class="card-cover" :src="item.cover" mode="aspectFill" />
|
<image class="card-cover" :src="item.cover" mode="aspectFill" />
|
||||||
</view>
|
</view>
|
||||||
@@ -64,7 +66,6 @@
|
|||||||
</block>
|
</block>
|
||||||
</view> -->
|
</view> -->
|
||||||
|
|
||||||
|
|
||||||
<!-- goods -->
|
<!-- goods -->
|
||||||
<view class="goods-box">
|
<view class="goods-box">
|
||||||
<oct-goods
|
<oct-goods
|
||||||
@@ -98,7 +99,6 @@
|
|||||||
methods:{
|
methods:{
|
||||||
getMall(){
|
getMall(){
|
||||||
mall().then(res => {
|
mall().then(res => {
|
||||||
console.log(res);
|
|
||||||
this.banners = res.banners
|
this.banners = res.banners
|
||||||
this.goodsArr = res.goods
|
this.goodsArr = res.goods
|
||||||
this.newGood = res.news
|
this.newGood = res.news
|
||||||
@@ -188,7 +188,8 @@
|
|||||||
.card-subtitle{
|
.card-subtitle{
|
||||||
font-size: 20rpx;
|
font-size: 20rpx;
|
||||||
color: $text-gray;
|
color: $text-gray;
|
||||||
line-height: 40rpx;
|
// line-height: 40rpx;
|
||||||
|
min-height: 20rpx;
|
||||||
@extend .nowrap;
|
@extend .nowrap;
|
||||||
}
|
}
|
||||||
.card-cover{
|
.card-cover{
|
||||||
|
|||||||
@@ -9,18 +9,15 @@
|
|||||||
</view>
|
</view>
|
||||||
<view class="shopInfo">
|
<view class="shopInfo">
|
||||||
<view class="shopInfo-title-left">
|
<view class="shopInfo-title-left">
|
||||||
<image class="shop-logo" src="/static/img/house_back.jpg" mode="aspectFill" />
|
<image class="shop-logo" :src="logo" mode="aspectFill" />
|
||||||
<view class="shop-title">
|
<view class="shop-title">
|
||||||
<view class="shop-titl">三只松鼠旗舰店</view>
|
<view class="shop-titl">{{name}}</view>
|
||||||
<view> 商品质量:<span class='no'>5.0</span> <text style="padding-left: 20rpx;">服务态度:<span
|
<view>店铺评分:<span class='no'>5.0</span> 服务态度 :<span class='no'>5.0</span></view>
|
||||||
class='no'>5.0</span></text> </view>
|
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<view class="shopInfo-title-right"> +关注 </view>
|
<!-- <view class="shopInfo-title-right"> +关注 </view> -->
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
<view class="content">
|
<view class="content">
|
||||||
<view class="left">
|
<view class="left">
|
||||||
<scroll-view scroll-y="true" class="scroll-view-left">
|
<scroll-view scroll-y="true" class="scroll-view-left">
|
||||||
@@ -32,7 +29,9 @@
|
|||||||
</view>
|
</view>
|
||||||
<view class="right">
|
<view class="right">
|
||||||
<scroll-view scroll-y="true" class="scroll-view-right">
|
<scroll-view scroll-y="true" class="scroll-view-right">
|
||||||
<view class="goods-item" v-for="(item,index) in goods" :key="index" @click="onGoods(item.goods_id)">
|
<block v-if="goods.length > 0">
|
||||||
|
<view class="goods-item" v-for="(item,index) in goods" :key="index"
|
||||||
|
@click="onGoods(item.goods_id)">
|
||||||
<image :src="item.cover" mode="aspectFill" class="good-img" />
|
<image :src="item.cover" mode="aspectFill" class="good-img" />
|
||||||
<view class="item--content">
|
<view class="item--content">
|
||||||
<view class="title">{{item.name}}</view>
|
<view class="title">{{item.name}}</view>
|
||||||
@@ -45,6 +44,13 @@
|
|||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
|
</block>
|
||||||
|
<block v-else>
|
||||||
|
<view class="vertical pages-empty">
|
||||||
|
<u-empty icon="http://cdn.uviewui.com/uview/empty/list.png" textColor="#999" text="暂无相关商品">
|
||||||
|
</u-empty>
|
||||||
|
</view>
|
||||||
|
</block>
|
||||||
</scroll-view>
|
</scroll-view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
@@ -52,266 +58,62 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
import {
|
||||||
|
shopsDetail,
|
||||||
|
shopsGoods
|
||||||
|
} from "@/apis/interfaces/store"
|
||||||
export default {
|
export default {
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
category_id: 1,
|
name : '',
|
||||||
classify: [{
|
logo : '',
|
||||||
category_id: 1,
|
category_id : '',
|
||||||
name: "全部商品",
|
classify : [],
|
||||||
cover: ""
|
goods : [],
|
||||||
}, {
|
pages : {}
|
||||||
category_id: 2,
|
|
||||||
name: "面部护理",
|
|
||||||
cover: ""
|
|
||||||
}, {
|
|
||||||
category_id: 3,
|
|
||||||
name: "香水彩妆",
|
|
||||||
cover: ""
|
|
||||||
}, {
|
|
||||||
category_id: 4,
|
|
||||||
name: "男装男鞋",
|
|
||||||
cover: ""
|
|
||||||
}, {
|
|
||||||
category_id: 5,
|
|
||||||
name: "儿童用品",
|
|
||||||
cover: ""
|
|
||||||
}],
|
|
||||||
goods: [{
|
|
||||||
"goods_id": 70,
|
|
||||||
"shop": {
|
|
||||||
"shop_id": 1,
|
|
||||||
"name": "平台自营店铺",
|
|
||||||
"cover": "",
|
|
||||||
"is_self": true
|
|
||||||
},
|
|
||||||
"is_self": true,
|
|
||||||
"name": "一口爆浆冰皮榴莲泡泡",
|
|
||||||
"description": "专注冰皮,苏丹王榴莲",
|
|
||||||
"cover": "http://storage.zh.shangkelian.cn/images/2022/01/11/ccd654bda2e3c95e190e941209e50c62.png",
|
|
||||||
"tags": [],
|
|
||||||
"original_price": 111,
|
|
||||||
"price": {
|
|
||||||
"show": "100",
|
|
||||||
"score": 1,
|
|
||||||
"price_min": 100,
|
|
||||||
"price_max": 100
|
|
||||||
},
|
|
||||||
"clicks": 0,
|
|
||||||
"sales": 3253
|
|
||||||
}, {
|
|
||||||
"goods_id": 56,
|
|
||||||
"shop": {
|
|
||||||
"shop_id": 1,
|
|
||||||
"name": "平台自营店铺",
|
|
||||||
"cover": "",
|
|
||||||
"is_self": true
|
|
||||||
},
|
|
||||||
"is_self": true,
|
|
||||||
"name": "铜锣烧蛋糕",
|
|
||||||
"description": "口感丰富,悠闲小食",
|
|
||||||
"cover": "http://storage.zh.shangkelian.cn/images/2022/01/11/37ecc570f9d7ad929a693d24118a0311.png",
|
|
||||||
"tags": [],
|
|
||||||
"original_price": 155,
|
|
||||||
"price": {
|
|
||||||
"show": "100",
|
|
||||||
"score": 1,
|
|
||||||
"price_min": 100,
|
|
||||||
"price_max": 100
|
|
||||||
},
|
|
||||||
"clicks": 0,
|
|
||||||
"sales": 7394
|
|
||||||
}, {
|
|
||||||
"goods_id": 54,
|
|
||||||
"shop": {
|
|
||||||
"shop_id": 1,
|
|
||||||
"name": "平台自营店铺",
|
|
||||||
"cover": "",
|
|
||||||
"is_self": true
|
|
||||||
},
|
|
||||||
"is_self": true,
|
|
||||||
"name": "雪麸蛋糕 香蕉牛奶风味",
|
|
||||||
"description": "北海道牛奶风味",
|
|
||||||
"cover": "http://storage.zh.shangkelian.cn/images/2022/01/11/9093c59ea5d513008926ac4233c20992.png",
|
|
||||||
"tags": [],
|
|
||||||
"original_price": 222,
|
|
||||||
"price": {
|
|
||||||
"show": "111",
|
|
||||||
"score": 1,
|
|
||||||
"price_min": 111,
|
|
||||||
"price_max": 111
|
|
||||||
},
|
|
||||||
"clicks": 1,
|
|
||||||
"sales": 202
|
|
||||||
}, {
|
|
||||||
"goods_id": 37,
|
|
||||||
"shop": {
|
|
||||||
"shop_id": 1,
|
|
||||||
"name": "平台自营店铺",
|
|
||||||
"cover": "",
|
|
||||||
"is_self": true
|
|
||||||
},
|
|
||||||
"is_self": true,
|
|
||||||
"name": "澳大利亚深海鱼油胶囊",
|
|
||||||
"description": "无腥味工艺,呵护全家健康",
|
|
||||||
"cover": "http://storage.zh.shangkelian.cn/images/2022/01/07/af4e0bab7e621d2bd6f1cb7052f1eb71.png",
|
|
||||||
"tags": [],
|
|
||||||
"original_price": 188,
|
|
||||||
"price": {
|
|
||||||
"show": "100",
|
|
||||||
"score": 1,
|
|
||||||
"price_min": 100,
|
|
||||||
"price_max": 100
|
|
||||||
},
|
|
||||||
"clicks": 2,
|
|
||||||
"sales": 5538
|
|
||||||
}, {
|
|
||||||
"goods_id": 28,
|
|
||||||
"shop": {
|
|
||||||
"shop_id": 1,
|
|
||||||
"name": "平台自营店铺",
|
|
||||||
"cover": "",
|
|
||||||
"is_self": true
|
|
||||||
},
|
|
||||||
"is_self": true,
|
|
||||||
"name": "冰淇淋威化饼干",
|
|
||||||
"description": "浓香醇厚,微甜不腻",
|
|
||||||
"cover": "http://storage.zh.shangkelian.cn/images/2022/01/06/f01d2ec7e73dff9371b71892957d85f0.png",
|
|
||||||
"tags": [],
|
|
||||||
"original_price": 155,
|
|
||||||
"price": {
|
|
||||||
"show": "111",
|
|
||||||
"score": 1,
|
|
||||||
"price_min": 111,
|
|
||||||
"price_max": 111
|
|
||||||
},
|
|
||||||
"clicks": 0,
|
|
||||||
"sales": 2707
|
|
||||||
}, {
|
|
||||||
"goods_id": 33,
|
|
||||||
"shop": {
|
|
||||||
"shop_id": 1,
|
|
||||||
"name": "平台自营店铺",
|
|
||||||
"cover": "",
|
|
||||||
"is_self": true
|
|
||||||
},
|
|
||||||
"is_self": true,
|
|
||||||
"name": "麦饭石天然矿泉水",
|
|
||||||
"description": "优选产地,多种矿物质",
|
|
||||||
"cover": "http://storage.zh.shangkelian.cn/images/2022/01/06/770afc8c293ff493c35d9a98dc3dbe97.png",
|
|
||||||
"tags": [],
|
|
||||||
"original_price": 122,
|
|
||||||
"price": {
|
|
||||||
"show": "100",
|
|
||||||
"score": 1,
|
|
||||||
"price_min": 100,
|
|
||||||
"price_max": 100
|
|
||||||
},
|
|
||||||
"clicks": 2,
|
|
||||||
"sales": 5257
|
|
||||||
}, {
|
|
||||||
"goods_id": 24,
|
|
||||||
"shop": {
|
|
||||||
"shop_id": 1,
|
|
||||||
"name": "平台自营店铺",
|
|
||||||
"cover": "",
|
|
||||||
"is_self": true
|
|
||||||
},
|
|
||||||
"is_self": true,
|
|
||||||
"name": "小米锅巴",
|
|
||||||
"description": "8%小米含量,松脆营养",
|
|
||||||
"cover": "http://storage.zh.shangkelian.cn/images/2022/01/06/5c6bbb8f1f50953c3d25b7a5c22a9865.png",
|
|
||||||
"tags": [],
|
|
||||||
"original_price": 155,
|
|
||||||
"price": {
|
|
||||||
"show": "111",
|
|
||||||
"score": 1,
|
|
||||||
"price_min": 111,
|
|
||||||
"price_max": 111
|
|
||||||
},
|
|
||||||
"clicks": 0,
|
|
||||||
"sales": 2653
|
|
||||||
}, {
|
|
||||||
"goods_id": 97,
|
|
||||||
"shop": {
|
|
||||||
"shop_id": 1,
|
|
||||||
"name": "平台自营店铺",
|
|
||||||
"cover": "",
|
|
||||||
"is_self": true
|
|
||||||
},
|
|
||||||
"is_self": true,
|
|
||||||
"name": "甜味浓郁低糖水果千禧玲珑小番茄",
|
|
||||||
"description": "甜味浓郁低糖水果千禧玲珑小番茄",
|
|
||||||
"cover": "http://storage.zh.shangkelian.cn/images/2022/01/11/8c44833a6d9477a9c01f8b4e06b2f748.png",
|
|
||||||
"tags": [],
|
|
||||||
"original_price": 0,
|
|
||||||
"price": {
|
|
||||||
"show": "89",
|
|
||||||
"score": 10,
|
|
||||||
"price_min": 89,
|
|
||||||
"price_max": 89
|
|
||||||
},
|
|
||||||
"clicks": 0,
|
|
||||||
"sales": 1347
|
|
||||||
}, {
|
|
||||||
"goods_id": 12,
|
|
||||||
"shop": {
|
|
||||||
"shop_id": 1,
|
|
||||||
"name": "平台自营店铺",
|
|
||||||
"cover": "",
|
|
||||||
"is_self": true
|
|
||||||
},
|
|
||||||
"is_self": true,
|
|
||||||
"name": "秘制手撕牛肉",
|
|
||||||
"description": "肉质紧致弹牙,细嚼口齿留香",
|
|
||||||
"cover": "http://storage.zh.shangkelian.cn/images/2022/01/06/bbd96a7724cb053e501b4ce2c34b5a0f.png",
|
|
||||||
"tags": [],
|
|
||||||
"original_price": 255,
|
|
||||||
"price": {
|
|
||||||
"show": "111",
|
|
||||||
"score": 1,
|
|
||||||
"price_min": 111,
|
|
||||||
"price_max": 111
|
|
||||||
},
|
|
||||||
"clicks": 0,
|
|
||||||
"sales": 1352
|
|
||||||
}, {
|
|
||||||
"goods_id": 58,
|
|
||||||
"shop": {
|
|
||||||
"shop_id": 1,
|
|
||||||
"name": "平台自营店铺",
|
|
||||||
"cover": "",
|
|
||||||
"is_self": true
|
|
||||||
},
|
|
||||||
"is_self": true,
|
|
||||||
"name": "挚爱巧克力",
|
|
||||||
"description": "黄金可可,瑞士工艺传承",
|
|
||||||
"cover": "http://storage.zh.shangkelian.cn/images/2022/01/11/ad5953e7f7ae60ca2f13f1313d67bb62.png",
|
|
||||||
"tags": [],
|
|
||||||
"original_price": 200,
|
|
||||||
"price": {
|
|
||||||
"show": "100",
|
|
||||||
"score": 1,
|
|
||||||
"price_min": 100,
|
|
||||||
"price_max": 100
|
|
||||||
},
|
|
||||||
"clicks": 0,
|
|
||||||
"sales": 5420
|
|
||||||
}],
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
onLoad(e) {
|
onLoad(e) {
|
||||||
this.shopId = this.$Route.query.id;
|
this.ShopId = this.$Route.query.ShopId
|
||||||
|
shopsDetail(this.ShopId).then(res => {
|
||||||
|
this.classify = [{
|
||||||
|
category_id: '',
|
||||||
|
name: '全部商品',
|
||||||
|
}, ...res.categories]
|
||||||
|
this.name = res.name
|
||||||
|
this.logo = res.cover
|
||||||
|
this.getGoods()
|
||||||
|
}).catch(err => {
|
||||||
|
uni.showToast({
|
||||||
|
title: err.message,
|
||||||
|
icon: 'none'
|
||||||
|
})
|
||||||
|
})
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
getGoods() {
|
||||||
|
uni.showLoading({
|
||||||
|
title: '加载中...'
|
||||||
|
})
|
||||||
|
shopsGoods(this.ShopId, this.category_id).then(res => {
|
||||||
|
this.goods = res.data
|
||||||
|
this.pages = res.page
|
||||||
|
uni.hideLoading()
|
||||||
|
}).catch(err => {
|
||||||
|
uni.showToast({
|
||||||
|
title: err.message,
|
||||||
|
icon: 'none'
|
||||||
|
})
|
||||||
|
})
|
||||||
|
},
|
||||||
selectClassify(id) {
|
selectClassify(id) {
|
||||||
if (id === this.category_id) return;
|
if (id === this.category_id) return;
|
||||||
this.category_id = id;
|
this.category_id = id;
|
||||||
|
this.getGoods()
|
||||||
},
|
},
|
||||||
search() {
|
search() {
|
||||||
console.log('search')
|
|
||||||
this.$Router.push({
|
this.$Router.push({
|
||||||
'name': 'StoreSearch'
|
name: 'StoreSearch'
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
onGoods(id) {
|
onGoods(id) {
|
||||||
@@ -327,6 +129,10 @@
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss">
|
<style lang="scss">
|
||||||
|
.pages-empty {
|
||||||
|
height: 70vh;
|
||||||
|
}
|
||||||
|
|
||||||
.shopDetail {
|
.shopDetail {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 100vh;
|
height: 100vh;
|
||||||
@@ -414,6 +220,7 @@
|
|||||||
.no {
|
.no {
|
||||||
color: $text-price;
|
color: $text-price;
|
||||||
padding-left: 4rpx;
|
padding-left: 4rpx;
|
||||||
|
padding-right: 10rpx;
|
||||||
}
|
}
|
||||||
|
|
||||||
.shop-titl {
|
.shop-titl {
|
||||||
|
|||||||
@@ -1,26 +1,32 @@
|
|||||||
<template>
|
<template>
|
||||||
<view class="content">
|
<view class="content">
|
||||||
<!-- banner -->
|
|
||||||
<view class="banner">
|
|
||||||
<image class="banner-cover"
|
|
||||||
src="http://storage.zh.shangkelian.cn/images/2022/01/11/7278de59f0817da7fbcaf6657dba7475.jpg"
|
|
||||||
mode="aspectFill" />
|
|
||||||
</view>
|
|
||||||
<!-- 分类 -->
|
<!-- 分类 -->
|
||||||
<u-sticky bgColor="#fff" zIndex="99">
|
<u-sticky bgColor="#fff" zIndex="99">
|
||||||
<u-tabs :list="classify" lineColor="#34CE98" @click="onTabs" />
|
<u-tabs :list="classify" lineColor="#34CE98" @click="onTabs" />
|
||||||
</u-sticky>
|
</u-sticky>
|
||||||
<!-- 店铺列表 -->
|
<!-- 店铺列表 -->
|
||||||
<block v-for="(item,index) in 10" :key="index">
|
<block v-if="shopsArr.length > 0">
|
||||||
<view class="shopInfo" @click="toShop(2)">
|
<view class="shop-List">
|
||||||
|
<view class="shopInfo" v-for="(item,index) in shopsArr" :key="index" @click="toShop(item.shop_id)">
|
||||||
<view class="shopInfo-title-left">
|
<view class="shopInfo-title-left">
|
||||||
<image class="shop-logo" src="/static/img/house_back.jpg" mode="aspectFill" />
|
<image class="shop-logo" :src="item.cover" mode="aspectFill" />
|
||||||
<view class="shop-title">
|
<view class="shop-title">
|
||||||
<view class="shop-titl">三只松鼠旗舰店</view>
|
<view class="shop-titl nowrap">{{item.name}}</view>
|
||||||
<view> 商品质量:<span>5.0</span> <text style="padding-left: 20rpx;">服务态度:<span>5.0</span></text> </view>
|
<view>店铺评分:<span>5.0</span></view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<view class="shopInfo-title-right" >全部商品 723 <uni-icons type="right" color="grey" /></view>
|
<view class="shopInfo-title-right" >在售{{item.goods_count}}件<uni-icons class="icons" type="right" size="14" color="grey" /></view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</block>
|
||||||
|
<block v-else>
|
||||||
|
<view class="vertical pages-empty">
|
||||||
|
<u-empty
|
||||||
|
icon="http://cdn.uviewui.com/uview/empty/list.png"
|
||||||
|
textColor="#999"
|
||||||
|
text="暂无相关店铺"
|
||||||
|
>
|
||||||
|
</u-empty>
|
||||||
</view>
|
</view>
|
||||||
</block>
|
</block>
|
||||||
</view>
|
</view>
|
||||||
@@ -28,52 +34,25 @@
|
|||||||
|
|
||||||
<script>
|
<script>
|
||||||
import {
|
import {
|
||||||
meals
|
shops
|
||||||
} from "@/apis/interfaces/store"
|
} from "@/apis/interfaces/store"
|
||||||
export default {
|
export default {
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
banner: "",
|
shopsArr : [],
|
||||||
goodsArr: [],
|
classify : [],
|
||||||
// classify: [],
|
shopsPage: {},
|
||||||
classify: [{
|
|
||||||
category_id: 1,
|
|
||||||
name: " 全部",
|
|
||||||
cover: ""
|
|
||||||
}, {
|
|
||||||
category_id: 2,
|
|
||||||
name: " 母婴",
|
|
||||||
cover: ""
|
|
||||||
}, {
|
|
||||||
category_id: 3,
|
|
||||||
name: "服饰",
|
|
||||||
cover: ""
|
|
||||||
}, {
|
|
||||||
category_id: 4,
|
|
||||||
name: "男装",
|
|
||||||
cover: ""
|
|
||||||
}, {
|
|
||||||
category_id: 5,
|
|
||||||
name: "男鞋",
|
|
||||||
cover: ""
|
|
||||||
}, {
|
|
||||||
category_id: 6,
|
|
||||||
name: "女装",
|
|
||||||
cover: ""
|
|
||||||
}]
|
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
// this.getMeals()
|
this.getShops()
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
getMeals() {
|
getShops() {
|
||||||
meals(this.$Route.query.id, this.categoryId).then(res => {
|
shops(this.categoryId).then(res => {
|
||||||
uni.setNavigationBarTitle({
|
console.log(res)
|
||||||
title: res.meal.subtitle
|
this.shopsArr = res.shops.data
|
||||||
})
|
this.shopsPage= res.shops.page
|
||||||
this.banner = res.meal.banner
|
|
||||||
this.goodsArr = res.goods
|
|
||||||
this.classify = [{
|
this.classify = [{
|
||||||
name: "全部",
|
name: "全部",
|
||||||
category_id: ""
|
category_id: ""
|
||||||
@@ -83,10 +62,9 @@
|
|||||||
},
|
},
|
||||||
onTabs(e) {
|
onTabs(e) {
|
||||||
this.categoryId = e.category_id
|
this.categoryId = e.category_id
|
||||||
this.getMeals()
|
this.getShops()
|
||||||
},
|
},
|
||||||
toShop(id) {
|
toShop(id) {
|
||||||
console.log('toShop/////.........');
|
|
||||||
this.$Router.push({
|
this.$Router.push({
|
||||||
name: 'ShopDetail',
|
name: 'ShopDetail',
|
||||||
params: {
|
params: {
|
||||||
@@ -96,68 +74,59 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
onPullDownRefresh() {
|
onPullDownRefresh() {
|
||||||
this.getMeals()
|
this.getShops()
|
||||||
},
|
},
|
||||||
|
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
|
.pages-empty{
|
||||||
|
height: 70vh;
|
||||||
|
}
|
||||||
.content {
|
.content {
|
||||||
background: $window-color;
|
background: $window-color;
|
||||||
min-height: 100vh;
|
min-height: 100vh;
|
||||||
}
|
}
|
||||||
|
|
||||||
// banner
|
|
||||||
.banner {
|
|
||||||
position: relative;
|
|
||||||
width: 100%;
|
|
||||||
background-color: white;
|
|
||||||
padding-top: 40%;
|
|
||||||
|
|
||||||
&-text,
|
|
||||||
&-cover {
|
|
||||||
position: absolute;
|
|
||||||
top: 0;
|
|
||||||
left: 0;
|
|
||||||
height: 100%;
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 筛选
|
// 筛选
|
||||||
.classify-tabs {
|
.classify-tabs {
|
||||||
background: white;
|
background: white;
|
||||||
}
|
}
|
||||||
|
.shop-List{
|
||||||
|
padding: $padding;
|
||||||
.shopInfo {
|
.shopInfo {
|
||||||
border-top: solid 1 #f9f9f9;
|
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: row;
|
flex-direction: row;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: space-between;
|
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
padding: $padding $padding - 10;
|
padding: $padding - 10;
|
||||||
border-bottom: solid 10rpx #f9f9f9;
|
|
||||||
background-color: #fff;
|
background-color: #fff;
|
||||||
|
border-radius: $radius;
|
||||||
|
margin-top: 20rpx;
|
||||||
|
&:first-child{
|
||||||
|
margin-top: 0;
|
||||||
|
}
|
||||||
.shopInfo-title-left {
|
.shopInfo-title-left {
|
||||||
width: 500rpx;
|
width: 60%;
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: row;
|
flex-direction: row;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: flex-start;
|
justify-content: flex-start;
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
|
position: relative;
|
||||||
|
padding-left: 90rpx;
|
||||||
|
min-height: 90rpx;
|
||||||
|
box-sizing: border-box;
|
||||||
.shop-logo {
|
.shop-logo {
|
||||||
width: 100rpx;
|
position: absolute;
|
||||||
height: 100rpx;
|
left: 0;
|
||||||
|
top: 0;
|
||||||
|
width: 90rpx;
|
||||||
|
height: 90rpx;
|
||||||
border-radius: 10rpx;
|
border-radius: 10rpx;
|
||||||
border: solid 1rpx #f9f9f9;
|
border: solid 1rpx #f9f9f9;
|
||||||
}
|
}
|
||||||
|
|
||||||
.shop-title {
|
.shop-title {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
@@ -167,15 +136,13 @@
|
|||||||
font-size: 26rpx;
|
font-size: 26rpx;
|
||||||
margin-left: $margin;
|
margin-left: $margin;
|
||||||
color: #999;
|
color: #999;
|
||||||
width: 370rpx;
|
width: 100%;
|
||||||
|
|
||||||
span {
|
span {
|
||||||
color: $text-price;
|
color: $text-price;
|
||||||
padding-left: 4rpx;
|
padding-left: 4rpx;
|
||||||
}
|
}
|
||||||
|
|
||||||
.shop-titl {
|
.shop-titl {
|
||||||
font-size: 34rpx;
|
font-size: 32rpx;
|
||||||
color: #333;
|
color: #333;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
margin-bottom: 6rpx;
|
margin-bottom: 6rpx;
|
||||||
@@ -186,16 +153,16 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.shopInfo-title-right {
|
.shopInfo-title-right {
|
||||||
display: flex;
|
width: 40%;
|
||||||
flex-direction: row;
|
text-align: right;
|
||||||
align-items: center;
|
font-size: 26rpx;
|
||||||
justify-content: center;
|
color: gray;
|
||||||
box-sizing: border-box;
|
.icons{
|
||||||
font-size: 28rpx;
|
vertical-align: bottom;
|
||||||
color: #222;
|
margin-top: 2rpx;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -1,23 +1,251 @@
|
|||||||
<template>
|
<template>
|
||||||
<view>
|
<view class="team">
|
||||||
共力团队
|
<!-- 统计信息 -->
|
||||||
|
<view class="team-hader">
|
||||||
<view>共力家族</view>
|
<view class="team-hader-item">
|
||||||
<view>共力伙伴</view>
|
<image class="team-hader-cover" src="@/static/vip/lv_03.png" mode="widthFix"></image>
|
||||||
<view>供应商</view>
|
<view class="team-hader-title">共力家族</view>
|
||||||
|
<view class="team-hader-number"><text>{{count.one}}</text>人</view>
|
||||||
|
</view>
|
||||||
|
<view class="team-hader-item">
|
||||||
|
<image class="team-hader-cover" src="@/static/vip/lv_04.png" mode="widthFix"></image>
|
||||||
|
<view class="team-hader-title">共力伙伴</view>
|
||||||
|
<view class="team-hader-number"><text>{{count.two}}</text>人</view>
|
||||||
|
</view>
|
||||||
|
<view class="team-hader-item">
|
||||||
|
<image class="team-hader-cover" src="@/static/vip/lv_06.png" mode="widthFix"></image>
|
||||||
|
<view class="team-hader-title">供应商</view>
|
||||||
|
<view class="team-hader-number"><text>{{count.supplier}}</text>人</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<!-- 邀请好友 -->
|
||||||
|
<view class="team-invite" @click="onInvitation">
|
||||||
|
<image src="@/static/img/team_00.png" mode="widthFix"></image>
|
||||||
|
</view>
|
||||||
|
<!-- 团队 -->
|
||||||
|
<view class="team-tabs">
|
||||||
|
<u-tabs
|
||||||
|
:list="teamTabs"
|
||||||
|
:scrollable="false"
|
||||||
|
lineColor="#34CE98"
|
||||||
|
@click="onTeamTab"
|
||||||
|
></u-tabs>
|
||||||
|
<view class="team-lists">
|
||||||
|
<view class="team-list-header">
|
||||||
|
<view class="team-list-header-item">用户</view>
|
||||||
|
<view class="team-list-header-item">手机号码</view>
|
||||||
|
<view class="team-list-header-item">{{tabsType === 'supplier' ? '业绩': '注册时间'}}</view>
|
||||||
|
</view>
|
||||||
|
<block v-if="users.length > 0">
|
||||||
|
<view class="team-list-flex" v-for="(item, index) in 10" :key="index">
|
||||||
|
<view class="team-list-flex-item user">
|
||||||
|
<image class="user-cover" src="" mode="aspectFill"></image>
|
||||||
|
<view class="user-nickname">唐明明</view>
|
||||||
|
</view>
|
||||||
|
<view class="team-list-flex-item number">182****0131</view>
|
||||||
|
<view class="team-list-flex-item number">2022/06/09</view>
|
||||||
|
</view>
|
||||||
|
</block>
|
||||||
|
<block v-else>
|
||||||
|
<view class="vertical pages-empty">
|
||||||
|
<u-empty
|
||||||
|
icon="http://cdn.uviewui.com/uview/empty/list.png"
|
||||||
|
textColor="#999"
|
||||||
|
text="暂无成员"
|
||||||
|
>
|
||||||
|
</u-empty>
|
||||||
|
</view>
|
||||||
|
</block>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
import { relations } from '@/apis/interfaces/team.js'
|
||||||
export default {
|
export default {
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
|
teamTabs: [
|
||||||
|
{ name: '共力家族', type: 'one'},
|
||||||
|
{ name: '共力伙伴', type: 'two'},
|
||||||
|
{ name: '供应商', type: 'supplier'},
|
||||||
|
],
|
||||||
|
tabsType: 'one',
|
||||||
|
count: {
|
||||||
|
all: 0,
|
||||||
|
one: 0,
|
||||||
|
two: 0,
|
||||||
|
supplier: 0
|
||||||
|
},
|
||||||
|
users: [],
|
||||||
|
page : {}
|
||||||
};
|
};
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
// 共力团队
|
||||||
|
onTeamTab(e){
|
||||||
|
if(this.tabsType === e.type) return
|
||||||
|
this.tabsType = e.type
|
||||||
|
this.getRelations()
|
||||||
|
},
|
||||||
|
// 团队信息
|
||||||
|
getRelations(){
|
||||||
|
uni.showLoading({
|
||||||
|
title: '加载中...'
|
||||||
|
})
|
||||||
|
relations({
|
||||||
|
larer: this.tabsType
|
||||||
|
}).then(res => {
|
||||||
|
this.count = res.count
|
||||||
|
this.users = res.users.data
|
||||||
|
this.pages = res.users.page
|
||||||
|
uni.hideLoading()
|
||||||
|
}).catch(err => {
|
||||||
|
uni.showToast({
|
||||||
|
title: err.message
|
||||||
|
})
|
||||||
|
})
|
||||||
|
},
|
||||||
|
onInvitation(){
|
||||||
|
this.$Router.push({name: 'Invitation'})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss">
|
<style lang="scss">
|
||||||
|
.team{
|
||||||
|
background: $window-color;
|
||||||
|
min-height: 100vh;
|
||||||
|
padding-bottom: $padding*2;
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
// 用户数据
|
||||||
|
.pages-empty{
|
||||||
|
height: 45vh;
|
||||||
|
}
|
||||||
|
// 团队统计
|
||||||
|
.team-hader{
|
||||||
|
position: relative;
|
||||||
|
padding: 20rpx;
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
&-item{
|
||||||
|
position: relative;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
justify-content: space-between;
|
||||||
|
width: calc(33.33% - 20rpx);
|
||||||
|
background-color: white;
|
||||||
|
margin: 0 10rpx;
|
||||||
|
border-radius: $radius*2 $radius $radius*2 $radius;
|
||||||
|
height: 150rpx;
|
||||||
|
padding: 20rpx;
|
||||||
|
box-sizing: border-box;
|
||||||
|
color: white;
|
||||||
|
overflow: hidden;
|
||||||
|
&:nth-child(1){
|
||||||
|
background-image: linear-gradient(to bottom right, #f6d5c2, #edc0a1);
|
||||||
|
}
|
||||||
|
&:nth-child(2){
|
||||||
|
background-image: linear-gradient(to bottom right, #d5ddee, #b5c1d9);
|
||||||
|
}
|
||||||
|
&:nth-child(3){
|
||||||
|
background-image: linear-gradient(to bottom right, #f5cb8e, #efba6d);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
&-title{
|
||||||
|
position: relative;
|
||||||
|
z-index: 1;
|
||||||
|
font-size: 26rpx;
|
||||||
|
@extend .nowrap;
|
||||||
|
}
|
||||||
|
&-number{
|
||||||
|
position: relative;
|
||||||
|
z-index: 1;
|
||||||
|
@extend .nowrap;
|
||||||
|
text{
|
||||||
|
font-size: 40rpx;
|
||||||
|
font-weight: bold;
|
||||||
|
padding-right: 6rpx;
|
||||||
|
}
|
||||||
|
font-size: 26rpx;
|
||||||
|
}
|
||||||
|
&-cover{
|
||||||
|
position: absolute;
|
||||||
|
width: 240rpx;
|
||||||
|
height: 240rpx;
|
||||||
|
right: -100rpx;
|
||||||
|
top: -30rpx;
|
||||||
|
opacity: .7;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// 邀请团队
|
||||||
|
.team-invite{
|
||||||
|
padding: 0 $padding;
|
||||||
|
image{
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// 团队列表
|
||||||
|
.team-tabs{
|
||||||
|
margin: 0 $margin $margin $margin;
|
||||||
|
padding-bottom: $padding;
|
||||||
|
.team-lists{
|
||||||
|
margin-top: $margin/2;
|
||||||
|
border-radius: $radius;
|
||||||
|
background: white;
|
||||||
|
padding: 20rpx $padding;
|
||||||
|
.team-list-header{
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
text-align: center;
|
||||||
|
border-bottom: solid 1px $border-color;
|
||||||
|
line-height: 70rpx;
|
||||||
|
padding-bottom: 15rpx;
|
||||||
|
text-align: center;
|
||||||
|
font-size: 28rpx;
|
||||||
|
color: $text-gray;
|
||||||
|
margin-bottom: 10rpx;
|
||||||
|
.team-list-header-item{
|
||||||
|
width: 33.33%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.team-list-flex{
|
||||||
|
display: flex;
|
||||||
|
font-size: 28rpx;
|
||||||
|
padding: 10rpx 0;
|
||||||
|
&-item{
|
||||||
|
width: 33.33%;
|
||||||
|
height: 60rpx;
|
||||||
|
line-height: 60rpx;
|
||||||
|
color: #333;
|
||||||
|
&.user{
|
||||||
|
padding-left: 70rpx;
|
||||||
|
box-sizing: border-box;
|
||||||
|
position: relative;
|
||||||
|
.user-cover{
|
||||||
|
position: absolute;
|
||||||
|
left: 0;
|
||||||
|
top: 5rpx;
|
||||||
|
width: 50rpx;
|
||||||
|
height: 50rpx;
|
||||||
|
border-radius: 50%;
|
||||||
|
background: $window-color;
|
||||||
|
}
|
||||||
|
.user-nickname{
|
||||||
|
@extend .nowrap;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
&.number{
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -4,33 +4,19 @@
|
|||||||
<view class="info-box">
|
<view class="info-box">
|
||||||
<image src="@/static/user/user_back.png" mode="aspectFill" />
|
<image src="@/static/user/user_back.png" mode="aspectFill" />
|
||||||
<view class="user-flex">
|
<view class="user-flex">
|
||||||
<image class="cover" @click="goSetting" :src="userInfo.avatar || require('@/static/user/cover.png')"
|
<image class="cover" @click="onBtn('Setting', {})" :src="userInfo.avatar || require('@/static/user/cover.png')"
|
||||||
mode="aspectFill" />
|
mode="aspectFill" />
|
||||||
<view class="user-content">
|
<view class="user-content">
|
||||||
<block v-if="$store.state.token != ''">
|
|
||||||
<view class="name">{{ userInfo.nickname }}</view>
|
<view class="name">{{ userInfo.nickname }}</view>
|
||||||
<view class="tabs" v-if="userInfo.identity.length !== 0">
|
<view class="tabs">
|
||||||
<view class="tabs-item">
|
<view class="tabs-item">
|
||||||
<image src="@/static/user/icon_07.png" />
|
<image :src="identity.cover_url" mode="heightFix" />{{identity.identity_text}}
|
||||||
VIP会员
|
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<view class="tabs" v-else>
|
<view class="chainAddress" v-if="userInfo.addr">
|
||||||
<view class="tabs-item">
|
<text @click="copy(userInfo.addr)">区块地址:{{userInfo.addr.substring(0,5) + '****' + userInfo.addr.substring(userInfo.addr.length - 5)}}</text>
|
||||||
<image src="@/static/user/icon_07.png" />
|
|
||||||
普通用户
|
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<view class="chainAddress" v-if="userInfo.chain_address">
|
|
||||||
<!-- <u-icon labelPos="left" @click="copy(userInfo.chain_address)" labelSize="14"
|
|
||||||
labelColor="#fff" :label="userInfo.chain_address.substr(0, 20)+'...'" space="10"
|
|
||||||
:name="require('@/static/imgs/copy.png')" size="16" /> -->
|
|
||||||
</view>
|
|
||||||
</block>
|
|
||||||
<block v-else>
|
|
||||||
<view class="name">未登录</view>
|
|
||||||
</block>
|
|
||||||
</view>
|
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
@@ -38,25 +24,24 @@
|
|||||||
<view class="vip-card">
|
<view class="vip-card">
|
||||||
<view class="title">
|
<view class="title">
|
||||||
<image src="@/static/user/icon_06.png" mode="widthFix" />
|
<image src="@/static/user/icon_06.png" mode="widthFix" />
|
||||||
会员
|
共力会员
|
||||||
</view>
|
</view>
|
||||||
<view class="subtitle">
|
<view class="subtitle">
|
||||||
<u-notice-bar :text="cardText" icon="" bgColor="" duration="3000" color="#fcc692" direction="column">
|
<u-notice-bar :text="cardText" icon="" bgColor="" duration="3000" color="#fcc692" direction="column">
|
||||||
</u-notice-bar>
|
</u-notice-bar>
|
||||||
</view>
|
</view>
|
||||||
<!-- v-if="userInfo.identity.length === 0" -->
|
<view class="btn" @click="onBtn('Vip', {})">{{userInfo.isOpenVip ? '开通': '续费'}}</view>
|
||||||
<view class="btn" @click="openVip">开通</view>
|
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
<!-- 健康数据 -->
|
<!-- 健康数据 -->
|
||||||
<view class="health-flex">
|
<view class="health-flex">
|
||||||
<view class="health-flex-item" @click="onBtn('AccountIntegral', {})">
|
<view class="health-flex-item" @click="onBtn('AccountIntegral', {})">
|
||||||
<view class="title">共力值</view>
|
<view class="title">共力值</view>
|
||||||
<view class="num">0.00</view>
|
<view class="num">{{account.glz}}</view>
|
||||||
</view>
|
</view>
|
||||||
<view class="health-flex-item" @click="onBtn('AccountDt', {})">
|
<view class="health-flex-item" @click="onBtn('AccountDt', {})">
|
||||||
<view class="title">DT积分</view>
|
<view class="title">DT积分</view>
|
||||||
<view class="num">0.00</view>
|
<view class="num">{{account.dt}}</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<!-- 订单 -->
|
<!-- 订单 -->
|
||||||
@@ -84,7 +69,7 @@
|
|||||||
</view>
|
</view>
|
||||||
<!-- 功能块 -->
|
<!-- 功能块 -->
|
||||||
<view class="btns-box">
|
<view class="btns-box">
|
||||||
<view class="btns-box-item">
|
<view class="btns-box-item" @click="onMnemonic">
|
||||||
<image class="icon" src="@/static/user/userIcon_02.png" mode="widthFix" />
|
<image class="icon" src="@/static/user/userIcon_02.png" mode="widthFix" />
|
||||||
导出助记词
|
导出助记词
|
||||||
<uni-icons class="forward" type="forward" color="#999" />
|
<uni-icons class="forward" type="forward" color="#999" />
|
||||||
@@ -94,19 +79,12 @@
|
|||||||
地址管理
|
地址管理
|
||||||
<uni-icons class="forward" type="forward" color="#999" />
|
<uni-icons class="forward" type="forward" color="#999" />
|
||||||
</view>
|
</view>
|
||||||
<view class="btns-box-item">
|
<view class="btns-box-item" @click="onBtn('Invitation', {})">
|
||||||
<image class="icon" src="@/static/user/userIcon_03.png" mode="widthFix" />
|
<image class="icon" src="@/static/user/userIcon_03.png" mode="widthFix" />
|
||||||
分享邀请
|
分享邀请
|
||||||
<uni-icons class="forward" type="forward" color="#999" />
|
<uni-icons class="forward" type="forward" color="#999" />
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<view class="btns-box">
|
|
||||||
<view class="btns-box-item">
|
|
||||||
<image class="icon" src="@/static/user/userIcon_03.png" mode="widthFix" />
|
|
||||||
供应商申请
|
|
||||||
<uni-icons class="forward" type="forward" color="#999" />
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
<view class="btns-box">
|
<view class="btns-box">
|
||||||
<view class="btns-box-item">
|
<view class="btns-box-item">
|
||||||
<image class="icon" src="@/static/user/userIcon_03.png" mode="widthFix" />
|
<image class="icon" src="@/static/user/userIcon_03.png" mode="widthFix" />
|
||||||
@@ -128,24 +106,47 @@
|
|||||||
<view>共力生态</view>
|
<view>共力生态</view>
|
||||||
<view>The total force ecological</view>
|
<view>The total force ecological</view>
|
||||||
</view>
|
</view>
|
||||||
|
<!-- 助记词弹出框 -->
|
||||||
|
<u-modal :show="wordsShow" :zoom="false" confirmText="复制" @confirm="copyWord" confirmColor="#34CE98">
|
||||||
|
<slot default>
|
||||||
|
<view class="wordsCont">
|
||||||
|
<view class="wordsCont-title">导出助记词</view>
|
||||||
|
<view class="wordsCont-tips">请务必抄下助记词并存在安全的地方,若助记词丢失,重装或换设备登录时将无法查看历史消息!若助记词被他人获取,将可能获取你的信息!</view>
|
||||||
|
<view class="wordsCont-text">{{mnemonic}}</view>
|
||||||
|
<image class="wordsCont-close" @click="wordsShow = false" src="@/static/icon/userCloes.png" mode="widthFix"></image>
|
||||||
|
</view>
|
||||||
|
</slot>
|
||||||
|
</u-modal>
|
||||||
</view>
|
</view>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import {
|
import {
|
||||||
info
|
info,
|
||||||
|
chainSeed
|
||||||
} from '@/apis/interfaces/user';
|
} from '@/apis/interfaces/user';
|
||||||
import userAuth from '@/public/userAuth';
|
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
cardText: ['开通会员加速共力值增长', '前10000名用户专享阶段折扣价格'],
|
cardText: [],
|
||||||
userInfo: {
|
userInfo: {
|
||||||
nickname : '',
|
nickname : '',
|
||||||
|
addr : '',
|
||||||
avatar : '',
|
avatar : '',
|
||||||
identity: []
|
isOpenVip : '',
|
||||||
}
|
},
|
||||||
|
identity : {
|
||||||
|
button_cover_url: '',
|
||||||
|
cover_url : '',
|
||||||
|
identity_text : ''
|
||||||
|
},
|
||||||
|
account : {
|
||||||
|
glz : 0.00,
|
||||||
|
dt : 0.00
|
||||||
|
},
|
||||||
|
mnemonic : '',
|
||||||
|
wordsShow: false
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
onShow() {
|
onShow() {
|
||||||
@@ -155,12 +156,19 @@
|
|||||||
// 用户信息
|
// 用户信息
|
||||||
getInfo() {
|
getInfo() {
|
||||||
if (this.$store.state.token === '') return;
|
if (this.$store.state.token === '') return;
|
||||||
info()
|
info().then(res => {
|
||||||
.then(res => {
|
|
||||||
uni.setNavigationBarTitle({
|
uni.setNavigationBarTitle({
|
||||||
title: res.nickname
|
title: res.nickname
|
||||||
});
|
});
|
||||||
this.userInfo = res;
|
this.cardText = res.identity_array
|
||||||
|
this.userInfo = {
|
||||||
|
nickname : res.nickname,
|
||||||
|
addr : res.addr,
|
||||||
|
avatar : res.avatar,
|
||||||
|
isOpenVip : res.is_open_vip,
|
||||||
|
}
|
||||||
|
this.identity = res.identity
|
||||||
|
this.account = res.account
|
||||||
})
|
})
|
||||||
.catch(err => {
|
.catch(err => {
|
||||||
uni.showToast({
|
uni.showToast({
|
||||||
@@ -169,9 +177,17 @@
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
// 开通会员
|
// 导出助记词
|
||||||
openVip() {
|
onMnemonic(){
|
||||||
this.$Router.push({name: 'Vip'})
|
chainSeed().then(res => {
|
||||||
|
this.mnemonic = res.seed
|
||||||
|
this.wordsShow = true
|
||||||
|
}).catch(err => {
|
||||||
|
uni.showToast({
|
||||||
|
title: err.message,
|
||||||
|
icon : 'none'
|
||||||
|
})
|
||||||
|
})
|
||||||
},
|
},
|
||||||
// 按钮导航
|
// 按钮导航
|
||||||
onBtn(name, params) {
|
onBtn(name, params) {
|
||||||
@@ -180,17 +196,17 @@
|
|||||||
params
|
params
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
goSetting() {
|
|
||||||
this.$Router.push({
|
|
||||||
name: 'Setting'
|
|
||||||
})
|
|
||||||
},
|
|
||||||
// 退出登录
|
// 退出登录
|
||||||
logOut() {
|
logOut() {
|
||||||
|
uni.removeStorage({
|
||||||
|
key: 'isnew',
|
||||||
|
success: () =>{
|
||||||
this.$store.commit('setToken', '');
|
this.$store.commit('setToken', '');
|
||||||
this.$store.commit('setIsNew', '');
|
|
||||||
this.$Router.replaceAll({name: 'Auth'})
|
this.$Router.replaceAll({name: 'Auth'})
|
||||||
|
}
|
||||||
|
})
|
||||||
},
|
},
|
||||||
|
// 复制
|
||||||
copy(data) {
|
copy(data) {
|
||||||
uni.setClipboardData({
|
uni.setClipboardData({
|
||||||
data: data,
|
data: data,
|
||||||
@@ -203,7 +219,21 @@
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
},
|
||||||
|
// 复制助记词
|
||||||
|
copyWord() {
|
||||||
|
uni.setClipboardData({
|
||||||
|
data: this.mnemonic,
|
||||||
|
success: () => {
|
||||||
|
this.wordsShow = false
|
||||||
|
uni.showToast({
|
||||||
|
title: '助记词已复制',
|
||||||
|
icon: 'none',
|
||||||
|
mask: true
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
@@ -281,10 +311,8 @@
|
|||||||
font-size: $title-size + 8;
|
font-size: $title-size + 8;
|
||||||
@extend .nowrap;
|
@extend .nowrap;
|
||||||
}
|
}
|
||||||
|
|
||||||
.tabs {
|
.tabs {
|
||||||
padding-top: 10rpx;
|
padding-top: 10rpx;
|
||||||
|
|
||||||
&-item {
|
&-item {
|
||||||
background: rgba($color: #000000, $alpha: 0.3);
|
background: rgba($color: #000000, $alpha: 0.3);
|
||||||
font-size: $title-size-sm - 4;
|
font-size: $title-size-sm - 4;
|
||||||
@@ -294,8 +322,8 @@
|
|||||||
border-radius: 20rpx;
|
border-radius: 20rpx;
|
||||||
|
|
||||||
image {
|
image {
|
||||||
width: 26rpx;
|
width: 38rpx;
|
||||||
height: 26rpx;
|
height: 38rpx;
|
||||||
vertical-align: middle;
|
vertical-align: middle;
|
||||||
margin-bottom: 2rpx;
|
margin-bottom: 2rpx;
|
||||||
margin-right: 8rpx;
|
margin-right: 8rpx;
|
||||||
@@ -457,4 +485,37 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
/* 助记词弹框 */
|
||||||
|
.wordsCont {
|
||||||
|
width: 100%;
|
||||||
|
position: relative;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.wordsCont-title {
|
||||||
|
width: 100%;
|
||||||
|
font-weight: 600;
|
||||||
|
font-size: 44rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.wordsCont-tips {
|
||||||
|
padding: 30rpx 0;
|
||||||
|
box-sizing: border-box;
|
||||||
|
color: #de5660;
|
||||||
|
line-height: 48rpx;
|
||||||
|
font-size: 30rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.wordsCont-text {
|
||||||
|
font-weight: 500;
|
||||||
|
margin-top: 10rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.wordsCont-close {
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
right: 0;
|
||||||
|
width: 44rpx;
|
||||||
|
height: 44rpx;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
<view class="vip-user">
|
<view class="vip-user">
|
||||||
<image class="user-cover" :src="user.avatar" mode="aspectFill"></image>
|
<image class="user-cover" :src="user.avatar" mode="aspectFill"></image>
|
||||||
<view class="user-nickname">{{user.nickname}}</view>
|
<view class="user-nickname">{{user.nickname}}</view>
|
||||||
<view class="user-date">到期日期:{{identity.ended_at}}</view>
|
<view class="user-date">到期日期:{{endedAt}}</view>
|
||||||
<view class="vip-renewal" v-if="!isOpen">续费</view>
|
<view class="vip-renewal" v-if="!isOpen">续费</view>
|
||||||
</view>
|
</view>
|
||||||
<view class="user-cards">
|
<view class="user-cards">
|
||||||
@@ -54,7 +54,7 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import { vip, vipPay, submitOrder } from '@/apis/interfaces/vip.js'
|
import { vip, vipPay, payInfo } from '@/apis/interfaces/vip.js'
|
||||||
export default {
|
export default {
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
@@ -68,8 +68,9 @@
|
|||||||
identity: {
|
identity: {
|
||||||
identity_text: '',
|
identity_text: '',
|
||||||
cover_url: '',
|
cover_url: '',
|
||||||
ended_at: ''
|
|
||||||
},
|
},
|
||||||
|
// 到期时间
|
||||||
|
endedAt: '',
|
||||||
// 下级身份
|
// 下级身份
|
||||||
nextIdentity:{
|
nextIdentity:{
|
||||||
identity_text: ''
|
identity_text: ''
|
||||||
@@ -85,43 +86,75 @@
|
|||||||
};
|
};
|
||||||
},
|
},
|
||||||
onShow() {
|
onShow() {
|
||||||
|
this.getVipInfo()
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
// 获取会员信息
|
||||||
|
getVipInfo(){
|
||||||
vip().then(res =>{
|
vip().then(res =>{
|
||||||
console.log(res)
|
|
||||||
this.isOpen = res.is_open
|
this.isOpen = res.is_open
|
||||||
this.prices = res.prices
|
this.prices = res.prices
|
||||||
this.rights = res.rights
|
this.rights = res.rights
|
||||||
this.secondRule = res.second_rule
|
this.secondRule = res.second_rule
|
||||||
this.nextIdentity = res.next_identity
|
this.nextIdentity = res.next_identity
|
||||||
this.identity = res.identity
|
this.identity = res.identity
|
||||||
|
this.endedAt = res.identity_ended_at
|
||||||
this.user = res.user
|
this.user = res.user
|
||||||
}).catch(err => {
|
|
||||||
console.log(err)
|
|
||||||
})
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
onOpenVip(){
|
|
||||||
// 获取订单
|
|
||||||
vipPay().then(orderNo => {
|
|
||||||
// 支付参数
|
|
||||||
submitOrder({
|
|
||||||
orderNo
|
|
||||||
}).then(orderInfo => {
|
|
||||||
uni.requestPayment({
|
|
||||||
provider : "wxpay",
|
|
||||||
orderInfo,
|
|
||||||
success: res => {
|
|
||||||
console.log(res)
|
|
||||||
},
|
|
||||||
fail: err=> {
|
|
||||||
console.log(err)
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}).catch(err => {
|
}).catch(err => {
|
||||||
uni.showToast({
|
uni.showToast({
|
||||||
title: err.message,
|
title: err.message,
|
||||||
icon : 'none'
|
icon : 'none'
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
},
|
||||||
|
// 提交订单
|
||||||
|
onOpenVip(){
|
||||||
|
// 获取订单
|
||||||
|
uni.showLoading({
|
||||||
|
title: '提交订单'
|
||||||
|
})
|
||||||
|
vipPay().then(res => {
|
||||||
|
// 支付参数
|
||||||
|
if(res.id) {
|
||||||
|
uni.showLoading({
|
||||||
|
title: '获取支付信息'
|
||||||
|
})
|
||||||
|
this.wxPay(res.id)
|
||||||
|
}
|
||||||
|
}).catch(err => {
|
||||||
|
uni.showToast({
|
||||||
|
title: err.message,
|
||||||
|
icon : 'none'
|
||||||
|
})
|
||||||
|
})
|
||||||
|
},
|
||||||
|
// 微信支付
|
||||||
|
wxPay(orderId){
|
||||||
|
payInfo(orderId).then(orderInfo => {
|
||||||
|
uni.requestPayment({
|
||||||
|
provider : "wxpay",
|
||||||
|
orderInfo: JSON.parse(orderInfo),
|
||||||
|
success: res => {
|
||||||
|
uni.showModal({
|
||||||
|
title: '提示',
|
||||||
|
content: '开通成功',
|
||||||
|
showCancel: false,
|
||||||
|
success: ()=> {
|
||||||
|
this.getVipInfo()
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
fail(err) {
|
||||||
|
let showToast = err.message
|
||||||
|
if(err.errMsg === 'requestPayment:fail [payment微信:-2]User canceled'){
|
||||||
|
showToast = '支付被取消'
|
||||||
|
}
|
||||||
|
uni.showToast({
|
||||||
|
title: showToast,
|
||||||
|
icon : 'none'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
})
|
||||||
}).catch(err =>{
|
}).catch(err =>{
|
||||||
uni.showToast({
|
uni.showToast({
|
||||||
title: err.message,
|
title: err.message,
|
||||||
|
|||||||
@@ -4,25 +4,15 @@ import {
|
|||||||
} from 'uni-simple-router';
|
} from 'uni-simple-router';
|
||||||
import store from '@/store/index'
|
import store from '@/store/index'
|
||||||
|
|
||||||
// CALL 页面,必须是nvue,但是NVUE 不支持webpack的 ROUTES 注入
|
|
||||||
// https://github.com/SilurianYang/uni-read-pages/issues/20
|
|
||||||
// #ifdef APP-NVUE
|
|
||||||
const ROUTES = [{
|
|
||||||
"path": "/pages/im/private/call"
|
|
||||||
}];
|
|
||||||
// #endif
|
|
||||||
|
|
||||||
const router = createRouter({
|
const router = createRouter({
|
||||||
platform: process.env.VUE_APP_PLATFORM,
|
platform: process.env.VUE_APP_PLATFORM,
|
||||||
routes: [...ROUTES]
|
routes: [...ROUTES]
|
||||||
});
|
});
|
||||||
|
|
||||||
// console.log(...ROUTES)
|
|
||||||
|
|
||||||
//全局路由前置守卫
|
//全局路由前置守卫
|
||||||
router.beforeEach((to, from, next) => {
|
router.beforeEach((to, from, next) => {
|
||||||
if(to.name === 'Auth' && store.getters.getToken != '' && uni.getStorageSync('token') != ''){
|
if(to.name === 'Auth' && store.getters.getToken != '' && uni.getStorageSync('token') != ''){
|
||||||
if(store.getters.getIsNew === 0 || uni.getStorageSync('isnew') === 0){
|
if(uni.getStorageSync('isnew') === 0){
|
||||||
next({
|
next({
|
||||||
name: 'AuthRole',
|
name: 'AuthRole',
|
||||||
NAVTYPE: 'replace'
|
NAVTYPE: 'replace'
|
||||||
|
|||||||
BIN
static/background/wallet-code-background.png
Normal file
|
After Width: | Height: | Size: 3.4 KiB |
BIN
static/icon/share_icon_00.png
Normal file
|
After Width: | Height: | Size: 19 KiB |
BIN
static/icon/share_icon_01.png
Normal file
|
After Width: | Height: | Size: 3.0 KiB |
BIN
static/icon/share_icon_02.png
Normal file
|
After Width: | Height: | Size: 6.8 KiB |
BIN
static/icon/sign_btn.png
Normal file
|
After Width: | Height: | Size: 16 KiB |
BIN
static/icon/userCloes.png
Normal file
|
After Width: | Height: | Size: 1.4 KiB |
BIN
static/img/code_back.png
Normal file
|
After Width: | Height: | Size: 2.8 MiB |
BIN
static/img/team_00.png
Normal file
|
After Width: | Height: | Size: 78 KiB |
BIN
static/vip/lv_03.png
Normal file
|
After Width: | Height: | Size: 173 KiB |
|
Before Width: | Height: | Size: 166 KiB After Width: | Height: | Size: 195 KiB |
BIN
static/vip/lv_06.png
Normal file
|
After Width: | Height: | Size: 194 KiB |
@@ -12,8 +12,7 @@ Vue.use(Vuex)
|
|||||||
export default new Vuex.Store({
|
export default new Vuex.Store({
|
||||||
state: {
|
state: {
|
||||||
token: uni.getStorageSync('token') || '',
|
token: uni.getStorageSync('token') || '',
|
||||||
address: {},
|
address: {}
|
||||||
isnew: uni.getStorageSync('isNew') || 0
|
|
||||||
},
|
},
|
||||||
getters: {
|
getters: {
|
||||||
getToken: state => {
|
getToken: state => {
|
||||||
@@ -21,9 +20,6 @@ export default new Vuex.Store({
|
|||||||
},
|
},
|
||||||
getAddress: state => {
|
getAddress: state => {
|
||||||
return state.address
|
return state.address
|
||||||
},
|
|
||||||
getIsNew: state => {
|
|
||||||
return state.isnew
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
mutations: {
|
mutations: {
|
||||||
@@ -33,10 +29,6 @@ export default new Vuex.Store({
|
|||||||
},
|
},
|
||||||
setAddress(state, value) {
|
setAddress(state, value) {
|
||||||
state.address = value
|
state.address = value
|
||||||
},
|
|
||||||
setIsNew(state, isNew) {
|
|
||||||
state.isnew = isNew
|
|
||||||
uni.setStorageSync('isnew', isNew)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -1,12 +0,0 @@
|
|||||||
## 5.1.15(2022-01-10)
|
|
||||||
* 更新 SDK
|
|
||||||
## 1.0.4(2022-01-06)
|
|
||||||
* 修复初始化问题
|
|
||||||
## 1.0.3(2022-01-06)
|
|
||||||
* 更新插件内容
|
|
||||||
## 1.0.2(2022-01-06)
|
|
||||||
* 添加枚举值
|
|
||||||
## 1.0.1(2022-01-05)
|
|
||||||
* 更新目录结构
|
|
||||||
## 1.0.0(2022-01-05)
|
|
||||||
* 支持 Calllib JS 层
|
|
||||||
377
uni_modules/RongCloud-CallWrapper/lib/index.d.ts
vendored
@@ -1,377 +0,0 @@
|
|||||||
/*
|
|
||||||
* RCCallUni - v5.1.14-release.1
|
|
||||||
* CommitId - a184e82065a309fc565be987321c44e9da02abbb
|
|
||||||
* Thu Jan 06 2022 16:03:36 GMT+0800 (中国标准时间)
|
|
||||||
* ©2020 RongCloud, Inc. All rights reserved.
|
|
||||||
*/
|
|
||||||
declare enum RCCallIWCamera {
|
|
||||||
NONE = -1,
|
|
||||||
FRONT = 0,
|
|
||||||
BACK = 1
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* 通话媒体类型
|
|
||||||
*/
|
|
||||||
declare enum RCCallIWMediaType {
|
|
||||||
/**
|
|
||||||
* 音频通话
|
|
||||||
*/
|
|
||||||
AUDIO = 0,
|
|
||||||
/**
|
|
||||||
* 视频通话
|
|
||||||
*/
|
|
||||||
AUDIO_VIDEO = 1
|
|
||||||
}
|
|
||||||
declare enum RCUNICallErrorCode {
|
|
||||||
SUCCESS = 0,
|
|
||||||
ENGINE_NOT_FOUND = 1,
|
|
||||||
NETWORK_UNAVAILABLE = 2,
|
|
||||||
ONE_CALL_EXISTED = 3,
|
|
||||||
OPERATION_UNAVAILABLE = 4,
|
|
||||||
INVALID_PARAM = 5,
|
|
||||||
NETWORK_UNSTABLE = 6,
|
|
||||||
MEDIA_REQUEST_FAILED = 7,
|
|
||||||
MEDIA_SERVER_NOT_READY = 8,
|
|
||||||
MEDIA_SERVER_NOT_INITIALIZED = 9,
|
|
||||||
MEDIA_REQUEST_TIMEOUT = 10,
|
|
||||||
MEDIA_UNKOWN_ERROR = 11,
|
|
||||||
MEDIA_KICKED_BY_SERVER_ERROR = 12,
|
|
||||||
MEDIA_SERVER_CLOSED_ERROR = 13,
|
|
||||||
MEDIA_SERVER_PUBLISH_ERROR = 14,
|
|
||||||
MEDIA_SERVER_SUBSCRIBE_ERROR = 15,
|
|
||||||
MEDIA_JOIN_ROOM_REFUSE_ERROR = 16
|
|
||||||
}
|
|
||||||
declare enum RCCallIWCallDisconnectedReason {
|
|
||||||
CANCEL = 0,
|
|
||||||
REJECT = 1,
|
|
||||||
HANGUP = 2,
|
|
||||||
BUSY_LINE = 3,
|
|
||||||
NO_RESPONSE = 4,
|
|
||||||
ENGINE_UNSUPPORTED = 5,
|
|
||||||
NETWORK_ERROR = 6,
|
|
||||||
RESOURCE_GET_ERROR = 7,
|
|
||||||
RESOURCE_PUBLISH_ERROR = 8,
|
|
||||||
RESOURCE_SUBSCRIBE_ERROR = 9,
|
|
||||||
REMOTE_CANCEL = 10,
|
|
||||||
REMOTE_REJECT = 11,
|
|
||||||
REMOTE_HANGUP = 12,
|
|
||||||
REMOTE_BUSY_LINE = 13,
|
|
||||||
REMOTE_NO_RESPONSE = 14,
|
|
||||||
REMOTE_ENGINE_UNSUPPORTED = 15,
|
|
||||||
REMOTE_NETWORK_ERROR = 16,
|
|
||||||
REMOTE_RESOURCE_GET_ERROR = 17,
|
|
||||||
REMOTE_RESOURCE_PUBLISH_ERROR = 18,
|
|
||||||
REMOTE_RESOURCE_SUBSCRIBE_ERROR = 19,
|
|
||||||
KICKED_BY_OTHER_CALL = 20,
|
|
||||||
IN_OTHER_CALL = 21,
|
|
||||||
KICKED_BY_SERVER = 22,
|
|
||||||
REMOTE_KICKED_BY_OTHER_CALL = 23,
|
|
||||||
REMOTE_IN_OTHER_CALL = 24,
|
|
||||||
REMOTE_KICKED_BY_SERVER = 25,
|
|
||||||
ACCEPT_BY_OTHER_CLIENT = 26,
|
|
||||||
HANGUP_BY_OTHER_CLIENT = 27,
|
|
||||||
REJECTED_BY_BLACKLIST = 28,
|
|
||||||
SERVICE_NOT_OPENED = 29,
|
|
||||||
DROP_TO_OBSERVER = 30,
|
|
||||||
INIT_VIDEO_ERROR = 31,
|
|
||||||
OTHER_DEVICE_HAD_ACCEPTED = 32,
|
|
||||||
SERVICE_DISCONNECTED = 33
|
|
||||||
}
|
|
||||||
declare enum RCCallIWBeautyFilterType {
|
|
||||||
NONE = 0,
|
|
||||||
ESTHETIC = 1,
|
|
||||||
FRESH = 2,
|
|
||||||
ROMANTIC = 3
|
|
||||||
}
|
|
||||||
|
|
||||||
interface UniListenerResult<T> {
|
|
||||||
module: string;
|
|
||||||
type: string;
|
|
||||||
data: T;
|
|
||||||
}
|
|
||||||
interface usersParams {
|
|
||||||
userId: string;
|
|
||||||
mediaType: string;
|
|
||||||
enableCamera: string;
|
|
||||||
userType: string;
|
|
||||||
enableMicrophone: string;
|
|
||||||
mediaId?: string;
|
|
||||||
}
|
|
||||||
interface ReceivedListenerResult {
|
|
||||||
mine: usersParams;
|
|
||||||
inviter: usersParams;
|
|
||||||
startTime: number;
|
|
||||||
caller: usersParams;
|
|
||||||
mediaType: number;
|
|
||||||
callType: number;
|
|
||||||
endTime: number;
|
|
||||||
extra: string;
|
|
||||||
targetId: string;
|
|
||||||
connectedTime: number;
|
|
||||||
users: usersParams[];
|
|
||||||
callId: string;
|
|
||||||
}
|
|
||||||
interface ListenerResultRes {
|
|
||||||
reason?: RCCallIWCallDisconnectedReason;
|
|
||||||
}
|
|
||||||
interface ListenerResultError {
|
|
||||||
reason?: RCUNICallErrorCode;
|
|
||||||
}
|
|
||||||
interface ListenerResultData {
|
|
||||||
userId?: string;
|
|
||||||
user?: usersParams;
|
|
||||||
mediaType?: string;
|
|
||||||
}
|
|
||||||
interface RCCallIWBeautyOption {
|
|
||||||
whitenessLevel: number;
|
|
||||||
smoothLevel: number;
|
|
||||||
ruddyLevel: number;
|
|
||||||
brightLevel: number;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 初始化 SDK,只需要调用一次
|
|
||||||
*
|
|
||||||
* calllib初始化默认不传参数
|
|
||||||
*/
|
|
||||||
declare function init(): void;
|
|
||||||
/**
|
|
||||||
* 注销calllib
|
|
||||||
*
|
|
||||||
* 注销calllib默认不传参数
|
|
||||||
*/
|
|
||||||
declare function unInit(): void;
|
|
||||||
/**
|
|
||||||
* 添加接收监听函数
|
|
||||||
*
|
|
||||||
* @param listener 回调函数
|
|
||||||
*/
|
|
||||||
declare function onCallReceived(listener: (result: UniListenerResult<ReceivedListenerResult>) => void): void;
|
|
||||||
/**
|
|
||||||
* 添加挂断监听函数
|
|
||||||
*
|
|
||||||
* @param listener 回调函数
|
|
||||||
*/
|
|
||||||
declare function onCallDisconnected(listener: (result: UniListenerResult<ListenerResultRes>) => void): void;
|
|
||||||
/**
|
|
||||||
* 添加连接监听函数
|
|
||||||
*
|
|
||||||
* @param listener 回调函数
|
|
||||||
*/
|
|
||||||
declare function onCallConnected(listener: (result: UniListenerResult<ListenerResultRes>) => void): void;
|
|
||||||
/**
|
|
||||||
* 通话中的某一个参与者,邀请好友加入通话
|
|
||||||
*
|
|
||||||
* @param listener 回调函数
|
|
||||||
*/
|
|
||||||
declare function onRemoteUserInvited(listener: (result: UniListenerResult<ListenerResultRes>) => void): void;
|
|
||||||
/**
|
|
||||||
* 对端用户加入了通话
|
|
||||||
* @param listener 回调函数
|
|
||||||
*/
|
|
||||||
declare function onRemoteUserJoined(listener: (result: UniListenerResult<usersParams>) => void): void;
|
|
||||||
/**
|
|
||||||
* 对端用户挂断 (实际测试,只在群聊时用触发)
|
|
||||||
* @param listener 回调函数
|
|
||||||
*/
|
|
||||||
declare function onRemoteUserLeft(listener: (result: UniListenerResult<ListenerResultRes>) => void): void;
|
|
||||||
/**
|
|
||||||
* 电话已拨出 主叫端拨出电话后,通过回调 onCallOutgoing 通知当前 call 的详细信息
|
|
||||||
* @param listener 回调函数
|
|
||||||
*/
|
|
||||||
declare function onCallOutgoing(listener: (result: UniListenerResult<ListenerResultRes>) => void): void;
|
|
||||||
/**
|
|
||||||
* 被叫端正在振铃,主叫端拨出电话,被叫端收到请求,发出振铃响应时监听
|
|
||||||
* @param listener 回调函数
|
|
||||||
*/
|
|
||||||
declare function onRemoteUserRinging(listener: (result: UniListenerResult<ListenerResultRes>) => void): void;
|
|
||||||
/**
|
|
||||||
* 通话出现错误的回调
|
|
||||||
* @param listener 回调函数
|
|
||||||
*/
|
|
||||||
declare function onError(listener: (result: UniListenerResult<ListenerResultError>) => void): void;
|
|
||||||
/**
|
|
||||||
* 对端用户切换了媒体类型
|
|
||||||
* @param listener 回调函数
|
|
||||||
*/
|
|
||||||
declare function onRemoteUserMediaTypeChanged(listener: (result: UniListenerResult<ListenerResultData>) => void): void;
|
|
||||||
/**
|
|
||||||
* 对端用户关闭了摄像头
|
|
||||||
* @param listener 回调函数
|
|
||||||
*/
|
|
||||||
declare function onRemoteUserCameraStateChanged(listener: (result: UniListenerResult<ListenerResultData>) => void): void;
|
|
||||||
/**
|
|
||||||
* 对端用户关闭了麦克风
|
|
||||||
* @param listener 回调函数
|
|
||||||
*/
|
|
||||||
declare function onRemoteUserMicrophoneStateChanged(listener: (result: UniListenerResult<ListenerResultData>) => void): void;
|
|
||||||
/**
|
|
||||||
* 邀请用户
|
|
||||||
* @param userIds 被邀请用户id列表
|
|
||||||
* @param observerUserIds 被邀请观察者id列表 (只能听或看,不能推流的用户)
|
|
||||||
*/
|
|
||||||
declare function inviteUsers(userIds: string[], observerUserIds: string[]): void;
|
|
||||||
/**
|
|
||||||
* 移除监听-接收到通话呼入
|
|
||||||
*/
|
|
||||||
declare function removeCallReceivedListener(): void;
|
|
||||||
/**
|
|
||||||
* 移除监听-通话已接通
|
|
||||||
*/
|
|
||||||
declare function removeCallConnectedListener(): void;
|
|
||||||
/**
|
|
||||||
* 移除监听-通话已结束
|
|
||||||
* @param 挂断原因
|
|
||||||
*/
|
|
||||||
declare function removeCallDisconnectedListener(): void;
|
|
||||||
/**
|
|
||||||
* 移除监听-对端用户加入了通话
|
|
||||||
*/
|
|
||||||
declare function removeRemoteUserJoinedListener(): void;
|
|
||||||
/**
|
|
||||||
* 移除监听-对端用户挂断
|
|
||||||
*/
|
|
||||||
declare function removeRemoteUserLeftListener(): void;
|
|
||||||
/**
|
|
||||||
* 移除监听-有用户被邀请加入通话
|
|
||||||
*/
|
|
||||||
declare function removeRemoteUserInvited(): void;
|
|
||||||
/**
|
|
||||||
* 移除监听-开启或关闭摄像头的回调
|
|
||||||
*/
|
|
||||||
declare function removeEnableCameraListener(): void;
|
|
||||||
/**
|
|
||||||
* 移除监听-切换摄像头回调
|
|
||||||
*/
|
|
||||||
declare function removeSwitchCameraListener(): void;
|
|
||||||
/**
|
|
||||||
* 移除监听-通话出现错误的回调
|
|
||||||
*/
|
|
||||||
declare function removeErrorListener(): void;
|
|
||||||
/**
|
|
||||||
* 移除监听-开始呼叫通话的回调
|
|
||||||
*/
|
|
||||||
declare function removeCallOutgoingListener(): void;
|
|
||||||
/**
|
|
||||||
* 移除监听-对端用户正在振铃
|
|
||||||
*/
|
|
||||||
declare function removeRemoteUserRingingListener(): void;
|
|
||||||
/**
|
|
||||||
* 移除监听-对端用户切换了媒体类型
|
|
||||||
*/
|
|
||||||
declare function removeRemoteUserMediaTypeChangedListener(): void;
|
|
||||||
/**
|
|
||||||
* 获取当前calllib本地存储信息
|
|
||||||
*
|
|
||||||
* 默认不传参数
|
|
||||||
*/
|
|
||||||
declare function getCurrentCallSession(): any;
|
|
||||||
/**
|
|
||||||
* 挂断calllib
|
|
||||||
*
|
|
||||||
* 默认不传参数
|
|
||||||
*/
|
|
||||||
declare function hangup(): void;
|
|
||||||
/**
|
|
||||||
* 接收calllib
|
|
||||||
*
|
|
||||||
* 默认不传参数
|
|
||||||
*/
|
|
||||||
declare function accept(): void;
|
|
||||||
/**
|
|
||||||
* 发起单聊呼叫
|
|
||||||
*
|
|
||||||
* @param targetId 目标ID
|
|
||||||
* @param type 呼叫类型(0:音频 1:音视频)
|
|
||||||
* @param extra 默认传''
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
declare function startSingleCall(targetId: string, type: number, extra: null): void;
|
|
||||||
/**
|
|
||||||
* 发起组呼呼叫
|
|
||||||
*
|
|
||||||
* @param groupId 组ID
|
|
||||||
* @param userIds 群组成员
|
|
||||||
* @param observerUserIds 观察者ID默认为空数组
|
|
||||||
* @param type 呼叫类型(0:音频 1:音视频)
|
|
||||||
* @param extra 默认传''
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
declare function startGroupCall(groupId: string, userIds: Array<string>, observerUserIds: Array<string>, type: number, extra: string): void;
|
|
||||||
/**
|
|
||||||
* 设置预览窗口,此方法需要在视图更新渲染完成后执行
|
|
||||||
*
|
|
||||||
* @param userId 用户id
|
|
||||||
* @param ref ref ID 对应组件的标识
|
|
||||||
* @param type 视频显示模式 0 铺满 1 自适应
|
|
||||||
* @param isZOrderOnTop android only 是否置顶
|
|
||||||
*/
|
|
||||||
declare function setVideoView(userId: string, ref: string, type: number, isZOrderOnTop?: boolean): void;
|
|
||||||
/**
|
|
||||||
* 设置callib是否开启扬声器
|
|
||||||
*
|
|
||||||
* @param isOpen 默认开启
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
declare function enableSpeaker(isOpen: boolean): void;
|
|
||||||
/**
|
|
||||||
* 设置callib是否开启麦克风
|
|
||||||
*
|
|
||||||
* @param isOPen 默认开启
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
declare function enableMicrophone(isOpen: boolean): void;
|
|
||||||
/**
|
|
||||||
* 切换摄像头
|
|
||||||
*
|
|
||||||
* 默认不传参数
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
declare function switchCamera(): void;
|
|
||||||
/**
|
|
||||||
* 获取当前摄像头方式
|
|
||||||
*
|
|
||||||
* 默认不传参数
|
|
||||||
*/
|
|
||||||
declare function currentCamera(): any;
|
|
||||||
/**
|
|
||||||
* 开启摄像头摄像头
|
|
||||||
*
|
|
||||||
* @param isOpen 是否开启
|
|
||||||
* @param RCCallIWCamera 对端还是本端
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
declare function enableCamera(isOpen: boolean, camera: RCCallIWCamera): void;
|
|
||||||
/**
|
|
||||||
* 修改通话类型
|
|
||||||
* @param type
|
|
||||||
*/
|
|
||||||
declare function changeMediaType(type: RCCallIWMediaType): void;
|
|
||||||
/**
|
|
||||||
* 设置滤镜
|
|
||||||
* @param filter
|
|
||||||
*/
|
|
||||||
declare function setBeautyFilter(filter: RCCallIWBeautyFilterType): void;
|
|
||||||
/**
|
|
||||||
* 获取当前的滤镜
|
|
||||||
* 默认不传参数
|
|
||||||
*/
|
|
||||||
declare function getCurrentBeautyFilter(): any;
|
|
||||||
/**
|
|
||||||
* 设置美颜参数
|
|
||||||
* @param enable 默认关闭
|
|
||||||
* @param RCCallIWBeautyOption 美颜参数
|
|
||||||
*/
|
|
||||||
declare function setBeautyOption(enable: boolean | undefined, option: RCCallIWBeautyOption): void;
|
|
||||||
/**
|
|
||||||
* 获取当前的美颜参数
|
|
||||||
* 默认不传参数
|
|
||||||
*/
|
|
||||||
declare function getCurrentBeautyOption(): any;
|
|
||||||
/**
|
|
||||||
* 重置美颜参数和滤镜
|
|
||||||
* 默认不传参数
|
|
||||||
*/
|
|
||||||
declare function resetBeauty(): void;
|
|
||||||
|
|
||||||
export { RCCallIWBeautyFilterType, RCCallIWCallDisconnectedReason, RCCallIWCamera, RCCallIWMediaType, RCUNICallErrorCode, accept, changeMediaType, currentCamera, enableCamera, enableMicrophone, enableSpeaker, getCurrentBeautyFilter, getCurrentBeautyOption, getCurrentCallSession, hangup, init, inviteUsers, onCallConnected, onCallDisconnected, onCallOutgoing, onCallReceived, onError, onRemoteUserCameraStateChanged, onRemoteUserInvited, onRemoteUserJoined, onRemoteUserLeft, onRemoteUserMediaTypeChanged, onRemoteUserMicrophoneStateChanged, onRemoteUserRinging, removeCallConnectedListener, removeCallDisconnectedListener, removeCallOutgoingListener, removeCallReceivedListener, removeEnableCameraListener, removeErrorListener, removeRemoteUserInvited, removeRemoteUserJoinedListener, removeRemoteUserLeftListener, removeRemoteUserMediaTypeChangedListener, removeRemoteUserRingingListener, removeSwitchCameraListener, resetBeauty, setBeautyFilter, setBeautyOption, setVideoView, startGroupCall, startSingleCall, switchCamera, unInit };
|
|
||||||
@@ -1,286 +0,0 @@
|
|||||||
/*
|
|
||||||
* RCCallUni - v5.1.14-release.1
|
|
||||||
* CommitId - a184e82065a309fc565be987321c44e9da02abbb
|
|
||||||
* Thu Jan 06 2022 16:03:36 GMT+0800 (中国标准时间)
|
|
||||||
* ©2020 RongCloud, Inc. All rights reserved.
|
|
||||||
*/
|
|
||||||
class Logger {
|
|
||||||
tag;
|
|
||||||
|
|
||||||
constructor(tag) {
|
|
||||||
this.tag = tag;
|
|
||||||
}
|
|
||||||
|
|
||||||
log(str) {
|
|
||||||
console.log(`[${this.tag}] ${new Date().toISOString()} ${str}`);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
const logger = new Logger('RCUNICallLib');
|
|
||||||
|
|
||||||
var RCCallIWCamera;
|
|
||||||
|
|
||||||
(function (RCCallIWCamera) {
|
|
||||||
RCCallIWCamera[RCCallIWCamera["NONE"] = -1] = "NONE";
|
|
||||||
RCCallIWCamera[RCCallIWCamera["FRONT"] = 0] = "FRONT";
|
|
||||||
RCCallIWCamera[RCCallIWCamera["BACK"] = 1] = "BACK";
|
|
||||||
})(RCCallIWCamera || (RCCallIWCamera = {}));
|
|
||||||
|
|
||||||
var RCCallIWMediaType;
|
|
||||||
|
|
||||||
(function (RCCallIWMediaType) {
|
|
||||||
RCCallIWMediaType[RCCallIWMediaType["AUDIO"] = 0] = "AUDIO";
|
|
||||||
RCCallIWMediaType[RCCallIWMediaType["AUDIO_VIDEO"] = 1] = "AUDIO_VIDEO";
|
|
||||||
})(RCCallIWMediaType || (RCCallIWMediaType = {}));
|
|
||||||
|
|
||||||
var RCUNICallErrorCode;
|
|
||||||
|
|
||||||
(function (RCUNICallErrorCode) {
|
|
||||||
RCUNICallErrorCode[RCUNICallErrorCode["SUCCESS"] = 0] = "SUCCESS";
|
|
||||||
RCUNICallErrorCode[RCUNICallErrorCode["ENGINE_NOT_FOUND"] = 1] = "ENGINE_NOT_FOUND";
|
|
||||||
RCUNICallErrorCode[RCUNICallErrorCode["NETWORK_UNAVAILABLE"] = 2] = "NETWORK_UNAVAILABLE";
|
|
||||||
RCUNICallErrorCode[RCUNICallErrorCode["ONE_CALL_EXISTED"] = 3] = "ONE_CALL_EXISTED";
|
|
||||||
RCUNICallErrorCode[RCUNICallErrorCode["OPERATION_UNAVAILABLE"] = 4] = "OPERATION_UNAVAILABLE";
|
|
||||||
RCUNICallErrorCode[RCUNICallErrorCode["INVALID_PARAM"] = 5] = "INVALID_PARAM";
|
|
||||||
RCUNICallErrorCode[RCUNICallErrorCode["NETWORK_UNSTABLE"] = 6] = "NETWORK_UNSTABLE";
|
|
||||||
RCUNICallErrorCode[RCUNICallErrorCode["MEDIA_REQUEST_FAILED"] = 7] = "MEDIA_REQUEST_FAILED";
|
|
||||||
RCUNICallErrorCode[RCUNICallErrorCode["MEDIA_SERVER_NOT_READY"] = 8] = "MEDIA_SERVER_NOT_READY";
|
|
||||||
RCUNICallErrorCode[RCUNICallErrorCode["MEDIA_SERVER_NOT_INITIALIZED"] = 9] = "MEDIA_SERVER_NOT_INITIALIZED";
|
|
||||||
RCUNICallErrorCode[RCUNICallErrorCode["MEDIA_REQUEST_TIMEOUT"] = 10] = "MEDIA_REQUEST_TIMEOUT";
|
|
||||||
RCUNICallErrorCode[RCUNICallErrorCode["MEDIA_UNKOWN_ERROR"] = 11] = "MEDIA_UNKOWN_ERROR";
|
|
||||||
RCUNICallErrorCode[RCUNICallErrorCode["MEDIA_KICKED_BY_SERVER_ERROR"] = 12] = "MEDIA_KICKED_BY_SERVER_ERROR";
|
|
||||||
RCUNICallErrorCode[RCUNICallErrorCode["MEDIA_SERVER_CLOSED_ERROR"] = 13] = "MEDIA_SERVER_CLOSED_ERROR";
|
|
||||||
RCUNICallErrorCode[RCUNICallErrorCode["MEDIA_SERVER_PUBLISH_ERROR"] = 14] = "MEDIA_SERVER_PUBLISH_ERROR";
|
|
||||||
RCUNICallErrorCode[RCUNICallErrorCode["MEDIA_SERVER_SUBSCRIBE_ERROR"] = 15] = "MEDIA_SERVER_SUBSCRIBE_ERROR";
|
|
||||||
RCUNICallErrorCode[RCUNICallErrorCode["MEDIA_JOIN_ROOM_REFUSE_ERROR"] = 16] = "MEDIA_JOIN_ROOM_REFUSE_ERROR";
|
|
||||||
})(RCUNICallErrorCode || (RCUNICallErrorCode = {}));
|
|
||||||
|
|
||||||
var RCCallIWCallDisconnectedReason;
|
|
||||||
|
|
||||||
(function (RCCallIWCallDisconnectedReason) {
|
|
||||||
RCCallIWCallDisconnectedReason[RCCallIWCallDisconnectedReason["CANCEL"] = 0] = "CANCEL";
|
|
||||||
RCCallIWCallDisconnectedReason[RCCallIWCallDisconnectedReason["REJECT"] = 1] = "REJECT";
|
|
||||||
RCCallIWCallDisconnectedReason[RCCallIWCallDisconnectedReason["HANGUP"] = 2] = "HANGUP";
|
|
||||||
RCCallIWCallDisconnectedReason[RCCallIWCallDisconnectedReason["BUSY_LINE"] = 3] = "BUSY_LINE";
|
|
||||||
RCCallIWCallDisconnectedReason[RCCallIWCallDisconnectedReason["NO_RESPONSE"] = 4] = "NO_RESPONSE";
|
|
||||||
RCCallIWCallDisconnectedReason[RCCallIWCallDisconnectedReason["ENGINE_UNSUPPORTED"] = 5] = "ENGINE_UNSUPPORTED";
|
|
||||||
RCCallIWCallDisconnectedReason[RCCallIWCallDisconnectedReason["NETWORK_ERROR"] = 6] = "NETWORK_ERROR";
|
|
||||||
RCCallIWCallDisconnectedReason[RCCallIWCallDisconnectedReason["RESOURCE_GET_ERROR"] = 7] = "RESOURCE_GET_ERROR";
|
|
||||||
RCCallIWCallDisconnectedReason[RCCallIWCallDisconnectedReason["RESOURCE_PUBLISH_ERROR"] = 8] = "RESOURCE_PUBLISH_ERROR";
|
|
||||||
RCCallIWCallDisconnectedReason[RCCallIWCallDisconnectedReason["RESOURCE_SUBSCRIBE_ERROR"] = 9] = "RESOURCE_SUBSCRIBE_ERROR";
|
|
||||||
RCCallIWCallDisconnectedReason[RCCallIWCallDisconnectedReason["REMOTE_CANCEL"] = 10] = "REMOTE_CANCEL";
|
|
||||||
RCCallIWCallDisconnectedReason[RCCallIWCallDisconnectedReason["REMOTE_REJECT"] = 11] = "REMOTE_REJECT";
|
|
||||||
RCCallIWCallDisconnectedReason[RCCallIWCallDisconnectedReason["REMOTE_HANGUP"] = 12] = "REMOTE_HANGUP";
|
|
||||||
RCCallIWCallDisconnectedReason[RCCallIWCallDisconnectedReason["REMOTE_BUSY_LINE"] = 13] = "REMOTE_BUSY_LINE";
|
|
||||||
RCCallIWCallDisconnectedReason[RCCallIWCallDisconnectedReason["REMOTE_NO_RESPONSE"] = 14] = "REMOTE_NO_RESPONSE";
|
|
||||||
RCCallIWCallDisconnectedReason[RCCallIWCallDisconnectedReason["REMOTE_ENGINE_UNSUPPORTED"] = 15] = "REMOTE_ENGINE_UNSUPPORTED";
|
|
||||||
RCCallIWCallDisconnectedReason[RCCallIWCallDisconnectedReason["REMOTE_NETWORK_ERROR"] = 16] = "REMOTE_NETWORK_ERROR";
|
|
||||||
RCCallIWCallDisconnectedReason[RCCallIWCallDisconnectedReason["REMOTE_RESOURCE_GET_ERROR"] = 17] = "REMOTE_RESOURCE_GET_ERROR";
|
|
||||||
RCCallIWCallDisconnectedReason[RCCallIWCallDisconnectedReason["REMOTE_RESOURCE_PUBLISH_ERROR"] = 18] = "REMOTE_RESOURCE_PUBLISH_ERROR";
|
|
||||||
RCCallIWCallDisconnectedReason[RCCallIWCallDisconnectedReason["REMOTE_RESOURCE_SUBSCRIBE_ERROR"] = 19] = "REMOTE_RESOURCE_SUBSCRIBE_ERROR";
|
|
||||||
RCCallIWCallDisconnectedReason[RCCallIWCallDisconnectedReason["KICKED_BY_OTHER_CALL"] = 20] = "KICKED_BY_OTHER_CALL";
|
|
||||||
RCCallIWCallDisconnectedReason[RCCallIWCallDisconnectedReason["IN_OTHER_CALL"] = 21] = "IN_OTHER_CALL";
|
|
||||||
RCCallIWCallDisconnectedReason[RCCallIWCallDisconnectedReason["KICKED_BY_SERVER"] = 22] = "KICKED_BY_SERVER";
|
|
||||||
RCCallIWCallDisconnectedReason[RCCallIWCallDisconnectedReason["REMOTE_KICKED_BY_OTHER_CALL"] = 23] = "REMOTE_KICKED_BY_OTHER_CALL";
|
|
||||||
RCCallIWCallDisconnectedReason[RCCallIWCallDisconnectedReason["REMOTE_IN_OTHER_CALL"] = 24] = "REMOTE_IN_OTHER_CALL";
|
|
||||||
RCCallIWCallDisconnectedReason[RCCallIWCallDisconnectedReason["REMOTE_KICKED_BY_SERVER"] = 25] = "REMOTE_KICKED_BY_SERVER";
|
|
||||||
RCCallIWCallDisconnectedReason[RCCallIWCallDisconnectedReason["ACCEPT_BY_OTHER_CLIENT"] = 26] = "ACCEPT_BY_OTHER_CLIENT";
|
|
||||||
RCCallIWCallDisconnectedReason[RCCallIWCallDisconnectedReason["HANGUP_BY_OTHER_CLIENT"] = 27] = "HANGUP_BY_OTHER_CLIENT";
|
|
||||||
RCCallIWCallDisconnectedReason[RCCallIWCallDisconnectedReason["REJECTED_BY_BLACKLIST"] = 28] = "REJECTED_BY_BLACKLIST";
|
|
||||||
RCCallIWCallDisconnectedReason[RCCallIWCallDisconnectedReason["SERVICE_NOT_OPENED"] = 29] = "SERVICE_NOT_OPENED";
|
|
||||||
RCCallIWCallDisconnectedReason[RCCallIWCallDisconnectedReason["DROP_TO_OBSERVER"] = 30] = "DROP_TO_OBSERVER";
|
|
||||||
RCCallIWCallDisconnectedReason[RCCallIWCallDisconnectedReason["INIT_VIDEO_ERROR"] = 31] = "INIT_VIDEO_ERROR";
|
|
||||||
RCCallIWCallDisconnectedReason[RCCallIWCallDisconnectedReason["OTHER_DEVICE_HAD_ACCEPTED"] = 32] = "OTHER_DEVICE_HAD_ACCEPTED";
|
|
||||||
RCCallIWCallDisconnectedReason[RCCallIWCallDisconnectedReason["SERVICE_DISCONNECTED"] = 33] = "SERVICE_DISCONNECTED";
|
|
||||||
})(RCCallIWCallDisconnectedReason || (RCCallIWCallDisconnectedReason = {}));
|
|
||||||
|
|
||||||
var RCCallIWBeautyFilterType;
|
|
||||||
|
|
||||||
(function (RCCallIWBeautyFilterType) {
|
|
||||||
RCCallIWBeautyFilterType[RCCallIWBeautyFilterType["NONE"] = 0] = "NONE";
|
|
||||||
RCCallIWBeautyFilterType[RCCallIWBeautyFilterType["ESTHETIC"] = 1] = "ESTHETIC";
|
|
||||||
RCCallIWBeautyFilterType[RCCallIWBeautyFilterType["FRESH"] = 2] = "FRESH";
|
|
||||||
RCCallIWBeautyFilterType[RCCallIWBeautyFilterType["ROMANTIC"] = 3] = "ROMANTIC";
|
|
||||||
})(RCCallIWBeautyFilterType || (RCCallIWBeautyFilterType = {}));
|
|
||||||
|
|
||||||
const call = uni.requireNativePlugin('RongCloud-Call-RCUniCall');
|
|
||||||
const Platform = uni.getSystemInfoSync().platform;
|
|
||||||
logger.log('已进入index.js');
|
|
||||||
function init() {
|
|
||||||
logger.log(`init Platform->${Platform}`);
|
|
||||||
call.init({});
|
|
||||||
}
|
|
||||||
function unInit() {
|
|
||||||
logger.log(`unInit Platform->${Platform}`);
|
|
||||||
call.unInit();
|
|
||||||
}
|
|
||||||
function onCallReceived(listener) {
|
|
||||||
logger.log(`Engine:OnCallReceived 监听通话呼入 Platform->${Platform}`);
|
|
||||||
call.addEventListener("Engine:OnCallReceived", listener);
|
|
||||||
}
|
|
||||||
function onCallDisconnected(listener) {
|
|
||||||
logger.log(`Engine:OnCallDisconnected 监听通话结束 Platform->${Platform}`);
|
|
||||||
call.addEventListener("Engine:OnCallDisconnected", listener);
|
|
||||||
}
|
|
||||||
function onCallConnected(listener) {
|
|
||||||
logger.log(`Engine:OnCallConnected 已建立通话通话接通 Platform->${Platform}`);
|
|
||||||
call.addEventListener("Engine:OnCallConnected", listener);
|
|
||||||
}
|
|
||||||
function onRemoteUserInvited(listener) {
|
|
||||||
logger.log(`Engine:OnRemoteUserInvited 通话中的某一个参与者,邀请好友加入通话 Platform->${Platform}`);
|
|
||||||
call.addEventListener("Engine:OnRemoteUserInvited", listener);
|
|
||||||
}
|
|
||||||
function onRemoteUserJoined(listener) {
|
|
||||||
logger.log(`Engine:OnRemoteUserJoined 对端用户加入通话 Platform->${Platform}`);
|
|
||||||
call.addEventListener("Engine:OnRemoteUserJoined", listener);
|
|
||||||
}
|
|
||||||
function onRemoteUserLeft(listener) {
|
|
||||||
logger.log(`Engine:OnRemoteUserLeft 对端用户挂断(群聊触发) Platform->${Platform}`);
|
|
||||||
call.addEventListener("Engine:OnRemoteUserLeft", listener);
|
|
||||||
}
|
|
||||||
function onCallOutgoing(listener) {
|
|
||||||
logger.log(`Engine:OnCallOutgoing 电话已拨出,通知当前 call 的详细信息 Platform->${Platform}`);
|
|
||||||
call.addEventListener("Engine:OnCallOutgoing", listener);
|
|
||||||
}
|
|
||||||
function onRemoteUserRinging(listener) {
|
|
||||||
logger.log(`Engine:OnRemoteUserRinging 被叫端收到请求,发出振铃响应时监听 Platform->${Platform}`);
|
|
||||||
call.addEventListener("Engine:OnRemoteUserRinging", listener);
|
|
||||||
}
|
|
||||||
function onError(listener) {
|
|
||||||
logger.log(`Engine:OnError 通话出现错误 Platform->${Platform}`);
|
|
||||||
call.addEventListener("Engine:OnError", listener);
|
|
||||||
}
|
|
||||||
function onRemoteUserMediaTypeChanged(listener) {
|
|
||||||
logger.log(`Engine:OnRemoteUserMediaTypeChanged 对端用户切换了媒体类型 Platform->${Platform}`);
|
|
||||||
call.addEventListener("Engine:OnRemoteUserMediaTypeChanged", listener);
|
|
||||||
}
|
|
||||||
function onRemoteUserCameraStateChanged(listener) {
|
|
||||||
logger.log(`Engine:OnRemoteUserCameraStateChanged 对端用户关闭了摄像头 Platform->${Platform}`);
|
|
||||||
call.addEventListener("Engine:OnRemoteUserCameraStateChanged", listener);
|
|
||||||
}
|
|
||||||
function onRemoteUserMicrophoneStateChanged(listener) {
|
|
||||||
logger.log(`Engine:OnRemoteUserMicrophoneStateChanged 对端用户关闭了麦克风 Platform->${Platform}`);
|
|
||||||
call.addEventListener("Engine:OnRemoteUserMicrophoneStateChanged", listener);
|
|
||||||
}
|
|
||||||
function inviteUsers(userIds, observerUserIds) {
|
|
||||||
logger.log(`inviteUsers 邀请用户->${userIds} Platform->${Platform}`);
|
|
||||||
call.inviteUsers(userIds, observerUserIds);
|
|
||||||
}
|
|
||||||
function removeCallReceivedListener() {
|
|
||||||
logger.log(`removeCallReceivedListener`);
|
|
||||||
call.removeAllEventListeners('Engine:OnCallReceived');
|
|
||||||
}
|
|
||||||
function removeCallConnectedListener() {
|
|
||||||
logger.log(`removeCallConnectedListener`);
|
|
||||||
call.removeAllEventListeners('Engine:OnCallConnected');
|
|
||||||
}
|
|
||||||
function removeCallDisconnectedListener() {
|
|
||||||
logger.log(`removeCallDisconnectedListener`);
|
|
||||||
call.removeAllEventListeners('Engine:OnCallDisconnected');
|
|
||||||
}
|
|
||||||
function removeRemoteUserJoinedListener() {
|
|
||||||
logger.log(`removeRemoteUserJoinedListener`);
|
|
||||||
call.removeAllEventListeners('Engine:OnRemoteUserJoined');
|
|
||||||
}
|
|
||||||
function removeRemoteUserLeftListener() {
|
|
||||||
logger.log(`removeRemoteUserLeftListener`);
|
|
||||||
call.removeAllEventListeners('Engine:OnRemoteUserLeft');
|
|
||||||
}
|
|
||||||
function removeRemoteUserInvited() {
|
|
||||||
logger.log(`removeRemoteUserInvited`);
|
|
||||||
call.removeAllEventListeners('Engine:OnRemoteUserInvited');
|
|
||||||
}
|
|
||||||
function removeEnableCameraListener() {
|
|
||||||
logger.log(`removeEnableCameraListener`);
|
|
||||||
call.removeAllEventListeners('Engine:OnEnableCamera');
|
|
||||||
}
|
|
||||||
function removeSwitchCameraListener() {
|
|
||||||
logger.log(`removeSwitchCameraListener`);
|
|
||||||
call.removeAllEventListeners('Engine:OnSwitchCamera');
|
|
||||||
}
|
|
||||||
function removeErrorListener() {
|
|
||||||
logger.log(`removeErrorListener`);
|
|
||||||
call.removeAllEventListeners('Engine:OnError');
|
|
||||||
}
|
|
||||||
function removeCallOutgoingListener() {
|
|
||||||
logger.log(`removeCallOutgoingListener`);
|
|
||||||
call.removeAllEventListeners('Engine:OnCallOutgoing');
|
|
||||||
}
|
|
||||||
function removeRemoteUserRingingListener() {
|
|
||||||
logger.log(`removeRemoteUserRingingListener`);
|
|
||||||
call.removeAllEventListeners('Engine:OnRemoteUserRinging');
|
|
||||||
}
|
|
||||||
function removeRemoteUserMediaTypeChangedListener() {
|
|
||||||
logger.log(`removeRemoteUserMediaTypeChangedListener`);
|
|
||||||
call.removeAllEventListeners('Engine:OnRemoteUserMediaTypeChanged');
|
|
||||||
}
|
|
||||||
function getCurrentCallSession() {
|
|
||||||
logger.log(`getCurrentCallSession Platform->${Platform}`);
|
|
||||||
return call.getCurrentCallSession();
|
|
||||||
}
|
|
||||||
function hangup() {
|
|
||||||
logger.log(`hangup Platform->${Platform}`);
|
|
||||||
call.hangup();
|
|
||||||
}
|
|
||||||
function accept() {
|
|
||||||
logger.log(`accept Platform->${Platform}`);
|
|
||||||
call.accept();
|
|
||||||
}
|
|
||||||
function startSingleCall(targetId, type, extra) {
|
|
||||||
logger.log(`startSingleCall targetId->${targetId} type=>${type} extra=>${extra} Platform->${Platform}`);
|
|
||||||
call.startSingleCall(targetId, type, extra);
|
|
||||||
}
|
|
||||||
function startGroupCall(groupId, userIds, observerUserIds, type, extra) {
|
|
||||||
logger.log(`startGroupCall groupId->${groupId} userIds=>${userIds} observerUserIds=>${observerUserIds} type=>${type} extra=>${extra} Platform->${Platform}`);
|
|
||||||
call.startGroupCall(groupId, userIds, observerUserIds, type, extra);
|
|
||||||
}
|
|
||||||
function setVideoView(userId, ref, type, isZOrderOnTop = false) {
|
|
||||||
logger.log(`setVideoView userId->${userId} ref=>${ref} type=>${type} isZOrderOnTop=>${isZOrderOnTop} Platform->${Platform}`);
|
|
||||||
Platform === 'android' ? call.setVideoView(userId, ref, type, isZOrderOnTop) : call.setVideoView(userId, ref, type);
|
|
||||||
}
|
|
||||||
function enableSpeaker(isOpen) {
|
|
||||||
logger.log(`enableSpeaker isOPen->${isOpen} Platform->${Platform}`);
|
|
||||||
call.enableSpeaker(isOpen);
|
|
||||||
}
|
|
||||||
function enableMicrophone(isOpen) {
|
|
||||||
logger.log(`enableMicrophone isOPen->${isOpen} Platform->${Platform}`);
|
|
||||||
call.enableMicrophone(isOpen);
|
|
||||||
}
|
|
||||||
function switchCamera() {
|
|
||||||
logger.log(`switchCamera Platform->${Platform}`);
|
|
||||||
call.switchCamera();
|
|
||||||
}
|
|
||||||
function currentCamera() {
|
|
||||||
logger.log(`currentCamera Platform->${Platform}`);
|
|
||||||
return call.currentCamera();
|
|
||||||
}
|
|
||||||
function enableCamera(isOpen, camera) {
|
|
||||||
logger.log(`enableCamera isOpen=>${isOpen} camera=>${camera} Platform->${Platform}`);
|
|
||||||
call.enableCamera(isOpen, camera);
|
|
||||||
}
|
|
||||||
function changeMediaType(type) {
|
|
||||||
logger.log(`changeMediaType type=>${type} Platform->${Platform}`);
|
|
||||||
call.changeMediaType(type);
|
|
||||||
}
|
|
||||||
function setBeautyFilter(filter) {
|
|
||||||
logger.log(`setBeautyFilter filter=>${filter} Platform->${Platform}`);
|
|
||||||
call.setBeautyFilter(filter);
|
|
||||||
}
|
|
||||||
function getCurrentBeautyFilter() {
|
|
||||||
logger.log(`getCurrentBeautyFilter Platform->${Platform}`);
|
|
||||||
return call.getCurrentBeautyFilter();
|
|
||||||
}
|
|
||||||
function setBeautyOption(enable = false, option) {
|
|
||||||
logger.log(`setBeautyOption enable=>${enable} option=>${option} Platform->${Platform}`);
|
|
||||||
call.setBeautyOption(enable, option);
|
|
||||||
}
|
|
||||||
function getCurrentBeautyOption() {
|
|
||||||
logger.log(`getCurrentBeautyOption Platform->${Platform}`);
|
|
||||||
return call.getCurrentBeautyOption();
|
|
||||||
}
|
|
||||||
function resetBeauty() {
|
|
||||||
logger.log(`resetBeauty Platform->${Platform}`);
|
|
||||||
call.resetBeauty();
|
|
||||||
}
|
|
||||||
|
|
||||||
export { RCCallIWBeautyFilterType, RCCallIWCallDisconnectedReason, RCCallIWCamera, RCCallIWMediaType, RCUNICallErrorCode, accept, changeMediaType, currentCamera, enableCamera, enableMicrophone, enableSpeaker, getCurrentBeautyFilter, getCurrentBeautyOption, getCurrentCallSession, hangup, init, inviteUsers, onCallConnected, onCallDisconnected, onCallOutgoing, onCallReceived, onError, onRemoteUserCameraStateChanged, onRemoteUserInvited, onRemoteUserJoined, onRemoteUserLeft, onRemoteUserMediaTypeChanged, onRemoteUserMicrophoneStateChanged, onRemoteUserRinging, removeCallConnectedListener, removeCallDisconnectedListener, removeCallOutgoingListener, removeCallReceivedListener, removeEnableCameraListener, removeErrorListener, removeRemoteUserInvited, removeRemoteUserJoinedListener, removeRemoteUserLeftListener, removeRemoteUserMediaTypeChangedListener, removeRemoteUserRingingListener, removeSwitchCameraListener, resetBeauty, setBeautyFilter, setBeautyOption, setVideoView, startGroupCall, startSingleCall, switchCamera, unInit };
|
|
||||||
@@ -1,333 +0,0 @@
|
|||||||
/*
|
|
||||||
* RCCallUni - v5.1.14-release.1
|
|
||||||
* CommitId - a184e82065a309fc565be987321c44e9da02abbb
|
|
||||||
* Thu Jan 06 2022 16:03:36 GMT+0800 (中国标准时间)
|
|
||||||
* ©2020 RongCloud, Inc. All rights reserved.
|
|
||||||
*/
|
|
||||||
'use strict';
|
|
||||||
|
|
||||||
Object.defineProperty(exports, '__esModule', { value: true });
|
|
||||||
|
|
||||||
class Logger {
|
|
||||||
tag;
|
|
||||||
|
|
||||||
constructor(tag) {
|
|
||||||
this.tag = tag;
|
|
||||||
}
|
|
||||||
|
|
||||||
log(str) {
|
|
||||||
console.log(`[${this.tag}] ${new Date().toISOString()} ${str}`);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
const logger = new Logger('RCUNICallLib');
|
|
||||||
|
|
||||||
exports.RCCallIWCamera = void 0;
|
|
||||||
|
|
||||||
(function (RCCallIWCamera) {
|
|
||||||
RCCallIWCamera[RCCallIWCamera["NONE"] = -1] = "NONE";
|
|
||||||
RCCallIWCamera[RCCallIWCamera["FRONT"] = 0] = "FRONT";
|
|
||||||
RCCallIWCamera[RCCallIWCamera["BACK"] = 1] = "BACK";
|
|
||||||
})(exports.RCCallIWCamera || (exports.RCCallIWCamera = {}));
|
|
||||||
|
|
||||||
exports.RCCallIWMediaType = void 0;
|
|
||||||
|
|
||||||
(function (RCCallIWMediaType) {
|
|
||||||
RCCallIWMediaType[RCCallIWMediaType["AUDIO"] = 0] = "AUDIO";
|
|
||||||
RCCallIWMediaType[RCCallIWMediaType["AUDIO_VIDEO"] = 1] = "AUDIO_VIDEO";
|
|
||||||
})(exports.RCCallIWMediaType || (exports.RCCallIWMediaType = {}));
|
|
||||||
|
|
||||||
exports.RCUNICallErrorCode = void 0;
|
|
||||||
|
|
||||||
(function (RCUNICallErrorCode) {
|
|
||||||
RCUNICallErrorCode[RCUNICallErrorCode["SUCCESS"] = 0] = "SUCCESS";
|
|
||||||
RCUNICallErrorCode[RCUNICallErrorCode["ENGINE_NOT_FOUND"] = 1] = "ENGINE_NOT_FOUND";
|
|
||||||
RCUNICallErrorCode[RCUNICallErrorCode["NETWORK_UNAVAILABLE"] = 2] = "NETWORK_UNAVAILABLE";
|
|
||||||
RCUNICallErrorCode[RCUNICallErrorCode["ONE_CALL_EXISTED"] = 3] = "ONE_CALL_EXISTED";
|
|
||||||
RCUNICallErrorCode[RCUNICallErrorCode["OPERATION_UNAVAILABLE"] = 4] = "OPERATION_UNAVAILABLE";
|
|
||||||
RCUNICallErrorCode[RCUNICallErrorCode["INVALID_PARAM"] = 5] = "INVALID_PARAM";
|
|
||||||
RCUNICallErrorCode[RCUNICallErrorCode["NETWORK_UNSTABLE"] = 6] = "NETWORK_UNSTABLE";
|
|
||||||
RCUNICallErrorCode[RCUNICallErrorCode["MEDIA_REQUEST_FAILED"] = 7] = "MEDIA_REQUEST_FAILED";
|
|
||||||
RCUNICallErrorCode[RCUNICallErrorCode["MEDIA_SERVER_NOT_READY"] = 8] = "MEDIA_SERVER_NOT_READY";
|
|
||||||
RCUNICallErrorCode[RCUNICallErrorCode["MEDIA_SERVER_NOT_INITIALIZED"] = 9] = "MEDIA_SERVER_NOT_INITIALIZED";
|
|
||||||
RCUNICallErrorCode[RCUNICallErrorCode["MEDIA_REQUEST_TIMEOUT"] = 10] = "MEDIA_REQUEST_TIMEOUT";
|
|
||||||
RCUNICallErrorCode[RCUNICallErrorCode["MEDIA_UNKOWN_ERROR"] = 11] = "MEDIA_UNKOWN_ERROR";
|
|
||||||
RCUNICallErrorCode[RCUNICallErrorCode["MEDIA_KICKED_BY_SERVER_ERROR"] = 12] = "MEDIA_KICKED_BY_SERVER_ERROR";
|
|
||||||
RCUNICallErrorCode[RCUNICallErrorCode["MEDIA_SERVER_CLOSED_ERROR"] = 13] = "MEDIA_SERVER_CLOSED_ERROR";
|
|
||||||
RCUNICallErrorCode[RCUNICallErrorCode["MEDIA_SERVER_PUBLISH_ERROR"] = 14] = "MEDIA_SERVER_PUBLISH_ERROR";
|
|
||||||
RCUNICallErrorCode[RCUNICallErrorCode["MEDIA_SERVER_SUBSCRIBE_ERROR"] = 15] = "MEDIA_SERVER_SUBSCRIBE_ERROR";
|
|
||||||
RCUNICallErrorCode[RCUNICallErrorCode["MEDIA_JOIN_ROOM_REFUSE_ERROR"] = 16] = "MEDIA_JOIN_ROOM_REFUSE_ERROR";
|
|
||||||
})(exports.RCUNICallErrorCode || (exports.RCUNICallErrorCode = {}));
|
|
||||||
|
|
||||||
exports.RCCallIWCallDisconnectedReason = void 0;
|
|
||||||
|
|
||||||
(function (RCCallIWCallDisconnectedReason) {
|
|
||||||
RCCallIWCallDisconnectedReason[RCCallIWCallDisconnectedReason["CANCEL"] = 0] = "CANCEL";
|
|
||||||
RCCallIWCallDisconnectedReason[RCCallIWCallDisconnectedReason["REJECT"] = 1] = "REJECT";
|
|
||||||
RCCallIWCallDisconnectedReason[RCCallIWCallDisconnectedReason["HANGUP"] = 2] = "HANGUP";
|
|
||||||
RCCallIWCallDisconnectedReason[RCCallIWCallDisconnectedReason["BUSY_LINE"] = 3] = "BUSY_LINE";
|
|
||||||
RCCallIWCallDisconnectedReason[RCCallIWCallDisconnectedReason["NO_RESPONSE"] = 4] = "NO_RESPONSE";
|
|
||||||
RCCallIWCallDisconnectedReason[RCCallIWCallDisconnectedReason["ENGINE_UNSUPPORTED"] = 5] = "ENGINE_UNSUPPORTED";
|
|
||||||
RCCallIWCallDisconnectedReason[RCCallIWCallDisconnectedReason["NETWORK_ERROR"] = 6] = "NETWORK_ERROR";
|
|
||||||
RCCallIWCallDisconnectedReason[RCCallIWCallDisconnectedReason["RESOURCE_GET_ERROR"] = 7] = "RESOURCE_GET_ERROR";
|
|
||||||
RCCallIWCallDisconnectedReason[RCCallIWCallDisconnectedReason["RESOURCE_PUBLISH_ERROR"] = 8] = "RESOURCE_PUBLISH_ERROR";
|
|
||||||
RCCallIWCallDisconnectedReason[RCCallIWCallDisconnectedReason["RESOURCE_SUBSCRIBE_ERROR"] = 9] = "RESOURCE_SUBSCRIBE_ERROR";
|
|
||||||
RCCallIWCallDisconnectedReason[RCCallIWCallDisconnectedReason["REMOTE_CANCEL"] = 10] = "REMOTE_CANCEL";
|
|
||||||
RCCallIWCallDisconnectedReason[RCCallIWCallDisconnectedReason["REMOTE_REJECT"] = 11] = "REMOTE_REJECT";
|
|
||||||
RCCallIWCallDisconnectedReason[RCCallIWCallDisconnectedReason["REMOTE_HANGUP"] = 12] = "REMOTE_HANGUP";
|
|
||||||
RCCallIWCallDisconnectedReason[RCCallIWCallDisconnectedReason["REMOTE_BUSY_LINE"] = 13] = "REMOTE_BUSY_LINE";
|
|
||||||
RCCallIWCallDisconnectedReason[RCCallIWCallDisconnectedReason["REMOTE_NO_RESPONSE"] = 14] = "REMOTE_NO_RESPONSE";
|
|
||||||
RCCallIWCallDisconnectedReason[RCCallIWCallDisconnectedReason["REMOTE_ENGINE_UNSUPPORTED"] = 15] = "REMOTE_ENGINE_UNSUPPORTED";
|
|
||||||
RCCallIWCallDisconnectedReason[RCCallIWCallDisconnectedReason["REMOTE_NETWORK_ERROR"] = 16] = "REMOTE_NETWORK_ERROR";
|
|
||||||
RCCallIWCallDisconnectedReason[RCCallIWCallDisconnectedReason["REMOTE_RESOURCE_GET_ERROR"] = 17] = "REMOTE_RESOURCE_GET_ERROR";
|
|
||||||
RCCallIWCallDisconnectedReason[RCCallIWCallDisconnectedReason["REMOTE_RESOURCE_PUBLISH_ERROR"] = 18] = "REMOTE_RESOURCE_PUBLISH_ERROR";
|
|
||||||
RCCallIWCallDisconnectedReason[RCCallIWCallDisconnectedReason["REMOTE_RESOURCE_SUBSCRIBE_ERROR"] = 19] = "REMOTE_RESOURCE_SUBSCRIBE_ERROR";
|
|
||||||
RCCallIWCallDisconnectedReason[RCCallIWCallDisconnectedReason["KICKED_BY_OTHER_CALL"] = 20] = "KICKED_BY_OTHER_CALL";
|
|
||||||
RCCallIWCallDisconnectedReason[RCCallIWCallDisconnectedReason["IN_OTHER_CALL"] = 21] = "IN_OTHER_CALL";
|
|
||||||
RCCallIWCallDisconnectedReason[RCCallIWCallDisconnectedReason["KICKED_BY_SERVER"] = 22] = "KICKED_BY_SERVER";
|
|
||||||
RCCallIWCallDisconnectedReason[RCCallIWCallDisconnectedReason["REMOTE_KICKED_BY_OTHER_CALL"] = 23] = "REMOTE_KICKED_BY_OTHER_CALL";
|
|
||||||
RCCallIWCallDisconnectedReason[RCCallIWCallDisconnectedReason["REMOTE_IN_OTHER_CALL"] = 24] = "REMOTE_IN_OTHER_CALL";
|
|
||||||
RCCallIWCallDisconnectedReason[RCCallIWCallDisconnectedReason["REMOTE_KICKED_BY_SERVER"] = 25] = "REMOTE_KICKED_BY_SERVER";
|
|
||||||
RCCallIWCallDisconnectedReason[RCCallIWCallDisconnectedReason["ACCEPT_BY_OTHER_CLIENT"] = 26] = "ACCEPT_BY_OTHER_CLIENT";
|
|
||||||
RCCallIWCallDisconnectedReason[RCCallIWCallDisconnectedReason["HANGUP_BY_OTHER_CLIENT"] = 27] = "HANGUP_BY_OTHER_CLIENT";
|
|
||||||
RCCallIWCallDisconnectedReason[RCCallIWCallDisconnectedReason["REJECTED_BY_BLACKLIST"] = 28] = "REJECTED_BY_BLACKLIST";
|
|
||||||
RCCallIWCallDisconnectedReason[RCCallIWCallDisconnectedReason["SERVICE_NOT_OPENED"] = 29] = "SERVICE_NOT_OPENED";
|
|
||||||
RCCallIWCallDisconnectedReason[RCCallIWCallDisconnectedReason["DROP_TO_OBSERVER"] = 30] = "DROP_TO_OBSERVER";
|
|
||||||
RCCallIWCallDisconnectedReason[RCCallIWCallDisconnectedReason["INIT_VIDEO_ERROR"] = 31] = "INIT_VIDEO_ERROR";
|
|
||||||
RCCallIWCallDisconnectedReason[RCCallIWCallDisconnectedReason["OTHER_DEVICE_HAD_ACCEPTED"] = 32] = "OTHER_DEVICE_HAD_ACCEPTED";
|
|
||||||
RCCallIWCallDisconnectedReason[RCCallIWCallDisconnectedReason["SERVICE_DISCONNECTED"] = 33] = "SERVICE_DISCONNECTED";
|
|
||||||
})(exports.RCCallIWCallDisconnectedReason || (exports.RCCallIWCallDisconnectedReason = {}));
|
|
||||||
|
|
||||||
exports.RCCallIWBeautyFilterType = void 0;
|
|
||||||
|
|
||||||
(function (RCCallIWBeautyFilterType) {
|
|
||||||
RCCallIWBeautyFilterType[RCCallIWBeautyFilterType["NONE"] = 0] = "NONE";
|
|
||||||
RCCallIWBeautyFilterType[RCCallIWBeautyFilterType["ESTHETIC"] = 1] = "ESTHETIC";
|
|
||||||
RCCallIWBeautyFilterType[RCCallIWBeautyFilterType["FRESH"] = 2] = "FRESH";
|
|
||||||
RCCallIWBeautyFilterType[RCCallIWBeautyFilterType["ROMANTIC"] = 3] = "ROMANTIC";
|
|
||||||
})(exports.RCCallIWBeautyFilterType || (exports.RCCallIWBeautyFilterType = {}));
|
|
||||||
|
|
||||||
const call = uni.requireNativePlugin('RongCloud-Call-RCUniCall');
|
|
||||||
const Platform = uni.getSystemInfoSync().platform;
|
|
||||||
logger.log('已进入index.js');
|
|
||||||
function init() {
|
|
||||||
logger.log(`init Platform->${Platform}`);
|
|
||||||
call.init({});
|
|
||||||
}
|
|
||||||
function unInit() {
|
|
||||||
logger.log(`unInit Platform->${Platform}`);
|
|
||||||
call.unInit();
|
|
||||||
}
|
|
||||||
function onCallReceived(listener) {
|
|
||||||
logger.log(`Engine:OnCallReceived 监听通话呼入 Platform->${Platform}`);
|
|
||||||
call.addEventListener("Engine:OnCallReceived", listener);
|
|
||||||
}
|
|
||||||
function onCallDisconnected(listener) {
|
|
||||||
logger.log(`Engine:OnCallDisconnected 监听通话结束 Platform->${Platform}`);
|
|
||||||
call.addEventListener("Engine:OnCallDisconnected", listener);
|
|
||||||
}
|
|
||||||
function onCallConnected(listener) {
|
|
||||||
logger.log(`Engine:OnCallConnected 已建立通话通话接通 Platform->${Platform}`);
|
|
||||||
call.addEventListener("Engine:OnCallConnected", listener);
|
|
||||||
}
|
|
||||||
function onRemoteUserInvited(listener) {
|
|
||||||
logger.log(`Engine:OnRemoteUserInvited 通话中的某一个参与者,邀请好友加入通话 Platform->${Platform}`);
|
|
||||||
call.addEventListener("Engine:OnRemoteUserInvited", listener);
|
|
||||||
}
|
|
||||||
function onRemoteUserJoined(listener) {
|
|
||||||
logger.log(`Engine:OnRemoteUserJoined 对端用户加入通话 Platform->${Platform}`);
|
|
||||||
call.addEventListener("Engine:OnRemoteUserJoined", listener);
|
|
||||||
}
|
|
||||||
function onRemoteUserLeft(listener) {
|
|
||||||
logger.log(`Engine:OnRemoteUserLeft 对端用户挂断(群聊触发) Platform->${Platform}`);
|
|
||||||
call.addEventListener("Engine:OnRemoteUserLeft", listener);
|
|
||||||
}
|
|
||||||
function onCallOutgoing(listener) {
|
|
||||||
logger.log(`Engine:OnCallOutgoing 电话已拨出,通知当前 call 的详细信息 Platform->${Platform}`);
|
|
||||||
call.addEventListener("Engine:OnCallOutgoing", listener);
|
|
||||||
}
|
|
||||||
function onRemoteUserRinging(listener) {
|
|
||||||
logger.log(`Engine:OnRemoteUserRinging 被叫端收到请求,发出振铃响应时监听 Platform->${Platform}`);
|
|
||||||
call.addEventListener("Engine:OnRemoteUserRinging", listener);
|
|
||||||
}
|
|
||||||
function onError(listener) {
|
|
||||||
logger.log(`Engine:OnError 通话出现错误 Platform->${Platform}`);
|
|
||||||
call.addEventListener("Engine:OnError", listener);
|
|
||||||
}
|
|
||||||
function onRemoteUserMediaTypeChanged(listener) {
|
|
||||||
logger.log(`Engine:OnRemoteUserMediaTypeChanged 对端用户切换了媒体类型 Platform->${Platform}`);
|
|
||||||
call.addEventListener("Engine:OnRemoteUserMediaTypeChanged", listener);
|
|
||||||
}
|
|
||||||
function onRemoteUserCameraStateChanged(listener) {
|
|
||||||
logger.log(`Engine:OnRemoteUserCameraStateChanged 对端用户关闭了摄像头 Platform->${Platform}`);
|
|
||||||
call.addEventListener("Engine:OnRemoteUserCameraStateChanged", listener);
|
|
||||||
}
|
|
||||||
function onRemoteUserMicrophoneStateChanged(listener) {
|
|
||||||
logger.log(`Engine:OnRemoteUserMicrophoneStateChanged 对端用户关闭了麦克风 Platform->${Platform}`);
|
|
||||||
call.addEventListener("Engine:OnRemoteUserMicrophoneStateChanged", listener);
|
|
||||||
}
|
|
||||||
function inviteUsers(userIds, observerUserIds) {
|
|
||||||
logger.log(`inviteUsers 邀请用户->${userIds} Platform->${Platform}`);
|
|
||||||
call.inviteUsers(userIds, observerUserIds);
|
|
||||||
}
|
|
||||||
function removeCallReceivedListener() {
|
|
||||||
logger.log(`removeCallReceivedListener`);
|
|
||||||
call.removeAllEventListeners('Engine:OnCallReceived');
|
|
||||||
}
|
|
||||||
function removeCallConnectedListener() {
|
|
||||||
logger.log(`removeCallConnectedListener`);
|
|
||||||
call.removeAllEventListeners('Engine:OnCallConnected');
|
|
||||||
}
|
|
||||||
function removeCallDisconnectedListener() {
|
|
||||||
logger.log(`removeCallDisconnectedListener`);
|
|
||||||
call.removeAllEventListeners('Engine:OnCallDisconnected');
|
|
||||||
}
|
|
||||||
function removeRemoteUserJoinedListener() {
|
|
||||||
logger.log(`removeRemoteUserJoinedListener`);
|
|
||||||
call.removeAllEventListeners('Engine:OnRemoteUserJoined');
|
|
||||||
}
|
|
||||||
function removeRemoteUserLeftListener() {
|
|
||||||
logger.log(`removeRemoteUserLeftListener`);
|
|
||||||
call.removeAllEventListeners('Engine:OnRemoteUserLeft');
|
|
||||||
}
|
|
||||||
function removeRemoteUserInvited() {
|
|
||||||
logger.log(`removeRemoteUserInvited`);
|
|
||||||
call.removeAllEventListeners('Engine:OnRemoteUserInvited');
|
|
||||||
}
|
|
||||||
function removeEnableCameraListener() {
|
|
||||||
logger.log(`removeEnableCameraListener`);
|
|
||||||
call.removeAllEventListeners('Engine:OnEnableCamera');
|
|
||||||
}
|
|
||||||
function removeSwitchCameraListener() {
|
|
||||||
logger.log(`removeSwitchCameraListener`);
|
|
||||||
call.removeAllEventListeners('Engine:OnSwitchCamera');
|
|
||||||
}
|
|
||||||
function removeErrorListener() {
|
|
||||||
logger.log(`removeErrorListener`);
|
|
||||||
call.removeAllEventListeners('Engine:OnError');
|
|
||||||
}
|
|
||||||
function removeCallOutgoingListener() {
|
|
||||||
logger.log(`removeCallOutgoingListener`);
|
|
||||||
call.removeAllEventListeners('Engine:OnCallOutgoing');
|
|
||||||
}
|
|
||||||
function removeRemoteUserRingingListener() {
|
|
||||||
logger.log(`removeRemoteUserRingingListener`);
|
|
||||||
call.removeAllEventListeners('Engine:OnRemoteUserRinging');
|
|
||||||
}
|
|
||||||
function removeRemoteUserMediaTypeChangedListener() {
|
|
||||||
logger.log(`removeRemoteUserMediaTypeChangedListener`);
|
|
||||||
call.removeAllEventListeners('Engine:OnRemoteUserMediaTypeChanged');
|
|
||||||
}
|
|
||||||
function getCurrentCallSession() {
|
|
||||||
logger.log(`getCurrentCallSession Platform->${Platform}`);
|
|
||||||
return call.getCurrentCallSession();
|
|
||||||
}
|
|
||||||
function hangup() {
|
|
||||||
logger.log(`hangup Platform->${Platform}`);
|
|
||||||
call.hangup();
|
|
||||||
}
|
|
||||||
function accept() {
|
|
||||||
logger.log(`accept Platform->${Platform}`);
|
|
||||||
call.accept();
|
|
||||||
}
|
|
||||||
function startSingleCall(targetId, type, extra) {
|
|
||||||
logger.log(`startSingleCall targetId->${targetId} type=>${type} extra=>${extra} Platform->${Platform}`);
|
|
||||||
call.startSingleCall(targetId, type, extra);
|
|
||||||
}
|
|
||||||
function startGroupCall(groupId, userIds, observerUserIds, type, extra) {
|
|
||||||
logger.log(`startGroupCall groupId->${groupId} userIds=>${userIds} observerUserIds=>${observerUserIds} type=>${type} extra=>${extra} Platform->${Platform}`);
|
|
||||||
call.startGroupCall(groupId, userIds, observerUserIds, type, extra);
|
|
||||||
}
|
|
||||||
function setVideoView(userId, ref, type, isZOrderOnTop = false) {
|
|
||||||
logger.log(`setVideoView userId->${userId} ref=>${ref} type=>${type} isZOrderOnTop=>${isZOrderOnTop} Platform->${Platform}`);
|
|
||||||
Platform === 'android' ? call.setVideoView(userId, ref, type, isZOrderOnTop) : call.setVideoView(userId, ref, type);
|
|
||||||
}
|
|
||||||
function enableSpeaker(isOpen) {
|
|
||||||
logger.log(`enableSpeaker isOPen->${isOpen} Platform->${Platform}`);
|
|
||||||
call.enableSpeaker(isOpen);
|
|
||||||
}
|
|
||||||
function enableMicrophone(isOpen) {
|
|
||||||
logger.log(`enableMicrophone isOPen->${isOpen} Platform->${Platform}`);
|
|
||||||
call.enableMicrophone(isOpen);
|
|
||||||
}
|
|
||||||
function switchCamera() {
|
|
||||||
logger.log(`switchCamera Platform->${Platform}`);
|
|
||||||
call.switchCamera();
|
|
||||||
}
|
|
||||||
function currentCamera() {
|
|
||||||
logger.log(`currentCamera Platform->${Platform}`);
|
|
||||||
return call.currentCamera();
|
|
||||||
}
|
|
||||||
function enableCamera(isOpen, camera) {
|
|
||||||
logger.log(`enableCamera isOpen=>${isOpen} camera=>${camera} Platform->${Platform}`);
|
|
||||||
call.enableCamera(isOpen, camera);
|
|
||||||
}
|
|
||||||
function changeMediaType(type) {
|
|
||||||
logger.log(`changeMediaType type=>${type} Platform->${Platform}`);
|
|
||||||
call.changeMediaType(type);
|
|
||||||
}
|
|
||||||
function setBeautyFilter(filter) {
|
|
||||||
logger.log(`setBeautyFilter filter=>${filter} Platform->${Platform}`);
|
|
||||||
call.setBeautyFilter(filter);
|
|
||||||
}
|
|
||||||
function getCurrentBeautyFilter() {
|
|
||||||
logger.log(`getCurrentBeautyFilter Platform->${Platform}`);
|
|
||||||
return call.getCurrentBeautyFilter();
|
|
||||||
}
|
|
||||||
function setBeautyOption(enable = false, option) {
|
|
||||||
logger.log(`setBeautyOption enable=>${enable} option=>${option} Platform->${Platform}`);
|
|
||||||
call.setBeautyOption(enable, option);
|
|
||||||
}
|
|
||||||
function getCurrentBeautyOption() {
|
|
||||||
logger.log(`getCurrentBeautyOption Platform->${Platform}`);
|
|
||||||
return call.getCurrentBeautyOption();
|
|
||||||
}
|
|
||||||
function resetBeauty() {
|
|
||||||
logger.log(`resetBeauty Platform->${Platform}`);
|
|
||||||
call.resetBeauty();
|
|
||||||
}
|
|
||||||
|
|
||||||
exports.accept = accept;
|
|
||||||
exports.changeMediaType = changeMediaType;
|
|
||||||
exports.currentCamera = currentCamera;
|
|
||||||
exports.enableCamera = enableCamera;
|
|
||||||
exports.enableMicrophone = enableMicrophone;
|
|
||||||
exports.enableSpeaker = enableSpeaker;
|
|
||||||
exports.getCurrentBeautyFilter = getCurrentBeautyFilter;
|
|
||||||
exports.getCurrentBeautyOption = getCurrentBeautyOption;
|
|
||||||
exports.getCurrentCallSession = getCurrentCallSession;
|
|
||||||
exports.hangup = hangup;
|
|
||||||
exports.init = init;
|
|
||||||
exports.inviteUsers = inviteUsers;
|
|
||||||
exports.onCallConnected = onCallConnected;
|
|
||||||
exports.onCallDisconnected = onCallDisconnected;
|
|
||||||
exports.onCallOutgoing = onCallOutgoing;
|
|
||||||
exports.onCallReceived = onCallReceived;
|
|
||||||
exports.onError = onError;
|
|
||||||
exports.onRemoteUserCameraStateChanged = onRemoteUserCameraStateChanged;
|
|
||||||
exports.onRemoteUserInvited = onRemoteUserInvited;
|
|
||||||
exports.onRemoteUserJoined = onRemoteUserJoined;
|
|
||||||
exports.onRemoteUserLeft = onRemoteUserLeft;
|
|
||||||
exports.onRemoteUserMediaTypeChanged = onRemoteUserMediaTypeChanged;
|
|
||||||
exports.onRemoteUserMicrophoneStateChanged = onRemoteUserMicrophoneStateChanged;
|
|
||||||
exports.onRemoteUserRinging = onRemoteUserRinging;
|
|
||||||
exports.removeCallConnectedListener = removeCallConnectedListener;
|
|
||||||
exports.removeCallDisconnectedListener = removeCallDisconnectedListener;
|
|
||||||
exports.removeCallOutgoingListener = removeCallOutgoingListener;
|
|
||||||
exports.removeCallReceivedListener = removeCallReceivedListener;
|
|
||||||
exports.removeEnableCameraListener = removeEnableCameraListener;
|
|
||||||
exports.removeErrorListener = removeErrorListener;
|
|
||||||
exports.removeRemoteUserInvited = removeRemoteUserInvited;
|
|
||||||
exports.removeRemoteUserJoinedListener = removeRemoteUserJoinedListener;
|
|
||||||
exports.removeRemoteUserLeftListener = removeRemoteUserLeftListener;
|
|
||||||
exports.removeRemoteUserMediaTypeChangedListener = removeRemoteUserMediaTypeChangedListener;
|
|
||||||
exports.removeRemoteUserRingingListener = removeRemoteUserRingingListener;
|
|
||||||
exports.removeSwitchCameraListener = removeSwitchCameraListener;
|
|
||||||
exports.resetBeauty = resetBeauty;
|
|
||||||
exports.setBeautyFilter = setBeautyFilter;
|
|
||||||
exports.setBeautyOption = setBeautyOption;
|
|
||||||
exports.setVideoView = setVideoView;
|
|
||||||
exports.startGroupCall = startGroupCall;
|
|
||||||
exports.startSingleCall = startSingleCall;
|
|
||||||
exports.switchCamera = switchCamera;
|
|
||||||
exports.unInit = unInit;
|
|
||||||
@@ -1,80 +0,0 @@
|
|||||||
{
|
|
||||||
"id": "RongCloud-CallWrapper",
|
|
||||||
"displayName": "RongCloud-CallWrapper",
|
|
||||||
"version": "5.1.15",
|
|
||||||
"description": "RongCloud-CallWrapper",
|
|
||||||
"keywords": [
|
|
||||||
"RongCloud-CallWrapper"
|
|
||||||
],
|
|
||||||
"repository": "",
|
|
||||||
"engines": {
|
|
||||||
"HBuilderX": "^3.1.0"
|
|
||||||
},
|
|
||||||
"dcloudext": {
|
|
||||||
"category": [
|
|
||||||
"JS SDK",
|
|
||||||
"通用 SDK"
|
|
||||||
],
|
|
||||||
"sale": {
|
|
||||||
"regular": {
|
|
||||||
"price": "0.00"
|
|
||||||
},
|
|
||||||
"sourcecode": {
|
|
||||||
"price": "0.00"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"contact": {
|
|
||||||
"qq": ""
|
|
||||||
},
|
|
||||||
"declaration": {
|
|
||||||
"ads": "无",
|
|
||||||
"data": "插件不采集任何数据",
|
|
||||||
"permissions": "无"
|
|
||||||
},
|
|
||||||
"npmurl": ""
|
|
||||||
},
|
|
||||||
"uni_modules": {
|
|
||||||
"dependencies": [],
|
|
||||||
"encrypt": [],
|
|
||||||
"platforms": {
|
|
||||||
"cloud": {
|
|
||||||
"tcb": "y",
|
|
||||||
"aliyun": "y"
|
|
||||||
},
|
|
||||||
"client": {
|
|
||||||
"Vue": {
|
|
||||||
"vue2": "y",
|
|
||||||
"vue3": "y"
|
|
||||||
},
|
|
||||||
"App": {
|
|
||||||
"app-vue": "y",
|
|
||||||
"app-nvue": "y"
|
|
||||||
},
|
|
||||||
"H5-mobile": {
|
|
||||||
"Safari": "n",
|
|
||||||
"Android Browser": "n",
|
|
||||||
"微信浏览器(Android)": "n",
|
|
||||||
"QQ浏览器(Android)": "n"
|
|
||||||
},
|
|
||||||
"H5-pc": {
|
|
||||||
"Chrome": "n",
|
|
||||||
"IE": "n",
|
|
||||||
"Edge": "n",
|
|
||||||
"Firefox": "n",
|
|
||||||
"Safari": "n"
|
|
||||||
},
|
|
||||||
"小程序": {
|
|
||||||
"微信": "n",
|
|
||||||
"阿里": "n",
|
|
||||||
"百度": "n",
|
|
||||||
"字节跳动": "n",
|
|
||||||
"QQ": "n"
|
|
||||||
},
|
|
||||||
"快应用": {
|
|
||||||
"华为": "n",
|
|
||||||
"联盟": "n"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
# RongCloud-CallWrapper
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
## 5.1.3-7(2022-01-19)
|
|
||||||
调整私聊已读回执回调参数
|
|
||||||
## 0.0.1(2022-01-19)
|
|
||||||
从npm迁入插件市场
|
|
||||||
1719
uni_modules/RongCloud-IMWrapper/js_sdk/index.d.ts
vendored
@@ -1,80 +0,0 @@
|
|||||||
{
|
|
||||||
"id": "RongCloud-IMWrapper",
|
|
||||||
"displayName": "RongCloud-IMWrapper",
|
|
||||||
"version": "5.1.3-7",
|
|
||||||
"description": "融云IM原生插件包装层",
|
|
||||||
"keywords": [
|
|
||||||
"RongCloud-IMWrapper"
|
|
||||||
],
|
|
||||||
"repository": "",
|
|
||||||
"engines": {
|
|
||||||
"HBuilderX": "^3.1.0"
|
|
||||||
},
|
|
||||||
"dcloudext": {
|
|
||||||
"category": [
|
|
||||||
"JS SDK",
|
|
||||||
"通用 SDK"
|
|
||||||
],
|
|
||||||
"sale": {
|
|
||||||
"regular": {
|
|
||||||
"price": "0.00"
|
|
||||||
},
|
|
||||||
"sourcecode": {
|
|
||||||
"price": "0.00"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"contact": {
|
|
||||||
"qq": ""
|
|
||||||
},
|
|
||||||
"declaration": {
|
|
||||||
"ads": "无",
|
|
||||||
"data": "插件不采集任何数据",
|
|
||||||
"permissions": "无"
|
|
||||||
},
|
|
||||||
"npmurl": ""
|
|
||||||
},
|
|
||||||
"uni_modules": {
|
|
||||||
"dependencies": [],
|
|
||||||
"encrypt": [],
|
|
||||||
"platforms": {
|
|
||||||
"cloud": {
|
|
||||||
"tcb": "y",
|
|
||||||
"aliyun": "y"
|
|
||||||
},
|
|
||||||
"client": {
|
|
||||||
"Vue": {
|
|
||||||
"vue2": "n",
|
|
||||||
"vue3": "n"
|
|
||||||
},
|
|
||||||
"App": {
|
|
||||||
"app-vue": "y",
|
|
||||||
"app-nvue": "y"
|
|
||||||
},
|
|
||||||
"H5-mobile": {
|
|
||||||
"Safari": "n",
|
|
||||||
"Android Browser": "n",
|
|
||||||
"微信浏览器(Android)": "n",
|
|
||||||
"QQ浏览器(Android)": "n"
|
|
||||||
},
|
|
||||||
"H5-pc": {
|
|
||||||
"Chrome": "n",
|
|
||||||
"IE": "n",
|
|
||||||
"Edge": "n",
|
|
||||||
"Firefox": "n",
|
|
||||||
"Safari": "n"
|
|
||||||
},
|
|
||||||
"小程序": {
|
|
||||||
"微信": "n",
|
|
||||||
"阿里": "n",
|
|
||||||
"百度": "n",
|
|
||||||
"字节跳动": "n",
|
|
||||||
"QQ": "n"
|
|
||||||
},
|
|
||||||
"快应用": {
|
|
||||||
"华为": "n",
|
|
||||||
"联盟": "n"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
# RongCloud-IMWrapper
|
|
||||||
60
uni_modules/uni-popup/changelog.md
Normal file
@@ -0,0 +1,60 @@
|
|||||||
|
## 1.7.9(2022-04-02)
|
||||||
|
- 修复 弹出层内部无法滚动的bug
|
||||||
|
## 1.7.8(2022-03-28)
|
||||||
|
- 修复 小程序中高度错误的bug
|
||||||
|
## 1.7.7(2022-03-17)
|
||||||
|
- 修复 快速调用open出现问题的Bug
|
||||||
|
## 1.7.6(2022-02-14)
|
||||||
|
- 修复 safeArea 属性不能设置为false的bug
|
||||||
|
## 1.7.5(2022-01-19)
|
||||||
|
- 修复 isMaskClick 失效的bug
|
||||||
|
## 1.7.4(2022-01-19)
|
||||||
|
- 新增 cancelText \ confirmText 属性 ,可自定义文本
|
||||||
|
- 新增 maskBackgroundColor 属性 ,可以修改蒙版颜色
|
||||||
|
- 优化 maskClick属性 更新为 isMaskClick ,解决微信小程序警告的问题
|
||||||
|
## 1.7.3(2022-01-13)
|
||||||
|
- 修复 设置 safeArea 属性不生效的bug
|
||||||
|
## 1.7.2(2021-11-26)
|
||||||
|
- 优化 组件示例
|
||||||
|
## 1.7.1(2021-11-26)
|
||||||
|
- 修复 vuedoc 文字错误
|
||||||
|
## 1.7.0(2021-11-19)
|
||||||
|
- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource)
|
||||||
|
- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-popup](https://uniapp.dcloud.io/component/uniui/uni-popup)
|
||||||
|
## 1.6.2(2021-08-24)
|
||||||
|
- 新增 支持国际化
|
||||||
|
## 1.6.1(2021-07-30)
|
||||||
|
- 优化 vue3下事件警告的问题
|
||||||
|
## 1.6.0(2021-07-13)
|
||||||
|
- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834)
|
||||||
|
## 1.5.0(2021-06-23)
|
||||||
|
- 新增 mask-click 遮罩层点击事件
|
||||||
|
## 1.4.5(2021-06-22)
|
||||||
|
- 修复 nvue 平台中间弹出后,点击内容,再点击遮罩无法关闭的Bug
|
||||||
|
## 1.4.4(2021-06-18)
|
||||||
|
- 修复 H5平台中间弹出后,点击内容,再点击遮罩无法关闭的Bug
|
||||||
|
## 1.4.3(2021-06-08)
|
||||||
|
- 修复 错误的 watch 字段
|
||||||
|
- 修复 safeArea 属性不生效的问题
|
||||||
|
- 修复 点击内容,再点击遮罩无法关闭的Bug
|
||||||
|
## 1.4.2(2021-05-12)
|
||||||
|
- 新增 组件示例地址
|
||||||
|
## 1.4.1(2021-04-29)
|
||||||
|
- 修复 组件内放置 input 、textarea 组件,无法聚焦的问题
|
||||||
|
## 1.4.0 (2021-04-29)
|
||||||
|
- 新增 type 属性的 left\right 值,支持左右弹出
|
||||||
|
- 新增 open(String:type) 方法参数 ,可以省略 type 属性 ,直接传入类型打开指定弹窗
|
||||||
|
- 新增 backgroundColor 属性,可定义主窗口背景色,默认不显示背景色
|
||||||
|
- 新增 safeArea 属性,是否适配底部安全区
|
||||||
|
- 修复 App\h5\微信小程序底部安全区占位不对的Bug
|
||||||
|
- 修复 App 端弹出等待的Bug
|
||||||
|
- 优化 提升低配设备性能,优化动画卡顿问题
|
||||||
|
- 优化 更简单的组件自定义方式
|
||||||
|
## 1.2.9(2021-02-05)
|
||||||
|
- 优化 组件引用关系,通过uni_modules引用组件
|
||||||
|
## 1.2.8(2021-02-05)
|
||||||
|
- 调整为uni_modules目录规范
|
||||||
|
## 1.2.7(2021-02-05)
|
||||||
|
- 调整为uni_modules目录规范
|
||||||
|
- 新增 支持 PC 端
|
||||||
|
- 新增 uni-popup-message 、uni-popup-dialog扩展组件支持 PC 端
|
||||||
@@ -0,0 +1,45 @@
|
|||||||
|
// #ifdef H5
|
||||||
|
export default {
|
||||||
|
name: 'Keypress',
|
||||||
|
props: {
|
||||||
|
disable: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
mounted () {
|
||||||
|
const keyNames = {
|
||||||
|
esc: ['Esc', 'Escape'],
|
||||||
|
tab: 'Tab',
|
||||||
|
enter: 'Enter',
|
||||||
|
space: [' ', 'Spacebar'],
|
||||||
|
up: ['Up', 'ArrowUp'],
|
||||||
|
left: ['Left', 'ArrowLeft'],
|
||||||
|
right: ['Right', 'ArrowRight'],
|
||||||
|
down: ['Down', 'ArrowDown'],
|
||||||
|
delete: ['Backspace', 'Delete', 'Del']
|
||||||
|
}
|
||||||
|
const listener = ($event) => {
|
||||||
|
if (this.disable) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
const keyName = Object.keys(keyNames).find(key => {
|
||||||
|
const keyName = $event.key
|
||||||
|
const value = keyNames[key]
|
||||||
|
return value === keyName || (Array.isArray(value) && value.includes(keyName))
|
||||||
|
})
|
||||||
|
if (keyName) {
|
||||||
|
// 避免和其他按键事件冲突
|
||||||
|
setTimeout(() => {
|
||||||
|
this.$emit(keyName, {})
|
||||||
|
}, 0)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
document.addEventListener('keyup', listener)
|
||||||
|
this.$once('hook:beforeDestroy', () => {
|
||||||
|
document.removeEventListener('keyup', listener)
|
||||||
|
})
|
||||||
|
},
|
||||||
|
render: () => {}
|
||||||
|
}
|
||||||
|
// #endif
|
||||||
@@ -0,0 +1,271 @@
|
|||||||
|
<template>
|
||||||
|
<view class="uni-popup-dialog">
|
||||||
|
<view class="uni-dialog-title">
|
||||||
|
<text class="uni-dialog-title-text" :class="['uni-popup__'+dialogType]">{{titleText}}</text>
|
||||||
|
</view>
|
||||||
|
<view v-if="mode === 'base'" class="uni-dialog-content">
|
||||||
|
<slot>
|
||||||
|
<text class="uni-dialog-content-text">{{content}}</text>
|
||||||
|
</slot>
|
||||||
|
</view>
|
||||||
|
<view v-else class="uni-dialog-content">
|
||||||
|
<slot>
|
||||||
|
<input class="uni-dialog-input" v-model="val" type="text" :placeholder="placeholderText" :focus="focus" >
|
||||||
|
</slot>
|
||||||
|
</view>
|
||||||
|
<view class="uni-dialog-button-group">
|
||||||
|
<view class="uni-dialog-button" @click="closeDialog">
|
||||||
|
<text class="uni-dialog-button-text">{{closeText}}</text>
|
||||||
|
</view>
|
||||||
|
<view class="uni-dialog-button uni-border-left" @click="onOk">
|
||||||
|
<text class="uni-dialog-button-text uni-button-color">{{okText}}</text>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import popup from '../uni-popup/popup.js'
|
||||||
|
import {
|
||||||
|
initVueI18n
|
||||||
|
} from '@dcloudio/uni-i18n'
|
||||||
|
import messages from '../uni-popup/i18n/index.js'
|
||||||
|
const { t } = initVueI18n(messages)
|
||||||
|
/**
|
||||||
|
* PopUp 弹出层-对话框样式
|
||||||
|
* @description 弹出层-对话框样式
|
||||||
|
* @tutorial https://ext.dcloud.net.cn/plugin?id=329
|
||||||
|
* @property {String} value input 模式下的默认值
|
||||||
|
* @property {String} placeholder input 模式下输入提示
|
||||||
|
* @property {String} type = [success|warning|info|error] 主题样式
|
||||||
|
* @value success 成功
|
||||||
|
* @value warning 提示
|
||||||
|
* @value info 消息
|
||||||
|
* @value error 错误
|
||||||
|
* @property {String} mode = [base|input] 模式、
|
||||||
|
* @value base 基础对话框
|
||||||
|
* @value input 可输入对话框
|
||||||
|
* @property {String} content 对话框内容
|
||||||
|
* @property {Boolean} beforeClose 是否拦截取消事件
|
||||||
|
* @event {Function} confirm 点击确认按钮触发
|
||||||
|
* @event {Function} close 点击取消按钮触发
|
||||||
|
*/
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: "uniPopupDialog",
|
||||||
|
mixins: [popup],
|
||||||
|
emits:['confirm','close'],
|
||||||
|
props: {
|
||||||
|
value: {
|
||||||
|
type: [String, Number],
|
||||||
|
default: ''
|
||||||
|
},
|
||||||
|
placeholder: {
|
||||||
|
type: [String, Number],
|
||||||
|
default: ''
|
||||||
|
},
|
||||||
|
type: {
|
||||||
|
type: String,
|
||||||
|
default: 'error'
|
||||||
|
},
|
||||||
|
mode: {
|
||||||
|
type: String,
|
||||||
|
default: 'base'
|
||||||
|
},
|
||||||
|
title: {
|
||||||
|
type: String,
|
||||||
|
default: ''
|
||||||
|
},
|
||||||
|
content: {
|
||||||
|
type: String,
|
||||||
|
default: ''
|
||||||
|
},
|
||||||
|
beforeClose: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false
|
||||||
|
},
|
||||||
|
cancelText:{
|
||||||
|
type: String,
|
||||||
|
default: ''
|
||||||
|
},
|
||||||
|
confirmText:{
|
||||||
|
type: String,
|
||||||
|
default: ''
|
||||||
|
}
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
dialogType: 'error',
|
||||||
|
focus: false,
|
||||||
|
val: ""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
okText() {
|
||||||
|
return this.confirmText || t("uni-popup.ok")
|
||||||
|
},
|
||||||
|
closeText() {
|
||||||
|
return this.cancelText || t("uni-popup.cancel")
|
||||||
|
},
|
||||||
|
placeholderText() {
|
||||||
|
return this.placeholder || t("uni-popup.placeholder")
|
||||||
|
},
|
||||||
|
titleText() {
|
||||||
|
return this.title || t("uni-popup.title")
|
||||||
|
}
|
||||||
|
},
|
||||||
|
watch: {
|
||||||
|
type(val) {
|
||||||
|
this.dialogType = val
|
||||||
|
},
|
||||||
|
mode(val) {
|
||||||
|
if (val === 'input') {
|
||||||
|
this.dialogType = 'info'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
value(val) {
|
||||||
|
this.val = val
|
||||||
|
}
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
// 对话框遮罩不可点击
|
||||||
|
this.popup.disableMask()
|
||||||
|
// this.popup.closeMask()
|
||||||
|
if (this.mode === 'input') {
|
||||||
|
this.dialogType = 'info'
|
||||||
|
this.val = this.value
|
||||||
|
} else {
|
||||||
|
this.dialogType = this.type
|
||||||
|
}
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
this.focus = true
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
/**
|
||||||
|
* 点击确认按钮
|
||||||
|
*/
|
||||||
|
onOk() {
|
||||||
|
if (this.mode === 'input'){
|
||||||
|
this.$emit('confirm', this.val)
|
||||||
|
}else{
|
||||||
|
this.$emit('confirm')
|
||||||
|
}
|
||||||
|
if(this.beforeClose) return
|
||||||
|
this.popup.close()
|
||||||
|
},
|
||||||
|
/**
|
||||||
|
* 点击取消按钮
|
||||||
|
*/
|
||||||
|
closeDialog() {
|
||||||
|
this.$emit('close')
|
||||||
|
if(this.beforeClose) return
|
||||||
|
this.popup.close()
|
||||||
|
},
|
||||||
|
close(){
|
||||||
|
this.popup.close()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" >
|
||||||
|
.uni-popup-dialog {
|
||||||
|
width: 300px;
|
||||||
|
border-radius: 11px;
|
||||||
|
background-color: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.uni-dialog-title {
|
||||||
|
/* #ifndef APP-NVUE */
|
||||||
|
display: flex;
|
||||||
|
/* #endif */
|
||||||
|
flex-direction: row;
|
||||||
|
justify-content: center;
|
||||||
|
padding-top: 25px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.uni-dialog-title-text {
|
||||||
|
font-size: 16px;
|
||||||
|
font-weight: 500;
|
||||||
|
}
|
||||||
|
|
||||||
|
.uni-dialog-content {
|
||||||
|
/* #ifndef APP-NVUE */
|
||||||
|
display: flex;
|
||||||
|
/* #endif */
|
||||||
|
flex-direction: row;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
padding: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.uni-dialog-content-text {
|
||||||
|
font-size: 14px;
|
||||||
|
color: #6C6C6C;
|
||||||
|
}
|
||||||
|
|
||||||
|
.uni-dialog-button-group {
|
||||||
|
/* #ifndef APP-NVUE */
|
||||||
|
display: flex;
|
||||||
|
/* #endif */
|
||||||
|
flex-direction: row;
|
||||||
|
border-top-color: #f5f5f5;
|
||||||
|
border-top-style: solid;
|
||||||
|
border-top-width: 1px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.uni-dialog-button {
|
||||||
|
/* #ifndef APP-NVUE */
|
||||||
|
display: flex;
|
||||||
|
/* #endif */
|
||||||
|
|
||||||
|
flex: 1;
|
||||||
|
flex-direction: row;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
height: 45px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.uni-border-left {
|
||||||
|
border-left-color: #f0f0f0;
|
||||||
|
border-left-style: solid;
|
||||||
|
border-left-width: 1px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.uni-dialog-button-text {
|
||||||
|
font-size: 16px;
|
||||||
|
color: #333;
|
||||||
|
}
|
||||||
|
|
||||||
|
.uni-button-color {
|
||||||
|
color: #007aff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.uni-dialog-input {
|
||||||
|
flex: 1;
|
||||||
|
font-size: 14px;
|
||||||
|
border: 1px #eee solid;
|
||||||
|
height: 40px;
|
||||||
|
padding: 0 10px;
|
||||||
|
border-radius: 5px;
|
||||||
|
color: #555;
|
||||||
|
}
|
||||||
|
|
||||||
|
.uni-popup__success {
|
||||||
|
color: #4cd964;
|
||||||
|
}
|
||||||
|
|
||||||
|
.uni-popup__warn {
|
||||||
|
color: #f0ad4e;
|
||||||
|
}
|
||||||
|
|
||||||
|
.uni-popup__error {
|
||||||
|
color: #dd524d;
|
||||||
|
}
|
||||||
|
|
||||||
|
.uni-popup__info {
|
||||||
|
color: #909399;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@@ -0,0 +1,143 @@
|
|||||||
|
<template>
|
||||||
|
<view class="uni-popup-message">
|
||||||
|
<view class="uni-popup-message__box fixforpc-width" :class="'uni-popup__'+type">
|
||||||
|
<slot>
|
||||||
|
<text class="uni-popup-message-text" :class="'uni-popup__'+type+'-text'">{{message}}</text>
|
||||||
|
</slot>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import popup from '../uni-popup/popup.js'
|
||||||
|
/**
|
||||||
|
* PopUp 弹出层-消息提示
|
||||||
|
* @description 弹出层-消息提示
|
||||||
|
* @tutorial https://ext.dcloud.net.cn/plugin?id=329
|
||||||
|
* @property {String} type = [success|warning|info|error] 主题样式
|
||||||
|
* @value success 成功
|
||||||
|
* @value warning 提示
|
||||||
|
* @value info 消息
|
||||||
|
* @value error 错误
|
||||||
|
* @property {String} message 消息提示文字
|
||||||
|
* @property {String} duration 显示时间,设置为 0 则不会自动关闭
|
||||||
|
*/
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: 'uniPopupMessage',
|
||||||
|
mixins:[popup],
|
||||||
|
props: {
|
||||||
|
/**
|
||||||
|
* 主题 success/warning/info/error 默认 success
|
||||||
|
*/
|
||||||
|
type: {
|
||||||
|
type: String,
|
||||||
|
default: 'success'
|
||||||
|
},
|
||||||
|
/**
|
||||||
|
* 消息文字
|
||||||
|
*/
|
||||||
|
message: {
|
||||||
|
type: String,
|
||||||
|
default: ''
|
||||||
|
},
|
||||||
|
/**
|
||||||
|
* 显示时间,设置为 0 则不会自动关闭
|
||||||
|
*/
|
||||||
|
duration: {
|
||||||
|
type: Number,
|
||||||
|
default: 3000
|
||||||
|
},
|
||||||
|
maskShow:{
|
||||||
|
type:Boolean,
|
||||||
|
default:false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {}
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
this.popup.maskShow = this.maskShow
|
||||||
|
this.popup.messageChild = this
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
timerClose(){
|
||||||
|
if(this.duration === 0) return
|
||||||
|
clearTimeout(this.timer)
|
||||||
|
this.timer = setTimeout(()=>{
|
||||||
|
this.popup.close()
|
||||||
|
},this.duration)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
<style lang="scss" >
|
||||||
|
.uni-popup-message {
|
||||||
|
/* #ifndef APP-NVUE */
|
||||||
|
display: flex;
|
||||||
|
/* #endif */
|
||||||
|
flex-direction: row;
|
||||||
|
justify-content: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.uni-popup-message__box {
|
||||||
|
background-color: #e1f3d8;
|
||||||
|
padding: 10px 15px;
|
||||||
|
border-color: #eee;
|
||||||
|
border-style: solid;
|
||||||
|
border-width: 1px;
|
||||||
|
flex: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media screen and (min-width: 500px) {
|
||||||
|
.fixforpc-width {
|
||||||
|
margin-top: 20px;
|
||||||
|
border-radius: 4px;
|
||||||
|
flex: none;
|
||||||
|
min-width: 380px;
|
||||||
|
/* #ifndef APP-NVUE */
|
||||||
|
max-width: 50%;
|
||||||
|
/* #endif */
|
||||||
|
/* #ifdef APP-NVUE */
|
||||||
|
max-width: 500px;
|
||||||
|
/* #endif */
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.uni-popup-message-text {
|
||||||
|
font-size: 14px;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.uni-popup__success {
|
||||||
|
background-color: #e1f3d8;
|
||||||
|
}
|
||||||
|
|
||||||
|
.uni-popup__success-text {
|
||||||
|
color: #67C23A;
|
||||||
|
}
|
||||||
|
|
||||||
|
.uni-popup__warn {
|
||||||
|
background-color: #faecd8;
|
||||||
|
}
|
||||||
|
|
||||||
|
.uni-popup__warn-text {
|
||||||
|
color: #E6A23C;
|
||||||
|
}
|
||||||
|
|
||||||
|
.uni-popup__error {
|
||||||
|
background-color: #fde2e2;
|
||||||
|
}
|
||||||
|
|
||||||
|
.uni-popup__error-text {
|
||||||
|
color: #F56C6C;
|
||||||
|
}
|
||||||
|
|
||||||
|
.uni-popup__info {
|
||||||
|
background-color: #F2F6FC;
|
||||||
|
}
|
||||||
|
|
||||||
|
.uni-popup__info-text {
|
||||||
|
color: #909399;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@@ -0,0 +1,191 @@
|
|||||||
|
<template>
|
||||||
|
<view class="uni-popup-share">
|
||||||
|
<view class="uni-share-title"><text class="uni-share-title-text">{{shareTitleText}}</text></view>
|
||||||
|
<view class="uni-share-content">
|
||||||
|
<view class="uni-share-content-box">
|
||||||
|
<view class="uni-share-content-item" v-for="(item,index) in bottomData" :key="index" @click.stop="select(item,index)">
|
||||||
|
<image class="uni-share-image" :src="item.icon" mode="aspectFill"></image>
|
||||||
|
<text class="uni-share-text">{{item.text}}</text>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view class="uni-share-button-box">
|
||||||
|
<button class="uni-share-button" @click="close">{{cancelText}}</button>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import popup from '../uni-popup/popup.js'
|
||||||
|
import {
|
||||||
|
initVueI18n
|
||||||
|
} from '@dcloudio/uni-i18n'
|
||||||
|
import messages from '../uni-popup/i18n/index.js'
|
||||||
|
const { t } = initVueI18n(messages)
|
||||||
|
export default {
|
||||||
|
name: 'UniPopupShare',
|
||||||
|
mixins:[popup],
|
||||||
|
emits:['select'],
|
||||||
|
props: {
|
||||||
|
title: {
|
||||||
|
type: String,
|
||||||
|
default: ''
|
||||||
|
},
|
||||||
|
beforeClose: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
bottomData: [{
|
||||||
|
text: '微信好友',
|
||||||
|
icon: require('@/static/icon/share_icon_01.png'),
|
||||||
|
name: 'wxchum'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text: '朋友圈',
|
||||||
|
icon: require('@/static/icon/share_icon_00.png'),
|
||||||
|
name: 'wxcircle'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text: 'QQ',
|
||||||
|
icon: require('@/static/icon/share_icon_02.png'),
|
||||||
|
name: 'qq'
|
||||||
|
},
|
||||||
|
// {
|
||||||
|
// text: '新浪',
|
||||||
|
// icon: 'https://vkceyugu.cdn.bspapp.com/VKCEYUGU-dc-site/0dacdbe0-50bf-11eb-8ff1-d5dcf8779628.png',
|
||||||
|
// name: 'sina'
|
||||||
|
// },
|
||||||
|
// {
|
||||||
|
// text: '百度',
|
||||||
|
// icon: 'https://vkceyugu.cdn.bspapp.com/VKCEYUGU-dc-site/1ec6e920-50bf-11eb-8a36-ebb87efcf8c0.png',
|
||||||
|
// name: 'copy'
|
||||||
|
// },
|
||||||
|
// {
|
||||||
|
// text: '其他',
|
||||||
|
// icon: 'https://vkceyugu.cdn.bspapp.com/VKCEYUGU-dc-site/2e0fdfe0-50bf-11eb-b997-9918a5dda011.png',
|
||||||
|
// name: 'more'
|
||||||
|
// }
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
created() {},
|
||||||
|
computed: {
|
||||||
|
cancelText() {
|
||||||
|
return t("uni-popup.cancel")
|
||||||
|
},
|
||||||
|
shareTitleText() {
|
||||||
|
return this.title || t("uni-popup.shareTitle")
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
/**
|
||||||
|
* 选择内容
|
||||||
|
*/
|
||||||
|
select(item, index) {
|
||||||
|
this.$emit('select', {
|
||||||
|
item,
|
||||||
|
index
|
||||||
|
})
|
||||||
|
this.close()
|
||||||
|
|
||||||
|
},
|
||||||
|
/**
|
||||||
|
* 关闭窗口
|
||||||
|
*/
|
||||||
|
close() {
|
||||||
|
if(this.beforeClose) return
|
||||||
|
this.popup.close()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
<style lang="scss" >
|
||||||
|
.uni-popup-share {
|
||||||
|
background-color: #fff;
|
||||||
|
border-top-left-radius: 11px;
|
||||||
|
border-top-right-radius: 11px;
|
||||||
|
}
|
||||||
|
.uni-share-title {
|
||||||
|
/* #ifndef APP-NVUE */
|
||||||
|
display: flex;
|
||||||
|
/* #endif */
|
||||||
|
flex-direction: row;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
height: 40px;
|
||||||
|
}
|
||||||
|
.uni-share-title-text {
|
||||||
|
font-size: 14px;
|
||||||
|
color: #666;
|
||||||
|
}
|
||||||
|
.uni-share-content {
|
||||||
|
/* #ifndef APP-NVUE */
|
||||||
|
display: flex;
|
||||||
|
/* #endif */
|
||||||
|
flex-direction: row;
|
||||||
|
justify-content: center;
|
||||||
|
padding-top: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.uni-share-content-box {
|
||||||
|
/* #ifndef APP-NVUE */
|
||||||
|
display: flex;
|
||||||
|
/* #endif */
|
||||||
|
flex-direction: row;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
width: 360px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.uni-share-content-item {
|
||||||
|
width: 33.33%;
|
||||||
|
/* #ifndef APP-NVUE */
|
||||||
|
display: flex;
|
||||||
|
/* #endif */
|
||||||
|
flex-direction: column;
|
||||||
|
justify-content: center;
|
||||||
|
padding: 10px 0;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.uni-share-content-item:active {
|
||||||
|
background-color: #f5f5f5;
|
||||||
|
}
|
||||||
|
|
||||||
|
.uni-share-image {
|
||||||
|
width: 30px;
|
||||||
|
height: 30px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.uni-share-text {
|
||||||
|
margin-top: 10px;
|
||||||
|
font-size: 14px;
|
||||||
|
color: #3B4144;
|
||||||
|
}
|
||||||
|
|
||||||
|
.uni-share-button-box {
|
||||||
|
/* #ifndef APP-NVUE */
|
||||||
|
display: flex;
|
||||||
|
/* #endif */
|
||||||
|
flex-direction: row;
|
||||||
|
padding: 10px 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.uni-share-button {
|
||||||
|
flex: 1;
|
||||||
|
border-radius: 45rpx;
|
||||||
|
height: 90rpx;
|
||||||
|
line-height: 90rpx;
|
||||||
|
color: white;
|
||||||
|
font-size: 16px;
|
||||||
|
background: #34CE98;
|
||||||
|
}
|
||||||
|
|
||||||
|
.uni-share-button::after {
|
||||||
|
border-radius: 50px;
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
7
uni_modules/uni-popup/components/uni-popup/i18n/en.json
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
{
|
||||||
|
"uni-popup.cancel": "cancel",
|
||||||
|
"uni-popup.ok": "ok",
|
||||||
|
"uni-popup.placeholder": "pleace enter",
|
||||||
|
"uni-popup.title": "Hint",
|
||||||
|
"uni-popup.shareTitle": "Share to"
|
||||||
|
}
|
||||||
8
uni_modules/uni-popup/components/uni-popup/i18n/index.js
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
import en from './en.json'
|
||||||
|
import zhHans from './zh-Hans.json'
|
||||||
|
import zhHant from './zh-Hant.json'
|
||||||
|
export default {
|
||||||
|
en,
|
||||||
|
'zh-Hans': zhHans,
|
||||||
|
'zh-Hant': zhHant
|
||||||
|
}
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
{
|
||||||
|
"uni-popup.cancel": "取消",
|
||||||
|
"uni-popup.ok": "确定",
|
||||||
|
"uni-popup.placeholder": "请输入",
|
||||||
|
"uni-popup.title": "提示",
|
||||||
|
"uni-popup.shareTitle": "分享到"
|
||||||
|
}
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
{
|
||||||
|
"uni-popup.cancel": "取消",
|
||||||
|
"uni-popup.ok": "確定",
|
||||||
|
"uni-popup.placeholder": "請輸入",
|
||||||
|
"uni-popup.title": "提示",
|
||||||
|
"uni-popup.shareTitle": "分享到"
|
||||||
|
}
|
||||||
45
uni_modules/uni-popup/components/uni-popup/keypress.js
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
// #ifdef H5
|
||||||
|
export default {
|
||||||
|
name: 'Keypress',
|
||||||
|
props: {
|
||||||
|
disable: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
mounted () {
|
||||||
|
const keyNames = {
|
||||||
|
esc: ['Esc', 'Escape'],
|
||||||
|
tab: 'Tab',
|
||||||
|
enter: 'Enter',
|
||||||
|
space: [' ', 'Spacebar'],
|
||||||
|
up: ['Up', 'ArrowUp'],
|
||||||
|
left: ['Left', 'ArrowLeft'],
|
||||||
|
right: ['Right', 'ArrowRight'],
|
||||||
|
down: ['Down', 'ArrowDown'],
|
||||||
|
delete: ['Backspace', 'Delete', 'Del']
|
||||||
|
}
|
||||||
|
const listener = ($event) => {
|
||||||
|
if (this.disable) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
const keyName = Object.keys(keyNames).find(key => {
|
||||||
|
const keyName = $event.key
|
||||||
|
const value = keyNames[key]
|
||||||
|
return value === keyName || (Array.isArray(value) && value.includes(keyName))
|
||||||
|
})
|
||||||
|
if (keyName) {
|
||||||
|
// 避免和其他按键事件冲突
|
||||||
|
setTimeout(() => {
|
||||||
|
this.$emit(keyName, {})
|
||||||
|
}, 0)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
document.addEventListener('keyup', listener)
|
||||||
|
// this.$once('hook:beforeDestroy', () => {
|
||||||
|
// document.removeEventListener('keyup', listener)
|
||||||
|
// })
|
||||||
|
},
|
||||||
|
render: () => {}
|
||||||
|
}
|
||||||
|
// #endif
|
||||||
26
uni_modules/uni-popup/components/uni-popup/popup.js
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
|
||||||
|
}
|
||||||
|
},
|
||||||
|
created(){
|
||||||
|
this.popup = this.getParent()
|
||||||
|
},
|
||||||
|
methods:{
|
||||||
|
/**
|
||||||
|
* 获取父元素实例
|
||||||
|
*/
|
||||||
|
getParent(name = 'uniPopup') {
|
||||||
|
let parent = this.$parent;
|
||||||
|
let parentName = parent.$options.name;
|
||||||
|
while (parentName !== name) {
|
||||||
|
parent = parent.$parent;
|
||||||
|
if (!parent) return false
|
||||||
|
parentName = parent.$options.name;
|
||||||
|
}
|
||||||
|
return parent;
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
474
uni_modules/uni-popup/components/uni-popup/uni-popup.vue
Normal file
@@ -0,0 +1,474 @@
|
|||||||
|
<template>
|
||||||
|
<view v-if="showPopup" class="uni-popup" :class="[popupstyle, isDesktop ? 'fixforpc-z-index' : '']">
|
||||||
|
<view @touchstart="touchstart">
|
||||||
|
<uni-transition key="1" v-if="maskShow" name="mask" mode-class="fade" :styles="maskClass"
|
||||||
|
: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">
|
||||||
|
<slot />
|
||||||
|
</view>
|
||||||
|
</uni-transition>
|
||||||
|
</view>
|
||||||
|
<!-- #ifdef H5 -->
|
||||||
|
<keypress v-if="maskShow" @esc="onTap" />
|
||||||
|
<!-- #endif -->
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
// #ifdef H5
|
||||||
|
import keypress from './keypress.js'
|
||||||
|
// #endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* PopUp 弹出层
|
||||||
|
* @description 弹出层组件,为了解决遮罩弹层的问题
|
||||||
|
* @tutorial https://ext.dcloud.net.cn/plugin?id=329
|
||||||
|
* @property {String} type = [top|center|bottom|left|right|message|dialog|share] 弹出方式
|
||||||
|
* @value top 顶部弹出
|
||||||
|
* @value center 中间弹出
|
||||||
|
* @value bottom 底部弹出
|
||||||
|
* @value left 左侧弹出
|
||||||
|
* @value right 右侧弹出
|
||||||
|
* @value message 消息提示
|
||||||
|
* @value dialog 对话框
|
||||||
|
* @value share 底部分享示例
|
||||||
|
* @property {Boolean} animation = [true|false] 是否开启动画
|
||||||
|
* @property {Boolean} maskClick = [true|false] 蒙版点击是否关闭弹窗(废弃)
|
||||||
|
* @property {Boolean} isMaskClick = [true|false] 蒙版点击是否关闭弹窗
|
||||||
|
* @property {String} backgroundColor 主窗口背景色
|
||||||
|
* @property {String} maskBackgroundColor 蒙版颜色
|
||||||
|
* @property {Boolean} safeArea 是否适配底部安全区
|
||||||
|
* @event {Function} change 打开关闭弹窗触发,e={show: false}
|
||||||
|
* @event {Function} maskClick 点击遮罩触发
|
||||||
|
*/
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: 'uniPopup',
|
||||||
|
components: {
|
||||||
|
// #ifdef H5
|
||||||
|
keypress
|
||||||
|
// #endif
|
||||||
|
},
|
||||||
|
emits: ['change', 'maskClick'],
|
||||||
|
props: {
|
||||||
|
// 开启动画
|
||||||
|
animation: {
|
||||||
|
type: Boolean,
|
||||||
|
default: true
|
||||||
|
},
|
||||||
|
// 弹出层类型,可选值,top: 顶部弹出层;bottom:底部弹出层;center:全屏弹出层
|
||||||
|
// message: 消息提示 ; dialog : 对话框
|
||||||
|
type: {
|
||||||
|
type: String,
|
||||||
|
default: 'center'
|
||||||
|
},
|
||||||
|
// maskClick
|
||||||
|
isMaskClick: {
|
||||||
|
type: Boolean,
|
||||||
|
default: null
|
||||||
|
},
|
||||||
|
// TODO 2 个版本后废弃属性 ,使用 isMaskClick
|
||||||
|
maskClick: {
|
||||||
|
type: Boolean,
|
||||||
|
default: null
|
||||||
|
},
|
||||||
|
backgroundColor: {
|
||||||
|
type: String,
|
||||||
|
default: 'none'
|
||||||
|
},
|
||||||
|
safeArea: {
|
||||||
|
type: Boolean,
|
||||||
|
default: true
|
||||||
|
},
|
||||||
|
maskBackgroundColor: {
|
||||||
|
type: String,
|
||||||
|
default: 'rgba(0, 0, 0, 0.4)'
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
watch: {
|
||||||
|
/**
|
||||||
|
* 监听type类型
|
||||||
|
*/
|
||||||
|
type: {
|
||||||
|
handler: function(type) {
|
||||||
|
if (!this.config[type]) return
|
||||||
|
this[this.config[type]](true)
|
||||||
|
},
|
||||||
|
immediate: true
|
||||||
|
},
|
||||||
|
isDesktop: {
|
||||||
|
handler: function(newVal) {
|
||||||
|
if (!this.config[newVal]) return
|
||||||
|
this[this.config[this.type]](true)
|
||||||
|
},
|
||||||
|
immediate: true
|
||||||
|
},
|
||||||
|
/**
|
||||||
|
* 监听遮罩是否可点击
|
||||||
|
* @param {Object} val
|
||||||
|
*/
|
||||||
|
maskClick: {
|
||||||
|
handler: function(val) {
|
||||||
|
this.mkclick = val
|
||||||
|
},
|
||||||
|
immediate: true
|
||||||
|
},
|
||||||
|
isMaskClick: {
|
||||||
|
handler: function(val) {
|
||||||
|
this.mkclick = val
|
||||||
|
},
|
||||||
|
immediate: true
|
||||||
|
},
|
||||||
|
// H5 下禁止底部滚动
|
||||||
|
showPopup(show) {
|
||||||
|
// #ifdef H5
|
||||||
|
// fix by mehaotian 处理 h5 滚动穿透的问题
|
||||||
|
document.getElementsByTagName('body')[0].style.overflow = show ? 'hidden' : 'visible'
|
||||||
|
// #endif
|
||||||
|
}
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
duration: 300,
|
||||||
|
ani: [],
|
||||||
|
showPopup: false,
|
||||||
|
showTrans: false,
|
||||||
|
popupWidth: 0,
|
||||||
|
popupHeight: 0,
|
||||||
|
config: {
|
||||||
|
top: 'top',
|
||||||
|
bottom: 'bottom',
|
||||||
|
center: 'center',
|
||||||
|
left: 'left',
|
||||||
|
right: 'right',
|
||||||
|
message: 'top',
|
||||||
|
dialog: 'center',
|
||||||
|
share: 'bottom'
|
||||||
|
},
|
||||||
|
maskClass: {
|
||||||
|
position: 'fixed',
|
||||||
|
bottom: 0,
|
||||||
|
top: 0,
|
||||||
|
left: 0,
|
||||||
|
right: 0,
|
||||||
|
backgroundColor: 'rgba(0, 0, 0, 0.4)'
|
||||||
|
},
|
||||||
|
transClass: {
|
||||||
|
position: 'fixed',
|
||||||
|
left: 0,
|
||||||
|
right: 0
|
||||||
|
},
|
||||||
|
maskShow: true,
|
||||||
|
mkclick: true,
|
||||||
|
popupstyle: this.isDesktop ? 'fixforpc-top' : 'top'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
isDesktop() {
|
||||||
|
return this.popupWidth >= 500 && this.popupHeight >= 500
|
||||||
|
},
|
||||||
|
bg() {
|
||||||
|
if (this.backgroundColor === '' || this.backgroundColor === 'none') {
|
||||||
|
return 'transparent'
|
||||||
|
}
|
||||||
|
return this.backgroundColor
|
||||||
|
}
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
const fixSize = () => {
|
||||||
|
const {
|
||||||
|
windowWidth,
|
||||||
|
windowHeight,
|
||||||
|
windowTop,
|
||||||
|
safeArea,
|
||||||
|
screenHeight,
|
||||||
|
safeAreaInsets
|
||||||
|
} = uni.getSystemInfoSync()
|
||||||
|
this.popupWidth = windowWidth
|
||||||
|
this.popupHeight = windowHeight + (windowTop || 0)
|
||||||
|
// TODO fix by mehaotian 是否适配底部安全区 ,目前微信ios 、和 app ios 计算有差异,需要框架修复
|
||||||
|
if (safeArea && this.safeArea) {
|
||||||
|
// #ifdef MP-WEIXIN
|
||||||
|
this.safeAreaInsets = screenHeight - safeArea.bottom
|
||||||
|
// #endif
|
||||||
|
// #ifndef MP-WEIXIN
|
||||||
|
this.safeAreaInsets = safeAreaInsets.bottom
|
||||||
|
// #endif
|
||||||
|
} else {
|
||||||
|
this.safeAreaInsets = 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
fixSize()
|
||||||
|
// #ifdef H5
|
||||||
|
// window.addEventListener('resize', fixSize)
|
||||||
|
// this.$once('hook:beforeDestroy', () => {
|
||||||
|
// window.removeEventListener('resize', fixSize)
|
||||||
|
// })
|
||||||
|
// #endif
|
||||||
|
},
|
||||||
|
// #ifndef VUE3
|
||||||
|
// TODO vue2
|
||||||
|
destroyed() {
|
||||||
|
this.setH5Visible()
|
||||||
|
},
|
||||||
|
// #endif
|
||||||
|
// #ifdef VUE3
|
||||||
|
// TODO vue3
|
||||||
|
unmounted() {
|
||||||
|
this.setH5Visible()
|
||||||
|
},
|
||||||
|
// #endif
|
||||||
|
created() {
|
||||||
|
// this.mkclick = this.isMaskClick || this.maskClick
|
||||||
|
if (this.isMaskClick === null && this.maskClick === null) {
|
||||||
|
this.mkclick = true
|
||||||
|
} else {
|
||||||
|
this.mkclick = this.isMaskClick !== null ? this.isMaskClick : this.maskClick
|
||||||
|
}
|
||||||
|
if (this.animation) {
|
||||||
|
this.duration = 300
|
||||||
|
} else {
|
||||||
|
this.duration = 0
|
||||||
|
}
|
||||||
|
// TODO 处理 message 组件生命周期异常的问题
|
||||||
|
this.messageChild = null
|
||||||
|
// TODO 解决头条冒泡的问题
|
||||||
|
this.clearPropagation = false
|
||||||
|
this.maskClass.backgroundColor = this.maskBackgroundColor
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
setH5Visible() {
|
||||||
|
// #ifdef H5
|
||||||
|
// fix by mehaotian 处理 h5 滚动穿透的问题
|
||||||
|
document.getElementsByTagName('body')[0].style.overflow = 'visible'
|
||||||
|
// #endif
|
||||||
|
},
|
||||||
|
/**
|
||||||
|
* 公用方法,不显示遮罩层
|
||||||
|
*/
|
||||||
|
closeMask() {
|
||||||
|
this.maskShow = false
|
||||||
|
},
|
||||||
|
/**
|
||||||
|
* 公用方法,遮罩层禁止点击
|
||||||
|
*/
|
||||||
|
disableMask() {
|
||||||
|
this.mkclick = false
|
||||||
|
},
|
||||||
|
// TODO nvue 取消冒泡
|
||||||
|
clear(e) {
|
||||||
|
// #ifndef APP-NVUE
|
||||||
|
e.stopPropagation()
|
||||||
|
// #endif
|
||||||
|
this.clearPropagation = true
|
||||||
|
},
|
||||||
|
|
||||||
|
open(direction) {
|
||||||
|
// fix by mehaotian 处理快速打开关闭的情况
|
||||||
|
if (this.showPopup) {
|
||||||
|
clearTimeout(this.timer)
|
||||||
|
this.showPopup = false
|
||||||
|
}
|
||||||
|
let innerType = ['top', 'center', 'bottom', 'left', 'right', 'message', 'dialog', 'share']
|
||||||
|
if (!(direction && innerType.indexOf(direction) !== -1)) {
|
||||||
|
direction = this.type
|
||||||
|
}
|
||||||
|
if (!this.config[direction]) {
|
||||||
|
console.error('缺少类型:', direction)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
this[this.config[direction]]()
|
||||||
|
this.$emit('change', {
|
||||||
|
show: true,
|
||||||
|
type: direction
|
||||||
|
})
|
||||||
|
},
|
||||||
|
close(type) {
|
||||||
|
this.showTrans = false
|
||||||
|
this.$emit('change', {
|
||||||
|
show: false,
|
||||||
|
type: this.type
|
||||||
|
})
|
||||||
|
clearTimeout(this.timer)
|
||||||
|
// // 自定义关闭事件
|
||||||
|
// this.customOpen && this.customClose()
|
||||||
|
this.timer = setTimeout(() => {
|
||||||
|
this.showPopup = false
|
||||||
|
}, 300)
|
||||||
|
},
|
||||||
|
// TODO 处理冒泡事件,头条的冒泡事件有问题 ,先这样兼容
|
||||||
|
touchstart() {
|
||||||
|
this.clearPropagation = false
|
||||||
|
},
|
||||||
|
|
||||||
|
onTap() {
|
||||||
|
if (this.clearPropagation) {
|
||||||
|
// fix by mehaotian 兼容 nvue
|
||||||
|
this.clearPropagation = false
|
||||||
|
return
|
||||||
|
}
|
||||||
|
this.$emit('maskClick')
|
||||||
|
if (!this.mkclick) return
|
||||||
|
this.close()
|
||||||
|
},
|
||||||
|
/**
|
||||||
|
* 顶部弹出样式处理
|
||||||
|
*/
|
||||||
|
top(type) {
|
||||||
|
this.popupstyle = this.isDesktop ? 'fixforpc-top' : 'top'
|
||||||
|
this.ani = ['slide-top']
|
||||||
|
this.transClass = {
|
||||||
|
position: 'fixed',
|
||||||
|
left: 0,
|
||||||
|
right: 0,
|
||||||
|
backgroundColor: this.bg
|
||||||
|
}
|
||||||
|
// TODO 兼容 type 属性 ,后续会废弃
|
||||||
|
if (type) return
|
||||||
|
this.showPopup = true
|
||||||
|
this.showTrans = true
|
||||||
|
this.$nextTick(() => {
|
||||||
|
if (this.messageChild && this.type === 'message') {
|
||||||
|
this.messageChild.timerClose()
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
/**
|
||||||
|
* 底部弹出样式处理
|
||||||
|
*/
|
||||||
|
bottom(type) {
|
||||||
|
this.popupstyle = 'bottom'
|
||||||
|
this.ani = ['slide-bottom']
|
||||||
|
this.transClass = {
|
||||||
|
position: 'fixed',
|
||||||
|
left: 0,
|
||||||
|
right: 0,
|
||||||
|
bottom: 0,
|
||||||
|
paddingBottom: this.safeAreaInsets + 'px',
|
||||||
|
backgroundColor: this.bg
|
||||||
|
}
|
||||||
|
// TODO 兼容 type 属性 ,后续会废弃
|
||||||
|
if (type) return
|
||||||
|
this.showPopup = true
|
||||||
|
this.showTrans = true
|
||||||
|
},
|
||||||
|
/**
|
||||||
|
* 中间弹出样式处理
|
||||||
|
*/
|
||||||
|
center(type) {
|
||||||
|
this.popupstyle = 'center'
|
||||||
|
this.ani = ['zoom-out', 'fade']
|
||||||
|
this.transClass = {
|
||||||
|
position: 'fixed',
|
||||||
|
/* #ifndef APP-NVUE */
|
||||||
|
display: 'flex',
|
||||||
|
flexDirection: 'column',
|
||||||
|
/* #endif */
|
||||||
|
bottom: 0,
|
||||||
|
left: 0,
|
||||||
|
right: 0,
|
||||||
|
top: 0,
|
||||||
|
justifyContent: 'center',
|
||||||
|
alignItems: 'center'
|
||||||
|
}
|
||||||
|
// TODO 兼容 type 属性 ,后续会废弃
|
||||||
|
if (type) return
|
||||||
|
this.showPopup = true
|
||||||
|
this.showTrans = true
|
||||||
|
},
|
||||||
|
left(type) {
|
||||||
|
this.popupstyle = 'left'
|
||||||
|
this.ani = ['slide-left']
|
||||||
|
this.transClass = {
|
||||||
|
position: 'fixed',
|
||||||
|
left: 0,
|
||||||
|
bottom: 0,
|
||||||
|
top: 0,
|
||||||
|
backgroundColor: this.bg,
|
||||||
|
/* #ifndef APP-NVUE */
|
||||||
|
display: 'flex',
|
||||||
|
flexDirection: 'column'
|
||||||
|
/* #endif */
|
||||||
|
}
|
||||||
|
// TODO 兼容 type 属性 ,后续会废弃
|
||||||
|
if (type) return
|
||||||
|
this.showPopup = true
|
||||||
|
this.showTrans = true
|
||||||
|
},
|
||||||
|
right(type) {
|
||||||
|
this.popupstyle = 'right'
|
||||||
|
this.ani = ['slide-right']
|
||||||
|
this.transClass = {
|
||||||
|
position: 'fixed',
|
||||||
|
bottom: 0,
|
||||||
|
right: 0,
|
||||||
|
top: 0,
|
||||||
|
backgroundColor: this.bg,
|
||||||
|
/* #ifndef APP-NVUE */
|
||||||
|
display: 'flex',
|
||||||
|
flexDirection: 'column'
|
||||||
|
/* #endif */
|
||||||
|
}
|
||||||
|
// TODO 兼容 type 属性 ,后续会废弃
|
||||||
|
if (type) return
|
||||||
|
this.showPopup = true
|
||||||
|
this.showTrans = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
<style lang="scss">
|
||||||
|
.uni-popup {
|
||||||
|
position: fixed;
|
||||||
|
/* #ifndef APP-NVUE */
|
||||||
|
z-index: 99;
|
||||||
|
|
||||||
|
/* #endif */
|
||||||
|
&.top,
|
||||||
|
&.left,
|
||||||
|
&.right {
|
||||||
|
/* #ifdef H5 */
|
||||||
|
top: var(--window-top);
|
||||||
|
/* #endif */
|
||||||
|
/* #ifndef H5 */
|
||||||
|
top: 0;
|
||||||
|
/* #endif */
|
||||||
|
}
|
||||||
|
|
||||||
|
.uni-popup__wrapper {
|
||||||
|
/* #ifndef APP-NVUE */
|
||||||
|
display: block;
|
||||||
|
/* #endif */
|
||||||
|
position: relative;
|
||||||
|
|
||||||
|
/* iphonex 等安全区设置,底部安全区适配 */
|
||||||
|
/* #ifndef APP-NVUE */
|
||||||
|
// padding-bottom: constant(safe-area-inset-bottom);
|
||||||
|
// padding-bottom: env(safe-area-inset-bottom);
|
||||||
|
/* #endif */
|
||||||
|
&.left,
|
||||||
|
&.right {
|
||||||
|
/* #ifdef H5 */
|
||||||
|
padding-top: var(--window-top);
|
||||||
|
/* #endif */
|
||||||
|
/* #ifndef H5 */
|
||||||
|
padding-top: 0;
|
||||||
|
/* #endif */
|
||||||
|
flex: 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.fixforpc-z-index {
|
||||||
|
/* #ifndef APP-NVUE */
|
||||||
|
z-index: 999;
|
||||||
|
/* #endif */
|
||||||
|
}
|
||||||
|
|
||||||
|
.fixforpc-top {
|
||||||
|
top: 0;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
90
uni_modules/uni-popup/package.json
Normal file
@@ -0,0 +1,90 @@
|
|||||||
|
{
|
||||||
|
"id": "uni-popup",
|
||||||
|
"displayName": "uni-popup 弹出层",
|
||||||
|
"version": "1.7.9",
|
||||||
|
"description": " Popup 组件,提供常用的弹层",
|
||||||
|
"keywords": [
|
||||||
|
"uni-ui",
|
||||||
|
"弹出层",
|
||||||
|
"弹窗",
|
||||||
|
"popup",
|
||||||
|
"弹框"
|
||||||
|
],
|
||||||
|
"repository": "https://github.com/dcloudio/uni-ui",
|
||||||
|
"engines": {
|
||||||
|
"HBuilderX": ""
|
||||||
|
},
|
||||||
|
"directories": {
|
||||||
|
"example": "../../temps/example_temps"
|
||||||
|
},
|
||||||
|
"dcloudext": {
|
||||||
|
"category": [
|
||||||
|
"前端组件",
|
||||||
|
"通用组件"
|
||||||
|
],
|
||||||
|
"sale": {
|
||||||
|
"regular": {
|
||||||
|
"price": "0.00"
|
||||||
|
},
|
||||||
|
"sourcecode": {
|
||||||
|
"price": "0.00"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"contact": {
|
||||||
|
"qq": ""
|
||||||
|
},
|
||||||
|
"declaration": {
|
||||||
|
"ads": "无",
|
||||||
|
"data": "无",
|
||||||
|
"permissions": "无"
|
||||||
|
},
|
||||||
|
"npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui"
|
||||||
|
},
|
||||||
|
"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"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
17
uni_modules/uni-popup/readme.md
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
|
||||||
|
|
||||||
|
## Popup 弹出层
|
||||||
|
> **组件名:uni-popup**
|
||||||
|
> 代码块: `uPopup`
|
||||||
|
> 关联组件:`uni-transition`
|
||||||
|
|
||||||
|
|
||||||
|
弹出层组件,在应用中弹出一个消息提示窗口、提示框等
|
||||||
|
|
||||||
|
### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-popup)
|
||||||
|
#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
20
uni_modules/uni-transition/changelog.md
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
## 1.3.1(2021-11-23)
|
||||||
|
- 修复 init 方法初始化问题
|
||||||
|
## 1.3.0(2021-11-19)
|
||||||
|
- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource)
|
||||||
|
- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-transition](https://uniapp.dcloud.io/component/uniui/uni-transition)
|
||||||
|
## 1.2.1(2021-09-27)
|
||||||
|
- 修复 init 方法不生效的 Bug
|
||||||
|
## 1.2.0(2021-07-30)
|
||||||
|
- 组件兼容 vue3,如何创建 vue3 项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834)
|
||||||
|
## 1.1.1(2021-05-12)
|
||||||
|
- 新增 示例地址
|
||||||
|
- 修复 示例项目缺少组件的 Bug
|
||||||
|
## 1.1.0(2021-04-22)
|
||||||
|
- 新增 通过方法自定义动画
|
||||||
|
- 新增 custom-class 非 NVUE 平台支持自定义 class 定制样式
|
||||||
|
- 优化 动画触发逻辑,使动画更流畅
|
||||||
|
- 优化 支持单独的动画类型
|
||||||
|
- 优化 文档示例
|
||||||
|
## 1.0.2(2021-02-05)
|
||||||
|
- 调整为 uni_modules 目录规范
|
||||||
@@ -0,0 +1,128 @@
|
|||||||
|
// const defaultOption = {
|
||||||
|
// duration: 300,
|
||||||
|
// timingFunction: 'linear',
|
||||||
|
// delay: 0,
|
||||||
|
// transformOrigin: '50% 50% 0'
|
||||||
|
// }
|
||||||
|
// #ifdef APP-NVUE
|
||||||
|
const nvueAnimation = uni.requireNativePlugin('animation')
|
||||||
|
// #endif
|
||||||
|
class MPAnimation {
|
||||||
|
constructor(options, _this) {
|
||||||
|
this.options = options
|
||||||
|
this.animation = uni.createAnimation(options)
|
||||||
|
this.currentStepAnimates = {}
|
||||||
|
this.next = 0
|
||||||
|
this.$ = _this
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
_nvuePushAnimates(type, args) {
|
||||||
|
let aniObj = this.currentStepAnimates[this.next]
|
||||||
|
let styles = {}
|
||||||
|
if (!aniObj) {
|
||||||
|
styles = {
|
||||||
|
styles: {},
|
||||||
|
config: {}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
styles = aniObj
|
||||||
|
}
|
||||||
|
if (animateTypes1.includes(type)) {
|
||||||
|
if (!styles.styles.transform) {
|
||||||
|
styles.styles.transform = ''
|
||||||
|
}
|
||||||
|
let unit = ''
|
||||||
|
if(type === 'rotate'){
|
||||||
|
unit = 'deg'
|
||||||
|
}
|
||||||
|
styles.styles.transform += `${type}(${args+unit}) `
|
||||||
|
} else {
|
||||||
|
styles.styles[type] = `${args}`
|
||||||
|
}
|
||||||
|
this.currentStepAnimates[this.next] = styles
|
||||||
|
}
|
||||||
|
_animateRun(styles = {}, config = {}) {
|
||||||
|
let ref = this.$.$refs['ani'].ref
|
||||||
|
if (!ref) return
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
nvueAnimation.transition(ref, {
|
||||||
|
styles,
|
||||||
|
...config
|
||||||
|
}, res => {
|
||||||
|
resolve()
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
_nvueNextAnimate(animates, step = 0, fn) {
|
||||||
|
let obj = animates[step]
|
||||||
|
if (obj) {
|
||||||
|
let {
|
||||||
|
styles,
|
||||||
|
config
|
||||||
|
} = obj
|
||||||
|
this._animateRun(styles, config).then(() => {
|
||||||
|
step += 1
|
||||||
|
this._nvueNextAnimate(animates, step, fn)
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
this.currentStepAnimates = {}
|
||||||
|
typeof fn === 'function' && fn()
|
||||||
|
this.isEnd = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
step(config = {}) {
|
||||||
|
// #ifndef APP-NVUE
|
||||||
|
this.animation.step(config)
|
||||||
|
// #endif
|
||||||
|
// #ifdef APP-NVUE
|
||||||
|
this.currentStepAnimates[this.next].config = Object.assign({}, this.options, config)
|
||||||
|
this.currentStepAnimates[this.next].styles.transformOrigin = this.currentStepAnimates[this.next].config.transformOrigin
|
||||||
|
this.next++
|
||||||
|
// #endif
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
|
||||||
|
run(fn) {
|
||||||
|
// #ifndef APP-NVUE
|
||||||
|
this.$.animationData = this.animation.export()
|
||||||
|
this.$.timer = setTimeout(() => {
|
||||||
|
typeof fn === 'function' && fn()
|
||||||
|
}, this.$.durationTime)
|
||||||
|
// #endif
|
||||||
|
// #ifdef APP-NVUE
|
||||||
|
this.isEnd = false
|
||||||
|
let ref = this.$.$refs['ani'] && this.$.$refs['ani'].ref
|
||||||
|
if(!ref) return
|
||||||
|
this._nvueNextAnimate(this.currentStepAnimates, 0, fn)
|
||||||
|
this.next = 0
|
||||||
|
// #endif
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
const animateTypes1 = ['matrix', 'matrix3d', 'rotate', 'rotate3d', 'rotateX', 'rotateY', 'rotateZ', 'scale', 'scale3d',
|
||||||
|
'scaleX', 'scaleY', 'scaleZ', 'skew', 'skewX', 'skewY', 'translate', 'translate3d', 'translateX', 'translateY',
|
||||||
|
'translateZ'
|
||||||
|
]
|
||||||
|
const animateTypes2 = ['opacity', 'backgroundColor']
|
||||||
|
const animateTypes3 = ['width', 'height', 'left', 'right', 'top', 'bottom']
|
||||||
|
animateTypes1.concat(animateTypes2, animateTypes3).forEach(type => {
|
||||||
|
MPAnimation.prototype[type] = function(...args) {
|
||||||
|
// #ifndef APP-NVUE
|
||||||
|
this.animation[type](...args)
|
||||||
|
// #endif
|
||||||
|
// #ifdef APP-NVUE
|
||||||
|
this._nvuePushAnimates(type, args)
|
||||||
|
// #endif
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
export function createAnimation(option, _this) {
|
||||||
|
if(!_this) return
|
||||||
|
clearTimeout(_this.timer)
|
||||||
|
return new MPAnimation(option, _this)
|
||||||
|
}
|
||||||
@@ -0,0 +1,277 @@
|
|||||||
|
<template>
|
||||||
|
<view v-if="isShow" ref="ani" :animation="animationData" :class="customClass" :style="transformStyles" @click="onClick"><slot></slot></view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
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()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
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} 不存在`)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
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
|
||||||
|
}
|
||||||
|
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] + ' '
|
||||||
|
}
|
||||||
|
}
|
||||||
|
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()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style></style>
|
||||||
87
uni_modules/uni-transition/package.json
Normal file
@@ -0,0 +1,87 @@
|
|||||||
|
{
|
||||||
|
"id": "uni-transition",
|
||||||
|
"displayName": "uni-transition 过渡动画",
|
||||||
|
"version": "1.3.1",
|
||||||
|
"description": "元素的简单过渡动画",
|
||||||
|
"keywords": [
|
||||||
|
"uni-ui",
|
||||||
|
"uniui",
|
||||||
|
"动画",
|
||||||
|
"过渡",
|
||||||
|
"过渡动画"
|
||||||
|
],
|
||||||
|
"repository": "https://github.com/dcloudio/uni-ui",
|
||||||
|
"engines": {
|
||||||
|
"HBuilderX": ""
|
||||||
|
},
|
||||||
|
"directories": {
|
||||||
|
"example": "../../temps/example_temps"
|
||||||
|
},
|
||||||
|
"dcloudext": {
|
||||||
|
"category": [
|
||||||
|
"前端组件",
|
||||||
|
"通用组件"
|
||||||
|
],
|
||||||
|
"sale": {
|
||||||
|
"regular": {
|
||||||
|
"price": "0.00"
|
||||||
|
},
|
||||||
|
"sourcecode": {
|
||||||
|
"price": "0.00"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"contact": {
|
||||||
|
"qq": ""
|
||||||
|
},
|
||||||
|
"declaration": {
|
||||||
|
"ads": "无",
|
||||||
|
"data": "无",
|
||||||
|
"permissions": "无"
|
||||||
|
},
|
||||||
|
"npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui"
|
||||||
|
},
|
||||||
|
"uni_modules": {
|
||||||
|
"dependencies": ["uni-scss"],
|
||||||
|
"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"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
11
uni_modules/uni-transition/readme.md
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
|
||||||
|
|
||||||
|
## Transition 过渡动画
|
||||||
|
> **组件名:uni-transition**
|
||||||
|
> 代码块: `uTransition`
|
||||||
|
|
||||||
|
|
||||||
|
元素过渡动画
|
||||||
|
|
||||||
|
### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-transition)
|
||||||
|
#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839
|
||||||
@@ -1,8 +1,8 @@
|
|||||||
|
|
||||||
var isReady=false;var onReadyCallbacks=[];
|
var isReady=false;var onReadyCallbacks=[];
|
||||||
var isServiceReady=false;var onServiceReadyCallbacks=[];
|
var isServiceReady=false;var onServiceReadyCallbacks=[];
|
||||||
var __uniConfig = {"pages":["pages/auth/auth","pages/auth/role","pages/life/life","pages/store/index","pages/user/index","pages/setting/setting","pages/store/goods","pages/store/buy","pages/order/index","pages/order/details","pages/address/index","pages/address/edit","pages/pay/pay","pages/store/list","pages/store/meals","pages/store/search","pages/refund/index","pages/account/integral","pages/account/dt","pages/account/recharge","pages/vip/vip","pages/vip/agreement","pages/team/index","pages/store/shop/shopDetail","pages/store/shop/shopList"],"window":{"navigationBarTextStyle":"black","navigationBarTitleText":"ZH健康","navigationBarBackgroundColor":"#F3F6FB","backgroundColorTop":"#F3F6FB","backgroundColorBottom":"#F3F6FB"},"tabBar":{"borderStyle":"white","selectedColor":"#34CE98","list":[{"iconPath":"static/tabBar/tabBar_02.png","selectedIconPath":"static/tabBar/tabBar_show_02.png","pagePath":"pages/life/life","text":"共力人生"},{"iconPath":"static/tabBar/tabBar_02.png","selectedIconPath":"static/tabBar/tabBar_show_02.png","pagePath":"pages/store/index","text":"DT商城"},{"iconPath":"static/tabBar/tabBar_03.png","selectedIconPath":"static/tabBar/tabBar_show_03.png","pagePath":"pages/user/index","text":"我的"}]},"nvueCompiler":"uni-app","nvueStyleCompiler":"uni-app","renderer":"auto","splashscreen":{"alwaysShowBeforeRender":true,"autoclose":false},"appname":"ZH-HEALTH","compilerVersion":"3.4.14","entryPagePath":"pages/auth/auth","networkTimeout":{"request":60000,"connectSocket":60000,"uploadFile":60000,"downloadFile":60000}};
|
var __uniConfig = {"pages":["pages/auth/auth","pages/auth/role","pages/life/life","pages/store/index","pages/user/index","pages/setting/setting","pages/store/goods","pages/store/buy","pages/order/index","pages/order/details","pages/address/index","pages/address/edit","pages/pay/pay","pages/store/list","pages/store/meals","pages/store/search","pages/refund/list","pages/refund/aftersale","pages/refund/refund_or_exchange_apply","pages/refund/exchange","pages/account/integral","pages/account/dt","pages/account/recharge","pages/vip/vip","pages/vip/agreement","pages/team/index","pages/store/shop/shopDetail","pages/store/shop/shopList"],"window":{"navigationBarTextStyle":"black","navigationBarTitleText":"ZH健康","navigationBarBackgroundColor":"#F3F6FB","backgroundColorTop":"#F3F6FB","backgroundColorBottom":"#F3F6FB"},"tabBar":{"borderStyle":"white","selectedColor":"#34CE98","list":[{"iconPath":"static/tabBar/tabBar_02.png","selectedIconPath":"static/tabBar/tabBar_show_02.png","pagePath":"pages/life/life","text":"共力人生"},{"iconPath":"static/tabBar/tabBar_02.png","selectedIconPath":"static/tabBar/tabBar_show_02.png","pagePath":"pages/store/index","text":"DT商城"},{"iconPath":"static/tabBar/tabBar_03.png","selectedIconPath":"static/tabBar/tabBar_show_03.png","pagePath":"pages/user/index","text":"我的"}]},"nvueCompiler":"uni-app","nvueStyleCompiler":"uni-app","renderer":"auto","splashscreen":{"alwaysShowBeforeRender":true,"autoclose":false},"appname":"共力生态","compilerVersion":"3.4.14","entryPagePath":"pages/auth/auth","networkTimeout":{"request":60000,"connectSocket":60000,"uploadFile":60000,"downloadFile":60000}};
|
||||||
var __uniRoutes = [{"path":"/pages/auth/auth","meta":{"isQuit":true},"window":{"navigationBarTitleText":"登录","navigationStyle":"custom"}},{"path":"/pages/auth/role","meta":{},"window":{"navigationBarTitleText":"角色创建","navigationBarBackgroundColor":"#FFF","titleNView":{"buttons":[{"text":"退出登录","fontSize":"14","width":"80px","color":"#34CE98"}]}}},{"path":"/pages/life/life","meta":{"isQuit":true,"isTabBar":true},"window":{"navigationBarTitleText":"共力人生","navigationStyle":"custom"}},{"path":"/pages/store/index","meta":{"isQuit":true,"isTabBar":true},"window":{"navigationBarTitleText":"DT商城","enablePullDownRefresh":true,"titleNView":{"backgroundColor":"#FFFFFF","buttons":[{"float":"right","text":"","fontSrc":"/static/iconfont.ttf","color":"#000","fontSize":"20px"}]}}},{"path":"/pages/user/index","meta":{"isQuit":true,"isTabBar":true},"window":{"navigationBarTitleText":"我的","navigationStyle":"custom"}},{"path":"/pages/setting/setting","meta":{},"window":{"navigationBarTitleText":"设置中心","navigationBarBackgroundColor":"#34CE98","navigationBarTextStyle":"white"}},{"path":"/pages/store/goods","meta":{},"window":{"navigationStyle":"custom","navigationBarTitleText":"详情","titleNView":{"backgroundColor":"#FFFFFF","type":"transparent"}}},{"path":"/pages/store/buy","meta":{},"window":{"navigationBarTitleText":"确认订单","enablePullDownRefresh":false}},{"path":"/pages/order/index","meta":{},"window":{"navigationBarTitleText":"我的订单","navigationBarBackgroundColor":"#FFFFFF","enablePullDownRefresh":false}},{"path":"/pages/order/details","meta":{},"window":{"navigationBarTitleText":"订单详情","enablePullDownRefresh":false}},{"path":"/pages/address/index","meta":{},"window":{"navigationBarTitleText":"收货地址"}},{"path":"/pages/address/edit","meta":{},"window":{"navigationBarTitleText":"编辑","enablePullDownRefresh":false}},{"path":"/pages/pay/pay","meta":{},"window":{"navigationBarTitleText":"收银台","navigationBarBackgroundColor":"#FFFFFF"}},{"path":"/pages/store/list","meta":{},"window":{"navigationBarTitleText":"商品","navigationBarBackgroundColor":"#FFFFFF","enablePullDownRefresh":true}},{"path":"/pages/store/meals","meta":{},"window":{"navigationBarTitleText":"套餐","navigationBarBackgroundColor":"#FFFFFF","enablePullDownRefresh":true}},{"path":"/pages/store/search","meta":{},"window":{"navigationBarTitleText":"搜索","navigationBarBackgroundColor":"#FFFFFF"}},{"path":"/pages/refund/index","meta":{},"window":{"navigationBarTitleText":"退换货","navigationBarBackgroundColor":"#FFFFFF"}},{"path":"/pages/account/integral","meta":{},"window":{"navigationBarTitleText":"共力值","navigationBarBackgroundColor":"#34CE98","navigationBarTextStyle":"white"}},{"path":"/pages/account/dt","meta":{},"window":{"navigationBarTitleText":"DT积分","navigationBarBackgroundColor":"#34CE98","backgroundColorTop":"#34CE98","navigationBarTextStyle":"white","titleNView":{"buttons":[{"text":"充值","width":"60","fontSize":"14"}]}}},{"path":"/pages/account/recharge","meta":{},"window":{"navigationBarTitleText":"DT积分充值","navigationBarBackgroundColor":"#FFFFFF","titleNView":{"buttons":[{"text":"充值记录","width":"80","fontSize":"14"}]}}},{"path":"/pages/vip/vip","meta":{},"window":{"navigationBarTitleText":"共力会员","navigationBarBackgroundColor":"#242430","navigationBarTextStyle":"white","backgroundColorTop":"#242430"}},{"path":"/pages/vip/agreement","meta":{},"window":{"navigationBarTitleText":"共力会员协议"}},{"path":"/pages/team/index","meta":{},"window":{"navigationBarTitleText":"共力团队","enablePullDownRefresh":false}},{"path":"/pages/store/shop/shopDetail","meta":{},"window":{"navigationStyle":"custom"}},{"path":"/pages/store/shop/shopList","meta":{},"window":{"navigationBarTitleText":"更多店铺","navigationBarBackgroundColor":"#FFFFFF","enablePullDownRefresh":true}}];
|
var __uniRoutes = [{"path":"/pages/auth/auth","meta":{"isQuit":true},"window":{"navigationBarTitleText":"登录","navigationStyle":"custom"}},{"path":"/pages/auth/role","meta":{},"window":{"navigationBarTitleText":"角色创建","navigationBarBackgroundColor":"#FFF","titleNView":{"buttons":[{"text":"退出登录","fontSize":"14","width":"80px","color":"#34CE98"}]}}},{"path":"/pages/life/life","meta":{"isQuit":true,"isTabBar":true},"window":{"navigationBarTitleText":"共力人生","navigationStyle":"custom"}},{"path":"/pages/store/index","meta":{"isQuit":true,"isTabBar":true},"window":{"navigationBarTitleText":"DT商城","enablePullDownRefresh":true,"titleNView":{"backgroundColor":"#FFFFFF","buttons":[{"float":"right","text":"","fontSrc":"/static/iconfont.ttf","color":"#000","fontSize":"20px"}]}}},{"path":"/pages/user/index","meta":{"isQuit":true,"isTabBar":true},"window":{"navigationBarTitleText":"我的","navigationStyle":"custom"}},{"path":"/pages/setting/setting","meta":{},"window":{"navigationBarTitleText":"设置中心","navigationBarBackgroundColor":"#34CE98","navigationBarTextStyle":"white"}},{"path":"/pages/store/goods","meta":{},"window":{"navigationStyle":"custom","navigationBarTitleText":"详情","titleNView":{"backgroundColor":"#FFFFFF","type":"transparent"}}},{"path":"/pages/store/buy","meta":{},"window":{"navigationBarTitleText":"确认订单","enablePullDownRefresh":false}},{"path":"/pages/order/index","meta":{},"window":{"navigationBarTitleText":"我的订单","navigationBarBackgroundColor":"#FFFFFF","enablePullDownRefresh":false}},{"path":"/pages/order/details","meta":{},"window":{"navigationBarTitleText":"订单详情","enablePullDownRefresh":false}},{"path":"/pages/address/index","meta":{},"window":{"navigationBarTitleText":"收货地址"}},{"path":"/pages/address/edit","meta":{},"window":{"navigationBarTitleText":"编辑","enablePullDownRefresh":false}},{"path":"/pages/pay/pay","meta":{},"window":{"navigationBarTitleText":"收银台","navigationBarBackgroundColor":"#FFFFFF"}},{"path":"/pages/store/list","meta":{},"window":{"navigationBarTitleText":"商品","navigationBarBackgroundColor":"#FFFFFF","enablePullDownRefresh":true}},{"path":"/pages/store/meals","meta":{},"window":{"navigationBarTitleText":"套餐","navigationBarBackgroundColor":"#FFFFFF","enablePullDownRefresh":true}},{"path":"/pages/store/search","meta":{},"window":{"navigationBarTitleText":"搜索","navigationBarBackgroundColor":"#FFFFFF"}},{"path":"/pages/refund/list","meta":{},"window":{"navigationBarTitleText":"退换货","navigationBarBackgroundColor":"#FFFFFF"}},{"path":"/pages/refund/aftersale","meta":{},"window":{"navigationBarTitleText":" 选择售后类型","navigationBarBackgroundColor":"#FFFFFF"}},{"path":"/pages/refund/refund_or_exchange_apply","meta":{},"window":{"navigationBarTitleText":"退换货申请","navigationBarBackgroundColor":"#FFFFFF"}},{"path":"/pages/refund/exchange","meta":{},"window":{"navigationBarTitleText":"换货","navigationBarBackgroundColor":"#FFFFFF"}},{"path":"/pages/account/integral","meta":{},"window":{"navigationBarTitleText":"共力值","navigationBarBackgroundColor":"#34CE98","navigationBarTextStyle":"white"}},{"path":"/pages/account/dt","meta":{},"window":{"navigationBarTitleText":"DT积分","navigationBarBackgroundColor":"#34CE98","backgroundColorTop":"#34CE98","navigationBarTextStyle":"white","titleNView":{"buttons":[{"text":"充值","width":"60","fontSize":"14"}]}}},{"path":"/pages/account/recharge","meta":{},"window":{"navigationBarTitleText":"DT积分充值","navigationBarBackgroundColor":"#FFFFFF","titleNView":{"buttons":[{"text":"充值记录","width":"80","fontSize":"14"}]}}},{"path":"/pages/vip/vip","meta":{},"window":{"navigationBarTitleText":"共力会员","navigationBarBackgroundColor":"#242430","navigationBarTextStyle":"white","backgroundColorTop":"#242430"}},{"path":"/pages/vip/agreement","meta":{},"window":{"navigationBarTitleText":"共力会员协议"}},{"path":"/pages/team/index","meta":{},"window":{"navigationBarTitleText":"共力团队"}},{"path":"/pages/store/shop/shopDetail","meta":{},"window":{"navigationStyle":"custom"}},{"path":"/pages/store/shop/shopList","meta":{},"window":{"navigationBarTitleText":"更多店铺","navigationBarBackgroundColor":"#FFFFFF","enablePullDownRefresh":true}}];
|
||||||
__uniConfig.onReady=function(callback){if(__uniConfig.ready){callback()}else{onReadyCallbacks.push(callback)}};Object.defineProperty(__uniConfig,"ready",{get:function(){return isReady},set:function(val){isReady=val;if(!isReady){return}const callbacks=onReadyCallbacks.slice(0);onReadyCallbacks.length=0;callbacks.forEach(function(callback){callback()})}});
|
__uniConfig.onReady=function(callback){if(__uniConfig.ready){callback()}else{onReadyCallbacks.push(callback)}};Object.defineProperty(__uniConfig,"ready",{get:function(){return isReady},set:function(val){isReady=val;if(!isReady){return}const callbacks=onReadyCallbacks.slice(0);onReadyCallbacks.length=0;callbacks.forEach(function(callback){callback()})}});
|
||||||
__uniConfig.onServiceReady=function(callback){if(__uniConfig.serviceReady){callback()}else{onServiceReadyCallbacks.push(callback)}};Object.defineProperty(__uniConfig,"serviceReady",{get:function(){return isServiceReady},set:function(val){isServiceReady=val;if(!isServiceReady){return}const callbacks=onServiceReadyCallbacks.slice(0);onServiceReadyCallbacks.length=0;callbacks.forEach(function(callback){callback()})}});
|
__uniConfig.onServiceReady=function(callback){if(__uniConfig.serviceReady){callback()}else{onServiceReadyCallbacks.push(callback)}};Object.defineProperty(__uniConfig,"serviceReady",{get:function(){return isServiceReady},set:function(val){isServiceReady=val;if(!isServiceReady){return}const callbacks=onServiceReadyCallbacks.slice(0);onServiceReadyCallbacks.length=0;callbacks.forEach(function(callback){callback()})}});
|
||||||
service.register("uni-app-config",{create(a,b,c){if(!__uniConfig.viewport){var d=b.weex.config.env.scale,e=b.weex.config.env.deviceWidth,f=Math.ceil(e/d);Object.assign(__uniConfig,{viewport:f,defaultFontSize:Math.round(f/20)})}return{instance:{__uniConfig:__uniConfig,__uniRoutes:__uniRoutes,global:void 0,window:void 0,document:void 0,frames:void 0,self:void 0,location:void 0,navigator:void 0,localStorage:void 0,history:void 0,Caches:void 0,screen:void 0,alert:void 0,confirm:void 0,prompt:void 0,fetch:void 0,XMLHttpRequest:void 0,WebSocket:void 0,webkit:void 0,print:void 0}}}});
|
service.register("uni-app-config",{create(a,b,c){if(!__uniConfig.viewport){var d=b.weex.config.env.scale,e=b.weex.config.env.deviceWidth,f=Math.ceil(e/d);Object.assign(__uniConfig,{viewport:f,defaultFontSize:Math.round(f/20)})}return{instance:{__uniConfig:__uniConfig,__uniRoutes:__uniRoutes,global:void 0,window:void 0,document:void 0,frames:void 0,self:void 0,location:void 0,navigator:void 0,localStorage:void 0,history:void 0,Caches:void 0,screen:void 0,alert:void 0,confirm:void 0,prompt:void 0,fetch:void 0,XMLHttpRequest:void 0,WebSocket:void 0,webkit:void 0,print:void 0}}}});
|
||||||
|
|||||||
6
unpackage/dist/build/app-plus/app-service.js
vendored
2
unpackage/dist/build/app-plus/app-view.js
vendored
2
unpackage/dist/build/app-plus/manifest.json
vendored
BIN
unpackage/dist/build/app-plus/static/icon/userCloes.png
vendored
Normal file
|
After Width: | Height: | Size: 1.4 KiB |
BIN
unpackage/dist/build/app-plus/static/img/team_00.png
vendored
Normal file
|
After Width: | Height: | Size: 78 KiB |
BIN
unpackage/dist/build/app-plus/static/vip/lv_03.png
vendored
Normal file
|
After Width: | Height: | Size: 173 KiB |
BIN
unpackage/dist/build/app-plus/static/vip/lv_04.png
vendored
|
Before Width: | Height: | Size: 166 KiB After Width: | Height: | Size: 195 KiB |
BIN
unpackage/dist/build/app-plus/static/vip/lv_06.png
vendored
Normal file
|
After Width: | Height: | Size: 194 KiB |
10243
unpackage/dist/dev/app-plus/app-service.js
vendored
10513
unpackage/dist/dev/app-plus/app-view.js
vendored
2
unpackage/dist/dev/app-plus/manifest.json
vendored
BIN
unpackage/dist/dev/app-plus/static/background/wallet-code-background.png
vendored
Normal file
|
After Width: | Height: | Size: 3.4 KiB |
BIN
unpackage/dist/dev/app-plus/static/icon/share_icon_00.png
vendored
Normal file
|
After Width: | Height: | Size: 19 KiB |
BIN
unpackage/dist/dev/app-plus/static/icon/share_icon_01.png
vendored
Normal file
|
After Width: | Height: | Size: 3.0 KiB |
BIN
unpackage/dist/dev/app-plus/static/icon/share_icon_02.png
vendored
Normal file
|
After Width: | Height: | Size: 6.8 KiB |
BIN
unpackage/dist/dev/app-plus/static/icon/sign_btn.png
vendored
Normal file
|
After Width: | Height: | Size: 16 KiB |
BIN
unpackage/dist/dev/app-plus/static/icon/userCloes.png
vendored
Normal file
|
After Width: | Height: | Size: 1.4 KiB |
BIN
unpackage/dist/dev/app-plus/static/img/code_back.png
vendored
Normal file
|
After Width: | Height: | Size: 2.8 MiB |
BIN
unpackage/dist/dev/app-plus/static/img/team_00.png
vendored
Normal file
|
After Width: | Height: | Size: 78 KiB |
BIN
unpackage/dist/dev/app-plus/static/vip/lv_03.png
vendored
Normal file
|
After Width: | Height: | Size: 173 KiB |
BIN
unpackage/dist/dev/app-plus/static/vip/lv_04.png
vendored
|
Before Width: | Height: | Size: 166 KiB After Width: | Height: | Size: 195 KiB |
BIN
unpackage/dist/dev/app-plus/static/vip/lv_06.png
vendored
Normal file
|
After Width: | Height: | Size: 194 KiB |