소스 검색

网站质量检查结果功能完善联调测试通过

Jack 10 달 전
부모
커밋
46eb5d633f
20개의 변경된 파일1145개의 추가작업 그리고 29개의 파일을 삭제
  1. 36 29
      .idea/workspace.xml
  2. 62 0
      jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/websitequality/controller/OkkiWebsiteQualityApiController.java
  3. 162 0
      jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/websitequality/controller/OkkiWebsiteQualityController.java
  4. 120 0
      jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/websitequality/entity/OkkiWebsiteQuality.java
  5. 14 0
      jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/websitequality/mapper/OkkiWebsiteQualityMapper.java
  6. 5 0
      jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/websitequality/mapper/xml/OkkiWebsiteQualityMapper.xml
  7. 11 0
      jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/websitequality/param/DomainStatusParam.java
  8. 11 0
      jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/websitequality/param/GaStatusParam.java
  9. 11 0
      jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/websitequality/param/InquiryEmailStatusParam.java
  10. 11 0
      jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/websitequality/param/LoadSpeedStatusParam.java
  11. 29 0
      jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/websitequality/param/OkkiWebsiteQualityParam.java
  12. 11 0
      jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/websitequality/param/SitemapStatusParam.java
  13. 14 0
      jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/websitequality/service/IOkkiWebsiteQualityService.java
  14. 19 0
      jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/websitequality/service/impl/OkkiWebsiteQualityServiceImpl.java
  15. 64 0
      jeecgboot-vue3/src/views/okki/websitequality/OkkiWebsiteQuality.api.ts
  16. 217 0
      jeecgboot-vue3/src/views/okki/websitequality/OkkiWebsiteQuality.data.ts
  17. 186 0
      jeecgboot-vue3/src/views/okki/websitequality/OkkiWebsiteQualityList.vue
  18. 26 0
      jeecgboot-vue3/src/views/okki/websitequality/V20240515_1__menu_insert_OkkiWebsiteQuality.sql
  19. 70 0
      jeecgboot-vue3/src/views/okki/websitequality/components/OkkiWebsiteQualityForm.vue
  20. 66 0
      jeecgboot-vue3/src/views/okki/websitequality/components/OkkiWebsiteQualityModal.vue

+ 36 - 29
.idea/workspace.xml

@@ -4,30 +4,27 @@
     <option name="autoReloadType" value="SELECTIVE" />
   </component>
   <component name="ChangeListManager">
-    <list default="true" id="ed63665b-8c5d-41ac-a75b-7a0cfc2d6ec5" name="Default Changelist" comment="新增showlist功能">
-      <change afterPath="$PROJECT_DIR$/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/showlist/param/AdvantageParam.java" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/showlist/param/BlockParam.java" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/showlist/param/BlogParam.java" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/showlist/param/ButtonParam.java" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/showlist/param/FaqListParam.java" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/showlist/param/FaqParam.java" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/showlist/param/HighlightParam.java" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/showlist/param/KeywordListParam.java" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/showlist/param/KeywordSeriesParam.java" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/showlist/param/KeywordsParam.java" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/showlist/param/LayoutParam.java" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/showlist/param/OverviewParam.java" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/showlist/param/ProductParam.java" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/showlist/param/PushShowlistParam.java" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/showlist/param/ReviewListParam.java" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/showlist/param/ReviewParam.java" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/showlist/param/TdkParam.java" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/inspectionProfiles/Project_Default.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/inspectionProfiles/Project_Default.xml" afterDir="false" />
+    <list default="true" id="ed63665b-8c5d-41ac-a75b-7a0cfc2d6ec5" name="Default Changelist" comment="showlist功能完善联调测试通过">
+      <change afterPath="$PROJECT_DIR$/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/websitequality/controller/OkkiWebsiteQualityApiController.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/websitequality/controller/OkkiWebsiteQualityController.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/websitequality/entity/OkkiWebsiteQuality.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/websitequality/mapper/OkkiWebsiteQualityMapper.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/websitequality/mapper/xml/OkkiWebsiteQualityMapper.xml" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/websitequality/param/DomainStatusParam.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/websitequality/param/GaStatusParam.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/websitequality/param/InquiryEmailStatusParam.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/websitequality/param/LoadSpeedStatusParam.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/websitequality/param/OkkiWebsiteQualityParam.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/websitequality/param/SitemapStatusParam.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/websitequality/service/IOkkiWebsiteQualityService.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/websitequality/service/impl/OkkiWebsiteQualityServiceImpl.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/jeecgboot-vue3/src/views/okki/websitequality/OkkiWebsiteQuality.api.ts" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/jeecgboot-vue3/src/views/okki/websitequality/OkkiWebsiteQuality.data.ts" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/jeecgboot-vue3/src/views/okki/websitequality/OkkiWebsiteQualityList.vue" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/jeecgboot-vue3/src/views/okki/websitequality/V20240515_1__menu_insert_OkkiWebsiteQuality.sql" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/jeecgboot-vue3/src/views/okki/websitequality/components/OkkiWebsiteQualityForm.vue" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/jeecgboot-vue3/src/views/okki/websitequality/components/OkkiWebsiteQualityModal.vue" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/showlist/entity/OkkiShowlist.java" beforeDir="false" afterPath="$PROJECT_DIR$/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/showlist/entity/OkkiShowlist.java" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/showlist/service/impl/OkkiShowlistServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/showlist/service/impl/OkkiShowlistServiceImpl.java" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/jeecg-boot/jeecg-module-system/jeecg-system-start/src/main/resources/application-dev.yml" beforeDir="false" afterPath="$PROJECT_DIR$/jeecg-boot/jeecg-module-system/jeecg-system-start/src/main/resources/application-dev.yml" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/jeecg-boot/jeecg-module-system/jeecg-system-start/src/main/resources/application-prod.yml" beforeDir="false" afterPath="$PROJECT_DIR$/jeecg-boot/jeecg-module-system/jeecg-system-start/src/main/resources/application-prod.yml" afterDir="false" />
     </list>
     <option name="SHOW_DIALOG" value="false" />
     <option name="HIGHLIGHT_CONFLICTS" value="true" />
@@ -92,7 +89,7 @@
     "Spring Boot.JeecgSystemApplication.executor": "Debug",
     "git-widget-placeholder": "master",
     "kotlin-language-version-configured": "true",
-    "last_opened_file_path": "D:/ProjectsCode/okki-oms/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/showlist/entity",
+    "last_opened_file_path": "D:/ProjectsCode/okki-oms/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/websitequality",
     "node.js.detected.package.eslint": "true",
     "node.js.detected.package.stylelint": "true",
     "node.js.detected.package.tslint": "true",
@@ -118,13 +115,14 @@
   </component>
   <component name="RecentsManager">
     <key name="CopyFile.RECENT_KEYS">
+      <recent name="D:\ProjectsCode\okki-oms\jeecg-boot\jeecg-module-system\jeecg-system-biz\src\main\java\org\jeecg\modules\okki\websitequality" />
+      <recent name="D:\ProjectsCode\okki-oms\jeecgboot-vue3\src\views\okki\websitequality" />
       <recent name="D:\ProjectsCode\okki-oms\jeecg-boot\jeecg-module-system\jeecg-system-biz\src\main\java\org\jeecg\modules\okki\showlist\entity" />
       <recent name="D:\ProjectsCode\okki-oms\jeecg-boot\jeecg-module-system\jeecg-system-biz\src\main\java\org\jeecg\modules\okki\showlist" />
       <recent name="D:\ProjectsCode\okki-oms\jeecgboot-vue3\src\views\okki\showlist" />
-      <recent name="D:\ProjectsCode\okki-oms\jeecg-boot\jeecg-module-system\jeecg-system-biz\src\main\java\org\jeecg\modules\api\okki\showlist" />
-      <recent name="D:\ProjectsCode\okki-oms\jeecg-boot\jeecg-module-system\jeecg-system-biz\src\main\java\org\jeecg\modules\api\okki\site\mapper\xml" />
     </key>
     <key name="CopyClassDialog.RECENTS_KEY">
+      <recent name="org.jeecg.modules.okki.websitequality.param" />
       <recent name="org.jeecg.modules.api.okki.site.service" />
       <recent name="org.jeecg.modules.api.okki.site.mapper" />
       <recent name="org.jeecg.modules.api.okki.site.entity" />
@@ -184,7 +182,7 @@
       <workItem from="1714957905106" duration="25834000" />
       <workItem from="1715333910993" duration="2376000" />
       <workItem from="1715391022847" duration="21115000" />
-      <workItem from="1715648405916" duration="33106000" />
+      <workItem from="1715648405916" duration="39732000" />
     </task>
     <task id="LOCAL-00001" summary="增加添加站点对外接口">
       <option name="closed" value="true" />
@@ -322,7 +320,15 @@
       <option name="project" value="LOCAL" />
       <updated>1715678301632</updated>
     </task>
-    <option name="localTasksCounter" value="18" />
+    <task id="LOCAL-00018" summary="showlist功能完善联调测试通过">
+      <option name="closed" value="true" />
+      <created>1715766634432</created>
+      <option name="number" value="00018" />
+      <option name="presentableId" value="LOCAL-00018" />
+      <option name="project" value="LOCAL" />
+      <updated>1715766634432</updated>
+    </task>
+    <option name="localTasksCounter" value="19" />
     <servers />
   </component>
   <component name="TypeScriptGeneratedFilesManager">
@@ -343,7 +349,8 @@
     <MESSAGE value="增加添加站点对外接口" />
     <MESSAGE value="新增状态变更记录" />
     <MESSAGE value="新增showlist功能" />
-    <option name="LAST_COMMIT_MESSAGE" value="新增showlist功能" />
+    <MESSAGE value="showlist功能完善联调测试通过" />
+    <option name="LAST_COMMIT_MESSAGE" value="showlist功能完善联调测试通过" />
   </component>
   <component name="XSLT-Support.FileAssociations.UIState">
     <expand />

+ 62 - 0
jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/websitequality/controller/OkkiWebsiteQualityApiController.java

@@ -0,0 +1,62 @@
+package org.jeecg.modules.okki.websitequality.controller;
+
+import lombok.extern.slf4j.Slf4j;
+import org.apache.http.HttpHeaders;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.aspect.annotation.AutoLog;
+import org.jeecg.modules.okki.websitequality.entity.OkkiWebsiteQuality;
+import org.jeecg.modules.okki.websitequality.param.OkkiWebsiteQualityParam;
+import org.jeecg.modules.okki.websitequality.service.IOkkiWebsiteQualityService;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Arrays;
+import java.util.Date;
+
+@RestController
+@Slf4j
+@RequestMapping("/website")
+public class OkkiWebsiteQualityApiController {
+
+    @Resource
+    private IOkkiWebsiteQualityService okkiWebsiteQualityService;
+    /**
+     *   小满推送数据
+     *
+     * @param okkiWebsiteQualityParam
+     * @return
+     */
+    @AutoLog(value = "网站质量-小满推送数据")
+    @PostMapping(value = "/websiteQuality")
+    public Result<String> add(@RequestBody OkkiWebsiteQualityParam okkiWebsiteQualityParam, @RequestHeader(HttpHeaders.AUTHORIZATION) String authorization) throws ParseException {
+        log.info("请求参数 param" + okkiWebsiteQualityParam.toString() + "authorization" + authorization);
+        String Authorization = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6ImRlYW4iLCJleHAiOjE3MTQ0NjU5Njl9.QdCBYR8mioXcKGi1n5RdMQ5RbJHCSGbE8dkdwYuOXh4";
+        if (!authorization.equals(Authorization)) {
+            return Result.error("sign 验证不通过");
+        }
+        OkkiWebsiteQuality okkiWebsiteQuality = new OkkiWebsiteQuality();
+        okkiWebsiteQuality.setWebsiteQualityId(okkiWebsiteQualityParam.getId());
+        okkiWebsiteQuality.setSiteId(okkiWebsiteQualityParam.getSite_id());
+        okkiWebsiteQuality.setClientId(okkiWebsiteQualityParam.getClient_id());
+        okkiWebsiteQuality.setSitemapStatusCode(okkiWebsiteQualityParam.getSitemap_status().getCode());
+        okkiWebsiteQuality.setSitemapStatusProblems(Arrays.toString(okkiWebsiteQualityParam.getSitemap_status().getProblems()));
+        okkiWebsiteQuality.setGaStatusCode(okkiWebsiteQualityParam.getGa_status().getCode());
+        okkiWebsiteQuality.setGaStatusProblems(Arrays.toString(okkiWebsiteQualityParam.getGa_status().getProblems()));
+        okkiWebsiteQuality.setDomainStatusCode(okkiWebsiteQualityParam.getSitemap_status().getCode());
+        okkiWebsiteQuality.setDomainStatusProblems(Arrays.toString(okkiWebsiteQualityParam.getDomain_status().getProblems()));
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        Date date = null;
+        date = sdf.parse(okkiWebsiteQualityParam.getCreate_time());
+        okkiWebsiteQuality.setCreateTime(date);
+        okkiWebsiteQuality.setInquiryEmailStatusCode(okkiWebsiteQualityParam.getInquiry_email_status().getCode());
+        okkiWebsiteQuality.setInquiryEmailStatusProblems(Arrays.toString(okkiWebsiteQualityParam.getInquiry_email_status().getProblems()));
+        okkiWebsiteQuality.setProgress(okkiWebsiteQualityParam.getProgress());
+        okkiWebsiteQuality.setLoadTime(okkiWebsiteQualityParam.getLoad_time());
+        okkiWebsiteQuality.setLoadSpeedStatusCode(okkiWebsiteQualityParam.getLoad_speed_status().getCode());
+        okkiWebsiteQuality.setLoadSpeedStatusProblems(Arrays.toString(okkiWebsiteQualityParam.getLoad_speed_status().getProblems()));
+        okkiWebsiteQualityService.save(okkiWebsiteQuality);
+        return Result.OK("添加成功!");
+    }
+}

+ 162 - 0
jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/websitequality/controller/OkkiWebsiteQualityController.java

@@ -0,0 +1,162 @@
+package org.jeecg.modules.okki.websitequality.controller;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.aspect.annotation.AutoLog;
+import org.jeecg.common.system.base.controller.JeecgController;
+import org.jeecg.common.system.query.QueryGenerator;
+import org.jeecg.modules.okki.websitequality.entity.OkkiWebsiteQuality;
+import org.jeecg.modules.okki.websitequality.service.IOkkiWebsiteQualityService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.servlet.ModelAndView;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.util.Arrays;
+
+ /**
+ * @Description: 网站质量
+ * @Author: jeecg-boot
+ * @Date:   2024-05-15
+ * @Version: V1.0
+ */
+@Api(tags="网站质量")
+@RestController
+@RequestMapping("/websitequality/okkiWebsiteQuality")
+@Slf4j
+public class OkkiWebsiteQualityController extends JeecgController<OkkiWebsiteQuality, IOkkiWebsiteQualityService> {
+	@Autowired
+	private IOkkiWebsiteQualityService okkiWebsiteQualityService;
+	
+	/**
+	 * 分页列表查询
+	 *
+	 * @param okkiWebsiteQuality
+	 * @param pageNo
+	 * @param pageSize
+	 * @param req
+	 * @return
+	 */
+	//@AutoLog(value = "网站质量-分页列表查询")
+	@ApiOperation(value="网站质量-分页列表查询", notes="网站质量-分页列表查询")
+	@GetMapping(value = "/list")
+	public Result<IPage<OkkiWebsiteQuality>> queryPageList(OkkiWebsiteQuality okkiWebsiteQuality,
+								   @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+								   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+								   HttpServletRequest req) {
+		QueryWrapper<OkkiWebsiteQuality> queryWrapper = QueryGenerator.initQueryWrapper(okkiWebsiteQuality, req.getParameterMap());
+		Page<OkkiWebsiteQuality> page = new Page<OkkiWebsiteQuality>(pageNo, pageSize);
+		IPage<OkkiWebsiteQuality> pageList = okkiWebsiteQualityService.page(page, queryWrapper);
+		return Result.OK(pageList);
+	}
+	
+	/**
+	 *   添加
+	 *
+	 * @param okkiWebsiteQuality
+	 * @return
+	 */
+	@AutoLog(value = "网站质量-添加")
+	@ApiOperation(value="网站质量-添加", notes="网站质量-添加")
+	@RequiresPermissions("websitequality:okki_website_quality:add")
+	@PostMapping(value = "/add")
+	public Result<String> add(@RequestBody OkkiWebsiteQuality okkiWebsiteQuality) {
+		okkiWebsiteQualityService.save(okkiWebsiteQuality);
+		return Result.OK("添加成功!");
+	}
+	
+	/**
+	 *  编辑
+	 *
+	 * @param okkiWebsiteQuality
+	 * @return
+	 */
+	@AutoLog(value = "网站质量-编辑")
+	@ApiOperation(value="网站质量-编辑", notes="网站质量-编辑")
+	@RequiresPermissions("websitequality:okki_website_quality:edit")
+	@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
+	public Result<String> edit(@RequestBody OkkiWebsiteQuality okkiWebsiteQuality) {
+		okkiWebsiteQualityService.updateById(okkiWebsiteQuality);
+		return Result.OK("编辑成功!");
+	}
+	
+	/**
+	 *   通过id删除
+	 *
+	 * @param id
+	 * @return
+	 */
+	@AutoLog(value = "网站质量-通过id删除")
+	@ApiOperation(value="网站质量-通过id删除", notes="网站质量-通过id删除")
+	@RequiresPermissions("websitequality:okki_website_quality:delete")
+	@DeleteMapping(value = "/delete")
+	public Result<String> delete(@RequestParam(name="id",required=true) String id) {
+		okkiWebsiteQualityService.removeById(id);
+		return Result.OK("删除成功!");
+	}
+	
+	/**
+	 *  批量删除
+	 *
+	 * @param ids
+	 * @return
+	 */
+	@AutoLog(value = "网站质量-批量删除")
+	@ApiOperation(value="网站质量-批量删除", notes="网站质量-批量删除")
+	@RequiresPermissions("websitequality:okki_website_quality:deleteBatch")
+	@DeleteMapping(value = "/deleteBatch")
+	public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
+		this.okkiWebsiteQualityService.removeByIds(Arrays.asList(ids.split(",")));
+		return Result.OK("批量删除成功!");
+	}
+	
+	/**
+	 * 通过id查询
+	 *
+	 * @param id
+	 * @return
+	 */
+	//@AutoLog(value = "网站质量-通过id查询")
+	@ApiOperation(value="网站质量-通过id查询", notes="网站质量-通过id查询")
+	@GetMapping(value = "/queryById")
+	public Result<OkkiWebsiteQuality> queryById(@RequestParam(name="id",required=true) String id) {
+		OkkiWebsiteQuality okkiWebsiteQuality = okkiWebsiteQualityService.getById(id);
+		if(okkiWebsiteQuality==null) {
+			return Result.error("未找到对应数据");
+		}
+		return Result.OK(okkiWebsiteQuality);
+	}
+
+    /**
+    * 导出excel
+    *
+    * @param request
+    * @param okkiWebsiteQuality
+    */
+    @RequiresPermissions("websitequality:okki_website_quality:exportXls")
+    @RequestMapping(value = "/exportXls")
+    public ModelAndView exportXls(HttpServletRequest request, OkkiWebsiteQuality okkiWebsiteQuality) {
+        return super.exportXls(request, okkiWebsiteQuality, OkkiWebsiteQuality.class, "网站质量");
+    }
+
+    /**
+      * 通过excel导入数据
+    *
+    * @param request
+    * @param response
+    * @return
+    */
+    @RequiresPermissions("websitequality:okki_website_quality:importExcel")
+    @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
+    public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
+        return super.importExcel(request, response, OkkiWebsiteQuality.class);
+    }
+
+}

+ 120 - 0
jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/websitequality/entity/OkkiWebsiteQuality.java

@@ -0,0 +1,120 @@
+package org.jeecg.modules.okki.websitequality.entity;
+
+import java.io.Serializable;
+import java.io.UnsupportedEncodingException;
+import java.util.Date;
+import java.math.BigDecimal;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import lombok.Data;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.springframework.format.annotation.DateTimeFormat;
+import org.jeecgframework.poi.excel.annotation.Excel;
+import org.jeecg.common.aspect.annotation.Dict;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * @Description: 网站质量
+ * @Author: jeecg-boot
+ * @Date:   2024-05-15
+ * @Version: V1.0
+ */
+@Data
+@TableName("okki_website_quality")
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value="okki_website_quality对象", description="网站质量")
+public class OkkiWebsiteQuality implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+	/**主键*/
+	@TableId(type = IdType.ASSIGN_ID)
+    @ApiModelProperty(value = "主键")
+    private String id;
+	/**创建人*/
+    @ApiModelProperty(value = "创建人")
+    private String createBy;
+	/**更新人*/
+    @ApiModelProperty(value = "更新人")
+    private String updateBy;
+	/**更新日期*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "更新日期")
+    private Date updateTime;
+	/**唯一标识符*/
+	@Excel(name = "唯一标识符", width = 15)
+    @ApiModelProperty(value = "唯一标识符")
+    private Integer websiteQualityId;
+	/**站点的标识符*/
+	@Excel(name = "站点的标识符", width = 15)
+    @ApiModelProperty(value = "站点的标识符")
+    private String siteId;
+	/**客户的标识符*/
+	@Excel(name = "客户的标识符", width = 15)
+    @ApiModelProperty(value = "客户的标识符")
+    private String clientId;
+	/**站点地图状态码*/
+	@Excel(name = "站点地图状态码", width = 15, dicCode = "progress")
+	@Dict(dicCode = "progress")
+    @ApiModelProperty(value = "站点地图状态码")
+    private Integer sitemapStatusCode;
+	/**站点地图问题列表*/
+	@Excel(name = "站点地图问题列表", width = 15)
+    @ApiModelProperty(value = "站点地图问题列表")
+    private String sitemapStatusProblems;
+	/**Google Analytics状态码*/
+	@Excel(name = "Google Analytics状态码", width = 15, dicCode = "progress")
+	@Dict(dicCode = "progress")
+    @ApiModelProperty(value = "Google Analytics状态码")
+    private Integer gaStatusCode;
+	/**Google Analytics问题列表*/
+	@Excel(name = "Google Analytics问题列表", width = 15)
+    @ApiModelProperty(value = "Google Analytics问题列表")
+    private String gaStatusProblems;
+	/**域名状态码*/
+	@Excel(name = "域名状态码", width = 15, dicCode = "progress")
+	@Dict(dicCode = "progress")
+    @ApiModelProperty(value = "域名状态码")
+    private Integer domainStatusCode;
+	/**域名问题列表*/
+	@Excel(name = "域名问题列表", width = 15)
+    @ApiModelProperty(value = "域名问题列表")
+    private String domainStatusProblems;
+	/**查询电子邮件状态码*/
+	@Excel(name = "查询电子邮件状态码", width = 15, dicCode = "progress")
+	@Dict(dicCode = "progress")
+    @ApiModelProperty(value = "查询电子邮件状态码")
+    private Integer inquiryEmailStatusCode;
+	/**查询电子邮件问题列表*/
+	@Excel(name = "查询电子邮件问题列表", width = 15)
+    @ApiModelProperty(value = "查询电子邮件问题列表")
+    private String inquiryEmailStatusProblems;
+	/**加载速度状态码*/
+	@Excel(name = "加载速度状态码", width = 15)
+    @ApiModelProperty(value = "加载速度状态码")
+    private Integer loadSpeedStatusCode;
+	/**加载速度问题列表*/
+	@Excel(name = "加载速度问题列表", width = 15)
+    @ApiModelProperty(value = "加载速度问题列表")
+    private String loadSpeedStatusProblems;
+	/**进度状态*/
+	@Excel(name = "进度状态", width = 15, dicCode = "progress")
+	@Dict(dicCode = "progress")
+    @ApiModelProperty(value = "进度状态")
+    private Integer progress;
+	/**站点的加载时间(单位是秒)*/
+	@Excel(name = "站点的加载时间(单位是秒)", width = 15)
+    @ApiModelProperty(value = "站点的加载时间(单位是秒)")
+    private Integer loadTime;
+	/**创建日期*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "创建日期")
+    private Date createTime;
+}

+ 14 - 0
jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/websitequality/mapper/OkkiWebsiteQualityMapper.java

@@ -0,0 +1,14 @@
+package org.jeecg.modules.okki.websitequality.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.jeecg.modules.okki.websitequality.entity.OkkiWebsiteQuality;
+
+/**
+ * @Description: 网站质量
+ * @Author: jeecg-boot
+ * @Date:   2024-05-15
+ * @Version: V1.0
+ */
+public interface OkkiWebsiteQualityMapper extends BaseMapper<OkkiWebsiteQuality> {
+
+}

+ 5 - 0
jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/websitequality/mapper/xml/OkkiWebsiteQualityMapper.xml

@@ -0,0 +1,5 @@
+<?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="org.jeecg.modules.okki.websitequality.mapper.OkkiWebsiteQualityMapper">
+
+</mapper>

+ 11 - 0
jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/websitequality/param/DomainStatusParam.java

@@ -0,0 +1,11 @@
+package org.jeecg.modules.okki.websitequality.param;
+
+import lombok.Data;
+
+@Data
+public class DomainStatusParam {
+
+    private Integer code;
+
+    private String[] problems;
+}

+ 11 - 0
jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/websitequality/param/GaStatusParam.java

@@ -0,0 +1,11 @@
+package org.jeecg.modules.okki.websitequality.param;
+
+import lombok.Data;
+
+@Data
+public class GaStatusParam {
+
+    private Integer code;
+
+    private String[] problems;
+}

+ 11 - 0
jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/websitequality/param/InquiryEmailStatusParam.java

@@ -0,0 +1,11 @@
+package org.jeecg.modules.okki.websitequality.param;
+
+import lombok.Data;
+
+@Data
+public class InquiryEmailStatusParam {
+
+    private Integer code;
+
+    private String[] problems;
+}

+ 11 - 0
jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/websitequality/param/LoadSpeedStatusParam.java

@@ -0,0 +1,11 @@
+package org.jeecg.modules.okki.websitequality.param;
+
+import lombok.Data;
+
+@Data
+public class LoadSpeedStatusParam {
+
+    private Integer code;
+
+    private String[] problems;
+}

+ 29 - 0
jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/websitequality/param/OkkiWebsiteQualityParam.java

@@ -0,0 +1,29 @@
+package org.jeecg.modules.okki.websitequality.param;
+
+import lombok.Data;
+
+@Data
+public class OkkiWebsiteQualityParam {
+
+    private Integer id;
+
+    private String site_id;
+
+    private String client_id;
+
+    private SitemapStatusParam sitemap_status;
+
+    private GaStatusParam ga_status;
+
+    private DomainStatusParam domain_status;
+
+    private String create_time;
+
+    private InquiryEmailStatusParam inquiry_email_status;
+
+    private Integer progress;
+
+    private Integer load_time;
+
+    private LoadSpeedStatusParam load_speed_status;
+}

+ 11 - 0
jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/websitequality/param/SitemapStatusParam.java

@@ -0,0 +1,11 @@
+package org.jeecg.modules.okki.websitequality.param;
+
+import lombok.Data;
+
+@Data
+public class SitemapStatusParam {
+
+    private Integer code;
+
+    private String[] problems;
+}

+ 14 - 0
jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/websitequality/service/IOkkiWebsiteQualityService.java

@@ -0,0 +1,14 @@
+package org.jeecg.modules.okki.websitequality.service;
+
+import org.jeecg.modules.okki.websitequality.entity.OkkiWebsiteQuality;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * @Description: 网站质量
+ * @Author: jeecg-boot
+ * @Date:   2024-05-15
+ * @Version: V1.0
+ */
+public interface IOkkiWebsiteQualityService extends IService<OkkiWebsiteQuality> {
+
+}

+ 19 - 0
jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/websitequality/service/impl/OkkiWebsiteQualityServiceImpl.java

@@ -0,0 +1,19 @@
+package org.jeecg.modules.okki.websitequality.service.impl;
+
+import org.jeecg.modules.okki.websitequality.entity.OkkiWebsiteQuality;
+import org.jeecg.modules.okki.websitequality.mapper.OkkiWebsiteQualityMapper;
+import org.jeecg.modules.okki.websitequality.service.IOkkiWebsiteQualityService;
+import org.springframework.stereotype.Service;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+/**
+ * @Description: 网站质量
+ * @Author: jeecg-boot
+ * @Date:   2024-05-15
+ * @Version: V1.0
+ */
+@Service
+public class OkkiWebsiteQualityServiceImpl extends ServiceImpl<OkkiWebsiteQualityMapper, OkkiWebsiteQuality> implements IOkkiWebsiteQualityService {
+
+}

+ 64 - 0
jeecgboot-vue3/src/views/okki/websitequality/OkkiWebsiteQuality.api.ts

@@ -0,0 +1,64 @@
+import {defHttp} from '/@/utils/http/axios';
+import { useMessage } from "/@/hooks/web/useMessage";
+
+const { createConfirm } = useMessage();
+
+enum Api {
+  list = '/websitequality/okkiWebsiteQuality/list',
+  save='/websitequality/okkiWebsiteQuality/add',
+  edit='/websitequality/okkiWebsiteQuality/edit',
+  deleteOne = '/websitequality/okkiWebsiteQuality/delete',
+  deleteBatch = '/websitequality/okkiWebsiteQuality/deleteBatch',
+  importExcel = '/websitequality/okkiWebsiteQuality/importExcel',
+  exportXls = '/websitequality/okkiWebsiteQuality/exportXls',
+}
+/**
+ * 导出api
+ * @param params
+ */
+export const getExportUrl = Api.exportXls;
+/**
+ * 导入api
+ */
+export const getImportUrl = Api.importExcel;
+/**
+ * 列表接口
+ * @param params
+ */
+export const list = (params) =>
+  defHttp.get({url: Api.list, params});
+
+/**
+ * 删除单个
+ */
+export const deleteOne = (params,handleSuccess) => {
+  return defHttp.delete({url: Api.deleteOne, params}, {joinParamsToUrl: true}).then(() => {
+    handleSuccess();
+  });
+}
+/**
+ * 批量删除
+ * @param params
+ */
+export const batchDelete = (params, handleSuccess) => {
+  createConfirm({
+    iconType: 'warning',
+    title: '确认删除',
+    content: '是否删除选中数据',
+    okText: '确认',
+    cancelText: '取消',
+    onOk: () => {
+      return defHttp.delete({url: Api.deleteBatch, data: params}, {joinParamsToUrl: true}).then(() => {
+        handleSuccess();
+      });
+    }
+  });
+}
+/**
+ * 保存或者更新
+ * @param params
+ */
+export const saveOrUpdate = (params, isUpdate) => {
+  let url = isUpdate ? Api.edit : Api.save;
+  return defHttp.post({url: url, params});
+}

+ 217 - 0
jeecgboot-vue3/src/views/okki/websitequality/OkkiWebsiteQuality.data.ts

@@ -0,0 +1,217 @@
+import {BasicColumn} from '/@/components/Table';
+import {FormSchema} from '/@/components/Table';
+import { rules} from '/@/utils/helper/validator';
+import { render } from '/@/utils/common/renderUtils';
+//列表数据
+export const columns: BasicColumn[] = [
+   {
+    title: '唯一标识符',
+    align:"center",
+    dataIndex: 'websiteQualityId'
+   },
+   {
+    title: '站点的标识符',
+    align:"center",
+    dataIndex: 'siteId'
+   },
+   {
+    title: '客户的标识符',
+    align:"center",
+    dataIndex: 'clientId'
+   },
+   {
+    title: '站点地图状态码',
+    align:"center",
+    dataIndex: 'sitemapStatusCode_dictText'
+   },
+   {
+    title: '站点地图问题列表',
+    align:"center",
+    dataIndex: 'sitemapStatusProblems'
+   },
+   {
+    title: 'Google Analytics状态码',
+    align:"center",
+    dataIndex: 'gaStatusCode_dictText'
+   },
+   {
+    title: 'Google Analytics问题列表',
+    align:"center",
+    dataIndex: 'gaStatusProblems'
+   },
+   {
+    title: '域名状态码',
+    align:"center",
+    dataIndex: 'domainStatusCode_dictText'
+   },
+   {
+    title: '域名问题列表',
+    align:"center",
+    dataIndex: 'domainStatusProblems'
+   },
+   {
+    title: '查询电子邮件状态码',
+    align:"center",
+    dataIndex: 'inquiryEmailStatusCode_dictText'
+   },
+   {
+    title: '查询电子邮件问题列表',
+    align:"center",
+    dataIndex: 'inquiryEmailStatusProblems'
+   },
+   {
+    title: '加载速度状态码',
+    align:"center",
+    dataIndex: 'loadSpeedStatusCode_dictText'
+   },
+   {
+    title: '加载速度问题列表',
+    align:"center",
+    dataIndex: 'loadSpeedStatusProblems'
+   },
+   {
+    title: '进度状态',
+    align:"center",
+    dataIndex: 'progress_dictText'
+   },
+   {
+    title: '站点的加载时间(单位是秒)',
+    align:"center",
+    dataIndex: 'loadTime'
+   },
+   {
+    title: '创建日期',
+    align:"center",
+    dataIndex: 'createTime'
+   },
+];
+//查询数据
+export const searchFormSchema: FormSchema[] = [
+];
+//表单数据
+export const formSchema: FormSchema[] = [
+  {
+    label: '站点的标识符',
+    field: 'siteId',
+    component: 'Input',
+  },
+  {
+    label: '客户的标识符',
+    field: 'clientId',
+    component: 'Input',
+  },
+  {
+    label: '站点地图状态码',
+    field: 'sitemapStatusCode',
+    component: 'JDictSelectTag',
+    componentProps:{
+        dictCode:"progress"
+     },
+  },
+  {
+    label: '站点地图问题列表',
+    field: 'sitemapStatusProblems',
+    component: 'Input',
+  },
+  {
+    label: 'Google Analytics状态码',
+    field: 'gaStatusCode',
+    component: 'JDictSelectTag',
+    componentProps:{
+        dictCode:"progress"
+     },
+  },
+  {
+    label: 'Google Analytics问题列表',
+    field: 'gaStatusProblems',
+    component: 'Input',
+  },
+  {
+    label: '域名状态码',
+    field: 'domainStatusCode',
+    component: 'JDictSelectTag',
+    componentProps:{
+        dictCode:"progress"
+     },
+  },
+  {
+    label: '域名问题列表',
+    field: 'domainStatusProblems',
+    component: 'Input',
+  },
+  {
+    label: '查询电子邮件状态码',
+    field: 'inquiryEmailStatusCode',
+    component: 'JDictSelectTag',
+    componentProps:{
+        dictCode:"progress"
+     },
+  },
+  {
+    label: '查询电子邮件问题列表',
+    field: 'inquiryEmailStatusProblems',
+    component: 'Input',
+  },
+  {
+    label: '加载速度状态码',
+    field: 'loadSpeedStatusCode',
+    component: 'JDictSelectTag',
+    componentProps:{
+        dictCode:""
+     },
+  },
+  {
+    label: '加载速度问题列表',
+    field: 'loadSpeedStatusProblems',
+    component: 'Input',
+  },
+  {
+    label: '进度状态',
+    field: 'progress',
+    component: 'JDictSelectTag',
+    componentProps:{
+        dictCode:"progress"
+     },
+  },
+  {
+    label: '站点的加载时间(单位是秒)',
+    field: 'loadTime',
+    component: 'InputNumber',
+  },
+	// TODO 主键隐藏字段,目前写死为ID
+	{
+	  label: '',
+	  field: 'id',
+	  component: 'Input',
+	  show: false
+	},
+];
+
+// 高级查询数据
+export const superQuerySchema = {
+  websiteQualityId: {title: '唯一标识符',order: 0,view: 'number', type: 'number',},
+  siteId: {title: '站点的标识符',order: 1,view: 'text', type: 'string',},
+  clientId: {title: '客户的标识符',order: 2,view: 'text', type: 'string',},
+  sitemapStatusCode: {title: '站点地图状态码',order: 3,view: 'number', type: 'number',},
+  sitemapStatusProblems: {title: '站点地图问题列表',order: 4,view: 'text', type: 'string',},
+  gaStatusCode: {title: 'Google Analytics状态码',order: 5,view: 'number', type: 'number',},
+  gaStatusProblems: {title: 'Google Analytics问题列表',order: 6,view: 'text', type: 'string',},
+  domainStatusCode: {title: '域名状态码',order: 7,view: 'number', type: 'number',},
+  domainStatusProblems: {title: '域名问题列表',order: 8,view: 'text', type: 'string',},
+  inquiryEmailStatusCode: {title: '查询电子邮件状态码',order: 9,view: 'number', type: 'number',},
+  inquiryEmailStatusProblems: {title: '查询电子邮件问题列表',order: 10,view: 'text', type: 'string',},
+  loadSpeedStatusCode: {title: '加载速度状态码',order: 11,view: 'number', type: 'number',},
+  loadSpeedStatusProblems: {title: '加载速度问题列表',order: 12,view: 'text', type: 'string',},
+  progress: {title: '进度状态',order: 13,view: 'number', type: 'number',},
+  loadTime: {title: '站点的加载时间(单位是秒)',order: 14,view: 'number', type: 'number',},
+  createTime: {title: '创建日期',order: 15,view: 'datetime', type: 'string',},
+};
+
+/**
+* 流程表单调用这个方法获取formSchema
+* @param param
+*/
+export function getBpmFormSchema(_formData): FormSchema[]{
+  // 默认和原始表单保持一致 如果流程中配置了权限数据,这里需要单独处理formSchema
+  return formSchema;
+}

+ 186 - 0
jeecgboot-vue3/src/views/okki/websitequality/OkkiWebsiteQualityList.vue

@@ -0,0 +1,186 @@
+<template>
+  <div>
+    <!--引用表格-->
+   <BasicTable @register="registerTable" :rowSelection="rowSelection">
+     <!--插槽:table标题-->
+      <template #tableTitle>
+          <a-button type="primary" @click="handleAdd" preIcon="ant-design:plus-outlined"> 新增</a-button>
+          <a-button  type="primary" preIcon="ant-design:export-outlined" @click="onExportXls"> 导出</a-button>
+          <j-upload-button  type="primary" preIcon="ant-design:import-outlined" @click="onImportXls">导入</j-upload-button>
+          <a-dropdown v-if="selectedRowKeys.length > 0">
+              <template #overlay>
+                <a-menu>
+                  <a-menu-item key="1" @click="batchHandleDelete">
+                    <Icon icon="ant-design:delete-outlined"></Icon>
+                    删除
+                  </a-menu-item>
+                </a-menu>
+              </template>
+              <a-button>批量操作
+                <Icon icon="mdi:chevron-down"></Icon>
+              </a-button>
+        </a-dropdown>
+        <!-- 高级查询 -->
+        <super-query :config="superQueryConfig" @search="handleSuperQuery" />
+      </template>
+       <!--操作栏-->
+      <template #action="{ record }">
+        <TableAction :actions="getTableAction(record)" :dropDownActions="getDropDownAction(record)"/>
+      </template>
+      <!--字段回显插槽-->
+      <template v-slot:bodyCell="{ column, record, index, text }">
+      </template>
+    </BasicTable>
+    <!-- 表单区域 -->
+    <OkkiWebsiteQualityModal @register="registerModal" @success="handleSuccess"></OkkiWebsiteQualityModal>
+  </div>
+</template>
+
+<script lang="ts" name="websitequality-okkiWebsiteQuality" setup>
+  import {ref, reactive, computed, unref} from 'vue';
+  import {BasicTable, useTable, TableAction} from '/@/components/Table';
+  import {useModal} from '/@/components/Modal';
+  import { useListPage } from '/@/hooks/system/useListPage'
+  import OkkiWebsiteQualityModal from './components/OkkiWebsiteQualityModal.vue'
+  import {columns, searchFormSchema, superQuerySchema} from './OkkiWebsiteQuality.data';
+  import {list, deleteOne, batchDelete, getImportUrl,getExportUrl} from './OkkiWebsiteQuality.api';
+  import { downloadFile } from '/@/utils/common/renderUtils';
+  import { useUserStore } from '/@/store/modules/user';
+  const queryParam = reactive<any>({});
+  const checkedKeys = ref<Array<string | number>>([]);
+  const userStore = useUserStore();
+  //注册model
+  const [registerModal, {openModal}] = useModal();
+  //注册table数据
+  const { prefixCls,tableContext,onExportXls,onImportXls } = useListPage({
+      tableProps:{
+           title: '网站质量',
+           api: list,
+           columns,
+           canResize:false,
+           formConfig: {
+              //labelWidth: 120,
+              schemas: searchFormSchema,
+              autoSubmitOnEnter:true,
+              showAdvancedButton:true,
+              fieldMapToNumber: [
+              ],
+              fieldMapToTime: [
+              ],
+            },
+           actionColumn: {
+               width: 120,
+               fixed:'right'
+            },
+            beforeFetch: (params) => {
+              return Object.assign(params, queryParam);
+            },
+      },
+       exportConfig: {
+            name:"网站质量",
+            url: getExportUrl,
+            params: queryParam,
+          },
+          importConfig: {
+            url: getImportUrl,
+            success: handleSuccess
+          },
+  })
+
+  const [registerTable, {reload},{ rowSelection, selectedRowKeys }] = tableContext
+
+  // 高级查询配置
+  const superQueryConfig = reactive(superQuerySchema);
+
+  /**
+   * 高级查询事件
+   */
+  function handleSuperQuery(params) {
+    Object.keys(params).map((k) => {
+      queryParam[k] = params[k];
+    });
+    reload();
+  }
+   /**
+    * 新增事件
+    */
+  function handleAdd() {
+     openModal(true, {
+       isUpdate: false,
+       showFooter: true,
+     });
+  }
+   /**
+    * 编辑事件
+    */
+  function handleEdit(record: Recordable) {
+     openModal(true, {
+       record,
+       isUpdate: true,
+       showFooter: true,
+     });
+   }
+   /**
+    * 详情
+   */
+  function handleDetail(record: Recordable) {
+     openModal(true, {
+       record,
+       isUpdate: true,
+       showFooter: false,
+     });
+   }
+   /**
+    * 删除事件
+    */
+  async function handleDelete(record) {
+     await deleteOne({id: record.id}, handleSuccess);
+   }
+   /**
+    * 批量删除事件
+    */
+  async function batchHandleDelete() {
+     await batchDelete({ids: selectedRowKeys.value}, handleSuccess);
+   }
+   /**
+    * 成功回调
+    */
+  function handleSuccess() {
+      (selectedRowKeys.value = []) && reload();
+   }
+   /**
+      * 操作栏
+      */
+  function getTableAction(record){
+       return [
+         {
+           label: '编辑',
+           onClick: handleEdit.bind(null, record),
+         }
+       ]
+   }
+     /**
+        * 下拉操作栏
+        */
+  function getDropDownAction(record){
+       return [
+         {
+           label: '详情',
+           onClick: handleDetail.bind(null, record),
+         }, {
+           label: '删除',
+           popConfirm: {
+             title: '是否确认删除',
+             confirm: handleDelete.bind(null, record),
+             placement: 'topLeft',
+           }
+         }
+       ]
+   }
+
+
+</script>
+
+<style scoped>
+
+</style>

+ 26 - 0
jeecgboot-vue3/src/views/okki/websitequality/V20240515_1__menu_insert_OkkiWebsiteQuality.sql

@@ -0,0 +1,26 @@
+-- 注意:该页面对应的前台目录为views/websitequality文件夹下
+-- 如果你想更改到其他目录,请修改sql中component字段对应的值
+
+
+INSERT INTO sys_permission(id, parent_id, name, url, component, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_route, is_leaf, keep_alive, hidden, hide_tab, description, status, del_flag, rule_flag, create_by, create_time, update_by, update_time, internal_or_external) 
+VALUES ('2024051505444670560', NULL, '网站质量', '/websitequality/okkiWebsiteQualityList', 'websitequality/OkkiWebsiteQualityList', NULL, NULL, 0, NULL, '1', 0.00, 0, NULL, 1, 0, 0, 0, 0, NULL, '1', 0, 0, 'admin', '2024-05-15 17:44:56', NULL, NULL, 0);
+
+-- 权限控制sql
+-- 新增
+INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external)
+VALUES ('2024051505444670561', '2024051505444670560', '添加网站质量', NULL, NULL, 0, NULL, NULL, 2, 'websitequality:okki_website_quality:add', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2024-05-15 17:44:56', NULL, NULL, 0, 0, '1', 0);
+-- 编辑
+INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external)
+VALUES ('2024051505444670562', '2024051505444670560', '编辑网站质量', NULL, NULL, 0, NULL, NULL, 2, 'websitequality:okki_website_quality:edit', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2024-05-15 17:44:56', NULL, NULL, 0, 0, '1', 0);
+-- 删除
+INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external)
+VALUES ('2024051505444670563', '2024051505444670560', '删除网站质量', NULL, NULL, 0, NULL, NULL, 2, 'websitequality:okki_website_quality:delete', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2024-05-15 17:44:56', NULL, NULL, 0, 0, '1', 0);
+-- 批量删除
+INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external)
+VALUES ('2024051505444670564', '2024051505444670560', '批量删除网站质量', NULL, NULL, 0, NULL, NULL, 2, 'websitequality:okki_website_quality:deleteBatch', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2024-05-15 17:44:56', NULL, NULL, 0, 0, '1', 0);
+-- 导出excel
+INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external)
+VALUES ('2024051505444670565', '2024051505444670560', '导出excel_网站质量', NULL, NULL, 0, NULL, NULL, 2, 'websitequality:okki_website_quality:exportXls', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2024-05-15 17:44:56', NULL, NULL, 0, 0, '1', 0);
+-- 导入excel
+INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external)
+VALUES ('2024051505444670566', '2024051505444670560', '导入excel_网站质量', NULL, NULL, 0, NULL, NULL, 2, 'websitequality:okki_website_quality:importExcel', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2024-05-15 17:44:56', NULL, NULL, 0, 0, '1', 0);

+ 70 - 0
jeecgboot-vue3/src/views/okki/websitequality/components/OkkiWebsiteQualityForm.vue

@@ -0,0 +1,70 @@
+<template>
+    <div style="min-height: 400px">
+        <BasicForm @register="registerForm"></BasicForm>
+        <div style="width: 100%;text-align: center" v-if="!formDisabled">
+            <a-button @click="submitForm" pre-icon="ant-design:check" type="primary">提 交</a-button>
+        </div>
+    </div>
+</template>
+
+<script lang="ts">
+    import {BasicForm, useForm} from '/@/components/Form/index';
+    import {computed, defineComponent} from 'vue';
+    import {defHttp} from '/@/utils/http/axios';
+    import { propTypes } from '/@/utils/propTypes';
+    import {getBpmFormSchema} from '../OkkiWebsiteQuality.data';
+    import {saveOrUpdate} from '../OkkiWebsiteQuality.api';
+    
+    export default defineComponent({
+        name: "OkkiWebsiteQualityForm",
+        components:{
+            BasicForm
+        },
+        props:{
+            formData: propTypes.object.def({}),
+            formBpm: propTypes.bool.def(true),
+        },
+        setup(props){
+            const [registerForm, { setFieldsValue, setProps, getFieldsValue }] = useForm({
+                labelWidth: 150,
+                schemas: getBpmFormSchema(props.formData),
+                showActionButtonGroup: false,
+                baseColProps: {span: 24}
+            });
+
+            const formDisabled = computed(()=>{
+                if(props.formData.disabled === false){
+                    return false;
+                }
+                return true;
+            });
+
+            let formData = {};
+            const queryByIdUrl = '/websitequality/okkiWebsiteQuality/queryById';
+            async function initFormData(){
+                let params = {id: props.formData.dataId};
+                const data = await defHttp.get({url: queryByIdUrl, params});
+                formData = {...data}
+                //设置表单的值
+                await setFieldsValue(formData);
+                //默认是禁用
+                await setProps({disabled: formDisabled.value})
+            }
+
+            async function submitForm() {
+                let data = getFieldsValue();
+                let params = Object.assign({}, formData, data);
+                console.log('表单数据', params)
+                await saveOrUpdate(params, true)
+            }
+
+            initFormData();
+            
+            return {
+                registerForm,
+                formDisabled,
+                submitForm,
+            }
+        }
+    });
+</script>

+ 66 - 0
jeecgboot-vue3/src/views/okki/websitequality/components/OkkiWebsiteQualityModal.vue

@@ -0,0 +1,66 @@
+<template>
+  <BasicModal v-bind="$attrs" @register="registerModal" destroyOnClose :title="title" :width="800" @ok="handleSubmit">
+      <BasicForm @register="registerForm"/>
+  </BasicModal>
+</template>
+
+<script lang="ts" setup>
+    import {ref, computed, unref} from 'vue';
+    import {BasicModal, useModalInner} from '/@/components/Modal';
+    import {BasicForm, useForm} from '/@/components/Form/index';
+    import {formSchema} from '../OkkiWebsiteQuality.data';
+    import {saveOrUpdate} from '../OkkiWebsiteQuality.api';
+    // Emits声明
+    const emit = defineEmits(['register','success']);
+    const isUpdate = ref(true);
+    //表单配置
+    const [registerForm, {setProps,resetFields, setFieldsValue, validate}] = useForm({
+        //labelWidth: 150,
+        schemas: formSchema,
+        showActionButtonGroup: false,
+        baseColProps: {span: 24}
+    });
+    //表单赋值
+    const [registerModal, {setModalProps, closeModal}] = useModalInner(async (data) => {
+        //重置表单
+        await resetFields();
+        setModalProps({confirmLoading: false,showCancelBtn:!!data?.showFooter,showOkBtn:!!data?.showFooter});
+        isUpdate.value = !!data?.isUpdate;
+        if (unref(isUpdate)) {
+            //表单赋值
+            await setFieldsValue({
+                ...data.record,
+            });
+        }
+        // 隐藏底部时禁用整个表单
+       setProps({ disabled: !data?.showFooter })
+    });
+    //设置标题
+    const title = computed(() => (!unref(isUpdate) ? '新增' : '编辑'));
+    //表单提交事件
+    async function handleSubmit(v) {
+        try {
+            let values = await validate();
+            setModalProps({confirmLoading: true});
+            //提交表单
+            await saveOrUpdate(values, isUpdate.value);
+            //关闭弹窗
+            closeModal();
+            //刷新列表
+            emit('success');
+        } finally {
+            setModalProps({confirmLoading: false});
+        }
+    }
+</script>
+
+<style lang="less" scoped>
+	/** 时间和数字输入框样式 */
+  :deep(.ant-input-number){
+		width: 100%
+	}
+
+	:deep(.ant-calendar-picker){
+		width: 100%
+	}
+</style>