提交数据库产品管理功能
parent
16eb9c0e31
commit
8cf08c6fa0
|
|
@ -0,0 +1 @@
|
||||||
|
SELECT menu_id, menu_name, parent_id, path FROM sys_menu WHERE menu_name LIKE '%数据库%';
|
||||||
|
|
@ -0,0 +1,27 @@
|
||||||
|
-- 删除已存在的数据库产品管理相关菜单
|
||||||
|
DELETE FROM sys_role_menu WHERE menu_id IN (SELECT menu_id FROM sys_menu WHERE perms LIKE 'database:%');
|
||||||
|
DELETE FROM sys_menu WHERE perms LIKE 'database:%' OR menu_name = '数据库产品管理';
|
||||||
|
|
||||||
|
-- 创建数据库产品管理顶级菜单
|
||||||
|
INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, menu_type, visible, status, perms, icon, create_by, create_time)
|
||||||
|
VALUES (2000, '数据库产品管理', 0, 6, 'database', NULL, 'M', '0', '0', '', 'database', 'admin', NOW());
|
||||||
|
|
||||||
|
-- 创建子菜单
|
||||||
|
INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, menu_type, visible, status, perms, icon, create_by, create_time)
|
||||||
|
VALUES
|
||||||
|
('数据库产品列表', 2000, 1, 'product', 'database/product/index', 'C', '0', '0', 'database:product:list', 'list', 'admin', NOW()),
|
||||||
|
('姓名一', 2000, 2, 'nameOne', 'database/product/nameOne', 'C', '0', '0', 'database:nameOne:list', 'user', 'admin', NOW()),
|
||||||
|
('姓名二', 2000, 3, 'nameTwo', 'database/product/nameTwo', 'C', '0', '0', 'database:nameTwo:list', 'user', 'admin', NOW());
|
||||||
|
|
||||||
|
-- 创建按钮权限
|
||||||
|
INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, menu_type, visible, status, perms, icon, create_by, create_time)
|
||||||
|
VALUES
|
||||||
|
('新增', 2000, 4, '', '', 'F', '0', '0', 'database:product:add', '#', 'admin', NOW()),
|
||||||
|
('修改', 2000, 5, '', '', 'F', '0', '0', 'database:product:edit', '#', 'admin', NOW()),
|
||||||
|
('删除', 2000, 6, '', '', 'F', '0', '0', 'database:product:remove', '#', 'admin', NOW()),
|
||||||
|
('导出', 2000, 7, '', '', 'F', '0', '0', 'database:product:export', '#', 'admin', NOW()),
|
||||||
|
('查询', 2000, 8, '', '', 'F', '0', '0', 'database:product:query', '#', 'admin', NOW());
|
||||||
|
|
||||||
|
-- 分配权限给管理员角色
|
||||||
|
INSERT INTO sys_role_menu (role_id, menu_id)
|
||||||
|
SELECT 1, menu_id FROM sys_menu WHERE perms LIKE 'database:%' OR menu_id = 2000;
|
||||||
|
|
@ -0,0 +1,7 @@
|
||||||
|
Write-Host "正在创建数据库产品管理菜单..."
|
||||||
|
|
||||||
|
# 执行SQL脚本
|
||||||
|
& mysql -u root -p -e "source create_menu_simple.sql"
|
||||||
|
|
||||||
|
Write-Host "菜单创建完成!"
|
||||||
|
Read-Host "按任意键继续..."
|
||||||
|
|
@ -0,0 +1,30 @@
|
||||||
|
-- 删除已存在的数据库产品管理相关菜单
|
||||||
|
DELETE FROM sys_role_menu WHERE menu_id IN (SELECT menu_id FROM sys_menu WHERE perms LIKE 'database:%');
|
||||||
|
DELETE FROM sys_menu WHERE perms LIKE 'database:%' OR menu_name = '数据库产品管理';
|
||||||
|
|
||||||
|
-- 创建数据库产品管理顶级菜单
|
||||||
|
INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, menu_type, visible, status, perms, icon, create_by, create_time)
|
||||||
|
VALUES ('数据库产品管理', 0, 6, 'database', NULL, 'M', '0', '0', '', 'database', 'admin', NOW());
|
||||||
|
|
||||||
|
-- 获取刚插入的菜单ID
|
||||||
|
SET @parentId = LAST_INSERT_ID();
|
||||||
|
|
||||||
|
-- 创建子菜单
|
||||||
|
INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, menu_type, visible, status, perms, icon, create_by, create_time)
|
||||||
|
VALUES
|
||||||
|
('数据库产品列表', @parentId, 1, 'product', 'database/product/index', 'C', '0', '0', 'database:product:list', 'list', 'admin', NOW()),
|
||||||
|
('姓名一', @parentId, 2, 'nameOne', 'database/product/nameOne', 'C', '0', '0', 'database:nameOne:list', 'user', 'admin', NOW()),
|
||||||
|
('姓名二', @parentId, 3, 'nameTwo', 'database/product/nameTwo', 'C', '0', '0', 'database:nameTwo:list', 'user', 'admin', NOW());
|
||||||
|
|
||||||
|
-- 创建按钮权限
|
||||||
|
INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, menu_type, visible, status, perms, icon, create_by, create_time)
|
||||||
|
VALUES
|
||||||
|
('新增', @parentId, 4, '', '', 'F', '0', '0', 'database:product:add', '#', 'admin', NOW()),
|
||||||
|
('修改', @parentId, 5, '', '', 'F', '0', '0', 'database:product:edit', '#', 'admin', NOW()),
|
||||||
|
('删除', @parentId, 6, '', '', 'F', '0', '0', 'database:product:remove', '#', 'admin', NOW()),
|
||||||
|
('导出', @parentId, 7, '', '', 'F', '0', '0', 'database:product:export', '#', 'admin', NOW()),
|
||||||
|
('查询', @parentId, 8, '', '', 'F', '0', '0', 'database:product:query', '#', 'admin', NOW());
|
||||||
|
|
||||||
|
-- 分配权限给管理员角色
|
||||||
|
INSERT INTO sys_role_menu (role_id, menu_id)
|
||||||
|
SELECT 1, menu_id FROM sys_menu WHERE perms LIKE 'database:%';
|
||||||
|
|
@ -0,0 +1,66 @@
|
||||||
|
# 数据库产品管理菜单配置总结
|
||||||
|
|
||||||
|
## 目标
|
||||||
|
将"数据库产品管理"模块配置为独立显示在左侧菜单栏的顶级菜单,而非"系统管理"的子菜单。具体菜单结构调整如下:
|
||||||
|
- 数据库产品管理 ← 新增的顶级菜单
|
||||||
|
- 郑瑜甜
|
||||||
|
|
||||||
|
## 已完成的修改
|
||||||
|
|
||||||
|
### 1. 数据库菜单配置
|
||||||
|
- 创建了新的SQL脚本 `sql/final_database_menu.sql`,包含:
|
||||||
|
- 删除旧的菜单项
|
||||||
|
- 插入顶级菜单"数据库产品管理"
|
||||||
|
- 插入子菜单"郑瑜甜"
|
||||||
|
- 插入相关按钮权限(查询、新增、修改、删除、导出)
|
||||||
|
- 将权限分配给管理员角色
|
||||||
|
|
||||||
|
### 2. 前端路由配置
|
||||||
|
- 修改了 `ruoyi-ui/src/router/index.js`:
|
||||||
|
- 更新了顶级菜单"数据库产品管理"的配置
|
||||||
|
- 将子菜单从原来的三个(数据库产品列表、姓名一、姓名二)改为仅包含"郑瑜甜"
|
||||||
|
- 更新了权限标识从 `database:product:list` 到 `database:zhengyutian:list`
|
||||||
|
- 更新了重定向路径从 `product` 到 `zhengyutian`
|
||||||
|
|
||||||
|
### 3. 前端API配置
|
||||||
|
- 创建了新的API文件 `ruoyi-ui/src/api/database/zhengyutian.js`:
|
||||||
|
- 包含查询、获取详情、新增、修改、删除和导出"郑瑜甜"的API函数
|
||||||
|
- 所有请求路径均以"/database/product"开头
|
||||||
|
|
||||||
|
### 4. 前端页面配置
|
||||||
|
- 修改了 `ruoyi-ui/src/views/database/product/index.vue`:
|
||||||
|
- 更新了API导入从 `product` 改为 `zhengyutian`
|
||||||
|
- 更新了组件名称从 `DatabaseProduct` 改为 `Zhengyutian`
|
||||||
|
- 更新了所有权限标识从 `database:product:*` 改为 `database:zhengyutian:*`
|
||||||
|
- 更新了所有API调用方法名
|
||||||
|
- 更新了相关文本描述
|
||||||
|
|
||||||
|
### 5. 后端Controller配置
|
||||||
|
- 修改了 `ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/DatabaseProductController.java`:
|
||||||
|
- 更新了所有权限注解从 `@PreAuthorize("@ss.hasPermi('database:product:*')")` 改为 `@PreAuthorize("@ss.hasPermi('database:zhengyutian:*')")`
|
||||||
|
|
||||||
|
## 执行步骤
|
||||||
|
1. 手动执行SQL脚本:
|
||||||
|
```
|
||||||
|
mysql -u root -p -e "source c:/Users/Administrator/RuoYi-Vue/sql/final_database_menu.sql"
|
||||||
|
```
|
||||||
|
或者:
|
||||||
|
```
|
||||||
|
mysql -u root -p
|
||||||
|
source c:/Users/Administrator/RuoYi-Vue/sql/final_database_menu.sql
|
||||||
|
```
|
||||||
|
|
||||||
|
2. 重启后端服务
|
||||||
|
|
||||||
|
3. 刷新前端页面
|
||||||
|
|
||||||
|
## 预期结果
|
||||||
|
- "数据库产品管理"将作为独立顶级菜单显示在左侧菜单栏
|
||||||
|
- 点击"数据库产品管理"将展开显示"郑瑜甜"子菜单
|
||||||
|
- 点击"郑瑜甜"将显示数据库产品管理页面,但使用新的权限标识和API
|
||||||
|
|
||||||
|
## 注意事项
|
||||||
|
- 所有权限标识已从 `database:product:*` 更改为 `database:zhengyutian:*`
|
||||||
|
- 前端路由、API和页面组件已相应更新
|
||||||
|
- 后端Controller的权限注解已同步更新
|
||||||
|
- 数据库中的菜单配置需要手动执行SQL脚本才能生效
|
||||||
|
|
@ -0,0 +1,5 @@
|
||||||
|
@echo off
|
||||||
|
echo 正在执行数据库菜单配置脚本...
|
||||||
|
mysql -u root -p < sql/database_menu_new.sql
|
||||||
|
echo 脚本执行完成!
|
||||||
|
pause
|
||||||
|
|
@ -0,0 +1,11 @@
|
||||||
|
@echo off
|
||||||
|
echo 正在执行数据库产品管理模块的SQL脚本...
|
||||||
|
|
||||||
|
echo 1. 创建数据库产品表...
|
||||||
|
mysql -u root -p < sql/database_product.sql
|
||||||
|
|
||||||
|
echo 2. 创建菜单和权限配置...
|
||||||
|
mysql -u root -p < sql/database_product_permission_fixed.sql
|
||||||
|
|
||||||
|
echo 执行完成!
|
||||||
|
pause
|
||||||
|
|
@ -0,0 +1,11 @@
|
||||||
|
@echo off
|
||||||
|
echo 正在执行数据库产品管理模块的SQL脚本...
|
||||||
|
|
||||||
|
echo 1. 创建数据库产品表...
|
||||||
|
mysql -u root -p -e "source sql/database_product.sql"
|
||||||
|
|
||||||
|
echo 2. 创建菜单和权限配置...
|
||||||
|
mysql -u root -p -e "source sql/database_product_permission_fixed.sql"
|
||||||
|
|
||||||
|
echo 执行完成!
|
||||||
|
pause
|
||||||
|
|
@ -0,0 +1,5 @@
|
||||||
|
@echo off
|
||||||
|
echo Executing database menu configuration...
|
||||||
|
mysql -u root -p < sql/final_database_menu.sql
|
||||||
|
echo Script execution completed!
|
||||||
|
pause
|
||||||
|
|
@ -0,0 +1,10 @@
|
||||||
|
@echo off
|
||||||
|
echo Please execute the following SQL commands manually in MySQL:
|
||||||
|
echo.
|
||||||
|
echo 1. Connect to MySQL: mysql -u root -p
|
||||||
|
echo 2. Execute: source c:/Users/Administrator/RuoYi-Vue/sql/final_database_menu.sql
|
||||||
|
echo.
|
||||||
|
echo Or run this command directly:
|
||||||
|
echo mysql -u root -p -e "source c:/Users/Administrator/RuoYi-Vue/sql/final_database_menu.sql"
|
||||||
|
echo.
|
||||||
|
pause
|
||||||
|
|
@ -0,0 +1,5 @@
|
||||||
|
@echo off
|
||||||
|
echo 请输入MySQL密码后按回车键执行SQL脚本...
|
||||||
|
mysql -u root -p < create_database_menu.sql
|
||||||
|
echo 菜单创建完成!
|
||||||
|
pause
|
||||||
|
|
@ -0,0 +1,15 @@
|
||||||
|
@echo off
|
||||||
|
echo 正在设置数据库产品管理模块...
|
||||||
|
echo.
|
||||||
|
echo 请输入MySQL root密码:
|
||||||
|
mysql -u root -p < sql/database_product.sql
|
||||||
|
echo.
|
||||||
|
echo 数据库产品表创建完成!
|
||||||
|
echo.
|
||||||
|
echo 请输入MySQL root密码:
|
||||||
|
mysql -u root -p < sql/create_database_menu.sql
|
||||||
|
echo.
|
||||||
|
echo 菜单和权限配置创建完成!
|
||||||
|
echo.
|
||||||
|
echo 设置完成!请重启后端服务并刷新前端页面以查看更改。
|
||||||
|
pause
|
||||||
|
|
@ -16,7 +16,7 @@ public class RuoYiApplication
|
||||||
{
|
{
|
||||||
// System.setProperty("spring.devtools.restart.enabled", "false");
|
// System.setProperty("spring.devtools.restart.enabled", "false");
|
||||||
SpringApplication.run(RuoYiApplication.class, args);
|
SpringApplication.run(RuoYiApplication.class, args);
|
||||||
System.out.println("(♥◠‿◠)ノ゙ 若依启动成功 ლ(´ڡ`ლ)゙ \n" +
|
System.out.println("(♥◠‿◠)ノ゙ 数据资源管理系统启动成功 ლ(´ڡ`ლ)゙ \n" +
|
||||||
" .-------. ____ __ \n" +
|
" .-------. ____ __ \n" +
|
||||||
" | _ _ \\ \\ \\ / / \n" +
|
" | _ _ \\ \\ \\ / / \n" +
|
||||||
" | ( ' ) | \\ _. / ' \n" +
|
" | ( ' ) | \\ _. / ' \n" +
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,104 @@
|
||||||
|
package com.ruoyi.web.controller.system;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
import org.springframework.security.access.prepost.PreAuthorize;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
|
import org.springframework.web.bind.annotation.PostMapping;
|
||||||
|
import org.springframework.web.bind.annotation.PutMapping;
|
||||||
|
import org.springframework.web.bind.annotation.DeleteMapping;
|
||||||
|
import org.springframework.web.bind.annotation.PathVariable;
|
||||||
|
import org.springframework.web.bind.annotation.RequestBody;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
import com.ruoyi.common.annotation.Log;
|
||||||
|
import com.ruoyi.common.core.controller.BaseController;
|
||||||
|
import com.ruoyi.common.core.domain.AjaxResult;
|
||||||
|
import com.ruoyi.common.enums.BusinessType;
|
||||||
|
import com.ruoyi.system.domain.DatabaseProduct;
|
||||||
|
import com.ruoyi.system.service.IDatabaseProductService;
|
||||||
|
import com.ruoyi.common.utils.poi.ExcelUtil;
|
||||||
|
import com.ruoyi.common.core.page.TableDataInfo;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 数据库产品Controller
|
||||||
|
*
|
||||||
|
* @author ruoyi
|
||||||
|
* @date 2024-01-20
|
||||||
|
*/
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("/database/product")
|
||||||
|
public class DatabaseProductController extends BaseController
|
||||||
|
{
|
||||||
|
@Autowired
|
||||||
|
private IDatabaseProductService databaseProductService;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询数据库产品列表
|
||||||
|
*/
|
||||||
|
@PreAuthorize("@ss.hasPermi('database:zhengyutian:list')")
|
||||||
|
@GetMapping("/list")
|
||||||
|
public TableDataInfo list(DatabaseProduct databaseProduct)
|
||||||
|
{
|
||||||
|
startPage();
|
||||||
|
List<DatabaseProduct> list = databaseProductService.selectDatabaseProductList(databaseProduct);
|
||||||
|
return getDataTable(list);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 导出数据库产品列表
|
||||||
|
*/
|
||||||
|
@PreAuthorize("@ss.hasPermi('database:zhengyutian:export')")
|
||||||
|
@Log(title = "数据库产品", businessType = BusinessType.EXPORT)
|
||||||
|
@PostMapping("/export")
|
||||||
|
public void export(HttpServletResponse response, DatabaseProduct databaseProduct)
|
||||||
|
{
|
||||||
|
List<DatabaseProduct> list = databaseProductService.selectDatabaseProductList(databaseProduct);
|
||||||
|
ExcelUtil<DatabaseProduct> util = new ExcelUtil<DatabaseProduct>(DatabaseProduct.class);
|
||||||
|
util.exportExcel(response, list, "数据库产品数据");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取数据库产品详细信息
|
||||||
|
*/
|
||||||
|
@PreAuthorize("@ss.hasPermi('database:zhengyutian:query')")
|
||||||
|
@GetMapping(value = "/{productId}")
|
||||||
|
public AjaxResult getInfo(@PathVariable("productId") Long productId)
|
||||||
|
{
|
||||||
|
return AjaxResult.success(databaseProductService.selectDatabaseProductByProductId(productId));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 新增数据库产品
|
||||||
|
*/
|
||||||
|
@PreAuthorize("@ss.hasPermi('database:zhengyutian:add')")
|
||||||
|
@Log(title = "数据库产品", businessType = BusinessType.INSERT)
|
||||||
|
@PostMapping
|
||||||
|
public AjaxResult add(@RequestBody DatabaseProduct databaseProduct)
|
||||||
|
{
|
||||||
|
return toAjax(databaseProductService.insertDatabaseProduct(databaseProduct));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改数据库产品
|
||||||
|
*/
|
||||||
|
@PreAuthorize("@ss.hasPermi('database:zhengyutian:edit')")
|
||||||
|
@Log(title = "数据库产品", businessType = BusinessType.UPDATE)
|
||||||
|
@PutMapping
|
||||||
|
public AjaxResult edit(@RequestBody DatabaseProduct databaseProduct)
|
||||||
|
{
|
||||||
|
return toAjax(databaseProductService.updateDatabaseProduct(databaseProduct));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除数据库产品
|
||||||
|
*/
|
||||||
|
@PreAuthorize("@ss.hasPermi('database:zhengyutian:remove')")
|
||||||
|
@Log(title = "数据库产品", businessType = BusinessType.DELETE)
|
||||||
|
@DeleteMapping("/{productIds}")
|
||||||
|
public AjaxResult remove(@PathVariable Long[] productIds)
|
||||||
|
{
|
||||||
|
return toAjax(databaseProductService.deleteDatabaseProductByProductIds(productIds));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,83 @@
|
||||||
|
package com.ruoyi.system.domain;
|
||||||
|
|
||||||
|
import org.apache.commons.lang3.builder.ToStringBuilder;
|
||||||
|
import org.apache.commons.lang3.builder.ToStringStyle;
|
||||||
|
import com.ruoyi.common.annotation.Excel;
|
||||||
|
import com.ruoyi.common.core.domain.BaseEntity;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 数据库产品对象 database_product
|
||||||
|
*
|
||||||
|
* @author ruoyi
|
||||||
|
* @date 2024-01-20
|
||||||
|
*/
|
||||||
|
public class DatabaseProduct extends BaseEntity
|
||||||
|
{
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
/** 产品ID */
|
||||||
|
private Long productId;
|
||||||
|
|
||||||
|
/** 数据库名称 */
|
||||||
|
@Excel(name = "数据库名称")
|
||||||
|
private String databaseName;
|
||||||
|
|
||||||
|
/** 图标 */
|
||||||
|
@Excel(name = "图标")
|
||||||
|
private String icon;
|
||||||
|
|
||||||
|
/** 状态(0正常 1停用) */
|
||||||
|
@Excel(name = "状态", readConverterExp = "0=正常,1=停用")
|
||||||
|
private String status;
|
||||||
|
|
||||||
|
public void setProductId(Long productId)
|
||||||
|
{
|
||||||
|
this.productId = productId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Long getProductId()
|
||||||
|
{
|
||||||
|
return productId;
|
||||||
|
}
|
||||||
|
public void setDatabaseName(String databaseName)
|
||||||
|
{
|
||||||
|
this.databaseName = databaseName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getDatabaseName()
|
||||||
|
{
|
||||||
|
return databaseName;
|
||||||
|
}
|
||||||
|
public void setIcon(String icon)
|
||||||
|
{
|
||||||
|
this.icon = icon;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getIcon()
|
||||||
|
{
|
||||||
|
return icon;
|
||||||
|
}
|
||||||
|
public void setStatus(String status)
|
||||||
|
{
|
||||||
|
this.status = status;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getStatus()
|
||||||
|
{
|
||||||
|
return status;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
|
||||||
|
.append("productId", getProductId())
|
||||||
|
.append("databaseName", getDatabaseName())
|
||||||
|
.append("icon", getIcon())
|
||||||
|
.append("status", getStatus())
|
||||||
|
.append("createBy", getCreateBy())
|
||||||
|
.append("createTime", getCreateTime())
|
||||||
|
.append("updateBy", getUpdateBy())
|
||||||
|
.append("updateTime", getUpdateTime())
|
||||||
|
.toString();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,61 @@
|
||||||
|
package com.ruoyi.system.mapper;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import com.ruoyi.system.domain.DatabaseProduct;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 数据库产品Mapper接口
|
||||||
|
*
|
||||||
|
* @author ruoyi
|
||||||
|
* @date 2024-01-20
|
||||||
|
*/
|
||||||
|
public interface DatabaseProductMapper
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* 查询数据库产品
|
||||||
|
*
|
||||||
|
* @param productId 数据库产品主键
|
||||||
|
* @return 数据库产品
|
||||||
|
*/
|
||||||
|
public DatabaseProduct selectDatabaseProductByProductId(Long productId);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询数据库产品列表
|
||||||
|
*
|
||||||
|
* @param databaseProduct 数据库产品
|
||||||
|
* @return 数据库产品集合
|
||||||
|
*/
|
||||||
|
public List<DatabaseProduct> selectDatabaseProductList(DatabaseProduct databaseProduct);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 新增数据库产品
|
||||||
|
*
|
||||||
|
* @param databaseProduct 数据库产品
|
||||||
|
* @return 结果
|
||||||
|
*/
|
||||||
|
public int insertDatabaseProduct(DatabaseProduct databaseProduct);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改数据库产品
|
||||||
|
*
|
||||||
|
* @param databaseProduct 数据库产品
|
||||||
|
* @return 结果
|
||||||
|
*/
|
||||||
|
public int updateDatabaseProduct(DatabaseProduct databaseProduct);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除数据库产品
|
||||||
|
*
|
||||||
|
* @param productId 数据库产品主键
|
||||||
|
* @return 结果
|
||||||
|
*/
|
||||||
|
public int deleteDatabaseProductByProductId(Long productId);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 批量删除数据库产品
|
||||||
|
*
|
||||||
|
* @param productIds 需要删除的数据主键集合
|
||||||
|
* @return 结果
|
||||||
|
*/
|
||||||
|
public int deleteDatabaseProductByProductIds(Long[] productIds);
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,61 @@
|
||||||
|
package com.ruoyi.system.service;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import com.ruoyi.system.domain.DatabaseProduct;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 数据库产品Service接口
|
||||||
|
*
|
||||||
|
* @author ruoyi
|
||||||
|
* @date 2024-01-20
|
||||||
|
*/
|
||||||
|
public interface IDatabaseProductService
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* 查询数据库产品
|
||||||
|
*
|
||||||
|
* @param productId 数据库产品主键
|
||||||
|
* @return 数据库产品
|
||||||
|
*/
|
||||||
|
public DatabaseProduct selectDatabaseProductByProductId(Long productId);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询数据库产品列表
|
||||||
|
*
|
||||||
|
* @param databaseProduct 数据库产品
|
||||||
|
* @return 数据库产品集合
|
||||||
|
*/
|
||||||
|
public List<DatabaseProduct> selectDatabaseProductList(DatabaseProduct databaseProduct);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 新增数据库产品
|
||||||
|
*
|
||||||
|
* @param databaseProduct 数据库产品
|
||||||
|
* @return 结果
|
||||||
|
*/
|
||||||
|
public int insertDatabaseProduct(DatabaseProduct databaseProduct);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改数据库产品
|
||||||
|
*
|
||||||
|
* @param databaseProduct 数据库产品
|
||||||
|
* @return 结果
|
||||||
|
*/
|
||||||
|
public int updateDatabaseProduct(DatabaseProduct databaseProduct);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 批量删除数据库产品
|
||||||
|
*
|
||||||
|
* @param productIds 需要删除的数据库产品主键集合
|
||||||
|
* @return 结果
|
||||||
|
*/
|
||||||
|
public int deleteDatabaseProductByProductIds(Long[] productIds);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除数据库产品信息
|
||||||
|
*
|
||||||
|
* @param productId 数据库产品主键
|
||||||
|
* @return 结果
|
||||||
|
*/
|
||||||
|
public int deleteDatabaseProductByProductId(Long productId);
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,94 @@
|
||||||
|
package com.ruoyi.system.service.impl;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
import com.ruoyi.system.mapper.DatabaseProductMapper;
|
||||||
|
import com.ruoyi.system.domain.DatabaseProduct;
|
||||||
|
import com.ruoyi.system.service.IDatabaseProductService;
|
||||||
|
import com.ruoyi.common.core.text.Convert;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 数据库产品Service业务层实现
|
||||||
|
*
|
||||||
|
* @author ruoyi
|
||||||
|
* @date 2024-01-20
|
||||||
|
*/
|
||||||
|
@Service
|
||||||
|
public class DatabaseProductServiceImpl implements IDatabaseProductService
|
||||||
|
{
|
||||||
|
@Autowired
|
||||||
|
private DatabaseProductMapper databaseProductMapper;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询数据库产品
|
||||||
|
*
|
||||||
|
* @param productId 数据库产品主键
|
||||||
|
* @return 数据库产品
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public DatabaseProduct selectDatabaseProductByProductId(Long productId)
|
||||||
|
{
|
||||||
|
return databaseProductMapper.selectDatabaseProductByProductId(productId);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询数据库产品列表
|
||||||
|
*
|
||||||
|
* @param databaseProduct 数据库产品
|
||||||
|
* @return 数据库产品集合
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public List<DatabaseProduct> selectDatabaseProductList(DatabaseProduct databaseProduct)
|
||||||
|
{
|
||||||
|
return databaseProductMapper.selectDatabaseProductList(databaseProduct);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 新增数据库产品
|
||||||
|
*
|
||||||
|
* @param databaseProduct 数据库产品
|
||||||
|
* @return 结果
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public int insertDatabaseProduct(DatabaseProduct databaseProduct)
|
||||||
|
{
|
||||||
|
return databaseProductMapper.insertDatabaseProduct(databaseProduct);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改数据库产品
|
||||||
|
*
|
||||||
|
* @param databaseProduct 数据库产品
|
||||||
|
* @return 结果
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public int updateDatabaseProduct(DatabaseProduct databaseProduct)
|
||||||
|
{
|
||||||
|
return databaseProductMapper.updateDatabaseProduct(databaseProduct);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 批量删除数据库产品
|
||||||
|
*
|
||||||
|
* @param productIds 需要删除的数据库产品主键集合
|
||||||
|
* @return 结果
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public int deleteDatabaseProductByProductIds(Long[] productIds)
|
||||||
|
{
|
||||||
|
return databaseProductMapper.deleteDatabaseProductByProductIds(productIds);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除数据库产品信息
|
||||||
|
*
|
||||||
|
* @param productId 数据库产品主键
|
||||||
|
* @return 结果
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public int deleteDatabaseProductByProductId(Long productId)
|
||||||
|
{
|
||||||
|
return databaseProductMapper.deleteDatabaseProductByProductId(productId);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,86 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
|
<!DOCTYPE mapper
|
||||||
|
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||||
|
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||||
|
<mapper namespace="com.ruoyi.system.mapper.DatabaseProductMapper">
|
||||||
|
<resultMap type="DatabaseProduct" id="DatabaseProductResult">
|
||||||
|
<id property="productId" column="product_id"/>
|
||||||
|
<result property="databaseName" column="database_name"/>
|
||||||
|
<result property="icon" column="icon"/>
|
||||||
|
<result property="status" column="status"/>
|
||||||
|
<result property="createBy" column="create_by"/>
|
||||||
|
<result property="createTime" column="create_time"/>
|
||||||
|
<result property="updateBy" column="update_by"/>
|
||||||
|
<result property="updateTime" column="update_time"/>
|
||||||
|
<result property="remark" column="remark"/>
|
||||||
|
</resultMap>
|
||||||
|
|
||||||
|
<sql id="selectDatabaseProductVo">
|
||||||
|
select product_id, database_name, icon, status, create_by, create_time, update_by, update_time, remark from database_product
|
||||||
|
</sql>
|
||||||
|
|
||||||
|
<select id="selectDatabaseProductByProductId" parameterType="Long" resultMap="DatabaseProductResult">
|
||||||
|
<include refid="selectDatabaseProductVo"/>
|
||||||
|
where product_id = #{productId}
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<select id="selectDatabaseProductList" parameterType="DatabaseProduct" resultMap="DatabaseProductResult">
|
||||||
|
<include refid="selectDatabaseProductVo"/>
|
||||||
|
<where>
|
||||||
|
<if test="databaseName != null and databaseName != ''">
|
||||||
|
AND database_name like concat('%', #{databaseName}, '%')
|
||||||
|
</if>
|
||||||
|
<if test="status != null and status != ''">
|
||||||
|
AND status = #{status}
|
||||||
|
</if>
|
||||||
|
</where>
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<insert id="insertDatabaseProduct" parameterType="DatabaseProduct" useGeneratedKeys="true" keyProperty="productId">
|
||||||
|
insert into database_product
|
||||||
|
<trim prefix="(" suffix=")" suffixOverrides=",">
|
||||||
|
<if test="databaseName != null and databaseName != ''">database_name,</if>
|
||||||
|
<if test="icon != null and icon != ''">icon,</if>
|
||||||
|
<if test="status != null and status != ''">status,</if>
|
||||||
|
<if test="createBy != null and createBy != ''">create_by,</if>
|
||||||
|
<if test="createTime != null">create_time,</if>
|
||||||
|
<if test="updateBy != null and updateBy != ''">update_by,</if>
|
||||||
|
<if test="updateTime != null">update_time,</if>
|
||||||
|
<if test="remark != null and remark != ''">remark,</if>
|
||||||
|
</trim>
|
||||||
|
<trim prefix="values (" suffix=")" suffixOverrides=",">
|
||||||
|
<if test="databaseName != null and databaseName != ''">#{databaseName},</if>
|
||||||
|
<if test="icon != null and icon != ''">#{icon},</if>
|
||||||
|
<if test="status != null and status != ''">#{status},</if>
|
||||||
|
<if test="createBy != null and createBy != ''">#{createBy},</if>
|
||||||
|
<if test="createTime != null">#{createTime},</if>
|
||||||
|
<if test="updateBy != null and updateBy != ''">#{updateBy},</if>
|
||||||
|
<if test="updateTime != null">#{updateTime},</if>
|
||||||
|
<if test="remark != null and remark != ''">#{remark},</if>
|
||||||
|
</trim>
|
||||||
|
</insert>
|
||||||
|
|
||||||
|
<update id="updateDatabaseProduct" parameterType="DatabaseProduct">
|
||||||
|
update database_product
|
||||||
|
<set>
|
||||||
|
<if test="databaseName != null and databaseName != ''">database_name = #{databaseName},</if>
|
||||||
|
<if test="icon != null and icon != ''">icon = #{icon},</if>
|
||||||
|
<if test="status != null and status != ''">status = #{status},</if>
|
||||||
|
<if test="updateBy != null and updateBy != ''">update_by = #{updateBy},</if>
|
||||||
|
<if test="updateTime != null">update_time = #{updateTime},</if>
|
||||||
|
<if test="remark != null and remark != ''">remark = #{remark},</if>
|
||||||
|
</set>
|
||||||
|
where product_id = #{productId}
|
||||||
|
</update>
|
||||||
|
|
||||||
|
<delete id="deleteDatabaseProductByProductId" parameterType="Long">
|
||||||
|
delete from database_product where product_id = #{productId}
|
||||||
|
</delete>
|
||||||
|
|
||||||
|
<delete id="deleteDatabaseProductByProductIds" parameterType="Long[]">
|
||||||
|
delete from database_product where product_id in
|
||||||
|
<foreach item="productId" collection="array" open="(" separator="," close=")">
|
||||||
|
#{productId}
|
||||||
|
</foreach>
|
||||||
|
</delete>
|
||||||
|
</mapper>
|
||||||
|
|
@ -0,0 +1,53 @@
|
||||||
|
import request from '@/utils/request'
|
||||||
|
|
||||||
|
// 查询数据库产品列表
|
||||||
|
export function listProduct(query) {
|
||||||
|
return request({
|
||||||
|
url: '/database/product/list',
|
||||||
|
method: 'get',
|
||||||
|
params: query
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询数据库产品详细
|
||||||
|
export function getProduct(productId) {
|
||||||
|
return request({
|
||||||
|
url: '/database/product/' + productId,
|
||||||
|
method: 'get'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 新增数据库产品
|
||||||
|
export function addProduct(data) {
|
||||||
|
return request({
|
||||||
|
url: '/database/product',
|
||||||
|
method: 'post',
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 修改数据库产品
|
||||||
|
export function updateProduct(data) {
|
||||||
|
return request({
|
||||||
|
url: '/database/product',
|
||||||
|
method: 'put',
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除数据库产品
|
||||||
|
export function delProduct(productId) {
|
||||||
|
return request({
|
||||||
|
url: '/database/product/' + productId,
|
||||||
|
method: 'delete'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 导出数据库产品
|
||||||
|
export function exportProduct(query) {
|
||||||
|
return request({
|
||||||
|
url: '/database/product/export',
|
||||||
|
method: 'get',
|
||||||
|
params: query
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,53 @@
|
||||||
|
import request from '@/utils/request'
|
||||||
|
|
||||||
|
// 查询郑瑜甜列表
|
||||||
|
export function listZhengyutian(query) {
|
||||||
|
return request({
|
||||||
|
url: '/database/product/list',
|
||||||
|
method: 'get',
|
||||||
|
params: query
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询郑瑜甜详细
|
||||||
|
export function getZhengyutian(id) {
|
||||||
|
return request({
|
||||||
|
url: '/database/product/' + id,
|
||||||
|
method: 'get'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 新增郑瑜甜
|
||||||
|
export function addZhengyutian(data) {
|
||||||
|
return request({
|
||||||
|
url: '/database/product',
|
||||||
|
method: 'post',
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 修改郑瑜甜
|
||||||
|
export function updateZhengyutian(data) {
|
||||||
|
return request({
|
||||||
|
url: '/database/product',
|
||||||
|
method: 'put',
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除郑瑜甜
|
||||||
|
export function delZhengyutian(id) {
|
||||||
|
return request({
|
||||||
|
url: '/database/product/' + id,
|
||||||
|
method: 'delete'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 导出郑瑜甜
|
||||||
|
export function exportZhengyutian(query) {
|
||||||
|
return request({
|
||||||
|
url: '/database/product/export',
|
||||||
|
method: 'get',
|
||||||
|
params: query
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
@ -107,6 +107,22 @@ export const dynamicRoutes = [
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
path: '/database',
|
||||||
|
component: Layout,
|
||||||
|
alwaysShow: true,
|
||||||
|
permissions: ['database:zhengyutian:list'],
|
||||||
|
meta: { title: '数据库产品管理', icon: 'database' },
|
||||||
|
redirect: 'zhengyutian',
|
||||||
|
children: [
|
||||||
|
{
|
||||||
|
path: 'zhengyutian',
|
||||||
|
component: () => import('@/views/database/product/index'),
|
||||||
|
name: 'Zhengyutian',
|
||||||
|
meta: { title: '郑瑜甜', icon: 'user' }
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
path: '/system/user-auth',
|
path: '/system/user-auth',
|
||||||
component: Layout,
|
component: Layout,
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,230 @@
|
||||||
|
<template>
|
||||||
|
<div class="app-container">
|
||||||
|
<div class="head-container">
|
||||||
|
<el-form :inline="true" :model="queryParams" ref="queryForm" size="small" label-width="68px">
|
||||||
|
<el-form-item label="数据库名称" prop="databaseName">
|
||||||
|
<el-input
|
||||||
|
v-model="queryParams.databaseName"
|
||||||
|
placeholder="请输入数据库名称"
|
||||||
|
clearable
|
||||||
|
@keyup.enter.native="handleQuery"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item>
|
||||||
|
<el-button type="primary" icon="el-icon-search" size="small" @click="handleQuery">搜索</el-button>
|
||||||
|
<el-button icon="el-icon-refresh" size="small" @click="resetQuery">重置</el-button>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- 工具栏 -->
|
||||||
|
<div class="toolbar">
|
||||||
|
<el-button type="success" icon="el-icon-plus" size="small" @click="handleAdd" v-hasPermi="['database:zhengyutian:add']">新增</el-button>
|
||||||
|
<el-button type="primary" icon="el-icon-edit" size="small" :disabled="single" @click="handleUpdate" v-hasPermi="['database:zhengyutian:edit']">修改</el-button>
|
||||||
|
<el-button type="danger" icon="el-icon-delete" size="small" :disabled="multiple" @click="handleDelete" v-hasPermi="['database:zhengyutian:remove']">删除</el-button>
|
||||||
|
<el-button type="info" icon="el-icon-download" size="small" @click="handleExport" v-hasPermi="['database:zhengyutian:export']">导出</el-button>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- 数据表格 -->
|
||||||
|
<el-table v-loading="loading" :data="productList" @selection-change="handleSelectionChange">
|
||||||
|
<el-table-column type="selection" width="55" align="center" />
|
||||||
|
<el-table-column label="产品ID" prop="productId" width="80" align="center" />
|
||||||
|
<el-table-column label="数据库名称" prop="databaseName" align="center" />
|
||||||
|
<el-table-column label="图标" prop="icon" align="center" width="80">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<img :src="scope.row.icon" alt="图标" style="width: 24px; height: 24px;" />
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="关系类型" prop="relationType" align="center" />
|
||||||
|
<el-table-column label="创建时间" prop="createTime" align="center" width="180">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<span>{{ parseTime(scope.row.createTime) }}</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
|
||||||
|
<!-- 分页组件 -->
|
||||||
|
<pagination
|
||||||
|
v-show="total > 0"
|
||||||
|
:total="total"
|
||||||
|
:page.sync="queryParams.pageNum"
|
||||||
|
:limit.sync="queryParams.pageSize"
|
||||||
|
@pagination="getList"
|
||||||
|
/>
|
||||||
|
|
||||||
|
<!-- 添加或修改数据库产品对话框 -->
|
||||||
|
<el-dialog :title="title" :visible.sync="open" width="600px">
|
||||||
|
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
|
||||||
|
<el-form-item label="数据库名称" prop="databaseName">
|
||||||
|
<el-input v-model="form.databaseName" placeholder="请输入数据库名称" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="图标" prop="icon">
|
||||||
|
<el-input v-model="form.icon" placeholder="请输入图标URL" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="关系类型" prop="relationType">
|
||||||
|
<el-input v-model="form.relationType" placeholder="请输入关系类型" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
<div slot="footer" class="dialog-footer">
|
||||||
|
<el-button @click="cancel">取 消</el-button>
|
||||||
|
<el-button type="primary" @click="submitForm">确 定</el-button>
|
||||||
|
</div>
|
||||||
|
</el-dialog>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { listZhengyutian, getZhengyutian, addZhengyutian, updateZhengyutian, delZhengyutian, exportZhengyutian } from '@/api/database/zhengyutian'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: 'Zhengyutian',
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
// 遮罩层
|
||||||
|
loading: true,
|
||||||
|
// 选中数组
|
||||||
|
ids: [],
|
||||||
|
// 非单个禁用
|
||||||
|
single: true,
|
||||||
|
// 非多个禁用
|
||||||
|
multiple: true,
|
||||||
|
// 总条数
|
||||||
|
total: 0,
|
||||||
|
// 数据库产品列表
|
||||||
|
productList: [],
|
||||||
|
// 弹出层标题
|
||||||
|
title: '',
|
||||||
|
// 是否显示弹出层
|
||||||
|
open: false,
|
||||||
|
// 查询参数
|
||||||
|
queryParams: {
|
||||||
|
pageNum: 1,
|
||||||
|
pageSize: 10,
|
||||||
|
databaseName: undefined
|
||||||
|
},
|
||||||
|
// 表单参数
|
||||||
|
form: {
|
||||||
|
productId: undefined,
|
||||||
|
databaseName: undefined,
|
||||||
|
icon: undefined,
|
||||||
|
relationType: undefined
|
||||||
|
},
|
||||||
|
// 表单校验
|
||||||
|
rules: {
|
||||||
|
databaseName: [
|
||||||
|
{ required: true, message: '数据库名称不能为空', trigger: 'blur' }
|
||||||
|
],
|
||||||
|
icon: [
|
||||||
|
{ required: true, message: '图标不能为空', trigger: 'blur' }
|
||||||
|
],
|
||||||
|
relationType: [
|
||||||
|
{ required: true, message: '关系类型不能为空', trigger: 'blur' }
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
this.getList()
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
/** 查询郑瑜甜列表 */
|
||||||
|
getList() {
|
||||||
|
this.loading = true
|
||||||
|
listZhengyutian(this.queryParams).then(response => {
|
||||||
|
this.productList = response.rows
|
||||||
|
this.total = response.total
|
||||||
|
this.loading = false
|
||||||
|
})
|
||||||
|
},
|
||||||
|
/** 搜索按钮操作 */
|
||||||
|
handleQuery() {
|
||||||
|
this.queryParams.pageNum = 1
|
||||||
|
this.getList()
|
||||||
|
},
|
||||||
|
/** 重置按钮操作 */
|
||||||
|
resetQuery() {
|
||||||
|
this.resetForm('queryForm')
|
||||||
|
this.handleQuery()
|
||||||
|
},
|
||||||
|
// 多选框选中数据
|
||||||
|
handleSelectionChange(selection) {
|
||||||
|
this.ids = selection.map(item => item.productId)
|
||||||
|
this.single = selection.length !== 1
|
||||||
|
this.multiple = !selection.length
|
||||||
|
},
|
||||||
|
/** 新增按钮操作 */
|
||||||
|
handleAdd() {
|
||||||
|
this.reset()
|
||||||
|
this.open = true
|
||||||
|
this.title = '添加数据库产品'
|
||||||
|
},
|
||||||
|
/** 修改按钮操作 */
|
||||||
|
handleUpdate() {
|
||||||
|
const productId = this.ids.length === 1 ? this.ids[0] : undefined
|
||||||
|
if (productId === undefined) {
|
||||||
|
this.$modal.msgError('请选择一条记录')
|
||||||
|
return
|
||||||
|
}
|
||||||
|
this.reset()
|
||||||
|
getZhengyutian(productId).then(response => {
|
||||||
|
this.form = response.data
|
||||||
|
this.open = true
|
||||||
|
this.title = '修改郑瑜甜'
|
||||||
|
})
|
||||||
|
},
|
||||||
|
/** 提交按钮 */
|
||||||
|
submitForm() {
|
||||||
|
this.$refs['form'].validate(valid => {
|
||||||
|
if (valid) {
|
||||||
|
if (this.form.productId != undefined) {
|
||||||
|
updateZhengyutian(this.form).then(response => {
|
||||||
|
this.$modal.msgSuccess('修改成功')
|
||||||
|
this.open = false
|
||||||
|
this.getList()
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
addZhengyutian(this.form).then(response => {
|
||||||
|
this.$modal.msgSuccess('新增成功')
|
||||||
|
this.open = false
|
||||||
|
this.getList()
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
/** 取消按钮 */
|
||||||
|
cancel() {
|
||||||
|
this.open = false
|
||||||
|
this.reset()
|
||||||
|
},
|
||||||
|
/** 重置表单 */
|
||||||
|
reset() {
|
||||||
|
this.form = {
|
||||||
|
productId: undefined,
|
||||||
|
databaseName: undefined,
|
||||||
|
icon: undefined,
|
||||||
|
relationType: undefined
|
||||||
|
}
|
||||||
|
this.resetForm('form')
|
||||||
|
},
|
||||||
|
/** 删除按钮操作 */
|
||||||
|
handleDelete() {
|
||||||
|
if (this.ids.length === 0) {
|
||||||
|
this.$modal.msgError('请选择要删除的数据')
|
||||||
|
return
|
||||||
|
}
|
||||||
|
this.$modal.confirm('确认要删除选中的郑瑜甜吗?').then(function() {
|
||||||
|
return delZhengyutian(this.ids)
|
||||||
|
}.bind(this)).then(() => {
|
||||||
|
this.getList()
|
||||||
|
this.$modal.msgSuccess('删除成功')
|
||||||
|
this.ids = []
|
||||||
|
}).catch(() => {})
|
||||||
|
},
|
||||||
|
/** 导出按钮操作 */
|
||||||
|
handleExport() {
|
||||||
|
this.download('database/product/export', { ...this.queryParams }, `zhengyutian_${new Date().getTime()}.xlsx`)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
@ -0,0 +1,230 @@
|
||||||
|
<template>
|
||||||
|
<div class="app-container">
|
||||||
|
<div class="head-container">
|
||||||
|
<el-form :inline="true" :model="queryParams" ref="queryForm" size="small" label-width="68px">
|
||||||
|
<el-form-item label="数据库名称" prop="databaseName">
|
||||||
|
<el-input
|
||||||
|
v-model="queryParams.databaseName"
|
||||||
|
placeholder="请输入数据库名称"
|
||||||
|
clearable
|
||||||
|
@keyup.enter.native="handleQuery"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item>
|
||||||
|
<el-button type="primary" icon="el-icon-search" size="small" @click="handleQuery">搜索</el-button>
|
||||||
|
<el-button icon="el-icon-refresh" size="small" @click="resetQuery">重置</el-button>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- 工具栏 -->
|
||||||
|
<div class="toolbar">
|
||||||
|
<el-button type="success" icon="el-icon-plus" size="small" @click="handleAdd" v-hasPermi="['database:nameOne:add']">新增</el-button>
|
||||||
|
<el-button type="primary" icon="el-icon-edit" size="small" :disabled="single" @click="handleUpdate" v-hasPermi="['database:nameOne:edit']">修改</el-button>
|
||||||
|
<el-button type="danger" icon="el-icon-delete" size="small" :disabled="multiple" @click="handleDelete" v-hasPermi="['database:nameOne:remove']">删除</el-button>
|
||||||
|
<el-button type="info" icon="el-icon-download" size="small" @click="handleExport" v-hasPermi="['database:nameOne:export']">导出</el-button>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- 数据表格 -->
|
||||||
|
<el-table v-loading="loading" :data="productList" @selection-change="handleSelectionChange">
|
||||||
|
<el-table-column type="selection" width="55" align="center" />
|
||||||
|
<el-table-column label="产品ID" prop="productId" width="80" align="center" />
|
||||||
|
<el-table-column label="数据库名称" prop="databaseName" align="center" />
|
||||||
|
<el-table-column label="图标" prop="icon" align="center" width="80">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<img :src="scope.row.icon" alt="图标" style="width: 24px; height: 24px;" />
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="关系类型" prop="relationType" align="center" />
|
||||||
|
<el-table-column label="创建时间" prop="createTime" align="center" width="180">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<span>{{ parseTime(scope.row.createTime) }}</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
|
||||||
|
<!-- 分页组件 -->
|
||||||
|
<pagination
|
||||||
|
v-show="total > 0"
|
||||||
|
:total="total"
|
||||||
|
:page.sync="queryParams.pageNum"
|
||||||
|
:limit.sync="queryParams.pageSize"
|
||||||
|
@pagination="getList"
|
||||||
|
/>
|
||||||
|
|
||||||
|
<!-- 添加或修改数据库产品对话框 -->
|
||||||
|
<el-dialog :title="title" :visible.sync="open" width="600px">
|
||||||
|
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
|
||||||
|
<el-form-item label="数据库名称" prop="databaseName">
|
||||||
|
<el-input v-model="form.databaseName" placeholder="请输入数据库名称" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="图标" prop="icon">
|
||||||
|
<el-input v-model="form.icon" placeholder="请输入图标URL" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="关系类型" prop="relationType">
|
||||||
|
<el-input v-model="form.relationType" placeholder="请输入关系类型" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
<div slot="footer" class="dialog-footer">
|
||||||
|
<el-button @click="cancel">取 消</el-button>
|
||||||
|
<el-button type="primary" @click="submitForm">确 定</el-button>
|
||||||
|
</div>
|
||||||
|
</el-dialog>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { listProduct, getProduct, addProduct, updateProduct, delProduct, exportProduct } from '@/api/database/product'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: 'NameOne',
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
// 遮罩层
|
||||||
|
loading: true,
|
||||||
|
// 选中数组
|
||||||
|
ids: [],
|
||||||
|
// 非单个禁用
|
||||||
|
single: true,
|
||||||
|
// 非多个禁用
|
||||||
|
multiple: true,
|
||||||
|
// 总条数
|
||||||
|
total: 0,
|
||||||
|
// 数据库产品列表
|
||||||
|
productList: [],
|
||||||
|
// 弹出层标题
|
||||||
|
title: '',
|
||||||
|
// 是否显示弹出层
|
||||||
|
open: false,
|
||||||
|
// 查询参数
|
||||||
|
queryParams: {
|
||||||
|
pageNum: 1,
|
||||||
|
pageSize: 10,
|
||||||
|
databaseName: undefined
|
||||||
|
},
|
||||||
|
// 表单参数
|
||||||
|
form: {
|
||||||
|
productId: undefined,
|
||||||
|
databaseName: undefined,
|
||||||
|
icon: undefined,
|
||||||
|
relationType: undefined
|
||||||
|
},
|
||||||
|
// 表单校验
|
||||||
|
rules: {
|
||||||
|
databaseName: [
|
||||||
|
{ required: true, message: '数据库名称不能为空', trigger: 'blur' }
|
||||||
|
],
|
||||||
|
icon: [
|
||||||
|
{ required: true, message: '图标不能为空', trigger: 'blur' }
|
||||||
|
],
|
||||||
|
relationType: [
|
||||||
|
{ required: true, message: '关系类型不能为空', trigger: 'blur' }
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
this.getList()
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
/** 查询数据库产品列表 */
|
||||||
|
getList() {
|
||||||
|
this.loading = true
|
||||||
|
listProduct(this.queryParams).then(response => {
|
||||||
|
this.productList = response.rows
|
||||||
|
this.total = response.total
|
||||||
|
this.loading = false
|
||||||
|
})
|
||||||
|
},
|
||||||
|
/** 搜索按钮操作 */
|
||||||
|
handleQuery() {
|
||||||
|
this.queryParams.pageNum = 1
|
||||||
|
this.getList()
|
||||||
|
},
|
||||||
|
/** 重置按钮操作 */
|
||||||
|
resetQuery() {
|
||||||
|
this.resetForm('queryForm')
|
||||||
|
this.handleQuery()
|
||||||
|
},
|
||||||
|
// 多选框选中数据
|
||||||
|
handleSelectionChange(selection) {
|
||||||
|
this.ids = selection.map(item => item.productId)
|
||||||
|
this.single = selection.length !== 1
|
||||||
|
this.multiple = !selection.length
|
||||||
|
},
|
||||||
|
/** 新增按钮操作 */
|
||||||
|
handleAdd() {
|
||||||
|
this.reset()
|
||||||
|
this.open = true
|
||||||
|
this.title = '添加数据库产品'
|
||||||
|
},
|
||||||
|
/** 修改按钮操作 */
|
||||||
|
handleUpdate() {
|
||||||
|
const productId = this.ids.length === 1 ? this.ids[0] : undefined
|
||||||
|
if (productId === undefined) {
|
||||||
|
this.$modal.msgError('请选择一条记录')
|
||||||
|
return
|
||||||
|
}
|
||||||
|
this.reset()
|
||||||
|
getProduct(productId).then(response => {
|
||||||
|
this.form = response.data
|
||||||
|
this.open = true
|
||||||
|
this.title = '修改数据库产品'
|
||||||
|
})
|
||||||
|
},
|
||||||
|
/** 提交按钮 */
|
||||||
|
submitForm() {
|
||||||
|
this.$refs['form'].validate(valid => {
|
||||||
|
if (valid) {
|
||||||
|
if (this.form.productId != undefined) {
|
||||||
|
updateProduct(this.form).then(response => {
|
||||||
|
this.$modal.msgSuccess('修改成功')
|
||||||
|
this.open = false
|
||||||
|
this.getList()
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
addProduct(this.form).then(response => {
|
||||||
|
this.$modal.msgSuccess('新增成功')
|
||||||
|
this.open = false
|
||||||
|
this.getList()
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
/** 取消按钮 */
|
||||||
|
cancel() {
|
||||||
|
this.open = false
|
||||||
|
this.reset()
|
||||||
|
},
|
||||||
|
/** 重置表单 */
|
||||||
|
reset() {
|
||||||
|
this.form = {
|
||||||
|
productId: undefined,
|
||||||
|
databaseName: undefined,
|
||||||
|
icon: undefined,
|
||||||
|
relationType: undefined
|
||||||
|
}
|
||||||
|
this.resetForm('form')
|
||||||
|
},
|
||||||
|
/** 删除按钮操作 */
|
||||||
|
handleDelete() {
|
||||||
|
if (this.ids.length === 0) {
|
||||||
|
this.$modal.msgError('请选择要删除的数据')
|
||||||
|
return
|
||||||
|
}
|
||||||
|
this.$modal.confirm('确认要删除选中的数据库产品吗?').then(function() {
|
||||||
|
return delProduct(this.ids)
|
||||||
|
}.bind(this)).then(() => {
|
||||||
|
this.getList()
|
||||||
|
this.$modal.msgSuccess('删除成功')
|
||||||
|
this.ids = []
|
||||||
|
}).catch(() => {})
|
||||||
|
},
|
||||||
|
/** 导出按钮操作 */
|
||||||
|
handleExport() {
|
||||||
|
this.download('database/product/export', { ...this.queryParams }, `database_product_${new Date().getTime()}.xlsx`)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
@ -0,0 +1,230 @@
|
||||||
|
<template>
|
||||||
|
<div class="app-container">
|
||||||
|
<div class="head-container">
|
||||||
|
<el-form :inline="true" :model="queryParams" ref="queryForm" size="small" label-width="68px">
|
||||||
|
<el-form-item label="数据库名称" prop="databaseName">
|
||||||
|
<el-input
|
||||||
|
v-model="queryParams.databaseName"
|
||||||
|
placeholder="请输入数据库名称"
|
||||||
|
clearable
|
||||||
|
@keyup.enter.native="handleQuery"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item>
|
||||||
|
<el-button type="primary" icon="el-icon-search" size="small" @click="handleQuery">搜索</el-button>
|
||||||
|
<el-button icon="el-icon-refresh" size="small" @click="resetQuery">重置</el-button>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- 工具栏 -->
|
||||||
|
<div class="toolbar">
|
||||||
|
<el-button type="success" icon="el-icon-plus" size="small" @click="handleAdd" v-hasPermi="['database:nameTwo:add']">新增</el-button>
|
||||||
|
<el-button type="primary" icon="el-icon-edit" size="small" :disabled="single" @click="handleUpdate" v-hasPermi="['database:nameTwo:edit']">修改</el-button>
|
||||||
|
<el-button type="danger" icon="el-icon-delete" size="small" :disabled="multiple" @click="handleDelete" v-hasPermi="['database:nameTwo:remove']">删除</el-button>
|
||||||
|
<el-button type="info" icon="el-icon-download" size="small" @click="handleExport" v-hasPermi="['database:nameTwo:export']">导出</el-button>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- 数据表格 -->
|
||||||
|
<el-table v-loading="loading" :data="productList" @selection-change="handleSelectionChange">
|
||||||
|
<el-table-column type="selection" width="55" align="center" />
|
||||||
|
<el-table-column label="产品ID" prop="productId" width="80" align="center" />
|
||||||
|
<el-table-column label="数据库名称" prop="databaseName" align="center" />
|
||||||
|
<el-table-column label="图标" prop="icon" align="center" width="80">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<img :src="scope.row.icon" alt="图标" style="width: 24px; height: 24px;" />
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="关系类型" prop="relationType" align="center" />
|
||||||
|
<el-table-column label="创建时间" prop="createTime" align="center" width="180">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<span>{{ parseTime(scope.row.createTime) }}</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
|
||||||
|
<!-- 分页组件 -->
|
||||||
|
<pagination
|
||||||
|
v-show="total > 0"
|
||||||
|
:total="total"
|
||||||
|
:page.sync="queryParams.pageNum"
|
||||||
|
:limit.sync="queryParams.pageSize"
|
||||||
|
@pagination="getList"
|
||||||
|
/>
|
||||||
|
|
||||||
|
<!-- 添加或修改数据库产品对话框 -->
|
||||||
|
<el-dialog :title="title" :visible.sync="open" width="600px">
|
||||||
|
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
|
||||||
|
<el-form-item label="数据库名称" prop="databaseName">
|
||||||
|
<el-input v-model="form.databaseName" placeholder="请输入数据库名称" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="图标" prop="icon">
|
||||||
|
<el-input v-model="form.icon" placeholder="请输入图标URL" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="关系类型" prop="relationType">
|
||||||
|
<el-input v-model="form.relationType" placeholder="请输入关系类型" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
<div slot="footer" class="dialog-footer">
|
||||||
|
<el-button @click="cancel">取 消</el-button>
|
||||||
|
<el-button type="primary" @click="submitForm">确 定</el-button>
|
||||||
|
</div>
|
||||||
|
</el-dialog>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { listProduct, getProduct, addProduct, updateProduct, delProduct, exportProduct } from '@/api/database/product'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: 'NameTwo',
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
// 遮罩层
|
||||||
|
loading: true,
|
||||||
|
// 选中数组
|
||||||
|
ids: [],
|
||||||
|
// 非单个禁用
|
||||||
|
single: true,
|
||||||
|
// 非多个禁用
|
||||||
|
multiple: true,
|
||||||
|
// 总条数
|
||||||
|
total: 0,
|
||||||
|
// 数据库产品列表
|
||||||
|
productList: [],
|
||||||
|
// 弹出层标题
|
||||||
|
title: '',
|
||||||
|
// 是否显示弹出层
|
||||||
|
open: false,
|
||||||
|
// 查询参数
|
||||||
|
queryParams: {
|
||||||
|
pageNum: 1,
|
||||||
|
pageSize: 10,
|
||||||
|
databaseName: undefined
|
||||||
|
},
|
||||||
|
// 表单参数
|
||||||
|
form: {
|
||||||
|
productId: undefined,
|
||||||
|
databaseName: undefined,
|
||||||
|
icon: undefined,
|
||||||
|
relationType: undefined
|
||||||
|
},
|
||||||
|
// 表单校验
|
||||||
|
rules: {
|
||||||
|
databaseName: [
|
||||||
|
{ required: true, message: '数据库名称不能为空', trigger: 'blur' }
|
||||||
|
],
|
||||||
|
icon: [
|
||||||
|
{ required: true, message: '图标不能为空', trigger: 'blur' }
|
||||||
|
],
|
||||||
|
relationType: [
|
||||||
|
{ required: true, message: '关系类型不能为空', trigger: 'blur' }
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
this.getList()
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
/** 查询数据库产品列表 */
|
||||||
|
getList() {
|
||||||
|
this.loading = true
|
||||||
|
listProduct(this.queryParams).then(response => {
|
||||||
|
this.productList = response.rows
|
||||||
|
this.total = response.total
|
||||||
|
this.loading = false
|
||||||
|
})
|
||||||
|
},
|
||||||
|
/** 搜索按钮操作 */
|
||||||
|
handleQuery() {
|
||||||
|
this.queryParams.pageNum = 1
|
||||||
|
this.getList()
|
||||||
|
},
|
||||||
|
/** 重置按钮操作 */
|
||||||
|
resetQuery() {
|
||||||
|
this.resetForm('queryForm')
|
||||||
|
this.handleQuery()
|
||||||
|
},
|
||||||
|
// 多选框选中数据
|
||||||
|
handleSelectionChange(selection) {
|
||||||
|
this.ids = selection.map(item => item.productId)
|
||||||
|
this.single = selection.length !== 1
|
||||||
|
this.multiple = !selection.length
|
||||||
|
},
|
||||||
|
/** 新增按钮操作 */
|
||||||
|
handleAdd() {
|
||||||
|
this.reset()
|
||||||
|
this.open = true
|
||||||
|
this.title = '添加数据库产品'
|
||||||
|
},
|
||||||
|
/** 修改按钮操作 */
|
||||||
|
handleUpdate() {
|
||||||
|
const productId = this.ids.length === 1 ? this.ids[0] : undefined
|
||||||
|
if (productId === undefined) {
|
||||||
|
this.$modal.msgError('请选择一条记录')
|
||||||
|
return
|
||||||
|
}
|
||||||
|
this.reset()
|
||||||
|
getProduct(productId).then(response => {
|
||||||
|
this.form = response.data
|
||||||
|
this.open = true
|
||||||
|
this.title = '修改数据库产品'
|
||||||
|
})
|
||||||
|
},
|
||||||
|
/** 提交按钮 */
|
||||||
|
submitForm() {
|
||||||
|
this.$refs['form'].validate(valid => {
|
||||||
|
if (valid) {
|
||||||
|
if (this.form.productId != undefined) {
|
||||||
|
updateProduct(this.form).then(response => {
|
||||||
|
this.$modal.msgSuccess('修改成功')
|
||||||
|
this.open = false
|
||||||
|
this.getList()
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
addProduct(this.form).then(response => {
|
||||||
|
this.$modal.msgSuccess('新增成功')
|
||||||
|
this.open = false
|
||||||
|
this.getList()
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
/** 取消按钮 */
|
||||||
|
cancel() {
|
||||||
|
this.open = false
|
||||||
|
this.reset()
|
||||||
|
},
|
||||||
|
/** 重置表单 */
|
||||||
|
reset() {
|
||||||
|
this.form = {
|
||||||
|
productId: undefined,
|
||||||
|
databaseName: undefined,
|
||||||
|
icon: undefined,
|
||||||
|
relationType: undefined
|
||||||
|
}
|
||||||
|
this.resetForm('form')
|
||||||
|
},
|
||||||
|
/** 删除按钮操作 */
|
||||||
|
handleDelete() {
|
||||||
|
if (this.ids.length === 0) {
|
||||||
|
this.$modal.msgError('请选择要删除的数据')
|
||||||
|
return
|
||||||
|
}
|
||||||
|
this.$modal.confirm('确认要删除选中的数据库产品吗?').then(function() {
|
||||||
|
return delProduct(this.ids)
|
||||||
|
}.bind(this)).then(() => {
|
||||||
|
this.getList()
|
||||||
|
this.$modal.msgSuccess('删除成功')
|
||||||
|
this.ids = []
|
||||||
|
}).catch(() => {})
|
||||||
|
},
|
||||||
|
/** 导出按钮操作 */
|
||||||
|
handleExport() {
|
||||||
|
this.download('database/product/export', { ...this.queryParams }, `database_product_${new Date().getTime()}.xlsx`)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
@ -0,0 +1,27 @@
|
||||||
|
# 设置数据库产品管理模块的菜单配置
|
||||||
|
Write-Host "正在设置数据库产品管理模块的菜单配置..." -ForegroundColor Green
|
||||||
|
|
||||||
|
# 提示用户输入MySQL密码
|
||||||
|
$password = Read-Host "请输入MySQL root用户密码" -AsSecureString
|
||||||
|
$passwordPlain = [System.Runtime.InteropServices.Marshal]::PtrToStringAuto([System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($password))
|
||||||
|
|
||||||
|
# 执行SQL脚本
|
||||||
|
Write-Host "1. 创建数据库产品表..." -ForegroundColor Yellow
|
||||||
|
$process = Start-Process -FilePath "mysql" -ArgumentList "-u root -p$passwordPlain -e `"source sql/database_product.sql`"" -Wait -PassThru -NoNewWindow
|
||||||
|
if ($process.ExitCode -eq 0) {
|
||||||
|
Write-Host "数据库产品表创建成功!" -ForegroundColor Green
|
||||||
|
} else {
|
||||||
|
Write-Host "数据库产品表创建失败!" -ForegroundColor Red
|
||||||
|
}
|
||||||
|
|
||||||
|
Write-Host "2. 创建菜单和权限配置..." -ForegroundColor Yellow
|
||||||
|
$process = Start-Process -FilePath "mysql" -ArgumentList "-u root -p$passwordPlain -e `"source sql/create_database_menu.sql`"" -Wait -PassThru -NoNewWindow
|
||||||
|
if ($process.ExitCode -eq 0) {
|
||||||
|
Write-Host "菜单和权限配置创建成功!" -ForegroundColor Green
|
||||||
|
} else {
|
||||||
|
Write-Host "菜单和权限配置创建失败!" -ForegroundColor Red
|
||||||
|
}
|
||||||
|
|
||||||
|
Write-Host "设置完成!" -ForegroundColor Green
|
||||||
|
Write-Host "请重启后端服务并刷新前端页面以查看更改。" -ForegroundColor Yellow
|
||||||
|
Read-Host "按任意键退出"
|
||||||
|
|
@ -0,0 +1,27 @@
|
||||||
|
# 设置数据库产品管理模块的菜单配置
|
||||||
|
Write-Host "正在设置数据库产品管理模块的菜单配置..." -ForegroundColor Green
|
||||||
|
|
||||||
|
# 提示用户输入MySQL密码
|
||||||
|
$password = Read-Host "请输入MySQL root用户密码" -AsSecureString
|
||||||
|
$passwordPlain = [System.Runtime.InteropServices.Marshal]::PtrToStringAuto([System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($password))
|
||||||
|
|
||||||
|
# 执行SQL脚本
|
||||||
|
Write-Host "1. 创建数据库产品表..." -ForegroundColor Yellow
|
||||||
|
$process = Start-Process -FilePath "mysql" -ArgumentList "-u root -p$passwordPlain", "-e", "source sql/database_product.sql" -Wait -PassThru -NoNewWindow
|
||||||
|
if ($process.ExitCode -eq 0) {
|
||||||
|
Write-Host "数据库产品表创建成功!" -ForegroundColor Green
|
||||||
|
} else {
|
||||||
|
Write-Host "数据库产品表创建失败!" -ForegroundColor Red
|
||||||
|
}
|
||||||
|
|
||||||
|
Write-Host "2. 创建菜单和权限配置..." -ForegroundColor Yellow
|
||||||
|
$process = Start-Process -FilePath "mysql" -ArgumentList "-u root -p$passwordPlain", "-e", "source sql/create_database_menu.sql" -Wait -PassThru -NoNewWindow
|
||||||
|
if ($process.ExitCode -eq 0) {
|
||||||
|
Write-Host "菜单和权限配置创建成功!" -ForegroundColor Green
|
||||||
|
} else {
|
||||||
|
Write-Host "菜单和权限配置创建失败!" -ForegroundColor Red
|
||||||
|
}
|
||||||
|
|
||||||
|
Write-Host "设置完成!" -ForegroundColor Green
|
||||||
|
Write-Host "请重启后端服务并刷新前端页面以查看更改。" -ForegroundColor Yellow
|
||||||
|
Read-Host "按任意键退出"
|
||||||
|
|
@ -0,0 +1,13 @@
|
||||||
|
@echo off
|
||||||
|
echo 正在设置数据库产品管理模块...
|
||||||
|
echo.
|
||||||
|
echo 1. 创建数据库产品表...
|
||||||
|
mysql -u root -p -e "source sql/database_product.sql"
|
||||||
|
echo.
|
||||||
|
echo 2. 创建菜单和权限配置...
|
||||||
|
mysql -u root -p -e "source sql/create_database_menu.sql"
|
||||||
|
echo.
|
||||||
|
echo 设置完成!
|
||||||
|
echo.
|
||||||
|
echo 请重启后端服务并刷新前端页面以查看更改。
|
||||||
|
pause
|
||||||
|
|
@ -0,0 +1,30 @@
|
||||||
|
-- 删除旧的数据库产品管理菜单(如果存在)
|
||||||
|
DELETE FROM `sys_role_menu` WHERE menu_id IN (SELECT menu_id FROM sys_menu WHERE menu_name = '数据库产品管理' OR perms LIKE 'database:%');
|
||||||
|
DELETE FROM `sys_menu` WHERE menu_name = '数据库产品管理' OR perms LIKE 'database:%';
|
||||||
|
|
||||||
|
-- 插入数据库产品管理菜单(顶级菜单)
|
||||||
|
INSERT INTO `sys_menu` (`menu_name`, `parent_id`, `order_num`, `path`, `component`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`)
|
||||||
|
VALUES ('数据库产品管理', 0, 6, 'database', '', 1, 0, 'M', '0', '0', '', 'database', 'admin', NOW(), 'admin', NOW(), '数据库产品管理菜单');
|
||||||
|
|
||||||
|
-- 获取刚插入的数据库产品管理菜单ID
|
||||||
|
SET @parentId = (SELECT MAX(menu_id) FROM sys_menu WHERE menu_name = '数据库产品管理');
|
||||||
|
|
||||||
|
-- 插入郑瑜甜子菜单
|
||||||
|
INSERT INTO `sys_menu` (`menu_name`, `parent_id`, `order_num`, `path`, `component`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`)
|
||||||
|
VALUES ('郑瑜甜', @parentId, 1, 'zhengyutian', 'database/product/index', 1, 0, 'C', '0', '0', 'database:zhengyutian:list', 'user', 'admin', NOW(), 'admin', NOW(), '郑瑜甜菜单');
|
||||||
|
|
||||||
|
-- 获取刚插入的郑瑜甜菜单ID
|
||||||
|
SET @childId = (SELECT MAX(menu_id) FROM sys_menu WHERE menu_name = '郑瑜甜');
|
||||||
|
|
||||||
|
-- 插入郑瑜甜菜单的按钮权限
|
||||||
|
INSERT INTO `sys_menu` (`menu_name`, `parent_id`, `order_num`, `path`, `component`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`)
|
||||||
|
VALUES
|
||||||
|
('新增', @childId, 1, '', '', 0, 0, 'F', '0', '0', 'database:zhengyutian:add', '#', 'admin', NOW(), 'admin', NOW(), '新增按钮'),
|
||||||
|
('修改', @childId, 2, '', '', 0, 0, 'F', '0', '0', 'database:zhengyutian:edit', '#', 'admin', NOW(), 'admin', NOW(), '修改按钮'),
|
||||||
|
('删除', @childId, 3, '', '', 0, 0, 'F', '0', '0', 'database:zhengyutian:remove', '#', 'admin', NOW(), 'admin', NOW(), '删除按钮'),
|
||||||
|
('导出', @childId, 4, '', '', 0, 0, 'F', '0', '0', 'database:zhengyutian:export', '#', 'admin', NOW(), 'admin', NOW(), '导出按钮'),
|
||||||
|
('查询', @childId, 5, '', '', 0, 0, 'F', '0', '0', 'database:zhengyutian:query', '#', 'admin', NOW(), 'admin', NOW(), '查询按钮');
|
||||||
|
|
||||||
|
-- 将权限分配给管理员角色
|
||||||
|
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`)
|
||||||
|
SELECT 1, menu_id FROM sys_menu WHERE perms LIKE 'database:%';
|
||||||
|
|
@ -0,0 +1,19 @@
|
||||||
|
-- 创建数据库产品表
|
||||||
|
CREATE TABLE `database_product` (
|
||||||
|
`product_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '产品ID',
|
||||||
|
`database_name` varchar(100) NOT NULL COMMENT '数据库名称',
|
||||||
|
`icon` varchar(255) DEFAULT NULL COMMENT '图标',
|
||||||
|
`status` char(1) DEFAULT '0' COMMENT '状态(0正常 1停用)',
|
||||||
|
`create_by` varchar(64) DEFAULT '' COMMENT '创建者',
|
||||||
|
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
|
||||||
|
`update_by` varchar(64) DEFAULT '' COMMENT '更新者',
|
||||||
|
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
|
||||||
|
`remark` varchar(500) DEFAULT NULL COMMENT '备注',
|
||||||
|
PRIMARY KEY (`product_id`),
|
||||||
|
KEY `idx_status` (`status`)
|
||||||
|
) ENGINE=InnoDB AUTO_INCREMENT=100 DEFAULT CHARSET=utf8mb4 COMMENT='数据库产品表';
|
||||||
|
|
||||||
|
-- 插入示例数据
|
||||||
|
INSERT INTO `database_product` VALUES (100, 'mysql', 'https://img.alicdn.com/imgextra/i2/O1CN01QH6qH01uV45a4y8sH_!!6000000006375-2-tps-200-200.png', '0', 'admin', '2024-01-20 10:00:00', 'admin', '2024-01-20 10:00:00', 'MySQL数据库');
|
||||||
|
INSERT INTO `database_product` VALUES (101, 'oracle', 'https://img.alicdn.com/imgextra/i4/O1CN01Jj1p9J1pU9d0XJ0eI_!!6000000005464-2-tps-200-200.png', '0', 'admin', '2024-01-20 10:00:00', 'admin', '2024-01-20 10:00:00', 'Oracle数据库');
|
||||||
|
INSERT INTO `database_product` VALUES (102, 'sqlserver', 'https://img.alicdn.com/imgextra/i1/O1CN012U2N5t1q0oE8kMl65_!!6000000005171-2-tps-200-200.png', '0', 'admin', '2024-01-20 10:00:00', 'admin', '2024-01-20 10:00:00', 'SQL Server数据库');
|
||||||
|
|
@ -0,0 +1,24 @@
|
||||||
|
-- 插入数据库产品管理子菜单
|
||||||
|
INSERT INTO `sys_menu` (`menu_name`, `parent_id`, `order_num`, `path`, `component`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`)
|
||||||
|
VALUES ('数据库产品列表', (SELECT MAX(menu_id) FROM sys_menu WHERE menu_name = '数据库产品管理'), 1, 'product', 'database/product/index', 1, 0, 'C', '0', '0', 'database:product:list', 'database', 'admin', NOW(), 'admin', NOW(), '数据库产品列表菜单');
|
||||||
|
|
||||||
|
INSERT INTO `sys_menu` (`menu_name`, `parent_id`, `order_num`, `path`, `component`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`)
|
||||||
|
VALUES ('姓名一', (SELECT MAX(menu_id) FROM sys_menu WHERE menu_name = '数据库产品管理'), 2, 'nameOne', 'database/product/nameOne', 1, 0, 'C', '0', '0', 'database:nameOne:list', '#', 'admin', NOW(), 'admin', NOW(), '姓名一菜单');
|
||||||
|
|
||||||
|
INSERT INTO `sys_menu` (`menu_name`, `parent_id`, `order_num`, `path`, `component`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`)
|
||||||
|
VALUES ('姓名二', (SELECT MAX(menu_id) FROM sys_menu WHERE menu_name = '数据库产品管理'), 3, 'nameTwo', 'database/product/nameTwo', 1, 0, 'C', '0', '0', 'database:nameTwo:list', '#', 'admin', NOW(), 'admin', NOW(), '姓名二菜单');
|
||||||
|
|
||||||
|
-- 插入数据库产品管理按钮权限
|
||||||
|
SET @parentId = (SELECT MAX(menu_id) FROM sys_menu WHERE menu_name = '数据库产品管理');
|
||||||
|
INSERT INTO `sys_menu` (`menu_name`, `parent_id`, `order_num`, `path`, '', `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`)
|
||||||
|
VALUES
|
||||||
|
('新增', @parentId, 1, '', '', 0, 0, 'F', '0', '0', 'database:product:add', '#', 'admin', NOW(), 'admin', NOW(), '新增按钮'),
|
||||||
|
('修改', @parentId, 2, '', '', 0, 0, 'F', '0', '0', 'database:product:edit', '#', 'admin', NOW(), 'admin', NOW(), '修改按钮'),
|
||||||
|
('删除', @parentId, 3, '', '', 0, 0, 'F', '0', '0', 'database:product:remove', '#', 'admin', NOW(), 'admin', NOW(), '删除按钮'),
|
||||||
|
('导出', @parentId, 4, '', '', 0, 0, 'F', '0', '0', 'database:product:export', '#', 'admin', NOW(), 'admin', NOW(), '导出按钮'),
|
||||||
|
('查询', @parentId, 5, '', '', 0, 0, 'F', '0', '0', 'database:product:query', '#', 'admin', NOW(), 'admin', NOW(), '查询按钮');
|
||||||
|
|
||||||
|
-- 将权限分配给管理员角色
|
||||||
|
SET @roleId = (SELECT role_id FROM sys_role WHERE role_name = '超级管理员');
|
||||||
|
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`)
|
||||||
|
SELECT @roleId, menu_id FROM sys_menu WHERE perms LIKE 'database:%';
|
||||||
|
|
@ -0,0 +1,29 @@
|
||||||
|
-- 插入数据库产品管理菜单(顶级菜单)
|
||||||
|
INSERT INTO `sys_menu` (`menu_name`, `parent_id`, `order_num`, `path`, `component`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`)
|
||||||
|
VALUES ('数据库产品管理', 0, 6, 'database', '', 1, 0, 'M', '0', '0', '', 'database', 'admin', NOW(), 'admin', NOW(), '数据库产品管理菜单');
|
||||||
|
|
||||||
|
-- 获取刚插入的数据库产品管理菜单ID
|
||||||
|
SET @parentId = (SELECT MAX(menu_id) FROM sys_menu WHERE menu_name = '数据库产品管理');
|
||||||
|
|
||||||
|
-- 插入数据库产品管理子菜单
|
||||||
|
INSERT INTO `sys_menu` (`menu_name`, `parent_id`, `order_num`, `path`, `component`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`)
|
||||||
|
VALUES ('数据库产品列表', @parentId, 1, 'product', 'database/product/index', 1, 0, 'C', '0', '0', 'database:product:list', 'database', 'admin', NOW(), 'admin', NOW(), '数据库产品列表菜单');
|
||||||
|
|
||||||
|
INSERT INTO `sys_menu` (`menu_name`, `parent_id`, `order_num`, `path`, `component`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`)
|
||||||
|
VALUES ('姓名一', @parentId, 2, 'nameOne', 'database/product/nameOne', 1, 0, 'C', '0', '0', 'database:nameOne:list', '#', 'admin', NOW(), 'admin', NOW(), '姓名一菜单');
|
||||||
|
|
||||||
|
INSERT INTO `sys_menu` (`menu_name`, `parent_id`, `order_num`, `path`, `component`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`)
|
||||||
|
VALUES ('姓名二', @parentId, 3, 'nameTwo', 'database/product/nameTwo', 1, 0, 'C', '0', '0', 'database:nameTwo:list', '#', 'admin', NOW(), 'admin', NOW(), '姓名二菜单');
|
||||||
|
|
||||||
|
-- 插入数据库产品管理按钮权限
|
||||||
|
INSERT INTO `sys_menu` (`menu_name`, `parent_id`, `order_num`, `path`, `component`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`)
|
||||||
|
VALUES
|
||||||
|
('新增', @parentId, 4, '', '', 0, 0, 'F', '0', '0', 'database:product:add', '#', 'admin', NOW(), 'admin', NOW(), '新增按钮'),
|
||||||
|
('修改', @parentId, 5, '', '', 0, 0, 'F', '0', '0', 'database:product:edit', '#', 'admin', NOW(), 'admin', NOW(), '修改按钮'),
|
||||||
|
('删除', @parentId, 6, '', '', 0, 0, 'F', '0', '0', 'database:product:remove', '#', 'admin', NOW(), 'admin', NOW(), '删除按钮'),
|
||||||
|
('导出', @parentId, 7, '', '', 0, 0, 'F', '0', '0', 'database:product:export', '#', 'admin', NOW(), 'admin', NOW(), '导出按钮'),
|
||||||
|
('查询', @parentId, 8, '', '', 0, 0, 'F', '0', '0', 'database:product:query', '#', 'admin', NOW(), 'admin', NOW(), '查询按钮');
|
||||||
|
|
||||||
|
-- 将权限分配给管理员角色
|
||||||
|
INSERT INTO `sys_role_menu` (`role_id`, `menu_id`)
|
||||||
|
SELECT 1, menu_id FROM sys_menu WHERE perms LIKE 'database:%';
|
||||||
|
|
@ -0,0 +1,29 @@
|
||||||
|
-- 删除旧的菜单项
|
||||||
|
DELETE FROM sys_menu WHERE menu_name LIKE '%数据库产品%';
|
||||||
|
|
||||||
|
-- 插入顶级菜单"数据库产品管理"
|
||||||
|
INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, query, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
|
||||||
|
VALUES ('数据库产品管理', 0, 1, 'database', NULL, '', 1, 0, 'M', '0', '0', '', 'database', 'admin', NOW(), '', NULL, '数据库产品管理目录');
|
||||||
|
|
||||||
|
-- 获取刚插入的顶级菜单ID
|
||||||
|
SET @parent_id = LAST_INSERT_ID();
|
||||||
|
|
||||||
|
-- 插入子菜单"郑瑜甜"
|
||||||
|
INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, query, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
|
||||||
|
VALUES ('郑瑜甜', @parent_id, 1, 'zhengyutian', 'database/product/index', '', 1, 0, 'C', '0', '0', 'database:zhengyutian:list', 'form', 'admin', NOW(), '', NULL, '郑瑜甜菜单');
|
||||||
|
|
||||||
|
-- 获取刚插入的子菜单ID
|
||||||
|
SET @child_id = LAST_INSERT_ID();
|
||||||
|
|
||||||
|
-- 插入按钮权限
|
||||||
|
INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, query, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
|
||||||
|
VALUES
|
||||||
|
('郑瑜甜查询', @child_id, 1, '#', '', '', 1, 0, 'F', '0', '0', 'database:zhengyutian:query', '#', 'admin', NOW(), '', NULL, ''),
|
||||||
|
('郑瑜甜新增', @child_id, 2, '#', '', '', 1, 0, 'F', '0', '0', 'database:zhengyutian:add', '#', 'admin', NOW(), '', NULL, ''),
|
||||||
|
('郑瑜甜修改', @child_id, 3, '#', '', '', 1, 0, 'F', '0', '0', 'database:zhengyutian:edit', '#', 'admin', NOW(), '', NULL, ''),
|
||||||
|
('郑瑜甜删除', @child_id, 4, '#', '', '', 1, 0, 'F', '0', '0', 'database:zhengyutian:remove', '#', 'admin', NOW(), '', NULL, ''),
|
||||||
|
('郑瑜甜导出', @child_id, 5, '#', '', '', 1, 0, 'F', '0', '0', 'database:zhengyutian:export', '#', 'admin', NOW(), '', NULL, '');
|
||||||
|
|
||||||
|
-- 将权限分配给管理员角色
|
||||||
|
INSERT INTO sys_role_menu (role_id, menu_id)
|
||||||
|
SELECT 1, menu_id FROM sys_menu WHERE menu_name LIKE '%郑瑜甜%' OR menu_name = '数据库产品管理';
|
||||||
Loading…
Reference in New Issue