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.
723 lines
20 KiB
723 lines
20 KiB
<template> |
|
<view> |
|
<page-head :title="title"></page-head> |
|
<view class="uni-padding-wrap uni-common-mt"> |
|
<view> |
|
本蓝牙协议只支持低功耗蓝牙协议ble。如果想连接非ble蓝牙设备,请在社区搜索 Native.js 蓝牙。 |
|
</view> |
|
<view class="uni-btn-v"> |
|
<button type="primary" :disabled="disabled[0]" @click="openBluetoothAdapter"> |
|
初始化蓝牙模块 |
|
</button> |
|
<view v-if="!adapterState.available"> |
|
{{ '蓝牙适配器不可用,请初始化蓝牙模块' }} |
|
</view> |
|
<button |
|
type="primary" |
|
:loading="searchLoad" |
|
:disabled="disabled[1]" |
|
@click="startBluetoothDevicesDiscovery" |
|
> |
|
开始搜索蓝牙设备 |
|
</button> |
|
<button |
|
type="primary" |
|
:disabled="disabled[2]" |
|
@click="stopBluetoothDevicesDiscovery(false)" |
|
> |
|
停止搜索蓝牙设备 |
|
</button> |
|
<button |
|
type="primary" |
|
:loading="newDeviceLoad" |
|
:disabled="disabled[3]" |
|
@click="queryDevices" |
|
> |
|
选择设备 |
|
</button> |
|
<view v-if="equipment.length > 0"> |
|
{{ |
|
(connected ? '已连接设备' : '已选择设备') + |
|
' : ' + |
|
equipment[0].name + |
|
' (' + |
|
equipment[0].deviceId + |
|
')' |
|
}} |
|
</view> |
|
<button type="primary" :disabled="disabled[4]" @click="createBLEConnection"> |
|
连接蓝牙设备 |
|
</button> |
|
<button type="primary" :disabled="disabled[5]" @click="getBLEDeviceServices"> |
|
选择设备服务 |
|
</button> |
|
<view v-if="servicesData.length > 0">已选服务uuid:{{ servicesData[0].uuid }}</view> |
|
<button type="primary" :disabled="disabled[6]" @click="getBLEDeviceCharacteristics"> |
|
获取服务的特征值 |
|
</button> |
|
<view v-if="characteristicsData.length > 0"> |
|
<view class="uni-list_name">uuid:{{ characteristicsData[0].uuid }}</view> |
|
<view class="uni-list_item"> |
|
是否支持 read 操作:{{ characteristicsData[0].properties.read }} |
|
</view> |
|
<view class="uni-list_item"> |
|
是否支持 write 操作:{{ characteristicsData[0].properties.write }} |
|
</view> |
|
<view class="uni-list_item"> |
|
是否支持 notify 操作:{{ characteristicsData[0].properties.notify }} |
|
</view> |
|
<view class="uni-list_item"> |
|
是否支持 indicate 操作:{{ characteristicsData[0].properties.indicate }} |
|
</view> |
|
</view> |
|
<!-- <button type="primary" :disabled="disabled[7]" @click="readBLECharacteristicValue"> |
|
读取特征值数据 |
|
</button> |
|
<view v-if="valueChangeData.serviceId"> |
|
<view class="list-name"> |
|
特征值最新的值:{{ valueChangeData.value || '还没有最新值' }} |
|
</view> |
|
</view> --> |
|
<!-- <button type="primary" :disabled="disabled[8]" @click="w">写入特征值数据</button> --> |
|
<button type="primary" :disabled="disabled[9]" @click="closeBLEConnection"> |
|
断开蓝牙设备 |
|
</button> |
|
<button type="primary" :disabled="disabled[10]" @click="closeBluetoothAdapter"> |
|
关闭蓝牙模块 |
|
</button> |
|
</view> |
|
</view> |
|
<!-- 遮罩 --> |
|
<view v-if="maskShow" class="uni-mask" @touchmove.stop.prevent="moveHandle" @click="maskclose"> |
|
<scroll-view class="uni-scroll_box" scroll-y @touchmove.stop.prevent="moveHandle" @click.stop="moveHandle"> |
|
<view class="uni-title"> |
|
已经发现{{ list.length }}{{ showMaskType === 'device' ? '台设备' : '个服务' }}: |
|
</view> |
|
<view |
|
class="uni-list-box" |
|
v-for="(item, index) in list" |
|
:key="index" |
|
@click="tapQuery(item)" |
|
> |
|
<view v-if="showMaskType === 'device'"> |
|
<view class="uni-list_name">{{ item.name || item.localName }}</view> |
|
<view class="uni-list_item">信号强度:{{ item.RSSI }}dBm</view> |
|
<view class="uni-list_item">UUID:{{ item.deviceId }}</view> |
|
<!-- <view class="list-item" v-if="showMaskType === 'device'"> |
|
Service数量:{{ item.advertisServiceUUIDs.length }} |
|
</view> --> |
|
</view> |
|
<view v-if="showMaskType === 'service'"> |
|
<view class="uni-list_item" style="line-height:2.2;"> |
|
UUID: {{ item.uuid }} |
|
<text v-if="showMaskType === 'service'"> |
|
{{ item.isPrimary ? '(主服务)' : '' }} |
|
</text> |
|
</view> |
|
</view> |
|
<view v-if="showMaskType === 'characteristics'"> |
|
<view class="uni-list_name">uuid:{{ item.uuid }}</view> |
|
<view class="uni-list_item">是否支持 read 操作:{{ item.properties.read }}</view> |
|
<view class="uni-list_item"> |
|
是否支持 write 操作:{{ item.properties.write }} |
|
</view> |
|
<view class="uni-list_item"> |
|
是否支持 notify 操作:{{ item.properties.notify }} |
|
</view> |
|
<view class="uni-list_item"> |
|
是否支持 indicate 操作:{{ item.properties.indicate }} |
|
</view> |
|
</view> |
|
</view> |
|
</scroll-view> |
|
</view> |
|
</view> |
|
</template> |
|
<script> |
|
export default { |
|
data() { |
|
return { |
|
title: 'bluetooth', |
|
disabled: [false, true, true, true, true, true, true, true, true, true, true], |
|
newDeviceLoad: false, |
|
searchLoad: false, |
|
maskShow: false, |
|
equipment: [], |
|
adapterState: { |
|
discovering: false, |
|
available: false |
|
}, |
|
connected: false, |
|
showMaskType: 'device', |
|
servicesData: [], |
|
characteristicsData: [], |
|
valueChangeData: {}, |
|
isStop:true , |
|
list: [] |
|
}; |
|
}, |
|
onLoad() { |
|
this.onBLEConnectionStateChange(); |
|
}, |
|
methods: { |
|
moveHandle() {}, |
|
/** |
|
* 关闭遮罩 |
|
*/ |
|
maskclose(){ |
|
this.maskShow = false; |
|
}, |
|
/** |
|
* 选择设备 |
|
*/ |
|
queryDevices() { |
|
// this.newDeviceLoad = true; |
|
this.showMaskType = 'device'; |
|
this.maskShow = true; |
|
}, |
|
tapQuery(item) { |
|
if (this.showMaskType === 'device') { |
|
this.$set(this.disabled, 4, false); |
|
if (this.equipment.length > 0) { |
|
this.equipment[0] = item; |
|
} else { |
|
this.equipment.push(item); |
|
} |
|
this.newDeviceLoad = false; |
|
} |
|
if (this.showMaskType === 'service') { |
|
this.$set(this.disabled, 6, false); |
|
if (this.servicesData.length > 0) { |
|
this.servicesData[0] = item; |
|
} else { |
|
this.servicesData.push(item); |
|
} |
|
} |
|
if (this.showMaskType === 'characteristics') { |
|
this.$set(this.disabled, 7, false); |
|
if (this.characteristicsData.length > 0) { |
|
this.characteristicsData[0] = item; |
|
} else { |
|
this.characteristicsData.push(item); |
|
} |
|
} |
|
this.maskShow = false; |
|
}, |
|
/** |
|
* 初始化蓝牙设备 |
|
*/ |
|
openBluetoothAdapter() { |
|
uni.openBluetoothAdapter({ |
|
success: e => { |
|
console.log('初始化蓝牙成功:' + e.errMsg); |
|
console.log(JSON.stringify(e)); |
|
this.isStop = false ; |
|
this.$set(this.disabled, 0, true); |
|
this.$set(this.disabled, 1, false); |
|
this.$set(this.disabled, 10, false); |
|
this.getBluetoothAdapterState(); |
|
}, |
|
fail: e => { |
|
console.log(e) |
|
console.log('初始化蓝牙失败,错误码:' + (e.errCode || e.errMsg)); |
|
if (e.errCode !== 0) { |
|
initTypes(e.errCode,e.errMsg); |
|
} |
|
} |
|
}); |
|
}, |
|
/** |
|
* 开始搜索蓝牙设备 |
|
*/ |
|
startBluetoothDevicesDiscovery() { |
|
uni.startBluetoothDevicesDiscovery({ |
|
success: e => { |
|
console.log('开始搜索蓝牙设备:' + e.errMsg); |
|
this.searchLoad = true; |
|
this.$set(this.disabled, 1, true); |
|
this.$set(this.disabled, 2, false); |
|
this.$set(this.disabled, 3, false); |
|
this.onBluetoothDeviceFound(); |
|
}, |
|
fail: e => { |
|
console.log('搜索蓝牙设备失败,错误码:' + e.errCode); |
|
if (e.errCode !== 0) { |
|
initTypes(e.errCode); |
|
} |
|
} |
|
}); |
|
}, |
|
/** |
|
* 停止搜索蓝牙设备 |
|
*/ |
|
stopBluetoothDevicesDiscovery(types) { |
|
uni.stopBluetoothDevicesDiscovery({ |
|
success: e => { |
|
console.log('停止搜索蓝牙设备:' + e.errMsg); |
|
if (types) { |
|
this.$set(this.disabled, 1, true); |
|
} else { |
|
this.$set(this.disabled, 1, false); |
|
} |
|
this.$set(this.disabled, 2, true); |
|
// this.$set(this.disabled, 3, true); |
|
this.searchLoad = false; |
|
}, |
|
fail: e => { |
|
console.log('停止搜索蓝牙设备失败,错误码:' + e.errCode); |
|
if (e.errCode !== 0) { |
|
initTypes(e.errCode); |
|
} |
|
} |
|
}); |
|
}, |
|
/** |
|
* 发现外围设备 |
|
*/ |
|
onBluetoothDeviceFound() { |
|
uni.onBluetoothDeviceFound(devices => { |
|
console.log('开始监听寻找到新设备的事件'); |
|
// this.$set(this.disabled, 3, false); |
|
this.getBluetoothDevices(); |
|
}); |
|
}, |
|
/** |
|
* 获取在蓝牙模块生效期间所有已发现的蓝牙设备。包括已经和本机处于连接状态的设备。 |
|
*/ |
|
getBluetoothDevices() { |
|
uni.getBluetoothDevices({ |
|
success: res => { |
|
this.newDeviceLoad = false; |
|
console.log('获取蓝牙设备成功:' + res.errMsg); |
|
// console.log(JSON.stringify(res)) |
|
this.list = res.devices; |
|
}, |
|
fail: e => { |
|
console.log('获取蓝牙设备错误,错误码:' + e.errCode); |
|
if (e.errCode !== 0) { |
|
initTypes(e.errCode); |
|
} |
|
} |
|
}); |
|
}, |
|
/** |
|
* 获取本机蓝牙适配器状态 |
|
*/ |
|
getBluetoothAdapterState() { |
|
console.log('--->'); |
|
uni.getBluetoothAdapterState({ |
|
success: res => { |
|
console.log(JSON.stringify(res)); |
|
this.adapterState = res; |
|
}, |
|
fail: e => { |
|
console.log('获取本机蓝牙适配器状态失败,错误码:' + e.errCode); |
|
if (e.errCode !== 0) { |
|
initTypes(e.errCode); |
|
} |
|
} |
|
}); |
|
}, |
|
/** |
|
* 连接低功耗蓝牙 |
|
*/ |
|
createBLEConnection() { |
|
let deviceId = this.equipment[0].deviceId; |
|
uni.showToast({ |
|
title: '连接蓝牙...', |
|
icon: 'loading', |
|
duration: 99999 |
|
}); |
|
uni.createBLEConnection({ |
|
// 这里的 deviceId 需要已经通过 createBLEConnection 与对应设备建立链接 |
|
deviceId, |
|
success: res => { |
|
console.log(res); |
|
console.log('连接蓝牙成功:' + res.errMsg); |
|
// 连接设备后断开搜索 并且不能搜索设备 |
|
this.stopBluetoothDevicesDiscovery(true); |
|
uni.hideToast(); |
|
uni.showToast({ |
|
title: '连接成功', |
|
icon: 'success', |
|
duration: 2000 |
|
}); |
|
this.$set(this.disabled, 3, true); |
|
this.$set(this.disabled, 4, true); |
|
this.$set(this.disabled, 5, false); |
|
this.$set(this.disabled, 9, false); |
|
this.connected = true; |
|
}, |
|
fail: e => { |
|
console.log('连接低功耗蓝牙失败,错误码:' + e.errCode); |
|
if (e.errCode !== 0) { |
|
initTypes(e.errCode); |
|
} |
|
} |
|
}); |
|
}, |
|
/** |
|
* 断开与低功耗蓝牙设备的连接 |
|
*/ |
|
closeBLEConnection() { |
|
let deviceId = this.equipment[0].deviceId; |
|
uni.closeBLEConnection({ |
|
deviceId, |
|
success: res => { |
|
console.log(res); |
|
console.log('断开低功耗蓝牙成功:' + res.errMsg); |
|
this.$set(this.disabled, 1, false); |
|
this.$set(this.disabled, 3, true); |
|
this.$set(this.disabled, 4, true); |
|
this.$set(this.disabled, 5, true); |
|
this.$set(this.disabled, 6, true); |
|
this.$set(this.disabled, 7, true); |
|
this.$set(this.disabled, 8, true); |
|
this.$set(this.disabled, 9, true); |
|
this.equipment = []; |
|
this.servicesData = []; |
|
this.characteristicsData = []; |
|
}, |
|
fail: e => { |
|
console.log('断开低功耗蓝牙成功,错误码:' + e.errCode); |
|
if (e.errCode !== 0) { |
|
initTypes(e.errCode); |
|
} |
|
} |
|
}); |
|
}, |
|
/** |
|
* 获取所有服务 |
|
*/ |
|
getBLEDeviceServices() { |
|
let deviceId = this.equipment[0].deviceId; |
|
console.log('获取所有服务的 uuid:' + deviceId); |
|
|
|
uni.getBLEDeviceServices({ |
|
// 这里的 deviceId 需要已经通过 createBLEConnection 与对应设备建立链接 |
|
deviceId, |
|
success: res => { |
|
console.log(JSON.stringify(res.services)); |
|
console.log('获取设备服务成功:' + res.errMsg); |
|
this.$set(this.disabled, 7, true); |
|
this.$set(this.disabled, 8, true); |
|
this.showMaskType = 'service'; |
|
this.list = res.services; |
|
|
|
this.characteristicsData = []; |
|
if (this.list.length <= 0) { |
|
toast('获取服务失败,请重试!'); |
|
return; |
|
} |
|
this.maskShow = true; |
|
}, |
|
fail: e => { |
|
console.log('获取设备服务失败,错误码:' + e.errCode); |
|
if (e.errCode !== 0) { |
|
initTypes(e.errCode); |
|
} |
|
} |
|
}); |
|
}, |
|
/** |
|
* 获取某个服务下的所有特征值 |
|
*/ |
|
getBLEDeviceCharacteristics() { |
|
let deviceId = this.equipment[0].deviceId; |
|
let serviceId = this.servicesData[0].uuid; |
|
console.log(deviceId); |
|
console.log(serviceId); |
|
uni.getBLEDeviceCharacteristics({ |
|
// 这里的 deviceId 需要已经通过 createBLEConnection 与对应设备建立链接 |
|
deviceId, |
|
// 这里的 serviceId 需要在 getBLEDeviceServices 接口中获取 |
|
serviceId, |
|
success: res => { |
|
console.log(JSON.stringify(res)); |
|
console.log('获取特征值成功:' + res.errMsg); |
|
this.$set(this.disabled, 7, true); |
|
this.valueChangeData = {}; |
|
this.showMaskType = 'characteristics'; |
|
this.list = res.characteristics; |
|
if (this.list.length <= 0) { |
|
toast('获取特征值失败,请重试!'); |
|
return; |
|
} |
|
this.maskShow = true; |
|
}, |
|
fail: e => { |
|
console.log('获取特征值失败,错误码:' + e.errCode); |
|
if (e.errCode !== 0) { |
|
initTypes(e.errCode); |
|
} |
|
} |
|
}); |
|
}, |
|
/** |
|
* 监听低功耗蓝牙连接状态的改变事件。包括开发者主动连接或断开连接,设备丢失,连接异常断开等等 |
|
*/ |
|
onBLEConnectionStateChange() { |
|
uni.onBLEConnectionStateChange(res => { |
|
// 该方法回调中可以用于处理连接意外断开等异常情况 |
|
console.log(`蓝牙连接状态 -------------------------->`); |
|
console.log(JSON.stringify(res)); |
|
if (!res.connected) { |
|
if(this.isStop) return ; |
|
console.log('断开低功耗蓝牙成功:'); |
|
this.$set(this.disabled, 1, false); |
|
this.$set(this.disabled, 3, true); |
|
this.$set(this.disabled, 4, true); |
|
this.$set(this.disabled, 5, true); |
|
this.$set(this.disabled, 6, true); |
|
this.$set(this.disabled, 7, true); |
|
this.$set(this.disabled, 8, true); |
|
this.$set(this.disabled, 9, true); |
|
this.searchLoad = false; |
|
this.equipment = []; |
|
this.servicesData = []; |
|
this.characteristicsData = []; |
|
this.valueChangeData = {}; |
|
toast('已经断开当前蓝牙连接'); |
|
} |
|
}); |
|
}, |
|
/** |
|
* 读取低功耗蓝牙设备的特征值的二进制数据值。注意:必须设备的特征值支持 read 才可以成功调用 |
|
*/ |
|
readBLECharacteristicValue() { |
|
let deviceId = this.equipment[0].deviceId; |
|
let serviceId = this.servicesData[0].uuid; |
|
let characteristicId = this.characteristicsData[0].uuid; |
|
console.log(deviceId); |
|
console.log(serviceId); |
|
console.log(characteristicId); |
|
uni.readBLECharacteristicValue({ |
|
// 这里的 deviceId 需要已经通过 createBLEConnection 与对应设备建立链接 |
|
deviceId, |
|
// 这里的 serviceId 需要在 getBLEDeviceServices 接口中获取 |
|
serviceId, |
|
// 这里的 characteristicId 需要在 getBLEDeviceCharacteristics 接口中获取 |
|
characteristicId, |
|
success: res => { |
|
console.log('读取设备数据值成功'); |
|
console.log(JSON.stringify(res)); |
|
this.notifyBLECharacteristicValueChange(); |
|
}, |
|
fail(e) { |
|
console.log('读取设备数据值失败,错误码:' + e.errCode); |
|
if (e.errCode !== 0) { |
|
initTypes(e.errCode); |
|
} |
|
} |
|
}); |
|
this.onBLECharacteristicValueChange(); |
|
}, |
|
/** |
|
* 监听低功耗蓝牙设备的特征值变化事件。必须先启用 notifyBLECharacteristicValueChange 接口才能接收到设备推送的 notification。 |
|
*/ |
|
onBLECharacteristicValueChange() { |
|
// 必须在这里的回调才能获取 |
|
uni.onBLECharacteristicValueChange(characteristic => { |
|
console.log('监听低功耗蓝牙设备的特征值变化事件成功'); |
|
console.log(JSON.stringify(characteristic)); |
|
this.valueChangeData = characteristic; |
|
}); |
|
}, |
|
/** |
|
* 订阅操作成功后需要设备主动更新特征值的 value,才会触发 uni.onBLECharacteristicValueChange 回调。 |
|
*/ |
|
notifyBLECharacteristicValueChange() { |
|
let deviceId = this.equipment[0].deviceId; |
|
let serviceId = this.servicesData[0].uuid; |
|
let characteristicId = this.characteristicsData[0].uuid; |
|
let notify = this.characteristicsData[0].properties.notify; |
|
console.log(deviceId); |
|
console.log(serviceId); |
|
console.log(characteristicId); |
|
console.log(notify); |
|
uni.notifyBLECharacteristicValueChange({ |
|
state: true, // 启用 notify 功能 |
|
// 这里的 deviceId 需要已经通过 createBLEConnection 与对应设备建立链接 |
|
deviceId, |
|
// 这里的 serviceId 需要在 getBLEDeviceServices 接口中获取 |
|
serviceId, |
|
// 这里的 characteristicId 需要在 getBLEDeviceCharacteristics 接口中获取 |
|
characteristicId, |
|
success(res) { |
|
console.log('notifyBLECharacteristicValueChange success:' + res.errMsg); |
|
console.log(JSON.stringify(res)); |
|
} |
|
}); |
|
}, |
|
/** |
|
* 断开蓝牙模块 |
|
*/ |
|
closeBluetoothAdapter(OBJECT) { |
|
uni.closeBluetoothAdapter({ |
|
success: res => { |
|
console.log('断开蓝牙模块成功'); |
|
this.isStop = true ; |
|
this.$set(this.disabled, 0, false); |
|
this.$set(this.disabled, 1, true); |
|
this.$set(this.disabled, 2, true); |
|
this.$set(this.disabled, 3, true); |
|
this.$set(this.disabled, 4, true); |
|
this.$set(this.disabled, 5, true); |
|
this.$set(this.disabled, 6, true); |
|
this.$set(this.disabled, 7, true); |
|
this.$set(this.disabled, 8, true); |
|
this.$set(this.disabled, 9, true); |
|
this.$set(this.disabled, 10, true); |
|
this.equipment = []; |
|
this.servicesData = []; |
|
this.characteristicsData = []; |
|
this.valueChangeData = {}; |
|
this.adapterState = []; |
|
this.searchLoad =false; |
|
toast('断开蓝牙模块'); |
|
} |
|
}); |
|
} |
|
} |
|
}; |
|
|
|
/** |
|
* 判断初始化蓝牙状态 |
|
*/ |
|
function initTypes(code, errMsg) { |
|
switch (code) { |
|
case 10000: |
|
toast('未初始化蓝牙适配器'); |
|
break; |
|
case 10001: |
|
toast('未检测到蓝牙,请打开蓝牙重试!'); |
|
break; |
|
case 10002: |
|
toast('没有找到指定设备'); |
|
break; |
|
case 10003: |
|
toast('连接失败'); |
|
break; |
|
case 10004: |
|
toast('没有找到指定服务'); |
|
break; |
|
case 10005: |
|
toast('没有找到指定特征值'); |
|
break; |
|
case 10006: |
|
toast('当前连接已断开'); |
|
break; |
|
case 10007: |
|
toast('当前特征值不支持此操作'); |
|
break; |
|
case 10008: |
|
toast('其余所有系统上报的异常'); |
|
break; |
|
case 10009: |
|
toast('Android 系统特有,系统版本低于 4.3 不支持 BLE'); |
|
break; |
|
default: |
|
toast(errMsg); |
|
} |
|
} |
|
|
|
/** |
|
* 弹出框封装 |
|
*/ |
|
function toast(content, showCancel = false) { |
|
uni.showModal({ |
|
title: '提示', |
|
content, |
|
showCancel |
|
}); |
|
} |
|
</script> |
|
|
|
<style> |
|
|
|
.uni-title { |
|
/* width: 100%; */ |
|
/* height: 80rpx; */ |
|
text-align: center; |
|
} |
|
|
|
.uni-mask { |
|
position: fixed; |
|
top: 0; |
|
left: 0; |
|
bottom: 0; |
|
display: flex; |
|
align-items: center; |
|
width: 100%; |
|
background: rgba(0, 0, 0, 0.6); |
|
padding: 0 30rpx; |
|
box-sizing: border-box; |
|
} |
|
|
|
.uni-scroll_box { |
|
height: 70%; |
|
background: #fff; |
|
border-radius: 20rpx; |
|
} |
|
.uni-list-box { |
|
margin: 0 20rpx; |
|
padding: 15rpx 0; |
|
border-bottom: 1px #f5f5f5 solid; |
|
box-sizing: border-box; |
|
} |
|
.uni-list:last-child { |
|
border: none; |
|
} |
|
.uni-list_name { |
|
font-size: 30rpx; |
|
color: #333; |
|
} |
|
.uni-list_item { |
|
font-size: 24rpx; |
|
color: #555; |
|
line-height: 1.5; |
|
} |
|
|
|
.uni-success_box { |
|
position: absolute; |
|
left: 0; |
|
bottom: 0; |
|
min-height: 100rpx; |
|
width: 100%; |
|
background: #fff; |
|
box-sizing: border-box; |
|
border-top: 1px #eee solid; |
|
} |
|
.uni-success_sub { |
|
/* width: 100%%; */ |
|
height: 100rpx; |
|
display: flex; |
|
justify-content: space-between; |
|
align-items: center; |
|
padding: 0 30rpx; |
|
} |
|
.uni-close_button { |
|
padding: 0 20rpx; |
|
height: 60rpx; |
|
line-height: 60rpx; |
|
background: #ce3c39; |
|
color: #ffffff; |
|
border-radius: 10rpx; |
|
} |
|
.uni-success_content { |
|
height: 600rpx; |
|
margin: 30rpx; |
|
margin-top: 0; |
|
border: 1px #eee solid; |
|
padding: 30rpx; |
|
} |
|
.uni-content_list { |
|
padding-bottom: 10rpx; |
|
border-bottom: 1px #f5f5f5 solid; |
|
} |
|
.uni-tips { |
|
text-align: center; |
|
font-size: 24rpx; |
|
color: #666; |
|
} |
|
</style>
|
|
|