登录与退出
登录后台
- 接口说明:
登录后台接口
- 请求URL:
/vuecmf/admin/login
- 请求方式:
post
- 请求参数
参数名 | 必须 | 类型 | 说明 |
---|---|---|---|
login_name | 是 | string | 登录名称 |
password | 是 | string | 登录密码 |
- 请求示例
{
"data":
{
"login_name": "test",
"password": "123456"
}
}
返回值(data)
字段名 类型 说明 token string 登录token username string 用户名 role string 角色名 last_login_time string 最后登录时间 last_login_ip string 最后登录IP version string VueCMF框架版本号 os string 服务器系统名称 software string 服务器软件信息 mysql string MySQL版本 upload_max_size string 最大上传文件大小 返回示例
{
"data":
{
"token":"ec10da7226d691587726e0b3ebdf0ac2",
"user":{
"username":"test",
"role":"管理员",
"last_login_time":"2022-04-10 20:58:40",
"last_login_ip":"192.168.10.100"
},
"server":{
"version":"2.0.0",
"os":"WINNT",
"software":"Apache\/2.4.39 (Win64) OpenSSL\/1.1.1b mod_fcgid\/2.3.9a mod_log_rotate\/1.02",
"mysql":"5.7.26",
"upload_max_size":"2M"
}
},
"msg":"登录成功!",
"code":0
}
退出系统
- 接口说明:
退出系统接口
- 请求URL:
/vuecmf/admin/logout
- 请求方式:
post
- 请求参数
参数名 | 必须 | 类型 | 说明 |
---|---|---|---|
token | 是 | string | 登录token |
- 请求示例
{
"data":
{
"token":"ec10da7226d691587726e0b3ebdf0ac2"
}
}
返回值
字段名 类型 说明 data boolean 结果 msg string 提示信息 code number 状态码 返回示例
{
"data":true,
"msg":"登录已退出!",
"code":0
}
系统管理
请求头信息
- token: 为登录后返回的授权token信息
- Content-Type:为传输的数据格式
请求方式
post
后端API映射
- 接口说明:
获取后端API映射列表接口URL
- 请求URL:
/vuecmf/model_action/get_api_map
- 请求示例
{
"data":{
"table_name":"menu", //菜单表名,必须
"action_type":"nav" //动作类型,必须
}
}
- 返回示例
{
"data":"/vuecmf/menu/nav", //后端API映射列表接口URL
"msg":"拉取Api映射列表成功!",
"code":0
}
API映射列表和导航菜单
- 接口说明:
获取后端API映射列表和导航菜单数据
- 请求URL:
/vuecmf/menu/nav
- 请求示例
{
"data":{
"username":"vuecmf" //登录用户名,必须
}
}
- 返回示例
{
"data":{
//用户拥有权限的后端API列表映射
"api_maps":{
//模型名称
"model_config":{ //模型下的动作, 键 = 动作类型, 值 = 后端API接口地址
"list":"/vuecmf/model_config",
"save":"/vuecmf/model_config/save",
"delete":"/vuecmf/model_config/delete",
"save_all":"/vuecmf/model_config/save_all"
},
......//此处数据省略
},
//导航菜单列表
"nav_menu":{
"m7":{ //菜单链接
"mid":"m7", //菜单链接
"id":7, //菜单ID
"pid":0, //父级ID
"title":"相册", //菜单标题
"icon":"document", //菜单图标名称
"model_id":0, //挂载的模型ID
"id_path":[ //菜单路径
"m7"
],
"path_name":[ //菜单路径标题
"相册"
],
"children":{ //子菜单列表
"m8":{
"mid":"m8", //菜单链接
"id":8, //菜单ID
"pid":7, //父级ID
"title":"相册分类", //菜单标题
"icon":"document", //菜单标题
"model_id":14, //挂载的模型ID
"id_path":[ //菜单路径
"m7",
"m8"
],
"path_name":[ //菜单路径标题
"相册",
"相册分类"
],
"table_name":"photo_category", //模型表名
"default_action_type":"list", //进入菜单的默认动作类型
"component_tpl":"template/content/List", //菜单挂载的模板
"search_field_id":"109", //列表关键词过滤时,需要筛选的字段ID
"is_tree":10 //是否为目录树, 10 = 是, 20 = 否
},
......//此处数据省略
}
},
......//此处数据省略
}
},
"msg":"拉取成功!",
"code":0
}
列表
请求URL
- 应用列表:
/vuecmf/app_config
- 管理员列表:
/vuecmf/admin
- 角色列表:
/vuecmf/roles
- 模型配置列表:
/vuecmf/model_config
- 字段列表:
/vuecmf/model_field
- 字段选项列表:
/vuecmf/field_option
- 字段关联列表:
/vuecmf/model_relation
- 索引列表:
/vuecmf/model_index
- 动作列表:
/vuecmf/model_action
- 表单列表:
/vuecmf/model_form
- 表单验证列表:
/vuecmf/model_form_rules
- 表单联动列表:
/vuecmf/model_form_linkage
- 菜单列表:
/vuecmf/menu
获取列表字段信息
- 请求示例(获取列表字段信息)
{
"data":{
"action":"getField", //固定值
"filter":{
"model_id": 3 //模型ID, 即是获取哪个模型的列表字段相关信息
}
}
}
- 返回示例
{
"data":{
//列字段信息
"field_info":[
{
"field_id":67, //字段ID
"prop":"id", //字段名
"label":"ID", //列标题
"width":100, //列宽度
"length":11, //字段最大长度
"show":true, //是否在列表中显示
"fixed":false, //是否固定列,即拖动列表的横向滚动条,列固定不动
"filter":false, //列头是否显示过滤表单
"tooltip":"自增ID", //列标题提示语
"model_id":8, //模型ID
"sortable":true //列数据是否可排序
},
...... //这里省略
],
//表单信息(新增/编辑表单)
"form_info":{
"1":{
"field_id":68, //字段ID
"field_name":"username", //表单控件的name名称
"label":"用户名", //表单的label标签名称
"type":"text", //表单控件类型
"default_value":"", //表单默认值
"is_disabled":20, //表单是否禁用,10=是,20=否
"sort_num":1 //表单排列顺序,小的排在前面
},
...... //这里省略
},
//表单验证
"form_rules":{
//键 = 表单控件的name名称, 值 = 表单的验证规则
"username":[
{
"required":true,
"message":"用户名必填",
"trigger":"blur"
},
{
"min":4,
"max":32,
"message":"用户名长度为4到32个字符",
"trigger":"blur"
}
],
...... //这里省略
},
//字段选项
"field_option":{
//键 = 字段ID, 值 = 该字段的枚举内容
"72":{
"10":"是",
"20":"否"
},
...... //这里省略
},
"relation_info":{
//列表中转换数据用,例如将 状态列中数据 10,20 转换成 是,否
"full_options": [
//键 = 列的字段ID, 值 = 该列可转换的内容
"50":[
{
"label":"model_config(模型配置)", //转换后在列中显示的文本
"id":1 //对应列数据中的值
},
...... //这里省略
],
...... //这里省略
],
//表单中使用(如下拉框列表、单选按钮组,复选框组)
"options":[
//内容结构同full_options
],
//表单下拉框联动
"linkage":[
//键 = 字段ID(表单对应字段ID), 值 = 关联字段信息(即关联表单对应的字段信息)
"50":{
"51":{
"relation_field_id":51, //关联字段ID
"action_table_name":"model_field", //获取关联字段数据对应模型的表名
"action_type":"dropdown" //获取关联字段数据对应的 动作名称
//通过action_table_name和action_type即可调用对应后端获取下拉列表API得到 对应 下拉列表数据
}
},
...... //这里省略
]
},
"model_id":8 //模型ID
},
"msg":"拉取成功", //接口信息提示
"code":0 //接口状态码
}
获取列表数据信息
- 请求示例(获取列表数据信息)
{
"data":{
"page_size":20, //每页显示条数
"order_field":"", //排序字段名
"order_sort":"desc", //排序方式
"keywords":"", //搜索关键词
"filter":{ //列头的过滤表单
"username": "zhangsan"
},
"offset":0, //偏移量
"limit":20, //每页显示条数
"page":1 //当前页码
}
}
- 返回示例
{
"data":{
"total":1, //总条数
"per_page":20, //每页显示条数
"current_page":1, //当前页码
"last_page":1, //最后的页码数(总页数)
"data":[ //列表数据, 键 = 字段名, 值 = 字段的值
{
"id":1,
"username":"zhangsan",
"email":"test@test.com",
"mobile":"18988888888",
"is_super":20,
"reg_time":"2022-04-09 22:43:00",
"reg_ip":"",
"last_login_time":"2022-04-10 20:58:40",
"last_login_ip":"::1",
"update_time":"2022-04-09 22:43:00",
"token":"ec10da7226d611587726e0b3ebdf0ac2",
"status":10,
"roles":[
"管理员"
]
}
]
},
"msg":"拉取成功", //接口信息提示
"code":0 //接口状态码
}
新增和编辑
保存单条数据
列表中的新增、编辑表单时保存数据的接口
请求URL
- 保存应用:
/vuecmf/app_config/save
- 保存管理员:
/vuecmf/admin/save
- 保存保存角色:
/vuecmf/roles/save
- 保存模型配置:
/vuecmf/model_config/save
- 保存字段:
/vuecmf/model_field/save
- 保存字段选项:
/vuecmf/field_option/save
- 保存字段关联:
/vuecmf/model_relation/save
- 保存索引:
/vuecmf/model_index/save
- 保存动作:
/vuecmf/model_action/save
- 保存表单:
/vuecmf/model_form/save
- 保存表单验证:
/vuecmf/model_form_rules/save
- 保存表单联动:
/vuecmf/model_form_linkage/save
- 保存菜单:
/vuecmf/menu/save
请求示例
{
"data":{ //需要保存的表单数据, 键 = 字段名, 值 = 字段的值
"id":15, //新增时,此id没有,只有编辑时才有
"table_name":"photo",
"label":"我的相册",
"component_tpl":"template/content/List",
"default_action_id":89,
"search_field_id":[116],
"type":20,
"is_tree":"20",
"remark":"我的相册",
"status":"10"
}
}
返回示例
{
"data":{ //保存成功的数据, 键 = 字段名, 值 = 字段的值
"id":15,
"table_name":"photo",
"label":"我的相册",
"component_tpl":"template\/content\/List",
"default_action_id":89,
"search_field_id":"116",
"type":20,
"is_tree":"20",
"remark":"我的相册",
"status":"10"
},
"msg":"保存成功",
"code":0
}
批量保存数据
列表中导入数据的后端API接口
请求URL
- 导入应用:
/vuecmf/app_config/save_all
- 导入管理员:
/vuecmf/admin/save_all
- 导入角色:
/vuecmf/roles/save_all
- 导入模型配置:
/vuecmf/model_config/save_all
- 导入字段:
/vuecmf/model_field/save_all
- 导入字段选项:
/vuecmf/field_option/save_all
- 导入字段关联:
/vuecmf/model_relation/save_all
- 导入索引:
/vuecmf/model_index/save_all
- 导入动作:
/vuecmf/model_action/save_all
- 导入表单:
/vuecmf/model_form/save_all
- 导入表单验证:
/vuecmf/model_form_rules/save_all
- 导入表单联动:
/vuecmf/model_form_linkage/save_all
- 导入菜单:
/vuecmf/menu/save_all
请求示例
{
//上传内容为JSON字符串
"data":"[{\"photo_name\":\"批量上传1\",\"photo_url\":\"90dd8611882177d50b67432bd686ec1d.jpg\",\"status\":10},{\"photo_name\":\"批量上传2\",\"photo_url\":\"90dd8611882177d50b67432bd686ec1d.jpg\",\"status\":10},]"
}
返回示例
{
//上传保存成功的内容
"data":[
{
"photo_name":"批量上传1",
"photo_url":"90dd8611882177d50b67432bd686ec1d.jpg",
"status":10,
"id":"1"
},
{
"photo_name":"批量上传2",
"photo_url":"90dd8611882177d50b67432bd686ec1d.jpg",
"status":10,
"id":"2"
}
],
"msg":"保存成功", //上传成功提示
"code":0 //上传成功状态码
}
删除
列表中删除数据的后端API接口
请求URL
- 删除应用:
/vuecmf/app_config/delete
- 删除管理员:
/vuecmf/admin/delete
- 删除角色:
/vuecmf/roles/delete
- 删除模型配置:
/vuecmf/model_config/delete
- 删除字段:
/vuecmf/model_field/delete
- 删除字段选项:
/vuecmf/field_option/delete
- 删除字段关联:
/vuecmf/model_relation/delete
- 删除索引:
/vuecmf/model_index/delete
- 删除动作:
/vuecmf/model_action/delete
- 删除表单:
/vuecmf/model_form/delete
- 删除表单验证:
/vuecmf/model_form_rules/delete
- 删除表单联动:
/vuecmf/model_form_linkage/delete
- 删除菜单:
/vuecmf/menu/delete
请求示例
{
"data":{
"id":1 //需要删除的数据id, 若需要删除多个,则传入多个id,用英文逗号分隔的字符串即可
}
}
返回示例
{
"data":true,
"msg":"删除成功", //成功提示
"code":0 //成功状态码
}
设置用户
获取待分配用户列表
请求URL:
/vuecmf/roles/get_all_users
请求示例 无
返回示例
{
//待分配用户列表数据
"data":[
{
"key":2, //用户ID
"label":"test", //用户名
"disabled":0 //是否禁止选择, 0 = 否, 1 = 是
},
...... //这里省略
],
"msg":"拉取所有用户成功!", //拉取成功提示
"code":0 //拉取成功状态码
}
获取指定角色下已分配用户列表
- 请求URL:
/vuecmf/roles/get_users
- 请求示例
{
"data":{
"role_name":"管理员", //角色名称, 必须
"app_name":"vuecmf" //应用名称
}
}
- 返回示例
{
//已分配用户ID列表
"data":[
2,3
],
"msg":"拉取角色用户成功!", //拉取成功提示
"code":0 //拉取成功状态码
}
保存角色下分配的用户
- 请求URL:
/vuecmf/roles/add_users
- 请求示例
{
"data":{
"role_name":"管理员", //角色名称, 必须
//分配的用户ID列表, 若传入空列表,则是清除角色下所有用户
"userid_list":[
2,
3
],
"app_name":"vuecmf" //应用名称
}
}
- 返回示例
{
"data":true,
"msg":"分配用户成功!", //保存成功提示
"code":0 //保存成功状态码
}
设置角色
获取待分配角色列表
请求URL:
/vuecmf/admin/get_all_roles
请求示例 无
返回示例
{
"data":[
{
"key":1, //角色ID
"label":"管理员", //角色名称
"disabled":0 //是否禁止选择, 0 = 否, 1 = 是
},
...... //这里省略
],
"msg":"拉取所有角色成功!", //拉取成功提示
"code":0 //拉取成功状态码
}
获取指定用户下已分配角色列表
- 请求URL:
/vuecmf/admin/get_roles
- 请求示例
{
"data":{
"username":"demo", //用户名称
"app_name":"vuecmf" //应用名称
}
}
- 返回示例
{
//已分配角色ID列表
"data":[
2,3
],
"msg":"拉取角色成功!", //拉取成功提示
"code":0 //拉取成功状态码
}
保存用户下分配的角色
- 请求URL:
/vuecmf/admin/add_role
- 请求示例
{
"data":{
"username":"demo", //用户名
//角色ID列表
"role_id_list":[
1,2
],
"app_name":"vuecmf" //应用名称
}
}
- 返回示例
{
"data":true,
"msg":"添加用户角色成功!", //保存成功提示
"code":0 //保存成功状态码
}
设置权限
获取所有权限项列表
请求URL:
/vuecmf/model_action/get_action_list
请求示例 无
返回示例
{
"data":{
//权限项列表
"模型配置":{ //模型标签, 键 = 模型动作ID, 值 = 模型动作名称
"1":"模型管理列表",
"2":"保存模型",
"3":"删除模型",
"4":"批量保存模型"
},
...... //这里省略
},
"msg":"拉取所有动作列表成功!", //拉取成功提示
"code":0 //拉取成功状态码
}
获取用户已分配权限项
- 请求URL:
/vuecmf/admin/get_user_permission
- 请求示例
{
"data":{
"username":"demo", //用户名
"app_name":"vuecmf" //应用名
}
}
- 返回示例
{
//已分配的权限项列表
"data":{
//模型标签
"模型配置":[
//动作ID列表
"1"
],
...... //这里省略
},
"msg":"拉取用户权限成功!",
"code":0
}
保存分配给用户的权限项
- 请求URL:
/vuecmf/admin/set_user_permission
- 请求示例
{
"data":{
"username":"demo", //用户名
"action_id":"1,5,10" //分配的动作ID列表
}
}
- 返回示例
{
"data":true,
"msg":"设置用户权限成功!", //保存成功提示
"code":0 //保存成功状态码
}
获取角色已分配权限项
- 请求URL:
/vuecmf/roles/get_permission
- 请求示例
{
"data":{
"role_name":"管理员", //角色名称
"app_name":"vuecmf" //应用名称
}
}
- 返回示例
{
//已分配的权限项列表
"data":{
//模型标签
"模型配置":[
//动作ID列表
"1"
],
...... //这里省略
},
"msg":"拉取角色权限成功!",
"code":0
}
保存分配给角色的权限项
- 请求URL:
/vuecmf/roles/add_permission
- 请求示例
{
"data":{
"role_name":"管理员", //角色名称
"action_id":"1,5,10,15" //分配的动作ID列表
}
}
- 返回示例
{
"data":true,
"msg":"添加角色权限成功!", //保存成功提示
"code":0 //保存成功状态码
}
下拉列表
表单中下拉框列表数据的后端API接口
获取动作下拉框列表
- 请求URL:
/vuecmf/model_action/dropdown
- 请求示例
{
"data":{
"table_name":"photo_category" //模型表名
}
}
- 返回示例
{
"data":[
{
"label":"相册分类管理列表", //动作名称
"id":89 //动作ID
},
...... //这里省略
],
"msg":"拉取成功",
"code":0
}
获取字段下拉框列表
- 请求URL:
/vuecmf/model_field/dropdown
- 请求示例
{
"data":{
"model_id":14 //模型ID
}
}
- 返回示例
{
"data":[
{
"label":"photo_name(相册名称)", //字段名称
"id":111 //字段ID
},
...... //这里省略
],
"msg":"拉取成功", //拉取成功提示
"code":0 //拉取成功状态码
}
获取表单下拉框
- 请求URL:
/vuecmf/model_form/dropdown
- 请求示例
{
"data":{
"model_id":14 //模型ID
}
}
- 返回示例
{
"data":{
"85":{
"label":"photo_name(相册名称)-文本输入框", //表单信息
"id":85 //表单ID
},
...... //这里省略
},
"msg":"拉取成功", //拉取成功提示
"code":0 //拉取成功状态码
}
上传文件
- 请求URL:
/vuecmf/model_form/dropdown
- 请求示例 formData
field_name: photo_url //字段名
file: (binary) //文件二进制流
- 返回示例
{
"data":{
"field_name":"photo_url", //字段名
"url":"http://localhost/storage/file/20220416/225d28d72230544e88aaa0ef783c90d6.jpg" //文件URL
},
"msg":"拉取成功", //上传成功提示
"code":0 //上传成功状态码
}
返回异常示例
{
"data":[],
"msg":"异常:错误的登录名称或密码!请检查是否输入有误。", //异常信息
"code":1000 //异常状态码
}