综述: 优化账号权限分配页面的账号类型和操作类型功能
This commit is contained in:
		
							parent
							
								
									e40537052e
								
							
						
					
					
						commit
						6438d63ded
					
				|  | @ -72,6 +72,20 @@ | ||||||
|             background-color: #40a9ff; |             background-color: #40a9ff; | ||||||
|             transform: translateY(-2px); |             transform: translateY(-2px); | ||||||
|         } |         } | ||||||
|  |          | ||||||
|  |         .tab-btn { | ||||||
|  |             margin-right: 10px; | ||||||
|  |         } | ||||||
|  |          | ||||||
|  |         .tab-btn:not(.active) { | ||||||
|  |             background-color: #f0f0f0; | ||||||
|  |             color: #666; | ||||||
|  |         } | ||||||
|  |          | ||||||
|  |         .tab-btn:not(.active):hover { | ||||||
|  |             background-color: #e0e0e0; | ||||||
|  |             color: #333; | ||||||
|  |         } | ||||||
| 
 | 
 | ||||||
|         .btn-success { |         .btn-success { | ||||||
|             background-color: #52c41a; |             background-color: #52c41a; | ||||||
|  | @ -310,9 +324,6 @@ | ||||||
|         <div class="header"> |         <div class="header"> | ||||||
|             <h1>账号权限分配</h1> |             <h1>账号权限分配</h1> | ||||||
|             <div class="header-actions"> |             <div class="header-actions"> | ||||||
|                 <button class="btn btn-warning" onclick="resetForm()"> |  | ||||||
|                     <i class="fas fa-sync-alt"></i> 重置 |  | ||||||
|                 </button> |  | ||||||
|             </div> |             </div> | ||||||
|         </div> |         </div> | ||||||
| 
 | 
 | ||||||
|  | @ -322,18 +333,45 @@ | ||||||
|             <div class="section"> |             <div class="section"> | ||||||
|                 <h2 class="section-title">账号信息</h2> |                 <h2 class="section-title">账号信息</h2> | ||||||
|                 <div class="account-form"> |                 <div class="account-form"> | ||||||
|  |                     <!-- Tab导航 --> | ||||||
|                     <div class="form-row"> |                     <div class="form-row"> | ||||||
|                         <div class="form-group"> |                         <div class="form-group"> | ||||||
|                             <label for="identitySelect">创建账号身份 *</label> |                             <label>账号类型</label> | ||||||
|                             <select id="identitySelect" onchange="handleIdentityChange()"> |                             <div class="tab-container"> | ||||||
|                                 <option value="">请选择账号身份</option> |                                 <button class="btn btn-primary tab-btn active" onclick="switchTab('sub_merchant')">子经营者</button> | ||||||
|                                 <option value="sub_merchant">子经营者</option> |                                 <button class="btn btn-primary tab-btn" onclick="switchTab('merchant')">商户</button> | ||||||
|                                 <option value="merchant">商户</option> |                             </div> | ||||||
|  |                         </div> | ||||||
|  |                     </div> | ||||||
|  |                      | ||||||
|  |                     <div class="form-row"> | ||||||
|  |                         <div class="form-group"> | ||||||
|  |                             <label for="typeSelect">操作类型 *</label> | ||||||
|  |                             <select id="typeSelect" onchange="handleTypeChange()"> | ||||||
|  |                                 <option value="">请选择操作类型</option> | ||||||
|  |                                 <option value="create">创建新账号</option> | ||||||
|  |                                 <option value="update">更新账号权限</option> | ||||||
|                             </select> |                             </select> | ||||||
|                         </div> |                         </div> | ||||||
|                         <div class="form-group"> |                         <div class="form-group"> | ||||||
|                             <label for="phoneNumber">账号手机号 *</label> |                             <label for="account">账号 *</label> | ||||||
|                             <input type="tel" id="phoneNumber" placeholder="请输入手机号" maxlength="11"> |                             <input type="text" id="account" placeholder="请输入账号"> | ||||||
|  |                         </div> | ||||||
|  |                     </div> | ||||||
|  |                      | ||||||
|  |                     <!-- 初始密码字段 --> | ||||||
|  |                     <div class="form-row" id="passwordRow" style="display: none;"> | ||||||
|  |                         <div class="form-group"> | ||||||
|  |                             <label for="password">初始密码</label> | ||||||
|  |                             <span id="password" style="display: block; padding: 12px 15px; border: 1px solid #d9d9d9; border-radius: 4px; background-color: #fafafa;">123456</span> | ||||||
|  |                         </div> | ||||||
|  |                     </div> | ||||||
|  |                      | ||||||
|  |                     <!-- 重置密码按钮 --> | ||||||
|  |                     <div class="form-row" id="resetPasswordBtnGroup" style="display: none;"> | ||||||
|  |                         <div class="form-group"> | ||||||
|  |                             <label> </label> | ||||||
|  |                             <button class="btn btn-warning" onclick="resetPassword()">重置为初始密码</button> | ||||||
|                         </div> |                         </div> | ||||||
|                     </div> |                     </div> | ||||||
|                 </div> |                 </div> | ||||||
|  | @ -362,11 +400,17 @@ | ||||||
|     </div> |     </div> | ||||||
| 
 | 
 | ||||||
|     <script> |     <script> | ||||||
|         // 身份类型数据 |         // 账号类型数据 | ||||||
|         const identityTypes = [ |         const accountTypes = [ | ||||||
|             { id: 1, name: '子经营者', code: 'sub_merchant' }, |             { id: 1, name: '子经营者', code: 'sub_merchant' }, | ||||||
|             { id: 2, name: '商户', code: 'merchant' } |             { id: 2, name: '商户', code: 'merchant' } | ||||||
|         ]; |         ]; | ||||||
|  |          | ||||||
|  |         // 操作类型数据 | ||||||
|  |         const operationTypes = [ | ||||||
|  |             { value: 'create', name: '创建新账号' }, | ||||||
|  |             { value: 'update', name: '更新账号权限' } | ||||||
|  |         ]; | ||||||
| 
 | 
 | ||||||
|         // 权限数据(从权限编辑页面获取的示例数据) |         // 权限数据(从权限编辑页面获取的示例数据) | ||||||
|         const permissions = [ |         const permissions = [ | ||||||
|  | @ -420,7 +464,8 @@ | ||||||
|             } |             } | ||||||
|         ]; |         ]; | ||||||
| 
 | 
 | ||||||
|         let selectedIdentity = null; |         let selectedAccountType = null; | ||||||
|  |         let selectedOperationType = null; | ||||||
|         let selectedPermissions = new Set(); |         let selectedPermissions = new Set(); | ||||||
| 
 | 
 | ||||||
|         // 初始化页面 |         // 初始化页面 | ||||||
|  | @ -428,30 +473,64 @@ | ||||||
|             initPermissionTree(); |             initPermissionTree(); | ||||||
|             bindEvents(); |             bindEvents(); | ||||||
|         }); |         }); | ||||||
| 
 |          | ||||||
|         // 初始化身份选项(已改为静态select,无需动态初始化) |         // Tab切换功能 | ||||||
|         function handleIdentityChange() { |         function switchTab(tabCode) { | ||||||
|             const select = document.getElementById('identitySelect'); |             // 更新选中的账号类型 | ||||||
|             const selectedValue = select.value; |             selectedAccountType = accountTypes.find(type => type.code === tabCode); | ||||||
|              |              | ||||||
|             if (selectedValue) { |             // 更新tab按钮样式 | ||||||
|                 selectedIdentity = identityTypes.find(type => type.code === selectedValue); |             document.querySelectorAll('.tab-btn').forEach(btn => { | ||||||
|                 console.log('已选择身份:', selectedIdentity); |                 btn.classList.remove('active'); | ||||||
|                 // 这里可以根据身份类型推荐相应的权限 |             }); | ||||||
|                 recommendPermissionsForIdentity(selectedIdentity); |             event.target.classList.add('active'); | ||||||
|             } else { |              | ||||||
|                 selectedIdentity = null; |             console.log('已切换到账号类型:', selectedAccountType); | ||||||
|  |              | ||||||
|  |             // 根据操作类型推荐权限 | ||||||
|  |             if (selectedOperationType) { | ||||||
|  |                 recommendPermissionsForAccountType(selectedAccountType, selectedOperationType); | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         // 根据身份类型推荐权限 |         // 处理操作类型变化 | ||||||
|         function recommendPermissionsForIdentity(identity) { |         function handleTypeChange() { | ||||||
|             // 根据不同身份推荐默认权限 |             const select = document.getElementById('typeSelect'); | ||||||
|  |             const selectedValue = select.value; | ||||||
|  |              | ||||||
|  |             if (selectedValue) { | ||||||
|  |                 selectedOperationType = operationTypes.find(type => type.value === selectedValue); | ||||||
|  |                 console.log('已选择操作类型:', selectedOperationType); | ||||||
|  |                  | ||||||
|  |                 // 显示/隐藏密码字段 | ||||||
|  |                 const passwordRow = document.getElementById('passwordRow'); | ||||||
|  |                 const resetPasswordBtnGroup = document.getElementById('resetPasswordBtnGroup'); | ||||||
|  |                  | ||||||
|  |                 if (selectedValue === 'create') { | ||||||
|  |                     passwordRow.style.display = 'flex'; | ||||||
|  |                     resetPasswordBtnGroup.style.display = 'none'; | ||||||
|  |                 } else if (selectedValue === 'update') { | ||||||
|  |                     passwordRow.style.display = 'none'; | ||||||
|  |                     resetPasswordBtnGroup.style.display = 'block'; | ||||||
|  |                 } | ||||||
|  |                  | ||||||
|  |                 // 根据账号类型和操作类型推荐权限 | ||||||
|  |                 if (selectedAccountType) { | ||||||
|  |                     recommendPermissionsForAccountType(selectedAccountType, selectedOperationType); | ||||||
|  |                 } | ||||||
|  |             } else { | ||||||
|  |                 selectedOperationType = null; | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         // 根据账号类型和操作类型推荐权限 | ||||||
|  |         function recommendPermissionsForAccountType(accountType, operationType) { | ||||||
|  |             // 根据不同账号类型和操作类型推荐默认权限 | ||||||
|             const recommendedPermissions = []; |             const recommendedPermissions = []; | ||||||
|             if (identity.code === 'sub_merchant') { |             if (accountType.code === 'sub_merchant') { | ||||||
|                 // 子经营者推荐基础权限 |                 // 子经营者推荐基础权限 | ||||||
|                 recommendedPermissions.push('CONTENT'); |                 recommendedPermissions.push('CONTENT'); | ||||||
|             } else if (identity.code === 'merchant') { |             } else if (accountType.code === 'merchant') { | ||||||
|                 // 商户推荐更多权限 |                 // 商户推荐更多权限 | ||||||
|                 recommendedPermissions.push('SYSTEM', 'CONTENT'); |                 recommendedPermissions.push('SYSTEM', 'CONTENT'); | ||||||
|             } |             } | ||||||
|  | @ -467,6 +546,13 @@ | ||||||
|             }); |             }); | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|  |         // 重置密码功能 | ||||||
|  |         function resetPassword() { | ||||||
|  |             if (confirm('确定要将密码重置为初始密码123456吗?')) { | ||||||
|  |                 alert('密码已重置为初始密码123456!'); | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|         // 初始化权限树 |         // 初始化权限树 | ||||||
|         function initPermissionTree() { |         function initPermissionTree() { | ||||||
|             const tree = buildPermissionTree(permissions); |             const tree = buildPermissionTree(permissions); | ||||||
|  | @ -676,25 +762,33 @@ | ||||||
| 
 | 
 | ||||||
|         // 绑定事件 |         // 绑定事件 | ||||||
|         function bindEvents() { |         function bindEvents() { | ||||||
|             // 手机号输入验证 |             // 账号输入验证 | ||||||
|             document.getElementById('phoneNumber').addEventListener('input', function(e) { |             document.getElementById('account').addEventListener('input', function(e) { | ||||||
|                 let value = e.target.value.replace(/\D/g, ''); |                 // 可以根据需要添加账号输入验证逻辑 | ||||||
|                 if (value.length > 11) { |                 // 目前保持账号输入不限制格式 | ||||||
|                     value = value.slice(0, 11); |  | ||||||
|                 } |  | ||||||
|                 e.target.value = value; |  | ||||||
|             }); |             }); | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         // 重置表单 |         // 重置表单 | ||||||
|         function resetForm() { |         function resetForm() { | ||||||
|             if (confirm('确定要重置所有信息吗?')) { |             if (confirm('确定要重置所有信息吗?')) { | ||||||
|                 // 重置身份选择 |                 // 重置账号类型选择(默认选择第一个tab) | ||||||
|                 selectedIdentity = null; |                 selectedAccountType = accountTypes[0]; | ||||||
|                 document.getElementById('identitySelect').value = ''; |                 document.querySelectorAll('.tab-btn').forEach(btn => { | ||||||
|  |                     btn.classList.remove('active'); | ||||||
|  |                 }); | ||||||
|  |                 document.querySelector('.tab-btn').classList.add('active'); | ||||||
|                  |                  | ||||||
|                 // 重置手机号 |                 // 重置操作类型选择 | ||||||
|                 document.getElementById('phoneNumber').value = ''; |                 selectedOperationType = null; | ||||||
|  |                 document.getElementById('typeSelect').value = ''; | ||||||
|  |                  | ||||||
|  |                 // 重置账号 | ||||||
|  |                 document.getElementById('account').value = ''; | ||||||
|  |                  | ||||||
|  |                 // 隐藏密码字段和重置密码按钮 | ||||||
|  |                 document.getElementById('passwordRow').style.display = 'none'; | ||||||
|  |                 document.getElementById('resetPasswordBtnGroup').style.display = 'none'; | ||||||
|                  |                  | ||||||
|                 // 重置权限选择 |                 // 重置权限选择 | ||||||
|                 selectedPermissions.clear(); |                 selectedPermissions.clear(); | ||||||
|  | @ -719,21 +813,22 @@ | ||||||
| 
 | 
 | ||||||
|         // 保存权限分配 |         // 保存权限分配 | ||||||
|         function saveAssignment() { |         function saveAssignment() { | ||||||
|             // 验证身份选择 |             // 验证账号类型选择 | ||||||
|             if (!selectedIdentity) { |             if (!selectedAccountType) { | ||||||
|                 alert('请选择账号身份!'); |                 alert('请选择账号类型!'); | ||||||
|                 return; |                 return; | ||||||
|             } |             } | ||||||
|              |              | ||||||
|             // 验证手机号 |             // 验证操作类型选择 | ||||||
|             const phoneNumber = document.getElementById('phoneNumber').value.trim(); |             if (!selectedOperationType) { | ||||||
|             if (!phoneNumber) { |                 alert('请选择操作类型!'); | ||||||
|                 alert('请输入手机号!'); |  | ||||||
|                 return; |                 return; | ||||||
|             } |             } | ||||||
|              |              | ||||||
|             if (!/^1[3-9]\d{9}$/.test(phoneNumber)) { |             // 验证账号 | ||||||
|                 alert('请输入正确的手机号格式!'); |             const account = document.getElementById('account').value.trim(); | ||||||
|  |             if (!account) { | ||||||
|  |                 alert('请输入账号!'); | ||||||
|                 return; |                 return; | ||||||
|             } |             } | ||||||
|              |              | ||||||
|  | @ -745,8 +840,9 @@ | ||||||
|              |              | ||||||
|             // 构建保存数据 |             // 构建保存数据 | ||||||
|             const assignmentData = { |             const assignmentData = { | ||||||
|                 identity: selectedIdentity, |                 accountType: selectedAccountType, | ||||||
|                 phoneNumber: phoneNumber, |                 operationType: selectedOperationType, | ||||||
|  |                 account: account, | ||||||
|                 permissions: Array.from(selectedPermissions) |                 permissions: Array.from(selectedPermissions) | ||||||
|             }; |             }; | ||||||
|              |              | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue