From 6227519a1bd9007aedae11b77b0b3b1851837c38 Mon Sep 17 00:00:00 2001
From: 闫增涛 <1829501689@qq.com>
Date: 星期四, 03 七月 2025 14:41:04 +0800
Subject: [PATCH] 仿真测试页面,模型三位投影模块布局1修改

---
 src/views/system/userManage.vue |  299 +++++++++++++++++++++++++++++++++++++++++++----------------
 1 files changed, 215 insertions(+), 84 deletions(-)

diff --git a/src/views/system/userManage.vue b/src/views/system/userManage.vue
index 3d69e2f..bad16b5 100644
--- a/src/views/system/userManage.vue
+++ b/src/views/system/userManage.vue
@@ -1,7 +1,7 @@
 <template>
   <div class="user-manage">
     <div class="flex jc-sb ai-c">
-      <div class="addBox">
+      <div class="addBox" @click="addBtn">
         <el-icon><Plus /></el-icon>
         <span>鏂板缓</span>
       </div>
@@ -26,12 +26,19 @@
         class="roverTable"
       >
         <el-table-column prop="index" label="搴忓彿" width="60" />
-        <el-table-column prop="userName" label="鐢ㄦ埛濮撳悕" />
-        <el-table-column prop="name" label="鐢ㄦ埛鍚�" />
-        <el-table-column prop="state" label="鐘舵��" />
+        <el-table-column prop="name" label="鐢ㄦ埛濮撳悕" />
+        <el-table-column prop="loginName" label="鐢ㄦ埛鍚�" />
+        <el-table-column prop="state" label="鐘舵��">
+          <template #default="scope">
+            <span v-if="scope.row.isEnable" style="color: rgb(46, 236, 21)"
+              >宸插惎鐢�</span
+            >
+            <span v-else style="color: rgb(255, 30, 0)">宸茬鐢� </span>
+          </template>
+        </el-table-column>
         <el-table-column prop="role" label="绫诲瀷" />
-        <el-table-column prop="creatTime" label="鍒涘缓鏃堕棿" />
-        <el-table-column label="鎿嶄綔"  width="220" >
+        <el-table-column prop="createDate" label="鍒涘缓鏃堕棿" />
+        <el-table-column label="鎿嶄綔" width="220">
           <template #default="scope">
             <el-button size="small" @click="update(scope.row)">
               缂栬緫
@@ -56,12 +63,69 @@
         @current-change="handleCurrentChange"
       />
     </div>
+    <el-dialog
+      v-model="dialogFormVisible"
+      :title="dialogTitle"
+      width="500"
+      @close="closeDialog(formRef)"
+    >
+      <el-form
+        :model="form"
+        ref="formRef"
+        :rules="formRules"
+        label-width="140px"
+      >
+        <el-form-item label="鐢ㄦ埛鍚�" prop="loginName">
+          <el-input
+            v-model="form.loginName"
+            autocomplete="off"
+            placeholder="璇疯緭鍏�"
+            style="width: 240px"
+          />
+        </el-form-item>
+        <el-form-item label="濮撳悕" prop="name">
+          <el-input
+            v-model="form.name"
+            autocomplete="off"
+            placeholder="璇疯緭鍏�"
+            style="width: 240px"
+          />
+        </el-form-item>
+        <el-form-item label="瀵嗙爜" prop="password">
+          <el-input
+            v-model="form.password"
+            autocomplete="off"
+            placeholder="璇疯緭鍏�"
+            style="width: 240px"
+            show-password
+          />
+        </el-form-item>
+        <el-form-item label="纭瀵嗙爜" prop="confirmPassword">
+          <el-input
+            v-model="form.confirmPassword"
+            autocomplete="off"
+            placeholder="璇疯緭鍏�"
+            style="width: 240px"
+            show-password
+          />
+        </el-form-item>
+      </el-form>
+      <template #footer>
+        <div class="dialog-footer">
+          <el-button @click="closeDialog(formRef)">鍙栨秷</el-button>
+          <el-button type="primary" @click="submitBtn(formRef)">
+            纭畾
+          </el-button>
+        </div>
+      </template>
+    </el-dialog>
   </div>
 </template>
 
 <script setup lang="ts">
-import { ref, onMounted } from "vue";
-import { ElMessage, ElMessageBox } from 'element-plus'
+import { ref, onMounted, reactive, inject, watch } from "vue";
+import { ElMessage, ElMessageBox, FormInstance, FormRules } from "element-plus";
+const MG: any = inject("MG");
 
 const searchValue = ref();
 const tableData = ref([]);
@@ -69,88 +133,154 @@
 const currentPage = ref(4);
 const pageSize = ref(100);
 const background = ref(true);
-
-onMounted(() => {
-  getUserData();
+const dialogFormVisible = ref(false);
+const dialogTitle = ref();
+const form = reactive({
+  name: "",
+  password: "",
+  loginName: "",
+  confirmPassword: "",
 });
 
-const getUserData =() =>{
-  let list=[
-    {
-      index: 1,
-      userName:'',
-      name:'',
-      state:'',
-      role:'',
-      creatTime:'',
-    },
-    {
-      index: 2,
-      userName:'',
-      name:'',
-      state:'',
-      role:'',
-      creatTime:'',
-    },
-    {
-      index: 3,
-      userName:'',
-      name:'',
-      state:'',
-      role:'',
-      creatTime:'',
-    },
-  ]
-  tableData.value = list
+const formRef = ref<FormInstance>();
+import { curStoreInfo } from "@/store/index";
+const seleStore = curStoreInfo();
 
+watch(
+  () => seleStore.departmentInfo, // 鐩戝惉 reactive 瀵硅薄锛堥粯璁ゆ繁搴︾洃鍚級
+  (newVal) => {
+    if (newVal) {
+      getUserData();
+    }
+  }
+);
+
+const closeDialog = (formEl: FormInstance | undefined) => {
+  if (!formEl) return;
+  formEl.resetFields();
+  dialogFormVisible.value = false;
+};
+
+const submitBtn = async (formEl: FormInstance | undefined) => {
+  if (!formEl) return;
+  await formEl.validate(async (valid, fields) => {
+    if (valid) {
+      const body = {
+        ...form,
+        state: "Normal",
+        type: "Normal",
+        source: "",
+        info: "",
+        departmentId: seleStore.departmentInfo.id,
+      };
+      delete body.confirmPassword;
+      const res = await MG.dps5.NewUser(body);
+      console.log(res);
+      if (res) {
+        ElMessage({
+          message: "鏂板缓鐢ㄦ埛鎴愬姛",
+          type: "success",
+        });
+        getUserData();
+        dialogFormVisible.value = false;
+      }
+    }
+  });
+};
+
+interface formInfo {
+  name: string;
+  refCode: string;
+  password: string;
+  confirmPassword: string;
+  loginName: string;
 }
+
+// 鑷畾涔夊瘑鐮佹牎楠岃鍒�
+const validatePassword = (rule, value, callback) => {
+  if (value === "") {
+    callback(new Error("璇疯緭鍏ュ瘑鐮�"));
+  } else if (value.length < 6) {
+    callback(new Error("瀵嗙爜闀垮害涓嶈兘灏戜簬6浣�"));
+  } else {
+    if (form.confirmPassword !== "") {
+      // 濡傛灉纭瀵嗙爜宸茶緭鍏ワ紝瑙﹀彂纭瀵嗙爜鐨勯噸鏂伴獙璇�
+      formRef.value.validateField("confirmPassword", () => null);
+    }
+    callback();
+  }
+};
+
+// 鑷畾涔夌‘璁ゅ瘑鐮佹牎楠岃鍒�
+const validateConfirmPassword = (rule, value, callback) => {
+  if (value === "") {
+    callback(new Error("璇峰啀娆¤緭鍏ュ瘑鐮�"));
+  } else if (value !== form.password) {
+    callback(new Error("涓ゆ杈撳叆鐨勫瘑鐮佷笉涓�鑷�!"));
+  } else {
+    callback();
+  }
+};
+const formRules = reactive<FormRules<formInfo>>({
+  loginName: [{ required: true, message: "鐢ㄦ埛鍚嶄笉鑳戒负绌�", trigger: "blur" }],
+  name: [{ required: true, message: "濮撳悕涓嶈兘涓虹┖", trigger: "blur" }],
+  password: [{ required: true, validator: validatePassword, trigger: "blur" }],
+  confirmPassword: [
+    { required: true, validator: validateConfirmPassword, trigger: "blur" },
+  ],
+});
+
+const getUserData = async () => {
+  const body = {
+    departmentId: seleStore.departmentInfo.id,
+    filterList: [],
+    searchList: [],
+    sort: {
+      field: "CreateDate",
+      subSorts: [],
+      type: "Desc",
+    },
+    start: 0,
+    size: 9999,
+  };
+  const res = await MG.dps5.GetDepartmentUserList(body);
+  tableData.value = res.datas;
+};
 
 const handleCurrentChange = (val: number) => {
   console.log(`current page: ${val}`);
 };
-
+//鏂板鐢ㄦ埛
+const addBtn = () => {
+  dialogFormVisible.value = true;
+  dialogTitle.value = "鏂板鐢ㄦ埛";
+};
 // 缂栬緫
-const update = (row) =>{
-
-}
+const update = (row) => {};
 //绂佺敤
-const goDisable = (row) =>{
-  ElMessageBox.confirm(
-    '纭畾瑕佺鐢ㄨ鐢ㄦ埛?',
-    'Warning',
-    {
-      confirmButtonText: '纭畾',
-      cancelButtonText: '鍙栨秷',
-      type: 'warning',
-    }
-  )
+const goDisable = (row) => {
+  ElMessageBox.confirm("纭畾瑕佺鐢ㄨ鐢ㄦ埛?", "Warning", {
+    confirmButtonText: "纭畾",
+    cancelButtonText: "鍙栨秷",
+    type: "warning",
+  })
     .then(() => {
-      console.log(row)
-     
+      console.log(row);
     })
-    .catch(() => {
-      
-    })
-  
-}
+    .catch(() => {});
+};
 //鍒犻櫎
-const goDelete = () =>{
-  ElMessageBox.confirm(
-    '纭畾瑕佸垹闄よ鐢ㄦ埛?',
-    'Warning',
-    {
-      confirmButtonText: '纭畾',
-      cancelButtonText: '鍙栨秷',
-      type: 'warning',
-    }
-  )
+const goDelete = () => {
+  ElMessageBox.confirm("纭畾瑕佸垹闄よ鐢ㄦ埛?", "Warning", {
+    confirmButtonText: "纭畾",
+    cancelButtonText: "鍙栨秷",
+    type: "warning",
+  })
     .then(() => {
-      console.log(row)
+      console.log(row);
     })
-    .catch(() => {
-      
-    })
-}
+    .catch(() => {});
+};
 </script>
 
 <style lang="less" scoped>
@@ -161,16 +291,17 @@
   display: flex;
   align-items: center;
   color: #409eff;
+  cursor: pointer;
 }
-.list{
-  margin-top:20px;
+.list {
+  margin-top: 20px;
 }
 .rover-pagination-block {
-    height: 60px;
-    display: flex;
-    justify-content: flex-end;
-    background-color: #fff;
-    padding: 0 10px;
-    box-sizing: border-box;
-  }
+  height: 60px;
+  display: flex;
+  justify-content: flex-end;
+  background-color: #fff;
+  padding: 0 10px;
+  box-sizing: border-box;
+}
 </style>

--
Gitblit v1.9.1