Browse Source

fix:"优化登录和子账号添加"

soobin 2 months ago
parent
commit
c349482c4f

+ 1 - 1
src/assets/language/en.json

@@ -1403,7 +1403,7 @@
   },
   "login": {
     "title": "Admin Panel",
-    "userNameInput": "Username",
+    "userNameInput": "Username or Email",
     "passWordInput": "Password",
     "checkedPassWord": "Remember",
     "forgetPassWord": "Forgot Password?",

+ 1 - 1
src/assets/language/es.json

@@ -1402,7 +1402,7 @@
     },
     "login": {
         "title": "Panel de control",
-        "userNameInput": "Ej: usuario_123",
+        "userNameInput": "Usuario o email",
         "passWordInput": "Contraseña",
         "checkedPassWord": "Recordar contraseña",
         "forgetPassWord": "¿Olvidó contraseña?",

+ 1 - 1
src/assets/language/fr.json

@@ -1433,7 +1433,7 @@
     },
     "login": {
         "title": "Administration",
-        "userNameInput": "Identifiant",
+        "userNameInput": "Nom d’utilisateur ou email ",
         "passWordInput": "Mot de passe",
         "checkedPassWord": "Se souvenir",
         "forgetPassWord": "Mot de passe oublié ?",

+ 1 - 1
src/assets/language/ja.json

@@ -1396,7 +1396,7 @@
     },
     "login": {
         "title": "管理バックオフィス",
-        "userNameInput": "ユーザー名を入力してください",
+        "userNameInput": "ユーザ名やメール",
         "passWordInput": "パスワードを入力してください",
         "checkedPassWord": "パスワードを覚える",
         "forgetPassWord": "パスワードを忘れる?",

+ 1 - 1
src/assets/language/pt.json

@@ -1402,7 +1402,7 @@
     },
     "login": {
         "title": "Central de Administração",
-        "userNameInput": "Nome de usuário",
+        "userNameInput": "Nome de usuário ou e-mail",
         "passWordInput": "Senha",
         "checkedPassWord": "Lembrar senha",
         "forgetPassWord": "Esqueceu a senha?",

+ 1 - 1
src/assets/language/ru.json

@@ -1433,7 +1433,7 @@
     },
     "login": {
         "title": "Админ-панель",
-        "userNameInput": "Логин",
+        "userNameInput": "Имя пользователя или адрес электронной почты",
         "passWordInput": "Пароль",
         "checkedPassWord": "Запомнить",
         "forgetPassWord": "Забыли пароль?",

+ 1 - 1
src/assets/language/uk.json

@@ -1403,7 +1403,7 @@
     },
     "login": {
         "title": "Адміністративна панель",
-        "userNameInput": "Логін",
+        "userNameInput": "ім'я користувача або електронна пошта",
         "passWordInput": "Пароль",
         "checkedPassWord": "Запам'ятати пароль",
         "forgetPassWord": "Забули пароль?",

+ 1 - 1
src/assets/language/zh.json

@@ -1412,7 +1412,7 @@
   },
   "login": {
     "title": "管理后台",
-    "userNameInput": "请输入用户名",
+    "userNameInput": "登录用户名/手机号/邮箱",
     "passWordInput": "请输入密码",
     "checkedPassWord": "记住密码",
     "forgetPassWord": "忘记密码 ?",

+ 5 - 0
src/service/login.js

@@ -6,6 +6,11 @@ export function login(params) {
   return axios.post(`/SZWL-SERVER/tAdmin/login?username=${params.username}&password=${params.password}&hostName=${params.hostName}`, params);
 }
 
+// 新登录
+export function loginSys(params) {
+  return axios.post(`/SZWL-SERVER/tAdmin/loginSys`, params);
+}
+
 // 根据系统ID获取logo和系统名称
 export function getSys(params) {
   return axios.get(`/SZWL-SERVER/tLogo/getLogo?${stringToUrl(params)}`);

+ 126 - 47
src/views/accountPer/add.vue

@@ -5,16 +5,39 @@
     <div class="accountPerBox">
       <van-form @submit="onSubmit" class="modern-form">
         <!-- 表单字段 -->
-        <van-field v-model="username" :label="$t('accountPer.usernameLabel')"
-          :placeholder="$t('accountPer.usernamePlaceholder')" left-icon="user-o" class="modern-field"
-          :rules="[{ required: true, message: $t('accountPer.usernamePlaceholder') }]" />
+        <van-field
+          v-model="username"
+          :label="$t('accountPer.usernameLabel')"
+          :placeholder="$t('accountPer.usernamePlaceholder')"
+          left-icon="user-o"
+          class="modern-field"
+          :rules="[
+            {
+              pattern: /^[a-zA-Z][a-zA-Z0-9]*$/,
+              message: $t('register.usernameRequired'),
+            },
+          ]"
+        />
 
-        <van-field v-model="password" type="password" :label="$t('accountPer.passwordLabel')"
-          :placeholder="passwordPlaceholder" left-icon="lock" class="modern-field" />
+        <van-field
+          v-model="password"
+          type="password"
+          :label="$t('accountPer.passwordLabel')"
+          :placeholder="passwordPlaceholder"
+          left-icon="lock"
+          class="modern-field"
+        />
 
-        <van-field v-model="name" :label="$t('accountPer.nameLabel')" :placeholder="$t('accountPer.namePlaceholder')"
-          left-icon="contact" class="modern-field"
-          :rules="[{ required: true, message: $t('accountPer.namePlaceholder') }]" />
+        <van-field
+          v-model="name"
+          :label="$t('accountPer.nameLabel')"
+          :placeholder="$t('accountPer.namePlaceholder')"
+          left-icon="contact"
+          class="modern-field"
+          :rules="[
+            { required: true, message: $t('accountPer.namePlaceholder') },
+          ]"
+        />
 
         <!-- <van-field v-model="phone" :label="$t('accountPer.phoneLabel')" :placeholder="$t('accountPer.phonePlaceholder')"
           left-icon="phone" class="modern-field"
@@ -31,29 +54,59 @@
         </van-field>
 
         <!-- 角色选择 -->
-        <van-field v-model="roleText" is-link readonly :label="$t('accountPer.roleLabel')"
-          :placeholder="$t('accountPer.rolePlaceholder')" left-icon="friends-o" class="modern-field"
-          @click="roleShow = true" :rules="[{ required: true, message: $t('accountPer.rolePlaceholder') }]" />
+        <van-field
+          v-model="roleText"
+          is-link
+          readonly
+          :label="$t('accountPer.roleLabel')"
+          :placeholder="$t('accountPer.rolePlaceholder')"
+          left-icon="friends-o"
+          class="modern-field"
+          @click="roleShow = true"
+          :rules="[
+            { required: true, message: $t('accountPer.rolePlaceholder') },
+          ]"
+        />
 
         <!-- 启用开关 -->
         <van-field class="switch-field">
           <template #input>
             <div class="switch-container">
               <van-switch v-model="isEnabled" size="20px" />
-              <span class="switch-label">{{ $t("accountPer.startOrNot") }}</span>
+              <span class="switch-label">{{
+                $t("accountPer.startOrNot")
+              }}</span>
             </div>
           </template>
         </van-field>
 
         <!-- 设备管理 -->
-        <van-field v-model="cofficentForm.equipmentNames" :label="$t('accountPer.manageMachinesLabel')"
-          :placeholder="$t('accountPer.manageMachinesPlaceholder')" left-icon="cluster-o" class="modern-field" readonly
-          clearable @click="busiEquipInpClk"
-          :rules="[{ required: true, message: $t('accountPer.manageMachinesPlaceholder') }]">
+        <van-field
+          v-model="cofficentForm.equipmentNames"
+          :label="$t('accountPer.manageMachinesLabel')"
+          :placeholder="$t('accountPer.manageMachinesPlaceholder')"
+          left-icon="cluster-o"
+          class="modern-field"
+          readonly
+          clearable
+          @click="busiEquipInpClk"
+          :rules="[
+            {
+              required: true,
+              message: $t('accountPer.manageMachinesPlaceholder'),
+            },
+          ]"
+        >
           <template #right-icon>
             <div class="field-icons">
-              <van-icon v-if="cofficentForm.equipmentNames" name="clear"
-                @click="cofficentForm.equipmentNames = ''; equipmentIds = ''" />
+              <van-icon
+                v-if="cofficentForm.equipmentNames"
+                name="clear"
+                @click="
+                  cofficentForm.equipmentNames = '';
+                  equipmentIds = '';
+                "
+              />
               <van-icon name="arrow" @click="busiEquipInpClk" />
             </div>
           </template>
@@ -61,23 +114,43 @@
 
         <!-- 操作按钮 -->
         <div class="action-buttons">
-          <van-button round type="primary" native-type="submit" class="submit-btn">
+          <van-button
+            round
+            type="primary"
+            native-type="submit"
+            class="submit-btn"
+          >
             {{ $t("accountPer.submit") }}
           </van-button>
-          <van-button v-if="pageTitle === $t('accountPer.modifyAccount')" round type="danger" class="delete-btn"
-            @click="deleteLoginUserFun">
+          <van-button
+            v-if="pageTitle === $t('accountPer.modifyAccount')"
+            round
+            type="danger"
+            class="delete-btn"
+            @click="deleteLoginUserFun"
+          >
             {{ $t("accountPer.delete") }}
           </van-button>
         </div>
       </van-form>
     </div>
     <van-popup v-model:show="roleShow" round position="bottom">
-      <van-cascader v-model="roleList" :title="$t('accountPer.rolePlaceholder')" :options="roleOptions"
-        @close="roleShow = false" @finish="onRoleFinish" />
+      <van-cascader
+        v-model="roleList"
+        :title="$t('accountPer.rolePlaceholder')"
+        :options="roleOptions"
+        @close="roleShow = false"
+        @finish="onRoleFinish"
+      />
     </van-popup>
     <!-- 机器弹窗 -->
-    <kSelectPop @selconfirm="selEquipConfirm" ref="kSelectPopEquipRef" :selOptions="selEquipOptions"
-      @searchData="searchEquData" :selTitleAndName="['name', 'id']"></kSelectPop>
+    <kSelectPop
+      @selconfirm="selEquipConfirm"
+      ref="kSelectPopEquipRef"
+      :selOptions="selEquipOptions"
+      @searchData="searchEquData"
+      :selTitleAndName="['name', 'id']"
+    ></kSelectPop>
   </div>
 </template>
 
@@ -86,7 +159,13 @@
 import kSelectPop from "../../components/commom/kSelectPop/index.vue";
 import { onMounted, reactive, toRefs, ref } from "vue";
 import sHeader from "../../components/SimpleHeader";
-import { showFailToast, showSuccessToast, showToast, showNotify, showConfirmDialog } from 'vant';
+import {
+  showFailToast,
+  showSuccessToast,
+  showToast,
+  showNotify,
+  showConfirmDialog,
+} from "vant";
 import {
   getSysRoleList,
   getEquipmentList,
@@ -153,10 +232,10 @@ export default {
         console.log(addParams.roleList);
         addParams.equipmentIds = accoutPerSet.equipmentIds;
         havePassword.value = false;
-        passwordPlaceholder.value = t('accountPer.editPasswordPlaceholder')
+        passwordPlaceholder.value = t("accountPer.editPasswordPlaceholder");
       } else {
         pageTitle.value = t("accountPer.addAccount");
-        passwordPlaceholder.value = t('register.passwordPlaceholder');
+        passwordPlaceholder.value = t("register.passwordPlaceholder");
         havePassword.value = true;
       }
       getSysRoleListFun();
@@ -166,19 +245,19 @@ export default {
     const getSysRoleListFun = async () => {
       const { data } = await getSysRoleList({ adminId: user.id });
       if (data.code === "00000") {
-        console.log()
+        console.log();
         roleOptions.value = data.data
-          .filter(item => item.label !== "商家")
-          .map(item => ({
+          .filter((item) => item.label !== "商家")
+          .map((item) => ({
             text: item.label,
-            value: item.value
+            value: item.value,
           }));
 
         if (pageTitle.value === t("accountPer.modifyAccount")) {
           roleText.value = roleOptions.value.filter(
             (v) => v.value === addParams.roleList
           )[0].text;
-          console.log(roleOptions.value)
+          console.log(roleOptions.value);
         }
       } else {
         showFailToast(data.message);
@@ -187,7 +266,7 @@ export default {
 
     const searchEquData = (e) => {
       selEquipOptions.value = e;
-    }
+    };
     // 获取机器下拉
     const getEquipmentListFun = async () => {
       const { data } = await getEquipmentList({ adminId: user.id });
@@ -200,16 +279,16 @@ export default {
         }
         selEquipOptions.value = data.data;
         if (addParams.equipmentIds != null) {
-          const list = addParams.equipmentIds.split(',');
+          const list = addParams.equipmentIds.split(",");
           const listName = [];
           // 根据id找到对应的name
-          selEquipOptions.value.forEach(item => {
-            list.forEach(item1 => {
+          selEquipOptions.value.forEach((item) => {
+            list.forEach((item1) => {
               if (item.id === item1) {
                 listName.push(item.name);
               }
-            })
-          })
+            });
+          });
           cofficentForm.value.equipmentNames = listName.join(",");
         }
       } else {
@@ -219,13 +298,13 @@ export default {
 
     const onSubmit = async () => {
       let params = { adminId: user.id };
-      if (addParams.username === 'admin') {
-        showNotify({ type: 'danger', message: t('register.A0201') });
+      if (addParams.username === "admin") {
+        showNotify({ type: "danger", message: t("register.A0201") });
         return false;
       }
       if (addParams.password != "") {
         if (!passwordPattern.value.test(addParams.password)) {
-          showNotify(t('register.passwordPlaceholder'));
+          showNotify(t("register.passwordPlaceholder"));
           return false;
         }
       }
@@ -247,7 +326,7 @@ export default {
         if (data.code === "00000") {
           showSuccessToast(t("accountPer.accountAddedSuccessfully"));
           router.replace("/accountPer");
-        } else if (data.code === 'A0201') {
+        } else if (data.code === "A0201") {
           showToast(t("accountPer.accountNameExists"));
         } else {
           showFailToast(t("accountPer.failedToAddAccount"), data.message);
@@ -256,8 +335,8 @@ export default {
     };
     const deleteLoginUserFun = () => {
       showConfirmDialog({
-        title: t('user.tips'),
-        message: t('accountPer.delTips'),
+        title: t("user.tips"),
+        message: t("accountPer.delTips"),
       }).then(async () => {
         const params = {
           adminId: user.id,
@@ -293,7 +372,7 @@ export default {
         addParams.equipmentIds = e1.join(",");
       } else {
         cofficentForm.value.equipmentNames = "";
-        addParams.equipmentIds = '';
+        addParams.equipmentIds = "";
       }
       kSelectPopEquipRef.value.selPopClose();
     };
@@ -329,7 +408,7 @@ export default {
 <style lang="less" scoped>
 @import "../../common/style/common.less";
 @primary-color: #4d6add;
-@danger-color: #FF6B6B;
+@danger-color: #ff6b6b;
 
 .modern-form {
   padding: 16px;

+ 1 - 1
src/views/device/deviceOper.vue

@@ -560,7 +560,7 @@
         class="operation-item"
         v-if="
           (device.machineType === '0' || device.machineType === null) &&
-          (user.ifForeign == '1' || user.type == 0) &&
+          user.type == 0 &&
           controlList.includes('C18')
         "
         @click="returnCoinClk()"

+ 2 - 2
src/views/login.vue

@@ -108,7 +108,7 @@ import {
   Dialog,
   Button,
 } from "vant";
-import { login, getSys, getOpenid } from "../service/login";
+import { loginSys, getSys, getOpenid } from "../service/login";
 import {
   setLocal,
   getLocal,
@@ -187,7 +187,7 @@ export default {
 
     // 登录
     const onSubmit = async (values) => {
-      const { data } = await login({
+      const { data } = await loginSys({
         username: values.userName,
         password: md5(values.userPwd),
         hostName: "Sunzee",

+ 1 - 1
src/views/register.vue

@@ -243,7 +243,7 @@
                   size="small"
                   class="code-button"
                   @click="seedVerCode()"
-                  :disabled="time !== 0 || phone.length === 0"
+                  :disabled="time !== 0 || phone.length !== 11"
                   :loading="reqApi"
                   loading-text="发送中..."
                 >

+ 12 - 4
src/views/user.vue

@@ -681,6 +681,8 @@ export default {
 
     // 点击邮箱的确定按钮
     const mailboxChg = async (e, idx) => {
+      // 去掉空格
+      e = e.replace(/\s/g, "");
       switch (idx) {
         case 2:
           if (!e) {
@@ -693,12 +695,16 @@ export default {
               email: e,
             };
             const { data } = await updateAdmin(params);
-            mailboxShow.value = true;
             if (data.code === "00000") {
-              showToast(data.message);
+              mailboxShow.value = true;
+              showToast(t("user.changeSuccess"));
               setTimeout(() => {
                 getAcccountDetail();
               }, 500);
+            } else if (data.code === "00001") {
+              showToast(t("register.A0207"));
+            } else {
+              showToast(data.message);
             }
           }
           break;
@@ -713,12 +719,14 @@ export default {
               phone: e,
             };
             const { data } = await updateAdmin(params);
-            phoneNumberShow.value = true;
             if (data.code === "00000") {
-              showToast(data.message);
+              showToast(t("user.changeSuccess"));
+              phoneNumberShow.value = true;
               setTimeout(() => {
                 getAcccountDetail();
               }, 500);
+            } else {
+              showToast(data.message);
             }
           }
           break;