703 lines
20 KiB
Vue
703 lines
20 KiB
Vue
<template>
|
||
<view class="whole" v-if="!loading">
|
||
<view class="staTit" v-if="orderInfo.status === 0">待团长处理</view>
|
||
<view class="staTit" v-if="orderInfo.status === 11">团员已撤销</view>
|
||
<view class="staTit" v-if="orderInfo.status === 20">待团员退货</view>
|
||
<view class="staTit" v-if="orderInfo.status === 21">团长已拒绝</view>
|
||
<view class="staTit" v-if="orderInfo.status === 22">团员已退货</view>
|
||
<view class="staTit" v-if="orderInfo.status === 30">团员已退货</view>
|
||
<view class="staTit" v-if="orderInfo.status === 31">退款中</view>
|
||
<view class="staTit" v-if="orderInfo.status === 32">已退款</view>
|
||
<view class="staTit" v-if="orderInfo.status === 33">退款失败</view>
|
||
|
||
<!-- 已申请退款未退货 -->
|
||
<view class="method" v-if="orderInfo.status === 20 && !orderInfo.ship_sn && orderInfo.pickup_id === 0">
|
||
<view class="row">
|
||
<view class="tit">方式1:预约上门取件</view>
|
||
<view class="btn flex" @click="toSendGoods()">立即寄回</view>
|
||
</view>
|
||
<view class="row row1">
|
||
<view class="tit">方式2:自己联系快递寄回,需填写快递单号</view>
|
||
<view class="ed">退货地址</view>
|
||
<view class="arrdbox flex1">
|
||
<view class="arrd">
|
||
<text>{{orderInfo.refund_address_name}} {{orderInfo.refund_address_mobile || orderInfo.refund_address_tel}}</text><br>
|
||
<text>
|
||
{{orderInfo.refund_address_province_name}}{{orderInfo.refund_address_city_name}}{{orderInfo.refund_address_area_name}}{{orderInfo.refund_address_detail}}
|
||
</text>
|
||
</view>
|
||
<view class="copybtn flex" @click="copyAddress()">复制</view>
|
||
</view>
|
||
<view class="btn btn1 flex" @click="toFillNo()">填写快递单号</view>
|
||
</view>
|
||
</view>
|
||
|
||
<!-- 已申请退款未上门取件 -->
|
||
<view class="hasback flex1" @click="tosendDetail()" v-if="orderInfo.status === 20 && orderInfo.pickup_id !== 0">
|
||
<view>
|
||
<view class="tit">已预约上门取件</view>
|
||
<text>本次寄件费用由团长承担</text>
|
||
</view>
|
||
<up-icon name="arrow-right" />
|
||
</view>
|
||
|
||
<view class="pickcode" v-if="orderInfo.status === 20 && orderInfo.pickup_id !== 0 && pickup_code">取件码
|
||
<text>{{pickup_code}}</text>
|
||
</view>
|
||
|
||
<!-- 已申请退款且退货 -->
|
||
<view class="expInfo" v-if="(orderInfo.status === 22 || orderInfo.status === 30 || orderInfo.status === 31) && orderInfo.ship_sn">
|
||
<view class="tit flex1">
|
||
<text>退货物流信息</text>
|
||
<view class="view" @click="viewExpress()">查看 <up-icon name="arrow-right" /></view>
|
||
</view>
|
||
<view class="expno">
|
||
<text>{{orderInfo.delivery_company.name}} {{orderInfo.ship_sn}}</text>
|
||
<view class="copybtn" @click="copyExpress()">复制</view>
|
||
</view>
|
||
</view>
|
||
|
||
<view class="refInfo">
|
||
<view class="title">团员申请退款</view>
|
||
<view class="info">
|
||
<view class="item">
|
||
<view class="left">退款金额:</view>
|
||
<view class="right">
|
||
<view class="amount">¥{{orderInfo.total_amount}}</view>
|
||
</view>
|
||
</view>
|
||
<view class="item">
|
||
<view class="left">退款明细:</view>
|
||
<view class="right">
|
||
<view class="row" v-for="(it, index) in orderInfo.refunds" :key="index">
|
||
<text>{{it.item.goods_name}}<template v-if="it.item.sku_name">,{{it.item.sku_name}}</template></text>
|
||
<text style="white-space: nowrap;padding-left: 10rpx;">退款<text class="red">¥{{((parseFloat(it.amount) * 100 - parseFloat(it.freight_price_refund) * 100) / 100).toFixed(2)}}</text></text>
|
||
</view>
|
||
<view class="row" v-if="orderInfo.freight_price">
|
||
<text>运费</text>
|
||
<text>退款<text class="red">¥{{orderInfo.freight_price}}</text></text>
|
||
</view>
|
||
</view>
|
||
</view>
|
||
<view class="item">
|
||
<view class="left">申请原因:</view>
|
||
<view class="right">
|
||
<view class="row">
|
||
<text>{{refoundReasonObj[orderInfo.refund_reason]}}</text>
|
||
</view>
|
||
</view>
|
||
</view>
|
||
<view class="item">
|
||
<view class="left">售后类型:</view>
|
||
<view class="right">
|
||
<view class="row">
|
||
<text>{{orderInfo.type == 2 ? '退货退款' : '仅退款(无需退货)'}}</text>
|
||
</view>
|
||
</view>
|
||
</view>
|
||
<view class="item">
|
||
<view class="left">申请描述:</view>
|
||
<view class="right">
|
||
<view class="row">
|
||
<text>{{orderInfo.apply_desc || ''}}</text>
|
||
</view>
|
||
<view class="imgbox" v-if="orderInfo.apply_pic_urls">
|
||
<image v-for="(it, index) in orderInfo.apply_pic_urls" :key="index" :src="it" mode="aspectFill" class="img" @click="preViewImg(it)"></image>
|
||
</view>
|
||
</view>
|
||
</view>
|
||
<view class="item">
|
||
<view class="left">申请时间:</view>
|
||
<view class="right">
|
||
<view class="row">
|
||
<text>{{orderInfo.created_at || ''}}</text>
|
||
</view>
|
||
</view>
|
||
</view>
|
||
</view>
|
||
</view>
|
||
|
||
<view class="history">
|
||
<view class="tit flex1" @click="showInfo = !showInfo">
|
||
<text>售后历史</text>
|
||
<up-icon name="arrow-up" v-if="showInfo" />
|
||
<up-icon name="arrow-down" v-else />
|
||
</view>
|
||
<view v-show="showInfo" class="info">
|
||
|
||
<view class="row" v-for="(item, index) in historyInfo" :key="index" :class="index == 0 ? 'is-done' : ''">
|
||
<view class="tt" v-if="item.operator_type === 0">团员发起退款申请</view>
|
||
<view class="tt" v-if="item.operator_type === 10">团员修改退款申请</view>
|
||
<view class="tt" v-if="item.operator_type === 11">团员取消退款申请</view>
|
||
<view class="tt" v-if="item.operator_type === 13">系统取消申请</view>
|
||
<view class="tt" v-if="item.operator_type === 20">申请已通过</view>
|
||
<view class="tt" v-if="item.operator_type === 21">申请拒绝</view>
|
||
<view class="tt" v-if="item.operator_type === 22 && item.ship_sn">团员开始寄件</view>
|
||
<view class="tt" v-if="item.operator_type === 30 && item.extend_info.pickup">团员开始寄件</view>
|
||
<view class="tt" v-if="item.operator_type === 30 && !item.extend_info.pickup">团员填写物流信息</view>
|
||
<view class="tt" v-if="item.operator_type === 31">团员修改寄件</view>
|
||
<view class="tt" v-if="item.operator_type === 32">团员取消寄件</view>
|
||
<view class="tt" v-if="item.operator_type === 33">快递平台取消寄件</view>
|
||
<view class="tt" v-if="item.operator_type === 34">团长填写物流</view>
|
||
<view class="tt" v-if="item.operator_type === 40">待退款</view>
|
||
<view class="tt" v-if="item.operator_type === 41">退款中</view>
|
||
<view class="tt" v-if="item.operator_type === 42">退款已完成</view>
|
||
<view class="tt" v-if="item.operator_type === 43">退款失败</view>
|
||
|
||
<view class="time">{{item.created_at}}</view>
|
||
|
||
<text v-if="item.operator_type === 21">拒绝理由:{{item.approve_msg}}</text>
|
||
|
||
<text v-if="item.operator_type === 32 &&
|
||
item.extend_info &&
|
||
item.extend_info.pickup
|
||
">取消理由:{{reasonObj[item.extend_info.pickup.cancel_type]}}</text>
|
||
|
||
<template v-if="item.operator_type === 30 && item.extend_info.pickup">
|
||
<text>寄件类型:{{sendTypeObj[item.extend_info.pickup.consign_type] || ''}}</text><br>
|
||
</template>
|
||
|
||
<template v-if="item.operator_type === 30 && !item.extend_info.pickup">
|
||
<text style="color: #409eff;" @click="viewExpress()">物流信息:{{item.ship_sn || ''}}</text>
|
||
</template>
|
||
|
||
<template v-if="item.operator_type === 34">
|
||
<text style="color: #409eff;" @click="viewExpress()">物流信息:{{item.ship_sn || ''}}</text>
|
||
</template>
|
||
|
||
<template v-if="item.operator_type === 22 && item.ship_sn">
|
||
<text>物流单号:{{item.ship_sn || ''}}</text>
|
||
</template>
|
||
|
||
<template v-if="item.operator_type === 0 || item.operator_type === 10">
|
||
<view v-for="(it, i) in item.extend_info.refunds" :key="i">
|
||
<text>{{it.item.goods_name}}{{it.item.sku_name}},退款{{((parseFloat(it.amount) * 100 - parseFloat(it.freight_price_refund) * 100) / 100).toFixed(2)}}元</text>
|
||
</view>
|
||
<text v-if="item.freight_price">运费,退款{{item.freight_price}}元</text><br>
|
||
<text>售后类型:{{item.type == 2 ? '退货退款' : '仅退款(无需退货)'}}</text><br>
|
||
<text>退款原因:{{refoundReasonObj[orderInfo.refund_reason]}}</text><br>
|
||
<text>申请说明:{{item.apply_desc || ''}}</text>
|
||
<view class="imgbox">
|
||
<image v-for="(it, i) in item.apply_pic_urls" :key="i" :src="it" mode="aspectFill" class="img" @click="preViewImg(it)"></image>
|
||
</view>
|
||
</template>
|
||
|
||
</view>
|
||
|
||
</view>
|
||
</view>
|
||
<!-- 退款申请状态 0-发起申请;11-申请取消;20-申请通过(待退货);21-申请拒绝;22-团员已填写物流单号,待团长退款;30-待退款(已退货,待退款);31-退款中;32-退款完成;33-退款失败 -->
|
||
<view class="bottom" v-if="orderInfo.status === 0 || orderInfo.status === 11 || orderInfo.status === 20 || orderInfo.status === 21 || ((orderInfo.status === 22 || orderInfo.status === 30 || orderInfo.status === 31) && orderInfo.ship_sn)">
|
||
<view class="btn flex" v-if="(orderInfo.status === 22 || orderInfo.status === 30 || orderInfo.status === 31) && orderInfo.ship_sn" @click="modifyExpress()">修改物流单号</view>
|
||
<view class="btn flex" v-if="orderInfo.status === 0 || orderInfo.status === 20 || orderInfo.status === 21 || orderInfo.status === 22" @click="showCommit = true">撤销申请</view>
|
||
<view class="btn flex" v-if="orderInfo.status === 0 || orderInfo.status === 11 || orderInfo.status === 21" @click="toModifyApply()">修改申请</view>
|
||
</view>
|
||
|
||
<up-modal
|
||
:show="showCommit"
|
||
title="确定撤销退款申请吗?"
|
||
:confirmColor="Color"
|
||
:showCancelButton="true"
|
||
@confirm="revokeRefound()"
|
||
@cancel="showCommit = false">
|
||
</up-modal>
|
||
|
||
<!-- 隐私协议弹窗 -->
|
||
<privacy-popup :show-dialog="showPrivacy" @close="showPrivacy = false" @agree="showPrivacy = false" @refuse="showPrivacy = false" />
|
||
|
||
</view>
|
||
</template>
|
||
|
||
<script>
|
||
import { ref, reactive, toRefs } from 'vue'
|
||
import { refoundReasonObj } from '@/utils/list.js'
|
||
import { get } from '@/api/request.js'
|
||
import { showToast, judgePrivacy } from '@/components/common.js'
|
||
import { sendTypeObj, reasonObj, Style } from '@/utils/list.js'
|
||
import privacyPopup from '@/components/privacyPopup/index.vue'
|
||
|
||
export default {
|
||
components: {
|
||
privacyPopup
|
||
},
|
||
setup() {
|
||
const data = reactive({
|
||
refund_id: '',
|
||
orderInfo: {},
|
||
historyInfo: [],
|
||
showInfo: false,
|
||
showCommit: false,
|
||
loading: true,
|
||
cancelLoad: false,
|
||
Color: uni.getStorageSync('theme_color'),
|
||
priceColor: Style[uni.getStorageSync('theme_index') * 1].priceColor,
|
||
showPrivacy: false,
|
||
pickup_code: ''
|
||
})
|
||
|
||
// 获取退款详情
|
||
function getOrderInfo() {
|
||
get(`/api/v1/orderRefundApply/${data.refund_id}`).then((res) => {
|
||
data.orderInfo = res.data
|
||
data.loading = false
|
||
if(res.data.status === 20 && res.data.pickup_id !== 0) {
|
||
getPickCode(res.data.pickup_id)
|
||
}
|
||
})
|
||
}
|
||
|
||
function getPickCode(pickup_id) {
|
||
get(`/api/v1/pickup/${pickup_id}`).then((res) => {
|
||
data.pickup_code = res.data.pickup_code
|
||
})
|
||
}
|
||
|
||
// 获取售后历史
|
||
function getHistory() {
|
||
get(`/api/v1/orderRefundApply/history/${data.refund_id}`, {page: 1, pageSize: 100}).then((res) => {
|
||
data.historyInfo = res.data
|
||
})
|
||
}
|
||
|
||
// 撤销申请
|
||
function revokeRefound() {
|
||
if(!data.cancelLoad) {
|
||
data.cancelLoad = true
|
||
uni.showLoading({
|
||
title: '正在取消',
|
||
mask: true
|
||
})
|
||
get(`/api/v1/orderRefundApply/cancel/${data.refund_id}`).then((res) => {
|
||
uni.hideLoading()
|
||
showToast('退款申请已取消')
|
||
data.showCommit = false
|
||
data.cancelLoad = false
|
||
getOrderInfo()
|
||
getHistory()
|
||
}).catch(() => {
|
||
data.cancelLoad = false
|
||
})
|
||
}
|
||
}
|
||
|
||
function toSendGoods() {
|
||
uni.navigateTo({
|
||
url: '/pages/mine/refund/sendgoods/index?order_id=' + data.orderInfo.order_id + '&refund_id=' + data.refund_id
|
||
})
|
||
}
|
||
|
||
function toFillNo() {
|
||
uni.navigateTo({
|
||
url: '/pages/mine/refund/fillno/index?refund_id=' + data.refund_id
|
||
})
|
||
}
|
||
|
||
function viewExpress() {
|
||
uni.navigateTo({
|
||
url: '/pages/mine/refund/expressinfo/index?refund_id=' + data.refund_id
|
||
})
|
||
}
|
||
|
||
function tosendDetail() {
|
||
uni.navigateTo({
|
||
url: '/pages/mine/refund/senddetail/index?pickup_id=' + data.orderInfo.pickup_id + '&refund_id=' + data.refund_id
|
||
})
|
||
}
|
||
|
||
// 复制物流单号
|
||
const copyExpress = async () => {
|
||
if(await judgePrivacy()) {
|
||
data.showPrivacy = true
|
||
return false
|
||
}
|
||
uni.setClipboardData({
|
||
data: String(data.orderInfo.ship_sn),
|
||
success: function () {
|
||
uni.showToast({
|
||
icon: 'none',
|
||
title: '物流单号已复制'
|
||
})
|
||
},
|
||
fail: function () {
|
||
uni.showToast({
|
||
icon: 'none',
|
||
title: '复制失败'
|
||
})
|
||
}
|
||
})
|
||
}
|
||
|
||
// 修改申请
|
||
function toModifyApply() {
|
||
uni.navigateTo({
|
||
url: '/pages/mine/refund/apply/index?order_id=' + data.orderInfo.order_id + '&refund_id=' + data.refund_id + '&type=' + data.orderInfo.type
|
||
})
|
||
}
|
||
|
||
// 修改物流单号
|
||
function modifyExpress() {
|
||
uni.navigateTo({
|
||
url: '/pages/mine/refund/fillno/index?refund_id=' + data.refund_id + '&modify=1'
|
||
})
|
||
}
|
||
|
||
async function copyAddress() {
|
||
if(await judgePrivacy()) {
|
||
data.showPrivacy = true
|
||
return false
|
||
}
|
||
let address = data.orderInfo.refund_address_name + ' ' +
|
||
(data.orderInfo.refund_address_mobile || data.orderInfo.refund_address_tel) + ' ' +
|
||
data.orderInfo.refund_address_province_name +
|
||
data.orderInfo.refund_address_city_name +
|
||
data.orderInfo.refund_address_area_name +
|
||
data.orderInfo.refund_address_detail
|
||
uni.setClipboardData({
|
||
data: address,
|
||
success: function () {
|
||
uni.showToast({
|
||
icon: 'none',
|
||
title: '地址信息已复制'
|
||
})
|
||
},
|
||
fail: function () {
|
||
uni.showToast({
|
||
icon: 'none',
|
||
title: '复制失败'
|
||
})
|
||
}
|
||
})
|
||
}
|
||
|
||
function preViewImg(img) {
|
||
uni.previewImage({
|
||
urls: [img],
|
||
current: 0
|
||
})
|
||
}
|
||
|
||
return {
|
||
sendTypeObj,
|
||
reasonObj,
|
||
refoundReasonObj,
|
||
...toRefs(data),
|
||
getOrderInfo,
|
||
getHistory,
|
||
revokeRefound,
|
||
toSendGoods,
|
||
toFillNo,
|
||
viewExpress,
|
||
tosendDetail,
|
||
copyExpress,
|
||
toModifyApply,
|
||
modifyExpress,
|
||
copyAddress,
|
||
preViewImg
|
||
}
|
||
},
|
||
onLoad(options) {
|
||
this.refund_id = options.refund_id
|
||
},
|
||
onShow() {
|
||
this.getOrderInfo()
|
||
this.getHistory()
|
||
}
|
||
}
|
||
</script>
|
||
|
||
<style lang="scss" scoped>
|
||
.flex{
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: center;
|
||
}
|
||
.flex1{
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: space-between;
|
||
}
|
||
.whole {
|
||
padding-bottom: 110rpx;
|
||
box-sizing: border-box;
|
||
.staTit{
|
||
font-size: 50rpx;
|
||
color: #111111;
|
||
font-weight: 600;
|
||
padding: 50rpx 0;
|
||
background: #fff;
|
||
text-align: center;
|
||
}
|
||
.refInfo{
|
||
margin-top: 20rpx;
|
||
background: #fff;
|
||
.title{
|
||
font-size: 32rpx;
|
||
color: #111111;
|
||
font-weight: bold;
|
||
padding: 30rpx;
|
||
border-bottom: 1rpx solid #E5E5E5;
|
||
}
|
||
.info{
|
||
padding: 10rpx 30rpx;
|
||
.item{
|
||
display: flex;
|
||
align-items: flex-start;
|
||
padding: 10rpx 0;
|
||
.left{
|
||
font-size: 30rpx;
|
||
color: #7B7B7B;
|
||
width: 150rpx;
|
||
}
|
||
.right{
|
||
width: calc(100% - 150rpx);
|
||
.amount{
|
||
font-size: 40rpx;
|
||
color: v-bind('priceColor');
|
||
font-weight: bold;
|
||
line-height: 1;
|
||
}
|
||
.row{
|
||
display: flex;
|
||
width: 100%;
|
||
align-items: center;
|
||
justify-content: space-between;
|
||
margin-bottom: 10rpx;
|
||
.row1{
|
||
margin-bottom: 10rpx;
|
||
}
|
||
text{
|
||
font-size: 30rpx;
|
||
color: #000;
|
||
&.red{
|
||
color: v-bind('priceColor');
|
||
}
|
||
}
|
||
}
|
||
.imgbox{
|
||
margin-top: 10rpx;
|
||
.img{
|
||
width: 140rpx;
|
||
height: 140rpx;
|
||
margin: 0 16rpx 16rpx 0;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
.history{
|
||
margin-top: 20rpx;
|
||
background: #fff;
|
||
.tit{
|
||
font-size: 34rpx;
|
||
color: #111111;
|
||
font-weight: bold;
|
||
padding: 30rpx;
|
||
width: 100%;
|
||
box-sizing: border-box;
|
||
}
|
||
.info{
|
||
border-top: 1rpx solid #eee;
|
||
padding: 30rpx;
|
||
.row{
|
||
padding-left: 54rpx;
|
||
position: relative;
|
||
padding-bottom: 16rpx;
|
||
.tt{
|
||
font-size: 30rpx;
|
||
color: #7B7B7B;
|
||
font-weight: 600;
|
||
}
|
||
.time{
|
||
font-size: 24rpx;
|
||
color: #98989F;
|
||
}
|
||
text{
|
||
font-size: 26rpx;
|
||
color: #666;
|
||
line-height: 40rpx;
|
||
}
|
||
&:before {
|
||
position: absolute;
|
||
margin-top: 16rpx;
|
||
left: 9rpx;
|
||
content: ' ';
|
||
height: 20rpx;
|
||
width: 20rpx;
|
||
border-radius: 50%;
|
||
background-color: #e8e8e8;
|
||
}
|
||
|
||
&:after {
|
||
position: absolute;
|
||
top: 32rpx;
|
||
left: 16rpx;
|
||
bottom: -38rpx;
|
||
content: ' ';
|
||
width: 2rpx;
|
||
border-right: 2rpx solid #e8e8e8;
|
||
}
|
||
&:not(:first-child) {
|
||
padding-top: 16rpx;
|
||
}
|
||
&:last-child {
|
||
&:after {
|
||
display: none;
|
||
}
|
||
}
|
||
&.is-done {
|
||
.tt{
|
||
color: #333;
|
||
}
|
||
&:after {
|
||
border-color: v-bind('Color');
|
||
}
|
||
&:before {
|
||
background-color: v-bind('Color');
|
||
box-shadow: v-bind('Color') 0 0 10px;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
.imgbox{
|
||
margin-top: 10rpx;
|
||
.img{
|
||
width: 140rpx;
|
||
height: 140rpx;
|
||
margin: 0 16rpx 16rpx 0;
|
||
}
|
||
}
|
||
}
|
||
.bottom{
|
||
position: fixed;
|
||
left: 0;
|
||
bottom: 0;
|
||
width: 100%;
|
||
padding: 0 30rpx;
|
||
box-sizing: border-box;
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: flex-end;
|
||
height: 90rpx;
|
||
background-color: #fff;
|
||
z-index: 10;
|
||
.btn{
|
||
height: 48rpx;
|
||
padding: 0 30rpx;
|
||
font-size: 24rpx;
|
||
color: #333;
|
||
border: 1px solid #BBBBBB;
|
||
margin-left: 20rpx;
|
||
border-radius: 48rpx;
|
||
}
|
||
}
|
||
|
||
.method{
|
||
padding: 30rpx;
|
||
margin-top: 20rpx;
|
||
background: #fff;
|
||
box-sizing: border-box;
|
||
.row{
|
||
&.row1{
|
||
margin-top: 60rpx;
|
||
}
|
||
.tit{
|
||
font-size: 32rpx;
|
||
color: #111;
|
||
font-weight: 600;margin-bottom: 30rpx;
|
||
}
|
||
.btn{
|
||
height: 80rpx;
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: center;
|
||
font-size: 30rpx;
|
||
width: 100%;
|
||
color: #fff;
|
||
border-radius: 80rpx;
|
||
background: v-bind('Color');
|
||
box-sizing: border-box;
|
||
&.btn1{
|
||
border: 1rpx solid v-bind('Color');
|
||
color: v-bind('Color');
|
||
background: #fff;
|
||
}
|
||
}
|
||
.ed{
|
||
margin-bottom: 10rpx;
|
||
}
|
||
.arrdbox{
|
||
font-size: 26rpx;
|
||
color: #303030;
|
||
margin-bottom: 50rpx;
|
||
.arrd{
|
||
width: calc(100% - 140rpx);
|
||
text{
|
||
color: #7B7B7B;
|
||
line-height: 44rpx;
|
||
}
|
||
}
|
||
.copybtn{
|
||
height: 48rpx;
|
||
padding: 0 30rpx;
|
||
font-size: 24rpx;
|
||
color: #333;
|
||
border: 1rpx solid #BBBBBB;
|
||
border-radius: 48rpx;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
.hasback{
|
||
margin-top: 20rpx;
|
||
background: #fff;
|
||
border-radius: 10rpx;
|
||
padding: 30rpx;
|
||
.tit{
|
||
font-size: 32rpx;
|
||
font-weight: bold;
|
||
color: #111;
|
||
margin-bottom: 20rpx;
|
||
}
|
||
text{
|
||
font-size: 28rpx;
|
||
color: #7B7B7B;
|
||
}
|
||
}
|
||
|
||
.expInfo{
|
||
margin-top: 20rpx;
|
||
background: #fff;
|
||
border-radius: 10rpx;
|
||
padding: 30rpx;
|
||
.tit{
|
||
font-size: 32rpx;
|
||
font-weight: bold;
|
||
color: #111;
|
||
margin-bottom: 20rpx;
|
||
.view{
|
||
font-size: 28rpx;
|
||
font-weight: normal;
|
||
}
|
||
}
|
||
.expno{
|
||
display: flex;
|
||
align-items: center;
|
||
text{
|
||
font-size: 28rpx;
|
||
color: #7B7B7B;
|
||
}
|
||
.copybtn{
|
||
padding: 2rpx 20rpx;
|
||
color: #7B7B7B;
|
||
font-size: 24rpx;
|
||
border: 1px solid #7B7B7B;
|
||
border-radius: 4rpx;
|
||
margin-left: 20rpx;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
</style>
|