赞
踩
- <template>
- <div id="order" class="wap-el page-container wap-com-page">
- <section>
- <com-header></com-header>
- </section>
- <div class="com-top-blue-bg">
- <div class="com-top-blue-bg-cont"></div>
- </div>
- <div class="order-box">
- <div class="com-title-box">
- <!-- 返回按钮 -->
- <div class="wap-page-return" @click="$router.go(-1)"></div>
- <div class="com-page-title">我的订单</div>
- </div>
- <van-tabs v-model="activeStatus" @change="changeTab" animated>
- <van-tab
- v-for="item in orderTitle"
- :key="item.orderStatus"
- :title="item.name"
- >
- <div class="order-cont" v-show="isData">
- <div
- class="order-tab-content"
- v-for="(item1, index1) in list"
- :key="index1"
- @click="goDetail(item1)"
- >
- <div class="order-tab-box">
- <div class="order-tab-title-box">
- <div class="order-tab-title flex-center-start">
- <img
- class="order-tab-title-img"
- :src="item1.toolApplicationIcon"
- alt=""
- />
- <div class="order-tab-title-text">
- {{ item1.toolApplicationName }}
- </div>
- </div>
- <div class="order-status-box">
- <div
- class="order-status 1"
- :class="`order-status${item1.orderStatus == 1 ? 1 : 0}`"
- >
- {{ orderStatusVal[item1.orderStatus] }}
- </div>
- </div>
- </div>
- <div class="order-tab-item-box">
- <div class="order-tab-item flex-center-between">
- <div class="order-tab-item-name">订单总金额</div>
- <div class="order-tab-item-cont">
- ¥{{ item1.totalPrice }}
- </div>
- </div>
- <div class="order-tab-item flex-center-between">
- <div class="order-tab-item-name">实付金额</div>
- <div class="order-tab-item-cont">
- ¥{{ item1.realPrice }}
- </div>
- </div>
- <div class="order-tab-item flex-center-between">
- <div class="order-tab-item-name">下单时间</div>
- <div class="order-tab-item-cont">
- {{ item1.createDate }}
- </div>
- </div>
- </div>
- </div>
- </div>
- <div class="flex-center-center" v-if="list.length < total">
- <div class="more-order flex-center-center" @click="moreOrder">
- <span>更多订单</span>
- <img
- class="blue-double-right-arrow"
- :src="`${NEW_ASSET_IMG}/common/blue_double_right_arrow.png`"
- alt=""
- />
- </div>
- </div>
- </div>
- <!-- 无订单 -->
- <div
- class="wap-not-data-box flex-column-center-center"
- v-show="!isData"
- >
- <img
- class="wap-not-data-img"
- :src="`${NEW_ASSET_IMG}/common/wap_not_data.png`"
- />
- <p class="wap-not-data-text">暂无订单</p>
- </div>
- </van-tab>
- </van-tabs>
- </div>
- </div>
- </template>
-
- <script>
- export default {
- name: "order",
- components: {
- "com-header": () => import("@/components/common/com-header"),
- },
- data() {
- return {
- page: 1,
- pageSize: 10,
- total: "", //页总数
- nav_index: 0,
- activeStatus: this.$route.query.orderStatus
- ? Number(this.$route.query.orderStatus)
- : "", //订单状态(-3 已退款-2 退款申请中-1:已取消 0:待支付 1:已支付)
- orderStatus: "",
- orderStatusVal: {
- "-3": "已退款",
- "-2": "退款申请中",
- "-1": "已取消",
- 0: "待支付",
- 1: "已支付",
- }, //订单状态
- orderTitle: [
- { orderStatus: "", name: "全部" }, //status自定义
- { orderStatus: "1", name: "已支付" },
- { orderStatus: "0", name: "待支付" },
- { orderStatus: "-2", name: "退款申请中" },
- { orderStatus: "-3", name: "已退款" },
- { orderStatus: "-1", name: "已取消" },
- ],
- list: [], //订单数据
- isData: true, //是否有数据
- };
- },
- computed: {},
- watch: {},
- methods: {
- getOrderList(isMore, orderStatus) {
- const params = `?page=${this.page}&pageSize=${this.pageSize}&orderStatus=${orderStatus}`;
- this.$orderAPI.getOrders(params).then(({ code, msg, data }) => {
- if (code) {
- this.$message.warning(msg);
- return;
- }
- this.total = Number(data.pageNumVO.total);
- if (isMore) {
- if (data.list.length <= this.total) {
- this.list.push(...data.list);
- } else {
- this.list = data.list;
- }
- } else {
- this.list = data.list;
- }
- this.isData = data.list.length <= 0 ? false : true; //是否显示无数据
- });
- },
- changeTab(e) {
- this.nav_index = e;
- let data = {
- 0: "",
- 1: 1,
- 2: 0,
- 3: -2,
- 4: -3,
- 5: -1,
- };
- this.orderStatus = data[e];
- this.getOrderList(0, data[e]);
- window.sessionStorage.setItem("order_idx", `${this.nav_index}`);
- },
- goDetail(item) {
- this.$router.push({
- path: `/order-detail?toolOrderId=${item.toolOrderId}&orderStatus=${item.orderStatus}`,
- });
- },
- moreOrder() {
- this.page++;
- this.getOrderList(1, this.orderStatus);
- },
- },
- created() {},
- mounted() {
- let order_idx = window.sessionStorage.getItem("order_idx") || "";
- if (order_idx != "") {
- this.activeStatus = Number(order_idx);
- let statusVal =
- this.activeStatus == 1
- ? 1
- : this.activeStatus == 2
- ? 0
- : this.activeStatus == 3
- ? -2
- : this.activeStatus == 4
- ? -3
- : this.activeStatus == 5
- ? -1
- : "";
- this.$nextTick(() => {
- this.getOrderList(0, statusVal);
- });
- }else{
- this.getOrderList(0,this.orderStatus);
- }
- },
- beforeCreate() {},
- beforeMount() {},
- beforeUpdate() {},
- updated() {},
- beforeDestroy() {},
- destroyed() {},
- activated() {},
- };
- </script>
- <style lang='scss' scoped>
- #order {
- ::v-deep .van-tab {
- padding: 0;
- }
- ::v-deep .van-tabs__nav {
- background-color: transparent;
- }
- .order-box {
- position: relative;
- z-index: 10;
- }
-
- .order-tab-title-box {
- padding: 0.31rem 0.33rem;
- background: linear-gradient(310deg, #ddebff 0%, #ece8ff 48%, #f3f1fd 100%);
- border-radius: 0.16rem 0.16rem 0 0;
- position: relative;
- }
- .order-status-box {
- position: absolute;
- top: 0;
- right: -0.11rem;
- }
- .order-status {
- width: fit-content;
- position: relative;
- padding: 0.06rem 0.15rem;
- font-size: 0.16rem;
- font-family: SourceHanSansCN-Medium, SourceHanSansCN;
- font-weight: 500;
- line-height: 0.27rem;
- letter-spacing: 0.02rem;
- border-radius: 0.06rem 0.06rem 0px 0.06rem;
- }
- .order-status1 {
- background: linear-gradient(315deg, #4265fe 0%, #10f7ff 100%);
- color: #ffffff;
- }
- .order-status0 {
- background: linear-gradient(315deg, #8e8e8e 0%, #d7d7d7 100%);
- color: #ffffff;
- }
- .clip-triangle {
- -webkit-clip-path: polygon(50% 40%, 0% 100%, 100% 100%);
- clip-path: polygon(50% 40%, 0% 100%, 100% 100%);
- }
- .order-status0,
- .order-status1 {
- &::after {
- content: "";
- position: absolute;
- bottom: -0.08rem;
- right: 0.0178rem;
- width: 0.16rem;
- height: 0.14rem;
- transform: rotate(-45deg);
- @extend .clip-triangle;
- }
- }
- .order-status0::after {
- background-color: rgba(123, 123, 123, 1);
- }
- .order-status1::after {
- background-color: rgba(8, 53, 182, 1);
- }
- .order-cont {
- padding: 0 0.32rem 0.7rem 0.32rem;
- }
- .order-tab-title-img {
- width: 0.64rem;
- height: 0.64rem;
- }
- .order-tab-content {
- margin-top: 0.32rem;
- }
- .order-tab-title-text {
- font-size: 0.32rem;
- font-family: SourceHanSansCN-Medium, SourceHanSansCN;
- font-weight: 500;
- color: #000000;
- line-height: 0.48rem;
- letter-spacing: 0.02rem;
- margin-left: 0.16rem;
- }
- .order-tab-item-box {
- padding: 0 0.32rem 0.4rem 0.32rem;
- background: rgba(255, 255, 255, 1);
- border-radius: 0 0 0.16rem 0.16rem;
- border: 1px solid #979797;
- border-top: none;
- }
- .order-tab-item {
- font-size: 0.28rem;
- font-family: PingFangSC-Regular, PingFang SC;
- font-weight: 400;
- color: #242424;
- line-height: 0.36rem;
- letter-spacing: 0.01rem;
- padding-top: 0.32rem;
- }
- // 暂无数据
- .wap-not-data-box {
- padding: 1.74rem 0 0 0;
- .wap-not-data-img {
- width: 2.58rem;
- height: 2.52rem;
- }
- .wap-not-data-text {
- font-size: 0.26rem;
- font-family: PingFangSC-Regular, PingFang SC;
- font-weight: 400;
- color: #242424;
- line-height: 0.37rem;
- letter-spacing: 1px;
- margin-top: 0.32rem;
- }
- }
- .more-order {
- font-size: 0.26rem;
- font-family: PingFangSC-Medium, PingFang SC;
- font-weight: 500;
- color: #0064ff;
- line-height: 0.26rem;
- margin-top: 0.4rem;
- .blue-double-right-arrow {
- width: 0.27rem;
- height: 0.27rem;
- }
- }
- }
- </style>
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。