|
@@ -203,6 +203,7 @@
|
|
|
<div class="module-tab" data-module="admin-activity-lottery">4.比价抽奖管理</div>
|
|
<div class="module-tab" data-module="admin-activity-lottery">4.比价抽奖管理</div>
|
|
|
<div class="module-tab" data-module="admin-license">5.入驻信息审核</div>
|
|
<div class="module-tab" data-module="admin-license">5.入驻信息审核</div>
|
|
|
<div class="module-tab" data-module="admin-system-config">6.系统配置管理</div>
|
|
<div class="module-tab" data-module="admin-system-config">6.系统配置管理</div>
|
|
|
|
|
+ <div class="module-tab" data-module="admin-audit-log">7.操作审计日志</div>
|
|
|
</div>
|
|
</div>
|
|
|
|
|
|
|
|
<div id="panels"></div>
|
|
<div id="panels"></div>
|
|
@@ -221,7 +222,7 @@ const SMS_CODE = () => document.getElementById('smsCode')?.value || '123456';
|
|
|
let stats = { pass: 0, fail: 0, pending: 0, total: 0 };
|
|
let stats = { pass: 0, fail: 0, pending: 0, total: 0 };
|
|
|
|
|
|
|
|
const USER_MODULES = ['checkin', 'activity-invite', 'activity-lottery', 'business-license', 'activity-available', 'activity-rewards-tab', 'search-record', 'external-login'];
|
|
const USER_MODULES = ['checkin', 'activity-invite', 'activity-lottery', 'business-license', 'activity-available', 'activity-rewards-tab', 'search-record', 'external-login'];
|
|
|
-const ADMIN_MODULES = ['admin-checkin', 'admin-activity-invite', 'admin-activity-checkin', 'admin-activity-lottery', 'admin-license', 'admin-system-config'];
|
|
|
|
|
|
|
+const ADMIN_MODULES = ['admin-checkin', 'admin-activity-invite', 'admin-activity-checkin', 'admin-activity-lottery', 'admin-license', 'admin-system-config', 'admin-audit-log'];
|
|
|
|
|
|
|
|
// ===================== 大整数安全JSON解析 =====================
|
|
// ===================== 大整数安全JSON解析 =====================
|
|
|
function safeJsonParse(text) {
|
|
function safeJsonParse(text) {
|
|
@@ -449,6 +450,7 @@ function renderModule(module) {
|
|
|
case 'admin-activity-lottery': html = renderAdminActivityLotteryModule(); break;
|
|
case 'admin-activity-lottery': html = renderAdminActivityLotteryModule(); break;
|
|
|
case 'admin-license': html = renderAdminLicenseModule(); break;
|
|
case 'admin-license': html = renderAdminLicenseModule(); break;
|
|
|
case 'admin-system-config': html = renderAdminSystemConfigModule(); break;
|
|
case 'admin-system-config': html = renderAdminSystemConfigModule(); break;
|
|
|
|
|
+ case 'admin-audit-log': html = renderAdminAuditLogModule(); break;
|
|
|
}
|
|
}
|
|
|
panels.innerHTML = html;
|
|
panels.innerHTML = html;
|
|
|
panels.querySelectorAll('input[data-raw]').forEach(input => {
|
|
panels.querySelectorAll('input[data-raw]').forEach(input => {
|
|
@@ -1348,6 +1350,40 @@ function renderAdminLicenseModule() {
|
|
|
${testSection('admin-license-list', '待审核列表', 'GET', 'get', '/api/admin/license/review?reviewStatus=PENDING', '需认证', 'auth-required',
|
|
${testSection('admin-license-list', '待审核列表', 'GET', 'get', '/api/admin/license/review?reviewStatus=PENDING', '需认证', 'auth-required',
|
|
|
[{label:'审核状态(reviewStatus,可选)', name:'reviewStatus', placeholder:'PENDING/APPROVED/REJECTED', default:'PENDING'}],
|
|
[{label:'审核状态(reviewStatus,可选)', name:'reviewStatus', placeholder:'PENDING/APPROVED/REJECTED', default:'PENDING'}],
|
|
|
true, null, '查询入驻信息审核列表。status: PENDING-待审核, APPROVED-已通过, REJECTED-已拒绝')}
|
|
true, null, '查询入驻信息审核列表。status: PENDING-待审核, APPROVED-已通过, REJECTED-已拒绝')}
|
|
|
|
|
+ ${testSection('admin-license-create', '管理员新增入驻信息', 'POST', 'post', '/api/admin/license', '需认证', 'auth-required',
|
|
|
|
|
+ [
|
|
|
|
|
+ {label:'客户用户ID(userId) *', name:'userId', placeholder:'3', default:'3'},
|
|
|
|
|
+ {label:'店铺名称(storeName) *', name:'storeName', placeholder:'管理员新增药房', default:'管理员新增药房'},
|
|
|
|
|
+ {label:'终端类型(terminalType) *', name:'terminalType', placeholder:'SINGLE/CHAIN/CLINIC/COMMUNITY_HEALTH', default:'SINGLE'},
|
|
|
|
|
+ {label:'所在省(province) *', name:'province', placeholder:'广东省', default:'广东省'},
|
|
|
|
|
+ {label:'所在市(city) *', name:'city', placeholder:'深圳市', default:'深圳市'},
|
|
|
|
|
+ {label:'所在区(district) *', name:'district', placeholder:'福田区', default:'福田区'},
|
|
|
|
|
+ {label:'店铺地址(storeAddress) *', name:'storeAddress', placeholder:'福华路100号', default:'福华路100号'},
|
|
|
|
|
+ {label:'联系人姓名(contactPerson) *', name:'contactPerson', placeholder:'赵六', default:'赵六'},
|
|
|
|
|
+ {label:'联系电话(contactPhone) *', name:'contactPhone', placeholder:'13900139003', default:'13900139003'},
|
|
|
|
|
+ {label:'营业执照URL(businessLicenseUrl) *', name:'businessLicenseUrl', placeholder:'https://oss.../license.jpg', default:'https://oss.example.com/license/admin-create.jpg'},
|
|
|
|
|
+ {label:'药品经营许可证URL(drugLicenseUrl) *', name:'drugLicenseUrl', placeholder:'https://oss.../drug.jpg', default:'https://oss.example.com/drug/admin-create.jpg'},
|
|
|
|
|
+ {label:'统一社会信用代码(creditCode)', name:'creditCode', placeholder:'91110000MA12345678', default:''},
|
|
|
|
|
+ {label:'二类医疗器械URL(medicalDeviceClass2Url)', name:'medicalDeviceClass2Url', placeholder:'https://oss.../class2.jpg', default:''},
|
|
|
|
|
+ {label:'三类医疗器械URL(medicalDeviceClass3Url)', name:'medicalDeviceClass3Url', placeholder:'https://oss.../class3.jpg', default:''}
|
|
|
|
|
+ ], true, null, '管理员代客户填写入驻信息。创建后状态为PENDING(待审核),需再操作一次审核确认才转为APPROVED。必须选择未提交过入驻信息的客户,必填基础信息+营业执照+药品经营许可,二类/三类医疗器械至少上传一个')}
|
|
|
|
|
+ ${testSection('admin-license-edit', '管理员编辑入驻信息', 'PUT', 'put', '/api/admin/license/{licenseId}', '需认证', 'auth-required',
|
|
|
|
|
+ [
|
|
|
|
|
+ {label:'资质ID(licenseId) *', name:'licenseId', placeholder:'1', default:'1'},
|
|
|
|
|
+ {label:'店铺名称(storeName) *', name:'storeName', placeholder:'编辑后药房名称', default:'编辑后药房名称'},
|
|
|
|
|
+ {label:'终端类型(terminalType) *', name:'terminalType', placeholder:'SINGLE/CHAIN/CLINIC/COMMUNITY_HEALTH', default:'CHAIN'},
|
|
|
|
|
+ {label:'所在省(province) *', name:'province', placeholder:'北京市', default:'北京市'},
|
|
|
|
|
+ {label:'所在市(city) *', name:'city', placeholder:'北京市', default:'北京市'},
|
|
|
|
|
+ {label:'所在区(district) *', name:'district', placeholder:'海淀区', default:'海淀区'},
|
|
|
|
|
+ {label:'店铺地址(storeAddress) *', name:'storeAddress', placeholder:'中关村大街1号', default:'中关村大街1号'},
|
|
|
|
|
+ {label:'联系人姓名(contactPerson) *', name:'contactPerson', placeholder:'李四更新', default:'李四更新'},
|
|
|
|
|
+ {label:'联系电话(contactPhone) *', name:'contactPhone', placeholder:'13900139001', default:'13900139001'},
|
|
|
|
|
+ {label:'营业执照URL(businessLicenseUrl) *', name:'businessLicenseUrl', placeholder:'https://oss.../license.jpg', default:'https://oss.example.com/license/edited.jpg'},
|
|
|
|
|
+ {label:'药品经营许可证URL(drugLicenseUrl) *', name:'drugLicenseUrl', placeholder:'https://oss.../drug.jpg', default:'https://oss.example.com/drug/edited.jpg'},
|
|
|
|
|
+ {label:'统一社会信用代码(creditCode)', name:'creditCode', placeholder:'91110000MA12345678', default:'91110000MA12345678'},
|
|
|
|
|
+ {label:'二类医疗器械URL(medicalDeviceClass2Url)', name:'medicalDeviceClass2Url', placeholder:'https://oss.../class2.jpg', default:''},
|
|
|
|
|
+ {label:'三类医疗器械URL(medicalDeviceClass3Url)', name:'medicalDeviceClass3Url', placeholder:'https://oss.../class3.jpg', default:''}
|
|
|
|
|
+ ], true, null, '管理员编辑入驻信息(可修改客户信息、替换资质图片,保存后即时生效)。可编辑全部入驻数据(含已审核),必填项约束同样生效。编辑不含userId,客户绑定关系不可更改')}
|
|
|
${testSection('admin-license-approve', '审核通过', 'POST', 'post', '/api/admin/license/review', '需认证', 'auth-required',
|
|
${testSection('admin-license-approve', '审核通过', 'POST', 'post', '/api/admin/license/review', '需认证', 'auth-required',
|
|
|
[
|
|
[
|
|
|
{label:'资质ID(licenseId) *', name:'licenseId', placeholder:'1', default:'1'},
|
|
{label:'资质ID(licenseId) *', name:'licenseId', placeholder:'1', default:'1'},
|
|
@@ -1357,8 +1393,8 @@ function renderAdminLicenseModule() {
|
|
|
[
|
|
[
|
|
|
{label:'资质ID(licenseId) *', name:'licenseId', placeholder:'1', default:'1'},
|
|
{label:'资质ID(licenseId) *', name:'licenseId', placeholder:'1', default:'1'},
|
|
|
{label:'审核动作(action)', name:'action', placeholder:'REJECTED', default:'REJECTED'},
|
|
{label:'审核动作(action)', name:'action', placeholder:'REJECTED', default:'REJECTED'},
|
|
|
- {label:'拒绝原因(rejectReason)', name:'rejectReason', placeholder:'图片不清晰', default:''}
|
|
|
|
|
- ], true, null, '拒绝入驻信息申请,需填写拒绝原因供申请人查看')}`;
|
|
|
|
|
|
|
+ {label:'拒绝原因(rejectReason) *', name:'rejectReason', placeholder:'图片不清晰,请重新上传', default:'资质图片不清晰,请重新上传'}
|
|
|
|
|
+ ], true, null, '拒绝入驻信息申请,驳回原因必填。只能对PENDING(新提交/未审核通过)的记录驳回,APPROVED不允许驳回。驳回后客户端移除展示,用户可重新上传提交')}`;
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
// ==================== 运营端:系统配置管理模块 ====================
|
|
// ==================== 运营端:系统配置管理模块 ====================
|