|
|
@@ -1,5 +1,5 @@
|
|
|
<template>
|
|
|
- <div class="sale-box" v-if="totalElements > 0">
|
|
|
+ <div class="sale-box" v-if="total > 0 && showInfo.price">
|
|
|
<div class="sale-info">
|
|
|
<div class="text1">当前寄售最低价格</div>
|
|
|
<div class="text2">
|
|
|
@@ -7,12 +7,15 @@
|
|
|
<span>{{ showInfo.price }}</span>
|
|
|
</div>
|
|
|
</div>
|
|
|
- <div class="sale-info">
|
|
|
- <div class="text1">当前寄售</div>
|
|
|
- <div class="text2">{{ totalElements }}份</div>
|
|
|
+ <div class="sale-info" @click="show = true">
|
|
|
+ <div class="text1">
|
|
|
+ 当前寄售
|
|
|
+ <img src="@/assets/icon-back-next.png" alt="" />
|
|
|
+ </div>
|
|
|
+ <div class="text2">{{ total }}份</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
- <van-action-sheet teleport="#app" ref="action" v-model:show="show" :title="`当前寄售(${totalElements}份)`">
|
|
|
+ <van-action-sheet teleport="#app" ref="action" v-model:show="show" :title="`当前寄售(${total}份)`">
|
|
|
<van-list v-model="loading" :finished="finished" finished-text="没有更多了" @load="getData">
|
|
|
<div @click="goDetail(item)" class="product-info" v-for="(item, index) in list" :key="index">
|
|
|
<div class="top">
|
|
|
@@ -39,6 +42,7 @@
|
|
|
</template>
|
|
|
|
|
|
<script>
|
|
|
+import { throwStatement } from '@babel/types';
|
|
|
import list from '../../mixins/list';
|
|
|
export default {
|
|
|
props: {
|
|
|
@@ -60,38 +64,62 @@ export default {
|
|
|
url: '/collection/all',
|
|
|
list: [],
|
|
|
totalElements: 0,
|
|
|
- show: false
|
|
|
+ show: false,
|
|
|
+ showInfo: {
|
|
|
+ price: 0
|
|
|
+ },
|
|
|
+ total: 0
|
|
|
};
|
|
|
},
|
|
|
mixins: [list],
|
|
|
computed: {
|
|
|
- showInfo() {
|
|
|
- if (!this.empty && !this.loading) {
|
|
|
- return {
|
|
|
- ...this.list[0]
|
|
|
- };
|
|
|
- } else {
|
|
|
- return {
|
|
|
- price: 0
|
|
|
- };
|
|
|
- }
|
|
|
- },
|
|
|
search() {
|
|
|
if (this.info.prefixName) {
|
|
|
return this.info.prefixName;
|
|
|
}
|
|
|
+ let name = this.info.name;
|
|
|
if (this.info.type === 'BLIND_BOX') {
|
|
|
- let name = this.blindBoxItems.length > 0 ? this.blindBoxItems[0].name.split('#')[0] : '';
|
|
|
- name = name.replace(/:/, '·');
|
|
|
- name = name.replace(/:/, '·');
|
|
|
- return name.split('·')[0];
|
|
|
+ name = this.blindBoxItems.length > 0 ? this.blindBoxItems[0].name.split('#')[0] : '';
|
|
|
}
|
|
|
- return this.info.name;
|
|
|
+
|
|
|
+ name = name.replace(/:/, '·');
|
|
|
+ name = name.replace(/:/, '·');
|
|
|
+ return name.split('·')[0];
|
|
|
}
|
|
|
},
|
|
|
methods: {
|
|
|
+ getMarketData() {
|
|
|
+ return this.$http
|
|
|
+ .post(
|
|
|
+ '/collection/all',
|
|
|
+ {
|
|
|
+ query: {
|
|
|
+ source: 'TRANSFER',
|
|
|
+ salable: true
|
|
|
+ },
|
|
|
+ search: this.search,
|
|
|
+ sort: 'price,asc',
|
|
|
+ size: 1,
|
|
|
+ page: 0
|
|
|
+ },
|
|
|
+ { body: 'json' }
|
|
|
+ )
|
|
|
+ .then(res => {
|
|
|
+ if (!res.empty) {
|
|
|
+ this.showInfo = res.content[0];
|
|
|
+ } else {
|
|
|
+ this.showInfo = {
|
|
|
+ price: 0
|
|
|
+ };
|
|
|
+ }
|
|
|
+ this.total = res.totalElements;
|
|
|
+ this.getData(true);
|
|
|
+ return Promise.resolve(res.totalElements);
|
|
|
+ });
|
|
|
+ },
|
|
|
goDetail(info) {
|
|
|
if (!info.soldOut) {
|
|
|
+ this.show = false;
|
|
|
this.$router.push({
|
|
|
path: '/productDetail/' + info.id
|
|
|
});
|
|
|
@@ -109,6 +137,7 @@ export default {
|
|
|
},
|
|
|
init() {
|
|
|
this.show = true;
|
|
|
+ this.getData(true);
|
|
|
},
|
|
|
getNum(info) {
|
|
|
if (info.number) {
|
|
|
@@ -192,6 +221,11 @@ export default {
|
|
|
font-size: 12px;
|
|
|
color: @text0;
|
|
|
line-height: 24px;
|
|
|
+ .flex();
|
|
|
+ img {
|
|
|
+ width: 16px;
|
|
|
+ height: 16px;
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
.text2 {
|