From 1288a7890deb3b180b1e8df7015b1036514c4e71 Mon Sep 17 00:00:00 2001
From: pengwei <2071057782@qq.com>
Date: 星期四, 27 三月 2025 09:07:12 +0800
Subject: [PATCH] 3.27优化

---
 项目代码/client/src/views/system/UserInfo.vue |  214 ++++++++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 178 insertions(+), 36 deletions(-)

diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/client/src/views/system/UserInfo.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/client/src/views/system/UserInfo.vue"
index 67fc668..636a6a0 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/client/src/views/system/UserInfo.vue"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/client/src/views/system/UserInfo.vue"
@@ -3,14 +3,25 @@
     <div class="info">
       <div style="position: relative">
         <el-upload
+          :disabled="true"
           class="avatar-uploader"
-          action="https://run.mocky.io/v3/9d059bf9-4660-45f2-925d-ce80ad6c4d15"
+          action="#"
           :show-file-list="false"
-          :on-success="handleAvatarSuccess"
           :before-upload="beforeAvatarUpload"
         >
-          <img v-if="imageUrl" :src="imageUrl" class="avatar" />
-          <el-icon v-else class="avatar-uploader-icon"><Plus /></el-icon>
+          <el-image
+            style="width: 100px; height: 100px"
+            :src="'http://115.159.85.185:9098' + userInfo.headImageUrl"
+            :fit="fit"
+          />
+          <!-- <img
+            v-if="userInfo.headImageUrl"
+            :src="'http://192.168.0.80:5000' + userInfo.headImageUrl"
+            class="avatar"
+          />
+          <el-icon v-else class="avatar-uploader-icon">
+            <Plus />
+          </el-icon> -->
         </el-upload>
         <span
           style="
@@ -33,7 +44,7 @@
         /></span>
       </div>
       <el-form
-        :model="formInline"
+        :model="userInfo"
         style="flex: 1"
         class="demo-form-inline"
         label-position="right"
@@ -42,12 +53,14 @@
         <el-row :gutter="2" style="height: 2.2rem">
           <el-col :span="3">
             <el-form-item label="鐧诲綍璐﹀彿:">
-              <span style="font-size: 1rem; font-weight: bold">dsfuis</span>
+              <span style="font-size: 1rem; font-weight: bold">{{
+                userInfo.userName
+              }}</span>
             </el-form-item>
           </el-col>
           <el-col :span="3"
             ><el-form-item label="鐢ㄦ埛鍒嗙粍:">
-              <span>缁翠繚閮�</span>
+              <span>{{ userInfo.roleName }}</span>
             </el-form-item></el-col
           >
         </el-row>
@@ -64,7 +77,7 @@
           >
           <el-col :span="3">
             <el-form-item label="鐢ㄦ埛瑙掕壊:">
-              <span>2021-06-30</span>
+              <span>{{ userInfo.roleName }}</span>
             </el-form-item>
           </el-col>
         </el-row>
@@ -101,7 +114,7 @@
               </template>
               <el-input
                 size="small"
-                v-model="form.name"
+                v-model="form.usertruename"
                 placeholder="璇疯緭鍏�"
                 style="width: 18.375rem"
               />
@@ -122,36 +135,45 @@
                 >
               </template>
               <el-input
-                v-model="form.name"
+                v-model="form.phone"
                 size="small"
                 placeholder="璇疯緭鍏�"
                 style="width: 18.375rem"
               /> </el-form-item
           ></el-col>
         </el-row>
-        <el-form-item  label-position="top">
+        <el-form-item label-position="top">
           <template #label>
             <div style="display: flex; align-items: flex-end">
               <span style="color: red; margin-right: 0.2rem">*</span>
               <span style="font-size: 0.88rem; color: black; font-weight: bold"
                 >浜鸿劯鍥剧墖</span
-              ><span
+              >
+              <!-- <span
                 style="
                   color: rgba(255, 0, 0, 1);
                   font-size: 0.75rem;
                   margin-left: 0.5rem;
                 "
                 >娉細鏈�澶氬彲涓婁紶涓夊紶锛屽浘鐗囬渶瑕佹瑙勭殑浜哄儚璇佷欢鐓�</span
-              >
+              > -->
             </div>
           </template>
           <el-upload
+            ref="upload"
+            name="fileInput"
             class="avatar-uploader"
-            action="#"
+            action="http://115.159.85.185:9098/api/User/SaveFiles"
             list-type="picture-card"
-            :auto-upload="false"
+            :auto-upload="true"
+            limit="1"
+            @before-upload="beforeAvatarUpload"
+            :on-success="handleAvatarSuccess"
+            :file-list="fileList != [] ? fileList : []"
           >
-            <el-icon><Plus /></el-icon>
+            <el-icon>
+              <Plus />
+            </el-icon>
 
             <template #file="{ file }">
               <div>
@@ -172,14 +194,18 @@
                     class="el-upload-list__item-delete"
                     @click="handleDownload(file)"
                   >
-                    <el-icon size="15"><Download /></el-icon>
+                    <el-icon size="15">
+                      <Download />
+                    </el-icon>
                   </span>
                   <span
                     v-if="!disabled"
                     class="el-upload-list__item-delete"
                     @click="handleRemove(file)"
                   >
-                    <el-icon size="15"><Delete /></el-icon>
+                    <el-icon size="15">
+                      <Delete />
+                    </el-icon>
                   </span>
                 </span>
               </div>
@@ -208,10 +234,10 @@
       <template #title>
         <div style="font-size: 1.25rem; font-weight: bold">瀵嗙爜淇敼</div>
       </template>
-      <el-form :model="form">
+      <el-form :model="Passwordform" ref="PasswordformRef" :rules="rules">
         <el-form-item>
           <el-input
-            v-model="form.name"
+            v-model="Passwordform.oldPwd"
             autocomplete="off"
             placeholder="璇疯緭鍏ュ師瀵嗙爜"
             style="width: 21.25rem; height: 2.8125rem; font-size: 1rem"
@@ -219,7 +245,7 @@
         </el-form-item>
         <el-form-item>
           <el-input
-            v-model="form.name"
+            v-model="Passwordform.newPwd"
             autocomplete="off"
             placeholder="璇疯緭鍏ユ柊瀵嗙爜"
             style="width: 21.25rem; height: 2.8125rem; font-size: 1rem"
@@ -227,7 +253,7 @@
         </el-form-item>
         <el-form-item>
           <el-input
-            v-model="form.name"
+            v-model="newPwd"
             autocomplete="off"
             placeholder="纭瀵嗙爜"
             style="width: 21.25rem; height: 2.8125rem; font-size: 1rem"
@@ -240,7 +266,7 @@
           style="display: flex; justify-content: center"
         >
           <el-button
-            @click="dialogVisible = false"
+            @click="clickPassword(PasswordformRef)"
             type="primary"
             style="
               width: 21.25rem;
@@ -253,41 +279,148 @@
         </div>
       </template>
     </el-dialog>
+
+    <!-- 鏌ョ湅鍥剧墖寮瑰嚭妗� -->
+    <el-dialog v-model="imgdialogVisible" center width="980">
+      <img w-full :src="dialogImageUrl" alt="Preview Image" />
+    </el-dialog>
   </div>
 </template>
 <script setup>
 import { ref, reactive } from "vue";
+import {
+  GetUserInfo,
+  UpdatePassword,
+  UpdateUser,
+  Upuserbase,
+} from "@/api/user";
+import { ElMessage } from "element-plus";
 const formInline = reactive({
   user: "",
   region: "",
   date: "",
 });
-const form = reactive({
-  name: "",
-  region: "",
-  date1: "",
-  date2: "",
-  delivery: false,
-  type: [],
-  resource: "",
-  desc: "",
-});
 
-const onSubmit = () => {
-  console.log("submit!");
+const upload = ref();
+const form = ref({
+  id: JSON.parse(localStorage.getItem("user")).id,
+  usertruename: "",
+  phone: "",
+  files: "",
+});
+const newPwd = ref("");
+const dialogVisible = ref(false);
+//鏌ョ湅鍥剧墖
+const imgdialogVisible = ref(false);
+const fileList = ref([]);
+
+const rules = reactive({
+  oldPwd: [{ required: true, message: "璇疯緭鍏ユ棫瀵嗙爜", trigger: "blur" }],
+  newPwd: [{ required: true, message: "璇疯緭鍏ユ柊瀵嗙爜", trigger: "blur" }],
+});
+const PasswordformRef = ref();
+const Passwordform = ref({
+  oldPwd: "",
+  newPwd: "",
+});
+const clickPassword = async (formEl) => {
+  if (!formEl) return;
+  await formEl.validate((valid, fields) => {
+    if (valid) {
+      if (
+        Passwordform.value.newPwd == "" ||
+        Passwordform.value.oldPwd == "" ||
+        newPwd.value == ""
+      ) {
+        ElMessage({
+          message: "杈撳叆妗嗕笉鑳戒负绌�",
+          type: "warning",
+        });
+        return;
+      }
+      if (Passwordform.value.newPwd == Passwordform.value.oldPwd) {
+        ElMessage({
+          message: "涓ゆ瀵嗙爜涓�鑷�",
+          type: "warning",
+        });
+        return;
+      }
+      if (Passwordform.value.newPwd != newPwd.value) {
+        ElMessage({
+          message: "鏂板瘑鐮佷笉涓�鑷�",
+          type: "warning",
+        });
+        return;
+      }
+      UpdatePassword(Passwordform.value).then((res) => {
+        ElMessage({
+          message: "淇敼鎴愬姛",
+          type: "success",
+        });
+        dialogVisible.value = false;
+        console.log(res);
+      });
+    } else {
+      console.log("error submit!", fields);
+    }
+  });
 };
 
-const dialogVisible = ref(false);
+const userInfo = ref({});
+const dialogImageUrl = ref();
+
+GetUserInfo({}).then((res) => {
+  userInfo.value = Object.assign({}, res.data);
+  form.value.usertruename = res.data.userTrueName;
+  form.value.phone = res.data.phoneNo;
+});
+//鍥剧墖棰勮
+const handlePictureCardPreview = (url) => {
+  dialogImageUrl.value = url.url;
+  imgdialogVisible.value = true;
+};
+
+//鍥剧墖鍒犻櫎
+const handleRemove = (file) => {
+  upload.value.handleRemove(file);
+};
+const onSubmit = () => {
+  if (form.value.files == "") {
+    ElMessage({ message: "鍥剧墖涓嶈兘涓虹┖", type: "warning" });
+    return;
+  }
+  if (form.value.usertruename == "") {
+    ElMessage({ message: "濮撳悕涓嶈兘涓虹┖", type: "warning" });
+    return;
+  }
+  if (form.value.phone == "") {
+    ElMessage({ message: "鐢佃瘽涓嶈兘涓虹┖", type: "warning" });
+    return;
+  }
+  Upuserbase(form.value).then((res) => {
+    ElMessage({ message: "淇敼鎴愬姛", type: "success" });
+    dialogVisible.value = false;
+    initData();
+  });
+};
+const beforeAvatarUpload = (val) => {
+  console.log(val);
+};
+const handleAvatarSuccess = (val) => {
+  form.value.files = "/image/" + val.data;
+};
 </script>
 <style lang="scss" scoped>
 .personal {
   display: flex;
   flex-direction: column;
+
   .info {
     display: flex;
     height: 10rem;
     background-color: #fff;
     align-items: center;
+
     :deep(.avatar-uploader .el-upload) {
       border: 1px dashed var(--el-border-color);
       border-radius: 50%;
@@ -310,6 +443,7 @@
       height: 6.25rem;
       text-align: center;
     }
+
     .el-form {
       .el-row {
         .el-col {
@@ -317,6 +451,7 @@
             :deep(.el-form-item__label) {
               font-size: 0.875rem;
             }
+
             span {
               font-size: 0.875rem;
             }
@@ -325,6 +460,7 @@
       }
     }
   }
+
   .mation {
     flex: 1;
     margin-top: 1.25rem;
@@ -332,19 +468,23 @@
     padding: 1.1875rem 2.0625rem;
     box-sizing: border-box;
   }
+
   :deep(.el-dialog) {
     margin-top: 180px;
   }
+
   :deep(.el-dialog .el-dialog__body) {
     display: flex;
     justify-content: center;
     align-items: center;
   }
+
   .avatar-uploader .avatar {
     width: 7rem;
     height: 7rem;
     display: block;
   }
+
   :deep(.avatar-uploader .el-upload) {
     width: 7rem;
     height: 7rem;
@@ -355,10 +495,12 @@
     overflow: hidden;
     transition: var(--el-transition-duration-fast);
   }
+
   :deep(.el-upload-list__item) {
     width: 7rem;
     height: 7rem;
   }
+
   .avatar-uploader .el-upload:hover {
     border-color: var(--el-color-primary);
   }

--
Gitblit v1.9.3