同意文件

This commit is contained in:
zdx
2020-12-28 17:44:17 +08:00
34 changed files with 1077 additions and 271 deletions

View File

@@ -5,14 +5,17 @@
import {req} from "../request"
const index = () => req({url: "orders"}) //全部订单
const unpaid = () => req({url: "orders/unpaid"}) //待付款
const paid = () => req({url: "orders/paid"}) //待发货
const delive = () => req({url: "orders/delivered"}) //待收货
const refund = () => req({url: "orders/refunds"}) //退款
const cancel = (orderId) => req({url: "orders/cancel/" + orderId}) //取消订单
const orders = (orderId) => req({url: "orders/" + orderId}) //订单-详情
const paymen = (orderId) => req({url: "payments/order/" + orderId}) //订单支付-详情
const index = data => req({url: "orders", data: data}) //全部订单
const unpaid = () => req({url: "orders/unpaid"}) //待付款
const paid = () => req({url: "orders/paid"}) //待发货
const delive = () => req({url: "orders/delivered"}) //待收货
const refund = () => req({url: "orders/refunds"}) //退款
const cancel = (orderId) => req({url: "orders/cancel/" + orderId}) //取消订单
const orders = (orderId) => req({url: "orders/" + orderId}) //订单-详情
const paymen = (orderId) => req({url: "payments/order/" + orderId}) //订单支付-详情
const sign = (orderId) => req({url: "orders/sign/" + orderId}) //订单签收
const goosRefund = (orderId) => req({url: "orders/refund/" + orderId}) //订单退货
const formRefund = (orderId,data) => req({url: "orders/refund/" + orderId, method: "POST", data: data}) //订单退货-提交
export default({
index,
@@ -22,5 +25,9 @@ export default({
refund,
cancel,
orders,
paymen
paymen,
sign,
refund,
goosRefund,
formRefund
})

View File

@@ -6,8 +6,10 @@ import {req} from "../request"
const richText = (key) => req({url: "single/" + key, data: {key: "string"}}) //富文本
const getStatus = (key) => req({url: "ajax/status/" + key}) //状态查询
const storeConfig = (data) => req({url: "wechat/mini/myComponents", data: data}) //企业工具模块配置
export default({
richText,
getStatus
getStatus,
storeConfig
})

1
app.js
View File

@@ -6,7 +6,6 @@
*/
import apis from "./apis/index"
const QQMapWX = require("./lib/qqmap-wx-jssdk.min.js");
App({

107
app.json
View File

@@ -1,35 +1,84 @@
{
"pages": [
"pages/user/companyMine/companyOrder",
"pages/welcome/index",
"pages/company/index",
"pages/company/search/search",
"pages/shortVideo/index",
"pages/richText/richText",
"pages/login/login",
"pages/card/index",
"pages/mall/index",
"pages/live/index",
"pages/ticket/index",
"pages/user/index",
"pages/user/companyMine/myActives/myActives",
"pages/user/companyMine/focusedProject/focusedProject",
"pages/home/index",
"pages/home/companyInfo/companyInfo",
"pages/home/noticeDetail/noticeDetail",
"pages/home/activeDetail/activeDetail",
"pages/home/projectDetail/projectDetail",
"pages/home/projectReturn/projectReturn",
"pages/home/beSureOrder/beSureOrder",
"pages/home/companyMore/companyMore",
"pages/home/projectSuccess/projectSuccess",
"pages/home/activeSuccess/activeSuccess"
"pages": [
"pages/welcome/index",
"pages/company/index",
"pages/company/search/search",
"pages/shortVideo/index",
"pages/richText/richText",
"pages/login/login",
"pages/card/index",
"pages/user/index",
"pages/user/user_coupon/user_coupon",
"pages/user/user_coupon_data/user_coupon_data",
"pages/mall/index",
"pages/mall/mall_address/mall_address",
"pages/mall/mall_address_form/mall_address_form",
"pages/mall/mall_assess/mall_assess",
"pages/mall/mall_assess_form/mall_assess_form",
"pages/mall/mall_cart/mall_cart",
"pages/mall/mall_classify/mall_classify",
"pages/mall/mall_details/mall_details",
"pages/mall/mall_goods/mall_goods",
"pages/mall/mall_order/mall_order",
"pages/mall/mall_order_data/mall_order_data",
"pages/mall/mall_order_submit/mall_order_submit",
"pages/mall/mall_pay/mall_pay",
"pages/mall/mall_search/mall_search",
"pages/mall/mall_video/mall_video",
"pages/mall/mall_refund/mall_refund",
"pages/live/index",
"pages/ticket/goods/goods",
"pages/ticket/index",
"pages/user/companyMine/myActives/myActives",
"pages/user/companyMine/focusedProject/focusedProject",
"pages/user/companyMine/companyOrder",
"pages/home/index",
"pages/home/companyInfo/companyInfo",
"pages/home/noticeDetail/noticeDetail",
"pages/home/activeDetail/activeDetail",
"pages/home/projectDetail/projectDetail",
"pages/home/projectReturn/projectReturn",
"pages/home/beSureOrder/beSureOrder",
"pages/home/companyMore/companyMore",
"pages/home/projectSuccess/projectSuccess",
"pages/home/activeSuccess/activeSuccess"
],
"tabBar": {
"list": [
{
"pagePath": "pages/shortVideo/index",
"text": "视频",
"iconPath": "/static/tabbar/tabbar_icon_00.png",
"selectedIconPath": "/static/tabbar/tabbar_icon_show_00.png"
},
{
"pagePath": "pages/mall/index",
"text": "商城",
"iconPath": "/static/tabbar/tabbar_icon_01.png",
"selectedIconPath": "/static/tabbar/tabbar_icon_show_01.png"
},
{
"pagePath": "pages/ticket/index",
"text": "优惠",
"iconPath": "/static/tabbar/tabbar_icon_02.png",
"selectedIconPath": "/static/tabbar/tabbar_icon_show_02.png"
},
{
"pagePath": "pages/user/index",
"text": "我的",
"iconPath": "/static/tabbar/tabbar_icon_03.png",
"selectedIconPath": "/static/tabbar/tabbar_icon_show_03.png"
}
],
"selectedColor": "#0b0041",
"color": "#4e4f51",
"borderStyle": "white",
"custom": true
},
"window": {
"backgroundTextStyle": "light",
"navigationBarBackgroundColor": "#fff",
"navigationBarTitleText": "",
"navigationBarTextStyle": "black"
"navigationBarBackgroundColor": "#fff",
"navigationBarTitleText": "",
"navigationBarTextStyle": "black"
},
"style": "v2",
"sitemapLocation": "sitemap.json"

View File

@@ -5,11 +5,15 @@
* 碌碌无为枉半生,一朝惊醒万事空。
*/
page{
page{
background-color: #f8f8f8;
font-size: 30rpx;
}
.tabBar{
margin-bottom: calc(48px + env(safe-area-inset-bottom));
}
/*
* 文字截取
*/

50
custom-tab-bar/index.js Normal file
View File

@@ -0,0 +1,50 @@
/**
* Web唐明明
* 匆匆数载恍如梦,岁月迢迢华发增。
* 碌碌无为枉半生,一朝惊醒万事空。
*/
import { mall, video, ticket, user} from "../lib/tabBarData"
Component({
/**
* 组件的初始数据
*/
data: {
selected : 0,
color : "#4e4f51",
selectedColor: "#0b0041",
list : [video, mall, ticket, user]
},
/**
* 生命周期函数
*/
lifetimes:{
// attached: ()=>{
// //获取模版信息
// wx.$api.publics.storeConfig({
// company_id: "17"
// }).then(res=>{
// console.log(res)
// })
// }
},
/**
* 组件的方法列表
*/
methods: {
switchTab(e) {
const data = e.currentTarget.dataset
const url = data.path
wx.switchTab({
url
})
this.setData({
selected: data.index
})
}
}
})

View File

@@ -0,0 +1,3 @@
{
"component": true
}

View File

@@ -0,0 +1,9 @@
<cover-view class="tab-bar">
<cover-view class="tab-bar-border"></cover-view>
<cover-view wx:for="{{list}}" wx:key="index" class="tab-bar-item" data-path="{{item.pagePath}}"
data-index="{{index}}" bindtap="switchTab">
<cover-image src="{{selected === index ? item.selectedIconPath : item.iconPath}}"></cover-image>
<cover-view style="color: {{selected === index ? selectedColor : color}}">{{item.text}}</cover-view>
</cover-view>
</cover-view>

44
custom-tab-bar/index.wxss Normal file
View File

@@ -0,0 +1,44 @@
/**
* Web唐明明
* 匆匆数载恍如梦,岁月迢迢华发增。
* 碌碌无为枉半生,一朝惊醒万事空。
*/
.tab-bar {
position: fixed;
bottom: 0;
left: 0;
right: 0;
height: 48px;
background: white;
display: flex;
padding-bottom: env(safe-area-inset-bottom);
}
.tab-bar-border {
position: absolute;
left: 0;
top: 0;
width: 100%;
height: 1px;
transform: scaleY(0.5);
}
.tab-bar-item {
flex: 1;
text-align: center;
display: flex;
justify-content: center;
align-items: center;
flex-direction: column;
}
.tab-bar-item cover-image {
width: 24px;
height: 24px;
}
.tab-bar-item cover-view {
font-size: 10px;
}

46
lib/tabBarData.js Normal file
View File

@@ -0,0 +1,46 @@
/**
* Web唐明明
* 匆匆数载恍如梦,岁月迢迢华发增。
* 碌碌无为枉半生,一朝惊醒万事空。
*/
// 商城
const mall = {
"pagePath": "pages/mall/index",
"text": "商城",
"iconPath": "/static/tabbar/tabbar_icon_01.png",
"selectedIconPath": "/static/tabbar/tabbar_icon_show_01.png"
}
// 短视频
const video = {
"pagePath": "pages/shortVideo/index",
"text": "首页",
"iconPath": "/static/tabbar/tabbar_icon_00.png",
"selectedIconPath": "/static/tabbar/tabbar_icon_show_00.png"
}
// 优惠券
const ticket = {
"pagePath": "pages/ticket/index",
"text": "优惠",
"iconPath": "/static/tabbar/tabbar_icon_02.png",
"selectedIconPath": "/static/tabbar/tabbar_icon_show_02.png"
}
// 我的
const user = {
"pagePath": "pages/user/index",
"text": "我的",
"iconPath": "/static/tabbar/tabbar_icon_03.png",
"selectedIconPath": "/static/tabbar/tabbar_icon_show_03.png"
}
export {
mall,
video,
ticket,
user
}

View File

@@ -66,22 +66,24 @@ Page({
if(i.is_check){
sellerLength++
if(sellerLength == goodsList.length){
this.setData({
allCheckbox: true
})
goodsList[goodsIndex].is_check = true
// this.setData({
// allCheckbox: true
// })
}
}else{
if(this.data.allCheckbox){
this.setData({
allCheckbox: false
})
}
goodsList[goodsIndex].is_check = false
this.setData({
allCheckbox: false
})
}
}
this.setData({
carArr : goodsList
})
this.allCheckbox('checkbox')
// 获取计算价格
this.totalPrice()
},
@@ -89,25 +91,35 @@ Page({
/**
* 全选
*/
allCheckbox(){
let bagList = this.data.carArr,
allCheckbox(type){
let goodsList = this.data.carArr,
goodsLenght = 0,
allCheckbox = this.data.allCheckbox
if (type == 'checkbox'){
for (let j in goodsList) {
if (goodsList[j].is_check) {
goodsLenght++
if (goodsLenght == goodsList.length) {
allCheckbox = true
}
}
}
}else{
allCheckbox = !allCheckbox
for(let i of bagList){
i.is_check = allCheckbox
for (var i in goodsList){
goodsList[i].is_check = allCheckbox
}
}
this.setData({
paramsCart : params,
allCheckbox : allCheckbox,
carArr : bagList
carArr : goodsList
})
console.log(this.data.paramsCart)
// 获取计算价格
this.totalPrice()
},
@@ -160,6 +172,7 @@ Page({
goodsList = this.data.carArr
for (let i of goodsList){
console.log(goodsList)
if(i.is_check){
bagNumber = bagNumber + i.number
allPrice = allPrice + i.total

View File

@@ -141,10 +141,13 @@
<text>1</text>
</navigator>
</view>
<view class="footer-btn" bindtap="specsTap">
<view class="footer-btn" bindtap="specsTap" wx:if="{{changeSku.prices.stock > 0}}">
<view class="footer-btn-car">加入购物车</view>
<view class="footer-btn-buy">立即购买</view>
</view>
<view class="footer-btn" wx:else>
<view class="footer-btn-stock">暂无库存</view>
</view>
</view>
<!-- 优惠券弹出层 -->
@@ -171,7 +174,9 @@
</view>
<view class="couponEject-list-name">{{item.title}}<text>无门槛免费使用</text></view>
</view>
<view wx:if="{{!item.isHave}}" class="couponEject-list-btn {{item.type_text == '代金券' ? 'couponEject-list-yellow' : ''}}" bindtap="drawTap" data-id="{{item.id}}">
<view wx:if="{{!item.isHave}}"
class="couponEject-list-btn {{item.type_text == '代金券' ? 'couponEject-list-yellow' : ''}}"
bindtap="drawTap" data-id="{{item.id}}">
立即领取
</view>
<view wx:else class="couponEject-list-btn {{item.type_text == '代金券' ? 'couponEject-list-yellow' : ''}}">
@@ -193,7 +198,8 @@
</view>
</view>
<view class="couponDraw-list-text">
<view class="couponDraw-list-name">{{item.title}}<text>{{item.type_text == '免费券' ? '免费券' : item.full}}</text></view>
<view class="couponDraw-list-name">
{{item.title}}<text>{{item.type_text == '免费券' ? '免费券' : item.full}}</text></view>
<view class="couponDraw-list-btn" bindtap="drawTap" data-id="{{item.id}}">立即领取</view>
<view class="couponDraw-list-time">{{item.start_at}} - {{item.end_at}}</view>
</view>
@@ -252,23 +258,24 @@
<!-- 分享弹出 -->
<view class="share-back {{shareShow ? 'active':''}}" bindtap="shareLayEnd"></view>
<view class="share-layer {{shareShow ? 'active':''}}">
<view class="share-title">
<text>分享</text>
<image class="share-close" src="/static/mall_icon/close_icon.png" mode="aspectFill" bindtap="shareLayEnd"></image>
</view>
<view class="share-cont">
<button class="share-list share-list-after" hover-class="none" open-type="share">
<view class="share-list-img">
<image src="/static/mall_icon/share_wx.png" mode="aspectFill"></image>
</view>
<view class="share-list-text">微信好友</view>
</button>
<button class="share-list" hover-class="none" bindtap="canvasCode">
<view class="share-list-img">
<image src="/static/mall_icon/share_pyq.png" mode="aspectFill"></image>
</view>
<view class="share-list-text">海报分享</view>
</button>
</view>
<view class="share-tips">好物推荐,和大家一起分享你发现的好物</view>
<view class="share-title">
<text>分享</text>
<image class="share-close" src="/static/mall_icon/close_icon.png" mode="aspectFill" bindtap="shareLayEnd">
</image>
</view>
<view class="share-cont">
<button class="share-list share-list-after" hover-class="none" open-type="share">
<view class="share-list-img">
<image src="/static/mall_icon/share_wx.png" mode="aspectFill"></image>
</view>
<view class="share-list-text">微信好友</view>
</button>
<button class="share-list" hover-class="none" bindtap="canvasCode">
<view class="share-list-img">
<image src="/static/mall_icon/share_pyq.png" mode="aspectFill"></image>
</view>
<view class="share-list-text">海报分享</view>
</button>
</view>
<view class="share-tips">好物推荐,和大家一起分享你发现的好物</view>
</view>

View File

@@ -440,6 +440,12 @@ view.footer-btn-buy {
background-color: #f97b35;
}
.footer-btn-stock {
width: 100% !important;
background-color: #999;
color: #eee;
}
/* 优惠券弹出层 */
.couponBack,
.specsBack {

View File

@@ -10,8 +10,10 @@ Page({
* 页面的初始数据
*/
data: {
stateType : 'all', //订单类型
orderArr : [], //订单列表
stateType : 'index', //订单类型
orderArr : [], //订单列表
page : {}, //分页信息
lodingStats : false //加载状态
},
/**
@@ -47,41 +49,22 @@ Page({
/**
* 订单列表
*/
orderInfo(){
orderInfo(page){
let stateType = this.data.stateType
if(stateType == 'all') {
wx.$api.order.index().then(res=>{
this.setData({
orderArr : res.data
})
wx.$api.order[stateType]({
page : page || ''
}).then(res=>{
console.log(res)
let listArr = this.data.orderArr,
newData = []
if(page == 1 || page == undefined) listArr = []
newData = listArr.concat(res.data)
this.setData({
orderArr : newData,
page : res.page,
lodingStats : false
})
} else if(stateType == 'unpaid') {
wx.$api.order.unpaid().then(res=>{
this.setData({
orderArr : res.data
})
})
} else if(stateType == 'paid') {
wx.$api.order.paid().then(res=>{
this.setData({
orderArr : res.data
})
})
} else if(stateType == 'delive') {
wx.$api.order.delive().then(res=>{
this.setData({
orderArr : res.data
})
})
} else if(stateType == 'refunds') {
wx.$api.order.refund().then(res=>{
this.setData({
orderArr : res.data
})
})
}
})
},
/**
@@ -100,9 +83,44 @@ Page({
*/
orderDelete(e) {
let orderId = e.currentTarget.dataset.orderid
wx.$api.orders.cancel(orderId).then(res=>{
wx.$api.order.cancel(orderId).then(res=>{
// 获取列表
this.orderInfo()
})
},
/**
* 签收订单
*/
orderSign(e) {
let orderId = e.currentTarget.dataset.orderid
wx.$api.order.sign(orderId).then(res=>{
// 获取列表
this.orderInfo()
})
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh() {
// 获取订单列表
this.orderInfo()
},
/**
* 上拉加载
*/
onReachBottom(){
this.setData({
lodingStats: true
})
let pageNumber = this.data.page.current
if(this.data.page.has_more){
pageNumber++
// 获取订单列表
this.orderInfo(pageNumber)
}
}
})

View File

@@ -1,4 +1,5 @@
{
"usingComponents" : {},
"navigationBarTitleText" : "订单列表"
"usingComponents" : {},
"navigationBarTitleText" : "订单列表",
"enablePullDownRefresh" : true
}

View File

@@ -1,6 +1,6 @@
<!-- 订单tab -->
<view class="order-tab">
<view class="order-tab-item {{stateType == 'all' ? 'active':''}}" data-state="all" bindtap="orderTab">
<view class="order-tab-item {{stateType == 'index' ? 'active':''}}" data-state="index" bindtap="orderTab">
全部
</view>
<view class="order-tab-item {{stateType == 'unpaid' ? 'active':''}}" data-state="unpaid" bindtap="orderTab">
@@ -12,8 +12,9 @@
<view class="order-tab-item {{stateType == 'delive' ? 'active':''}}" data-state="delive" bindtap="orderTab">
待收货
</view>
<view class="order-tab-item {{stateType == 'refunds' ? 'active':''}}" data-state="refunds" bindtap="orderTab">
已完成 <!-- 退款 -->
<view class="order-tab-item {{stateType == 'refund' ? 'active':''}}" data-state="refund" bindtap="orderTab">
申请退款
<!-- 退款 -->
</view>
</view>
<view class="order-content" wx:if="{{orderArr != ''}}">
@@ -22,7 +23,7 @@
<view class="order-company-name">
<image class="order-logo" src="/static/mall_icon/mallDetails_user.png"></image>
{{goods.orderid}}
<image class="order-arrow" src="/static/mall_icon/mall_arrow.png"></image>
<!-- <image class="order-arrow" src="/static/mall_icon/mall_arrow.png"></image> -->
</view>
<view class="order-company-state">
{{goods.state_text}}
@@ -39,13 +40,27 @@
</view>
</view>
<view class="order-footer">
<view class="order-footer-btn order-footer-btn-back" wx:if="{{goods.canPay == true}}" data-orderid="{{goods.orderid}}"
bindtap="orderPay">立即支付</view>
<view class="order-footer-btn order-footer-btn-back" wx:if="{{goods.canPay == true}}"
data-orderid="{{goods.orderid}}" bindtap="orderPay">立即支付</view>
<view class="order-footer-btn" wx:if="{{goods.canCancel == true}}" data-orderid="{{goods.orderid}}"
bindtap="orderDelete">取消订单</view>
<navigator hover-class="none" url="/pages/mall/mall_order_data/mall_order_data?orderId={{goods.orderid}}" class="order-footer-btn">订单详情</navigator>
<view class="order-footer-btn" wx:if="{{goods.canSign == true}}"
data-orderid="{{goods.orderid}}" bindtap="orderSign">
立即签收
</view>
<navigator class="order-footer-btn" wx:if="{{goods.canRefund == true}}" url="/pages/mall/mall_refund/mall_refund?orderId={{goods.orderid}}">申请退款</navigator>
<navigator hover-class="none" url="/pages/mall/mall_order_data/mall_order_data?orderId={{goods.orderid}}"
class="order-footer-btn">订单详情</navigator>
</view>
</view>
<view class="pagesLoding" wx:if="{{lodingStats}}">
<block wx:if="{{page.has_more}}">
<image class="pagesLoding-icon" src="/static/icons/loding.gif" mode="widthFix"></image>加载中...
</block>
<block wx:else>
没有更多了~
</block>
</view>
</view>
<view wx:else class="pack-center pages-hint">

View File

@@ -156,3 +156,23 @@ page {
border-color: #eb532a;
color: #eb532a;
}
/*
* 页面信息提醒
*/
.pages-loding {
text-align: center;
color: #747788;
font-size: 28rpx;
background: white;
}
.pages-loding image {
width: 38rpx;
height: 38rpx;
}
.pagesLoding {
text-align: center;
}

View File

@@ -18,7 +18,6 @@ Page({
* 生命周期函数--监听页面加载
*/
onLoad (options) {
console.log(options.orderId)
this.orderData(options.orderId)
},
@@ -52,6 +51,9 @@ Page({
})
},
/**
* 返回订单
*/
orderRun() {
wx.navigateBack({
delta: 1,
@@ -80,4 +82,16 @@ Page({
})
})
},
/**
* 签收订单
*/
orderSign(e) {
let orderId = e.currentTarget.dataset.orderid
wx.$api.order.sign(orderId).then(res=>{
wx.redirectTo({
url: '/pages/mall/mall_order/mall_order',
})
})
},
})

View File

@@ -18,7 +18,7 @@
<view class="orderGoods-company">
<image class="orderGoods-logo" src="/static/mall_icon/mallDetails_user.png"></image>
{{orderData.type_text}}
<image class="orderGoods-arrow" src="/static/mall_icon/mall_arrow.png"></image>
<!-- <image class="orderGoods-arrow" src="/static/mall_icon/mall_arrow.png"></image> -->
</view>
<view class="orderGoods-goods-li" wx:for="{{orderData.items}}" wx:key="items">
<image class="orderGoods-img" src="{{item.cover}}" mode="aspectFill"></image>
@@ -58,14 +58,14 @@
<view class="order-total-name">运费</view>
¥{{orderData.freight}}
</view>
<!-- <view class="order-total-li">
<view class="order-total-name">优惠</view>
-¥10.00
</view> -->
<view class="order-total-li">
<view class="order-total-name">需付款</view>
<view class="order-total-name">优惠</view>
¥{{orderData.coupons_all_price}}
</view>
<view class="order-total-li">
<view class="order-total-name">实际付款</view>
<view class="coupon-picker-red">
¥{{orderData.amount}}
¥{{orderData.total}}
</view>
</view>
</view>
@@ -82,7 +82,11 @@
<view class="orderFooter-btn orderFooter-btn-back" wx:if="{{orderData.canPay == true}}" data-orderid="{{orderData.orderid}}" bindtap="orderPay">
立即支付
</view>
<!-- <navigator class="orderFooter-btn orderFooter-btn-back" url="">申请退货</navigator> -->
<view class="orderFooter-btn" wx:if="{{orderData.canSign == true}}" data-orderid="{{orderData.orderid}}" bindtap="orderSign">
立即签收
</view>
<navigator class="orderFooter-btn" wx:if="{{orderData.canRefund == true}}" url="/pages/mall/mall_refund/mall_refund?orderId={{orderData.orderid}}">申请退款</navigator>
<!-- <view class="orderFooter-btn" bindtap="logisticsShow">查看物流</view> -->
<view class="orderFooter-btn" bindtap="orderRun">返回订单</view>
</view>

View File

@@ -107,7 +107,43 @@ Page({
remark : this.data.remark,
address_id : this.data.addressDel.address_id
}).then(res=>{
console.log(res)
let trade_no = res.trade_no
// 获取code
wx.login({
success: res=>{
wx.$api.mall.wechat({
code : res.code,
trade_no : trade_no
}).then(res=>{
let payInfo = JSON.parse(res)
wx.requestPayment({
timeStamp: payInfo.timeStamp,
nonceStr : payInfo.nonceStr,
package : payInfo.package,
paySign : payInfo.paySign,
signType : payInfo.signType,
success : res=>{
if(res.errMsg == "requestPayment:ok"){
wx.showToast({
title: '支付成功',
icon : 'success'
})
setTimeout(()=>{
wx.reLaunch({
url: '/pages/mall/mall_order/mall_order'
})
},2000)
}
},
fail : res=>{
wx.reLaunch({
url: '/pages/mall/mall_order/mall_order?stateType=unpaid'
})
}
})
})
}
})
})
} else {
wx.$api.mall.orderBuy({
@@ -117,35 +153,43 @@ Page({
remark : this.data.remark,
address_id : this.data.addressDel.address_id
}).then(res=>{
wx.$api.mall.wechat({
trade_no : res.trade_no
}).then(res=>{
let payInfo = JSON.parse(res)
wx.requestPayment({
timeStamp: payInfo.timeStamp,
nonceStr : payInfo.nonceStr,
package : payInfo.package,
paySign : payInfo.paySign,
signType : payInfo.signType,
success : res=>{
if(res.errMsg == "requestPayment:ok"){
wx.showToast({
title: '支付成功',
icon : 'success'
})
setTimeout(()=>{
let trade_no = res.trade_no
// 获取code
wx.login({
success: res=>{
wx.$api.mall.wechat({
code : res.code,
trade_no : trade_no
}).then(res=>{
let payInfo = JSON.parse(res)
wx.requestPayment({
timeStamp: payInfo.timeStamp,
nonceStr : payInfo.nonceStr,
package : payInfo.package,
paySign : payInfo.paySign,
signType : payInfo.signType,
success : res=>{
if(res.errMsg == "requestPayment:ok"){
wx.showToast({
title: '支付成功',
icon : 'success'
})
setTimeout(()=>{
wx.reLaunch({
url: '/pages/mall/mall_order/mall_order'
})
},2000)
}
},
fail : res=>{
wx.reLaunch({
url: '/pages/mall/mall_order/mall_order'
url: '/pages/mall/mall_order/mall_order?stateType=unpaid'
})
},2000)
}
},
fail : res=>{
wx.reLaunch({
url: '/pages/mall/mall_order/mall_order?stateType=unpaid'
}
})
}
})
})
}
})
})
}

View File

@@ -36,36 +36,41 @@ Page({
* 订单支付
*/
payment() {
wx.$api.mall.wechat({
trade_no : this.data.orderData.trade_no
}).then(res=>{
console.log(res)
let payInfo = JSON.parse(res)
wx.requestPayment({
timeStamp: payInfo.timeStamp,
nonceStr : payInfo.nonceStr,
package : payInfo.package,
paySign : payInfo.paySign,
signType : payInfo.signType,
success : res=>{
if(res.errMsg == "requestPayment:ok"){
wx.showToast({
title: '支付成功',
icon : 'success'
})
setTimeout(()=>{
// 获取code
wx.login({
success: res=>{
wx.$api.mall.wechat({
code : res.code,
trade_no : this.data.orderData.trade_no
}).then(res=>{
let payInfo = JSON.parse(res)
wx.requestPayment({
timeStamp: payInfo.timeStamp,
nonceStr : payInfo.nonceStr,
package : payInfo.package,
paySign : payInfo.paySign,
signType : payInfo.signType,
success : res=>{
if(res.errMsg == "requestPayment:ok"){
wx.showToast({
title: '支付成功',
icon : 'success'
})
setTimeout(()=>{
wx.reLaunch({
url: '/pages/mall/mall_order/mall_order?stateType=all'
})
},2000)
}
},
fail : res=>{
wx.reLaunch({
url: '/pages/mall/mall_order/mall_order?stateType=all'
url: '/pages/mall/mall_order/mall_order?stateType=unpaid'
})
},2000)
}
},
fail : res=>{
wx.reLaunch({
url: '/pages/mall/mall_order/mall_order?stateType=unpaid'
}
})
}
})
})
}
})
}
})

View File

@@ -0,0 +1,131 @@
/*
* 手太欠
* 企获客商城
*/
const app = getApp()
Page({
/**
* 页面的初始数据
*/
data: {
orderId : '', //商品id
orderData : '', //退货商品
refundTitle : [], //退货理由
refundType : '', //退货类型
refundIndex : 0, //退货理由index
title : '', //退款原因
typeIndex : 0, //退货类型index
imgs : [], //图片页面显示
paths : [], //图片上传服务器
},
/**
* 生命周期函数--监听页面加载
*/
onLoad(options) {
this.setData({
orderId: options.orderId
})
wx.$api.order.goosRefund(options.orderId).then(res => {
console.log(res)
this.setData({
orderData : res.order,
refundTitle : res.refund_title,
refundType : res.refund_type
})
})
},
/**
*选择退款原因
*/
refundChange(e) {
this.setData({
refundIndex : e.detail.value
})
},
/**
* 上传图片
*/
formUploadFile(){
let count = 9 - this.data.imgs.length
wx.chooseImage({
count : count,
success : res=>{
// 上传图片
if (res.tempFilePaths){
let pathArr = res.tempFilePaths
wx.showLoading({
title: '上传中',
})
for (let i = 0; i < pathArr.length; i++){
wx.$api.file.uploadImg(pathArr[i], {}).then(res=>{
let imgArr = this.data.imgs,
pathArr = this.data.paths
imgArr.push(res.showpath)
pathArr.push(res.path)
this.setData({
imgs : imgArr,
paths: pathArr
})
})
if (i == pathArr.length - 1) {
wx.hideLoading()
}
}
}else{
wx.showToast({
title: '上传图片失败',
icon : 'none'
})
}
}
})
},
/**
* 删除图片
*/
removeImg(e){
let imgArr = this.data.imgs,
pathArr = this.data.paths,
index = e.currentTarget.dataset.index
imgArr.splice(index, 1)
pathArr.splice(index, 1)
this.setData({
imgs : imgArr,
paths : pathArr
})
},
/**
* 申请退货
*/
refundSign(e) {
let refundTitle = this.data.refundTitle,
refundIndex = this.data.refundIndex,
remark = e.detail.value.remark,
paths = this.data.paths
console.log(paths)
wx.$api.order.formRefund(this.data.orderId,{
title : refundTitle[refundIndex].title,
remark : remark,
type : 1,
pictures: paths
}).then(res => {
wx.redirectTo({
url: '/pages/mall/mall_order/mall_order',
})
})
},
})

View File

@@ -0,0 +1,4 @@
{
"usingComponents" : {},
"navigationBarTitleText": "退款"
}

View File

@@ -0,0 +1,87 @@
<form bindsubmit="refundSign">
<view class="refund-content">
<!-- 退货产品 -->
<view class="refund-goods">
<view class="refund-good" wx:for="{{orderData.items}}" wx:key="index">
<image class="refund-good-cover" src="{{item.cover}}"></image>
<view class="refund-good-info">
<view class="refund-good-title nowrap">{{item.title}}</view>
<view class="refund-good-value nowrap">{{item.value}}</view>
<view class="refund-good-price nowrap">单价:<text>{{item.price}}</text> X {{item.qty}}</view>
</view>
</view>
</view>
<!-- 产品信息 -->
<view class="refund-statistical">
<view class="refund-statistical-item">
商品总金额
<label class="refund-statistical-item-label">¥{{orderData.amount || '0.00'}}</label>
</view>
<view class="refund-statistical-item">
运费
<label class="refund-statistical-item-label">¥{{orderData.freight || '0.00'}}</label>
</view>
<view class="refund-statistical-item">
优惠券抵扣
<label class="refund-statistical-item-label">¥{{orderData.coupons_all_price || '0.00'}}</label>
</view>
<view class="refund-statistical-item">
实际支付金额
<label class="refund-statistical-item-label">¥{{orderData.total || '0'}}</label>
</view>
</view>
<!-- 退款原因 -->
<view class="refund-statistical refund-info">
<view class="refund-statistical-item">
退款金额
<label
class="refund-statistical-item-label refund-info-item-label">¥{{orderData.total || '0.00'}}</label>
</view>
</view>
<view class="refund-statistical refund-info">
<view class="refund-statistical-item refundTitle-item">
选择退款原因
<picker bindchange="refundChange" range-key="remark" value="{{refundIndex}}" range="{{refundTitle}}">
<view class="picker">
{{refundTitle[refundIndex].remark}}
</view>
</picker>
</view>
</view>
<view class="refund-statistical refund-info">
<view class="refund-statistical-item">
退款类型
<label class="refund-statistical-item-label">{{refundType[1]}}</label>
</view>
</view>
<view class="refund-statistical refund-info">
<view class="refund-info-item-text">
退款原因
<textarea class="refund-info-item-textarea" placeholder="输入退款原因" name="remark"></textarea>
</view>
</view>
<view class="refund-statistical refund-info">
<view class="refund-info-item-text">
添加图片
<view class="issue-info-img">
<view class="issue-info-img-itme issue-info-img-tag" wx:for="{{imgs}}" wx:key="imgs">
<image class="form-img" mode="aspectFill" src="{{item}}"></image>
<text class="issue-info-img-remove" data-index="{{index}}" bindtap="removeImg">×</text>
</view>
<view class="issue-info-img-itme" wx:if="{{imgs.length < 9}}">
<view class="issue-info-img-add" bindtap="formUploadFile">
<image src="/static/images/images_add.png" mode="widthFix"></image>
<view>添加图片</view>
</view>
</view>
</view>
</view>
</view>
</view>
<view class="refund-footer">
<button class="refund-footer-btn" size="mini" form-type="submit">提交</button>
</view>
</form>

View File

@@ -0,0 +1,223 @@
.refund-content {
padding-bottom: 190rpx;
}
.refund-goods {
background-color: white;
}
.refund-good {
position: relative;
padding: 15rpx 30rpx;
min-height: 198rpx;
}
.refund-good::before {
position: absolute;
left: 30rpx;
right: 0;
height: 1rpx;
bottom: 1rpx;
content: " ";
background-color: #f5f5f5;
z-index: 9;
}
.refund-good-cover {
height: 178rpx;
width: 178rpx;
background: #f6f6f6;
position: absolute;
left: 30rpx;
top: 15rpx;
}
.refund-good-info {
padding-left: 198rpx;
}
.refund-good-title {
font-weight: bold;
margin: 15rpx 0;
font-size: 32rpx;
}
.refund-good-value {
line-height: 40rpx;
font-size: 28rpx;
color: gray;
}
.refund-good-price {
line-height: 40rpx;
color: gray;
font-size: 28rpx;
padding-top: 10rpx;
}
.refund-good-price text {
color: red;
font-weight: bold;
font-size: 32rpx;
}
/* 统计信息 */
.refundTitle-item {
display: flex;
}
.refundTitle-item picker {
flex: 1;
text-align: right;
color: #000;
}
.refund-statistical {
background: white;
}
.refund-statistical-item {
position: relative;
padding: 0 30rpx;
line-height: 90rpx;
color: gray;
}
.refund-statistical-item::before {
position: absolute;
left: 30rpx;
right: 0;
height: 1rpx;
bottom: 1rpx;
content: " ";
background-color: #f5f5f5;
z-index: 9;
}
.refund-statistical-item:last-child::before {
display: none;
}
.refund-statistical-item-label {
position: absolute;
right: 30rpx;
top: 0;
width: 300rpx;
text-align: right;
color: #000;
}
/* 退款 */
.refund-info {
margin-top: 20rpx;
}
.refund-info-item-label {
color: red;
font-weight: bold;
}
.refund-info-item-text {
padding: 30rpx 30rpx 30rpx 30rpx;
}
.refund-info-item-textarea {
width: 100%;
height: 150rpx;
margin-top: 20rpx;
}
/* footer */
.refund-footer {
background: white;
position: fixed;
bottom: 0;
left: 0;
right: 0;
padding: 20rpx 30rpx 30rpx 30rpx;
width: 100%;
box-sizing: border-box;
z-index: 9999;
}
.refund-footer-btn[size="mini"] {
background: #eb532a;
width: 100%;
height: 90rpx;
line-height: 90rpx;
color: white;
font-size: 32rpx;
}
/* 多图上传 */
.issue-info-img {
padding: 20rpx 0;
display: flex;
flex-wrap: wrap;
margin: 0 -10rpx;
}
.issue-info-img-itme {
width: calc(33.33% - 20rpx);
padding-top: calc(33.33% - 20rpx);
box-sizing: border-box;
position: relative;
margin: 10rpx;
}
.issue-info-img-itme>image {
width: 100%;
height: calc(100% - 20rpx);
height: -webkit-calc(100% - 20rpx);
position: absolute;
top: 10rpx;
left: 0;
}
.issue-info-img-remove {
position: absolute;
z-index: 5;
top: -5rpx;
right: -6rpx;
height: 36rpx;
width: 36rpx;
text-align: center;
line-height: 34rpx;
background: #ec202c;
color: white;
font-size: 28rpx;
font-weight: bold;
border-radius: 50%;
}
.issue-info-img-add {
position: absolute;
top: 10rpx;
bottom: 10rpx;
width: 100%;
left: 0;
text-align: center;
background: #f3f4f8;
color: #8d8d8d;
font-size: 24rpx;
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-box-pack: center;
}
.issue-info-img-add image {
width: 100rpx;
height: 100rpx;
vertical-align: bottom;
margin-bottom: 15rpx;
margin-top: 15rpx;
}
.issue-info-img-hint {
line-height: 60rpx;
color: #666;
font-size: 26rpx;
padding: 0 30rpx 15rpx 30rpx;
}

View File

@@ -1,90 +1,91 @@
{
"description": "项目配置文件",
"packOptions": {
"ignore": []
},
"setting": {
"urlCheck": true,
"es6": true,
"enhance": false,
"postcss": true,
"preloadBackgroundData": false,
"minified": true,
"newFeature": false,
"coverView": true,
"nodeModules": true,
"autoAudits": false,
"showShadowRootInWxmlPanel": true,
"scopeDataCheck": false,
"uglifyFileName": false,
"checkInvalidKey": true,
"checkSiteMap": true,
"uploadWithSourceMap": true,
"compileHotReLoad": false,
"useMultiFrameRuntime": false,
"useApiHook": true,
"babelSetting": {
"ignore": [],
"disablePlugins": [],
"outputPath": ""
"description": "项目配置文件",
"packOptions": {
"ignore": []
},
"enableEngineNative": false,
"bundle": false,
"useIsolateContext": true,
"useCompilerModule": true,
"userConfirmedUseCompilerModuleSwitch": false,
"userConfirmedBundleSwitch": false,
"packNpmManually": false,
"packNpmRelationList": [],
"minifyWXSS": true
},
"compileType": "miniprogram",
"libVersion": "2.14.0",
"appid": "wxd931d03dfe955254",
"projectname": "%E5%88%9B%E5%BB%BA%E4%B8%80%E4%B8%AA%E5%B0%8F%E7%A8%8B%E5%BA%8F",
"debugOptions": {
"hidedInDevtools": []
},
"scripts": {},
"isGameTourist": false,
"simulatorType": "wechat",
"simulatorPluginLibVersion": {},
"condition": {
"plugin": {
"list": []
},
"game": {
"list": []
},
"gamePlugin": {
"list": []
},
"miniprogram": {
"list": [
{
"name": "登录",
"pathName": "pages/login/login",
"query": "",
"scene": null
"setting": {
"urlCheck": true,
"es6": true,
"enhance": false,
"postcss": true,
"preloadBackgroundData": false,
"minified": true,
"newFeature": false,
"coverView": true,
"nodeModules": true,
"autoAudits": false,
"showShadowRootInWxmlPanel": true,
"scopeDataCheck": false,
"uglifyFileName": false,
"checkInvalidKey": true,
"checkSiteMap": true,
"uploadWithSourceMap": true,
"compileHotReLoad": false,
"useMultiFrameRuntime": false,
"useApiHook": true,
"babelSetting": {
"ignore": [],
"disablePlugins": [],
"outputPath": ""
},
{
"name": "搜索",
"pathName": "pages/company/search/search",
"query": "",
"scene": null
"enableEngineNative": false,
"bundle": false,
"useIsolateContext": true,
"useCompilerModule": true,
"userConfirmedUseCompilerModuleSwitch": false,
"userConfirmedBundleSwitch": false,
"packNpmManually": false,
"packNpmRelationList": [],
"minifyWXSS": true
},
"compileType": "miniprogram",
"libVersion": "2.14.0",
"appid": "wxd931d03dfe955254",
"projectname": "%E5%88%9B%E5%BB%BA%E4%B8%80%E4%B8%AA%E5%B0%8F%E7%A8%8B%E5%BA%8F",
"debugOptions": {
"hidedInDevtools": []
},
"scripts": {},
"isGameTourist": false,
"simulatorType": "wechat",
"simulatorPluginLibVersion": {},
"condition": {
"plugin": {
"list": []
},
{
"name": "商城",
"pathName": "pages/mall/index",
"query": "",
"scene": null
"game": {
"list": []
},
{
"name": "pages/home/beSureOrder/beSureOrder",
"pathName": "pages/home/beSureOrder/beSureOrder",
"scene": null
"gamePlugin": {
"list": []
},
"miniprogram": {
"list": [
{
"name": "登录",
"pathName": "pages/login/login",
"query": "",
"scene": null
},
{
"name": "搜索",
"pathName": "pages/company/search/search",
"query": "",
"scene": null
},
{
"name": "商城",
"pathName": "pages/mall/index",
"query": "",
"scene": null
},
{
"name": "pages/user/index",
"pathName": "pages/user/index",
"query": "",
"scene": null
}
]
}
]
}
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 415 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 791 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 679 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 856 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 423 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 750 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 672 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 879 B