Procházet zdrojové kódy

更新团队管理视图,新增密码和确认密码字段,完善表单验证逻辑,调整路由结构以支持团队信息子项。

wuyi před 4 měsíci
rodič
revize
67a820cab3

+ 0 - 1
src/components/NavMenuItem.vue

@@ -83,7 +83,6 @@ const toggleSubmenu = () => {
 .submenu .nav-menu-item {
   margin: 0.125rem 0.5rem;
   padding: 0.375rem 0.75rem;
-  font-size: 0.875rem;
 }
 
 .submenu-enter-active,

+ 2 - 5
src/enums/index.js

@@ -1,10 +1,7 @@
 export const UserRole = {
-  user: '普通用户',
   admin: '管理员',
-  channel: '渠道',
-  operator: '运营',
-  mss: 'MSS',
-  show: 'SHOW'
+  team: '队长',
+  user: '队员',
 }
 
 export const ConfigType = {

+ 8 - 1
src/router/index.js

@@ -48,7 +48,14 @@ const router = createRouter({
         {
           path: 'team',
           name: 'team',
-          component: () => import('@/views/TeamView.vue')
+          redirect: '/main/team/info',
+          children: [
+            {
+              path: 'info',
+              name: 'team-info',
+              component: () => import('@/views/TeamView.vue')
+            }
+          ]
         },
         {
           path: 'link',

+ 7 - 1
src/views/MainView.vue

@@ -35,7 +35,13 @@ const navItems = [
   {
     label: '团队管理',
     icon: 'pi pi-fw pi-building',
-    name: 'team'
+    items: [
+      {
+        label: '团队信息',
+        icon: 'pi pi-fw pi-info-circle',
+        name: 'team-info'
+      }
+    ]
   },
   {
     label: '推广链接',

+ 75 - 3
src/views/TeamView.vue

@@ -142,6 +142,32 @@
             class="w-full"
           />
         </div>
+
+        <div v-if="!isEdit" class="field mt-4">
+          <label for="edit-password" class="font-medium text-sm mb-2 block">密码</label>
+          <Password
+            id="edit-password"
+            v-model="editForm.password"
+            :feedback="false"
+            toggleMask
+            class="w-full"
+            placeholder="请输入密码"
+            inputClass="w-full"
+          />
+        </div>
+
+        <div v-if="!isEdit" class="field mt-4">
+          <label for="edit-confirmPassword" class="font-medium text-sm mb-2 block">确认密码</label>
+          <Password
+            id="edit-confirmPassword"
+            v-model="editForm.confirmPassword"
+            :feedback="false"
+            toggleMask
+            class="w-full"
+            placeholder="请再次输入密码"
+            inputClass="w-full"
+          />
+        </div>
       </div>
 
       <template #footer>
@@ -163,6 +189,7 @@ import DataTable from 'primevue/datatable'
 import Dialog from 'primevue/dialog'
 import InputText from 'primevue/inputtext'
 import InputNumber from 'primevue/inputnumber'
+import Password from 'primevue/password'
 import { useConfirm } from 'primevue/useconfirm'
 import { useToast } from 'primevue/usetoast'
 import { listTeams, createTeam, updateTeam, deleteTeam } from '@/services/api'
@@ -190,7 +217,9 @@ const isEdit = ref(false)
 const editForm = ref({
   id: null,
   name: null,
-  commissionRate: null
+  commissionRate: null,
+  password: null,
+  confirmPassword: null
 })
 
 // 搜索表单
@@ -316,7 +345,9 @@ const openAddDialog = () => {
   editForm.value = {
     id: null,
     name: null,
-    commissionRate: null
+    commissionRate: null,
+    password: null,
+    confirmPassword: null
   }
   editDialog.value = true
 }
@@ -327,13 +358,37 @@ const openEditDialog = (team) => {
   editForm.value = {
     id: team.id,
     name: team.name || null,
-    commissionRate: team.commissionRate || null
+    commissionRate: team.commissionRate || null,
+    password: null,
+    confirmPassword: null
   }
   editDialog.value = true
 }
 
 // 保存编辑
 const saveEdit = async () => {
+  // 如果是新增且密码不匹配,显示错误
+  if (!isEdit.value && editForm.value.password !== editForm.value.confirmPassword) {
+    toast.add({
+      severity: 'error',
+      summary: '错误',
+      detail: '两次输入的密码不一致',
+      life: 3000
+    })
+    return
+  }
+
+  // 如果是新增且密码为空,显示错误
+  if (!isEdit.value && (!editForm.value.password || editForm.value.password.trim() === '')) {
+    toast.add({
+      severity: 'error',
+      summary: '错误',
+      detail: '密码不能为空',
+      life: 3000
+    })
+    return
+  }
+
   editLoading.value = true
   try {
     // 过滤掉空值参数
@@ -344,6 +399,10 @@ const saveEdit = async () => {
     if (editForm.value.commissionRate !== null && editForm.value.commissionRate !== '') {
       formData.commissionRate = editForm.value.commissionRate
     }
+    // 新增时添加密码字段
+    if (!isEdit.value && editForm.value.password) {
+      formData.password = editForm.value.password
+    }
 
     if (isEdit.value) {
       await updateTeam(editForm.value.id, formData)
@@ -448,4 +507,17 @@ onMounted(() => {
   background-color: #d1d5db;
   transform: scale(0.98);
 }
+
+/* Password组件样式修复 */
+.p-password {
+  width: 100%;
+}
+
+.p-password .p-inputtext {
+  width: 100%;
+}
+
+.p-password .p-password-input {
+  width: 100%;
+}
 </style>