<template> <view class="page"> <!-- <u-navbar :is-back="true" :title="tittxt" :border-bottom="false" :background="bgc" title-color='#fff' @custom-back="btncustom" back-icon-color="#fff" title-size='44' height='50' id="navbar"> </u-navbar> --> <view class="title"> <image src="https://api.ccttiot.com/smartmeter/img/static/uyr6T0Vfkefty2blkDmU" mode="" style="width: 52rpx;height: 52rpx;margin-right: 10rpx;vertical-align: bottom;vertical-align: bottom;" @click="btnshouye"></image> <text>商户中心</text> </view> <u-mask :show="showtip" @click="show = false" :z-index='1000' /> <view class="tip_box" v-if="showtip"> <view class="top"> <view class="txt"> 系统检测到您的设备未联网或者为蓝牙版本,金额充值失败,请靠近设备进行蓝牙充值 </view> </view> <view class="bot"> <view class="bot_left" @click="showtip=false"> 取消 </view> <view class="bot_right" @click="tocz()"> 蓝牙充值 </view> </view> </view> <view class="fd"> <view class="fd_top"> <view class="fd_da"> <view class="fd_lt" :style="{ transform: `translateX(${-curtitidx * 100 > -300 ? 0 : -curtitidx * 120}rpx)`}"> <view class="fd_tit" v-for="(item,index) in groupLists" :key="index" :class="index==curtitidx?'act1':''" @click="changeidx(index)"> {{item.name.length > 5 ? item.name.slice(0, 5) + '...' : item.name}} </view> </view> </view> <view class="right"> <!-- <view class="fd_set" @click="show = true"> + </view> --> <view class="fd_set iconfont icon-liebiao" @click="showfz = true"></view> </view> </view> <u-mask :show="showfz" @click="showfz=false"></u-mask> <view class="fz" v-show="showfz"> <view class="fz_top"> <view class="iconfont icon-shanchu" @click="showfz=false"> </view> <view class="tit"> <!-- 店铺管理 --> </view> <view class="txt" @click="tosetpage()"> 管理 </view> </view> <view class="card_cont"> <view class="cards" v-for="(item,index) in groupLists" :key="index"> <!-- //@click="changeGp(item)" --> <view class="txt"> {{item.name}} </view> <view class="num"> {{item.deviceCount}} </view> </view> <view class="zhanwei" style="width: 100%;height: 100rpx;"> </view> </view> </view> <swiper class="swiper" style="height: 100%;margin-top: 20rpx;" :current='curtitidx' @change="swiperchange" @touchstart="touchStart" @touchend="touchEnd"> <swiper-item v-for="(item,index) in groupLists" :key="index"> <view class="" v-if="shujuflag" style="width: 100%;height: 200rpx;margin: auto;margin-top: 230rpx;text-align: center;"> <image style="width: 200rpx;height: 200rpx;" src="https://api.ccttiot.com/smartmeter/img/static/uZFUpcz0YZZ4f4RjvGg2" mode=""></image> <view class="" style="font-size: 28rpx;color: #808080;margin-top: 30rpx;">该店铺暂无设备...</view> </view> <view class="swiper-item"> <!-- <view class="" ref="targetBox" id="targetBox"></view> --> <view class="card_box" v-for="(item,index) in wateringList" :key="index"> <view class="card"> <view class="card_left"> <view class="card_left_tit" @click="todetail(item.deviceId)"> {{item.deviceName}} </view> <view class="card_left_sta" @click="todetail(item.deviceId)"> <image src="https://api.ccttiot.com/smartmeter/img/static/uZSiz7XWpxcXEkl6sTwj" mode=""></image> <view class="sta_txt" v-if="item.status==3"> 维修中 </view> <view class="sta_txt" v-if="item.status==2" style="color:greenyellow;"> 使用中 </view> <view class="sta_txt" v-if="item.status==1" style="color:seagreen;"> 空闲 </view> </view> <view class="card_left_no" :class="item.onlineStatus == 0 ? 'activewzgl' : ''" @click="todetail(item.deviceId)"> S/N码:{{item.deviceNo}} </view> <view @click="sremakes(item)" v-if="item.storeId == null" class="dianpu" style="border: 1px solid #8883F0;padding: 5rpx;font-size:26rpx: border-box;width: 180rpx;border-radius: 20rpx;color: #8883F0;text-align: center;margin-top: 10rpx;"> 未分配店铺 </view> <view v-else :class="item.onlineStatus == 0 ? 'activewzgl' : ''" style="color: #95989D;padding-top: 20rpx;font-size: 26rpx;" @click="todetail(item.deviceId)"> {{item.storeName == null ? '--' : item.storeName}} <text v-if="item.onlineStatus == 0" style="margin-left: 10rpx;">| 离线</text> </view> </view> <view class="card_right" @click="todetail(item.deviceId)"> <image v-if="item.customPicture" :src="item.customPicture" mode="aspectFit" style="border-radius: 20rpx;"></image> <image v-else :src="item.picture" mode=""></image> </view> </view> </view> </view> </swiper-item> </swiper> </view> <!-- 选择店铺 --> <u-select v-model="showshop" :list="shoplist" @confirm="confirms"></u-select> <!-- <view class="noDevice" v-if="addflag"> <view class="img_box"> <image src="https://api.ccttiot.com/smartmeter/img/static/uD3h9FDe458MjVW5H7VB" mode=""></image> <view class="tps"> 暂无设备 </view> </view> <view class="addbutn" @click="show = true"> 添加方式 </view> <view class="tip">需要添加设备后方可使用</view> </view> --> <image v-if="curtitidx == 0" class="saoyisao" @click="saoyisao" src="https://api.ccttiot.com/smartmeter/img/static/uiDR6MnGHguBRNSYFTVw" mode=""></image> <tab-bar :indexs='0'></tab-bar> <view class="dd"> <u-select v-model="show" :list="list" title='添加方式' @confirm="confirm"></u-select> </view> <!-- 刷新动画 --> <view class="shuaxin" v-if="shuaxin"> <image src="https://api.ccttiot.com/smartmeter/img/static/uoJ3GHWs14BwXetAlZTW" mode=""></image> <view class="">努力刷新中</view> </view> </view> </template> <script> import uniEcCanvas from '@/components/uni-ec-canvas/uni-ec-canvas.vue' import * as echarts from '@/components/uni-ec-canvas/echarts' let chart = null export default { data() { return { shuaxin: false, showshop: false, shoplist: [], bgc: { backgroundColor: "#8883f0", }, ec: { lazyLoad: true }, deviceInfo: {}, loadings: false, info: '', tittxt: "商户中心", titlist: '暂无店铺', curtitidx: 0, background: ['color1', 'color2', 'color3'], indicatorDots: true, autoplay: true, interval: 2000, duration: 500, deviceList: [], userType: '', addflag: false, sbflag: true, show: false, list: [{ value: '1', label: '扫码添加' }, { value: '2', label: '搜索附近设备添加' } ], qrResult: '', showfz: false, groupList: [], groupLists: [], total: '', gps: {}, mac: '', deviceId: '', showtip: false, orderinfo: [], storeId: '', pagenum: 1, wateringList: [], pagesize: 10, isLoading: false, noMoreData: false, total: 0, shujuflag: false, id: '', touchStartX: 0, // 触屏起始点x touchStartY: 0, // 触屏起始点y } }, onLoad() { }, onShow() { this.gettanc() this.pagenum = 1 // this.curtitidx = 0 // this.wateringList = [] this.logins() this.getgroup(); this.deviceId = uni.getStorageSync('deviceIds') this.name = uni.getStorageSync('name') let that = this setTimeout(() => { if (this.userType === '01') { // 注意 '01' 是一个字符串 if (uni.getStorageSync('mac')) { this.mac = uni.getStorageSync('mac') uni.getLocation({ type: 'wgs84', success: function(lb) { that.gps.lat = lb.latitude that.gps.lon = lb.longitude that.tobind() }, fail: function(error) { console.error('获取位置信息失败:', error) that.gps.lat = 0 that.gps.lon = 0 that.tobind() } }) } } else { if (uni.getStorageSync('billNo')) { let billNo = uni.getStorageSync('billNo') this.$u.get(`/app/bill/recharge/${billNo}/bluetoothSuccess`).then((res) => { if (res.code == 200) { uni.removeStorageSync('billNo') this.showtip = false this.order() } }) } } }, 2000); }, // 分享到好友(会话) onShareAppMessage: function() { return { title: '创想物联', path: '/pages/shouye/index' } }, // 分享到朋友圈 onShareTimeline: function() { return { title: '创想物联', query: '', path: '/pages/shouye/index' } }, mounted() { }, methods: { // 按下 touchStart(e) { this.touchStartX = e.touches[0].clientX; this.touchStartY = e.touches[0].clientY; }, // 松开 touchEnd(e) { let deltaX = e.changedTouches[0].clientX - this.touchStartX; let deltaY = e.changedTouches[0].clientY - this.touchStartY; if (Math.abs(deltaX) > 50 && Math.abs(deltaX) > Math.abs(deltaY)) { if (deltaX >= 0) { // console.log("左滑") } else { // console.log("右滑") } } else if(Math.abs(deltaY) > 50&& Math.abs(deltaX) < Math.abs(deltaY)) { if (deltaY < 0) { // console.log("上滑") } else { // console.log("下滑") this.shuaxin = true setTimeout(()=>{ this.getlist() },1000) } } }, // 扫一扫绑定设备 saoyisao() { uni.scanCode({ onlyFromCamera: true, scanType: ['qrCode'], success: res => { function getQueryParam(url, paramName) { let regex = new RegExp(`[?&]${paramName}=([^&]*)`) let results = regex.exec(url); return results ? decodeURIComponent(results[1].replace(/\+/g, ' ')) : null } let sceneValue = res.result let decodedValue = decodeURIComponent(sceneValue) let id = getQueryParam(decodedValue, 's') // console.log(res, id) let that = this let data = { deviceNo: id } that.$u.get(`/app/device/isBind?deviceNo=${id}`).then(res => { if (res.data == 2) { that.$u.get(`/app/device/${id}/withSuitList`).then((res) => { if (res.code == 200) { uni.navigateTo({ url: '/page_components/fuwu/index?id=' + id }) } }) } else if (res.data == 1) { uni.showModal({ title: '提示', content: '该设备未绑定,你需进行绑定吗?', success: function(res) { if (res.confirm) { that.$u.put("/app/device/bind", data).then( res => { if (res.code == 200) { that.$u.get(`/app/device/${id}/bySn`).then((res) => { if (res.code == 200) { uni.navigateTo({ url: '/page_components/bindsz?id=' + res.data.deviceId }) } }) } }) } else if (res.cancel) { } } }) } else if (res.data == 0) { uni.showModal({ title: '提示', content: '该设备未录入,你需进行录入吗?', success: function(res) { if (res.confirm) { uni.navigateTo({ url: '/page_fenbao/zhuce?sn=' + id }) } else if (res.cancel) { } } }) } }) }, fail: err => { console.error('扫描失败:', err) uni.showToast({ title: '扫描失败', icon: 'none' }) } }) }, // 获取店铺 sremakes(item) { this.id = item.deviceId this.showshop = true }, gettanc() { this.$u.get('/app/store/listCount').then((res) => { if (res.code == 200) { this.total = res.total if (res.data.length > 0) { // 有数据,追加到列表 let arr = res.data.map(row => ({ value: row.storeId, // 将storeId赋值给value label: row.name // 将name赋值给label })) this.shoplist = arr this.shoplist = this.shoplist.slice(1) } } }) }, confirms(e) { this.pagenum = 1 let data = { deviceId: this.id, storeId: e[0].value } this.putdevice(data) setTimeout(() => { this.getlist() }, 1000) }, putdevice(data) { this.$u.put('/app/device', data).then((res) => { if (res.code == 200) { this.getlist() uni.showToast({ title: '修改成功', icon: 'none', duration: 2000 }); } }) }, tocz() { this.showtip = false uni.navigateTo({ url: '/page_fenbao/device/czDevice?orderinfo=' + JSON.stringify(this.orderinfo) }) }, checkModelTags(modelTags) { return modelTags && modelTags.some(tag => tag === 2); }, order() { this.$u.get("/app/bill/recharge/device/fail/list").then((res) => { if (res.data.length != 0) { this.showtip = true this.orderinfo = res.data[0] } else { this.orderinfo = null } }) }, towifi(mac) { uni.navigateTo({ url: '/page_fenbao/device/wifiDevice?mac=' + mac }) }, tobind() { this.$u.put(`/app/device/bind/${this.mac}`, this.gps).then((res) => { if (res.code === 200) { let systemInfo = uni.getSystemInfoSync(); if (systemInfo.platform === 'android') { // 当前设备是 Android } else if (systemInfo.platform === 'ios') { // console.log('aaaaaaaaaaaa'); uni.navigateTo({ url: '/page_components/wifilist/index?deviceId=' + this.deviceId + '&name=' + this.name }) } uni.showToast({ title: '绑定成功', icon: 'none', duration: 2000 }); uni.removeStorageSync('mac'); uni.removeStorageSync('deviceIds'); uni.removeStorageSync('name'); this.getDeviceList(); } else { // 处理失败情况 } }); }, opendevice() { let stause = 0 if (this.deviceInfo.powerStatus == 1) { stause = 0 } else { stause = 1 } console.log(stause, 'stausestause'); this.$u.put(`/app/device/${this.deviceInfo.deviceId}/changePower?status=` + stause).then((res) => { // this.$forceUpdate() if (res.code == 200) { setTimeout(() => { this.getdevice() }, 2000) // this.initChart() } else { uni.showToast({ title: res.msg, icon: 'none' }) } }) }, getgroup() { this.$u.get("/app/store/listCount").then((res) => { if (res.data != 0) { this.groupList = [] this.groupLists = res.data this.groupList = res.data.filter(item => { return item.name === '全部' }) this.titlist = this.groupList[0].name this.storeId = this.groupList[0].storeId this.getlist() } }) }, getlist() { this.shujuflag = false if (this.storeId == null) { this.$u.get(`/app/device/list?pageNum=${this.pagenum}&pageSize=${this.pagesize}`).then((res) => { if (res.code == 200) { this.shuaxin = false this.total = res.total // this.wateringList = [] if (res.rows.length > 0) { // 有数据,追加到列表 // this.wateringList = this.wateringList.concat(res.rows) // this.pagenum++ this.shujuflag = false uni.hideLoading() } else { // 没有更多数据 this.shujuflag = true uni.hideLoading() } if (this.pagesum > 1) { this.wateringList = this.wateringList.concat(res.rows) this.shujuflag = false } else { this.wateringList = res.rows } this.pagenum++ this.isLoading = false; } else { this.shuaxin = false } }) } else { this.$u.get(`/app/device/list?storeId=${this.storeId}&pageNum=${this.pagenum}&pageSize=${this.pagesize}`).then((res) => { if (res.code == 200) { this.shuaxin = false this.total = res.total // this.wateringList = [] if (res.rows.length > 0) { // 有数据,追加到列表 // this.wateringList = this.wateringList.concat(res.rows) // this.pagenum++ this.shujuflag = false uni.hideLoading() } else { // 没有更多数据 this.shujuflag = true uni.hideLoading() } if (this.pagesum > 1) { this.wateringList = this.wateringList.concat(res.rows) this.shujuflag = false } else { this.wateringList = res.rows } this.pagenum++ this.isLoading = false; } else { this.shuaxin = false } }) } }, onReachBottom() { let sum = this.total / this.pagesize if (this.pagenum - 1 < sum) { this.getlist(); // 上拉加载更多 } else { // uni.showToast({ // title: '没有更多设备了', // icon: 'none', // duration: 1000 // }); } }, changeGp(item, index) { // console.log(item); this.pagenum = 1 this.showfz = false if (item == 1) { this.getDeviceList() } else { if (item.storeId == null) { this.pagenum = 1 // this.wateringList = [] this.titlist = item.name this.$u.get(`/app/device/list?pageNum=${this.pagenum}&pageSize=${this.pagesize}`).then((res) => { if (res.code == 200) { this.total = res.total if (res.rows.length > 0) { // 有数据,追加到列表 // this.wateringList = this.wateringList.concat(res.rows) // this.pagenum++ this.shujuflag = false uni.hideLoading() } else { // 没有更多数据 this.shujuflag = true uni.hideLoading() } if (this.pagesum > 1) { this.wateringList = this.wateringList.concat(res.rows) this.shujuflag = false } else { this.wateringList = res.rows } this.pagenum++ this.isLoading = false } }) } else { this.pagenum = 1 // this.wateringList = [] this.titlist = item.name this.$u.get(`/app/device/list?storeId=${item.storeId}&pageNum=${this.pagenum}&pageSize=${this.pagesize}`).then((res) => { if (res.code == 200) { this.total = res.total // if(this.pagenum > 1){ // this.wateringList = this.wateringList.concat(res.rows) // }else{ // this.wateringList = res.rows // } if (res.rows.length > 0) { // 有数据,追加到列表 // this.wateringList = this.wateringList.concat(res.rows) // this.pagenum++ this.shujuflag = false uni.hideLoading() } else { // 没有更多数据 this.shujuflag = true uni.hideLoading() } if (this.pagesum > 1) { this.wateringList = this.wateringList.concat(res.rows) this.shujuflag = false } else { this.wateringList = res.rows } this.pagenum++ this.isLoading = false } }) } } }, tosetpage() { this.showfz = false uni.navigateTo({ url: '/page_user/fenzu' }) }, // 点击更换用户模式 confirm(e) { let type = e[0].value if (type == '1') { this.scanQRCode() } else if (type == '2') { uni.navigateTo({ url: '/page_fenbao/device/index' }) } // console.log(e); // this.mode = e[0].label // this.gettype() }, logins() { if (uni.getStorageSync('userType')) { this.userType = uni.getStorageSync('userType') this.userType = '01' if (this.userType == '01') { this.getDeviceList() } else if (this.userType == '00') { this.getdevice() } } else { } this.getuserinfo() }, // 点击搜索附近设备进行跳转 btnserch() { uni.navigateTo({ url: '/page_fenbao/device/index' }) }, async initChart() { let value = 100; let value2 = this.deviceInfo.surplusElectriQuantity const option = { // backgroundColor:"#061740", title: { show: false, text: `历史请求满意度`, // 图表标题 x: 'center', y: '20', textStyle: { color: '#333', //'#fff', fontSize: 20, }, }, series: [{ type: 'pie', // 饼图类型 radius: ['98%', '70%'], // 饼图半径,第一个值是内半径,第二个值是外半径 silent: true, clockwise: true, startAngle: 90, // 起始角度 z: 0, zlevel: 0, data: [{ value: value, name: '占比', // 数据项名称 itemStyle: { normal: { color: '#8883F0', // 数据项颜色 }, }, label: { normal: { position: 'center', formatter: ` {a|${value2}}\n\n{b|剩余电量}`, // 标签内容格式 rich: { a: { fontSize: 15, fontWeight: '700', color: '#333', }, b: { fontSize: 11, color: '#888', }, }, }, }, }, { value: 100 - value, name: '', label: { normal: { show: false, }, }, itemStyle: { normal: { color: '#173164', }, }, }, ], }, { type: 'gauge', // 仪表盘类型 radius: '130%', // 仪表盘半径,占图表容器的百分比 center: ['50%', '50%'], // 仪表盘中心位置 startAngle: 359, endAngle: 359.9, splitNumber: 2, // 刻度分割段数 hoverAnimation: true, axisTick: { show: true, // 是否显示刻度线 length: 10, // 刻度线长度 lineStyle: { color: 'auto', width: 1, }, }, splitLine: { length: 0, // 刻度线分隔线长度 lineStyle: { width: 1, color: '#061740', }, }, axisLabel: { show: false, // 是否显示刻度标签 }, pointer: { show: false, // 是否显示指针 }, axisLine: { lineStyle: { opacity: 0, }, }, detail: { show: false, // 是否显示仪表盘详情 }, data: [{ value: 0, name: '', }, ], }, ], }; const chart = await this.$refs.chart.init(echarts) chart.setOption(option) return chart }, // 获取设备详情 getDevice() { this.$u.get("app/device/1").then((res) => { // this.$forceUpdate() if (res.code == 200) { this.deviceInfo = res.data this.loadings = true } }) }, getuserinfo() { this.$u.get("/app/user/userInfo").then((res) => { // this.$forceUpdate() if (res.code == 200) { // uni.setStorageSync('userType', res.data.userType) this.userType = res.data.userType if (this.userType == '01') { this.getDeviceList() } else if (this.userType == '00') { this.getdevice() } } else { this.jmlogin() } }) }, jmlogin() { let taht = this wx.login({ success(res) { if (res.code) { let data = { loginCode: res.code, } taht.$u.post('/app/auth/wxLogin', data).then(res => { if (res.code == 10003) { uni.navigateTo({ url: '/pages/login/login' }) } else if (res.code == 200) { uni.setStorageSync('token', res.token) taht.logins() } }) } }, }) }, getDeviceList() { this.$u.get("/app/device/list").then((res) => { // this.$forceUpdate() if (res.code == 200) { this.deviceList = res.rows.filter(row => row.isDefault === true) // console.log(this.deviceList) this.total = res.total if (this.deviceList == '') { this.addflag = true this.sbflag = false } else { this.addflag = false this.sbflag = true } } }) }, swiperchange(e) { this.shuaxin = false this.pagenum = 1 this.curtitidx = e.detail.current this.storeId = this.groupLists[this.curtitidx].storeId this.getlist() }, getdevice() { this.$u.get("/app/device/tenant").then((res) => { this.deviceInfo = res.rows.find(item => item.isDefault === true) if (this.deviceInfo == undefined) { this.addflag = true this.sbflag = false } else { this.addflag = false this.sbflag = true } uni.setStorageSync('deviceId', this.deviceInfo.deviceId) // this.initChart() this.order() }) }, changeidx(index) { this.pagenum = 1 this.curtitidx = index }, // 点击导航栏回到首页 btnshouye() { uni.reLaunch({ url: '/pages/shouye/index' }) }, toydfx() { uni.navigateTo({ url: "/page_components/eletj" }) }, todetail(id) { uni.navigateTo({ url: '/page_user/sbdetail?id=' + id }) }, // 跳转到抄表 tochaobiao() { uni.navigateTo({ url: '/page_user/cbRecord' }) }, // 点击切换设备 switchs() { uni.navigateTo({ url: '/page_user/switchs' }) } } } </script> <style lang="scss"> .shuaxin { width: 100%; height: 100vh; position: fixed; top: 0; left: 0; background-color: #fff; z-index: 99; animation: fadeIn 1s forwards; image { width: 80rpx; height: 80rpx; position: fixed; top: 10%; left: 46%; transform: translateX(-50%); animation: spin 1s linear infinite; } view{ // width: 100%; height: 80rpx; position: fixed; top: 15%; left: 52%; font-size: 30rpx; transform: translateX(-50%); } } @keyframes spin { from { transform: rotate(360deg); } to { transform: rotate(0deg); } } @keyframes fadeIn { from { opacity: 0.4; } to { opacity: 1; } } .saoyisao { width: 90rpx; height: 90rpx; position: fixed; bottom: 240rpx; right: 60rpx; z-index: 99; } .title { padding-left: 32rpx; font-size: 40rpx; color: #fff; margin-bottom: 30rpx; padding-top: 110rpx; height: 200rpx; background-color: #8883F0; text { padding-left: 28%; } } /deep/ .u-title { padding-bottom: 22rpx; } /deep/ .u-icon__icon { padding-bottom: 22rpx; } page { background-color: #F7FAFE; height: 100%; position: fixed; top: 0; left: 0; } .activewzgl { color: #ccc !important; } .page { height: 100%; padding-bottom: 200rpx; overflow: hidden; .tip_box { position: fixed; left: 72rpx; top: 788rpx; width: 610rpx; background: #F7FAFE; border-radius: 30rpx 30rpx 30rpx 30rpx; z-index: 10000000; .top { padding: 52rpx 38rpx 42rpx 36rpx; .txt { width: 100%; text-align: center; font-weight: 500; font-size: 32rpx; color: #3D3D3D; } } .bot { border-top: 2rpx solid #D8D8D8; display: flex; flex-wrap: nowrap; height: 100%; .bot_left { width: 50%; height: 98rpx; display: flex; align-items: center; justify-content: center; font-weight: 500; font-size: 36rpx; color: #3D3D3D; } .bot_right { width: 50%; height: 98rpx; display: flex; align-items: center; justify-content: center; border-left: 2rpx solid #D8D8D8; font-weight: 500; font-size: 36rpx; color: #4C97E7; } } } .noDevice { margin-top: 432rpx; display: flex; align-items: center; justify-content: center; flex-wrap: wrap; .img_box { width: 100%; display: flex; flex-wrap: wrap; justify-content: center; image { width: 252rpx; height: 252rpx; } .tps { margin-top: 4rpx; width: 100%; text-align: center; font-weight: 700; font-size: 32rpx; color: #BDBCBC; } } .addbutn { margin-top: 32rpx; display: flex; align-items: center; justify-content: center; width: 266rpx; height: 96rpx; background: #8883F0; border-radius: 16rpx; font-weight: 500; font-size: 36rpx; color: #FFFFFF; } .tip { margin-top: 30rpx; width: 100%; text-align: center; font-weight: 400; font-size: 40rpx; color: #BDBCBC; } } .zhuhu { margin-top: 20rpx; padding: 0 40rpx; .card1 { padding: 34rpx 0 0 40rpx; width: 670rpx; height: 583rpx; background: #FFFFFF; box-shadow: 0rpx 14rpx 35rpx 0rpx rgba(53, 140, 255, 0.1); border-radius: 28rpx 28rpx 28rpx 28rpx; .top { display: flex; flex-wrap: nowrap; justify-content: space-between; align-items: center; .left { font-size: 35rpx; font-family: HarmonyOS Sans SC, HarmonyOS Sans SC; font-weight: 400; color: #8883F0; } .right { margin-right: 56rpx; .imgs { width: 94rpx; height: 94rpx; vertical-align: bottom; } .img1 { width: 76rpx; height: 76rpx; } } } .mid { margin-top: 54rpx; display: flex; flex-wrap: nowrap; align-content: flex-start; .mid_left { image { width: 37rpx; height: 98rpx; } } .mid_right { margin-left: 40rpx; display: flex; flex-wrap: wrap; .mid_top { width: 100%; font-size: 42rpx; font-family: HarmonyOS Sans SC, HarmonyOS Sans SC; font-weight: 400; color: #262B37; } .mid_bot { display: flex; flex-wrap: nowrap; align-items: center; .txt { font-size: 26rpx; font-family: HarmonyOS Sans SC, HarmonyOS Sans SC; font-weight: 400; color: #95989D; } .tip { display: flex; align-items: center; justify-content: center; margin-left: 19rpx; width: 38rpx; height: 23rpx; background: rgba(204, 204, 204, 0); opacity: 1; border: 2rpx solid #8883F0; border-radius: 40rpx; font-size: 14rpx; font-family: HarmonyOS Sans SC, HarmonyOS Sans SC; font-weight: 400; color: #8883F0; } } } } .bot { margin-top: 83rpx; display: flex; flex-wrap: nowrap; align-items: center; .bot_left { width: 210rpx; height: 190.14rpx; margin-right: 34rpx; .echarts { width: 210rpx; height: 190.14rpx; } } .bot_right { display: flex; flex-wrap: nowrap; .cont { .tit { font-size: 28rpx; font-family: HarmonyOS Sans SC, HarmonyOS Sans SC; font-weight: 600; color: #262B37; line-height: 49rpx; } .txt { font-size: 26rpx; font-family: HarmonyOS Sans SC, HarmonyOS Sans SC; font-weight: 400; color: #262B37; } } } } } .card2 { padding-top: 40rpx; margin-top: 24rpx; width: 670rpx; height: 254rpx; background: #FFFFFF; box-shadow: 0rpx 16rpx 40rpx 0rpx rgba(53, 140, 255, 0.1); border-radius: 28rpx; .tit { margin-left: 40rpx; font-size: 35rpx; font-family: HarmonyOS Sans SC, HarmonyOS Sans SC; font-weight: 400; color: #8883F0; } .cont_box { margin-top: 32rpx; display: flex; flex-wrap: nowrap; justify-content: space-around; text-align: center; .cont { width: 110rpx; display: flex; flex-wrap: wrap; align-items: center; justify-content: center; .top { font-size: 32rpx; font-family: HarmonyOS Sans SC, HarmonyOS Sans SC; font-weight: 400; color: #262B37; width: 110rpx; } .bot { margin-top: 20rpx; font-size: 26rpx; font-family: HarmonyOS Sans SC, HarmonyOS Sans SC; font-weight: 400; color: #262B37; } } } } .card3 { padding-top: 40rpx; margin-top: 24rpx; width: 670rpx; height: 318rpx; background: #FFFFFF; box-shadow: 0rpx 16rpx 40rpx 0rpx rgba(53, 140, 255, 0.1); border-radius: 28rpx; .tit { margin-left: 40rpx; font-size: 35rpx; font-family: HarmonyOS Sans SC, HarmonyOS Sans SC; font-weight: 400; color: #8883F0; } .cont_box { margin-top: 32rpx; display: flex; flex-wrap: nowrap; padding-left: 50rpx; box-sizing: border-box; .cont { width: 100rpx; display: flex; flex-wrap: wrap; align-items: center; justify-content: center; margin-right: 40rpx; .top { image { width: 56rpx; height: 56rpx; } } .bot { margin-top: 28rpx; font-size: 28rpx; font-family: HarmonyOS Sans SC, HarmonyOS Sans SC; font-weight: 400; color: #808080; } } } } .button { margin-left: 76rpx; margin-top: 178rpx; display: flex; justify-content: center; align-items: center; width: 520rpx; height: 104rpx; background: #8883F0; box-shadow: 0rpx 16rpx 40rpx 0rpx rgba(42, 130, 228, 0.1); border-radius: 52rpx 52rpx 52rpx 52rpx; font-size: 32rpx; font-family: HarmonyOS Sans SC, HarmonyOS Sans SC; font-weight: 400; color: #FFFFFF; } } .fd { margin-top: 20rpx; padding: 0 40rpx; padding-bottom: 200rpx; height: 100%; .fz { margin: 0 -40rpx; position: fixed; bottom: 0; width: 750rpx; height: 1152rpx; background: #F7FAFE; border-radius: 30rpx 30rpx 0 0; z-index: 10071; .fz_top { margin: 18rpx 0 auto; display: flex; flex-wrap: nowrap; justify-content: space-between; .icon-shanchu { margin-left: 40rpx; font-size: 50rpx; } .tit { font-size: 36rpx; font-family: Source Han Sans, Source Han Sans; font-weight: 400; color: #000000; } .txt { margin-right: 40rpx; font-size: 36rpx; font-family: Source Han Sans, Source Han Sans; font-weight: 400; color: #2A82E4; } } .card_cont { width: 750rpx; padding-left: 30rpx; height: 100%; overflow-y: auto; overflow-x: hidden; .cards { margin-top: 32rpx; display: flex; flex-wrap: nowrap; align-items: center; justify-content: space-between; padding: 0 40rpx; width: 682rpx; border-radius: 30rpx; height: 114rpx; background: #FFFFFF; box-shadow: 0rpx 16rpx 40rpx 0rpx rgba(42, 130, 228, 0.1); .txt { font-size: 36rpx; font-family: Source Han Sans, Source Han Sans; font-weight: 400; color: #000000; } .num { font-size: 36rpx; font-family: Source Han Sans, Source Han Sans; font-weight: 400; color: #000000; } } } } .fd_top { display: flex; flex-wrap: nowrap; align-items: center; .fd_da { width: 600rpx; overflow: hidden; overflow-x: auto; white-space: nowrap; -ms-overflow-style: none; /* 去除IE和Edge的默认滚动条 */ scrollbar-width: none; /* 去除Firefox的默认滚动条 */ &::-webkit-scrollbar { display: none; } .fd_lt { display: flex; transition: transform 0.3s ease; padding-top: 10rpx; .fd_tit { text-align: center; padding: 0 15rpx; box-sizing: border-box; font-size: 34rpx; font-weight: 400; color: #666; } } } .act1 { font-size: 36rpx !important; font-weight: 700 !important; color: #000000 !important; } .right { margin-left: auto; display: flex; flex-wrap: nowrap; align-items: center; .fd_set { font-size: 60rpx; } .icon-liebiao { margin-top: 10rpx; margin-left: 20rpx; font-size: 40rpx; } } } .shebei { width: 750rpx; height: 100vh; position: fixed; top: 0; left: 0; text-align: center; padding-top: 300rpx; font-size: 32rpx; color: #ccc; } .swiper { .swiper-item { height: 100vh; overflow-y: auto; padding-bottom: 660rpx; .card_box { margin-top: 34rpx; display: flex; flex-wrap: wrap; .card { display: flex; margin-top: 20rpx; width: 658rpx; max-height: 300rpx; padding-bottom: 20rpx; box-sizing: border-box; background: #fff; box-shadow: 0rpx 16rpx 40rpx 0rpx rgba(255, 255, 255, 0); border-radius: 24rpx 24rpx 24rpx 24rpx; .card_left { width: 100%; margin-top: 20rpx; margin-left: 50rpx; .card_left_tit { font-size: 44rpx; font-family: AlibabaPuHuiTi, AlibabaPuHuiTi; font-weight: 500; color: #8883F0; } .card_left_sta { padding-top: 15rpx; display: flex; flex-wrap: nowrap; align-items: center; image { width: 23.32rpx; height: 36.47rpx; } .sta_txt { margin-left: 15rpx; color: #262B37; font-size: 26rpx; font-family: HarmonyOS Sans SC, HarmonyOS Sans SC; font-weight: 400; } } .card_left_no { padding-top: 15rpx; font-size: 26rpx; font-family: AlibabaPuHuiTi, AlibabaPuHuiTi; font-weight: 400; color: #95989D; } } .card_right { margin-top: 30rpx; margin-left: auto; margin-right: 50rpx; image { width: 180rpx; height: 180rpx; border-radius: 10rpx; } } } } } } } } .popup-content { text-align: center; text { display: block; } .add { margin-top: 10rpx; font-size: 36rpx; color: #000000; line-height: 80rpx; } .saoma { margin-top: 68rpx; font-size: 40rpx; color: #000000; line-height: 54rpx; border: 1px solid #ccc; padding: 30rpx 0; box-sizing: border-box; } .sousuo { margin-top: 46rpx; font-size: 40rpx; color: #000000; line-height: 54rpx; border: 1px solid #ccc; padding: 30rpx 0; box-sizing: border-box; } } </style>