# ZKCHA1 证书与查询日志管理插件
## 1. 插件介绍

ZKCHA1是一个基于ThinkPHP框架开发的证书管理与查询日志管理插件,主要用于管理证书信息和记录证书查询日志。

### 1.1 核心功能
- **证书管理**:实现证书的增删改查功能
- **查询日志管理**:记录和管理证书查询日志
- **数据可视化**:提供证书参数的可视化编辑功能
- **权限控制**:完善的菜单权限配置
### 1.2 技术栈
- **后端**:ThinkPHP 6.x
- **前端**:Uniapp + Vue 3
- **数据库**:MySQL
## 2. 目录结构
```
plugin/zkcha1/
├── admin/ # 后台控制器
│ ├── Certificate.php # 证书管理控制器
│ └── QueryLog.php # 查询日志管理控制器
├── api/ # API接口
│ └── Certificate.php # 证书相关API
├── model/ # 数据模型
│ ├── Certificate.php # 证书模型
│ └── QueryLog.php # 查询日志模型
├── uniapp/admin/pages/zkcha1/ # 前端页面
│ ├── certificate/ # 证书管理页面
│ │ ├── list.vue # 证书列表
│ │ ├── edit.vue # 证书编辑/查看
│ │ └── dels.vue # 证书删除确认
│ └── query_log/ # 查询日志管理页面
│ ├── list.vue # 日志列表
│ ├── edit.vue # 日志详情
│ └── dels.vue # 日志删除确认
├── config.php # 插件配置
├── README.md # 插件说明文档
└── CHANGELOG.md # 变更记录
```
## 3. 功能模块
### 3.1 证书管理模块
#### 3.1.1 核心功能
- 证书信息的增删改查
- 证书参数的可视化编辑
- 证书列表的分页、搜索和筛选
- 证书的批量删除
#### 3.1.2 数据结构
**表名**:`zenkuai_plugin_zkcha1_certificates`
**主要字段**:
- `id`:证书ID
- `cert_no`:证书编号
- `name`:姓名
- `params`:证书参数(JSON格式)
- `start_time`:证书有效期开始时间
- `end_time`:证书有效期结束时间
- `create_time`:创建时间
- `update_time`:更新时间
#### 3.1.3 证书参数格式
证书参数采用三级嵌套的JSON格式:
```json
[
[
{"name": "技能等级", "value": "高级"},
{"name": "考核成绩", "value": "优秀"}
],
[
{"name": "编程语言", "value": "PHP, JavaScript, Python"},
{"name": "框架掌握", "value": "ThinkPHP, Vue.js"}
],
[
{"name": "发证机关", "value": "中国计算机行业协会"},
{"name": "证书编号", "value": "ZC202500001"}
]
]
```
### 3.2 查询日志管理模块
#### 3.2.1 核心功能
- 查询日志的列表展示
- 日志详情的弹窗查看
- 日志的单条和批量删除
- 按条件搜索(证书编号、姓名、时间范围)
#### 3.2.2 数据结构
**表名**:`zenkuai_plugin_zkcha1_query_logs`
**主要字段**:
- `id`:日志ID
- `cert_no`:证书编号
- `name`:姓名
- `phone`:手机号码
- `query_ip`:查询IP
- `query_time`:查询时间(时间戳)
- `result`:查询结果(1=找到,0=未找到)
## 4. 安装与配置
### 4.1 安装
将插件目录复制到ThinkPHP项目的`plugin`目录下即可。
### 4.2 配置
#### 4.2.1 数据库配置
确保数据库已创建以下表:
- `zenkuai_plugin_zkcha1_certificates`
- `zenkuai_plugin_zkcha1_query_logs`
#### 4.2.2 菜单配置
在`config.php`中配置后台菜单和权限:
```php
return [
[
'menu_id' => 20,
'menu_name' => '证书管理',
'children' => [
[
'url' => '/pages/zkcha1/certificate/list',
'menu_name' => '证书列表',
'perms' => 'plugin/zkcha1/admin/Certificate/lists,plugin/zkcha1/admin/Certificate/views,plugin/zkcha1/admin/Certificate/dels,plugin/zkcha1/admin/Certificate/batch_dels'
]
]
],
[
'menu_id' => 23,
'menu_name' => '查询日志管理',
'children' => [
[
'url' => '/pages/zkcha1/query_log/list',
'menu_name' => '查询日志列表',
'perms' => 'plugin/zkcha1/admin/QueryLog/lists,plugin/zkcha1/admin/QueryLog/views,plugin/zkcha1/admin/QueryLog/dels,plugin/zkcha1/admin/QueryLog/batch_dels'
]
]
]
];
```
#### 4.2.3 路由配置
在`pages.json`中配置前端路由:
```json
[
{
"path": "pages/zkcha1/certificate/list",
"style": {"navigationBarTitleText": "证书列表"}
},
{
"path": "pages/zkcha1/certificate/edit",
"style": {"navigationBarTitleText": "证书编辑"}
},
{
"path": "pages/zkcha1/query_log/list",
"style": {"navigationBarTitleText": "查询日志列表"}
},
{
"path": "pages/zkcha1/query_log/edit",
"style": {"navigationBarTitleText": "查询日志详情"}
}
]
```
## 5. 接口说明
### 5.1 证书管理接口
#### 5.1.1 查询证书列表
```
接口:plugin/zkcha1/admin/Certificate/lists
方法:POST
参数:
- page:页码
- limit:每页条数
- cert_no:证书编号(可选)
- name:姓名(可选)
返回:证书列表数据
```
#### 5.1.2 查看证书详情
```
接口:plugin/zkcha1/admin/Certificate/views
方法:POST
参数:
- id:证书ID
返回:证书详情数据
```
#### 5.1.3 保存证书
```
接口:plugin/zkcha1/admin/Certificate/edit
方法:POST
参数:
- id:证书ID(编辑时必填)
- cert_no:证书编号
- name:姓名
- params:证书参数(JSON格式)
- start_time:开始时间
- end_time:结束时间
返回:操作结果
```
#### 5.1.4 删除证书
```
接口:plugin/zkcha1/admin/Certificate/dels
方法:POST
参数:
- id:证书ID
返回:操作结果
```
#### 5.1.5 批量删除证书
```
接口:plugin/zkcha1/admin/Certificate/batch_dels
方法:POST
参数:
- ids:证书ID数组
返回:操作结果
```
### 5.2 查询日志管理接口
#### 5.2.1 查询日志列表
```
接口:plugin/zkcha1/admin/QueryLog/lists
方法:POST
参数:
- page:页码
- limit:每页条数
- cert_no:证书编号(可选)
- name:姓名(可选)
- start_time:开始时间(可选)
- end_time:结束时间(可选)
返回:日志列表数据
```
#### 5.2.2 查看日志详情
```
接口:plugin/zkcha1/admin/QueryLog/views
方法:POST
参数:
- id:日志ID
返回:日志详情数据
```
#### 5.2.3 删除日志
```
接口:plugin/zkcha1/admin/QueryLog/dels
方法:POST
参数:
- id:日志ID
返回:操作结果
```
#### 5.2.4 批量删除日志
```
接口:plugin/zkcha1/admin/QueryLog/batch_dels
方法:POST
参数:
- ids:日志ID数组
返回:操作结果
```
## 6. 前端页面说明
### 6.1 证书管理页面
#### 6.1.1 证书列表页面(list.vue)
- 实现证书的列表展示
- 提供搜索、分页功能
- 支持批量选择和批量删除
- 提供新增、编辑、删除操作按钮
#### 6.1.2 证书编辑页面(edit.vue)
- 实现证书信息的编辑功能
- 证书参数的可视化编辑
- 使用`uni-datetime-picker`组件选择日期
- 表单验证和提交
#### 6.1.3 证书删除页面(dels.vue)
- 实现证书删除的确认功能
- 使用弹窗形式展示确认信息
### 6.2 查询日志管理页面
#### 6.2.1 日志列表页面(list.vue)
- 实现查询日志的列表展示
- 提供搜索、分页功能
- 支持批量选择和批量删除
- 提供查看、删除操作按钮
#### 6.2.2 日志详情页面(edit.vue)
- 实现查询日志详情的弹窗展示
- 只读显示日志信息
#### 6.2.3 日志删除页面(dels.vue)
- 实现日志删除的确认功能
- 使用弹窗形式展示确认信息
## 7. 使用方法
### 7.1 证书管理
1. **查看证书列表**:登录后台,进入"证书管理"菜单,查看所有证书
2. **新增证书**:点击"新增"按钮,填写证书信息,可视化编辑证书参数
3. **编辑证书**:点击列表中的"编辑"按钮,修改证书信息
4. **删除证书**:点击列表中的"删除"按钮,确认后删除证书
5. **批量删除**:选择多条证书,点击"批量删除"按钮
### 7.2 查询日志管理
1. **查看日志列表**:登录后台,进入"查询日志管理"菜单,查看所有查询日志
2. **搜索日志**:使用证书编号、姓名、时间范围进行搜索
3. **查看日志详情**:点击列表中的"查看"按钮,在弹窗中查看日志详情
4. **删除日志**:点击列表中的"删除"按钮,确认后删除日志
5. **批量删除**:选择多条日志,点击"批量删除"按钮
## 8. 注意事项
### 8.1 证书参数编辑
证书参数采用可视化编辑,编辑后会自动转换为JSON格式保存到数据库中。
### 8.2 日期格式
使用`uni-datetime-picker`组件选择日期,确保日期格式正确。
### 8.3 权限配置
确保在`config.php`中正确配置菜单权限,否则可能无法访问相关功能。
### 8.4 数据库表
确保数据库中已创建相关表,否则插件无法正常工作。
### 8.5 接口调用
所有接口调用都需要通过POST方法,确保参数格式正确。
## 9. 常见问题
### 9.1 证书参数可视化编辑不生效
检查是否正确引入了相关组件,确保JSON格式正确。
### 9.2 查询日志详情弹窗不显示
检查`list.vue`中的组件引用是否正确,确保`on_edit`方法正确调用。
### 9.3 日期选择器显示异常
确保使用了`uni-datetime-picker`组件,并且配置正确。
## 10. 更新日志
详细的更新记录请查看`CHANGELOG.md`文件。
## 11. 联系方式
如有问题或建议,请联系插件开发者。
-
如有问题或建议,请联系插件开发者。