123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895 |
- <template>
- <div class="air">
- <div class="air-top">
- <div class="air-desc">
- <p class="air-title">空调</p>
- <p class="air-temperature">
- {{ airData.tempSet ? airData.tempSet : "" }}
- <sup v-if="airData.tempSet">℃</sup>
- </p>
- <!-- <p class="air-model">
- <span v-if="modeName">
- {{ modeName }}
- </span>
- <span v-if="airData.tempSet"> {{ airData.tempSet }}℃ </span>
- </p> -->
- <p class="air-status" v-if="hasAir">
- {{ airData.isOpen ? "空调已开启" : "空调已关闭" }}
- </p>
- <p class="air-loading" v-if="airData.isOpen">
- <img
- v-if="airData.icon == 1 || airData.icon == 2 || airData.icon == 3"
- :src="airRunImg"
- alt=""
- />
- <span>{{ airData.spaceStatus }}</span>
- </p>
- </div>
- <div class="air-right">
- <img v-if="airData.airImg" :src="airData.airImg" alt="" />
- <van-loading style="padding-top: 20px" v-else />
- <Switch
- class="switch-btn"
- :size="23"
- :loading="loadingAir || firstLoadingAir"
- :disabled="!userIsControl || loadingAir || firstLoadingAir || disable"
- inactive-color="rgba(196, 196, 196, 0.4)"
- @click="airChange"
- :model-value="airData.isOpen"
- v-if="hasAir"
- />
- </div>
- </div>
- <!--温度调节-->
- <div class="air-control" v-if="userIsControl && airData.isOpen">
- <div class="control-title">温度调节</div>
- <div class="btn-box">
- <div class="control-btn mr20" @click.stop="changeAir(4, 'temp', 'toCold')">
- <img :src="parseImgUrl('envmonitor', 'arrow-top.png')" alt="" />
- </div>
- <div class="control-btn" @click.stop="changeAir(2, 'temp', 'toWarm')">
- <img :src="parseImgUrl('envmonitor', 'arrow-down.png')" alt="" />
- </div>
- </div>
- </div>
- <div class="air-control" v-if="userIsControl && airData.isOpen && showAirVolumeBtn">
- <div class="control-title">风量调节</div>
- <div class="btn-box">
- <div class="control-btn mr20" @click.stop="changeAir(5, 'wind', 'toWindLow')">
- <img class="temp-img" :src="parseImgUrl('envmonitor', 'fengshan.png')" alt="" />
- </div>
- <div class="control-btn" @click.stop="changeAir(6, 'wind', 'toWindUp')">
- <img class="temp-img" :src="parseImgUrl('envmonitor', 'wendu.png')" alt="" />
- </div>
- </div>
- </div>
- <!-- 空调反馈 文案 -->
- <van-dialog
- v-model:show="showDialog"
- class="dialog-width"
- :show-confirm-button="false"
- :show-cancel-button="false"
- >
- <div class="air-dialog-content">
- <div class="dialog-top">
- <img
- class="img-greey"
- :class="
- airSetText.toWhere == 'toCold'
- ? 'img-blue'
- : airSetText.toWhere == 'toWarm'
- ? 'img-red'
- : ''
- "
- :src="parseImgUrl('page-officehome', airSetText.nowImg)"
- alt=""
- />
- </div>
- <div class="dialog-text">
- <div class="air-body-item-num">
- <!-- <div class="air-temp-num">{{ temperature }}</div> -->
- <!-- <div
- class="air-temp-num"
- :class="{
- 'arrow-cooling': airSetText.toWhere == 'toCold',
- 'arrow-warn': airSetText.toWhere == 'toWarm',
- }"
- >
- →
- </div> -->
- <div v-if="airSetText.notice" class="air-temp-num">
- {{ airSetText.notice }}
- </div>
- <div v-else class="air-temp-load">
- <van-loading type="spinner" />
- </div>
- <!-- <div v-else class="air-temp-num-load">
- <img
- style="padding-top: 4px; height: 20px; width: 20px"
- :src="parseImgUrl('page-officehome', 'loading.svg')"
- />
- </div> -->
- </div>
- <p v-if="airSetText.remark && airSetText.remark.length" class="air-notice">
- <span
- v-for="(remarkItem, index) in airSetText.remark"
- :key="'remark' + index"
- >{{ remarkItem }}</span
- >
- </p>
- </div>
- <div class="dialog-btns" @click.stop="closeDialog">
- <span>确定</span>
- </div>
- </div>
- </van-dialog>
- </div>
- </template>
- <script lang="ts">
- import {
- defineComponent,
- onMounted,
- reactive,
- toRefs,
- computed,
- watch,
- onUnmounted,
- onBeforeMount,
- onBeforeUnmount,
- } from "vue";
- import { Switch, Dialog, Loading, Toast } from "vant";
- import {
- changeTempHttp,
- getEquipmentListHttp,
- getFeedbackDocumentsHttp,
- } from "@/apis/envmonitor";
- import { parseImgUrl } from "@/utils";
- import any = jasmine.any;
- export default defineComponent({
- props: {
- temperature: {
- // 空调基本信息
- type: Number,
- default: () => 0,
- },
- hasAir: {
- // 有无空调
- type: Boolean,
- default: () => false,
- },
- airVolumes: {
- // 风量信息
- type: Array,
- default: () => [],
- },
- projectId: {
- type: String,
- default: () => "",
- },
- spaceId: {
- type: String,
- default: () => "",
- },
- userIsControl: {
- type: Boolean,
- default: () => false,
- },
- forceOverTimeFlag: {
- type: Boolean,
- default: () => false,
- },
- disable: {
- type: Boolean,
- default: () => false,
- },
- },
- components: {
- Switch,
- [Dialog.Component.name]: Dialog.Component,
- Loading,
- },
- setup(props, contx) {
- const propsVal = props;
- let airData: any = {
- avg: "", // 算法调节温度(目标值)
- icon: 1, // 固定框文案ID 7 为关机,其它都是开机
- spaceStatus: "", // 固定框文案展示
- notice: "", // 弹框文案展示
- mode: 0, // 模式
- tempSet: 0, // 温度
- isOpen: false, // 空调开关 true 是开
- };
- const feedbackTimer: any = null;
- const airTimer: any = null;
- const domAirOpeen: any = false;
- const proxyData = reactive({
- loadingAir: false,
- distroyFlag: false,
- temperature: props.temperature,
- userIsControl: props.userIsControl,
- forceOverTimeFlag: props.forceOverTimeFlag,
- firstLoadingAir: true,
- spaceId: props.spaceId,
- domAirOpeen: domAirOpeen,
- feedbackTimer: feedbackTimer,
- parseImgUrl: parseImgUrl,
- airData: airData,
- modeName: "",
- showAirVolumeBtn: false, // 是否展示风量调节按钮
- showDialog: false,
- airTimer: airTimer,
- airSetText: {
- // 空调反馈文案
- notice: "",
- remark: [],
- nowImg: "",
- toWhere: "",
- designTemperature: 0,
- },
- // 格式化模式
- formateModel(model: any) {
- if (model) {
- if (model === 1) {
- proxyData.modeName = "制冷";
- } else if (model === 2) {
- proxyData.modeName = "制热";
- } else if (model === 3) {
- proxyData.modeName = "通风";
- } else if (model === 4) {
- proxyData.modeName = "除湿";
- } else {
- proxyData.modeName = "";
- }
- } else {
- proxyData.modeName = "";
- }
- },
- // 获取设备类型(ACATVI)
- getEquipmentListHttp() {
- let params = {
- spaceId: proxyData.spaceId,
- };
- proxyData.showAirVolumeBtn = false;
- let flag: any = true;
- getEquipmentListHttp(params).then((res) => {
- let resData: any = res;
- let data: any = resData ? resData.data : [];
- if (data && data.length) {
- for (let i = 0; i < data.length; i++) {
- let item: any = data[i];
- if (item.equipmentCategory === "ACATVI") {
- // 多联机不展示风量调整
- proxyData.showAirVolumeBtn = false;
- flag = false;
- break;
- }
- }
- if (flag) {
- proxyData.showAirVolumeBtn = true;
- }
- }
- });
- },
- // 定时获取空调状态
- getAirInfoToTimer(timerLong: any = 3000) {
- if (proxyData.airTimer) {
- clearTimeout(proxyData.airTimer);
- }
- proxyData.airTimer = setTimeout(function () {
- if (!proxyData.distroyFlag) {
- proxyData.getAirInfo();
- }
- }, timerLong);
- },
- // 定时调文案的接口
- getFeedbackTimer(btnType: any, id: any) {
- clearTimeout(proxyData.airTimer);
- proxyData.airTimer = null;
- proxyData.feedbackTimer = setTimeout(() => {
- proxyData.getAirInfo("feedback", btnType, id, false); // 调节反馈文案
- }, 3000);
- },
- // 关闭空调的按钮点击的loading状态
- closeLoading() {
- let num: any = 0;
- let interval: any = setInterval(() => {
- if (num > 15 || proxyData.domAirOpeen === proxyData.airData.isOpen) {
- proxyData.loadingAir = false;
- clearInterval(interval);
- }
- num++;
- }, 1000);
- },
- getAirInfo(
- type: string = "",
- btnType: string = "",
- feedbackId: any = "",
- isTimer: boolean = true
- ) {
- let paramObj: any = {
- projectId: propsVal.projectId, // 项目id
- objectId: proxyData.spaceId, // 空间id
- };
- if (type === "feedback") {
- paramObj.id = feedbackId;
- }
- console.log("paramObj===");
- getFeedbackDocumentsHttp(paramObj)
- .then((res) => {
- const resData: any = res;
- if (type !== "feedback") {
- if (resData) {
- proxyData.airData = resData;
- proxyData.formateModel(proxyData.airData.mode);
- contx.emit("updateAirTemp", proxyData.airData.tempSet);
- if (proxyData.airData.icon && proxyData.airData.icon === 7) {
- proxyData.airData.isOpen = false;
- proxyData.airData.airImg = parseImgUrl(
- "page-officehome",
- "air_close.png"
- );
- } else {
- if (proxyData.airData.icon && proxyData.airData.icon !== 6) {
- proxyData.airData.isOpen = true;
- proxyData.airData.airImg = parseImgUrl(
- "page-officehome",
- "openair.png"
- );
- }
- }
- }
- }
- // 弹窗
- if (type === "feedback") {
- if (resData.notice) {
- proxyData.airSetText.notice = resData.notice;
- if (resData.remark && resData.remark.length) {
- proxyData.airSetText.remark = resData.remark.split("*");
- }
- if (proxyData.feedbackTimer) {
- clearTimeout(proxyData.feedbackTimer); // 拿到反馈文案清除定时器
- proxyData.getAirInfoToTimer();
- }
- } else {
- proxyData.getFeedbackTimer(btnType, feedbackId);
- }
- } else {
- proxyData.getAirInfoToTimer();
- }
- proxyData.firstLoadingAir = false;
- })
- .catch(() => {
- proxyData.getAirInfoToTimer();
- proxyData.firstLoadingAir = false;
- proxyData.airData.airImg = parseImgUrl("page-officehome", "air_close.png");
- });
- },
- airChange() {
- if (props.disable) {
- return;
- }
- // 先不更新状态等确认框弹出后再更新状
- if (proxyData.userIsControl) {
- if (!proxyData.loadingAir) {
- proxyData.airComfir();
- } else {
- Toast("指令正在下发中,勿重复操作!");
- }
- } else {
- Toast("您没有当前空间的控制权限!");
- }
- },
- // 确认
- airComfir() {
- const message = proxyData.airData.isOpen ? "要关闭空调吗?" : "要开启空调吗?";
- const confirmBtnText = proxyData.airData.isOpen ? "关闭" : "开启";
- Dialog.confirm({
- cancelButtonText: "取消",
- confirmButtonText: confirmBtnText,
- confirmButtonColor: "$elActiveColor",
- message: message,
- })
- .then(() => {
- // 操作空调
- const domAirOpen = !proxyData.airData.isOpen;
- if (proxyData.forceOverTimeFlag && domAirOpen) {
- //需要强制加班
- contx.emit("triggerWork");
- return;
- }
- const itemId = domAirOpen ? 12 : 10; // 12 开启 10关闭
- proxyData.domAirOpeen = domAirOpen;
- let btnTypeDetail = "";
- if (itemId == 12) {
- btnTypeDetail = "openAir";
- } else {
- btnTypeDetail = "closeAir";
- }
- proxyData.loadingAir = true;
- proxyData.closeLoading();
- proxyData.changeAir(itemId, "sw", btnTypeDetail);
- })
- .catch(() => {
- // on cancel
- });
- },
- // 切换散会的时候手动关闭空调()
- closeScenarioAir() {
- proxyData.changeAir(10, "sw", "closeAir");
- },
- // 更新空调开关状态
- updatAirStatus(btnType: string) {
- // 开启空调后手动调一下状态更新接口
- if (btnType === "sw") {
- proxyData.getAirInfo("", "", "", false);
- }
- },
- // 更新
- updateAirText(btnType: string, val: any) {
- if (btnType !== "sw") {
- proxyData.airSetText.designTemperature = val.designTemperature; // 目标温度
- proxyData.airSetText.toWhere = val.toWhere;
- if (proxyData.airSetText.toWhere == "toCold") {
- proxyData.airSetText.nowImg = "dialog_cooling.svg";
- } else if (proxyData.airSetText.toWhere == "toWarm") {
- proxyData.airSetText.nowImg = "dialog_warmUp.svg";
- } else {
- proxyData.airSetText.nowImg = "icon_wind.svg";
- }
- }
- },
- // 展示空调反馈弹窗¬
- showAirConditioning(btnType: string, btnTypeDetail: string) {
- // 空调温度和风量调整的时候展示弹窗
- if (btnType !== "sw") {
- proxyData.showDialog = true;
- // 调整空调温度接口
- const defaultAirText: any = {
- toWhere: btnTypeDetail,
- designTemperature: 0,
- };
- proxyData.updateAirText(btnType, defaultAirText);
- }
- },
- // 关闭弹窗
- closeDialog() {
- if (proxyData.feedbackTimer) {
- clearInterval(proxyData.feedbackTimer); // 拿到反馈文案清除定时器
- proxyData.feedbackTimer = null;
- }
- proxyData.getAirInfoToTimer();
- proxyData.showDialog = false;
- },
- changeAir(itemId: number, btnType: string, btnTypeDetail: string) {
- /**
- * 缺少的逻辑:
- * 1.设备位置判断
- * 2.空调温度调整的反馈文案
- */
- // 温度切换的时候调整文案
- proxyData.airSetText.notice = "";
- proxyData.airSetText.remark = [];
- const paramObj = {
- projectId: propsVal.projectId, // 项目id
- objectId: proxyData.spaceId, // 空间id
- valueType: 1, // 固定为1
- itemId: itemId, // 12 开启 10关闭 4 调低温 2 调高温 5 调小风量 6 调大风量
- };
- // 空调温度和风量调整的时候展示弹窗
- proxyData.showAirConditioning(btnType, btnTypeDetail);
- changeTempHttp(paramObj)
- .then((res) => {
- let resData: any = res;
- // 开启和关闭空调之后手动
- // proxyData.updatAirStatus(btnType)
- // 调整温度和风量的时候修改文案
- let airText = {
- toWhere: btnTypeDetail,
- designTemperature: resData.designTemperature,
- };
- proxyData.updateAirText(btnType, airText);
- // 改变温度和风量的时候给弹窗设置文案
- if (btnType !== "sw") {
- // debugger
- if (resData.notice) {
- proxyData.airSetText.notice = resData.notice;
- if (resData.remark && resData.remark.length) {
- proxyData.airSetText.remark = resData.remark.split("*");
- }
- } else {
- proxyData.getFeedbackTimer(btnType, resData.id);
- }
- }
- })
- .catch(() => {
- proxyData.loadingAir = false;
- });
- },
- });
- watch(
- [() => props, () => props.spaceId],
- (newProps: any, oldProps: any) => {
- if (newProps[1] && newProps[1] != oldProps[1]) {
- // 空间id改变的重新获取值调用接口
- // 定时调空间信息
- proxyData.spaceId = newProps[1];
- proxyData.distroyFlag = false;
- // proxyData.getAirInfoToTimer(0);
- proxyData.getAirInfo();
- // proxyData.getEquipmentListHttp();
- }
- if (newProps[0]) {
- proxyData.temperature = newProps[0].temperature;
- proxyData.userIsControl = newProps[0].userIsControl;
- proxyData.forceOverTimeFlag = newProps[0].forceOverTimeFlag;
- }
- },
- {
- deep: false,
- immediate: true,
- }
- );
- onBeforeUnmount(() => {
- proxyData.distroyFlag = true;
- if (proxyData.airTimer) {
- clearTimeout(proxyData.airTimer);
- proxyData.airTimer = null;
- }
- if (proxyData.feedbackTimer) {
- clearTimeout(proxyData.feedbackTimer);
- proxyData.feedbackTimer = null;
- }
- });
- onMounted(() => {
- // 获取空调信息
- proxyData.firstLoadingAir = true;
- proxyData.distroyFlag = false;
- proxyData.getAirInfo();
- proxyData.getEquipmentListHttp();
- });
- const airRunImg = computed(() => {
- let imgStr: string = "";
- switch (proxyData.airData.icon) {
- case 1:
- imgStr = parseImgUrl("page-officehome", "temp-keep.png");
- break;
- case 2:
- imgStr = parseImgUrl("page-officehome", "temp_cold.svg");
- break;
- case 3:
- imgStr = parseImgUrl("page-officehome", "temp_sun.png");
- break;
- default:
- imgStr = "";
- break;
- }
- return imgStr;
- });
- return {
- airRunImg,
- ...toRefs(proxyData),
- };
- },
- });
- </script>
- <style lang="scss" scoped>
- .air {
- width: 100%;
- background: #ffffff;
- box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.07), 0px 4px 10px rgba(0, 0, 0, 0.05);
- border-radius: 25px;
- margin: 15px 0px;
- }
- .air-top {
- padding-left: 20px;
- padding-bottom: 10px;
- display: flex;
- justify-content: space-between;
- }
- .air-desc {
- flex: 1 157px;
- padding-top: 10px;
- font-family: PingFang SC;
- font-size: 16px;
- line-height: 19px;
- color: #4d5262;
- flex: none;
- order: 0;
- //color: rgba(196, 196, 196, 0.2)
- flex-grow: 0;
- margin: 5px 0px;
- }
- .air-right {
- position: relative;
- width: 157px;
- text-align: center;
- img {
- width: 147px;
- height: 110px;
- }
- .switch-btn {
- position: absolute;
- z-index: 111;
- bottom: 10px;
- right: 25px;
- }
- }
- .air-title {
- font-family: PingFang SC;
- padding-left: 5px;
- font-size: 16px;
- line-height: 19px;
- color: #4d5262;
- flex: none;
- order: 0;
- flex-grow: 0;
- margin: 5px 0px;
- }
- .air-temperature {
- display: inline-block;
- font-family: "Persagy";
- font-style: normal;
- font-weight: normal;
- font-size: 32px;
- line-height: 32px;
- flex: none;
- order: 0;
- flex-grow: 0;
- margin: 0px 4px;
- sup {
- font-family: Mulish;
- font-style: normal;
- font-weight: 800;
- font-size: 12px;
- line-height: 15px;
- }
- }
- .air-model {
- padding-left: 5px;
- display: inline-block;
- font-family: "Persagy";
- font-style: normal;
- font-weight: 400;
- font-size: 15px;
- line-height: 18px;
- color: #c4c4c4;
- span {
- padding-right: 2px;
- }
- }
- .air-status {
- font-family: PingFang SC;
- padding-left: 5px;
- font-size: 14px;
- line-height: 16px;
- color: #c4c4c4;
- flex: none;
- order: 1;
- flex-grow: 0;
- margin: 10px 0px;
- }
- .air-loading {
- font-family: Roboto;
- padding-left: 5px;
- font-style: normal;
- font-weight: normal;
- font-size: 11px;
- //line-height: 13px;
- color: #c4c4c4;
- img {
- width: 12px;
- height: 12px;
- vertical-align: middle;
- }
- span {
- vertical-align: middle;
- }
- }
- .air-control {
- display: flex;
- justify-content: space-between;
- padding: 10px 0;
- padding-left: 28px;
- padding-right: 15px;
- border-top: 1px solid rgba(196, 196, 196, 0.4);
- .control-title {
- flex: 1;
- line-height: 42px;
- font-weight: 500;
- font-size: 12px;
- color: #c4c4c4;
- }
- .btn-box {
- flex: 1;
- text-align: right;
- }
- .control-btn {
- display: inline-block;
- vertical-align: middle;
- width: 42px;
- height: 42px;
- text-align: center;
- border-radius: 50%;
- background: rgba(196, 196, 196, 0.2);
- img {
- width: 13px;
- height: 17px;
- margin: 0 auto;
- margin-top: 12.5px;
- }
- .temp-img {
- width: 20px;
- height: 20px;
- }
- }
- }
- .dialog-width {
- width: 280px !important;
- }
- .air-dialog-content {
- position: relative;
- width: 100%;
- height: 340px;
- .dialog-top {
- position: relative;
- height: 70px;
- background: #f3f3f3;
- .img-greey {
- background: #c4c4c4;
- }
- .img-blue {
- background: $elActiveColor;
- }
- .img-red {
- background: #e5574f;
- }
- img {
- box-sizing: border-box;
- border-radius: 50%;
- position: absolute;
- left: 50%;
- width: 70px;
- height: 70px;
- padding: 17px;
- transform: translateX(-50%);
- top: 15px;
- }
- }
- }
- .dialog-text {
- padding-top: 52px;
- text-align: center;
- .air-temp-num {
- font-family: Persagy;
- display: inline-block;
- font-size: 24px;
- font-weight: 400;
- line-height: 29px;
- color: rgba(20, 0, 80, 1);
- &.arrow-cooling {
- color: $elActiveColor;
- margin: 0 30px;
- margin-bottom: 70px;
- }
- &.arrow-warn {
- color: rgba(229, 87, 79, 1);
- margin: 0 30px;
- margin-bottom: 70px;
- }
- }
- .air-temp-num-load {
- display: inline-block;
- }
- .air-notice {
- padding-top: 10px;
- padding-left: 48px;
- padding-right: 48px;
- text-align: center;
- // display: flex;
- justify-content: center;
- font-family: PingFang SC;
- font-size: 15px;
- font-weight: 400;
- line-height: 21px;
- color: rgba(77, 82, 98, 1);
- span {
- display: block;
- padding-bottom: 5px;
- }
- }
- .air-temp-load {
- padding-top: 25px;
- }
- .air-body-item-num {
- height: 50px;
- }
- }
- .dialog-btns {
- position: absolute;
- left: 50%;
- bottom: 30px;
- transform: translateX(-50%);
- text-align: center;
- margin: 0 auto;
- width: 88px;
- height: 46px;
- line-height: 1;
- color: #4d5262;
- background: #ffffff;
- border: 1px solid #c4c4c4;
- border-radius: 30px;
- cursor: pointer;
- span {
- height: 46px;
- line-height: 46px;
- display: inline-block;
- }
- }
- </style>
- <style lang="scss">
- .air-dialog-content {
- .van-button_text {
- color: $elActiveColor;
- }
- }
- .air {
- .van-loading__spinner {
- color: $elActiveColor !important;
- }
- .van-switch__loading {
- top: 0;
- left: 0;
- width: 100%;
- height: 100%;
- line-height: 1;
- }
- .van-switch--disabled {
- opacity: 0.5;
- }
- }
- </style>
|