2025-09-03 14:29:30 +08:00

1218 lines
31 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<view class="fullHeight projectIndexPage" style="background-color: white">
<scroll-view class="" :class="accountType == 5 || accountType == 6 || accountType == 10 ? 'smallHeight' : ''"
scroll-y>
<!-- :themeType="'white'" -->
<headers :themeType="true" :showBack="accountType == 5 || accountType == 6 || accountType == 10 ? false : true">
<view class="headerName" @click="toDept">
{{ projectDetail.projectName }}
</view>
</headers>
<!-- <image src="/static/projectIndexBG.png" class="projectIndexBG"
:style="{ height: systemInfo.statusBarHeight + 357 + 'px' }"></image> -->
<view class="topBoxContent-box"></view>
<!-- <view class="topBoxContent">
<view class="" style="height: 20px"></view>
<view class="progressBox">
<image src="/static/progressLine.png" class="progressLine"></image>
<view class="title1"> 工程进度</view>
<view class="title2">
<text>{{
projectDetail.periodRatio ? projectDetail.periodRatio : '--'
}}
</text>
<text class="unit">%</text>
</view>
<text class="status" :class="projectDetail.contractPeriodType == 2 ? 'redStatus' : ''">{{
projectDetail.contractPeriodType == 1 ? '正常' : '已延期'
}}
</text>
</view>
<view class="weatherBox">
<view class="top">
{{ weatherInfo.temperature }}
<image class="weatherIcon"
:src=" '/static/weatherIcon/' +weatherIcon(weatherInfo.weather) +'.png'">
</image>
</view>
<view class="bottom">
{{ weatherInfo.winddirection }} {{ weatherInfo.windpower }}
</view>
</view>
<view class="dateBox">
<view class="item">
<view class="">
{{
projectDetail.contractPeriodStartTime != null
? projectDetail.contractPeriodStartTime
: '—.—.—'
}}
</view>
<view class=""> 项目开工日期</view>
</view>
<view class="item item2">
<view class="">
{{
projectDetail.contractPeriodEndTime != null
? projectDetail.contractPeriodEndTime
: '—.—.—'
}}
</view>
<view class=""> 要求完成日期</view>
</view>
</view>
</view> -->
<view class="moudleContent">
<view class="moudleTitle"> ·已有产品·</view>
<view class="moudleBox">
<view class="moudleItem" @click="goMoudleFn(item)" v-for="(item, index) in list" :key="index"
v-if="item.operation && item.moduleType == 2 && item.appShow == 1">
<view class="inner" v-if="COMPANY=='sanjiang'">
<!-- <view class="imgBox" v-if="iconType == 1">
<image class="img" :src="'/static/moudleImg/' + item.moduleIcon + '.png'"></image>
</view> -->
<view class="imgBox" v-if="item.bigModuleIcon">
<image class="img" :src="'/static/sjjtIcon/' + item.bigModuleIcon + '.png'"></image>
</view>
<view class="desc">
{{ item.appName || item.moduleName }}
</view>
</view>
<view class="inner" v-else>
<view class="imgBox" v-if="iconType == 1">
<image class="img" :src="'/static/moudleImg/' + item.moduleIcon + '.png'"></image>
</view>
<view class="imgBox" v-if="iconType == 2">
<image class="img" :src="'/static/moudleImg/' + item.bigModuleIcon + '.png'"></image>
</view>
<view class="desc">
{{ item.appName || item.moduleName }}
</view>
</view>
</view>
<!-- <view class="moudleItem" @click="goMoudleFnTest()">
<view class="inner">
<view class="imgBox">
<image class="img" src=""></image>
</view>
<view class="desc">
培训计划
</view>
</view>
</view> -->
</view>
</view>
<!-- <view class="moudleTitle">
未解锁模块
</view>
<view class="moudleBox moudleBox2">
<view class="moudleItem" v-for="(item,index) in list" :key="index" v-if="!item.operation&&item.moduleType==2&&item.appShow==1">
<view class="inner">
<view class="imgBox">
<image class="img" :src="'/static/moudleImg/'+item.moduleIcon+'.png'"></image>
</view>
<view class="desc">
{{item.appName}}
</view>
</view>
</view>
</view> -->
</scroll-view>
<uni-popup ref="popupqrcode" type="center">
<view class="qrcodeItem">
<view class="title"> 打卡成功</view>
<view class="checkingPointName">
巡检点:{{ qrCode.checkingPointName }}
</view>
<view class="position"> 巡检点位置:{{ qrCode.position }}</view>
</view>
</uni-popup>
<footers :activeTab="'projectEnd'"
v-if="(accountType == 5 || accountType == 6 || accountType == 10) && projectDetail.projectSn"></footers>
<levitatedsphere :x="100" :y="80"></levitatedsphere>
</view>
</template>
<script>
import levitatedsphere from "@/components/levitatedsphere/levitatedsphere.vue"
import headers from '../../../components/headers/headers.vue'
import footers from '../../../components/footers/footers.vue'
import checkVersion from '@/pages/lq-upgrade/checkVersion.js'
import {
handleAuthLocation,
handleAuthScan
} from "@/common/permissionTips"
import {
closeBle
} from '@/static/js/BLEConn.js'
import {
getBottomLevelData,
exitApp
} from "@/utils/tool.js"
export default {
components: {
headers,
footers
},
data() {
return {
qrCode: {},
projectDetail: {
projectName: '',
contractPeriodEndTime: '',
contractPeriodStartTime: '', //-.-.-
contractPeriodType: 1, //1是正常 2是已延期
periodRatio: 0
},
userInfo: {},
searchsn: '',
accountType: 1,
list: [],
weatherInfo: {
city: '--',
weather: '-',
temperature: '--',
winddirection: '--',
windpower: '--',
humidity: '--'
},
iconType: '1',
systemInfo: {
statusBarHeight: 0
},
styType: '',
//天气
imgUrl: '',
date: '', //现在时间
// weatherInfo: '--',
adressDetail: '--',
city: '',
url: '',
versionData: '',
}
},
mounted() {
this.handleLoadWeather();
},
onShow() {
// this.loadWeather();
this.getSystemLogoConfig()
var userInfo = JSON.parse(uni.getStorageSync('userInfo'))
if (this.accountType == 5 || this.accountType == 6) {
// this.searchsn = userInfo.sn
// let sn = uni.getStorageSync("dept");
// this.searchsn = getBottomLevelData([sn])[0].projectSn;
this.getProjectSn(() => {
this.getProjectDetail()
let arr = userInfo.menuAuthority.moduleList;
this.getAllModule(arr)
})
} else if (this.accountType == 10) {
// let sn = uni.getStorageSync("dept");
// this.searchsn = getBottomLevelData([sn])[0].projectSn;
this.getProjectSn(() => {
// console.log(sn, 888999)
this.getProjectDetail()
this.getAllModule([])
uni.setStorageSync('userInfo', JSON.stringify({
...this.userInfo,
sn: this.searchsn
}))
uni.setStorageSync('userInfoObj', {
...this.userInfo,
sn: this.searchsn
})
})
// this.sendRequest({
// url: 'xmgl/company/getTenantOrgTreeList',
// data: {
// userId: userInfo.userId,
// },
// method: 'POST',
// success(res) {
// console.log(res, '777888')
// if (res && res.result && res.result.length > 0) {
// let responseData = res.result;
// that.selectedDefaultProject(responseData[0])
// }
// }
// })
} else {
this.projectDetail = JSON.parse(uni.getStorageSync('projectDetail'))
// this.loadWeather()
this.getAllModule(userInfo.menuAuthority.moduleList)
}
closeBle()
.then((res) => {
// this.closeDiv = false
// this.clear()
// uni.hideLoading()
console.log('断开蓝牙成功')
})
.catch((err) => {
// uni.hideLoading()
console.log('断开蓝牙失败')
})
if (uni.getStorageSync('oldObj')) {
uni.removeStorageSync('oldObj')
}
if (uni.getStorageSync('buildObj')) {
uni.removeStorageSync('buildObj')
}
},
onLoad(options) {
// exitApp()
var userInfo = JSON.parse(uni.getStorageSync('userInfo'))
console.log('userInfo===========', userInfo)
this.userInfo = userInfo
this.accountType = userInfo.accountType
this.styType = userInfo.styleType
this.systemInfo = uni.getStorageSync('systemInfo')
this.getSystemLogoConfig()
if (!this.userInfo.personMail && options.fromPage && options.fromPage == 'loginPage') {
this.checkInfoComplete()
}
// #ifdef APP-PLUS
this.viewVersionInfo()
// #endif
},
methods: {
checkInfoComplete() {
uni.showModal({
title: '温馨提示',
content: '系统检测到您未完善邮箱,请去后台中心完善,以免忘记密码时无法通过邮箱验证,导致重置密码失败!',
confirmText: "个人中心",
success: function(res) {
if (res.confirm) {
uni.navigateTo({
url: '/pages/my/userInfo/userInfo'
})
} else if (res.cancel) {
console.log('用户点击取消');
}
}
});
},
getProjectSn(next) {
var userInfo = JSON.parse(uni.getStorageSync('userInfo'))
this.sendRequest({
url: "xmgl/company/getTenantOrgTreeList",
data: {
userId: userInfo.userId,
headquartersSn: uni.getStorageSync("company").headquartersSn
},
method: "POST",
success: (res) => {
console.log(res, "getTenantOrgTreeList");
let three = getBottomLevelData(res.result)[0];
console.log(three, "threeeeeee");
let dept = uni.getStorageSync("dept");
if (!dept) {
dept = three.projectSn;
uni.setStorageSync("dept", dept)
}
this.searchsn = dept;
next()
}
})
},
toDept() {
uni.navigateTo({
url: "/pages/deptList/deptList"
})
},
// 默认选中第一个组织的第一个项目
selectedDefaultProject(obj) {
console.log(obj.list, 888999)
// if (obj.list && obj.list.length > 0) {
// obj.list.map((item) => {
// this.selectedDefaultProject(item);
// });
// } else {
// // this.searchsn = obj.sn
// let sn = uni.getStorageSync("dept");
// this.searchsn = getBottomLevelData([sn])[0].projectSn;
// console.log(obj.sn, 888999)
// this.getProjectDetail()
// this.getAllModule([])
// uni.setStorageSync('userInfo', JSON.stringify({
// ...this.userInfo,
// sn: this.searchsn
// }))
// }
},
viewVersionInfo() {
console.log('进入页面调用');
//fix 避开检查更新 罗劲章
// return false
var that = this
//获取当前应用版本
plus.runtime.getProperty(plus.runtime.appid, function(widgetInfo) {
// console.log('版本号的数据信息', widgetInfo.version);//其实是应用版本名称
console.log('应用版本名称', widgetInfo.version);
that.versionName = widgetInfo.version
console.log('应用版本号', widgetInfo.versionCode);
that.versionNo = widgetInfo.versionCode
})
console.log('viewVersionInfo', that.url_config)
// uni.navigateTo({
// url:'versionInfo'
// })
if (
this.systemInfo.platform.indexOf('android') != -1 &&
typeof plus !== 'undefined'
) {
//获取最新版本
that.sendRequest({
url: 'xmgl/appVersion/getAppVersion',
data: {},
method: 'POST',
success(res2) {
console.log('获取当前app应用版本名称', that.versionName);
console.log('获取平台版本名称', res2.result.versionName);
let jxjAppVersionName = res2.result.versionName
console.log('获取当前app应用版本号', that.versionNo);
console.log('获取平台版本号', res2.result.versionNo);
let jxjAppVersionNo = res2.result.versionNo
if (res2.result && jxjAppVersionNo !== that.versionNo) {
let name = res2.result.versionName; //新版本名称
let code = res2.result.versionNo; //新版本号(数字)
let content = res2.result.versionDescribe; //更新内容
let url = JSON.parse(res2.result.downloadUrl)[0].url; //app下载链接演示请换成真正在下载链接
let forceUpdate = false; //是否强制更新
checkVersion({
name, //最新版本名称
code, //最新版本号
content, //更新内容
url, //下载链接
forceUpdate //是否强制升级
})
// uni.showModal({
// title: '版本更新',
// content: '更新内容:' + res2.result.versionDescribe,
// // confirmText: '更新',
// showCancel: false,
// success(res) {
// if (res.confirm) {
// console.log('用户点击确定')
// // var url = that.url_config + 'image/' + JSON.parse(res2.result.downloadUrl)[0].url//地址拼错啦,直接返回的就是下载地址
// var url = JSON.parse(res2.result.downloadUrl)[0].url
// console.log('apk地址', url)
// uni.showModal({
// title: '提示',
// content: '正在后台下载更新资源,请耐心等待......',
// showCancel: false
// })
// uni.downloadFile({
// url: url,
// success: (res) => {
// // uni.hideLoading()
// console.log('res', res)
// if (res.statusCode === 200) {
// console.log('下载成功')
// var fileSaveUrl = plus.io
// .convertLocalFileSystemURL(
// res.tempFilePath
// )
// plus.runtime.openFile(res
// .tempFilePath) //选择软件打开文件
// }
// }
// })
// } else if (res.cancel) {
// console.log('用户点击取消')
// }
// }
// })
} else {
// uni.showToast({
// title: '您已经是最新版本啦!',
// icon: 'none'
// })
}
}
})
}
},
weatherIcon(index) {
if (index == "晴") {
return "w_sun";
} else if (index == "多云") {
return "w_overcast";
} else if (index == "阴") {
return "w_cloud";
} else if (index.indexOf("雨")) {
return "w_rain";
} else if (index.indexOf("雷")) {
return "w_thunder";
} else if (index.indexOf("雪")) {
return "w_snow";
} else if (index.indexOf("雾")) {
return "w_fog";
} else {
return "w_cloud";
}
},
getSystemLogoConfig() {
var that = this
this.sendRequest({
url: 'xmgl/systemLogoConfig/selectSystemLogoConfig',
data: {},
method: 'GET',
success(res) {
console.log(res.result.iconType)
that.iconType = res.result.iconType ? res.result.iconType : '1'
}
})
},
handleLoadWeather() {
const msg =
'当前应用正在尝试获取当前设备位置用于查询天气情况,用户可以选择去开启或拒绝,拒绝后可以自行通过(设置-天气-位置 来进行设置)!开启手机定位及允许访问位置前往【手机设置>隐私>定位服务>允许访问】进行设置'
const closeWeatherTips = uni.getStorageSync('closeWeatherTips')
console.info(closeWeatherTips, 'closeWeatherTips')
if (closeWeatherTips) return
handleAuthLocation(msg).then(() => {
this.loadWeather()
}).catch(() => {
uni.setStorageSync('closeWeatherTips', true)
});
},
loadWeather() {
console.log('进来了吗:==========');
//获取天气温度等信息
let that = this
uni.getLocation({
type: 'gcj02',
geocode: true,
isHighAccuracy: "true",
accuracy: "best", // 精度值为20m
success: function(res) {
console.log('当前位置的经度:' + res.longitude);
console.log('当前位置的纬度:' + res.latitude);
var location = res.longitude + ',' + res.latitude
//通过当前经纬度获取当前地址
uni.request({
url: "https://restapi.amap.com/v3/geocode/regeo",
data: {
key: "56c91fb2683e5bf0f46014ac200d4c1b", //高德地图key
location: location
},
method: "GET",
success(res) {
console.log("地址", res)
if (res.data.status == "1") {
var one = res.data.regeocode.formatted_address
if (one) {
that.adressDetail = one.substr(3, 3) + one.substr(9,
4) + one.substr(20, 7)
}
var city = res.data.regeocode.addressComponent.city
console.log("地址", that.adressDetail)
//通过当前城市,获取当前天气
uni.request({
url: "http://restapi.amap.com/v3/weather/weatherInfo",
data: {
key: "56c91fb2683e5bf0f46014ac200d4c1b",
city: city,
extensions: "base",
output: "JSON",
},
method: "GET",
success(res) {
if (res.data.status == "1") {
that.weatherInfo = res.data.lives[0]
console.log("成功获取天气", res)
//获取完地址天气等信息后,开始画水印
// that.canversImg();
}
}
})
}
}
})
},
fail: function(msg) {
console.log("获取位置失败", msg)
}
});
// let city=this.projectDetail.cityCode
// uni.request({
// url: 'https://v0.yiketianqi.com/api', //仅为示例,并非真实接口地址。
// data: {
// key: '3b060f3a0ce4bafebeba1621dcd99c31',
// city:city ,
// extensions: 'base',
// output: 'JSON'
// }
// })
// .then((res) => {
// console.log('天气的数据', res)
// this.weatherInfo = res.data.lives[0]
// localStorage.setItem('weatherInfo', JSON.stringify(this.weatherInfo))
// })
},
goMoudleFnTest() {
uni.navigateTo({
url: '/pages/projectEnd/trainPlan/list'
})
},
goMoudleFn(item) {
//添加虚拟模块 报警提示
// if(item.moduleName=="预警播报"){
// uni.navigateTo({
// url: '/pages/alarmPage/index'
// })
// return false;
// }
console.log('item=======item.plugin', item, item.plugin)
switch (item.plugin) {
// case 'markRoom':
// uni.navigateTo({
// url: '../markRoom/markRoom'
// })
// break
case "standardScheduleAg":
uni.navigateTo({
url: '/pages/standardScheduleNews/home'
})
break;
case "inspectRoute":
uni.navigateTo({
url: '../../projectEnd/InspectionRoute/inspection'
})
break;
case 'educationExam':
uni.navigateTo({
url: '../trainPlan/list'
})
break
case 'markRoom':
uni.navigateTo({
url: '../markRoom/markRoom'
})
break
case 'videoMonitor':
// uni.navigateTo({
// url: '../../videoManage/videoList?sn=' +
// this.projectDetail.projectSn +
// '&pageType=backEnd'
// })
uni.navigateTo({
url: '../../videoManage/videoGroup'
})
break
case 'projectInfo':
uni.navigateTo({
url: '../project/projectInfo'
})
break
case 'environmentMonitor':
uni.navigateTo({
url: '../environment/menu'
})
break
case 'laborManage':
uni.navigateTo({
url: '../laborManage/index'
})
break
case 'constructionLog':
uni.navigateTo({
url: '../constructionLog/list'
})
break
case 'electricBoxMange':
uni.navigateTo({
url: '../electricBox/index'
})
break
case 'lifterManage':
uni.navigateTo({
url: '../lifterMonitoring/index'
})
break
case 'carManage':
uni.navigateTo({
url: '../carManage/indexPage'
})
break
case 'towerManage':
uni.navigateTo({
url: '../towerManage/index'
})
break
case 'dailyInspection':
uni.navigateTo({
url: '../dailyCheck/index'
})
break
case 'qualitySpringback':
uni.navigateTo({
url: '../qualitySpringback/index'
})
break
case 'unloadManage':
uni.navigateTo({
url: '../unload/index'
})
break
case 'concreteMonitoring':
uni.navigateTo({
url: '../concreteMonitoring/index'
})
break
case 'buildersDiary':
uni.navigateTo({
url: '../buildersDiary/index'
})
break
case 'safeManage':
// uni.navigateTo({
// url: '../safeManage/index'
// })
uni.navigateTo({
url: '../safeManage/safeIndex'
})
break
// uni.navigateTo({
// url: '../safeManage/addExamine'
// })
break
case 'qualityManage':
uni.navigateTo({
url: '../qualityManage/index'
})
break
case 'carWashManage':
uni.navigateTo({
url: '../carWashManage/index'
})
break
case 'dangerBigProject':
uni.navigateTo({
url: '../dangerBigProject/index'
})
break
case 'safeManageAG':
uni.navigateTo({
url: '../safeSame/index'
})
break
case 'fileManage':
uni.navigateTo({
url: '../../fileManage/fileManage'
})
break
case 'materialsManage':
uni.navigateTo({
url: '../../projectEnd/materialsManage/materialsManage'
})
break
case 'ukashManage':
uni.navigateTo({
url: '../../projectEnd/ukashManage/ukashManage'
})
break
case 'ekashManage':
uni.navigateTo({
url: '../../projectEnd/ekashManage/ekashManage'
})
break
case 'visitorsManage':
uni.navigateTo({
url: '../../projectEnd/visitorsManage/visitorsManage'
})
break
case 'betonManage':
uni.navigateTo({
url: '../betonManage/index'
})
break
case 'progressManage':
uni.navigateTo({
url: '../progressManagement/index'
})
break
// case 'dangerBroadcast':
// uni.navigateTo({
// url: '../../alarmPage/index'
// })
// break
case 'dangerBroadcast':
// uni.navigateTo({
// url: '../../alarmPage/indexTwo'
// })
uni.navigateTo({
url: '../../alarmPage/pageIndex'
})
break
case 'carViolation':
// uni.navigateTo({
// url: '../../alarmPage/indexTwo'
// })
uni.navigateTo({
url: '../../carViolation/pageIndex'
})
break
case 'standardSchedule':
uni.navigateTo({
url: '../standardSchedule/index',
})
break
case 'smartBeamField':
uni.navigateTo({
url: '../smartBeamField/beamMenu',
})
break
case 'specialOperations':
uni.navigateTo({
url: '../../projectEnd/specialOperations/specialOperations'
})
break
case 'emergencyDisposal':
uni.navigateTo({
url: '../../projectEnd/emergencyDisposal/index'
})
break
case 'exerciseInfo':
uni.navigateTo({
url: '../../projectEnd/exerciseInfo/index'
})
break
case 'workTicket':
uni.navigateTo({
url: '../workTicketManage/index'
})
break
case 'contractors':
uni.navigateTo({
url: '../../contractors/index'
})
break
case 'saosao':
console.log('打开saosao')
// let that = this;
handleAuthScan().then(() => {
uni.scanCode({
scanType: ['qrCode'],
success: function(res) {
console.log('扫一扫得到的数据:' + res.result)
uni.navigateTo({
url: '../scan/saoSao?data=' + res.result
})
// let qrcodeVal=JSON.parse(res.result)
// let param={
// checkingPointId:qrcodeVal.checkingPointId,
// checkingPointName:qrcodeVal.checkingPointName,
// checkingPointUserId:that.userInfo.userId,
// checkingPointUserName:that.userInfo.realName||that.userInfo.account,
// position:qrcodeVal.position
// }
// that.sendRequest({
// url: "xmgl/checkingPointInfo/add",
// data:param,
// method: "POST",
// success(res) {
// console.log(res,'res');
// console.log(param,'===')
// that.qrCode=param;
// that.$refs.popupqrcode.open();
// setTimeout(item=>{
// that.$refs.popupqrcode.close();
// },5000)
// }
// })
}
})
})
break
default:
uni.showToast({
icon: 'none',
title: '该产品暂未开放,敬请期待!'
})
}
},
getProjectDetail() {
var that = this
this.sendRequest({
url: 'xmgl/project/getProjectInfoBySn',
data: {
projectSn: this.searchsn
// 获取存储数组最底层的projectSn
},
method: 'POST',
success(res) {
that.projectDetail = res.result
uni.setStorageSync('projectDetail', JSON.stringify(res.result))
// that.loadWeather()
}
})
},
getAllModule(arr) {
console.log('获取的模块', arr)
const find = arr ? arr.find(item => item.plugin == "emergencyDisposal") : "";
if (find) {
uni.setStorageSync('moduleInfo', JSON.stringify(find))
}
var that = this
if (this.accountType == 10) {
this.sendRequest({
url: 'xmgl/baseModule/getModuleAndMenuList',
data: {
projectSn: this.searchsn,
userId: this.userInfo.userId,
moduleType: 2,
},
method: 'POST',
success(res) {
if (res.success) {
console.log(uni.getStorageSync("userInfo"), 777888)
uni.setStorageSync("userInfo", JSON.stringify({
...JSON.parse(uni.getStorageSync("userInfo")),
menuAuthority: {
menuList: res.result.menuList,
moduleList: res.result.moduleList
}
}))
var all = res.result.moduleList;
console.log("all", all);
all.forEach((element, index) => {
all[index].operation = false;
res.result.menuList.forEach((element2) => {
if (element2.moduleId == element.moduleId) {
all[index].operation = true;
}
});
});
console.log("all111", all);
that.list = all;
}
}
})
} else {
if (arr) {
that.list = arr.map(item => {
item.operation = true;
return item;
});
} else {
this.sendRequest({
url: 'xmgl/baseModule/list',
data: {
moduleType: 2,
styleType: this.styType
},
method: 'POST',
success(res) {
var all = res.result;
all.forEach((element, index) => {
console.log(element, index, "=========")
all[index].operation = false
arr.forEach((element2) => {
if (element2.moduleId == element.moduleId) {
all[index].operation = true
all[index].menuList = element2.menuList
}
})
})
that.list = all
// this.list=newAppShow
//添加报警提示模块
console.log('用户列表', that.list)
// that.list.push({
// operation:true,
// appName: "报警提示",
// appShow: 1,
// bigModuleIcon: "log_active2",
// disableModuleIcon: null,
// labelName: "报警提示",
// labelSortNum: "7",
// menuList: null,
// moduleDesc: "",
// moduleEquipment: 0,
// moduleIcon: "log_active",
// moduleIcon2: "log",
// moduleId: "41",
// moduleName: "报警提示",
// modulePath: "",
// moduleType: 2,
// plugin: "constructionLog",
// styleType: 1
// });
}
})
}
console.log(that.list, "list============")
}
}
}
}
</script>
<style lang="scss" scoped>
.qrcodeItem {
padding: 40rpx 30rpx;
width: 480rpx;
background-color: #fff;
border-radius: 8rpx;
.title {
text-align: center;
margin-bottom: 12rpx;
}
}
.topBoxContent-box {
margin: 26rpx;
width: calc(100% - 52rpx);
height: 400rpx;
background-image: url('@/static/chaozhou-index.png');
background-repeat: no-repeat;
background-size: 100% 100%;
position: relative;
}
.topBoxContent {
color: white;
font-size: 14px;
// background: linear-gradient(360deg, #A59FFF 0%, #3258FF 100%);
height: 260px;
position: relative;
.dateBox {
display: flex;
align-items: center;
justify-content: center;
position: relative;
z-index: 2;
.item {
flex: 1;
text-align: center;
}
.item2 {
border-left: 1px dashed white;
// border-right: 1px dashed white;
}
}
}
.progressBox {
width: 150px;
height: 150px;
position: relative;
text-align: center;
margin: 0px auto 25px;
.title1 {
padding-top: 24px;
}
.title2 {
font-size: 33px;
margin: 6px 0;
.unit {
font-size: 20px;
}
}
.status {
width: 52px;
height: 25px;
background: #8fda5c;
border-radius: 12px;
display: inline-block;
line-height: 25px;
}
.redStatus {
background: #ea6868;
}
.progressLine {
position: absolute;
left: 0;
top: 0;
width: 100%;
height: 100%;
}
}
.weatherBox {
position: absolute;
top: 15px;
right: 15px;
text-align: center;
.top {
font-size: 27px;
display: flex;
align-items: center;
}
.weatherIcon {
width: 36px;
height: 36px;
}
.bottom {
font-size: 10px;
}
}
.projectIndexPage {
/deep/ .headerBox {
// background-color: transparent;
border-bottom: none;
}
}
.progressBox {
width: 150px;
height: 150px;
position: relative;
text-align: center;
margin: 0px auto 24px;
.title1 {
padding-top: 24px;
}
.title2 {
font-size: 33px;
margin: 6px 0;
.unit {
font-size: 20px;
}
}
.status {
width: 52px;
height: 25px;
background: #8fda5c;
border-radius: 12px;
display: inline-block;
line-height: 25px;
}
.redStatus {
background: #ea6868;
}
.progressLine {
position: absolute;
left: 0;
top: 0;
width: 100%;
height: 100%;
}
}
.weatherBox {
position: absolute;
top: 10px;
right: 15px;
text-align: center;
.top {
font-size: 27px;
display: flex;
align-items: center;
}
.weatherIcon {
width: 36px;
height: 36px;
}
.bottom {
font-size: 10px;
}
}
.moudleBox2 {
opacity: 0.6;
}
.moudleBox {
overflow: hidden;
// margin: 20px 11px;
}
.moudleItem {
float: left;
width: 33.33%;
font-size: 13px;
text-align: center;
margin-bottom: 10px;
.inner {
border: 1px solid rgba(18, 41, 75, 0.06);
padding: 15px 0 15px;
margin: 0 5px;
border-radius: 5px;
}
.img {
width: 40px;
height: 40px;
color: red;
}
.desc {
margin-top: 6px;
color: rgba(38, 45, 71, 0.77);
}
}
.moudleTitle {
color: rgba(42, 43, 91, 0.5);
font-size: 13px;
margin: 0px 0 15px;
text-align: center;
}
.smallHeight {
// padding-bottom: 63px;
height: calc(100% - 63px);
}
.moudleContent {
// box-shadow: 0px 4px 16px 0px rgba(212, 220, 236, 0.59);
border-radius: 8px;
padding: 15px 15px;
margin: 15px 15px 15px;
position: relative;
z-index: 2;
}
.projectIndexBG {
width: 100%;
height: 357px;
position: absolute;
top: 0;
left: 0;
}
</style>