yuwenjun1997 3 år sedan
förälder
incheckning
6bf3a39eba

+ 4 - 4
components/cm-module/cm-header-nav/cm-header-nav.vue

@@ -30,7 +30,7 @@
             </view>
 
             <!-- 标题 -->
-            <view class="header-title" :class="align">
+            <view class="header-title" :class="align" :style="{fontSize: systemInfo.fontSizeSetting + 'px'}">
                 <text>{{ title | formatTitle }}</text>
                 <text
                     class="btn iconfont icon-sousuo"
@@ -91,7 +91,7 @@ export default {
         // 按钮组边框颜色
         borderColor: {
             type: String,
-            default: '#ccc'
+            default: '#eee'
         },
         // 导航栏背景色
         bgColor: {
@@ -102,7 +102,7 @@ export default {
     filters:{
         formatTitle(title){
             if(!title) return '页面标题'
-            return title.substring(0,6) + '...'
+            return title.substring(0,6) + (title.length > 6 ? '...' : '')
         }
     },
     data() {
@@ -129,6 +129,7 @@ export default {
         // 导航栏样式
         headerNavStyle() {
             const { height, top } = this.menuButtonInfo
+			this.$emit('init', { height: height + top })
             return {
                 height: height + 'px',
                 paddingTop: top + 'px',
@@ -237,7 +238,6 @@ export default {
     .header-title {
         display: flex;
         flex: 1;
-        font-size: 14px;
         justify-content: center;
 
         .btn {

+ 197 - 176
components/cm-module/cm-search/cm-search.vue

@@ -1,188 +1,209 @@
 <template>
-    <view class="cm-search">
-        <view class="search-control" @click.stop="handleClick">
-            <view class="search-input">
-                <text class="search-icon iconfont icon-sousuo"></text>
-                <input
-                    type="text"
-                    confirm-type="search"
-                    :placeholder="placeholder"
-                    v-model="inputValue"
-                    :focus="true"
-                />
-                <text v-if="clearable && inputValue" class="clearable iconfont icon-quxiao" @click="clearValue"></text>
-            </view>
-            <view class="search-btn" @click="handleSearch(inputValue)">搜索</view>
-        </view>
-
-        <template v-if="keywordVisible">
-            <view class="hot-keyword">
-                <view class="title"> <text>搜索历史</text> <text class="clear iconfont icon-shanchu"></text> </view>
-                <view class="keyword-list"> <view class="keyword" @click="handleSearch('测试')">测试</view> </view>
-            </view>
-            <view class="mask"></view>
-        </template>
-    </view>
+	<view class="cm-search">
+		<view class="search-control" @click.stop="handleClick">
+			<view class="search-input">
+				<text class="search-icon iconfont icon-sousuo"></text>
+				<input
+					type="text"
+					confirm-type="search"
+					:placeholder="placeholder"
+					v-model="inputValue"
+					:focus="false"
+					@focus="$emit('focus')"
+					@confirm="handleSearch(inputValue)"
+				/>
+				<text v-if="clearable && inputValue" class="clearable iconfont icon-quxiao" @click="clearValue"></text>
+			</view>
+			<view class="search-btn" @click="handleSearch(inputValue)">搜索</view>
+		</view>
+
+		<template v-if="keywordVisible && keywordList.length > 0">
+			<view class="hot-keyword">
+				<view class="title">
+					<text>搜索历史</text>
+					<text class="clear iconfont icon-shanchu" @click="$emit('remove')"></text>
+				</view>
+				<view class="keyword-list">
+					<view
+						class="keyword"
+						@click="handleSearch('测试')"
+						v-for="(keyword, index) in keywordList"
+						:key="index"
+						v-text="keyword"
+					></view>
+				</view>
+			</view>
+			<view class="mask"></view>
+		</template>
+	</view>
 </template>
 
 <script>
 export default {
-    name: 'CmSearch',
-    props: {
-        // 占位字符
-        placeholder: {
-            type: String,
-            default: '请输入搜索关键字'
-        },
-        clearable: {
-            type: Boolean,
-            default: true
-        },
-
-        disabled: {
-            type: Boolean,
-            default: false
-        },
-
-        keywordList: {
-            type: Array,
-            default: () => []
-        },
-
-        keywordVisible: {
-            type: Boolean,
-            default: true
-        }
-    },
-    watch: {
-        inputValue(nVal) {
-            this.$emit('input', nVal)
-        }
-    },
-    data() {
-        return {
-            inputValue: ''
-        }
-    },
-    methods: {
-        clearValue() {
-            this.inputValue = ''
-            this.$emit('input', '')
-        },
-        handleClick() {
-            if (!this.disabled) return
-            this.$emit('goSearch')
-        },
-        handleSearch() {
-            if (this.disabled) return
-        }
-    }
+	name: 'CmSearch',
+	props: {
+		// 占位字符
+		placeholder: {
+			type: String,
+			default: '请输入搜索关键字'
+		},
+		clearable: {
+			type: Boolean,
+			default: true
+		},
+
+		disabled: {
+			type: Boolean,
+			default: false
+		},
+
+		keywordList: {
+			type: Array,
+			default: () => []
+		},
+
+		keywordVisible: {
+			type: Boolean,
+			default: true
+		}
+	},
+	watch: {
+		inputValue(nVal) {
+			this.$emit('input', nVal)
+		}
+	},
+	data() {
+		return {
+			inputValue: ''
+		}
+	},
+	methods: {
+		clearValue() {
+			this.inputValue = ''
+			this.$emit('clear')
+		},
+		handleClick() {
+			if (!this.disabled) return
+			this.$emit('goSearch')
+		},
+		handleSearch(keyword) {
+			if (this.disabled) return
+			this.inputValue = keyword
+			this.$emit('search')
+		}
+	}
 }
 </script>
 
 <style lang="scss" scoped>
 .cm-search {
-    position: relative;
-
-    .hot-keyword {
-        position: relative;
-        z-index: 999;
-        width: 100%;
-        background: #fff;
-        border-top: 1px solid #f7f7f7;
-
-        box-sizing: border-box;
-        padding: 0 24rpx 32rpx;
-
-        .title {
-            position: relative;
-            font-size: 26rpx;
-            padding: 24rpx 0;
-            color: #333;
-            font-weight: bold;
-
-            .clear {
-                position: absolute;
-                font-weight: normal;
-                right: 0;
-                top: 50%;
-                transform: translateY(-50%);
-            }
-        }
-
-        .keyword {
-            display: inline-block;
-            margin-right: 18rpx;
-            font-size: 24rpx;
-            line-height: 40rpx;
-            padding: 0 16rpx;
-            border-radius: 20rpx;
-            background: #eee;
-            color: #333;
-        }
-    }
-
-    .mask {
-        position: fixed;
-        top: 0;
-        left: 0;
-        z-index: 998;
-    }
-
-    .search-control {
-        position: relative;
-        z-index: 999;
-
-        display: flex;
-        justify-content: space-between;
-        align-items: center;
-        height: 90rpx;
-        background: #fff;
-
-        padding: 0 24rpx;
-
-        .search-input {
-            flex: 1;
-            height: 60rpx;
-            line-height: 60rpx;
-            display: flex;
-            align-items: center;
-            position: relative;
-            padding-left: 74rpx;
-            font-size: 26rpx;
-            border-radius: 30rpx;
-            background: #f7f7f7;
-
-            input {
-                width: 100%;
-            }
-
-            .search-icon,
-            .clearable {
-                position: absolute;
-                top: 50%;
-                transform: translateY(-50%);
-                z-index: 9;
-            }
-
-            .search-icon {
-                left: 24rpx;
-            }
-
-            .clearable {
-                right: 24rpx;
-                color: #ccc;
-            }
-        }
-
-        .search-btn {
-            text-align: center;
-            width: 60rpx;
-            height: 60rpx;
-            line-height: 60rpx;
-            margin-left: 16rpx;
-            font-size: 26rpx;
-        }
-    }
+	position: relative;
+
+	.hot-keyword {
+		position: relative;
+		z-index: 999;
+		width: 100%;
+		background: #fff;
+
+		box-sizing: border-box;
+		padding: 0 24rpx 32rpx;
+
+		.title {
+			position: relative;
+			font-size: 26rpx;
+			padding: 24rpx 0;
+			color: #333;
+			font-weight: bold;
+
+			.clear {
+				position: absolute;
+				font-weight: normal;
+				right: 0;
+				top: 50%;
+				transform: translateY(-50%);
+			}
+		}
+
+		.keyword {
+			display: inline-block;
+			margin-right: 18rpx;
+			font-size: 24rpx;
+			line-height: 40rpx;
+			padding: 0 16rpx;
+			border-radius: 20rpx;
+			background: #eee;
+			color: #333;
+		}
+	}
+
+	.mask {
+		position: fixed;
+		width: 100vw;
+		height: 100vh;
+		top: 0;
+		left: 0;
+		z-index: 998;
+		background: #f7f7f7;
+	}
+
+	.search-control {
+		position: relative;
+		z-index: 999;
+
+		border-bottom: 1rpx solid #f7f7f7;
+
+		display: flex;
+		justify-content: space-between;
+		align-items: center;
+		height: 90rpx;
+		background: #fff;
+
+		box-sizing: border-box;
+
+		padding: 0 24rpx;
+
+		.search-input {
+			flex: 1;
+			height: 60rpx;
+			line-height: 60rpx;
+			display: flex;
+			align-items: center;
+			position: relative;
+			padding-left: 74rpx;
+			font-size: 26rpx;
+			border-radius: 30rpx;
+			background: #f7f7f7;
+
+			input {
+				width: 100%;
+			}
+
+			.search-icon,
+			.clearable {
+				position: absolute;
+				top: 50%;
+				transform: translateY(-50%);
+				z-index: 9;
+			}
+
+			.search-icon {
+				left: 24rpx;
+			}
+
+			.clearable {
+				right: 24rpx;
+				color: #ccc;
+			}
+		}
+
+		.search-btn {
+			text-align: center;
+			width: 60rpx;
+			height: 60rpx;
+			line-height: 60rpx;
+			margin-left: 16rpx;
+			font-size: 26rpx;
+		}
+	}
 }
 </style>

+ 3 - 1
pages/order/mixins/orderList.js

@@ -132,7 +132,9 @@ const orderList = {
             }
             try {
                 const res = await confirmFunc[type](order)
-                this.resetOrderList()
+				// 确认操作订单成功后的回调都在这里执行
+				this.$emit('orderAction')
+                // this.resetOrderList()
                 if (res && res.msg) this.$util.msg(res.msg, 2000, true, 'success')
             } catch (error) {
                 this.$util.msg(error.msg, 2000)

+ 6 - 0
pages/order/order-detail.vue

@@ -122,6 +122,12 @@ export default {
 	onLoad(option) {
 		this.orderId = option.orderId
 		this.getOrderDetail()
+		this.$on('orderAction', () => {
+			this.getOrderDetail()
+		})
+	},
+	beforeDestroy(){
+		this.$off('orderAction')
 	},
 	methods: {
 		getOrderDetail() {

+ 484 - 451
pages/order/order-list.vue

@@ -1,130 +1,137 @@
 <template>
-    <view class="order-list">
-        <tui-skeleton v-if="isRequest" loadingType="2"></tui-skeleton>
-
-        <cm-header-nav @leftClick="handleLeftClick" @rightClick="handleRightClick"></cm-header-nav>
-
-        <!-- 滑块 tabs -->
-        <view class="tabs">
-            <tui-tabs
-                :tabs="tabs"
-                :currentTab="currentTab"
-                @change="tabChange"
-                :sliderWidth="48"
-                color="#333333"
-                selectedColor="#FF457B"
-                sliderBgColor="#FF457B"
-            ></tui-tabs>
-        </view>
-
-        <!-- 协销筛选订单 -->
-        <cm-order-filter-control
-            @click="handleFilter"
-            :buttonGroup="screenTabBar"
-            v-if="isDealer"
-        ></cm-order-filter-control>
-
-        <swiper
-            :indicator-dots="false"
-            :autoplay="false"
-            class="swiper"
-            :class="!isDealer ? 'swiper-hegiht1' : 'swiper-hegiht2'"
-            :current="currentTab"
-            @change="swiperChange"
-        >
-            <swiper-item v-for="tab in tabs" :key="tab.state">
-                <!-- tab.orderList.length === 0 -->
-                <view class="order-empty" v-if="tab.orderList.length === 0">
-                    <cm-empty :image="emptyInfo.image" :message="emptyInfo.message" :offset="100"></cm-empty>
-                </view>
-                <scroll-view scroll-y="true" v-else class="scroll-box" @scrolltolower="scrollBottom">
-                    <template v-for="(orderInfo, orderIndex) in tab.orderList">
-                        <view class="grid" :key="orderIndex"></view>
-                        <view class="order-section" :key="orderIndex" @click="handleToDetail(orderInfo)">
-                            <!-- 订单信息 -->
-                            <view class="order-info">
-                                <view class="order-num">
-                                    <text class="label">订单编号:</text> <text>{{ orderInfo.orderNo }}</text>
-                                </view>
-                                <view class="order-time">
-                                    <text class="label">下单时间:</text> <text>{{ orderInfo.orderTime }}</text>
-                                </view>
-                                <view class="status">{{ stateExpFormat(orderInfo.status) }}</view>
-                            </view>
-                            <view class="line"></view>
-                            <view
-                                class="shop-order"
-                                v-for="(shopOrder, shopOrderIndex) in orderInfo.shopOrderList"
-                                :key="shopOrderIndex"
-                            >
-                                <!-- 供应商 -->
-                                <view class="origin">
-                                    <image class="cover" :src="shopOrder.shopLogo"></image>
-                                    <view class="name">{{ shopOrder.shopName }}</view>
-                                </view>
-                                <!-- 商品列表 -->
-                                <view class="goods-list">
-                                    <!-- 商品信息 -->
-                                    <view
-                                        class="order-goods"
-                                        v-for="goods in shopOrder.orderProductList"
-                                        :key="goods.productId"
-                                    >
-                                        <cm-order-prodcut :goods-data="goods"></cm-order-prodcut>
-                                    </view>
-                                </view>
-                            </view>
-                            <!-- 统计 -->
-                            <view class="total">
-                                <view class="count">共{{ orderInfo.productCount }}件商品</view>
-                                <view class="status">
-                                    <template v-if="['31', '32', '33'].includes(orderInfo.status)">
-                                        <text class="label">已支付:</text>
-                                        <text>¥{{ orderInfo.receiptAmount | formatPrice }}</text>
-                                    </template>
-                                    <template v-else>
-                                        <text class="label">待付总额:</text>
-                                        <text>¥{{ orderInfo.pendingPayments | formatPrice }}</text>
-                                    </template>
-                                </view>
-                            </view>
-                            <!-- 操作 -->
-                            <cm-order-control-nav
-                                v-if="orderInfo.userId == userId"
-                                :orderInfo="orderInfo"
-                                @confirm="handleConfirmClick"
-                            ></cm-order-control-nav>
-                        </view>
-                    </template>
-                    <!-- loading -->
-                    <view class="loading-more">
-                        <tui-loadmore :index="3" :visible="loadmore"></tui-loadmore>
-                        <tui-nomore :text="loadMoreText" :visible="!loadmore" backgroundColor="#f7f7f7"></tui-nomore>
-                    </view>
-                </scroll-view>
-            </swiper-item>
-        </swiper>
-
-        <!-- 操作弹窗 -->
-        <tui-modal
-            :show="modal"
-            :content="modalText"
-            :size="32"
-            :maskClosable="false"
-            color="#333"
-            shape="circle"
-            @click="handleModalConfirm"
-        ></tui-modal>
-        <!-- 加载框 -->
-        <cm-loading :visible="isSubLoading" :text="loadingText"></cm-loading>
-        <!-- 失效商品列表 -->
-        <cm-order-invalid-modal
-            :goodsList="invalidList"
-            :visible="buyAgainModal"
-            @confirm="buyAgainModalClick"
-            @cancel="buyAgainModalHide"
-        ></cm-order-invalid-modal>
-    </view>
+	<view class="order-list">
+		<tui-skeleton v-if="isRequest" loadingType="2"></tui-skeleton>
+		<cm-header-nav
+			@leftClick="handleLeftClick"
+			@rightClick="handleRightClick"
+			@init="headerNavInit"
+			:leftButtonGroup="leftButtonGroup"
+			title="订单列表"
+		></cm-header-nav>
+
+		<!-- 滑块 tabs -->
+		<view class="tabs">
+			<tui-tabs
+				:tabs="tabs"
+				:currentTab="currentTab"
+				@change="tabChange"
+				:sliderWidth="48"
+				color="#333333"
+				selectedColor="#FF457B"
+				sliderBgColor="#FF457B"
+			></tui-tabs>
+		</view>
+
+		<!-- 协销筛选订单 -->
+		<cm-order-filter-control
+			@click="handleFilter"
+			:buttonGroup="screenTabBar"
+			v-if="isDealer"
+		></cm-order-filter-control>
+
+		<swiper
+			:indicator-dots="false"
+			:autoplay="false"
+			class="swiper"
+			:style="[swiperHeight]"
+			:current="currentTab"
+			@change="swiperChange"
+		>
+			<swiper-item v-for="tab in tabs" :key="tab.state">
+				<!-- tab.orderList.length === 0 -->
+				<view class="order-empty" v-if="tab.orderList.length === 0">
+					<cm-empty :image="emptyInfo.image" :message="emptyInfo.message" :offset="100"></cm-empty>
+				</view>
+				<scroll-view scroll-y="true" v-else class="scroll-box" @scrolltolower="scrollBottom">
+					<template v-for="(orderInfo, orderIndex) in tab.orderList">
+						<view class="grid" :key="orderIndex"></view>
+						<view class="order-section" :key="orderIndex" @click="handleToDetail(orderInfo)">
+							<!-- 订单信息 -->
+							<view class="order-info">
+								<view class="order-num">
+									<text class="label">订单编号:</text>
+									<text>{{ orderInfo.orderNo }}</text>
+								</view>
+								<view class="order-time">
+									<text class="label">下单时间:</text>
+									<text>{{ orderInfo.orderTime }}</text>
+								</view>
+								<view class="status">{{ stateExpFormat(orderInfo.status) }}</view>
+							</view>
+							<view class="line"></view>
+							<view
+								class="shop-order"
+								v-for="(shopOrder, shopOrderIndex) in orderInfo.shopOrderList"
+								:key="shopOrderIndex"
+							>
+								<!-- 供应商 -->
+								<view class="origin">
+									<image class="cover" :src="shopOrder.shopLogo"></image>
+									<view class="name">{{ shopOrder.shopName }}</view>
+								</view>
+								<!-- 商品列表 -->
+								<view class="goods-list">
+									<!-- 商品信息 -->
+									<view
+										class="order-goods"
+										v-for="goods in shopOrder.orderProductList"
+										:key="goods.productId"
+									>
+										<cm-order-prodcut :goods-data="goods"></cm-order-prodcut>
+									</view>
+								</view>
+							</view>
+							<!-- 统计 -->
+							<view class="total">
+								<view class="count">共{{ orderInfo.productCount }}件商品</view>
+								<view class="status">
+									<template v-if="['31', '32', '33'].includes(orderInfo.status)">
+										<text class="label">已支付:</text>
+										<text>¥{{ orderInfo.receiptAmount | formatPrice }}</text>
+									</template>
+									<template v-else>
+										<text class="label">待付总额:</text>
+										<text>¥{{ orderInfo.pendingPayments | formatPrice }}</text>
+									</template>
+								</view>
+							</view>
+							<!-- 操作 -->
+							<cm-order-control-nav
+								v-if="orderInfo.userId == userId"
+								:orderInfo="orderInfo"
+								@confirm="handleConfirmClick"
+							></cm-order-control-nav>
+						</view>
+					</template>
+					<!-- loading -->
+					<view class="loading-more">
+						<tui-loadmore :index="3" :visible="loadmore"></tui-loadmore>
+						<tui-nomore :text="loadMoreText" :visible="!loadmore" backgroundColor="#f7f7f7"></tui-nomore>
+					</view>
+				</scroll-view>
+			</swiper-item>
+		</swiper>
+
+		<!-- 操作弹窗 -->
+		<tui-modal
+			:show="modal"
+			:content="modalText"
+			:size="32"
+			:maskClosable="false"
+			color="#333"
+			shape="circle"
+			@click="handleModalConfirm"
+		></tui-modal>
+		<!-- 加载框 -->
+		<cm-loading :visible="isSubLoading" :text="loadingText"></cm-loading>
+		<!-- 失效商品列表 -->
+		<cm-order-invalid-modal
+			:goodsList="invalidList"
+			:visible="buyAgainModal"
+			@confirm="buyAgainModalClick"
+			@cancel="buyAgainModalHide"
+		></cm-order-invalid-modal>
+	</view>
 </template>
 
 <script>
@@ -140,335 +147,361 @@ import orderList from './mixins/orderList.js'
 import wechatPay from './mixins/wechatPay.js'
 import { mapGetters } from 'vuex'
 export default {
-    mixins: [wechatPay, orderList],
-    components: {
-        CmOrderProdcut,
-        CmOrderControlNav,
-        CmOrderInvalidModal,
-        CmOrderFilterControl,
-        CmLoading,
-        CmEmpty,
-        CmHeaderNav
-    },
-    data() {
-        return {
-            tabs: [
-                {
-                    name: '全部',
-                    state: 0,
-                    pageNum: 1,
-                    orderList: []
-                },
-                {
-                    name: '待付款',
-                    state: 1,
-                    pageNum: 1,
-                    orderList: []
-                },
-                {
-                    name: '待发货',
-                    state: 2,
-                    pageNum: 1,
-                    orderList: []
-                },
-                {
-                    name: '已发货',
-                    state: 3,
-                    pageNum: 1,
-                    orderList: []
-                },
-                {
-                    name: '退货/款',
-                    state: 4,
-                    pageNum: 1,
-                    orderList: []
-                }
-            ],
-            currentTab: 0,
-            screenTabBar: [{ id: 0, name: '全部订单' }, { id: 1, name: '用户订单' }, { id: 2, name: '自身订单' }],
-            screenTab: 0,
-            refresh: false,
-            loadmore: false, // 正在加载更多
-            isRequest: true
-        }
-    },
-    computed: {
-        ...mapGetters(['userId', 'userIdentity']),
-        // 当前用户是否为协销
-        isDealer() {
-            return this.userIdentity === 2
-        },
-        tabInfo() {
-            return this.tabs[this.currentTab]
-        },
-        loadMoreText() {
-            if (this.tabInfo.orderList.length === 0) return '没有更多了'
-            return this.tabInfo.hasMore ? '上拉加载更多' : '没有更多了'
-        },
-        emptyInfo() {
-            const info = {}
-            info.image = `${this.$Static}icon-empty-address.png`
-
-            if (this.tabInfo.state === 0) {
-                info.message = '您还没有任何的订单哟~_~'
-            } else {
-                info.message = '您还没有相关的订单哟~_~'
-            }
-
-            return info
-        }
-    },
-    onLoad(options) {
-        this.currentTab = options.state
-        this.fetchOrderData()
-    },
-    // 下拉刷新
-    onPullDownRefresh() {
-        this.resetOrderList()
-    },
-    methods: {
-        // 导航栏点击事件
-        handleLeftClick(e) {
-            if (e.index) {
-                uni.switchTab({ url: '/pages/tabBar/index/index' })
-            } else {
-                uni.navigateBack({ delta: 1 })
-            }
-        },
-        handleRightClick() {
-            console.log('search')
-        },
-
-        // 重置订单列表
-        resetOrderList() {
-            this.refresh = true
-            this.tabInfo.pageNum = 1
-            this.fetchOrderData()
-        },
-
-        // 更新订单列表
-        updateOrderList(response) {
-            const { name, state, pageNum } = this.tabInfo
-            this.$set(this.tabs, this.currentTab, {
-                name,
-                state,
-                pageNum: pageNum + 1,
-                orderList: this.tabInfo.orderList.concat(response.data.list),
-                hasMore: response.data.hasNextPage
-            })
-        },
-
-        // 获取订单列表 使用防抖函数封装
-        fetchOrderData: debounce(function() {
-            this.loadmore = true
-
-            const params = {
-                orderState: this.currentTab,
-                userId: this.userId,
-                orderType: this.screenTab,
-                pageNum: this.tabInfo.pageNum,
-                pageSize: 10
-            }
-
-            if (this.isDealer) {
-                this.queryOrderDealerList(params)
-            } else {
-                this.queryOrderList(params)
-            }
-        }, 500),
-
-        // 普通用户获取订单列表
-        queryOrderList(params) {
-            this.OrderService.QueryOrderList(params)
-                .then(res => {
-                    if (this.refresh) this.tabInfo.orderList = []
-                    this.updateOrderList(res)
-                })
-                .catch(err => {
-                    console.log(err)
-                })
-                .finally(() => {
-                    uni.stopPullDownRefresh()
-                    this.refresh = false
-                    this.loadmore = false
-                    this.isRequest = false
-                })
-        },
-
-        // 分销者获取订单列表
-        queryOrderDealerList(params) {
-            console.log(params)
-            this.OrderService.QueryOrderDealerList(params)
-                .then(res => {
-                    if (this.refresh) this.tabInfo.orderList = []
-                    this.updateOrderList(res)
-                })
-                .catch(err => {
-                    console.log(err)
-                })
-                .finally(() => {
-                    uni.stopPullDownRefresh()
-                    this.refresh = false
-                    this.loadmore = false
-                    this.isRequest = false
-                })
-        },
-
-        // 筛选订单
-        handleFilter(e) {
-            console.log(e.index)
-            this.screenTab = e.index
-            this.resetOrderList()
-            this.fetchOrderData()
-        },
-
-        // 跳转详情
-        handleToDetail(orderInfo) {
-            this.$api.navigateTo('/pages/order/order-detail?orderId=' + orderInfo.orderId)
-        },
-
-        // 滚动到底部
-        scrollBottom() {
-            if (!this.tabInfo.hasMore) return
-            this.fetchOrderData()
-        },
-
-        // tab切换
-        tabChange(e) {
-            this.currentTab = e.index
-        },
-
-        // 轮播切换
-        swiperChange(e) {
-            this.currentTab = e.detail.current
-            if (this.tabInfo.pageNum !== 1) return
-            this.isRequest = true
-            this.fetchOrderData()
-        }
-    }
+	mixins: [wechatPay, orderList],
+	components: {
+		CmOrderProdcut,
+		CmOrderControlNav,
+		CmOrderInvalidModal,
+		CmOrderFilterControl,
+		CmLoading,
+		CmEmpty,
+		CmHeaderNav
+	},
+	data() {
+		return {
+			tabs: [
+				{
+					name: '全部',
+					state: 0,
+					pageNum: 1,
+					orderList: []
+				},
+				{
+					name: '待付款',
+					state: 1,
+					pageNum: 1,
+					orderList: []
+				},
+				{
+					name: '待发货',
+					state: 2,
+					pageNum: 1,
+					orderList: []
+				},
+				{
+					name: '已发货',
+					state: 3,
+					pageNum: 1,
+					orderList: []
+				},
+				{
+					name: '退货/款',
+					state: 4,
+					pageNum: 1,
+					orderList: []
+				}
+			],
+			currentTab: 0,
+			screenTabBar: [{ id: 0, name: '全部订单' }, { id: 1, name: '用户订单' }, { id: 2, name: '自身订单' }],
+			screenTab: 0,
+			refresh: false,
+			loadmore: false, // 正在加载更多
+			isRequest: true,
+			leftButtonGroup: [
+				{
+					icon: 'icon-daohangfanhui',
+					color: '#333'
+				}
+			],
+			headerNavHeight: 0
+		}
+	},
+	computed: {
+		...mapGetters(['userId', 'userIdentity']),
+		// 当前用户是否为协销
+		isDealer() {
+			return this.userIdentity === 2
+		},
+		tabInfo() {
+			return this.tabs[this.currentTab]
+		},
+		loadMoreText() {
+			if (this.tabInfo.orderList.length === 0) return '没有更多了'
+			return this.tabInfo.hasMore ? '上拉加载更多' : '没有更多了'
+		},
+		emptyInfo() {
+			const info = {}
+			info.image = `${this.$Static}icon-empty-address.png`
+
+			if (this.tabInfo.state === 0) {
+				info.message = '您还没有任何的订单哟~_~'
+			} else {
+				info.message = '您还没有相关的订单哟~_~'
+			}
+
+			return info
+		},
+		swiperHeight(){
+			let offset  = 44
+			if(this.isDealer){
+				offset = 84
+			}
+			return {
+				height: `calc(100vh - ${offset}px - ${this.headerNavHeight}px);`
+			}
+		}
+	},
+	onLoad(options) {
+		this.currentTab = options.state
+		this.fetchOrderData()
+		this.$on('orderAction', () => {
+			this.resetOrderList()
+		})
+	},
+	// 下拉刷新
+	onPullDownRefresh() {
+		this.resetOrderList()
+	},
+	beforeDestroy() {
+		this.$off('orderAction')
+	},
+	methods: {
+		// 导航栏初始化
+		headerNavInit(info){
+			this.headerNavHeight = info.height
+		},
+		// 导航栏点击事件
+		handleLeftClick(e) {
+			if (e.index) {
+				uni.switchTab({ url: '/pages/tabBar/index/index' })
+			} else {
+				uni.navigateBack({ delta: 1 })
+			}
+		},
+		handleRightClick() {
+			uni.navigateTo({ url: '/pages/order/order-search' })
+		},
+
+		// 重置订单列表
+		resetOrderList() {
+			this.refresh = true
+			this.tabInfo.pageNum = 1
+			this.fetchOrderData()
+		},
+
+		// 更新订单列表
+		updateOrderList(response) {
+			const { name, state, pageNum } = this.tabInfo
+			this.$set(this.tabs, this.currentTab, {
+				name,
+				state,
+				pageNum: pageNum + 1,
+				orderList: this.tabInfo.orderList.concat(response.data.list),
+				hasMore: response.data.hasNextPage
+			})
+		},
+
+		// 获取订单列表 使用防抖函数封装
+		fetchOrderData: debounce(function() {
+			this.loadmore = true
+
+			const params = {
+				orderState: this.currentTab,
+				userId: this.userId,
+				orderType: this.screenTab,
+				pageNum: this.tabInfo.pageNum,
+				pageSize: 10
+			}
+
+			if (this.isDealer) {
+				this.queryOrderDealerList(params)
+			} else {
+				this.queryOrderList(params)
+			}
+		}, 500),
+
+		// 普通用户获取订单列表
+		queryOrderList(params) {
+			this.OrderService.QueryOrderList(params)
+				.then(res => {
+					if (this.refresh) this.tabInfo.orderList = []
+					this.updateOrderList(res)
+				})
+				.catch(err => {
+					console.log(err)
+				})
+				.finally(() => {
+					uni.stopPullDownRefresh()
+					this.refresh = false
+					this.loadmore = false
+					this.isRequest = false
+				})
+		},
+
+		// 分销者获取订单列表
+		queryOrderDealerList(params) {
+			console.log(params)
+			this.OrderService.QueryOrderDealerList(params)
+				.then(res => {
+					if (this.refresh) this.tabInfo.orderList = []
+					this.updateOrderList(res)
+				})
+				.catch(err => {
+					console.log(err)
+				})
+				.finally(() => {
+					uni.stopPullDownRefresh()
+					this.refresh = false
+					this.loadmore = false
+					this.isRequest = false
+				})
+		},
+
+		// 筛选订单
+		handleFilter(e) {
+			console.log(e.index)
+			this.screenTab = e.index
+			this.resetOrderList()
+			this.fetchOrderData()
+		},
+
+		// 跳转详情
+		handleToDetail(orderInfo) {
+			this.$api.navigateTo('/pages/order/order-detail?orderId=' + orderInfo.orderId)
+		},
+
+		// 滚动到底部
+		scrollBottom() {
+			if (!this.tabInfo.hasMore) return
+			this.fetchOrderData()
+		},
+
+		// tab切换
+		tabChange(e) {
+			this.currentTab = e.index
+		},
+
+		// 轮播切换
+		swiperChange(e) {
+			this.currentTab = e.detail.current
+			if (this.tabInfo.pageNum !== 1) return
+			this.isRequest = true
+			this.fetchOrderData()
+		}
+	}
 }
 </script>
 
 <style lang="scss" scoped>
 .order-list {
-    min-height: 100vh;
-    background: #f7f7f7;
-
-    .tabs {
-        position: relative;
-        z-index: 100000;
-    }
-
-    .swiper {
-        &.swiper-hegiht1 {
-            height: calc(100vh - 44px);
-        }
-
-        &.swiper-hegiht2 {
-            height: calc(100vh - 84px);
-        }
-
-        .scroll-box {
-            height: 100%;
-        }
-    }
-
-    .grid {
-        height: 20rpx;
-        background: #f7f7f7;
-    }
-
-    .order-section {
-        padding: 38rpx 0;
-        background-color: #fff;
-
-        .line {
-            width: 702rpx;
-            height: 1px;
-            background: #f7f7f7;
-        }
-
-        .order-info {
-            position: relative;
-            padding: 0 24rpx;
-            margin-bottom: 32rpx;
-            line-height: 1.6;
-
-            .order-num,
-            .order-time {
-                font-size: 26rpx;
-                color: #333333;
-
-                .label {
-                    color: #999999;
-                }
-            }
-
-            .status {
-                position: absolute;
-                font-size: 26rpx;
-                color: #ff457b;
-                right: 24rpx;
-                bottom: 0;
-            }
-        }
-
-        .origin {
-            padding: 0 24rpx;
-            margin-top: 24rpx;
-            margin-bottom: 16rpx;
-            display: flex;
-            justify-content: flex-start;
-            align-items: center;
-
-            .cover {
-                width: 56rpx;
-                height: 56rpx;
-                border-radius: 4rpx;
-                border: 1px solid #f7f7f7;
-                box-sizing: border-box;
-            }
-
-            .name {
-                margin-left: 16rpx;
-                font-size: 30rpx;
-                color: #333333;
-                font-weight: bold;
-            }
-        }
-
-        .goods-list {
-            .order-goods {
-                padding-top: 32rpx;
-                &:first-child {
-                    padding-top: 0;
-                }
-            }
-        }
-
-        .total {
-            display: flex;
-            justify-content: space-between;
-            align-items: center;
-
-            padding: 0 24rpx;
-            margin: 32rpx 0;
-
-            font-size: 26rpx;
-            color: #333333;
-
-            .count {
-                font-weight: bold;
-            }
-
-            .status {
-                color: #ff457b;
-
-                .label {
-                    color: #333333;
-                }
-            }
-        }
-    }
+	min-height: 100vh;
+	background: #f7f7f7;
+
+	.tabs {
+		position: relative;
+		z-index: 100000;
+	}
+
+	.swiper {
+		&.swiper-hegiht1 {
+			height: calc(100vh - 44px);
+		}
+
+		&.swiper-hegiht2 {
+			height: calc(100vh - 84px);
+		}
+
+		.scroll-box {
+			height: 100%;
+		}
+	}
+
+	.grid {
+		height: 20rpx;
+		background: #f7f7f7;
+	}
+
+	.order-section {
+		padding: 38rpx 0;
+		background-color: #fff;
+
+		.line {
+			width: 702rpx;
+			height: 1px;
+			background: #f7f7f7;
+		}
+
+		.order-info {
+			position: relative;
+			padding: 0 24rpx;
+			margin-bottom: 32rpx;
+			line-height: 1.6;
+
+			.order-num,
+			.order-time {
+				font-size: 26rpx;
+				color: #333333;
+
+				.label {
+					color: #999999;
+				}
+			}
+
+			.status {
+				position: absolute;
+				font-size: 26rpx;
+				color: #ff457b;
+				right: 24rpx;
+				bottom: 0;
+			}
+		}
+
+		.origin {
+			padding: 0 24rpx;
+			margin-top: 24rpx;
+			margin-bottom: 16rpx;
+			display: flex;
+			justify-content: flex-start;
+			align-items: center;
+
+			.cover {
+				width: 56rpx;
+				height: 56rpx;
+				border-radius: 4rpx;
+				border: 1px solid #f7f7f7;
+				box-sizing: border-box;
+			}
+
+			.name {
+				margin-left: 16rpx;
+				font-size: 30rpx;
+				color: #333333;
+				font-weight: bold;
+			}
+		}
+
+		.goods-list {
+			.order-goods {
+				padding-top: 32rpx;
+				&:first-child {
+					padding-top: 0;
+				}
+			}
+		}
+
+		.total {
+			display: flex;
+			justify-content: space-between;
+			align-items: center;
+
+			padding: 0 24rpx;
+			margin: 32rpx 0;
+
+			font-size: 26rpx;
+			color: #333333;
+
+			.count {
+				font-weight: bold;
+			}
+
+			.status {
+				color: #ff457b;
+
+				.label {
+					color: #333333;
+				}
+			}
+		}
+	}
 }
 </style>

+ 427 - 14
pages/order/order-search.vue

@@ -1,27 +1,440 @@
 <template>
-    <view class="order-search"> <cm-search v-model="keyword"></cm-search> </view>
+	<view class="order-search">
+		<tui-skeleton v-if="isRequest" loadingType="2"></tui-skeleton>
+		<!-- 搜索框 -->
+		<view class="order-top">
+			<cm-search
+				v-model="keyword"
+				@search="handleSearch"
+				placeholder="请输入搜索关键字"
+				:keywordVisible="keywordVisible"
+				:keywordList="keywordList"
+				@focus="keywordVisible = true"
+				@clear="keywordVisible = true"
+				@remove="removeKeywordModal = true"
+			></cm-search>
+		</view>
+
+		<!-- orderList.length === 0 -->
+		<view class="order-empty" v-if="orderList.length === 0">
+			<cm-empty :image="emptyInfo.image" :message="emptyInfo.message" :offset="100"></cm-empty>
+		</view>
+		<view class="order-list" v-else>
+			<template v-for="(orderInfo, orderIndex) in orderList">
+				<view class="grid" :key="orderIndex"></view>
+				<view class="order-section" :key="orderIndex" @click="handleToDetail(orderInfo)">
+					<!-- 订单信息 -->
+					<view class="order-info">
+						<view class="order-num">
+							<text class="label">订单编号:</text>
+							<text>{{ orderInfo.orderNo }}</text>
+						</view>
+						<view class="order-time">
+							<text class="label">下单时间:</text>
+							<text>{{ orderInfo.orderTime }}</text>
+						</view>
+						<view class="status">{{ stateExpFormat(orderInfo.status) }}</view>
+					</view>
+					<view class="line"></view>
+					<view
+						class="shop-order"
+						v-for="(shopOrder, shopOrderIndex) in orderInfo.shopOrderList"
+						:key="shopOrderIndex"
+					>
+						<!-- 供应商 -->
+						<view class="origin">
+							<image class="cover" :src="shopOrder.shopLogo"></image>
+							<view class="name">{{ shopOrder.shopName }}</view>
+						</view>
+						<!-- 商品列表 -->
+						<view class="goods-list">
+							<!-- 商品信息 -->
+							<view
+								class="order-goods"
+								v-for="goods in shopOrder.orderProductList"
+								:key="goods.productId"
+							>
+								<cm-order-prodcut :goods-data="goods"></cm-order-prodcut>
+							</view>
+						</view>
+					</view>
+					<!-- 统计 -->
+					<view class="total">
+						<view class="count">共{{ orderInfo.productCount }}件商品</view>
+						<view class="status">
+							<template v-if="['31', '32', '33'].includes(orderInfo.status)">
+								<text class="label">已支付:</text>
+								<text>¥{{ orderInfo.receiptAmount | formatPrice }}</text>
+							</template>
+							<template v-else>
+								<text class="label">待付总额:</text>
+								<text>¥{{ orderInfo.pendingPayments | formatPrice }}</text>
+							</template>
+						</view>
+					</view>
+					<!-- 操作 -->
+					<cm-order-control-nav
+						v-if="orderInfo.userId == userId"
+						:orderInfo="orderInfo"
+						@confirm="handleConfirmClick"
+					></cm-order-control-nav>
+				</view>
+			</template>
+		</view>
+		<!-- loading -->
+		<view class="loading-more" v-if="orderList.length > 0">
+			<tui-loadmore :index="3" :visible="loadmore"></tui-loadmore>
+			<tui-nomore :text="loadMoreText" :visible="!loadmore" backgroundColor="#f7f7f7"></tui-nomore>
+		</view>
+
+		<!-- 操作弹窗 -->
+		<tui-modal
+			:show="modal"
+			:content="modalText"
+			:size="32"
+			:maskClosable="false"
+			color="#333"
+			shape="circle"
+			@click="handleModalConfirm"
+		></tui-modal>
+		<!-- 加载框 -->
+		<cm-loading :visible="isSubLoading" :text="loadingText"></cm-loading>
+		<!-- 失效商品列表 -->
+		<cm-order-invalid-modal
+			:goodsList="invalidList"
+			:visible="buyAgainModal"
+			@confirm="buyAgainModalClick"
+			@cancel="buyAgainModalHide"
+		></cm-order-invalid-modal>
+		<!-- 操作弹窗 -->
+		<tui-modal
+			:show="removeKeywordModal"
+			content="确认清空搜索历史记录?"
+			:size="32"
+			:maskClosable="false"
+			color="#333"
+			shape="circle"
+			@click="clearSearchRecord"
+		></tui-modal>
+	</view>
 </template>
 
 <script>
+import CmOrderProdcut from '@/components/cm-module/cm-order-prodcut/cm-order-prodcut.vue'
+import CmOrderControlNav from '@/components/cm-module/cm-order-control-nav/cm-order-control-nav.vue'
+import CmOrderInvalidModal from '@/components/cm-module/cm-order-invalid-modal/cm-order-invalid-modal.vue'
+import CmLoading from '@/components/cm-module/cm-loading/cm-loading.vue'
+import CmEmpty from '@/components/cm-module/cm-empty/cm-empty.vue'
 import CmSearch from '@/components/cm-module/cm-search/cm-search.vue'
+
+import { debounce } from '@/common/common.js'
+import orderMixins from './mixins/orderList.js'
+import wechatPay from './mixins/wechatPay.js'
+import { mapGetters } from 'vuex'
+
 export default {
-    components: {
-        CmSearch
-    },
-    data() {
-        return {
-            keyword: ''
-        }
-    },
-    methods: {
-        handleSearch() {}
-    }
+	mixins: [orderMixins, wechatPay],
+	components: {
+		CmSearch,
+		CmOrderProdcut,
+		CmOrderControlNav,
+		CmOrderInvalidModal,
+		CmEmpty,
+		CmLoading
+	},
+	data() {
+		return {
+			isRequest: false,
+			keywordVisible: true,
+			keywordList: [],
+			keyword: '',
+			pageNum: 1,
+			hasMore: false,
+			loadmore: false, // 正在加载更多
+			orderList: [],
+
+			refresh: false,
+			removeKeywordModal: false
+		}
+	},
+	computed: {
+		...mapGetters(['userId', 'userIdentity']),
+		// 当前用户是否为协销
+		isDealer() {
+			return this.userIdentity === 2
+		},
+		// 上拉加载文案
+		loadMoreText() {
+			if (this.orderList.length === 0) return '没有更多了'
+			return this.hasMore ? '上拉加载更多' : '没有更多了'
+		},
+		// 列表为空
+		emptyInfo() {
+			const info = {}
+			info.image = `${this.$Static}icon-empty-address.png`
+			info.message = '未找到相关订单~_~'
+			
+			if(this.keywordList.length <= 0){
+				info.message = '暂无任何搜索历史记录~_~'
+			}
+			
+			return info
+		}
+	},
+	watch: {
+		keywordVisible(nVal){
+			if(!nVal) return
+			this.fetchSerachRecord()
+			this.orderList = []
+		}
+	},
+	onReachBottom() {
+		if (!this.hasMore) return
+		this.fetchOrderData()
+	},
+	onLoad() {
+		setTimeout(() => {
+			this.fetchSerachRecord()
+		}, 2000)
+		this.$on('orderAction', () => {
+			this.resetOrderList()
+		})
+	},
+	beforeDestroy() {
+		this.$off('orderAction')
+	},
+	methods: {
+		handleSearch() {
+			this.keywordVisible = false
+			this.isRequest = true
+			this.resetOrderList()
+		},
+		// 跳转详情
+		handleToDetail(orderInfo) {
+			this.$api.navigateTo('/pages/order/order-detail?orderId=' + orderInfo.orderId)
+		},
+		// 获取订单列表 使用防抖函数封装
+		fetchOrderData: debounce(function() {
+			this.loadmore = true
+
+			const params = {
+				searchWord: this.keyword,
+				// orderState: 0,
+				// orderType: 0,
+				userId: this.userId,
+				pageNum: this.pageNum,
+				pageSize: 10
+			}
+
+			// if (this.isDealer) {
+			// 	this.queryOrderDealerList(params)
+			// } else {
+			// 	this.queryOrderList(params)
+			// }
+			this.searchOrderInfo(params)
+			
+		}, 500),
+
+		// 普通用户获取订单列表
+		// queryOrderList(params) {
+		// 	this.OrderService.QueryOrderList(params)
+		// 		.then(res => {
+		// 			if (this.refresh) this.orderList = []
+		// 			this.updateOrderList(res)
+		// 		})
+		// 		.catch(err => {
+		// 			console.log(err)
+		// 		})
+		// 		.finally(() => {
+		// 			this.refresh = false
+		// 			this.loadmore = false
+		// 			this.isRequest = false
+		// 		})
+		// },
+
+		// 分销者获取订单列表
+		// queryOrderDealerList(params) {
+		// 	this.OrderService.QueryOrderDealerList(params)
+		// 		.then(res => {
+		// 			if (this.refresh) this.orderList = []
+		// 			this.updateOrderList(res)
+		// 		})
+		// 		.catch(err => {
+		// 			console.log(err)
+		// 		})
+		// 		.finally(() => {
+		// 			this.refresh = false
+		// 			this.loadmore = false
+		// 			this.isRequest = false
+		// 		})
+		// },
+		
+		// 机构搜索订单列表
+		searchOrderInfo(params){
+			this.OrderService.SearchOrderInfo(params)
+				.then(res => {
+					if (this.refresh) this.orderList = []
+					this.updateOrderList(res)
+				})
+				.catch(err => {
+					console.log(err)
+				})
+				.finally(() => {
+					this.refresh = false
+					this.loadmore = false
+					this.isRequest = false
+				})
+		},
+		
+		// 更新订单列表
+		updateOrderList(response) {
+			this.pageNum++
+			this.orderList = this.orderList.concat(response.data.list)
+			this.hasMore = response.data.hasNextPage
+		},
+		// 重置订单列表
+		resetOrderList() {
+			this.refresh = true
+			this.pageNum = 1
+			this.fetchOrderData()
+		},
+		// 获取搜索历史
+		async fetchSerachRecord() {
+			try {
+				const res = await this.OrderService.SearchOrderHistory({ userId: this.userId })
+				this.keywordList = res.data
+			} catch (error) {
+				this.$util.msg(error.msg, 2000)
+			}
+		},
+		// 清空搜索历史
+		async clearSearchRecord(e) {
+			if (!e.index) return (this.removeKeywordModal = false)
+			try {
+				await this.OrderService.ClearOrderHistory({ userId: this.userId })
+				await this.fetchSerachRecord()
+				this.removeKeywordModal = false
+				this.$util.msg('已清空搜索历史记录', 2000)
+			} catch (error) {
+				this.$util.msg(error.msg, 2000)
+			}
+		}
+	}
 }
 </script>
 
 <style lang="scss" scoped>
 .order-search {
-    min-height: 100vh;
-    background: #f7f7f7;
+	min-height: 100vh;
+	background: #f7f7f7;
+	overflow: hidden;
+	padding-top: 90rpx;
+	box-sizing: border-box;
+}
+
+.order-top {
+	position: fixed;
+	top: 0;
+	left: 0;
+	width: 100%;
+	z-index: 100000;
+}
+
+.grid {
+	height: 20rpx;
+	background: #f7f7f7;
+}
+
+.order-section {
+	padding: 38rpx 0;
+	background-color: #fff;
+
+	.line {
+		width: 702rpx;
+		height: 1px;
+		background: #f7f7f7;
+	}
+
+	.order-info {
+		position: relative;
+		padding: 0 24rpx;
+		margin-bottom: 32rpx;
+		line-height: 1.6;
+
+		.order-num,
+		.order-time {
+			font-size: 26rpx;
+			color: #333333;
+
+			.label {
+				color: #999999;
+			}
+		}
+
+		.status {
+			position: absolute;
+			font-size: 26rpx;
+			color: #ff457b;
+			right: 24rpx;
+			bottom: 0;
+		}
+	}
+
+	.origin {
+		padding: 0 24rpx;
+		margin-top: 24rpx;
+		margin-bottom: 16rpx;
+		display: flex;
+		justify-content: flex-start;
+		align-items: center;
+
+		.cover {
+			width: 56rpx;
+			height: 56rpx;
+			border-radius: 4rpx;
+			border: 1px solid #f7f7f7;
+			box-sizing: border-box;
+		}
+
+		.name {
+			margin-left: 16rpx;
+			font-size: 30rpx;
+			color: #333333;
+			font-weight: bold;
+		}
+	}
+
+	.goods-list {
+		.order-goods {
+			padding-top: 32rpx;
+			&:first-child {
+				padding-top: 0;
+			}
+		}
+	}
+
+	.total {
+		display: flex;
+		justify-content: space-between;
+		align-items: center;
+
+		padding: 0 24rpx;
+		margin: 32rpx 0;
+
+		font-size: 26rpx;
+		color: #333333;
+
+		.count {
+			font-weight: bold;
+		}
+
+		.status {
+			color: #ff457b;
+
+			.label {
+				color: #333333;
+			}
+		}
+	}
 }
 </style>

+ 1 - 1
services/order.service.js

@@ -97,7 +97,7 @@ export default class OrderService {
         return this.AjaxService.get({
             url: '/order/search',
             data,
-            isLoading: true,
+            isLoading: false,
         })
     }
     /**