|
|
@@ -2,31 +2,35 @@
|
|
|
<van-pull-refresh
|
|
|
success-text="加载成功"
|
|
|
success-duration="1000"
|
|
|
- class="detail"
|
|
|
- :class="{ dark: isNFT, isEnd: isEnd }"
|
|
|
+ class="detail dark"
|
|
|
+ :class="{ isEnd: isEnd }"
|
|
|
v-model="isLoading"
|
|
|
@refresh="onRefresh"
|
|
|
- :pageType="isNFT ? 'dark' : 'light'"
|
|
|
+ pageType="dark"
|
|
|
>
|
|
|
<div class="top">
|
|
|
<auction-banner :info="info" :assetInfo="assetInfo" @getProduct="getDetail"></auction-banner>
|
|
|
<div class="price-bar" v-if="isEnd">
|
|
|
<div class="price-left">
|
|
|
- <div class="text1">{{ priceText }}</div>
|
|
|
+ <div class="text1">当前价</div>
|
|
|
<div class="text2">
|
|
|
<img src="../../assets/icon_jiage_bai.png" alt="" />
|
|
|
<span>{{ showPrice }}</span>
|
|
|
</div>
|
|
|
<i class="font_family icon-sanjiao"></i>
|
|
|
</div>
|
|
|
- <div class="price-right">
|
|
|
+ <div class="price-right price-right2" v-if="info.status === 'FIXED_PRICE_PURCHASED'">
|
|
|
+ <img src="@assets/info_icon_time2.png" alt="" />
|
|
|
+ <span>一口价成交</span>
|
|
|
+ </div>
|
|
|
+ <div class="price-right" v-else>
|
|
|
<span>{{ timeText }}</span>
|
|
|
<span class="time-box">{{ time }}</span>
|
|
|
</div>
|
|
|
</div>
|
|
|
<div class="price-bar" v-else>
|
|
|
<div class="price-left">
|
|
|
- <div class="text1">{{ priceText }}</div>
|
|
|
+ <div class="text1">当前价</div>
|
|
|
<div class="text2">
|
|
|
<img src="../../assets/icon_jiage_bai.png" alt="" />
|
|
|
<span>{{ showPrice }}</span>
|
|
|
@@ -44,15 +48,11 @@
|
|
|
</div>
|
|
|
</div>
|
|
|
<div class="title">{{ info.name }}</div>
|
|
|
- <div class="title-sub">
|
|
|
- <span class="text1">出价{{ info.bids }}次</span>
|
|
|
- </div>
|
|
|
</div>
|
|
|
|
|
|
<div class="card" v-if="recordNum > 0">
|
|
|
<div class="card-title" @click="showRecord">
|
|
|
- <img src="../../assets/icon-paimaijilu-bai.png" v-if="isNFT" alt="" />
|
|
|
- <img src="../../assets/icon-paimaijilu.png" alt="" v-else />
|
|
|
+ <img src="../../assets/icon-paimaijilu-bai.png" alt="" />
|
|
|
<span class="flex1">拍卖纪录</span>
|
|
|
<div class="card-title-r">
|
|
|
<span>共{{ recordNum }}条</span>
|
|
|
@@ -61,57 +61,19 @@
|
|
|
</div>
|
|
|
<div class="card-content">
|
|
|
<div class="record-item" v-for="(item, index) in records" :key="index">
|
|
|
- <span>{{ item.user }}</span>
|
|
|
+ <span>{{ item.nickname }}</span>
|
|
|
<span>{{ index === 0 ? '领先' : '出局' }}</span>
|
|
|
- <span>¥{{ item.bidderPrice || 0 }}</span>
|
|
|
+ <span>¥{{ item.currentPrice || 0 }}</span>
|
|
|
<span>{{ item.createdAt }}</span>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
- <div class="card">
|
|
|
- <div class="card-title">
|
|
|
- <img src="../../assets/icon-paipingxinxi-bai.png" v-if="isNFT" alt="" />
|
|
|
- <img src="../../assets/auction1.png" alt="" v-else />
|
|
|
- <span>拍品信息</span>
|
|
|
- </div>
|
|
|
- <div class="card-content">
|
|
|
- <div class="card-info">
|
|
|
- <span class="text1">增价拍</span>
|
|
|
- <span class="text2">{{ info.startingPrice ? '竞拍价' : '一口价' }}</span>
|
|
|
- <div class="card-right" v-if="info.startingPrice">
|
|
|
- <span class="text1">起拍价</span>
|
|
|
- <span class="text2">¥{{ info.startingPrice }}</span>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- <div class="card-info" v-if="info.startingPrice">
|
|
|
- <span class="text1">加价幅度</span>
|
|
|
- <span class="text2">¥{{ info.increment }}</span>
|
|
|
- <div class="card-right">
|
|
|
- <span class="text1">保证金</span>
|
|
|
- <span class="text2">¥{{ info.deposit }}</span>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- <div class="card-info">
|
|
|
- <span class="text1">开拍时间</span>
|
|
|
- <span class="text2">{{ info.startTime }}</span>
|
|
|
- </div>
|
|
|
- <div class="card-info">
|
|
|
- <span class="text1">结束时间</span>
|
|
|
- <span class="text2">{{ info.endTime }}</span>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- <auction-asset v-if="isNFT" :info="assetInfo"></auction-asset>
|
|
|
- <div class="card" v-else>
|
|
|
- <div class="card-title">
|
|
|
- <img src="../../assets/icon-paipingxinxi-bai.png" v-if="isNFT" alt="" />
|
|
|
- <img src="../../assets/auction2.png" v-else alt="" />
|
|
|
- <span>拍品描述</span>
|
|
|
- </div>
|
|
|
- <div v-if="info.detail" class="card-content card-detail" v-html="info.detail"></div>
|
|
|
- </div>
|
|
|
-
|
|
|
- <div class="btn-bottom van-safe-area-bottom" :class="{ showPopup: showPopup }">
|
|
|
+ <auction-asset :info="assetInfo" :auctionInfo="info"></auction-asset>
|
|
|
+ <div
|
|
|
+ class="btn-bottom van-safe-area-bottom"
|
|
|
+ :class="{ showPopup: showPopup }"
|
|
|
+ v-if="info.status !== 'FIXED_PRICE_PURCHASED'"
|
|
|
+ >
|
|
|
<div class="fixed-list">
|
|
|
<div class="help" @click="showHelp">
|
|
|
<i class="font_family icon-help"></i>
|
|
|
@@ -128,6 +90,12 @@
|
|
|
</div>
|
|
|
</van-button>
|
|
|
</div>
|
|
|
+ <div class="btn-list not" v-else-if="info.status === 'PASS'">
|
|
|
+ <van-button disabled block round>
|
|
|
+ <div>已流拍</div>
|
|
|
+ <div class="sub" v-if="isLeader">((扣除手续费,取消所有易拍竞价资格))</div>
|
|
|
+ </van-button>
|
|
|
+ </div>
|
|
|
<div
|
|
|
class="btn-list not"
|
|
|
v-else-if="
|
|
|
@@ -138,59 +106,32 @@
|
|
|
>
|
|
|
<van-button disabled block round>竞拍结束</van-button>
|
|
|
</div>
|
|
|
+ <div
|
|
|
+ class="btn-list not"
|
|
|
+ v-else-if="
|
|
|
+ !isLeader && (recordInfo.paybackStatus === 'PASSED' || recordInfo.paybackStatus === 'PAYED')
|
|
|
+ "
|
|
|
+ >
|
|
|
+ <van-button disabled block round>{{
|
|
|
+ getLabelName(recordInfo.paybackStatus, paybackStatusOptions)
|
|
|
+ }}</van-button>
|
|
|
+ </div>
|
|
|
<div class="btn-list not" v-else-if="info.status === 'NOTSTARTED'">
|
|
|
- <van-button disabled block round>未开始</van-button>
|
|
|
+ <van-button disabled block round>{{ isLeader ? '出价中' : '未开始' }}</van-button>
|
|
|
</div>
|
|
|
- <div class="btn-list not" v-else-if="info.status === 'PASS' && recordInfo.payDeposit">
|
|
|
- <van-button disabled block round>
|
|
|
- <div>已流拍</div>
|
|
|
- <div class="sub" v-if="info.purchaserId === userInfo.id">
|
|
|
- (保证金 ¥{{ info.deposit }} 不退回)
|
|
|
- </div>
|
|
|
- </van-button>
|
|
|
+ <div class="btn-list not" v-else-if="info.status === 'WAITING'">
|
|
|
+ <van-button disabled block round>{{ isLeader ? '出价中' : startText + '开抢' }}</van-button>
|
|
|
</div>
|
|
|
|
|
|
- <template v-else-if="info.status === 'ONGOING' || info.status === 'FIXED_PRICE_PURCHASED'">
|
|
|
- <div class="btn-list" v-if="!info.startingPrice">
|
|
|
- <van-button
|
|
|
- type="primary"
|
|
|
- :disabled="info.status === 'FIXED_PRICE_PURCHASED'"
|
|
|
- block
|
|
|
- round
|
|
|
- @click="goBuy"
|
|
|
- >立即支付</van-button
|
|
|
- >
|
|
|
- </div>
|
|
|
-
|
|
|
- <div class="btn-list" v-else>
|
|
|
+ <template v-else-if="info.status === 'ONGOING'">
|
|
|
+ <div class="btn-list">
|
|
|
<van-button type="primary" @click="goBuy" block plain>
|
|
|
- <div>直接购买</div>
|
|
|
- <div class="sub">¥{{ info.fixedPrice }}</div>
|
|
|
- </van-button>
|
|
|
- <van-button type="primary" block v-if="isLeader">
|
|
|
- <div>竞价中</div>
|
|
|
- <div class="sub">(出价金额为 ¥{{ info.purchasePrice }})</div>
|
|
|
+ <div>一口价购买</div>
|
|
|
+ <div class="sub">获得权益</div>
|
|
|
</van-button>
|
|
|
-
|
|
|
- <van-button type="primary" block v-else-if="isOut" @click="goCreated">
|
|
|
- <div>已出局</div>
|
|
|
- <div class="sub">(重新出价)</div>
|
|
|
- </van-button>
|
|
|
- <van-button type="primary" block v-else-if="recordInfo.payDeposit" @click="goCreated"
|
|
|
- >去出价</van-button
|
|
|
- >
|
|
|
- <van-button type="primary" v-else block @click="goDeposit">
|
|
|
- <div>立即参拍</div>
|
|
|
- <div class="sub">(保证金 ¥{{ info.deposit }})</div>
|
|
|
- <!-- <div class="sub">
|
|
|
- (请在
|
|
|
- <van-count-down
|
|
|
- :time="buyTime"
|
|
|
- @finish="getDetail"
|
|
|
- format="HH小时mm分ss秒"
|
|
|
- ></van-count-down
|
|
|
- >内支付)
|
|
|
- </div> -->
|
|
|
+ <van-button type="primary" block @click="goDeposit">
|
|
|
+ <div>立即竞价</div>
|
|
|
+ <div class="sub">解锁权益</div>
|
|
|
</van-button>
|
|
|
</div>
|
|
|
</template>
|
|
|
@@ -230,11 +171,12 @@ import AuctionAsset from '../../components/auction/asset.vue';
|
|
|
import AuctionRecords from '../../components/auction/records.vue';
|
|
|
import { useCountDown, useToggle } from '@vant/use';
|
|
|
import auction from '../../mixins/auction';
|
|
|
+import auctionOrder from '../../mixins/auctionOrder';
|
|
|
import { mapState } from 'vuex';
|
|
|
export default {
|
|
|
name: 'auctionDetail',
|
|
|
inject: ['setKeeps', 'changeTab'],
|
|
|
- mixins: [auction],
|
|
|
+ mixins: [auction, auctionOrder],
|
|
|
setup() {
|
|
|
const [timeDown, toggleTime] = useToggle(false);
|
|
|
const countDown = useCountDown({
|
|
|
@@ -324,8 +266,8 @@ export default {
|
|
|
startCount(time = 24 * 3600 * 1000) {
|
|
|
if (this.info.status === 'NOTSTARTED') {
|
|
|
time = this.dayjs(this.info.startTime).diff(this.dayjs());
|
|
|
- } else if (this.info.status === 'ONGOING') {
|
|
|
- time = this.dayjs(this.info.endTime).diff(this.dayjs());
|
|
|
+ } else if (this.info.status === 'ONGOING' || this.info.status === 'WAITING') {
|
|
|
+ time = this.dayjs(this.info.currentEndTime).diff(this.dayjs());
|
|
|
}
|
|
|
if (!this.isEnd) {
|
|
|
if (time > 0) {
|
|
|
@@ -337,18 +279,40 @@ export default {
|
|
|
}
|
|
|
},
|
|
|
getRecord() {
|
|
|
- this.$http.get('/auctionRecord/hasPayDeposit?auctionId=' + this.auctionId).then(res => {
|
|
|
- this.recordInfo = res;
|
|
|
- });
|
|
|
+ if (this.isLogin) {
|
|
|
+ this.$http
|
|
|
+ .post(
|
|
|
+ '/tradeAuctionOrder/all',
|
|
|
+ {
|
|
|
+ query: {
|
|
|
+ tradeAuctionId: this.auctionId,
|
|
|
+ del: false,
|
|
|
+ userId: this.userInfo.id,
|
|
|
+ status: 'FINISH',
|
|
|
+ paymentType: 'DEPOSIT,PURCHASE_PRICE'
|
|
|
+ },
|
|
|
+ size: 1,
|
|
|
+ page: 0,
|
|
|
+ sort: 'id,desc'
|
|
|
+ },
|
|
|
+ { body: 'json' }
|
|
|
+ )
|
|
|
+ .then(res => {
|
|
|
+ if (!res.empty) {
|
|
|
+ this.recordInfo = res.content[0];
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
|
|
|
this.$http
|
|
|
.post(
|
|
|
- '/auctionRecord/all',
|
|
|
+ '/tradeAuctionOrder/all',
|
|
|
{
|
|
|
query: {
|
|
|
- auctionId: this.auctionId,
|
|
|
- type: 'BIDDER',
|
|
|
- del: false
|
|
|
+ tradeAuctionId: this.auctionId,
|
|
|
+ del: false,
|
|
|
+ status: 'FINISH',
|
|
|
+ paymentType: 'DEPOSIT,PURCHASE_PRICE'
|
|
|
},
|
|
|
size: 2,
|
|
|
page: 0,
|
|
|
@@ -367,7 +331,7 @@ export default {
|
|
|
forbidClick: true
|
|
|
});
|
|
|
return this.$http
|
|
|
- .get('/auctionActivity/get/' + this.auctionId)
|
|
|
+ .get('/tradeAuction/get/' + this.auctionId)
|
|
|
.then(res => {
|
|
|
// res.model3d = {
|
|
|
// name: '99.FBX',
|
|
|
@@ -381,12 +345,9 @@ export default {
|
|
|
this.getRecord();
|
|
|
//改变头部颜色
|
|
|
this.$nextTick(() => {
|
|
|
- if (this.isNFT) {
|
|
|
- this.changeTab('#0f0f0f');
|
|
|
- }
|
|
|
if (this.isbidder) {
|
|
|
this.$http.get('/sysConfig/get/auction_cancel_time').then(res => {
|
|
|
- let date1 = this.dayjs(this.info.endTime).add(Number(res.value), 'minute');
|
|
|
+ let date1 = this.dayjs(this.info.currentEndTime).add(Number(res.value), 'minute');
|
|
|
let date2 = this.dayjs();
|
|
|
let time = date1.diff(date2);
|
|
|
if (time > 0) {
|
|
|
@@ -858,6 +819,16 @@ export default {
|
|
|
span {
|
|
|
color: #939599;
|
|
|
}
|
|
|
+
|
|
|
+ &.price-right2 {
|
|
|
+ justify-content: flex-end;
|
|
|
+ padding-right: 16px;
|
|
|
+ img {
|
|
|
+ width: 18px;
|
|
|
+ height: 18px;
|
|
|
+ margin-right: 2px;
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|