[内网]文化云交易前端H5
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

589 lines
18 KiB

<template>
<view class="container">
<view class="item-pay">
<view class="item-pay-con">
<view class="item-pay-con-ti">选择支付方式</view>
<button class="item-pay-con-bu" :class="{'item-pay-con-bu-show': payType === items.value}" v-for="items in payTypeArr" @click="changePayType(items.value)">{{items.title}}</button>
</view>
<view class="item-pay-con">
<view class="item-pay-con-ti">
标的清单
</view>
<view class="item-pay-con-tab">
<uni-table ref="table" :loading="loading" border stripe emptyText="暂无更多数据">
<uni-tr>
<uni-th width="140" align="center">缩略图</uni-th>
<uni-th align="center">标的名称</uni-th>
<uni-th align="center">委托关联编码</uni-th>
<uni-th align="center">付费类型</uni-th>
<uni-th align="center">交易方式</uni-th>
<uni-th align="center">委托方</uni-th>
<uni-th align="center">单价</uni-th>
<uni-th align="center">购买年限</uni-th>
<uni-th align="center">小计</uni-th>
<uni-th align="center">交易佣金</uni-th>
<uni-th align="center">合计</uni-th>
</uni-tr>
<uni-tr v-for="(item, index) in tableList" :key="index">
<uni-td align="center">
<image class="td-image" :src="item.order_detail[0].goods_image"></image>
</uni-td>
<uni-td align="center">{{ item.buy_username }}</uni-td>
<uni-td align="center">{{ item.buy_islicode }}</uni-td>
<uni-td align="center">{{ item.price_type}}</uni-td>
<uni-td align="center">{{ item.goods_entrust }}</uni-td>
<uni-td align="center">{{ item.order_detail[0].entrust_name }}</uni-td>
<uni-td align="center">{{ item.price }}</uni-td>
<uni-td align="center">{{ item.transaction_count }}</uni-td>
<uni-td align="center">{{ item.small_count }}</uni-td>
<uni-td align="center">¥{{ item.order_detail[0].service_charge }}</uni-td>
<uni-td align="center">{{ item.money }}</uni-td>
</uni-tr>
</uni-table>
<view class="uni-pagination-box"><uni-pagination show-icon :page-size="pageSize" :current="pageCurrent" :total="total" @change="change" /></view>
</view>
</view>
<view class="privacy">
<checkbox :checked="isTick" color="#4399ff" class="ckbox" @click="readpri"></checkbox>
<view class="privacy_view">
我已阅读并同意 <text class="atxt" @click="gotopage('purchase')">《文化数据交易协议》</text>
</view>
</view>
</view>
<!-- 协议弹框 -->
<whpop v-model="showPopup" :maskCloseAble="true" :mkey="murl"></whpop>
<view class="item-pay">
<image class="item-pay-img" v-if="is_show_img" :src="pay_image"></image>
<text class="item-pay-prompt" v-if="is_show_img">
温馨提示 请使用 网银支付宝 App扫码支付
</text>
<text class="item-pay-res res-success" v-if="payResult == 1">支付成功!</text>
<text class="item-pay-res res-error" v-if="payResult == 2">支付失败!</text>
<button class="item-pay-go" v-if="goBuyOrder" @click="goToBuyOrder">进入买入订单</button>
<button :class="isDisabled ? 'item-pay-sub2' : 'item-pay-sub'" :disabled="isDisabled" @click="handlerPay">确认支付</button>
</view>
</view>
</template>
<script>
import * as GoodsApi from '@/api/goods'
import * as VerifyApi from '@/api/verify'
import uniTable from "@/uni_modules/uni-table/components/uni-table/uni-table"
import uniTr from "@/uni_modules/uni-table/components/uni-tr/uni-tr"
import uniTh from "@/uni_modules/uni-table/components/uni-th/uni-th"
import uniTd from "@/uni_modules/uni-table/components/uni-td/uni-td"
import uniPagination from "@/uni_modules/uni-pagination/components/uni-pagination/uni-pagination"
import whpop from '../../login/components/WhPopup'
export default {
name: "payment",
components: {
'uni-table': uniTable,
'uni-tr': uniTr,
'uni-th': uniTh,
'uni-td': uniTd,
'uni-pagination': uniPagination,
'whpop': whpop,
},
data () {
return {
tableList: [],
payTypeArr: [
{
title: '网银支付',
value: 15
},{
title: '支付宝',
value: 12
},
],
payType: 15,
loading: false,
selectedIndexs: [],
pageSize: 10, // 每页数据量
pageCurrent: 1, // 当前页
total: 0, // 数据总量
good_money: 0, // 交易金额
isDisabled: false, // 按钮禁用
is_show_img: false, // 显示图片
pay_image: '', // 显示图片
batchcode: '', // 订单编号
isTick: false, // 隐私政策
showPopup: false, // 协议展示
murl: '', // 协议标识
dateS: 180, // 3分钟
quantitySaleDate: [],// 统计数据超市销售量
Client_date: {
entrustingPartyName: [],//委托方名称
identityCode: [],//身份认证编码
entrustSignNumber: 0,//委托标的数
orderNumber: 1//订单总数
},
marketislicode: '',
payResult: 0, // 支付结果提示
goBuyOrder: false, // 是否显示跳转到订单页面按钮
}
},
watch: {
dateS: function (newValue, oldValue) {
if (newValue === 0) {
this.$error('由于长时间未支付,即将进入买入订单!')
setTimeout(function () {
uni.navigateTo({
url:'/pages/user/order/buyOrder'
})
},3000)
}
}
},
onLoad(options) {
this.selectedIndexs = []
this.batchcode = options.batchcode
this.getTableList()
},
methods: {
// 切换支付类型
changePayType(val) {
this.payType = val
},
// 分页触发
change(e) {
this.$refs.table.clearSelection()
this.selectedIndexs.length = 0
this.getData(e.current)
},
// 隐私政策勾选
readpri() {
this.isTick = true;
},
// 阅读注册协议和隐私
gotopage(str){
this.murl = str
this.showPopup = ! this.showPopup
},
// 获取订单列表
getTableList(pageNo = 1) {
const app = this
let param = {
user_isli : uni.getStorageSync("accountId"),
user_role : 1,
batchcode : app.batchcode
}
return new Promise((resolve, reject) => {
GoodsApi.orderPaymentList(param).then(res => {
if (res.resultCode === "00000000" && res.data.length > 0) {
app.loading = false
app.tableList = res.data
app.handlerTableList()
app.quantitySale(app.tableList[0].order_detail)
} else {
app.$error(res.errMsg);
}
resolve()
}).catch(reject)
})
},
// 处理table数据
handlerTableList() {
const app = this
this.tableList.map(item => {
let order_detail = item.order_detail[0]
item.price_type = order_detail.price > 0 ? '付费' : '免费'
if (order_detail.goods_entrust == 1) {
item.goods_entrust = "转让"
} else if (order_detail.goods_entrust == 2) {
item.goods_entrust = "授权"
}
item.price = app.handlerPrice(order_detail.price)
if (order_detail.transaction_count == "-" && order_detail.goods_entrust == "1") {
item.transaction_count = "永久"
} else if (order_detail.price == 0) {
item.transaction_count = "永久"
} else {
item.transaction_count = order_detail.transaction_count + '年'
}
item.small_count = ''
if (order_detail.goods_entrust == "2" && Number(order_detail.price) > 0) {
let total = Math.floor(parseFloat(order_detail.price * 100 * order_detail.transaction_count)) / 100;
item.small_count = app.handlerPrice(total)
} else {
item.small_count = app.handlerPrice(order_detail.price)
}
item.money = app.handlerPrice(order_detail.money)
// 总合计金额
app.good_money += item.total_money
})
if (this.good_money > 20000) {
// 禁用支付按钮
app.isDisabled = true
}
},
//计算销售量
quantitySale(orderDate) {
const app = this
orderDate.forEach(function (item) {
if (Number(item.price) > 0) {
if (item.goods_entrust == 2) {
app.quantitySaleDate.push({
chargesType: 2,//1-免费 2-付费
clickCount: 0,//点击量
contractualPeriod: item.contractual_period,//1-永久性委托 3-阶段性委托 2-一次性委托
countType: 2,//统计类型 1-点击量 2-销售量
goodsEntrust: item.goods_entrust,//交易方式;1-转让;2-授权
goodsIsliCode: item.goods_islicode,//标的isli标识
goodsName: item.goods_name,//标的名称
goodsOwnershipStr: item.goods_ownership_str,//权益
goodsType: item.goods_type,//1-文化资源数据 2-文化数字内容
salesVolume: 1 //销售量
});
}
}
});
},
// 处理金额显示角分
handlerPrice(price) {
let f = parseFloat(price);
if (!isNaN(f)) {
f = Math.round(price * 100) / 100;
let s = f.toString();
let rs = s.indexOf('.');
if (rs < 0) {
rs = s.length;
s += '.';
}
while (s.length <= rs + 2) {
s += '0';
}
return '¥' + s;
}
return '¥' + price
},
// 确认支付
handlerPay () {
const app = this
if (app.isTick) {
let Merchant_id = uni.getStorageSync("Merchant_id")
let user_isli = uni.getStorageSync("isliCode")//用户isli
let agreement = {
agreementIds: "7",
userId: uni.getStorageSync("cuser").cellPhone
}
// 保存协议
VerifyApi.preservation(agreement);
let paramArr = {
marketislicode: [],
manyName: [],
shopname: [],
shop_price: [],
new_shop_Name: [],
}
//拼接标的名称
let new_user_year = [];
//计算年限
let user_year = null;
for (let i = 0; i < app.tableList.length; i++) {
let All_data = app.tableList[i]
if (app.batchcode != All_data.batchcode) {
continue
}
let item = All_data.order_detail[0]
//销售量参数
paramArr.marketislicode.push(item.goods_islicode)
//委托方名称
app.Client_date.entrustingPartyName.push(item.entrust_name)
//身份认证编码
app.Client_date.identityCode.push(item.entrust_islicode)
paramArr.manyName.push(item.goods_name)
paramArr.shopname.push(item.entrust_islicode)
paramArr.shop_price.push(item.price)
if (item.transaction_count == "-") {
item.transaction_count = 99;
new_user_year.push(item.transaction_count);
} else {
new_user_year.push(item.transaction_count);
}
//拼接撤销数据的名称
if (item.goods_status != "1" && item.goods_status != "5") {
paramArr.new_shop_Name.push(item.goods_name)
}
}
app.Client_date.entrustingPartyName = app.Client_date.entrustingPartyName.join(',')
app.Client_date.identityCode = app.Client_date.identityCode.join(',')
app.marketislicode = paramArr.marketislicode.join(',');
let manyName = paramArr.manyName.join(',');
let shopname = paramArr.shopname.join(',');
let shop_price = paramArr.shop_price.join(',');
let new_shop_Name = paramArr.new_shop_Name.join(',');
new_user_year.forEach(function (item) {
user_year += Number(item);
});
//计算交易金额
let manyMony = 0;
manyMony = (Number(app.good_money * 100)).toFixed(0);
let newmanyName = manyName; //将标的名称拼接起来给新的
if (manyName.length > 100) {
manyName = manyName.split(",")[0];
}
let payment = {
amount: manyMony, //交易金额
app_id: Merchant_id, //发送请求的公司id
body: manyName, //订单描述
businesstype: 1001, //交易类型1001-销售收款,2001-消费付款
ordernumber: app.batchcode, //订单号
paymenttypeid: app.payType, //12支付宝,13微信 15 网银支付
subpaymenttypeid: app.payType, //12支付宝,13微信 15 网银支付
businesstime: app.getDayTimer(new Date()),
buyer: user_isli, //客户(买方) 用户isli
chargeuptype: 2, //收支类型1-收入2-支出,
goodsname: newmanyName, //商品名称
orderamount: manyMony, //订单金额(单位分)
payorderid: app.batchcode, //交易流水号
price: shop_price, //商品单价(单位分)
seller: shopname, //商户(卖方)
settlementamount: manyMony, //结算金额(分)
settlementtype: 2, //结算方式:1-转账充值;2-内部转账
totalqty: user_year, //商品数量
}
if (new_shop_Name == "") {
// 禁用按钮
app.isDisabled = true
GoodsApi.userOrderpay(payment).then(res => {
if (res.resultCode === "00000000") {
if (app.payType != "15" && app.payType != "15") {
app.is_show_img = true
app.pay_image = res.data.qrcodeurl
setInterval(app.handelRote,5000)
app.countDown()
app.isDisabled = false
} else {
app.isDisabled = false
setInterval(app.handelRote,5000)
}
} else {
app.$error(res.resultMsg);
}
})
} else {
app.$error(new_shop_Name + "无法购买")
}
} else {
app.$error('请勾选《文化数据交易协议》')
}
},
// 支付后操作
handelRote() {
const app = this
let param = {
user_isli : uni.getStorageSync("accountId"),
user_role : 1,
batchcode : app.batchcode
}
GoodsApi.orderPaymentList(param).then(res => {
if (res.resultCode === "00000000" && res.data.length > 0) {
app.loading = false
app.tableList = res.data
this.tableList.map(item => {
let order_detail = item.order_detail[0]
let status = order_detail.pay_status;
if (status == 2) {
GoodsApi.marketleader(app.quantitySaleDate);//计算销售量
GoodsApi.addClient(app.Client_date);//计算销售量
GoodsApi.addClickmarket(app.marketislicode);
app.payResult = 1
app.goBuyOrder = true
} else if (status == 3) {
app.payResult = 2
app.goBuyOrder = true
}
})
} else {
app.$error(res.resultMsg);
}
})
},
goToBuyOrder () {
uni.navigateTo({
url:'/pages/user/order/buyOrder'
})
},
// 倒计时
countDown(){
let app = this
// console.log(qq)
setTimeout(function(){
if(app.dateS>1){
app.dateS--
app.countDown(app.dateS)
}else{
app.dateS=0
}
},1000)
},
//转换时间
getDayTimer (data) {
let date = new Date(data)
let y = date.getFullYear()
let m = date.getMonth() + 1
m = m < 10 ? ('0' + m) : m
let d = date.getDate()
d = d < 10 ? ('0' + d) : d
let currentdate = y + '-' + m + '-' + d;
let hh = date.getHours()
hh = hh < 10 ? ('0' + hh) : hh
let mm = date.getMinutes()
mm = mm < 10 ? ('0' + mm) : mm
let ss = date.getSeconds()
ss = ss < 10 ? ('0' + ss) : ss
let time = hh + ':' + mm + ':' + ss;
return currentdate + " " + time
},
}
}
</script>
<style lang="scss" scoped>
.container {
width: 100%;
.item-pay {
.item-pay-con {
margin-top: 30rpx;
padding-top: 30rpx;
.item-pay-con-ti {
height: 50rpx;
margin-left: 20rpx;
padding-left: 10px;
border-left: #407ac4 10rpx solid;
display: flex;
align-items: center;
text-align: center;
}
.item-pay-con-bu {
width: 200rpx;
margin-top: 30rpx;
margin-left: 50rpx;
border-radius: 15rpx;
display: inline-block;
border: #e5e5e5 1rpx solid;
background-color: #e5e5e5;
}
.item-pay-con-bu-show {
background-color: #defedc;
}
.item-pay-con-tab {
margin-top: 20rpx;
.td-image {
width: 200rpx;
height: 200rpx;
}
}
}
.item-pay-res {
margin-left: calc(50% - 80rpx);
font-size: 38rpx;
}
.res-success {
color: green;
}
.res-error {
color: red;
}
.item-pay-sub {
color: #ffffff;
margin-top: 200rpx;
background-color: #407ac4;
}
.item-pay-sub2 {
color: #ffffff;
margin-top: 200rpx;
background-color: #9F9F9F;
}
.item-pay-go {
color: #ffffff;
background-color: orange;
}
.item-pay-img {
width: 200px;
height: 200px;
margin-top: 15%;
margin-left: 25%;
background-color: #eeeeee;
}
.item-pay-prompt {
display: block;
text-align: center;
color: red;
}
}
// 协议
.privacy{
display: flex;
margin-top: 50rpx;
margin-bottom: 50rpx;
margin-left: 15rpx;
.ckbox{
border-radius: 50%;
}
.privacy_view {
margin-left: 20rpx;
}
.atxt{
color: #4399ff;
}
}
}
</style>