软测宝小程序
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

<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>