2025-02-07 17:10:27 +08:00

2012 lines
48 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>
<page-meta :root-font-size="$pageSize + 'px'"></page-meta>
<view class="fullHeight projectIndexPage" style="background-color: white">
<scroll-view class="scroll_view_main" :class="accountType == 5 || accountType == 6 || accountType == 10 ? 'smallHeight' : ''"
scroll-y>
<!-- <headers :showBack="accountType == 5 || accountType == 6 || accountType == 10 ? false : true"
:themeType="'white'">
<view class="headerName" @click="toDept">
{{ projectDetail.projectName }}
</view>
</headers> -->
<view class="header_bg">
<view class="login_logo">
<view class="logo_box">
<image src="@/static/bthgIcon/login_icon1.png" mode="" />
<text>神华包头煤制烯烃升级示范项目</text>
</view>
<!-- <view>
智慧工地系统
</view> -->
<image src="@/static/bthgIcon/login_bg3.png" mode=""></image>
</view>
<view class="userBox">
<!-- <image class="userImg" :src="url_config + 'image/' + userInfo.avatar" v-if="userInfo.avatar"></image>
<image class="userImg" src="@/static/userImg.png" v-else></image> -->
<view class="userBox_left">
<u-image class="userBox_left_image" :src="url_config + 'image/' + userInfo.avatar"
shape="circle" mode="scaleToFill">
<template v-slot:error>
<image class="image_error"
src="@/static/userImg.png"></image>
</template>
</u-image>
<view v-if="userInfo.userId">
<text v-if="uid">{{userInfo.realName}}</text>
<text v-else>{{userInfo.account}}</text>
<text>
<!-- 欢迎来到智慧工地系统 -->
岗位(工种){{userInfo.postWorkTypeName}}
</text>
</view>
<view v-else @click="goMoudleFn">
登录
</view>
</view>
<view class="userBox_right" v-if="userInfo.userId">
<image @click="onClickToSao" src="@/static/bthgIcon/project_icon9.png" mode=""></image>
</view>
<view class="userBox_right" v-else>
<view>
{{ weatherInfo.temperature }}℃
</view>
<view>
{{getTimeWeek}}
</view>
</view>
</view>
</view>
<view class="moudleItem_all" v-if="!userInfo.userId">
<view class="all_title">
<view class="all_title_left">
<image src="@/static/bthgIcon/project_icon1.png" mode=""></image>
<view>
全部功能
</view>
</view>
</view>
<view class="moudleBox">
<view v-for="(item, index) in list" :key="index"
>
<view class="moudleItem" @click="goMoudleFn(item)" 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> -->
<!-- v-if="iconType == 2" -->
<view class="imgBox">
<image class="img" :src="'/static/bthgIcon/' + item.commonIcon + '.png'"></image>
</view>
<view class="desc">
{{ item.appName || item.moduleName }}
</view>
</view>
</view>
</view>
</view>
</view>
<view class="login_main" v-else>
<view class="message_title" @click="toMessageCenter">
<image src="@/static/bthgIcon/project_icon2.png" mode=""></image>
<view class="message_text">
{{queryNoticeInfo.msg}}
</view>
<uni-icons2 class="arrowright" type="arrowright"></uni-icons2>
</view>
<view class="moudleItem_all">
<view class="all_title">
<view class="all_title_left">
<image src="@/static/bthgIcon/project_icon1.png" mode=""></image>
<view>
常用功能
</view>
</view>
<view class="all_title_right">
<view @click="toApplicationCenter">
全部应用
</view>
<view @click="toAppSettings">
<uni-icons2 class="tune" type="tune"></uni-icons2>
</view>
</view>
</view>
<swiper class="swiper" circular :indicator-dots="true" :interval="2000" :duration="500">
<swiper-item v-for="ele in listUp" :key="ele.id">
<view class="moudleBox">
<view class="moudleItem" @click="goMoudleFn(item)" v-for="(item, index) in ele"
:key="index">
<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> -->
<!-- v-if="iconType == 2" -->
<view class="imgBox">
<image class="img" :src="'/static/bthgIcon/' + item.commonIcon + '.png'">
</image>
</view>
<view class="desc">
{{ item.appName || item.moduleName }}
</view>
</view>
</view>
</view>
</swiper-item>
</swiper>
</view>
<view class="module_workspace">
<view class="workspace_box_top">
<view class="workspace_box_top_left">
<view>
<image src="@/static/bthgIcon/project_icon3.png" mode=""></image>
<view>
我的待办
</view>
</view>
<view>
<view @click="toWorkspace(0)">
<view>
{{todoInfo.total}}
</view>
<view>
待审批
</view>
</view>
<view @click="toWorkspace(1)">
<view>
{{todoInfo.needCall}}
</view>
<view>
待催办
</view>
</view>
<view @click="toWorkspace(2)">
<view>
{{todoInfo.done}}
</view>
<view>
已办结
</view>
</view>
</view>
</view>
<!-- <view class="workspace_box_top_right">
<view @click="toSubmit">
<image src="@/static/bthgIcon/project_icon13.png" mode=""></image>
<view>创建审批</view>
<view></view>
</view>
<view @click="toWorkspace(2)">
<image src="@/static/bthgIcon/project_icon10.png" mode=""></image>
<view>已发起</view>
<view>{{todoInfo.userSubmitted}}</view>
</view>
<view @click="toWorkspace(3)">
<image src="@/static/bthgIcon/project_icon11.png" mode=""></image>
<view>我的抄送</view>
<view>{{todoInfo.ccMe}}</view>
</view>
</view> -->
</view>
<!--<view class="workspace_box_bottom">
<view>
<view>
<image src="@/static/bthgIcon/project_icon4.png" mode=""></image>
<view>常用审批单</view>
</view>
<view @click="toSubmit">
全部审批单
</view>
</view>
</view> -->
</view>
<view class="module_home">
<view class="all_title">
<view class="all_title_left">
<image src="@/static/bthgIcon/project_icon5.png" mode=""></image>
<view>
信息统计
</view>
</view>
</view>
<newhomePage v-if="projectDetail.projectSn" :userInfo="userInfo"></newhomePage>
</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>
<!-- v-if="(accountType == 5 || accountType == 6 || accountType == 10) && projectDetail.projectSn" -->
<footers :activeTab="'projectEnd'"></footers>
<levitatedsphere v-if="projectDetail.projectSn" :x="100" :y="80"></levitatedsphere>
</view>
</template>
<script>
import {
getUserTodoList,
getIdoList,
getUserSubmittedList,
getCcMeList,
getHomePageFlowCountApi
} from "@/api/model";
import levitatedsphere from "@/components/levitatedsphere/levitatedsphere.vue"
import headers from '../../../components/headers/headers.vue'
import footers from '../../../components/footers/footers.vue'
import newhomePage from '@/pages/homePage/newhomePage.vue'
import checkVersion from '@/pages/lq-upgrade/checkVersion.js'
import {
closeBle
} from '@/static/js/BLEConn.js'
import {
getBottomLevelData, decodeStr
} from "@/utils/tool.js"
import qrcodeMy from "@/utils/reqrcode.js"
export default {
components: {
headers,
footers,
newhomePage
},
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: '',
uid: "",
queryNoticeInfo: {},
todoInfo: {
userTodo: 0,
Ido: 0,
userSubmitted: 0,
ccMe: 0,
done:0,
needCall:0,
total:0
}
}
},
mounted() {
this.loadWeather();
console.log("最近使用", uni.getStorageSync("recentlyUsed"))
},
onShow() {
var userInfo = uni.getStorageSync('userInfo') ? JSON.parse(uni.getStorageSync('userInfo')) : null;
if (userInfo) {
this.uid = uni.getStorageSync('UID')
this.getSystemLogoConfig()
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()
}
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')
}
} else {
this.getProjectAll();
}
},
onLoad(options) {
var userInfo = uni.getStorageSync('userInfo') ? JSON.parse(uni.getStorageSync('userInfo')) : null;
console.log('userInfo===========', userInfo)
if (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
this.getqueryNoticePage();
uni.setStorageSync("wflow-token", userInfo.token);
uni.setStorageSync("loginUser", JSON.stringify(userInfo));
sessionStorage.setItem('wflow-token', userInfo.token);
sessionStorage.setItem('loginUser', JSON.stringify(userInfo));
sessionStorage.setItem('projectSn', userInfo.sn);
}
},
watch: {
projectDetail: {
handler(val){
this.todoList();
}
}
},
methods: {
todoList() {
// const pramas = {
// pageSize: 10,
// pageNo: 1,
// code: "",
// }
// getUserTodoList(pramas).then(result => {
// console.log(7577, result)
// if (result.statusCode == 200) {
// this.todoInfo.userTodo = result.data.total;
// }
// });
// getIdoList(pramas).then(result => {
// console.log(7577, result)
// if (result.statusCode == 200) {
// this.todoInfo.Ido = result.data.total;
// }
// })
// getUserSubmittedList(pramas).then(result => {
// console.log(7577, result)
// if (result.statusCode == 200) {
// this.todoInfo.userSubmitted = result.data.total;
// }
// })
// getCcMeList(pramas).then(result => {
// console.log(7577, result)
// if (result.statusCode == 200) {
// this.todoInfo.ccMe = result.data.total;
// }
// })
this.$nextTick(() => {
getHomePageFlowCountApi({
projectSn: this.projectDetail.projectSn,
}).then(res => {
console.log(7577, res)
if (res.statusCode == 200) {
this.todoInfo = res.data.result;
}
})
// const that = this;
// this.sendRequest({
// url: 'xmgl/homePage/flow/count',
// data: {
// projectSn: this.projectDetail.projectSn,
// },
// method: 'GET',
// success(res) {
// if (res.success) {
// this.todoInfo = res.result;
// }
// }
// })
})
},
toSubmit() {
uni.redirectTo({
url: '/pages/submit/submit',
})
// /pages/workspace/workspace
},
toWorkspace(current) {
uni.redirectTo({
url: '/pages/workspace/workspace?current=' + current,
})
},
getProjectAll() {
const that = this;
this.sendRequest({
url: 'xmgl/baseModule/getProjectModuleAndMenuList',
data: {
projectSn: this.searchsn,
// userId: this.userInfo.userId,
moduleType: 2,
isApp: 1
},
method: 'POST',
success(res) {
if (res.success) {
var all = res.result.moduleList;
console.log("all", all);
all.forEach((element, index) => {
all[index].operation = true;
// res.result.menuList.forEach((element2) => {
// if (element2.moduleId == element.moduleId) {
// all[index].operation = true;
// }
// });
});
console.log("all111", all);
that.list = all;
}
}
})
},
getqueryNoticePage() {
const that = this;
this.sendRequest({
url: 'xmgl/homePage/queryNoticePage',
data: {
projectSn: this.searchsn,
pageNo: 1,
pageSize: 1
},
method: 'POST',
success(res) {
if (res.success) {
if (Array.isArray(res.result.records) && res.result.records.length > 0) {
that.queryNoticeInfo = res.result.records[0];
}
}
}
})
},
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'
}
})
},
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 (!this.userInfo.userId) {
uni.navigateTo({
url: '/pages/login/login'
})
return
}
//添加虚拟模块 报警提示
// 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 '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 'operationManage':
uni.navigateTo({
url: '../../projectEnd/operationManage/operationManage'
})
break
case 'emergencyDisposal':
uni.navigateTo({
url: '../../projectEnd/emergencyDisposal/index'
})
break
case 'pouringOrderLedger':
uni.navigateTo({
// url: '../qualityManage/pouringOrderLedger/work'
url: '../../projectEnd/workflowTable/pouringOrderApplyfor/index'
})
break
case 'testingManage':
uni.navigateTo({
url: '../../projectEnd/testingManage/operationManage'
})
break
case 'startReportApproveManage':
uni.navigateTo({
url: '../../projectEnd/startReportApproveManage/index'
})
break
case 'controlPointGrading':
uni.navigateTo({
url: '../../projectEnd/controlPointGrading/index'
})
break
case 'buildUnqualifiedReport':
uni.navigateTo({
url: '../../projectEnd/workflowTable/buildUnqualifiedReport/index'
})
break
case 'welderAssessmentRequest':
uni.navigateTo({
url: '../../projectEnd/workflowTable/welderAssessmentRequest/index'
})
break
case 'unitProjectDivideReport':
uni.navigateTo({
url: '../../projectEnd/workflowTable/unitProjectDivideReport/index'
})
break
case 'engineeringSurveyRetest':
uni.navigateTo({
url: '../../projectEnd/workflowTable/engineeringSurveyRetest/index'
})
break
case 'waterElectricityRecordSettlement':
uni.navigateTo({
url: '../../projectEnd/workflowTable/waterElectricityRecordSettlement/index'
})
break
case 'roadUseApproval':
uni.navigateTo({
url: '../../projectEnd/workflowTable/roadUseApproval/index'
})
break
case 'centralizeAntisepticEntrust':
uni.navigateTo({
url: '../../projectEnd/centralizeAntisepticEntrust/index'
})
break
case 'pipelineWelding':
uni.navigateTo({
url: '../../projectEnd/pipelineWelding/index'
})
break
case 'guidancePartyBuilding':
uni.navigateTo({
url: '../../projectEnd/guidancePartyBuilding/index'
})
break
case 'videoLedger':
uni.navigateTo({
url: '../../projectEnd/videoLedger/index'
})
break
case 'buildEquipToolManage':
uni.navigateTo({
url: '../../projectEnd/buildEquipToolManage/index'
})
break
case 'schemeLedger':
uni.navigateTo({
url: '../../projectEnd/schemeLedger/index'
})
break
case 'winterConstructionManage':
uni.navigateTo({
url: '../../projectEnd/winterConstructionManage/index'
})
break
case 'firstModelManage':
uni.navigateTo({
url: '../../projectEnd/firstModelManage/index'
})
break
case 'civilConstruction':
uni.navigateTo({
url: '../../projectEnd/civilConstruction/index'
})
break
case 'qualitySurveillance':
uni.navigateTo({
url: '../../projectEnd/qualitySurveillance/index'
})
break
case 'saosao':
console.log('打开saosao')
// let that = this;
uni.scanCode({
scanType: ['qrCode'],
success: function(res) {
console.log('扫一扫得到的数据:' + res.result)
// uni.navigateTo({
// url: '../scan/saoSao?data=' + res.result
// })
uni.navigateTo({
url: `${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: '该产品暂未开放,敬请期待!'
})
}
},
toMessageCenter() {
uni.navigateTo({
url: '/pages/messageCenter/messageCenter'
})
},
toApplicationCenter() {
uni.navigateTo({
url: '/pages/projectEnd/projectIndex/applicationCenter'
})
},
toAppSettings() {
uni.navigateTo({
url: '/pages/projectEnd/projectIndex/appSettings'
})
},
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()
}
})
},
// APP直接调用 uni.scanCode 接口
scanCodeAPP() {
uni.scanCode({
scanType: ['qrCode'],
success: function(res) {
console.log('扫一扫得到的数据:' + res.result)
// uni.navigateTo({
// url: '../scan/saoSao?data=' + res.result
// })
if(res.result.includes('http://')) {
uni.showToast({
icon: 'none',
title: '请使用微信扫一扫打开!'
})
return
}
uni.navigateTo({
url: `${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)
// }
// })
}
})
},
// 获取文件地址函数
getObjectURL(file) {
var url = null
if (window.createObjectURL !== undefined) { // basic
url = window.createObjectURL(file)
} else if (window.URL !== undefined) { // mozilla(firefox)
url = window.URL.createObjectURL(file)
} else if (window.webkitURL !== undefined) { // webkit or chrome
url = window.webkitURL.createObjectURL(file)
}
return url
},
// H5通过拉起相机拍照来识别二维码
scanCodeH5() {
uni.chooseImage({
count: 1,
success: imgRes => {
qrcodeMy.decode(this.getObjectURL(imgRes.tempFiles[0]))
qrcodeMy.callback = (codeRes) => {
if (codeRes.indexOf('error') >= 0) {
// 二维码识别失败
// this.qrCodeRes = '不合法二维码:' + codeRes
uni.showToast({
icon: 'error',
title: '识别失败!'
})
} else {
// 二维码识别成功
// let r = decodeStr(codeRes)
console.log(codeRes);
// this.qrCodeRes = r
uni.navigateTo({
url: `${codeRes}`
})
}
}
}
})
},
onClickToSao() {
// #ifdef APP-PLUS
this.scanCodeAPP()
// #endif
// #ifdef H5
this.scanCodeH5()
// #endif
},
getAllModule(arr) {
var that = this
this.sendRequest({
url: 'xmgl/baseModule/queryAppUserModuleList',
data: {
projectSn: this.searchsn,
},
method: 'GET',
success(res) {
console.log(res.result)
that.list = res.result;
}
})
}
},
computed: {
getTimeWeek() {
let timeDate = new Date()
let mounth = timeDate.getMonth() + 1
let day = timeDate.getDate()
let week = timeDate.getDay()
let weekArr = ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六']
return `${mounth}${day}${weekArr[week]}`
},
listUp() {
const newList = this.list;
let newArr = [] //首先创建一个新的空数组。用来存放分割好的数组
for (let i = 0; i < newList.length;) { //注意这里与for循环不太一样的是没有i++
newArr.push(newList.slice(i, i += 10));
}
return newArr
}
}
}
</script>
<style lang="scss" scoped>
.scroll_view_main {
padding-bottom: 100rpx;
}
.module_home {
border-radius: 30rpx 30rpx 0 0;
background-color: white;
padding: 30rpx;
}
.module_workspace {
padding: 30rpx;
.workspace_box_bottom {
padding: 30rpx 10rpx;
background-color: white;
margin-top: 30rpx;
>view:first-child {
display: flex;
align-items: center;
justify-content: space-between;
>view:first-child {
display: flex;
align-items: center;
>image {
width: 38rpx;
height: 38rpx;
}
>view {
color: #171717;
font-size: 28rpx;
margin-left: 10rpx;
}
}
>view:last-child {
padding: 10rpx 30rpx;
border-radius: 26rpx;
border: 2rpx solid #2F8FF3;
color: #2D8EF3;
}
}
}
.workspace_box_top {
display: flex;
justify-content: space-between;
.workspace_box_top_right {
// width: 336rpx;
width: 49%;
height: 264rpx;
background-color: white;
padding: 30rpx 12rpx;
border-radius: 16rpx;
display: flex;
flex-direction: column;
justify-content: space-between;
>view {
width: 100%;
// width: 314rpx;
// height: 90rpx;
height: 64rpx;
color: white;
border-radius: 16rpx;
display: flex;
align-items: center;
justify-content: space-between;
font-size: 26rpx;
padding: 0 30rpx;
>image {
width: 34rpx;
height: 34rpx;
}
>view:last-child {
font-size: 38rpx;
}
}
>view:nth-child(1) {
background-color: #2A45F9;
}
>view:nth-child(2) {
background-color: #2788FD;
}
>view:nth-child(3) {
background-color: #74B4FC;
}
}
.workspace_box_top_left {
// width: 336rpx;
width: 100%;
height: 264rpx;
background-color: white;
padding: 30rpx 20rpx;
border-radius: 16rpx;
>view:first-child {
display: flex;
align-items: center;
>image {
width: 30rpx;
height: 34rpx;
}
>view {
color: #171717;
font-size: 28rpx;
margin-left: 10rpx;
}
}
>view:last-child {
display: flex;
justify-content: space-between;
align-items: center;
>view {
width: 32%;
// width: 142rpx;
height: 124rpx;
color: white;
border-radius: 16rpx;
margin-top: 40rpx;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
}
>view:first-child {
background-color: #FC9C45;
}
>view:nth-child(2) {
background-color: #4388FD;
}
>view:last-child {
background-color: #59C9CA;
}
}
}
}
}
.login_main {
position: relative;
.message_title {
width: calc(100% - 40rpx);
margin: 0 20rpx;
height: 96rpx;
padding: 20rpx;
background: #FFFFFF;
box-shadow: 0 8rpx 8rpx 0 rgba(0, 126, 255, 0.25);
border-radius: 16rpx;
position: absolute;
top: -96rpx;
display: flex;
justify-content: space-between;
align-items: center;
.message_text {
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
margin-left: 20rpx;
color: #2D8EF3;
}
>image {
width: 144rpx;
height: 56rpx;
}
.arrowright {
font-size: 44rpx !important;
color: #359EFF !important;
}
}
}
.all_title {
display: flex;
// justify-content: center;
align-items: center;
justify-content: space-between;
.all_title_left {
display: flex;
// justify-content: center;
align-items: center;
>image {
width: 30rpx;
height: 30rpx;
}
>view {
margin-left: 10rpx;
font-size: 28rpx;
}
}
.all_title_right {
display: flex;
// justify-content: center;
align-items: center;
.tune {
font-size: 44rpx !important;
}
>view:first-child {
margin-right: 10rpx;
font-size: 28rpx;
border-radius: 26rpx;
border: 2rpx solid #2F8FF3;
color: #2F8FF3;
padding: 8rpx 30rpx;
}
}
>image {
width: 30rpx;
height: 30rpx;
}
>view {
margin-left: 10rpx;
font-size: 28rpx;
}
}
.moudleItem_all {
padding: 32rpx;
// box-shadow: 0px 8rpx 32rpx 0px rgba(212, 220, 236, 0.59);
background-color: white;
border-radius: 0 0 16rpx 16rpx;
.moudleBox {
margin-top: 20rpx;
.moudleItem {
width: 20%;
.inner {
border: none;
padding: 12rpx 0;
}
}
}
.swiper {
height: 388rpx !important;
}
:deep( uni-swiper .uni-swiper-dots-horizontal ){
bottom: 2rpx !important;
}
:deep( uni-swiper .uni-swiper-dot-active ){
background-color: #2B8DF3;
}
}
.header_bg {
width: 100vw;
height: 478rpx;
background-image: url(@/static/bthgIcon/prjectIndex_bg1.png);
background-repeat: no-repeat;
background-size: 100% 100%;
// background: linear-gradient(180deg, #2B8DF3 0%, #F4F5FD 100%);
// position: absolute;
// top: 0;
position: relative;
.login_logo {
width: 100%;
position: relative;
// top: 36rpx;
left: 50%;
transform: translateX(-50%);
text-align: center;
padding-top: 88rpx;
.logo_box {
display: flex;
align-items: center;
justify-content: center;
font-size: 40rpx;
color: #FFFFFF;
>image {
width: 72rpx;
height: 48rpx;
}
}
>view:last-child {
font-family: YouSheBiaoTiHei, YouSheBiaoTiHei;
font-size: 38rpx;
color: #FFFFFF;
font-weight: bold;
}
>image {
width: 266rpx;
height: 62rpx;
margin-top: 20rpx;
}
}
.userBox {
// position: absolute;
// top: 50%;
// transform: translateY(-50%);
width: 100%;
padding: 0 62rpx;
display: flex;
justify-content: space-between;
margin-top: 40rpx;
.userBox_left {
display: flex;
.userBox_left_image {
width: 100rpx !important;
height: 100rpx !important;
border-radius: 50%;
margin-right: 20rpx;
.image_error {
width: 100%;
height: 100%;
}
}
>view:last-child {
display: flex;
flex-direction: column;
justify-content: space-around;
color: white;
font-size: 30rpx;
margin-left: 24rpx;
>text:last-child {
font-size: 24rpx;
}
}
}
.userBox_right {
display: flex;
flex-direction: column;
color: white;
>view:first-child {
font-size: 54rpx;
}
>image {
width: 88rpx;
height: 88rpx;
}
}
}
}
.qrcodeItem {
padding: 40rpx 30rpx;
width: 480rpx;
background-color: #fff;
border-radius: 8rpx;
.title {
text-align: center;
margin-bottom: 12rpx;
}
}
.topBoxContent {
color: white;
font-size: 28rpx;
// background: linear-gradient(360deg, #A59FFF 0%, #3258FF 100%);
height: 520rpx;
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: 300rpx;
height: 300rpx;
position: relative;
text-align: center;
margin: 0px auto 50rpx;
.title1 {
padding-top: 48rpx;
}
.title2 {
font-size: 66rpx;
margin: 12rpx 0;
.unit {
font-size: 40rpx;
}
}
.status {
width: 104rpx;
height: 104rpx;
background: #8fda5c;
border-radius: 24rpx;
display: inline-block;
line-height: 50rpx;
}
.redStatus {
background: #ea6868;
}
.progressLine {
position: absolute;
left: 0;
top: 0;
width: 100%;
height: 100%;
}
}
.weatherBox {
position: absolute;
top: 30rpx;
right: 30rpx;
text-align: center;
.top {
font-size: 54rpx;
display: flex;
align-items: center;
}
.weatherIcon {
width: 72rpx;
height: 72rpx;
}
.bottom {
font-size: 20rpx;
}
}
.projectIndexPage {
:deep( .headerBox ){
background-color: transparent;
border-bottom: none;
}
}
.progressBox {
width: 300rpx;
height: 300rpx;
position: relative;
text-align: center;
margin: 0px auto 48rpx;
.title1 {
padding-top: 48rpx;
}
.title2 {
font-size: 66rpx;
margin: 12rpx 0;
.unit {
font-size: 40rpx;
}
}
.status {
width: 104rpx;
height: 50rpx;
background: #8fda5c;
border-radius: 24rpx;
display: inline-block;
line-height: 50rpx;
}
.redStatus {
background: #ea6868;
}
.progressLine {
position: absolute;
left: 0;
top: 0;
width: 100%;
height: 100%;
}
}
.weatherBox {
position: absolute;
top: 20rpx;
right: 30rpx;
text-align: center;
.top {
font-size: 54rpx;
display: flex;
align-items: center;
}
.weatherIcon {
width: 72rpx;
height: 72rpx;
}
.bottom {
font-size: 20rpx;
}
}
.moudleBox2 {
opacity: 0.6;
}
.moudleBox {
overflow: hidden;
// margin: 40rpx 11px;
}
.moudleItem {
float: left;
width: 33.33%;
font-size: 26rpx;
text-align: center;
margin-bottom: 20rpx;
.inner {
border: 1px solid rgba(18, 41, 75, 0.06);
padding: 30rpx 0 30rpx;
margin: 0 10rpx;
border-radius: 10rpx;
}
.img {
// width: 80rpx;
// height: 80rpx;
// width: 64rpx;
// height: 64rpx;
width: 88rpx;
height: 88rpx;
color: red;
}
.desc {
margin-top: 12rpx;
color: rgba(38, 45, 71, 0.77);
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
}
.moudleTitle {
color: rgba(42, 43, 91, 0.5);
font-size: 26rpx;
margin: 0px 0 30rpx;
text-align: center;
}
.smallHeight {
// padding-bottom: 63px;
height: calc(100% - 120rpx);
background-color: #F3F5F7;
}
.moudleContent {
box-shadow: 0px 8rpx 32rpx 0px rgba(212, 220, 236, 0.59);
border-radius: 16rpx;
padding: 30rpx;
// margin: 110rpx 30rpx 30rpx;
position: relative;
z-index: 2;
}
.projectIndexBG {
width: 100%;
height: 714rpx !important;
position: absolute;
top: 0;
left: 0;
}
</style>