From 85c54d88f139096614aea4b06f2166cae27729d7 Mon Sep 17 00:00:00 2001
From: zhangwei <1504152376@qq.com>
Date: 星期五, 22 八月 2025 10:11:19 +0800
Subject: [PATCH] 用户管理

---
 src/views/login/index.vue |  305 ++++++++++++++++++--------------------------------
 1 files changed, 109 insertions(+), 196 deletions(-)

diff --git a/src/views/login/index.vue b/src/views/login/index.vue
index 53092d3..f79d52d 100644
--- a/src/views/login/index.vue
+++ b/src/views/login/index.vue
@@ -7,13 +7,14 @@
   reactive,
   computed,
   ref,
+  Ref,
   h,
   onMounted,
   defineAsyncComponent,
   onUnmounted,
   watch
 } from "vue";
-import { debounce } from "@pureadmin/utils";
+import { debounce, storageLocal } from "@pureadmin/utils";
 import { useNav } from "@/layout/hooks/useNav";
 import { useEventListener } from "@vueuse/core";
 import type { FormInstance } from "element-plus";
@@ -23,7 +24,8 @@
   ElRadioGroup,
   ElRadio,
   ElRow,
-  ElTag
+  ElTag,
+  ElCol
 } from "element-plus";
 import { useLayout } from "@/layout/hooks/useLayout";
 import { useUserStoreHook } from "@/store/modules/user";
@@ -120,6 +122,8 @@
   myEnterpriseList: [],
   nowRole: {}
 });
+let secondCode = "";
+let secondId: Ref<string | number | boolean> = ref("");
 // 楠岃瘉鐮佽繃鏈熻鏃跺櫒
 let timer: any = null;
 let phonetimer: any = null;
@@ -127,18 +131,6 @@
 // 椤甸潰鍒濆鍖�
 onMounted(async () => {
   getCaptcha();
-  exRole().then(res => {
-    state.roleList = res.result;
-    const role = route.query;
-    if (role.code) {
-      state.nowRole = state.roleList.find(item => {
-        return item.code == role.code;
-      });
-    } else {
-      state.nowRole = state.roleList[0];
-    }
-    state.ruleForm.exRoleCode = state.nowRole.code;
-  });
   // 娉ㄥ唽楠岃瘉鐮佽繃鏈熻鏃跺櫒
   timer = setInterval(() => {
     if (state.expirySeconds > 0) state.expirySeconds -= 1;
@@ -157,131 +149,108 @@
     width: "30%",
     title: "閫夋嫨鐧诲綍鍏徃",
     contentRenderer: () =>
-    h(ElForm, {
-      ref: ruleFormRef,
-      model: state.ruleForm,
-      rules: loginRules,
-      size: 'large'
-    }, [
-      h(Motion, { delay: 150 }, [
-        h(ElFormItem, {
-          prop: 'exRoleCode',
-          label: '涓讳綋瑙掕壊' // 鍙坊鍔犺〃鍗曢」鏍囩
-        }, [
-          // 鍗曢�夋缁� - 鐖跺鍣ㄦ坊鍔犳牱寮忔帶鍒�
-          h(ElRadioGroup, {
-            modelValue: state.ruleForm.exRoleCode,
-            'onUpdate:modelValue': (val) => {
-              state.ruleForm.exRoleCode = val
-            },
-            style: {
-              display: 'flex',
-              flexDirection: 'column',
-              gap: '8px' // 鍗曢�夋涔嬮棿鐨勯棿璺�
-            }
-          }, [
-            // 寰幆娓叉煋鍗曢�夋 - 姣忎釜鍗曢�夋鍗曠嫭鍗犱竴琛�
-            state.myEnterpriseList.map(item => h(ElRadio, {
-              key: item.id,
-              value: item.code,
-              style: {
-                display: 'block', // 璁╂瘡涓崟閫夋鍒嗚鏄剧ず
-                padding: '4px 0'
-              }
-            }, item.name),)
-          ]),
-
-          // 绠$悊鍛樻爣绛� - 鏄剧ず鍦ㄥ崟閫夋鍚庨潰
-          
-        ])
-      ])
-    ])
-      // <>
-      //   <el-form
-      //     ref="ruleFormRef"
-      //     model={state.ruleForm}
-      //     rules={loginRules}
-      //     size="large"
-      //   >
-      //     <Motion delay={150}>
-      //       <el-form-item prop="exRoleCode">
-      //         <el-radio-group v-model={state.ruleForm.exRoleCode}>
-      //           <el-radio
-      //             v-for={item in state.myEnterpriseList}
-      //             key={item.id}
-      //             value={item.code}
-      //           >
-      //             {item.name}
-      //           </el-radio>
-      //         </el-radio-group>
-      //       </el-form-item>
-      //     </Motion>
-      //   </el-form>
-      // </>
-      // h(
-      //   ElForm,
-      //   {
-      //     ref: ruleFormRef,
-      //     model: state.ruleForm,
-      //     rules: loginRules,
-      //     size: "large"
-      //   },
-      //   [
-      //     h(Motion, { delay: 150 }, [
-      //       h(ElFormItem, { prop: "exRoleCode" }, [
-      //         h(
-      //           ElRadioGroup,
-      //           {
-      //             modelValue: state.ruleForm.exRoleCode,
-      //             "onUpdate:modelValue": val => {
-      //               state.ruleForm.exRoleCode = val;
-      //             }
-      //           },
-      //           [
-      //             // 鐢╩ap瀹炵幇v-for寰幆
-      //             state.myEnterpriseList.map(item =>
-      //               h(ElRow, {}, [
-      //                 h(
-      //                   ElRadio,
-      //                   {
-      //                     key: item.customerUserID,
-      //                     value: item.customerUserID
-      //                   },
-      //                   item.enterpriseName
-      //                 ),
-      //                 item.isManager ? 444 : "" // 鏍囩鍐呭
-      //               ])
-      //             )
-      //           ]
-      //         )
-      //       ])
-      //     ])
-      //   ]
-      // ),
-      // jsx 璇硶 锛堟敞鎰忓湪.vue鏂囦欢鍚敤jsx璇硶锛岄渶瑕佸湪script寮�鍚痩ang="tsx"锛�
+      h(
+        ElForm,
+        {
+          ref: ruleFormRef,
+          model: state.ruleForm,
+          rules: loginRules,
+          size: "large"
+        },
+        {
+          default: () => {
+            return [
+              h(
+                ElFormItem,
+                { prop: "exRoleCode", label: "" },
+                {
+                  default: () => {
+                    return [
+                      h(
+                        ElRadioGroup,
+                        {
+                          modelValue: secondId.value,
+                          "onUpdate:modelValue": val => (secondId.value = val)
+                        },
+                        // ElRadioGroup 鐨勫唴瀹规槸寰幆鐢熸垚鐨勶紝鐢ㄥ嚱鏁板寘瑁�
+                        () =>
+                          state.myEnterpriseList.map(item =>
+                            h(
+                              ElRow,
+                              { style: { width: "100%" } },
+                              {
+                                default: () => {
+                                  return [
+                                    h(
+                                      ElCol,
+                                      { span: 24 },
+                                      {
+                                        default: () => {
+                                          return [
+                                            h(
+                                              ElRadio,
+                                              {
+                                                key: item.customerUserID,
+                                                value: item.customerUserID
+                                              },
+                                              // ElRadio 鐨勫唴瀹规槸鍔ㄦ�佺殑锛岀敤鍑芥暟鍖呰9
+                                              () => [
+                                                // 鏂囨湰鐩存帴杩斿洖锛堜笉瑕佸祵濂楀嚱鏁帮級
+                                                item.enterpriseName,
+                                                item.isManger
+                                                  ? h(
+                                                      ElTag,
+                                                      {
+                                                        type: "primary",
+                                                        size: "small",
+                                                        style: {
+                                                          marginLeft: "8px",
+                                                          alignSelf: "center"
+                                                        }
+                                                      },
+                                                      // ElTag 鐨勫唴瀹规槸闈欐�佹枃鏈紝鐩存帴杩斿洖
+                                                      {
+                                                        default: () => "绠$悊鍛�"
+                                                      }
+                                                    )
+                                                  : null
+                                              ]
+                                            )
+                                          ];
+                                        }
+                                      }
+                                    )
+                                  ];
+                                }
+                              }
+                            )
+                          )
+                      )
+                    ];
+                  }
+                }
+              )
+            ];
+          }
+        }
+      ),
+    // jsx 璇硶 锛堟敞鎰忓湪.vue鏂囦欢鍚敤jsx璇硶锛岄渶瑕佸湪script寮�鍚痩ang="tsx"锛�
     closeCallBack: ({ options, args }) => {
-      // options.props 鏄搷搴斿紡鐨�
-      // const { formInline } = options.props as FormProps;
-      // const text = `濮撳悕锛�${formInline.user} 鍩庡競锛�${formInline.region}`;
       if (args?.command === "cancel") {
         // 鎮ㄧ偣鍑讳簡鍙栨秷鎸夐挳
-        // active.value -= 1;
       } else if (args?.command === "sure") {
         let obj = {
           phone: state.ruleForm.phone,
-          code: state.ruleForm.phoneVCode,
-          exRuleCode: state.ruleForm.exRoleCode
+          code: secondCode,
+          id: secondId.value
         };
         useUserStoreHook()
           .loginByUsername(obj)
           .then(res => {
             if (res?.code == 200) {
-              message("娉ㄥ唽鎴愬姛锛�", { type: "success" });
+              message("鐧诲綍鎴愬姛锛�", { type: "success" });
               router.replace({
-                path: "/RegisterSucess",
-                query: {
-                  code: obj.exRoleCode
-                }
+                path: "/Index"
               });
             } else {
               message(res?.message, { type: "warning" });
@@ -292,6 +261,8 @@
     }
   });
 };
+
+// 鐐瑰嚮鐧诲綍
 const onLogin = async (formEl: FormInstance | undefined) => {
   if (!formEl) return;
   await formEl.validate(valid => {
@@ -312,7 +283,7 @@
               if (obj.theLastLogo) {
                 router
                   .replace({
-                    name: "Index"
+                    path: "/Index"
                   })
                   .then(() => {
                     message("鐧诲綍鎴愬姛", { type: "success" });
@@ -320,45 +291,23 @@
                   .finally(() => (disabled.value = false));
               } else {
                 state.myEnterpriseList = obj.customerExs;
+                secondCode = obj.code;
                 openDialog();
               }
-              if (res.result.exRoles.length == 0) {
-                disabled.value = true;
-                router
-                  .replace({
-                    name: "RegisterNav",
-                    query: { code: state.ruleForm.exRoleCode }
-                  })
-                  .then(() => {
-                    message("鐧诲綍鎴愬姛", { type: "success" });
-                  })
-                  .finally(() => (disabled.value = false));
-              } else if (res.result.exRoles.length > 0) {
-                let data = res.result.exRoles.find(item => {
-                  return item.code == state.ruleForm.exRoleCode;
-                });
-
-                if (!data) {
-                  router.replace({
-                    name: "RegisterNav",
-                    query: { code: state.ruleForm.exRoleCode }
-                  });
-                } else if (data?.hasFlsh) {
-                  router.replace("index");
-                } else {
-                  router.replace("mine");
-                }
-              }
-              useUserStoreHook().getCusExtendInfo();
             });
           } else {
             message(res?.message || "鐧诲綍澶辫触", { type: "error" });
           }
         })
-        .finally(() => (loading.value = false));
+        .finally(() => {
+          loading.value = false;
+          disabled.value = false;
+        });
     }
   });
 };
+
+// 鍙戦�佹墜鏈洪獙璇佺爜
 const sendValidationCode = async () => {
   if (!state.ruleForm.phone) {
     return message("璇峰厛杈撳叆鎵嬫満鍙�", { type: "warning" });
@@ -396,26 +345,12 @@
     <div class="wave">
       <img width="400px" :src="logo1" class="logo1" />
     </div>
-    <!-- <img :src="bg" class="wave" /> -->
-    <!-- <div class="flex-c absolute right-5 top-3"> -->
-    <!-- 涓婚 -->
-    <!-- <el-switch
-        v-model="dataTheme"
-        inline-prompt
-        :active-icon="dayIcon"
-        :inactive-icon="darkIcon"
-        @change="dataThemeChange"
-      />
-    </div> -->
     <div class="login-container">
-      <div class="img">
-        <!-- <component :is="toRaw(illustration)" /> -->
-      </div>
+      <div class="img" />
       <div class="login-box">
         <div class="login-form">
-          <!-- <avatar class="avatar" /> -->
           <Motion>
-            <h2 class="logintitle">{{ state.nowRole.name }}鐧诲綍</h2>
+            <h2 class="logintitle">鐧诲綍</h2>
           </Motion>
 
           <el-form
@@ -424,18 +359,6 @@
             :rules="loginRules"
             size="large"
           >
-            <!-- <Motion :delay="150">
-              <el-form-item prop="exRoleCode">
-                <el-radio-group v-model="state.ruleForm.exRoleCode">
-                  <el-radio
-                    v-for="item in state.roleList"
-                    :key="item.id"
-                    :value="item.code"
-                    >{{ item.name }}</el-radio
-                  >
-                </el-radio-group>
-              </el-form-item>
-            </Motion> -->
             <Motion :delay="100">
               <el-form-item
                 :rules="[
@@ -488,16 +411,6 @@
                   </div>
                 </el-col>
               </el-form-item>
-
-              <!-- <el-form-item prop="password">
-                <el-input
-                  v-model="ruleForm.password"
-                  clearable
-                  show-password
-                  placeholder="瀵嗙爜"
-                  :prefix-icon="useRenderIcon(Lock)"
-                />
-              </el-form-item> -->
             </Motion>
             <Motion :delay="150">
               <el-form-item prop="phoneVCode">
@@ -511,7 +424,7 @@
                       <span
                         id="suffix-span-2"
                         ref="spanRef"
-                        @click="sendValidationCode(state.ruleForm.phone)"
+                        @click="sendValidationCode"
                       >
                         鑾峰彇楠岃瘉鐮�
                       </span>

--
Gitblit v1.9.1