Commit 69fa707d authored by youjie's avatar youjie

聚合订单

parent b0a87bef
......@@ -37,7 +37,7 @@ export default {
}
}
</script>
<style>
<style lang="scss" scoped>
.carrHeader-title{
width: 100%;
position: relative;
......
......@@ -857,6 +857,34 @@
"path": "visa_SureOrder" //签证-订单详情
}
]
},
//聚合订单
{
"root": "pages/AggregateOrders",
"pages": [
{
"path": "AggregateOrdersList",
"enablePullDownRefresh": true,
"style": {
"navigationStyle": "custom",
"mp-alipay": {
"transparentTitle": "always",
"titlePenetrate": "YES"
}
}
},
{
"path": "AggregateOrdersSearch",
"enablePullDownRefresh": true,
"style": {
"navigationStyle": "custom",
"mp-alipay": {
"transparentTitle": "always",
"titlePenetrate": "YES"
}
}
}
]
}
],
"globalStyle": {
......
<style lang="scss" scoped>
@import url("@/asset/css/flex.css");
.AggOrdBox{
height: 100vh;
background: url('https://viitto-1301420277.cos.ap-chengdu.myqcloud.com/Upload/Goods/638772246864278108.jpg')no-repeat #F3F1EF;
background-size: 100% 240rpx;
.AggOrdHeader{
padding-bottom: 20rpx;
// background: url('https://viitto-1301420277.cos.ap-chengdu.myqcloud.com/Upload/Goods/638772246864278108.jpg')no-repeat;
// background-size: 100% 100%;
}
.AggOrdStatus{
padding-top: 20rpx;
.AggOrdT{
width: 25%;
padding: 10rpx 20rpx;
font-size: 28rpx;
color: #080A09;
position: relative;
}
.AggOrdT.active{
color: #B99846;
font-weight: bold;
}
.AggOrdT text{
display: block;
text-align: center;
}
.AggOrdT view{
position: absolute;
left: 0;
right: 0;
bottom: 0;
}
.AggOrdT view view{
width: 60rpx;
height: 10rpx;
margin: auto;
background: #E6E6E6;
border-radius: 10rpx;
}
}
}
</style>
<template>
<view class="AggOrdBox column">
<view class="AggOrdHeader">
<AggOrdHeader :title="pageTitle"
@change="getOrderType"
:params="msg"></AggOrdHeader>
<view class="AggOrdStatus row items-center">
<template v-for="(item,index) in statusList">
<view class="AggOrdT"
:key="index"
:class="[msg.OrderStatus==item.ID?'active':'']"
@click="msg.OrderStatus=item.ID,research()"
v-if="item.ID!=4">
<text>{{ item.Name }}</text>
</view>
</template>
</view>
</view>
<view class="col" style="height: 1px;flex: 1;overflow: hidden;padding-top: 10rpx;">
<scroll-view :scroll-y="true"
:enable-back-to-top="true"
:enable-flex="true"
@scrolltolower="lower" style="height: 100%;">
<orders :orders="g" @research="research"></orders>
<u-empty v-if="g.length==0" text="暂无数据" mode="data" padding-top="20"></u-empty>
<u-loadmore v-else :status="status" :load-text="loadText" :font-size="24" :margin-top="20" :margin-bottom="20" bg-color="#F3F1EF" />
<view style="width: 100%;height: 20rpx;"></view>
</scroll-view>
</view>
</view>
</template>
<script>
import {mappingListType,transProductEnum} from "../../utils/producttypeenum";
import EnumHelper from '../../utils/enumhelper';
import OrderStatusEnum from '../../utils/orderStautsEnum';
import AggOrdHeader from "./components/header.vue";
import orders from "./components/orders.vue";
export default{
components: {
AggOrdHeader,
orders,
},
data(){
return{
pageTitle: '所有订单',
msg:{
pageSize:10,
pageIndex:1,
OrderStatus: 0,
GoodsName: '',
OrderTypeStr: ''
},
loadText: {
loadmore: "轻轻上拉,加载更多",
loading: "努力加载中",
nomore: "没有更多了",
},
status: "loadmore",
showModal: false,
barshow:0,
statusList: [],
g: [],
page_count: 1,
index: 0,
payindex: 0,
showAuth: false,
}
},
onLoad(options){
},
created() {
this.getOrderEnums()
this.init()
},
methods:{
research(){
this.msg.pageIndex = 1;
this.msg.pageSize = 10;
this.status = "loadmore";
this.g = [];
this.page_count = 1;
this.init()
},
getOrderType(item){
this.msg.OrderTypeStr = item.Id
this.pageTitle = item.Name
this.research()
},
init(){
uni.showLoading({
title: '加载中...'
})
// #ifdef MP-DI
this.OrderPageZK();
// #endif
// #ifdef MP-AG
this.OrderPageTY();
// #endif
},
OrderPageTY(){
this.apipost('b2b_get_GetB2BAllOrderPageList',this.msg,
res => {
if (res.resultCode == 1) {
uni.hideLoading()
res.data.pageData.forEach(x=>{
x.goodTypeEnum = mappingListType(x.goodsType)
x.orderStatusInfo = EnumHelper.ParseToEnum(OrderStatusEnum,x.orderStatus,'value')
})
this.g = this.g.concat(res.data.pageData);
this.page_count = res.data.pageCount;
if (this.page_count == 1) {
this.status = "nomore";
}
}
},
err => {
uni.hideLoading()
}
);
},
OrderPageZK(){
this.apipost('GetMyDirectOrderPageList_post',this.msg,
res => {
if (res.resultCode == 1) {
uni.hideLoading()
res.data.pageData.forEach(x=>{
x.goodTypeEnum = mappingListType(x.goodsType)
x.orderStatusInfo = EnumHelper.ParseToEnum(OrderStatusEnum,x.orderStatus,'value')
})
this.g = this.g.concat(res.data.pageData);
this.page_count = res.data.pageCount;
if (this.page_count == 1) {
this.status = "nomore";
}
}
},
err => {
uni.hideLoading()
}
);
},
lower(e) {
if (this.msg.pageIndex < this.page_count) {
this.msg.pageIndex++;
this.status = "loading";
this.init();
} else {
this.status = "nomore";
}
},
getOrderEnums() {
this.apipost(
"GetDirectOrderStatusEnum_post",
{},
(res) => {
if (res.resultCode == 1) {
this.statusList = res.data;
this.statusList.splice(0,0,{ID:0,Name:'全部'})
this.statusList.forEach(x=>{
if(x.Name=='已付款') x.Name = '待出行'
})
}
},
err=>{
uni.showToast({
title: err.message,
icon: "none",
});
}
);
},
},
}
</script>
<style lang="scss" scoped>
@import url("@/asset/css/flex.css");
.AggOrdBox{
height: 100vh;
background: url('https://viitto-1301420277.cos.ap-chengdu.myqcloud.com/Upload/Goods/638772246864278108.jpg')no-repeat #F3F1EF;
background-size: 100% 240rpx;
.AggOrdHeader{
}
.AggOrdStatus{
padding-top: 10rpx;
.AggOrdT{
width: 25%;
padding: 10rpx 20rpx;
font-size: 28rpx;
color: #080A09;
position: relative;
}
.AggOrdT.active{
font-weight: bold;
}
.AggOrdT text{
display: block;
text-align: center;
}
.AggOrdT view{
position: absolute;
left: 0;
right: 0;
bottom: 0;
}
.AggOrdT view view{
width: 60rpx;
height: 10rpx;
margin: auto;
background: #E6E6E6;
border-radius: 10rpx;
}
}
.AggregateTitle{
padding: 40rpx 30rpx 40rpx 30rpx;
font-size: 36rpx;
font-weight: bold;
text-align: left;
}
.AggregateTypeBox{
flex-wrap: wrap;
padding: 0 15rpx;
}
.AggregateType{
width: 33.33%;
padding: 0 15rpx;
margin-bottom: 30rpx;
}
.AggregateType view{
display: block;
padding: 10rpx 0 15rpx 35rpx;
background: #E3E6D2;
border-radius: 14rpx;
border: 1rpx solid #E3E6D2;
overflow: hidden;
}
.AggregateType img{
width: 40rpx;
height: 40rpx;
display: inline-block;
position: relative;
top: 10rpx;
right: 20rpx;
}
.AggregateType text{
display: inline-block;
}
.AggregateType.active view{
border: 1rpx solid #B99846;
}
}
</style>
<template>
<view class="AggOrdBox column">
<view class="AggOrdHeader">
<AggOrdSearch
@change="change"
:params="msg"></AggOrdSearch>
</view>
<view class="col" style="height: 1px;flex: 1;overflow: hidden;padding-top: 40rpx;">
<view v-if="!msg.keyword">
<view class="AggregateTitle">订单类型</view>
<view class="AggregateTypeBox row">
<view class="AggregateType" v-for="(item,index) in orderTypeList" :key="index"
:class="[msg.OrderTypeStr==item.Id?'active':'']"
@click="getTypeId(item)">
<view class="row">
<img :src="item.icon"/>
<text>
{{ item.Name }}
</text>
</view>
</view>
</view>
</view>
<scroll-view v-else :scroll-y="true"
:enable-back-to-top="true"
:enable-flex="true"
@scrolltolower="lower" style="height: 100%;">
<orders :orders="g"></orders>
<u-empty v-if="g.length==0" text="暂无数据" mode="data" padding-top="20"></u-empty>
<u-loadmore v-else :status="status" :load-text="loadText" :font-size="24" :margin-top="20" :margin-bottom="20" bg-color="#F3F1EF" />
<view style="width: 100%;height: 20rpx;"></view>
</scroll-view>
</view>
<auth v-if="showAuth" @changeuserinfo="reloadUserinfo" @gbAuth='goback'></auth>
<tabbar v-if='barshow==1'></tabbar>
</view>
</template>
<script>
import {mappingListType,transProductEnum} from "../../utils/producttypeenum";
import EnumHelper from '../../utils/enumhelper';
import OrderStatusEnum from '../../utils/orderStautsEnum';
import AggOrdSearch from "./components/searchHeader.vue";
import orders from "./components/orders.vue";
export default{
components: {
AggOrdSearch,
orders,
},
data(){
return{
msg:{
pageSize:10,
pageIndex:1,
OrderStatus: 0,
GoodsName: '',
OrderTypeStr: '',
keyword: '',
},
loadText: {
loadmore: "轻轻上拉,加载更多",
loading: "努力加载中",
nomore: "没有更多了",
},
status: "loadmore",
showModal: false,
barshow:0,
g: [],
page_count: 1,
index: 0,
payindex: 0,
orderTypeList: [
// {
// Id: '',
// Name: '全部订单'
// },
{
Id: '1,2,3',
icon: 'https://viitto-1301420277.cos.ap-chengdu.myqcloud.com/Upload/Goods/638772246968492575.jpg',
Name: '线路订单'
},
{
Id: '16',
icon: 'https://viitto-1301420277.cos.ap-chengdu.myqcloud.com/Upload/Goods/638772247052998903.jpg',
Name: '机票订单'
},
{
Id: '15',
icon: 'https://viitto-1301420277.cos.ap-chengdu.myqcloud.com/Upload/Goods/638772247084971514.jpg',
Name: '签证订单'
},
{
Id: '8,9,10,11',
icon: 'https://viitto-1301420277.cos.ap-chengdu.myqcloud.com/Upload/Goods/638772247342163794.jpg',
Name: '酒店住宿'
},
{
Id: '12,13,14',
icon: 'https://viitto-1301420277.cos.ap-chengdu.myqcloud.com/Upload/Goods/638772247230118434.jpg',
Name: '包车服务'
},
{
Id: '4,5,6,7',
icon: 'https://viitto-1301420277.cos.ap-chengdu.myqcloud.com/Upload/Goods/638772247194112722.jpg',
Name: '景点门票'
}
],
icons:[
'https://viitto-1301420277.cos.ap-chengdu.myqcloud.com/Upload/Goods/638772246968492575.jpg',
'https://viitto-1301420277.cos.ap-chengdu.myqcloud.com/Upload/Goods/638772247052998903.jpg',
'https://viitto-1301420277.cos.ap-chengdu.myqcloud.com/Upload/Goods/638772247084971514.jpg',
'https://viitto-1301420277.cos.ap-chengdu.myqcloud.com/Upload/Goods/638772247342163794.jpg',
'https://viitto-1301420277.cos.ap-chengdu.myqcloud.com/Upload/Goods/638772247230118434.jpg',
'https://viitto-1301420277.cos.ap-chengdu.myqcloud.com/Upload/Goods/638772247194112722.jpg',
]
}
},
onLoad(options){
if(options.OrderTypeStr){
this.msg.OrderTypeStr = options.OrderTypeStr
}
},
created() {
// #ifdef MP-AG
this.getEnumList()
// #endif
},
methods:{
getEnumList() {
this.apipost("CarSingle_post_GetOrderTypeEnumList", {}, (res) => {
if (res.resultCode == 1) {
this.orderTypeList = []
res.data.forEach(x=>{
if(x.Name!='Jalan酒店'){
let icon = ''
if(x.Id=='1') icon = this.icons[1]
if(x.Id=='2') icon = this.icons[0]
if(x.Id=='3') icon = this.icons[3]
if(x.Id=='4') icon = this.icons[5]
if(x.Id=='5') icon = this.icons[4]
if(x.Id=='6') icon = this.icons[2]
let obj = {
Id: x.Id,
Name: x.Name +'订单',
icon: icon
}
this.orderTypeList.push(obj)
}
})
}
}, (err) => {
uni.showToast({
title: err.message,
icon: "none",
});
})
},
research(){
this.msg.pageIndex = 1;
this.msg.pageSize = 10;
this.status = "loadmore";
this.g = [];
this.page_count = 1;
this.init()
},
getTypeId(item) {
this.msg.OrderTypeStr = item.Id
this.msg.keyword = item.Name
this.research()
},
change(item){
this.msg.keyword = item.keyword
this.msg.OrderTypeStr = item.OrderTypeStr
this.research()
},
init(){
if(!this.msg.keyword) return
if(!this.msg.OrderTypeStr) {
this.msg.GoodsName = this.msg.keyword
}else {
this.msg.GoodsName = ''
}
uni.showLoading({
title: '加载中...'
})
// #ifdef MP-DI
this.OrderPageZK();
// #endif
// #ifdef MP-AG
this.OrderPageTY();
// #endif
},
OrderPageTY(){
this.apipost('b2b_get_GetB2BAllOrderPageList',this.msg,
res => {
if (res.resultCode == 1) {
res.data.pageData.forEach(x=>{
x.goodTypeEnum = mappingListType(x.goodsType)
x.orderStatusInfo = EnumHelper.ParseToEnum(OrderStatusEnum,x.orderStatus,'value')
})
this.g = this.g.concat(res.data.pageData);
this.page_count = res.data.pageCount;
if (this.page_count == 1) {
this.status = "nomore";
}
uni.hideLoading()
}
},
err => {
uni.hideLoading()
}
);
},
OrderPageZK(){
this.apipost('GetMyDirectOrderPageList_post',this.msg,
res => {
if (res.resultCode == 1) {
res.data.pageData.forEach(x=>{
x.goodTypeEnum = mappingListType(x.goodsType)
x.orderStatusInfo = EnumHelper.ParseToEnum(OrderStatusEnum,x.orderStatus,'value')
})
this.g = this.g.concat(res.data.pageData);
this.page_count = res.data.pageCount;
if (this.page_count == 1) {
this.status = "nomore";
}
uni.hideLoading()
}
},
err => {
uni.hideLoading()
}
);
},
lower(e) {
if (this.msg.pageIndex < this.page_count) {
this.msg.pageIndex++;
this.status = "loading";
this.init();
} else {
this.status = "nomore";
}
},
reloadUserinfo() {
this.u = uni.getStorageSync("mall_UserInfo");
this.getOrderStatusList();
},
goback() {
uni.navigateBack()
},
},
}
</script>
<template>
<view class="carrHeader" :style="[titleStyle]">
<view class="carrHeaderBox">
<view class="carrHeader-left">
<view class="carrHeader-left-icon" @click="goBack">
<u-icon name="arrow-left" size="38" color="#000"></u-icon>
</view>
</view>
<view class="carrHeader-title">
<slot>{{title?title:''}}</slot>
</view>
<view class="carrHeader-right row">
<view class="carrHeader-S row items-center justify-center">
<img src="https://viitto-1301420277.cos.ap-chengdu.myqcloud.com/Upload/Goods/638772246934795585.jpg" @click="goSearch"/>
</view>
<view class="carrHeader-T row items-center justify-center">
<img src="https://viitto-1301420277.cos.ap-chengdu.myqcloud.com/Upload/Goods/638772247012340060.jpg" @click="showModal=true"/>
</view>
</view>
</view>
<u-popup v-model="showModal" mode="bottom" length="50%" border-radius="50">
<view style="padding: 0 20rpx;">
<view class="AggregateTitle">订单类型</view>
<view class="AggregateTypeBox row">
<view class="AggregateType" v-for="(item,index) in orderTypeList" :key="index"
:class="[params.OrderTypeStr==item.Id?'active':'']"
@click="getTypeId(item)">
<text>{{ item.Name }}</text>
</view>
</view>
</view>
</u-popup>
</view>
</template>
<script>
export default {
props:['title','params'],
data() {
return {
titleStyle:{},
orderTypeList: [
{
Id: '',
Name: '所有订单'
},
{
Id: '1,2,3',
Name: '线路订单'
},
{
Id: '16',
Name: '机票订单'
},
{
Id: '15',
Name: '签证订单'
},
{
Id: '8,9,10,11',
Name: '酒店住宿'
},
{
Id: '12,13,14',
Name: '包车服务'
},
{
Id: '4,5,6,7',
Name: '景点门票'
}
],
showModal: false,
icons:[
'https://viitto-1301420277.cos.ap-chengdu.myqcloud.com/Upload/Goods/638772246968492575.jpg',
'https://viitto-1301420277.cos.ap-chengdu.myqcloud.com/Upload/Goods/638772247052998903.jpg',
'https://viitto-1301420277.cos.ap-chengdu.myqcloud.com/Upload/Goods/638772247084971514.jpg',
'https://viitto-1301420277.cos.ap-chengdu.myqcloud.com/Upload/Goods/638772247342163794.jpg',
'https://viitto-1301420277.cos.ap-chengdu.myqcloud.com/Upload/Goods/638772247230118434.jpg',
'https://viitto-1301420277.cos.ap-chengdu.myqcloud.com/Upload/Goods/638772247194112722.jpg',
]
}
},
mounted() {
// #ifdef MP-AG
this.getEnumList()
// #endif
},
methods:{
getEnumList() {
this.apipost("CarSingle_post_GetOrderTypeEnumList", {}, (res) => {
if (res.resultCode == 1) {
this.orderTypeList = []
res.data.forEach(x=>{
if(x.Name!='Jalan酒店'){
let icon = ''
if(x.Id=='1') icon = this.icons[1]
if(x.Id=='2') icon = this.icons[0]
if(x.Id=='3') icon = this.icons[3]
if(x.Id=='4') icon = this.icons[5]
if(x.Id=='5') icon = this.icons[4]
if(x.Id=='6') icon = this.icons[2]
let obj = {
Id: x.Id,
Name: x.Name +'订单',
icon: icon
}
this.orderTypeList.push(obj)
}
})
// this.orderTypeList = res.data
this.orderTypeList.unshift({
Id: '',
Name: '所有订单'
})
}
}, (err) => {
uni.showToast({
title: err.message,
icon: "none",
});
})
},
getTypeId(item) {
this.$emit('change', item)
this.showModal = false;
},
goSearch(){
// ?OrderTypeStr=${this.params.OrderTypeStr}
uni.navigateTo({
url: `/pages/AggregateOrders/AggregateOrdersSearch`
})
},
goBack(){
uni.navigateBack({delta:-1})
}
}
}
</script>
<style lang="scss" scoped>
@import url("@/asset/css/flex.css");
.AggregateTitle{
padding: 40rpx 30rpx 40rpx 30rpx;
font-size: 32rpx;
font-weight: bold;
text-align: left;
}
.AggregateTypeBox{
flex-wrap: wrap;
padding: 0 15rpx;
}
.AggregateType{
width: 33.33%;
padding: 0 15rpx;
margin-bottom: 30rpx;
}
.AggregateType text{
display: block;
line-height: 60rpx;
background: #f5f5f5;
border: 1rpx solid #E3E6D2;
border-radius: 60rpx;
text-align: center;
}
.AggregateType.active text{
border: 1rpx solid #B99846;
color: #B99846;
}
.carrHeader-title{
position: relative;
left: 60rpx;
right: 0;
text-align: left;
font-size: 32rpx;
}
.carrHeader-left{
position: absolute;
left: 32rpx;
bottom: 23rpx;
z-index: 3;
}
.carrHeaderBox{
width: 100%;
height: 88rpx;
padding: 0 32rpx;
display: flex;
align-items: center;
justify-content: space-between;
position: relative;
}
.carrHeader{
padding-top: 35rpx;
}
.carrHeader-right{
padding-right: 160rpx;
display: flex;
}
.carrHeader-right img{
width: 35rpx;
height: 35rpx;
}
.carrHeader-S{
width: 63rpx;
height: 63rpx;
margin-right: 20rpx;
}
.carrHeader-T{
width: 63rpx;
height: 63rpx;
border-radius: 50%;
border: 1px solid #CFC089;
}
</style>
\ No newline at end of file
This diff is collapsed.
<template>
<view class="carrHeader">
<view class="carrHeaderBox">
<view class="carrHeader-left">
<view class="carrHeader-left-icon" @click="goBack">
<u-icon name="arrow-left" size="38" color="#000"></u-icon>
</view>
</view>
<view class="carrHeader-right row items-center col">
<view>
<input class="uni-input col"
placeholder="请输入关键词"
v-model="msg.keyword"
@input="search"/>
<u-icon v-if="msg.keyword" class="carrHeader-Rclose" name="close" size="38" color="#ACACAC"
@click="close"></u-icon>
</view>
<text @click="search">搜索</text>
</view>
</view>
</view>
</template>
<script>
export default {
props:['params'],
data() {
return {
msg: {
GoodsName: '',
OrderTypeStr: '',
keyword: '',
}
}
},
watch:{
params:{
handler(newVal,oldVal){
this.msg.keyword = newVal.keyword
},
deep:true,
}
},
mounted() {
},
methods:{
close() {
this.msg.keyword = ''
this.msg.OrderTypeStr = ''
this.search()
},
search() {
this.$emit('change', this.msg)
},
goBack(){
uni.navigateBack({delta:-1})
}
}
}
</script>
<style lang="scss" scoped>
@import url("@/asset/css/flex.css");
.AggregateTitle{
padding: 20rpx 30rpx 30rpx 30rpx;
font-size: 32rpx;
font-weight: bold;
text-align: left;
}
.AggregateTypeBox{
flex-wrap: wrap;
}
.AggregateType{
width: 33.33%;
padding: 0 30rpx;
margin-bottom: 20rpx;
}
.AggregateType text{
display: block;
padding: 10rpx 0;
background: #f5f5f5;
border-radius: 30rpx;
text-align: center;
}
.AggregateType.active text{
background: #171717;
color: #fff;
}
.carrHeader-title{
position: relative;
left: 60rpx;
right: 0;
text-align: left;
font-size: 32rpx;
}
.carrHeader-left{
position: absolute;
left: 32rpx;
bottom: 23rpx;
z-index: 3;
}
.carrHeaderBox{
width: 100%;
height: 88rpx;
padding: 0 32rpx;
display: flex;
align-items: center;
justify-content: space-between;
position: relative;
}
.carrHeader{
padding-top: 35rpx;
}
.carrHeader-right{
width: 1px;
flex: 1;
display: flex;
padding-left: 60rpx;
padding-right: 160rpx;
}
.carrHeader-right view{
width: 1px;
flex: 1;
border-radius: 30rpx;
padding: 10rpx 30rpx;
background: #F4F4F4;
margin-right: 20rpx;
position: relative;
}
.carrHeader-Rclose{
position: absolute;
right: 20rpx;
top: 11rpx;
z-index: 3;
}
.uni-input{
}
</style>
\ No newline at end of file
......@@ -4,25 +4,36 @@
<template v-if="order.CreateDate" v-for="x in lowData">
<view class="f-order-card" style="background:transparent;" :style="{color:orderStyle.color}">
<view class="title row items-center">
<!-- #ifdef MP-DI -->
<u-icon v-if="order.OrderStatus==1" name='clock' custom-prefix="tffont" size="44"></u-icon>
<u-icon v-if="order.OrderStatus==2||order.OrderStatus==3" name='checkmark' custom-prefix="tffont" size="44"></u-icon>
<u-icon v-if="order.OrderStatus==4" name='close-circle-o' custom-prefix="tffont" size="44"></u-icon>
<text class="q-ml-sm col bold">
{{(order.OrderStatus==1?'待支付':(order.OrderStatus==2?'待出行':order.OrderStatus==4?'已取消':order.OrderStatus==3?'已完成':order.OrderStatus==5?'售后':''))}}
</text>
<!-- <u-count-down :timestamp="endts" v-if="order.OrderStatus==1" color="#ffffffdd" separator-color="#ffffffdd" :show-days="false" bg-color="transparent"></u-count-down> -->
<!-- #endif -->
<!-- #ifdef MP-AG -->
<u-icon v-if="order.status==0" name='clock' custom-prefix="tffont" size="44"></u-icon>
<u-icon v-if="order.status==1" name='checkmark' custom-prefix="tffont" size="44"></u-icon>
<u-icon v-if="order.status==2" name='close-circle-o' custom-prefix="tffont" size="44"></u-icon>
<text class="q-ml-sm col bold">
{{(order.status==0?'待支付':(order.status==1?'正常':'已取消'))}}
</text>
<u-count-down :timestamp="endts" v-if="order.status==0" color="#ffffffdd" separator-color="#ffffffdd" :show-days="false" bg-color="transparent"></u-count-down>
<u-icon v-if="order.status==1" name='checkmark' custom-prefix="tffont" size="44"></u-icon>
<u-icon v-if="order.status==2" name='close-circle-o' custom-prefix="tffont" size="44"></u-icon>
<text class="q-ml-sm col bold">
{{(order.status==0?'待支付':(order.status==1?'正常':'已取消'))}}
</text>
<u-count-down :timestamp="endts" v-if="order.status==0" color="#ffffffdd" separator-color="#ffffffdd" :show-days="false" bg-color="transparent"></u-count-down>
<!-- #endif -->
</view>
<view class="content q-mt-sm">
<view v-if="order.status==0">
<view v-if="order.status==0||(order.OrderStatus&&order.OrderStatus==1)">
<view>
<text>请您{{dielineTime}}支付:¥</text>
<text>请您<!-- #ifdef MP-AG -->{{dielineTime}}<!-- #endif -->支付:¥</text>
<text class="bold">{{order.PreferPrice}}</text>
</view>
<view class="small">
完成支付才能锁定机位
</view>
</view>
<view class="small" v-else-if="order.status==2">
<view class="small" v-else-if="order.status==2||(order.OrderStatus&&order.OrderStatus==3)">
取消原因:用户超时未付款,自动取消
</view>
<view class="small" v-else>
......@@ -210,12 +221,12 @@
<view class="text-center cities-name" @click="goCancelZK" v-if="order.OrderStatus==1" style="background-color: #fff;border: 1px solid #1d1d20;flex:1; border-radius: 10rpx;height: 80rpx; line-height: 80rpx;color:#333">取消订单</view>
<view class="text-center cities-name" @click="submitGetCodeByOrderNo" v-if="order.OrderStatus==1" style="background-color: #1d1d20;flex:1;border-radius: 10rpx;height: 80rpx; line-height: 80rpx;color:#EEF1F4;margin-left: 20rpx;">立即支付</view>
</view>
<view class="text-center cities-name" @click="requeryHandle" v-if="order.OrderStatus!=1" style="background-color: #1d1d20;border-radius: 10rpx;height: 80rpx; line-height: 80rpx;color:#EEF1F4">再次预定</view>
<!-- #endif -->
<!-- #ifdef MP-AG -->
<view class="text-center cities-name" @click="cancelVisible=true" v-if="order.status==0" style="background-color: #1d1d20;border-radius: 10rpx;height: 80rpx; line-height: 80rpx;color:#EEF1F4">取消订单</view>
<view class="text-center cities-name" @click="requeryHandle" v-if="order.status==2" style="background-color: #1d1d20;border-radius: 10rpx;height: 80rpx; line-height: 80rpx;color:#EEF1F4">再次预定</view>
<!-- #endif -->
<view class="text-center cities-name" @click="requeryHandle" v-if="order.status==2" style="background-color: #1d1d20;border-radius: 10rpx;height: 80rpx; line-height: 80rpx;color:#EEF1F4">再次预定</view>
<view class="row" v-if="order.ResultPrice && order.status==1">
<view class="col" style="color: #9999A5;">
<text class="small">已支付:¥ </text>
......
......@@ -334,6 +334,18 @@
color: #FF3166;
font-family: nav-font;
}
.priceMoerBox{
font-size:24rpx;
color:#999999;
display: flex;
}
.priceMoer{
margin-left: 20rpx;
display: flex;
}
.priceMoer u-icon{
transform: rotate(180deg);
}
</style>
<template>
<div class="jz_Line">
......@@ -491,8 +503,20 @@
</view>
</view>
<view class="price" style="display:flex;justify-content: space-between;align-items: center;">
<view style="font-size:24rpx;color:#999999;">
最近团期:{{item.startDate}}
<view class="priceMoerBox">
最近团期:
<!-- #ifdef MP-DI -->
<template v-for="(items,i) in item.priceList">
<text v-if="i<1" :key="i">{{ items.startDates }}</text>
</template>
<view class="priceMoer" v-if="item.priceList.length>1">
更多
<u-icon name="arrow-left" color="#999999" size="24"></u-icon>
</view>
<!-- #endif -->
<!-- #ifdef MP-AG -->
{{item.startDate}}
<!-- #endif -->
</view>
</view>
......@@ -556,7 +580,8 @@
PlaceIds: '',
lineId: 0,
teamType: "", //团队类型 1-小包团
pName:""
pName:"",
CusType: null,
},
time: '',
currentLineId: null,
......@@ -656,6 +681,12 @@
// #endif
},
onLoad(option) {
// #ifdef MP-DI
this.msg.CusType = 2
// #endif
// #ifdef MP-AG
this.msg.CusType = 1
// #endif
console.log("option", option);
if (option && option.LineTeamIds) {
let NewArr = [];
......@@ -938,8 +969,9 @@
title: '加载中',
icon: 'none'
})
this.apipost(
"b2b_get_GetLXYTravelPageList",
"b2b_get_GetLxyTravelPageV2",
this.msg,
res => {
if (res.resultCode == 1) {
......
......@@ -361,45 +361,81 @@
//取消订单
goCancel(item) {
//未付款-调用后台取消
let that = this
if(that.submitCancel) return
if (
(item.paymentTime == null || item.paymentTime == "") &&
(item.orderState == 2 || item.orderState == 3)
) {
this.apipost(
"sellorder_post_B2BRemoveOrder", {
ID: item.orderId,
},
(res) => {
if (res.resultCode == 1) {
uni.showToast({
title: "操作成功",
icon: "success",
});
this.research();
wx.showModal({
title: '提示',
content: '确定取消订单?',
success: (tip) => {
if (tip.confirm) {
that.submitCancel = true
that.apipost(
"sellorder_post_B2BRemoveOrder", {
ID: item.orderId,
},
(res) => {
that.submitCancel = false
if (res.resultCode == 1) {
uni.showToast({
title: "操作成功",
icon: "success",
});
that.research();
}
},
(err) => {
that.submitCancel = false
uni.showToast({
title: err.message,
icon: "none",
})
}
);
}
},
(err) => {}
);
}
})
} else {
let msg = {
OrderId: item.orderId,
UserId: uni.getStorageSync("mall_UserInfo").UserId,
};
//已付款取消申请
this.apipost(
"sellorder_post_AppletUserCancelOrder",
msg,
(res) => {
if (res.resultCode == 1) {
uni.showToast({
title: "操作成功",
icon: "success",
});
this.research();
} else {}
},
null
);
wx.showModal({
title: '提示',
content: '确定取消订单?',
success: (tip) => {
if (tip.confirm) {
that.submitCancel = true
that.apipost(
"sellorder_post_AppletUserCancelOrder",
msg,
(res) => {
that.submitCancel = false
if (res.resultCode == 1) {
uni.showToast({
title: "操作成功",
icon: "success",
});
that.research();
}
},
err=>{
that.submitCancel = false
uni.showToast({
title: err.message,
icon: "none",
})
}
);
}
}
})
}
},
goCancelZK(item) {
......
......@@ -867,7 +867,7 @@
this.showPayBtn = true;
}else if(status==2){
this.orderStatus.code = 1;
this.orderStatus.text = "已付款";
this.orderStatus.text = "待出行";
this.showPayBtn = false;
}else if(status==3){
this.orderStatus.code = 1;
......
......@@ -366,17 +366,20 @@
//取消订单
goCancel(item) {
let that = this
if(that.submitCancel) return
wx.showModal({
title: '提示',
content: '确定取消订单?',
success: (tip) => {
if (tip.confirm) {
that.submitCancel = true
that.apipost(
"b2c_get_SetB2BOrderCancel", {
OrderId: item.id,
OrderSource: 5
},
(res) => {
that.submitCancel = false
if (res.resultCode == 1) {
uni.showToast({
title: "操作成功",
......@@ -385,7 +388,13 @@
that.research();
}
},
(err) => {}
(err) => {
that.submitCancel = false
uni.showToast({
title: err.message,
icon: "none",
})
}
);
}
}
......
......@@ -832,7 +832,7 @@
this.showPayBtn = true;
}else if(status==2){
this.orderStatus.code = 1;
this.orderStatus.text = "已付款";
this.orderStatus.text = "待出行";
this.showPayBtn = false;
}else if(status==3){
this.orderStatus.code = 1;
......@@ -859,7 +859,7 @@
this.showPayBtn = false;
} else if (status == 1&&(Income+PlatformTax)==TotalPrice) {
this.orderStatus.code = 1;
this.orderStatus.text = "已付款";
this.orderStatus.text = "待出行";
this.showPayBtn = false;
}
// #endif
......
......@@ -182,177 +182,7 @@ function setAttatchParameter(vm){
}
}
function changeMoneyToChinese(Num) { // 数字转中文大写
if (!Num) {
return '零'
}
var isNegative = false; // 是否负数
if (Num < 0) {
Num = -Num;
isNegative = true;
}
if (typeof Num == 'number') {
Num = Num.toString();
}
for (var i = Num.length - 1; i >= 0; i--) {
Num = Num.replace(",", ""); // 替换money中的“,”
Num = Num.replace(" ", ""); // 替换money中的空格
}
Num = Num.replace("¥", ""); // 替换掉可能出现的¥字符
if (isNaN(Num)) { // 验证输入的字符是否为数字
return;
}
// ---字符处理完毕,开始转换,转换采用前后两部分分别转换---//
let part = String(Num).split(".");
let newchar = "";
// 小数点前进行转化
for (var i = part[0].length - 1; i >= 0; i--) {
if (part[0].length > 10) {
// alertWarning("位数过大,无法计算");
return "";
} // 若数量超过拾亿单位,提示
let tmpnewchar = "";
let perchar = part[0].charAt(i);
switch (perchar) {
case "0":
tmpnewchar = "零" + tmpnewchar;
break;
case "1":
tmpnewchar = "壹" + tmpnewchar;
break;
case "2":
tmpnewchar = "贰" + tmpnewchar;
break;
case "3":
tmpnewchar = "叁" + tmpnewchar;
break;
case "4":
tmpnewchar = "肆" + tmpnewchar;
break;
case "5":
tmpnewchar = "伍" + tmpnewchar;
break;
case "6":
tmpnewchar = "陆" + tmpnewchar;
break;
case "7":
tmpnewchar = "柒" + tmpnewchar;
break;
case "8":
tmpnewchar = "捌" + tmpnewchar;
break;
case "9":
tmpnewchar = "玖" + tmpnewchar;
break;
}
switch (part[0].length - i - 1) {
case 0:
tmpnewchar = tmpnewchar + "元";
break;
case 1:
if (perchar != 0)
tmpnewchar = tmpnewchar + "拾";
break;
case 2:
if (perchar != 0)
tmpnewchar = tmpnewchar + "佰";
break;
case 3:
if (perchar != 0)
tmpnewchar = tmpnewchar + "仟";
break;
case 4:
tmpnewchar = tmpnewchar + "万";
break;
case 5:
if (perchar != 0)
tmpnewchar = tmpnewchar + "拾";
break;
case 6:
if (perchar != 0)
tmpnewchar = tmpnewchar + "佰";
break;
case 7:
if (perchar != 0)
tmpnewchar = tmpnewchar + "仟";
break;
case 8:
tmpnewchar = tmpnewchar + "亿";
break;
case 9:
tmpnewchar = tmpnewchar + "拾";
break;
}
newchar = tmpnewchar + newchar;
}
// 小数点之后进行转化
if (Num.indexOf(".") != -1) {
if (part[1].length > 2) {
// alertWarning("小数点之后只能保留两位,系统将自动截段");
part[1] = part[1].substr(0, 2);
}
for (var i = 0; i < part[1].length; i++) {
let tmpnewchar = "";
let perchar = part[1].charAt(i);
switch (perchar) {
case "0":
tmpnewchar = "零" + tmpnewchar;
break;
case "1":
tmpnewchar = "壹" + tmpnewchar;
break;
case "2":
tmpnewchar = "贰" + tmpnewchar;
break;
case "3":
tmpnewchar = "叁" + tmpnewchar;
break;
case "4":
tmpnewchar = "肆" + tmpnewchar;
break;
case "5":
tmpnewchar = "伍" + tmpnewchar;
break;
case "6":
tmpnewchar = "陆" + tmpnewchar;
break;
case "7":
tmpnewchar = "柒" + tmpnewchar;
break;
case "8":
tmpnewchar = "捌" + tmpnewchar;
break;
case "9":
tmpnewchar = "玖" + tmpnewchar;
break;
}
if (i == 0)
tmpnewchar = tmpnewchar + "角";
if (i == 1)
tmpnewchar = tmpnewchar + "分";
newchar = newchar + tmpnewchar;
}
}
// 替换所有无用汉字
while (newchar.search("零零") != -1)
newchar = newchar.replace("零零", "零");
newchar = newchar.replace("零亿", "亿");
newchar = newchar.replace("亿万", "亿");
newchar = newchar.replace("零万", "万");
newchar = newchar.replace("零元", "");
newchar = newchar.replace("零角", "");
newchar = newchar.replace("零分", "");
if (newchar.charAt(newchar.length - 1) == "元" || newchar.charAt(newchar.length - 1) == "角") {
newchar = newchar + "整";
}
if (isNegative) {
newchar = '负' + newchar;
}
return newchar;
}
export default {
calcContentHeight,
SystemInfo,
......@@ -363,6 +193,5 @@ export default {
// #endif
VersionUpdate,
formatDates,
changeMoneyToChinese,
setAttatchParameter
}
\ No newline at end of file
const EnumHelper = {
ParseToEnum(TEnum, value, comparison = '') {
if (Object.isFrozen) {
let t = Object.values(TEnum)
let r = t.find(x => (comparison != '' && x[comparison] == value) || (comparison == '' && x == value))
return r
} else {
throw new Error("这不是一个枚举类型");
}
}
}
export default EnumHelper
\ No newline at end of file
const ListProductTypeEnum = Object.freeze({
TRIP: {
value: 1,
desc: '线路旅游',
bgColor: 'bg-pink-2',
color: 'text-pink'
},
SCENIC: {
value: 2,
desc: '景点门票',
bgColor: 'bg-purple-2',
color: 'text-purple'
},
HOTEL: {
value: 3,
desc: '酒店住宿',
bgColor: 'bg-indigo-2',
color: 'text-indigo'
},
CAR: {
value: 4,
desc: '目的地用车',
bgColor: 'bg-teal-2',
color: 'text-teal'
},
JALAN: {
value: 5,
desc: '酒店住宿',
bgColor: 'bg-secondary-2',
color: 'text-secondary'
},
VISA: {
value: 6,
desc: '签证',
bgColor: 'bg-primary-2',
color: 'text-primary'
},
PLANE: {
value: 7,
desc: '机票',
bgColor: 'bg-primary-2',
color: 'text-primary'
},
})
export default ListProductTypeEnum
\ No newline at end of file
const OrderStatusEnum = Object.freeze({
UN_PAY: {
value: 1,
desc: '待付款',
icon: 'iconfont icontime1',
color: 'text-orange'
},
PAYED: {
value: 2,
desc: '待出行',
icon: 'iconfont iconflag',
color: 'text-green'
},
FINISH: {
value: 3,
desc: '已完成',
icon: 'iconfont iconsuccess',
color: 'text-dark'
},
CANCEL: {
value: 4,
desc: '已取消',
icon: 'iconfont iconminus',
color: 'text-grey-6'
},
AFTERSALES: {
value: 5,
desc: '售后',
icon: 'iconfont iconminus',
color: 'text-grey-6'
}
})
export default OrderStatusEnum
\ No newline at end of file
import EnumHelper from "./enumhelper.js"
import ListProductTypeEnum from "./listProductType.js"
const ProductTypeEnum = Object.freeze({
/**
* 一日游
*/
ONE_DAY: {
value: 1,
desc: '当地游产品'
},
/**
* 多日游
*/
TEAM_TRIP: {
value: 2,
desc: '出境游产品'
},
/**
* 小包团
*/
UNIT_TRIP: {
value: 3,
desc: '小包团产品'
},
/**
* 景点门票
*/
SCENIC_SPOT: {
value: 4,
desc: '景点门票产品'
},
/**
* 主题乐园
*/
THEME_PART: {
value: 5,
desc: '主题乐园门票'
},
/**
* 博物馆
*/
MUSEUM: {
value: 6,
desc: '博物馆门票'
},
/**
* 历史景点
*/
HISTORY: {
value: 7,
desc: '历史景点门票'
},
/**
* 温泉酒店
*/
HOT_SPRING: {
value: 8,
desc: '温泉酒店产品'
},
/**
* 星级酒店
*/
STAR_HOTEL: {
value: 9,
desc: '星级酒店产品'
},
/**
* 度假酒店
*/
RESORT_HOTEL: {
value: 10,
desc: '度假酒店产品'
},
/**
* 民宿
*/
HOMESTAY: {
value: 11,
desc: '民宿产品'
},
/**
* 包车
*/
CHARTER: {
value: 12,
desc: '包车产品'
},
/**
* 接机
*/
PICK_UP: {
value: 13,
desc: '接机产品'
},
/**
* 送机
*/
DROP_OFF: {
value: 14,
desc: '送机产品'
},
VISA: {
value: 15,
desc: '签证产品'
},
PLANE: {
value: 16,
desc: '机票产品'
}
})
const mappingRules = [
[-1],
[1, 2, 3],
[4, 5, 6, 7],
[-1],
[12, 13, 14],
[8, 9, 10, 11],
[15],
[16]
]
const mappingListType = (value) => {
let val = mappingRules.findIndex(x => {
return x.indexOf(value) != -1
})
if (val && val > 0) {
return EnumHelper.ParseToEnum(ListProductTypeEnum, val, 'value')
}
return {}
}
const transProductEnum = (value) => {
return mappingRules[value]
}
export default ProductTypeEnum
export { mappingListType, transProductEnum }
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment