diff --git a/api/index.js b/api/index.js index 9a23d9e..774d756 100644 --- a/api/index.js +++ b/api/index.js @@ -33,6 +33,9 @@ import idcard from "./interfaces/idcard" // 身份认证 import withdraw from "./interfaces/withdraw" +// 售后服务 +import refund from "./interfaces/refund" + export default { auth, bank, @@ -43,5 +46,6 @@ export default { user, pay, idcard, - withdraw + withdraw, + refund } \ No newline at end of file diff --git a/api/interfaces/refund.js b/api/interfaces/refund.js new file mode 100644 index 0000000..142e0a9 --- /dev/null +++ b/api/interfaces/refund.js @@ -0,0 +1,50 @@ + /* + * 手太欠 + * 愿这世界都如故事里一样 美好而动人~ +*/ + +import { req } from "../request" + +// 售后服务 +const list = data => req({ + url : "mall/refunds", + data +}) + +// 用户退货 +const deliver = (refund, data) => req({ + url: "mall/refunds/" + refund + "/deliver", + method: "POST", + data +}) + +// 退货详情 +const info = refund => req({ + url: "mall/refunds/" + refund +}) + +// 退货日志 +const log = refund => req({ + url: "mall/refunds/" + refund + "/logs" +}) + +// 申请售后前置 +const refundPreposition = id => req({ + url: "mall/orders/" + id + "/refund" +}) + +// 提交退货 +const submitRefund = (id, data) => req({ + url : "mall/orders/" + id + "/refund", + method : "POST", + data +}) + +export default ({ + list, + deliver, + info, + log, + refundPreposition, + submitRefund +}) \ No newline at end of file diff --git a/app.json b/app.json index c5eaef4..caef518 100644 --- a/app.json +++ b/app.json @@ -32,7 +32,9 @@ "pages/idcard/eSign/eSign", "pages/withdraw/withdraw", "pages/pay/success/success", - "pages/resetPassword/resetPassword" + "pages/resetPassword/resetPassword", + "pages/refund/refund", + "pages/refund/aftersale/aftersale" ], "window": { "backgroundTextStyle": "light", diff --git a/pages/idcard/idcard.js b/pages/idcard/idcard.js index 2944101..3b42b86 100644 --- a/pages/idcard/idcard.js +++ b/pages/idcard/idcard.js @@ -44,6 +44,7 @@ Page({ created_at : data.created_at, verified : data.verified, need_sign : data.need_sign, + address : data.address } }) } @@ -84,9 +85,9 @@ Page({ back_card : this.data.back.path, address }).then(res => { - let { name, id_card, created_at, verified, need_sign } = res.data + let { name, id_card, created_at, verified, need_sign, address } = res.data this.setData({ - info : { name, id_card, created_at, verified, need_sign }, + info : { name, id_card, created_at, verified, need_sign, address }, procedure : need_sign ? 2 : 3, isSignContract : data.is_sign_contract, }) diff --git a/pages/mall/confirm/confirm.js b/pages/mall/confirm/confirm.js index 460e935..fae8780 100644 --- a/pages/mall/confirm/confirm.js +++ b/pages/mall/confirm/confirm.js @@ -72,6 +72,9 @@ Page({ qty : this.data.goodsQty, address_id : this.data.addressId }).then(res => { + + console.log(res) + wx.redirectTo({ url: '/pages/pay/index?params=' + encodeURIComponent(JSON.stringify(res.data)) }) diff --git a/pages/order/details/details.js b/pages/order/details/details.js index 94d8857..8e34f01 100644 --- a/pages/order/details/details.js +++ b/pages/order/details/details.js @@ -54,8 +54,13 @@ Page({ * 支付订单 */ payClick() { + let payData = { + order_id : this.data.goodsData.order_id, + order_no : this.data.goodsData.order_no, + order_type : this.data.goodsData.order_type + } wx.navigateTo({ - url: '/pages/pay/index?order_no=' + this.data.goodsData.order_no + '&total=' + this.data.goodsData.total + url: '/pages/pay/index?params=' + encodeURIComponent(JSON.stringify(payData)) }) }, diff --git a/pages/order/details/details.wxml b/pages/order/details/details.wxml index 92cb4b5..79bd7ea 100644 --- a/pages/order/details/details.wxml +++ b/pages/order/details/details.wxml @@ -1,7 +1,7 @@ - + 订单编号 diff --git a/pages/order/details/details.wxss b/pages/order/details/details.wxss index 1d6d40e..32c73df 100644 --- a/pages/order/details/details.wxss +++ b/pages/order/details/details.wxss @@ -215,7 +215,7 @@ page { } .reserve-status { - color: #ff8100 + color: #da2b54 } /* 底部菜单 */ diff --git a/pages/order/index.js b/pages/order/index.js index 8e1e0f7..018ea55 100644 --- a/pages/order/index.js +++ b/pages/order/index.js @@ -60,8 +60,14 @@ Page({ * 支付订单 */ payClick(e) { + let { item } = e.currentTarget.dataset + let data = { + order_id : item.order_id, + order_no : item.order_no, + order_type : item.order_type + } wx.navigateTo({ - url: '/pages/pay/index?order_no=' + e.currentTarget.dataset.order_no + '&total=' + e.currentTarget.dataset.total + url: '/pages/pay/index?params=' + encodeURIComponent(JSON.stringify(data)) }) }, @@ -137,5 +143,14 @@ Page({ // 获取订单列表 this.listInfo(pageNumber); } + }, + /** + * 申请售后 + */ + signRefund(e){ + let { order_no } = e.currentTarget.dataset + wx.navigateTo({ + url: "/pages/refund/aftersale/aftersale?id=" + order_no, + }) } }) diff --git a/pages/order/index.wxml b/pages/order/index.wxml index 55849c2..f80f697 100644 --- a/pages/order/index.wxml +++ b/pages/order/index.wxml @@ -44,8 +44,9 @@ 更多 - 立即付款 + 立即付款 签收订单 + 申请退货 查看详情 diff --git a/pages/order/index.wxss b/pages/order/index.wxss index fb61ea3..fc37232 100644 --- a/pages/order/index.wxss +++ b/pages/order/index.wxss @@ -52,7 +52,7 @@ page { } .list-top-status { - color: #ff8100; + color: #da2b54; } .list-goods { @@ -157,8 +157,8 @@ page { } .list-btn-labor { - border: 2rpx solid #ff8100; - color: #ff8100; + border: 2rpx solid #da2b54; + color: #da2b54; border-radius: 80rpx; height: 56rpx; line-height: 56rpx; diff --git a/pages/refund/aftersale/aftersale.js b/pages/refund/aftersale/aftersale.js new file mode 100644 index 0000000..62a3d79 --- /dev/null +++ b/pages/refund/aftersale/aftersale.js @@ -0,0 +1,82 @@ +Page({ + + /** + * 页面的初始数据 + */ + data: { + order : null, + title : [], + imgs : null, + titleVal: '' + }, + + /** + * 生命周期函数--监听页面加载 + */ + onLoad(options) { + wx.showLoading({ + title: '加载中...', + mask : true + }) + wx.$api.refund.refundPreposition(options.id).then(res => { + let { title, order } = res.data; + console.log(order) + console.log(title) + this.setData({ + title, + order, + titleVal: title[0] + }) + wx.hideLoading() + }) + }, + /** + * 选择退货理由 + */ + onRadio(e){ + console.log(e.detail.value) + }, + /** + * 选择图片上传 + */ + onUpd(){ + wx.chooseMedia({ + count : 1, + mediaType : ['image'], + success : path => { + wx.$api.file.uploadImg(path.tempFiles[0].tempFilePath, {}).then(res => { + this.setData({ + imgs: res + }) + }) + } + }) + }, + /** + * 提交申请 + */ + onSubmit(){ + let data = { + title : this.data.titleVal, + pictures : this.data.imgs != null ? this.data.imgs.path : '' + } + wx.showLoading({ + title: '加载中...', + mask : true + }) + wx.$api.refund.submitRefund(this.data.order.order_no, data).then(res => { + wx.showModal({ + title : '提示', + content : res.data, + showCancel : false, + confirmColor: '#da2b54', + success : modalRes => { + if(modalRes.confirm){ + wx.navigateBack() + } + wx.hideLoading() + } + }) + }) + } +}) \ No newline at end of file diff --git a/pages/refund/aftersale/aftersale.json b/pages/refund/aftersale/aftersale.json new file mode 100644 index 0000000..fa2aa1c --- /dev/null +++ b/pages/refund/aftersale/aftersale.json @@ -0,0 +1,4 @@ +{ + "usingComponents": {}, + "navigationBarTitleText": "申请退货" +} \ No newline at end of file diff --git a/pages/refund/aftersale/aftersale.wxml b/pages/refund/aftersale/aftersale.wxml new file mode 100644 index 0000000..e706c0b --- /dev/null +++ b/pages/refund/aftersale/aftersale.wxml @@ -0,0 +1,39 @@ + + + + + 本次售后服务将由 绚火健康 为您提供服务 + + + + + + + {{item.sku.goods_name}} + 金额:{{item.price}} + 数量:{{item.qty}} + + + + + 选择退货理由 + + + + + + + 退货照片(仅限一张图片) + + + + + + + + + + + \ No newline at end of file diff --git a/pages/refund/aftersale/aftersale.wxss b/pages/refund/aftersale/aftersale.wxss new file mode 100644 index 0000000..fc720e7 --- /dev/null +++ b/pages/refund/aftersale/aftersale.wxss @@ -0,0 +1,34 @@ + +.content{ background: #f7f8f9; min-height: 100vh; padding: 30rpx; box-sizing: border-box; } + +/* 售后服务提醒 */ +.service-content { display: flex; flex-direction: row; align-items: center; justify-content: center; } +.service { font-size: 24rpx; padding: 4rpx 20rpx; border-radius: 30rpx; background-color: #f9f9f9; display: inline-block; text-align: center; color: #666; } +.service text{ color: #da2b54; } + +/* 商品信息 */ +.goods{ background-color: #fff; padding: 10rpx 30rpx; box-sizing: border-box; border-radius: 20rpx; margin-top: 30rpx; } +.goods-item { display: flex; flex-direction: row; align-items: center; justify-content: flex-start; margin: 20rpx 0; } +.good-img{ width: 128rpx; height: 128rpx; border-radius: 10rpx; } +.good-content{ padding-left: 30rpx; box-sizing: border-box; width: calc(100% - 128rpx); } +.good-content > .title{ font-size: 30rpx; line-height: 48rpx; } +.good-content > .text{ font-size: 26rpx; color: gray; line-height: 40rpx; } + +/* 退货标题 */ +.block-title{ font-size: 30rpx; padding-top: 30rpx; color: gray; } + +/* 退货原因 */ +.reason{ background: white; border-radius: 20rpx; margin-top: 30rpx; } +.reason-flex{ display: flex; justify-content: space-between; align-items: center; padding: 0 30rpx; height: 120rpx; font-weight: bold; font-size: 30rpx; border-bottom: solid 1rpx #f7f8f9; } +.reason-radio{ transform: scale(.75); } +.reason-flex:last-child{ border-bottom: none; } + +/* 上传退货照片 */ +.imgs{ background: white; border-radius: 20rpx; margin-top: 30rpx; padding: 20rpx; display: flex; flex-wrap: wrap; } +.imgs-upd{ background: #f7f8f9; width: calc(25% - 20rpx); padding-top: calc(25% - 20rpx); margin: 10rpx; position: relative; } +.imgs-add{ width: 48rpx; height: 48rpx; opacity: .3; position: absolute; left: 50%; top: 50%; margin-top: -24rpx; margin-left: -24rpx; } +.imgs-cover{ position: absolute; top: 0; left: 0; width: 100%; height: 100%; } + +/* 退货 */ +.button{ margin-top: 40rpx; } +.button button[size="default"]{ background: #da2b54; color: white; width: 100%; height: 90rpx; font-size: 32rpx; line-height: 90rpx; padding: 0; border-radius: 45rpx; } diff --git a/pages/refund/refund.js b/pages/refund/refund.js new file mode 100644 index 0000000..59505a0 --- /dev/null +++ b/pages/refund/refund.js @@ -0,0 +1,50 @@ +Page({ + + /** + * 页面的初始数据 + */ + data: { + listsArr : [], // 订单列表 + page : { current: 1 }, // 分页信息 + lodingStats : false, // 加载状态 + }, + + /** + * 生命周期函数--监听页面显示 + */ + onShow() { + this.getList() + }, + /** + * 获取列表 + */ + getList(){ + wx.showLoading({ + title: '加载中...', + mask : true + }) + wx.$api.refund.list({ + page : this.data.page.current + }).then(res => { + let { data, page } = res.data + + console.log(data) + + this.setData({ + listsArr : page.current == 1 ? data : this.data.listsArr.concat(data), + page : res.data.page, + lodingStats : !page.has_more + }) + wx.stopPullDownRefresh() + wx.hideLoading() + }) + }, + /** + * 申请售后 + */ + onAftersale(){ + wx.navigateTo({ + url: './aftersale/aftersale', + }) + } +}) \ No newline at end of file diff --git a/pages/refund/refund.json b/pages/refund/refund.json new file mode 100644 index 0000000..076a7d7 --- /dev/null +++ b/pages/refund/refund.json @@ -0,0 +1,4 @@ +{ + "usingComponents": {}, + "navigationBarTitleText": "售后记录" +} \ No newline at end of file diff --git a/pages/refund/refund.wxml b/pages/refund/refund.wxml new file mode 100644 index 0000000..901ab80 --- /dev/null +++ b/pages/refund/refund.wxml @@ -0,0 +1,35 @@ + + + + + + + + {{items.goods_name}} + 金额:{{items.price}} + 数量:{{items.qty}} + + + + {{item.state.text}} + {{item.state.remark}} + + + 售后详情 + + + + + + 加载中... + + 没有更多了~ + + + + + + + 暂无可售后服务订单 + + diff --git a/pages/refund/refund.wxss b/pages/refund/refund.wxss new file mode 100644 index 0000000..e687e5f --- /dev/null +++ b/pages/refund/refund.wxss @@ -0,0 +1,23 @@ + +/* 售后服务列表 */ +.orders{ background: #f7f8f9; min-height: 100vh; padding:10rpx 30rpx 30rpx; box-sizing: border-box; } +.order-item{ background: white; padding: 30rpx; border-radius: 20rpx; margin-top: 20rpx; } + +/* 订单数量 */ +.order-flex{ display: flex; flex-wrap: wrap; } +.order-cover{ background-color: #f7f8f9; width: 140rpx; height: 140rpx; margin-right: 30rpx; border-radius: 10rpx; } +.order-content{ width: calc(100% - 178rpx); } +.order-title{ font-size: 30rpx; font-weight: bold; line-height: 50rpx; height: 50rpx; } +.order-text{ color: gray; font-size: 28rpx; line-height: 45rpx; } +.order-text text{ color: #da2b54; font-weight: bold; } + +/* 订单状态 */ +.order-state { display: flex; flex-direction: row; align-items: center; justify-content: flex-start; box-sizing: border-box; font-size: 26rpx; background: #f7f8f9; margin: 30rpx 0; padding: 20rpx; border-radius: 10rpx; } +.order-des { padding-left: 20rpx; color: #777; } + +/* 订单操作 */ +.order-btns { border-top: solid 1rpx #f9f9f9; display: flex; justify-content: flex-end; padding-top: 20rpx; } +.order-btns .item{ font-size: 28rpx; margin-left: 20rpx; color: #da2b54; line-height: 60rpx; border: solid 1rpx #da2b54; padding: 0 30rpx; border-radius: 30rpx; } + +/* 售后服务 */ +.pages-hint{ padding-bottom: 10vh; } diff --git a/pages/user/index.wxml b/pages/user/index.wxml index 8f9241c..aed7bd7 100644 --- a/pages/user/index.wxml +++ b/pages/user/index.wxml @@ -1,9 +1,12 @@ - + {{userData.user.nickname}} - 生命可以如此精彩~ + + + + 编辑 > @@ -63,17 +66,13 @@ 我的账户 - 我的团队 - - - 邀请码 + + + 售后记录 @@ -83,6 +82,10 @@ 实名认证 + + + 邀请码 + 关于我们 diff --git a/pages/user/index.wxss b/pages/user/index.wxss index 20bbab1..907f26a 100644 --- a/pages/user/index.wxss +++ b/pages/user/index.wxss @@ -40,6 +40,10 @@ page { color: #111111; } +.head-text text{ background: #da2b54; color: white; padding: 0 20rpx; border-radius: 30rpx; line-height: 40rpx; display: inline-block; color: white; font-size: 24rpx; } +.head-name image, +.head-text image{ width: 90rpx; height: 34rpx; vertical-align: middle; } + .head-edit { position: absolute; right: 0; diff --git a/static/icons/add_gray.png b/static/icons/add_gray.png new file mode 100644 index 0000000..2cbbb3b Binary files /dev/null and b/static/icons/add_gray.png differ diff --git a/static/icons/copy_icon.png b/static/icons/copy_icon.png new file mode 100644 index 0000000..45a4cb0 Binary files /dev/null and b/static/icons/copy_icon.png differ diff --git a/static/imgs/tool_08.png b/static/imgs/tool_08.png index 47aa73b..f891595 100644 Binary files a/static/imgs/tool_08.png and b/static/imgs/tool_08.png differ