Browse Source

Merge branch 'master' of http://39.106.8.246:3003/sagacloud/sagacloud-sagacare-weChat

anxiaoxia 1 year ago
parent
commit
51dcedd00b

+ 35 - 1
src/api/user.js

@@ -1,4 +1,5 @@
 import $http from '@/common/request.js';
+import config from '@/config';
 function getCompmayUsers() {
   return $http({
     url: `/user/companyUsers`,
@@ -6,6 +7,7 @@ function getCompmayUsers() {
   });
 }
 
+// 获取用户信息
 function getUserInfo(params) {
   return $http({
     url: '/user/info',
@@ -23,11 +25,43 @@ function setWxAuthUserInfo(params) {
   // return Promise.resolve()
 }
 
+function login(params) {
+  return $http({
+    url: `${config.duoduoenvService}userNew/wechat/login`,
+    method: 'POST',
+    data: JSON.stringify(params)
+  })
+}
+
+// duoduo-service/duoduoenv-service/userNew/wechat/register
+// 注册
+function register(params) {
+  return $http({
+    url: `${config.duoduoenvService}userNew/wechat/register`,
+    method: 'POST',
+    data: JSON.stringify(params)
+  })
+}
+
+// 根据手机号获取租户数据
+function getCompanyByPhone(params) {
+  return $http({
+    url: `${config.duoduoenvService}userNew/company?phone=${params.phone}`,
+    method: 'get'
+  })
+
+
+}
+
+
+
+
 
 
 
 
 export {
   getCompmayUsers,
-  getUserInfo
+  getUserInfo,
+  login
 }

+ 8 - 7
src/app.wpy

@@ -10,11 +10,11 @@
 </style>
 
 <script>
-import wepy from '@wepy/core'
-import eventHub from './common/eventHub'
-import vuex from '@wepy/x'
+import wepy from '@wepy/core';
+import eventHub from './common/eventHub';
+import vuex from '@wepy/x';
 
-wepy.use(vuex)
+wepy.use(vuex);
 
 wepy.app({
   hooks: {
@@ -22,7 +22,7 @@ wepy.app({
     // 同时存在 Page hook 和 App hook 时,优先执行 Page hook,返回值再交由 App hook 处
     'before-setData': function(dirty) {
       //   console.log('setData dirty: ', dirty);
-      return dirty
+      return dirty;
     }
   },
   globalData: {
@@ -38,12 +38,13 @@ wepy.app({
   },
 
   methods: {}
-})
+});
 </script>
 <config>
 {
     pages: [
-      'pages/index',
+   
+      'pages/auth/index',
       'pages/bindTenant/index',
     ],
     "subpackages":[

+ 4 - 1
src/components/common/page-top-bar.wpy

@@ -60,7 +60,10 @@ wepy.component({
   props: {
     title: String,
     iconType: String,
-    icon: String,
+    icon: {
+      type: String,
+      default: config.h5StaticPath + '/page-top-bar/return-icon.svg'
+    },
     // white
     iconBg: String,
     bgColor: {

+ 103 - 0
src/packagesEnv/pages/intelligentControl/components/floor/floor copy.wpy

@@ -0,0 +1,103 @@
+<style lang="less">
+.component-floor {
+  border-radius: 16rpx;
+  background: rgba(255, 255, 255, 0.9);
+  .floor-wrapper {
+    display: flex;
+    flex-direction: column-reverse;
+  }
+}
+.component-floor.fold .floor-item {
+  background: none;
+}
+
+.component-floor .floor-item {
+  width: 96rpx;
+  height: 96rpx;
+
+  font-weight: bold;
+  font-size: 36rpx;
+  line-height: 96rpx;
+  color: rgba(13, 13, 61, 0.86);
+  text-align: center;
+}
+
+.floor-item:first-child {
+  border-radius: 16rpx 16rpx 0 0;
+}
+.floor-item.selected {
+  background: #fbf0e0;
+}
+.floor-item:last-child {
+  border-radius: 0 0 8px 8px;
+}
+.icon-arrow {
+  width: 96rpx;
+  height: 96rpx;
+  display: flex;
+  flex-direction: column;
+  justify-content: center;
+  align-items: center;
+}
+.icon-arrow .icon {
+  width: 20rpx;
+  height: 24rpx;
+}
+</style>
+
+<template>
+  <!-- && selectedFloor == item.id -->
+  <div class="{{'component-floor '+status}}">
+    <div class="floor-wrapper">
+      <div
+        class="floor-item"
+        :class="{'selected' :selectedFloor == item.id}"
+        :key="index+'map'"
+        v-for="(item,index) in floors"
+        v-on:click.stop="changeFloor(item.id)"
+        v-if="status=='expand' || status=='fold'"
+      >{{item.localName}}</div>
+    </div>
+    <div class="icon-arrow" wx:if="{{status=='expand'}}">
+      <image
+        mode="scaleToFill"
+        class="icon"
+        src="{{h5StaticPath+ 'icon-floor-arrow.svg'}}"
+        v-on:click.stop="flodFloor"
+      />
+  </div>
+  </div>
+</template>
+
+<script>
+import wepy from '@wepy/core';
+import config from '@/config';
+
+let h5StaticPath = config.h5StaticPath + '/page-intelligent-control/';
+
+wepy.component({
+  data: {
+    h5StaticPath
+  },
+  props: {
+    floors: Array,
+    status: 'fold',
+    selectedFloor: String //选中的floor id
+  },
+  created() {},
+  ready() {},
+  didUpdate() {},
+  didUnmount() {},
+  methods: {
+    changeFloor(id) {
+      if (id !== this.selectedFloor) {
+        this.$emit('component-floor-change', id);
+      }
+      this.$emit('component-floor-click');
+    },
+    flodFloor() {
+      this.$emit('component-floor-fold');
+    }
+  }
+});
+</script>

+ 109 - 36
src/packagesEnv/pages/intelligentControl/components/floor/floor.wpy

@@ -2,68 +2,138 @@
 .component-floor {
   border-radius: 16rpx;
   background: rgba(255, 255, 255, 0.9);
-  .floor-wrapper{
+  .component-wrapper {
     display: flex;
+    justify-content: space-between;
+
+    .building-wrapper {
+      padding: 16rpx;
+      border-right: 1px solid #c4c9cf4d;
+      .building-item {
+        max-width: 240rpx;
+        height: 72rpx;
+        line-height: 72rpx;
+        font-size: 32rpx;
+        font-weight: 400;
+        color: #626c78;
+        text-align: center;
+      }
+    }
+  }
+  .floor-wrapper {
+    display: flex;
+    padding: 16rpx;
     flex-direction: column-reverse;
   }
-  
 }
 .component-floor.fold .floor-item {
   background: none;
 }
+.component-floor.fold .building-item {
+  background: none;
+}
 
-.component-floor .floor-item {
-  width: 96rpx;
-  height: 96rpx;
+.component-floor.expand {
+  .component-wrapper {
+    max-height: 800rpx;
+  }
+}
 
-  font-weight: bold;
-  font-size: 36rpx;
-  line-height: 96rpx;
-  color: rgba(13, 13, 61, 0.86);
+.component-floor .floor-item {
+  width: 112rpx;
+  height: 72rpx;
+  line-height: 72rpx;
+  font-size: 32rpx;
+  font-weight: 400;
+  color: #626c78;
   text-align: center;
 }
+.component-floor.building .floor-item {
+  width: 224rpx;
+}
 
 .floor-item:first-child {
   border-radius: 16rpx 16rpx 0 0;
 }
-.floor-item.selected {
-  background: #fbf0e0;
+.floor-item.selected,
+.building-item.selected {
+  background: #d4faf4;
 }
+
 .floor-item:last-child {
   border-radius: 0 0 8px 8px;
 }
 .icon-arrow {
-  width: 96rpx;
-  height: 96rpx;
-  display: flex;
-  flex-direction: column;
-  justify-content: center;
-  align-items: center;
+  text-align: right;
+  .icon-arrow-box {
+    box-sizing: border-box;
+    padding: 16rpx;
+    display: inline-block;
+    // width: 152rpx;
+    height: 88rpx;
+    label {
+      display: inline-block;
+      vertical-align: middle;
+      font-family: PingFang SC;
+      font-size: 32rpx;
+      font-weight: 500;
+      letter-spacing: 0px;
+    }
+    image {
+      display: inline-block;
+      vertical-align: middle;
+      margin-left: 20rpx;
+      width: 24rpx;
+      height: 24rpx;
+    }
+  }
 }
 .icon-arrow .icon {
-  width: 20rpx;
+  width: 24rpx;
   height: 24rpx;
 }
 </style>
 
 <template>
+  <!-- && selectedFloor == item.id -->
   <div class="{{'component-floor '+status}}">
-    <div class="floor-wrapper">
-      <div
-        class="floor-item"
-        :class="{'selected' :selectedFloor == item.floorId}"
-        v-for="(item) in floors"
-        v-on:click.stop="changeFloor(item.floorId)"
-        v-if="status=='expand' || (status=='fold' && selectedFloor == item.floorId)"
-      >{{item.text}}</div>
+    <div class="component-wrapper">
+      <div class="building-wrapper">
+      <div class="building-item" 
+      :key="index+'building-map'"
+      :class="{'selected' :selectedBuilding == item.id}"
+      v-if="status=='expand' || (status=='fold' && selectedBuilding == item.id)"
+      v-for="(item,index) in buildings">
+      {{item.localName}}
+      </div>
+    </div>
+
+      <div class="floor-wrapper">
+        <div
+          class="floor-item"
+          :class="{'selected' :selectedFloor == item.id}"
+          :key="index+'map'"
+          v-for="(item,index) in floors"
+          v-on:click.stop="changeFloor(item.id)"
+          v-if="status=='expand' || (status=='fold' && selectedFloor == item.id)"
+        >
+        {{item.localName}}
+      </div>
+
+      </div>
     </div>
-    <div class="icon-arrow" wx:if="{{status=='expand'}}">
-    <image
-      mode="scaleToFill"
-      class="icon"
-      src="{{h5StaticPath+ 'icon-floor-arrow.svg'}}"
-      v-on:click.stop="flodFloor"
-    />
+    <div class="icon-arrow" 
+         wx:if="{{status=='expand'}}">
+         <div class="icon-arrow-box">
+          <label>收起</label>
+          <image
+            mode="scaleToFill"
+            class="icon"
+            src="{{h5StaticPath+ 'icon-floor-arrow.svg'}}"
+            v-on:click.stop="flodFloor"
+          />
+         </div>
+         
   </div>
   </div>
 </template>
@@ -80,16 +150,19 @@ wepy.component({
   },
   props: {
     floors: Array,
+    buildings: Array,
     status: 'fold',
+    selectedBuilding: String, //选中的building id
     selectedFloor: String //选中的floor id
   },
   created() {},
+  ready() {},
   didUpdate() {},
   didUnmount() {},
   methods: {
-    changeFloor(floorId) {
-      if (floorId !== this.selectedFloor) {
-        this.$emit('component-floor-change', floorId);
+    changeFloor(id) {
+      if (id !== this.selectedFloor) {
+        this.$emit('component-floor-change', id);
       }
       this.$emit('component-floor-click');
     },

+ 42 - 31
src/packagesEnv/pages/intelligentControl/home2.wpy

@@ -24,9 +24,19 @@
   position: absolute;
   bottom: 36rpx;
   right: 32rpx;
+  &.fold {
+  }
+  &.building {
+  }
 }
 
+.search-btn-box {
+  display: flex;
+  justify-content: flex-end;
+}
 .page-intelligent-control .location-wrapper .search-btn {
+  // position: absolute;
+  // right: 0;
   margin-bottom: 16rpx;
   width: 96rpx;
   height: 96rpx;
@@ -266,23 +276,22 @@ movable-view {
                   :style="{top: selectArea.isAbnormity? ((selectArea['borderWidth'][0]+selectArea['borderWidth'][2])/2 - selectArea['borderWidth'][0])*mapScale +'px' : (selectArea.top*mapScale-54 + (selectArea.height*mapScale/2))+'px', left: selectArea.isAbnormity? ((selectArea['borderWidth'][1]+selectArea['borderWidth'][3])/2 - selectArea['borderWidth'][3])*mapScale +'px':  (selectArea.left*mapScale+(selectArea.width*mapScale/2)-36)+'px', transform: 'rotate('+(selectArea.rotate)+'deg)' }"
                   src="{{h5StaticPath + 'map-icon/' + selectArea.selectIcon}}"
                 />
-
           </div>
         </movable-view>
         <div class="{{'location-wrapper ' + foldStatus}}">
-          <image
+          <div class="search-btn-box">
+            <image
             v-on:click="toSearchPage"
             class="search-btn"
             src="{{h5StaticPath}}icon-search-big.svg"
-          />
-          <!-- 博锐尚格正式环境暂不显示该入口 -->
-          <location
-            v-if="isShowLocationEntrance"
-            @component-location-position="positionFun($event)"
-          ></location>
+            />
+          </div>
+          
           <floor
             status="{{floorStatus}}"
             :floors="floors"
+            :buildings="buildingData"
+            selectedBuilding="{{ selectedBuilding }}"
             selectedFloor="{{selectedFloor}}"
             @component-floor-fold="flodFloorFun"
             @component-floor-change="changeFloorFun($event)"
@@ -291,12 +300,6 @@ movable-view {
         </div>
       </movable-area>
     </div>
-    <!-- <block v-if="query.from && query.from=='officehome'">
-      <div class="office-content-abstract">
-        <div class="title">{{selectArea.title}}</div>
-        <div class="btn-switch" v-on:click="goBack">切换</div>
-      </div>
-    </block>-->
   </div>
 </template>
 
@@ -305,7 +308,6 @@ import wepy from '@wepy/core';
 import store from '@/store';
 
 import {
-  getMapInfoHttp,
   getSpaceBytoothHttp,
   getMapDetailHttp
 } from '@/packagesEnv/api/intelligentControl';
@@ -315,7 +317,11 @@ import config from '@/config';
 import { mapState } from '@wepy/x';
 import { saveCompanyConfig } from '@/service/companyConfig';
 import { getCompanyMapData } from '@/api/home';
-import { getBuildingList, getFloorList } from '@/packagesEnv/api/mapApi.js';
+import {
+  getBuildingList,
+  getFloorList,
+  getMapInfo
+} from '@/packagesEnv/api/mapApi.js';
 
 let h5StaticPath = config.h5StaticPath + '/page-intelligent-control/';
 const tarBarHeight = 96;
@@ -346,7 +352,7 @@ let touchMapEndRecord = {
 };
 let from = 'officehome';
 
-let CompanyMapData;
+let CompanyMapData = {};
 let combinedData = [];
 
 wepy.component({
@@ -362,6 +368,7 @@ wepy.component({
     selectArea: {},
     x: 0,
     y: 0,
+    selectedBuilding: '',
     selectedFloor: '',
     foldStatus: 'fold', // fold-最小化 expand-展开状态
     floorStatus: 'fold', // flod-收起楼层 expand-展开楼层选则
@@ -381,7 +388,8 @@ wepy.component({
     floors: [],
     companyId: '',
     buildingData: [],
-    buildingItem: {}
+    buildingItem: {},
+    floorItem: {}
   },
   computed: {
     ...mapState({
@@ -394,6 +402,7 @@ wepy.component({
   },
   ready() {
     // 获取地图数据
+    console.log('地图模块触发了--');
     this.init();
   },
   // 页面激活
@@ -421,12 +430,10 @@ wepy.component({
           projectId: 'Pj1101080259'
         }
       };
-      console.log(this.projectId);
       getBuildingList(params).then(res => {
-        console.log('获取常驻空间');
-        console.log(res);
         this.buildingData = res.content || [];
         this.buildingItem = this.buildingData[0];
+        this.selectedBuilding = this.buildingItem.id;
         this.getFloorList();
       });
     },
@@ -442,18 +449,28 @@ wepy.component({
       };
       getFloorList(params).then(res => {
         this.floors = res.content || [];
+        console.log('===', this.floors);
+        CompanyMapData.mapWidth = 2314;
+        this.floorItem = this.floors[0];
+        this.selectedFloor = this.floorItem.id;
+        this.getMapSize();
+        this.getPageMapInfo();
       });
     },
     /**
      * 获取地图信息
      */
-    getMapInfo() {
+    getPageMapInfo() {
       let params = {
-        projectId: '',
-        floorId: 'proxyData.floorItem.id'
+        projectId: 'Pj1101080259',
+        floorId: this.floorItem.id
       };
       getMapInfo(params)
-        .then(res => {})
+        .then(res => {
+          let data = res.data || {};
+          this.mapAreasInfo = data.spaceList || [];
+          console.log('地图数据--');
+        })
         .catch(() => {});
     },
     getMapSize() {
@@ -622,12 +639,6 @@ wepy.component({
         this.foldStatus = 'fold';
       }
     },
-    expandPanelFun() {
-      if (this.foldStatus === 'fold') {
-        this.foldStatus = 'expand';
-        this.setAreaCenter(this.selectArea);
-      }
-    },
     flodFloorFun() {
       if (this.floorStatus !== 'fold') {
         this.floorStatus = 'fold';

+ 157 - 0
src/pages/auth/index.wpy

@@ -0,0 +1,157 @@
+<style lang="less">
+.login-box {
+  padding-top: 40px;
+  .avatar-wrapper {
+    padding: 0px;
+    width: 196rpx;
+    height: 196rpx;
+    border-radius: 50%;
+    image {
+      width: 196rpx;
+      height: 196rpx;
+      border-radius: 50%;
+    }
+  }
+  .avatar-tip {
+    text-align: center;
+    font-family: PingFang SC;
+    font-size: 28rpx;
+    font-weight: 400;
+    line-height: 44rpx;
+    text-align: center;
+  }
+
+  .bind-btn-box {
+    position: fixed;
+    bottom: 228rpx;
+    left: 50%;
+    transform: translateX(-50%);
+    .bind-btn {
+      width: 548rpx;
+      height: 100rpx;
+      line-height: 100rpx;
+      border-radius: 56rpx;
+      background: rgba(61, 203, 204, 1);
+      border: none;
+      font-family: PingFang SC;
+      font-size: 32rpx;
+      font-weight: 400;
+      letter-spacing: 0px;
+      text-align: center;
+      color: #fff;
+    }
+    .bind-btn-tip {
+      //styleName: 14/常规;
+      font-family: PingFang SC;
+      padding-top: 32rpx;
+      font-size: 28rpx;
+      font-weight: 400;
+      line-height: 44rpx;
+      text-align: center;
+      color: rgba(139, 148, 158, 1);
+    }
+  }
+
+  .home-btn {
+    margin-top: 240rpx;
+    width: 548rpx;
+    height: 100rpx;
+    line-height: 100rpx;
+    border-radius: 56rpx;
+    border: 1px solid rgba(61, 203, 204, 1);
+  }
+}
+</style>
+<template>
+ <div class="login-box">
+  <button class="avatar-wrapper"
+    v-if="canIUseGetUserProfile"
+    open-type="chooseAvatar" 
+    bind:chooseavatar="onChooseAvatar">
+    <image class="avatar" src="{{avatarUrl}}"/>
+  </button>  
+  <div class="avatar-tip" v-if="canIUseGetUserProfile">可点击获取头像</div>
+  <div class="bind-btn-box">
+   <button class="bind-btn"
+   open-type="getPhoneNumber"
+   bindgetphonenumber="phonenumberAuth">微信手机号认证</button>
+   <!-- bindgetphonenumber="phonenumberAuth" -->
+   <div class="bind-btn-tip">确保是入职公司使用的手机号</div>
+  </div>
+  <button class="home-btn" @click="goHome">首页</button>
+ </div>
+</template>
+
+<script>
+import wepy from '@wepy/core';
+import { mapState } from '@wepy/x';
+import store from '@/store';
+import config from '@/config';
+import { setAvatar, setUserInfoByAuth } from '@/service/user';
+import {getCompanyByPhone} from '@/api/user';
+let defaultAvatarUrl =config.h5StaticPath + '/page-bind-tenant/default_avatar.svg';
+wepy.page({
+  store,
+  config: {
+    navigationBarTitleText: 'test'
+  },
+  data: {
+    nicknameValue: '',
+    avatarUrl: defaultAvatarUrl,
+    msg: '测试数据',
+    canIUseGetUserProfile: false,
+    userInformation: wx.getStorageSync('userInformation')
+  },
+  onLoad() {
+    if (wx.getUserProfile) {
+      this.canIUseGetUserProfile = true;
+    }
+  },
+  onShow() {},
+  methods: {
+    // 绑定租户
+    bindTenant() {},
+    onChooseAvatar(e) {
+      this.avatarUrl = e.$wx.detail.avatarUrl;
+      let avatarUrl = this.avatarUrl;
+      let that = this;
+      wx.getFileSystemManager().readFile({
+        filePath: avatarUrl,
+        encoding: 'base64',
+        success: function(res) {
+          console.log(res.data);
+          that.avatarUrl = 'data:image/png;base64,' + res.data;
+          setAvatar(that.avatarUrl);
+        }
+      });
+    },
+    getPageCompanyByPhone(){
+
+    },
+    goHome() {
+      wx.navigateTo({
+        url: '/packagesEnv/pages/home/index'
+      });
+    },
+    // 手机号认证
+    phonenumberAuth(e) {
+      console.log(e);
+      let detail = e.$wx.detail;
+      let code = detail.code;
+      let errMsg = detail.errMsg;
+    },
+    goBindTenant() {
+      console.log('被点击了');
+      wx.navigateTo({
+        url: '/pages/bindTenant/index'
+      });
+    }
+  },
+  created() {}
+});
+</script>
+<config>
+{
+navigationBarTitleText: '首页',
+}
+</config>

+ 2 - 1
src/pages/bindTenant/index.wpy

@@ -92,7 +92,8 @@ page {
 <template>
  <div class="overflow-wrap">
   <page-top-bar title="公司身份选择" 
-  titleColor="#1B2129" bgColor="#EBF5FA" icon="{{h5StaticPath+'/page-top-bar/return-icon.svg'}}"></page-top-bar>
+  titleColor="#1B2129" 
+  bgColor="#EBF5FA"></page-top-bar>
    <div class="bind-item check-item">
       <div class="tenant-name">禹数科技有限公司</div>
       <div class="tenant-identity">

+ 58 - 104
src/pages/index.wpy

@@ -1,34 +1,30 @@
 <style lang="less">
+page {
+  width: 100%;
+  height: 100%;
+}
 .login-box {
-  padding-top: 40px;
-  .avatar-wrapper {
-    padding: 0px;
-    width: 160rpx;
-    height: 160rpx;
-    border-radius: 50%;
-    image {
-      width: 160rpx;
-      width: 160rpx;
-      border-radius: 50%;
-    }
-  }
-  .avatar {
-    width: 160rpx;
-    height: 160rpx;
-  }
-
-  .weui-input {
-    margin: 0 auto;
-    margin-top: 40rpx;
-    padding: 0 20rpx;
-    width: 548rpx;
-    height: 100rpx;
-    line-height: 100rpx;
-    border-radius: 5px;
-    border: 1px solid rgba(61, 203, 204, 1);
+  box-sizing: border-box;
+  width: 100%;
+  height: 100%;
+}
+.login {
+  width: 100%;
+  height: 100%;
+  background: rgba(0, 0, 0.2);
+  image {
+    position: relative;
+    width: 384rpx;
+    height: 144rpx;
+    top: 336rpx;
+    left: 50%;
+    transform: translateX(-50%);
   }
   .bind-btn {
-    margin-top: 100rpx;
+    position: fixed;
+    bottom: 200rpx;
+    left: 50%;
+    transform: translateX(-50%);
     width: 548rpx;
     height: 100rpx;
     line-height: 100rpx;
@@ -42,108 +38,62 @@
     text-align: center;
     color: #fff;
   }
-  .phone-tip {
-    padding-top: 32rpx;
-    font-family: PingFang SC;
-    font-size: 28rpx;
-    font-weight: 400;
-    line-height: 44rpx;
-    letter-spacing: 0px;
-    text-align: center;
-    color: rgba(139, 148, 158, 1);
-    text-align: center;
-  }
-  .home-btn {
-    margin-top: 240rpx;
-    width: 548rpx;
-    height: 100rpx;
-    line-height: 100rpx;
-    border-radius: 56rpx;
-    border: 1px solid rgba(61, 203, 204, 1);
-  }
 }
 </style>
 <template>
- <div class="login-box">
-  <button class="avatar-wrapper"
-    open-type="chooseAvatar" 
-    bind:chooseavatar="onChooseAvatar">
-    <image class="avatar" src="{{avatarUrl}}"/>
-  </button> 
-  <form bindsubmit="submit">
-    <input type="nickname" 
-    value="{{nicknameValue}}"
-     class="weui-input" 
-    placeholder="请输入昵称"/>
-  </form>  
-  <button class="bind-btn"
-  open-type="getPhoneNumber"
-  @click="goBindTenant">微信手机号认证</button>
-
-   <!-- bindgetphonenumber="phonenumberAuth" -->
-  <div class="phone-tip">确保是入职公司使用的手机号</div>
-  <button class="home-btn" @click="goHome">首页</button>
- </div>
+  <div class="login-box">
+    <page-top-bar title="" 
+  titleColor="#1B2129"></page-top-bar>
+   <div class="login">
+       <image src="{{h5StaticPath +'/page-bind-tenant/logo_title.png'}}" alt=""/>
+       <button class="bind-btn"
+        @click="goBindTenant">登录</button>
+   </div>
+  </div>
 </template>
 
 <script>
 import wepy from '@wepy/core';
 import { mapState } from '@wepy/x';
 import store from '@/store';
-import { setUserInfoByAuth } from '@/service/user';
-let defaultAvatarUrl = '';
+import config from '@/config';
+import { checkRegist } from '@/service/user';
 wepy.page({
   store,
-  config: {
-    navigationBarTitleText: 'test'
-  },
   data: {
-    nicknameValue: '',
-    avatarUrl: defaultAvatarUrl,
-    msg: '测试数据',
-    userInformation: wx.getStorageSync('userInformation')
+    h5StaticPath: config.h5StaticPath,
+    isActivated: 0
   },
   onLoad() {
-    if (wx.getUserProfile) {
-      this.canIUseGetUserProfile = true;
-    }
+    this.checkTenantRegist();
   },
   onShow() {
-    // this.checkAuthCamra();
+    // this.checkTenantRegist();
   },
   methods: {
-    // 绑定租户
-    bindTenant() {},
-    onChooseAvatar(e) {
-      // console.log('被点击了');
-      // console.log('被点击了',e)
-      console.log('avatarUrl', e.$wx.detail.avatarUrl);
-      console.log(e.$wx);
-      this.avatarUrl = e.$wx.detail.avatarUrl;
-      let avatarUrl = this.avatarUrl;
-      let baseImg = [];
-      let key = e.$wx.timeStamp;
-      let that = this;
-      wx.getFileSystemManager().readFile({
-        filePath: avatarUrl,
-        encoding: 'base64',
-        success: function(res) {
-          console.log(res.data);
-          that.avatarUrl = 'data:image/png;base64,' + res.data;
-        }
-      });
+    checkTenantRegist() {
+      checkRegist()
+        .then(res => {
+          this.isActivated = res.isActivated;
+          if (this.isActivated && this.isActivated == 2) {
+            // 已经激活
+            this.goHome();
+          } else if (this.isActivated == 0) {
+            // 未激活
+            this.goAuth();
+          }
+        })
+        .catch(error => {});
     },
     goHome() {
       wx.navigateTo({
         url: '/packagesEnv/pages/home/index'
       });
     },
-    // 手机号认证
-    phonenumberAuth(e) {},
-    goBindTenant() {
+    goAuth() {
       console.log('被点击了');
       wx.navigateTo({
-        url: '/pages/bindTenant/index'
+        url: '/pages/auth/index'
       });
     }
   },
@@ -152,6 +102,10 @@ wepy.page({
 </script>
 <config>
 {
-navigationBarTitleText: '首页',
+navigationBarTitleText: '登录',
+navigationStyle:"custom",
+usingComponents: {
+    'page-top-bar': '~@/components/common/page-top-bar',      
+  },
 }
 </config>

+ 189 - 98
src/service/user.js

@@ -1,123 +1,214 @@
 import { getUserInfo, setWxAuthUserInfo, getThirdInfo, createAccount, changePhone } from '@/api/user.js';
 import store from '@/store';
 import config from '@/config';
+import { login } from '@/api/user.js';
+import { getAppId } from '@/utils/index';
 
 // 获取用户数据
 function getUserData() {
-    return new Promise((resolve, reject) => {
-        Promise.all([getUserInfo(), getThirdInfo()]).then(([userInfoRes, thirdInfores]) => {
-            let userInfo = userInfoRes.data || {};
-            let thirdInfo = thirdInfores.data || {};
-            let cachedInfo = wx.getStorageSync('UserInfo');
-            userInfo = { ...cachedInfo, ...userInfo, ...thirdInfo };
-            userInfo.userName = userInfo.userName || '';
-            // test 用户身份
-            // userInfo.roles = ['tenant.admin', 'operator', 'owner'];
-            // userInfo.phone = '';wxLogin
-            // userInfo.nickName = '';
-            // userInfo.userName = ''
-            userInfo = addRolesInfoToUserInfo(userInfo);
-            if (!userInfo.userName) {
-                userInfo.defaultUserName = 'Hello';
-            }
-            // todo 模拟银泰配置 接口增加buildingLogo
-            if (config.projectName === 'yintai') {
-                userInfo.buildingLogo = `${config.h5StaticPath}/page-yintai/project-logo.png`;
-            }
-            //   userInfo.companyId = 'c68dcccd57984277ab7736f2d257cd0c'
-            store.commit('setUserInfo', userInfo);
-            resolve(userInfo);
-        }).catch((res) => {
-            reject(res);
-        })
+  return new Promise((resolve, reject) => {
+    Promise.all([getUserInfo(), getThirdInfo()]).then(([userInfoRes, thirdInfores]) => {
+      let userInfo = userInfoRes.data || {};
+      let thirdInfo = thirdInfores.data || {};
+      let cachedInfo = wx.getStorageSync('UserInfo');
+      userInfo = { ...cachedInfo, ...userInfo, ...thirdInfo };
+      userInfo.userName = userInfo.userName || '';
+      // test 用户身份
+      // userInfo.roles = ['tenant.admin', 'operator', 'owner'];
+      // userInfo.phone = '';wxLogin
+      // userInfo.nickName = '';
+      // userInfo.userName = ''
+      userInfo = addRolesInfoToUserInfo(userInfo);
+      if (!userInfo.userName) {
+        userInfo.defaultUserName = 'Hello';
+      }
+      // todo 模拟银泰配置 接口增加buildingLogo
+      if (config.projectName === 'yintai') {
+        userInfo.buildingLogo = `${config.h5StaticPath}/page-yintai/project-logo.png`;
+      }
+      //   userInfo.companyId = 'c68dcccd57984277ab7736f2d257cd0c'
+      store.commit('setUserInfo', userInfo);
+      resolve(userInfo);
+    }).catch((res) => {
+      reject(res);
     })
+  })
 }
 
 // 检查登录
 function checkLogin(needGetetUserInfo = true) {
-    let token = store.state.user.token;
-    if (!token) {
-        return wxLogin(needGetetUserInfo);
-    } else {
-        return Promise.resolve();
-    }
+  let token = store.state.user.token;
+  if (!token) {
+    return wxLogin(needGetetUserInfo);
+  } else {
+    return Promise.resolve();
+  }
 }
 
 //  检查用户信息
 function checkHasUserInfo() {
-    let userInfo = store.state.user.userInfo;
-    if (userInfo && JSON.stringify(userInfo) !== '{}') {
-        return Promise.resolve(userInfo);
-    } else {
-        return checkLogin(false).then(() => {
-            return getUserData();
-        })
-    }
+  let userInfo = store.state.user.userInfo;
+  if (userInfo && JSON.stringify(userInfo) !== '{}') {
+    return Promise.resolve(userInfo);
+  } else {
+    return checkLogin(false).then(() => {
+      return getUserData();
+    })
+  }
 }
 
 function setUserInfoByAuth() {
-    return new Promise((resolve, reject) => {
-      // if (ing) {
-      //   return;
-      // }
-      // ing = true;
-      // let { userInfo = {} } = store.state.user;
-      // // 如果已经保存过了
-      // let nickName = userInfo.nickName;
-      // if (nickName) {
-      //   ing = false;
-      //   resolve();
-      //   return;
-      // }
-      wx.getUserProfile({
-        desc: '用于完善用户信息',
-        success: res => {
-          let detail = res;
-          wx.login({
-            success: loginRes => {
-              // ing = false;
-              // if (loginRes.code) {
-              //   let params = {
-              //     encryptedData: detail.encryptedData,
-              //     iv: detail.iv,
-              //     jsCode: loginRes.code
-              //   };
-              //   setWxAuthUserInfo(params).then(res => {
-              //     let userInfo = JSON.parse(detail.rawData);
-              //     let cachedInfo = wx.getStorageSync('UserInfo');
-              //     userInfo = {
-              //       ...cachedInfo,
-              //       ...userInfo,
-              //       headImgUrl: userInfo.avatarUrl
-              //     };
-              //     delete userInfo.avatarUrl;
-              //     store.commit('setUserInfo', {
-              //       ...userInfo
-              //     });
-              //     wx.setStorageSync('UserInfo', { ...userInfo });
-              //     resolve(res.data);
-              //   });
-              // }
-            },
-            fail: res => {
-              // ing = false;
-              // reject(res);
+  return new Promise((resolve, reject) => {
+    // if (ing) {
+    //   return;
+    // }
+    // ing = true;
+    // let { userInfo = {} } = store.state.user;
+    // // 如果已经保存过了
+    // let nickName = userInfo.nickName;
+    // if (nickName) {
+    //   ing = false;
+    //   resolve();
+    //   return;
+    // }
+    wx.getUserProfile({
+      desc: '用于完善用户信息',
+      success: res => {
+        let detail = res;
+        wx.login({
+          success: loginRes => {
+            // ing = false;
+            // if (loginRes.code) {
+            //   let params = {
+            //     encryptedData: detail.encryptedData,
+            //     iv: detail.iv,
+            //     jsCode: loginRes.code
+            //   };
+            //   setWxAuthUserInfo(params).then(res => {
+            //     let userInfo = JSON.parse(detail.rawData);
+            //     let cachedInfo = wx.getStorageSync('UserInfo');
+            //     userInfo = {
+            //       ...cachedInfo,
+            //       ...userInfo,
+            //       headImgUrl: userInfo.avatarUrl
+            //     };
+            //     delete userInfo.avatarUrl;
+            //     store.commit('setUserInfo', {
+            //       ...userInfo
+            //     });
+            //     wx.setStorageSync('UserInfo', { ...userInfo });
+            //     resolve(res.data);
+            //   });
+            // }
+          },
+          fail: res => {
+            // ing = false;
+            // reject(res);
+          }
+        });
+      },
+      fail: res => {
+        // ing = false;
+        // wx.showToast({
+        //   icon: 'none',
+        //   title: '授权用户公开信息后方可进入下一步操作'
+        // });
+        // reject();
+      }
+    });
+  });
+}
+
+// 检查用户是否注册过小程序及绑定过租户
+function checkRegist() {
+  return new Promise((resolve, reject) => {
+    wx.login({
+      success(wxLoginRes) {
+        const jsCode = wxLoginRes.code;
+        const appId = getAppId();
+        if (jsCode) {
+          let params = {
+            "appId": appId,
+            "wxCode": jsCode
+          }
+          login(params).then(res => {
+            if (res.result == 'success') {
+              let data = res.data || []
+              resolve(data)
+            } else {
+              reject('login接口返回fail');
             }
+          })
+        } else {
+          wx.showToast({
+            title: `网络异常, 请稍后重试`,
+            icon: 'none',
+            duration: 5e3
           });
-        },
-        fail: res => {
-          // ing = false;
-          // wx.showToast({
-          //   icon: 'none',
-          //   title: '授权用户公开信息后方可进入下一步操作'
-          // });
-          // reject();
+          reject('wx.login接口返回code为空');
         }
-      });
+      },
+      fail(res) {
+        reject(res);
+        wx.showToast({
+          title: `网络异常, 请稍后重试`,
+          icon: 'none',
+          duration: 5e3
+        });
+      }
     });
-  }
+  });
+}
+
+// 登录
+function wxLogin() {
+  store.commit('setTokenIsValid', false);
+  store.commit('setToken', '');
+  return new Promise((resolve, reject) => {
+    wx.login({
+      success(wxLoginRes) {
+        const jsCode = wxLoginRes.code;
+        const appId = wx.getAccountInfoSync().miniProgram.appId;
+        if (jsCode) {
+          let params = {
+            "appId": appId,
+            "wxCode": jsCode
+          }
+        } else {
+          wx.hideLoading();
+          wx.showToast({
+            title: `网络异常, 请稍后重试`,
+            icon: 'none',
+            duration: 5e3
+          });
+          reject('wx.login接口返回code为空');
+        }
+      },
+      fail(res) {
+        reject(res);
+        wx.showToast({
+          title: `网络异常, 请稍后重试`,
+          icon: 'none',
+          duration: 5e3
+        });
+      }
+    });
+  });
+}
+
+// 本地保存用户头像
+function setAvatar(avatar) {
+  wx.setStorageSync('avatarBase64', avatar);
+}
+function getAvatar() {
+  wx.getStorageSync('avatarBase64');
+}
+
 
 export {
-    checkHasUserInfo,
-    setUserInfoByAuth
+  checkHasUserInfo,
+  checkRegist,
+  setAvatar,
+  getAvatar,
+  setUserInfoByAuth
 }

+ 0 - 38
src/store/carport.js

@@ -1,38 +0,0 @@
-export default {
-  state: {
-    // 企业车位
-    companyCarportList: [],
-    // 个人车位
-    personalCarportList: [],
-    // 我的常用车辆
-    myCarList: []
-  },
-  mutations: {
-    addCompanyCarport(state, companyCarport) {
-      state.companyCarportList.push(companyCarport);
-    },
-    addPersonalCarport(state, personalCarport) {
-      state.personalCarportList.push(personalCarport);
-    },
-    addMyCar(state, carObj) {
-      state.myCarList.push(carObj);
-    },
-    deleteMyCar(state, carNumber) {
-      state.myCarList.find((item, index) => {
-        if (item.number === carNumber) {
-          state.myCarList.splice(index, 1)
-          return true;
-        }
-        return false;
-      })
-    }
-  },
-  actions: {
-    addMyCar({ commit }, carObj) {
-      commit('addMyCar', carObj);
-    },
-    deleteMyCar({ commit }, carNumber) {
-      commit('deleteMyCar', carNumber);
-    }
-  }
-}

+ 0 - 37
src/store/home.js

@@ -1,37 +0,0 @@
-export default {
-  state: {
-    subscribeMessageTemplates: {},
-    spaceCardInfo: {
-      imgUrl: '',
-      roomName: '',
-      envData: {
-        temperature: '',
-        humidity: '',
-        pm25: '',
-        co2: '',
-        hcho: '',
-        tvoc: '',
-        pmIndicator: '优'
-      },
-
-      spaceId: '',
-      roomType: '' // private_room-房间,public_room-开发空间
-    }
-  },
-  mutations: {
-    setSubscribeMessageTemplates(state, subscribeMessageTemplates) {
-      state.subscribeMessageTemplates = subscribeMessageTemplates
-    },
-    setspaceCardInfo(state, spaceCardInfo) {
-      state.spaceCardInfo = {...spaceCardInfo}
-    }
-  },
-  actions: {
-    setSubscribeMessageTemplates({ commit }, data) {
-      commit('setSubscribeMessageTemplates', data);
-    },
-    setspaceCardInfo({commit}, data) {
-      commit('setspaceCardInfo', data);
-    }
-  }
-}

+ 0 - 36
src/store/index 2.js

@@ -1,36 +0,0 @@
-import wepy from '@wepy/core';
-import Vuex from '@wepy/x';
-import user from '@/store/user.js'
-import task from '@/store/task.js'
-import carport from '@/store/carport.js'
-import restaurant from '@/store/restaurant.js'
-import wifi from '@/store/wifi.js'
-import home from '@/store/home.js'
-import meetingroom from '@/store/meetingroom.js'
-import company from '@/store/company'
-import portrait from '@/store/portrait'
-import officehome from '@/store/officehome'
-import previewImage from '@/store/previewImage'
-import location from '@/store/location'
-wepy.use(Vuex);
-
-export default new Vuex.Store({
-  modules: {
-    user,
-    task,
-    carport,
-    restaurant,
-    wifi,
-    location,
-    home,
-    meetingroom,
-    company,
-    portrait,
-    officehome,
-    previewImage
-  },
-  state: {},
-  mutations: {},
-  actions: {},
-  getters: {}
-});

+ 1 - 15
src/store/index.js

@@ -1,33 +1,19 @@
 import wepy from '@wepy/core';
 import Vuex from '@wepy/x';
 import user from '@/store/user.js'
-// import task from '@/store/task.js'
-// import carport from '@/store/carport.js'
-// import restaurant from '@/store/restaurant.js'
-// import wifi from '@/store/wifi.js'
-// import home from '@/store/home.js'
-// import meetingroom from '@/store/meetingroom.js'
 // import company from '@/store/company'
 import portrait from '@/store/portrait'
 import officehome from '@/store/officehome'
-// import previewImage from '@/store/previewImage'
 import location from '@/store/location'
 wepy.use(Vuex);
 
 export default new Vuex.Store({
   modules: {
     user,
-    // task,
-    // carport,
-    // restaurant,
-    // wifi,
     location,
-    // home,
-    // meetingroom,
-    // company,
     portrait,
     officehome,
-    // previewImage
+
   },
   state: {},
   mutations: {},

+ 0 - 15
src/store/meetingroom.js

@@ -1,15 +0,0 @@
-export default {
-  state: {
-    choosedColleaguList: []
-  },
-  mutations: {
-    setChoosedColleaguList(state, list) {
-      state.choosedColleaguList = list
-    }
-  },
-  actions: {
-    setChoosedColleaguList({ commit }, data) {
-      commit('setChoosedColleaguList', data);
-    }
-  }
-}

+ 0 - 22
src/store/previewImage.js

@@ -1,22 +0,0 @@
-export default {
-  state: {
-    imageList: [],
-    currentIndex: 1
-  },
-  mutations: {
-    setImageList(state, imageList) {
-      state.imageList = [...imageList];
-    },
-    setImageIndex(state, index) {
-      state.currentIndex = index;
-    }
-  },
-  actions: {
-    setImageList({ commit }, data) {
-      commit('setImageList', data);
-    },
-    setImageIndex({ commit }, data) {
-      commit(setImageIndex, data);
-    },
-  },
-};

+ 0 - 29
src/store/restaurant.js

@@ -1,29 +0,0 @@
-export default {
-  state: {
-    // 是否营业中
-    isOpen: true,
-    dishInfo: {}
-  },
-  mutations: {
-    openRestaurant(state) {
-      state.isOpen = true;
-    },
-    closeRestaurant(state) {
-      state.isOpen = false;
-    },
-    updateDishInfo(state, dish) {
-      console.log('----------------')
-      console.log(state)
-      console.log(dish)
-      state.dishInfo = dish
-    }
-  },
-  actions: {
-    openRestaurant({ commit }) {
-      commit('openRestaurant');
-    },
-    closeRestaurant({ commit }) {
-      commit('closeRestaurant');
-    }
-  }
-}

+ 0 - 93
src/store/task.js

@@ -1,93 +0,0 @@
-import config from '@/config';
-import { getCompanyApplyPendingList } from '@/api/companyApply.js';
-
-let taskList = [
-  {
-    name: '访客指引',
-    remarks: 'Wi-Fi、洗手间使用等信息',
-    icon: config.h5StaticPath + '/test-data/home/task/visitor-guidance.png',
-    belongRoleList: [4],
-    navigationUrl:
-      '/h5/pages/common/h5?url=/visitor-guide-tenantslink&pageTitle=访客指引&navigationBarBgColor=#ffffff',
-  },
-  {
-    name: '全面塑形瑜伽',
-    remarks: '下午 06:15',
-    icon: config.h5StaticPath + '/test-data/home/task/sport.png',
-    belongRoleList: [1, 2, 3],
-    navigationUrl:
-      'fitness/homeDetail?isReserved=1&title=' +
-      encodeURIComponent('全面塑形瑜伽训练'),
-  },
-  {
-    name: '京东快递未领取',
-    remarks: '33号储物柜',
-    belongRoleList: [1, 2, 3],
-    icon: config.h5StaticPath + '/test-data/home/task/jingdong.png',
-  },
-];
-
-export default {
-  state: {
-    taskList: taskList,
-  },
-  mutations: {
-    addEnergyTask(state, data) {
-      let energyTask = {
-        type: 'energy',
-        name: '能量站食品待领取',
-        remarks: '约 ' + data.recevieTime,
-        icon: config.h5StaticPath + '/test-data/home/task/energy.png',
-        navigationUrl: 'energy/order-detail',
-        shoppingList: data.shoppingList,
-        recevieTime: data.recevieTime,
-      };
-      state.taskList.unshift(energyTask);
-    },
-    addMeetingRoomTask(state, data) {
-      let energyTask = {
-        type: 'meetingRoom',
-        name: data.roomName + '会议室预约',
-        remarks: data.reserveTimeDesc,
-        icon: config.h5StaticPath + '/test-data/home/task/meeting.png',
-        navigationUrl: '/meetingroom/pages/detail?roomName=' + data.roomName,
-        ...data,
-      };
-      state.taskList.unshift(energyTask);
-    },
-    initCompanyApplyTask(state) {
-      initCompanyApplyTask(state.taskList);
-    },
-  },
-  actions: {
-    addEnergyTask({ commit }, data) {
-      commit('addEnergyTask', data);
-    },
-    addMeetingRoomTask({ commit }, data) {
-      commit('addMeetingRoomTask', data);
-    },
-    initCompanyApplyTask({ commit }) {
-      commit('initCompanyApplyTask');
-    },
-  },
-};
-
-function initCompanyApplyTask(taskList) {
-  let filteredList = taskList.filter((item) => {
-    return item.type != 'apply';
-  });
-  getCompanyApplyPendingList().then((res) => {
-    let list = res.data || [];
-    list.forEach((item) => {
-      filteredList.unshift({
-        type: 'apply',
-        name: '加入企业申请',
-        remarks: item.companyName,
-        belongRoleList: [1, 2, 3, 4],
-        statusText: item.statusText,
-        navigationUrl: `/account/pages/company-apply?applyId=${item.id}`,
-      });
-    });
-    taskList.splice(0, taskList.length, ...filteredList);
-  });
-}

+ 0 - 34
src/store/wifi.js

@@ -1,34 +0,0 @@
-export default {
-  state: {
-    wifiInfo: {
-      ssid: '',
-      password: ''
-    },
-    isConnected: false
-  },
-  mutations: {
-    setWifiInfo(state, wifiInfo) {
-      state.wifiInfo = wifiInfo
-    },
-    changeConnectStatus(state, isConnected) {
-      state.isConnected = isConnected
-    },
-    resetWifiInfo(state) {
-      state.wifiInfo = {
-        ssid: '',
-        password: ''
-      }
-    }
-  },
-  actions: {
-    setWifiInfo({ commit }, data) {
-      commit('setWifiInfo', data);
-    },
-    resetWifiInfo({ commit }) {
-      commit('resetWifiInfo');
-    },
-    changeConnectStatus({ commit }, data) {
-      commit('changeConnectStatus', data);
-    }
-  }
-}

+ 23 - 0
src/utils/index.js

@@ -0,0 +1,23 @@
+
+function getMiniProgram() {
+    const miniProgram = wx.getAccountInfoSync();
+    return miniProgram;
+    // this.version = miniProgram.miniProgram.version;
+}
+function getAppId() {
+    const miniProgram = wx.getAccountInfoSync();
+    return miniProgram && miniProgram.miniProgram && miniProgram.miniProgram.appId || 'wxda2ef261ac3cca32';
+}
+
+// 正式版本上能获取,体验和开发版本无法获取到版本号
+function getVersion() {
+    const miniProgram = wx.getAccountInfoSync();
+    return miniProgram && miniProgram.miniProgram && miniProgram.miniProgram.version;
+}
+
+
+export {
+    getAppId,
+    getVersion,
+    getMiniProgram
+}

File diff suppressed because it is too large
+ 9 - 0
static/page-bind-tenant/default_avatar.svg


BIN
static/page-bind-tenant/logo_title.png


+ 4 - 3
static/page-intelligent-control/icon-floor-arrow.svg

@@ -1,4 +1,5 @@
-<svg width="12" height="14" viewBox="0 0 12 14" fill="none" xmlns="http://www.w3.org/2000/svg">
-<path d="M1 8L6 13L11 8" stroke="#0D0D3D" stroke-opacity="0.86" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
-<path d="M1 1L6 6L11 1" stroke="#0D0D3D" stroke-opacity="0.86" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
+
+<svg width="13" height="12" viewBox="0 0 13 12" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path fill-rule="evenodd" clip-rule="evenodd" d="M10.8536 6.14645C11.0488 6.34171 11.0488 6.65829 10.8536 6.85355L6.85355 10.8536C6.65829 11.0488 6.34171 11.0488 6.14645 10.8536L2.14645 6.85355C1.95118 6.65829 1.95118 6.34171 2.14645 6.14645C2.34171 5.95118 2.65829 5.95118 2.85355 6.14645L6.5 9.79289L10.1464 6.14645C10.3417 5.95118 10.6583 5.95118 10.8536 6.14645Z" fill="#626C78"/>
+<path fill-rule="evenodd" clip-rule="evenodd" d="M10.8536 1.14645C11.0488 1.34171 11.0488 1.65829 10.8536 1.85355L6.85355 5.85355C6.65829 6.04882 6.34171 6.04882 6.14645 5.85355L2.14645 1.85355C1.95118 1.65829 1.95118 1.34171 2.14645 1.14645C2.34171 0.951184 2.65829 0.951184 2.85355 1.14645L6.5 4.79289L10.1464 1.14645C10.3417 0.951184 10.6583 0.951184 10.8536 1.14645Z" fill="#626C78"/>
 </svg>