分销开发完成

master
xindan 2021-10-14 18:02:50 +08:00
parent bbbfad2f05
commit 83548819fe
10 changed files with 810 additions and 1037 deletions

View File

@ -246,9 +246,6 @@
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;
@ -277,9 +274,6 @@
pid: self.province_id
},
dataType: "json",
header: {
'content-type': 'application/x-www-form-urlencoded'
},
success: res => {
if (res.data.code == 0) {
var data = res.data.data;
@ -310,9 +304,6 @@
pid: self.city_id
},
dataType: "json",
header: {
'content-type': 'application/x-www-form-urlencoded'
},
success: res => {
if (res.data.code == 0) {
var data = res.data.data;
@ -333,7 +324,6 @@
//
select_province_event(e) {
var index = e.detail.value || 0;
if (index >= 0) {
var data = this.province_list[index];
this.setData({
@ -351,7 +341,6 @@
//
select_city_event(e) {
var index = e.detail.value || 0;
if (index >= 0) {
var data = this.city_list[index];
this.setData({
@ -367,7 +356,6 @@
// /
select_county_event(e) {
var index = e.detail.value || 0;
if (index >= 0) {
var data = this.county_list[index];
this.setData({
@ -404,7 +392,6 @@
lng: result.longitude || null
};
}
this.setData({
user_location: data
});

View File

@ -0,0 +1,36 @@
/*
*
*/
.nav {
background: #eee;
height: 80rpx;
line-height: 80rpx;
}
.nav .item {
width: 33.33%;
}
/*
*
*/
.scroll-box {
height: calc(100vh - 80rpx);
}
.data-list .item .operation button {
padding: 0 35rpx;
display: inline-flex;
}
/*
*
*/
.search-drag {
width: 35px;
height: 35px;
line-height: 44px;
background: hsla(0, 0%, 0%, 0.01);
margin-top: calc(100vh - 260rpx);
margin-left: calc(50% - 17px);
box-shadow: 0px 3rpx 16rpx rgba(0, 0, 0, 0.2);
padding: 5px;
}

View File

@ -1,500 +1,383 @@
<template>
<view>
<!-- 导航 -->
<view class="nav">
<block v-for="(item, index) in nav_status_list" :key="index">
<view :class="'item fl tc cr-gray ' + (nav_status_index == index ? 'active' : '')" :data-index="index" @tap="nav_event">{{item.name}}</view>
</block>
</view>
<movable-area class="wh-auto ht-auto">
<!-- 列表 -->
<scroll-view :scroll-y="true" class="scroll-box" @scrolltolower="scroll_lower" lower-threshold="30">
<view class="data-list">
<view v-for="(item, index) in data_list" :key="index" class="item bg-white spacing-mb" v-if="data_list.length > 0">
<view class="base oh br-b">
<text class="fl cr-base">{{item.add_time}}</text>
<text class="fr nickname cr-gray">{{item.status_name}}</text>
</view>
<view class="content">
<view class="single-text">
<text class="title cr-base">订单号</text>
<text class="value">{{item.order_no}}</text>
</view>
<view class="single-text">
<text class="title cr-base">支付金额</text>
<text class="value">{{item.pay_price}}</text>
<text class="unit cr-gray"></text>
</view>
</view>
<view v-if="item.status == 0" class="operation tr br-t-dashed">
<button class="cr-gray br" type="default" size="mini" hover-class="none" :data-index="index" :data-oid="item.order_id" :data-uid="item.order_user_id" @tap="list_submit_take_event"></button>
</view>
</view>
<view v-if="data_list.length == 0">
<!--<import src="/pages/common/nodata.wxml"></import>-->
<block data-type="template" data-is="nodata" data-attr="status: data_list_loding_status">
<!-- 1 加载中 -->
<view v-if="0 == 1" class="no-data-loding tc">
<text>加载中...</text>
</view>
<!-- 2 处理错误 -->
<view v-else-if="0 == 2" class="no-data-box tc">
<image src="/static/images/error.png" mode="widthFix"></image>
<view class="no-data-tips">{{msg || '处理错误'}}</view>
</view>
<!-- 0 默认没有数据 -->
<view v-else-if="0 == 0" class="no-data-box tc">
<image src="/static/images/empty.png" mode="widthFix"></image>
<view class="no-data-tips">{{msg || '没有相关数据'}}</view>
</view>
</block>
</view>
<!--<import src="/pages/common/bottom_line.wxml"></import>-->
<block data-type="template" data-is="bottom_line" data-attr="status: data_bottom_line_status">
<view v-if="(status || false)" class="data-bottom-line">
<view class="left fl"></view>
<view class="msg fl">我是有底线的</view>
<view class="right fr"></view>
</view>
</block>
</view>
</scroll-view>
<!-- 拖拽按钮 -->
<movable-view class="search-drag tc" direction="all" @tap="drag_event">
<icon type="search" size="30"></icon>
</movable-view>
</movable-area>
<!-- 取货 popup -->
<component-popup :prop-show="is_show_take_popup" prop-position="bottom" @onclose="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-grey" class="cr-base br-b spacing-mt" placeholder="请输入取货码" maxlength="4" @input="extraction_code_input_event">
</view>
<view class="form-gorup">
<button class="submit-bottom" type="default" hover-class="none" :disabled="form_submit_disabled_status" @tap="form_submit_take_event"></button>
</view>
</view>
</component-popup>
<!-- 搜索 popup -->
<component-popup :prop-show="is_show_search_popup" prop-position="bottom" @onclose="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-grey" class="cr-base br-b spacing-mt" placeholder="订单号/取货码" @input="search_input_keywords_event">
</view>
<view class="form-gorup">
<button class="submit-bottom" type="default" hover-class="none" :disabled="form_submit_disabled_status" @tap="search_submit_event"></button>
</view>
</view>
</component-popup>
</view>
</template>
<script>
const app = getApp();
import componentPopup from "../../../../components/popup/popup";
export default {
data() {
return {
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: '',
data_total: ""
};
},
components: {
componentPopup
},
props: {},
onLoad(params) {
//
var nav_status_index = 0;
if (params.status != undefined) {
for (var i in this.nav_status_list) {
if (this.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() {},
//
onPullDownRefresh() {
this.setData({
data_page: 1
});
this.get_data_list(1);
},
methods: {
init() {
var user = app.globalData.get_user_info(this, 'init');
if (user != false) {
//
if (app.globalData.user_is_need_login(user)) {
uni.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_bottom_line_status == true) {
return false;
}
} // loding
uni.showLoading({
title: "加载中..."
});
this.setData({
data_list_loding_status: 1
}); //
var status = (this.nav_status_list[this.nav_status_index] || null) == null ? -1 : this.nav_status_list[this.nav_status_index]['value']; //
uni.request({
url: app.globalData.get_request_url("order", "extraction", "distribution"),
method: "POST",
data: {
page: this.data_page,
status: status || 0,
keywords: this.search_keywords_value || ''
},
dataType: "json",
success: res => {
uni.hideLoading();
uni.stopPullDownRefresh();
if (res.data.code == 0) {
if (res.data.data.data.length > 0) {
if (this.data_page <= 1) {
var temp_data_list = res.data.data.data;
} else {
var temp_data_list = this.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_page + 1
}); //
if (this.data_page > 1 && this.data_page > this.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,
<template>
<view>
<!-- 导航 -->
<view class="nav">
<block v-for="(item, index) in nav_status_list" :key="index">
<view :class="'item fl tc cr-gray ' + (nav_status_index == index ? 'cr-main' : '')" :data-index="index" @tap="nav_event">{{item.name}}</view>
</block>
</view>
<movable-area class="wh-auto ht-auto">
<!-- 列表 -->
<scroll-view :scroll-y="true" class="scroll-box" @scrolltolower="scroll_lower" lower-threshold="30">
<view v-if="data_list.length > 0" class="data-list padding-horizontal-main padding-top-main">
<view v-for="(item, index) in data_list" :key="index" class="item padding-main border-radius-main oh bg-white spacing-mb">
<view class="base oh br-b padding-bottom-main">
<text class="cr-base">{{item.add_time}}</text>
<text class="cr-main fr">{{item.status_name}}</text>
</view>
<view class="content margin-top">
<block v-for="(fv,fi) in content_list">
<view class="single-text margin-top-xs">
<text class="cr-gray margin-right-xl">{{fv.name}}</text>
<text class="cr-base">{{item[fv.field]}}</text>
<text v-if="(fv.unit || null) != null" class="cr-gray">{{fv.unit}}</text>
</view>
</block>
</view>
<view v-if="item.status == 0" class="operation tr br-t-dashed padding-top-main margin-top-main">
<button class="round bg-white br cr-base" type="default" size="mini" hover-class="none" :data-index="index" :data-oid="item.order_id" :data-uid="item.order_user_id" @tap="list_submit_take_event"></button>
</view>
</view>
</view>
<view v-else>
<!-- 提示信息 -->
<component-no-data :prop-status="data_list_loding_status"></component-no-data>
</view>
<!-- 结尾 -->
<component-bottom-line :prop-status="data_bottom_line_status"></component-bottom-line>
</scroll-view>
<!-- 拖拽按钮 -->
<movable-view class="search-drag tc circle" direction="all" @tap="drag_event">
<icon type="search" size="20"></icon>
</movable-view>
</movable-area>
<!-- 取货 popup -->
<component-popup :prop-show="is_show_take_popup" prop-position="bottom" @onclose="take_popup_event_close">
<view class="form-container bg-base padding-horizontal-main padding-top-main padding-bottom-xs">
<view class="form-gorup tc bg-white margin-top-lg">
<view class="form-gorup-title">取货码</view>
<input type="number" :value="extraction_code" placeholder-class="cr-grey" class="cr-base" placeholder="请输入取货码" maxlength="4" @input="extraction_code_input_event">
</view>
<view class="form-gorup form-gorup-submit">
<button class="bg-main cr-white round submit-bottom" type="default" hover-class="none" :disabled="form_submit_disabled_status" @tap="form_submit_take_event"></button>
</view>
</view>
</component-popup>
<!-- 搜索 popup -->
<component-popup :prop-show="is_show_search_popup" prop-position="bottom" @onclose="search_popup_event_close">
<view class="form-container bg-base padding-horizontal-main padding-top-main padding-bottom-xs">
<view class="form-gorup tc bg-white margin-top-lg">
<view class="form-gorup-title">搜索条件</view>
<input type="number" :value="search_keywords_value" placeholder-class="cr-grey" class="cr-base" placeholder="订单号/取货码" @input="search_input_keywords_event">
</view>
<view class="form-gorup form-gorup-submit">
<button class="bg-main-pair cr-white round submit-bottom" type="default" hover-class="none" :disabled="form_submit_disabled_status" @tap="search_submit_event"></button>
</view>
</view>
</component-popup>
</view>
</template>
<script>
const app = getApp();
import componentPopup from "../../../../components/popup/popup";
import componentNoData from "../../../../components/no-data/no-data";
import componentBottomLine from "../../../../components/bottom-line/bottom-line";
export default {
data() {
return {
data_list: [],
data_bottom_line_status: false
});
}
} else {
this.setData({
data_list_loding_status: 0
});
if (app.globalData.is_login_check(res.data, this, 'get_data_list')) {
app.globalData.showToast(res.data.msg);
}
}
},
fail: () => {
uni.hideLoading();
uni.stopPullDownRefresh();
this.setData({
data_list_loding_status: 2
});
app.globalData.showToast("服务器请求出错");
}
});
},
//
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.extraction_code || null) == null) {
app.globalData.showToast('请输入取件码');
return false;
}
if ((self.extraction_value || null) == null) {
app.globalData.showToast('操作数据有误');
return false;
} //
var data = {
id: self.extraction_value.oid,
user_id: self.extraction_value.uid,
extraction_code: self.extraction_code
};
self.setData({
form_submit_disabled_status: true
});
uni.showLoading({
title: "处理中..."
});
uni.request({
url: app.globalData.get_request_url("take", "extraction", "distribution"),
method: "POST",
data: data,
dataType: "json",
success: res => {
self.setData({
form_submit_disabled_status: false
});
uni.hideLoading();
if (res.data.code == 0) {
var temp_data_list = this.data_list;
var index = self.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.globalData.showToast(res.data.msg, "success");
} else {
app.globalData.showToast(res.data.msg);
}
},
fail: () => {
self.setData({
form_submit_disabled_status: false
});
uni.hideLoading();
app.globalData.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);
}
}
};
</script>
<style>
/*
* 导航
*/
.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 .single-text {
line-height: 50rpx;
}
.data-list .item .content .single-text .title {
margin-right: 30rpx;
}
.data-list .item .content .single-text .value {
font-weight: 500;
}
.data-list .item .content .single-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);
}
data_total: 0,
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: '',
content_list: [
{name: "订单号", field: "order_no"},
{name: "支付金额", field: "pay_price", unit: "元"}
]
};
},
components: {
componentPopup,
componentNoData,
componentBottomLine
},
props: {},
onLoad(params) {
//
var nav_status_index = 0;
if (params.status != undefined) {
for (var i in this.nav_status_list) {
if (this.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() {},
//
onPullDownRefresh() {
this.setData({
data_page: 1
});
this.get_data_list(1);
},
methods: {
init() {
var user = app.globalData.get_user_info(this, 'init');
if (user != false) {
//
if (app.globalData.user_is_need_login(user)) {
uni.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_bottom_line_status == true) {
return false;
}
}
// loding
uni.showLoading({
title: "加载中..."
});
this.setData({
data_list_loding_status: 1
});
//
var status = (this.nav_status_list[this.nav_status_index] || null) == null ? -1 : this.nav_status_list[this.nav_status_index]['value'];
//
uni.request({
url: app.globalData.get_request_url("order", "extraction", "distribution"),
method: "POST",
data: {
page: this.data_page,
status: status || 0,
keywords: this.search_keywords_value || ''
},
dataType: "json",
success: res => {
uni.hideLoading();
uni.stopPullDownRefresh();
if (res.data.code == 0) {
if (res.data.data.data.length > 0) {
if (this.data_page <= 1) {
var temp_data_list = res.data.data.data;
} else {
var temp_data_list = this.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_page + 1
});
//
this.setData({
data_bottom_line_status: (this.data_page > 1 && this.data_page > this.data_page_total)
});
} 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.globalData.is_login_check(res.data, this, 'get_data_list')) {
app.globalData.showToast(res.data.msg);
}
}
},
fail: () => {
uni.hideLoading();
uni.stopPullDownRefresh();
this.setData({
data_list_loding_status: 2
});
app.globalData.showToast("服务器请求出错");
}
});
},
//
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) {
//
if ((this.extraction_code || null) == null) {
app.globalData.showToast('请输入取件码');
return false;
}
if ((this.extraction_value || null) == null) {
app.globalData.showToast('操作数据有误');
return false;
}
//
var data = {
id: this.extraction_value.oid,
user_id: this.extraction_value.uid,
extraction_code: this.extraction_code
};
this.setData({
form_submit_disabled_status: true
});
uni.showLoading({
title: "处理中..."
});
uni.request({
url: app.globalData.get_request_url("take", "extraction", "distribution"),
method: "POST",
data: data,
dataType: "json",
success: res => {
this.setData({
form_submit_disabled_status: false
});
uni.hideLoading();
if (res.data.code == 0) {
var temp_data_list = this.data_list;
var index = this.extraction_value.index;
temp_data_list[index]['status'] = 1;
temp_data_list[index]['status_name'] = '已处理';
this.setData({
is_show_take_popup: false,
data_list: temp_data_list
});
app.globalData.showToast(res.data.msg, "success");
} else {
app.globalData.showToast(res.data.msg);
}
},
fail: () => {
this.setData({
form_submit_disabled_status: false
});
uni.hideLoading();
app.globalData.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);
}
}
};
</script>
<style>
@import './extraction-order.css';
</style>

View File

@ -0,0 +1,22 @@
.address-logo {
width: 140rpx;
height: 140rpx !important;
}
.address .item-icon {
width: 30rpx;
height: 35rpx !important;
}
.address-alias {
padding: 2rpx 10rpx;
}
.address .text {
line-height: 44rpx;
width: calc(100% - 40rpx);
}
.operation .button-list button {
padding: 0 35rpx;
display: inline-flex;
}
.operation .button-list button:not(:last-child) {
margin-right: 20rpx;
}

View File

@ -1,350 +1,297 @@
<template>
<view>
<view class="page">
<view v-if="data_list.length > 0">
<view v-for="(item, index) in data_list" :key="index" class="item bg-white spacing-mb">
<view @tap="address_conent_event" :data-index="index" class="oh">
<view v-if="(item.logo || null) != null" class="fl oh margin-right-lg">
<image class="dis-block address-logo" :src="item.logo" mode="widthFix"></image>
</view>
<view class="oh">
<view class="base oh">
<text v-if="(item.alias || null) != null" class="address-alias">{{item.alias}}</text>
<text>{{item.name}}</text>
<text class="fr">{{item.tel}}</text>
</view>
<view class="address oh">
<image class="item-icon fl" src="/static/images/user-address.png" mode="widthFix"></image>
<view class="text fr">{{item.province_name || ''}}{{item.city_name || ''}}{{item.county_name || ''}}{{item.address || ''}}</view>
</view>
</view>
</view>
<view class="operation br-t oh">
<view v-if="(item.distance_value || null) != null && (item.distance_unit || null) != null" class="fl margin-top-lg">
<text class="cr-gray">距离</text>
<text class="cr-base">{{item.distance_value}}</text>
<text class="cr-gray">{{item.distance_unit}}</text>
</view>
<view class="fr oh button-list">
<button v-if="(item.is_default || 0) == 0" class="cr-base map-submit br" type="default" size="mini" @tap="address_switch_event" :data-index="index" hover-class="none"></button>
<button v-else class="cr-grey map-submit br" type="default" size="mini" hover-class="none" :disabled="true">默认</button>
<button v-if="(item.lng || null) != null && (item.lat || null) != null && item.lng != 0 && item.lat != 0" class="cr-base map-submit br" type="default" size="mini" @tap="address_map_event" :data-index="index" hover-class="none"></button>
</view>
</view>
</view>
</view>
<view v-if="data_list.length == 0">
<!--<import src="/pages/common/nodata.wxml"></import>-->
<block data-type="template" data-is="nodata" data-attr="status: data_list_loding_status">
<!-- 1 加载中 -->
<view v-if="0 == 1" class="no-data-loding tc">
<text>加载中...</text>
</view>
<!-- 2 处理错误 -->
<view v-else-if="0 == 2" class="no-data-box tc">
<image src="/static/images/error.png" mode="widthFix"></image>
<view class="no-data-tips">{{msg || '处理错误'}}</view>
</view>
<!-- 0 默认没有数据 -->
<view v-else-if="0 == 0" class="no-data-box tc">
<image src="/static/images/empty.png" mode="widthFix"></image>
<view class="no-data-tips">{{msg || '没有相关数据'}}</view>
</view>
</block>
</view>
<template>
<view>
<view class="page">
<view v-if="data_list.length > 0" class="data-list padding-main">
<view v-for="(item, index) in data_list" :key="index" class="item bg-white padding-main border-radius-main spacing-mb">
<view @tap="address_conent_event" :data-index="index" class="oh">
<view v-if="(item.logo || null) != null" class="fl oh margin-right-lg">
<image class="dis-block address-logo radius" :src="item.logo" mode="widthFix"></image>
</view>
<view class="oh">
<view class="base oh padding-bottom-main padding-top-xs">
<text v-if="(item.alias || null) != null" class="address-alias br-main cr-main round margin-right-sm">{{item.alias}}</text>
<text>{{item.name}}</text>
<text class="fr">{{item.tel}}</text>
</view>
<view class="address oh padding-top-sm">
<image class="item-icon fl margin-top-xs" :src="common_static_url+'map-icon.png'" mode="widthFix"></image>
<view class="text fr">
{{item.province_name || ''}}{{item.city_name || ''}}{{item.county_name || ''}}{{item.address || ''}}
</view>
</view>
</view>
</view>
<view v-if="((item.distance_value || null) != null && (item.distance_unit || null) != null) || ((item.lng || 0) != 0 && (item.lat || 0) != 0)" class="operation br-t oh padding-top-main margin-top-main">
<view v-if="(item.distance_value || null) != null && (item.distance_unit || null) != null" class="fl margin-top-lg">
<text class="cr-gray">距离</text>
<text class="cr-base">{{item.distance_value}}</text>
<text class="cr-gray">{{item.distance_unit}}</text>
</view>
<view class="fr oh button-list">
<button v-if="(item.is_default || 0) == 0" class="round bg-white cr-green br-green" type="default" size="mini" @tap="address_switch_event" :data-index="index" hover-class="none"></button>
<button v-if="(item.lng || 0) != 0 && (item.lat || 0) != 0" class="round bg-white cr-base br" type="default" size="mini" @tap="address_map_event" :data-index="index" hover-class="none"></button>
</view>
</view>
</view>
</view>
<view v-else>
<!-- 提示信息 -->
<component-no-data :prop-status="data_list_loding_status"></component-no-data>
</view>
<!-- 结尾 -->
<component-bottom-line :prop-status="data_bottom_line_status"></component-bottom-line>
</view>
</view>
</template>
<script>
const app = getApp();
import componentNoData from "../../../../components/no-data/no-data";
import componentBottomLine from "../../../../components/bottom-line/bottom-line";
<!--<import src="/pages/common/bottom_line.wxml"></import>-->
<block data-type="template" data-is="bottom_line" data-attr="status: data_bottom_line_status">
<view v-if="(status || false)" class="data-bottom-line">
<view class="left fl"></view>
<view class="msg fl">我是有底线的</view>
<view class="right fr"></view>
</view>
</block>
</view>
</view>
</template>
<script>
const app = getApp();
export default {
data() {
return {
data_list_loding_status: 1,
data_bottom_line_status: false,
data_list: [],
params: null,
user_location_cache_key: app.globalData.data.cache_userlocation_key,
user_location: null,
is_first: 1,
home_extraction_address_position: 0
};
},
components: {},
props: {},
onLoad(params) {
this.setData({
params: params,
home_extraction_address_position: app.globalData.get_config('config.home_extraction_address_position', 0)
});
},
onReady: function () {
//
uni.removeStorage({
key: this.user_location_cache_key
}); //
if (this.home_extraction_address_position == 1) {
uni.navigateTo({
url: '/pages/common/open-setting-location/open-setting-location'
});
}
},
onShow() {
uni.setNavigationBarTitle({
title: app.globalData.data.common_pages_title.extraction_address
}); //
if (this.home_extraction_address_position == 1) {
//
if (this.is_first == 0) {
this.user_location_init();
this.init();
}
} else {
this.init();
}
this.setData({
is_first: 0
});
},
//
onPullDownRefresh() {
this.get_data_list();
},
methods: {
//
init() {
var user = app.globalData.get_user_info(this, "init");
if (user != false) {
//
if (app.globalData.user_is_need_login(user)) {
uni.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
});
}
},
//
user_location_init() {
var result = uni.getStorageSync(this.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
});
},
//
get_data_list() {
// loding
uni.showLoading({
title: "加载中..."
});
this.setData({
data_list_loding_status: 1
}); //
var data = {}; //
if ((this.user_location || null) != null) {
data['lng'] = this.user_location.lng;
data['lat'] = this.user_location.lat;
} //
uni.request({
url: app.globalData.get_request_url("switchinfo", "extraction", "distribution"),
method: "POST",
data: data,
dataType: "json",
success: res => {
uni.hideLoading();
uni.stopPullDownRefresh();
if (res.data.code == 0) {
var data = res.data.data;
if (data.extraction_address.length > 0) {
this.setData({
data_list: data.extraction_address,
data_list_loding_status: 3,
data_bottom_line_status: true
});
} else {
this.setData({
data_list_loding_status: 0
});
}
} else {
this.setData({
data_list_loding_status: 0
var common_static_url = app.globalData.get_static_url('common');
export default {
data() {
return {
common_static_url: common_static_url,
data_list_loding_status: 1,
data_bottom_line_status: false,
data_list: [],
params: null,
user_location_cache_key: app.globalData.data.cache_userlocation_key,
user_location: null,
is_first: 1,
home_extraction_address_position: 0
};
},
components: {},
props: {},
onLoad(params) {
this.setData({
params: params,
home_extraction_address_position: app.globalData.get_config('config.home_extraction_address_position', 0)
});
},
onReady: function() {
//
uni.removeStorage({
key: this.user_location_cache_key
});
if (app.globalData.is_login_check(res.data, this, 'get_data_list')) {
app.globalData.showToast(res.data.msg);
}
}
},
fail: () => {
uni.hideLoading();
uni.stopPullDownRefresh();
this.setData({
data_list_loding_status: 2
});
app.globalData.showToast("服务器请求出错");
}
});
},
//
address_map_event(e) {
var index = e.currentTarget.dataset.index || 0;
var data = this.data_list[index] || null;
if (data == null) {
app.globalData.showToast("地址有误");
return false;
} //
var name = data.alias || data.name || '';
var address = (data.province_name || '') + (data.city_name || '') + (data.county_name || '') + (data.address || '');
app.globalData.open_location(data.lng, data.lat, name, address);
},
//
address_conent_event(e) {
var index = e.currentTarget.dataset.index || 0;
var is_back = this.params.is_back || 0;
if (is_back == 1) {
uni.setStorage({
key: app.globalData.data.cache_buy_user_address_select_key,
data: this.data_list[index]
});
uni.navigateBack();
}
},
//
address_switch_event(e) {
var index = e.currentTarget.dataset.index || 0;
var temp_data = this.data_list;
if ((temp_data[index] || null) == null) {
app.globalData.showToast('数据有误');
return false;
} //
var self = this;
uni.showLoading({
title: "处理中..."
});
uni.request({
url: app.globalData.get_request_url("switchsave", "extraction", "distribution"),
method: "POST",
data: {
"id": temp_data[index]['id'],
"value": temp_data[index]['id_old'] || 0
},
dataType: "json",
header: {
'content-type': 'application/x-www-form-urlencoded'
},
success: res => {
uni.hideLoading();
if (res.data.code == 0) {
app.globalData.showToast(res.data.msg, "success");
self.get_data_list();
} else {
if (app.globalData.is_login_check(res.data)) {
app.globalData.showToast(res.data.msg);
} else {
app.globalData.showToast('提交失败,请重试!');
}
}
},
fail: () => {
uni.hideLoading();
app.globalData.showToast("服务器请求出错");
}
});
}
}
};
</script>
<style>
.item {
padding: 10rpx 10rpx 0 10rpx;
}
.address-logo {
width: 140rpx;
height: 140rpx !important;
}
.base, .address, .operation {
padding: 20rpx 0;
}
.address .item-icon {
width: 30rpx;
height: 35rpx !important;
}
.address-alias {
border: 1px solid #d2364c;
color: #d2364c;
padding: 2rpx 10rpx;
border-radius: 6rpx;
margin-right: 10rpx;
}
.address .text {
line-height: 44rpx;
width: calc(100% - 40rpx);
}
.operation .button-list button:not(:last-child) {
margin-right: 20rpx;
}
//
if (this.home_extraction_address_position == 1) {
uni.navigateTo({
url: '/pages/common/open-setting-location/open-setting-location'
});
}
},
onShow() {
uni.setNavigationBarTitle({
title: app.globalData.data.common_pages_title.extraction_address
});
//
if (this.home_extraction_address_position == 1) {
//
if (this.is_first == 0) {
this.user_location_init();
this.init();
}
} else {
this.init();
}
this.setData({
is_first: 0
});
},
//
onPullDownRefresh() {
this.get_data_list();
},
methods: {
//
init() {
var user = app.globalData.get_user_info(this, "init");
if (user != false) {
//
if (app.globalData.user_is_need_login(user)) {
uni.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
});
}
},
//
user_location_init() {
var result = uni.getStorageSync(this.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
});
},
//
get_data_list() {
// loding
uni.showLoading({
title: "加载中..."
});
this.setData({
data_list_loding_status: 1
});
//
var data = {};
//
if ((this.user_location || null) != null) {
data['lng'] = this.user_location.lng;
data['lat'] = this.user_location.lat;
}
//
uni.request({
url: app.globalData.get_request_url("switchinfo", "extraction", "distribution"),
method: "POST",
data: data,
dataType: "json",
success: res => {
uni.hideLoading();
uni.stopPullDownRefresh();
if (res.data.code == 0) {
var data = res.data.data;
if (data.extraction_address.length > 0) {
this.setData({
data_list: data.extraction_address,
data_list_loding_status: 3,
data_bottom_line_status: true
});
} else {
this.setData({
data_list_loding_status: 0
});
}
} else {
this.setData({
data_list_loding_status: 0
});
if (app.globalData.is_login_check(res.data, this, 'get_data_list')) {
app.globalData.showToast(res.data.msg);
}
}
},
fail: () => {
uni.hideLoading();
uni.stopPullDownRefresh();
this.setData({
data_list_loding_status: 2
});
app.globalData.showToast("服务器请求出错");
}
});
},
//
address_map_event(e) {
var index = e.currentTarget.dataset.index || 0;
var data = this.data_list[index] || null;
if (data == null) {
app.globalData.showToast("地址有误");
return false;
}
//
var name = data.alias || data.name || '';
var address = (data.province_name || '') + (data.city_name || '') + (data.county_name || '') + (data.address || '');
app.globalData.open_location(data.lng, data.lat, name, address);
},
//
address_conent_event(e) {
var index = e.currentTarget.dataset.index || 0;
var is_back = this.params.is_back || 0;
if (is_back == 1) {
uni.setStorage({
key: app.globalData.data.cache_buy_user_address_select_key,
data: this.data_list[index]
});
uni.navigateBack();
}
},
//
address_switch_event(e) {
var index = e.currentTarget.dataset.index || 0;
var temp_data = this.data_list;
if ((temp_data[index] || null) == null) {
app.globalData.showToast('数据有误');
return false;
}
//
uni.showLoading({
title: "处理中..."
});
uni.request({
url: app.globalData.get_request_url("switchsave", "extraction", "distribution"),
method: "POST",
data: {
"id": temp_data[index]['id'],
"value": temp_data[index]['id_old'] || 0
},
dataType: "json",
success: res => {
uni.hideLoading();
if (res.data.code == 0) {
app.globalData.showToast(res.data.msg, "success");
var temp_data = this.data_list;
for(var i in temp_data) {
temp_data[i]['is_default'] = (i == index) ? 1 : 0;
}
this.setData({
data_list: temp_data
});
} else {
if (app.globalData.is_login_check(res.data)) {
app.globalData.showToast(res.data.msg);
} else {
app.globalData.showToast('提交失败,请重试!');
}
}
},
fail: () => {
uni.hideLoading();
app.globalData.showToast("服务器请求出错");
}
});
}
}
};
</script>
<style>
@import './extraction-switch.css';
</style>

View File

@ -1,117 +1,7 @@
/*
*
*/
.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;
.alias {
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);
}
.statistics .item {
width: 50%;
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;
}

View File

@ -11,7 +11,7 @@
</view>
<view class="margin-top-xxxl">
<navigator url="/pages/plugins/distribution/extraction-apply/extraction-apply" hover-class="none">
<button class="bg-main cr-white br-main round wh-auto" type="default" size="mini" hover-class="none">立即申请</button>
<button class="bg-main br-main cr-white round wh-auto" type="default" size="mini" hover-class="none">立即申请</button>
</navigator>
</view>
</view>
@ -20,75 +20,83 @@
<view v-else class="apply-already">
<!-- status 状态0待审核, 1已通过, 2已拒绝 -->
<!-- 审核中 -->
<view v-if="extraction.status == 0" class="waiting-audit bg-white">
<view class="title-msg tc">申请信息正在审核中...</view>
<view class="operation oh tc">
<view class="cr-base 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 v-if="extraction.status == 0">
<view class="padding-main border-radius-main bg-white">
<view class="cr-red tc text-size-lg">申请信息正在审核中...</view>
</view>
<view class="margin-top-xxxl">
<navigator url="/pages/plugins/distribution/extraction-apply/extraction-apply" hover-class="none">
<button class="bg-green br-green cr-white round wh-auto" type="default" size="mini" hover-class="none">编辑</button>
</navigator>
</view>
</view>
<!-- 审核通过 -->
<view v-else-if="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" @tap="address_map_event">
<text v-if="(extraction.alias || null) != null" class="alias">{{extraction.alias}}</text>
<text class="cr-base">{{extraction.province_name}}{{extraction.city_name}}{{extraction.county_name}}{{extraction.address}}</text>
</view>
<view v-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" @tap="order_event">
<view class="title cr-base">待处理</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" @tap="order_event">
<view class="title cr-base">已处理</view>
<view class="value single-text order-already-value">{{statistical.order_already || 0}}</view>
</view>
</view>
</view>
<view v-else class="spacing-mt relieve">
<view class="tips">当前状态也解约可重新编辑数据提交审核</view>
</view>
<view v-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 v-for="(item, index) in data_base.self_extraction_common_notice" :key="index" class="item">
{{item}}
</view>
</view>
</view>
</view>
<!-- 审核失败 -->
<view v-else="extraction.status == 2" class="refuse bg-white">
<view class="title-msg tc">申请信息审核失败</view>
<view v-if="(extraction.fail_reason || null) != null" class="fail-tips tips">{{extraction.fail_reason}}</view>
<view class="operation oh tc">
<view class="cr-base 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 class="padding-main border-radius-main bg-white">
<!-- 导航 -->
<view class="padding-bottom-main br-b">
<text class="fw-b">取货点信息</text>
<view class="fr cr-blue">
<navigator url="/pages/plugins/distribution/extraction-apply/extraction-apply" hover-class="none">编辑信息</navigator>
</view>
</view>
<!-- 地址信息 -->
<view class="margin-top-lg" @tap="address_map_event">
<text v-if="(extraction.alias || null) != null" class="alias br-main cr-main bg-white round margin-right-sm">{{extraction.alias}}</text>
<text class="cr-base">{{extraction.province_name}}{{extraction.city_name}}{{extraction.county_name}}{{extraction.address}}</text>
</view>
</view>
<view v-if="extraction.status == 1" class="spacing-mt">
<view class="padding-main border-radius-main bg-white">
<!-- 导航 -->
<view class="padding-bottom-main br-b">
<text class="fw-b">取货订单统计</text>
<view class="fr cr-blue">
<navigator url="/pages/plugins/distribution/extraction-order/extraction-order" hover-class="none">查看取货订单</navigator>
</view>
</view>
<!-- 自提地点统计 -->
<view class="statistics oh padding-top-main">
<view class="item fl tc padding-main" data-value="0" @tap="order_event">
<view class="title cr-base">待处理</view>
<view class="single-text cr-red fw-b margin-top-sm">{{statistical.order_wait || 0}}</view>
</view>
<view class="item fl tc padding-main" data-value="1" @tap="order_event">
<view class="title cr-base">已处理</view>
<view class="single-text cr-green fw-b margin-top-sm">{{statistical.order_already || 0}}</view>
</view>
</view>
</view>
<!-- 通知 -->
<view v-if="(data_base || null) != null && (data_base.self_extraction_common_notice || null) != null && data_base.self_extraction_common_notice.length > 0" class="spacing-mt">
<view class="notice-content">
<view v-for="(item, index) in data_base.self_extraction_common_notice" :key="index" class="item">
{{item}}
</view>
</view>
</view>
</view>
<!-- 已解约 -->
<view v-else class="spacing-mt">
<view class="notice-content-blue">当前状态也解约可重新编辑数据提交审核</view>
</view>
</view>
<!-- 审核失败 -->
<view v-else="extraction.status == 2">
<view class="padding-main border-radius-main bg-white spacing-mb">
<view class="cr-red tc text-size-lg">申请信息审核失败</view>
<view v-if="(extraction.fail_reason || null) != null" class="margin-top-lg">
<text class="fw-b">原因</text>
<text class="cr-gray">{{extraction.fail_reason}}</text>
</view>
</view>
<view class="margin-top-xxxl">
<navigator url="/pages/plugins/distribution/extraction-apply/extraction-apply" hover-class="none">
<button class="bg-green br-green cr-white round wh-auto" type="default" size="mini" hover-class="none">编辑</button>
</navigator>
</view>
</view>
</view>
</view>

View File

@ -9,7 +9,7 @@
<!-- 列表 -->
<scroll-view :scroll-y="true" class="scroll-box" @scrolltolower="scroll_lower" lower-threshold="30">
<view v-if="data_list.length > 0" class="data-list padding-main">
<view v-if="data_list.length > 0" class="data-list padding-horizontal-main padding-top-main">
<view v-for="(item, index) in data_list" :key="index" class="item padding-main border-radius-main oh bg-white spacing-mb">
<view class="base oh br-b padding-bottom-main">
<image class="avatar dis-block fl circle" :src="item.avatar" mode="widthFix" @tap="avatar_event" :data-value="item.avatar"></image>

View File

@ -9,7 +9,7 @@
<!-- 列表 -->
<scroll-view :scroll-y="true" class="scroll-box" @scrolltolower="scroll_lower" lower-threshold="30">
<view v-if="data_list.length > 0" class="data-list padding-main">
<view v-if="data_list.length > 0" class="data-list padding-horizontal-main padding-top-main">
<view v-for="(item, index) in data_list" :key="index" class="item padding-main border-radius-main oh bg-white spacing-mb">
<view class="base oh br-b padding-bottom-main">
<text class="cr-base">{{item.add_time_time}}</text>

View File

@ -1,7 +1,7 @@
<template>
<view>
<scroll-view :scroll-y="true" class="scroll-box" @scrolltolower="scroll_lower" lower-threshold="30">
<view v-if="data_list.length > 0" class="data-list padding-main">
<view v-if="data_list.length > 0" class="data-list padding-horizontal-main padding-top-main">
<view v-for="(item, index) in data_list" :key="index" class="item padding-main border-radius-main oh bg-white spacing-mb">
<view class="base oh br-b padding-bottom-main">
<image class="avatar dis-block fl circle" :src="item.avatar" mode="widthFix" @tap="avatar_event" :data-value="item.avatar"></image>