权证发起转让

This commit is contained in:
唐明明
2021-09-18 17:13:47 +08:00
parent ac4552a3ee
commit b7cacb38c7
12 changed files with 4128 additions and 3184 deletions

View File

@@ -47,12 +47,29 @@ const marketsPay = (id, platform) => {
}) })
} }
// // 转让权证信息
const marketsCreateInfo = symbol => {
return request({
url: 'markets/user/markets/create',
data: { symbol }
})
}
// 提交权证转让
const marketsCreate = data => {
return request({
url: 'markets/user/markets/create',
method: 'POST',
data
})
}
export { export {
markets, markets,
marketsLogs, marketsLogs,
marketsInfo, marketsInfo,
marketsBuy, marketsBuy,
marketsPay marketsPay,
marketsCreateInfo,
marketsCreate
} }

View File

@@ -541,6 +541,13 @@
"navigationBarTitleText": "支付结果", "navigationBarTitleText": "支付结果",
"backgroundColor": "#FFFFFF" "backgroundColor": "#FFFFFF"
} }
},{
"path" : "pages/market/transfer",
"name" : "marketTransfer",
"style": {
"navigationBarTitleText": "转让权证",
"backgroundColor": "#FFFFFF"
}
} }
], ],
"tabBar": { "tabBar": {

View File

@@ -19,7 +19,6 @@
<view class="companyInfo">易品新境区块链有限公司</view> <view class="companyInfo">易品新境区块链有限公司</view>
</view> </view>
</view> </view>
<!-- 弹窗提示喽 --> <!-- 弹窗提示喽 -->
<u-toast ref="uToast" /> <u-toast ref="uToast" />
</view> </view>

View File

@@ -29,6 +29,7 @@
}, },
created() { created() {
list().then(res=>{ list().then(res=>{
console.log(res.data)
this.goods = res.data this.goods = res.data
this.pages = res.page this.pages = res.page
}) })

View File

@@ -83,6 +83,7 @@
<script> <script>
import { marketsInfo, marketsBuy, marketsPay } from '@/apis/interfaces/market' import { marketsInfo, marketsBuy, marketsPay } from '@/apis/interfaces/market'
import userAuth from '@/public/userAuth'
export default { export default {
data() { data() {
return { return {
@@ -121,6 +122,12 @@
}, },
// 购买弹窗 // 购买弹窗
openLay(){ openLay(){
let token = this.$store.getters.getToken
if(token == ''){
let userLogin = new userAuth()
userLogin.Login()
return
}
this.$refs.buyLay.open('bottom') this.$refs.buyLay.open('bottom')
}, },
// 计算价格 // 计算价格

239
pages/market/transfer.vue Normal file
View File

@@ -0,0 +1,239 @@
<template>
<view v-if="!loding">
<!-- 产品信息 -->
<view class="goods">
<image class="cover" :src="info.goods.cover" mode="aspectFill"></image>
<view class="content">
<view class="title nowrap">数字权证</view>
<view class="text nowrap">锚定商品{{info.goods.goods_name}}</view>
<view class="text nowrap">提供企业{{info.goods.company.name}}</view>
<view class="text nav-goods nowrap" @click="onGoods">查看锚定商品信息<uni-icons type="arrowright" size="12" color="#e93340"></uni-icons></view>
</view>
<view class="info">
<view class="info-item">
<label>权证销售单价</label>
1000.00
</view>
<view class="info-item">
<label>拥有数量</label>
{{info.account.balance}}
</view>
<view class="info-item">
<label>转让价格</label>
<input class="info-input" type="digit" v-model="pirce" placeholder="输入转让价格" maxlength="5" @blur="calculatePirce" />
</view>
<view class="info-item info-flex">
<label>转让数量</label>
<uni-number-box class="info-number" v-model='stock' :min="1" :max="info.account.balance" @change="countPrice"></uni-number-box>
</view>
<view class="info-item">
<label>预估转让收益</label>
<view class="price">{{forecast}}</view>
</view>
</view>
</view>
<button class="buy-btn" type="default" @click="onCreate">确认转让</button>
</view>
</template>
<script>
import { marketsCreateInfo, marketsCreate } from '@/apis/interfaces/market'
export default {
data() {
return {
loding : true,
pirce : '',
stock : 1,
info : {},
forecast: '0.00'
};
},
onShow() {
marketsCreateInfo(this.$Route.query.symbol).then(res =>{
this.info = res
this.loding = false
}).catch(err => {
uni.showToast({
title: err.message,
icon : 'none'
})
})
},
methods:{
// 查看锚定产品
onGoods(){
this.$Router.push({name: 'marketGoods', params: { id: this.info.goods.goods_id }})
},
// 转让数量
countPrice(e){
this.stock = e
this.calculatePirce()
},
// 计算预估收益
calculatePirce(){
this.forecast = (this.pirce * this.stock).toFixed(2)
},
// 提交转让市场
onCreate(){
marketsCreate({
symbol : this.$Route.query.symbol,
qty : this.stock,
price : this.pirce || 0
}).then(res => {
uni.showModal({
title : '提示',
content : res,
showCancel : false,
success : () => {
this.$Router.back()
}
})
}).catch(err => {
console.log(err)
uni.showToast({
title: err.message,
icon : 'none'
})
})
}
}
}
</script>
<style lang="scss" scoped>
// 转让权证
.buy-btn{
margin: 0 $margin;
background: $text-price;
color: white;
height: 90rpx;
line-height: 90rpx;
padding: 0;
border-radius: $radius/2;
font-size: $title-size;
font-weight: bold;
&::after{
border: none;
}
}
// 产品信息
.goods{
min-height: 168rpx;
position: relative;
background: white;
border-radius: $radius/2;
margin: $margin;
padding: $padding;
.cover{
position: absolute;
left: $padding;
top: $padding;
width: 168rpx;
height: 168rpx;
}
.content{
padding-left: calc(168rpx + #{$padding});
.title{
position: relative;
font-size: $title-size-lg;
color: $text-color;
font-weight: bold;
line-height: 52rpx;
padding-right: 60rpx;
text{
position: absolute;
right: 0;
top: 0;
width: 60rpx;
text-align: right;
font-weight: normal;
}
}
.text{
font-size: $title-size-sm;
color: $text-gray;
height: 40rpx;
line-height: 40rpx;
&.nav-goods{
color: $text-price;
}
}
}
.info{
margin-top: $margin;
border-top: solid 1rpx $border-color;
padding-top: $padding;
.info-item{
padding-left: 200rpx;
height: 90rpx;
line-height: 90rpx;
position: relative;
text-align: right;
font-size: $title-size-lg;
&.info-flex{
display: flex;
justify-content: flex-end;
align-items: center;
}
@extend .nowrap;
label{
position: absolute;
left: 0;
top: 0;
width: 200rpx;
text-align: left;
color: $text-gray;
}
.info-input{
height: 80rpx;
line-height: 80rpx;
font-size: $title-size-lg;
}
.price{
color: $text-price;
font-weight: bold;
}
}
}
}
// 购买产品
.popup {
width: 100%;
background-color: #fff;
padding-bottom: $padding;
.title {
font-size: 36rpx;
text-align: center;
padding: 50rpx 30rpx 30rpx 30rpx;
font-weight: bold;
}
.btn {
background-color: $text-price;
height: 90rpx;
line-height: 90rpx;
text-align: center;
color: #fff;
font-weight: bold;
font-size: $title-size;
margin: $padding * 2;
border-radius: $radius/2;
}
.des {
display: flex;
flex-direction: row;
align-items: center;
justify-content: space-between;
box-sizing: border-box;
padding: $padding $padding * 2;
color: $text-gray;
font-size: $title-size-lg;
text{
color: $text-color;
}
.price{
color: $main-color;
font-weight: bold;
}
}
}
</style>

View File

@@ -20,7 +20,7 @@
<label>订单金额</label> <label>订单金额</label>
<view class="price nowrap">{{amount}}</view> <view class="price nowrap">{{amount}}</view>
</view> </view>
<block v-if="coupons.length > 0"> <block v-if="coupons.length > 1">
<view class="item"> <view class="item">
<label>使用优惠券</label> <label>使用优惠券</label>
<picker mode="selector" :range="coupons" range-key="title" :value="couponIndex" @change="couponsChange"> <picker mode="selector" :range="coupons" range-key="title" :value="couponIndex" @change="couponsChange">

View File

@@ -6,6 +6,7 @@
<view class="order-list" v-for="(item,index) in lists" :key="index"> <view class="order-list" v-for="(item,index) in lists" :key="index">
<NumberWeightTemplate :item="item" /> <NumberWeightTemplate :item="item" />
<view class="actions"> <view class="actions">
<view @click="navMarkets(item.symbol)" class="nowPay">权证转让</view>
<view @click="nowTake(item.symbol)" class="nowPay">去提货</view> <view @click="nowTake(item.symbol)" class="nowPay">去提货</view>
</view> </view>
</view> </view>
@@ -80,6 +81,10 @@
uni.navigateTo({ uni.navigateTo({
url:'./numberWeightInfo?symbol='+symbol url:'./numberWeightInfo?symbol='+symbol
}) })
},
// 转让权证
navMarkets(symbol){
this.$Router.push({name: 'marketTransfer', params:{symbol}})
} }
} }
} }

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.0 KiB