提交 4a8dbb6a 编写于 作者: D Devil

小程序订单售后

上级 7a4ead6f
......@@ -66,9 +66,10 @@ class Order extends Common
// 获取列表
$data_params = array(
'm' => $start,
'n' => $number,
'where' => $where,
'm' => $start,
'n' => $number,
'where' => $where,
'is_orderaftersale' => 1,
);
$data = OrderService::OrderList($data_params);
......
<?php
// +----------------------------------------------------------------------
// | ShopXO 国内领先企业级B2C免费开源电商系统
// +----------------------------------------------------------------------
// | Copyright (c) 2011~2019 http://shopxo.net All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: Devil
// +----------------------------------------------------------------------
namespace app\api\controller;
use app\service\OrderAftersaleService;
/**
* 订单售后
* @author Devil
* @blog http://gong.gg/
* @version 0.0.1
* @datetime 2019-10-04T21:51:08+0800
*/
class Orderaftersale extends Common
{
/**
* 构造方法
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2018-11-30
* @desc description
*/
public function __construct()
{
parent::__construct();
// 是否登录
$this->IsLogin();
}
/**
* 订单列表
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2018-09-28
* @desc description
*/
public function Index()
{
// 参数
$params = $this->data_post;
$params['user'] = $this->user;
$params['user_type'] = 'user';
// 分页
$number = 10;
$page = max(1, isset($this->data_post['page']) ? intval($this->data_post['page']) : 1);
// 条件
$where = OrderService::OrderListWhere($params);
// 获取总数
$total = OrderAftersaleService::OrderAftersaleTotal($where);
$page_total = ceil($total/$number);
$start = intval(($page-1)*$number);
// 获取列表
$data_params = array(
'm' => $start,
'n' => $number,
'where' => $where,
'is_orderaftersale' => 1,
);
$data = OrderAftersaleService::OrderAftersaleList($data_params);
// 返回数据
$result = [
'total' => $total,
'page_total' => $page_total,
'data' => $data['data'],
'aftersale_type_list' => lang('common_order_aftersale_type_list'),
];
return DataReturn('success', 0, $result);
}
/**
* 售后页面
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2019-05-21
* @desc description
*/
public function Aftersale()
{
$order_id = isset($this->data_post['oid']) ? intval($this->data_post['oid']) : 0;
$order_detail_id = isset($this->data_post['did']) ? intval($this->data_post['did']) : 0;
$ret = OrderAftersaleService::OrdferGoodsRow($order_id, $order_detail_id, $this->user['id']);
if($ret['code'] == 0)
{
// 获取当前订单商品售后最新的一条纪录
$data_params = [
'm' => 0,
'n' => 1,
'where' => [
['order_detail_id', '=', $order_detail_id],
['user_id', '=', $this->user['id']],
],
];
$new_aftersale = OrderAftersaleService::OrderAftersaleList($data_params);
if(!empty($new_aftersale['data'][0]))
{
$new_aftersale_data = $new_aftersale['data'][0];
$new_aftersale_data['tips_msg'] = OrderAftersaleService::OrderAftersaleTipsMsg($new_aftersale_data);
} else {
$new_aftersale_data = [];
}
// 进度
$step_data = OrderAftersaleService::OrderAftersaleStep($new_aftersale_data);
// 可退款退货
$returned = OrderAftersaleService::OrderAftersaleCalculation($order_id, $order_detail_id);
// 仅退款原因
$return_only_money_reason = MyC('home_order_aftersale_return_only_money_reason');
// 退款退货原因
$return_money_goods_reason = MyC('home_order_aftersale_return_money_goods_reason');
// 返回数据
$result = [
'order_data' => $ret['data'],
'new_aftersale_data' => $new_aftersale_data,
'step_data' => $step_data,
'returned_data' => $returned['data'],
'return_only_money_reason' => empty($return_only_money_reason) ? [] : explode("\n", $return_only_money_reason),
'return_money_goods_reason' => empty($return_money_goods_reason) ? [] : explode("\n", $return_money_goods_reason),
'aftersale_type_list' => lang('common_order_aftersale_type_list'),
];
return DataReturn('success', 0, $result);
}
return DataReturn($ret['msg'], -1);
}
/**
* 申请售后创建
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2019-05-23
* @desc description
*/
public function Create()
{
$params = $this->data_post;
$params['user'] = $this->user;
return OrderAftersaleService::AftersaleCreate($params);
}
/**
* 用户退货
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2019-05-23
* @desc description
*/
public function Delivery()
{
$params = $this->data_post;
$params['user'] = $this->user;
return OrderAftersaleService::AftersaleDelivery($params);
}
/**
* 订单取消
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2018-09-30
* @desc description
*/
public function Cancel()
{
$params = $this->data_post;
$params['user'] = $this->user;
return OrderAftersaleService::AftersaleCancel($params);
}
}
?>
\ No newline at end of file
......@@ -57,6 +57,8 @@ App({
"user_integral": "我的积分",
"user_goods_browse": "我的足迹",
"goods_comment": "商品评论",
"user_orderaftersale": "退款/售后",
"user_orderaftersale_detail": "售后详情",
},
// 请求地址
......
{
"pages": [
"pages/user-order/user-order",
"pages/user/user",
"pages/index/index",
"pages/goods-category/goods-category",
"pages/cart/cart",
"pages/user/user",
"pages/web-view/web-view",
"pages/login/login",
"pages/paytips/paytips",
......@@ -14,7 +15,6 @@
"pages/buy/buy",
"pages/user-address/user-address",
"pages/user-address-save/user-address-save",
"pages/user-order/user-order",
"pages/user-order-detail/user-order-detail",
"pages/user-faovr/user-faovr",
"pages/user-answer-list/user-answer-list",
......@@ -22,7 +22,9 @@
"pages/answer-form/answer-form",
"pages/message/message",
"pages/user-integral/user-integral",
"pages/user-goods-browse/user-goods-browse"
"pages/user-goods-browse/user-goods-browse",
"pages/user-orderaftersale/user-orderaftersale",
"pages/user-orderaftersale-detail/user-orderaftersale-detail"
],
"window": {
"navigationBarTitleText": "{{application_title}}",
......
......@@ -370,4 +370,20 @@ Page({
});
this.get_data_list(1);
},
// 售后订单事件
orderaftersale_event(e) {
var oid = e.currentTarget.dataset.oid || 0;
var did = e.currentTarget.dataset.did || 0;
if(oid == 0 || did == 0)
{
app.showToast("参数有误");
return false;
}
// 进入售后页面
wx.navigateTo({
url: "/pages/user-orderaftersale-detail/user-orderaftersale-detail?oid=" + oid+"&did="+did
});
},
});
......@@ -24,6 +24,7 @@
{{spec.type}}:{{spec.value}}
</view>
</block>
<view class="orderaftersale-btn-text" catchtap="orderaftersale_event" data-oid="{{item.id}}" data-did="{{detail.id}}">{{detail.orderaftersale_btn_text}}</view>
</view>
<view class="oh goods-price">
<text class="sales-price">¥{{detail.price}}</text>
......
......@@ -19,6 +19,7 @@
.goods-base {
min-height: 160rpx;
margin-left: 180rpx;
position: relative;
}
.goods-title {
line-height: 36rpx;
......@@ -59,6 +60,12 @@
.item-operation button {
padding: 0 35rpx;
}
.orderaftersale-btn-text {
position: absolute;
right: 0;
bottom: 0;
color: #4d7fa7;
}
/**
* 支付方式
......
const app = getApp();
Page({
data: {
params: null,
data_list_loding_status: 1,
data_list_loding_msg: '',
data_bottom_line_status: false,
order_data: [],
new_aftersale_data: [],
step_data: [],
returned_data: [],
return_only_money_reason: [],
return_money_goods_reason: [],
aftersale_type_list: [],
},
onLoad(params) {
this.setData({ params: params });
this.init();
},
onShow() {
wx.setNavigationBarTitle({ title: app.data.common_pages_title.user_orderaftersale_detail });
},
init() {
var self = this;
wx.showLoading({ title: "加载中..." });
this.setData({
data_list_loding_status: 1
});
wx.request({
url: app.get_request_url("aftersale", "orderaftersale"),
method: "POST",
data: {
oid: this.data.params.oid,
did: this.data.params.did
},
dataType: "json",
success: res => {
wx.hideLoading();
wx.stopPullDownRefresh();
if (res.data.code == 0) {
var data = res.data.data;
self.setData({
data_list_loding_status: 3,
data_bottom_line_status: true,
data_list_loding_msg: '',
order_data: data.order_data || [],
new_aftersale_data: data.new_aftersale_data || [],
step_data: data.step_data || [],
returned_data: data.returned_data || [],
return_only_money_reason: data.return_only_money_reason || [],
return_money_goods_reason: data.return_money_goods_reason || [],
aftersale_type_list: data.aftersale_type_list || [],
});
} else {
self.setData({
data_list_loding_status: 2,
data_bottom_line_status: false,
data_list_loding_msg: res.data.msg,
});
app.showToast(res.data.msg);
}
},
fail: () => {
wx.hideLoading();
wx.stopPullDownRefresh();
self.setData({
data_list_loding_status: 2,
data_bottom_line_status: false,
data_list_loding_msg: '服务器请求出错',
});
app.showToast("服务器请求出错");
}
});
},
// 下拉刷新
onPullDownRefresh() {
this.init();
},
});
<!--pages/user-orderaftersale-detail/user-orderaftersale-detail.wxml-->
<text>pages/user-orderaftersale-detail/user-orderaftersale-detail.wxml</text>
/* pages/user-orderaftersale-detail/user-orderaftersale-detail.wxss */
\ No newline at end of file
const app = getApp();
Page({
/**
* 页面的初始数据
*/
data: {
},
/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady: function () {
},
/**
* 生命周期函数--监听页面显示
*/
onShow: function () {
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide: function () {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload: function () {
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh: function () {
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom: function () {
},
/**
* 用户点击右上角分享
*/
onShareAppMessage: function () {
}
})
\ No newline at end of file
<!--pages/user-orderaftersale.wxml-->
<text>pages/user-orderaftersale.wxml</text>
/* pages/user-orderaftersale.wxss */
\ No newline at end of file
......@@ -13,10 +13,11 @@ Page({
{ name: "我的积分", url: "user-integral", count: 0 },
],
user_order_status_list: [
{ name: "待付款", status: 1, count: 0 },
{ name: "待发货", status: 2, count: 0 },
{ name: "待收货", status: 3, count: 0 },
{ name: "已完成", status: 4, count: 0 },
{ name: "待付款", status: 1, count: 0, url: "/pages/user-order/user-order?status=1" },
{ name: "待发货", status: 2, count: 0, url: "/pages/user-order/user-order?status=2" },
{ name: "待收货", status: 3, count: 0, url: "/pages/user-order/user-order?status=3" },
{ name: "已完成", status: 4, count: 0, url: "/pages/user-order/user-order?status=4" },
{ name: "退款/售后", status: 101, count: 0, url: "/pages/user-orderaftersale/user-orderaftersale" },
],
nav_lists: [
{
......
......@@ -36,7 +36,7 @@
</navigator>
<view wx:if="{{item.url == 'user-order' && user_order_status_list.length > 0}}" class="items-list br-b oh">
<block wx:for="{{user_order_status_list}}" wx:key="key" wx:for-item="items">
<navigator url="/pages/{{item.url}}/{{item.url}}?status={{items.status}}" hover-class="none">
<navigator url="{{items.url}}" hover-class="none">
<view class="items fl tc">
<view class="badge-icon">
<component-badge prop-number="{{items.count}}"></component-badge>
......
......@@ -76,7 +76,7 @@
padding: 15rpx 0;
}
.items-list .items {
width: 25%;
width: 20%;
position: relative;
}
.items-list .items .items-icon {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册