zmr #56

Merged
zhaomingrui merged 6 commits from zmr into master 2020-07-13 03:27:16 +00:00
19 changed files with 466 additions and 183 deletions
Showing only changes of commit 2479d587cd - Show all commits

View File

@ -44,9 +44,9 @@ unescapeHTML(temp){}
/** /**
* 上传文件(只能单文件上传) * 上传文件(只能单文件上传)
* @param { String } url 服务器 url * @param { String } url 服务器 url
* @param { String } name 上传类型 goods-商品图片 avatar-用户头像 video-视频 store_logo-店铺logo store_banner-店铺banner store_avatar-店铺头像
* @param { String } filePath 要上传文件资源的路径 * @param { String } filePath 要上传文件资源的路径
* @param { String } type 上传文件验证类型 默认: img 可选: video
* @return { object } promise 对象 resolve 返回文件服务器地址 reject 返回错误信息 * @return { object } promise 对象 resolve 返回文件服务器地址 reject 返回错误信息
*/ */
uploadFile({ url, filePath, type = 'img' } = {}) {} uploadFile({ url, name, filePath }) {}
``` ```

View File

@ -230,14 +230,15 @@ export default {
}); });
}, },
// 订单列表 // 订单列表
getOrderList({ page, type }) { getOrderList({ page, type, refund_state }) {
let params = { page: page }; let params = { page: page };
if(type >= 0) Object.assign(params, {state_type: type}) if(type >= 0 || typeof type == 'string') Object.assign(params, {state_type: type});
return vm.$u.post('Goods/orderList', params); if(refund_state) Object.assign(params, {refund_state: refund_state});
return vm.$u.post('Order/orderList', params);
}, },
// 订单详情 // 订单详情
getOrderInfo({ order_id }) { getOrderInfo({ order_id }) {
return vm.$u.post('Goods/orderInfo', { order_id: order_id }); return vm.$u.post('Order/orderInfo', { order_id: order_id });
}, },
// 查询订单的评价信息 // 查询订单的评价信息
getOrderEvaluateInfo({ id }) { getOrderEvaluateInfo({ id }) {
@ -245,23 +246,15 @@ export default {
}, },
// 订单评价/修改评价 // 订单评价/修改评价
updateOrderEvaluate({ id, content, scores_one, scores_two, scores_three, file }) { updateOrderEvaluate({ id, content, scores_one, scores_two, scores_three, file }) {
return vm.$u.post('Order/orderEvaluate', { let params = {
id: id, id: id,
content: content, content: content,
scores_one: scores_one, scores_one: scores_one,
scores_two: scores_two, scores_two: scores_two,
scores_three: scores_three, scores_three: scores_three,
file: file,
});
},
// 上传图片视频
uploadfile({ file }) {
const params = {
file: file
} }
console.log(params); if(file) Object.assign(params, { file: file });
return vm.$u.post('Order/orderEvaluate', params);
return vm.$u.post('Upload/uploadfile', params);
}, },
// 信息模块 // 信息模块
messageIndex({ }) { messageIndex({ }) {

View File

@ -5,10 +5,10 @@
<image :src="order.extend_store.store_avatar"></image> <image :src="order.extend_store.store_avatar"></image>
<view class="store-name">{{ order.extend_store.store_name }}</view> <view class="store-name">{{ order.extend_store.store_name }}</view>
</view> </view>
<view class="order-status">{{ order.order_state | viewState }}</view> <view class="order-status">{{ state }}</view>
</view> </view>
<view class="goods-info"> <view class="goods-info">
<view class="goods-item" @click="toDetailsPage" v-for="goods in order.extend_order_goods" :key="goods.goods_id"> <view class="goods-item" @click="toOtherPage('Details')" v-for="goods in order.extend_order_goods" :key="goods.goods_id">
<image :src="goods.goods_image"></image> <image :src="goods.goods_image"></image>
<view class="goods-text"> <view class="goods-text">
<view class="goods-name u-line-2">{{ goods.goods_name }}</view> <view class="goods-name u-line-2">{{ goods.goods_name }}</view>
@ -17,72 +17,65 @@
<view class="goods-price u-line-1" v-if="order.order_state == 20 || order.order_state == 40">总价99.00实付款99</view> <view class="goods-price u-line-1" v-if="order.order_state == 20 || order.order_state == 40">总价99.00实付款99</view>
<view class="goods-date" v-if="order.order_state == 20 || order.order_state == 40"> <view class="goods-date" v-if="order.order_state == 20 || order.order_state == 40">
<image src="@/pageE/static/mine/26.png"></image> <image src="@/pageE/static/mine/26.png"></image>
<view>2020.05.17</view> <view>{{ order.add_time | date }}</view>
</view> </view>
</view> </view>
</view> </view>
</view> </view>
<view class="order-btn" v-if="[10, 30, 20, 40].indexOf(order.order_state) >= 0"> <view class="order-btn" v-if="[10, 30, 20, 40].indexOf(order.order_state) >= 0">
<view class="logistics" v-if="order.order_state == 30" @click="toLogistics">查看物流</view> <view class="logistics" v-if="order.order_state == 30" @click="toOtherPage('Logistics')">查看物流</view>
<view class="comment" v-if="order.order_state == 20" @click="toComment">立即评价</view> <view class="comment" v-if="order.order_state == 40 && order.evaluation_state == 0" @click="toOtherPage('Comment')">立即评价</view>
<view class="calcel" v-if="order.order_state == 10">取消支付</view>
<view class="payment" v-if="order.order_state == 10">立即支付</view> <view class="payment" v-if="order.order_state == 10">立即支付</view>
<view class="service" v-if="order.order_state == 40">联系官方客服</view> <view class="service" v-if="order.order_state == 20">联系官方客服</view>
<view class="submit" v-if="order.order_state == 40">提交官方审核</view> <view class="submit" v-if="order.order_state == 20">提交官方审核</view>
</view> </view>
</view> </view>
</template> </template>
<script> <script>
export default { export default {
data() { data() {
return {} return {
state: '', // 1: 2: 3: 4: 5: 退 6:
}
}, },
props: { props: {
order: Object order: Object
}, },
filters: { created() {
viewState(value) { this.viewState();
},
methods: {
viewState() {
let state; let state;
switch (value) { switch (this.order.order_state) {
case 10: case 0: //
state = '待支付';
break;
case 0:
state = '已取消'; state = '已取消';
break; break;
case 30: case 10: //
state = '待支付';
break;
case 20: //
state = '交易成功';
break;
case 30: //
state = '待收货'; state = '待收货';
break; break;
case -1: case 40: //
state = '试穿试送'; if(this.order.evaluation_state == 0) state = '待评价';
break; else state = '交易成功'
case 20:
state = '待评价';
break;
case 40:
state = '售后';
break; break;
default: default:
break; break;
} }
return state; if(this.order.refund_state) state = '已退款';
this.state = state;
}, },
}, toOtherPage(url) {
methods: { this.$u.route('/pageE/order/' + url, {
toDetailsPage() { oid: this.order.order_id,
uni.navigateTo({
url: '/pageE/order/Details?order.order_state=' + this.order.order_state
}); });
}, },
toLogistics() {
uni.navigateTo({
url: '/pageE/order/Logistics'
});
},
toComment() {
uni.navigateTo({
url: '/pageE/order/Comment'
});
}
}, },
}; };
</script> </script>
@ -184,6 +177,9 @@ export default {
.logistics, .comment, .payment { .logistics, .comment, .payment {
@include btn-class($width: 160rpx, $color: rgba(255,119,15,1)); @include btn-class($width: 160rpx, $color: rgba(255,119,15,1));
} }
.calcel {
@include btn-class($width: 160rpx, $color: rgba(155,153,153,1));
}
.service { .service {
@include btn-class($width: 216rpx, $color: rgba(155,153,153,1)); @include btn-class($width: 216rpx, $color: rgba(155,153,153,1));
} }

View File

@ -6,7 +6,9 @@
'font-size':'32rpx', 'font-size':'32rpx',
'color':'#FF780F', 'color':'#FF780F',
'overflow':'unset' 'overflow':'unset'
}"></u-search> }"
@search="search"
></u-search>
</view> </view>
<view class="list"> <view class="list">
<view class="title">搜索发现</view> <view class="title">搜索发现</view>
@ -23,6 +25,18 @@ export default {
return{ return{
keyword:"" keyword:""
} }
},
methods:{
search(value){
// console.log(value)
this.$u.route({
url:"/pageB/search/out",
params:{
value,
type:"shop"
}
})
}
} }
} }
</script> </script>

View File

@ -4,8 +4,8 @@
<image></image> <image></image>
<u-search placeholder="搜索您需要的商品" v-model="keyword" height="60" :show-action="false"></u-search> <u-search placeholder="搜索您需要的商品" v-model="keyword" height="60" :show-action="false"></u-search>
</view> </view>
<u-tabs-swiper @change="tabsChange" :show-bar="false" :bold="false" :font-size="32" active-color="#FF780F" ref="uTabs" :list="list" :is-scroll="false" style="border-bottom: 1px solid #ececec;flex-shrink:0" height="88"></u-tabs-swiper> <u-tabs-swiper v-if="type == 'dianpu'" @change="tabsChange" :show-bar="false" :bold="false" :font-size="32" active-color="#FF780F" ref="uTabs" :list="list" :is-scroll="false" style="border-bottom: 1px solid #ececec;flex-shrink:0" height="88"></u-tabs-swiper>
<swiper class="swiper" :current="swiperCurrent" @transition="transition" @animationfinish="animationfinish"> <swiper v-if="type == 'dianpu'" class="swiper" :current="swiperCurrent" @transition="transition" @animationfinish="animationfinish">
<swiper-item> <swiper-item>
<scroll-view :scroll-y="true" style="height:100%"> <scroll-view :scroll-y="true" style="height:100%">
<view style="padding-top:30rpx"> <view style="padding-top:30rpx">
@ -25,6 +25,18 @@
</scroll-view> </scroll-view>
</swiper-item> </swiper-item>
</swiper> </swiper>
<view class="select">
<view @click="sx(1)" data-type="xl">销量</view>
<view class="xz" @click="sx(2)">
<text>价格</text>
<view class="jiage">
<view class="top"></view>
<view class="bottom bottomxz"></view>
</view>
</view>
<view data-type="hp" @click="sx(3)">好评</view>
</view>
</view> </view>
</template> </template>
<style lang="scss" scoped> <style lang="scss" scoped>
@ -59,6 +71,49 @@
padding-left: 30rpx; padding-left: 30rpx;
} }
} }
.select{
width: 100%;
height: 89rpx;
border-bottom: 1rpx solid #ececec;
display: flex;
align-items: center;
padding: 0 40rpx;
flex-shrink: 0;
justify-content: space-between;
>view{
font-size: 32rpx;
color: #333;
display: flex;
font-weight:400;
.jiage{
display: flex;
flex-direction: column;
.top{
width: 12rpx;
border-bottom: 12rpx solid #707070;
border-left: 11rpx solid #fff ;
border-right: 11rpx solid #fff ;
margin-bottom: 2rpx;
}
.bottom{
width: 12rpx;
border-top: 12rpx solid #707070;
border-left: 11rpx solid #fff ;
border-right: 11rpx solid #fff ;
}
.topxz{
border-bottom: 12rpx solid #FF780F;
}
.bottomxz{
border-top: 12rpx solid #FF780F;
}
}
}
.xz{
color:#FF780F;
}
}
} }
</style> </style>
<script> <script>
@ -81,7 +136,8 @@ export default {
], ],
current: 0, current: 0,
swiperCurrent: 0, swiperCurrent: 0,
keyword:"" keyword:"",
type:""
} }
}, methods: { }, methods: {
tabsChange(index) { tabsChange(index) {
@ -96,7 +152,14 @@ export default {
this.$refs.uTabs.setFinishCurrent(current); this.$refs.uTabs.setFinishCurrent(current);
this.swiperCurrent = current; this.swiperCurrent = current;
this.current = current; this.current = current;
},
sx(type){
console.log(type)
} }
},
onLoad(o){
this.type = o.type
this.keyword = o.value
} }
} }
</script> </script>

View File

@ -80,6 +80,7 @@ export default {
this.avatar = res.tempFilePaths[0]; this.avatar = res.tempFilePaths[0];
common.uploadFile({ common.uploadFile({
url: url, url: url,
name: 'avatar',
filePath: res.tempFilePaths[0] filePath: res.tempFilePaths[0]
}).then(result => { }).then(result => {
this.avatar = result; this.avatar = result;

View File

@ -17,7 +17,10 @@
</view> </view>
<view @click="viewProgress"> <view @click="viewProgress">
<view class="title">预计进度</view> <view class="title">预计进度</view>
<view class="value">{{ memberInfo.next_grade_exppoints_diff }}</view> <!-- <view class="value">{{ memberInfo.next_grade_exppoints_diff }}</view> -->
<view class="value">
<image src="/static/image/mine/32.png"></image>
</view>
</view> </view>
</view> </view>
<scroll-view scroll-y class="integral-botom" :style="{ height: richHeight }"> <scroll-view scroll-y class="integral-botom" :style="{ height: richHeight }">
@ -151,6 +154,10 @@ export default {
font-size: 48rpx; font-size: 48rpx;
font-weight: 500; font-weight: 500;
color: rgba(255,255,255,1); color: rgba(255,255,255,1);
> image {
width: 52rpx;
height: 35rpx;
}
} }
} }
} }

View File

@ -1,33 +1,30 @@
<template> <template>
<view class="complaints"> <view class="complaints">
<view class="complaints-box" v-for="item in feedbackList" :key="item.fb_id"> <scroll-view scroll-y @scrolltolower="reachBottom">
<view class="suggestions"> <view class="complaints-box" v-for="item in feedbackList" :key="item.fb_id">
<view class="text">{{ item.fb_content }}</view> <view class="suggestions">
<view class="image"> <view class="text">{{ item.fb_content }}</view>
<image v-for="(url, index) in item.fb_images" :key="index" :src="url"></image> <view class="image">
<image v-for="(url, index) in item.fb_images" :key="index" :src="url"></image>
</view>
</view>
<view class="reply" v-if="item.is_reply">
<view class="reply-title">后台回复</view>
<view class="reply-content u-line-4">{{ item.reply_content }}</view>
</view>
<view class="date">
<image src="../static/mine/26.png"></image>
<view>{{ item.fb_time }}</view>
</view> </view>
</view> </view>
<view class="reply"> <u-empty text="暂无意见" mode="list" color="#000000" icon-size="90" margin-top="300" v-if="!feedbackList.length"></u-empty>
<view class="reply-title">后台回复</view> </scroll-view>
<view class="reply-content u-line-4">{{ item.reply_content }}</view>
</view>
<view class="date">
<image src="../static/mine/26.png"></image>
<view>{{ reply_time }}</view>
</view>
</view>
</view> </view>
</template> </template>
<script> <script>
export default { export default {
data() { data() {
return { return {
imgList: [
require('../static/mine/23.png'),
require('../static/mine/23.png'),
require('../static/mine/23.png'),
require('../static/mine/23.png')
],
feedbackList: [], feedbackList: [],
page: 1, // 1 page: 1, // 1
} }
@ -59,6 +56,7 @@ export default {
.complaints-box { .complaints-box {
padding: 30rpx; padding: 30rpx;
background-color: #ffffff; background-color: #ffffff;
margin-bottom: 20rpx;
.suggestions { .suggestions {
.text { .text {
font-size: 26rpx; font-size: 26rpx;

View File

@ -6,7 +6,12 @@
ref="uUpload" ref="uUpload"
:custom-btn="true" :custom-btn="true"
:max-count="count" :max-count="count"
:action="action"
:auto-upload="false" :auto-upload="false"
:header="header"
:form-data="formData"
:name="name"
@on-uploaded="setImageList"
> >
<view slot="addBtn" class="slot-btn" hover-class="slot-btn__hover" hover-stay-time="150"> <view slot="addBtn" class="slot-btn" hover-class="slot-btn__hover" hover-stay-time="150">
<img src="../static/mine/27.png" /> <img src="../static/mine/27.png" />
@ -14,45 +19,61 @@
</u-upload> </u-upload>
</view> </view>
<view class="write-btn" @click="submit">发表意见</view> <view class="write-btn" @click="submit">发表意见</view>
<u-toast ref="uToast" />
</view> </view>
</template> </template>
<script> <script>
export default { export default {
data() { data() {
return { return {
action: $u.http.baseUrl + 'Upload/uploadfile', action: this.$u.http.config.baseUrl + '/Upload/uploadfile',
count: 4, // count: 4, //
text: '', text: '',
imageList: [] header: {
"authorization": 'Bearer' + " " + uni.getStorageSync('token')
},
name: 'common', // formData name
formData: {
name: 'common', //
},
imageList: [],
} }
}, },
methods: { methods: {
submit() { submit() {
console.log(this.action); this.$refs.uUpload.upload();
console.log(this.imageList);
// this.$refs.uUpload.upload();
let promise = [];
this.imageList.forEach(url => {
// this.uploadImage(url);
})
Promise.all(promise).then(() => {
})
}, },
async uploadImage(file) { setImageList(lists) {
this.$u.api.uploadfile({ // console.log(lists);
file: file, let imageList = [];
}).then(res => { lists.forEach(res => {
if(res.errCode == 0) {} if(res.response.errCode == 0) imageList.push(res.response.data.file_name);
}) })
// console.log(imageList);
this.imageList = imageList;
this.writeFeedback();
},
verifyContent() {
if(this.$u.test.isEmpty(this.text)) {
this.$u.toast('内容不可为空');
return false;
}
return true;
}, },
writeFeedback() { writeFeedback() {
if(!this.verifyContent()) return false;
this.$u.api.writeFeedback({ this.$u.api.writeFeedback({
fb_content: this.text, fb_content: this.text,
fb_images: '', fb_images: this.imageList,
}).then(res => { }).then(res => {
if(res.errCode == 0) {} if(res.errCode == 0) {
this.$u.route({
type: "redirect",
url: '/pageE/more/Complaints',
})
} else {
this.$u.toast(res.message);
}
}) })
}, },
}, },

View File

@ -17,30 +17,63 @@
<view class="rate"> <view class="rate">
<view> <view>
<view class="title">物流评分</view> <view class="title">物流评分</view>
<u-rate :count="5" current="1" active-color="#FF780F" inactive-color="#CCCCCC" gutter="20" size="32"></u-rate> <u-rate :count="5" active-color="#FF780F" inactive-color="#CCCCCC" v-model="logistics" gutter="20" size="32"></u-rate>
</view> </view>
<view> <view>
<view class="title">服务态度</view> <view class="title">服务态度</view>
<u-rate :count="5" current="1" active-color="#FF780F" inactive-color="#CCCCCC" gutter="20" size="32"></u-rate> <u-rate :count="5" v-model="service" active-color="#FF780F" inactive-color="#CCCCCC" gutter="20" size="32"></u-rate>
</view> </view>
<view> <view>
<view class="title">描述相符</view> <view class="title">描述相符</view>
<u-rate :count="5" current="1" active-color="#FF780F" inactive-color="#CCCCCC" gutter="20" size="32"></u-rate> <u-rate :count="5" v-model="describe" active-color="#FF780F" inactive-color="#CCCCCC" gutter="20" size="32"></u-rate>
</view> </view>
</view> </view>
<view class="write-btn">发表意见</view> <view class="write-btn" @click="addOrderEvaluate">发表意见</view>
</view> </view>
</template> </template>
<script> <script>
export default { export default {
data() { data() {
return { return {
count: 4, orderId: '',
logistics: 1, count: 4, //
service: 1, logistics: 5,
describe: 1 service: 5,
describe: 5,
content: '',
} }
} },
onLoad(option) {
this.orderId = option.oid;
},
methods: {
verifyParams() {
if(this.$u.test.isEmpty(this.content)) {
this.$u.toast('内容不可为空');
return false;
}
return true;
},
addOrderEvaluate() {
if(!this.verifyParams()) return false;
console.log(this.logistics);
console.log(this.service);
console.log(this.describe);
this.$u.api.updateOrderEvaluate({
id: this.orderId,
content: this.content,
scores_one: this.logistics,
scores_two: this.service,
scores_three: this.describe,
file: '',
}).then(res => {
})
},
bindTextAreaBlur(event) {
this.content = event.detail.value;
}
},
}; };
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>

View File

@ -1,11 +1,11 @@
<template> <template>
<view class="details"> <view class="details" v-if="orderInfo.extend_store">
<view class="status"> <view class="status" v-if="state">
<view class="text"> <view class="text">
<view class="status-text">交易成功</view> <view class="status-text">{{ s_object[state].text }}</view>
<view class="time" v-if="current == 2">距离结束22:22:22</view> <view class="time" v-if="state == '2'">距离结束22:22:22</view>
</view> </view>
<image src="../static/mine/31.png" v-if="current"></image> <image :src="s_object[state].image"></image>
</view> </view>
<view class="info"> <view class="info">
<view class="info-address"> <view class="info-address">
@ -21,17 +21,19 @@
<view class="info-goods"> <view class="info-goods">
<view class="goods-store"> <view class="goods-store">
<view class="stoer-title"> <view class="stoer-title">
<image src="../static/mine/23.png" class="store-image"></image> <image :src="orderInfo.extend_store.store_avatar" class="store-image"></image>
<view class="store-name">胖胖的店</view> <view class="store-name">{{ orderInfo.extend_store.store_name }}</view>
<image src="../static/mine/21.png" class="right-icon"></image> <image src="../static/mine/21.png" class="right-icon"></image>
</view> </view>
<view class="store-goods"> <view v-for="goods in orderInfo.extend_order_goods" :key="goods.goods_id">
<image src="../static/mine/23.png"></image> <view class="store-goods">
<view class="goods-info"> <image :src="goods.goods_image"></image>
<view class="goods-name u-line-2">木糖少女小紫薯西装领连衣裙夏季新款女装夏收腰格子格纹裙子木糖少女小紫薯西装领连衣裙夏季新款女装夏收腰格子格纹裙子</view> <view class="goods-info">
<view class="goods-order"> <view class="goods-name u-line-2">{{ goods.goods_name }}</view>
<view class="price">99</view> <view class="goods-order">
<view class="num">x2</view> <view class="price">{{ goods.goods_pay_price }}</view>
<view class="num">x{{ goods.goods_num }}</view>
</view>
</view> </view>
</view> </view>
</view> </view>
@ -47,28 +49,29 @@
</view> </view>
<view> <view>
<view class="title">订单总价</view> <view class="title">订单总价</view>
<view class="price">0.00</view> <view class="price">{{ orderInfo.order_amount }}</view>
</view> </view>
<view> <view>
<view class="title">实付费(含运费)</view> <view class="title">实付费(含运费)</view>
<view class="price">0.00</view> <view class="price">{{ orderInfo.goods_amount }}</view>
</view> </view>
<view> <view>
<view class="title">支付方式</view> <view class="title">支付方式</view>
<view class="price">0.00</view> <view class="price">{{ orderInfo.payment_name }}</view>
</view> </view>
</view> </view>
</view> </view>
<view class="info-order"> <view class="info-order">
<view>订单编号2222222222222222</view> <view>订单编号{{ orderInfo.order_sn }}</view>
<view>微信交易号2222222222222222</view> <view>支付单号{{ orderInfo.pay_sn }}</view>
<view>创建时间2020-05-14</view> <view>创建时间{{ orderInfo.add_time | date}}</view>
</view> </view>
</view> </view>
<view class="btn" v-if="[0, 2, 4].indexOf(current) < 0"> <view class="btn" v-if="['1', '2', '6'].indexOf(state) >= 0">
<view class="logistics" v-if="current == 3" @click="toOtherPage('Logistics')">查看物流</view> <view class="logistics" v-if="state == '1'" @click="toOtherPage('Logistics')">查看物流</view>
<view class="comment" v-if="current == 5">立即评价</view> <view class="comment" v-if="state == '2'" @click="toOtherPage('Comment')">立即评价</view>
<view class="payment" v-if="current == 1">立即支付</view> <view class="cancel" v-if="state == '6'">取消支付</view>
<view class="payment" v-if="state == '6'">立即支付</view>
<view class="service" v-if="current == 6">联系官方客服</view> <view class="service" v-if="current == 6">联系官方客服</view>
<view class="submit" v-if="current == 6">提交官方审核</view> <view class="submit" v-if="current == 6">提交官方审核</view>
</view> </view>
@ -78,31 +81,80 @@
export default { export default {
data() { data() {
return { return {
state: '', // 1: 2: 3: 4: 5: 退 6:
s_object: {
'1': {
text: '待收货',
image: '../static/mine/32.png',
},
'2': {
text: '待评价',
image: '../static/mine/35.png',
},
'3': {
text: '交易成功',
image: '../static/mine/31.png',
},
'4': {
text: '已取消',
image: '../static/mine/33.png',
},
'5': {
text: '已退款',
image: '../static/mine/34.png',
},
'6': {
text: '待支付',
image: '../static/mine/31.png',
},
},
current: 0, current: 0,
orderInfo: {} orderInfo: {}
} }
}, },
onLoad(option) { onLoad(option) {
this.current = option.current;
console.log(option.current);
this.setTitle(); this.setTitle();
this.getOrderInfo(option.id);
}, },
methods: { methods: {
viewState(value) {
let state;
switch (value) {
case 0: //
state = '4';
break;
case 10: //
state = '6';
break;
case 20: //
state = '3';
break;
case 30: //
state = '1';
break;
case 40: //
if(this.orderInfo.evaluation_state == 0) state = '2';
break;
default:
break;
}
if(this.orderInfo.refund_state) state = '5';
this.state = state;
},
getOrderInfo(id) { getOrderInfo(id) {
this.$u.api.getOrderInfo({ this.$u.api.getOrderInfo({
order_id: id, order_id: id,
}).then(res => { }).then(res => {
if(res.errCode == 0) { if(res.errCode == 0) {
this.orderInfo = res.data; this.orderInfo = res.data;
this.viewState(this.orderInfo.order_state);
} }
}) })
}, },
setTitle(){ setTitle(){
let title = '' let title = '';
switch (this.current) { switch (this.current) {
case '1': case '1':
console.log(title);
title = "支付成功" title = "支付成功"
break; break;
default: default:
@ -114,8 +166,8 @@ export default {
}); });
}, },
toOtherPage(url) { toOtherPage(url) {
uni.navigateTo({ this.$u.route('/pageE/order/' + url, {
url: '/pageE/order/' + url oid: this.orderInfo.order_id,
}); });
} }
}, },
@ -125,17 +177,15 @@ export default {
.details { .details {
min-height: calc(100vh - var(--window-top)); min-height: calc(100vh - var(--window-top));
background-color: #ECECEC; background-color: #ECECEC;
padding-bottom: 98rpx;
.status { .status {
position: fixed;
top: 0;
left: 0;
display: flex; display: flex;
height: calc(180rpx + var(--window-top)); height: 180rpx;
// height: calc(180rpx + var(--window-top));
width: 100%; width: 100%;
background: rgba(255,120,15,1); background: #ff780f;
z-index: 9;
.text { .text {
margin: calc(74rpx + var(--window-top)) auto 0 73rpx; margin: 74rpx auto 0 73rpx;
color: rgba(255,255,255,1); color: rgba(255,255,255,1);
.status-text { .status-text {
font-size: 36rpx; font-size: 36rpx;
@ -149,14 +199,13 @@ export default {
} }
} }
> image { > image {
margin: calc(36rpx + var(--window-top)) 70rpx 0 0; margin: 36rpx 70rpx 0 0;
width: 126rpx; width: 126rpx;
height: 109rpx; height: 109rpx;
flex-shrink: 0; flex-shrink: 0;
} }
} }
.info { .info {
padding-top: 180rpx;
margin-bottom: 10rpx; margin-bottom: 10rpx;
.info-address { .info-address {
padding: 30rpx; padding: 30rpx;
@ -281,6 +330,10 @@ export default {
} }
} }
.btn { .btn {
position: fixed;
bottom: 0;
left: 0;
width: 100%;
height: 98rpx; height: 98rpx;
background: rgba(255,255,255,1); background: rgba(255,255,255,1);
display: flex; display: flex;
@ -301,6 +354,9 @@ export default {
.logistics, .comment, .payment { .logistics, .comment, .payment {
@include btn-class($width: 160rpx, $color: rgba(255,119,15,1)); @include btn-class($width: 160rpx, $color: rgba(255,119,15,1));
} }
.cancel {
@include btn-class($width: 160rpx, $color: rgba(155,153,153,1));
}
.service { .service {
@include btn-class($width: 216rpx, $color: rgba(155,153,153,1)); @include btn-class($width: 216rpx, $color: rgba(155,153,153,1));
} }

View File

@ -41,7 +41,7 @@ export default {
orderList: [], orderList: [],
loadStatus: ['loadmore','loadmore','loadmore','loadmore','loadmore','loadmore','loadmore'], loadStatus: ['loadmore','loadmore','loadmore','loadmore','loadmore','loadmore','loadmore'],
page: 0, page: 0,
current: 0, current: Number,
swiperCurrent: 0, swiperCurrent: 0,
swiperHeight: '', swiperHeight: '',
timer: true, timer: true,
@ -51,9 +51,9 @@ export default {
OrderItem OrderItem
}, },
watch: { watch: {
current() { current(value) {
this.page = 0; this.page = 0;
this.getOrderList('again'); this.getOrderList({ reload: 'again' });
}, },
}, },
onLoad(option) { onLoad(option) {
@ -63,7 +63,7 @@ export default {
this.setViewHeight(); this.setViewHeight();
}, },
methods: { methods: {
async getOrderList(reload = '') { async getOrderList({ reload = '' } = {}) {
let type; let type;
// state_type 0: 10: 20: 30: 40: // state_type 0: 10: 20: 30: 40:
switch (this.current) { switch (this.current) {
@ -80,7 +80,7 @@ export default {
type = -1; // 穿 type = -1; // 穿
break; break;
case 5: case 5:
type = 20; // type = 'state_noeval'; //
break; break;
case 6: case 6:
type = 40; // type = 40; //
@ -92,22 +92,25 @@ export default {
const res = await this.$u.api.getOrderList({ const res = await this.$u.api.getOrderList({
page: this.page, page: this.page,
type: type, type: type,
refund_state: this.current == 6 ? '1' : 0, //
}) })
this.timer = true; this.timer = true;
if(res.errCode == 0) { if(res.errCode == 0) {
if(reload) this.orderList = res.data; if(reload) this.orderList = res.data;
else this.orderList.push(...res.data); else this.orderList.push(...res.data);
} }
return res.data.length; return res;
}, },
reachBottom() { reachBottom() {
// 15
if(this.orderList.length < 15) return false;
if(!this.timer) return false; if(!this.timer) return false;
this.timer = false; this.timer = false;
this.loadStatus.splice(this.current, 1, "loading"); this.loadStatus.splice(this.current, 1, "loading");
this.page++; this.page++;
this.getOrderList.then(length => { this.getOrderList().then(res => {
this.loadStatus.splice(this.current, 1, "nomore"); this.loadStatus.splice(this.current, 1, "nomore");
if(length == 0) this.page--; if(res.data.length == 0) this.page--;
}).catch(() => { }).catch(() => {
this.loadStatus.splice(this.current, 1, "nomore"); this.loadStatus.splice(this.current, 1, "nomore");
this.page--; this.page--;
@ -135,9 +138,6 @@ export default {
background-color: #ECECEC; background-color: #ECECEC;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
// > uni-swiper {
// flex: 1;
// }
.swiper-item { .swiper-item {
.item-container { .item-container {
padding: 20rpx 30rpx; padding: 20rpx 30rpx;

View File

@ -59,6 +59,10 @@ export default {
title: '证件中心', title: '证件中心',
link: '../mine/ArticleDetails?type=1' link: '../mine/ArticleDetails?type=1'
}, },
{
title: '屏蔽用户',
link: './ShieldUsers'
},
{ {
title: '关于我们', title: '关于我们',
link: '../mine/ArticleDetails?type=2' link: '../mine/ArticleDetails?type=2'
@ -66,7 +70,7 @@ export default {
{ {
title: '帮助与反馈', title: '帮助与反馈',
link: './feedback' link: './feedback'
} },
] ]
} }
}, },

View File

@ -0,0 +1,59 @@
<template>
<view class="shield">
<view class="shield-list" v-for="(item, index) in 5" :key="index">
<view class="infomation">
<u-avatar :src="src" size="80"></u-avatar>
<view class="nickname u-line-1">神的温柔</view>
</view>
<view class="btn">取消屏蔽</view>
</view>
</view>
</template>
<script>
export default {
data() {
return {
src: 'https://dmmall.sdbairui.com/uploads/home/avatar/avatar_19.jpg'
}
}
};
</script>
<style lang="scss" scoped>
.shield {
min-height: calc(100vh - var(--window-top));
background-color: #ECECEC;
padding-top: 1rpx;
.shield-list {
background-color: #FFF;;
display: flex;
align-items: center;
justify-content: space-between;
padding: 10rpx 30rpx;
color:rgba(51,51,51,1);
margin-bottom: 2rpx;
.infomation {
display: flex;
align-items: center;
.nickname {
width: 300rpx;
font-size: 28rpx;
margin-left: 20rpx;
}
}
.btn {
font-size: 24rpx;
position: relative;
&::before {
position: absolute;
left: -30rpx;
top: 50%;
transform: translate(0, -50%);
content: '';
width: 1rpx;
height: 38rpx;
background: rgba(236,236,236,1);
}
}
}
}
</style>

View File

@ -1,14 +1,18 @@
<template> <template>
<view class="manicure-order"> <view class="manicure-order">
<view class="order-form"> <view class="order-form">
<view class="order-name"> <!-- <view class="order-name">
<view>美甲人</view> <view>美甲人</view>
<input type="text" v-model="name" /> <input type="text" v-model="name" />
</view> </view> -->
<view class="order-date" @click="show=true"> <view class="order-date" @click="show=true">
<view>美甲时间</view> <view class="title">美甲时间</view>
<img src="../static/mine/21.png" v-if="!time" /> <image src="../static/mine/21.png" v-if="!time"></image>
<view v-else>{{ time }}</view> <view v-else class="time">{{ time }}</view>
</view>
<view class="order-address">
<view class="title">美甲地址</view>
<input type="text" v-model="address" disabled />
</view> </view>
</view> </view>
<view class="order-btn" @click="addManicureOrder">确认订单</view> <view class="order-btn" @click="addManicureOrder">确认订单</view>
@ -22,6 +26,7 @@ export default {
return { return {
name: '', name: '',
time: '', time: '',
address: '四川省攀枝花市银江镇',
params: { params: {
year: true, year: true,
month: true, month: true,
@ -96,8 +101,11 @@ export default {
&:not(:last-child) { &:not(:last-child) {
margin-bottom: 2rpx; margin-bottom: 2rpx;
} }
.title {
font-size: 30rpx;
}
} }
.order-name { .order-address {
display: flex; display: flex;
align-items: center; align-items: center;
> view { > view {
@ -105,18 +113,24 @@ export default {
color: rgba(51,51,51,1); color: rgba(51,51,51,1);
} }
> input { > input {
padding-left: 20rpx;
flex: 1; flex: 1;
text-align: right; font-size: 28rpx;
} }
} }
.order-date { .order-date {
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: space-between; justify-content: space-between;
> img { > image {
width: 14rpx; width: 14rpx;
height :24rpx; height :24rpx;
} }
.time {
padding-left: 20rpx;
flex: 1;
text-align: left;
}
} }
} }
.order-btn { .order-btn {

View File

@ -715,6 +715,19 @@
} }
} }
}, },
{
"path": "setting/ShieldUsers",
"style": {
"navigationBarTitleText": "屏蔽用户",
"app-plus": {
"titleSize": "36px",
"titleNView": {
"titleColor": "#333333",
"backgroundColor": "#FFFFFF"
}
}
}
},
{ {
"path": "order/Index", "path": "order/Index",
"style": { "style": {
@ -736,7 +749,7 @@
"titleSize": "36px", "titleSize": "36px",
"titleNView": { "titleNView": {
"titleColor": "#FFFFFF", "titleColor": "#FFFFFF",
"backgroundColor": "rgba(255,255,255,0)" "backgroundColor": "#ff780f"
}, },
"backButton": { "backButton": {
"color": "#FFFFFF" "color": "#FFFFFF"

View File

@ -2,10 +2,10 @@
<view class="mine"> <view class="mine">
<view class="mine-top"> <view class="mine-top">
<view class="top"> <view class="top">
<u-avatar :src="userInfo.member_avatar" :size="110"></u-avatar> <u-avatar @click="toOtherPage('/mine/MineInfo')" :src="userInfo.member_avatar" :size="110"></u-avatar>
<view class="user-info"> <view class="user-info">
<view class="info-left"> <view class="info-left">
<view class="user-nickname" @click="toOtherPage('/mine/MineInfo')">{{ userInfo.member_nickname }}</view> <view class="user-nickname">{{ userInfo.member_nickname }}</view>
<view class="user-medal" @click="toOtherPage('/mine/MedalIntroduction')"> <view class="user-medal" @click="toOtherPage('/mine/MedalIntroduction')">
<img src="/static/image/mine/13.png" /> <img src="/static/image/mine/13.png" />
<view class="rank-title">勋章</view> <view class="rank-title">勋章</view>

View File

@ -6,7 +6,9 @@
<text class="u-line-1">{{ area }}</text> <text class="u-line-1">{{ area }}</text>
<image src="/static/image/shop/2.png"></image> <image src="/static/image/shop/2.png"></image>
</view> </view>
<u-search placeholder="日照香炉生紫烟" v-model="keyword" :show-action="false" bg-color="#fff" border-color="#999999"></u-search> <view @click="sousuo">
<u-search placeholder="日照香炉生紫烟" v-model="keyword" :show-action="false" bg-color="#fff" border-color="#999999" :disabled="true"></u-search>
</view>
<image src="/static/image/shop/3.png" class="mnue" @click="toClassifyPage"></image> <image src="/static/image/shop/3.png" class="mnue" @click="toClassifyPage"></image>
</view> </view>
<u-swiper :list="list" mode="dot" @click="clickImage"></u-swiper> <u-swiper :list="list" mode="dot" @click="clickImage"></u-swiper>
@ -91,6 +93,12 @@ export default {
this.getGoodsRecommend(); this.getGoodsRecommend();
}, },
methods: { methods: {
sousuo(){
// console.log(123)
this.$u.route({
url:"pageB/search/index"
})
},
getShopTopList() { getShopTopList() {
this.$u.api.getShopTopList().then((res)=>{ this.$u.api.getShopTopList().then((res)=>{
if (res.errCode == 0) { if (res.errCode == 0) {

View File

@ -12,23 +12,26 @@ const common = {
/** /**
* 上传文件(只能单文件上传) * 上传文件(只能单文件上传)
* @param { String } url 服务器 url * @param { String } url 服务器 url
* @param { String } name 上传类型 goods-商品图片 avatar-用户头像 video-视频 store_logo-店铺logo store_banner-店铺banner store_avatar-店铺头像 common-其他图片
* @param { String } filePath 要上传文件资源的路径 * @param { String } filePath 要上传文件资源的路径
* @param { String } type 上传文件验证类型 默认: img 可选: video
* @return { object } promise 对象 resolve 返回文件服务器地址 reject 返回错误信息 * @return { object } promise 对象 resolve 返回文件服务器地址 reject 返回错误信息
*/ */
uploadFile({ url, filePath, type = 'img' } = {}) { uploadFile({ url, name, filePath }) {
const token = uni.getStorageSync('token'); const token = uni.getStorageSync('token');
const promise = new Promise((resolve, reject) => { const promise = new Promise((resolve, reject) => {
uni.uploadFile({ uni.uploadFile({
url: url, url: url,
header: { "authorization": 'Bearer' + " " + token }, header: { "authorization": 'Bearer' + " " + token },
filePath: filePath, filePath: filePath,
name: 'file', name: name,
formData: { type: type }, formData: {
name: name,
},
success: uploadFileRes => { success: uploadFileRes => {
const data = JSON.parse(uploadFileRes.data); const data = JSON.parse(uploadFileRes.data);
// console.log(data);
if(data.errCode == 0) { if(data.errCode == 0) {
resolve(data.data.url); resolve(data.data);
} else { } else {
reject(data.message); reject(data.message);
} }