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.
782 lines
25 KiB
782 lines
25 KiB
<template>
|
|
<view>
|
|
<img class="logobg" v-if="tooldetilsdata.tool.headimg" :src="tooldetilsdata.tool.headimg" alt="" />
|
|
<img class="logobg" v-else src="http://image.bjkeyware.com/g1.png" alt="" />
|
|
|
|
<!-- <img class="logoauto" src="http://image.bjkeyware.com/static/index/g2.png" alt="" /> -->
|
|
<!-- <img class="logoauto" v-if="tooldetilsdata.tool.name=='代码静态分析工具'" :src="logoimg" alt="">
|
|
<img class="logoauto" v-if="tooldetilsdata.tool.name=='源代码安全检测工具'" :src="logoimg" style="width:256rpx" alt="">
|
|
<img class="logoauto" v-if="tooldetilsdata.tool.name=='C/C++单元测试工具'" :src="logoimg" style="width:240rpx" alt="">
|
|
<img class="logoauto" v-if="tooldetilsdata.tool.name=='接口测试工具'" :src="logoimg" style="width:220rpx" alt="">
|
|
<img class="logoauto" v-if="tooldetilsdata.tool.name=='JAVA单元测试工具'" :src="logoimg" style="width:240rpx" alt="">
|
|
<img class="logoauto" v-if="tooldetilsdata.tool.name=='功能测试工具AutoFun'" :src="logoimg" style="width:230rpx" alt="">
|
|
<img class="logoauto" v-if="tooldetilsdata.tool.name=='代码组成分析平台'" :src="logoimg" style="width:230rpx" alt="">
|
|
<img class="logoauto" v-if="tooldetilsdata.tool.name=='性能测试工具'" :src="logoimg" alt="">
|
|
<img class="logoauto" v-if="tooldetilsdata.tool.name=='自鉴-交互式应用安全测试系统IAST'" :src="logoimg" style="width:230rpx" alt="">
|
|
<img class="logoauto" v-if="tooldetilsdata.tool.name=='Web应用安全测试工具'" :src="logoimg" style="width:250rpx" alt="">
|
|
<img class="logoauto" v-if="tooldetilsdata.tool.name=='资产识别及漏洞管理工具'" :src="logoimg" style="width:340rpx" alt="">
|
|
<img class="logoauto" v-if="tooldetilsdata.tool.name=='性能测试工具AutoLoad'" :src="logoimg" alt=""> -->
|
|
<view class="schedule" v-if="tooldetilsdata.tool">
|
|
<view class="wboeder" style='margin-bottom: 15px;'>
|
|
<view style='display:flex;justify-content:space-between;'>
|
|
<p v-if="tooldetilsdata.tool.price == 0" style="color:#FD461A;">
|
|
限时免费
|
|
</p>
|
|
<p v-else style="color:#FD461A;">
|
|
<span>¥ </span>
|
|
<span style="font-size:40rpx;margin-left:10rpx;font-weight: 800;">{{ tooldetilsdata.tool.price
|
|
}}</span>
|
|
</p>
|
|
<!-- <p style="color:#999999;font-size:24rpx;">销量350个</p> -->
|
|
</view>
|
|
<view style='display:flex;align-items: center;margin:30rpx 0'>
|
|
<!-- <img style="width:1.2rem;height:1.7rem" src="http://image.bjkeyware.com/static/index/hot.png"></image> -->
|
|
<p style='font-size:35rpx;font-weight: bold;color: #333333'>
|
|
{{ tooldetilsdata.tool.name }}
|
|
</p>
|
|
</view>
|
|
<view style='display:flex;margin:30rpx 0'>
|
|
<view class="tabone">类型:
|
|
{{ findLabelValueByPropnew(tooltypelist, tooldetilsdata.tool.toolType + '', 'dictValue',
|
|
'dictLabel') }}
|
|
</view>
|
|
<view class="tabone" style="color: #FF8A00;border: 1px solid #FF8A00;margin-left: 10px;">
|
|
交付方式:{{ tooldetilsdata.tool.deliverType }}</view>
|
|
</view>
|
|
<!-- <view style="font-size: 26rpx;">
|
|
<span style="color: #808080;">用户评分:</span>
|
|
<span style="color: #F77811;margin-left:10rpx">★ ★ ★ ★ ★ 5</span>
|
|
</view> -->
|
|
</view>
|
|
<view class="wboeder" style="padding-bottom:30px;">
|
|
<view style='display:flex;align-items: center;'>
|
|
<view class="linex"></view>
|
|
<p style='font-size:30rpx;font-weight: bold;color:#000000;margin-left:10px'>产品简介</p>
|
|
</view>
|
|
<p class="textx" style="margin-top: 20rpx;">{{ tooldetilsdata.tool.toolDesc }}</p>
|
|
<view style='display:flex;align-items: center;margin:15px 0 10px 0;'>
|
|
<view class="linex"></view>
|
|
<p style='font-size:30rpx;font-weight: bold;color:#000000;margin-left:10px'>产品功能</p>
|
|
</view>
|
|
|
|
<view class="square" v-for="(item, key) of tooldetilsdata.functionList" :key="key">
|
|
<!-- <view class="sloi"></view> -->
|
|
<p class="textp" v-if="item.funType == 0">{{ item.title }} : {{ item.funDesc }}</p>
|
|
</view>
|
|
|
|
<!-- <view class="square" style="margin-top: 80rpx;">
|
|
<view class="sloi"></view>
|
|
<p class="textp">脚本录制与回放:支持侵入式、非侵入式两种脚本录制与回放方式,适应不同的测试场景。
|
|
侵入式脚本录制和回放支持常用的Win32应用程序(MFC应用、QT应用、VB应用)和主流浏览器(IE浏览器、Firefox浏览器、Chrome浏览器)
|
|
;非侵入式测试对被测系统无要求。
|
|
</p>
|
|
</view>
|
|
<view class="square" style="margin-top:249rpx;">
|
|
<view class="sloi"></view>
|
|
<p class="textp">参数化图表:使用图表方式编辑数据驱动参数,测试执行时脚本自动读取参数值完成测试。</p>
|
|
</view>
|
|
<view class="square" style="margin-top:80rpx;">
|
|
<view class="sloi"></view>
|
|
<p class="textp">关键字视图:采用图形化方式展示测试步骤,方便非编程人员编辑测试用例。</p>
|
|
</view>
|
|
<view class="square" style="margin-top:80rpx;">
|
|
<view class="sloi"></view>
|
|
<p class="textp">分布式测试:具备多终端协同测试的能力,支持典型分布式系统的测试。</p>
|
|
</view>
|
|
<view class="square" style="margin-top:80rpx;">
|
|
<view class="sloi"></view>
|
|
<p class="textp">第三方集成:提供API调用接口,通过API接口与第三方测试平台进行集成。</p>
|
|
</view>
|
|
-->
|
|
|
|
|
|
<view style='display:flex;align-items: center;margin:15px 0 10px 0;'>
|
|
<view class="linex"></view>
|
|
<p style='font-size:30rpx;font-weight: bold;color:#000000;margin-left:10px'>产品亮点</p>
|
|
</view>
|
|
<view class="square" v-for="(item, key) of tooldetilsdata.functionList" :key="key">
|
|
<p class="textp" v-if="item.funType == 1">{{ item.title }} : {{ item.funDesc }}</p>
|
|
</view>
|
|
<!-- <view class="square" style="margin-top:80rpx;">
|
|
<view class="sloi"></view>
|
|
<p class="textp">图形化关键字:图形化关键字,方便非编程人员编辑测试用例;</p>
|
|
</view>
|
|
<view class="square" style="margin-top:80rpx;">
|
|
<view class="sloi"></view>
|
|
<p class="textp">支持多种被测目标:支持多种被测目标,包括MFC程序、QT程序、VB程序、IE、Firefox等;</p>
|
|
</view>
|
|
<view class="square" style="margin-top:80rpx;">
|
|
<view class="sloi"></view>
|
|
<p class="textp">具备非侵入式测的能力:具备非侵入式测的能力,能够在不改变被测设备软件环境的情况下完成测试;</p>
|
|
</view> -->
|
|
|
|
<view v-if="tooldetilsdata.tool.vedio" style='display:flex;align-items: center;margin:15px 0 10px 0;'>
|
|
<view class="linex"></view>
|
|
<p style='font-size:30rpx;font-weight: bold;color:#000000;margin-left:10px'>产品视频</p>
|
|
</view>
|
|
<!-- <video v-if="video" :src="video" style="width: 100%;height:42vw " ></video> -->
|
|
<!-- <img v-else style="width: 100%;height:42vw " src="http://image.bjkeyware.com/static/index/vider.png" alt="" /> -->
|
|
<video id="video1" v-if="tooldetilsdata.tool.vedio" :src="tooldetilsdata.tool.vedio" controls
|
|
style="width: 100%;height:42vw"></video>
|
|
<view style='display:flex;align-items: center;margin:15px 0 10px 0;'>
|
|
<view class="linex"></view>
|
|
<p style='font-size:30rpx;font-weight: bold;color:#000000;margin-left:10px'>常见问题</p>
|
|
</view>
|
|
<view style="font-size: 26rpx;line-height: 42rpx;">
|
|
<!-- <p style="color: #404040;font-weight: 700;">1. 什么是静态测试</p> -->
|
|
<p v-if='tooldetilsdata.tool.productQA'
|
|
style="color:#808080;white-space:pre-line;font-size: .9rem;">{{ tooldetilsdata.tool.productQA }}
|
|
</p>
|
|
<p v-else style="color:#808080;font-size: 1rem;">暂无问题</p>
|
|
<!-- <p style="color:#808080;">静态测试又可分为代码走查,代码审查,技术评审。
|
|
代码走查
|
|
开发组内部进行的,采用讲解、讨论和模拟运行的方式进行的查找错误的活动。
|
|
代码审查
|
|
开发组内部进行的,采用讲解、提问并使用编码模板进行</p> -->
|
|
<!-- <p style="color: #404040;font-weight: 700;">2. 静态测试工具能做什么<p> -->
|
|
<!-- <p style="color:#808080;">静态测试工具可以在不运行被测程序本身,仅通过分析或检查源程序的语法、结构、过程、接口等来检查程序的正确性。</p> -->
|
|
</view>
|
|
</view>
|
|
</view>
|
|
<view class="submitt" style="display: flex;justify-content: space-between;padding: 10px 20px;">
|
|
<view style="display: flex;">
|
|
<view class="kfgw" @click="addcart('kefu')">
|
|
<img src="http://image.bjkeyware.com/static/index/kf.png" alt="">
|
|
<p>客服</p>
|
|
</view>
|
|
<!-- <view class="kfgw" @click="addcart('cart')">
|
|
<img src="http://image.bjkeyware.com/static/index/gwc.png" alt="">
|
|
<p>购物车</p>
|
|
</view> -->
|
|
</view>
|
|
<view style="display: flex;">
|
|
<!-- <view class="button-g" @click="addcart('add')">加入购物车</view> -->
|
|
<view class="button-g" style="background: linear-gradient(90deg, #5EA6FD, #1A81F9);" @click="nowBuy">
|
|
立即购买</view>
|
|
</view>
|
|
</view>
|
|
<u-toast ref="uToast" />
|
|
<u-popup style="background:#66666;padding: 20px;" v-model="isPopupShow" @close="close" @open="open"
|
|
mode="bottom" length="80%" height='60%' border-radius="15" :closeable='true' :mask-close-able="false">
|
|
<view style="background:#66666;padding:15px 20px 80px 20px; ">
|
|
<view style="background-color: #FFFFFF;">
|
|
<view class="horizontalline"></view>
|
|
<view>
|
|
<view class="commodity">
|
|
<p>商品名称:</p>
|
|
<p style="color:#333333;">{{ tooldetilsdata.tool.name }}</p>
|
|
</view>
|
|
<view class="commodity">
|
|
<p>商品规格:</p>
|
|
<u-input border style="width:60%;height: 40rpx;" v-model="typeName" type="select"
|
|
@click="typeShow = true" />
|
|
<u-select v-model="typeShow"
|
|
:list="tooldetilsdata.tool.deliverType == 'SaaS' ? typeList : typeList1"
|
|
@confirm="citychange" mode="mutil-column-auto"></u-select>
|
|
</view>
|
|
<!-- <view class="commodity">
|
|
<p>交付方式:</p>
|
|
<p style="color:#333333;">{{tooldetilsdata.tool.deliverType}}</p>
|
|
</view> -->
|
|
<view class="commodity">
|
|
<p>商品价格:</p>
|
|
<p style="color:#333333;">
|
|
<span v-if="typeName == '测试服务(按次计)' && tooldetilsdata.tool.priceTime == 0">限时免费</span>
|
|
<span v-else-if="typeName == '使用时长(按月计)' && tooldetilsdata.tool.price == 0">限时免费</span>
|
|
<span v-else-if="typeName == '线下测试服务(金额面议)'">金额面议</span>
|
|
<span v-else>¥{{ typeName == '测试服务(按次计)' ? tooldetilsdata.tool.priceTime :
|
|
tooldetilsdata.tool.price }}</span>
|
|
<!-- ¥{{tooldetilsdata.tool.price}} -->
|
|
</p>
|
|
</view>
|
|
|
|
<view class="commodity">
|
|
<p>购买数量:</p>
|
|
<span
|
|
v-if="(typeName == '测试服务(按次计)' && tooldetilsdata.tool.priceTime == 0) || (typeName == '使用时长(按月计)' && tooldetilsdata.tool.price == 0)">1</span>
|
|
<u-number-box v-else v-model="cartnumber" @change="valChange"></u-number-box>
|
|
<!-- <p style="color:#333333 ;">Kinterface接口测试工具-软件版</p> -->
|
|
</view>
|
|
<view class="commodity">
|
|
<p>支付金额:</p>
|
|
<p style="color:#FD461A;margin-top: -3px;" v-if="addPriceAll != 0">
|
|
<span>¥ </span>
|
|
<span style="font-size:40rpx;margin-left:10rpx;font-weight: 800;">
|
|
{{ typeName == '线下测试服务(金额面议)' ? '金额面议' : addPriceAll }}</span>
|
|
</p>
|
|
<p style="color:#FD461A;margin-top: -3px;" v-else>
|
|
<span>{{ typeName == '线下测试服务(金额面议)' ? '金额面议' : '限时免费' }}</span>
|
|
</p>
|
|
</view>
|
|
<view class="commodity">
|
|
<p>支付方式:</p>
|
|
<p style="color:#FD461A;margin-top: -3px;">
|
|
<u-radio-group v-model="payTypeBig" @change="payTypeChange" placement="row">
|
|
<u-radio name="0">微信支付</u-radio>
|
|
<u-radio name="1" :disabled="lingqianIS">{{ lingqianIS ? '零钱不足' : '零钱' }}</u-radio>
|
|
</u-radio-group>
|
|
</p>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
<u-line></u-line>
|
|
<view class="submitt"
|
|
style="display: flex;justify-content: center; ;box-shadow:none;background: transparent;padding:0;">
|
|
<!-- <view class="button-g"
|
|
style="width:43vw;background:#FFFFFF;border: 1px solid #1578ED;color: #1578ED;margin-left: 0;"
|
|
@click="shopping('rests')">重置</view> -->
|
|
<view class="button-g"
|
|
style="width:80vw; background: linear-gradient(90deg, #5EA6FD, #1A81F9);color: #FFFFFF"
|
|
@click="payOrder">支付</view>
|
|
</view>
|
|
</u-popup>
|
|
<!-- 零钱支付密码 -->
|
|
<u-popup style="background:#66666;padding: 20px;" v-model="lqPasswordShow" mode="bottom" length="80%"
|
|
height='40%' border-radius="15" :closeable='true' :mask-close-able="false">
|
|
<!-- <u-code-input dot v-model="qbpassword" :maxlength="6"></u-code-input> -->
|
|
<view style="height:100rpx">
|
|
|
|
</view>
|
|
<u-message-input :dot-fill="true" :maxlength="6" @change="finish"></u-message-input>
|
|
<view class="button-g"
|
|
style="width:80vw; background: linear-gradient(90deg, #5EA6FD, #1A81F9);color: #FFFFFF;margin-top: 80rpx;margin-left: 80rpx;"
|
|
@click="lqPay">支付</view>
|
|
</u-popup>
|
|
<u-modal title='温馨提示' v-model="tokenshow" content="您还没有登录" confirm-text='现在就去' cancel-text='稍等一下'
|
|
show-cancel-button='true' cancel-color='#1578ED' confirm-color='#1578ED' @confirm="confirm"
|
|
@cancel='tokenshow = false'></u-modal>
|
|
</view>
|
|
</template>
|
|
|
|
<script>
|
|
import tool from '@/utils/mixin/tootype.js'
|
|
import {
|
|
findLabelValueByPropnew
|
|
} from '@/utils/util.js'
|
|
import {
|
|
encrypt,
|
|
decrypt
|
|
} from '@/utils/encrypt.js'
|
|
export default {
|
|
mixins: [tool],
|
|
data() {
|
|
return {
|
|
base: this.http.baseUrl,
|
|
typeShow: false,
|
|
typeName: '使用时长(按月计)',
|
|
typeList: [{
|
|
value: '测试服务(按次计)',
|
|
label: '测试服务(按次计)'
|
|
}, {
|
|
value: '使用时长(按月计)',
|
|
label: '使用时长(按月计)'
|
|
},
|
|
{
|
|
value: '线下测试服务(金额面议)',
|
|
label: '线下测试服务(金额面议)'
|
|
}
|
|
],
|
|
typeList1: [{
|
|
value: '使用时长(按月计)',
|
|
label: '使用时长(按月计)'
|
|
},
|
|
{
|
|
value: '线下测试服务(金额面议)',
|
|
label: '线下测试服务(金额面议)'
|
|
}],
|
|
tooldetilsdata: {},
|
|
logoimg: '',
|
|
isPopupShow: false,
|
|
cartnumber: 1,
|
|
allpirse: 0,
|
|
video: '',
|
|
tokenshow: false,
|
|
payTypeBig: '0',
|
|
lingqianIS: false,
|
|
lqPasswordShow: false,
|
|
qbpassword: '',
|
|
}
|
|
},
|
|
computed: {
|
|
addPriceAll() {
|
|
if (this.typeName == '测试服务(按次计)') {
|
|
return this.tooldetilsdata.tool.priceTime * this.cartnumber
|
|
} else {
|
|
return this.tooldetilsdata.tool.price * this.cartnumber
|
|
}
|
|
}
|
|
},
|
|
onLoad(options) {
|
|
this.http.quickGet(`/business/tool/detail?toolId=${options.id}`).then(res => {
|
|
this.tooldetilsdata = res.data
|
|
// 处理视频头像
|
|
if (this.tooldetilsdata.fileInfoList.length) {
|
|
this.tooldetilsdata.fileInfoList.forEach((it) => {
|
|
if (it.fileType == 'vedio') {
|
|
// mp4
|
|
this.tooldetilsdata.tool.vedio = it.fileUrl
|
|
}
|
|
if (it.fileType == 'head') {
|
|
// mp4
|
|
this.tooldetilsdata.tool.headimg = it.fileUrl
|
|
}
|
|
})
|
|
}
|
|
|
|
})
|
|
},
|
|
onReady() {
|
|
// setTimeout(()=>{
|
|
// uni.createVideoContext('video1').pause();
|
|
// },200)
|
|
// uni.requestPayment({
|
|
// timeStamp: '1714208088',
|
|
// nonceStr: '6e3323d68a2a4659a6c9df15b34a0f30',
|
|
// package: 'prepay_id=wx27165448535775baa3aeff767e6b180001',
|
|
// signType: 'RSA',
|
|
// paySign: 'k0vFRre/LhpjWRcFeGBpeyEEVDut4Y6vINJCttGINZ0RulB9MAw02K7YnHEIimtGL1dUfZtF4Eh93GimWsuuqIAvT5qdirRzVviQxAiLF5QZXCptmj1/MaTev75SZfBBC7dJvOnlIMFpk4QTLJNyjq519isZg8GAQwtFNIENRxFqTRHTCh8l5A3RWZEIhw0qBvzq6q9FVl7TFCA7RLRjPfVYnSTCSJdwxYE0AU38K+314KD7mR4mnIEzKGKCnKoAGHXIabEwFuebZjtgBhBcHI9J9iXltC5qcgn8Nskk6tJvhnAmRdmGdDeW7CdyPouTA9rjwcA2juRsL4hJ3W7dWg==',
|
|
// success(r) {
|
|
// uni.showToast({
|
|
// icon: 'none',
|
|
// title: '支付成功,请前往pc端工作台使用'
|
|
// })
|
|
// },
|
|
// fail(error) {
|
|
// console.log(error);
|
|
// uni.showToast({
|
|
// icon: 'none',
|
|
// title: '支付失败'
|
|
// })
|
|
// }
|
|
// })
|
|
},
|
|
methods: {
|
|
findLabelValueByPropnew,
|
|
// 支付方式改变
|
|
payTypeChange(e) {
|
|
console.log(e);
|
|
},
|
|
finish(e) {
|
|
this.qbpassword = e
|
|
},
|
|
// 零钱支付
|
|
lqPay() {
|
|
const userinform = uni.getStorageSync('wxUserInfo');
|
|
const id = userinform.userId
|
|
const data = {
|
|
toolId: this.tooldetilsdata.tool.toolId,
|
|
amount: this.cartnumber,
|
|
deliverType: this.tooldetilsdata.tool.deliverType,
|
|
price: this.typeName == '使用时长(按月计)' ? this.tooldetilsdata.tool.price : this.tooldetilsdata.tool
|
|
.priceTime,
|
|
priceType: this.typeName == '使用时长(按月计)' ? 'month' : 'times',
|
|
payType: 'WALLET',
|
|
paytype: 'WALLET',
|
|
toolType: this.tooldetilsdata.tool.toolType,
|
|
userId: id,
|
|
password: encrypt(this.qbpassword),
|
|
recordName: '购买工具:' + this.tooldetilsdata.tool.name
|
|
}
|
|
|
|
this.http.quickPost(`/play/allin_play`, data, true).then(res => {
|
|
if (res.data.retcode == 'SUCCESS') {
|
|
uni.showToast({
|
|
icon: 'none',
|
|
title: '支付成功,请前往pc端工作台使用'
|
|
})
|
|
this.lqPasswordShow = false
|
|
this.isPopupShow = false
|
|
setTimeout(() => {
|
|
uni.navigateTo({
|
|
url: '/pages/personal/ordernumber/ordernumber?current=0'
|
|
})
|
|
}, 1000)
|
|
} else {
|
|
uni.showToast({
|
|
icon: 'none',
|
|
title: '支付失败,请联系管理员'
|
|
})
|
|
}
|
|
})
|
|
},
|
|
// 支付
|
|
payOrder() {
|
|
const that = this
|
|
// 支付参数
|
|
const userinform = uni.getStorageSync('wxUserInfo');
|
|
const id = userinform.userId
|
|
const data = {
|
|
toolId: this.tooldetilsdata.tool.toolId,
|
|
amount: this.cartnumber,
|
|
deliverType: this.tooldetilsdata.tool.deliverType,
|
|
price: this.typeName == '使用时长(按月计)' ? this.tooldetilsdata.tool.price : this.tooldetilsdata.tool
|
|
.priceTime,
|
|
priceType: this.typeName == '使用时长(按月计)' ? 'month' : 'times',
|
|
payType: 'W06',
|
|
paytype: 'W06',
|
|
toolType: this.tooldetilsdata.tool.toolType,
|
|
userId: id
|
|
}
|
|
if (this.typeName == '线下测试服务(金额面议)') {
|
|
data.priceType = 'offLine'
|
|
data.price = '0'
|
|
this.http.quickPost(`/business/tool/nopay/one`, data, true).then(res => {
|
|
console.log(res);
|
|
if (res.data.code != 500) {
|
|
uni.showToast({
|
|
icon: 'none',
|
|
title: '购买成功'
|
|
})
|
|
} else {
|
|
uni.showToast({
|
|
icon: 'none',
|
|
title: res.data.msg
|
|
})
|
|
}
|
|
|
|
this.isPopupShow = false
|
|
})
|
|
return
|
|
}
|
|
if (this.addPriceAll == 0) {
|
|
// 免费试用
|
|
this.http.quickPost(`/business/tool/nopay/one`, data, true).then(res => {
|
|
uni.showToast({
|
|
icon: 'none',
|
|
title: '购买成功,请前往PC端工作台使用'
|
|
})
|
|
this.isPopupShow = false
|
|
setTimeout(() => {
|
|
uni.navigateTo({
|
|
url: '/pages/personal/ordernumber/ordernumber?current=0'
|
|
})
|
|
}, 1000)
|
|
})
|
|
} else {
|
|
// 付费
|
|
// 微信支付
|
|
if (this.payTypeBig == 0) {
|
|
this.http.quickPost(`/play/allin_play`, data, true).then(res => {
|
|
if (res.data.retcode == 'SUCCESS') {
|
|
const info = JSON.parse(res.data.payinfo)
|
|
uni.requestPayment({
|
|
timeStamp: info.timeStamp,
|
|
nonceStr: info.nonceStr,
|
|
package: info.package,
|
|
signType: info.signType,
|
|
paySign: info.paySign,
|
|
success(r) {
|
|
uni.showToast({
|
|
icon: 'none',
|
|
title: '支付成功,请前往pc端工作台使用'
|
|
})
|
|
that.isPopupShow = false
|
|
setTimeout(() => {
|
|
uni.navigateTo({
|
|
url: '/pages/personal/ordernumber/ordernumber?current=0'
|
|
})
|
|
}, 1000)
|
|
},
|
|
fail(error) {
|
|
console.log(error);
|
|
uni.showToast({
|
|
icon: 'none',
|
|
title: '支付失败'
|
|
})
|
|
}
|
|
})
|
|
} else {
|
|
uni.showToast({
|
|
icon: 'none',
|
|
title: '支付错误,请联系管理员'
|
|
})
|
|
}
|
|
|
|
})
|
|
} else {
|
|
// 零钱支付 先查零钱够不够
|
|
const wxUserInfo = uni.getStorageSync('wxUserInfo');
|
|
const userId = wxUserInfo.userId
|
|
this.http.quickGet(`/mpay/my/account/${userId}`, true).then(res => {
|
|
const mycount = res.data.balance
|
|
// 查询钱包余额是否足够
|
|
if (this.addPriceAll > mycount) {
|
|
// 钱不够 提示
|
|
this.lingqianIS = true
|
|
this.payTypeBig = '0'
|
|
uni.showToast({
|
|
icon: 'none',
|
|
title: '您的零钱不足,请使用微信支付'
|
|
})
|
|
|
|
} else {
|
|
// 钱够了 输密码支付
|
|
this.lqPasswordShow = true
|
|
}
|
|
})
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
},
|
|
citychange(e) {
|
|
this.typeName = e[0].label
|
|
this.cartnumber = 1
|
|
},
|
|
nowBuy() {
|
|
let accessToken = uni.getStorageSync('accessToken');
|
|
console.log(accessToken);
|
|
if (!accessToken) {
|
|
this.tokenshow = true
|
|
return
|
|
}
|
|
this.isPopupShow = true
|
|
|
|
},
|
|
confirm() {
|
|
uni.navigateTo({
|
|
url: '/pages/personal/login'
|
|
})
|
|
},
|
|
addcart(type) {
|
|
// uni.showToast({
|
|
// title: '该功能开发中',
|
|
// icon: 'none',
|
|
// duration: 1000
|
|
// });
|
|
// return;
|
|
let accessToken = uni.getStorageSync('accessToken');
|
|
if (!accessToken) {
|
|
this.tokenshow = true
|
|
} else {
|
|
if (type == 'add') {
|
|
this.isPopupShow = true
|
|
} else if (type == 'sunl') {
|
|
// let allselectdata = [];
|
|
// allselectdata.push(this.tooldetilsdata.tool)
|
|
// // console.log('ddd',allselectdata)
|
|
// this.$refs.uToast.show({
|
|
// title: '功能暂未开放',
|
|
// type: 'info',
|
|
// duration: 2000,
|
|
// })
|
|
|
|
|
|
} else if (type == 'kefu') {
|
|
this.$refs.uToast.show({
|
|
title: '功能暂未开通',
|
|
type: 'info',
|
|
url: '/pages/user/index'
|
|
})
|
|
} else if (type == 'cart') {
|
|
uni.switchTab({
|
|
url: '/pages/shoppingtrolley/shoppingtrolley'
|
|
})
|
|
}
|
|
}
|
|
},
|
|
open() {
|
|
// console.log('open');
|
|
},
|
|
close() {
|
|
this.isPopupShow = false
|
|
// console.log('close');
|
|
},
|
|
valChange(e) {
|
|
this.allpirse = e.value * this.tooldetilsdata.tool.price
|
|
console.log('当前值为: ' + e.value)
|
|
},
|
|
shopping(type) {
|
|
uni.showToast({
|
|
title: '该功能开发中',
|
|
icon: 'none',
|
|
duration: 1000
|
|
});
|
|
return;
|
|
if (type == 'rests') {
|
|
this.cartnumber = 0
|
|
} else {
|
|
console.log('加入购物车: ')
|
|
|
|
this.http.quickGet(`/my/addShoppingCart/${this.tooldetilsdata.tool.toolId}/${this.cartnumber}`, true)
|
|
.then(res => {
|
|
this.$refs.uToast.show({
|
|
title: '添加购物车成功',
|
|
type: 'success',
|
|
duration: 1000,
|
|
isTab: true,
|
|
url: '/pages/shoppingtrolley/shoppingtrolley'
|
|
})
|
|
// this.http.quickGet(`/message/my/count`).then(res => {
|
|
// // console.log('信息购物车数量',res)
|
|
// store.commit('SET_CARTCOUNT',res.cartCount);
|
|
// setTimeout(() => {
|
|
// uni.switchTab({
|
|
// url:'/pages/shoppingtrolley/shoppingtrolley'
|
|
// })
|
|
// },1000);
|
|
// })
|
|
})
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|
|
</script>
|
|
|
|
<style>
|
|
.commodity>>>input {
|
|
min-height: 40rpx !important;
|
|
}
|
|
|
|
.logobg {
|
|
width: 100vw;
|
|
object-fit: contain;
|
|
position: relative;
|
|
/* z-index:0; */
|
|
}
|
|
|
|
.logoauto {
|
|
width: 200rpx;
|
|
height: 200rpx;
|
|
object-fit: contain;
|
|
position: absolute;
|
|
top: 10%;
|
|
left: 37%;
|
|
}
|
|
|
|
.schedule {
|
|
width: 94vw;
|
|
margin: 15px 3vw 20px 3vw;
|
|
}
|
|
|
|
.tabone {
|
|
/* width: 98rpx; */
|
|
padding: 6rpx;
|
|
/* height: 33rpx; */
|
|
border: 1px solid #2B80FC;
|
|
border-radius: 4rpx;
|
|
font-size: 22rpx;
|
|
font-weight: 500;
|
|
color: #2387EE;
|
|
text-align: center;
|
|
line-height: 33rpx;
|
|
}
|
|
|
|
.linex {
|
|
width: 6rpx;
|
|
height: 26rpx;
|
|
background: #1578ED;
|
|
border-radius: 3rpx;
|
|
}
|
|
|
|
.wboeder {
|
|
/* width:92%; */
|
|
padding: 15px 4%;
|
|
background: #FFFFFF;
|
|
border-radius: 10rpx;
|
|
margin-bottom: 20px;
|
|
}
|
|
|
|
.textx {
|
|
font-size: 26rpx;
|
|
font-weight: 500;
|
|
color: #808080;
|
|
line-height: 42rpx;
|
|
}
|
|
|
|
.textp {
|
|
font-size: 26rpx;
|
|
font-weight: 500;
|
|
color: #808080;
|
|
line-height: 42rpx;
|
|
/* position: absolute;
|
|
left: 13px;
|
|
top: -10px; */
|
|
line-height: 23px;
|
|
display: block
|
|
}
|
|
|
|
.sloi {
|
|
width: 10rpx;
|
|
height: 10rpx;
|
|
background: #727578;
|
|
border-radius: 50%;
|
|
text-indent: 1.5em;
|
|
margin-right: 10px;
|
|
|
|
/* margin-top:-20px; */
|
|
}
|
|
|
|
.square {
|
|
/* position: relative; */
|
|
display: flex;
|
|
/* display:flex;
|
|
margin-bottom:10px */
|
|
}
|
|
|
|
.square :before {
|
|
background: #727578;
|
|
border-radius: 50%;
|
|
content: "";
|
|
display: inline-block;
|
|
height: 7px;
|
|
margin-bottom: 2px;
|
|
margin-right: 6px;
|
|
width: 7px;
|
|
}
|
|
|
|
.submitt {
|
|
height: 60px;
|
|
/* line-height: 55px; */
|
|
/* text-align: center; */
|
|
font-size: 20px;
|
|
background: #FFFFFF;
|
|
box-shadow: -4px 7px 18px 0px rgba(248, 164, 54, 0.33);
|
|
margin-top: 60px;
|
|
position: fixed;
|
|
bottom: 0;
|
|
width: 100vw;
|
|
padding: 10px 30px;
|
|
display: flex;
|
|
}
|
|
|
|
.kfgw {
|
|
display: flex;
|
|
flex-direction: column;
|
|
margin-right: 30rpx;
|
|
align-items: center;
|
|
}
|
|
|
|
.kfgw img {
|
|
width: 40rpx;
|
|
height: 40rpx;
|
|
}
|
|
|
|
.kfgw p {
|
|
color: #666666;
|
|
font-size: 22rpx;
|
|
}
|
|
|
|
.button-g {
|
|
width: 540rpx;
|
|
height: 70rpx;
|
|
background: linear-gradient(90deg, #FF8600, #FE2B2B);
|
|
border-radius: 35rpx;
|
|
text-align: center;
|
|
line-height: 70rpx;
|
|
color: #FFFFFF;
|
|
font-size: 30rpx;
|
|
margin-left: 13px;
|
|
}
|
|
|
|
.commodity {
|
|
display: flex;
|
|
color: #808080;
|
|
font-size: 30rpx;
|
|
margin: 20px 0;
|
|
}
|
|
</style> |