Browse Source

【对接】 地址相关接口

【对接】 我的订单接口
【对接】 评卡查询等接口
【新增】 快递公司json列表
【新增】 app唤起判断打开调式模式
master
邓平艺 4 years ago
parent
commit
142f79d544
  1. 5
      App.vue
  2. 25
      packages/addAddress/addAddress.vue
  3. 42
      packages/address/address.vue
  4. 34
      pages/fastRating/fastRating.vue
  5. 33
      pages/index/index.vue
  6. 162
      pages/order/order.vue
  7. 19
      pages/ratingQuery/ratingQuery.vue
  8. 2
      pages/write/baseInfo.vue
  9. 9
      pages/write/distribution.vue
  10. 33
      pages/write/logistics.json
  11. 34
      service/address.js
  12. 19
      service/grading.js
  13. 10
      service/order.js

5
App.vue

@ -5,6 +5,11 @@
},
onLaunch: function() {
console.log('App Launch');
//
if(process.env.NODE_ENV !== 'production'){
let baseInfo = (uni.canIUse('getAppBaseInfo') && uni.getAppBaseInfo()) || {};
!baseInfo.enableDebug && uni.setEnableDebug({enableDebug: true});
}
},
onShow: function() {
console.log('App Show')

25
packages/addAddress/addAddress.vue

@ -43,7 +43,7 @@
</template>
<script>
import { addNewAddress } from '@/service/address.js';
import { addNewAddress, addressDetail } from '@/service/address.js';
export default {
data() {
@ -53,8 +53,9 @@
name: '',
phone: '',
region: [],
regionCode: '',
desc: '',
default: true
default: false
}
};
},
@ -77,19 +78,23 @@
})
},
methods: {
// id todo
getAddressDetail(){
// id
async getAddressDetail(){
let res = await addressDetail(this.id);
let details = res.data.datas;
this.address = {
name: '邓平艺',
phone: '1878455554',
region: ['北京市','北京市','东城区'],
desc: '北京北京市海淀区钻石大厦C座',
default: false
name: details.name,
phone: details.tel,
region: details.area_name.split(','),
regionCode: details.area_id,
desc: details.desc,
default: Boolean(details.default)
}
},
pickerChnage(event){
console.log(event);
this.address.region = event.detail.value;
this.address.regionCode = event.detail.code.splice(2).join();
},
// /
save(){
@ -105,7 +110,7 @@
name: address.name,
desc: address.desc,
default: Number(address.default),
area_id: '' // todo id
area_id: address.regionCode
}
if(this.id){ // id
data.addr_id = this.id;

42
packages/address/address.vue

@ -16,7 +16,7 @@
</label>
</radio-group>
<view class="rightPanel">
<image class="optionsBtn" src="../../static/删除.png" @click.stop="remove"></image>
<image class="optionsBtn" src="../../static/删除.png" @click.stop="remove(item.id)"></image>
<image class="optionsBtnEdit" src="../../static/编辑.png" @click.stop="$url('/packages/addAddress/addAddress?id='+ item.id)"></image>
</view>
</view>
@ -30,7 +30,7 @@
</template>
<script>
import { address } from '@/service/address.js';
import { address, setDefaultAddress, deleteAddress } from '@/service/address.js';
export default {
data() {
@ -43,6 +43,8 @@
this.is_select = Boolean(Number(options.is_select || '0'));
},
onShow(){
// todo
this.addressList = [];
this.getUserAddress();
},
methods: {
@ -50,19 +52,35 @@
let res = await address();
this.addressList = res.data.datas;
},
// todo
//
radioChange(event){
let id = event.detail.value;
this.addressList.forEach(item => {
if(item.id === id){
item.default = 1;
}else{
item.default = 0;
}
});
uni.showLoading({
title: '切换默认地址'
})
setDefaultAddress(id).then(res => {
uni.hideLoading();
this.addressList.forEach(item => {
if(item.id === id){
item.default = 1;
}else{
item.default = 0;
}
});
}).catch(err => uni.hideLoading());
},
remove(){
this.$msg('删除')
remove(id){
uni.showModal({
title: '提示',
content: '您确定删除该地址吗?',
success: async result => {
if(result.confirm){
await deleteAddress(id);
this.$msg('删除成功', {icon: 'success'});
this.getUserAddress();
}
}
})
},
selectAddress(item){
if(!this.is_select) return;

34
pages/fastRating/fastRating.vue

@ -2,21 +2,9 @@
<view class="flex-col page">
<view class="flex-col group_4">
<view class="flex-col section_2">
<view class="justify-between">
<text class="text_2">全面评级</text>
<text class="text_3">7day/60rmb</text>
</view>
<view class="justify-between group_6">
<text class="text_4">卡品评级</text>
<text class="text_5">7day/45rmb</text>
</view>
<view class="justify-between group_7">
<text class="text_6">签名评级</text>
<text class="text_7">7day/45rmb</text>
</view>
<view class="justify-between group_8">
<text class="text_8">套壳服务</text>
<text class="text_9">7day/30rmb</text>
<view class="justify-between" v-for="(item, index) in list" :key="index">
<text class="text_2">{{ item.title }}</text>
<text class="text_3">{{ item.value }}</text>
</view>
</view>
</view>
@ -24,10 +12,19 @@
</template>
<script>
import { quickList } from '@/service/grading.js';
export default {
data() {
return {};
return {
list: []
};
},
onLoad(){
quickList().then(res => {
this.list = res.data.datas;
})
}
};
</script>
@ -38,13 +35,16 @@
overflow-y: auto;
height: 100%;
}
.justify-between{
padding: 20rpx 0;
}
.group_4 {
padding: 2rpx 0 16rpx;
flex: 1 1 auto;
overflow-y: auto;
}
.section_2 {
padding: 40rpx 30rpx 40rpx 32rpx;
padding: 20rpx 30rpx 20rpx 32rpx;
background-color: rgb(255, 255, 255);
}

33
pages/index/index.vue

@ -150,23 +150,9 @@
class="image_8" />
</view>
<view class="flex-row equal-division_1">
<view class="flex-col items-center equal-division-item_3" @click="$url('/packages/sonpingDetail/sonpingDetail')">
<image
src="https://codefun-proj-user-res-1256085488.cos.ap-guangzhou.myqcloud.com/62677e395a7e3f03107ffc5f/62677e4a35a7e10011e93a80/16509497759043659561.png"
class="image_23" />
<text class="text_27">2021chronic</text>
</view>
<view class="flex-col items-center equal-division-item_4" @click="$url('/packages/sonpingDetail/sonpingDetail')">
<image
src="https://codefun-proj-user-res-1256085488.cos.ap-guangzhou.myqcloud.com/62677e395a7e3f03107ffc5f/62677e4a35a7e10011e93a80/16509497759141393132.png"
class="image_23" />
<text class="text_28">2021chronic</text>
</view>
<view class="flex-col items-center equal-division-item_5" @click="$url('/packages/sonpingDetail/sonpingDetail')">
<image
src="https://codefun-proj-user-res-1256085488.cos.ap-guangzhou.myqcloud.com/62677e395a7e3f03107ffc5f/62677e4a35a7e10011e93a80/16509497759203410969.png"
class="image_23" />
<text class="text_29">2021chronic</text>
<view class="flex-col items-center equal-division-item_3" @click="$url('/packages/sonpingDetail/sonpingDetail?id='+ item.id)" v-for="(item, index) in evaluated_order" :key="index">
<image :src="item.images" class="image_23" mode="aspectFill" />
<text class="text_27">{{ item.title }}</text>
</view>
</view>
</view>
@ -196,7 +182,8 @@
isConsentAgreement: false,
rateIndex: 0,
user: {},
dots: {}
dots: {},
evaluated_order: []
};
},
onLoad(){
@ -207,6 +194,7 @@
let res = await my();
this.user = res.data.datas.user;
this.dots = res.data.datas.dots;
this.evaluated_order = res.data.datas.evaluated_order;
},
nextToGrading(){
if(!this.isConsentAgreement) return this.$msg('请先阅读并同意协议');
@ -416,7 +404,7 @@
.equal-division_1 {
margin-top: 40rpx;
padding: 0 8rpx;
padding: 0 32rpx;
color: rgb(51, 51, 51);
font-size: 28rpx;
font-weight: 500;
@ -520,7 +508,12 @@
}
.equal-division-item_3 {
flex: 1 1 244rpx;
// flex: 1 1 244rpx;
align-items: flex-start;
margin-right: 42rpx;
&:nth-child(3n){
margin-right: 0rpx;
}
}
.equal-division-item_4 {

162
pages/order/order.vue

@ -27,7 +27,7 @@
<text class="text_7">按收货确认时间</text>
<view class="flex-col group_8">
<view class="lf-flex lf-flex-wrap">
<view class="filter-date-item" :class="{active: filterGather.date == item.value}" @click="filterGather.date = item.value" v-for="(item, index) in receivingTimeList" :key="index">{{ item.label }}</view>
<view class="filter-date-item" :class="{active: filterGather.date == item.value}" @click="selectReceivingTime(item)" v-for="(item, index) in receivingTimeList" :key="index">{{ item.label }}</view>
</view>
</view>
</view>
@ -45,7 +45,7 @@
<view class="flex-col group_13">
<text class="text_18">按送评信息</text>
<view class="flex-col items-start text-wrapper_4">
<u-input v-model="filterGather.number" placeholder="输入评级编号" class="text-wrapper_4-input" ></u-input>
<u-input v-model="filterGather.order_num" placeholder="输入评级编号" class="text-wrapper_4-input" ></u-input>
</view>
</view>
<view class="flex-row group_14">
@ -57,7 +57,7 @@
</view>
</view>
</view>
<view class="flex-col items-center group_15">
<view class="flex-col items-center group_15" @click="showFilter = false">
<view class="section_7"> </view>
</view>
</view>
@ -67,7 +67,7 @@
<!-- 页面主体滚动区域 -->
<swiper :current="tabIndex" :style="{height: swiperContentHeight}" @change="swiperChange">
<swiper-item v-for="(tabItem, idx) in tabList" :key="idx" :item-id="tabItem.ident" @touchmove="stopTouchMove">
<swiper-item v-for="(tabItem, idx) in tabList" :key="idx" :item-id="tabItem.ident">
<scroll-view
:style="{height: swiperContentHeight, 'padding-top': '30rpx'}"
:scroll-y="true"
@ -76,7 +76,7 @@
@scrolltolower="scrolltolower"
@refresherrefresh="refresherrefresh"
>
<view class="item-box" v-for="(item, index) in tabItem.data" :key="index">
<view class="item-box" v-for="(item, index) in tabItem.data" :key="index" @click="$url('/packages/sonpingDetail/sonpingDetail?id='+ item.id)">
<view class="flex-col section_5">
<view class="justify-between">
<view class="flex-row group_8">
@ -84,27 +84,43 @@
src="https://codefun-proj-user-res-1256085488.cos.ap-guangzhou.myqcloud.com/62677e395a7e3f03107ffc5f/62677e4a35a7e10011e93a80/16509497798740970822.png"
class="image_7"
/>
<text class="text_7">在线送评</text>
<text class="text_7">在线送评 todo</text>
</view>
<text class="text_8">待确认</text>
<text class="text_8">{{ ['','待确认','评级中','待付款','待收货'][item.status] }}</text>
</view>
<view class="justify-between group_9">
<view class="flex-row">
<text>李丽丽</text>
<text class="text_10">15273936409</text>
<text>{{ item.owner }}</text>
<text class="text_10">{{ item.tel }}</text>
</view>
<text>5</text>
<text>{{ item.num }}</text>
</view>
<view class="justify-between group_11">
<text class="text_12">更多</text>
<view class="flex-row">
<view class="flex-col items-center text-wrapper">
<!-- <text class="text_12">更多</text> -->
<text class="text_12"></text>
<view class="flex-row" v-if="item.status == 1">
<view class="flex-col items-center text-wrapper" @click.stop="orderCancel">
<text>取消</text>
</view>
<view class="flex-col items-center text-wrapper_1">
<view class="flex-col items-center text-wrapper_1" @click.stop="orderSend">
<text>寄送藏品</text>
</view>
</view>
<view class="flex-row" v-else-if="item.status == 2">
<view class="flex-col items-center text-wrapper" @click.stop="orderAddressChange">
<text>更改地址</text>
</view>
</view>
<view class="flex-row" v-else-if="item.status == 3">
<view class="flex-col items-center text-wrapper_1" style="border-color: #EA2B2B; color: #EA2B2B;" @click.stop="orderPay">
<text>付款</text>
</view>
</view>
<view class="flex-row" v-else-if="item.status == 4">
<view class="flex-col items-center text-wrapper_1" @click.stop="orderConfirm">
<text>确认收货</text>
</view>
</view>
</view>
</view>
</view>
@ -128,12 +144,13 @@
</template>
<script>
import { orderList } from '@/service/order.js';
export default {
data(){
let publicKey = {
page: 1,
pageSize: 5,
pageSize: 10,
isPage: true,
status: 'loading', // loadingnomore
isRefresher: false, //
@ -143,34 +160,39 @@
tabList: [{
name: '全部',
ident: 'all',
type: 0,
data: [],
badge: {isDot: false},
requestFunction: 'getList',
...publicKey
},{
name: '待确认',
ident: 'video',
ident: 'waitconfirm',
type: 1,
data: [],
badge: {isDot: false},
requestFunction: 'getList',
...publicKey
},{
name: '评级中',
ident: 'image',
ident: 'gradeing',
type: 2,
data: [],
badge: {isDot: false},
requestFunction: 'getList',
...publicKey
},{
name: '待付款',
ident: 'share',
ident: 'waitpay',
type: 3,
data: [],
badge: {isDot: false},
requestFunction: 'getList',
...publicKey
},{
name: '待收货',
ident: 'short',
ident: 'waitreceiv',
type: 4,
data: [],
badge: {isDot: false},
requestFunction: 'getList',
@ -200,10 +222,10 @@
value: '7'
}],
filterGather: {
date: '1',
date: '',
name: '',
label: '',
number: ''
order_num: ''
}
}
},
@ -227,37 +249,95 @@
this[ this.tabList[this.tabIndex].requestFunction ](); // tab
},
methods: {
confirm(){
this.$msg('确认');
this.showFilter = false;
},
reset(){
this.filterGather = this.$options.data().filterGather;
},
//
getList(options = {}){
let tabItem = this.tabList[this.tabIndex];
let filterGather = this.filterGather;
let data = {
type: tabItem.type,
page: tabItem.page,
pageSize: tabItem.pageSize
};
if(filterGather.date){
data.confirm_type = filterGather.date;
}
if(filterGather.name){
data.name_phone = filterGather.name;
}
if(filterGather.label){
data.label = filterGather.label;
}
if(filterGather.order_num){
data.order_num = filterGather.order_num;
}
setTimeout(() => {
if(tabItem.page === 1){
tabItem.data = [1,2,3,4,5]
orderList(data).then(res => {
let datas = res.data.datas;
let isPage = this.$isRight(datas.next_page_url);
if(!isPage){
tabItem.isPage = isPage;
tabItem.status = 'nomore';
}
if(tabItem.page == 1){
tabItem.data = datas.data;
}else{
let arr = [Math.random(), Math.random(), Math.random(), Math.random(), Math.random()];
tabItem.data.push(...arr);
if(tabItem.page === 4){
tabItem.isPage = false;
tabItem.status = "nomore";
}
tabItem.data.push(...datas.data);
}
if(options.refresher){
this.$refs.uToast.show({
title: '刷新成功',
message: '刷新成功',
type: 'success'
});
tabItem.isRefresher = false;
}
}, 800);
})
},
//
confirm(){
let tabItem = this.tabList[this.tabIndex];
tabItem.page = 1;
tabItem.isPage = true;
tabItem.status = 'loading';
tabItem.data = [];
this[tabItem.requestFunction]();
this.showFilter = false;
},
//
reset(){
this.filterGather = this.$options.data().filterGather;
this.$refs.uToast.show({
message: '内容已重置',
type: 'success'
});
},
//
selectReceivingTime(item){
if(this.filterGather.date == item.value){
this.filterGather.date = "";
}else{
this.filterGather.date = item.value;
}
},
// todo
orderCancel(){
console.log("++++++++++")
},
// todo
orderSend(){
},
// todo
orderAddressChange(){
},
// todo
orderPay(){
},
// todo
orderConfirm(){
},
// tab
switchTab(item){
@ -279,10 +359,6 @@
this[ tabItem.requestFunction ]();
}
}
console.log("swiperChange", event);
},
stopTouchMove(){
return false;
},
//
refresherrefresh(){

19
pages/ratingQuery/ratingQuery.vue

@ -14,6 +14,8 @@
</template>
<script>
import { ratingSearch } from '@/service/grading.js';
export default {
data() {
return {
@ -22,9 +24,20 @@
};
},
methods: {
search(){
console.log('搜索', this.value);
this.$url('/packages/ratingQueryDetail/ratingQueryDetail');
async search(){
let res = await ratingSearch(this.value);
let data = res.data.datas.data;
if(data.length > 0){ //
let id = data[0].id;
this.$url('/packages/ratingQueryDetail/ratingQueryDetail?id='+ id);
}else{
uni.showModal({
title: '提示',
content: '该评级编号暂无订单,换个编号试试?',
showCancel: false
})
}
},
focusEvent(){
this.inputFocus = true;

2
pages/write/baseInfo.vue

@ -76,7 +76,7 @@
<view class="flex-row group_15">
<text class="text_13">手机号</text>
<!-- <text class="text_14">18266785384</text> -->
<u-input v-model="sonpingInfo.phone" placeholder="请输入送评人手机号" type="number"></u-input>
<u-input v-model="sonpingInfo.phone" placeholder="请输入送评人手机号" type="number" maxlength="11"></u-input>
</view>
<view class="flex-row group_16">
<text class="text_15">数量</text>

9
pages/write/distribution.vue

@ -89,18 +89,13 @@
<script>
import { addGrading } from '@/service/grading.js';
import logistics from './logistics.json';
export default {
data() {
return {
oddNumber: '',
expressList: [{
label: '中通快递',
value: '1'
},{
label: '圆通快递',
value: '2'
}],
expressList: logistics,
expressIndex: ''
};
},

33
pages/write/logistics.json

@ -0,0 +1,33 @@
[{
"label": "百世快递"
},{
"label": "德邦快递"
},{
"label": "丹鸟"
},{
"label": "京东快递"
},{
"label": "顺丰快递"
},{
"label": "圆通快递"
},{
"label": "中通快递"
},{
"label": "申通快递"
},{
"label": "邮政快递"
},{
"label": "韵达快递"
},{
"label": "极兔快递"
},{
"label": "芝麻开门"
},{
"label": "天猫快递"
},{
"label": "丰网速运"
},{
"label": "EMS"
},{
"label": "国通快递"
}]

34
service/address.js

@ -8,6 +8,7 @@ export async function address() {
})
}
// 新增地址
export async function addNewAddress(data){
return await request({
url: '/api/v1/new_addr',
@ -15,3 +16,36 @@ export async function addNewAddress(data){
data
})
}
// 根据地址id查询详细地址
export async function addressDetail(area_id){
return await request({
url: '/api/v1/addr_detail',
method: 'post',
data: {
area_id
}
})
}
// 设置默认地址
export async function setDefaultAddress(area_id){
return await request({
url: '/api/v1/set_default_addr',
method: 'post',
data: {
area_id
}
})
}
// 删除地址
export async function deleteAddress(area_id){
return await request({
url: '/api/v1/del_addr',
method: 'post',
data: {
area_id
}
})
}

19
service/grading.js

@ -41,3 +41,22 @@ export async function gradingPayment(order_id) {
}
})
}
// 快速评级列表
export async function quickList() {
return await request({
url: '/api/v1/quick_list',
method: 'post'
})
}
// 评卡查询
export async function ratingSearch(order_num) {
return await request({
url: '/api/v1/order_num_search',
method: 'post',
data: {
order_num
}
})
}

10
service/order.js

@ -0,0 +1,10 @@
import request from '@/common/request.js'
// 添加新的送评订单
export async function orderList(data) {
return await request({
url: '/api/v1/order_list',
method: 'post',
data
})
}
Loading…
Cancel
Save