Przeglądaj źródła

添加用户详细页面,添加修改逻辑,可以修改用户信息

zhangxike 6 dni temu
rodzic
commit
6bc3926d5e

+ 198 - 6
pages/mine/person/PersonDetail.uvue

@@ -2,25 +2,217 @@
 	<!-- #ifdef APP -->
 	<scroll-view style="flex:1">
 	<!-- #endif -->
-		
+		<view class="container">
+			<view class="download-card">
+				<form>
+					<view class="uni-form-item uni-row">
+						<view class="title">登录账号</view>
+						<input class="uni-input" name="username" :value="username" @input="inputUsername"/>
+					</view>
+					<view class="uni-form-item uni-row">
+						<view class="title">用户姓名</view>
+						<input class="uni-input" name="name" :value="name" @input="inputName"/>
+					</view>
+					<view class="uni-form-item uni-row">
+						<view class="title">新密码</view>
+						<input class="uni-input" name="password" :password="true" :value="password" @input="inputNew"
+							placeholder="请输入新密码" />
+					</view>
+					<view class="uni-form-item uni-row">
+						<view class="title">确认密码</view>
+						<input class="uni-input" name="confirmPassword" :password="true" :value="confirmPassword" @input="inputConfirm"
+							placeholder="请确认新密码" />
+					</view>
+					<button type="primary" @click="submit">提交</button>
+				</form>
+			</view>
+
+		</view>
+
 	<!-- #ifdef APP -->
 	</scroll-view>
 	<!-- #endif -->
 </template>
 
-<script>
+<script lang="uts">
+	import { updateUserPwd } from "@/api/system/user"
+	import { updateData, getList } from '@/api/work';
+	import { getCurrentUserSync, getCurrentUserNameSync } from '@/utils/auth.uts'
+
+	type User = {
+		username : string | null,
+		name : string | null,
+		password : string | null,
+		confirmPassword : string | null
+	}
+
 	export default {
 		data() {
 			return {
-				
+				id: '',
+				username: '',
+				name: '',
+				password: '',
+				confirmPassword: '',
+				user: {
+					username: null,
+					name: null,
+					password: null,
+					confirmPassword: null
+				} as User,
 			}
 		},
+		onBackPress() {
+			// 覆盖系统默认的返回行为,返回到指定页面
+			uni.navigateTo({
+				url: `/pages/mine/person/PersonList`,
+				// 修改动画方向为从左到右退回
+				animationType: 'slide-in-left', // 使用从左到右滑出的动画效果
+				animationDuration: 300 // 动画持续时间,单位ms
+			})
+			// 返回true表示拦截默认返回行为
+			return true
+		},
+		onLoad(options) {
+			// 获取URL参数中的id
+			const id = options?.['id'] ?? ""
+			this.id = id
+			this.getUser(id)
+		},
 		methods: {
-			
+			inputUsername(event : UniInputEvent) {
+				this.user.username = event.detail.value
+			},
+			inputName(event : UniInputEvent) {
+				this.user.name = event.detail.value
+			},
+			inputNew(event : UniInputEvent) {
+				this.user.password = event.detail.value
+			},
+			inputConfirm(event : UniInputEvent) {
+				this.user.confirmPassword = event.detail.value
+			},
+			getUser(userId : string) {
+				// 使用传入的userId参数获取特定用户的信息
+				getList('app_user', 'id', userId, null, null, null).then((response : UTSJSONObject) => {
+					if (response != null && response['data'] != null) {
+						console.log(response)
+						// 解析用户数据并设置到页面变量
+						let dataList = response?.['data'] as UTSJSONObject[] ?? Array<UTSJSONObject>();
+						if (dataList != null && dataList.length > 0) {
+							let user = dataList[0];
+							this.username = user.getString('username') ?? '';
+							this.name = user.getString('name') ?? '';
+						}
+					}
+				})
+			},
+			submit() {
+				if (this.user.password != null && (this.user.password.length < 6 || this.user.password.length > 20)) {
+					uni.showToast({
+						title: "长度在6到20个字符",
+						icon: "error"
+					})
+					return
+				}
+				if (this.user.confirmPassword != null && (this.user.confirmPassword.length < 6 || this.user.confirmPassword.length > 20)) {
+					uni.showToast({
+						title: "长度在6到20个字符",
+						icon: "error"
+					})
+					return
+				} else if (this.user.confirmPassword != this.user.password) {
+					uni.showToast({
+						title: "两次输入的密码不一致",
+						icon: "error"
+					})
+					return
+				}
+				if (this.user.username == null && this.user.name == null && this.user.password == null && this.user.confirmPassword == null) {
+					uni.showToast({
+						title: "没有做修改",
+						icon: "error"
+					})
+					return
+				}
+				
+
+
+				getList('app_user', 'id', this.id, null, null, null).then((res : UTSJSONObject) => {
+					let userList = res?.['data'] as UTSJSONObject[] ?? Array<UTSJSONObject>();
+					console.log(userList);
+					if (userList != null && userList.length > 0) {
+						let user = userList[0];
+						if (user != null) {
+							let updatedData = "";
+							if(this.user.username != null && this.user.username != '') {
+								updatedData += `username = '` + this.user.username + `' ,`
+							}
+							if(this.user.name != null && this.user.name != '') {
+								updatedData += `name = '` + this.user.name + `' ,`
+							}
+							if (this.user.password != null && this.user.password != '') {
+									updatedData += `password= '` + this.user.password + `' ,` 
+								}
+								
+								// 移除最后一个多余的逗号(处理可能有空格和无空格的情况)
+								if (updatedData.endsWith(', ')) {
+									updatedData = updatedData.slice(0, -2);
+								} else if (updatedData.endsWith(',')) {
+									updatedData = updatedData.slice(0, -1);
+								}
+								
+								updateData('app_user', updatedData, 'id', this.id).then((res : UTSJSONObject) => {
+								let data = res?.['data'] as boolean ?? false;
+								if (data != null && data == true) {
+									uni.showToast({
+										title: "更新成功!",
+									});
+									setTimeout(() => {
+							
+									}, 1500)
+									uni.reLaunch({
+										url: '/pages/mine/person/PersonList'
+									});
+								} else {
+									uni.showToast({
+										title: "更新失败,请稍后重试!",
+										icon: "error"
+									});
+								}
+							});
+						}
+					}
+				});
+			}
 		}
 	}
 </script>
 
-<style>
+<style lang="scss" scope>
+	.container {
+		padding: 10rpx;
+		background-color: #f0f4f8;
+		flex: 1;
+		display: flex;
+		flex-direction: column;
+		font-family: "PingFang SC", "Helvetica Neue", Helvetica, Arial, sans-serif;
+		/* #ifndef APP-ANDROID */
+		min-height: 100vh;
+		/* #endif */
+		height: 120rpx;
+	}
+
+	.download-card {
+		background: #ffffff;
+		border-radius: 20rpx;
+		padding: 15rpx 15rpx;
+		box-shadow: 0 8rpx 15rpx rgba(0, 43, 92, 0.1);
+		display: flex;
+		flex-direction: column;
+	}
 
-</style>
+	.title {
+		width: 100rpx;
+	}
+</style>

+ 1 - 2
pages/mine/person/PersonList.uvue

@@ -56,7 +56,6 @@
 	} as OnBackPressOptions)
 
 	onBackPress((options : OnBackPressOptions) : boolean | null => {
-		console.log('onBackPress', options)
 		// 使用reLaunch代替switchTab,避免多层跳转时的闪回问题
 		// reLaunch会关闭所有页面并打开到目标页面,适合需要完全重置导航栈的场景
 		uni.reLaunch({
@@ -174,7 +173,7 @@
 
 	const enterItem = (id : number) => {
 		uni.navigateTo({
-			url: `/pages/work/download/DownloadDetail?id=${id}`
+			url: `/pages/mine/person/PersonDetail?id=${id}`
 		});
 	}
 

+ 48 - 31
pages/mine/pwd/index.uvue

@@ -1,26 +1,28 @@
 <template>
-	<view class=" pwd-retrieve-container my-page">
-		<form>
-			<view class="uni-form-item uni-row">
-				<view class="title">旧密码</view>
-				<input :class="'uni-input '+oldPassword" name="oldPassword" :password="true" :value="user.oldPassword"
-					placeholder="请输入旧密码" @focus="inputFocus('oldPassword')" @blur="inputBlur('oldPassword')"
-					@input="inputOld" />
-			</view>
-			<view class="uni-form-item uni-row">
-				<view class="title">新密码</view>
-				<input :class="'uni-input '+newPassword" name="newPassword" :password="true" :value="user.newPassword"
-					placeholder="请输入新密码" @focus="inputFocus('newPassword')" @blur="inputBlur('newPassword')"
-					@input="inputNew" />
-			</view>
-			<view class="uni-form-item uni-row">
-				<view class="title">确认密码</view>
-				<input :class="'uni-input '+confirmPassword" name="confirmPassword" :password="true"
-					:value="user.confirmPassword" placeholder="请确认新密码" @focus="inputFocus('confirmPassword')"
-					@blur="inputBlur('confirmPassword')" @input="inputConfirm" />
-			</view>
-			<button type="primary" @click="submit">提交</button>
-		</form>
+	<view class="container">
+		<view class="download-card">
+			<form>
+				<view class="uni-form-item uni-row">
+					<view class="title">旧密码</view>
+					<input :class="'uni-input '+oldPassword" name="oldPassword" :password="true" :value="user.oldPassword"
+						placeholder="请输入旧密码" @focus="inputFocus('oldPassword')" @blur="inputBlur('oldPassword')"
+						@input="inputOld" />
+				</view>
+				<view class="uni-form-item uni-row">
+					<view class="title">新密码</view>
+					<input :class="'uni-input '+newPassword" name="newPassword" :password="true" :value="user.newPassword"
+						placeholder="请输入新密码" @focus="inputFocus('newPassword')" @blur="inputBlur('newPassword')"
+						@input="inputNew" />
+				</view>
+				<view class="uni-form-item uni-row">
+					<view class="title">确认密码</view>
+					<input :class="'uni-input '+confirmPassword" name="confirmPassword" :password="true"
+						:value="user.confirmPassword" placeholder="请确认新密码" @focus="inputFocus('confirmPassword')"
+						@blur="inputBlur('confirmPassword')" @input="inputConfirm" />
+				</view>
+				<button type="primary" @click="submit">提交</button>
+			</form>
+		</view>
 	</view>
 </template>
 
@@ -161,15 +163,30 @@
 	}
 </script>
 
-<style lang="scss">
-	.my-page {
-		background-color: #ffffff;
-		width: 100%;
-		height: 100%;
+<style lang="scss" scope>
+	.container {
+		padding: 10rpx;
+		background-color: #f0f4f8;
+		flex: 1;
+		display: flex;
+		flex-direction: column;
+		font-family: "PingFang SC", "Helvetica Neue", Helvetica, Arial, sans-serif;
+		/* #ifndef APP-ANDROID */
+		min-height: 100vh;
+		/* #endif */
+		height: 120rpx;
 	}
-
-	.pwd-retrieve-container {
-		padding-top: 36rpx;
-		padding: 15px;
+	
+	.download-card {
+	  background: #ffffff;
+	  border-radius: 20rpx;
+	  padding: 15rpx 15rpx;
+	  box-shadow: 0 8rpx 15rpx rgba(0, 43, 92, 0.1);
+	  display: flex;
+	  flex-direction: column;
+	}
+	
+	.title {
+		width: 100rpx;
 	}
 </style>