Przeglądaj źródła

基础框架完善

zouling 4 miesięcy temu
rodzic
commit
faadea2d2e
50 zmienionych plików z 1324 dodań i 546 usunięć
  1. 1 0
      property_ui/App.vue
  2. 15 1
      property_ui/api/login.js
  3. 85 0
      property_ui/components/swiper/notice.vue
  4. 22 4
      property_ui/pages.json
  5. 80 0
      property_ui/pages/agreement.vue
  6. 316 12
      property_ui/pages/index.vue
  7. 132 365
      property_ui/pages/login.vue
  8. 247 160
      property_ui/pages/register.vue
  9. 395 0
      property_ui/pages/tlogin.vue
  10. 2 2
      property_ui/permission.js
  11. BIN
      property_ui/static/images/home/adr.png
  12. BIN
      property_ui/static/images/home/adra.png
  13. BIN
      property_ui/static/images/home/adrbg.png
  14. BIN
      property_ui/static/images/home/conta.png
  15. BIN
      property_ui/static/images/home/contb.png
  16. BIN
      property_ui/static/images/home/contc.png
  17. BIN
      property_ui/static/images/home/contd.png
  18. BIN
      property_ui/static/images/home/htaba.png
  19. BIN
      property_ui/static/images/home/htabb.png
  20. BIN
      property_ui/static/images/home/htabc.png
  21. BIN
      property_ui/static/images/home/htabd.png
  22. BIN
      property_ui/static/images/home/htabe.png
  23. BIN
      property_ui/static/images/home/htabf.png
  24. BIN
      property_ui/static/images/home/htabg.png
  25. BIN
      property_ui/static/images/home/htabh.png
  26. BIN
      property_ui/static/images/home/htabi.png
  27. BIN
      property_ui/static/images/home/htabj.png
  28. BIN
      property_ui/static/images/home/htabk.png
  29. BIN
      property_ui/static/images/home/htabl.png
  30. BIN
      property_ui/static/images/home/htabm.png
  31. BIN
      property_ui/static/images/home/htabn.png
  32. BIN
      property_ui/static/images/home/htabo.png
  33. BIN
      property_ui/static/images/home/htabp.png
  34. BIN
      property_ui/static/images/home/rimg.png
  35. BIN
      property_ui/static/images/home/tips.png
  36. BIN
      property_ui/static/images/home/up.png
  37. BIN
      property_ui/static/images/mine/fbg.png
  38. BIN
      property_ui/static/images/mine/icon_dl_xs.png
  39. BIN
      property_ui/static/images/mine/icon_dl_yc.png
  40. BIN
      property_ui/static/images/mine/icon_dlzc_sjhm_xl.png
  41. BIN
      property_ui/static/images/mine/lbg.png
  42. BIN
      property_ui/static/images/mine/lcicon.png
  43. BIN
      property_ui/static/images/mine/vxtab.png
  44. BIN
      property_ui/static/images/mine/zhtab.png
  45. BIN
      property_ui/static/images/navbg.png
  46. BIN
      property_ui/static/logo.png
  47. BIN
      property_ui/static/logo200.png
  48. 1 1
      property_ui/static/scss/colorui.css
  49. 26 0
      property_ui/static/style.css
  50. 2 1
      property_ui/uni.scss

+ 1 - 0
property_ui/App.vue

@@ -176,5 +176,6 @@ import {updateUserProfile,findVersion} from "@/api/system/user.js"
 </script>
 
 <style lang="scss">
+@import "@/static/style.css";
   @import '@/static/scss/index.scss'
 </style>

+ 15 - 1
property_ui/api/login.js

@@ -29,7 +29,21 @@ export function register(data) {
     data: data
   })
 }
-
+// 通用注册
+export function getRegisterFn(data) {
+  return request({
+    'url': '/register/common',
+    'method': 'post',
+	'data':data
+  })
+}
+export function sendSmszcOnly(data) {
+  return request({
+    'url': '/sendSms/sendRegisterSms',
+    'method': 'POST',
+	data:data
+  })
+}
 // 获取用户详细信息
 export function getInfo() {
   return request({

+ 85 - 0
property_ui/components/swiper/notice.vue

@@ -0,0 +1,85 @@
+<template>
+  <view v-if="noticelist.length">
+	  <view class="hswip flexc" >
+	  		<image :src="tztip" class="tipimg"></image>
+			<!-- :indicator-color="nactiveColor" :indicator-active-color="activeColor" -->
+			<swiper class="swiper" circular :autoplay="autoplay" :interval="interval" :duration="duration" vertical='true'>
+				<swiper-item v-for="(ite,idx) in noticelist" :key="">
+					<view class="flexc swipers" @click="getDetail(ite.noticeId)">
+						<view class="tit over">{{ite.noticeTitle}}</view>
+						<view class="num flexcc">{{ite.num}}</view>
+						<image :src="rimg" class="rimg"></image>
+						<!-- <view class="time">{{ite.issuerTime}}</view> -->
+						<!-- <view class="time" v-if="ite.createTime">{{ite.createTime.substring(0,10)}}</view> -->
+					</view>
+				</swiper-item>
+			</swiper>
+	  		
+	  </view>
+  </view>
+</template>
+
+<script>
+  export default {
+	  props:{
+	  	autoplay: {
+	  		type: Boolean,
+	  		default () {
+	  			return false
+	  		}
+	  	},
+	  	confdat:{},
+		activeColor:{
+			type:String,
+			default () {
+				return '#000000'
+			}
+		},
+		nactiveColor:{
+			type:String,
+			default () {
+				return 'rgba(0, 0, 0, .3)'
+			}
+		},
+		noticelist:{
+			type: Array,
+			default () {
+				return []
+			}
+		}
+	  },
+	data(){
+		return{
+			tztip:require('@/static/images/home/tips.png'),
+			rimg:require('@/static/images/home/rimg.png'),
+            interval: 2000,
+            duration: 500
+		}
+	},
+	methods:{
+		 getRoad(){
+		 	console.log(1)
+		 },
+		 getDetail(e){
+			 this.$emit('getNoticeDet',e)
+		 }
+	},
+	onLoad: function() {
+    }
+  }
+</script>
+
+<style lang="scss" scoped>
+.hswip /deep/ .uni-swiper-dots-vertical{right: 0;}
+.hswip /deep/  .uni-swiper-dot{width: 10rpx; height: 10rpx;}
+.hswip{width: 100%;background: #ffffff;border-radius: 20rpx;height: 100rpx;padding: 0 24rpx 0 26rpx;box-sizing: border-box;box-shadow: 0px 0px 3px 0px #DEDEDE;
+	.tipimg{width: 38rpx;height: 40rpx;flex: 0 0 auto;margin-right: 22rpx;}
+	.swiper{flex: 1;height: 100rpx;
+	.swipers{height: 100rpx;}
+		.tit{flex: 1;font-weight: 500;font-size: 26rpx;color: #272707;}
+		.num{font-weight: bold;
+font-size: 22rpx;min-width: 30rpx;height: 30rpx;padding: 0 4rpx;box-sizing: border-box;background: #D32C26;border-radius: 30rpx;color: #FFFFFF;margin-left: 14rpx;}
+		.rimg{width: 14rpx;height: 24rpx;margin-left: 14rpx;}
+	}
+}
+</style>

+ 22 - 4
property_ui/pages.json

@@ -10,14 +10,32 @@
 	  {
     "path": "pages/login",
     "style": {
-      "navigationBarTitleText": "登录"
+      "navigationBarTitleText": "登录",
+	  "navigationStyle": "custom"
     }
-  }, {
+  }, 
+  {
+    "path": "pages/tlogin",
+    "style": {
+      "navigationBarTitleText": "登录",
+  	  "navigationStyle": "custom"
+    }
+  }, 
+  {
     "path": "pages/register",
     "style": {
-      "navigationBarTitleText": "注册"
+      "navigationBarTitleText": "注册",
+	  "navigationStyle": "custom"
+    }
+  },  
+  {
+    "path": "pages/agreement",
+    "style": {
+      "navigationBarTitleText": "用户协议及隐私条款"
     }
-  },  {
+  },
+  
+  {
     "path": "pages/work/index",
     "style": {
       "navigationBarTitleText": "工作台"

+ 80 - 0
property_ui/pages/agreement.vue

@@ -0,0 +1,80 @@
+<template>
+	<view class="agreen">
+		 <!-- <view class="tit">用户协议及隐私条款</view> -->
+		 <view class="txt tn2">尊敬的用户,欢迎使用中新云有限公司提供的服务。在使用前请您阅读如下服务协议,使用本应用即表示您同意接受本协议,本协议产生法律效力,特别涉及免除或者限制中新云有限公司责任的条款,请仔细阅读。如有任何问题,可向中新云有限公司咨询。</view>
+		 <view class="tits">1. 服务条款的确认和接受</view>
+		 <view class="txt tn2">通过访问或使用本应用,表示用户同意接受本协议的所有条件和条款</view>
+		 <view class="tits">2. 服务条款的变更和修改</view>
+		 <view class="txt tn2">中新云有限公司有权在必要时修改服务条款,服务条款一旦发生变更,将会在重要页面上提示修改内容。如果不同意所改动的内容,用户可以放弃获得的本应用信息服务。如果用户继续享用本应用的信息服务,则视为接受服务条款的变更。本应用保留随时修改或中断服务而不需要通知用户的权利。本应用行使修改或中断服务的权利,不需对用户或第三方负责。</view>
+		 <view class="tits">3.用户行为</view>
+		 <view class="txt tn2">中新云有限公司有权对用户使用中新云智APP的情况进行审查和监督,如用户在使用中新云智APP时违反任何以下规定,中新云有限公司或其授权的人有权要求用户改正或直接采取一切必要的措施以减轻用户不当行为造成的影响。</view>
+		 <view class="tits">3.1 用户账号、密码和安全</view>
+		 <view class="txt tn2">用户一旦注册成功,便成为中新云有限公司的合法用户,将得到一个密码和帐号。同时,此账号密码可登录中新云有限公司中新云智APP程序。因此用户应采取合理措施维护其密码和帐号的安全。用户对利用该密码和帐号所进行的一切活动负全部责任;由该等活动所导致的任何损失或损害由用户承担,中新云有限公司不承担任何责任。 用户的密码和帐号遭到未授权的使用或发生其他任何安全问题,用户可以立即通知中新云有限公司,中新云有限公司有权予以关闭并注销其内容。</view>
+		 <view class="tits">3.2 账号注册时的禁止行为</view>
+		 <view class="txt">(1)冒充任何人或机构,或以虚伪不实的方式谎称或使人误认为与任何人或任何机构有关的名称;</view>
+		 <view class="txt">(2)请勿注册不文明、不健康名字,或包含歧视、侮辱、猥亵类词语的名字;</view>
+		 <view class="txt">(3)请勿注册易产生歧义、引起他人误解的名字;</view>
+		 <view class="tits">3.3 用户在本应用上不得发布下列违法信息和照片:</view>
+		 <view class="txt">(1)反对宪法所确定的基本原则的;</view>
+		 <view class="txt">(2)危害国家安全,泄露国家秘密,颠覆国家政权,破坏国家统一的;</view>
+		 <view class="txt">(3)损害国家荣誉和利益的;</view>
+		 <view class="txt">(4)煽动民族仇恨、民族歧视,破坏民族团结的;</view>
+		 <view class="txt">(5)破坏国家宗教政策,宣扬邪教和封建迷信的;</view>
+		 <view class="txt">(6)散布谣言,扰乱社会秩序,破坏社会稳定的;</view>
+		 <view class="txt">(7)散布淫秽、色情、赌博、暴力、凶杀、恐怖或者教唆犯罪的;</view>
+		 <view class="txt">(8)侮辱或者诽谤他人,侵害他人合法权益的;</view>
+		 <view class="txt">(9)含有法律、行政法规禁止的其他内容的;</view>
+		 <view class="txt">(10)禁止骚扰、毁谤、威胁、仿冒网站其他用户;</view>
+		 <view class="txt">(11)严禁煽动非法集会、结社、游行、示威、聚众扰乱社会秩序;</view>
+		 <view class="txt">(12)严禁发布可能会妨害第三方权益的文件或者信息,例如(包括但不限于):病毒代码、黑客程序、软件破解注册信息。</view>
+		 <view class="txt">(13)禁止上传他人作品。其中包括你从互联网上下载、截图或收集的他人的作品;</view>
+		 <view class="txt">(14)禁止上传广告、横幅、标志等网络图片;</view>
+		 <view class="tits">3.4 账号盗用</view>
+		 <view class="txt tn2">盗取他人用户账号或利用网络通讯骚扰他人,均属于非法行为。用户不得采用测试、欺骗等任何非法手段,盗取其他用户的账号和对他人进行骚扰。</view>
+		 
+		  <view class="tit">隐私条款</view>
+		 <view class="tits">1.用户信息公开情况说明</view>
+		 <view class="txt tn2">尊重用户个人隐私是中新云有限公司的一项基本政策。所以,中新云有限公司不会在未经合法用户授权时公开、编辑或透露其注册资料及保存在本应用中的非公开内容,除非有下列情况:</view>
+		 <view class="txt">(1)有关法律规定或中新云有限公司合法服务程序规定;</view>
+		 <view class="txt">(2)在紧急情况下,为维护用户及公众的权益;</view>
+		 <view class="txt">(3)为维护中新云有限公司的商标权、专利权及其他任何合法权益;</view>
+		 <view class="txt">(4)其他需要公开、编辑或透露个人信息的情况;</view>
+		 <view class="txt tn2">在以下(包括但不限于)几种情况下,中新云有限公司有权使用用户的个人信息:</view>
+		 <view class="txt">(1)在进行促销或抽奖时,中新云有限公司可能会与赞助商共享用户的个人信息,在这些情况下中新云有限公司会在发送用户信息之前进行提示,并且用户可以通过不参与来终止传送过程;</view>
+		 <view class="txt">(2)中新云有限公司可以将用户信息与第三方数据匹配;</view>
+		 <view class="txt">(3)中新云有限公司会通过透露合计用户统计数据,向未来的合作伙伴、广告商及其他第三方以及为了其他合法目的而描述中新云有限公司的服务;</view>
+
+		 <view class="tits">2.隐私权政策适用范围</view>
+		 <view class="txt">(1)用户在登录本应用服务器时留下的个人身份信息;</view>
+		 <view class="txt">(2)用户通过本应用服务器与其他用户或非用户之间传送的各种资讯;</view>
+		 <view class="txt">(3)本应用与商业伙伴共享的其他用户或非用户的各种信息;</view>
+		 <view class="tits">3.资讯公开与共享</view>
+		 <view class="txt tn2">中新云有限公司不会将用户的个人信息和资讯故意透露、出租或出售给任何第三方。但以下情况除外:</view>
+		 <view class="txt">(1)用户本人同意与第三方共享信息和资讯;</view>
+		 <view class="txt">(2)只有透露用户的个人信息和资讯,才能提供用户所要求的某种产品和服务;</view>
+		 <view class="txt">(3)应代表本应用提供产品或服务的主体的要求提供(除非我们另行通知,否则该等主体无权将相关用户个人信息和资讯用于提供产品和服务之外的其他用途):根据法律法规或行政命令的要求提供;因外部审计需要而提供;用户违反了本应用服务条款或任何其他产品及服务的使用规定;经本站评估,用户的帐户存在风险,需要加以保护。</view>
+		 <view class="tits">4.账户删除申请</view>
+		 <view class="txt tn2">用户有权在任何时候编辑用户在中新云有限公司的帐户信息和资讯,用户也可以填写相关申请表格,要求删除个人帐户,但是用户无条件同意在你的帐户删除后,该帐户内及与该帐户相关的信息和资讯仍然保留在本网站档案记录中,除上述第三条规定的情况外,中新云有限公司将为用户保密。</view>
+		 
+	</view>
+</template>
+
+<script>
+	export default{
+		data(){
+			return{
+				
+			}
+		}
+	}
+</script>
+
+<style lang="scss">
+.agreen{padding: 40rpx 32rpx;box-sizing: border-box;background-color: #ffffff;}
+	.tit{font-size: 40rpx;color: #333333;font-weight: bold;text-align: center;margin-bottom: 36rpx;}
+	.tits{font-size: 32rpx;color: #333333;font-weight: 500;line-height: 68rpx;}
+	.txt{font-size: 30rpx;color: #343434;text-indent: 2em;margin-bottom: 20rpx;
+	&.tn2{text-indent: 0;}
+	}
+	
+</style>

+ 316 - 12
property_ui/pages/index.vue

@@ -1,25 +1,329 @@
 <template>
-  <view class="content">
-    
+  <view :style="'padding-top:'+nvaHeight+'px;'">
+		<view class="navbox">
+			<uni-nav-bar  color="#ffffff" leftWidth='400rpx'  :background-color="backgroundColor" :border="false" statusBar='true' fixed="true">
+				<block slot="left">
+					<view class="topl flexc">
+						<image :src="adrimg" ></image>
+						<view class="over">{{city}}</view>
+					</view>
+				</block>
+			</uni-nav-bar>
+		</view>
+		<!-- 主体 -->
+		<image :src="navbg" class="navbg"></image>
+		<view class="wymain" >
+			<view class="adrbox">
+				<view class="flexc mb14">
+					<image :src="adraimg" class="adr"></image>
+					<view class="adrtit">智慧<text>社区</text></view>
+				</view>
+				<view class="adrtxt flexc mb4">
+					<view class="over">嗨~刘源禧!</view><text>经理</text>
+				</view>
+				<view class="adrtip">幸福小区物业办公室</view>
+				<image :src="adrbgimg" class="adrbgimg"></image>
+			</view>
+			<view class="mb22">
+				<notice :noticelist="noticelist"  :autoplay='autoplay' @getNoticeDet="getNoticeDet"></notice>
+			</view>
+			<!-- 统计 -->
+			<view class="contbox">
+				<view class="cont flexc">
+					<image :src="conta"></image>
+					<view>今日数据统计</view>
+				</view>
+				<view class="lists">
+					<view class="list">
+						<view class="tit">21</view>
+						<view class="txt">空闲车位</view>
+					</view>
+					<view class="list">
+						<view class="tit">21</view>
+						<view class="txt">空闲充电桩</view>
+					</view>
+					<view class="list">
+						<view class="tit">21</view>
+						<view class="txt">进入车辆</view>
+					</view>
+					<view class="list">
+						<view class="tit">21</view>
+						<view class="txt">离开车辆</view>
+					</view>
+					<view class="list">
+						<view class="tit">21</view>
+						<view class="txt">外来车辆</view>
+					</view>
+					<view class="list">
+						<view class="tit">21</view>
+						<view class="txt">违停登记</view>
+					</view>
+					<view class="list">
+						<view class="tit">21</view>
+						<view class="txt">外来人员</view>
+					</view>
+					<view class="list">
+						<view class="tit">21</view>
+						<view class="txt">进入人员</view>
+					</view>
+					<block v-if="zhanflag">
+						<view class="list">
+							<view class="tit ca">21</view>
+							<view class="txt">已巡更</view>
+						</view>
+						<view class="list">
+							<view class="tit ca">21</view>
+							<view class="txt">未巡更</view>
+						</view>
+						<view class="list">
+							<view class="tit cb">21</view>
+							<view class="txt">家政订单</view>
+						</view>
+						<view class="list">
+							<view class="tit cb">21</view>
+							<view class="txt">完成订单</view>
+						</view>
+						<view class="list">
+							<view class="tit cc">21</view>
+							<view class="txt">今日报修</view>
+						</view>
+						<view class="list">
+							<view class="tit cc">21</view>
+							<view class="txt">已派报修</view>
+						</view>
+						<view class="list">
+							<view class="tit cc">21</view>
+							<view class="txt">投诉建议</view>
+						</view>
+						<view class="list">
+							<view class="tit cc">21</view>
+							<view class="txt">已回投诉</view>
+						</view>
+					</block>
+				</view>
+				<view class="upbox" @click="getZhanFn">
+					<image :src="upimg"></image>
+					<view>{{zhanflag?'收起':'展开'}}</view>
+				</view>
+			</view>
+			<view class="contbox mb16">
+				<view class="cont flexc mb9">
+					<image :src="contb"></image>
+					<view>物业管理</view>
+				</view>
+				<view class="lists">
+					<view class="list bimga">
+						<view class="imgs"><image :src="htaba" class="imga"></image></view>
+						<view class="txt">车辆管控</view>
+					</view>
+					<view class="list bimga">
+						<view class="imgs"><image :src="htabb" class="imgb"></image></view>
+						<view class="txt">车库管理</view>
+					</view>
+					<view class="list bimga">
+						<view class="imgs"><image :src="htabc" class="imgc"></image></view>
+						<view class="txt">外来车辆登记</view>
+					</view>
+					<view class="list bimga">
+						<view class="imgs"><image :src="htabd" class="imgd"></image></view>
+						<view class="txt">违停登记</view>
+					</view>
+					<view class="list bimga">
+						<view class="imgs"><image :src="htabe" class="imge"></image></view>
+						<view class="txt">人员管理</view>
+					</view>
+					<view class="list bimga">
+						<view class="imgs"><image :src="htabf" class="imgf"></image></view>
+						<view class="txt">来访管理</view>
+					</view>
+					<view class="list bimga">
+						<view class="imgs"><image :src="htabg" class="imgd"></image></view>
+						<view class="txt">物业费管理</view>
+					</view>
+					<view class="list bimga">
+						<view class="imgs"><image :src="htabh" class="imgd"></image></view>
+						<view class="txt">房屋管理</view>
+					</view>
+				</view>
+			</view>
+			<view class="contbox mb16">
+				<view class="cont flexc mb9">
+					<image :src="contc"></image>
+					<view>物业服务</view>
+				</view>
+				<view class="lists">
+					<view class="list bimga">
+						<view class="imgs"><image :src="htabi" class="imgg"></image></view>
+						<view class="txt">今日巡更</view>
+					</view>
+					<view class="list bimga">
+						<view class="imgs"><image :src="htabj" class="imgb"></image><view class="tips">3</view>
+						</view>
+						<view class="txt">物业报修</view>
+					</view>
+					<view class="list bimga">
+						<view class="imgs"><image :src="htabk" class="imgb"></image></view>
+						<view class="txt">维修人员管理</view>
+					</view>
+					<view class="list bimga">
+						<view class="imgs"><image :src="htabl" class="imga"></image><view class="tips">1</view></view>
+						<view class="txt">投诉建议</view>
+					</view>
+				</view>
+			</view>
+			<view class="contbox mb16">
+				<view class="cont flexc mb9">
+					<image :src="contd"></image>
+					<view>社区管理</view>
+				</view>
+				<view class="lists">
+					<view class="list bimga">
+						<view class="imgs"><image :src="htabm" class="imgh"></image></view>
+						<view class="txt">党建信息</view>
+					</view>
+					<view class="list bimga">
+						<view class="imgs"><image :src="htabn" class="imgi"></image><view class="tips">27</view></view>
+						<view class="txt">社区资讯</view>
+					</view>
+					<view class="list bimga">
+						<view class="imgs"><image :src="htabo" class="imgf"></image></view>
+						<view class="txt">员工培训</view>
+					</view>
+					<view class="list bimga">
+						<view class="imgs"><image :src="htabp" class="imgi"></image></view>
+						<view class="txt">社区资产</view>
+					</view>
+				</view>
+			</view>
+		</view>
 	 <footers v-if="isfootflag"  :footerindex="footerindex"></footers>
   </view>
 </template>
 
 <script>
 import footers from '@/components/footer/footer.vue'
+import notice from '@/components/swiper/notice.vue'
   export default {
-	  components:{footers},
-	  data(){
-		  return{
-			  footerindex:'home',
-			  isfootflag:true,
-		  }
-	  },
+	components:{footers,notice},
+	data(){
+		return{
+			footerindex:'home',
+			isfootflag:true,
+			nvaHeight:44,
+			// activeColor:'#A7CDF9',
+			// nactiveColor:'#DADADA',
+			backgroundColor: "transparent",
+			navbg:require("@/static/images/navbg.png"),
+			adrimg:require("@/static/images/home/adr.png"),
+			adraimg:require("@/static/images/home/adra.png"),
+			adrbgimg:require("@/static/images/home/adrbg.png"),
+			conta:require("@/static/images/home/conta.png"),
+			contb:require("@/static/images/home/contb.png"),
+			contc:require("@/static/images/home/contc.png"),
+			contd:require("@/static/images/home/contd.png"),
+			htaba:require("@/static/images/home/htaba.png"),
+			htabb:require("@/static/images/home/htabb.png"),
+			htabc:require("@/static/images/home/htabc.png"),
+			htabd:require("@/static/images/home/htabd.png"),
+			htabe:require("@/static/images/home/htabe.png"),
+			htabf:require("@/static/images/home/htabf.png"),
+			htabg:require("@/static/images/home/htabg.png"),
+			htabh:require("@/static/images/home/htabh.png"),
+			htabi:require("@/static/images/home/htabi.png"),
+			htabj:require("@/static/images/home/htabj.png"),
+			htabk:require("@/static/images/home/htabk.png"),
+			htabl:require("@/static/images/home/htabl.png"),
+			htabm:require("@/static/images/home/htabm.png"),
+			htabn:require("@/static/images/home/htabn.png"),
+			htabo:require("@/static/images/home/htabo.png"),
+			htabp:require("@/static/images/home/htabp.png"),
+			upimg:require("@/static/images/home/up.png"),
+			city:'幸福大街',
+			autoplay:false,
+			zhanflag:true,
+			noticelist:[{noticeTitle:"您有1条报修信息,请及时查看处理!",num:'4'},{noticeTitle:"您有1条报修信息,请及时查看处理!",num:'12'}]
+		}
+	},
+	onPageScroll(e) {
+		var scrollTop = Number(e.scrollTop);
+		if (scrollTop > 0) {
+			this.backgroundColor = '#C3EDFF'
+		} else {
+			this.backgroundColor = 'transparent'
+		}
+	},
     onLoad: function() {
-    }
+		uni.getSystemInfo({
+			success: (e) => {
+				this.nvaHeight = Number(e.statusBarHeight)+44;
+			}
+		})
+    },
+	methods:{
+		getNoticeDet(){
+			
+		},
+		getZhanFn(){
+			this.zhanflag=!this.zhanflag
+		}
+	}
   }
 </script>
+<style lang="scss" scoped>
+.navbox{position: fixed;left: 0;right: 0;top: 0;z-index: 4;	}
+.navbg{width: 100%;height: 782rpx;}
+.wymain{z-index: 2;position: relative;padding: 0 24rpx;}
+.topl{overflow: hidden;padding-left: 16rpx;
+	image{width: 18rpx;height: 22rpx;margin-right: 14rpx;flex: 0 0 auto;}
+	view{font-weight: bold;font-size: 26rpx;color: #272727;}
+}
+.adrbox{position: relative;padding:8rpx 240rpx 16rpx 36rpx;margin-bottom: 14rpx;
+	.adr{width: 36rpx;height: 34rpx;margin-right: 14rpx;}
+	.adrtit{font-size: 17px;color: #272727;font-weight: bold;
+		text{color: #0256FD;}
+	}
+	.adrtxt{font-size: 16px;color: #272727;font-weight: bold;
+		text{font-size: 10px;color: #3F7EFD;display: inline-flex;background: rgba(119, 171, 184, 0.3);margin-left: 22rpx;min-width: 66rpx;height: 30rpx;padding: 0 14rpx;box-sizing: border-box;flex: 0 0 auto;border-radius: 8px;align-items: center;justify-content: center;}
+	}
+	.adrtip{font-weight: 500;font-size: 24rpx;color: #828282;}
 
-<style>
-
+	.adrbgimg{width: 212rpx;height: 236rpx;position: absolute;right: 20rpx;top: -70rpx;}
+}
+.contbox{
+	.cont{padding-left: 24rpx;margin-bottom: 12rpx;
+		image{width: 32rpx;height: 32rpx;margin-right: 16rpx;}
+		view{font-size: 15px;color: #272727;font-weight: bold;}
+	}
+	.lists{
+		display: flex;align-items: center;flex-wrap: wrap;
+		.list{padding: 8rpx 0;
+			width: 25%;display: flex;flex-direction: column;align-items: center;
+			.tit{font-weight: bold;font-size: 30rpx;color: #3565ED;line-height: 60rpx;font-style: italic;margin-bottom: 8rpx;
+				&.ca{color: #FF7E00;}
+				&.cb{color: #28C529;}
+				&.cc{color: #FF3737;}
+			}
+			.txt{font-weight: 500;font-size: 26rpx;color: #272727;}
+			&.bimga{padding: 16rpx 0;}
+			.imgs{display: flex;align-items: center;justify-content: center;width: 48rpx;height: 48rpx;margin-bottom: 18rpx;position: relative;
+				.imga{width: 48rpx;height: 38rpx;}
+				.imgb{width: 48rpx;height: 46rpx;}
+				.imgc{width: 44rpx;height: 48rpx;}
+				.imgd{width: 48rpx;height: 42rpx;}
+				.imge{width: 46rpx;height: 46rpx;}
+				.imgf{width: 48rpx;height: 48rpx;}
+				.imgg{width: 42rpx;height: 48rpx;}
+				.imgh{width: 44rpx;height: 44rpx;}
+				.imgi{width: 48rpx;height: 44rpx;}
+				.tips{position: absolute;min-width: 20rpx;top: -4rpx;left: 36rpx;box-sizing: border-box;
+height: 20rpx;padding: 0 4rpx;display: flex;align-items: center;justify-content: center;font-weight: bold;font-size: 16rpx;color: #FCF9F1;background: #D32C26;border-radius: 10rpx;
+				}
+			}
+		}
+	}
+	.upbox{display: flex;align-items: center;justify-content: center;flex-direction: column;margin-top: 8rpx;padding-top: 8rpx;margin-bottom: 6rpx;
+		image{width: 24rpx;height: 20rpx;margin-bottom: 8rpx;}
+		view{font-weight: 500;font-size: 22rpx;color: #AAAAAA;}
+	}
+}
 </style>

+ 132 - 365
property_ui/pages/login.vue

@@ -1,384 +1,151 @@
 <template>
-  <view class="regbox pregbox flexdc" v-if="loginflag" style="padding-top: 60rpx;">
-	  <image :src="headimg" class="headimg flex0"></image>
-	   
-	  <view class="flex1" style="position: relative;">
-		  <!-- #ifdef APP-PLUS -->
-		  <!-- <image :src="ldicon" class="mzimg flex0"></image>
-			<view class="mb24 mt50">
-				<view class="f25 c16 fw5 mb30 txc">133****0756</view>
-				<view class="rbtn">本机号码一键登录</view>
-			</view> -->
-		  <!-- #endif -->
-		  <!-- #ifdef MP-WEIXIN -->
-		   <!-- #endif -->
-		  <view class="tab flexcc">
-			  <block v-for="(ite,idx) in tablist" :key="idx">
-				  <view v-if="ite.val!=1"  class="tabtit" :class="tabidx==ite.val?'act':''" @click="getTab(ite.val)">
-				  {{ite.tit}}</view> 
-			  </block>
-			 
-		  </view>
-		  <!-- 手机号登录 -->
-		  <view class="login-form-content" v-if="tabidx!=1">
+	<view class="regbox" v-if="loginflag">
+		<image :src="lbg" class="navbg"></image>
+		<image :src="fbg" class="fbg"></image>
+		<view class="wymain">
+			<image :src="headimg" class="headimg"></image>
+			<!-- 微信登录 -->
+			<button type="primary" class="rbtn" open-type="getUserInfo" @getuserinfo="getuserinfo">
+				<image :src="vxtab" class="vxtab"></image>
+				<text class="btn-txt">微信一键登录</text>
+			</button>
+			<button type="primary" class=" rbtn" @click="getlogin">
+				<image :src="zhtab" class="zhtab"></image>
+				<text class="btn-txt">账号密码登录</text>
+			</button>
+			<view class="line"></view>
+			<view class="rbtn btna" @click="getregister">还没账号?去注册</view>
+		</view>
 
-		  	<view class="input-item">
-		  		<view class="login_tit">账号</view>
-		  		<view class="login_box">
-		  			<!-- <view class="login_boxl">+86</view> -->
-		  			 <input  v-model="loginForm.username" class="input" type="text" placeholder="请输入登录账号" maxlength="30" />
-		  		</view>
-		  	</view>
-		  	<block v-if="tabidx==2">
-		  		<view class="input-item" >
-					<view class="flexcj">
-						<view class="login_tit">密码</view>
-						<view class="login_jz" @click="jzflag=!jzflag">
-							<image :src="pcicon" v-if="jzflag"></image>
-							<image :src="pnicon" v-else></image>
-							<view>记住密码</view>
-						</view>
-					</view>
-		  			
-		  			 <view class="login_box">
-						 <uni-easyinput :inputBorder="false" type="password" v-model="loginForm.password" placeholder="请输入密码" />
-		  				<!-- <input v-if="checkeye" v-model="loginForm.password" type="text"  class="input" placeholder="请输入密码" maxlength="20" />
-		  				 <input v-else v-model="loginForm.password" type="password"  class="input" placeholder="请输入密码" maxlength="20" /> -->
-						 <view class="line flex0"></view>
-						 <view class="login_txt" @click="getForget"><text>忘记密码</text></view>
-		  			 </view>
-		  		</view>
-		  		<view class="input-item flex align-center" style="width: 60%;margin: 0px;margin-bottom: 24rpx;" v-if="captchaEnabled">
-		  		  <input v-model="tucode" type="number" class="input" placeholder="请输入验证码" maxlength="4" />
-		  		  <view class="login-code"> 
-		  		    <image :src="codeUrl" @click="getCode" class="login-code-img"></image>
-		  		  </view  >
-		  		</view>
-		  		 
-		  	</block>
-		  	<!-- <view v-if="tabidx==0" class="input-item" style="margin-bottom: 24rpx;" >
-		  		<view class="login_tit">验证码</view>
-		  		 <view style="display: flex;align-items: center;">
-		  			 <input v-model="duancode" type="code" class="input" placeholder="请输入短信验证码" maxlength="20" />
-		  			 <view v-if="timefalg" class="codes">重新发送{{time}}s</view>
-		  			 <view v-else class="codess" @click="getsendCode">发送验证码</view>
-		  		 </view>
-		  	</view> -->
-		    <button v-if="captchaEnabled"  type="primary" class=" rbtn mb24 mt50" :class="tucode&&loginForm.username&&loginForm.password?'btn2':'btn'"  @click="getLogin">登录</button>
-		    <button v-else type="primary" class=" rbtn mb24 mt50" :class="loginForm.username&&loginForm.password?'btn2':'btn'"   @click="getLogin">登录</button>
-		  </view>
-		  <!-- 微信登录 -->
-		  <block v-if="tabidx==1">
-			  <button  type="primary" class="rbtn mb24 mt50" open-type="getUserInfo" @getuserinfo="getuserinfo" >
-			  	<text class="btn-txt">快捷登录</text>
-			  </button>
-		  </block>
-		  
-		  
-		  <!-- 账号密码登录 -->
-			<view class="lread" @click="checkflag=!checkflag">
-				<view class="lreadl">
-					<image :src="checkimg" v-if="checkflag"></image>
-					<image :src="ncheckimg" v-else></image>
-				</view>
-				<view class="tit">登录即代表您已阅读并同意<text @click.stop="handlePrivacy">用户协议</text>及<text @click.stop="handlePrivacy">隐私政策</text></view>
-			</view>
-			 <!-- <view class="bbcode">版本号:ZXY_YY_1.3</view> -->
-	  </view>
-	 
-	    
-	  <!-- <view class="rtxt mt26" @click="getregister">还没账号?去申请注册</view> -->
-	  <phone-btn :type="typeflag" @getPhoneNumber='getPhoneNumber' @getClose="getClose"></phone-btn>
-  </view>
+		
+		<phone-btn :type="typeflag" @getPhoneNumber='getPhoneNumber' @getClose="getClose"></phone-btn>
+	</view>
 </template>
 
 <script>
 	import * as base64 from "base-64"
-	import {getweChatLogin,getInfo,getweChatOpenid,getCodeImg,getCode,sendSmsOnly} from "@/api/login.js"
-	import {getUserProfile} from "@/api/system/user.js"
-	import { getToken } from '@/utils/auth'
+	// import {getUserProfile} from "@/api/system/user.js"
+	import {
+		getToken
+	} from '@/utils/auth'
 	import phoneBtn from "@/components/toptab/phonebtn.vue"
-  export default {
-	  components:{
-		  phoneBtn
-	  },
-	data(){
-		return{
-			headimg:require('@/static/logo.png'),
-			ldicon:require('@/static/images/mine/ldicon.png'),
-			checkimg:require('@/static/images/mine/lcicon.png'),
-			ncheckimg:require('@/static/images/mine/lnicon.png'),
-			rimg:require('@/static/images/mine/rimg.png'),
-			pcicon:require('@/static/images/mine/pcicon.png'),
-			pnicon:require('@/static/images/mine/pnicon.png'),
-			checkflag:true,
-			typeflag: false,
-			loginflag:false,
-			captchaEnabled: false,
-			duancode:'',//短信验证码
-			checkeye:false,
-			tucode:'',
-			codeUrl:'',
-			time:'',
-			timefalg:'',
-			tabidx:2,
-			tablist:[{tit:'微信登录',val:1},{tit:'密码登录',val:2},],
-			loginForm: {
-				username: "",
-				code: "",
-				password:'',
-			},
-			voList:[],
-			voindex:0,
-			jzflag:false
-		}
-	},
-	
-	methods:{
-		getTab(idx){
-			this.tabidx=idx;
-		},
-
-		// 获取图形验证码
-		getCode() {
-		  getCodeImg().then(res => {
-		    this.captchaEnabled = res.captchaEnabled === undefined ? true : res.captchaEnabled
-		    if (this.captchaEnabled) {
-		      this.codeUrl = 'data:image/gif;base64,' + res.img
-		      this.loginForm.uuid = res.uuid
-		    }
-		  })
-		},
-		getForget(){
-			this.$tab.navigateTo(`/pages/mine/pwd/forgetpwd`)
+	export default {
+		components: {
+			phoneBtn
 		},
-		getSchoolFn(){
-			this.$tab.navigateTo(`/mine/pages/mine/school?id=`+this.loginForm.school)
+		data() {
+			return {
+				lbg: require('@/static/images/mine/lbg.png'),
+				fbg: require('@/static/images/mine/fbg.png'),
+				vxtab: require('@/static/images/mine/vxtab.png'),
+				zhtab: require('@/static/images/mine/zhtab.png'),
+				fbg: require('@/static/images/mine/fbg.png'),
+				headimg: require('@/static/logo.png'),
+				typeflag: false,
+				loginflag: false,
+				loginForm: {
+					username: "",
+					code: "",
+					password: '',
+				},
+			}
 		},
-		 getregister(){
-			 this.$tab.navigateTo(`/mine/pages/login/register`)
-			 // this.$tab.navigateTo(`/mine/pages/mine/applyregister`)
-			 // this.$tab.navigateTo(`/mine/pages/mine/auth`)
-		 },
-		 getLogin(){
-			 if(!this.loginForm.username||!this.loginForm.password||(!this.tucode&& this.captchaEnabled)){
-			 	 return
-			 }
-			// let regphone = /^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$/;
-			// if(!regphone.test(this.loginForm.username)){
-			// 	this.$toast('请输入正确的手机号')
-			// 	return
-			// }
-			 // if(!this.checkflag){
-			 // 	this.$toast("请同意用户协议")
-			 // 	return
-			 // }
-			 this.loginForm.code=this.tucode;
-			 this.pwdLogin()
-		 },
-		 // 密码登录
-		 async pwdLogin() {
-		 	var that=this;
-			
-		   this.$store.dispatch('Login', this.loginForm).then((res) => {
-			   // 判断是否记住密码
-			  if(that.jzflag){
-			  	var newObj={
-			  		username:that.loginForm.username,
-			  		password:base64.encode(that.loginForm.password),
-					captchaEnabled:that.captchaEnabled,
-			  	}					  
-			  	uni.setStorageSync('account', JSON.parse(JSON.stringify(newObj)))
-			  }else{
-			  	uni.removeStorageSync('account')
-			  } 
-		     this.$modal.closeLoading()
-		 		  this.$toast('登录成功')
-		 		  setTimeout(function(){
-		 			  that.loginSuccess()
-		 		  },1500)
-		     
-		   }).catch((error) => {
-		    setTimeout(function(){
-		 		if (that.captchaEnabled&&that.tabidx==2) {
-		 			that.getCode()
-				}
-		 	},1000)
-		   })
-		 },
-		 handlePrivacy(){
-			this.$tab.navigateTo(`/pages/agreement`)  
-		 },
-		 getClose() {
-		 	this.typeflag = false
-		 },
-		 btns() {
-		 	
-		 },
-		 getPhoneNumber(data){
-			 var that=this;
-			 var params=data
-			 that.$store.dispatch('Login', params).then(() => {
-			   that.$modal.closeLoading()
-			 	that.$toast('登录成功')
-				that.typeflag=false;
-			   that.loginSuccess(data)
-			 }).catch(() => {
-			   // if (this.captchaEnabled) {
-			   //   this.getCode()
-			   // }
-			 })
-		 },
-		 // 登录成功后,处理函数
-		 loginSuccess(result) {
-		   // 设置用户信息
-		   var that=this;
-		   this.$store.dispatch('GetInfo').then(res => {
-			   this.$tab.reLaunch('/pages/index') 
-		   })
-		 },
-		 
-		 async getuserinfo(e) {
-			 // if(!this.checkflag){
+
+		methods: {
+			handlePrivacy() {
+				this.$tab.navigateTo(`/pages/agreement`)
+			},
+			getlogin(){
+				this.$tab.navigateTo(`/pages/tlogin`)
+			},
+			getregister(){
+				this.$tab.navigateTo(`/pages/register`)
+			},
+			async getuserinfo(e) {
+				// if(!this.checkflag){
 				//  this.$toast("请同意用户协议")
 				//  return
-			 // }
-			 // 判断是不是有学校
-		 	const {iv,encryptedData} = e.detail
-		 	const {nickName, avatarUrl, ...userInfo} = e.detail.userInfo
-			// console.log(e.detail)
-		 	try{
-				uni.login({
-                    provider: 'weixin',
-                    success: (res) => {
-                        // 获取用户信息
-						if(res.code){
-							this.avatarUrl = avatarUrl
-							this.nickName = nickName
-							this.code = res.code
-							this.userInfo =e.detail.userInfo
-							uni.setStorageSync('userInfo', e.detail.userInfo)
-							uni.setStorageSync('lcheckflag',true)
-							this.typeflag=true;
+				// }
+				// 判断是不是有学校
+				const {
+					iv,
+					encryptedData
+				} = e.detail
+				const {
+					nickName,
+					avatarUrl,
+					...userInfo
+				} = e.detail.userInfo
+				// console.log(e.detail)
+				try {
+					uni.login({
+						provider: 'weixin',
+						success: (res) => {
+							// 获取用户信息
+							if (res.code) {
+								this.avatarUrl = avatarUrl
+								this.nickName = nickName
+								this.code = res.code
+								this.userInfo = e.detail.userInfo
+								uni.setStorageSync('userInfo', e.detail.userInfo)
+								uni.setStorageSync('lcheckflag', true)
+								this.typeflag = true;
+							}
 						}
-                    }
-                })
-		 	} catch(e){
-		 		//TODO handle the exception
-		 	}
+					})
+				} catch (e) {
+					//TODO handle the exception
+				}
 		 },
-	},
-	
-	onLoad: function() {
-		this.getCode()
-		if (getToken()) {
-			this.$tab.reLaunch('/pages/index/index') 
-			// 判断有什么角色
-		} else {
-			this.loginflag=true;
-			// this.getCode()
-			// if(uni.getStorageSync('lcheckflag')){
-			// 	this.checkflag=true
-			// }else{
-			// 	this.checkflag=false
-			// }
-		  if(uni.getStorageSync('account')){
-		  	var newObj=JSON.parse(JSON.stringify(uni.getStorageSync('account')))
-		  	this.loginForm.username=newObj.username;
-		  	this.loginForm.password=base64.decode(newObj.password);
-		  	this.jzflag=true;
-		  }
-		  
-		}	
-    },
-  }
-</script>
+			getClose() {
+				this.typeflag = false
+			},
+		 getPhoneNumber(data) {
+				var that = this;
+				var params = data
+				that.$store.dispatch('Login', params).then(() => {
+					that.$modal.closeLoading()
+					that.$toast('登录成功')
+					that.typeflag = false;
+					that.loginSuccess(data)
+				}).catch(() => {
+					// if (this.captchaEnabled) {
+					//   this.getCode()
+					// }
+				})
+			},
+			// 登录成功后,处理函数
+			loginSuccess(result) {
+				// 设置用户信息
+				var that = this;
+				this.$store.dispatch('GetInfo').then(res => {
+					this.$tab.reLaunch('/pages/index')
+				})
+			},
+		},
 
-<style lang="scss" scoped>
-.headimg{width: 136rpx;height: 136rpx;margin:0 auto 36rpx;}
-.mzimg{width: 100rpx;height: 44rpx;margin: 0 auto ;}
-.regbox /deep/ .uni-easyinput__content-input{font-size: 32rpx !important;padding-left: 0 !important;line-height: 80rpx;height: 80rpx;}
-.regbox /deep/ .uni-input-placeholder{font-size: 32rpx !important;padding-left: 0 !important;color: #808080;}
-.rtxt{font-size: 32rpx;font-weight: 500;
-color: $com-cd3;text-align: center;}
-.bbcode{position: absolute;width: 100%;text-align: center;left: 0;bottom: -80rpx;font-size: 24rpx;color: #666666;}
-.lread{
-	display: flex;align-items: flex-start;justify-content: center;
-	.lreadl{padding-top: 4rpx;
-		image{width: 28rpx;height: 28rpx;margin-right: 14rpx;}
-	}
-	.tit{font-size: 26rpx;font-weight: 500;color: #666666;line-height: 40rpx;
-	text{color:$com-cd3;text-decoration: underline;padding: 0 6rpx;}
-}
-}
-.tab{
-	.tabtit{font-size: 32rpx;font-weight: 500;color: #666666;padding: 0 24rpx;position: relative;
-	&.act{color: $com-cd3;font-weight: bold;}
-		&::before{content: '';position: absolute;left: 0;top: 50%;margin-top: -10rpx;width: 2rpx;height: 20rpx;background: #DADADA;}
-		&:first-child::before{display: none;}
+		onLoad: function() {
+			if (getToken()) {
+				this.$tab.reLaunch('/pages/index')
+				// 判断有什么角色
+			} else {
+				this.loginflag = true;
+			}
+		},
 	}
-	
-}
-.rbtn {
-		&.btn{background: #9a9c9e;color: #ffffff;}
-		&.btn2{background: $com-cd3;color: #ffffff;}
-      }
-.login-form-content {
-      margin: 0 auto;
-      width: 100%;
-		
-      .input-item {
-        // margin-bottom:48rpx;
-        border-bottom: 2rpx solid #CDCDCD;
-		padding: 40rpx 0 0rpx;
-        .icon {
-          font-size: 40rpx;
-          margin-left: 10px;
-          color: #999;
-        }
-		.login_tit{
-			font-size: 34rpx;
-			font-weight: bold;
-			color: #343434;margin-bottom: 10rpx;
-		}
-		.login_box{display: flex;align-items: center;
-			.rimgs{width: 18rpx;height: 30rpx;flex: 0 0 auto;margin-left: 20rpx;}
-		}
-        .input {
-          width: 100%;
-          font-size: 32rpx;
-		  height: 80rpx;
-		  line-height: 80rpx;
-        }
+</script>
 
-      }
+<style lang="scss" scoped>
+.navbg{width: 100%;height: 100vh;}
+.fbg{width: 100%;height: 750rpx;position: absolute;bottom: 0;left: 0;}
+.wymain{z-index: 2;position: relative;padding: 200rpx 60rpx;}
+.headimg{width: 110rpx;height: 110rpx;margin:0 auto 128rpx;display: block;}
 
-      
-      .login-code {
-        height: 38px;
-        float: right;
-      
-        .login-code-img {
-          height: 38px;
-          position: absolute;
-          margin-left: 10px;
-          width: 200rpx;
-        }
-      }
-    }
-// .image{width: 32rpx;height: 32rpx;margin-right: 14rpx;}
-.input_ye image{width: 34rpx;height: 18rpx;}
-.codess{font-size: 34rpx;color: $com-cd3;flex: 0 0 auto;min-width: 200rpx;text-align: center;border-left: 2rpx solid #CDCDCD;}
-.codes{background: none;font-size: 28rpx;flex: 0 0 auto;width: 180rpx;text-align: center;border-left: 2rpx solid #CDCDCD;}
-.login_box{display: flex;align-items: center;}
-.login_boxl{width:130rpx;font-size: 34rpx;color: #343434;border-right: 2rpx solid #CDCDCD;}
-.login_txt{text-align: right;flex: 0 0 auto; padding:0 24rpx;
-	text{font-size: 30rrpx;color:#666666;}
-}
-.line{width: 2rpx;height: 24rpx;background: #CDCDCD;margin: 0 10rpx;}
-.login_jz{display: flex;align-items: center;justify-content: flex-end;flex: 0 0 auto;
-	image{width: 30rpx;height: 30rpx;margin-right: 12rpx;}
-	view{color: #666666;font-size: 28rpx;}
+.rbtn {height: 84rpx;margin-bottom:60rpx;font-weight: bold;font-size: 28rpx;color: #FFFFFF;display: flex;align-items: center;justify-content: center;background: #0156FE;
+border-radius: 10rpx;
+	.vxtab{width: 38rpx;height: 32rpx;margin-right: 18rpx;}
+	.zhtab{width: 30rpx;height: 34rpx;margin-right: 22rpx;}
+	&.btna{background: #D9E6FF;color: #0156FE;}
 }
-// app
+.line{width: 60rpx;height: 6rpx;background: #CDCDCD;margin: 0 auto 60rpx;}
 </style>

+ 247 - 160
property_ui/pages/register.vue

@@ -1,183 +1,257 @@
 <template>
-  <view class="normal-login-container">
-    <view class="logo-content align-center justify-center flex">
-      <image style="width: 100rpx;height: 100rpx;" :src="globalConfig.appInfo.logo" mode="widthFix">
-      </image>
-      <text class="title">若依移动端注册</text>
-    </view>
-    <view class="login-form-content">
-      <view class="input-item flex align-center">
-        <view class="iconfont icon-user icon"></view>
-        <input v-model="registerForm.username" class="input" type="text" placeholder="请输入账号" maxlength="30" />
-      </view>
-      <view class="input-item flex align-center">
-        <view class="iconfont icon-password icon"></view>
-        <input v-model="registerForm.password" type="password" class="input" placeholder="请输入密码" maxlength="20" />
-      </view>
-      <view class="input-item flex align-center">
-        <view class="iconfont icon-password icon"></view>
-        <input v-model="registerForm.confirmPassword" type="password" class="input" placeholder="请输入重复密码" maxlength="20" />
-      </view>
-      <view class="input-item flex align-center" style="width: 60%;margin: 0px;" v-if="captchaEnabled">
-        <view class="iconfont icon-code icon"></view>
-        <input v-model="registerForm.code" type="number" class="input" placeholder="请输入验证码" maxlength="4" />
-        <view class="login-code"> 
-          <image :src="codeUrl" @click="getCode" class="login-code-img"></image>
-        </view>
-      </view>
-      <view class="action-btn">
-        <button @click="handleRegister()" class="register-btn cu-btn block bg-blue lg round">注册</button>
-      </view>
-    </view>
-    <view class="xieyi text-center">
-      <text @click="handleUserLogin" class="text-blue">使用已有账号登录</text>
-    </view>
+  <view class="regbox">
+	  <image :src="lbg" class="navbg"></image>
+	  <image :src="fbg" class="fbg"></image>
+	  <view class="wymain">
+		  <view class="head">
+		  	<view class="htit">你好,</view>
+		  	<view class="htit">欢迎注册智慧社区平台</view>
+		  	<view class="htxt" @click="getlogin">已有账号?<text>立即登录</text></view>
+		  </view>
+		    <view class="flex1" style="position: relative;">
+		  	  <!-- 手机号登录 -->
+		  	  <view class="login-form-content">
+		  
+		  	  	<view class="input-item">
+		  	  		<view class="login_tit">手机号码</view>
+		  	  		<view class="login_box">
+		  	  			<!-- <view class="login_boxl">+86</view> -->
+		  	  			 <input  v-model="datainfo.username" class="input" type="text" placeholder="请输入登录账号" maxlength="30" />
+		  	  		</view>
+		  	  	</view>
+				<view  class="input-item">
+					<view class="login_tit">验证码</view>
+					 <view style="display: flex;align-items: center;">
+						 <input v-model="duancode" type="code" class="input" placeholder="请输入短信验证码" maxlength="20" />
+						 <view v-if="timefalg" class="codes">重新发送{{time}}s</view>
+						 <view v-else class="codess" @click="getsendCode">发送验证码</view>
+					 </view>
+				</view>
+		  	  	<view class="input-item" >
+		  	  		<view class="login_tit">密码</view>
+		  	  		 <view class="login_box">
+		  	  			 <uni-easyinput :inputBorder="false" type="password" v-model="datainfo.password" placeholder="请输入密码" />
+		  	  		 </view>
+		  	  	</view>
+				<view class="titico">*密码必须包含数字、大小写字母、特殊符号且大于8位</view>
+		  	  	<!-- <view class="input-item flex align-center" style="width: 60%;margin: 0px;margin-bottom: 24rpx;" v-if="captchaEnabled">
+		  	  	  <input v-model="tucode" type="number" class="input" placeholder="请输入验证码" maxlength="4" />
+		  	  	  <view class="login-code"> 
+		  	  	    <image :src="codeUrl" @click="getCode" class="login-code-img"></image>
+		  	  	  </view  >
+		  	  	</view> -->
+		  	  	
+		  	    <button v-if="captchaEnabled"  type="primary" class=" rbtn " :class="tucode&&datainfo.username&&datainfo.password?'btn2':'btn'"  @click="getRegisterFn">注册</button>
+		  	    <button v-else type="primary" class=" rbtn" :class="datainfo.username&&datainfo.password?'btn2':'btn'"   @click="getRegisterFn">注册</button>
+		  	  </view>
+		  	  
+		  	  <!-- 账号密码登录 -->
+		  		<view class="lread" @click="checkflag=!checkflag">
+		  			<view class="lreadl">
+		  				<image :src="checkimg" v-if="checkflag"></image>
+		  				<image :src="pnicon" v-else></image>
+		  			</view>
+		  			<view class="tit">我已阅读并同意<text @click.stop="handlePrivacy">服务协议、</text><text @click.stop="handlePrivacy">隐私政策</text></view>
+		  		</view>
+		  		 <!-- <view class="bbcode">版本号:ZXY_YY_1.3</view> -->
+		    </view>
+	  </view>
+	  
+	  <!-- <view class="rtxt mt26" @click="getregister">还没账号?去申请注册</view> -->
   </view>
 </template>
 
 <script>
-  import { getCodeImg, register } from '@/api/login'
-
+	import {getRegisterFn,sendSmszcOnly} from "@/api/login.js"
+	import { getToken } from '@/utils/auth'
   export default {
-    data() {
-      return {
-        codeUrl: "",
-        captchaEnabled: true,
-        globalConfig: getApp().globalData.config,
-        registerForm: {
-          username: "",
-          password: "",
-          confirmPassword: "",
-          code: "",
-          uuid: ''
-        }
-      }
-    },
-    created() {
-      this.getCode()
+	  components:{
+		  
+	  },
+	data(){
+		return{
+			lbg:require('@/static/images/mine/lbg.png'),
+			fbg:require('@/static/images/mine/fbg.png'),
+			ldicon:require('@/static/images/mine/ldicon.png'),
+			checkimg:require('@/static/images/mine/lcicon.png'),
+			rimg:require('@/static/images/mine/rimg.png'),
+			pnicon:require('@/static/images/mine/pnicon.png'),
+			checkflag:true,
+			captchaEnabled: false,
+			duancode:'',//短信验证码
+			checkeye:false,
+			tucode:'',
+			codeUrl:'',
+			time:'',
+			timefalg:'',
+			datainfo: {
+				username: "",
+				code: "",
+				password:'',
+			},
+			timer:""
+		}
+	},
+	
+	methods:{
+		getlogin(){
+			this.$tab.redirectTo(`/pages/tlogin`)
+		},
+		handlePrivacy(){
+			this.$tab.navigateTo(`/pages/agreement`)  
+		},
+		// 获取短信验证码
+		getsendCode(){
+			var that=this;
+			if (!this.datainfo.username ) {
+				that.$toast("请输入手机号")
+				return
+			}
+			let regphone = /^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$/
+			// 座机号
+			let reg1=/^(0\d{2,3})-?(\d{7,8})$/
+			if (this.datainfo.username && !regphone.test(this.datainfo.username)) {
+				that.$toast("请输入正确的手机号")
+				return
+			}
+			var params={
+				'username':this.datainfo.username
+			}
+				// getSMS();
+				return
+			sendSmszcOnly(params).then(res=>{
+				if (res.code == 200) {
+					// 发送验证码
+					that.$toast("发送成功")
+					that.time=60;
+					that.timefalg=true;
+					that.setTimein()
+				} else {
+					that.$toast(res.msg)
+				}
+			})
+		},
+		// 验证码倒计时
+		setTimein(){
+			var that=this;
+			clearInterval(that.timer)
+			that.timer=setInterval(()=>{
+				if(that.time<=1){
+					that.timefalg=false;
+					that.time=60;
+					clearInterval(that.timer)
+				}
+				that.time=that.time-1;
+			},1000)
+		},
+		getRegisterFn(){
+			var that=this;
+					var params=this.datainfo;
+					// if(!params.nickName){
+					// 	this.$toast("请输入用户名")
+					// 	return
+					// }
+					if(!params.phonenumber){
+						this.$toast("请输入手机号")
+						return
+					}
+					// 验证手机号
+					let regphone = /^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$/;
+					if(!regphone.test(params.phonenumber)){
+						this.$toast('请输入正确的手机号')
+						return
+					}
+					if(!params.password){
+						this.$toast("请输入密码")
+						return
+					}
+					params.userName=params.phonenumber;
+					getRegisterFn(params).then(res=>{
+						if(res.code==200){
+							that.$toast("注册成功")
+							setTimeout(function(){
+								that.$tab.reLaunch(`/pages/login`)
+							},1200)
+						}
+					})
+		},
+	},
+	
+	onLoad: function() {	
     },
-    methods: {
-      // 用户登录
-      handleUserLogin() {
-        this.$tab.navigateTo(`/pages/login`)
-      },
-      // 获取图形验证码
-      getCode() {
-        getCodeImg().then(res => {
-          this.captchaEnabled = res.captchaEnabled === undefined ? true : res.captchaEnabled
-          if (this.captchaEnabled) {
-            this.codeUrl = 'data:image/gif;base64,' + res.img
-            this.registerForm.uuid = res.uuid
-          }
-        })
-      },
-      // 注册方法
-      async handleRegister() {
-        if (this.registerForm.username === "") {
-          this.$modal.msgError("请输入您的账号")
-        } else if (this.registerForm.password === "") {
-          this.$modal.msgError("请输入您的密码")
-        } else if (this.registerForm.confirmPassword === "") {
-          this.$modal.msgError("请再次输入您的密码")
-        } else if (this.registerForm.password !== this.registerForm.confirmPassword) {
-          this.$modal.msgError("两次输入的密码不一致")
-        } else if (this.registerForm.code === "" && this.captchaEnabled) {
-          this.$modal.msgError("请输入验证码")
-        } else {
-          this.$modal.loading("注册中,请耐心等待...")
-          this.register()
-        }
-      },
-      // 用户注册
-      async register() {
-        register(this.registerForm).then(res => {
-          this.$modal.closeLoading()
-          uni.showModal({
-          	title: "系统提示",
-          	content: "恭喜你,您的账号 " + this.registerForm.username + " 注册成功!",
-          	success: function (res) {
-          		if (res.confirm) {
-                uni.redirectTo({ url: `/pages/login` });
-          		}
-          	}
-          })
-        }).catch(() => {
-          if (this.captchaEnabled) {
-            this.getCode()
-          }
-        })
-      },
-      // 注册成功后,处理函数
-      registerSuccess(result) {
-        // 设置用户信息
-        this.$store.dispatch('GetInfo').then(res => {
-          this.$tab.reLaunch('/pages/index')
-        })
-      }
-    }
   }
 </script>
 
-<style lang="scss">
-  page {
-    background-color: #ffffff;
-  }
-
-  .normal-login-container {
-    width: 100%;
-
-    .logo-content {
-      width: 100%;
-      font-size: 21px;
-      text-align: center;
-      padding-top: 15%;
-
-      image {
-        border-radius: 4px;
+<style lang="scss" scoped>
+.navbg{width: 100%;height: 100vh;}
+.fbg{width: 100%;height: 750rpx;position: absolute;bottom: 0;left: 0;}
+.wymain{z-index: 2;position: relative;padding: 70rpx 60rpx;}
+.headimg{width: 136rpx;height: 136rpx;margin:0 auto 36rpx;}
+.titico{font-weight: 500;font-size: 24rpx;color: #FF6969;margin-top: 20rpx;}
+.head{margin-bottom: 64rpx;
+	.htit{font-weight: bold;font-size: 48rpx;color: #0156FE;line-height: 60rpx;}
+	.htxt{font-weight: 500;font-size: 24rpx;color: #666666;margin-top: 30rpx;
+		text{color: #0156FE;}
+	}
+}
+.mzimg{width: 100rpx;height: 44rpx;margin: 0 auto ;}
+.regbox /deep/ .uni-easyinput__content{background-color: transparent !important;}
+.regbox /deep/ .uni-easyinput__content-input{font-size: 30rpx !important;padding-left: 0 !important;line-height: 80rpx;height: 80rpx;}
+.regbox /deep/ .uni-input-placeholder{font-size: 30rpx !important;padding-left: 0 !important;color: #808080;}
+.rtxt{font-size: 30rpx;font-weight: 500;
+color: $com-cd3;text-align: center;}
+.bbcode{position: absolute;width: 100%;text-align: center;left: 0;bottom: -80rpx;font-size: 24rpx;color: #666666;}
+.lread{
+	display: flex;align-items: flex-start;justify-content: center;
+	.lreadl{padding-top: 4rpx;
+		image{width: 22rpx;height: 22rpx;margin-right: 12rpx;}
+	}
+	.tit{font-size: 26rpx;font-weight: 500;color: #666666;
+	text{color:#4888FA;padding: 0 6rpx;font-weight: 500;}
+}
+}
+.tab{
+	.tabtit{font-size: 30rpx;font-weight: 500;color: #666666;padding: 0 24rpx;position: relative;
+	&.act{color: $com-cd3;font-weight: bold;}
+		&::before{content: '';position: absolute;left: 0;top: 50%;margin-top: -10rpx;width: 2rpx;height: 20rpx;background: #DADADA;}
+		&:first-child::before{display: none;}
+	}
+	
+}
+.rbtn {height: 84rpx;margin: 120rpx 0 24rpx;font-weight: bold;font-size: 28rpx;color: #FFFFFF;line-height: 84rpx;
+		&.btn{background: #9a9c9e;color: #ffffff;}
+		&.btn2{background: $com-cd3;color: #ffffff;}
       }
-
-      .title {
-        margin-left: 10px;
-      }
-    }
-
-    .login-form-content {
-      text-align: center;
-      margin: 20px auto;
-      margin-top: 15%;
-      width: 80%;
-
+.login-form-content {
+      margin: 0 auto;
+      width: 100%;
+		
       .input-item {
-        margin: 20px auto;
-        background-color: #f5f6f7;
-        height: 45px;
-        border-radius: 20px;
-
+        // margin-bottom:48rpx;
+        border-bottom: 2rpx solid #CDCDCD;
+		padding: 40rpx 0 0rpx;
         .icon {
-          font-size: 38rpx;
+          font-size: 40rpx;
           margin-left: 10px;
           color: #999;
         }
-
+		.login_tit{
+			font-size: 30rpx;
+			font-weight: bold;
+			color: #343434;margin-bottom: 8rpx;
+		}
+		.login_box{display: flex;align-items: center;
+			.rimgs{width: 18rpx;height: 30rpx;flex: 0 0 auto;margin-left: 20rpx;}
+		}
         .input {
           width: 100%;
-          font-size: 14px;
-          line-height: 20px;
-          text-align: left;
-          padding-left: 15px;
+          font-size: 30rpx;
+		  height: 80rpx;
+		  line-height: 80rpx;
         }
 
       }
 
-      .register-btn {
-        margin-top: 40px;
-        height: 45px;
-      }
-
-      .xieyi {
-        color: #333;
-        margin-top: 20px;
-      }
       
       .login-code {
         height: 38px;
@@ -191,6 +265,19 @@
         }
       }
     }
-  }
-
+// .image{width: 30rpx;height: 30rpx;margin-right: 14rpx;}
+.input_ye image{width: 34rpx;height: 18rpx;}
+.codess{font-size: 28rpx;color: $com-cd3;flex: 0 0 auto;min-width: 200rpx;text-align: center;border-left: 2rpx solid #CDCDCD;}
+.codes{background: none;font-size: 28rpx;flex: 0 0 auto;width: 180rpx;text-align: center;border-left: 2rpx solid #CDCDCD;}
+.login_box{display: flex;align-items: center;}
+.login_boxl{width:130rpx;font-size: 34rpx;color: #343434;border-right: 2rpx solid #CDCDCD;}
+.login_txt{text-align: right;flex: 0 0 auto; padding:0 24rpx;
+	text{font-size: 30rrpx;color:#666666;}
+}
+.line{width: 2rpx;height: 24rpx;background: #CDCDCD;margin: 0 10rpx;}
+.login_jz{display: flex;align-items: center;justify-content: flex-end;flex: 0 0 auto;
+	image{width: 30rpx;height: 30rpx;margin-right: 12rpx;}
+	view{color: #666666;font-size: 28rpx;}
+}
+// app
 </style>

+ 395 - 0
property_ui/pages/tlogin.vue

@@ -0,0 +1,395 @@
+<template>
+  <view class="regbox" v-if="loginflag">
+	  <!-- <image :src="headimg" class="headimg flex0"></image> -->
+	  <image :src="lbg" class="navbg"></image>
+	  <image :src="fbg" class="fbg"></image>
+	  <view class="wymain">
+		  <view class="head">
+		  	<view class="htit">你好,</view>
+		  	<view class="htit">欢迎登录智慧社区平台</view>
+		  	<view class="htxt" @click="getregister">还没有账号?<text>立即注册</text></view>
+		  </view>
+		    <view class="flex1" style="position: relative;">
+		  
+		  	  <!-- <view class="tab flexcc">
+		  		  <block v-for="(ite,idx) in tablist" :key="idx">
+		  			  <view v-if="ite.val!=1"  class="tabtit" :class="tabidx==ite.val?'act':''" @click="getTab(ite.val)">
+		  			  {{ite.tit}}</view> 
+		  		  </block>
+		  		 
+		  	  </view> -->
+		  	  <!-- 手机号登录 -->
+		  	  <view class="login-form-content" v-if="tabidx!=1">
+		  
+		  	  	<view class="input-item">
+		  	  		<view class="login_tit">手机号码</view>
+		  	  		<view class="login_box">
+		  	  			<!-- <view class="login_boxl">+86</view> -->
+		  	  			 <input  v-model="loginForm.username" class="input" type="text" placeholder="请输入登录账号" maxlength="30" />
+		  	  		</view>
+		  	  	</view>
+		  	  	<block v-if="tabidx==2">
+		  	  		<view class="input-item" >
+		  				<view class="flexcj">
+		  					<view class="login_tit">密码</view>
+		  					<view class="login_jz" @click="jzflag=!jzflag">
+		  						<image :src="pcicon" v-if="jzflag"></image>
+		  						<image :src="pnicon" v-else></image>
+		  						<view>记住密码</view>
+		  					</view>
+		  				</view>
+		  	  			
+		  	  			 <view class="login_box">
+		  					 <uni-easyinput :inputBorder="false" type="password" v-model="loginForm.password" placeholder="请输入密码" />
+		  	  				<!-- <input v-if="checkeye" v-model="loginForm.password" type="text"  class="input" placeholder="请输入密码" maxlength="20" />
+		  	  				 <input v-else v-model="loginForm.password" type="password"  class="input" placeholder="请输入密码" maxlength="20" /> -->
+		  					 <view class="line flex0"></view>
+		  					 <view class="login_txt" @click="getForget"><text>忘记密码</text></view>
+		  	  			 </view>
+		  	  		</view>
+		  	  		<view class="input-item flex align-center" style="width: 60%;margin: 0px;margin-bottom: 24rpx;" v-if="captchaEnabled">
+		  	  		  <input v-model="tucode" type="number" class="input" placeholder="请输入验证码" maxlength="4" />
+		  	  		  <view class="login-code"> 
+		  	  		    <image :src="codeUrl" @click="getCode" class="login-code-img"></image>
+		  	  		  </view  >
+		  	  		</view>
+		  	  		 
+		  	  	</block>
+		  	  	<!-- <view v-if="tabidx==0" class="input-item" style="margin-bottom: 24rpx;" >
+		  	  		<view class="login_tit">验证码</view>
+		  	  		 <view style="display: flex;align-items: center;">
+		  	  			 <input v-model="duancode" type="code" class="input" placeholder="请输入短信验证码" maxlength="20" />
+		  	  			 <view v-if="timefalg" class="codes">重新发送{{time}}s</view>
+		  	  			 <view v-else class="codess" @click="getsendCode">发送验证码</view>
+		  	  		 </view>
+		  	  	</view> -->
+		  	    <button v-if="captchaEnabled"  type="primary" class=" rbtn mb24 mt50" :class="tucode&&loginForm.username&&loginForm.password?'btn2':'btn'"  @click="getLogin">登录</button>
+		  	    <button v-else type="primary" class=" rbtn mb24 mt50" :class="loginForm.username&&loginForm.password?'btn2':'btn'"   @click="getLogin">登录</button>
+		  	  </view>
+		  	  <!-- 微信登录 -->
+		  	  <block v-if="tabidx==1">
+		  		  <button  type="primary" class="rbtn mb24 mt50" open-type="getUserInfo" @getuserinfo="getuserinfo" >
+		  		  	<text class="btn-txt">快捷登录</text>
+		  		  </button>
+		  	  </block>
+		  	  
+		  	  
+		  	  <!-- 账号密码登录 -->
+		  		<view class="lread" @click="checkflag=!checkflag">
+		  			<view class="lreadl">
+		  				<image :src="checkimg" v-if="checkflag"></image>
+		  				<image :src="pnicon" v-else></image>
+		  			</view>
+		  			<view class="tit">我已阅读并同意<text @click.stop="handlePrivacy">服务协议、</text><text @click.stop="handlePrivacy">隐私政策</text></view>
+		  		</view>
+		  		 <!-- <view class="bbcode">版本号:ZXY_YY_1.3</view> -->
+		    </view>
+	  </view>
+	  
+	  <!-- <view class="rtxt mt26" @click="getregister">还没账号?去申请注册</view> -->
+	  <phone-btn :type="typeflag" @getPhoneNumber='getPhoneNumber' @getClose="getClose"></phone-btn>
+  </view>
+</template>
+
+<script>
+	import * as base64 from "base-64"
+	import {getweChatLogin,getInfo,getweChatOpenid,getCodeImg,getCode,sendSmsOnly} from "@/api/login.js"
+	import {getUserProfile} from "@/api/system/user.js"
+	import { getToken } from '@/utils/auth'
+	import phoneBtn from "@/components/toptab/phonebtn.vue"
+  export default {
+	  components:{
+		  phoneBtn
+	  },
+	data(){
+		return{
+			lbg:require('@/static/images/mine/lbg.png'),
+			fbg:require('@/static/images/mine/fbg.png'),
+			headimg:require('@/static/logo.png'),
+			ldicon:require('@/static/images/mine/ldicon.png'),
+			checkimg:require('@/static/images/mine/lcicon.png'),
+			ncheckimg:require('@/static/images/mine/lnicon.png'),
+			rimg:require('@/static/images/mine/rimg.png'),
+			pcicon:require('@/static/images/mine/pcicon.png'),
+			pnicon:require('@/static/images/mine/pnicon.png'),
+			checkflag:true,
+			typeflag: false,
+			loginflag:false,
+			captchaEnabled: false,
+			duancode:'',//短信验证码
+			checkeye:false,
+			tucode:'',
+			codeUrl:'',
+			time:'',
+			timefalg:'',
+			tabidx:2,
+			tablist:[{tit:'微信登录',val:1},{tit:'密码登录',val:2},],
+			loginForm: {
+				username: "",
+				code: "",
+				password:'',
+			},
+			voList:[],
+			voindex:0,
+			jzflag:false
+		}
+	},
+	
+	methods:{
+		getTab(idx){
+			this.tabidx=idx;
+		},
+
+		// 获取图形验证码
+		getCode() {
+		  getCodeImg().then(res => {
+		    this.captchaEnabled = res.captchaEnabled === undefined ? true : res.captchaEnabled
+		    if (this.captchaEnabled) {
+		      this.codeUrl = 'data:image/gif;base64,' + res.img
+		      this.loginForm.uuid = res.uuid
+		    }
+		  })
+		},
+		getForget(){
+			this.$tab.navigateTo(`/pages/mine/pwd/forgetpwd`)
+		},
+		getSchoolFn(){
+			this.$tab.navigateTo(`/mine/pages/mine/school?id=`+this.loginForm.school)
+		},
+		 getregister(){
+			 this.$tab.redirectTo(`/pages/register`)
+			 // this.$tab.navigateTo(`/mine/pages/mine/applyregister`)
+			 // this.$tab.navigateTo(`/mine/pages/mine/auth`)
+		 },
+		 getLogin(){
+			 if(!this.loginForm.username||!this.loginForm.password||(!this.tucode&& this.captchaEnabled)){
+			 	 return
+			 }
+			// let regphone = /^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$/;
+			// if(!regphone.test(this.loginForm.username)){
+			// 	this.$toast('请输入正确的手机号')
+			// 	return
+			// }
+			 // if(!this.checkflag){
+			 // 	this.$toast("请同意用户协议")
+			 // 	return
+			 // }
+			 this.loginForm.code=this.tucode;
+			 this.pwdLogin()
+		 },
+		 // 密码登录
+		 async pwdLogin() {
+		 	var that=this;
+			
+		   this.$store.dispatch('Login', this.loginForm).then((res) => {
+			   // 判断是否记住密码
+			  if(that.jzflag){
+			  	var newObj={
+			  		username:that.loginForm.username,
+			  		password:base64.encode(that.loginForm.password),
+					captchaEnabled:that.captchaEnabled,
+			  	}					  
+			  	uni.setStorageSync('account', JSON.parse(JSON.stringify(newObj)))
+			  }else{
+			  	uni.removeStorageSync('account')
+			  } 
+		     this.$modal.closeLoading()
+		 		  this.$toast('登录成功')
+		 		  setTimeout(function(){
+		 			  that.loginSuccess()
+		 		  },1500)
+		     
+		   }).catch((error) => {
+		    setTimeout(function(){
+		 		if (that.captchaEnabled&&that.tabidx==2) {
+		 			that.getCode()
+				}
+		 	},1000)
+		   })
+		 },
+		 handlePrivacy(){
+			this.$tab.navigateTo(`/pages/agreement`)  
+		 },
+		 getClose() {
+		 	this.typeflag = false
+		 },
+		 btns() {
+		 	
+		 },
+		 getPhoneNumber(data){
+			 var that=this;
+			 var params=data
+			 that.$store.dispatch('Login', params).then(() => {
+			   that.$modal.closeLoading()
+			 	that.$toast('登录成功')
+				that.typeflag=false;
+			   that.loginSuccess(data)
+			 }).catch(() => {
+			   // if (this.captchaEnabled) {
+			   //   this.getCode()
+			   // }
+			 })
+		 },
+		 // 登录成功后,处理函数
+		 loginSuccess(result) {
+		   // 设置用户信息
+		   var that=this;
+		   this.$store.dispatch('GetInfo').then(res => {
+			   this.$tab.reLaunch('/pages/index') 
+		   })
+		 },
+		 
+		 async getuserinfo(e) {
+			 // if(!this.checkflag){
+				//  this.$toast("请同意用户协议")
+				//  return
+			 // }
+			 // 判断是不是有学校
+		 	const {iv,encryptedData} = e.detail
+		 	const {nickName, avatarUrl, ...userInfo} = e.detail.userInfo
+			// console.log(e.detail)
+		 	try{
+				uni.login({
+                    provider: 'weixin',
+                    success: (res) => {
+                        // 获取用户信息
+						if(res.code){
+							this.avatarUrl = avatarUrl
+							this.nickName = nickName
+							this.code = res.code
+							this.userInfo =e.detail.userInfo
+							uni.setStorageSync('userInfo', e.detail.userInfo)
+							uni.setStorageSync('lcheckflag',true)
+							this.typeflag=true;
+						}
+                    }
+                })
+		 	} catch(e){
+		 		//TODO handle the exception
+		 	}
+		 },
+	},
+	
+	onLoad: function() {
+		this.getCode()
+		if (getToken()) {
+			this.$tab.reLaunch('/pages/index/index') 
+			// 判断有什么角色
+		} else {
+			this.loginflag=true;
+			// this.getCode()
+			// if(uni.getStorageSync('lcheckflag')){
+			// 	this.checkflag=true
+			// }else{
+			// 	this.checkflag=false
+			// }
+		  if(uni.getStorageSync('account')){
+		  	var newObj=JSON.parse(JSON.stringify(uni.getStorageSync('account')))
+		  	this.loginForm.username=newObj.username;
+		  	this.loginForm.password=base64.decode(newObj.password);
+		  	this.jzflag=true;
+		  }
+		  
+		}	
+    },
+  }
+</script>
+
+<style lang="scss" scoped>
+.navbg{width: 100%;height: 100vh;}
+.fbg{width: 100%;height: 750rpx;position: absolute;bottom: 0;left: 0;}
+.wymain{z-index: 2;position: relative;padding: 70rpx 60rpx;}
+.headimg{width: 136rpx;height: 136rpx;margin:0 auto 36rpx;}
+.head{margin-bottom: 64rpx;
+	.htit{font-weight: bold;font-size: 48rpx;color: #0156FE;line-height: 60rpx;}
+	.htxt{font-weight: 500;font-size: 24rpx;color: #666666;margin-top: 30rpx;
+		text{color: #0156FE;}
+	}
+}
+.mzimg{width: 100rpx;height: 44rpx;margin: 0 auto ;}
+.regbox /deep/ .uni-easyinput__content{background-color: transparent !important;}
+.regbox /deep/ .uni-easyinput__content-input{font-size: 30rpx !important;padding-left: 0 !important;line-height: 80rpx;height: 80rpx;}
+.regbox /deep/ .uni-input-placeholder{font-size: 30rpx !important;padding-left: 0 !important;color: #808080;}
+.rtxt{font-size: 30rpx;font-weight: 500;
+color: $com-cd3;text-align: center;}
+.bbcode{position: absolute;width: 100%;text-align: center;left: 0;bottom: -80rpx;font-size: 24rpx;color: #666666;}
+.lread{
+	display: flex;align-items: flex-start;justify-content: center;
+	.lreadl{padding-top: 4rpx;
+		image{width: 22rpx;height: 22rpx;margin-right: 12rpx;}
+	}
+	.tit{font-size: 26rpx;font-weight: 500;color: #666666;
+	text{color:#4888FA;padding: 0 6rpx;font-weight: 500;}
+}
+}
+.tab{
+	.tabtit{font-size: 30rpx;font-weight: 500;color: #666666;padding: 0 24rpx;position: relative;
+	&.act{color: $com-cd3;font-weight: bold;}
+		&::before{content: '';position: absolute;left: 0;top: 50%;margin-top: -10rpx;width: 2rpx;height: 20rpx;background: #DADADA;}
+		&:first-child::before{display: none;}
+	}
+	
+}
+.rbtn {height: 84rpx;margin: 120rpx 0 24rpx;font-weight: bold;font-size: 28rpx;color: #FFFFFF;line-height: 84rpx;
+		&.btn{background: #9a9c9e;color: #ffffff;}
+		&.btn2{background: $com-cd3;color: #ffffff;}
+      }
+.login-form-content {
+      margin: 0 auto;
+      width: 100%;
+		
+      .input-item {
+        // margin-bottom:48rpx;
+        border-bottom: 2rpx solid #CDCDCD;
+		padding: 40rpx 0 0rpx;
+        .icon {
+          font-size: 40rpx;
+          margin-left: 10px;
+          color: #999;
+        }
+		.login_tit{
+			font-size: 30rpx;
+			font-weight: bold;
+			color: #343434;margin-bottom: 8rpx;
+		}
+		.login_box{display: flex;align-items: center;
+			.rimgs{width: 18rpx;height: 30rpx;flex: 0 0 auto;margin-left: 20rpx;}
+		}
+        .input {
+          width: 100%;
+          font-size: 30rpx;
+		  height: 80rpx;
+		  line-height: 80rpx;
+        }
+
+      }
+
+      
+      .login-code {
+        height: 38px;
+        float: right;
+      
+        .login-code-img {
+          height: 38px;
+          position: absolute;
+          margin-left: 10px;
+          width: 200rpx;
+        }
+      }
+    }
+// .image{width: 30rpx;height: 30rpx;margin-right: 14rpx;}
+.input_ye image{width: 34rpx;height: 18rpx;}
+.codess{font-size: 34rpx;color: $com-cd3;flex: 0 0 auto;min-width: 200rpx;text-align: center;border-left: 2rpx solid #CDCDCD;}
+.codes{background: none;font-size: 28rpx;flex: 0 0 auto;width: 180rpx;text-align: center;border-left: 2rpx solid #CDCDCD;}
+.login_box{display: flex;align-items: center;}
+.login_boxl{width:130rpx;font-size: 34rpx;color: #343434;border-right: 2rpx solid #CDCDCD;}
+.login_txt{text-align: right;flex: 0 0 auto; padding:0 24rpx;
+	text{font-size: 30rrpx;color:#666666;}
+}
+.line{width: 2rpx;height: 24rpx;background: #CDCDCD;margin: 0 10rpx;}
+.login_jz{display: flex;align-items: center;justify-content: flex-end;flex: 0 0 auto;
+	image{width: 30rpx;height: 30rpx;margin-right: 12rpx;}
+	view{color: #666666;font-size: 28rpx;}
+}
+// app
+</style>

+ 2 - 2
property_ui/permission.js

@@ -4,8 +4,8 @@ import { getToken } from '@/utils/auth'
 const loginPage = "/pages/login"
   
 // 页面白名单
-const whiteList = ['/pages/index',
-  '/pages/login', '/pages/register', '/pages/common/webview/index'
+const whiteList = ['/pages/index','/pages/agreement',
+  '/pages/login','/pages/tlogin', '/pages/register', '/pages/common/webview/index'
 ]
 
 // 检查地址白名单

BIN
property_ui/static/images/home/adr.png


BIN
property_ui/static/images/home/adra.png


BIN
property_ui/static/images/home/adrbg.png


BIN
property_ui/static/images/home/conta.png


BIN
property_ui/static/images/home/contb.png


BIN
property_ui/static/images/home/contc.png


BIN
property_ui/static/images/home/contd.png


BIN
property_ui/static/images/home/htaba.png


BIN
property_ui/static/images/home/htabb.png


BIN
property_ui/static/images/home/htabc.png


BIN
property_ui/static/images/home/htabd.png


BIN
property_ui/static/images/home/htabe.png


BIN
property_ui/static/images/home/htabf.png


BIN
property_ui/static/images/home/htabg.png


BIN
property_ui/static/images/home/htabh.png


BIN
property_ui/static/images/home/htabi.png


BIN
property_ui/static/images/home/htabj.png


BIN
property_ui/static/images/home/htabk.png


BIN
property_ui/static/images/home/htabl.png


BIN
property_ui/static/images/home/htabm.png


BIN
property_ui/static/images/home/htabn.png


BIN
property_ui/static/images/home/htabo.png


BIN
property_ui/static/images/home/htabp.png


BIN
property_ui/static/images/home/rimg.png


BIN
property_ui/static/images/home/tips.png


BIN
property_ui/static/images/home/up.png


BIN
property_ui/static/images/mine/fbg.png


BIN
property_ui/static/images/mine/icon_dl_xs.png


BIN
property_ui/static/images/mine/icon_dl_yc.png


BIN
property_ui/static/images/mine/icon_dlzc_sjhm_xl.png


BIN
property_ui/static/images/mine/lbg.png


BIN
property_ui/static/images/mine/lcicon.png


BIN
property_ui/static/images/mine/vxtab.png


BIN
property_ui/static/images/mine/zhtab.png


BIN
property_ui/static/images/navbg.png


BIN
property_ui/static/logo.png


BIN
property_ui/static/logo200.png


+ 1 - 1
property_ui/static/scss/colorui.css

@@ -11,7 +11,7 @@
         main 初始化
  ==================== */
 body {
-	background-color: #f1f1f1;
+	background-color: #ffffff;
 	font-size: 28upx;
 	color: #333333;
 	font-family: Helvetica Neue, Helvetica, sans-serif;

+ 26 - 0
property_ui/static/style.css

@@ -0,0 +1,26 @@
+.flex{display: flex;}
+.flexc{display: flex;align-items: center;}
+.flexcc{display: flex;align-items: center;justify-content: center;}
+.flex1{flex: 1;}
+.flex0{flex: 0 0 auto;}
+.flex01{flex: 0 1 auto;}
+.flexcj{display: flex;align-items: center;justify-content: space-between;}
+
+
+.clearf::after {
+  content: "";
+  display: block;
+  clear: both;
+}
+
+.overa{overflow: auto;}
+.over{overflow: hidden;white-space: nowrap;text-overflow: ellipsis;}
+.overtwo{word-break: break-all;text-overflow: ellipsis;overflow: hidden;display: -webkit-box;-webkit-line-clamp: 2;-webkit-box-orient: vertical;white-space: normal;}
+.navbg{width: 100%;position: absolute;left: 0;right: 0;top: 0;z-index: -1;}
+
+
+.mb4{margin-bottom: 8rpx;}
+.mb9{margin-bottom: 18rpx !important;}
+.mb14{margin-bottom: 28rpx;}
+.mb16{margin-bottom: 32rpx;}
+.mb22{margin-bottom: 44rpx;}

+ 2 - 1
property_ui/uni.scss

@@ -2,7 +2,8 @@
  * uni-app内置的常用样式变量
  */
 //公共的颜色
-$com-cd3: #0391FD;
+// $com-cd3: #0391FD;
+$com-cd3: #0156FE;
 /* 行为相关颜色 */
 $uni-color-primary: #007aff;
 $uni-color-success: #4cd964;