Procházet zdrojové kódy

泰山云服务-工单系统

dylan před 2 roky
rodič
revize
2c83f2a4ef

+ 16 - 0
api/user.js

@@ -1,5 +1,20 @@
 import http from '@/http/api.js'
 
+const userReg =(tenantId, username, password) =>{
+	return http.request({
+		url: '/galaxy-business/open/user/reg',
+		method: 'POST',
+		header: {
+			'Tenant-Id': tenantId
+		},
+		params: {
+			tenantId,
+			username,
+			password
+		}
+	})
+}
+
 // 获取token
 const token = (tenantId, username, password, type) => {
 	  
@@ -36,6 +51,7 @@ const userInfo = () => {
 // }
 
 export default {
+	userReg,
 	token,
 	userInfo,
 }

+ 3 - 1
common/setting.js

@@ -6,6 +6,8 @@ module.exports = {
 	name: 'tscloudywxtxjgd',
 	// 应用logo,支持本地路径和网络路径
 	logo: '/static/images/logo.png',
+	//租户ID
+	tenantId: '727181',
 	// 版本号
 	version: '1.0.0',
 	// 客户端类型
@@ -32,4 +34,4 @@ module.exports = {
 	clientId: 'tscloudywxt_app_xjgd',
 	// 客户端密钥
 	clientSecret: 'tscloudywxt_app_xjgd_secret_82828800',
-}
+}

+ 24 - 0
pages.json

@@ -488,6 +488,14 @@
 				"navigationStyle": "custom"
 			}
 		},
+		{
+			"path": "pages/login/login-register",
+			"style": {
+				"navigationBarTitleText": "注册",
+				"enablePullDownRefresh": false,
+				"navigationStyle": "custom"
+			}
+		}, 
 		{
 			"path": "pages/user/center",
 			"style": {
@@ -504,6 +512,22 @@
 				"navigationStyle": "custom"
 			}
 		}, 
+		{
+			"path": "pages/user/privacy-policy",
+			"style": {
+				"navigationBarTitleText": "个人资料",
+				"enablePullDownRefresh": false,
+				"navigationStyle": "custom"
+			}
+		}, 
+		{
+			"path": "pages/user/user-agreement",
+			"style": {
+				"navigationBarTitleText": "个人资料",
+				"enablePullDownRefresh": false,
+				"navigationStyle": "custom"
+			}
+		}, 
 		{
 			"path": "pages/user/about",
 			"style": {

+ 97 - 7
pages/check-order/orderadd.vue

@@ -16,10 +16,10 @@
 		</uni-nav-bar>
 		<uni-forms ref="baseForm" :model="formData" :rules="rules">
 			<uni-group>
-				<view class="view-flex-inline">
+				<!-- 			<view class="view-flex-inline">
 					<text style="color: black;font-size: 1rem;margin-bottom: 10px;">工单类型</text>
-				</view>
-				<uni-forms-item v-if="permission.orgAdmin" name="orderType" label-width="0px" required>
+				</view> -->
+				<!-- 				<uni-forms-item v-if="permission.orgAdmin" name="orderType" label-width="0px" required>
 					<uni-data-checkbox v-model="formData.orderType" :localdata="orderTypeOption.items">
 					</uni-data-checkbox>
 				</uni-forms-item>
@@ -28,14 +28,14 @@
 						<text class="text" style="color: gray;">当前角色仅支持创建维修工单</text>
 					</view>
 				</uni-forms-item>
-				<uni-forms-item v-else label-width="0px">
+				<uni-forms-item v-else label-width="0px"> -->
 				</uni-forms-item>
 				<view class="view-flex-inline">
-					<text style="color: black;font-size: 1rem;margin-bottom: 10px;">问题描述</text>
+					<text style="color: black;font-size: 1rem;margin-bottom: 10px;">工单描述</text>
 				</view>
 				<uni-forms-item name='orderDesc' label-width="0px" required>
 					<uni-easyinput :styles="styles" type="textarea" :autoHeight="true" v-model="formData.orderDesc"
-						placeholder="请描述您遇到的问题" />
+						placeholder="录入工单描述内容" />
 				</uni-forms-item>
 			</uni-group>
 			<uni-card title="拍摄照片" extra="点击下方按钮开始拍摄" :is-shadow="false">
@@ -98,6 +98,96 @@
 					</view>
 				</view>
 			</uni-card>
+			<uni-card title="指定人员" :is-shadow="false">
+				<view class="view-flex-rs-flex-wrap">
+					<view v-for="(item, index) in orderVideos" :key="index" class="view-flex-cc" style="width: 80px;">
+						<view class="img-container">
+							<view class="note-image-box">
+								<view class="note-image-item">
+									<view class="close-icon" @click="onVideoDel(index)">
+										<uni-icons type="closeempty" size="18" color="#fff"></uni-icons>
+									</view>
+									<view class="image-box">
+										<image :src="videoImg" mode="widthFix" @click="openVideo(item)">
+										</image>
+									</view>
+								</view>
+							</view>
+						</view>
+					</view>
+					<view class="view-flex-cc" style="width: 80px;">
+						<view class="img-container">
+							<view class="note-image-box">
+								<view class="note-image-item" @click="onCheckVideoAdd()">
+									<view class="image-box">
+										<uni-icons type="plusempty" size="50" color="#eee"></uni-icons>
+									</view>
+								</view>
+							</view>
+						</view>
+					</view>
+				</view>
+			</uni-card>
+			<uni-card title="时限设定" :is-shadow="false">
+				<view class="view-flex-rs-flex-wrap">
+					<view v-for="(item, index) in orderVideos" :key="index" class="view-flex-cc" style="width: 80px;">
+						<view class="img-container">
+							<view class="note-image-box">
+								<view class="note-image-item">
+									<view class="close-icon" @click="onVideoDel(index)">
+										<uni-icons type="closeempty" size="18" color="#fff"></uni-icons>
+									</view>
+									<view class="image-box">
+										<image :src="videoImg" mode="widthFix" @click="openVideo(item)">
+										</image>
+									</view>
+								</view>
+							</view>
+						</view>
+					</view>
+					<view class="view-flex-cc" style="width: 80px;">
+						<view class="img-container">
+							<view class="note-image-box">
+								<view class="note-image-item" @click="onCheckVideoAdd()">
+									<view class="image-box">
+										<uni-icons type="plusempty" size="50" color="#eee"></uni-icons>
+									</view>
+								</view>
+							</view>
+						</view>
+					</view>
+				</view>
+			</uni-card>
+			<uni-card title="地图位置添加" :is-shadow="false">
+				<view class="view-flex-rs-flex-wrap">
+					<view v-for="(item, index) in orderVideos" :key="index" class="view-flex-cc" style="width: 80px;">
+						<view class="img-container">
+							<view class="note-image-box">
+								<view class="note-image-item">
+									<view class="close-icon" @click="onVideoDel(index)">
+										<uni-icons type="closeempty" size="18" color="#fff"></uni-icons>
+									</view>
+									<view class="image-box">
+										<image :src="videoImg" mode="widthFix" @click="openVideo(item)">
+										</image>
+									</view>
+								</view>
+							</view>
+						</view>
+					</view>
+					<view class="view-flex-cc" style="width: 80px;">
+						<view class="img-container">
+							<view class="note-image-box">
+								<view class="note-image-item" @click="onCheckVideoAdd()">
+									<view class="image-box">
+										<uni-icons type="plusempty" size="50" color="#eee"></uni-icons>
+									</view>
+								</view>
+							</view>
+						</view>
+					</view>
+				</view>
+			</uni-card>
 		</uni-forms>
 		<view class="footer">
 			<view class="control">
@@ -134,7 +224,7 @@
 		components: {},
 		data() {
 			return {
-				title: '建工单',
+				title: '建工单',
 				desc: '',
 				styles: {
 					color: '#333',

+ 61 - 23
pages/home/home.vue

@@ -19,10 +19,8 @@
 			</block>
 			<view class="view-flex-inline">
 				<uni-list style="background-color: #f7f7f7;" :border="false">
-
 					<uni-list-item v-if="isLogin" :border="false" style="background-color: #f7f7f7;" showArrow
 						:title="userName" :note="userNote" :clickable="true" @click="onUserInfoClick()" />
-
 					<uni-list-item v-else :border="false" style="background-color: #f7f7f7;" showArrow title="登录/注册"
 						note="快速登录 注册体验更多功能" :clickable="true" @click="onLoginClick()" />
 				</uni-list>
@@ -41,33 +39,70 @@
 				</view>
 			</block>
 		</uni-nav-bar>
+		<uni-card title="快捷操作">
+			<view class="view-flex-inline">
+				<!-- 					<uni-icons class="input-uni-icon" type="phone" size="18" color="coral" /> -->
+				<text class="text-under-line" style="color: coral;font-size: 1rem;"
+					@click="toShortcutCreateOrder">发起工单</text>
+				<text class="text-under-line" style="color: coral;font-size: 1rem;margin-left: 40px;"
+					@click="toShortcutCreateOrder">创建巡检保养计划</text>
+			</view>
+		</uni-card>
 
 		<uni-card title="待办工单" :thumbnail="orderLogo">
-			<uni-list v-if="permission.admin || permission.orgAdmin">
-				<uni-list-item showArrow title="会议室音响没有声音" note="2024年3月1日 12时10分" rightText="去处理" />
+			<uni-list>
+				<uni-list-item v-for="item in todoOrderList" :key="item.id">
+					<template v-slot:body>
+						<view class="list-item-block">
+							<view class="line">
+								<uni-icons type="gear" size="18" color="lightblue" />
+								<view v-if="item.orderType==1" class="text" style="width: 90%;color: gray;">
+									工单类型: <span style="margin-left: 5px;color: cornflowerblue;">维修工单</span>
+								</view>
+								<view v-else class="text" style="width: 90%;color: gray;">
+									工单类型: <span style="margin-left: 5px;color: cornflowerblue;">服务工单</span>
+								</view>
+							</view>
+							<view class="line">
+								<uni-icons type="personadd" size="18" color="lightblue" />
+								<view class="text" style="width: 90%;color: gray;">
+									工单发起人: <span
+										style="margin-left: 5px;color: cornflowerblue;">{{item.createOrderPersonName}}</span>
+								</view>
+							</view>
+							<view class="line">
+								<uni-icons type="calendar" size="18" color="lightblue" />
+								<view class="text" style="width: 90%;color: gray;">
+									发起时间: <span
+										style="margin-left: 5px;color: cornflowerblue;">{{item.createTime}}</span>
+								</view>
+							</view>
+							<view class="line">
+								<uni-icons type="help" size="18" color="lightblue" />
+								<view class="text text-ellipsis" style="width: 90%;color: gray;">
+									问题描述: <span
+										style="margin-left: 5px;color: cornflowerblue;">{{item.orderDesc}}</span>
+								</view>
+							</view>
+							<view class="line">
+								<view class="block">
+									<uni-icons type="arrow-right" size="20" color="coral" />
+								</view>
+								<view class="text text-underline" style="color: coral;margin-left: 2px;font-size: 1rem;"
+									@click="toDo(item)">
+									去处理
+								</view>
+							</view>
+						</view>
+					</template>
+				</uni-list-item>
 			</uni-list>
-			<uni-card v-else title="快捷操作">
-				<view class="view-flex-inline">
-					<uni-icons class="input-uni-icon" type="phone" size="18" color="coral" />
-					<text class="text-under-line" style="color: coral;font-size: 1rem;"
-						@click="toShortcutCreateOrder">发起工单</text>
-				</view>
-			</uni-card>
 		</uni-card>
-
-
-
 		<uni-card title="巡检保养任务" :thumbnail="checkLogo">
-			<uni-list>
+			<!-- 		<uni-list>
 				<uni-list-item showArrow title="1-10号门禁查看" note="2024年3月1日 12时10分" :clickable="true" rightText="去处理" />
-			</uni-list>
+			</uni-list> -->
 		</uni-card>
-
-
-
-
-
-
 		<uni-card :isFull="true">
 			<swiper style="height: 200px;" circular :indicator-dots="false" :autoplay="true" :interval="2000"
 				:duration="500">
@@ -136,7 +171,7 @@
 		},
 		computed: {},
 		onLoad() {
-			//console.log(JSON.stringify(this.userInfo))
+			console.log(JSON.stringify(this.userInfo))
 			this.permission.admin = false;
 			this.permission.orgAdmin = false;
 			this.permission.companyAdmin = false;
@@ -170,6 +205,8 @@
 			// 	this.timer = true;
 			// 	setTimeout(this.timeCall, 10);
 			// }
+
+			this.getTodoOrderList();
 		},
 		onUnload() {
 			//this.timer = false;
@@ -297,6 +334,7 @@
 					method: 'GET',
 					data: postData,
 				}).then(res => {
+					console.log(JSON.stringify(res))
 					that.todoOrderCount = 0;
 					if (res.data != null) {
 						that.todoOrderCount = res.data.length;

+ 30 - 8
pages/login/login-account.vue

@@ -10,26 +10,37 @@
 						大恒巡检保养工单系统
 					</text>
 				</view>
+				<view>
+					<uni-row>
+						<uni-col :span="12">
+							<view class="view-flex-inline" style="padding-left: 85rpx;font-size: 1rem;">帐号登录</view>
+						</uni-col>
+						<uni-col :span="12">
+							<view class="view-flex-inline-end"
+								style="padding-right: 85rpx;font-size: 0.6rem;color: royalblue;" @click="userRegClick">注册</view>
+						</uni-col>
+					</uni-row>
+				</view>
 				<view class="cell">
 					<view class="input-box">
 						<uIcons type="auth" size="30"></uIcons>
-						<input type="text" v-model="username" placeholder="请输入账号" class="ipt" placeholder-class="hold"
+						<input type="text" v-model="username" placeholder="请输入手机号" class="ipt" placeholder-class="hold"
 							@blur="handleInputCheck" />
 					</view>
 				</view>
 				<view class="cell">
 					<view class="input-box">
 						<uIcons type="locked" size="30"></uIcons>
-						<input type="password" v-model="password" placeholder="请输入密码" class="ipt"
+						<input type="password" v-model="password" placeholder="请输入登录密码" class="ipt"
 							placeholder-class="hold" @blur="handleInputCheck" />
 					</view>
 				</view>
-<!-- 				<view class="agree">
+				<view class="agree">
 					登录即代表同意
 					<text class="a">《用户协议》</text>
 					<text class="a">《隐私政策》</text>
-				</view> -->
+				</view>
 				<!-- <view class="tip">未注册用户验证后将自动注册并登录</view> -->
 				<view class="cell">
 					<view
@@ -64,6 +75,9 @@
 <script>
 	import md5 from '@/utils/md5.js'
 	import uIcons from '@/uni_modules/uni-icons/components/uni-icons/uni-icons.vue'
+	import {
+		 	tenantId
+		 } from '@/common/setting.js'
 	import {
 		devUrl,
 		prodUrl,
@@ -75,17 +89,19 @@
 		},
 		data() {
 			return {
-				tenantId: '000000',
+				// tenantId: '000000',
 				username: '',
 				password: '',
 				disabled: true,
 				rememberPw: false,
-			
+
 			};
 		},
 		onLoad() {
 			console.log("login+++")
-		
+			
+
+
 			// uni.getPushClientId({
 			// 		success: (res) => {
 			// 			console.log("id11111111111 "+res.cid);
@@ -112,7 +128,7 @@
 		},
 		methods: {
 			submit() {
-				this.$u.api.token(this.tenantId, this.username, md5(this.password)).then(data => {
+				this.$u.api.token(tenantId, this.username, md5(this.password)).then(data => {
 					console.log("token " + JSON.stringify(data))
 					let dt = new Date();
 					uni.setStorageSync("loginTime", dt.getTime());
@@ -142,6 +158,12 @@
 				} else {
 					this.rememberPw = false;
 				}
+			},
+			userRegClick(){
+				var url = '/pages/login/login-register';
+				uni.navigateTo({
+					url: url
+				})
 			}
 		}
 	};

+ 373 - 0
pages/login/login-register.vue

@@ -0,0 +1,373 @@
+<template>
+	<view class="wrap">
+		<uni-nav-bar dark :fixed="true" backgroundColor="#3F9EFF" statusBar="false" left-icon="left" left-text="返回"
+			@clickLeft="toBack">
+			<view class="nav-title">
+				<text>{{title}}</text>
+			</view>
+		</uni-nav-bar>
+		<view class="container">
+			<view class="view-flex-inline"
+				style="padding-left: 50rpx;font-size: 1.2rem;margin-top: 50rpx;margin-bottom: 50rpx;">帐号密码注册</view>
+			<view class="content">
+				<view class="top">
+					<view class="cell">
+						<uni-easyinput v-model="username" placeholder="输入手机号"></uni-easyinput>
+						<view v-if="showPhoneTips"
+							style="padding-left: 2px;padding-top: 4px;color: orangered;font-size: 0.5rem;">手机号不符合要求
+						</view>
+					</view>
+					<view class="cell">
+						<uni-easyinput type="password" v-model="password" placeholder="输入登录密码"
+							@focus="passwordInputFocus"></uni-easyinput>
+						<view v-if="showPassowrdTips"
+							style="padding-left: 2px;padding-top: 4px;color: orangered;font-size: 0.5rem;">
+							密码只能包含字母、数字及特殊字符.@?!$#%*&</view>
+					</view>
+					<view class="cell">
+						<uni-easyinput type="password" v-model="againPassword" placeholder="再次输入登录密码"></uni-easyinput>
+						<view v-if="passowrdDifferentTips"
+							style="padding-left: 2px;padding-top: 4px;color: orangered;font-size: 0.5rem;">
+							两次输入的密码不一样,请重新输入</view>
+					</view>
+					<view class="view-flex-inline" style="padding-left: 50rpx;padding-right: 50rpx;margin-top: 40px;">
+						<view>
+							<checkbox-group @change="checkboxChange">
+								<label>
+									<checkbox value="0" color="#FF0000" style="transform:scale(0.7);" />
+								</label>
+							</checkbox-group>
+						</view>
+						<view class="agree">
+							我已阅读并同意
+							<text class="a" @click="userAgreement">《用户协议》</text>
+							和
+							<text class="a" @click="privacyPolicy">《隐私政策》</text>
+						</view>
+					</view>
+					<view class="cell">
+						<button class="submit" @click="submit">注册</button>
+					</view>
+				</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	import md5 from '@/utils/md5.js'
+	import uIcons from '@/uni_modules/uni-icons/components/uni-icons/uni-icons.vue'
+	import {
+		tenantId
+	} from '@/common/setting.js'
+	import {
+		devUrl,
+		prodUrl,
+		contentType
+	} from '@/common/setting'
+	export default {
+		components: {
+			uIcons,
+		},
+		data() {
+			return {
+				title: '注册',
+				// tenantId: '000000',
+				username: '',
+				password: '',
+				againPassword: '',
+				agreeCheck: false,
+				showPassowrdTips: false,
+				passowrdDifferentTips: false,
+				showPhoneTips: false,
+			};
+		},
+		onLoad() {
+			console.log("register "+tenantId)
+		},
+		methods: {
+			//返回上一页
+			toBack() {
+				uni.navigateBack({
+					delta: 1
+				})
+			},
+			checkboxChange: function(e) {
+				var values = e.detail.value;
+				if (values.includes("0")) {
+					this.agreeCheck = true;
+				} else {
+					this.agreeCheck = false;
+				}
+			},
+			submit() {
+				var that = this;
+				let validateCheck = true;
+				this.showPhoneTips = false;
+				if (this.username != null && this.username != '') {
+					let reg2 = /^1[3456789]\d{9}$/;
+					if (!reg2.test(this.username)) {
+						this.showPhoneTips = true;
+						validateCheck = false;
+					}
+				} else {
+					this.showPhoneTips = true;
+					validateCheck = false;
+				}
+				this.showPassowrdTips = false;
+				if (this.password != null && this.password != '') {
+					let reg = /[\a-\z\A-\Z0-9\.\@\?\!\$\#\%\*\&]/g;
+					let pw = this.password;
+					let value = pw.replace(reg, '');
+					if (value != '') {
+						this.showPassowrdTips = true;
+						validateCheck = false;
+					}
+				} else {
+					this.showPassowrdTips = true;
+					validateCheck = false;
+				}
+				this.passowrdDifferentTips = false;
+				if (this.againPassword != null && this.againPassword != '') {
+					if (this.againPassword !== this.password) {
+						this.passowrdDifferentTips = true;
+						validateCheck = false;
+					}
+				} else {
+					this.passowrdDifferentTips = true;
+					validateCheck = false;
+				}
+				if (validateCheck) {
+					if (this.agreeCheck) {
+						this.$u.api.userReg(tenantId, this.username, md5(this.password)).then(data => {
+							uni.showModal({
+								content: '注册成功',
+								showCancel: false,
+								success(res) {
+									if (res.confirm) {
+										that.toBack();
+									}
+								}
+							});
+						}).catch(err => {
+							console.log(err)
+							this.$u.func.showToast({
+								title: '注册失败' + err,
+							})
+						})
+					} else {
+						this.$u.func.showToast({
+							title: '请认真阅读用户协议及隐私政策后勾选同意',
+						})
+					}
+				}
+			},
+			passwordInputFocus(e) {
+				console.log(JSON.stringify(e))
+				this.showPassowrdTips = true;
+			},
+			userAgreement() {
+				var url = '/pages/user/user-agreement';
+				uni.navigateTo({
+					url: url
+				})
+			},
+			privacyPolicy() {
+				var url = '/pages/user/privacy-policy';
+				uni.navigateTo({
+					url: url
+				})
+			},
+		}
+	};
+</script>
+
+<style lang="scss">
+	.container {
+		min-height: 100vh;
+		overflow: hidden;
+
+		.set-icon {
+			vertical-align: middle;
+			width: 41rpx;
+			height: auto;
+			margin-right: 35rpx;
+		}
+	}
+
+	.content {
+		display: flex;
+		flex-direction: column;
+		justify-content: flex-start;
+		align-items: center;
+		height: 90vh;
+		width: 100%;
+
+		.top {
+			width: 100%;
+		}
+
+		.logo {
+			display: block;
+			width: 160rpx;
+			height: auto;
+			margin: 0 auto 40rpx;
+		}
+
+		.cell {
+			width: 100%;
+			padding: 0 50rpx;
+			box-sizing: border-box;
+			margin-top: 50rpx;
+			margin-bottom: 50rpx;
+
+			.name {
+				font-size: 22rpx;
+				font-family: Source Han Sans CN;
+				font-weight: 400;
+				color: #3e4a59;
+				line-height: 30rpx;
+				opacity: 0.72;
+			}
+
+			.input-box {
+				padding: 30rpx 0;
+				border-bottom: 2rpx solid #f6f6f6;
+				display: flex;
+				align-items: center;
+
+				.code {
+					font-size: 22rpx;
+					font-family: Source Han Sans CN;
+					font-weight: 400;
+					color: #0d0d0d;
+					line-height: 30rpx;
+
+					text {
+						color: #14b9c8;
+					}
+				}
+
+				.ipt {
+					flex: 1;
+					// height: 24rpx;
+					font-size: 24rpx;
+					padding-left: 10rpx;
+				}
+
+				.hold {
+					font-size: 24rpx;
+					font-family: Source Han Sans CN;
+					font-weight: 400;
+					color: #3e4a59;
+					line-height: 30px;
+					opacity: 0.45;
+				}
+			}
+		}
+
+		.agree {
+			// margin: 27rpx 95rpx 0;
+			font-size: 22rpx;
+			font-family: Adobe Heiti Std;
+			font-weight: normal;
+			color: black;
+			line-height: 34rpx;
+
+			.a {
+				color: royalblue
+			}
+		}
+
+		.submit {
+			margin-top: 40rpx;
+			border: none;
+			width: 100%;
+			height: 80rpx;
+			line-height: 80rpx;
+			box-sizing: border-box;
+			border-radius: 10rpx;
+			// font-size: 36rpx;
+			// background: linear-gradient(to right, #, #3976f7);
+			background-color: orangered;
+			color: #ffffff;
+
+			&::after {
+				content: none;
+			}
+
+			&::before {
+				content: none;
+			}
+
+			// &[disabled='true'] {
+			// 	background: linear-gradient(to right, #48b1f8, #3976f7);
+			// 	font-size: 36rpx;
+			// 	font-family: Source Han Sans CN;
+			// 	font-weight: 500;
+			// 	color: #ffffff;
+			// }
+		}
+
+		.tip {
+			margin-top: 30rpx;
+			text-align: center;
+			font-size: 22rpx;
+			font-family: Adobe Heiti Std;
+			font-weight: normal;
+			color: #cacaca;
+			line-height: 34rpx;
+		}
+
+		.change {
+			margin-top: 20rpx;
+			text-align: center;
+			font-size: 22rpx;
+			font-family: Adobe Heiti Std;
+			font-weight: normal;
+			color: #14b9c8;
+			line-height: 34rpx;
+		}
+
+		.tag {
+			display: flex;
+			justify-content: center;
+			align-items: center;
+			font-size: 22rpx;
+			font-family: Adobe Heiti Std;
+			font-weight: normal;
+			color: #9f9f9f;
+			line-height: 34rpx;
+
+			&::before {
+				content: '';
+				display: block;
+				width: 160rpx;
+				height: 1px;
+				background: #d8d8d8;
+				opacity: 0.86;
+			}
+
+			&::after {
+				content: '';
+				display: block;
+				width: 160rpx;
+				height: 1px;
+				background: #d8d8d8;
+				opacity: 0.86;
+			}
+		}
+
+		.chat-arr {
+			margin-top: 50rpx;
+			display: flex;
+			align-items: center;
+			justify-content: space-between;
+
+			.icon {
+				width: 73rpx;
+				height: 73rpx;
+			}
+		}
+	}
+</style>

+ 9 - 1
pages/user/center-simple.vue

@@ -27,7 +27,8 @@
 	import http from '@/http/api.js'
 	export default {
 		onLoad() {
-			console.log(this.userInfo.nick_name)
+			
+			console.log(JSON.stringify(this.userInfo))
 			const that = this;
 
 			http.request({
@@ -57,14 +58,21 @@
 		},
 		data() {
 			return {
+				title: '用户信息',
 				roleName: '',
 				deptName: '',
 				downloadurl: '',
 			};
 		},
 		methods: {
+			toBack() {
+				uni.navigateBack({
+					delta: 1
+				})
+			},
 			logout() {
 				this.$u.func.logout();
+				
 			},
 			checkVersion() {
 				// #ifdef APP-PLUS  

+ 55 - 0
pages/user/privacy-policy.vue

@@ -0,0 +1,55 @@
+<template>
+	<view class="container">
+		<uni-nav-bar dark :fixed="true" backgroundColor="#3F9EFF" statusBar="false" left-icon="left" left-text="返回"
+			@clickLeft="toBack">
+			<view class="nav-title">
+				<text>{{title}}</text>
+			</view>
+		</uni-nav-bar>
+		<view class="content">
+
+		</view>
+
+	</view>
+</template>
+
+<script>
+	import http from '@/http/api.js'
+	// import {
+	// 	version
+	// } from '@/common/setting.js'
+	export default {
+		components: {
+		},
+		data() {
+			return {
+				title: '隐私政策',
+			};
+		},
+		onLoad() {
+
+		},
+		methods: {
+			toBack() {
+				uni.navigateBack({
+					delta: 1
+				})
+			},
+		}
+	};
+</script>
+
+<style lang="scss">
+	.container {
+		background-color: #f7f7f7;
+		min-height: 100vh;
+		padding: 0 0 200rpx;
+		overflow: hidden;
+	}
+
+	.content {
+		background-color: #ffffff;
+		overflow: hidden;
+	}
+
+</style>

+ 56 - 0
pages/user/user-agreement.vue

@@ -0,0 +1,56 @@
+<template>
+	<view class="container">
+		<uni-nav-bar dark :fixed="true" backgroundColor="#3F9EFF" statusBar="false" left-icon="left" left-text="返回"
+			@clickLeft="toBack">
+			<view class="nav-title">
+				<text>{{title}}</text>
+			</view>
+		</uni-nav-bar>
+		<view class="content">
+
+		</view>
+
+	</view>
+</template>
+
+<script>
+	import http from '@/http/api.js'
+	// import {
+	// 	version
+	// } from '@/common/setting.js'
+	export default {
+		components: {
+	
+		},
+		data() {
+			return {
+				title: '用户协议',
+			};
+		},
+		onLoad() {
+		},
+		methods: {
+			toBack() {
+				uni.navigateBack({
+					delta: 1
+				})
+			},
+		}
+	};
+</script>
+
+<style lang="scss">
+	.container {
+		background-color: #f7f7f7;
+		min-height: 100vh;
+		padding: 0 0 200rpx;
+		overflow: hidden;
+	}
+
+
+	.content {
+		background-color: #ffffff;
+		overflow: hidden;
+	}
+
+</style>