Explorar o código

fix 优化代码

tjf %!s(int64=3) %!d(string=hai) anos
pai
achega
9fa15acbd9
Modificáronse 29 ficheiros con 1485 adicións e 105 borrados
  1. 4 2
      ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/ColumnNewsController.java
  2. 2 2
      ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/ImageDataController.java
  3. 1 1
      ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/QueryController.java
  4. 8 0
      ruoyi-common/src/main/java/com/ruoyi/common/config/RuoYiConfig.java
  5. 12 0
      ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/ColumnNavigationBar.java
  6. 1 0
      ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java
  7. 7 0
      ruoyi-system/src/main/java/com/ruoyi/system/mapper/ImageDataMapper.java
  8. 8 1
      ruoyi-system/src/main/java/com/ruoyi/system/service/IImageDataService.java
  9. 11 1
      ruoyi-system/src/main/java/com/ruoyi/system/service/impl/ImageDataServiceImpl.java
  10. 2 2
      ruoyi-system/src/main/java/com/ruoyi/system/service/impl/ReportDetailServiceImpl.java
  11. 6 2
      ruoyi-system/src/main/resources/mapper/system/ColumnNavigationBarMapper.xml
  12. 3 2
      ruoyi-system/src/main/resources/mapper/system/ColumnNewsMapper.xml
  13. 12 5
      ruoyi-system/src/main/resources/mapper/system/ImageDataMapper.xml
  14. 3 4
      ruoyi-system/src/main/resources/mapper/system/InspectInforMapper.xml
  15. 3 4
      ruoyi-system/src/main/resources/mapper/system/QueryConfigMapper.xml
  16. 3 4
      ruoyi-system/src/main/resources/mapper/system/ReportDetailMapper.xml
  17. 38 38
      ruoyi-system/src/main/resources/mapper/system/ReportQueryLogMapper.xml
  18. 4 3
      ruoyi-ui/package.json
  19. 44 0
      ruoyi-ui/src/api/system/inspectInfor.js
  20. 44 0
      ruoyi-ui/src/api/system/queryLog.js
  21. 44 0
      ruoyi-ui/src/api/system/reportDetail.js
  22. 27 5
      ruoyi-ui/src/views/system/column/index.vue
  23. 9 0
      ruoyi-ui/src/views/system/friendLink/index.vue
  24. 401 0
      ruoyi-ui/src/views/system/inspectInfor/index.vue
  25. 26 10
      ruoyi-ui/src/views/system/news/index.vue
  26. 8 18
      ruoyi-ui/src/views/system/queryConfig/index.vue
  27. 403 0
      ruoyi-ui/src/views/system/queryLog/index.vue
  28. 350 0
      ruoyi-ui/src/views/system/reportDetail/index.vue
  29. 1 1
      ruoyi-ui/vue.config.js

+ 4 - 2
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/ColumnNewsController.java

@@ -4,6 +4,7 @@ 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.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.PutMapping;
@@ -75,8 +76,9 @@ public class ColumnNewsController extends BaseController
     @PreAuthorize("@ss.hasPermi('system:news:add')")
     @Log(title = "文章信息", businessType = BusinessType.INSERT)
     @PostMapping
-    public AjaxResult add(@RequestBody ColumnNews columnNews)
+    public AjaxResult add(@Validated @RequestBody ColumnNews columnNews)
     {
+        columnNews.setCreateBy(getUsername());
         return toAjax(columnNewsService.insertColumnNews(columnNews));
     }
 
@@ -86,7 +88,7 @@ public class ColumnNewsController extends BaseController
     @PreAuthorize("@ss.hasPermi('system:news:edit')")
     @Log(title = "文章信息", businessType = BusinessType.UPDATE)
     @PutMapping
-    public AjaxResult edit(@RequestBody ColumnNews columnNews)
+    public AjaxResult edit(@Validated @RequestBody ColumnNews columnNews)
     {
         return toAjax(columnNewsService.updateColumnNews(columnNews));
     }

+ 2 - 2
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/ImageDataController.java

@@ -43,7 +43,7 @@ public class ImageDataController extends BaseController
     public TableDataInfo list(ImageDatas imageDatas)
     {
         startPage();
-        List<ImageDatas> list = imageDataService.selectImageDataList(imageDatas);
+        List<ImageDatas> list = imageDataService.selectImageDatasList(imageDatas);
         return getDataTable(list);
     }
 
@@ -55,7 +55,7 @@ public class ImageDataController extends BaseController
     @PostMapping("/export")
     public void export(HttpServletResponse response, ImageDatas imageDatas)
     {
-        List<ImageDatas> list = imageDataService.selectImageDataList(imageDatas);
+        List<ImageDatas> list = imageDataService.selectImageDatasList(imageDatas);
         ExcelUtil<ImageDatas> util = new ExcelUtil<ImageDatas>(ImageDatas.class);
         util.exportExcel(response, list, "附件信息数据");
     }

+ 1 - 1
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/QueryController.java

@@ -84,7 +84,7 @@ public class QueryController extends BaseController {
     @PostMapping("/getRotationChart")
     public AjaxResult getRotationChart(ImageDatas imageDatas)
     {
-        List<ImageDatas> list = imageDataService.selectImageDataList(imageDatas);
+        List<ImageDatas> list = imageDataService.selectImageDatasListMenHu(imageDatas);
         return AjaxResult.success(list);
     }
 

+ 8 - 0
ruoyi-common/src/main/java/com/ruoyi/common/config/RuoYiConfig.java

@@ -132,4 +132,12 @@ public class RuoYiConfig
     {
         return getProfile() + "/upload";
     }
+
+    /**
+     * 获取系统生成二维码保存路径
+     */
+    public static String getUploadQrPath()
+    {
+        return getProfile() + "/qrUpload";
+    }
 }

+ 12 - 0
ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/ColumnNavigationBar.java

@@ -50,6 +50,11 @@ public class ColumnNavigationBar extends BaseEntity
      */
     private String isBottom;
 
+    /**
+     * 展开方式
+     */
+    private String openMode;
+
     /** 栏目状态(0正常 1停用) */
     @Excel(name = "栏目状态", readConverterExp = "0=正常,1=停用")
     private String status;
@@ -62,6 +67,13 @@ public class ColumnNavigationBar extends BaseEntity
 
     private List<ColumnNews> columnNewsList = new ArrayList<ColumnNews>();
 
+    public String getOpenMode() {
+        return openMode;
+    }
+
+    public void setOpenMode(String openMode) {
+        this.openMode = openMode;
+    }
 
     public List<ColumnNews> getColumnNewsList() {
         return columnNewsList;

+ 1 - 0
ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java

@@ -113,6 +113,7 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter
                 .antMatchers("/*/api-docs").anonymous()
                 .antMatchers("/druid/**").anonymous()
                 .antMatchers("/gateway/query/**").anonymous()
+                .antMatchers("/common/upload/**").anonymous()
                 // 除上面外的所有请求全部需要鉴权认证
                 .anyRequest().authenticated()
                 .and()

+ 7 - 0
ruoyi-system/src/main/java/com/ruoyi/system/mapper/ImageDataMapper.java

@@ -27,6 +27,13 @@ public interface ImageDataMapper
      */
     public List<ImageDatas> selectImageDatasList(ImageDatas imageDatas);
 
+    /**
+     * 门户查询附件信息列表
+     * @param imageDatas
+     * @return
+     */
+    public List<ImageDatas> selectImageDatasListMenHu(ImageDatas imageDatas);
+
     /**
      * 新增附件信息
      * 

+ 8 - 1
ruoyi-system/src/main/java/com/ruoyi/system/service/IImageDataService.java

@@ -25,7 +25,14 @@ public interface IImageDataService
      * @param imageData 附件信息
      * @return 附件信息集合
      */
-    public List<ImageDatas> selectImageDataList(ImageDatas imageData);
+    public List<ImageDatas> selectImageDatasList(ImageDatas imageData);
+
+    /**
+     * 门户查询附件信息列表
+     * @param imageData
+     * @return
+     */
+    public List<ImageDatas> selectImageDatasListMenHu(ImageDatas imageData);
 
     /**
      * 新增附件信息

+ 11 - 1
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/ImageDataServiceImpl.java

@@ -40,11 +40,21 @@ public class ImageDataServiceImpl implements IImageDataService
      * @return 附件信息
      */
     @Override
-    public List<ImageDatas> selectImageDataList(ImageDatas imageData)
+    public List<ImageDatas> selectImageDatasList(ImageDatas imageData)
     {
         return imageDataMapper.selectImageDatasList(imageData);
     }
 
+    /**
+     * 门户查询附件信息列表
+     * @param imageData
+     * @return
+     */
+    @Override
+    public List<ImageDatas> selectImageDatasListMenHu(ImageDatas imageData) {
+        return imageDataMapper.selectImageDatasListMenHu(imageData);
+    }
+
     /**
      * 新增附件信息
      * 

+ 2 - 2
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/ReportDetailServiceImpl.java

@@ -82,7 +82,7 @@ public class ReportDetailServiceImpl implements IReportDetailService
                  qrUnit = queryConfigQr.getQrUnit();
             }
             //返回二维码地址
-            String imagePath= QRCodeUtils.encode(reportDetail.getReportNumber(), null, RuoYiConfig.getUploadPath(), true);
+            String imagePath= QRCodeUtils.encode(reportDetail.getReportNumber(), null, RuoYiConfig.getUploadQrPath(), true);
             String verifyKey = UserConstants.QR_IMAGE + reportDetail.getReportNumber();
             redisCache.setCacheObject(verifyKey,imagePath,Integer.parseInt(qrTime),changeUnit(qrUnit));
             reportDetail.setQrPath(imagePath);
@@ -116,7 +116,7 @@ public class ReportDetailServiceImpl implements IReportDetailService
                     qrUnit = queryConfigQr.getQrUnit();
                 }
                 //返回二维码地址
-                String imagePath= QRCodeUtils.encode(reportDetail.getReportNumber(), null, RuoYiConfig.getUploadPath(), true);
+                String imagePath= QRCodeUtils.encode(reportDetail.getReportNumber(), null, RuoYiConfig.getUploadQrPath(), true);
                 String verifyKey = UserConstants.QR_IMAGE + reportDetail.getReportNumber();
                 redisCache.setCacheObject(verifyKey,imagePath,Integer.parseInt(qrTime),changeUnit(qrUnit));
                 reportDetail.setQrPath(imagePath);

+ 6 - 2
ruoyi-system/src/main/resources/mapper/system/ColumnNavigationBarMapper.xml

@@ -13,6 +13,7 @@
         <result property="isNavigationBar" column="is_navigation_bar"/>
         <result property="isTitle" column="is_title"/>
         <result property="isBottom" column="is_bottom"/>
+        <result property="openMode" column="open_mode"/>
         <result property="status" column="status"/>
         <result property="delFlag" column="del_flag"/>
         <result property="createBy" column="create_by"/>
@@ -22,7 +23,7 @@
     </resultMap>
 
     <sql id="selectColumnNavigationBarVo">
-        select column_id, parent_id, ancestors, column_name, order_num,is_navigation_bar,is_title,is_bottom, status, del_flag, create_by, create_time, update_by, update_time from column_navigation_bar
+        select column_id, parent_id, ancestors, column_name, order_num,is_navigation_bar,is_title,is_bottom,open_mode, status, del_flag, create_by, create_time, update_by, update_time from column_navigation_bar
     </sql>
 
     <select id="selectColumnNavigationBarList" parameterType="ColumnNavigationBar"
@@ -41,7 +42,7 @@
 
     <select id="selectColumnNavigationBarListMenHu" parameterType="ColumnNavigationBar"
             resultMap="ColumnNavigationBarResult">
-        select column_id, column_name from column_navigation_bar
+        select column_id, column_name,open_mode from column_navigation_bar
         where
         status = '0'
         and del_flag = 'N'
@@ -65,6 +66,7 @@
             <if test="isNavigationBar != null">is_navigation_bar,</if>
             <if test="isTitle != null">is_title,</if>
             <if test="isBottom != null">is_bottom,</if>
+            <if test="openMode != null">open_mode,</if>
             <if test="status != null">status,</if>
             <if test="delFlag != null">del_flag,</if>
             <if test="createBy != null">create_by,</if>
@@ -80,6 +82,7 @@
             <if test="isNavigationBar != null">#{isNavigationBar},</if>
             <if test="isTitle != null">#{isTitle},</if>
             <if test="isBottom != null">#{isBottom},</if>
+            <if test="openMode != null">#{openMode},</if>
             <if test="status != null">#{status},</if>
             <if test="delFlag != null">#{delFlag},</if>
             <if test="createBy != null">#{createBy},</if>
@@ -99,6 +102,7 @@
             <if test="isNavigationBar != null">is_navigation_bar = #{isNavigationBar},</if>
             <if test="isTitle != null">is_title = #{isTitle},</if>
             <if test="isBottom != null">is_bottom = #{isBottom},</if>
+            <if test="openMode != null">open_mode = #{openMode},</if>
             <if test="status != null">status = #{status},</if>
             <if test="delFlag != null">del_flag = #{delFlag},</if>
             <if test="createBy != null">create_by = #{createBy},</if>

+ 3 - 2
ruoyi-system/src/main/resources/mapper/system/ColumnNewsMapper.xml

@@ -29,7 +29,8 @@
 
     <select id="selectColumnNewsList" parameterType="ColumnNews" resultMap="ColumnNewsResult">
         <include refid="selectColumnNewsVo"/>
-        <where>
+        where
+        n.is_del = 'N'
             <if test="newsTitle != null  and newsTitle != ''">and n.news_title like concat('%', #{newsTitle}, '%')</if>
             <if test="newsContent != null  and newsContent != ''">and n.news_content like concat('%', #{newsContent},
                 '%')
@@ -38,7 +39,7 @@
             <if test="isDel != null  and isDel != ''">and n.is_del = #{isDel}</if>
             <if test="columnName != null  and columnName != ''">and c.column_name = #{columnName}</if>
             <if test="isTop != null  and isTop != ''">and n.is_top = #{isTop}</if>
-        </where>
+
         order by n.create_time,n.update_time
     </select>
 

+ 12 - 5
ruoyi-system/src/main/resources/mapper/system/ImageDataMapper.xml

@@ -26,16 +26,23 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     <select id="selectImageDatasList" parameterType="ImageDatas" resultMap="ImageDataResult">
         <include refid="selectImageDataVo"/>
        where
-            status = '0'
-            <if test="imageName != null  and imageName != ''"> and image_name like concat('%', #{imageName}, '%')</if>
-            <if test="type != null  and type != ''"> and type = #{type}</if>
-            <if test="isDel != null  and isDel != ''"> and is_del = #{isDel}</if>
+        is_del = 'N'
+        <if test="imageName != null  and imageName != ''"> and image_name like concat('%', #{imageName}, '%')</if>
+        <if test="type != null  and type != ''"> and type = #{type}</if>
+    </select>
 
+    <select id="selectImageDatasListMenHu" parameterType="ImageDatas" resultMap="ImageDataResult">
+        select image_name,image_name, image_content, image_introduce,type from image_data
+        where
+        is_del = 'N'
+        and status = '0'
+        <if test="imageName != null  and imageName != ''"> and image_name like concat('%', #{imageName}, '%')</if>
+        <if test="type != null  and type != ''"> and type = #{type}</if>
     </select>
     
     <select id="selectImageDatasByImageId" parameterType="Long" resultMap="ImageDataResult">
         <include refid="selectImageDataVo"/>
-        where image_id = #{imageId} and status = '0'
+        where image_id = #{imageId} and is_del = 'N'
     </select>
         
     <insert id="insertImageDatas" parameterType="ImageDatas" useGeneratedKeys="true" keyProperty="imageId">

+ 3 - 4
ruoyi-system/src/main/resources/mapper/system/InspectInforMapper.xml

@@ -29,7 +29,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 
     <select id="selectInspectInforList" parameterType="InspectInfor" resultMap="InspectInforResult">
         <include refid="selectInspectInforVo"/>
-        <where>  
+        where
+            is_del = 'N'
             <if test="sampleName != null  and sampleName != ''"> and sample_name like concat('%', #{sampleName}, '%')</if>
             <if test="sampleNum != null "> and sample_num = #{sampleNum}</if>
             <if test="normsModel != null  and normsModel != ''"> and norms_model = #{normsModel}</if>
@@ -39,13 +40,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="manufacturerPhone != null  and manufacturerPhone != ''"> and manufacturer_phone = #{manufacturerPhone}</if>
             <if test="inspectedName != null  and inspectedName != ''"> and inspected_name like concat('%', #{inspectedName}, '%')</if>
             <if test="inspectedPhone != null  and inspectedPhone != ''"> and inspected_phone = #{inspectedPhone}</if>
-            <if test="isDel != null  and isDel != ''"> and is_del = #{isDel}</if>
-        </where>
     </select>
     
     <select id="selectInspectInforByInspectId" parameterType="Long" resultMap="InspectInforResult">
         <include refid="selectInspectInforVo"/>
-        where inspect_id = #{inspectId}
+        where inspect_id = #{inspectId} and is_del = 'N'
     </select>
         
     <insert id="insertInspectInfor" parameterType="InspectInfor" useGeneratedKeys="true" keyProperty="inspectId">

+ 3 - 4
ruoyi-system/src/main/resources/mapper/system/QueryConfigMapper.xml

@@ -26,13 +26,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 
     <select id="selectQueryConfigList" parameterType="QueryConfig" resultMap="QueryConfigResult">
         <include refid="selectQueryConfigVo"/>
-        <where>  
+        where
+        is_del = 'N'
             <if test="qrTime != null  and qrTime != ''"> and qr_time = #{qrTime}</if>
             <if test="queryType != null  and queryType != ''"> and query_type = #{queryType}</if>
             <if test="queryMode != null  and queryMode != ''"> and query_mode = #{queryMode}</if>
             <if test="status != null  and status != ''"> and status = #{status}</if>
-            <if test="isDel != null  and isDel != ''"> and is_del = #{isDel}</if>
-        </where>
     </select>
 
     <select id="selectQueryConfig" parameterType="QueryConfig" resultMap="QueryConfigResult">
@@ -46,7 +45,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 
     <select id="selectQueryConfigByConfigId" parameterType="Long" resultMap="QueryConfigResult">
         <include refid="selectQueryConfigVo"/>
-        where config_id = #{configId}
+        where config_id = #{configId} and is_del = 'N'
     </select>
         
     <insert id="insertQueryConfig" parameterType="QueryConfig" useGeneratedKeys="true" keyProperty="configId">

+ 3 - 4
ruoyi-system/src/main/resources/mapper/system/ReportDetailMapper.xml

@@ -29,7 +29,8 @@
 
     <select id="selectReportDetailList" parameterType="ReportDetail" resultMap="ReportDetailResult">
         <include refid="selectReportDetailVo"/>
-        <where>
+        where
+        is_del = 'N'
             <if test="reportNumber != null  and reportNumber != ''">and report_number = #{reportNumber}</if>
             <if test="inspectId != null ">and inspect_id = #{inspectId}</if>
             <if test="sampleName != null  and sampleName != ''">and sample_name like concat('%', #{sampleName}, '%')
@@ -42,13 +43,11 @@
             </if>
             <if test="isQualify != null  and isQualify != ''">and is_qualify = #{isQualify}</if>
             <if test="reportUrl != null  and reportUrl != ''">and report_url = #{reportUrl}</if>
-            <if test="isDel != null  and isDel != ''">and is_del = #{isDel}</if>
-        </where>
     </select>
 
     <select id="selectReportDetailByReportId" parameterType="Long" resultMap="ReportDetailResult">
         <include refid="selectReportDetailVo"/>
-        where report_id = #{reportId}
+        where report_id = #{reportId} and is_del = 'N'
     </select>
 
     <insert id="insertReportDetail" parameterType="ReportDetail" useGeneratedKeys="true" keyProperty="reportId">

+ 38 - 38
ruoyi-system/src/main/resources/mapper/system/ReportQueryLogMapper.xml

@@ -1,28 +1,28 @@
 <?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">
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.ruoyi.system.mapper.ReportQueryLogMapper">
-    
+
     <resultMap type="ReportQueryLog" id="ReportQueryLogResult">
-        <result property="logId"    column="log_id"    />
-        <result property="reportNumber"    column="report_number"    />
-        <result property="queryName"    column="query_name"    />
-        <result property="queryPhone"    column="query_phone"    />
-        <result property="companyName"    column="company_name"    />
-        <result property="companyPhone"    column="company_phone"    />
-        <result property="queryType"    column="query_type"    />
-        <result property="queryMode"    column="query_mode"    />
-        <result property="queryNum"    column="query_num"    />
-        <result property="code"    column="code"    />
-        <result property="qrImage"    column="qr_image"    />
-        <result property="isSuccess"    column="is_success"    />
-        <result property="isDel"    column="is_del"    />
-        <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"    />
+        <result property="logId" column="log_id"/>
+        <result property="reportNumber" column="report_number"/>
+        <result property="queryName" column="query_name"/>
+        <result property="queryPhone" column="query_phone"/>
+        <result property="companyName" column="company_name"/>
+        <result property="companyPhone" column="company_phone"/>
+        <result property="queryType" column="query_type"/>
+        <result property="queryMode" column="query_mode"/>
+        <result property="queryNum" column="query_num"/>
+        <result property="code" column="code"/>
+        <result property="qrImage" column="qr_image"/>
+        <result property="isSuccess" column="is_success"/>
+        <result property="isDel" column="is_del"/>
+        <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="selectReportQueryLogVo">
@@ -31,24 +31,24 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 
     <select id="selectReportQueryLogList" parameterType="ReportQueryLog" resultMap="ReportQueryLogResult">
         <include refid="selectReportQueryLogVo"/>
-        <where>  
-            <if test="reportNumber != null  and reportNumber != ''"> and report_number = #{reportNumber}</if>
-            <if test="queryName != null  and queryName != ''"> and query_name like concat('%', #{queryName}, '%')</if>
-            <if test="queryPhone != null  and queryPhone != ''"> and query_phone = #{queryPhone}</if>
-            <if test="companyName != null  and companyName != ''"> and company_name like concat('%', #{companyName}, '%')</if>
-            <if test="companyPhone != null  and companyPhone != ''"> and company_phone = #{companyPhone}</if>
-            <if test="queryType != null  and queryType != ''"> and query_type = #{queryType}</if>
-            <if test="queryMode != null  and queryMode != ''"> and query_mode = #{queryMode}</if>
-            <if test="queryNum != null  and queryNum != ''"> and query_num = #{queryNum}</if>
-            <if test="isDel != null  and isDel != ''"> and is_del = #{isDel}</if>
-        </where>
+        where
+        is_del = 'N'
+        <if test="reportNumber != null  and reportNumber != ''">and report_number = #{reportNumber}</if>
+        <if test="queryName != null  and queryName != ''">and query_name like concat('%', #{queryName}, '%')</if>
+        <if test="queryPhone != null  and queryPhone != ''">and query_phone = #{queryPhone}</if>
+        <if test="companyName != null  and companyName != ''">and company_name like concat('%', #{companyName}, '%')
+        </if>
+        <if test="companyPhone != null  and companyPhone != ''">and company_phone = #{companyPhone}</if>
+        <if test="queryType != null  and queryType != ''">and query_type = #{queryType}</if>
+        <if test="queryMode != null  and queryMode != ''">and query_mode = #{queryMode}</if>
+        <if test="queryNum != null  and queryNum != ''">and query_num = #{queryNum}</if>
     </select>
-    
+
     <select id="selectReportQueryLogByLogId" parameterType="Long" resultMap="ReportQueryLogResult">
         <include refid="selectReportQueryLogVo"/>
-        where log_id = #{logId}
+        where log_id = #{logId} and is_del = 'N'
     </select>
-        
+
     <insert id="insertReportQueryLog" parameterType="ReportQueryLog" useGeneratedKeys="true" keyProperty="logId">
         insert into report_query_log
         <trim prefix="(" suffix=")" suffixOverrides=",">
@@ -69,7 +69,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="updateBy != null">update_by,</if>
             <if test="updateTime != null">update_time,</if>
             <if test="remark != null">remark,</if>
-         </trim>
+        </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="reportNumber != null and reportNumber != ''">#{reportNumber},</if>
             <if test="queryName != null and queryName != ''">#{queryName},</if>
@@ -88,7 +88,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="updateBy != null">#{updateBy},</if>
             <if test="updateTime != null">#{updateTime},</if>
             <if test="remark != null">#{remark},</if>
-         </trim>
+        </trim>
     </insert>
 
     <update id="updateReportQueryLog" parameterType="ReportQueryLog">
@@ -120,7 +120,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     </delete>
 
     <delete id="deleteReportQueryLogByLogIds" parameterType="String">
-        delete from report_query_log where log_id in 
+        delete from report_query_log where log_id in
         <foreach item="logId" collection="array" open="(" separator="," close=")">
             #{logId}
         </foreach>

+ 4 - 3
ruoyi-ui/package.json

@@ -1,8 +1,8 @@
 {
-  "name": "ruoyi",
+  "name": "boman",
   "version": "3.8.0",
-  "description": "若依管理系统",
-  "author": "若依",
+  "description": "印刷品质量检验平台",
+  "author": "博曼",
   "license": "MIT",
   "scripts": {
     "dev": "vue-cli-service serve",
@@ -52,6 +52,7 @@
     "quill": "1.3.7",
     "screenfull": "5.0.2",
     "sortablejs": "1.10.2",
+    "video.js": "^7.17.0",
     "vue": "2.6.12",
     "vue-count-to": "1.0.13",
     "vue-cropper": "0.5.5",

+ 44 - 0
ruoyi-ui/src/api/system/inspectInfor.js

@@ -0,0 +1,44 @@
+import request from '@/utils/request'
+
+// 查询送检信息列表
+export function listInspectInfor(query) {
+  return request({
+    url: '/system/inspectInfor/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询送检信息详细
+export function getInspectInfor(inspectId) {
+  return request({
+    url: '/system/inspectInfor/' + inspectId,
+    method: 'get'
+  })
+}
+
+// 新增送检信息
+export function addInspectInfor(data) {
+  return request({
+    url: '/system/inspectInfor',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改送检信息
+export function updateInspectInfor(data) {
+  return request({
+    url: '/system/inspectInfor',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除送检信息
+export function delInspectInfor(inspectId) {
+  return request({
+    url: '/system/inspectInfor/' + inspectId,
+    method: 'delete'
+  })
+}

+ 44 - 0
ruoyi-ui/src/api/system/queryLog.js

@@ -0,0 +1,44 @@
+import request from '@/utils/request'
+
+// 查询查询日志列表
+export function listQueryLog(query) {
+  return request({
+    url: '/system/queryLog/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询查询日志详细
+export function getQueryLog(logId) {
+  return request({
+    url: '/system/queryLog/' + logId,
+    method: 'get'
+  })
+}
+
+// 新增查询日志
+export function addQueryLog(data) {
+  return request({
+    url: '/system/queryLog',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改查询日志
+export function updateQueryLog(data) {
+  return request({
+    url: '/system/queryLog',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除查询日志
+export function delQueryLog(logId) {
+  return request({
+    url: '/system/queryLog/' + logId,
+    method: 'delete'
+  })
+}

+ 44 - 0
ruoyi-ui/src/api/system/reportDetail.js

@@ -0,0 +1,44 @@
+import request from '@/utils/request'
+
+// 查询报告信息列表
+export function listReportDetail(query) {
+  return request({
+    url: '/system/reportDetail/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询报告信息详细
+export function getReportDetail(reportId) {
+  return request({
+    url: '/system/reportDetail/' + reportId,
+    method: 'get'
+  })
+}
+
+// 新增报告信息
+export function addReportDetail(data) {
+  return request({
+    url: '/system/reportDetail',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改报告信息
+export function updateReportDetail(data) {
+  return request({
+    url: '/system/reportDetail',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除报告信息
+export function delReportDetail(reportId) {
+  return request({
+    url: '/system/reportDetail/' + reportId,
+    method: 'delete'
+  })
+}

+ 27 - 5
ruoyi-ui/src/views/system/column/index.vue

@@ -65,6 +65,11 @@
           <dict-tag :options="dict.type.sys_normal_disable" :value="scope.row.status"/>
         </template>
       </el-table-column>
+      <el-table-column prop="openMode" label="展开方式" width="100">
+        <template slot-scope="scope">
+          <dict-tag :options="dict.type.open_mode" :value="scope.row.openMode"/>
+        </template>
+      </el-table-column>
       <el-table-column label="创建时间" align="center" prop="createTime" width="200">
         <template slot-scope="scope">
           <span>{{ parseTime(scope.row.createTime) }}</span>
@@ -117,9 +122,10 @@
               <el-input-number v-model="form.orderNum" controls-position="right" :min="0" style="width: 100%;" />
             </el-form-item>
           </el-col>
+
           <el-col :span="12">
-            <el-form-item label="底部导航" prop="isBottom">
-              <el-select v-model="form.isBottom" placeholder="请选择底部导航" clearable  style="width: 100%;">
+            <el-form-item label="导航栏" prop="isNavigationBar">
+              <el-select v-model="form.isNavigationBar" placeholder="请选择导航栏" clearable style="width: 100%;">
                 <el-option
                   v-for="dict in dict.type.sys_yes_no"
                   :key="dict.value"
@@ -142,8 +148,8 @@
             </el-form-item>
           </el-col>
           <el-col :span="12">
-            <el-form-item label="导航栏" prop="isNavigationBar">
-              <el-select v-model="form.isNavigationBar" placeholder="请选择导航栏" clearable style="width: 100%;">
+            <el-form-item label="底部导航" prop="isBottom">
+              <el-select v-model="form.isBottom" placeholder="请选择底部导航" clearable  style="width: 100%;">
                 <el-option
                   v-for="dict in dict.type.sys_yes_no"
                   :key="dict.value"
@@ -153,6 +159,18 @@
               </el-select>
             </el-form-item>
           </el-col>
+          <el-col :span="12">
+            <el-form-item label="选择开展方式" prop="isTitle">
+              <el-select v-model="form.openMode" placeholder="请选择开展方式" clearable  style="width: 100%;">
+                <el-option
+                  v-for="dict in dict.type.open_mode"
+                  :key="dict.value"
+                  :label="dict.label"
+                  :value="dict.value"
+                />
+              </el-select>
+            </el-form-item>
+          </el-col>
 
           <el-col :span="12">
             <el-form-item label="栏目状态">
@@ -182,7 +200,7 @@ import "@riophae/vue-treeselect/dist/vue-treeselect.css";
 
 export default {
   name: "Column",
-  dicts: ['sys_normal_disable',"sys_yes_no"],
+  dicts: ['sys_normal_disable',"sys_yes_no","open_mode"],
   components: { Treeselect },
   data() {
     return {
@@ -227,6 +245,9 @@ export default {
         ],
         isNavigationBar: [
           { required: true, message: "请选择是否是导航栏", trigger: "blur" }
+        ],
+        openMode: [
+          { required: true, message: "请选择展开方式", trigger: "blur" }
         ]
       }
     };
@@ -269,6 +290,7 @@ export default {
         ancestors: null,
         deptName: null,
         orderNum: null,
+        openMode: "0",
         status: "0",
         delFlag: "N"
       };

+ 9 - 0
ruoyi-ui/src/views/system/friendLink/index.vue

@@ -165,6 +165,15 @@ export default {
       form: {},
       // 表单校验
       rules: {
+        linkName: [
+          { required: true, message: "友链名称不能为空", trigger: "blur" }
+        ],
+        linkSpace: [
+          { required: true, message: "友链地址不能为空", trigger: "blur" }
+        ],
+        status: [
+          { required: true, message: "友链状态不能为空", trigger: "blur" }
+        ]
       }
     };
   },

+ 401 - 0
ruoyi-ui/src/views/system/inspectInfor/index.vue

@@ -0,0 +1,401 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
+      <el-form-item label="样品名称" prop="sampleName">
+        <el-input
+          v-model="queryParams.sampleName"
+          placeholder="请输入样品名称"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="规格型号" prop="normsModel">
+        <el-input
+          v-model="queryParams.normsModel"
+          placeholder="请输入规格型号"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="检验项目" prop="testItems">
+        <el-select v-model="queryParams.testItems" placeholder="请选择检验项目" clearable size="small">
+          <el-option
+            v-for="dict in dict.type.Inspection_item"
+            :key="dict.value"
+            :label="dict.label"
+            :value="dict.value"
+          />
+        </el-select>
+      </el-form-item>
+      <el-form-item label="提供方式" prop="provideType">
+        <el-select v-model="queryParams.provideType" placeholder="请选择提供方式" clearable size="small">
+          <el-option
+            v-for="dict in dict.type.provision_mode"
+            :key="dict.value"
+            :label="dict.label"
+            :value="dict.value"
+          />
+        </el-select>
+      </el-form-item>
+      <el-form-item label="送检单位名称" prop="manufacturerName">
+        <el-input
+          v-model="queryParams.manufacturerName"
+          placeholder="请输入送检单位名称"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+
+      <el-form-item label="委托单位名称" prop="inspectedName">
+        <el-input
+          v-model="queryParams.inspectedName"
+          placeholder="请输入委托单位名称"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item>
+        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
+        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+      </el-form-item>
+    </el-form>
+
+    <el-row :gutter="10" class="mb8">
+<!--      <el-col :span="1.5">
+        <el-button
+          type="primary"
+          plain
+          icon="el-icon-plus"
+          size="mini"
+          @click="handleAdd"
+          v-hasPermi="['system:inspectInfor:add']"
+        >新增</el-button>
+      </el-col>-->
+      <el-col :span="1.5">
+        <el-button
+          type="success"
+          plain
+          icon="el-icon-edit"
+          size="mini"
+          :disabled="single"
+          @click="handleUpdate"
+          v-hasPermi="['system:inspectInfor:query']"
+        >查看</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="danger"
+          plain
+          icon="el-icon-delete"
+          size="mini"
+          :disabled="multiple"
+          @click="handleDelete"
+          v-hasPermi="['system:inspectInfor:remove']"
+        >删除</el-button>
+      </el-col>
+<!--      <el-col :span="1.5">
+        <el-button
+          type="warning"
+          plain
+          icon="el-icon-download"
+          size="mini"
+          @click="handleExport"
+          v-hasPermi="['system:inspectInfor:export']"
+        >导出</el-button>
+      </el-col>-->
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" :data="inspectInforList" @selection-change="handleSelectionChange">
+      <el-table-column type="selection" width="55" align="center" />
+      <el-table-column label="样品名称" align="center" prop="sampleName" />
+      <el-table-column label="样品数量" align="center" prop="sampleNum" />
+      <el-table-column label="规格型号" align="center" prop="normsModel" />
+      <el-table-column label="检验项目" align="center" prop="testItems">
+        <template slot-scope="scope">
+          <dict-tag :options="dict.type.Inspection_item" :value="scope.row.testItems"/>
+        </template>
+      </el-table-column>
+      <el-table-column label="提供方式" align="center" prop="provideType">
+        <template slot-scope="scope">
+          <dict-tag :options="dict.type.provision_mode" :value="scope.row.provideType"/>
+        </template>
+      </el-table-column>
+      <el-table-column label="送检单位名称" align="center" prop="manufacturerName" />
+      <el-table-column label="送检单位电话" align="center" prop="manufacturerPhone" />
+      <el-table-column label="委托单位名称" align="center" prop="inspectedName" />
+      <el-table-column label="委托单位电话" align="center" prop="inspectedPhone" />
+      <el-table-column label="备注" align="center" prop="remark" />
+      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+        <template slot-scope="scope">
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-edit"
+            @click="handleUpdate(scope.row)"
+            v-hasPermi="['system:inspectInfor:query']"
+          >查看</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-hasPermi="['system:inspectInfor:remove']"
+          >删除</el-button>
+        </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="500px" append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-width="120px">
+        <el-form-item label="样品名称" prop="sampleName" >
+          <el-input v-model="form.sampleName" placeholder="请输入样品名称" disabled />
+        </el-form-item>
+        <el-form-item label="样品数量" prop="sampleNum" >
+          <el-input v-model="form.sampleNum" placeholder="请输入样品数量" disabled/>
+        </el-form-item>
+        <el-form-item label="规格型号" prop="normsModel" >
+          <el-input v-model="form.normsModel" placeholder="请输入规格型号" disabled />
+        </el-form-item>
+        <el-form-item label="检验项目" prop="testItems" disabled>
+          <el-select v-model="form.testItems" placeholder="请选择检验项目" disabled>
+            <el-option
+              v-for="dict in dict.type.Inspection_item"
+              :key="dict.value"
+              :label="dict.label"
+:value="dict.value"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="提供方式" prop="provideType">
+          <el-select v-model="form.provideType" placeholder="请选择提供方式" disabled>
+            <el-option
+              v-for="dict in dict.type.provision_mode"
+              :key="dict.value"
+              :label="dict.label"
+:value="dict.value"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="送检单位名称" prop="manufacturerName">
+          <el-input v-model="form.manufacturerName" placeholder="请输入送检单位名称" disabled />
+        </el-form-item>
+        <el-form-item label="送检单位电话" prop="manufacturerPhone">
+          <el-input v-model="form.manufacturerPhone" placeholder="请输入送检单位电话" disabled />
+        </el-form-item>
+        <el-form-item label="委托单位名称" prop="inspectedName">
+          <el-input v-model="form.inspectedName" placeholder="请输入委托单位名称" disabled />
+        </el-form-item>
+        <el-form-item label="委托单位电话" prop="inspectedPhone">
+          <el-input v-model="form.inspectedPhone" placeholder="请输入委托单位电话" disabled />
+        </el-form-item>
+        <el-form-item label="备注" prop="remark">
+          <el-input v-model="form.remark" placeholder="请输入备注" disabled />
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="cancel">确 定</el-button>
+<!--        <el-button @click="cancel">取 消</el-button>-->
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import { listInspectInfor, getInspectInfor, delInspectInfor, addInspectInfor, updateInspectInfor } from "@/api/system/inspectInfor";
+
+export default {
+  name: "InspectInfor",
+  dicts: ['Inspection_item', 'provision_mode'],
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 送检信息表格数据
+      inspectInforList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        sampleName: null,
+        sampleNum: null,
+        normsModel: null,
+        testItems: null,
+        provideType: null,
+        manufacturerName: null,
+        manufacturerPhone: null,
+        inspectedName: null,
+        inspectedPhone: null,
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+/*        sampleName: [
+          { required: true, message: "样品名称不能为空", trigger: "blur" }
+        ],
+        sampleNum: [
+          { required: true, message: "样品数量不能为空", trigger: "blur" }
+        ],
+        normsModel: [
+          { required: true, message: "规格型号不能为空", trigger: "blur" }
+        ],
+        testItems: [
+          { required: true, message: "检验项目不能为空", trigger: "blur" }
+        ],
+        provideType: [
+          { required: true, message: "提供方式不能为空", trigger: "blur" }
+        ],
+        manufacturerName: [
+          { required: true, message: "送检单位名称不能为空", trigger: "blur" }
+        ],
+        manufacturerPhone: [
+          { required: true, message: "送检单位电话不能为空", trigger: "blur" }
+        ],
+        inspectedName: [
+          { required: true, message: "委托单位名称不能为空", trigger: "blur" }
+        ],
+        inspectedPhone: [
+          { required: true, message: "委托单位电话不能为空", trigger: "blur" }
+        ]*/
+      }
+    };
+  },
+  created() {
+    this.getList();
+  },
+  methods: {
+    /** 查询送检信息列表 */
+    getList() {
+      this.loading = true;
+      listInspectInfor(this.queryParams).then(response => {
+        this.inspectInforList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        inspectId: null,
+        sampleName: null,
+        sampleNum: null,
+        normsModel: null,
+        testItems: null,
+        provideType: null,
+        manufacturerName: null,
+        manufacturerPhone: null,
+        inspectedName: null,
+        inspectedPhone: null,
+        isDel: null,
+        createBy: null,
+        createTime: null,
+        updateBy: null,
+        updateTime: null,
+        remark: null
+      };
+      this.resetForm("form");
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.resetForm("queryForm");
+      this.handleQuery();
+    },
+    // 多选框选中数据
+    handleSelectionChange(selection) {
+      this.ids = selection.map(item => item.inspectId)
+      this.single = selection.length!==1
+      this.multiple = !selection.length
+    },
+    /** 新增按钮操作 */
+    handleAdd() {
+      this.reset();
+      this.open = true;
+      this.title = "添加送检信息";
+    },
+    /** 查看按钮操作 */
+    handleUpdate(row) {
+      this.reset();
+      const inspectId = row.inspectId || this.ids
+      getInspectInfor(inspectId).then(response => {
+        this.form = response.data;
+        this.open = true;
+        this.title = "查看送检信息";
+      });
+    },
+    /** 提交按钮 */
+    submitForm() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          if (this.form.inspectId != null) {
+            updateInspectInfor(this.form).then(response => {
+              this.$modal.msgSuccess("修改成功");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addInspectInfor(this.form).then(response => {
+              this.$modal.msgSuccess("新增成功");
+              this.open = false;
+              this.getList();
+            });
+          }
+        }
+      });
+    },
+    /** 删除按钮操作 */
+    handleDelete(row) {
+      const inspectIds = row.inspectId || this.ids;
+      this.$modal.confirm('是否确认删除送检信息编号为"' + inspectIds + '"的数据项?').then(function() {
+        return delInspectInfor(inspectIds);
+      }).then(() => {
+        this.getList();
+        this.$modal.msgSuccess("删除成功");
+      }).catch(() => {});
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      this.download('system/inspectInfor/export', {
+        ...this.queryParams
+      }, `inspectInfor_${new Date().getTime()}.xlsx`)
+    }
+  }
+};
+</script>

+ 26 - 10
ruoyi-ui/src/views/system/news/index.vue

@@ -20,7 +20,7 @@
           />
         </el-select>
       </el-form-item>
-      <el-form-item label="是否删除" prop="isDel">
+<!--      <el-form-item label="是否删除" prop="isDel">
         <el-select v-model="queryParams.status" placeholder="请选择是否删除" clearable size="small">
           <el-option
             v-for="dict in dict.type.is_del"
@@ -29,7 +29,7 @@
             :value="dict.value"
           />
         </el-select>
-      </el-form-item>
+      </el-form-item>-->
       <el-form-item>
         <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
         <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
@@ -86,13 +86,18 @@
       <el-table-column type="selection" width="55" align="center" />
       <el-table-column label="栏目名称" align="center" prop="columnName" />
       <el-table-column label="文章标题" align="center" prop="newsTitle" />
-      <el-table-column label="文章内容" align="center" prop="newsContent" />
+      <el-table-column label="文章内容" align="center" prop="newsContent" width="300px"/>
       <el-table-column label="文章状态" align="center" prop="status">
         <template slot-scope="scope">
           <dict-tag :options="dict.type.column_news" :value="scope.row.status"/>
         </template>
       </el-table-column>
-      <el-table-column label="原因" align="center" prop="reason" />
+      <el-table-column label="是否头条" align="center" prop="isTop">
+        <template slot-scope="scope">
+          <dict-tag :options="dict.type.sys_yes_no" :value="scope.row.sys_yes_no"/>
+        </template>
+      </el-table-column>
+      <el-table-column label="驳回原因" align="center" prop="reason" />
       <el-table-column label="备注" align="center" prop="remark" />
       <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
         <template slot-scope="scope">
@@ -102,7 +107,7 @@
             icon="el-icon-edit"
             @click="examine(scope.row)"
             v-hasPermi="['system:news:examine']"
-          >审核通过</el-button>
+          >通过审核</el-button>
           <el-button
             size="mini"
             type="text"
@@ -145,6 +150,16 @@
           <el-form-item label="选择栏目"  prop="columnId">
             <treeselect v-model="form.columnId" :options="columnOptions" :normalizer="normalizer" placeholder="选择栏目" />
           </el-form-item>
+        <el-form-item label="是否头条" prop="isTop">
+          <el-select v-model="form.isTop" placeholder="请选择">
+            <el-option
+              v-for="dict in dict.type.sys_yes_no"
+              :key="dict.value"
+              :label="dict.label"
+              :value="dict.value"
+            ></el-option>
+          </el-select>
+        </el-form-item>
         <el-form-item label="文章内容" prop="newsContent">
           <editor v-model="form.newsContent" :min-height="192"/>
         </el-form-item>
@@ -180,7 +195,7 @@ import "@riophae/vue-treeselect/dist/vue-treeselect.css";
 
 export default {
   name: "News",
-  dicts: ['column_news','is_del'],
+  dicts: ['column_news','is_del','sys_yes_no'],
   components: { Treeselect },
   data() {
     return {
@@ -224,6 +239,9 @@ export default {
         columnId: [
           { required: true, message: "所属栏目不能为空", trigger: "blur" }
         ],
+        isTop: [
+          { required: true, message: "是否头条不能为空", trigger: "blur" }
+        ],
         newsContent: [
           { required: true, message: "文章内容不能为空", trigger: "blur" }
         ],
@@ -257,6 +275,7 @@ export default {
         columnId: null,
         newsContent: null,
         status: "0",
+        isTop: null,
         isDel: null,
         reason: null,
         createBy: null,
@@ -337,7 +356,6 @@ export default {
 				},
 
       }).then(({ value }) => {
-		  console.log(234)
         this.boh.reason = value
         this.boh.newsId = newsId
 		// that.rejectNews(this.boh).then(response => {
@@ -350,13 +368,10 @@ export default {
       })
 	  .catch(() => {
 		  // this.nhde()
-		  console.log(12434)
       });
     },
 	nhde(){
-		console.log(3456)
 		rejectNews(this.boh).then(response => {
-			console.log(8764)
 		  this.$modal.msgSuccess("驳回成功");
 		  // this.open = false;
 		  this.getList();
@@ -373,6 +388,7 @@ export default {
               this.getList();
             });
           } else {
+            console.log(this.form,111)
             addNews(this.form).then(response => {
               this.$modal.msgSuccess("新增成功");
               this.open = false;

+ 8 - 18
ruoyi-ui/src/views/system/queryConfig/index.vue

@@ -30,16 +30,6 @@
           />
         </el-select>
       </el-form-item>
-      <el-form-item label="是否正常" prop="status">
-        <el-select v-model="queryParams.status" placeholder="请选择是否正常" clearable size="small">
-          <el-option
-            v-for="dict in dict.type.sys_yes_no"
-            :key="dict.value"
-            :label="dict.label"
-            :value="dict.value"
-          />
-        </el-select>
-      </el-form-item>
       <el-form-item>
         <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
         <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
@@ -85,13 +75,13 @@
     <el-table v-loading="loading" :data="queryConfigList" @selection-change="handleSelectionChange">
       <el-table-column type="selection" width="55" align="center" />
       <el-table-column label="查询次数" align="center" prop="queryNumber" />
+      <el-table-column label="二维码失效时间" align="center" prop="qrTime" />
       <el-table-column label="二维码失效单位" align="center" prop="qrUnit">
         <template slot-scope="scope">
           <dict-tag :options="dict.type.qr_unit" :value="scope.row.qrUnit"/>
         </template>
       </el-table-column>
-      <el-table-column label="二维码失效时间" align="center" prop="qrTime" />
-      <el-table-column label="查询主" align="center" prop="queryType">
+      <el-table-column label="查询主体" align="center" prop="queryType">
         <template slot-scope="scope">
           <dict-tag :options="dict.type.query_type" :value="scope.row.queryType"/>
         </template>
@@ -101,7 +91,7 @@
           <dict-tag :options="dict.type.query_mode" :value="scope.row.queryMode"/>
         </template>
       </el-table-column>
-      <el-table-column label="是否正常" align="center" prop="status">
+      <el-table-column label="是否启用" align="center" prop="status">
         <template slot-scope="scope">
           <dict-tag :options="dict.type.sys_yes_no" :value="scope.row.status"/>
         </template>
@@ -174,8 +164,8 @@
             ></el-option>
           </el-select>
         </el-form-item>
-        <el-form-item label="是否正常" prop="status">
-          <el-select v-model="form.status" placeholder="请选择是否正常">
+        <el-form-item label="是否启用" prop="status">
+          <el-select v-model="form.status" placeholder="请选择是否启用">
             <el-option
               v-for="dict in dict.type.sys_yes_no"
               :key="dict.value"
@@ -239,13 +229,13 @@ export default {
           { required: true, message: "查询次数不能为空", trigger: "blur" }
         ],
         queryType: [
-          { required: true, message: "查询主体(0个人 1单位)不能为空", trigger: "change" }
+          { required: true, message: "查询主体不能为空", trigger: "change" }
         ],
         queryMode: [
-          { required: true, message: "查询方式(0 二维码 1 粗略 2 详细查询)不能为空", trigger: "change" }
+          { required: true, message: "查询方式不能为空", trigger: "change" }
         ],
         status: [
-          { required: true, message: "是否正常不能为空", trigger: "change" }
+          { required: true, message: "是否启用不能为空", trigger: "change" }
         ],
       }
     };

+ 403 - 0
ruoyi-ui/src/views/system/queryLog/index.vue

@@ -0,0 +1,403 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
+      <el-form-item label="报告编号" prop="reportNumber">
+        <el-input
+          v-model="queryParams.reportNumber"
+          placeholder="请输入报告编号"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="查询人姓名" prop="queryName">
+        <el-input
+          v-model="queryParams.queryName"
+          placeholder="请输入查询人姓名"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="查询人手机号" prop="queryPhone">
+        <el-input
+          v-model="queryParams.queryPhone"
+          placeholder="请输入查询人手机号"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="单位名称" prop="companyName">
+        <el-input
+          v-model="queryParams.companyName"
+          placeholder="请输入单位名称"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="单位手机号" prop="companyPhone">
+        <el-input
+          v-model="queryParams.companyPhone"
+          placeholder="请输入单位手机号"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="查询主体" prop="queryType">
+        <el-select v-model="queryParams.queryType" placeholder="请选择查询主体" clearable size="small">
+          <el-option
+            v-for="dict in dict.type.query_type"
+            :key="dict.value"
+            :label="dict.label"
+            :value="dict.value"
+          />
+        </el-select>
+      </el-form-item>
+      <el-form-item label="查询方式" prop="queryMode">
+        <el-select v-model="queryParams.queryMode" placeholder="请选择查询方式" clearable size="small">
+          <el-option
+            v-for="dict in dict.type.query_mode"
+            :key="dict.value"
+            :label="dict.label"
+            :value="dict.value"
+          />
+        </el-select>
+      </el-form-item>
+      <el-form-item label="是否成功" prop="isSuccess">
+        <el-select v-model="queryParams.isSuccess" placeholder="请选择是否成功" clearable size="small">
+          <el-option
+            v-for="dict in dict.type.sys_yes_no"
+            :key="dict.value"
+            :label="dict.label"
+            :value="dict.value"
+          />
+        </el-select>
+      </el-form-item>
+      <el-form-item>
+        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
+        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+      </el-form-item>
+    </el-form>
+
+    <el-row :gutter="10" class="mb8">
+      <el-col :span="1.5">
+        <el-button
+          type="success"
+          plain
+          icon="el-icon-edit"
+          size="mini"
+          :disabled="single"
+          @click="handleUpdate"
+          v-hasPermi="['system:queryLog:edit']"
+        >查看</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="danger"
+          plain
+          icon="el-icon-delete"
+          size="mini"
+          :disabled="multiple"
+          @click="handleDelete"
+          v-hasPermi="['system:queryLog:remove']"
+        >删除</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="warning"
+          plain
+          icon="el-icon-download"
+          size="mini"
+          @click="handleExport"
+          v-hasPermi="['system:queryLog:export']"
+        >导出</el-button>
+      </el-col>
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" :data="queryLogList" @selection-change="handleSelectionChange">
+      <el-table-column type="selection" width="55" align="center" />
+      <el-table-column label="报告编号" align="center" prop="reportNumber" />
+      <el-table-column label="查询人姓名" align="center" prop="queryName" />
+      <el-table-column label="查询人手机号" align="center" prop="queryPhone" />
+      <el-table-column label="单位名称" align="center" prop="companyName" />
+      <el-table-column label="单位手机号" align="center" prop="companyPhone" />
+      <el-table-column label="查询主体" align="center" prop="queryType">
+        <template slot-scope="scope">
+          <dict-tag :options="dict.type.query_type" :value="scope.row.queryType"/>
+        </template>
+      </el-table-column>
+      <el-table-column label="查询方式" align="center" prop="queryMode">
+        <template slot-scope="scope">
+          <dict-tag :options="dict.type.query_mode" :value="scope.row.queryMode"/>
+        </template>
+      </el-table-column>
+      <el-table-column label="查询码" align="center" prop="queryNum" />
+      <el-table-column label="验证码" align="center" prop="code" />
+      <el-table-column label="二维码" align="center" prop="qrImage" />
+      <el-table-column label="是否成功" align="center" prop="isSuccess">
+        <template slot-scope="scope">
+          <dict-tag :options="dict.type.sys_yes_no" :value="scope.row.isSuccess"/>
+        </template>
+      </el-table-column>
+      <el-table-column label="备注" align="center" prop="remark" />
+      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+        <template slot-scope="scope">
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-edit"
+            @click="handleUpdate(scope.row)"
+            v-hasPermi="['system:queryLog:query']"
+          >查看</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-hasPermi="['system:queryLog:remove']"
+          >删除</el-button>
+        </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="500px" append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+        <el-form-item label="报告编号" prop="reportNumber">
+          <el-input v-model="form.reportNumber" placeholder="请输入报告编号" disabled/>
+        </el-form-item>
+        <el-form-item label="查询人姓名" prop="queryName">
+          <el-input v-model="form.queryName" placeholder="请输入查询人姓名" disabled />
+        </el-form-item>
+        <el-form-item label="查询人手机号" prop="queryPhone">
+          <el-input v-model="form.queryPhone" placeholder="请输入查询人手机号" disabled/>
+        </el-form-item>
+        <el-form-item label="单位名称" prop="companyName">
+          <el-input v-model="form.companyName" placeholder="请输入单位名称" disabled/>
+        </el-form-item>
+        <el-form-item label="单位手机号" prop="companyPhone">
+          <el-input v-model="form.companyPhone" placeholder="请输入单位手机号" disabled/>
+        </el-form-item>
+        <el-form-item label="查询主体" prop="queryType">
+          <el-select v-model="form.queryType" placeholder="请选择查询主体" disabled>
+            <el-option
+              v-for="dict in dict.type.query_type"
+              :key="dict.value"
+              :label="dict.label"
+:value="dict.value"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="查询方式" prop="queryMode">
+          <el-select v-model="form.queryMode" placeholder="请选择查询方式" disabled>
+            <el-option
+              v-for="dict in dict.type.query_mode"
+              :key="dict.value"
+              :label="dict.label"
+:value="dict.value"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="查询码" prop="queryNum">
+          <el-input v-model="form.queryNum" placeholder="请输入查询码" disabled />
+        </el-form-item>
+        <el-form-item label="验证码" prop="code">
+          <el-input v-model="form.code" placeholder="请输入验证码" disabled />
+        </el-form-item>
+        <el-form-item label="二维码">
+          <imageUpload v-model="form.qrImage"/>
+        </el-form-item>
+        <el-form-item label="是否成功" prop="isSuccess">
+          <el-select v-model="form.isSuccess" placeholder="请选择是否成功" disabled>
+            <el-option
+              v-for="dict in dict.type.sys_yes_no"
+              :key="dict.value"
+              :label="dict.label"
+:value="dict.value"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="备注" prop="remark">
+          <el-input v-model="form.remark" placeholder="请输入备注" disabled/>
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="cancel">确 定</el-button>
+<!--        <el-button @click="cancel">取 消</el-button>-->
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import { listQueryLog, getQueryLog, delQueryLog, addQueryLog, updateQueryLog } from "@/api/system/queryLog";
+
+export default {
+  name: "QueryLog",
+  dicts: ['query_type', 'query_mode', 'sys_yes_no', 'is_del'],
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 查询日志表格数据
+      queryLogList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        reportNumber: null,
+        queryName: null,
+        queryPhone: null,
+        companyName: null,
+        companyPhone: null,
+        queryType: null,
+        queryMode: null,
+        isSuccess: null,
+        isDel: null,
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+      }
+    };
+  },
+  created() {
+    this.getList();
+  },
+  methods: {
+    /** 查询查询日志列表 */
+    getList() {
+      this.loading = true;
+      listQueryLog(this.queryParams).then(response => {
+        this.queryLogList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        logId: null,
+        reportNumber: null,
+        queryName: null,
+        queryPhone: null,
+        companyName: null,
+        companyPhone: null,
+        queryType: null,
+        queryMode: null,
+        queryNum: null,
+        code: null,
+        qrImage: null,
+        isSuccess: null,
+        isDel: null,
+        createBy: null,
+        createTime: null,
+        updateBy: null,
+        updateTime: null,
+        remark: null
+      };
+      this.resetForm("form");
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.resetForm("queryForm");
+      this.handleQuery();
+    },
+    // 多选框选中数据
+    handleSelectionChange(selection) {
+      this.ids = selection.map(item => item.logId)
+      this.single = selection.length!==1
+      this.multiple = !selection.length
+    },
+    /** 新增按钮操作 */
+    handleAdd() {
+      this.reset();
+      this.open = true;
+      this.title = "添加查询日志";
+    },
+    /** 查看按钮操作 */
+    handleUpdate(row) {
+      this.reset();
+      const logId = row.logId || this.ids
+      getQueryLog(logId).then(response => {
+        this.form = response.data;
+        this.open = true;
+        this.title = "查看查询日志";
+      });
+    },
+    /** 提交按钮 */
+    submitForm() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          if (this.form.logId != null) {
+            updateQueryLog(this.form).then(response => {
+              this.$modal.msgSuccess("修改成功");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addQueryLog(this.form).then(response => {
+              this.$modal.msgSuccess("新增成功");
+              this.open = false;
+              this.getList();
+            });
+          }
+        }
+      });
+    },
+    /** 删除按钮操作 */
+    handleDelete(row) {
+      const logIds = row.logId || this.ids;
+      this.$modal.confirm('是否确认删除查询日志编号为"' + logIds + '"的数据项?').then(function() {
+        return delQueryLog(logIds);
+      }).then(() => {
+        this.getList();
+        this.$modal.msgSuccess("删除成功");
+      }).catch(() => {});
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      this.download('system/queryLog/export', {
+        ...this.queryParams
+      }, `queryLog_${new Date().getTime()}.xlsx`)
+    }
+  }
+};
+</script>

+ 350 - 0
ruoyi-ui/src/views/system/reportDetail/index.vue

@@ -0,0 +1,350 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="100px">
+      <el-form-item label="报告编号" prop="reportNumber">
+        <el-input
+          v-model="queryParams.reportNumber"
+          placeholder="请输入报告编号"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="样品名称" prop="sampleName">
+        <el-input
+          v-model="queryParams.sampleName"
+          placeholder="请输入样品名称"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="送检单位名称" prop="inspectName">
+        <el-input
+          v-model="queryParams.inspectName"
+          placeholder="请输入送检单位名称"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="委托单位名称" prop="entrustName">
+        <el-input
+          v-model="queryParams.entrustName"
+          placeholder="请输入委托单位名称"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="是否合格" prop="isQualify">
+        <el-select v-model="queryParams.isQualify" placeholder="请选择是否合格" clearable size="small">
+          <el-option
+            v-for="dict in dict.type.sys_yes_no"
+            :key="dict.value"
+            :label="dict.label"
+            :value="dict.value"
+          />
+        </el-select>
+      </el-form-item>
+      <el-form-item>
+        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
+        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+      </el-form-item>
+    </el-form>
+
+    <el-row :gutter="10" class="mb8">
+      <el-col :span="1.5">
+        <el-button
+          type="success"
+          plain
+          icon="el-icon-edit"
+          size="mini"
+          :disabled="single"
+          @click="handleUpdate"
+          v-hasPermi="['system:reportDetail:edit']"
+        >修改</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="danger"
+          plain
+          icon="el-icon-delete"
+          size="mini"
+          :disabled="multiple"
+          @click="handleDelete"
+          v-hasPermi="['system:reportDetail:remove']"
+        >删除</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="warning"
+          plain
+          icon="el-icon-download"
+          size="mini"
+          @click="handleExport"
+          v-hasPermi="['system:reportDetail:export']"
+        >导出</el-button>
+      </el-col>
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" :data="reportDetailList" @selection-change="handleSelectionChange">
+      <el-table-column type="selection" width="55" align="center" />
+      <el-table-column label="报告ID" align="center" prop="reportId" />
+      <el-table-column label="报告编号" align="center" prop="reportNumber" />
+      <el-table-column label="样品名称" align="center" prop="sampleName" />
+      <el-table-column label="送检单位名称" align="center" prop="inspectName" />
+      <el-table-column label="委托单位名称" align="center" prop="entrustName" />
+      <el-table-column label="是否合格" align="center" prop="isQualify">
+        <template slot-scope="scope">
+          <dict-tag :options="dict.type.sys_yes_no" :value="scope.row.isQualify"/>
+        </template>
+      </el-table-column>
+      <el-table-column label="报告图片" align="center" prop="reportUrl" />
+      <el-table-column label="二维码地址" align="center" prop="qrPath" />
+      <el-table-column label="是否删除" align="center" prop="isDel">
+        <template slot-scope="scope">
+          <dict-tag :options="dict.type.is_del" :value="scope.row.isDel"/>
+        </template>
+      </el-table-column>
+      <el-table-column label="备注" align="center" prop="remark" />
+      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+        <template slot-scope="scope">
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-edit"
+            @click="handleUpdate(scope.row)"
+            v-hasPermi="['system:reportDetail:edit']"
+          >修改</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-hasPermi="['system:reportDetail:remove']"
+          >删除</el-button>
+        </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="500px" append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+        <el-form-item label="报告编号" prop="reportNumber">
+          <el-input v-model="form.reportNumber" placeholder="请输入报告编号" />
+        </el-form-item>
+        <el-form-item label="送检ID" prop="inspectId">
+          <el-input v-model="form.inspectId" placeholder="请输入送检ID" />
+        </el-form-item>
+        <el-form-item label="样品名称" prop="sampleName">
+          <el-input v-model="form.sampleName" placeholder="请输入样品名称" />
+        </el-form-item>
+        <el-form-item label="送检单位名称" prop="inspectName">
+          <el-input v-model="form.inspectName" placeholder="请输入送检单位名称" />
+        </el-form-item>
+        <el-form-item label="委托单位名称" prop="entrustName">
+          <el-input v-model="form.entrustName" placeholder="请输入委托单位名称" />
+        </el-form-item>
+        <el-form-item label="是否合格" prop="isQualify">
+          <el-select v-model="form.isQualify" placeholder="请选择是否合格">
+            <el-option
+              v-for="dict in dict.type.sys_yes_no"
+              :key="dict.value"
+              :label="dict.label"
+:value="dict.value"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="报告图片" prop="reportUrl">
+          <el-input v-model="form.reportUrl" placeholder="请输入报告图片" />
+        </el-form-item>
+        <el-form-item label="二维码地址" prop="qrPath">
+          <el-input v-model="form.qrPath" placeholder="请输入二维码地址" />
+        </el-form-item>
+        <el-form-item label="备注" prop="remark">
+          <el-input v-model="form.remark" placeholder="请输入备注" />
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitForm">确 定</el-button>
+        <el-button @click="cancel">取 消</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import { listReportDetail, getReportDetail, delReportDetail, addReportDetail, updateReportDetail } from "@/api/system/reportDetail";
+
+export default {
+  name: "ReportDetail",
+  dicts: ['sys_yes_no', 'is_del'],
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 报告信息表格数据
+      reportDetailList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        reportNumber: null,
+        sampleName: null,
+        inspectName: null,
+        entrustName: null,
+        isQualify: null,
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+        reportNumber: [
+          { required: true, message: "报告编号不能为空", trigger: "blur" }
+        ],
+        sampleName: [
+          { required: true, message: "样品名称不能为空", trigger: "blur" }
+        ],
+        isQualify: [
+          { required: true, message: "是否合格不能为空", trigger: "change" }
+        ],
+        reportUrl: [
+          { required: true, message: "报告图片不能为空", trigger: "blur" }
+        ],
+      }
+    };
+  },
+  created() {
+    this.getList();
+  },
+  methods: {
+    /** 查询报告信息列表 */
+    getList() {
+      this.loading = true;
+      listReportDetail(this.queryParams).then(response => {
+        this.reportDetailList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        reportId: null,
+        reportNumber: null,
+        inspectId: null,
+        sampleName: null,
+        inspectName: null,
+        entrustName: null,
+        isQualify: null,
+        reportUrl: null,
+        qrPath: null,
+        isDel: null,
+        createBy: null,
+        createTime: null,
+        updateBy: null,
+        updateTime: null,
+        remark: null
+      };
+      this.resetForm("form");
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.resetForm("queryForm");
+      this.handleQuery();
+    },
+    // 多选框选中数据
+    handleSelectionChange(selection) {
+      this.ids = selection.map(item => item.reportId)
+      this.single = selection.length!==1
+      this.multiple = !selection.length
+    },
+    /** 新增按钮操作 */
+    handleAdd() {
+      this.reset();
+      this.open = true;
+      this.title = "添加报告信息";
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      this.reset();
+      const reportId = row.reportId || this.ids
+      getReportDetail(reportId).then(response => {
+        this.form = response.data;
+        this.open = true;
+        this.title = "修改报告信息";
+      });
+    },
+    /** 提交按钮 */
+    submitForm() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          if (this.form.reportId != null) {
+            updateReportDetail(this.form).then(response => {
+              this.$modal.msgSuccess("修改成功");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addReportDetail(this.form).then(response => {
+              this.$modal.msgSuccess("新增成功");
+              this.open = false;
+              this.getList();
+            });
+          }
+        }
+      });
+    },
+    /** 删除按钮操作 */
+    handleDelete(row) {
+      const reportIds = row.reportId || this.ids;
+      this.$modal.confirm('是否确认删除报告信息编号为"' + reportIds + '"的数据项?').then(function() {
+        return delReportDetail(reportIds);
+      }).then(() => {
+        this.getList();
+        this.$modal.msgSuccess("删除成功");
+      }).catch(() => {});
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      this.download('system/reportDetail/export', {
+        ...this.queryParams
+      }, `reportDetail_${new Date().getTime()}.xlsx`)
+    }
+  }
+};
+</script>

+ 1 - 1
ruoyi-ui/vue.config.js

@@ -9,7 +9,7 @@ function resolve(dir) {
 
 const CompressionPlugin = require('compression-webpack-plugin')
 
-const name = defaultSettings.title || '若依管理系统' // 网页标题
+const name = defaultSettings.title || '印刷品质量检验平台' // 网页标题
 
 const port = process.env.port || process.env.npm_config_port || 8090 // 端口