<template>
|
<view class="pages-teaching">
|
<view class="view-content">
|
<view class="map-content">
|
</view>
|
</view>
|
<view class="bottom">
|
<template v-if="mapOperationType =='public_teaching' || mapOperationType =='station_teaching'">
|
<view class="bottom-content" v-if="teachingStatus =='teaching'">
|
<view class="tip">路径记录中...</view>
|
<view v-if="mapOperationType =='public_teaching'">
|
<view>正在记录搬运车行进路径,可随时切换主路/支路示教,完成后点按钮以结束示教。在示教过程中可以添加站点。</view>
|
<view class="switch-type">
|
<view class="switch-button-group">
|
<view class="switch-button"
|
:class="teachingModeCur.main_road ==1?'switch-button-checked':''"
|
@click="onTeachingModeMainRoad(1)">主路示教</view>
|
<view class="switch-button "
|
:class="teachingModeCur.main_road ==0?'switch-button-checked':''"
|
@click="onTeachingModeMainRoad(0)">支路示教</view>
|
</view>
|
</view>
|
</view>
|
|
<view v-else>
|
正在记录搬运车行进路径,完成后点按钮以结束示教
|
</view>
|
<view class="text-button-group">
|
<a-button v-if="mapOperationType =='public_teaching'" type="ghost" class="button"
|
@click="clickAddDatation">添加站点</a-button>
|
<a-button type="primary" class="button" @click="clickTeachingEnd">结束记录</a-button>
|
</view>
|
</view>
|
<view class="bottom-content" v-else-if="teachingStatus =='end'">
|
<view class="tip">路径记录完成</view>
|
<view>
|
要将该段路径保存为示教路径吗?
|
</view>
|
<view class="text-button-group">
|
<a-button type="primary" class="button" @click="clickTeachingSave">保存为示教路径</a-button>
|
<a-button type="ghost" class="button" @click="clickTeachingReset">重新记录</a-button>
|
</view>
|
</view>
|
<view class="bottom-content" v-else-if="teachingStatus =='save'">
|
<view class="tip">示教完成</view>
|
<view>
|
已将路径保存为示教路径
|
</view>
|
<view class="text-button-group">
|
<a-button type="primary" class="button" @click="clickTeachingFinish">完成</a-button>
|
</view>
|
</view>
|
<template v-else>
|
<view class="bottom-content" v-if=" mapOperationType =='station_teaching'">
|
<view class="tip">请选择示教路线的起点和终点</view>
|
<view class="row-group">
|
<view class="coordinate">
|
<text class="name">起点:</text>
|
<a @click="clickStartStation">
|
{{startStationID ? stationName(startStationID) : "请选择起点"}}
|
</a>
|
</view>
|
<view class="coordinate">
|
<text class="name">终点:</text>
|
<a @click="clickEndStation">
|
{{endStationID ? stationName(endStationID) : "请选择终点"}}
|
</a>
|
|
</view>
|
</view>
|
<view>请将搬运车移至起点,点“开始记录”后将车开到终点,此次行进路线将作为所选站点间的示教路线。</view>
|
<view class="text-button-group">
|
<a-button type="primary" :disabled="startStationID=='' || endStationID==''" class="button"
|
@click="clickTeachingStart">开始记录</a-button>
|
</view>
|
</view>
|
<view class="bottom-content" v-else>
|
<view class="tip">即将开始公共示教</view>
|
<view>
|
请选择要进行主路还是支路示教,点【开始记录】后将记录搬运车的行进路线作为公共示教路线。开始记录后可随时切换主路/支路示教。
|
</view>
|
<view class="text-button-group">
|
<view class="switch-type">
|
<view class="switch-button-group">
|
<view class="switch-button"
|
:class="teachingModeCur.main_road ==1?'switch-button-checked':''"
|
@click="onTeachingModeMainRoad(1)">主路示教</view>
|
<view class="switch-button "
|
:class="teachingModeCur.main_road ==0?'switch-button-checked':''"
|
@click="onTeachingModeMainRoad(0)">支路示教</view>
|
</view>
|
</view>
|
<a-button type="primary" class="button" @click="clickTeachingStart">开始记录</a-button>
|
</view>
|
</view>
|
</template>
|
</template>
|
<view class="bottom-content" v-else>
|
<view class="img-button-group">
|
<view fill="none" class="button" @click="clickStationTeaching">
|
<text class="ico conversion-path"></text>
|
<view class="text">站点示教</view>
|
</view>
|
<view type="text" class="button " @click="clickPublicTeaching">
|
<text class="ico edit-road-outline-rounded"></text>
|
<view class="text">公共示教</view>
|
</view>
|
</view>
|
|
</view>
|
</view>
|
<view>
|
<uni-popup ref="refPopupPicker" background-color="transparent" maskBackgroundColor="rgba(0, 0, 0, 0.2)">
|
<view class="popup-content" @click="closePopupPicker">
|
<picker-view class="popup-content-view" :style="{'margin-left':pickerView.left +'px'}"
|
:indicator-style="indicatorStyle" :value="pickerView.value" @change="bindPickerChange">
|
<picker-view-column>
|
<view class="item" @click="clickPickerViewItem(index)"
|
v-for="(item,index) in pickerView.list" :key="index">{{item.name}}</view>
|
</picker-view-column>
|
|
</picker-view>
|
</view>
|
</uni-popup>
|
<uni-popup ref="refPopupCalibration">
|
<view class="popup-dialog">
|
<view class="popup-dialog-title">
|
<text class="uni-dialog-title-text">是否要校准站点位置?</text>
|
</view>
|
<view class="popup-dialog-content">
|
检测到{{calibratioStationTypeName}}位置朝向与所选站点有偏差,是否将站点位置朝向校准到当前值?
|
</view>
|
<view class="popup-dialog-button-group">
|
|
<view class="popup-dialog-button" @click="clickCalibration">
|
校准
|
</view>
|
<view class="popup-dialog-button" @click="clickNoCalibration">
|
不校准
|
</view>
|
<view class="popup-dialog-button" @click="clickBackTeaching">
|
回到示教
|
</view>
|
</view>
|
</view>
|
</uni-popup>
|
</view>
|
</view>
|
</template>
|
<script>
|
import {
|
showToast,
|
showModal
|
} from "@/comm/utils.js"
|
import {
|
Button
|
} from 'antd-mobile-vue-next'
|
|
import {
|
stations,
|
updateStation,
|
getAgvState,
|
getTeachingMode,
|
teachingModeFlag,
|
delTeachingMode,
|
checkAgvLocationDistanceError
|
|
} from "@/api/vehicle.js"
|
import {
|
async
|
} from "rxjs"
|
export default {
|
name: "PagesTeaching",
|
components: {
|
'a-button': Button
|
},
|
onBackPress() {
|
const _this = this
|
if (this.mapOperationType == "") {
|
return false
|
} else if (this.mapOperationType == "public_teaching" || this.mapOperationType == "station_teaching") {
|
|
if (this.teachingStatus) {
|
showModal("已记录的路径将会被删除。", "是否要退出示教?").then((res) => {
|
if (res) {
|
this.mapOperationType = ""
|
}
|
})
|
} else {
|
this.mapOperationType = ""
|
}
|
|
}
|
return true
|
},
|
data() {
|
return {
|
indicatorStyle: `height: 75rpx;`,
|
navigationBarTitle: "",
|
ip: "",
|
mapOperationType: "",
|
teachingStatus: "",
|
teachingMode: {},
|
teachingModeCur: {},
|
|
startStationID: "",
|
endStationID: "",
|
calibratioStationType: "",
|
pickerView: {
|
type: "",
|
list: [],
|
value: []
|
},
|
stationList: [],
|
|
|
}
|
},
|
computed: {
|
|
},
|
watch: {
|
mapOperationType(val) {
|
let name = "路径示教"
|
if (val == "public_teaching") {
|
name = "公共示教"
|
} else if (val == "station_teaching") {
|
name = "站点示教"
|
}
|
this.setData({
|
navigationBarTitle: name
|
})
|
},
|
navigationBarTitle(val) {
|
uni.setNavigationBarTitle({
|
title: val
|
})
|
},
|
calibratioStationTypeName() {
|
if (this.calibratioStationType == "start") {
|
return "起点"
|
} else if (this.calibratioStationType == "end") {
|
return "终点"
|
} else {
|
return "站点"
|
}
|
},
|
},
|
onLoad(option) {
|
this.ip = option.ip || ""
|
this.loadData()
|
|
},
|
methods: {
|
setData(obj) {
|
let that = this;
|
let keys = [];
|
let val, data;
|
|
Object.keys(obj).forEach(function(key) {
|
keys = key.split(".");
|
val = obj[key];
|
data = that.$data;
|
keys.forEach(function(key2, index) {
|
if (index + 1 == keys.length) {
|
that.$set(data, key2, val);
|
} else {
|
if (!data[key2]) {
|
that.$set(data, key2, {});
|
}
|
}
|
data = data[key2];
|
});
|
});
|
},
|
|
async loadData() {
|
try {
|
|
const stationLst = await this.loadStations()
|
|
this.stationList = stationLst
|
this.teachingMode = await getTeachingMode(this.ip)
|
|
} catch (ex) {
|
|
this.showError(ex)
|
}
|
},
|
async loadAgvState() {
|
try {
|
const info = await getAgvState(this.ip)
|
return info
|
} catch (ex) {
|
this.showError(ex)
|
return {}
|
}
|
},
|
async loadStations() {
|
try {
|
const info = await stations(this.ip)
|
return info.station_list || []
|
} catch (ex) {
|
this.showError(ex)
|
return []
|
}
|
},
|
stationName(id) {
|
const curIndex = this.stationList.findIndex((a) => a.stationID == id)
|
if (curIndex > -1) {
|
return this.stationList[curIndex].name
|
}
|
return ""
|
|
},
|
clickPublicTeaching() {
|
|
this.teachingStatus = ""
|
this.teachingModeCur = {
|
mode: "Public",
|
main_road: 1,
|
}
|
this.mapOperationType = "public_teaching"
|
|
},
|
clickStationTeaching() {
|
|
this.startStationID = ""
|
this.endStationID = ""
|
this.teachingStatus = ""
|
this.mapOperationType = "station_teaching"
|
},
|
async teachingStart(mode) {
|
try {
|
if (mode == "Stations") {
|
const res = await checkAgvLocationDistanceError(this.ip, this.startStationID)
|
if (res?.error) {
|
this.calibratioStationType = "start"
|
this.$refs.refPopupCalibration.open()
|
} else {
|
// const name =
|
// `${ this.stationName(this.startStationID)}_${ this.stationName(this.endStationID)}`
|
|
this.teachingModeCur = {
|
mode: "Stations",
|
src_dst: `${this.startStationID}_${this.endStationID}`,
|
name: "",
|
teaching_flag: 1,
|
}
|
const res2 = await teachingModeFlag(this.ip, this.teachingModeCur)
|
if (res2?.name)
|
this.teachingModeCur.name = res2.name
|
}
|
} else {
|
// const name = `示教_${new Date().getTime()}`
|
const main_road = this.teachingModeCur.main_road
|
this.teachingModeCur = {
|
mode: "Public",
|
src_dst: ``,
|
name: "",
|
teaching_flag: 1,
|
main_road
|
}
|
const res2 = await teachingModeFlag(this.ip, this.teachingModeCur)
|
if (res2?.name)
|
this.teachingModeCur.name = res2.name
|
}
|
|
} catch (ex) {
|
this.showError(ex)
|
}
|
|
},
|
async teachingEnd(mode) {
|
try {
|
if (mode == "Stations") {
|
const res = await checkAgvLocationDistanceError(this.ip, this.endStationID)
|
if (res.error) {
|
this.calibratioStationType = "end"
|
this.$refs.refPopupCalibration.open()
|
} else {
|
this.teachingModeCur.teaching_flag = 0
|
await teachingModeFlag(this.ip, this.teachingModeCur)
|
this.teachingMode = await getTeachingMode(this.ip)
|
|
this.teachingStatus = "end"
|
|
}
|
} else {
|
this.teachingModeCur.teaching_flag = 0
|
await teachingModeFlag(this.ip, this.teachingModeCur)
|
this.teachingMode = await getTeachingMode(this.ip)
|
this.teachingStatus = "end"
|
}
|
} catch (ex) {
|
this.showError(ex)
|
}
|
|
},
|
async onTeachingModeMainRoad(val) {
|
try {
|
if (this.teachingStatus) {
|
|
this.teachingModeCur.main_road = val
|
this.teachingModeCur.teaching_flag = 1
|
this.teachingModeCur.mode = "Public"
|
const res = await teachingModeFlag(this.ip, this.teachingModeCur)
|
if (res?.name)
|
this.teachingModeCur.name = res.name
|
} else {
|
this.teachingModeCur.main_road = val
|
}
|
|
} catch (ex) {
|
this.showError(ex)
|
}
|
},
|
async clickTeachingStart() {
|
|
const _this = this
|
try {
|
if (this.mapOperationType == "station_teaching") {
|
const stationTeaching = this.teachingMode?.stations || []
|
const srcDst = `${this.startStationID}_${this.endStationID}`
|
const name =
|
`${ this.stationName(this.startStationID)}_${ this.stationName(this.endStationID)}`
|
|
const curIndex = stationTeaching.findIndex((a) => a.src_dst == srcDst)
|
if (curIndex > -1) {
|
showModal("该站点间已有示教路径,重新记录会覆盖之前的路径。", "是否要重新记录?").then(async (res) => {
|
if (res) {
|
try {
|
_this.teachingStatus = "teaching"
|
await delTeachingMode(this.ip, [{
|
mode: "Stations",
|
name,
|
src_dst: srcDst
|
|
}])
|
stationTeaching.splice(curIndex, 1)
|
_this.teachingStart("Stations")
|
} catch (ex) {
|
this.showError(ex)
|
}
|
|
} else {
|
|
_this.teachingStatus = ""
|
}
|
})
|
} else {
|
_this.teachingStatus = "teaching"
|
_this.teachingStart("Stations")
|
}
|
|
} else {
|
this.teachingStatus = "teaching"
|
_this.teachingStart("Public")
|
}
|
|
} catch (ex) {
|
this.showError(ex)
|
}
|
},
|
clickTeachingEnd() {
|
if (this.mapOperationType == "station_teaching") {
|
this.teachingEnd("Stations")
|
} else {
|
this.teachingEnd("Public")
|
}
|
|
},
|
clickTeachingReset() {
|
const _this = this
|
showModal("已记录的路径将会被删除。", "是否要重新记录?").then(async (res) => {
|
if (res) {
|
try {
|
await delTeachingMode(_this.ip, [_this.teachingModeCur])
|
_this.teachingStatus = ""
|
_this.teachingMode = await getTeachingMode(_this.ip)
|
|
} catch (ex) {
|
this.showError(ex)
|
}
|
} else {
|
_this.teachingStatus = "save"
|
}
|
})
|
|
},
|
async clickTeachingSave() {
|
|
this.teachingStatus = "save"
|
try {} catch (ex) {
|
this.showError(ex)
|
}
|
|
},
|
clickTeachingFinish() {
|
this.mapOperationType = ""
|
const eventChannel = this.getOpenerEventChannel();
|
eventChannel.emit('add');
|
uni.navigateBack({
|
delta: 1, //返回层数,2则上上页
|
})
|
},
|
clickEndStation(e) {
|
const list = this.stationList.filter((a) => a.stationID != this.startStationID)
|
let index = 0
|
|
if (this.endStationID) {
|
index = list.findIndex((a) => a.stationID == this.endStationID)
|
if (index < 0) {
|
this.endStationID = list[0].stationID
|
index = 0
|
}
|
|
} else {
|
this.endStationID = list[0].stationID
|
index = 0
|
}
|
this.pickerView = {
|
type: "endStation",
|
list,
|
value: [index],
|
left: e.target.offsetLeft - 150,
|
}
|
this.$refs.refPopupPicker.open("bottom")
|
},
|
clickStartStation(e) {
|
const list = this.stationList.filter((a) => a.stationID != this.endStationID)
|
let index = 0
|
|
if (this.startStationID) {
|
index = list.findIndex((a) => a.stationID == this.startStationID)
|
if (index < 0) {
|
this.startStationID = list[0].stationID
|
index = 0
|
}
|
|
} else {
|
this.startStationID = list[0].stationID
|
index = 0
|
}
|
this.pickerView = {
|
type: "startStation",
|
list,
|
value: [index],
|
left: e.target.offsetLeft + 50,
|
}
|
this.$refs.refPopupPicker.open("bottom")
|
},
|
clickAddDatation() {
|
const _this = this
|
uni.navigateTo({
|
url: `/pages/station/index?ip=${this.ip}&isAdd=1`,
|
events: {
|
// 为指定事件添加一个监听器,获取被打开页面传送到当前页面的数据
|
add: function(data) {
|
_this.stationList.push({
|
stationID: data.stationID,
|
name: data.name,
|
x: data.x,
|
y: data.y,
|
angle: data.angle
|
})
|
},
|
}
|
})
|
},
|
bindPickerChange(e) {
|
const val = e.detail.value
|
const val2 = val[0]
|
this.pickerView.value = val2
|
if (this.pickerView.type == "startStation") {
|
this.startStationID = this.pickerView.list[val2].stationID
|
} else if (this.pickerView.type == "endStation") {
|
this.endStationID = this.pickerView.list[val2].stationID
|
}
|
},
|
clickPickerViewItem(index) {
|
if (index == this.pickerView.value) {
|
this.$refs.refPopupPicker.close()
|
}
|
},
|
closePopupPicker() {
|
this.$refs.refPopupPicker.close()
|
},
|
async clickCalibration() {
|
try {
|
this.$refs.refPopupCalibration.close()
|
if (this.calibratioStationType == "start") {
|
const list = this.stationList
|
const curIndex = list.findIndex((a) => a.stationID == this.startStationID)
|
if (curIndex > -1) {
|
const station = {}
|
station.stationID = list[curIndex].stationID
|
station.name = list[curIndex].name
|
const infoAgv = await getAgvState(this.ip)
|
station.angle = infoAgv.angle
|
station.x = infoAgv.x
|
station.y = infoAgv.y
|
await updateStation(this.ip, station)
|
showToast(`${station.name}位置已更新`)
|
list[curIndex].angle = infoAgv.angle
|
list[curIndex].x = infoAgv.x
|
list[curIndex].y = infoAgv.y
|
|
|
}
|
// const name =
|
// `${ this.stationName(this.startStationID)}_${ this.stationName(this.endStationID)}`
|
|
this.teachingModeCur = {
|
mode: "Stations",
|
src_dst: `${this.startStationID}_${this.endStationID}`,
|
name: "",
|
teaching_flag: 1
|
}
|
const res2 = await teachingModeFlag(this.ip, this.teachingModeCur)
|
if (res2?.name)
|
this.teachingModeCur.name = res2.name
|
|
} else if (this.calibratioStationType == "end") {
|
const list = this.stationList
|
const curIndex = list.findIndex((a) => a.stationID == this.endStationID)
|
if (curIndex > -1) {
|
const station = {}
|
station.stationID = list[curIndex].stationID
|
station.name = list[curIndex].name
|
const infoAgv = await getAgvState(this.ip)
|
station.angle = infoAgv.angle
|
station.x = infoAgv.x
|
station.y = infoAgv.y
|
await updateStation(this.ip, station)
|
showToast(`${station.name}位置已更新`)
|
list[curIndex].angle = infoAgv.angle
|
list[curIndex].x = infoAgv.x
|
list[curIndex].y = infoAgv.y
|
|
}
|
this.teachingStatus = "end"
|
this.teachingModeCur.teaching_flag = 0
|
await teachingModeFlag(this.ip, this.teachingModeCur)
|
this.teachingMode = await getTeachingMode(this.ip)
|
|
}
|
} catch (ex) {
|
this.showError(ex)
|
}
|
},
|
async clickNoCalibration() {
|
try {
|
this.$refs.refPopupCalibration.close()
|
if (this.calibratioStationType == "start") {
|
// const name =
|
// `${ this.stationName(this.startStationID)}_${ this.stationName(this.endStationID)}`
|
this.teachingModeCur = {
|
mode: "Stations",
|
src_dst: `${this.startStationID}_${this.endStationID}`,
|
name: "",
|
teaching_flag: 1
|
}
|
const res = await teachingModeFlag(this.ip, this.teachingModeCur)
|
if (res?.name)
|
this.teachingModeCur.name = res.name
|
|
} else if (this.calibratioStationType == "end") {
|
|
this.teachingModeCur.teaching_flag = 0
|
await teachingModeFlag(this.ip, this.teachingModeCur)
|
this.teachingMode = await getTeachingMode(this.ip)
|
|
}
|
} catch (ex) {
|
this.showError(ex)
|
}
|
},
|
clickBackTeaching() {
|
this.$refs.refPopupCalibration.close()
|
this.teachingStatus = ""
|
},
|
showError(ex) {
|
let exStr = JSON.stringify(ex)
|
if (exStr == "{}")
|
exStr = ex
|
let tip = typeof ex.msg == "string" ? ex.msg : exStr
|
showModal(tip, "错误", false)
|
},
|
|
|
}
|
}
|
</script>
|
|
<style lang="scss">
|
.pages-teaching {
|
display: flex;
|
width: 750rpx;
|
height: 100vh;
|
background-color: #fff;
|
position: relative;
|
|
|
.view-content {
|
position: absolute;
|
top: 0;
|
left: 0;
|
right: 0;
|
bottom: 0;
|
background-color: #ddd;
|
display: flex;
|
flex-direction: column;
|
}
|
|
.map-content {
|
width: 100%;
|
display: flex;
|
flex: 1;
|
position: relative;
|
|
.content {
|
overflow: auto;
|
position: absolute;
|
left: 0;
|
right: 0;
|
bottom: 0;
|
top: 0;
|
|
.fabric {
|
width: 100%;
|
height: 100%;
|
}
|
}
|
}
|
|
.no-content {
|
margin-top: 50px;
|
padding: 20rpx 40rpx;
|
align-items: center;
|
text-align: center;
|
display: flex;
|
flex-direction: column;
|
font-size: 30rpx;
|
font-weight: 400;
|
background-color: #000fff;
|
|
.title {
|
font-size: 40rpx;
|
margin-bottom: 10rpx;
|
}
|
|
|
}
|
|
.bottom {
|
position: fixed;
|
left: 50rpx;
|
right: 50rpx;
|
bottom: 20rpx;
|
display: flex;
|
|
.bottom-content {
|
display: flex;
|
flex-direction: column;
|
width: 100%;
|
// justify-content: center;
|
// align-items: center;
|
padding: 0 10rpx;
|
padding-bottom: 10rpx;
|
background-color: #fff;
|
border-radius: 10rpx;
|
//background-color: #eee;
|
|
.title {
|
font-size: 40rpx;
|
margin-bottom: 10rpx;
|
}
|
|
.tip {
|
color: #888;
|
margin: 10rpx;
|
text-align: left;
|
}
|
|
.row-group {
|
display: flex;
|
flex-direction: row;
|
margin: 10rpx 0;
|
|
}
|
|
.disabled {
|
color: #ccc !important;
|
}
|
|
.coordinate {
|
flex: 1;
|
display: flex;
|
flex-direction: row;
|
align-items: center;
|
// .name{
|
// padding: 10rpx 0;
|
|
// }
|
}
|
|
.number-input {
|
flex: 1;
|
background-color: #fff;
|
padding: 10rpx;
|
border-radius: 8rpx;
|
color: #1890FF;
|
}
|
|
|
.name-input {
|
width: calc(100% - 20rpx);
|
margin-bottom: 10rpx;
|
background-color: #fff;
|
padding: 10rpx;
|
border-radius: 8rpx;
|
display: flex;
|
flex-direction: row;
|
color: #1890FF;
|
|
input {
|
flex: 1;
|
}
|
}
|
}
|
|
.img-button-group {
|
display: flex;
|
//width: 100%;
|
flex-direction: row;
|
border-radius: 10px;
|
border: 1px solid #fff;
|
font-size: 30rpx !important;
|
justify-content: space-around;
|
|
.button {
|
margin: 10rpx 20rpx;
|
height: 144rpx !important;
|
border: 0;
|
display: flex;
|
flex-direction: column;
|
background-color: #00000000;
|
|
.img {
|
margin: auto;
|
width: 72rpx;
|
height: 72rpx;
|
|
}
|
|
.ico {
|
margin: auto;
|
font-size: 72rpx;
|
color: #1890FF;
|
}
|
|
.text {
|
margin: auto;
|
|
}
|
|
}
|
|
}
|
|
|
.text-button-group {
|
display: flex;
|
width: 100%;
|
justify-content: center;
|
align-items: center;
|
flex-direction: column;
|
font-size: 30rpx !important;
|
|
.button {
|
margin: auto;
|
margin-top: 20rpx;
|
width: calc(100% - 10rpx);
|
border-radius: 30rpx;
|
}
|
|
.am-button {
|
border-radius: 30px;
|
}
|
|
.am-button-ghost {
|
border: 1px solid #1677ff !important;
|
}
|
}
|
|
.switch-type {
|
width: 100%;
|
align-items: center;
|
vertical-align: middle;
|
|
.switch-button-group {
|
width: 96%;
|
height: 32px;
|
border: 1px solid #dfdfdf;
|
border-radius: 16px;
|
background-color: #dfdfdf;
|
display: flex;
|
flex: row;
|
|
.switch-button {
|
flex: 1;
|
border-radius: 16px;
|
color: #000000A5;
|
height: 32px;
|
line-height: 32px;
|
text-align: center;
|
}
|
|
.switch-button-checked {
|
box-shadow: 0px 2px 8px 0px #0000000C;
|
background-color: #fff;
|
color: #262626;
|
}
|
|
}
|
|
|
|
|
}
|
}
|
|
|
|
.popup-content {
|
display: flex;
|
justify-content: center;
|
flex-direction: column;
|
background-color: transparent;
|
}
|
|
.popup-dialog {
|
width: 300px;
|
border-radius: 11px;
|
background-color: #fff;
|
|
.popup-dialog-title {
|
display: flex;
|
flex-direction: row;
|
justify-content: center;
|
padding-top: 15px;
|
font-size: 18px;
|
font-weight: 500;
|
}
|
|
.popup-dialog-content {
|
display: flex;
|
flex-direction: row;
|
justify-content: center;
|
align-items: center;
|
padding: 10px;
|
}
|
|
.popup-dialog-button-group {
|
display: flex;
|
flex-direction: column;
|
|
.popup-dialog-button {
|
display: flex;
|
flex-direction: row;
|
justify-content: center;
|
align-items: center;
|
height: 45px;
|
border-top: 1px solid #f5f5f5;
|
color: #1890FF;
|
}
|
}
|
|
}
|
|
.popup-content-view {
|
width: 150px;
|
height: 150px;
|
border-radius: 10rpx;
|
padding: 10rpx 20rpx;
|
background-color: #fff;
|
|
.item {
|
line-height: 75rpx;
|
text-align: center;
|
border: 0;
|
|
}
|
}
|
}
|
</style>
|