提交 4d03b1e6 编写于 作者: D devil

百度小程序开发

上级 d95bfec9
......@@ -243,7 +243,12 @@ class User extends Common
*/
public function BaiduUserAuth()
{
$result = (new \base\Baidu(MyC('common_app_mini_baidu_appid'), MyC('common_app_mini_baidu_appkey'), MyC('common_app_mini_baidu_appsecret')))->GetAuthSessionKey($this->data_post);
$config = [
'appid' => MyC('common_app_mini_baidu_appid'),
'key' => MyC('common_app_mini_baidu_appkey'),
'secret' => MyC('common_app_mini_baidu_appsecret'),
];
$result = (new \base\Baidu($config))->GetAuthSessionKey($this->data_post);
if($result['status'] == 0)
{
// 先从数据库获取用户信息
......@@ -296,7 +301,12 @@ class User extends Common
$user = UserService::AppUserInfoHandle(null, 'baidu_openid', $this->data_post['openid']);
if(empty($user))
{
$result = (new \base\Baidu(MyC('common_app_mini_baidu_appid'), MyC('common_app_mini_baidu_appkey'), MyC('common_app_mini_baidu_appsecret')))->DecryptData($this->data_post['encrypted_data'], $this->data_post['iv'], $this->data_post['openid']);
$config = [
'appid' => MyC('common_app_mini_baidu_appid'),
'key' => MyC('common_app_mini_baidu_appkey'),
'secret' => MyC('common_app_mini_baidu_appsecret'),
];
$result = (new \base\Baidu($config))->DecryptData($this->data_post['encrypted_data'], $this->data_post['iv'], $this->data_post['openid']);
if($result['status'] == 0 && !empty($result['data']))
{
......
......@@ -32,15 +32,13 @@ class Baidu
* @blog http://gong.gg/
* @version 1.0.0
* @datetime 2017-12-30T18:04:05+0800
* @param [string] $app_id [应用appid]
* @param [string] $_appkey [应用key]
* @param [string] $app_secret [应用密钥]
* @param [array] $config [配置信息]
*/
public function __construct($app_id, $app_key, $app_secret)
public function __construct($config = [])
{
$this->_appid = $app_id;
$this->_appkey = $app_key;
$this->_appsecret = $app_secret;
$this->_appid = isset($config['appid']) ? $config['appid'] : '';
$this->_appkey = isset($config['key']) ? $config['key'] : '';
$this->_appsecret = isset($config['secret']) ? $config['secret'] : '';
}
/**
......@@ -140,7 +138,7 @@ class Baidu
'client_id' => $this->_appkey,
'sk' => $this->_appsecret,
];
$result = $this->HttpRequest('https://spapi.baidu.com/oauth/jscode2sessionkey', $data);
$result = json_decode($this->HttpRequestPost('https://spapi.baidu.com/oauth/jscode2sessionkey', $data), true);
if(!empty($result['openid']))
{
// 缓存SessionKey
......@@ -154,7 +152,124 @@ class Baidu
}
/**
* [HttpRequest 网络请求]
* [MiniQrCodeCreate 二维码创建]
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @datetime 2018-01-02T19:53:10+0800
* @param [string] $params['page'] [页面地址]
* @param [string] $params['scene'] [参数]
* @return [string] [成功返回文件流, 失败则空]
*/
public function MiniQrCodeCreate($params)
{
// 请求参数
$p = [
[
'checked_type' => 'empty',
'key_name' => 'page',
'error_msg' => 'page地址不能为空',
],
[
'checked_type' => 'length',
'checked_data' => '1,32',
'key_name' => 'scene',
'error_msg' => 'scene参数 1~32 个字符之间',
],
];
$ret = ParamsChecked($params, $p);
if($ret !== true)
{
return DataReturn($ret, -1);
}
// 获取access_token
$access_token = $this->GetMiniAccessToken();
if($access_token === false)
{
return DataReturn('access_token获取失败', -1);
}
// 获取二维码
$url = 'https://openapi.baidu.com/rest/2.0/smartapp/qrcode/getunlimited?access_token='.$access_token;
$path = $params['page'].'?'.$params['scene'];
$data = [
'path' => $path,
'width' => empty($params['width']) ? 1000 : intval($params['width']),
];
$res = $this->HttpRequestPost($url, $data);
if(!empty($res))
{
if(stripos($res, 'errno') === false)
{
return DataReturn('获取成功', 0, $res);
}
$res = json_decode($res, true);
$msg = isset($res['errmsg']) ? $res['errmsg'] : '获取二维码失败';
} else {
$msg = '获取二维码失败';
}
return DataReturn($msg, -1);
}
/**
* [GetMiniAccessToken 获取access_token]
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @datetime 2018-01-02T19:53:42+0800
*/
private function GetMiniAccessToken()
{
// 缓存key
$key = $this->_appid.'_access_token';
$result = cache($key);
if($result !== false)
{
if($result['expires_in'] > time())
{
return $result['access_token'];
}
}
// 网络请求
$url = 'https://openapi.baidu.com/oauth/2.0/token?grant_type=client_credentials&scope=smartapp_snsapi_base&client_id='.$this->_appkey.'&client_secret='.$this->_appsecret;
$result = $this->HttpRequestGet($url);
if(!empty($result['access_token']))
{
// 缓存存储
$result['expires_in'] += time();
cache($key, $result);
return $result['access_token'];
}
return false;
}
/**
* [HttpRequestGet get请求]
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @datetime 2018-01-03T19:21:38+0800
* @param [string] $url [url地址]
* @return [array] [返回数据]
*/
private function HttpRequestGet($url)
{
$curl = curl_init();
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_TIMEOUT, 500);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($curl, CURLOPT_URL, $url);
$res = curl_exec($curl);
curl_close($curl);
return json_decode($res, true);
}
/**
* [HttpRequestPost 网络请求]
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
......@@ -163,7 +278,7 @@ class Baidu
* @param [array] $data [发送数据]
* @return [mixed] [请求返回数据]
*/
private function HttpRequest($url, $data)
private function HttpRequestPost($url, $data)
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
......@@ -195,7 +310,7 @@ class Baidu
}
}
curl_close($ch);
return json_decode($reponse, true);
return $reponse;
}
}
?>
\ No newline at end of file
......@@ -128,7 +128,7 @@ class Toutiao
}
// 获取二维码
$url = 'https://developer.toutiao.com/api/apps/qrcode?access_token='.$access_token;
$url = 'https://developer.toutiao.com/api/apps/qrcode';
$path = $params['page'].'?'.$params['scene'];
$data = [
'access_token' => $access_token,
......
......@@ -28,7 +28,12 @@ App({
default_round_error_icon: "/images/default-round-error-icon.png",
// tabbar页面
tabbar_pages: ["index", "goods-category", "cart", "user"],
tabbar_pages: [
"/pages/index/index",
"/pages/goods-category/goods-category",
"/pages/cart/cart",
"/pages/user/user",
],
// 页面标题
common_pages_title: {
......@@ -482,19 +487,23 @@ App({
* 当前地址是否存在tabbar中
*/
is_tabbar_pages(url) {
if (url.indexOf("?") == -1) {
var all = url.split("/");
if (url.indexOf("?") == -1)
{
var value = url;
} else {
var temp_str = url.split("?");
var all = temp_str[0].split("/");
var value = temp_str[0];
}
if (all.length <= 0) {
if ((value || null) == null)
{
return false;
}
var temp_tabbar_pages = this.data.tabbar_pages;
for (var i in temp_tabbar_pages) {
if (temp_tabbar_pages[i] == all[all.length - 1]) {
for (var i in temp_tabbar_pages)
{
if (temp_tabbar_pages[i] == value)
{
return true;
}
}
......
......@@ -26,9 +26,24 @@
"pages/user-goods-browse/user-goods-browse",
"pages/user-orderaftersale/user-orderaftersale",
"pages/user-orderaftersale-detail/user-orderaftersale-detail",
"pages/coupon/coupon",
"pages/user-coupon/user-coupon",
"pages/extraction-address/extraction-address"
"pages/extraction-address/extraction-address",
"pages/common/open-setting-location/open-setting-location",
"pages/plugins/coupon/index/index",
"pages/plugins/coupon/user/user",
"pages/plugins/distribution/user/user",
"pages/plugins/distribution/order/order",
"pages/plugins/distribution/order-detail/order-detail",
"pages/plugins/distribution/profit/profit",
"pages/plugins/distribution/profit-detail/profit-detail",
"pages/plugins/distribution/statistics/statistics",
"pages/plugins/distribution/poster/poster",
"pages/plugins/distribution/team/team",
"pages/plugins/distribution/extraction/extraction",
"pages/plugins/distribution/extraction-apply/extraction-apply",
"pages/plugins/distribution/extraction-order/extraction-order",
"pages/plugins/distribution/introduce/introduce"
],
"window": {
"navigationBarTitleText": "{{application_title}}",
......@@ -67,6 +82,11 @@
}
]
},
"dynamicLib": {
"echartsLib": {
"provider": "echarts_4_4_0"
}
},
"networkTimeout": {
"request": 10000,
"downloadFile": 10000
......
page {
background: #fbfbfb;
}
.open-setting-view {
background: hsla(0, 0%, 0%, 0.1);
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
text-align: center;
z-index: 1000000;
}
.open-setting-view .content {
margin:0 auto;
width: 360rpx;
height: 160rpx;
padding: 50rpx;
border-radius: 12rpx;
margin-top: 70%;
position: relative;
}
.open-setting-view .content button {
margin-top: 15rpx;
}
.open-setting-view .content .value {
margin-top: 5rpx;
}
.open-setting-view .content .value text {
font-weight: 500;
color: #333;
}
.open-setting-loding {
padding-top: 35%;
}
.open-setting-loding image {
margin: 0 auto;
}
\ No newline at end of file
const app = getApp();
Page({
data: {
params: null,
is_show_open_setting: false,
auth: 'scope.userLocation',
cache_key: 'cache_userlocation_key'
},
onLoad: function (params) {
this.setData({ params: params });
this.init();
},
// 获取权限
init() {
var self = this;
swan.getSetting({
success(res) {
if (!res.authSetting[self.data.auth]) {
swan.authorize({
scope: self.data.auth,
success(res) {
self.choose_location();
},
fail: res => {
self.setData({ is_show_open_setting: true });
}
});
} else {
self.choose_location();
}
},
fail: res => {
app.showToast("请先获取授权");
}
});
},
// 位置服务回调方法
setting_callback_event(e) {
var self = this;
// 这里兼容百度回调名称有误
var auth = e.detail.authSetting || e.detail.autoSetting;
if (auth[self.data.auth]) {
self.setData({ is_show_open_setting: false });
self.choose_location();
}
},
// 打开位置服务
choose_location() {
swan.chooseLocation({
success: res => {
swan.setStorageSync(this.data.cache_key, res);
swan.navigateBack();
},
fail: res => {
swan.navigateBack();
}
});
}
});
\ No newline at end of file
{
"enablePullDownRefresh": false,
"navigationStyle": "custom"
}
\ No newline at end of file
<view s-if="is_show_open_setting" class="open-setting-view">
<view class="content bg-white">
<view class="msg cr-888">开启相应的权限服务</view>
<view class="value cr-666">获取[ <text>位置信息</text> ]权限</view>
<button type="primary" open-type="openSetting" size="mini" bindopensetting="setting_callback_event">打开设置页</button>
</view>
</view>
<view s-else class="open-setting-loding">
<image src="/images/default-bg-loding.gif" class="avatar dis-block" mode="widthFix" />
</view>
\ No newline at end of file
......@@ -9,7 +9,7 @@ Page({
// 优惠劵领取
temp_coupon_receive_index: null,
temp_coupon_receive_value: null,
temp_coupon_receive_value: null
},
onLoad(params) {
......@@ -29,8 +29,7 @@ Page({
get_data_list() {
var self = this;
swan.showLoading({ title: "加载中..." });
if (self.data.data_list.length <= 0)
{
if (self.data.data_list.length <= 0) {
self.setData({
data_list_loding_status: 1
});
......@@ -84,14 +83,13 @@ Page({
// 优惠劵领取事件
coupon_receive_event(e) {
// 参数处理
if((e || null) == null)
{
if ((e || null) == null) {
var index = this.data.temp_coupon_receive_index;
var value = this.data.temp_coupon_receive_value;
} else {
var index = e.currentTarget.dataset.index;
var value = e.currentTarget.dataset.value;
this.setData({temp_coupon_receive_index: index, temp_coupon_receive_value: value});
this.setData({ temp_coupon_receive_index: index, temp_coupon_receive_value: value });
}
// 登录校验
......
......@@ -34,7 +34,7 @@ Page({
} else {
this.setData({
data_list_loding_status: 0,
data_bottom_line_status: false,
data_bottom_line_status: false
});
}
},
......
......@@ -78,10 +78,10 @@
</view>
<view s-if="data_list_loding_status != 3">
<import src="/pages/common/nodata.swan" />
<template is="nodata" data="{{{status: data_list_loding_status, msg: data_list_loding_msg}}}"></template>
</view>
<import src="/pages/common/nodata.swan" />
<template is="nodata" data="{{{status: data_list_loding_status, msg: data_list_loding_msg}}}"></template>
</view>
<import src="/pages/common/bottom_line.swan" />
<template is="bottom_line" data="{{{status: data_bottom_line_status}}}"></template>
<import src="/pages/common/bottom_line.swan" />
<template is="bottom_line" data="{{{status: data_bottom_line_status}}}"></template>
</scroll-view>
\ No newline at end of file
/*
* 三级联动
*/
.select-address {
box-sizing: border-box;
height: 70rpx;
line-height: 70rpx;
padding: 0 10rpx;
}
.select-address .section {
width: 33.33%;
box-sizing: border-box;
}
.select-address .section:not(:first-child) {
padding: 0 5rpx;
}
/*
* 表单
*/
.submit-bottom {
background-color: #ff6a80 !important;
color: #fff !important;
}
\ No newline at end of file
const app = getApp();
Page({
data: {
params: null,
data_list_loding_status: 1,
data_list_loding_msg: '',
extraction_data: null,
province_list: [],
city_list: [],
county_list: [],
province_id: null,
city_id: null,
county_id: null,
default_province: "请选择省",
default_city: "请选择市",
default_county: "请选择区/县",
province_value: null,
city_value: null,
county_value: null,
user_location_cache_key: 'cache_userlocation_key',
user_location: null,
form_submit_disabled_status: false
},
onLoad(params) {
this.setData({ params: params });
},
onReady: function () {
// 清除位置缓存信息
swan.removeStorage({ key: this.data.user_location_cache_key });
this.init();
},
onShow() {
this.user_location_init();
},
init() {
var user = app.get_user_info(this, "init");
if (user != false) {
// 用户未绑定用户则转到登录页面
if (app.user_is_need_login(user)) {
swan.redirectTo({
url: "/pages/login/login?event_callback=init"
});
this.setData({
data_list_loding_status: 2,
data_list_loding_msg: '请先绑定手机号码'
});
return false;
} else {
this.get_province_list();
this.applyinfo_init();
}
} else {
this.setData({
data_list_loding_status: 2,
data_list_loding_msg: '请先授权用户信息'
});
}
},
// 自提点信息
applyinfo_init() {
var self = this;
swan.request({
url: app.get_request_url("applyinfo", "extraction", "distribution"),
method: "POST",
data: {},
dataType: "json",
header: { 'content-type': 'application/x-www-form-urlencoded' },
success: res => {
if (res.data.code == 0) {
var data = res.data.data || null;
self.setData({
extraction_data: data
});
// 数据设置
if (data != null) {
self.setData({
province_id: data.province || null,
city_id: data.city || null,
county_id: data.county || null
});
// 地理位置
var lng = (data.lng || 0) <= 0 ? null : data.lng;
var lat = (data.lat || 0) <= 0 ? null : data.lat;
if (lng != null && lat != null) {
self.setData({ user_location: {
lng: lng,
lat: lat,
address: data.address || ''
} });
}
}
// 获取城市、区县
self.get_city_list();
self.get_county_list();
// 半秒后初始化数据
setTimeout(function () {
self.init_region_value();
}, 500);
} else {
if (app.is_login_check(res.data)) {
app.showToast(res.data.msg);
}
}
},
fail: () => {
app.showToast("省份信息失败");
}
});
},
// 地区数据初始化
init_region_value() {
this.setData({
province_value: this.get_region_value("province_list", "province_id"),
city_value: this.get_region_value("city_list", "city_id"),
county_value: this.get_region_value("county_list", "county_id")
});
},
// 地区初始化匹配索引
get_region_value(list, id) {
var data = this.data[list];
var data_id = this.data[id];
var value = null;
data.forEach((d, i) => {
if (d.id == data_id) {
value = i;
return false;
}
});
return value;
},
// 获取省份
get_province_list() {
var self = this;
swan.request({
url: app.get_request_url("index", "region"),
method: "POST",
data: {},
dataType: "json",
header: { 'content-type': 'application/x-www-form-urlencoded' },
success: res => {
if (res.data.code == 0) {
var data = res.data.data;
self.setData({
province_list: data
});
} else {
app.showToast(res.data.msg);
}
},
fail: () => {
app.showToast("省份获取失败");
}
});
},
// 获取市
get_city_list() {
var self = this;
console.log(self.data.province_id);
if (self.data.province_id) {
swan.request({
url: app.get_request_url("index", "region"),
method: "POST",
data: {
pid: self.data.province_id
},
dataType: "json",
header: { 'content-type': 'application/x-www-form-urlencoded' },
success: res => {
if (res.data.code == 0) {
var data = res.data.data;
self.setData({
city_list: data
});
} else {
app.showToast(res.data.msg);
}
},
fail: () => {
app.showToast("城市获取失败");
}
});
}
},
// 获取区/县
get_county_list() {
var self = this;
if (self.data.city_id) {
// 加载loding
swan.request({
url: app.get_request_url("index", "region"),
method: "POST",
data: {
pid: self.data.city_id
},
dataType: "json",
header: { 'content-type': 'application/x-www-form-urlencoded' },
success: res => {
if (res.data.code == 0) {
var data = res.data.data;
self.setData({
county_list: data
});
} else {
app.showToast(res.data.msg);
}
},
fail: () => {
app.showToast("区/县获取失败");
}
});
}
},
// 省份事件
select_province_event(e) {
var index = e.detail.value || 0;
if (index >= 0) {
var data = this.data.province_list[index];
this.setData({
province_value: index,
province_id: data.id,
city_value: null,
county_value: null,
city_id: null,
county_id: null
});
this.get_city_list();
}
},
// 市事件
select_city_event(e) {
var index = e.detail.value || 0;
if (index >= 0) {
var data = this.data.city_list[index];
this.setData({
city_value: index,
city_id: data.id,
county_value: null,
county_id: null
});
this.get_county_list();
}
},
// 区/县事件
select_county_event(e) {
var index = e.detail.value || 0;
if (index >= 0) {
var data = this.data.county_list[index];
this.setData({
county_value: index,
county_id: data.id
});
}
},
// 省市区未按照顺序选择提示
region_select_error_event(e) {
var value = e.currentTarget.dataset.value || null;
if (value != null) {
app.showToast(value);
}
},
// 选择地理位置
choose_location_event(e) {
swan.navigateTo({
url: '/pages/common/open-setting-location/open-setting-location'
});
},
// 地址信息初始化
user_location_init() {
var result = swan.getStorageSync(this.data.user_location_cache_key) || null;
var data = null;
if (result != null) {
data = {
name: result.name || null,
address: result.address || null,
lat: result.latitude || null,
lng: result.longitude || null
};
}
this.setData({ user_location: data });
},
// 数据提交
form_submit(e) {
var self = this;
// 表单数据
var form_data = e.detail.value;
// 数据校验
var validation = [{ fields: "name", msg: "请填写联系人" }, { fields: "tel", msg: "请填写联系电话" }, { fields: "province", msg: "请选择省份" }, { fields: "city", msg: "请选择城市" }, { fields: "county", msg: "请选择区县" }, { fields: "address", msg: "请填写详细地址" }, { fields: "lng", msg: "请选择地理位置" }, { fields: "lat", msg: "请选择地理位置" }];
form_data["province"] = self.data.province_id;
form_data["city"] = self.data.city_id;
form_data["county"] = self.data.county_id;
// 地理位置
if ((self.data.user_location || null) != null) {
form_data["lng"] = self.data.user_location.lng || 0;
form_data["lat"] = self.data.user_location.lat || 0;
}
// 验证提交表单
if (app.fields_check(form_data, validation)) {
if ((self.data.extraction_data || null) != null && (self.data.extraction_data.status || 0) == 1) {
swan.showModal({
title: '温馨提示',
content: '数据需重新审核后方可生效',
confirmText: '确认',
cancelText: '暂不',
success: result => {
if (result.confirm) {
self.request_data_save(form_data);
}
}
});
} else {
self.request_data_save(form_data);
}
}
},
// 数据保存
request_data_save(data) {
var self = this;
self.setData({ form_submit_disabled_status: true });
swan.showLoading({ title: "处理中..." });
swan.request({
url: app.get_request_url("applysave", "extraction", "distribution"),
method: "POST",
data: data,
dataType: "json",
header: { 'content-type': 'application/x-www-form-urlencoded' },
success: res => {
swan.hideLoading();
if (res.data.code == 0) {
app.showToast(res.data.msg, "success");
setTimeout(function () {
swan.navigateBack();
}, 1000);
} else {
self.setData({ form_submit_disabled_status: false });
if (app.is_login_check(res.data)) {
app.showToast(res.data.msg);
} else {
app.showToast('提交失败,请重试!');
}
}
},
fail: () => {
self.setData({ form_submit_disabled_status: false });
swan.hideLoading();
app.showToast("服务器请求出错");
}
});
}
});
\ No newline at end of file
{
"enablePullDownRefresh": false,
"navigationBarBackgroundColor": "#ff6a80",
"backgroundColorTop": "#ff6a80",
"backgroundColorBottom": "#f5f5f5",
"backgroundTextStyle": "light",
"navigationBarTitleText": "取货点信息"
}
\ No newline at end of file
<form bindsubmit="form_submit" class="form-container oh">
<view class="form-gorup bg-white">
<view class="form-gorup-title">别名<text class="form-group-tips">选填</text></view>
<input type="text" name="alias" value="{=extraction_data.alias || ''=}" placeholder-class="cr-ccc" class="cr-666" placeholder="别名格式最多 16 个字符" />
</view>
<view class="form-gorup bg-white">
<view class="form-gorup-title">联系人<text class="form-group-tips-must">必填</text></view>
<input type="text" name="name" value="{=extraction_data.name || ''=}" placeholder-class="cr-ccc" class="cr-666" placeholder="联系人格式 2~16 个字符之间" />
</view>
<view class="form-gorup bg-white">
<view class="form-gorup-title">联系电话<text class="form-group-tips-must">必填</text></view>
<input type="text" name="tel" value="{=extraction_data.tel || ''=}" placeholder-class="cr-ccc" class="cr-666" placeholder="座机 或 手机" />
</view>
<view class="form-gorup bg-white">
<view class="form-gorup-title">省市区<text class="form-group-tips-must">必选</text></view>
<view class="select-address oh">
<view class="section fl">
<picker name="province" bindchange="select_province_event" value="{{province_value}}" range="{{province_list}}" range-key="name">
<view class="name {{(province_value == null) ? 'cr-ccc' : 'cr-666' }}">{{province_list[province_value].name || default_province}}</view>
</picker>
</view>
<view class="section fl">
<picker s-if="(province_id || null) != null" name="city" bindchange="select_city_event" value="{{city_value}}" range="{{city_list}}" range-key="name">
<view class="name {{(city_value == null) ? 'cr-ccc' : 'cr-666' }}">{{city_list[city_value].name || default_city}}</view>
</picker>
<text s-else class="cr-ccc" bindtap="region_select_error_event" data-value="请先选择省份">请先选择省份</text>
</view>
<view class="section fl">
<picker s-if="(city_id || null) != null" name="county" bindchange="select_county_event" value="{{county_value}}" range="{{county_list}}" range-key="name">
<view class="name {{(county_value == null) ? 'cr-ccc' : 'cr-666' }}">{{county_list[county_value].name || default_county}}</view>
</picker>
<text s-else class="cr-ccc" bindtap="region_select_error_event" data-value="请先选择城市">请先选择城市</text>
</view>
</view>
</view>
<view class="form-gorup bg-white">
<view class="form-gorup-title">详细地址<text class="form-group-tips-must">必填</text></view>
<input type="text" name="address" value="{=extraction_data.address || ''=}" placeholder-class="cr-ccc" class="cr-666" placeholder="详细地址格式 1~80 个字符之间" />
</view>
<view class="form-gorup bg-white">
<view class="form-gorup-title">地理位置<text class="form-group-tips-must">必选</text></view>
<view bindtap="choose_location_event" class="form-gorup-text">
<view s-if="(user_location || null) == null" class="cr-888">请选择地理位置</view>
<view s-else class="cr-666">{{((user_location || null) != null && (user_location.name || null) != null) ? user_location.name+' ' : ''}}{{user_location.address || ''}}</view>
</view>
</view>
<view class="form-gorup">
<view s-if="(extraction_data || null) != null && (extraction_data.status || 0) == 1" class="tips spacing-mb">
注意:编辑信息将重新审核后方可生效
</view>
<button class="submit-bottom" type="default" formType="submit" hover-class="none" disabled="{{form_submit_disabled_status}}">提交</button>
</view>
</form>
\ No newline at end of file
/*
* 导航
*/
.nav {
background: #eee;
height: 80rpx;
line-height: 80rpx;
}
.nav .item {
width: 33.33%;
}
.nav .active {
color: #ff6a80;
}
/*
* 列表
*/
.scroll-box {
height: calc(100vh - 80rpx);
}
.data-list .item .base {
padding: 15rpx 10rpx;
}
.data-list .item .base .avatar {
width: 60rpx;
height: 60rpx;
border-radius: 50%;
}
.data-list .item .base .nickname {
margin-top: 10rpx;
}
.data-list .item .content {
padding: 20rpx 10rpx;
}
.data-list .item .content .multi-text {
line-height: 50rpx;
}
.data-list .item .content .multi-text .title {
margin-right: 30rpx;
}
.data-list .item .content .multi-text .value {
font-weight: 500;
}
.data-list .item .content .multi-text .unit {
margin-left: 10rpx;
}
.data-list .item .operation {
padding: 20rpx 10rpx;
}
.data-list .item .submit-order {
border: 1px solid #e5e5e5;
color: #888 !important;
}
.data-list .item .operation button:not(:first-child) {
margin-left: 30rpx;
}
/*
* 表单
*/
.submit-bottom {
background-color: #ff6a80 !important;
color: #fff !important;
}
/*
* 搜索
*/
.search-drag {
width: 30px;
height: 30px;
padding: 10px;
background: hsla(0, 0%, 0%, 0.1);
border-radius: 50%;
margin-top: calc(100vh - 160px);
margin-left: calc(50% - 25px);
box-shadow: 0px 3px 6px rgba(0, 0, 0, 0.3);
}
\ No newline at end of file
const app = getApp();
Page({
data: {
data_list: [],
data_page_total: 0,
data_page: 1,
data_list_loding_status: 1,
data_bottom_line_status: false,
params: null,
nav_status_list: [{ name: "全部", value: "-1" }, { name: "待处理", value: "0" }, { name: "已处理", value: "1" }],
nav_status_index: 0,
is_show_take_popup: false,
extraction_value: null,
extraction_code: '',
form_submit_disabled_status: false,
is_show_search_popup: false,
search_keywords_value: ''
},
onLoad(params) {
// 是否指定状态
var nav_status_index = 0;
if (params.status != undefined) {
for (var i in this.data.nav_status_list) {
if (this.data.nav_status_list[i]['value'] == params.status) {
nav_status_index = i;
break;
}
}
}
this.setData({
params: params,
nav_status_index: nav_status_index
});
this.init();
},
onShow() {},
init() {
var user = app.get_user_info(this, 'init');
if (user != false) {
// 用户未绑定用户则转到登录页面
if (app.user_is_need_login(user)) {
swan.redirectTo({
url: "/pages/login/login?event_callback=init"
});
return false;
} else {
// 获取数据
this.get_data_list();
}
} else {
this.setData({
data_list_loding_status: 0,
data_bottom_line_status: false
});
}
},
// 获取数据
get_data_list(is_mandatory) {
// 分页是否还有数据
if ((is_mandatory || 0) == 0) {
if (this.data.data_bottom_line_status == true) {
return false;
}
}
// 加载loding
swan.showLoading({ title: "加载中..." });
this.setData({
data_list_loding_status: 1
});
// 参数
var status = (this.data.nav_status_list[this.data.nav_status_index] || null) == null ? -1 : this.data.nav_status_list[this.data.nav_status_index]['value'];
// 获取数据
swan.request({
url: app.get_request_url("order", "extraction", "distribution"),
method: "POST",
data: {
page: this.data.data_page,
status: status || 0,
keywords: this.data.search_keywords_value || ''
},
dataType: "json",
success: res => {
swan.hideLoading();
swan.stopPullDownRefresh();
if (res.data.code == 0) {
if (res.data.data.data.length > 0) {
if (this.data.data_page <= 1) {
var temp_data_list = res.data.data.data;
} else {
var temp_data_list = this.data.data_list;
var temp_data = res.data.data.data;
for (var i in temp_data) {
temp_data_list.push(temp_data[i]);
}
}
this.setData({
data_list: temp_data_list,
data_total: res.data.data.total,
data_page_total: res.data.data.page_total,
data_list_loding_status: 3,
data_page: this.data.data_page + 1
});
// 是否还有数据
if (this.data.data_page > 1 && this.data.data_page > this.data.data_page_total) {
this.setData({ data_bottom_line_status: true });
} else {
this.setData({ data_bottom_line_status: false });
}
} else {
this.setData({
data_list_loding_status: 0,
data_list: [],
data_bottom_line_status: false
});
}
} else {
this.setData({
data_list_loding_status: 0
});
if (app.is_login_check(res.data, this, 'get_data_list')) {
app.showToast(res.data.msg);
}
}
},
fail: () => {
swan.hideLoading();
swan.stopPullDownRefresh();
this.setData({
data_list_loding_status: 2
});
app.showToast("服务器请求出错");
}
});
},
// 下拉刷新
onPullDownRefresh() {
this.setData({
data_page: 1
});
this.get_data_list(1);
},
// 滚动加载
scroll_lower(e) {
this.get_data_list();
},
// 导航事件
nav_event(e) {
this.setData({
nav_status_index: e.currentTarget.dataset.index || 0,
data_page: 1
});
this.get_data_list(1);
},
// 取件码弹层-开启
list_submit_take_event(e) {
this.setData({
is_show_take_popup: true,
extraction_code: '',
extraction_value: {
index: e.currentTarget.dataset.index,
oid: e.currentTarget.dataset.oid,
uid: e.currentTarget.dataset.uid
}
});
},
// 取件码弹层-关闭
take_popup_event_close() {
this.setData({ is_show_take_popup: false });
},
// 取件码输入事件
extraction_code_input_event(e) {
this.setData({ extraction_code: e.detail.value || '' });
},
// 取件提交
form_submit_take_event(e) {
var self = this;
// 参数
if ((self.data.extraction_code || null) == null) {
app.showToast('请输入取件码');
return false;
}
if ((self.data.extraction_value || null) == null) {
app.showToast('操作数据有误');
return false;
}
// 提交表单
var data = {
id: self.data.extraction_value.oid,
user_id: self.data.extraction_value.uid,
extraction_code: self.data.extraction_code
};
self.setData({ form_submit_disabled_status: true });
swan.showLoading({ title: "处理中..." });
swan.request({
url: app.get_request_url("take", "extraction", "distribution"),
method: "POST",
data: data,
dataType: "json",
success: res => {
self.setData({ form_submit_disabled_status: false });
swan.hideLoading();
if (res.data.code == 0) {
var temp_data_list = this.data.data_list;
var index = self.data.extraction_value.index;
temp_data_list[index]['status'] = 1;
temp_data_list[index]['status_name'] = '已处理';
self.setData({
is_show_take_popup: false,
data_list: temp_data_list
});
app.showToast(res.data.msg, "success");
} else {
app.showToast(res.data.msg);
}
},
fail: () => {
self.setData({ form_submit_disabled_status: false });
swan.hideLoading();
app.showToast("服务器请求出错");
}
});
},
// 搜索弹层-开启
drag_event(e) {
this.setData({ is_show_search_popup: true });
},
// 搜索弹层-关闭
search_popup_event_close() {
this.setData({ is_show_search_popup: false });
},
// 搜索关键字输入事件
search_input_keywords_event(e) {
this.setData({ search_keywords_value: e.detail.value || '' });
},
// 搜索确认事件
search_submit_event(e) {
this.setData({
is_show_search_popup: false,
data_page: 1
});
this.get_data_list(1);
}
});
\ No newline at end of file
{
"enablePullDownRefresh": true,
"navigationBarBackgroundColor": "#ff6a80",
"backgroundColorTop": "#ff6a80",
"backgroundColorBottom": "#f5f5f5",
"backgroundTextStyle": "light",
"navigationBarTitleText": "取货订单",
"usingComponents": {
"component-popup": "/components/popup/popup"
}
}
\ No newline at end of file
<!-- 导航 -->
<view class="nav">
<block s-for="item, index in nav_status_list" s-key="key">
<view class="item fl tc cr-888 {{nav_status_index == index ? 'active' : ''}}" data-index="{{index}}" bindtap="nav_event">{{item.name}}</view>
</block>
</view>
<movable-area class="wh-auto ht-auto">
<!-- 列表 -->
<scroll-view scroll-y="{{true}}" class="scroll-box" bindscrolltolower="scroll_lower" lower-threshold="30">
<view class="data-list">
<view class="item bg-white spacing-mb" s-if="data_list.length > 0" s-for="item, index in data_list" s-key="key">
<view class="base oh br-b">
<text class="fl cr-666">{{item.add_time}}</text>
<text class="fr nickname cr-888">{{item.status_name}}</text>
</view>
<view class="content">
<view class="multi-text">
<text class="title cr-666">订单号</text>
<text class="value">{{item.order_no}}</text>
</view>
<view class="multi-text">
<text class="title cr-666">支付金额</text>
<text class="value">{{item.pay_price}}</text>
<text class="unit cr-888">元</text>
</view>
</view>
<view s-if="item.status == 0" class="operation tr br-t-dashed">
<button class="cr-888 br" type="default" size="mini" hover-class="none" data-index="{{index}}" data-oid="{{item.order_id}}" data-uid="{{item.order_user_id}}" bindtap="list_submit_take_event">取货</button>
</view>
</view>
<view s-if="data_list.length == 0">
<import src="/pages/common/nodata.swan" />
<template is="nodata" data="{{{status: data_list_loding_status}}}">
</template>
</view>
<import src="/pages/common/bottom_line.swan" />
<template is="bottom_line" data="{{{status: data_bottom_line_status}}}"></template>
</view>
</scroll-view>
<!-- 拖拽按钮 -->
<movable-view class="search-drag tc" direction="all" bindtap="drag_event">
<icon type="search" size="30" />
</movable-view>
</movable-area>
<!-- 取货 popup -->
<component-popup status="{{is_show_take_popup}}" position="bottom" bindonclose="take_popup_event_close">
<view class="form-container spacing-mt">
<view class="form-gorup tc">
<view class="form-gorup-title">取货码</view>
<input type="number" value="{=extraction_code=}" placeholder-class="cr-ccc" class="cr-666 br-b spacing-mt" placeholder="请输入取货码" maxlength="4" bindinput="extraction_code_input_event" />
</view>
<view class="form-gorup">
<button class="submit-bottom" type="default" hover-class="none" disabled="{{form_submit_disabled_status}}" bindtap="form_submit_take_event">确认</button>
</view>
</view>
</component-popup>
<!-- 搜索 popup -->
<component-popup status="{{is_show_search_popup}}" position="bottom" bindonclose="search_popup_event_close">
<view class="form-container spacing-mt">
<view class="form-gorup tc">
<view class="form-gorup-title">搜索条件</view>
<input type="number" value="{=search_keywords_value=}" placeholder-class="cr-ccc" class="cr-666 br-b spacing-mt" placeholder="订单号/取货码" bindinput="search_input_keywords_event" />
</view>
<view class="form-gorup">
<button class="submit-bottom" type="default" hover-class="none" disabled="{{form_submit_disabled_status}}" bindtap="search_submit_event">搜索</button>
</view>
</view>
</component-popup>
\ No newline at end of file
/*
* 公共
*/
.operation {
margin-top: 30rpx;
}
.title-msg {
font-size: 46rpx;
margin-top: 5%;
}
.mini-msg {
color: #0e90d2;
}
.to-submit {
margin-top: 15rpx;
}
.waiting-audit, .refuse {
padding: 10% 10rpx 60rpx 10rpx;
}
/*
* 未申请
*/
.apply-not {
padding: 10rpx 10rpx 60rpx 10rpx;
}
.apply-not .apply-desc {
margin: 30rpx 30rpx 0 30rpx;
}
.apply-not .to-submit {
margin-top: 10%;
}
/*
* 待审核
*/
.waiting-audit .title-msg {
color: #f37b1d;
}
/*
* 已审核
*/
.valid .base {
padding: 20rpx 10rpx;
}
.valid .base-title {
font-weight: 500;
}
.valid .alias {
border: 1px solid #ff6a80;
color: #ff6a80;
padding: 2rpx 10rpx;
border-radius: 6rpx;
margin-right: 10rpx;
}
.valid .edit-submit {
color: #0e90d2;
}
.valid .content {
line-height: 46rpx;
}
.valid .content, .valid .statistics .item {
padding: 30rpx 10rpx;
}
.valid .extraction-notice {
padding: 0 20rpx;
}
.valid .statistics .item {
width: calc(50% - 1px);
box-sizing: border-box;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
}
.valid .statistics .item .value {
font-weight: bold;
font-size: 36rpx;
margin-top: 10rpx;
}
.valid .statistics .item .order-wait-value {
color: #f00;
}
.valid .statistics .item .order-already-value {
color: #2ba245;
}
.valid .relieve {
padding: 0 10rpx;
}
/*
* 拒绝
*/
.refuse .title-msg {
color: #dd514c;
}
.refuse .fail-tips {
padding-left: 10rpx;
background: #ffffeb;
margin-top: 10rpx;
}
.refuse .mini-msg {
margin-top: 50rpx;
}
/*
* 介绍
*/
.apply-desc {
background: #def2fd;
border: 1px solid #cfeeff;
color: #1490d2;
padding: 10rpx;
font-size: 26rpx;
border-radius: 2px;
}
\ No newline at end of file
const app = getApp();
Page({
data: {
data_bottom_line_status: false,
data_list_loding_status: 1,
data_list_loding_msg: '',
data_base: null,
extraction: null,
statistical: null
},
onLoad(params) {},
onShow() {
this.init();
},
init() {
var user = app.get_user_info(this, 'init');
if (user != false) {
// 用户未绑定用户则转到登录页面
if (app.user_is_need_login(user)) {
swan.redirectTo({
url: "/pages/login/login?event_callback=init"
});
return false;
} else {
// 获取数据
this.get_data();
}
} else {
this.setData({
data_list_loding_status: 0,
data_bottom_line_status: false
});
}
},
// 获取数据
get_data() {
var self = this;
swan.request({
url: app.get_request_url("index", "extraction", "distribution"),
method: "POST",
data: {},
dataType: "json",
success: res => {
swan.hideLoading();
swan.stopPullDownRefresh();
if (res.data.code == 0) {
var data = res.data.data;
self.setData({
data_base: data.base || null,
extraction: data.extraction || null,
statistical: data.statistical || null,
data_list_loding_msg: '',
data_list_loding_status: 0,
data_bottom_line_status: true
});
} else {
self.setData({
data_bottom_line_status: false,
data_list_loding_status: 2,
data_list_loding_msg: res.data.msg
});
if (app.is_login_check(res.data, self, 'get_data')) {
app.showToast(res.data.msg);
}
}
},
fail: () => {
swan.hideLoading();
swan.stopPullDownRefresh();
self.setData({
data_bottom_line_status: false,
data_list_loding_status: 2,
data_list_loding_msg: '服务器请求出错'
});
app.showToast("服务器请求出错");
}
});
},
// 下拉刷新
onPullDownRefresh() {
this.get_data();
},
// 地图查看
address_map_event(e) {
if ((this.data.extraction || null) == null) {
return false;
}
var ads = this.data.extraction;
var lng = parseFloat(ads.lng || 0);
var lat = parseFloat(ads.lat || 0);
if (lng <= 0 || lat <= 0) {
return false;
}
swan.openLocation({
latitude: lat,
longitude: lng,
scale: 18,
name: ads.alias || '',
address: (ads.province_name || '') + (ads.city_name || '') + (ads.county_name || '') + (ads.address || '')
});
},
// 进入取货订单管理
order_event(e) {
var value = e.currentTarget.dataset.value || 0;
swan.navigateTo({
url: '/pages/plugins/distribution/extraction-order/extraction-order?status=' + value
});
}
});
\ No newline at end of file
{
"enablePullDownRefresh": true,
"navigationBarBackgroundColor": "#ff6a80",
"backgroundColorTop": "#ff6a80",
"backgroundColorBottom": "#f5f5f5",
"backgroundTextStyle": "light",
"navigationBarTitleText": "取货点"
}
\ No newline at end of file
<view s-if="data_list_loding_status == 0">
<!-- 未申请 -->
<view s-if="extraction == null" class="apply-not bg-white">
<view s-if="(data_base || null) != null && (data_base.self_extraction_apply_desc || null) != null && data_base.self_extraction_apply_desc.length > 0" class="apply-desc">
<view s-for="item, index in data_base.self_extraction_apply_desc" s-key="key" class="item">
{{item}}
</view>
</view>
<view class="to-submit tc">
<navigator url="/pages/plugins/distribution/extraction-apply/extraction-apply" hover-class="none">
<button type="primary" size="mini" hover-class="none">立即申请</button>
</navigator>
</view>
</view>
<!-- 已存在申请信息 -->
<view s-else class="apply-already">
<!-- status 状态(0待审核, 1已通过, 2已拒绝 -->
<!-- 审核中 -->
<view s-if="extraction.status == 0" class="waiting-audit bg-white">
<view class="title-msg tc">申请信息正在审核中...</view>
<view class="operation oh tc">
<view class="cr-666 mini-msg">你可以</view>
<view class="to-submit tc">
<navigator url="/pages/plugins/distribution/extraction-apply/extraction-apply" hover-class="none">
<button type="primary" size="mini" hover-class="none">编辑信息</button>
</navigator>
</view>
</view>
</view>
<!-- 审核通过 -->
<view s-elif="extraction.status == 1 || extraction.status == 3" class="valid">
<view class="base br-b oh bg-white">
<view class="base-title fl">取货点信息</view>
<view class="fr edit-submit">
<navigator url="/pages/plugins/distribution/extraction-apply/extraction-apply" hover-class="none">编辑信息</navigator>
</view>
</view>
<view class="content bg-white" bindtap="address_map_event">
<text s-if="(extraction.alias || null) != null" class="alias">{{extraction.alias}}</text>
<text class="cr-666">{{extraction.province_name}}{{extraction.city_name}}{{extraction.county_name}}{{extraction.address}}</text>
</view>
<view s-if="extraction.status == 1">
<view class="base br-b oh bg-white spacing-mt">
<view class="base-title fl">取货订单统计</view>
<view class="fr edit-submit">
<navigator url="/pages/plugins/distribution/extraction-order/extraction-order" hover-class="none">查看取货订单</navigator>
</view>
</view>
<view class="content bg-white statistics oh">
<view class="item fl tc" data-value="0" bindtap="order_event">
<view class="title cr-666">待处理</view>
<view class="value single-text order-wait-value">{{statistical.order_wait || 0}}</view>
</view>
<view class="item fl tc br-l" data-value="1" bindtap="order_event">
<view class="title cr-666">已处理</view>
<view class="value single-text order-already-value">{{statistical.order_already || 0}}</view>
</view>
</view>
</view>
<view s-else class="spacing-mt relieve">
<view class="tips">
当前状态也解约,可重新编辑数据提交审核。
</view>
</view>
<view s-if="extraction.status == 1 && (data_base || null) != null && (data_base.self_extraction_common_notice || null) != null && data_base.self_extraction_common_notice.length > 0" class="extraction-notice spacing-mt">
<view class="tips">
<view s-for="item, index in data_base.self_extraction_common_notice" s-key="key" class="item">
{{item}}
</view>
</view>
</view>
</view>
<!-- 审核失败 -->
<view s-else="{{extraction.status == 2}}" class="refuse bg-white">
<view class="title-msg tc">申请信息审核失败</view>
<view s-if="(extraction.fail_reason || null) != null" class="fail-tips tips">原因:{{extraction.fail_reason}}</view>
<view class="operation oh tc">
<view class="cr-666 mini-msg">你可以重新编辑信息提交</view>
<view class="to-submit tc">
<navigator url="/pages/plugins/distribution/extraction-apply/extraction-apply" hover-class="none">
<button type="primary" size="mini" hover-class="none">编辑信息</button>
</navigator>
</view>
</view>
</view>
</view>
<import src="/pages/common/bottom_line.swan" />
<template is="bottom_line" data="{{{status: data_bottom_line_status}}}"></template>
</view>
<view s-else>
<import src="/pages/common/nodata.swan" />
<template is="nodata" data="{{{status: data_list_loding_status, msg: data_list_loding_msg}}}"></template>
</view>
\ No newline at end of file
/*
* 等级信息
*/
.panel-item .panel-title {
background: #fff;
font-weight: bold;
padding: 15rpx;
border-bottom: 2px solid #eee;
font-size: 34rpx;
}
.panel-item .panel-content .item {
padding: 20rpx 0;
}
.panel-item .panel-content .item:last-child {
border: 0;
}
.panel-item .panel-content .item .title {
width: 25%;
padding-left: 20rpx;
}
.panel-item .panel-content .item .content {
width: calc(75% - 50rpx);
padding-left: 20rpx;
min-height: 46rpx;
}
.panel-item .panel-content .item view {
line-height: 46rpx;
}
.panel-item .panel-content .item .images image {
width: 60rpx;
height: 60rpx;
}
/*
* 等级介绍
*/
.user-center-level-desc {
padding: 0 10rpx;
}
.user-center-level-desc .tips-desc {
background: #def2fd;
border: 1px solid #cfeeff;
color: #1490d2;
padding: 10rpx;
font-size: 26rpx;
border-radius: 2px;
}
\ No newline at end of file
const app = getApp();
Page({
data: {
params: null,
data_list_loding_status: 1,
data_list_loding_msg: '',
data_bottom_line_status: false,
data_base: null,
level_list: []
},
onLoad(params) {
this.setData({ params: params });
this.init();
},
onShow() {},
init() {
var self = this;
swan.showLoading({ title: "加载中..." });
this.setData({
data_list_loding_status: 1
});
swan.request({
url: app.get_request_url("index", "introduce", "distribution"),
method: "POST",
data: {
id: this.data.params.id
},
dataType: "json",
success: res => {
swan.hideLoading();
swan.stopPullDownRefresh();
if (res.data.code == 0) {
var data = res.data.data;
var data_base = data.base || null;
var level_list = (data.level_list || null) != null && data.level_list.length > 0 ? data.level_list : [];
self.setData({
data_base: data_base,
level_list: level_list,
data_list_loding_status: data_base == null || level_list.length <= 0 ? 0 : 3,
data_bottom_line_status: true,
data_list_loding_msg: ''
});
} else {
self.setData({
data_list_loding_status: 2,
data_bottom_line_status: false,
data_list_loding_msg: res.data.msg
});
if (app.is_login_check(res.data, self, 'init')) {
app.showToast(res.data.msg);
}
}
},
fail: () => {
swan.hideLoading();
swan.stopPullDownRefresh();
self.setData({
data_list_loding_status: 2,
data_bottom_line_status: false,
data_list_loding_msg: '服务器请求出错'
});
app.showToast("服务器请求出错");
}
});
},
// 下拉刷新
onPullDownRefresh() {
this.init();
}
});
\ No newline at end of file
{
"enablePullDownRefresh": true,
"navigationBarBackgroundColor": "#ff6a80",
"backgroundColorTop": "#ff6a80",
"backgroundColorBottom": "#f5f5f5",
"backgroundTextStyle": "light",
"navigationBarTitleText": "等级介绍"
}
\ No newline at end of file
<view s-if="data_base != null">
<!-- 等级信息 -->
<view s-if="level_list.length > 0" class="panel-item">
<view s-for="item, index in level_list" s-key="item" class="bg-white spacing-mb">
<view class="panel-title">{{item.name}}</view>
<view class="panel-content">
<view class="item br-b oh">
<view class="title fl">等级证书</view>
<view class="content cr-888 fl br-l images">
<image src="{{item.images_url}}" class="avatar dis-block fl" mode="widthFix" />
</view>
</view>
<view class="item br-b oh">
<view class="title fl">返佣比例</view>
<view class="content cr-888 fl br-l">
<view>一级 {{item.level_rate_one}}%</view>
<view>二级 {{item.level_rate_two}}%</view>
<view>三级 {{item.level_rate_three}}%</view>
</view>
</view>
<view class="item br-b oh">
<view class="title fl">消费金额</view>
<view class="content cr-888 fl br-l">{{item.rules_msg}}</view>
</view>
</view>
</view>
</view>
<!-- 等级介绍 -->
<view s-if="(data_base.user_center_level_desc || null) != null && data_base.user_center_level_desc.length > 0" class="spacing-mt user-center-level-desc">
<view class="tips-desc">
<view s-for="item, index in data_base.user_center_level_desc" s-key="key" class="item">
{{item}}
</view>
</view>
</view>
<view s-if="((data_base.user_center_level_desc || null) != null && data_base.user_center_level_desc.length > 0) || level_list.length > 0">
<import src="/pages/common/bottom_line.swan" />
<template is="bottom_line" data="{{{status: data_bottom_line_status}}}"></template>
</view>
</view>
<view s-if="level_list.length <= 0 && ((data_base.user_center_level_desc || null) == null || data_base.user_center_level_desc.length <= 0)">
<import src="/pages/common/nodata.swan" />
<template is="nodata" data="{{{status: data_list_loding_status, msg: data_list_loding_msg}}}"></template>
</view>
.panel-item .panel-title {
background: #fff;
font-weight: bold;
padding: 15rpx;
border-bottom: 2px solid #eee;
font-size: 34rpx;
}
.panel-item .panel-content .item {
padding: 20rpx 0;
}
.panel-item .panel-content .item:last-child {
border: 0;
}
.panel-item .panel-content .item .title {
width: 25%;
padding-left: 20rpx;
}
.panel-item .panel-content .item .content {
width: calc(75% - 50rpx);
padding-left: 20rpx;
min-height: 46rpx;
word-wrap: break-word;
word-break: normal;
}
.panel-item .panel-content .item view {
line-height: 46rpx;
}
.panel-item .panel-content .item .content .avatar {
width: 60rpx;
height: 60rpx;
border-radius: 50%;
}
\ No newline at end of file
const app = getApp();
Page({
data: {
params: null,
data_list_loding_status: 1,
data_list_loding_msg: '',
data_bottom_line_status: false,
detail: null,
detail_list: []
},
onLoad(params) {
//params['id'] = 1;
this.setData({ params: params });
this.init();
},
onShow() {},
init() {
var self = this;
swan.showLoading({ title: "加载中..." });
this.setData({
data_list_loding_status: 1
});
swan.request({
url: app.get_request_url("detail", "order", "distribution"),
method: "POST",
data: {
id: this.data.params.id
},
dataType: "json",
success: res => {
swan.hideLoading();
swan.stopPullDownRefresh();
if (res.data.code == 0) {
var data = res.data.data;
self.setData({
detail: data.data,
detail_list: [{ name: "用户昵称", value: data.data.user_name_view || '' }, { name: "订单金额", value: data.data.total_price + '' || '' }, { name: "退款金额", value: data.data.refund_price + '' || '' }, { name: "订单状态", value: data.data.order_status_name || '' }, { name: "支付状态", value: data.data.order_pay_status_name || '' }, { name: "来源终端", value: data.data.order_client_type_name || '' }, { name: "下单时间", value: data.data.add_time_time || '' }],
data_list_loding_status: 3,
data_bottom_line_status: true,
data_list_loding_msg: ''
});
} else {
self.setData({
data_list_loding_status: 2,
data_bottom_line_status: false,
data_list_loding_msg: res.data.msg
});
if (app.is_login_check(res.data, self, 'init')) {
app.showToast(res.data.msg);
}
}
},
fail: () => {
swan.hideLoading();
swan.stopPullDownRefresh();
self.setData({
data_list_loding_status: 2,
data_bottom_line_status: false,
data_list_loding_msg: '服务器请求出错'
});
app.showToast("服务器请求出错");
}
});
},
// 下拉刷新
onPullDownRefresh() {
this.init();
}
});
\ No newline at end of file
{
"enablePullDownRefresh": true,
"navigationBarBackgroundColor": "#ff6a80",
"backgroundColorTop": "#ff6a80",
"backgroundColorBottom": "#f5f5f5",
"backgroundTextStyle": "light",
"navigationBarTitleText": "订单详情"
}
\ No newline at end of file
<view s-if="detail != null">
<view s-if="detail_list.length > 0" class="panel-item">
<view class="panel-content bg-white">
<view class="item br-b oh">
<view class="title fl">用户头像</view>
<view class="content cr-888 fl br-l">
<image src="{{detail.avatar}}" class="avatar dis-block fl" mode="widthFix" bindtap="avatar_event" data-value="{{detail.avatar}}" />
</view>
</view>
<view s-for="item, index in detail_list" s-key="item" class="item br-b oh">
<view class="title fl">{{item.name}}</view>
<view class="content cr-888 fl br-l">{{item.value}}</view>
</view>
</view>
</view>
<import src="/pages/common/bottom_line.swan" />
<template is="bottom_line" data="{{{status: data_bottom_line_status}}}"></template>
</view>
<view s-if="detail == null">
<import src="/pages/common/nodata.swan" />
<template is="nodata" data="{{{status: data_list_loding_status, msg: data_list_loding_msg}}}"></template>
<view class="nav-back tc wh-auto">
<navigator open-type="navigateBack" hover-class="none">
<button type="default" size="mini" class="cr-888 br" hover-class="none">返回</button>
</navigator>
</view>
</view>
\ No newline at end of file
/*
* 导航
*/
.nav {
background: #eee;
height: 80rpx;
line-height: 80rpx;
}
.nav .item {
width: 16.66%;
}
.nav .active {
color: #ff6a80;
}
/*
* 列表
*/
.scroll-box {
height: calc(100vh - 80rpx);
}
.data-list .item .base {
padding: 15rpx 10rpx;
}
.data-list .item .base .avatar {
width: 60rpx;
height: 60rpx;
border-radius: 50%;
}
.data-list .item .base .nickname {
margin-top: 10rpx;
}
.data-list .item .content {
padding: 20rpx 10rpx;
}
.data-list .item .content .multi-text {
line-height: 50rpx;
}
.data-list .item .content .multi-text .title {
margin-right: 30rpx;
}
.data-list .item .content .multi-text .value {
font-weight: 500;
}
.data-list .item .content .multi-text .unit {
margin-left: 10rpx;
}
\ No newline at end of file
const app = getApp();
Page({
data: {
data_list: [],
data_page_total: 0,
data_page: 1,
data_list_loding_status: 1,
data_bottom_line_status: false,
params: null,
nav_status_list: [{ name: "全部", value: "-1" }, { name: "待支付", value: "1" }, { name: "已支付", value: "2" }, { name: "待收货", value: "3" }, { name: "已完成", value: "4" }, { name: "已失效", value: "5,6" }],
nav_status_index: 0
},
onLoad(params) {
// 是否指定状态
var nav_status_index = 0;
if ((params.status || null) != null) {
for (var i in this.data.nav_status_list) {
if (this.data.nav_status_list[i]['value'] == params.status) {
nav_status_index = i;
break;
}
}
}
this.setData({
params: params,
nav_status_index: nav_status_index
});
this.init();
},
onShow() {},
init() {
var user = app.get_user_info(this, 'init');
if (user != false) {
// 用户未绑定用户则转到登录页面
if (app.user_is_need_login(user)) {
swan.redirectTo({
url: "/pages/login/login?event_callback=init"
});
return false;
} else {
// 获取数据
this.get_data_list();
}
} else {
this.setData({
data_list_loding_status: 0,
data_bottom_line_status: false
});
}
},
// 获取数据
get_data_list(is_mandatory) {
// 分页是否还有数据
if ((is_mandatory || 0) == 0) {
if (this.data.data_bottom_line_status == true) {
return false;
}
}
// 加载loding
swan.showLoading({ title: "加载中..." });
this.setData({
data_list_loding_status: 1
});
// 参数
var order_status = (this.data.nav_status_list[this.data.nav_status_index] || null) == null ? -1 : this.data.nav_status_list[this.data.nav_status_index]['value'];
// 获取数据
swan.request({
url: app.get_request_url("index", "order", "distribution"),
method: "POST",
data: {
page: this.data.data_page,
status: order_status,
uid: this.data.params.uid || 0,
is_more: 1
},
dataType: "json",
success: res => {
swan.hideLoading();
swan.stopPullDownRefresh();
if (res.data.code == 0) {
if (res.data.data.data.length > 0) {
if (this.data.data_page <= 1) {
var temp_data_list = res.data.data.data;
} else {
var temp_data_list = this.data.data_list;
var temp_data = res.data.data.data;
for (var i in temp_data) {
temp_data_list.push(temp_data[i]);
}
}
this.setData({
data_list: temp_data_list,
data_total: res.data.data.total,
data_page_total: res.data.data.page_total,
data_list_loding_status: 3,
data_page: this.data.data_page + 1,
payment_list: res.data.data.payment_list || []
});
// 是否还有数据
if (this.data.data_page > 1 && this.data.data_page > this.data.data_page_total) {
this.setData({ data_bottom_line_status: true });
} else {
this.setData({ data_bottom_line_status: false });
}
} else {
this.setData({
data_list_loding_status: 0,
data_list: [],
data_bottom_line_status: false
});
}
} else {
this.setData({
data_list_loding_status: 0
});
if (app.is_login_check(res.data, this, 'get_data_list')) {
app.showToast(res.data.msg);
}
}
},
fail: () => {
swan.hideLoading();
swan.stopPullDownRefresh();
this.setData({
data_list_loding_status: 2
});
app.showToast("服务器请求出错");
}
});
},
// 下拉刷新
onPullDownRefresh() {
this.setData({
data_page: 1
});
this.get_data_list(1);
},
// 滚动加载
scroll_lower(e) {
this.get_data_list();
},
// 导航事件
nav_event(e) {
this.setData({
nav_status_index: e.currentTarget.dataset.index || 0,
data_page: 1
});
this.get_data_list(1);
}
});
\ No newline at end of file
{
"enablePullDownRefresh": true,
"navigationBarBackgroundColor": "#ff6a80",
"backgroundColorTop": "#ff6a80",
"backgroundColorBottom": "#f5f5f5",
"backgroundTextStyle": "light",
"navigationBarTitleText": "分销订单"
}
\ No newline at end of file
<!-- 导航 -->
<view class="nav">
<block s-for="item, index in nav_status_list" s-key="key">
<view class="item fl tc cr-888 {{nav_status_index == index ? 'active' : ''}}" data-index="{{index}}" bindtap="nav_event">{{item.name}}</view>
</block>
</view>
<!-- 列表 -->
<scroll-view scroll-y="{{true}}" class="scroll-box" bindscrolltolower="scroll_lower" lower-threshold="30">
<view class="data-list">
<view class="item bg-white spacing-mb" s-if="data_list.length > 0" s-for="item, index in data_list" s-key="key">
<view class="base oh br-b">
<image src="{{item.avatar}}" class="avatar dis-block fl" mode="widthFix" bindtap="avatar_event" data-value="{{item.avatar}}" />
<text class="fr nickname cr-888">{{item.user_name_view || ''}}</text>
</view>
<navigator url="/pages/plugins/distribution/order-detail/order-detail?id={{item.id}}" hover-class="none">
<view class="content">
<view class="multi-text">
<text class="title cr-666">订单金额</text>
<text class="value">{{item.total_price}}</text>
<text class="unit cr-888">元</text>
</view>
<view class="multi-text">
<text class="title cr-666">订单状态</text>
<text class="value">{{item.order_status_name}}</text>
</view>
<view class="multi-text">
<text class="title cr-666">来源终端</text>
<text class="value">{{item.order_client_type_name}}</text>
</view>
</view>
</navigator>
</view>
<view s-if="data_list.length == 0">
<import src="/pages/common/nodata.swan" />
<template is="nodata" data="{{{status: data_list_loding_status}}}">
</template>
</view>
<import src="/pages/common/bottom_line.swan" />
<template is="bottom_line" data="{{{status: data_bottom_line_status}}}"></template>
</view>
</scroll-view>
\ No newline at end of file
/*
* 公共
*/
.share {
padding: 20rpx 10rpx;
}
.share .title {
border-left: 3px solid #ff6a80;
margin-left: 10rpx;
padding-left: 20rpx;
font-size: 32rpx;
font-weight: 500;
}
.share .desc {
font-size: 32rpx;
padding: 0 10rpx 20rpx 10rpx;
margin-top: 20rpx;
}
.share .content {
padding: 20rpx;
}
.share .submit {
margin: 20rpx 0;
padding: 0 20rpx;
}
.share button {
height: 70rpx;
line-height: 70rpx;
}
.submit-double button {
width: 48%;
}
/*
* 链接
*/
.url .content {
font-size: 32rpx;
color: #ff6a80;
}
\ No newline at end of file
const app = getApp();
Page({
data: {
data_list_loding_status: 1,
data_list_loding_msg: '加载中...',
data_bottom_line_status: false,
user_share_poster: null,
user_share_qrode: null,
user_share_url: null
},
onLoad() {
this.init();
},
init() {
var self = this;
swan.showLoading({ title: "加载中..." });
this.setData({
data_list_loding_status: 1
});
swan.request({
url: app.get_request_url("index", "poster", "distribution"),
method: "POST",
data: {},
dataType: "json",
success: res => {
swan.hideLoading();
swan.stopPullDownRefresh();
if (res.data.code == 0) {
var data = res.data.data;
self.setData({
user_share_poster: data.user_share_poster || null,
user_share_qrode: data.user_share_qrode || null,
user_share_url: data.user_share_url || null,
data_list_loding_status: 3,
data_bottom_line_status: true,
data_list_loding_msg: ''
});
// 是否全部没数据
if (self.data.user_share_poster == null && self.data.user_share_qrode == null && self.data.user_share_url == null) {
self.setData({
data_list_loding_status: 0,
data_bottom_line_status: false
});
}
} else {
self.setData({
data_list_loding_status: 2,
data_bottom_line_status: false,
data_list_loding_msg: res.data.msg
});
if (app.is_login_check(res.data, self, 'init')) {
app.showToast(res.data.msg);
}
}
},
fail: () => {
swan.hideLoading();
swan.stopPullDownRefresh();
self.setData({
data_list_loding_status: 2,
data_bottom_line_status: false,
data_list_loding_msg: '服务器请求出错'
});
app.showToast("服务器请求出错");
}
});
},
// 下拉刷新
onPullDownRefresh() {
this.init();
},
// 刷新海报
poster_refresh_event(e) {
swan.showLoading({ title: "处理中..." });
swan.request({
url: app.get_request_url("refresh", "poster", "distribution"),
method: "POST",
data: {},
dataType: "json",
success: res => {
swan.hideLoading();
if (res.data.code == 0) {
this.setData({ user_share_poster: res.data.data });
app.showToast(res.data.msg, "success");
} else {
if (app.is_login_check(res.data, self, 'init')) {
app.showToast(res.data.msg);
}
}
},
fail: () => {
swan.hideLoading();
app.showToast("服务器请求出错");
}
});
},
// 图片查看事件
images_show_event(e) {
var value = e.currentTarget.dataset.value || null;
if (value != null) {
swan.previewImage({
current: value,
urls: [value]
});
} else {
app.showToast('宣传图片地址有误');
}
},
// url事件
url_event(e) {
if ((this.data.user_share_url || null) != null) {
swan.setClipboardData({
data: this.data.user_share_url,
success(res) {
app.showToast('复制成功', 'success');
}
});
} else {
app.showToast('链接地址有误');
}
}
});
\ No newline at end of file
{
"enablePullDownRefresh": true,
"navigationBarBackgroundColor": "#ff6a80",
"backgroundColorTop": "#ff6a80",
"backgroundColorBottom": "#f5f5f5",
"backgroundTextStyle": "light",
"navigationBarTitleText": "推广返利"
}
\ No newline at end of file
<view s-if="user_share_poster != null || user_share_qrode != null || user_share_url != null">
<view s-if="user_share_poster != null" class="share qrcode bg-white spacing-mb">
<view class="title">海报分享</view>
<view class="desc cr-888 br-b">
保存海报后,发送给微信好友/群、QQ好友/群,分享到分朋友圈,微博等进行推广,轻轻松松赚返利!
</view>
<view class="content">
<image src="{{user_share_poster}}" class="wh-auto dis-block" mode="widthFix" />
</view>
<view class="submit submit-double oh">
<button type="primary" plain="{{true}}" hover-class="none" size="mini" data-value="{{user_share_poster}}" bindtap="images_show_event" class="fl">查看长按保存</button>
<button type="primary" plain="{{true}}" hover-class="none" size="mini" bindtap="poster_refresh_event" class="fr">重新生成</button>
</view>
</view>
<view s-if="user_share_qrode != null" class="share qrcode bg-white spacing-mb">
<view class="title">二维码分享</view>
<view class="desc cr-888 br-b">
保存二维码后,发送给微信好友/群、QQ好友/群,分享到分朋友圈,微博等进行推广,轻轻松松赚返利!
</view>
<view class="content">
<image src="{{user_share_qrode}}" class="wh-auto dis-block" mode="widthFix" />
</view>
<view class="submit">
<button type="primary" plain="{{true}}" hover-class="none" size="mini" class="dis-block wh-auto" data-value="{{user_share_qrode}}" bindtap="images_show_event">查看二维码长按保存</button>
</view>
</view>
<view s-if="user_share_url != null" class="share url bg-white">
<view class="title">链接分享</view>
<view class="desc cr-888 br-b">
复制以下链接,发送给微信好友/群、QQ好友/群,分享到分朋友圈,微博等进行推广,轻轻松松赚返利!
</view>
<view class="content">{{user_share_url}}</view>
<view class="submit">
<button type="primary" plain="{{true}}" hover-class="none" size="mini" class="dis-block wh-auto" bindtap="url_event">点击复制链接地址</button>
</view>
</view>
<import src="/pages/common/bottom_line.swan" />
<template is="bottom_line" data="{{{status: data_bottom_line_status}}}"></template>
</view>
<view s-if="user_share_qrode == null && user_share_url == null">
<import src="/pages/common/nodata.swan" />
<template is="nodata" data="{{{status: data_list_loding_status, msg: data_list_loding_msg}}}"></template>
</view>
\ No newline at end of file
.panel-item .panel-title {
background: #fff;
font-weight: bold;
padding: 15rpx;
border-bottom: 2px solid #eee;
font-size: 34rpx;
}
.panel-item .panel-content .item {
padding: 20rpx 0;
}
.panel-item .panel-content .item:last-child {
border: 0;
}
.panel-item .panel-content .item .title {
width: 25%;
padding-left: 20rpx;
}
.panel-item .panel-content .item .content {
width: calc(75% - 50rpx);
padding-left: 20rpx;
min-height: 46rpx;
word-wrap: break-word;
word-break: normal;
}
.panel-item .panel-content .item view {
line-height: 46rpx;
}
\ No newline at end of file
const app = getApp();
Page({
data: {
params: null,
data_list_loding_status: 1,
data_list_loding_msg: '',
data_bottom_line_status: false,
detail: null,
detail_list: []
},
onLoad(params) {
//params['id'] = 1;
this.setData({ params: params });
this.init();
},
onShow() {},
init() {
var self = this;
swan.showLoading({ title: "加载中..." });
this.setData({
data_list_loding_status: 1
});
swan.request({
url: app.get_request_url("detail", "profit", "distribution"),
method: "POST",
data: {
id: this.data.params.id
},
dataType: "json",
success: res => {
swan.hideLoading();
swan.stopPullDownRefresh();
if (res.data.code == 0) {
var data = res.data.data;
self.setData({
detail: data.data,
detail_list: [{ name: "订单金额", value: data.data.total_price + '' || '' }, { name: "退款金额", value: data.data.refund_price + '' || '' }, { name: "收益金额", value: data.data.profit_price + '' || '' }, { name: "当前级别", value: data.data.level_name || '' }, { name: "结算状态", value: data.data.status_name || '' }, { name: "订单状态", value: data.data.order_status_name || '' }, { name: "订单支付状态", value: data.data.order_pay_status_name || '' }, { name: "来源终端", value: data.data.order_client_type_name || '' }, { name: "添加时间", value: data.data.add_time_time || '' }, { name: "更新时间", value: data.data.upd_time_text || '' }],
data_list_loding_status: 3,
data_bottom_line_status: true,
data_list_loding_msg: ''
});
} else {
self.setData({
data_list_loding_status: 2,
data_bottom_line_status: false,
data_list_loding_msg: res.data.msg
});
if (app.is_login_check(res.data, self, 'init')) {
app.showToast(res.data.msg);
}
}
},
fail: () => {
swan.hideLoading();
swan.stopPullDownRefresh();
self.setData({
data_list_loding_status: 2,
data_bottom_line_status: false,
data_list_loding_msg: '服务器请求出错'
});
app.showToast("服务器请求出错");
}
});
},
// 下拉刷新
onPullDownRefresh() {
this.init();
}
});
\ No newline at end of file
{
"enablePullDownRefresh": true,
"navigationBarBackgroundColor": "#ff6a80",
"backgroundColorTop": "#ff6a80",
"backgroundColorBottom": "#f5f5f5",
"backgroundTextStyle": "light",
"navigationBarTitleText": "收益详情"
}
\ No newline at end of file
<view s-if="detail != null">
<view s-if="detail_list.length > 0" class="panel-item">
<view class="panel-content bg-white">
<view s-for="item, index in detail_list" s-key="item" class="item br-b oh">
<view class="title fl">{{item.name}}</view>
<view class="content cr-888 fl br-l">{{item.value}}</view>
</view>
</view>
</view>
<import src="/pages/common/bottom_line.swan" />
<template is="bottom_line" data="{{{status: data_bottom_line_status}}}"></template>
</view>
<view s-if="detail == null">
<import src="/pages/common/nodata.swan" />
<template is="nodata" data="{{{status: data_list_loding_status, msg: data_list_loding_msg}}}"></template>
<view class="nav-back tc wh-auto">
<navigator open-type="navigateBack" hover-class="none">
<button type="default" size="mini" class="cr-888 br" hover-class="none">返回</button>
</navigator>
</view>
</view>
\ No newline at end of file
/*
* 导航
*/
.nav {
background: #eee;
height: 80rpx;
line-height: 80rpx;
}
.nav .item {
width: 20%;
}
.nav .active {
color: #ff6a80;
}
/*
* 列表
*/
.scroll-box {
height: calc(100vh - 80rpx);
}
.data-list .item .base,
.data-list .item .content {
padding: 20rpx 10rpx;
}
.data-list .item .content .multi-text {
line-height: 50rpx;
}
.data-list .item .content .multi-text .title {
margin-right: 30rpx;
}
.data-list .item .content .multi-text .value {
font-weight: 500;
}
.data-list .item .content .multi-text .unit {
margin-left: 10rpx;
}
\ No newline at end of file
const app = getApp();
Page({
data: {
data_list: [],
data_page_total: 0,
data_page: 1,
data_list_loding_status: 1,
data_bottom_line_status: false,
params: null,
nav_status_list: [{ name: "全部", value: "-1" }, { name: "待生效", value: "0" }, { name: "待结算", value: "1" }, { name: "已结算", value: "2" }, { name: "已失效", value: "3" }],
nav_status_index: 0
},
onLoad(params) {
// 是否指定状态
var nav_status_index = 0;
if ((params.status || null) != null) {
for (var i in this.data.nav_status_list) {
if (this.data.nav_status_list[i]['value'] == params.status) {
nav_status_index = i;
break;
}
}
}
this.setData({
params: params,
nav_status_index: nav_status_index
});
this.init();
},
onShow() {},
init() {
var user = app.get_user_info(this, 'init');
if (user != false) {
// 用户未绑定用户则转到登录页面
if (app.user_is_need_login(user)) {
swan.redirectTo({
url: "/pages/login/login?event_callback=init"
});
return false;
} else {
// 获取数据
this.get_data_list();
}
} else {
this.setData({
data_list_loding_status: 0,
data_bottom_line_status: false
});
}
},
// 获取数据
get_data_list(is_mandatory) {
// 分页是否还有数据
if ((is_mandatory || 0) == 0) {
if (this.data.data_bottom_line_status == true) {
return false;
}
}
// 加载loding
swan.showLoading({ title: "加载中..." });
this.setData({
data_list_loding_status: 1
});
// 参数
var status = (this.data.nav_status_list[this.data.nav_status_index] || null) == null ? -1 : this.data.nav_status_list[this.data.nav_status_index]['value'];
// 获取数据
swan.request({
url: app.get_request_url("index", "profit", "distribution"),
method: "POST",
data: {
page: this.data.data_page,
status: status,
is_more: 1
},
dataType: "json",
success: res => {
swan.hideLoading();
swan.stopPullDownRefresh();
if (res.data.code == 0) {
if (res.data.data.data.length > 0) {
if (this.data.data_page <= 1) {
var temp_data_list = res.data.data.data;
} else {
var temp_data_list = this.data.data_list;
var temp_data = res.data.data.data;
for (var i in temp_data) {
temp_data_list.push(temp_data[i]);
}
}
this.setData({
data_list: temp_data_list,
data_total: res.data.data.total,
data_page_total: res.data.data.page_total,
data_list_loding_status: 3,
data_page: this.data.data_page + 1
});
// 是否还有数据
if (this.data.data_page > 1 && this.data.data_page > this.data.data_page_total) {
this.setData({ data_bottom_line_status: true });
} else {
this.setData({ data_bottom_line_status: false });
}
} else {
this.setData({
data_list_loding_status: 0,
data_list: [],
data_bottom_line_status: false
});
}
} else {
this.setData({
data_list_loding_status: 0
});
if (app.is_login_check(res.data, this, 'get_data_list')) {
app.showToast(res.data.msg);
}
}
},
fail: () => {
swan.hideLoading();
swan.stopPullDownRefresh();
this.setData({
data_list_loding_status: 2
});
app.showToast("服务器请求出错");
}
});
},
// 下拉刷新
onPullDownRefresh() {
this.setData({
data_page: 1
});
this.get_data_list(1);
},
// 滚动加载
scroll_lower(e) {
this.get_data_list();
},
// 导航事件
nav_event(e) {
this.setData({
nav_status_index: e.currentTarget.dataset.index || 0,
data_page: 1
});
this.get_data_list(1);
}
});
\ No newline at end of file
{
"enablePullDownRefresh": true,
"navigationBarBackgroundColor": "#ff6a80",
"backgroundColorTop": "#ff6a80",
"backgroundColorBottom": "#f5f5f5",
"backgroundTextStyle": "light",
"navigationBarTitleText": "收益明细"
}
\ No newline at end of file
<!-- 导航 -->
<view class="nav">
<block s-for="item, index in nav_status_list" s-key="key">
<view class="item fl tc cr-888 {{nav_status_index == index ? 'active' : ''}}" data-index="{{index}}" bindtap="nav_event">{{item.name}}</view>
</block>
</view>
<!-- 列表 -->
<scroll-view scroll-y="{{true}}" class="scroll-box" bindscrolltolower="scroll_lower" lower-threshold="30">
<view class="data-list">
<view class="item bg-white spacing-mb" s-if="data_list.length > 0" s-for="item, index in data_list" s-key="key">
<view class="base oh br-b">
<text class="cr-666">{{item.add_time_time}}</text>
<text class="fr cr-main">{{item.status_name}}</text>
</view>
<navigator url="/pages/plugins/distribution/profit-detail/profit-detail?id={{item.id}}" hover-class="none">
<view class="content">
<view class="multi-text">
<text class="title cr-666">订单金额</text>
<text class="value">{{item.total_price}}</text>
<text class="unit cr-888">元</text>
</view>
<view class="multi-text">
<text class="title cr-666">退款金额</text>
<text class="value">{{item.refund_price}}</text>
<text class="unit cr-888">元</text>
</view>
<view class="multi-text">
<text class="title cr-666">收益金额</text>
<text class="value">{{item.profit_price}}</text>
<text class="unit cr-888">元</text>
</view>
<view class="multi-text">
<text class="title cr-666">当前级别</text>
<text class="value">{{item.level_name}}</text>
</view>
</view>
</navigator>
</view>
<view s-if="data_list.length == 0">
<import src="/pages/common/nodata.swan" />
<template is="nodata" data="{{{status: data_list_loding_status}}}">
</template>
</view>
<import src="/pages/common/bottom_line.swan" />
<template is="bottom_line" data="{{{status: data_bottom_line_status}}}"></template>
</view>
</scroll-view>
\ No newline at end of file
/*
* 公共
*/
.container,
.user-container .item,
.profit-container .item {
padding: 20rpx 10rpx;
}
.container .item {
width: 50%;
box-sizing: border-box;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
}
.container .title {
border-left: 3px solid #ff6a80;
padding-left: 20rpx;
font-size: 32rpx;
font-weight: 500;
}
.container .base-content {
padding: 30rpx 10rpx;
}
.container .base-content .name {
margin-bottom: 10rpx;
}
.container .base-content .value .golden,
.container .base-content .value .yellow,
.container .base-content .value .green {
font-weight: 500;
}
.container .base-content .value .golden {
color: #ff6a80;
}
.container .base-content .value .yellow {
color: #f37b1d;
}
.container .base-content .value .blue {
color: #3bb4f2;
}
.container .base-content .value .green {
color: #5eb95e;
}
/*
* 用户、返利
*/
.user-container .base-content .value .golden,
.user-container .base-content .value .green {
margin-right: 10rpx;
}
.user-container .base-content,
.profit-container .base-content {
padding: 10rpx;
}
/*
* 图表
*/
.chart-container {
width: 100%;
height: 520rpx;
box-sizing: border-box;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
}
.chart-container .chart-not-data {
margin-top: 230rpx;
}
\ No newline at end of file
const app = getApp();
Page({
data: {
data_list_loding_status: 1,
data_list_loding_msg: '加载中...',
data_bottom_line_status: false,
user_total: null,
user_profit_stay_price: 0.00,
user_profit_vaild_price: 0.00,
user_profit_already_price: 0.00,
user_profit_total_price: 0.00,
user_data: null,
profit_data: null,
// 图表
profit_chart: {},
user_chart: {}
},
onShow() {
this.init();
},
init() {
var self = this;
swan.showLoading({ title: "加载中..." });
this.setData({
data_list_loding_status: 1
});
swan.request({
url: app.get_request_url("index", "statistics", "distribution"),
method: "POST",
data: {},
dataType: "json",
success: res => {
swan.hideLoading();
swan.stopPullDownRefresh();
if (res.data.code == 0) {
var data = res.data.data;
self.setData({
user_total: data.user_total || null,
user_profit_stay_price: data.user_profit_stay_price || 0.00,
user_profit_vaild_price: data.user_profit_vaild_price || 0.00,
user_profit_already_price: data.user_profit_already_price || 0.00,
user_profit_total_price: data.user_profit_total_price || 0.00,
user_data: data.user_chart || null,
profit_data: data.profit_chart || null,
data_list_loding_status: 3,
data_bottom_line_status: true,
data_list_loding_msg: ''
});
// 图表
// 近15日收益走势
self.set_profit_chart(data.profit_chart);
// 近15日推广用户数
self.set_profit_user(data.user_chart);
} else {
self.setData({
data_list_loding_status: 2,
data_bottom_line_status: false,
data_list_loding_msg: res.data.msg
});
if (app.is_login_check(res.data, self, 'init')) {
app.showToast(res.data.msg);
}
}
},
fail: () => {
swan.hideLoading();
swan.stopPullDownRefresh();
self.setData({
data_list_loding_status: 2,
data_bottom_line_status: false,
data_list_loding_msg: '服务器请求出错'
});
app.showToast("服务器请求出错");
}
});
},
// 近15日推广用户数
set_profit_user(data) {
if ((data || null) != null) {
var option = {
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'cross',
label: {
backgroundColor: '#6a7985'
}
}
},
grid: {
top: '10%',
left: '5%',
right: '5%',
bottom: '15%',
containLabel: true
},
xAxis: {
type: 'category',
boundaryGap: false,
data: data.name_arr
},
yAxis: {
type: 'value'
},
series: [{
data: data.data,
type: 'bar',
areaStyle: {}
}]
};
this.setData({user_chart: option});
}
},
// 近15日收益走势图表
set_profit_chart(data) {
if ((data || null) != null) {
var option = {
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'cross',
label: {
backgroundColor: '#6a7985'
}
}
},
grid: {
top: '10%',
left: '5%',
right: '5%',
bottom: '15%',
containLabel: true
},
xAxis: {
type: 'category',
boundaryGap: false,
data: data.name_arr
},
yAxis: {
type: 'value'
},
series: [{
data: data.data,
type: 'line'
}]
};
this.setData({profit_chart: option});
}
},
// 下拉刷新
onPullDownRefresh() {
this.init();
}
});
\ No newline at end of file
{
"enablePullDownRefresh": true,
"navigationBarBackgroundColor": "#ff6a80",
"backgroundColorTop": "#ff6a80",
"backgroundColorBottom": "#f5f5f5",
"backgroundTextStyle": "light",
"navigationBarTitleText": "数据统计",
"usingSwanComponents": {
"chart": "dynamicLib://echartsLib/chart"
}
}
\ No newline at end of file
<!-- 推广客户 -->
<view class="container user-container bg-white">
<view class="title">推广客户</view>
<view class="base-content oh tc">
<view class="item fl">
<view class="name cr-666">已推广用户总数</view>
<view class="value single-text">
<text class="golden">{{user_total.user_count || 0}}</text>
<text class="cr-888">人</text>
</view>
</view>
<view class="item fl">
<view class="name cr-666">已消费用户总数</view>
<view class="value single-text">
<text class="green">{{user_total.valid_user_count || 0}}</text>
<text class="cr-888">人</text>
</view>
</view>
</view>
</view>
<!-- 返利概况 -->
<view class="container profit-container bg-white spacing-mt">
<view class="title">返利概况</view>
<view class="base-content oh tc">
<view class="item fl">
<view class="name cr-666">返佣总额</view>
<view class="value single-text">
<text class="golden">¥{{user_profit_total_price || '0.00'}}</text>
</view>
</view>
<view class="item fl">
<view class="name cr-666">待生效</view>
<view class="value single-text">
<text class="yellow">¥{{user_profit_stay_price || '0.00'}}</text>
</view>
</view>
<view class="item fl">
<view class="name cr-666">待结算</view>
<view class="value single-text">
<text class="blue">¥{{user_profit_vaild_price || '0.00'}}</text>
</view>
</view>
<view class="item fl">
<view class="name cr-666">已结算</view>
<view class="value single-text">
<text class="green">¥{{user_profit_already_price || '0.00'}}</text>
</view>
</view>
</view>
</view>
<!-- 近15日收益走势 -->
<view class="container chart-container bg-white oh spacing-mt">
<view class="title">近15日收益走势</view>
<chart s-if="(profit_data || null) != null" option="{{ profit_chart }}"></chart>
<view s-else class="cr-888 tc chart-not-data">{{data_list_loding_msg || '暂无数据'}}</view>
</view>
<!-- 近15日推广用户数 -->
<view class="container chart-container bg-white oh spacing-mt">
<view class="title">近15日推广用户数</view>
<chart s-if="(user_data || null) != null" option="{{ user_chart }}"></chart>
<view s-else class="cr-888 tc chart-not-data">{{data_list_loding_msg || '暂无数据'}}</view>
</view>
<import src="/pages/common/bottom_line.swan" />
<template is="bottom_line" data="{{{status: true}}}"></template>
\ No newline at end of file
.scroll-box {
height: 100vh;
}
.data-list .item .base {
padding: 15rpx 10rpx;
}
.data-list .item .base .avatar {
width: 60rpx;
height: 60rpx;
border-radius: 50%;
}
.data-list .item .base .nickname {
margin-top: 10rpx;
}
.data-list .item .content {
padding: 20rpx 10rpx;
}
.data-list .item .content .multi-text {
line-height: 50rpx;
}
.data-list .item .content .multi-text .title {
margin-right: 30rpx;
}
.data-list .item .content .multi-text .value {
font-weight: 500;
}
.data-list .item .content .multi-text .unit {
margin-left: 10rpx;
}
.data-list .item .operation {
padding: 20rpx 10rpx;
}
.data-list .item .submit-order {
border: 1px solid #e5e5e5;
color: #888 !important;
}
.data-list .item .operation button:not(:first-child) {
margin-left: 30rpx;
}
\ No newline at end of file
const app = getApp();
Page({
data: {
data_list: [],
data_page_total: 0,
data_page: 1,
data_list_loding_status: 1,
data_bottom_line_status: false,
params: null
},
onLoad(params) {
this.setData({
params: params
});
this.init();
},
onShow() {},
init() {
var user = app.get_user_info(this, 'init');
if (user != false) {
// 用户未绑定用户则转到登录页面
if (app.user_is_need_login(user)) {
swan.redirectTo({
url: "/pages/login/login?event_callback=init"
});
return false;
} else {
// 获取数据
this.get_data_list();
}
} else {
this.setData({
data_list_loding_status: 0,
data_bottom_line_status: false
});
}
},
// 获取数据
get_data_list(is_mandatory) {
// 分页是否还有数据
if ((is_mandatory || 0) == 0) {
if (this.data.data_bottom_line_status == true) {
return false;
}
}
// 加载loding
swan.showLoading({ title: "加载中..." });
this.setData({
data_list_loding_status: 1
});
// 获取数据
swan.request({
url: app.get_request_url("index", "team", "distribution"),
method: "POST",
data: {
page: this.data.data_page
},
dataType: "json",
success: res => {
swan.hideLoading();
swan.stopPullDownRefresh();
if (res.data.code == 0) {
if (res.data.data.data.length > 0) {
if (this.data.data_page <= 1) {
var temp_data_list = res.data.data.data;
} else {
var temp_data_list = this.data.data_list;
var temp_data = res.data.data.data;
for (var i in temp_data) {
temp_data_list.push(temp_data[i]);
}
}
this.setData({
data_list: temp_data_list,
data_total: res.data.data.total,
data_page_total: res.data.data.page_total,
data_list_loding_status: 3,
data_page: this.data.data_page + 1
});
// 是否还有数据
if (this.data.data_page > 1 && this.data.data_page > this.data.data_page_total) {
this.setData({ data_bottom_line_status: true });
} else {
this.setData({ data_bottom_line_status: false });
}
} else {
this.setData({
data_list_loding_status: 0,
data_list: [],
data_bottom_line_status: false
});
}
} else {
this.setData({
data_list_loding_status: 0
});
if (app.is_login_check(res.data, this, 'get_data_list')) {
app.showToast(res.data.msg);
}
}
},
fail: () => {
swan.hideLoading();
swan.stopPullDownRefresh();
this.setData({
data_list_loding_status: 2
});
app.showToast("服务器请求出错");
}
});
},
// 下拉刷新
onPullDownRefresh() {
this.setData({
data_page: 1
});
this.get_data_list(1);
},
// 滚动加载
scroll_lower(e) {
this.get_data_list();
},
// 头像查看
avatar_event(e) {
var value = e.currentTarget.dataset.value || null;
if (value != null) {
swan.previewImage({
current: value,
urls: [value]
});
} else {
app.showToast('头像地址有误');
}
}
});
\ No newline at end of file
{
"enablePullDownRefresh": true,
"navigationBarBackgroundColor": "#ff6a80",
"backgroundColorTop": "#ff6a80",
"backgroundColorBottom": "#f5f5f5",
"backgroundTextStyle": "light",
"navigationBarTitleText": "我的团队"
}
\ No newline at end of file
<scroll-view scroll-y="{{true}}" class="scroll-box" bindscrolltolower="scroll_lower" lower-threshold="30">
<view class="data-list">
<view class="item bg-white spacing-mb" s-if="data_list.length > 0" s-for="item, index in data_list" s-key="key">
<view class="base oh br-b">
<image src="{{item.avatar}}" class="avatar dis-block fl" mode="widthFix" bindtap="avatar_event" data-value="{{item.avatar}}" />
<text class="fr nickname cr-888">{{item.user_name_view || ''}}</text>
</view>
<view class="content">
<view class="multi-text">
<text class="title cr-666">消费金额</text>
<text class="value">{{item.order_total}}</text>
<text class="unit cr-888">元</text>
</view>
<view class="multi-text">
<text class="title cr-666">下级消费</text>
<text class="value">{{item.find_order_total}}</text>
<text class="unit cr-888">元</text>
</view>
<view class="multi-text">
<text class="title cr-666">下级用户</text>
<text class="value">{{item.referrer_count}}</text>
<text class="unit cr-888">人</text>
</view>
<view class="multi-text">
<text class="title cr-666">加入时间</text>
<text class="value">{{item.add_time_time}}</text>
</view>
</view>
<view class="operation tr br-t-dashed">
<navigator url="/pages/plugins/distribution/order/order?uid={{item.id}}" hover-class="none">
<button class="cr-888 br" type="default" size="mini" hover-class="none">用户订单</button>
</navigator>
</view>
</view>
<view s-if="data_list.length == 0">
<import src="/pages/common/nodata.swan" />
<template is="nodata" data="{{{status: data_list_loding_status}}}">
</template>
</view>
<import src="/pages/common/bottom_line.swan" />
<template is="bottom_line" data="{{{status: data_bottom_line_status}}}"></template>
</view>
</scroll-view>
\ No newline at end of file
/*
* 头部
*/
.head-box{
padding-top: 20rpx;
font-size: 24rpx;
background-color: #ff6a80;
position: relative;
}
.head-item {
padding-bottom: 30rpx;
}
.head-item .avatar {
padding: 10rpx;
background: #fbbec7;
border: 1px solid #fbbec7;
}
.head-item .avatar image {
width: 140rpx;
height: 140rpx;
}
.head-item .avatar,
.head-item .avatar image {
border-radius: 50%;
}
.head-item .item-name{
font-size: 30rpx;
margin-top: 10rpx;
}
.head-item .item-icon {
width: 30rpx;
margin-right: 20rpx;
}
.head-item {
margin-left: 30rpx;
}
.head-base {
margin-left: 60rpx;
width: calc(100% - 280rpx);
}
.head-base .level-name {
font-size: 42rpx;
font-weight: 500;
margin-bottom: 30rpx;
color: #fffbe0;
}
.head-base .head-base-submit {
font-size: 26rpx;
height: 55rpx;
line-height: 55rpx;
border: 1px solid #ffe2e5;
background-color: #ffe2e5;
color: #f77076;
position: absolute;
right: 30rpx;
bottom: 35rpx;
padding: 0 20rpx;
}
/*
* 导航
*/
.nav {
border-top: 1px solid #eee;
}
.nav .item {
padding: 30rpx 0;
width: calc(50% - 1px);
border-bottom: 1px solid #eee;
}
.nav .item:nth-child(odd) {
border-right: 1px solid #eee;
}
.nav .item image {
width: 100rpx;
height: 100rpx;
margin: 0 auto;
}
.nav .item .title {
margin-top: 20rpx;
}
/*
* 提示信息
*/
.tips-container .tips-item {
padding: 0 10rpx;
}
.tips-container .not-opening-vip-desc {
background: #def2fd;
border: 1px solid #cfeeff;
color: #1490d2;
padding: 10rpx;
font-size: 26rpx;
border-radius: 2px;
}
\ No newline at end of file
const app = getApp();
Page({
data: {
data_bottom_line_status: false,
data_list_loding_status: 1,
data_list_loding_msg: '',
data_base: null,
user_level: null,
extraction: null,
avatar: app.data.default_user_head_src,
nickname: "用户名",
submit_disabled_status: false,
// 导航
nav_list: []
},
onLoad(params) {
this.setData({ nav_list: this.nav_list_data() });
},
onShow() {
this.init();
},
init(e) {
var user = app.get_user_info(this, "init"),
self = this;
if (user != false) {
// 用户未绑定用户则转到登录页面
if (app.user_is_need_login(user)) {
swan.showModal({
title: '温馨提示',
content: '绑定手机号码',
confirmText: '确认',
cancelText: '暂不',
success: result => {
swan.stopPullDownRefresh();
if (result.confirm) {
swan.navigateTo({
url: "/pages/login/login?event_callback=init"
});
}
self.setData({
avatar: (self.data.avatar || null) == null ? user.avatar || app.data.default_user_head_src : self.data.avatar,
nickname: user.nickname || '用户名'
});
}
});
} else {
self.setData({
avatar: (self.data.avatar || null) == null ? user.avatar || app.data.default_user_head_src : self.data.avatar,
nickname: user.nickname || '用户名'
});
self.get_data();
}
}
},
// 导航数据
nav_list_data() {
return [{
icon: "/images/plugins/distribution/user-center-order-icon.png",
title: "分销订单",
url: "/pages/plugins/distribution/order/order"
}, {
icon: "/images/plugins/distribution/user-center-profit-icon.png",
title: "收益明细",
url: "/pages/plugins/distribution/profit/profit"
}, {
icon: "/images/plugins/distribution/user-center-team-icon.png",
title: "我的团队",
url: "/pages/plugins/distribution/team/team"
}, {
icon: "/images/plugins/distribution/user-center-poster-icon.png",
title: "推广返利",
url: "/pages/plugins/distribution/poster/poster"
}, {
icon: "/images/plugins/distribution/user-center-statistics-icon.png",
title: "数据统计",
url: "/pages/plugins/distribution/statistics/statistics"
}];
},
// 获取数据
get_data() {
var self = this;
swan.request({
url: app.get_request_url("index", "user", "distribution"),
method: "POST",
data: {},
dataType: "json",
success: res => {
swan.stopPullDownRefresh();
if (res.data.code == 0) {
var data = res.data.data;
var data_base = data.base || null;
var user_level = data.user_level || null;
self.setData({
data_base: data_base,
user_level: user_level,
extraction: data.extraction || null,
avatar: user_level == null || (user_level.images_url || null) == null ? self.data.avatar : user_level.images_url,
data_list_loding_msg: '',
data_list_loding_status: 0,
data_bottom_line_status: false
});
// 导航
var temp_data_list = self.nav_list_data();
// 等级介绍
if (data_base != null && (data_base.is_show_introduce || 0) == 1) {
temp_data_list.push({
icon: "/images/plugins/distribution/user-center-introduce-icon.png",
title: "等级介绍",
url: "/pages/plugins/distribution/introduce/introduce"
});
}
self.setData({ nav_list: temp_data_list });
} else {
self.setData({
data_bottom_line_status: false,
data_list_loding_status: 2,
data_list_loding_msg: res.data.msg
});
if (app.is_login_check(res.data, self, 'get_data')) {
app.showToast(res.data.msg);
}
}
},
fail: () => {
swan.stopPullDownRefresh();
self.setData({
data_bottom_line_status: false,
data_list_loding_status: 2,
data_list_loding_msg: '服务器请求出错'
});
app.showToast("服务器请求出错");
}
});
},
// 下拉刷新
onPullDownRefresh() {
this.get_data();
},
// 头像查看
preview_event() {
if (app.data.default_user_head_src != this.data.avatar) {
swan.previewImage({
current: this.data.avatar,
urls: [this.data.avatar]
});
}
},
// 头像加载错误
user_avatar_error(e) {
this.setData({ avatar: app.data.default_user_head_src });
}
});
\ No newline at end of file
{
"enablePullDownRefresh": true,
"navigationBarBackgroundColor": "#ff6a80",
"backgroundColorTop": "#ff6a80",
"backgroundColorBottom": "#f5f5f5",
"backgroundTextStyle": "light",
"navigationBarTitleText": "我的分销"
}
\ No newline at end of file
<!-- 头部 -->
<view class="head-box oh">
<view class="head-item tc fl">
<view class="avatar">
<image bindtap="preview_event" binderror="user_avatar_error" src="{{avatar}}" mode="widthFix" class="dis-block" />
</view>
<text class="item-name dis-block cr-fff">{{nickname}}</text>
</view>
<view class="head-base fl">
<view s-if="(user_level || null) != null && (user_level.name || null) != null" class="single-text level-name spacing-mt">{{user_level.name}}</view>
<block s-if="(data_base || null) != null && (data_base.is_enable_self_extraction || 0) == 1">
<navigator url="/pages/plugins/distribution/extraction/extraction" hover-class="none">
<button size="mini" type="default" hover-class="none" class="head-base-submit">{{(extraction || null) == null ? '申请' : ''}}取货点</button>
</navigator>
</block>
</view>
</view>
<!-- 导航 -->
<view s-if="nav_list.length > 0" class="nav spacing-mt oh bg-white">
<block s-for="item, index in nav_list" s-key="key">
<navigator url="{{item.url}}" hover-class="none">
<view class="item fl tc">
<image src="{{item.icon}}" mode="scaleToFill" class="dis-block" />
<view class="title">{{item.title}}</view>
</view>
</navigator>
</block>
</view>
<!-- 通知 -->
<view class="tips-container spacing-mb">
<!-- 不符合分销条件描述 -->
<block s-if="(user_level || null) == null">
<view s-if="(data_base.non_conformity_desc || null) != null && data_base.non_conformity_desc.length > 0" class="tips-item spacing-mt">
<view class="not-opening-vip-desc">
<view s-for="item, index in data_base.non_conformity_desc" s-key="key" class="item">
{{item}}
</view>
</view>
</view>
</block>
<!-- 会员中心通知 -->
<view s-if="(user_level || null) != null && (data_base.user_center_notice || null) != null && data_base.user_center_notice.length > 0" class="tips-item spacing-mt">
<view class="tips">
<view s-for="item, index in data_base.user_center_notice" s-key="key" class="item">
{{item}}
</view>
</view>
</view>
</view>
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册