综述: 优化账号权限分配页面的账号类型和操作类型功能
This commit is contained in:
parent
e40537052e
commit
6438d63ded
|
|
@ -73,6 +73,20 @@
|
||||||
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;
|
||||||
color: #fff;
|
color: #fff;
|
||||||
|
|
@ -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,12 +400,18 @@
|
||||||
</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();
|
||||||
|
|
||||||
// 初始化页面
|
// 初始化页面
|
||||||
|
|
@ -429,29 +474,63 @@
|
||||||
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