Procházet zdrojové kódy

新增企业信息、项目信息页面及相关维护功能

chengpan před 2 roky
rodič
revize
24e6064644
19 změnil soubory, kde provedl 1955 přidání a 0 odebrání
  1. 127 0
      ruoyi-admin/src/main/java/com/ruoyi/web/controller/opt/CompanyInfoController.java
  2. 127 0
      ruoyi-admin/src/main/java/com/ruoyi/web/controller/opt/ProjectInfoController.java
  3. 67 0
      ruoyi-admin/src/main/resources/templates/opt/company/add.html
  4. 138 0
      ruoyi-admin/src/main/resources/templates/opt/company/company.html
  5. 68 0
      ruoyi-admin/src/main/resources/templates/opt/company/edit.html
  6. 100 0
      ruoyi-admin/src/main/resources/templates/opt/project/add.html
  7. 101 0
      ruoyi-admin/src/main/resources/templates/opt/project/edit.html
  8. 177 0
      ruoyi-admin/src/main/resources/templates/opt/project/project.html
  9. 153 0
      ruoyi-system/src/main/java/com/ruoyi/opt/domain/CompanyInfo.java
  10. 209 0
      ruoyi-system/src/main/java/com/ruoyi/opt/domain/ProjectInfo.java
  11. 61 0
      ruoyi-system/src/main/java/com/ruoyi/opt/mapper/CompanyInfoMapper.java
  12. 61 0
      ruoyi-system/src/main/java/com/ruoyi/opt/mapper/ProjectInfoMapper.java
  13. 61 0
      ruoyi-system/src/main/java/com/ruoyi/opt/service/ICompanyInfoService.java
  14. 61 0
      ruoyi-system/src/main/java/com/ruoyi/opt/service/IProjectInfoService.java
  15. 97 0
      ruoyi-system/src/main/java/com/ruoyi/opt/service/impl/CompanyInfoServiceImpl.java
  16. 97 0
      ruoyi-system/src/main/java/com/ruoyi/opt/service/impl/ProjectInfoServiceImpl.java
  17. 108 0
      ruoyi-system/src/main/resources/mapper/opt/CompanyInfoMapper.xml
  18. 128 0
      ruoyi-system/src/main/resources/mapper/opt/ProjectInfoMapper.xml
  19. 14 0
      sql/ry_20210924.sql

+ 127 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/controller/opt/CompanyInfoController.java

@@ -0,0 +1,127 @@
+package com.ruoyi.web.controller.opt;
+
+import java.util.List;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.ModelMap;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.opt.domain.CompanyInfo;
+import com.ruoyi.opt.service.ICompanyInfoService;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.common.core.page.TableDataInfo;
+
+/**
+ * 企业信息Controller
+ * 
+ * @author chengpan
+ * @date 2022-09-06
+ */
+@Controller
+@RequestMapping("/opt/company")
+public class CompanyInfoController extends BaseController
+{
+    private String prefix = "opt/company";
+
+    @Autowired
+    private ICompanyInfoService companyInfoService;
+
+    @RequiresPermissions("opt:company:view")
+    @GetMapping()
+    public String company()
+    {
+        return prefix + "/company";
+    }
+
+    /**
+     * 查询企业信息列表
+     */
+    @RequiresPermissions("opt:company:list")
+    @PostMapping("/list")
+    @ResponseBody
+    public TableDataInfo list(CompanyInfo companyInfo)
+    {
+        startPage();
+        List<CompanyInfo> list = companyInfoService.selectCompanyInfoList(companyInfo);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出企业信息列表
+     */
+    @RequiresPermissions("opt:company:export")
+    @Log(title = "企业信息", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    @ResponseBody
+    public AjaxResult export(CompanyInfo companyInfo)
+    {
+        List<CompanyInfo> list = companyInfoService.selectCompanyInfoList(companyInfo);
+        ExcelUtil<CompanyInfo> util = new ExcelUtil<CompanyInfo>(CompanyInfo.class);
+        return util.exportExcel(list, "企业信息数据");
+    }
+
+    /**
+     * 新增企业信息
+     */
+    @GetMapping("/add")
+    public String add()
+    {
+        return prefix + "/add";
+    }
+
+    /**
+     * 新增保存企业信息
+     */
+    @RequiresPermissions("opt:company:add")
+    @Log(title = "企业信息", businessType = BusinessType.INSERT)
+    @PostMapping("/add")
+    @ResponseBody
+    public AjaxResult addSave(CompanyInfo companyInfo)
+    {
+        return toAjax(companyInfoService.insertCompanyInfo(companyInfo));
+    }
+
+    /**
+     * 修改企业信息
+     */
+    @RequiresPermissions("opt:company:edit")
+    @GetMapping("/edit/{companyId}")
+    public String edit(@PathVariable("companyId") Long companyId, ModelMap mmap)
+    {
+        CompanyInfo companyInfo = companyInfoService.selectCompanyInfoByCompanyId(companyId);
+        mmap.put("companyInfo", companyInfo);
+        return prefix + "/edit";
+    }
+
+    /**
+     * 修改保存企业信息
+     */
+    @RequiresPermissions("opt:company:edit")
+    @Log(title = "企业信息", businessType = BusinessType.UPDATE)
+    @PostMapping("/edit")
+    @ResponseBody
+    public AjaxResult editSave(CompanyInfo companyInfo)
+    {
+        return toAjax(companyInfoService.updateCompanyInfo(companyInfo));
+    }
+
+    /**
+     * 删除企业信息
+     */
+    @RequiresPermissions("opt:company:remove")
+    @Log(title = "企业信息", businessType = BusinessType.DELETE)
+    @PostMapping( "/remove")
+    @ResponseBody
+    public AjaxResult remove(String ids)
+    {
+        return toAjax(companyInfoService.deleteCompanyInfoByCompanyIds(ids));
+    }
+}

+ 127 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/controller/opt/ProjectInfoController.java

@@ -0,0 +1,127 @@
+package com.ruoyi.web.controller.opt;
+
+import java.util.List;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.ModelMap;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.opt.domain.ProjectInfo;
+import com.ruoyi.opt.service.IProjectInfoService;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.common.core.page.TableDataInfo;
+
+/**
+ * 招标项目Controller
+ * 
+ * @author chengpan
+ * @date 2022-09-07
+ */
+@Controller
+@RequestMapping("/opt/project")
+public class ProjectInfoController extends BaseController
+{
+    private String prefix = "opt/project";
+
+    @Autowired
+    private IProjectInfoService projectInfoService;
+
+    @RequiresPermissions("opt:project:view")
+    @GetMapping()
+    public String project()
+    {
+        return prefix + "/project";
+    }
+
+    /**
+     * 查询招标项目列表
+     */
+    @RequiresPermissions("opt:project:list")
+    @PostMapping("/list")
+    @ResponseBody
+    public TableDataInfo list(ProjectInfo projectInfo)
+    {
+        startPage();
+        List<ProjectInfo> list = projectInfoService.selectProjectInfoList(projectInfo);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出招标项目列表
+     */
+    @RequiresPermissions("opt:project:export")
+    @Log(title = "招标项目", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    @ResponseBody
+    public AjaxResult export(ProjectInfo projectInfo)
+    {
+        List<ProjectInfo> list = projectInfoService.selectProjectInfoList(projectInfo);
+        ExcelUtil<ProjectInfo> util = new ExcelUtil<ProjectInfo>(ProjectInfo.class);
+        return util.exportExcel(list, "招标项目数据");
+    }
+
+    /**
+     * 新增招标项目
+     */
+    @GetMapping("/add")
+    public String add()
+    {
+        return prefix + "/add";
+    }
+
+    /**
+     * 新增保存招标项目
+     */
+    @RequiresPermissions("opt:project:add")
+    @Log(title = "招标项目", businessType = BusinessType.INSERT)
+    @PostMapping("/add")
+    @ResponseBody
+    public AjaxResult addSave(ProjectInfo projectInfo)
+    {
+        return toAjax(projectInfoService.insertProjectInfo(projectInfo));
+    }
+
+    /**
+     * 修改招标项目
+     */
+    @RequiresPermissions("opt:project:edit")
+    @GetMapping("/edit/{projectId}")
+    public String edit(@PathVariable("projectId") Long projectId, ModelMap mmap)
+    {
+        ProjectInfo projectInfo = projectInfoService.selectProjectInfoByProjectId(projectId);
+        mmap.put("projectInfo", projectInfo);
+        return prefix + "/edit";
+    }
+
+    /**
+     * 修改保存招标项目
+     */
+    @RequiresPermissions("opt:project:edit")
+    @Log(title = "招标项目", businessType = BusinessType.UPDATE)
+    @PostMapping("/edit")
+    @ResponseBody
+    public AjaxResult editSave(ProjectInfo projectInfo)
+    {
+        return toAjax(projectInfoService.updateProjectInfo(projectInfo));
+    }
+
+    /**
+     * 删除招标项目
+     */
+    @RequiresPermissions("opt:project:remove")
+    @Log(title = "招标项目", businessType = BusinessType.DELETE)
+    @PostMapping( "/remove")
+    @ResponseBody
+    public AjaxResult remove(String ids)
+    {
+        return toAjax(projectInfoService.deleteProjectInfoByProjectIds(ids));
+    }
+}

+ 67 - 0
ruoyi-admin/src/main/resources/templates/opt/company/add.html

@@ -0,0 +1,67 @@
+<!DOCTYPE html>
+<html lang="zh" xmlns:th="http://www.thymeleaf.org" >
+<head>
+    <th:block th:include="include :: header('新增企业信息')" />
+</head>
+<body class="white-bg">
+    <div class="wrapper wrapper-content animated fadeInRight ibox-content">
+        <form class="form-horizontal m" id="form-company-add">
+            <div class="form-group">    
+                <label class="col-sm-3 control-label">公司名称:</label>
+                <div class="col-sm-8">
+                    <input name="companyNm" class="form-control" type="text">
+                </div>
+            </div>
+            <div class="form-group">    
+                <label class="col-sm-3 control-label">统一社会信用代码:</label>
+                <div class="col-sm-8">
+                    <input name="companySocialNo" class="form-control" type="text">
+                </div>
+            </div>
+            <div class="form-group">    
+                <label class="col-sm-3 control-label">企业基本账户:</label>
+                <div class="col-sm-8">
+                    <input name="basicAccountBank" class="form-control" type="text">
+                </div>
+            </div>
+            <div class="form-group">    
+                <label class="col-sm-3 control-label">企业基本账户号码:</label>
+                <div class="col-sm-8">
+                    <input name="basicAccountNo" class="form-control" type="text">
+                </div>
+            </div>
+            <div class="form-group">    
+                <label class="col-sm-3 control-label">企业类型:</label>
+                <div class="col-sm-8">
+                    <input name="companyTp" class="form-control" type="text">
+                </div>
+            </div>
+            <div class="form-group">    
+                <label class="col-sm-3 control-label">联系人:</label>
+                <div class="col-sm-8">
+                    <input name="applyNm" class="form-control" type="text">
+                </div>
+            </div>
+            <div class="form-group">    
+                <label class="col-sm-3 control-label">申请人电话:</label>
+                <div class="col-sm-8">
+                    <input name="applyTel" class="form-control" type="text">
+                </div>
+            </div>
+        </form>
+    </div>
+    <th:block th:include="include :: footer" />
+    <script th:inline="javascript">
+        var prefix = ctx + "opt/company"
+        $("#form-company-add").validate({
+            focusCleanup: true
+        });
+
+        function submitHandler() {
+            if ($.validate.form()) {
+                $.operate.save(prefix + "/add", $('#form-company-add').serialize());
+            }
+        }
+    </script>
+</body>
+</html>

+ 138 - 0
ruoyi-admin/src/main/resources/templates/opt/company/company.html

@@ -0,0 +1,138 @@
+<!DOCTYPE html>
+<html lang="zh" xmlns:th="http://www.thymeleaf.org" xmlns:shiro="http://www.pollix.at/thymeleaf/shiro">
+<head>
+    <th:block th:include="include :: header('企业信息列表')" />
+</head>
+<body class="gray-bg">
+     <div class="container-div">
+        <div class="row">
+            <div class="col-sm-12 search-collapse">
+                <form id="formId">
+                    <div class="select-list">
+                        <ul>
+                            <li>
+                                <label>公司名称:</label>
+                                <input type="text" name="companyNm"/>
+                            </li>
+                            <li>
+                                <label>统一社会信用代码:</label>
+                                <input type="text" name="companySocialNo"/>
+                            </li>
+                            <li>
+                                <label>企业基本账户:</label>
+                                <input type="text" name="basicAccountBank"/>
+                            </li>
+                            <li>
+                                <label>企业基本账户号码:</label>
+                                <input type="text" name="basicAccountNo"/>
+                            </li>
+                            <li>
+                                <label>企业类型:</label>
+                                <input type="text" name="companyTp"/>
+                            </li>
+                            <li>
+                                <label>联系人:</label>
+                                <input type="text" name="applyNm"/>
+                            </li>
+                            <li>
+                                <label>申请人电话:</label>
+                                <input type="text" name="applyTel"/>
+                            </li>
+                            <li>
+                                <a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search()"><i class="fa fa-search"></i>&nbsp;搜索</a>
+                                <a class="btn btn-warning btn-rounded btn-sm" onclick="$.form.reset()"><i class="fa fa-refresh"></i>&nbsp;重置</a>
+                            </li>
+                        </ul>
+                    </div>
+                </form>
+            </div>
+
+            <div class="btn-group-sm" id="toolbar" role="group">
+                <a class="btn btn-success" onclick="$.operate.add()" shiro:hasPermission="opt:company:add">
+                    <i class="fa fa-plus"></i> 添加
+                </a>
+                <a class="btn btn-primary single disabled" onclick="$.operate.edit()" shiro:hasPermission="opt:company:edit">
+                    <i class="fa fa-edit"></i> 修改
+                </a>
+                <a class="btn btn-danger multiple disabled" onclick="$.operate.removeAll()" shiro:hasPermission="opt:company:remove">
+                    <i class="fa fa-remove"></i> 删除
+                </a>
+                <a class="btn btn-warning" onclick="$.table.exportExcel()" shiro:hasPermission="opt:company:export">
+                    <i class="fa fa-download"></i> 导出
+                </a>
+            </div>
+            <div class="col-sm-12 select-table table-striped">
+                <table id="bootstrap-table"></table>
+            </div>
+        </div>
+    </div>
+    <th:block th:include="include :: footer" />
+    <script th:inline="javascript">
+        var editFlag = [[${@permission.hasPermi('opt:company:edit')}]];
+        var removeFlag = [[${@permission.hasPermi('opt:company:remove')}]];
+        var prefix = ctx + "opt/company";
+
+        $(function() {
+            var options = {
+                url: prefix + "/list",
+                createUrl: prefix + "/add",
+                updateUrl: prefix + "/edit/{id}",
+                removeUrl: prefix + "/remove",
+                exportUrl: prefix + "/export",
+                modalName: "企业信息",
+                columns: [{
+                    checkbox: true
+                },
+                {
+                    field: 'companyId',
+                    title: '主键',
+                    visible: false
+                },
+                {
+                    field: 'companyNm',
+                    title: '公司名称'
+                },
+                {
+                    field: 'companySocialNo',
+                    title: '统一社会信用代码'
+                },
+                {
+                    field: 'basicAccountBank',
+                    title: '企业基本账户'
+                },
+                {
+                    field: 'basicAccountNo',
+                    title: '企业基本账户号码'
+                },
+                {
+                    field: 'companyTp',
+                    title: '企业类型'
+                },
+                {
+                    field: 'applyNm',
+                    title: '联系人'
+                },
+                {
+                    field: 'applyTel',
+                    title: '申请人电话'
+                },
+                {
+                    field: 'status',
+                    title: '状态'
+                },
+                {
+                    title: '操作',
+                    align: 'center',
+                    formatter: function(value, row, index) {
+                        var actions = [];
+                        actions.push('<a class="btn btn-success btn-xs ' + editFlag + '" href="javascript:void(0)" onclick="$.operate.edit(\'' + row.companyId + '\')"><i class="fa fa-edit"></i>编辑</a> ');
+                        actions.push('<a class="btn btn-danger btn-xs ' + removeFlag + '" href="javascript:void(0)" onclick="$.operate.remove(\'' + row.companyId + '\')"><i class="fa fa-remove"></i>删除</a>');
+                        return actions.join('');
+                    }
+                }]
+            };
+            $.table.init(options);
+        });
+    </script>
+</body>
+</html>

+ 68 - 0
ruoyi-admin/src/main/resources/templates/opt/company/edit.html

@@ -0,0 +1,68 @@
+<!DOCTYPE html>
+<html lang="zh" xmlns:th="http://www.thymeleaf.org" >
+<head>
+    <th:block th:include="include :: header('修改企业信息')" />
+</head>
+<body class="white-bg">
+    <div class="wrapper wrapper-content animated fadeInRight ibox-content">
+        <form class="form-horizontal m" id="form-company-edit" th:object="${companyInfo}">
+            <input name="companyId" th:field="*{companyId}" type="hidden">
+            <div class="form-group">    
+                <label class="col-sm-3 control-label">公司名称:</label>
+                <div class="col-sm-8">
+                    <input name="companyNm" th:field="*{companyNm}" class="form-control" type="text">
+                </div>
+            </div>
+            <div class="form-group">    
+                <label class="col-sm-3 control-label">统一社会信用代码:</label>
+                <div class="col-sm-8">
+                    <input name="companySocialNo" th:field="*{companySocialNo}" class="form-control" type="text">
+                </div>
+            </div>
+            <div class="form-group">    
+                <label class="col-sm-3 control-label">企业基本账户:</label>
+                <div class="col-sm-8">
+                    <input name="basicAccountBank" th:field="*{basicAccountBank}" class="form-control" type="text">
+                </div>
+            </div>
+            <div class="form-group">    
+                <label class="col-sm-3 control-label">企业基本账户号码:</label>
+                <div class="col-sm-8">
+                    <input name="basicAccountNo" th:field="*{basicAccountNo}" class="form-control" type="text">
+                </div>
+            </div>
+            <div class="form-group">    
+                <label class="col-sm-3 control-label">企业类型:</label>
+                <div class="col-sm-8">
+                    <input name="companyTp" th:field="*{companyTp}" class="form-control" type="text">
+                </div>
+            </div>
+            <div class="form-group">    
+                <label class="col-sm-3 control-label">联系人:</label>
+                <div class="col-sm-8">
+                    <input name="applyNm" th:field="*{applyNm}" class="form-control" type="text">
+                </div>
+            </div>
+            <div class="form-group">    
+                <label class="col-sm-3 control-label">申请人电话:</label>
+                <div class="col-sm-8">
+                    <input name="applyTel" th:field="*{applyTel}" class="form-control" type="text">
+                </div>
+            </div>
+        </form>
+    </div>
+    <th:block th:include="include :: footer" />
+    <script th:inline="javascript">
+        var prefix = ctx + "opt/company";
+        $("#form-company-edit").validate({
+            focusCleanup: true
+        });
+
+        function submitHandler() {
+            if ($.validate.form()) {
+                $.operate.save(prefix + "/edit", $('#form-company-edit').serialize());
+            }
+        }
+    </script>
+</body>
+</html>

+ 100 - 0
ruoyi-admin/src/main/resources/templates/opt/project/add.html

@@ -0,0 +1,100 @@
+<!DOCTYPE html>
+<html lang="zh" xmlns:th="http://www.thymeleaf.org" >
+<head>
+    <th:block th:include="include :: header('新增招标项目')" />
+</head>
+<body class="white-bg">
+    <div class="wrapper wrapper-content animated fadeInRight ibox-content">
+        <form class="form-horizontal m" id="form-project-add">
+            <div class="form-group">    
+                <label class="col-sm-3 control-label">项目编号:</label>
+                <div class="col-sm-8">
+                    <input name="projectCd" class="form-control" type="text">
+                </div>
+            </div>
+            <div class="form-group">
+                <label class="col-sm-3 control-label">项目名称:</label>
+                <div class="col-sm-8">
+                    <textarea name="projectNm" class="form-control"></textarea>
+                </div>
+            </div>
+            <div class="form-group">    
+                <label class="col-sm-3 control-label">标段编号:</label>
+                <div class="col-sm-8">
+                    <input name="tenderNo" class="form-control" type="text">
+                </div>
+            </div>
+            <div class="form-group">    
+                <label class="col-sm-3 control-label">开标日期:</label>
+                <div class="col-sm-8">
+                    <input name="bidOpenTime" class="form-control" type="text">
+                </div>
+            </div>
+            <div class="form-group">    
+                <label class="col-sm-3 control-label">保证金金额:</label>
+                <div class="col-sm-8">
+                    <input name="bailAmt" class="form-control" type="text">
+                </div>
+            </div>
+            <div class="form-group">    
+                <label class="col-sm-3 control-label">保函开具对象:</label>
+                <div class="col-sm-8">
+                    <input name="tendereeNm" class="form-control" type="text">
+                </div>
+            </div>
+            <div class="form-group">    
+                <label class="col-sm-3 control-label">招标方式:</label>
+                <div class="col-sm-8">
+                    <input name="tenderTp" class="form-control" type="text">
+                </div>
+            </div>
+            <div class="form-group">    
+                <label class="col-sm-3 control-label">招标人地址:</label>
+                <div class="col-sm-8">
+                    <input name="tendererAddress" class="form-control" type="text">
+                </div>
+            </div>
+            <div class="form-group">    
+                <label class="col-sm-3 control-label">招标人证件号码:</label>
+                <div class="col-sm-8">
+                    <input name="tendereeCd" class="form-control" type="text">
+                </div>
+            </div>
+            <div class="form-group">    
+                <label class="col-sm-3 control-label">招标公告发布时间:</label>
+                <div class="col-sm-8">
+                    <input name="noticeSendTime" class="form-control" type="text">
+                </div>
+            </div>
+            <div class="form-group">    
+                <label class="col-sm-3 control-label">项目地区区域码:</label>
+                <div class="col-sm-8">
+                    <input name="areaCd" class="form-control" type="text">
+                </div>
+            </div>
+            <div class="form-group">    
+                <label class="col-sm-3 control-label">状态:</label>
+                <div class="col-sm-8">
+                    <div class="radio-box" th:each="dict : ${@dict.getType('sys_normal_disable')}">
+                        <input type="radio" th:id="${'status_' + dict.dictCode}" name="status" th:value="${dict.dictValue}" th:checked="${dict.default}">
+                        <label th:for="${'status_' + dict.dictCode}" th:text="${dict.dictLabel}"></label>
+                    </div>
+                </div>
+            </div>
+        </form>
+    </div>
+    <th:block th:include="include :: footer" />
+    <script th:inline="javascript">
+        var prefix = ctx + "opt/project"
+        $("#form-project-add").validate({
+            focusCleanup: true
+        });
+
+        function submitHandler() {
+            if ($.validate.form()) {
+                $.operate.save(prefix + "/add", $('#form-project-add').serialize());
+            }
+        }
+    </script>
+</body>
+</html>

+ 101 - 0
ruoyi-admin/src/main/resources/templates/opt/project/edit.html

@@ -0,0 +1,101 @@
+<!DOCTYPE html>
+<html lang="zh" xmlns:th="http://www.thymeleaf.org" >
+<head>
+    <th:block th:include="include :: header('修改招标项目')" />
+</head>
+<body class="white-bg">
+    <div class="wrapper wrapper-content animated fadeInRight ibox-content">
+        <form class="form-horizontal m" id="form-project-edit" th:object="${projectInfo}">
+            <input name="projectId" th:field="*{projectId}" type="hidden">
+            <div class="form-group">    
+                <label class="col-sm-3 control-label">项目编号:</label>
+                <div class="col-sm-8">
+                    <input name="projectCd" th:field="*{projectCd}" class="form-control" type="text">
+                </div>
+            </div>
+            <div class="form-group">
+                <label class="col-sm-3 control-label">项目名称:</label>
+                <div class="col-sm-8">
+                    <textarea name="projectNm" class="form-control">[[*{projectNm}]]</textarea>
+                </div>
+            </div>
+            <div class="form-group">    
+                <label class="col-sm-3 control-label">标段编号:</label>
+                <div class="col-sm-8">
+                    <input name="tenderNo" th:field="*{tenderNo}" class="form-control" type="text">
+                </div>
+            </div>
+            <div class="form-group">    
+                <label class="col-sm-3 control-label">开标日期:</label>
+                <div class="col-sm-8">
+                    <input name="bidOpenTime" th:field="*{bidOpenTime}" class="form-control" type="text">
+                </div>
+            </div>
+            <div class="form-group">    
+                <label class="col-sm-3 control-label">保证金金额:</label>
+                <div class="col-sm-8">
+                    <input name="bailAmt" th:field="*{bailAmt}" class="form-control" type="text">
+                </div>
+            </div>
+            <div class="form-group">    
+                <label class="col-sm-3 control-label">保函开具对象:</label>
+                <div class="col-sm-8">
+                    <input name="tendereeNm" th:field="*{tendereeNm}" class="form-control" type="text">
+                </div>
+            </div>
+            <div class="form-group">    
+                <label class="col-sm-3 control-label">招标方式:</label>
+                <div class="col-sm-8">
+                    <input name="tenderTp" th:field="*{tenderTp}" class="form-control" type="text">
+                </div>
+            </div>
+            <div class="form-group">    
+                <label class="col-sm-3 control-label">招标人地址:</label>
+                <div class="col-sm-8">
+                    <input name="tendererAddress" th:field="*{tendererAddress}" class="form-control" type="text">
+                </div>
+            </div>
+            <div class="form-group">    
+                <label class="col-sm-3 control-label">招标人证件号码:</label>
+                <div class="col-sm-8">
+                    <input name="tendereeCd" th:field="*{tendereeCd}" class="form-control" type="text">
+                </div>
+            </div>
+            <div class="form-group">    
+                <label class="col-sm-3 control-label">招标公告发布时间:</label>
+                <div class="col-sm-8">
+                    <input name="noticeSendTime" th:field="*{noticeSendTime}" class="form-control" type="text">
+                </div>
+            </div>
+            <div class="form-group">    
+                <label class="col-sm-3 control-label">项目地区区域码:</label>
+                <div class="col-sm-8">
+                    <input name="areaCd" th:field="*{areaCd}" class="form-control" type="text">
+                </div>
+            </div>
+            <div class="form-group">    
+                <label class="col-sm-3 control-label">状态:</label>
+                <div class="col-sm-8">
+                    <div class="radio-box" th:each="dict : ${@dict.getType('sys_normal_disable')}">
+                        <input type="radio" th:id="${'status_' + dict.dictCode}" name="status" th:value="${dict.dictValue}" th:field="*{status}">
+                        <label th:for="${'status_' + dict.dictCode}" th:text="${dict.dictLabel}"></label>
+                    </div>
+                </div>
+            </div>
+        </form>
+    </div>
+    <th:block th:include="include :: footer" />
+    <script th:inline="javascript">
+        var prefix = ctx + "opt/project";
+        $("#form-project-edit").validate({
+            focusCleanup: true
+        });
+
+        function submitHandler() {
+            if ($.validate.form()) {
+                $.operate.save(prefix + "/edit", $('#form-project-edit').serialize());
+            }
+        }
+    </script>
+</body>
+</html>

+ 177 - 0
ruoyi-admin/src/main/resources/templates/opt/project/project.html

@@ -0,0 +1,177 @@
+<!DOCTYPE html>
+<html lang="zh" xmlns:th="http://www.thymeleaf.org" xmlns:shiro="http://www.pollix.at/thymeleaf/shiro">
+<head>
+    <th:block th:include="include :: header('招标项目列表')" />
+</head>
+<body class="gray-bg">
+     <div class="container-div">
+        <div class="row">
+            <div class="col-sm-12 search-collapse">
+                <form id="formId">
+                    <div class="select-list">
+                        <ul>
+                            <li>
+                                <label>项目编号:</label>
+                                <input type="text" name="projectCd"/>
+                            </li>
+                            <li>
+                                <label>标段编号:</label>
+                                <input type="text" name="tenderNo"/>
+                            </li>
+                            <li>
+                                <label>开标日期:</label>
+                                <input type="text" name="bidOpenTime"/>
+                            </li>
+                            <li>
+                                <label>保证金金额:</label>
+                                <input type="text" name="bailAmt"/>
+                            </li>
+                            <li>
+                                <label>保函开具对象:</label>
+                                <input type="text" name="tendereeNm"/>
+                            </li>
+                            <li>
+                                <label>招标方式:</label>
+                                <input type="text" name="tenderTp"/>
+                            </li>
+                            <li>
+                                <label>招标人地址:</label>
+                                <input type="text" name="tendererAddress"/>
+                            </li>
+                            <li>
+                                <label>招标人证件号码:</label>
+                                <input type="text" name="tendereeCd"/>
+                            </li>
+                            <li>
+                                <label>招标公告发布时间:</label>
+                                <input type="text" name="noticeSendTime"/>
+                            </li>
+                            <li>
+                                <label>项目地区区域码:</label>
+                                <input type="text" name="areaCd"/>
+                            </li>
+                            <li>
+                                <label>状态:</label>
+                                <select name="status" th:with="type=${@dict.getType('sys_normal_disable')}">
+                                    <option value="">所有</option>
+                                    <option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}"></option>
+                                </select>
+                            </li>
+                            <li>
+                                <a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search()"><i class="fa fa-search"></i>&nbsp;搜索</a>
+                                <a class="btn btn-warning btn-rounded btn-sm" onclick="$.form.reset()"><i class="fa fa-refresh"></i>&nbsp;重置</a>
+                            </li>
+                        </ul>
+                    </div>
+                </form>
+            </div>
+
+            <div class="btn-group-sm" id="toolbar" role="group">
+                <a class="btn btn-success" onclick="$.operate.add()" shiro:hasPermission="opt:project:add">
+                    <i class="fa fa-plus"></i> 添加
+                </a>
+                <a class="btn btn-primary single disabled" onclick="$.operate.edit()" shiro:hasPermission="opt:project:edit">
+                    <i class="fa fa-edit"></i> 修改
+                </a>
+                <a class="btn btn-danger multiple disabled" onclick="$.operate.removeAll()" shiro:hasPermission="opt:project:remove">
+                    <i class="fa fa-remove"></i> 删除
+                </a>
+                <a class="btn btn-warning" onclick="$.table.exportExcel()" shiro:hasPermission="opt:project:export">
+                    <i class="fa fa-download"></i> 导出
+                </a>
+            </div>
+            <div class="col-sm-12 select-table table-striped">
+                <table id="bootstrap-table"></table>
+            </div>
+        </div>
+    </div>
+    <th:block th:include="include :: footer" />
+    <script th:inline="javascript">
+        var editFlag = [[${@permission.hasPermi('opt:project:edit')}]];
+        var removeFlag = [[${@permission.hasPermi('opt:project:remove')}]];
+        var statusDatas = [[${@dict.getType('sys_normal_disable')}]];
+        var prefix = ctx + "opt/project";
+
+        $(function() {
+            var options = {
+                url: prefix + "/list",
+                createUrl: prefix + "/add",
+                updateUrl: prefix + "/edit/{id}",
+                removeUrl: prefix + "/remove",
+                exportUrl: prefix + "/export",
+                modalName: "招标项目",
+                columns: [{
+                    checkbox: true
+                },
+                {
+                    field: 'projectId',
+                    title: '主键',
+                    visible: false
+                },
+                {
+                    field: 'projectCd',
+                    title: '项目编号'
+                },
+                {
+                    field: 'projectNm',
+                    title: '项目名称'
+                },
+                {
+                    field: 'tenderNo',
+                    title: '标段编号'
+                },
+                {
+                    field: 'bidOpenTime',
+                    title: '开标日期'
+                },
+                {
+                    field: 'bailAmt',
+                    title: '保证金金额'
+                },
+                {
+                    field: 'tendereeNm',
+                    title: '保函开具对象'
+                },
+                {
+                    field: 'tenderTp',
+                    title: '招标方式'
+                },
+                {
+                    field: 'tendererAddress',
+                    title: '招标人地址'
+                },
+                {
+                    field: 'tendereeCd',
+                    title: '招标人证件号码'
+                },
+                {
+                    field: 'noticeSendTime',
+                    title: '招标公告发布时间'
+                },
+                {
+                    field: 'areaCd',
+                    title: '项目地区区域码'
+                },
+                {
+                    field: 'status',
+                    title: '状态',
+                    formatter: function(value, row, index) {
+                       return $.table.selectDictLabel(statusDatas, value);
+                    }
+                },
+                {
+                    title: '操作',
+                    align: 'center',
+                    formatter: function(value, row, index) {
+                        var actions = [];
+                        actions.push('<a class="btn btn-success btn-xs ' + editFlag + '" href="javascript:void(0)" onclick="$.operate.edit(\'' + row.projectId + '\')"><i class="fa fa-edit"></i>编辑</a> ');
+                        actions.push('<a class="btn btn-danger btn-xs ' + removeFlag + '" href="javascript:void(0)" onclick="$.operate.remove(\'' + row.projectId + '\')"><i class="fa fa-remove"></i>删除</a>');
+                        return actions.join('');
+                    }
+                }]
+            };
+            $.table.init(options);
+        });
+    </script>
+</body>
+</html>

+ 153 - 0
ruoyi-system/src/main/java/com/ruoyi/opt/domain/CompanyInfo.java

@@ -0,0 +1,153 @@
+package com.ruoyi.opt.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;
+
+/**
+ * 企业信息对象 t_company_info
+ * 
+ * @author chengpan
+ * @date 2022-09-06
+ */
+public class CompanyInfo extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 主键 */
+    private Long companyId;
+
+    /** 公司名称 */
+    @Excel(name = "公司名称")
+    private String companyNm;
+
+    /** 统一社会信用代码 */
+    @Excel(name = "统一社会信用代码")
+    private String companySocialNo;
+
+    /** 企业基本账户 */
+    @Excel(name = "企业基本账户")
+    private String basicAccountBank;
+
+    /** 企业基本账户号码 */
+    @Excel(name = "企业基本账户号码")
+    private String basicAccountNo;
+
+    /** 企业类型 */
+    @Excel(name = "企业类型")
+    private String companyTp;
+
+    /** 联系人 */
+    @Excel(name = "联系人")
+    private String applyNm;
+
+    /** 申请人电话 */
+    @Excel(name = "申请人电话")
+    private String applyTel;
+
+    /** 状态(0正常 1停用) */
+    @Excel(name = "状态", readConverterExp = "0=正常,1=停用")
+    private String status;
+
+    public void setCompanyId(Long companyId) 
+    {
+        this.companyId = companyId;
+    }
+
+    public Long getCompanyId() 
+    {
+        return companyId;
+    }
+    public void setCompanyNm(String companyNm) 
+    {
+        this.companyNm = companyNm;
+    }
+
+    public String getCompanyNm() 
+    {
+        return companyNm;
+    }
+    public void setCompanySocialNo(String companySocialNo) 
+    {
+        this.companySocialNo = companySocialNo;
+    }
+
+    public String getCompanySocialNo() 
+    {
+        return companySocialNo;
+    }
+    public void setBasicAccountBank(String basicAccountBank) 
+    {
+        this.basicAccountBank = basicAccountBank;
+    }
+
+    public String getBasicAccountBank() 
+    {
+        return basicAccountBank;
+    }
+    public void setBasicAccountNo(String basicAccountNo) 
+    {
+        this.basicAccountNo = basicAccountNo;
+    }
+
+    public String getBasicAccountNo() 
+    {
+        return basicAccountNo;
+    }
+    public void setCompanyTp(String companyTp) 
+    {
+        this.companyTp = companyTp;
+    }
+
+    public String getCompanyTp() 
+    {
+        return companyTp;
+    }
+    public void setApplyNm(String applyNm) 
+    {
+        this.applyNm = applyNm;
+    }
+
+    public String getApplyNm() 
+    {
+        return applyNm;
+    }
+    public void setApplyTel(String applyTel) 
+    {
+        this.applyTel = applyTel;
+    }
+
+    public String getApplyTel() 
+    {
+        return applyTel;
+    }
+    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("companyId", getCompanyId())
+            .append("companyNm", getCompanyNm())
+            .append("companySocialNo", getCompanySocialNo())
+            .append("basicAccountBank", getBasicAccountBank())
+            .append("basicAccountNo", getBasicAccountNo())
+            .append("companyTp", getCompanyTp())
+            .append("applyNm", getApplyNm())
+            .append("applyTel", getApplyTel())
+            .append("status", getStatus())
+            .append("createBy", getCreateBy())
+            .append("createTime", getCreateTime())
+            .append("updateBy", getUpdateBy())
+            .append("updateTime", getUpdateTime())
+            .toString();
+    }
+}

+ 209 - 0
ruoyi-system/src/main/java/com/ruoyi/opt/domain/ProjectInfo.java

@@ -0,0 +1,209 @@
+package com.ruoyi.opt.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;
+
+/**
+ * 招标项目对象 t_project_info
+ * 
+ * @author chengpan
+ * @date 2022-09-07
+ */
+public class ProjectInfo extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 主键 */
+    private Long projectId;
+
+    /** 项目编号 */
+    @Excel(name = "项目编号")
+    private String projectCd;
+
+    /** 项目名称 */
+    @Excel(name = "项目名称")
+    private String projectNm;
+
+    /** 标段编号 */
+    @Excel(name = "标段编号")
+    private String tenderNo;
+
+    /** 开标日期 */
+    @Excel(name = "开标日期")
+    private String bidOpenTime;
+
+    /** 保证金金额 */
+    @Excel(name = "保证金金额")
+    private String bailAmt;
+
+    /** 保函开具对象 */
+    @Excel(name = "保函开具对象")
+    private String tendereeNm;
+
+    /** 招标方式*/
+    @Excel(name = "招标方式")
+    private String tenderTp;
+
+    /** 招标人地址 */
+    @Excel(name = "招标人地址")
+    private String tendererAddress;
+
+    /** 招标人证件号码 */
+    @Excel(name = "招标人证件号码")
+    private String tendereeCd;
+
+    /** 招标公告发布时间 */
+    @Excel(name = "招标公告发布时间")
+    private String noticeSendTime;
+
+    /** 项目地区区域码(6位) */
+    @Excel(name = "项目地区区域码", readConverterExp = "6=位")
+    private String areaCd;
+
+    /** 状态(0正常 1停用) */
+    @Excel(name = "状态", readConverterExp = "0=正常,1=停用")
+    private String status;
+
+    public void setProjectId(Long projectId) 
+    {
+        this.projectId = projectId;
+    }
+
+    public Long getProjectId() 
+    {
+        return projectId;
+    }
+    public void setProjectCd(String projectCd) 
+    {
+        this.projectCd = projectCd;
+    }
+
+    public String getProjectCd() 
+    {
+        return projectCd;
+    }
+    public void setProjectNm(String projectNm) 
+    {
+        this.projectNm = projectNm;
+    }
+
+    public String getProjectNm() 
+    {
+        return projectNm;
+    }
+    public void setTenderNo(String tenderNo) 
+    {
+        this.tenderNo = tenderNo;
+    }
+
+    public String getTenderNo() 
+    {
+        return tenderNo;
+    }
+    public void setBidOpenTime(String bidOpenTime) 
+    {
+        this.bidOpenTime = bidOpenTime;
+    }
+
+    public String getBidOpenTime() 
+    {
+        return bidOpenTime;
+    }
+    public void setBailAmt(String bailAmt) 
+    {
+        this.bailAmt = bailAmt;
+    }
+
+    public String getBailAmt() 
+    {
+        return bailAmt;
+    }
+    public void setTendereeNm(String tendereeNm) 
+    {
+        this.tendereeNm = tendereeNm;
+    }
+
+    public String getTendereeNm() 
+    {
+        return tendereeNm;
+    }
+    public void setTenderTp(String tenderTp) 
+    {
+        this.tenderTp = tenderTp;
+    }
+
+    public String getTenderTp() 
+    {
+        return tenderTp;
+    }
+    public void setTendererAddress(String tendererAddress) 
+    {
+        this.tendererAddress = tendererAddress;
+    }
+
+    public String getTendererAddress() 
+    {
+        return tendererAddress;
+    }
+    public void setTendereeCd(String tendereeCd) 
+    {
+        this.tendereeCd = tendereeCd;
+    }
+
+    public String getTendereeCd() 
+    {
+        return tendereeCd;
+    }
+    public void setNoticeSendTime(String noticeSendTime) 
+    {
+        this.noticeSendTime = noticeSendTime;
+    }
+
+    public String getNoticeSendTime() 
+    {
+        return noticeSendTime;
+    }
+    public void setAreaCd(String areaCd) 
+    {
+        this.areaCd = areaCd;
+    }
+
+    public String getAreaCd() 
+    {
+        return areaCd;
+    }
+    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("projectId", getProjectId())
+            .append("projectCd", getProjectCd())
+            .append("projectNm", getProjectNm())
+            .append("tenderNo", getTenderNo())
+            .append("bidOpenTime", getBidOpenTime())
+            .append("bailAmt", getBailAmt())
+            .append("tendereeNm", getTendereeNm())
+            .append("tenderTp", getTenderTp())
+            .append("tendererAddress", getTendererAddress())
+            .append("tendereeCd", getTendereeCd())
+            .append("noticeSendTime", getNoticeSendTime())
+            .append("areaCd", getAreaCd())
+            .append("status", getStatus())
+            .append("createBy", getCreateBy())
+            .append("createTime", getCreateTime())
+            .append("updateBy", getUpdateBy())
+            .append("updateTime", getUpdateTime())
+            .toString();
+    }
+}

+ 61 - 0
ruoyi-system/src/main/java/com/ruoyi/opt/mapper/CompanyInfoMapper.java

@@ -0,0 +1,61 @@
+package com.ruoyi.opt.mapper;
+
+import java.util.List;
+import com.ruoyi.opt.domain.CompanyInfo;
+
+/**
+ * 企业信息Mapper接口
+ * 
+ * @author chengpan
+ * @date 2022-09-06
+ */
+public interface CompanyInfoMapper 
+{
+    /**
+     * 查询企业信息
+     * 
+     * @param companyId 企业信息主键
+     * @return 企业信息
+     */
+    public CompanyInfo selectCompanyInfoByCompanyId(Long companyId);
+
+    /**
+     * 查询企业信息列表
+     * 
+     * @param companyInfo 企业信息
+     * @return 企业信息集合
+     */
+    public List<CompanyInfo> selectCompanyInfoList(CompanyInfo companyInfo);
+
+    /**
+     * 新增企业信息
+     * 
+     * @param companyInfo 企业信息
+     * @return 结果
+     */
+    public int insertCompanyInfo(CompanyInfo companyInfo);
+
+    /**
+     * 修改企业信息
+     * 
+     * @param companyInfo 企业信息
+     * @return 结果
+     */
+    public int updateCompanyInfo(CompanyInfo companyInfo);
+
+    /**
+     * 删除企业信息
+     * 
+     * @param companyId 企业信息主键
+     * @return 结果
+     */
+    public int deleteCompanyInfoByCompanyId(Long companyId);
+
+    /**
+     * 批量删除企业信息
+     * 
+     * @param companyIds 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteCompanyInfoByCompanyIds(String[] companyIds);
+}

+ 61 - 0
ruoyi-system/src/main/java/com/ruoyi/opt/mapper/ProjectInfoMapper.java

@@ -0,0 +1,61 @@
+package com.ruoyi.opt.mapper;
+
+import java.util.List;
+import com.ruoyi.opt.domain.ProjectInfo;
+
+/**
+ * 招标项目Mapper接口
+ * 
+ * @author chengpan
+ * @date 2022-09-07
+ */
+public interface ProjectInfoMapper 
+{
+    /**
+     * 查询招标项目
+     * 
+     * @param projectId 招标项目主键
+     * @return 招标项目
+     */
+    public ProjectInfo selectProjectInfoByProjectId(Long projectId);
+
+    /**
+     * 查询招标项目列表
+     * 
+     * @param projectInfo 招标项目
+     * @return 招标项目集合
+     */
+    public List<ProjectInfo> selectProjectInfoList(ProjectInfo projectInfo);
+
+    /**
+     * 新增招标项目
+     * 
+     * @param projectInfo 招标项目
+     * @return 结果
+     */
+    public int insertProjectInfo(ProjectInfo projectInfo);
+
+    /**
+     * 修改招标项目
+     * 
+     * @param projectInfo 招标项目
+     * @return 结果
+     */
+    public int updateProjectInfo(ProjectInfo projectInfo);
+
+    /**
+     * 删除招标项目
+     * 
+     * @param projectId 招标项目主键
+     * @return 结果
+     */
+    public int deleteProjectInfoByProjectId(Long projectId);
+
+    /**
+     * 批量删除招标项目
+     * 
+     * @param projectIds 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteProjectInfoByProjectIds(String[] projectIds);
+}

+ 61 - 0
ruoyi-system/src/main/java/com/ruoyi/opt/service/ICompanyInfoService.java

@@ -0,0 +1,61 @@
+package com.ruoyi.opt.service;
+
+import java.util.List;
+import com.ruoyi.opt.domain.CompanyInfo;
+
+/**
+ * 企业信息Service接口
+ * 
+ * @author chengpan
+ * @date 2022-09-06
+ */
+public interface ICompanyInfoService 
+{
+    /**
+     * 查询企业信息
+     * 
+     * @param companyId 企业信息主键
+     * @return 企业信息
+     */
+    public CompanyInfo selectCompanyInfoByCompanyId(Long companyId);
+
+    /**
+     * 查询企业信息列表
+     * 
+     * @param companyInfo 企业信息
+     * @return 企业信息集合
+     */
+    public List<CompanyInfo> selectCompanyInfoList(CompanyInfo companyInfo);
+
+    /**
+     * 新增企业信息
+     * 
+     * @param companyInfo 企业信息
+     * @return 结果
+     */
+    public int insertCompanyInfo(CompanyInfo companyInfo);
+
+    /**
+     * 修改企业信息
+     * 
+     * @param companyInfo 企业信息
+     * @return 结果
+     */
+    public int updateCompanyInfo(CompanyInfo companyInfo);
+
+    /**
+     * 批量删除企业信息
+     * 
+     * @param companyIds 需要删除的企业信息主键集合
+     * @return 结果
+     */
+    public int deleteCompanyInfoByCompanyIds(String companyIds);
+
+    /**
+     * 删除企业信息信息
+     * 
+     * @param companyId 企业信息主键
+     * @return 结果
+     */
+    public int deleteCompanyInfoByCompanyId(Long companyId);
+}

+ 61 - 0
ruoyi-system/src/main/java/com/ruoyi/opt/service/IProjectInfoService.java

@@ -0,0 +1,61 @@
+package com.ruoyi.opt.service;
+
+import java.util.List;
+import com.ruoyi.opt.domain.ProjectInfo;
+
+/**
+ * 招标项目Service接口
+ * 
+ * @author chengpan
+ * @date 2022-09-07
+ */
+public interface IProjectInfoService 
+{
+    /**
+     * 查询招标项目
+     * 
+     * @param projectId 招标项目主键
+     * @return 招标项目
+     */
+    public ProjectInfo selectProjectInfoByProjectId(Long projectId);
+
+    /**
+     * 查询招标项目列表
+     * 
+     * @param projectInfo 招标项目
+     * @return 招标项目集合
+     */
+    public List<ProjectInfo> selectProjectInfoList(ProjectInfo projectInfo);
+
+    /**
+     * 新增招标项目
+     * 
+     * @param projectInfo 招标项目
+     * @return 结果
+     */
+    public int insertProjectInfo(ProjectInfo projectInfo);
+
+    /**
+     * 修改招标项目
+     * 
+     * @param projectInfo 招标项目
+     * @return 结果
+     */
+    public int updateProjectInfo(ProjectInfo projectInfo);
+
+    /**
+     * 批量删除招标项目
+     * 
+     * @param projectIds 需要删除的招标项目主键集合
+     * @return 结果
+     */
+    public int deleteProjectInfoByProjectIds(String projectIds);
+
+    /**
+     * 删除招标项目信息
+     * 
+     * @param projectId 招标项目主键
+     * @return 结果
+     */
+    public int deleteProjectInfoByProjectId(Long projectId);
+}

+ 97 - 0
ruoyi-system/src/main/java/com/ruoyi/opt/service/impl/CompanyInfoServiceImpl.java

@@ -0,0 +1,97 @@
+package com.ruoyi.opt.service.impl;
+
+import java.util.List;
+import com.ruoyi.common.utils.DateUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.ruoyi.opt.mapper.CompanyInfoMapper;
+import com.ruoyi.opt.domain.CompanyInfo;
+import com.ruoyi.opt.service.ICompanyInfoService;
+import com.ruoyi.common.core.text.Convert;
+
+/**
+ * 企业信息Service业务层处理
+ * 
+ * @author chengpan
+ * @date 2022-09-06
+ */
+@Service
+public class CompanyInfoServiceImpl implements ICompanyInfoService 
+{
+    @Autowired
+    private CompanyInfoMapper companyInfoMapper;
+
+    /**
+     * 查询企业信息
+     * 
+     * @param companyId 企业信息主键
+     * @return 企业信息
+     */
+    @Override
+    public CompanyInfo selectCompanyInfoByCompanyId(Long companyId)
+    {
+        return companyInfoMapper.selectCompanyInfoByCompanyId(companyId);
+    }
+
+    /**
+     * 查询企业信息列表
+     * 
+     * @param companyInfo 企业信息
+     * @return 企业信息
+     */
+    @Override
+    public List<CompanyInfo> selectCompanyInfoList(CompanyInfo companyInfo)
+    {
+        return companyInfoMapper.selectCompanyInfoList(companyInfo);
+    }
+
+    /**
+     * 新增企业信息
+     * 
+     * @param companyInfo 企业信息
+     * @return 结果
+     */
+    @Override
+    public int insertCompanyInfo(CompanyInfo companyInfo)
+    {
+        companyInfo.setCreateTime(DateUtils.getNowDate());
+        return companyInfoMapper.insertCompanyInfo(companyInfo);
+    }
+
+    /**
+     * 修改企业信息
+     * 
+     * @param companyInfo 企业信息
+     * @return 结果
+     */
+    @Override
+    public int updateCompanyInfo(CompanyInfo companyInfo)
+    {
+        companyInfo.setUpdateTime(DateUtils.getNowDate());
+        return companyInfoMapper.updateCompanyInfo(companyInfo);
+    }
+
+    /**
+     * 批量删除企业信息
+     * 
+     * @param companyIds 需要删除的企业信息主键
+     * @return 结果
+     */
+    @Override
+    public int deleteCompanyInfoByCompanyIds(String companyIds)
+    {
+        return companyInfoMapper.deleteCompanyInfoByCompanyIds(Convert.toStrArray(companyIds));
+    }
+
+    /**
+     * 删除企业信息信息
+     * 
+     * @param companyId 企业信息主键
+     * @return 结果
+     */
+    @Override
+    public int deleteCompanyInfoByCompanyId(Long companyId)
+    {
+        return companyInfoMapper.deleteCompanyInfoByCompanyId(companyId);
+    }
+}

+ 97 - 0
ruoyi-system/src/main/java/com/ruoyi/opt/service/impl/ProjectInfoServiceImpl.java

@@ -0,0 +1,97 @@
+package com.ruoyi.opt.service.impl;
+
+import java.util.List;
+import com.ruoyi.common.utils.DateUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.ruoyi.opt.mapper.ProjectInfoMapper;
+import com.ruoyi.opt.domain.ProjectInfo;
+import com.ruoyi.opt.service.IProjectInfoService;
+import com.ruoyi.common.core.text.Convert;
+
+/**
+ * 招标项目Service业务层处理
+ * 
+ * @author chengpan
+ * @date 2022-09-07
+ */
+@Service
+public class ProjectInfoServiceImpl implements IProjectInfoService 
+{
+    @Autowired
+    private ProjectInfoMapper projectInfoMapper;
+
+    /**
+     * 查询招标项目
+     * 
+     * @param projectId 招标项目主键
+     * @return 招标项目
+     */
+    @Override
+    public ProjectInfo selectProjectInfoByProjectId(Long projectId)
+    {
+        return projectInfoMapper.selectProjectInfoByProjectId(projectId);
+    }
+
+    /**
+     * 查询招标项目列表
+     * 
+     * @param projectInfo 招标项目
+     * @return 招标项目
+     */
+    @Override
+    public List<ProjectInfo> selectProjectInfoList(ProjectInfo projectInfo)
+    {
+        return projectInfoMapper.selectProjectInfoList(projectInfo);
+    }
+
+    /**
+     * 新增招标项目
+     * 
+     * @param projectInfo 招标项目
+     * @return 结果
+     */
+    @Override
+    public int insertProjectInfo(ProjectInfo projectInfo)
+    {
+        projectInfo.setCreateTime(DateUtils.getNowDate());
+        return projectInfoMapper.insertProjectInfo(projectInfo);
+    }
+
+    /**
+     * 修改招标项目
+     * 
+     * @param projectInfo 招标项目
+     * @return 结果
+     */
+    @Override
+    public int updateProjectInfo(ProjectInfo projectInfo)
+    {
+        projectInfo.setUpdateTime(DateUtils.getNowDate());
+        return projectInfoMapper.updateProjectInfo(projectInfo);
+    }
+
+    /**
+     * 批量删除招标项目
+     * 
+     * @param projectIds 需要删除的招标项目主键
+     * @return 结果
+     */
+    @Override
+    public int deleteProjectInfoByProjectIds(String projectIds)
+    {
+        return projectInfoMapper.deleteProjectInfoByProjectIds(Convert.toStrArray(projectIds));
+    }
+
+    /**
+     * 删除招标项目信息
+     * 
+     * @param projectId 招标项目主键
+     * @return 结果
+     */
+    @Override
+    public int deleteProjectInfoByProjectId(Long projectId)
+    {
+        return projectInfoMapper.deleteProjectInfoByProjectId(projectId);
+    }
+}

+ 108 - 0
ruoyi-system/src/main/resources/mapper/opt/CompanyInfoMapper.xml

@@ -0,0 +1,108 @@
+<?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.opt.mapper.CompanyInfoMapper">
+    
+    <resultMap type="CompanyInfo" id="CompanyInfoResult">
+        <result property="companyId"    column="company_id"    />
+        <result property="companyNm"    column="company_nm"    />
+        <result property="companySocialNo"    column="company_social_no"    />
+        <result property="basicAccountBank"    column="basic_account_bank"    />
+        <result property="basicAccountNo"    column="basic_account_no"    />
+        <result property="companyTp"    column="company_tp"    />
+        <result property="applyNm"    column="apply_nm"    />
+        <result property="applyTel"    column="apply_tel"    />
+        <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"    />
+    </resultMap>
+
+    <sql id="selectCompanyInfoVo">
+        select company_id, company_nm, company_social_no, basic_account_bank, basic_account_no, company_tp, apply_nm, apply_tel, status, create_by, create_time, update_by, update_time from t_company_info
+    </sql>
+
+    <select id="selectCompanyInfoList" parameterType="CompanyInfo" resultMap="CompanyInfoResult">
+        <include refid="selectCompanyInfoVo"/>
+        <where>  
+            <if test="companyNm != null  and companyNm != ''"> and company_nm like concat('%', #{companyNm}, '%')</if>
+            <if test="companySocialNo != null  and companySocialNo != ''"> and company_social_no like concat('%', #{companySocialNo}, '%')</if>
+            <if test="basicAccountBank != null  and basicAccountBank != ''"> and basic_account_bank = #{basicAccountBank}</if>
+            <if test="basicAccountNo != null  and basicAccountNo != ''"> and basic_account_no = #{basicAccountNo}</if>
+            <if test="companyTp != null  and companyTp != ''"> and company_tp = #{companyTp}</if>
+            <if test="applyNm != null  and applyNm != ''"> and apply_nm = #{applyNm}</if>
+            <if test="applyTel != null  and applyTel != ''"> and apply_tel = #{applyTel}</if>
+            <if test="status != null  and status != ''"> and status = #{status}</if>
+        </where>
+    </select>
+    
+    <select id="selectCompanyInfoByCompanyId" parameterType="Long" resultMap="CompanyInfoResult">
+        <include refid="selectCompanyInfoVo"/>
+        where company_id = #{companyId}
+    </select>
+        
+    <insert id="insertCompanyInfo" parameterType="CompanyInfo" useGeneratedKeys="true" keyProperty="companyId">
+        insert into t_company_info
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="companyNm != null">company_nm,</if>
+            <if test="companySocialNo != null">company_social_no,</if>
+            <if test="basicAccountBank != null">basic_account_bank,</if>
+            <if test="basicAccountNo != null">basic_account_no,</if>
+            <if test="companyTp != null">company_tp,</if>
+            <if test="applyNm != null">apply_nm,</if>
+            <if test="applyTel != null">apply_tel,</if>
+            <if test="status != null">status,</if>
+            <if test="createBy != null">create_by,</if>
+            <if test="createTime != null">create_time,</if>
+            <if test="updateBy != null">update_by,</if>
+            <if test="updateTime != null">update_time,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="companyNm != null">#{companyNm},</if>
+            <if test="companySocialNo != null">#{companySocialNo},</if>
+            <if test="basicAccountBank != null">#{basicAccountBank},</if>
+            <if test="basicAccountNo != null">#{basicAccountNo},</if>
+            <if test="companyTp != null">#{companyTp},</if>
+            <if test="applyNm != null">#{applyNm},</if>
+            <if test="applyTel != null">#{applyTel},</if>
+            <if test="status != null">#{status},</if>
+            <if test="createBy != null">#{createBy},</if>
+            <if test="createTime != null">#{createTime},</if>
+            <if test="updateBy != null">#{updateBy},</if>
+            <if test="updateTime != null">#{updateTime},</if>
+         </trim>
+    </insert>
+
+    <update id="updateCompanyInfo" parameterType="CompanyInfo">
+        update t_company_info
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="companyNm != null">company_nm = #{companyNm},</if>
+            <if test="companySocialNo != null">company_social_no = #{companySocialNo},</if>
+            <if test="basicAccountBank != null">basic_account_bank = #{basicAccountBank},</if>
+            <if test="basicAccountNo != null">basic_account_no = #{basicAccountNo},</if>
+            <if test="companyTp != null">company_tp = #{companyTp},</if>
+            <if test="applyNm != null">apply_nm = #{applyNm},</if>
+            <if test="applyTel != null">apply_tel = #{applyTel},</if>
+            <if test="status != null">status = #{status},</if>
+            <if test="createBy != null">create_by = #{createBy},</if>
+            <if test="createTime != null">create_time = #{createTime},</if>
+            <if test="updateBy != null">update_by = #{updateBy},</if>
+            <if test="updateTime != null">update_time = #{updateTime},</if>
+        </trim>
+        where company_id = #{companyId}
+    </update>
+
+    <delete id="deleteCompanyInfoByCompanyId" parameterType="Long">
+        delete from t_company_info where company_id = #{companyId}
+    </delete>
+
+    <delete id="deleteCompanyInfoByCompanyIds" parameterType="String">
+        delete from t_company_info where company_id in 
+        <foreach item="companyId" collection="array" open="(" separator="," close=")">
+            #{companyId}
+        </foreach>
+    </delete>
+
+</mapper>

+ 128 - 0
ruoyi-system/src/main/resources/mapper/opt/ProjectInfoMapper.xml

@@ -0,0 +1,128 @@
+<?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.opt.mapper.ProjectInfoMapper">
+    
+    <resultMap type="ProjectInfo" id="ProjectInfoResult">
+        <result property="projectId"    column="project_id"    />
+        <result property="projectCd"    column="project_cd"    />
+        <result property="projectNm"    column="project_nm"    />
+        <result property="tenderNo"    column="tender_no"    />
+        <result property="bidOpenTime"    column="bid_open_time"    />
+        <result property="bailAmt"    column="bail_amt"    />
+        <result property="tendereeNm"    column="tenderee_nm"    />
+        <result property="tenderTp"    column="tender_tp"    />
+        <result property="tendererAddress"    column="tenderer_address"    />
+        <result property="tendereeCd"    column="tenderee_cd"    />
+        <result property="noticeSendTime"    column="notice_send_time"    />
+        <result property="areaCd"    column="area_cd"    />
+        <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"    />
+    </resultMap>
+
+    <sql id="selectProjectInfoVo">
+        select project_id, project_cd, project_nm, tender_no, bid_open_time, bail_amt, tenderee_nm, tender_tp, tenderer_address, tenderee_cd, notice_send_time, area_cd, status, create_by, create_time, update_by, update_time from t_project_info
+    </sql>
+
+    <select id="selectProjectInfoList" parameterType="ProjectInfo" resultMap="ProjectInfoResult">
+        <include refid="selectProjectInfoVo"/>
+        <where>  
+            <if test="projectCd != null  and projectCd != ''"> and project_cd = #{projectCd}</if>
+            <if test="projectNm != null  and projectNm != ''"> and project_nm = #{projectNm}</if>
+            <if test="tenderNo != null  and tenderNo != ''"> and tender_no = #{tenderNo}</if>
+            <if test="bidOpenTime != null  and bidOpenTime != ''"> and bid_open_time = #{bidOpenTime}</if>
+            <if test="bailAmt != null  and bailAmt != ''"> and bail_amt = #{bailAmt}</if>
+            <if test="tendereeNm != null  and tendereeNm != ''"> and tenderee_nm = #{tendereeNm}</if>
+            <if test="tenderTp != null  and tenderTp != ''"> and tender_tp = #{tenderTp}</if>
+            <if test="tendererAddress != null  and tendererAddress != ''"> and tenderer_address = #{tendererAddress}</if>
+            <if test="tendereeCd != null  and tendereeCd != ''"> and tenderee_cd = #{tendereeCd}</if>
+            <if test="noticeSendTime != null  and noticeSendTime != ''"> and notice_send_time = #{noticeSendTime}</if>
+            <if test="areaCd != null  and areaCd != ''"> and area_cd = #{areaCd}</if>
+            <if test="status != null  and status != ''"> and status = #{status}</if>
+        </where>
+    </select>
+    
+    <select id="selectProjectInfoByProjectId" parameterType="Long" resultMap="ProjectInfoResult">
+        <include refid="selectProjectInfoVo"/>
+        where project_id = #{projectId}
+    </select>
+        
+    <insert id="insertProjectInfo" parameterType="ProjectInfo" useGeneratedKeys="true" keyProperty="projectId">
+        insert into t_project_info
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="projectCd != null">project_cd,</if>
+            <if test="projectNm != null">project_nm,</if>
+            <if test="tenderNo != null">tender_no,</if>
+            <if test="bidOpenTime != null">bid_open_time,</if>
+            <if test="bailAmt != null">bail_amt,</if>
+            <if test="tendereeNm != null">tenderee_nm,</if>
+            <if test="tenderTp != null">tender_tp,</if>
+            <if test="tendererAddress != null">tenderer_address,</if>
+            <if test="tendereeCd != null">tenderee_cd,</if>
+            <if test="noticeSendTime != null">notice_send_time,</if>
+            <if test="areaCd != null">area_cd,</if>
+            <if test="status != null">status,</if>
+            <if test="createBy != null">create_by,</if>
+            <if test="createTime != null">create_time,</if>
+            <if test="updateBy != null">update_by,</if>
+            <if test="updateTime != null">update_time,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="projectCd != null">#{projectCd},</if>
+            <if test="projectNm != null">#{projectNm},</if>
+            <if test="tenderNo != null">#{tenderNo},</if>
+            <if test="bidOpenTime != null">#{bidOpenTime},</if>
+            <if test="bailAmt != null">#{bailAmt},</if>
+            <if test="tendereeNm != null">#{tendereeNm},</if>
+            <if test="tenderTp != null">#{tenderTp},</if>
+            <if test="tendererAddress != null">#{tendererAddress},</if>
+            <if test="tendereeCd != null">#{tendereeCd},</if>
+            <if test="noticeSendTime != null">#{noticeSendTime},</if>
+            <if test="areaCd != null">#{areaCd},</if>
+            <if test="status != null">#{status},</if>
+            <if test="createBy != null">#{createBy},</if>
+            <if test="createTime != null">#{createTime},</if>
+            <if test="updateBy != null">#{updateBy},</if>
+            <if test="updateTime != null">#{updateTime},</if>
+         </trim>
+    </insert>
+
+    <update id="updateProjectInfo" parameterType="ProjectInfo">
+        update t_project_info
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="projectCd != null">project_cd = #{projectCd},</if>
+            <if test="projectNm != null">project_nm = #{projectNm},</if>
+            <if test="tenderNo != null">tender_no = #{tenderNo},</if>
+            <if test="bidOpenTime != null">bid_open_time = #{bidOpenTime},</if>
+            <if test="bailAmt != null">bail_amt = #{bailAmt},</if>
+            <if test="tendereeNm != null">tenderee_nm = #{tendereeNm},</if>
+            <if test="tenderTp != null">tender_tp = #{tenderTp},</if>
+            <if test="tendererAddress != null">tenderer_address = #{tendererAddress},</if>
+            <if test="tendereeCd != null">tenderee_cd = #{tendereeCd},</if>
+            <if test="noticeSendTime != null">notice_send_time = #{noticeSendTime},</if>
+            <if test="areaCd != null">area_cd = #{areaCd},</if>
+            <if test="status != null">status = #{status},</if>
+            <if test="createBy != null">create_by = #{createBy},</if>
+            <if test="createTime != null">create_time = #{createTime},</if>
+            <if test="updateBy != null">update_by = #{updateBy},</if>
+            <if test="updateTime != null">update_time = #{updateTime},</if>
+        </trim>
+        where project_id = #{projectId}
+    </update>
+
+    <delete id="deleteProjectInfoByProjectId" parameterType="Long">
+        delete from t_project_info where project_id = #{projectId}
+    </delete>
+
+    <delete id="deleteProjectInfoByProjectIds" parameterType="String">
+        delete from t_project_info where project_id in 
+        <foreach item="projectId" collection="array" open="(" separator="," close=")">
+            #{projectId}
+        </foreach>
+    </delete>
+
+</mapper>

+ 14 - 0
sql/ry_20210924.sql

@@ -268,6 +268,20 @@ INSERT INTO `sys_menu` VALUES (2008, '保函订单新增', 2006, 2, '#', '', 'F'
 INSERT INTO `sys_menu` VALUES (2009, '保函订单修改', 2006, 3, '#', '', 'F', '0', '1', 'opt:process:edit', '#', 'admin', '2022-09-06 10:51:50', '', NULL, '');
 INSERT INTO `sys_menu` VALUES (2010, '保函订单删除', 2006, 4, '#', '', 'F', '0', '1', 'opt:process:remove', '#', 'admin', '2022-09-06 10:51:50', '', NULL, '');
 INSERT INTO `sys_menu` VALUES (2011, '保函订单导出', 2006, 5, '#', '', 'F', '0', '1', 'opt:process:export', '#', 'admin', '2022-09-06 10:51:50', '', NULL, '');
+-- 企业信息
+INSERT INTO `sys_menu` VALUES (2012, '企业信息', 0, 3, '/opt/company', 'menuItem', 'C', '0', '1', 'opt:company:view', '#', 'admin', '2022-09-07 01:17:40', '', NULL, '');
+INSERT INTO `sys_menu` VALUES (2013, '企业信息查询', 2012, 1, '#', '', 'F', '0', '1', 'opt:company:list', '#', 'admin', '2022-09-07 01:23:22', '', NULL, '');
+INSERT INTO `sys_menu` VALUES (2014, '企业信息新增', 2012, 2, '#', '', 'F', '0', '1', 'opt:company:add', '#', 'admin', '2022-09-07 01:23:22', '', NULL, '');
+INSERT INTO `sys_menu` VALUES (2015, '企业信息修改', 2012, 3, '#', '', 'F', '0', '1', 'opt:company:edit', '#', 'admin', '2022-09-07 01:23:22', '', NULL, '');
+INSERT INTO `sys_menu` VALUES (2016, '企业信息删除', 2012, 4, '#', '', 'F', '0', '1', 'opt:company:remove', '#', 'admin', '2022-09-07 01:23:23', '', NULL, '');
+INSERT INTO `sys_menu` VALUES (2017, '企业信息导出', 2012, 5, '#', '', 'F', '0', '1', 'opt:company:export', '#', 'admin', '2022-09-07 01:23:23', '', NULL, '');
+-- 招标项目
+INSERT INTO `sys_menu` VALUES (2018, '招标项目', 0, 4, '/opt/project', 'menuItem', 'C', '0', '1', 'opt:project:view', '#', 'admin', '2022-09-07 01:28:55', 'admin', '2022-09-07 01:31:11', '');
+INSERT INTO `sys_menu` VALUES (2019, '招标项目查询', 2018, 1, '#', '', 'F', '0', '1', 'opt:project:list', '#', 'admin', '2022-09-07 01:30:26', '', NULL, '');
+INSERT INTO `sys_menu` VALUES (2020, '招标项目新增', 2018, 2, '#', '', 'F', '0', '1', 'opt:project:add', '#', 'admin', '2022-09-07 01:30:26', '', NULL, '');
+INSERT INTO `sys_menu` VALUES (2021, '招标项目修改', 2018, 3, '#', '', 'F', '0', '1', 'opt:project:edit', '#', 'admin', '2022-09-07 01:30:26', '', NULL, '');
+INSERT INTO `sys_menu` VALUES (2022, '招标项目删除', 2018, 4, '#', '', 'F', '0', '1', 'opt:project:remove', '#', 'admin', '2022-09-07 01:30:26', '', NULL, '');
+INSERT INTO `sys_menu` VALUES (2023, '招标项目导出', 2018, 5, '#', '', 'F', '0', '1', 'opt:project:export', '#', 'admin', '2022-09-07 01:30:26', '', NULL, '');
 
 
 -- ----------------------------