123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580 |
- import $ from '../../utils/Tool';
- import router from '../../utils/router';
- import {getSetting,getLocation,checkHasLogined,authlogin} from '../../utils/auth';
- const AUTH = require('../../utils/auth');
- import icons from "../../utils/icon";
- import Toast from '../../vant-weapp/dist/toast/toast';
- import {
- getopenId,
- userCheck,
- getSpaceAdjustList,
- spaceTop,
- getWeather,
- deleteSpaceAdjust,
- queryUseranswer,
- getCurrentSeason,
- powerCheck,
- openSpace,
- } from "../../requests/api";
- Page({
- data: {
- surveyShow:false, //是否显示调查问卷
- lottieShow:true, //是否显示lottie组件
- meauList: [{
- id: 1,
- title: '扫码调节',
- des: '扫描空间二维码',
- imgSrc: "../../static/images/qrcode.png"
- },
- {
- id: 2,
- title: '空间列表',
- des: '查找更多空间',
- imgSrc: "../../static/images/adjust.png"
- }
- ],
- envNamelist:$.store.get("envNamelist"),
- imgbaseUrl:$.store.get("imgbaseUrl"),
- picInitUrl:$.store.get("picInitUrl"),
- latitude:null,
- longitude:null,
- noDate:true,
- statusList: icons.statusList,
- spacestatusList:icons.spacestatusList ,
- cardList:[],
- cardCurrent:null,
- tenantName: $.store.get('tenantName'),
- tenants: $.store.get('tenants'),
- logined:$.storage.get('logined'),
- havePower:{result: "fail",message: "未定位到您的位置"},
- temperatureNum:'--',
- guideUser:false,
- CustomBar:$.store.get('CustomBar')
- },
- toDetail(e){
- if(!e.currentTarget.dataset.istemp){
- router.push("detail",e.currentTarget.dataset)
- }else{
- router.push("detail",{name:"温度",
- localname:"温度",
- param:"temperature",
- funcid:"Tdb",
- spaceid:e.currentTarget.dataset.spaceid,
- projectid:e.currentTarget.dataset.projectid})
- }
- },
- // 关闭问卷
- surveyClose(value){
- this.setData({surveyShow:false,lottieShow:true});
- if(value.detail.good){
- wx.showToast({
- title:"感谢您的反馈",
- image:"../../static/images/bixin.png",
- duration: 2000
- })
- }
- },
- // 检查是否需要填写问卷
- async userAnswer(){
- let day = new Date();
- let year = day.getFullYear();
- let month = day.getMonth() + 1;
- month=month<10?('0'+month):month;
- let today = day.getDate();
- today=today<10?('0'+today):today;
- let seasonType="";
- const dataSeason={
- projectId:$.store.get('projectId')||$.storage.get('projectId'),
- date:`${year}${month}${today}`
- }
- await getCurrentSeason(dataSeason).then(res=>{
- if(res.result=="success"){
- seasonType= res.data;
- }
- })
- let projectId= $.store.get('projectId');
- let tenantId= $.store.get('tenantId');
- let data={
- "criteria":{
- "userId": $.store.get('userId'),
- "projectId": projectId,
- "tenantId": tenantId,
- "startTime": {
- "$ge": `${year}${month}${today}`
- },
- "endTime": {
- "$le":`${year}${month}${today}`
- },
- "seasonType": seasonType
- }
- }
- queryUseranswer(data).then(res=>{
- (!res.count&&!res.content)&&this.setData({surveyShow:true,lottieShow:false})
- })
- },
- // 检查是否过引导
- checkGuide(value){
- if(!this.data.tenantName){
- return
- }
- (!$.storage.get('guideUser')&&!value&&!$.storage.get('nextRemind'))&&this.userAnswer();
- !$.storage.get('guideUser')&&this.getPageheight();
- this.setData({'guideUser':!$.storage.get('guideUser')})
- },
- // 步骤引导函数
- nextStep(e){
- $.storage.set('guideUser',true);
- this.setData({'guideUser':false});
- },
- // 获取容器高度
- getPageheight(){
- let that =this;
- wx.createSelectorQuery().select('#j_page').boundingClientRect(function(rect){
- that.setData({'pageHight':rect.height})
- }).exec()
- },
- swipeClick(e){
- let that = this;
- let {spaceid} = e.currentTarget.dataset;
- wx.showModal({
- title: '删除',
- content: '是否删除该空间',
- success (res) {
- if (res.confirm) {
- let data={
- "projectId": $.store.get('projectId'),
- "userId":$.store.get('userId'),
- spaceId:spaceid
- }
- deleteSpaceAdjust(data).then(res=>{
- that.getData()
- })
- }
- }
- })
- },
- // 置顶操作
- tapItem(e){
- let {id,top,projectId} = e.currentTarget.dataset.spaceid;
- let spaceIndex = e.currentTarget.dataset.index;
- let data = {
- "projectId":projectId,
- "spaceId":id,
- "userId":this.data.userId,
- "top":top?0:1
- }
- spaceTop(data).then(async res=>{
- if(res.result=="success"){
- await this.getData();
- wx.pageScrollTo({
- scrollTop:0,
- duration:300
- })
- }
- })
- },
- settingLocation(){
- return new Promise((relove,reject)=>{
- wx.showModal({
- title: '是否授权当前位置',
- content: '需要获取您的地理位置,请确认授权',
- confirmColor: '#f16765',
- success: res => {
- relove(res)
- },
- fail:err=>{
- reject(err)
- }
- })
- })
- },
- async isGetSetting(value) {
- let {authSetting} = await getSetting();
- if(authSetting['scope.userLocation']){
- await this.getUserLocation();
- }else{
- await this.settingLocation().then(res=>{
- if (res.confirm) {
- wx.openSetting({
- success: async data => {
- await this.getUserLocation();
- value&&this.remoteCheck();
- },
- })
- } else {
- this.setData({havePower: {result: "fail",message: "未定位到您的位置"}})
- }
- })
- }
- },
- // 获取位置信息
- async getUserLocation(cb) {
- var that = this;
- let {latitude,longitude} = await getLocation();
- this.setData({latitude,longitude});
- },
- // 检查是否注册 是否远程调节
- async remoteCheck() {
- // if($.storage.get('wxqcode')){
- // return
- // }
- var that=this;
- await this.isGetSetting('cb').then(async res=>{
- if(this.data.longitude){
- await userCheck({longitude:that.data.longitude,latitude:that.data.latitude}).then(async res=>{
- if (res.result === "fail") { // && !that.data.formAuth
- $.storage.set("logined",false);
- this.setData({logined:false});
- router.push('auth');
- } else {
- await that.getTenant(res);
- // 第一次进入获取数据
- console.log($.storage.get('wxqcode'),"$.storage.get('wxqcode')")
- !$.storage.get('wxqcode')&&that.getData();
- if($.storage.get('wxqcode')&&$.storage.get('logined')){
- this.checkCode($.storage.get('wxqcode'));
- }
- }
- });
- }
- });
- },
- getTenant(res) {
- // 存入全局
- $.store.set('userInfo',res.content);
- return new Promise(async (resolve,reject)=>{
- !$.store.get('openId')&&$.store.set("openId",res.content.openId);
- !$.store.get('userId')&&$.store.set("userId",res.content.id);
- $.store.set("tenants",res.content.tenants);
- // 检查定位哪个租户 优先定位 再根据最近使用
- let currentTenant = await this.checkTenant(res.content.tenants);
- $.store.set("projectId",currentTenant.projectId);
- $.store.set("tenantId",currentTenant.tenantId);
- $.store.set("tenantName",currentTenant.tenantName);
- // 存入Storage
- !$.store.get('logined')&&$.storage.set('logined', true);
- this.setData({logined:true});
- !$.storage.get('openId')&&$.storage.set('openId', res.content.openId);
- !$.storage.get('openId')&&$.storage.set('userId', res.content.id);
- $.storage.set('projectId', currentTenant.projectId);
- $.storage.set('tenantId', currentTenant.tenantId);
- $.storage.set('tenantName',currentTenant.tenantName);
- this.setData({
- projectId: $.store.get('projectId'),
- tenantId: $.store.get('tenantId'),
- tenantName: $.store.get('tenantName'),
- tenants: $.store.get('tenants'),
- userId: $.store.get('userId')
- });
- // if (this.data.wxqcode) {
- // this.checkCode(this.data.wxqcode);
- // this.setData({
- // formWxcode: false
- // });
- // }
- resolve();
- })
- },
- // 查询定位租户
- checkTenant(value = []) {
- // 首先默认选中的是定位的租户,如果小程序定位的位置就是要调节的租户对应的空间(定位距离租户200m以内),直接调节;
- return new Promise((resolve, reject)=>{
- const currntProjectId=$.storage.get('projectId');
- const currntProjecttenantId=$.storage.get('tenantId');
- const currntProjecttenantName=$.storage.get('tenantName');
- let current = {};
- if($.store.get('changeTenantId')){
- value.length&&value.forEach(item=>{
- if(item.tenantId === currntProjecttenantId){
- current.projectId = item.projectId;
- current.tenantId = item.tenantId;
- current.tenantName = item.tenantName;
- }
- })
- $.store.set('changeTenantId',false)
- }else if($.store.get('goHome')){
- $.store.set('goHome',false)
- current.projectId =$.store.get("projectId");
- current.tenantId = $.store.get("tenantId");
- current.tenantName =$.store.get("tenantName");
- }else if(value.length){
- // 定位到的租户id
- var currentTens=[];
- // 定位到的租户详情 可能多个
- var currentTensArr=[];
- value.forEach(item => {
- if(item.current){
- currentTens.push(item.tenantId);
- currentTensArr.push(item);
- }
- })
- if(currentTens.length){
- // 最近使用不包含定位 且没有手动切换项目
- if(!currentTens.includes(currntProjecttenantId)&&!this.data.formList){
- //定位改变 但不是通过调节改变 切换改变
- current = currentTensArr[0];
- }else if(currentTens.includes(currntProjecttenantId)){
- currentTensArr.forEach(item=>{
- if(item.tenantId===currntProjecttenantId){
- current.projectId = item.projectId;
- current.tenantId = item.tenantId;
- current.tenantName = item.tenantName;
- }
- })
- }
- }else{
- if(currntProjecttenantId!=''){
- current.projectId = currntProjectId;
- current.tenantId = currntProjecttenantId;
- current.tenantName = currntProjecttenantName;
- }else{
- current = value[0];
- }
- }
- }else{
- current.projectId = currntProjectId;
- current.tenantId = currntProjecttenantId;
- current.tenantName = currntProjecttenantName;
- }
- resolve(current)
- })
- },
- // 个人中心
- gotoUser(){
- router.push('usercenter')
- },
- /**
- * 获取页面服务端数据
- */
- async getData() {
- // $.loading()
- let userId = $.store.get('userId')||$.storage.get('userId');
- if(!userId){
- return;
- }
- wx.showLoading({
- title:"加载中"
- })
- const data = {
- "criteria": {
- "userId": userId,
- "projectId": $.store.get('projectId')||$.storage.get('projectId'),
- "tenantId": $.store.get('tenantId')||$.storage.get('tenantId')
- }
- }
- // let res = await queryRotation(data);
- let res = await getSpaceAdjustList(data);
- if(res.count){
- res.content.forEach(item=>{
- (item.humidity||item.humidity==0)&&(item.humiditylevel = this.checkLevel(item.humidity,"humidity"));
- (item.co2||item.co2==0)&&(item.co2level = this.checkLevel(item.co2,"co2"));
- (item.pm25||item.pm25==0)&&(item.pm25level = this.checkLevel(item.pm25,"pm25"));
- (item.hcho||item.hcho==0)&&(item.hcholevel = this.checkLevel(item.hcho,"hcho"));
- if(typeof item.isPassengerPass==="undefined"){
- item.isPassengerPassShow=false;
- }else{
- item.isPassengerPassShow=true;
- item.isPassengerPass=item.isPassengerPass?'有人':'无人'
- }
- })
- this.setData({cardList:res.content})
- }else{
- this.setData({noDate:true,cardList:[]})
- }
- wx.hideLoading()
- // $.hideLoading()
- },
- checkLevel(value,name){
- let objList={
- humidity:{
- range:[30,70],
- text:["干燥","适宜","湿润"]
- },
- co2:{
- range:[800,1500],
- text:["适宜","偏高","超标"]
- },
- pm25:{
- range:[35,75],
- text:["优","良","差"]
- },
- hcho:{
- range:[0.08,0.1],
- text:["适宜","偏高","超标"]
- }
- };
- let sortArr=[value,...objList[name].range].sort((a,b)=>{return a-b});
- let level=sortArr.findIndex(item=>item===value);
- let levelTxt = objList[name].text[level];
- return {level,levelTxt}
- },
- /**
- * 去立即调节页面
- */
- goToadjust(e){
- let index = e.target.dataset.index;
- let data =this.data.cardList[index];
- data.outLine&&(data.outLine="");
- router.push("adjust",data);
- },
- meauClick(e){
- if(e.currentTarget.dataset.index===1){
- this.getScancode();
- }else{
- this.gotoSpacelist()
- }
- },
- // 获取扫码结果
- getScancode: function () {
- // if (!$.storage.get('logined')) {
- // router.push('auth');
- // return
- // }
- // 只允许从相机扫码
- wx.scanCode({
- onlyFromCamera: true,
- complete: (res) => {
- if (res.errMsg === '"scanCode:fail cancel"') {
- Toast.fail('已取消扫描');
- }
- },
- success: (res) => {
- this.checkCode(res.result);
- },
- fail: (res) => {
- Toast.fail('未扫描到结果');
- }
- })
- },
- gotoSpacelist(){
- router.push('spacelist')
- },
- // 检查二维码
- async checkCode(value) {
- console.log(value,381)
- let scanArr = value.split("?");
- let domain = scanArr[0];
- let qualifiedUrl=["http://meos.sagacloud.cn/scan",'https://duoduoenv.sagacloud.cn/scan']
- if (qualifiedUrl.includes(domain)) {
- let md = scanArr[1].split('=') || [];
- let md1 = md[1];
- router.push('adjust',{md1})
- } else {
- Toast.fail('无效的二维码');
- }
- },
- async userLogin(){
- let that =this;
- let isLogined = await checkHasLogined();
- if (!isLogined) {
- await authlogin().then(async result => {
- await getopenId(result.code).then(async res => {
- $.storage.set('openId',res.openId);
- $.store.set('openId',res.openId);
- await this.remoteCheck();
- });
- });
- } else {
- await this.remoteCheck();
- }
- },
- chooseTenant(e){
- if($.store.get('tenants').length<=1){
- return
- }
- router.push('projectlist')
- },
- async inItUserdate(){
- // 用户登录
- await this.userLogin();
- },
- /**
- * 生命周期函数--监听页面加载
- */
- async onLoad(options) {
- // 是否从微信直接进来
- if (options.q !== undefined) {
- let q = decodeURIComponent(options.q);
- // let q="https://duoduoenv.sagacloud.cn/scan?key=Sp110108025988e09ed4cd8c45b5a496f18622ab81ca";
- $.storage.set('wxqcode', q);
- // console.log($.storage.get('wxqcode'),"123")
- }
- $.storage.set('nextRemind',false);
- await this.inItUserdate();
- console.log($.storage.get('wxqcode'),$.storage.get('logined'),"449")
- // if($.storage.get('wxqcode')&&$.storage.get('logined')){
- // this.checkCode($.storage.get('wxqcode'));
- // }
- this.getWeatherNum();
- this.checkGuide(options.q);
- // 加载数据
- // this.getData();
- },
- getWeatherNum(){
- let data={
- projectId:$.store.get('projectId')
- }
- getWeather(data).then(res=>{
- if(res.content){
- this.setData({temperatureNum:res.content.temperature})
- }
- })
- },
- /**
- * 生命周期函数--监听页面显示
- */
- async onShow() {
- // await this.inItUserdate();
- if($.storage.get("tenantId")&&!$.store.get('changeTenantId')&&!this.data.formList){
- this.getData();
- }
- if(this.data.formList){
- this.setData({
- tenantName:$.store.get('tenantName'),
- tenantId:$.store.get('tenantId'),
- projectId:$.store.get('projectId'),
- formList:false
- },()=>{
- this.getData();
- this.getWeatherNum();
- this.userAnswer();
- })
- }
- if($.store.get('changeTenantId')){
- await this.remoteCheck();
- this.getWeatherNum();
- this.checkGuide();
- }
- },
- /**
- * 页面相关事件处理函数--监听用户下拉动作
- */
- async onPullDownRefresh() {
- $.store.set('goHome',true);
- await this.remoteCheck()
- wx.stopPullDownRefresh()
- },
- /**
- * 页面上拉触底事件的处理函数
- */
- onReachBottom: function () {
- },
- /**
- * 用户点击右上角分享
- */
- onShareAppMessage: function () {
- }
- })
|