Browse Source

后台管理

small-tupu
hanyuqing 6 months ago
parent
commit
4744a96856
  1. 11
      gyxtp/src/components/UseAll/headerInfo.vue
  2. 8
      gyxtp/src/components/UseAll/leftInfo.vue
  3. 2
      gyxtp/src/router/router.js
  4. 2
      gyxtp/src/view/LoginInfo.vue
  5. 39
      gyxtp/src/view/articleInfo.vue
  6. 140
      gyxtp/src/view/pointArticleInfo.vue
  7. 58
      gyxtp/src/view/pointInfo.vue
  8. 653
      ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/ZhyFileManageController.java
  9. 37
      ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/ZhyPointController.java
  10. 17
      ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/ZhyPointRelationshipController.java
  11. 1
      ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/ZhyTaskInfoController.java
  12. 2
      ruoyi-api/src/main/java/com/ruoyi/api/mapper/ZhyPointMapper.java
  13. 4
      ruoyi-api/src/main/resources/mapper/api/ZhyPointMapper.xml
  14. 32
      ruoyi-system/src/main/java/com/ruoyi/system/domain/ZhyPointRelationship.java
  15. 26
      ruoyi-system/src/main/java/com/ruoyi/system/domain/ZhyTask.java
  16. 6
      ruoyi-system/src/main/java/com/ruoyi/system/domain/ZhyTaskInfo.java
  17. 8
      ruoyi-system/src/main/resources/mapper/system/ZhyPointRelationshipMapper.xml
  18. 2
      ruoyi-system/src/main/resources/mapper/system/ZhyTaskInfoMapper.xml
  19. 4
      ruoyi-system/src/main/resources/mapper/system/ZhyTaskMapper.xml
  20. 12
      ruoyi-ui/src/api/system/file.js
  21. 7
      ruoyi-ui/src/api/system/relationship1.js
  22. 220
      ruoyi-ui/src/views/statsPage.vue
  23. 53
      ruoyi-ui/src/views/system/SysPoint/index.vue
  24. 88
      ruoyi-ui/src/views/system/create/index.vue
  25. 2
      ruoyi-ui/src/views/system/docmuban/index.vue
  26. 25
      ruoyi-ui/src/views/system/fileManage/index.vue
  27. 6
      ruoyi-ui/src/views/system/fileManage/indexNB.vue
  28. 17
      ruoyi-ui/src/views/system/info/index.vue
  29. 42
      ruoyi-ui/src/views/system/relationship/index.vue
  30. 435
      ruoyi-ui/src/views/system/small/index.vue
  31. 25
      ruoyi-ui/src/views/system/task/index.vue

11
gyxtp/src/components/UseAll/headerInfo.vue

@ -1,13 +1,13 @@
<template>
<div class="index1">
<img src="../../assets/img2/logo1.png" style="height: 4vw;object-fit: contain;position: absolute;top: 12%;left: 1%;box-shadow: rgba(13,32,88,0.42) 0px 2px 9px 0px;border-radius: 50%;">
<!-- <img src="../../assets/img2/logo1.png" style="height: 4vw;object-fit: contain;position: absolute;top: 12%;left: 1%;box-shadow: rgba(13,32,88,0.42) 0px 2px 9px 0px;border-radius: 50%;">-->
<img style="width: 100%;height: 100%;object-fit: contain;" src="../../assets/img2/headerbg.jpg">
<!-- <div style="width: 100%;height: 5.5vw;background: #00A2F6"></div>-->
<div class="index3">
<div class="mingcheng" @click="goMine" >
<div class="mingcheng" >
<span>欢迎您{{userNameInfo}}</span>
</div>
<div class="index3-1" @click="loginOut">
<div class="index3-1" @click="loginOut" >
<img style="width: 30%;height: 30%;object-fit: contain;" src="../../assets/img1/logout.png">
<div>退出</div>
</div>
@ -76,6 +76,7 @@ export default {
top: 2.5vw;
right: 0.5vw;
font-size: 0.9vw;
cursor: pointer;
}
.mingcheng{
width: 7vw;
@ -85,9 +86,9 @@ export default {
text-align: center;
}
.mingcheng:hover{
/*.mingcheng:hover{
box-shadow: rgba(44, 60, 63, 0.23) 0px 4px 8px 2px !important;
cursor: pointer;
}
}*/
</style>

8
gyxtp/src/components/UseAll/leftInfo.vue

@ -25,7 +25,7 @@
<div class="menuInfo" @click="goSmall">
<div style="width: 80%;position: absolute;left: 1vw;top: 0.5vw;">
<img style="width: 72%;object-fit: contain;" src="../../assets/img2/menu2.png">
<div style="font-size:0.8vw;color: #0776ff;">小图谱</div>
<div style="font-size:0.8vw;color: #0776ff;">数据溯源</div>
</div>
</div>
@ -53,7 +53,7 @@
<div class="menuInfo" @click="goSmall">
<div style="width: 80%;position: absolute;left: 1vw;top: 0.5vw;">
<img style="width: 72%;object-fit: contain;" src="../../assets/img2/menu2.png">
<div style="font-size:0.8vw;color: #0776ff;">小图谱</div>
<div style="font-size:0.8vw;color: #0776ff;">数据溯源</div>
</div>
</div>
</div>
@ -81,7 +81,7 @@
<div class="menuInfo" @click="goSmall">
<div style="width: 80%;position: absolute;left: 1vw;top: 0.5vw;">
<img style="width: 72%;object-fit: contain;" src="../../assets/img2/menu2.png">
<div style="font-size:0.8vw;color: #0776ff;">小图谱</div>
<div style="font-size:0.8vw;color: #0776ff;">数据溯源</div>
</div>
</div>
</div>
@ -110,7 +110,7 @@
<img style="width: 100%;height: 100%;" src="../../assets/img2/menuXuan.png">
<div style="width: 80%;position: absolute;left: 1vw;top: 0.5vw;">
<img style="width: 72%;object-fit: contain;" src="../../assets/img2/menu22.png">
<div style="font-size:0.8vw;color: #ffffff;">小图谱</div>
<div style="font-size:0.8vw;color: #ffffff;">数据溯源</div>
</div>
</div>
<!-- <div class="menuInfo" @click="goSmall">-->

2
gyxtp/src/router/router.js

@ -22,7 +22,7 @@ const routes = [
meta: {
title: '数据图谱',
},
component: () => import ("../view/graphPageCopy.vue")
component: () => import ("../view/graphPage.vue")
},
{
path: '/battlefield',

2
gyxtp/src/view/LoginInfo.vue

@ -1,6 +1,6 @@
<template>
<div class="about">
<img style="width: 5vw;height: 5vw;position: absolute;z-index:100;margin-left: 1vw;margin-top: 1vw;border-radius: 50%;box-shadow: rgba(13, 32, 88, 0.42) -1px 9px 15px 0px;" src="../assets/img2/logo.png">
<!-- <img style="width: 5vw;height: 5vw;position: absolute;z-index:100;margin-left: 1vw;margin-top: 1vw;border-radius: 50%;box-shadow: rgba(13, 32, 88, 0.42) -1px 9px 15px 0px;" src="../assets/img2/logo.png">-->
<img style="width: 100%;height: 100%;position: absolute;z-index:99;" src="../assets/img2/loginBg.jpg">
<div class="loginInfo" v-if="isShowLogin">
<div class="titleInfoLogin">

39
gyxtp/src/view/articleInfo.vue

@ -12,7 +12,43 @@
<img src="../assets/img2/open2.png" style="width: 60%;object-fit: contain;margin-top: 1.8vw;">
</div>
<div :class="zhedie==0?'docInfo':'docInfo1'" v-if="num>0">
<div class="headerDoc">
<div style="margin-left: 1vw;">
<div style="height: 1.2vw;width:1.2vw;float: left;margin-top: 1.3vw;" @click="goIndex">
<img style="height: 100%; width: 100%; object-fit: contain" src="../assets/img2/back.png"/>
</div>
<div
style="
float: left;
height: 1.5vw;
line-height: 1.5vw;
font-size: 0.7vw;
margin-left: 1vw;
background-color: #0776ff;
margin-top: 1.3vw;
color: #ffffff;
text-align: center;
"
>
关键词{{ content.name }}
</div>
</div>
<!-- <div class="inputbox">-->
<!-- <div class="inputClass">-->
<!-- <input v-model="searchWord" class="inputText" style="overflow: hidden !important;"-->
<!-- @keydown.enter="goSearch">-->
<!-- <img-->
<!-- style="position: absolute;-->
<!-- right: 5%; top: 0.4vw;object-fit: contain;-->
<!-- z-index: 200;width: 1.2vw;height: 1vw;"-->
<!-- src="../assets/img2/docSearch.png"-->
<!-- />-->
<!-- </div>-->
<!-- </div>-->
</div>
<!-- <div class="docTitle" style="text-align:left;">-->
<!-- <div style="margin: 0 auto;text-align: center;">-->
@ -954,6 +990,7 @@ export default {
this.id = this.$route.query.id;
getArticleInfo(this.id).then(async res => {
this.content = res
const localFilePath = this.content.localUrl;
try {

140
gyxtp/src/view/pointArticleInfo.vue

@ -12,7 +12,43 @@
<img src="../assets/img2/open2.png" style="width: 60%;object-fit: contain;margin-top: 1.8vw;">
</div>
<div :class="zhedie==0?'docInfo':'docInfo1'" v-if="num>0">
<div class="headerDoc">
<div style="margin-left: 1vw;">
<div style="height: 1.2vw;width:1.2vw;float: left;margin-top: 1.3vw;" @click="goIndex">
<img style="height: 100%; width: 100%; object-fit: contain" src="../assets/img2/back.png"/>
</div>
<div
style="
float: left;
height: 1.5vw;
line-height: 1.5vw;
font-size: 0.7vw;
margin-left: 1vw;
background-color: #0776ff;
margin-top: 1.3vw;
color: #ffffff;
text-align: center;
"
>
关键词{{ content.title }}
</div>
</div>
<!-- <div class="inputbox">-->
<!-- <div class="inputClass">-->
<!-- <input v-model="searchWord" class="inputText" style="overflow: hidden !important;"-->
<!-- @keydown.enter="goSearch">-->
<!-- <img-->
<!-- style="position: absolute;-->
<!-- right: 5%; top: 0.4vw;object-fit: contain;-->
<!-- z-index: 200;width: 1.2vw;height: 1vw;"-->
<!-- src="../assets/img2/docSearch.png"-->
<!-- />-->
<!-- </div>-->
<!-- </div>-->
</div>
<!-- <div class="docTitle" style="text-align:left;">-->
<!-- <div style="margin: 0 auto;text-align: center;">-->
@ -36,8 +72,17 @@
<!-- <div class="tcontent">知识内容:</div>-->
<!-- </div>-->
<!-- </div>-->
<vue-pdf-embed class="yuanwen" :source=" this.content.uploadUrl" />
<!-- <vue-pdf-embed class="yuanwen" :source=" this.content.uploadUrl" />-->
<vue-pdf-embed class="yuanwen" :source="`http://localhost/dev-api/api/pdfFile/${srcPdf}`" v-if="!notFound"/>
<!-- <div class="yuanwen" v-html="content.content"></div>-->
<div v-if="notFound" style=" display: grid;
place-items: center;
height: 100vh;
width: 100%;
position: fixed;
top: 0;
left: 0;
font-size: 2vw;">本地暂未找到此文献</div>
</div>
</div>
@ -111,6 +156,7 @@ export default {
},
data() {
return {
notFound:false,
id:"",
videoUrls: [], //
isWorkVisible1look: false,
@ -195,7 +241,8 @@ export default {
noCount: 0,
haveScore: 0,
addInfo: true,
content:""
content:"",
srcPdf:""
};
},
methods: {
@ -941,34 +988,22 @@ export default {
this.id = this.$route.query.id;
selectPointResById(this.id).then(async res => {
this.content = res
console.log( this.content)
console.log(this.content.localUrl)
if(this.content.uploadUrl==null || this.content.uploadUrl==''||this.content.uploadUrl==undefined){
const localFilePath = this.content.localUrl;
try {
const response = await getFileByUrl({
filePath: localFilePath
});
if (response.code === 200) {
this.pdfInfo = response;
this.content.uploadUrl = this.pdfInfo.url
updateArticle(this.content).then((res)=>{
console.log(res)
})
console.log('PDF 可访问地址:', this.pdfInfo.url);
this.content.uploadUrl = this.pdfInfo.url
const localFilePath = this.content.localUrl;
try {
const response = await getFileByUrl({
filePath: localFilePath
});
} else {
this.$message.error('获取文件失败:' + response.msg);
}
} catch (error) {
console.error('请求异常:', error);
this.$message.error('网络错误或文件不存在');
if (response.code === 200) {
this.pdfInfo = response;
this.srcPdf=response.msg
} else {
this.notFound=true
// this.$message.error('' + response.msg);
}
} catch (error) {
console.error('请求异常:', error);
this.$message.error('网络错误或文件不存在');
}
@ -976,15 +1011,44 @@ export default {
// this.content.content=this.content.content.replace(/\n/g, '<br>');
})
// this.level = this.$route.query.level;
// if (this.$route.query.keyword == null) {
// this.searchWord = this.$route.query.title
// } else {
// this.searchWord = this.$route.query.keyword;
// }
// var url = localStorage.getItem("docUrl");
// this.getDoc(this.title, this.level, this.searchWord, url);
// this.getXg(this.title, this.level, url);
// selectPointResById(this.id).then(async res => {
// this.content = res
// console.log( this.content)
// console.log(this.content.localUrl)
// if(this.content.uploadUrl==null || this.content.uploadUrl==''||this.content.uploadUrl==undefined){
// const localFilePath = this.content.localUrl;
//
// try {
// const response = await getFileByUrl({
// filePath: localFilePath
// });
//
// if (response.code === 200) {
// this.pdfInfo = response;
// this.content.uploadUrl = this.pdfInfo.url
// updateArticle(this.content).then((res)=>{
// console.log(res)
// })
// console.log('PDF 访', this.pdfInfo.url);
// this.content.uploadUrl = this.pdfInfo.url
//
//
// } else {
// this.$message.error('' + response.msg);
// }
// } catch (error) {
// console.error('', error);
// this.$message.error('');
// }
//
// }
//
//
//
//
// // this.content.content=this.content.content.replace(/\n/g, '<br>');
// })
},
};

58
gyxtp/src/view/pointInfo.vue

@ -123,6 +123,7 @@ import RelationGraph from 'relation-graph-vue3';
import HeaderInfo from '../components/UseAll/headerInfo'
import leftInfo from "../components/UseAll/leftInfo";
import {ElMessage} from 'element-plus'
import {getDocInfo} from "@/api/api/doc";
export default {
name: 'pointInfo',
@ -154,7 +155,64 @@ export default {
}
})
},
goIndex() {
//
if (localStorage.getItem("oldDocUrl") != 'undefined' && localStorage.getItem("oldDocUrl") != null) {
var data = {
'id': localStorage.getItem("olddocId"),
'docTitle': localStorage.getItem("olddocTitle"),
}
getDocInfo(data).then((res) => {
localStorage.setItem("docUrl", res.data.docUrl);
this.$router.replace({
query: {
title: res.data.docTitle,
level: res.data.docLevel,
keyword: res.data.docTitle,
docId: res.data.id
}
});
this.num = 0;
let docId = {
docId: res.data.id
}
// getDifficult(docId).then((res) => {
// this.difficultValue = res.data.difficult + ''
// this.docUrl = res.data.docUrl
// })
this.title = res.data.docTitle;
this.level = res.data.docLevel;
//
//
if (this.$route.query.keyword == null) {
this.searchWord = res.data.docTitle
} else {
this.searchWord = res.data.docTitle;
}
this.docUrl = res.data.docUrl;
this.getDoc(this.title, this.level, this.searchWord, this.docUrl);
this.getXg(this.title, this.level, this.docUrl);
this.num = 1;
this.chooseInfo = 1;
localStorage.setItem("oldDocUrl", undefined)
localStorage.setItem("oldLevel", undefined);
localStorage.setItem("olddocId", undefined)
localStorage.setItem("olddocTitle", undefined)
});
} else {
this.$router.go(-1);
}
},
},
mounted() {
const id = this.$route.params.id
getPointInfoByUUID(id).then((res)=>{

653
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/ZhyFileManageController.java

@ -12,6 +12,7 @@ import com.ruoyi.api.service.impl.ESService;
import com.ruoyi.common.config.RuoYiConfig;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.utils.Neo4jUtil;
import com.ruoyi.common.utils.file.FileUploadUtils;
import com.ruoyi.common.utils.poi.ExcelUtil;
@ -1346,333 +1347,333 @@ public class ZhyFileManageController extends BaseController {
return map;
}).collect(Collectors.toList());
}
// @PostMapping("/getFileListNew1")
// public AjaxResult getFileListNew1(@RequestBody ZhyDoc zhyDoc) {
// if (zhyDoc.getDocTitle() != null && !zhyDoc.getDocTitle().equals("")) {
// // =================== STEP 1: 获取所有文件 ===================
// List<ZhyFileManage> allFiles = test1Mapper.getFileList1();
// if (allFiles.isEmpty()) {
// return AjaxResult.success().put("data", new ArrayList<>());
// }
//
// List<Map<String, Object>> resultFiles = new ArrayList<>();
//
// // 是否有搜索关键词?
// boolean hasSearchKeyword = zhyDoc != null && zhyDoc.getDocTitle() != null && !zhyDoc.getDocTitle().trim().isEmpty();
// Set<Integer> targetFileIds = new HashSet<>();
//
// Map<Integer, List<ZhyDoc>> fileDocsMap = new HashMap<>(); // 缓存:fileId -> 所有文档
//
// if (hasSearchKeyword) {
// // ========== 有搜索词:先找出匹配的文档 ==========
// ZhyDoc query = new ZhyDoc();
// query.setDocTitle(zhyDoc.getDocTitle()); // 模糊查询用
// List<ZhyDoc> matchedDocs = test1Mapper.selectAllDocByPLeve1(query); // 需要在 Mapper 中定义此方法
//
// for (ZhyDoc doc : matchedDocs) {
// targetFileIds.add(doc.getFileId());
// }
//
// // 只加载包含匹配节点的文件下的所有文档
// for (Integer fileId : targetFileIds) {
// List<ZhyDoc> docs = test1Mapper.getDocByFileId(fileId); // 查某个文件下的所有文档
// enrichDocWithMediaCount(docs); // 补充图片/视频数量
// fileDocsMap.put(fileId, docs);
// }
// } else {
// // ========== 无搜索词:加载所有文件的所有文档 ==========
// for (ZhyFileManage file : allFiles) {
// List<ZhyDoc> docs = test1Mapper.getDocByFileId(file.getId());
// enrichDocWithMediaCount(docs);
// fileDocsMap.put(file.getId(), docs);
// }
// }
//
// // =================== STEP 2: 构建每份文件的树 ===================
// for (ZhyFileManage file : allFiles) {
// List<ZhyDoc> allDocs = fileDocsMap.get(file.getId());
//
// // 如果没有这个文件的数据(比如没命中搜索),跳过
// if (allDocs == null || allDocs.isEmpty()) continue;
//
// // 构建 parentId -> children 映射
// Map<Long, List<ZhyDoc>> parentChildMap = new HashMap<>();
// Map<Long, ZhyDoc> idDocMap = new HashMap<>();
//
// for (ZhyDoc doc : allDocs) {
// idDocMap.put(doc.getId(), doc);
// parentChildMap.computeIfAbsent(doc.getDocParentId(), k -> new ArrayList<>()).add(doc);
// }
//
// // 查找所有父文档名称 & 关系名(批量处理)
// fillParentNamesAndRelations(allDocs, idDocMap);
//
// // 标记是否匹配关键词
// Set<Long> matchedNodeIds = new HashSet<>();
// if (hasSearchKeyword) {
// for (ZhyDoc doc : allDocs) {
// if (doc.getDocTitle() != null && doc.getDocTitle().contains(zhyDoc.getDocTitle())) {
// matchedNodeIds.add(doc.getId());
// }
// }
// }
//
// // 构建树:只保留从根到匹配节点的路径 + 匹配节点的子树
// List<ZhyDoc> rootNodes = parentChildMap.get(0L);
// if (rootNodes == null) rootNodes = new ArrayList<>();
//
// List<ZhyDoc> finalTree = new ArrayList<>();
// for (ZhyDoc root : rootNodes) {
// ZhyDoc filtered = buildFilteredTree(root, parentChildMap, matchedNodeIds, hasSearchKeyword);
// if (filtered != null) {
// finalTree.add(filtered);
// }
// }
//
// if (!finalTree.isEmpty() || !hasSearchKeyword) { // 即使没命中也返回空数组(兼容前端)
// Map<String, Object> map = new HashMap<>();
// map.put("id", file.getId());
// map.put("docTitle", file.getFileName().replaceAll("(?i)\\.docx$", ""));
// map.put("level2", convertDocListToMapList(finalTree));
// resultFiles.add(map);
// }
// }
// return AjaxResult.success().put("data", resultFiles);
//
// } else {
// List<ZhyFileManage> files = test1Mapper.getFileList1();
// List<Map> lists=new ArrayList<>();
// for(int i=0;i<files.size();i++){
// //查询所有一级标题
// ZhyDoc doc1 = new ZhyDoc();
// doc1.setDocParentId(0l);
// doc1.setFileId(files.get(i).getId());
// List<ZhyDoc> list1 = test1Mapper.selectAllDocByPLeve0(doc1);
//
// //循环这些一级标题
// if (list1.size() != 0) {
// for (int a1 = 0; a1 < list1.size(); a1++) {
// list1.get(a1).setTitleLevel(1l);
// System.out.println(list1.get(a1).getOpenDowload());
//
// if (list1.get(a1).getDocImgs() != null && !list1.get(a1).getDocImgs().equals("")) {
// String[] aas1 = list1.get(a1).getDocImgs().split(",");
// list1.get(a1).setImgsNum(Long.valueOf(String.valueOf(aas1.length)));
//
// }
// if (list1.get(a1).getDocVideo() != null && !list1.get(a1).getDocVideo().equals("")) {
// String[] aas1 = list1.get(a1).getDocVideo().split(",");
// list1.get(a1).setVideoSNum(Long.valueOf(String.valueOf(aas1.length)));
// }
//
//
// doc1.setDocParentId(list1.get(a1).getId());
// //查询第二层
// List<ZhyDoc> list2 = test1Mapper.selectAllDocByPLeve0(doc1);
//
// if (list2.size() != 0) {
// for (int a2 = 0; a2 < list2.size(); a2++) {
// list2.get(a2).setTitleLevel(2l);
// if (list2.get(a2).getDocImgs() != null && !list2.get(a2).getDocImgs().equals("")) {
// String[] aas1 = list2.get(a2).getDocImgs().split(",");
// list2.get(a2).setImgsNum(Long.valueOf(String.valueOf(aas1.length)));
//
// }
// if (list2.get(a2).getDocVideo() != null && !list2.get(a2).getDocVideo().equals("")) {
// String[] aas1 = list2.get(a2).getDocVideo().split(",");
// list2.get(a2).setVideoSNum(Long.valueOf(String.valueOf(aas1.length)));
// }
//
//
// ZhyDoc pp = test1Mapper.selectDocByIdId(list2.get(a2).getDocParentId());
// //查询这些二级标题与以及标题的关系
// ZhyDocRelation rr = new ZhyDocRelation();
// rr.setSource(list2.get(a2).getDocParentId());
// rr.setTarget(list2.get(a2).getId());
// List<ZhyDocRelation> rr1 = zhyDocRelationMapper.selectZhyRelationshipList(rr);
// if(rr1.size()!=0){
// list2.get(a2).setRealtionName(rr1.get(0).getRelationship());
// }
// list2.get(a2).setParentName(pp.getDocTitle());
// doc1.setDocParentId(list2.get(a2).getId());
//
//
// //查询第三层
// List<ZhyDoc> list3 = test1Mapper.selectAllDocByPLeve0(doc1);
//
// if (list3.size() != 0) {
// for (int a3 = 0; a3 < list3.size(); a3++) {
// list3.get(a3).setTitleLevel(3l);
// if (list3.get(a3).getDocImgs() != null && !list3.get(a3).getDocImgs().equals("")) {
// String[] aas1 = list3.get(a3).getDocImgs().split(",");
// list3.get(a3).setImgsNum(Long.valueOf(String.valueOf(aas1.length)));
//
// }
// if (list3.get(a3).getDocVideo() != null && !list3.get(a3).getDocVideo().equals("")) {
// String[] aas1 = list3.get(a3).getDocVideo().split(",");
// list3.get(a3).setVideoSNum(Long.valueOf(String.valueOf(aas1.length)));
// }
//
//
// doc1.setDocParentId(list3.get(a3).getId());
// //查询这些二级标题与以及标题的关系
// ZhyDocRelation rrold = new ZhyDocRelation();
// rrold.setSource(list3.get(a3).getDocParentId());
// rrold.setTarget((list3.get(a3).getId()));
// List<ZhyDocRelation> rr2 = zhyDocRelationMapper.selectZhyRelationshipList(rrold);
// if(rr2.size()!=0){
// list3.get(a3).setRealtionName(rr2.get(0).getRelationship());
// }
// //查询第四层
// ZhyDoc pp1 = test1Mapper.selectDocByIdId(list3.get(a3).getDocParentId());
// list3.get(a3).setParentName(pp1.getDocTitle());
// List<ZhyDoc> list4 = test1Mapper.selectAllDocByPLeve0(doc1);
//
// if (list4.size() != 0) {
// for (int a4 = 0; a4 < list4.size(); a4++) {
// list4.get(a4).setTitleLevel(4l);
// if (list4.get(a4).getDocImgs() != null && !list4.get(a4).getDocImgs().equals("")) {
// String[] aas1 = list4.get(a4).getDocImgs().split(",");
// list4.get(a4).setImgsNum(Long.valueOf(String.valueOf(aas1.length)));
//
// }
// if (list4.get(a4).getDocVideo() != null && !list4.get(a4).getDocVideo().equals("")) {
// String[] aas1 = list4.get(a4).getDocVideo().split(",");
// list4.get(a4).setVideoSNum(Long.valueOf(String.valueOf(aas1.length)));
// }
//
//
// doc1.setDocParentId(list4.get(a4).getId());
// //查询这些二级标题与以及标题的关系
// ZhyDocRelation rrold1 = new ZhyDocRelation();
// rrold1.setSource(list4.get(a4).getDocParentId());
// rrold1.setTarget((list4.get(a4).getId()));
// List<ZhyDocRelation> rr3 = zhyDocRelationMapper.selectZhyRelationshipList(rrold1);
// if(rr3.size()!=0){
// list4.get(a4).setRealtionName(rr3.get(0).getRelationship());
// }
// ZhyDoc pp2 = test1Mapper.selectDocByIdId(list4.get(a4).getDocParentId());
// System.out.println(pp2.getDocTitle());
// list4.get(a4).setParentName(pp2.getDocTitle());
// //查询第五层
// List<ZhyDoc> list5 = test1Mapper.selectAllDocByPLeve0(doc1);
//
// if (list5.size() != 0) {
// for (int a5 = 0; a5 < list5.size(); a5++) {
// list5.get(a5).setTitleLevel(5l);
// if (list5.get(a5).getDocImgs() != null && !list5.get(a5).getDocImgs().equals("")) {
// String[] aas1 = list5.get(a5).getDocImgs().split(",");
// list5.get(a5).setImgsNum(Long.valueOf(String.valueOf(aas1.length)));
//
// }
// if (list5.get(a5).getDocVideo() != null && !list5.get(a5).getDocVideo().equals("")) {
// String[] aas1 = list5.get(a5).getDocVideo().split(",");
// list5.get(a5).setVideoSNum(Long.valueOf(String.valueOf(aas1.length)));
// }
//
// //查询这些二级标题与以及标题的关系
// ZhyDocRelation rrold2 = new ZhyDocRelation();
// rrold2.setSource(list5.get(a5).getDocParentId());
// rrold2.setTarget((list5.get(a5).getId()));
// List<ZhyDocRelation> rr4 = zhyDocRelationMapper.selectZhyRelationshipList(rrold2);
// if(rr4.size()!=0){
// list5.get(a5).setRealtionName(rr4.get(0).getRelationship());
// }
//
// ZhyDoc pp3 = test1Mapper.selectDocByIdId(list5.get(a5).getDocParentId());
// list5.get(a5).setParentName(pp3.getDocTitle());
// doc1.setDocParentId(list5.get(a5).getId());
// //查询第六层
// List<ZhyDoc> list6 = test1Mapper.selectAllDocByPLeve0(doc1);
// for (int a6 = 0; a6 < list6.size(); a6++) {
// list6.get(a6).setTitleLevel(6l);
// if (list6.get(a6).getDocImgs() != null && !list6.get(a6).getDocImgs().equals("")) {
// String[] aas1 = list6.get(a6).getDocImgs().split(",");
// list6.get(a6).setImgsNum(Long.valueOf(String.valueOf(aas1.length)));
//
// }
// if (list6.get(a6).getDocVideo() != null && !list6.get(a6).getDocVideo().equals("")) {
// String[] aas1 = list6.get(a6).getDocVideo().split(",");
// list6.get(a6).setVideoSNum(Long.valueOf(String.valueOf(aas1.length)));
// }
//
//
// //查询这些二级标题与以及标题的关系
// ZhyDocRelation rrold3 = new ZhyDocRelation();
// rrold3.setSource(list6.get(a6).getDocParentId());
// rrold3.setTarget((list6.get(a6).getId()));
// List<ZhyDocRelation> rr5 = zhyDocRelationMapper.selectZhyRelationshipList(rrold3);
//
// if(rr5.size()!=0){
// list6.get(a6).setRealtionName(rr5.get(0).getRelationship());
// }
// ZhyDoc pp4 = test1Mapper.selectDocByIdId(list6.get(a6).getDocParentId());
// list6.get(a6).setParentName(pp4.getDocTitle());
// }
// List<Map> result = list6.stream().map(iter -> {
// Map<String, Object> map = JSON.parseObject(JSON.toJSONString(iter), Map.class);
// return map;
// }).collect(Collectors.toList());
// list5.get(a5).setLevel2(result);
// }
// }
//
// List<Map> result = list5.stream().map(iter -> {
// Map<String, Object> map = JSON.parseObject(JSON.toJSONString(iter), Map.class);
// return map;
// }).collect(Collectors.toList());
// list4.get(a4).setLevel2(result);
//
// }
// }
//
// List<Map> result = list4.stream().map(iter -> {
// Map<String, Object> map = JSON.parseObject(JSON.toJSONString(iter), Map.class);
// return map;
// }).collect(Collectors.toList());
// list3.get(a3).setLevel2(result);
//
//
// }
// }
// List< Map> result = list3.stream().map(iter -> {
// Map<String, Object> map = JSON.parseObject(JSON.toJSONString(iter), Map.class);
// return map;
// }).collect(Collectors.toList());
// list2.get(a2).setLevel2(result);
//
//
// }
// }
//
// List<Map> result = list2.stream().map(iter -> {
// Map<String, Object> map = JSON.parseObject(JSON.toJSONString(iter), Map.class);
// return map;
// }).collect(Collectors.toList());
// list1.get(a1).setLevel2(result);
// }
// }
// //查询有多少个大文件
// List<ZhyFileManage> ll = test1Mapper.getFileList1();
// Map map=new HashMap();
// map.put("id", files.get(i).getId());
// map.put("docTitle", files.get(i).getFileName().replaceAll("(?i)\\.docx$", ""));
// map.put("level2",list1);
// lists.add(map);
// }
// AjaxResult ajaxResult = new AjaxResult();
// ajaxResult.put("data", lists);
// return ajaxResult;
// }
//
//
// }
@PostMapping("/getFileListNew")
public AjaxResult getFileListNew(@RequestBody ZhyDoc zhyDoc) {
@PostMapping("/getFileListNew1")
public AjaxResult getFileListNew1(@RequestBody ZhyDoc zhyDoc) {
if (zhyDoc.getDocTitle() != null && !zhyDoc.getDocTitle().equals("")) {
// =================== STEP 1: 获取所有文件 ===================
List<ZhyFileManage> allFiles = test1Mapper.getFileList1();
if (allFiles.isEmpty()) {
return AjaxResult.success().put("data", new ArrayList<>());
}
List<Map<String, Object>> resultFiles = new ArrayList<>();
// 是否有搜索关键词?
boolean hasSearchKeyword = zhyDoc != null && zhyDoc.getDocTitle() != null && !zhyDoc.getDocTitle().trim().isEmpty();
Set<Integer> targetFileIds = new HashSet<>();
Map<Integer, List<ZhyDoc>> fileDocsMap = new HashMap<>(); // 缓存:fileId -> 所有文档
if (hasSearchKeyword) {
// ========== 有搜索词:先找出匹配的文档 ==========
ZhyDoc query = new ZhyDoc();
query.setDocTitle(zhyDoc.getDocTitle()); // 模糊查询用
List<ZhyDoc> matchedDocs = test1Mapper.selectAllDocByPLeve1(query); // 需要在 Mapper 中定义此方法
for (ZhyDoc doc : matchedDocs) {
targetFileIds.add(doc.getFileId());
}
// 只加载包含匹配节点的文件下的所有文档
for (Integer fileId : targetFileIds) {
List<ZhyDoc> docs = test1Mapper.getDocByFileId(fileId); // 查某个文件下的所有文档
enrichDocWithMediaCount(docs); // 补充图片/视频数量
fileDocsMap.put(fileId, docs);
}
} else {
// ========== 无搜索词:加载所有文件的所有文档 ==========
for (ZhyFileManage file : allFiles) {
List<ZhyDoc> docs = test1Mapper.getDocByFileId(file.getId());
enrichDocWithMediaCount(docs);
fileDocsMap.put(file.getId(), docs);
}
}
// =================== STEP 2: 构建每份文件的树 ===================
for (ZhyFileManage file : allFiles) {
List<ZhyDoc> allDocs = fileDocsMap.get(file.getId());
// 如果没有这个文件的数据(比如没命中搜索),跳过
if (allDocs == null || allDocs.isEmpty()) continue;
// 构建 parentId -> children 映射
Map<Long, List<ZhyDoc>> parentChildMap = new HashMap<>();
Map<Long, ZhyDoc> idDocMap = new HashMap<>();
for (ZhyDoc doc : allDocs) {
idDocMap.put(doc.getId(), doc);
parentChildMap.computeIfAbsent(doc.getDocParentId(), k -> new ArrayList<>()).add(doc);
}
// 查找所有父文档名称 & 关系名(批量处理)
fillParentNamesAndRelations(allDocs, idDocMap);
// 标记是否匹配关键词
Set<Long> matchedNodeIds = new HashSet<>();
if (hasSearchKeyword) {
for (ZhyDoc doc : allDocs) {
if (doc.getDocTitle() != null && doc.getDocTitle().contains(zhyDoc.getDocTitle())) {
matchedNodeIds.add(doc.getId());
}
}
}
// 构建树:只保留从根到匹配节点的路径 + 匹配节点的子树
List<ZhyDoc> rootNodes = parentChildMap.get(0L);
if (rootNodes == null) rootNodes = new ArrayList<>();
List<ZhyDoc> finalTree = new ArrayList<>();
for (ZhyDoc root : rootNodes) {
ZhyDoc filtered = buildFilteredTree(root, parentChildMap, matchedNodeIds, hasSearchKeyword);
if (filtered != null) {
finalTree.add(filtered);
}
}
if (!finalTree.isEmpty() || !hasSearchKeyword) { // 即使没命中也返回空数组(兼容前端)
Map<String, Object> map = new HashMap<>();
map.put("id", file.getId());
map.put("docTitle", file.getFileName().replaceAll("(?i)\\.docx$", ""));
map.put("level2", convertDocListToMapList(finalTree));
resultFiles.add(map);
}
}
return AjaxResult.success().put("data", resultFiles);
} else {
List<ZhyFileManage> files = test1Mapper.getFileList1();
List<Map> lists=new ArrayList<>();
for(int i=0;i<files.size();i++){
//查询所有一级标题
ZhyDoc doc1 = new ZhyDoc();
doc1.setDocParentId(0l);
doc1.setFileId(files.get(i).getId());
List<ZhyDoc> list1 = test1Mapper.selectAllDocByPLeve0(doc1);
//循环这些一级标题
if (list1.size() != 0) {
for (int a1 = 0; a1 < list1.size(); a1++) {
list1.get(a1).setTitleLevel(1l);
System.out.println(list1.get(a1).getOpenDowload());
if (list1.get(a1).getDocImgs() != null && !list1.get(a1).getDocImgs().equals("")) {
String[] aas1 = list1.get(a1).getDocImgs().split(",");
list1.get(a1).setImgsNum(Long.valueOf(String.valueOf(aas1.length)));
}
if (list1.get(a1).getDocVideo() != null && !list1.get(a1).getDocVideo().equals("")) {
String[] aas1 = list1.get(a1).getDocVideo().split(",");
list1.get(a1).setVideoSNum(Long.valueOf(String.valueOf(aas1.length)));
}
doc1.setDocParentId(list1.get(a1).getId());
//查询第二层
List<ZhyDoc> list2 = test1Mapper.selectAllDocByPLeve0(doc1);
if (list2.size() != 0) {
for (int a2 = 0; a2 < list2.size(); a2++) {
list2.get(a2).setTitleLevel(2l);
if (list2.get(a2).getDocImgs() != null && !list2.get(a2).getDocImgs().equals("")) {
String[] aas1 = list2.get(a2).getDocImgs().split(",");
list2.get(a2).setImgsNum(Long.valueOf(String.valueOf(aas1.length)));
}
if (list2.get(a2).getDocVideo() != null && !list2.get(a2).getDocVideo().equals("")) {
String[] aas1 = list2.get(a2).getDocVideo().split(",");
list2.get(a2).setVideoSNum(Long.valueOf(String.valueOf(aas1.length)));
}
ZhyDoc pp = test1Mapper.selectDocByIdId(list2.get(a2).getDocParentId());
//查询这些二级标题与以及标题的关系
ZhyDocRelation rr = new ZhyDocRelation();
rr.setSource(list2.get(a2).getDocParentId());
rr.setTarget(list2.get(a2).getId());
List<ZhyDocRelation> rr1 = zhyDocRelationMapper.selectZhyRelationshipList(rr);
if(rr1.size()!=0){
list2.get(a2).setRealtionName(rr1.get(0).getRelationship());
}
list2.get(a2).setParentName(pp.getDocTitle());
doc1.setDocParentId(list2.get(a2).getId());
//查询第三层
List<ZhyDoc> list3 = test1Mapper.selectAllDocByPLeve0(doc1);
if (list3.size() != 0) {
for (int a3 = 0; a3 < list3.size(); a3++) {
list3.get(a3).setTitleLevel(3l);
if (list3.get(a3).getDocImgs() != null && !list3.get(a3).getDocImgs().equals("")) {
String[] aas1 = list3.get(a3).getDocImgs().split(",");
list3.get(a3).setImgsNum(Long.valueOf(String.valueOf(aas1.length)));
}
if (list3.get(a3).getDocVideo() != null && !list3.get(a3).getDocVideo().equals("")) {
String[] aas1 = list3.get(a3).getDocVideo().split(",");
list3.get(a3).setVideoSNum(Long.valueOf(String.valueOf(aas1.length)));
}
doc1.setDocParentId(list3.get(a3).getId());
//查询这些二级标题与以及标题的关系
ZhyDocRelation rrold = new ZhyDocRelation();
rrold.setSource(list3.get(a3).getDocParentId());
rrold.setTarget((list3.get(a3).getId()));
List<ZhyDocRelation> rr2 = zhyDocRelationMapper.selectZhyRelationshipList(rrold);
if(rr2.size()!=0){
list3.get(a3).setRealtionName(rr2.get(0).getRelationship());
}
//查询第四层
ZhyDoc pp1 = test1Mapper.selectDocByIdId(list3.get(a3).getDocParentId());
list3.get(a3).setParentName(pp1.getDocTitle());
List<ZhyDoc> list4 = test1Mapper.selectAllDocByPLeve0(doc1);
if (list4.size() != 0) {
for (int a4 = 0; a4 < list4.size(); a4++) {
list4.get(a4).setTitleLevel(4l);
if (list4.get(a4).getDocImgs() != null && !list4.get(a4).getDocImgs().equals("")) {
String[] aas1 = list4.get(a4).getDocImgs().split(",");
list4.get(a4).setImgsNum(Long.valueOf(String.valueOf(aas1.length)));
}
if (list4.get(a4).getDocVideo() != null && !list4.get(a4).getDocVideo().equals("")) {
String[] aas1 = list4.get(a4).getDocVideo().split(",");
list4.get(a4).setVideoSNum(Long.valueOf(String.valueOf(aas1.length)));
}
doc1.setDocParentId(list4.get(a4).getId());
//查询这些二级标题与以及标题的关系
ZhyDocRelation rrold1 = new ZhyDocRelation();
rrold1.setSource(list4.get(a4).getDocParentId());
rrold1.setTarget((list4.get(a4).getId()));
List<ZhyDocRelation> rr3 = zhyDocRelationMapper.selectZhyRelationshipList(rrold1);
if(rr3.size()!=0){
list4.get(a4).setRealtionName(rr3.get(0).getRelationship());
}
ZhyDoc pp2 = test1Mapper.selectDocByIdId(list4.get(a4).getDocParentId());
System.out.println(pp2.getDocTitle());
list4.get(a4).setParentName(pp2.getDocTitle());
//查询第五层
List<ZhyDoc> list5 = test1Mapper.selectAllDocByPLeve0(doc1);
if (list5.size() != 0) {
for (int a5 = 0; a5 < list5.size(); a5++) {
list5.get(a5).setTitleLevel(5l);
if (list5.get(a5).getDocImgs() != null && !list5.get(a5).getDocImgs().equals("")) {
String[] aas1 = list5.get(a5).getDocImgs().split(",");
list5.get(a5).setImgsNum(Long.valueOf(String.valueOf(aas1.length)));
}
if (list5.get(a5).getDocVideo() != null && !list5.get(a5).getDocVideo().equals("")) {
String[] aas1 = list5.get(a5).getDocVideo().split(",");
list5.get(a5).setVideoSNum(Long.valueOf(String.valueOf(aas1.length)));
}
//查询这些二级标题与以及标题的关系
ZhyDocRelation rrold2 = new ZhyDocRelation();
rrold2.setSource(list5.get(a5).getDocParentId());
rrold2.setTarget((list5.get(a5).getId()));
List<ZhyDocRelation> rr4 = zhyDocRelationMapper.selectZhyRelationshipList(rrold2);
if(rr4.size()!=0){
list5.get(a5).setRealtionName(rr4.get(0).getRelationship());
}
ZhyDoc pp3 = test1Mapper.selectDocByIdId(list5.get(a5).getDocParentId());
list5.get(a5).setParentName(pp3.getDocTitle());
doc1.setDocParentId(list5.get(a5).getId());
//查询第六层
List<ZhyDoc> list6 = test1Mapper.selectAllDocByPLeve0(doc1);
for (int a6 = 0; a6 < list6.size(); a6++) {
list6.get(a6).setTitleLevel(6l);
if (list6.get(a6).getDocImgs() != null && !list6.get(a6).getDocImgs().equals("")) {
String[] aas1 = list6.get(a6).getDocImgs().split(",");
list6.get(a6).setImgsNum(Long.valueOf(String.valueOf(aas1.length)));
}
if (list6.get(a6).getDocVideo() != null && !list6.get(a6).getDocVideo().equals("")) {
String[] aas1 = list6.get(a6).getDocVideo().split(",");
list6.get(a6).setVideoSNum(Long.valueOf(String.valueOf(aas1.length)));
}
//查询这些二级标题与以及标题的关系
ZhyDocRelation rrold3 = new ZhyDocRelation();
rrold3.setSource(list6.get(a6).getDocParentId());
rrold3.setTarget((list6.get(a6).getId()));
List<ZhyDocRelation> rr5 = zhyDocRelationMapper.selectZhyRelationshipList(rrold3);
if(rr5.size()!=0){
list6.get(a6).setRealtionName(rr5.get(0).getRelationship());
}
ZhyDoc pp4 = test1Mapper.selectDocByIdId(list6.get(a6).getDocParentId());
list6.get(a6).setParentName(pp4.getDocTitle());
}
List<Map> result = list6.stream().map(iter -> {
Map<String, Object> map = JSON.parseObject(JSON.toJSONString(iter), Map.class);
return map;
}).collect(Collectors.toList());
list5.get(a5).setLevel2(result);
}
}
List<Map> result = list5.stream().map(iter -> {
Map<String, Object> map = JSON.parseObject(JSON.toJSONString(iter), Map.class);
return map;
}).collect(Collectors.toList());
list4.get(a4).setLevel2(result);
}
}
List<Map> result = list4.stream().map(iter -> {
Map<String, Object> map = JSON.parseObject(JSON.toJSONString(iter), Map.class);
return map;
}).collect(Collectors.toList());
list3.get(a3).setLevel2(result);
}
}
List< Map> result = list3.stream().map(iter -> {
Map<String, Object> map = JSON.parseObject(JSON.toJSONString(iter), Map.class);
return map;
}).collect(Collectors.toList());
list2.get(a2).setLevel2(result);
}
}
List<Map> result = list2.stream().map(iter -> {
Map<String, Object> map = JSON.parseObject(JSON.toJSONString(iter), Map.class);
return map;
}).collect(Collectors.toList());
list1.get(a1).setLevel2(result);
}
}
//查询有多少个大文件
List<ZhyFileManage> ll = test1Mapper.getFileList1();
Map map=new HashMap();
map.put("id", files.get(i).getId());
map.put("docTitle", files.get(i).getFileName().replaceAll("(?i)\\.docx$", ""));
map.put("level2",list1);
lists.add(map);
}
AjaxResult ajaxResult = new AjaxResult();
ajaxResult.put("data", lists);
return ajaxResult;
}
}
@GetMapping("/getFileListNew")
public TableDataInfo getFileListNew(ZhyDoc zhyDoc) {
System.out.println();
startPage();
List<ZhyDoc> list=test1Mapper.selectZhyDocList(zhyDoc);
AjaxResult ajaxResult = new AjaxResult();
ajaxResult.put("data", list);
return ajaxResult;
return getDataTable(list);
}
// @PostMapping("/getFileListNew")

37
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/ZhyPointController.java

@ -3,10 +3,13 @@ package com.ruoyi.web.controller.system;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.ruoyi.api.service.impl.PointService;
import com.ruoyi.common.utils.Neo4jUtil;
import com.ruoyi.system.domain.ZhyDoc;
import com.ruoyi.system.mapper.SysPointMapper;
import com.ruoyi.system.mapper.ZhyPointRelationshipMapper;
import com.ruoyi.system.service.IZhyPointRelationshipService;
import org.neo4j.driver.v1.StatementResult;
@ -50,6 +53,9 @@ public class ZhyPointController extends BaseController
Neo4jUtil neo4jUtil;
@Autowired
PointService pointService;
@Autowired
SysPointMapper sysPointMapper;
/**
* 查询知识点管理列表
*/
@ -61,7 +67,38 @@ public class ZhyPointController extends BaseController
List<ZhyPoint> list = zhyPointService.selectZhyPointList(zhyPoint);
return getDataTable(list);
}
@GetMapping("/getThreeGroup")
public Map getThreeGroup() {
ZhyPoint point=new ZhyPoint();
point.setType1("author");
List<ZhyPoint> zz=sysPointMapper.selectZhyPointList(point);
point.setType1("keyword");
List<ZhyPoint> gjc=sysPointMapper.selectZhyPointList(point);
point.setType1("agency");
List<ZhyPoint> jg=sysPointMapper.selectZhyPointList(point);
Map mapAll=new HashMap<>();
Map zzMap=new HashMap<>();
zzMap.put("id",1);
zzMap.put("name","作者");
zzMap.put("children",zz);
Map gjcMap=new HashMap<>();
gjcMap.put("id",2);
gjcMap.put("name","关键词");
gjcMap.put("children",gjc);
Map jgMap=new HashMap<>();
jgMap.put("id",3);
jgMap.put("name","机构");
jgMap.put("children",jg);
mapAll.put("zzMap",zzMap);
mapAll.put("gjcMap",gjcMap);
mapAll.put("jgMap",jgMap);
return mapAll;
}
/**
* 导出知识点管理列表
*/

17
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/ZhyPointRelationshipController.java

@ -88,37 +88,48 @@ public class ZhyPointRelationshipController extends BaseController
@PostMapping
public AjaxResult add(@RequestBody ZhyPointRelationship zhyPointRelationship)
{
List<Map> point = zhyPointMapper.selectPointByName(zhyPointRelationship.getStart());
System.out.println(zhyPointRelationship);
List<Map> point = zhyPointMapper.selectPointById(zhyPointRelationship.getStart());
int startid = Integer.valueOf(String.valueOf(point.get(0).get("uuid")));
String startType = String.valueOf(point.get(0).get("type1"));
List<Map> point2 = zhyPointMapper.selectPointByName(zhyPointRelationship.getEnd());
List<Map> point2 = zhyPointMapper.selectPointById(zhyPointRelationship.getEnd());
int endid = Integer.valueOf(String.valueOf(point2.get(0).get("uuid")));
String endType = String.valueOf(point2.get(0).get("type1"));
String RType = "";
System.out.println(point);
System.out.println(point2);
if (startType.equals("author")){
zhyPointRelationship.setAuthor(point.get(0).get("point_name").toString());
if (endType.equals("agency")){
zhyPointRelationship.setAgency(point2.get(0).get("point_name").toString());
RType = "相关机构";
}
if (endType.equals("keyword")){
zhyPointRelationship.setKeyword(point2.get(0).get("point_name").toString());
RType = "相关作者";
}
}
if (startType.equals("agency")){
zhyPointRelationship.setAgency(point.get(0).get("point_name").toString());
if (endType.equals("author")){
zhyPointRelationship.setAuthor(point2.get(0).get("point_name").toString());
RType = "相关机构";
}
if (endType.equals("keyword")){
zhyPointRelationship.setKeyword(point2.get(0).get("point_name").toString());
RType = "相关";
}
}
if (startType.equals("keyword")){
zhyPointRelationship.setKeyword(point.get(0).get("point_name").toString());
if (endType.equals("author")){
zhyPointRelationship.setAuthor(point2.get(0).get("point_name").toString());
RType = "相关作者";
}
if (endType.equals("agency")){
zhyPointRelationship.setAgency(point2.get(0).get("point_name").toString());
RType = "相关";
}
}

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

@ -35,6 +35,7 @@ public class ZhyTaskInfoController extends BaseController
@GetMapping("/list")
public TableDataInfo list(ZhyTaskInfo zhyTaskInfo)
{
System.out.println(zhyTaskInfo.getStatus());
startPage();
List<ZhyTaskInfo> list = zhyTaskInfoService.selectZhyTaskInfoList(zhyTaskInfo);
System.out.println(list);

2
ruoyi-api/src/main/java/com/ruoyi/api/mapper/ZhyPointMapper.java

@ -8,7 +8,7 @@ import java.util.Map;
@Mapper
public interface ZhyPointMapper {
List<Map> selectPointByName(@Param("name") String name);
List<Map> selectPointById(@Param("id") int id);
List<Map> selectPointByUUID(@Param("uuid") Integer uuid);

4
ruoyi-api/src/main/resources/mapper/api/ZhyPointMapper.xml

@ -8,6 +8,10 @@
<select id="selectPointByName" resultType="map">
select * from zhy_point where point_name=#{name}
</select>
<select id="selectPointById" resultType="map">
select * from zhy_point where id=#{id}
</select>
<select id="selectPointByUUID" resultType="map">
select * from zhy_point where uuid=#{uuid}
</select>

32
ruoyi-system/src/main/java/com/ruoyi/system/domain/ZhyPointRelationship.java

@ -17,22 +17,22 @@ public class ZhyPointRelationship extends BaseEntity
/** $column.columnComment */
private Long id;
private String start;
private String end;
private int start;
private int end;
public String getStart() {
public int getStart() {
return start;
}
public void setStart(String start) {
public void setStart(int start) {
this.start = start;
}
public String getEnd() {
public int getEnd() {
return end;
}
public void setEnd(String end) {
public void setEnd(int end) {
this.end = end;
}
@ -126,14 +126,16 @@ public class ZhyPointRelationship extends BaseEntity
@Override
public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
.append("id", getId())
.append("author", getAuthor())
.append("keyword", getKeyword())
.append("agency", getAgency())
.append("relationshipId", getRelationshipId())
.append("url", getUrl())
.append("title", getTitle())
.toString();
return "ZhyPointRelationship{" +
"id=" + id +
", start=" + start +
", end=" + end +
", author='" + author + '\'' +
", keyword='" + keyword + '\'' +
", agency='" + agency + '\'' +
", relationshipId=" + relationshipId +
", url='" + url + '\'' +
", title='" + title + '\'' +
'}';
}
}

26
ruoyi-system/src/main/java/com/ruoyi/system/domain/ZhyTask.java

@ -24,13 +24,21 @@ public class ZhyTask extends BaseEntity
/** 0大图谱,1小图谱 */
@Excel(name = "0大图谱,1小图谱")
private int type;
private Integer type;
/** 状态1:完成2:进行中,3:中断 */
@Excel(name = "状态1:完成2:进行中,3:中断")
private int status;
private Integer status;
public void setId(Long id)
public Integer getType() {
return type;
}
public void setType(Integer type) {
this.type = type;
}
public void setId(Long id)
{
this.id = id;
}
@ -48,21 +56,13 @@ public class ZhyTask extends BaseEntity
{
return userCommand;
}
public void setType(int type)
{
this.type = type;
}
public int getType()
{
return type;
}
public void setStatus(int status)
public void setStatus(Integer status)
{
this.status = status;
}
public int getStatus()
public Integer getStatus()
{
return status;
}

6
ruoyi-system/src/main/java/com/ruoyi/system/domain/ZhyTaskInfo.java

@ -28,7 +28,7 @@ public class ZhyTaskInfo extends BaseEntity
/** 状态 */
@Excel(name = "状态")
private int status;
private Integer status;
/** 分组id */
@Excel(name = "分组id")
@ -65,12 +65,12 @@ public class ZhyTaskInfo extends BaseEntity
{
return name2;
}
public void setStatus(int status)
public void setStatus(Integer status)
{
this.status = status;
}
public int getStatus()
public Integer getStatus()
{
return status;
}

8
ruoyi-system/src/main/resources/mapper/system/ZhyPointRelationshipMapper.xml

@ -21,12 +21,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<select id="selectZhyPointRelationshipList" parameterType="ZhyPointRelationship" resultMap="ZhyPointRelationshipResult">
<include refid="selectZhyPointRelationshipVo"/>
<where>
<if test="author != null and author != ''"> and author = #{author}</if>
<if test="keyword != null and keyword != ''"> and keyword = #{keyword}</if>
<if test="agency != null and agency != ''"> and agency = #{agency}</if>
<if test="author != null and author != ''"> and author LIKE CONCAT('%', #{author}, '%')</if>
<if test="keyword != null and keyword != ''"> and keyword LIKE CONCAT('%', #{keyword}, '%')</if>
<if test="agency != null and agency != ''"> and agency LIKE CONCAT('%', #{agency}, '%')</if>
<if test="relationshipId != null "> and relationship_id = #{relationshipId}</if>
<if test="url != null and url != ''"> and url = #{url}</if>
<if test="title != null and title != ''"> and title = #{title}</if>
<if test="title != null and title != ''"> and title LIKE CONCAT('%', #{title}, '%')</if>
</where>
</select>

2
ruoyi-system/src/main/resources/mapper/system/ZhyTaskInfoMapper.xml

@ -20,7 +20,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<select id="selectZhyTaskInfoList" parameterType="ZhyTaskInfo" resultMap="ZhyTaskInfoResult">
<include refid="selectZhyTaskInfoVo"/>
<where>
<if test="status != null and status != ''"> and status = #{status}</if>
<if test="status != null "> and status = #{status}</if>
<if test="groupId != null "> and group_id = #{groupId}</if>
<if test="taskId != null "> and task_id = #{taskId}</if>
<if test="name1 != null and name1 != ''">

4
ruoyi-system/src/main/resources/mapper/system/ZhyTaskMapper.xml

@ -20,8 +20,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<include refid="selectZhyTaskVo"/>
<where>
<if test="userCommand != null and userCommand != ''"> and user_command = #{userCommand}</if>
<if test="type != null and type != ''"> and type = #{type}</if>
<if test="status != null and status != ''"> and status = #{status}</if>
<if test="type != null"> and type = #{type}</if>
<if test="status != null"> and status = #{status}</if>
</where>
</select>

12
ruoyi-ui/src/api/system/file.js

@ -12,8 +12,16 @@ export function getFileList(data) {
export function getFileListNew(data) {
return request({
url: '/system/fileManage/getFileListNew',
method: 'POST',
data:data,
method: 'get',
params: data
})
}
export function getFileListNew1(data) {
return request({
url: '/system/fileManage/getFileListNew1',
method: 'post',
data: data
})
}
export function getTxt(url) {

7
ruoyi-ui/src/api/system/relationship1.js

@ -8,7 +8,14 @@ export function listRelationship(query) {
params: query
})
}
export function getThreeGroup() {
return request({
url: '/system/SysPoint/getThreeGroup',
method: 'get'
})
}
getThreeGroup
// 查询知识点关系详细
export function getRelationship(id) {
return request({

220
ruoyi-ui/src/views/statsPage.vue

@ -1,119 +1,119 @@
<template>
<div style="background-color: #f1f5f6;width: 100%;height: 120vw;">
<div style="width: 90%;display: flex;flex-direction: row;justify-content: space-between;margin: 0 auto;padding-top: 2%;">
<div id="articleNum" style="background-color: #fff; width: 19vw; border-radius: 1vw;">
<img src="../assets/images/article.png" style="width: 120px; height: 120px; margin-left: 40px;margin-top: 40px; margin-bottom: 30px; float: left" fit="fill"></img>
<div style="float: left; margin-left: 30px; margin-top: 40px">
<p style="float: left"><a style="font-weight: bold; font-size: 20px">知识实体数量</a></p>
<p ><a style="font-weight: bold; font-size: 45px">{{headForm.article}}</a><a style="font-size: 20px; margin-left: 5px"></a></p>
</div>
</div>
<div id="testNum" style="background-color: #fff; width: 19vw; border-radius: 1vw; ">
<img src="../assets/images/al.png" style="width: 120px; height: 120px; margin-left: 40px;margin-top: 40px; margin-bottom: 30px; float: left" fit="fill">
<div style="float: left; margin-left: 30px; margin-top: 40px">
<p style="float: left"><a style="font-weight: bold; font-size: 20px">案例数量</a></p>
<p ><a style="font-weight: bold; font-size: 45px">{{headForm.test}}</a><a style="font-size: 20px; margin-left: 5px"></a></p>
</div>
</div>
<div id="instanceNum" style="background-color: #fff; width: 19vw; border-radius: 1vw; ">
<img src="../assets/images/cs.png" style="width: 120px; height: 120px; margin-left: 40px;margin-top: 40px; margin-bottom: 30px; float: left" fit="fill">
<div style="float: left; margin-left: 30px; margin-top: 40px">
<p style="float: left"><a style="font-weight: bold; font-size: 20px">试题数量</a></p>
<p ><a style="font-weight: bold; font-size: 45px">{{headForm.instance}}</a><a style="font-size: 20px; margin-left: 5px"></a></p>
</div>
</div>
<div id="instanceNum" style="background-color: #fff; width: 19vw; border-radius: 1vw; ">
<img src="../assets/images/relation.png" style="width: 120px; height: 120px; margin-left: 40px;margin-top: 40px; margin-bottom: 30px; float: left" fit="fill">
<div style="float: left; margin-left: 30px; margin-top: 40px">
<p style="float: left"><a style="font-weight: bold; font-size: 20px">关系数量</a></p>
<p ><a style="font-weight: bold; font-size: 45px">{{headForm.relationNum}}</a><a style="font-size: 20px; margin-left: 5px"></a></p>
</div>
</div>
</div>
<div style="width: 90%;display: flex;flex-direction: row;justify-content: space-between;margin: 0 auto;height: 22vw;margin-top: 2vw;">
<div style="width: 35%;display: flex;flex-direction: column;justify-content: space-between;">
<div style="width: 100%;height: 45%;display: flex;flex-direction: row;justify-content: space-between;">
<div style="width: 48%;height: 100%;background-color: #e3f8e7;border-radius: 1vw;display: flex;flex-direction: row;justify-content: center;padding-top: 6%;">
<div style="width: 43%;">
<img src="../assets/images/picNum.png" style="width:100%;object-fit: contain;" />
</div>
<div style="width: 43%;padding-top: 5%;margin-left: 3%;">
<div style="margin: 0 auto;width: 90%;">
<div style="border-radius: 50%; background-color: #2aff00; width: 10px;height: 10px; float: left; margin-top: 10px; margin-right: 8px"></div>
<a style="color: #000000; float: left;font-weight: bold; font-size: 20px">图片数</a>
</div>
<div style="width: 90%;">
<p style="font-weight: bold; font-size: 45px; color: #000000;text-align: center;margin-top: 2vw;">{{picNum}}</p>
</div>
</div>
</div>
<div style="width: 48%;height: 100%;background-color: #ffedbb;border-radius: 1vw;display: flex;flex-direction: row;justify-content: center;padding-top:6%;">
<div style="width: 43%;">
<img src="../assets/images/videoNum.png" style="width:100%;object-fit: contain;" />
</div>
<div style="width: 43%;padding-top: 5%;margin-left: 3%;">
<div style="margin: 0 auto;width: 90%;">
<div style="border-radius: 50%; background-color: #fd9601; width: 10px;height: 10px; float: left; margin-top: 10px; margin-right: 8px"></div>
<a style="color: #000000; float: left;font-weight: bold; font-size: 20px">视频数</a>
</div>
<div style="width: 90%;">
<p style="font-weight: bold; font-size: 45px; color: #000000;text-align: center;margin-top: 2vw;">{{videoNum}}</p>
</div>
</div>
</div>
</div>
<div style="width: 100%;height: 45%;">
<div id="blueCard" style="background-color: #6bb3fd; width: 100%; border-radius: 1vw; height: 100%;padding-top: 1vw;display: flex;flex-direction: row;justify-content: center;">
<div style="width: 50%;height: 90%;padding-top: 8%;">
<div style="width: 90%;margin: 0 auto;">
<div style="margin-top:-10px;display: flex;flex-direction: row;justify-content: center;width: 100%;">
<div style="border-radius: 50%; background-color: #2aff00; width: 10px;height: 10px; float: left; margin-top: 10px; margin-right: 8px"></div>
<div style="font-size: 20px; color: #ffffff; float: left">近一个月学习班级数</div>
</div>
<div style="margin-top: 1vw;">
<div style="font-size: 2vw; color: #FFFFFF;text-align: center;width: 100%;">{{blueCardForm.leftNum}}</div>
</div>
</div>
</div>
<div style="width: 50%;border-left: #FFFFFF solid 2px;height: 90%;padding-top: 8%;">
<div style="width: 90%;margin: 0 auto;">
<div style="margin-top:-10px;display: flex;flex-direction: row;justify-content: center;width: 100%;">
<div style="border-radius: 50%; background-color: #ffa800; width: 10px;height: 10px; float: left; margin-top: 10px; margin-right: 8px"></div>
<div style="font-size: 20px; color: #ffffff; float: left">近一个月学习人数</div></div>
<div style="margin-top: 1vw;width: 100%;">
<div style="font-size: 2vw; color: #FFFFFF;text-align: center;width: 100%;">{{blueCardForm.rightNum}}</div>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- <div style="width: 60%;height: 100%">-->
<!-- <div style="width: 100%;height: 100%;">-->
<!-- <div id="pointCard" style="background-color: #fff; width: 100%; border-radius: 1vw;height: 100%;padding-top: 0.5vw;">-->
<!-- <div style="height: 2vw;display: flex;flex-direction: row;margin-left: 4%;">-->
<!-- <div-->
<!-- style="height: 70%;width: 0.5vw;background-color: #6600ff;margin-right: 0.5vw;margin-top: 0.5%;"></div>-->
<!-- <div style="line-height: 2vw;font-size: 1.2vw;color: #002a56;">大家都在学</div>-->
<div style="background-color: #f1f5f6;width: 100%;height: 100vw;">
<!-- <div style="width: 90%;display: flex;flex-direction: row;justify-content: flex-start;margin: 0 auto;padding-top: 2%;">-->
<!-- <div id="articleNum" style="background-color: #fff;margin-right: 5vw; width: 19vw; border-radius: 1vw;">-->
<!-- <img src="../assets/images/article.png" style="width: 120px; height: 120px; margin-left: 40px;margin-top: 40px; margin-bottom: 30px; float: left" fit="fill"></img>-->
<!-- <div style="float: left; margin-left: 30px; margin-top: 40px">-->
<!-- <p style="float: left"><a style="font-weight: bold; font-size: 20px">知识实体数量</a></p>-->
<!-- <p ><a style="font-weight: bold; font-size: 45px">{{headForm.article}}</a><a style="font-size: 20px; margin-left: 5px"></a></p>-->
<!-- </div>-->
<!-- </div>-->
<!--&lt;!&ndash; <div id="testNum" style="background-color: #fff; width: 19vw; border-radius: 1vw; ">&ndash;&gt;-->
<!--&lt;!&ndash; <img src="../assets/images/al.png" style="width: 120px; height: 120px; margin-left: 40px;margin-top: 40px; margin-bottom: 30px; float: left" fit="fill">&ndash;&gt;-->
<!--&lt;!&ndash; <div style="float: left; margin-left: 30px; margin-top: 40px">&ndash;&gt;-->
<!--&lt;!&ndash; <p style="float: left"><a style="font-weight: bold; font-size: 20px">案例数量</a></p>&ndash;&gt;-->
<!--&lt;!&ndash; <p ><a style="font-weight: bold; font-size: 45px">{{headForm.test}}</a><a style="font-size: 20px; margin-left: 5px"></a></p>&ndash;&gt;-->
<!--&lt;!&ndash; </div>&ndash;&gt;-->
<!--&lt;!&ndash; </div>&ndash;&gt;-->
<!--&lt;!&ndash; <div id="instanceNum" style="background-color: #fff; width: 19vw; border-radius: 1vw; ">&ndash;&gt;-->
<!--&lt;!&ndash; <img src="../assets/images/cs.png" style="width: 120px; height: 120px; margin-left: 40px;margin-top: 40px; margin-bottom: 30px; float: left" fit="fill">&ndash;&gt;-->
<!--&lt;!&ndash; <div style="float: left; margin-left: 30px; margin-top: 40px">&ndash;&gt;-->
<!--&lt;!&ndash; <p style="float: left"><a style="font-weight: bold; font-size: 20px">试题数量</a></p>&ndash;&gt;-->
<!--&lt;!&ndash; <p ><a style="font-weight: bold; font-size: 45px">{{headForm.instance}}</a><a style="font-size: 20px; margin-left: 5px"></a></p>&ndash;&gt;-->
<!--&lt;!&ndash; </div>&ndash;&gt;-->
<!--&lt;!&ndash; </div>&ndash;&gt;-->
<!-- <div id="instanceNum" style="background-color: #fff; width: 19vw; border-radius: 1vw; ">-->
<!-- <img src="../assets/images/relation.png" style="width: 120px; height: 120px; margin-left: 40px;margin-top: 40px; margin-bottom: 30px; float: left" fit="fill">-->
<!-- <div style="float: left; margin-left: 30px; margin-top: 40px">-->
<!-- <p style="float: left"><a style="font-weight: bold; font-size: 20px">关系数量</a></p>-->
<!-- <p ><a style="font-weight: bold; font-size: 45px">{{headForm.relationNum}}</a><a style="font-size: 20px; margin-left: 5px"></a></p>-->
<!-- </div>-->
<!-- </div>-->
<!-- </div>-->
<!-- <div style="width: 90%;display: flex;flex-direction: row;justify-content: space-between;margin: 0 auto;height: 22vw;margin-top: 2vw;">-->
<!-- <div style="width: 35%;display: flex;flex-direction: column;justify-content: space-between;">-->
<!-- <div style="width: 100%;height: 45%;display: flex;flex-direction: row;justify-content: space-between;">-->
<!-- <div style="width: 48%;height: 100%;background-color: #e3f8e7;border-radius: 1vw;display: flex;flex-direction: row;justify-content: center;padding-top: 6%;">-->
<!-- <div style="width: 43%;">-->
<!-- <img src="../assets/images/picNum.png" style="width:100%;object-fit: contain;" />-->
<!-- </div>-->
<!-- <div style="width: 43%;padding-top: 5%;margin-left: 3%;">-->
<!-- <div style="margin: 0 auto;width: 90%;">-->
<!-- <div style="border-radius: 50%; background-color: #2aff00; width: 10px;height: 10px; float: left; margin-top: 10px; margin-right: 8px"></div>-->
<!-- <a style="color: #000000; float: left;font-weight: bold; font-size: 20px">图片数</a>-->
<!-- </div>-->
<!-- <div style="width: 90%;">-->
<!-- <p style="font-weight: bold; font-size: 45px; color: #000000;text-align: center;margin-top: 2vw;">{{picNum}}</p>-->
<!-- </div>-->
<!-- </div>-->
<!-- </div>-->
<!-- <div style="width: 48%;height: 100%;background-color: #ffedbb;border-radius: 1vw;display: flex;flex-direction: row;justify-content: center;padding-top:6%;">-->
<!-- <div style="width: 43%;">-->
<!-- <img src="../assets/images/videoNum.png" style="width:100%;object-fit: contain;" />-->
<!-- </div>-->
<!-- <div style="width: 43%;padding-top: 5%;margin-left: 3%;">-->
<!-- <div style="margin: 0 auto;width: 90%;">-->
<!-- <div style="border-radius: 50%; background-color: #fd9601; width: 10px;height: 10px; float: left; margin-top: 10px; margin-right: 8px"></div>-->
<!-- <a style="color: #000000; float: left;font-weight: bold; font-size: 20px">视频数</a>-->
<!-- </div>-->
<!-- <div style="width: 90%;">-->
<!-- <p style="font-weight: bold; font-size: 45px; color: #000000;text-align: center;margin-top: 2vw;">{{videoNum}}</p>-->
<!-- </div>-->
<!-- </div>-->
<!-- </div>-->
<!-- </div>-->
<!-- <div style="width: 100%;height: 45%;">-->
<!-- <div id="blueCard" style="background-color: #6bb3fd; width: 100%; border-radius: 1vw; height: 100%;padding-top: 1vw;display: flex;flex-direction: row;justify-content: center;">-->
<!-- <div style="width: 50%;height: 90%;padding-top: 8%;">-->
<!-- <div style="width: 90%;margin: 0 auto;">-->
<!-- <div style="margin-top:-10px;display: flex;flex-direction: row;justify-content: center;width: 100%;">-->
<!-- <div style="border-radius: 50%; background-color: #2aff00; width: 10px;height: 10px; float: left; margin-top: 10px; margin-right: 8px"></div>-->
<!-- <div style="font-size: 20px; color: #ffffff; float: left">近一个月学习班级数</div>-->
<!-- </div>-->
<!-- <div style="margin-top: 1vw;">-->
<!-- <div style="font-size: 2vw; color: #FFFFFF;text-align: center;width: 100%;">{{blueCardForm.leftNum}}</div>-->
<!-- </div>-->
<!-- </div>-->
<!-- </div>-->
<!-- <div style="width: 50%;border-left: #FFFFFF solid 2px;height: 90%;padding-top: 8%;">-->
<!-- <div style="width: 90%;margin: 0 auto;">-->
<!-- <div style="margin-top:-10px;display: flex;flex-direction: row;justify-content: center;width: 100%;">-->
<!-- <div style="border-radius: 50%; background-color: #ffa800; width: 10px;height: 10px; float: left; margin-top: 10px; margin-right: 8px"></div>-->
<!-- <div style="font-size: 20px; color: #ffffff; float: left">近一个月学习人数</div></div>-->
<!-- <div style="margin-top: 1vw;width: 100%;">-->
<!-- <div style="font-size: 2vw; color: #FFFFFF;text-align: center;width: 100%;">{{blueCardForm.rightNum}}</div>-->
<!-- </div>-->
<!-- </div>-->
<!-- </div>-->
<!-- <div id="chart" style="height: 100%;width: 100%"></div>-->
<!-- </div>-->
<!-- </div>-->
<!-- </div>-->
<!--&lt;!&ndash; <div style="width: 60%;height: 100%">&ndash;&gt;-->
<!--&lt;!&ndash; <div style="width: 100%;height: 100%;">&ndash;&gt;-->
<!--&lt;!&ndash; <div id="pointCard" style="background-color: #fff; width: 100%; border-radius: 1vw;height: 100%;padding-top: 0.5vw;">&ndash;&gt;-->
<!--&lt;!&ndash; <div style="height: 2vw;display: flex;flex-direction: row;margin-left: 4%;">&ndash;&gt;-->
<!--&lt;!&ndash; <div&ndash;&gt;-->
<!--&lt;!&ndash; style="height: 70%;width: 0.5vw;background-color: #6600ff;margin-right: 0.5vw;margin-top: 0.5%;"></div>&ndash;&gt;-->
<!--&lt;!&ndash; <div style="line-height: 2vw;font-size: 1.2vw;color: #002a56;">大家都在学</div>&ndash;&gt;-->
<!--&lt;!&ndash; </div>&ndash;&gt;-->
<!--&lt;!&ndash; <div id="chart" style="height: 100%;width: 100%"></div>&ndash;&gt;-->
<!--&lt;!&ndash; </div>&ndash;&gt;-->
<!--&lt;!&ndash; </div>&ndash;&gt;-->
<!--&lt;!&ndash; </div>&ndash;&gt;-->
</div>
<!-- </div>-->
<!-- <div class="content2" style="margin-bottom: 1vw;">-->
<!-- <div style="height: 2vw;display: flex;flex-direction: row;margin-left: 2%;float: left;margin-top: 0.5vw;">-->
<!-- <div-->

53
ruoyi-ui/src/views/system/SysPoint/index.vue

@ -1,6 +1,6 @@
<template>
<div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="88px">
<el-form-item label="知识点名称" prop="pointName">
<el-input
v-model="queryParams.pointName"
@ -18,12 +18,18 @@
<!-- />-->
<!-- </el-form-item>-->
<el-form-item label="类型" prop="type1">
<el-input
<el-select
v-model="queryParams.type1"
placeholder="请输入类型"
placeholder="请选择类型"
clearable
@keyup.enter.native="handleQuery"
/>
>
<el-option
v-for="item in typeOptions"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
@ -81,7 +87,7 @@
<el-table-column type="selection" width="55" align="center" />
<!-- <el-table-column label="${comment}" align="center" prop="id" />-->
<el-table-column label="知识点名称" align="center" prop="pointName" />
<el-table-column label="类型" align="center" prop="type1" />
<el-table-column label="类型" align="center" prop="type1" :formatter="formatType" />
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<!-- <el-button-->
@ -112,16 +118,28 @@
<!-- 添加或修改知识点管理对话框 -->
<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 ref="form" :model="form" :rules="rules" label-width="88px">
<el-form-item label="知识点名称" prop="pointName">
<el-input v-model="form.pointName" placeholder="请输入知识点名称" />
</el-form-item>
<el-form-item label="neo4j ID" prop="uuid">
<el-input v-model="form.uuid" placeholder="请输入neo4j ID" />
</el-form-item>
<!-- <el-form-item label="neo4j ID" prop="uuid">-->
<!-- <el-input v-model="form.uuid" placeholder="请输入neo4j ID" />-->
<!-- </el-form-item>-->
<el-form-item label="类型" prop="type1">
<el-input v-model="form.type1" placeholder="请输入类型" />
<el-select
v-model="form.type1"
placeholder="请选择类型"
clearable
>
<el-option
v-for="item in typeOptions"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
@ -138,6 +156,11 @@ export default {
name: "SysPoint",
data() {
return {
typeOptions: [
{ label: '作者', value: 'author' },
{ label: '机构', value: 'agency' },
{ label: '关键词', value: 'keyword' }
],
//
loading: true,
//
@ -175,6 +198,14 @@ export default {
this.getList();
},
methods: {
formatType(row, column, cellValue) {
const typeMap = {
author: '作者',
agency: '机构',
keyword: '关键词'
};
return typeMap[cellValue] || cellValue;
},
/** 查询知识点管理列表 */
getList() {
this.loading = true;

88
ruoyi-ui/src/views/system/create/index.vue

@ -156,8 +156,8 @@
</div>
</div>
<div style="text-align: center">
<el-button @click="build">构建</el-button>
<el-button @click="build" style="margin-left: 200px">重置</el-button>
<el-button type="primary" @click="build">构建</el-button>
<el-button type="primary" @click="resetBuild" style="margin-left: 200px">重置</el-button>
</div>
</div>
@ -217,8 +217,8 @@
</div>
<div style="text-align: center">
<el-button @click="build1">构建</el-button>
<el-button @click="build" style="margin-left: 200px">重置</el-button>
<el-button type="primary" @click="build1">构建</el-button>
<el-button type="primary" @click="resetBuild" style="margin-left: 200px">重置</el-button>
</div>
</div>
@ -277,22 +277,55 @@ export default {
value4:"",
value5:"",
value6:"",
searchItems3:[{
searchItems3:[
{
tags: [],
inputValue: ''
}],
searchItems1:[{
inputValue: '',
},
{
tags: [],
inputValue: '',
},
{
tags: [],
inputValue: '',
}],
searchItems1:[ {
tags: [],
inputValue: ''
}],
searchItems2:[{
inputValue: '',
},
{
tags: [],
inputValue: '',
},
{
tags: [],
inputValue: '',
}],
searchItems2:[ {
tags: [],
inputValue: ''
}],
searchItems4:[{
inputValue: '',
},
{
tags: [],
inputValue: '',
},
{
tags: [],
inputValue: '',
}],
searchItems4:[ {
tags: [],
inputValue: ''
}],
inputValue: '',
},
{
tags: [],
inputValue: '',
},
{
tags: [],
inputValue: '',
}],
selected1: [],
selectedIds1:[],
cascadeOptions1: [],
@ -324,6 +357,29 @@ export default {
},
methods: {
resetBuild(){
this.searchItems1 = this.resetSearchItems();
this.searchItems2 = this.resetSearchItems();
this.searchItems3 = this.resetSearchItems();
this.searchItems4 = this.resetSearchItems();
// selected selectedIds
this.selected1 = [];
this.selectedIds1 = [];
this.selected2 = [];
this.selectedIds2 = [];
this.selected3 = [];
this.selectedIds3 = [];
this.selected4 = [];
this.selectedIds4 = [];
},
resetSearchItems() {
return [
{ tags: [], inputValue: '' },
{ tags: [], inputValue: '' },
{ tags: [], inputValue: '' }
];
},
handleChange1(value) {
console.log(this.selected1)
console.log('完整选中路径:', value)

2
ruoyi-ui/src/views/system/docmuban/index.vue

@ -306,7 +306,7 @@
<el-input v-model="form.text"></el-input>
</el-form-item>
<el-form-item label="层级">
<el-input v-model="form.type"></el-input>
<el-input v-model="form.type" disabled></el-input>
</el-form-item>
<!-- <el-form-item label="父级节点">-->
<!-- <el-select v-model="form.parentId" placeholder="请选择父级节点" :disabled="this.form.type=='方向'|| this.form.type=='业务系统' || this.form.type=='模型'">-->

25
ruoyi-ui/src/views/system/fileManage/index.vue

@ -7,7 +7,7 @@
<el-input v-model="queryParams.docTitle" placeholder="请输入节点名称" clearable/>
</el-form-item>
<el-form-item label="组别" prop="groupId">
<el-select v-model="queryParams.groupId" clearable placeholder="请选择组别">
<el-select v-model="queryParams.groupId" placeholder="请选择组别" clearable>
<el-option
v-for="item in options1"
:key="item.key"
@ -132,7 +132,13 @@
</el-table-column>
</el-table>
<pagination
v-show="total>0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="handleQuery"
/>
<!-- 模板选择对话框 -->
<el-dialog :title="templateDialog.title" :visible.sync="templateDialog.visible" width="900px" append-to-body>
<div class="template-selection">
@ -763,7 +769,9 @@ export default {
queryParams: {
docTitle: "",
groupId:null,
docLevel:null
docLevel:null,
pageNum: 1,
pageSize: 10,
},
level1: undefined,
showSearch: true,
@ -851,7 +859,8 @@ export default {
loading: false,
parentLevel: 0,
groupId:0,
disabled:false
disabled:false,
total:0
}
},
methods: {
@ -1599,14 +1608,16 @@ export default {
this.queryParams.docLevel !== null &&
this.queryParams.docLevel !== '' && {
docLevel: Number(this.queryParams.docLevel)
})
}),
pageNum: this.queryParams.pageNum,
pageSize: this.queryParams.pageSize
};
getFileListNew(data)
.then((res) => {
console.log('文件列表:', res);
this.fileList = res.data || [];
this.fileList = res.rows || [];
this.total = res.total;
// docTitle fileDocxList openDowload
if (!this.queryParams.docTitle) {
this.fileDocxList = res.files || [];

6
ruoyi-ui/src/views/system/fileManage/indexNB.vue

@ -425,7 +425,7 @@ import {
updateTxt,
getAllTxtList,
downInfo,
getFileListNew, updateOpenDown, getAllFieldList, downInfoFile, getAllTxtListP, insertNode, reset
getFileListNew1, updateOpenDown, getAllFieldList, downInfoFile, getAllTxtListP, insertNode, reset
} from "@/api/system/file";
import Editor from '@/components/Editor/index.vue'
import {deletAllInfoNew, deleteDocTitleOnly, getFileById} from "../../../api/system/file";
@ -1437,7 +1437,7 @@ export default {
if (this.queryParams.docTitle == "") {
var data = {}
getFileListNew(data).then((res) => {
getFileListNew1(data).then((res) => {
console.log(res);
this.fileList = res.data;
this.fileDocxList = res.files;
@ -1452,7 +1452,7 @@ export default {
var data = {
'docTitle': this.queryParams.docTitle,
}
getFileListNew(data).then((res) => {
getFileListNew1(data).then((res) => {
console.log(res);
this.fileList = res.data;
loading.close();

17
ruoyi-ui/src/views/system/info/index.vue

@ -10,7 +10,7 @@
/>
</el-form-item>
<el-form-item label="任务编号" prop="name1">
<el-select v-model="queryParams.taskId" placeholder="请选择">
<el-select v-model="queryParams.taskId" placeholder="请选择" clearable>
<el-option
v-for="item in taskList"
:key="item.id"
@ -19,6 +19,18 @@
</el-option>
</el-select>
</el-form-item>
<el-form-item label="状态" prop="status">
<el-select
v-model="queryParams.status"
placeholder="请选择状态"
clearable
style="width: 200px"
>
<el-option label="未完成" :value="0" />
<el-option label="已完成" :value="1" />
<el-option label="异常" :value="2" />
</el-select>
</el-form-item>
<!-- <el-form-item label="关键词2" prop="name2">-->
<!-- <el-input-->
<!-- v-model="queryParams.name2"-->
@ -207,6 +219,7 @@ export default {
status: null,
groupId: null,
taskId: null
},
//
form: {},
@ -253,11 +266,13 @@ export default {
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm("queryForm");
this.queryParams.taskId=null
this.handleQuery();
},
//

42
ruoyi-ui/src/views/system/relationship/index.vue

@ -74,17 +74,17 @@
v-hasPermi="['system:relationship: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:relationship:edit']"
>修改</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:relationship:edit']"-->
<!-- >修改</el-button>-->
<!-- </el-col>-->
<el-col :span="1.5">
<el-button
type="danger"
@ -96,16 +96,16 @@
v-hasPermi="['system:relationship: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:relationship:export']"
>导出</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:relationship:export']"-->
<!-- >导出</el-button>-->
<!-- </el-col>-->
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>

435
ruoyi-ui/src/views/system/small/index.vue

@ -0,0 +1,435 @@
<template>
<div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="作者" prop="author">
<el-input
v-model="queryParams.author"
placeholder="请输入作者"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="关键词" prop="keyword">
<el-input
v-model="queryParams.keyword"
placeholder="请输入关键词"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="机构" prop="agency">
<el-input
v-model="queryParams.agency"
placeholder="请输入机构"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="文献名" prop="title">
<el-input
v-model="queryParams.title"
placeholder="请输入文献名"
clearable
@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:relationship: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:relationship: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:relationship: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:relationship:export']"
>导出</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="relationshipList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="关键词" align="center" prop="keyword" />
<el-table-column label="作者" align="center" prop="author" />
<el-table-column label="机构" align="center" prop="agency" />
<el-table-column label="文献名" align="center" prop="title" />
<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:relationship:edit']"
>修改</el-button>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
v-hasPermi="['system:relationship: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="author">
<el-cascader :options="cascadeOptions1" v-model="form.start" style="width: 200px"
:show-all-levels="false" class="cascader-ellipsis"
:props="cascaderProps"></el-cascader>
</el-form-item>
<el-form-item label="终点节点" prop="keyword">
<el-cascader :options="cascadeOptions1" v-model="form.end" style="width: 200px"
:show-all-levels="false" class="cascader-ellipsis"
:props="cascaderProps"></el-cascader>
</el-form-item>
<!-- <el-form-item label="机构" prop="agency">-->
<!-- <el-input v-model="form.agency" placeholder="请输入机构" />-->
<!-- </el-form-item>-->
<!-- <el-form-item label="文献名" prop="title">-->
<!-- <el-input v-model="form.title" placeholder="请输入文献名" />-->
<!-- </el-form-item>-->
<el-form-item label="上传文献" prop="articleId">
<!-- <el-input v-model="form.articleName" placeholder="请输入文献名称" />-->
<el-upload v-model="diaForm.list"
:limit="1"
:on-exceed="handleExceed"
:on-preview="handlePreview"
:before-upload="beforeAvatarUpload"
:on-remove="handleRemoveFile"
:headers="reqHeaders"
:on-success="onUploadSuccess"
action="http://localhost:10031/common/upload"
:file-list="resultFileList"
class="upload-files" >
<div class="upfile-btn">
<d2-icon name="document-upload" class="document-upload"/>
<div><el-button type="primary" size="small">上传</el-button></div>
</div>
</el-upload>
</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 { listRelationship, getRelationship, delRelationship, addRelationship, updateRelationship } from "@/api/system/relationship1";
import {getThreeGroup} from "../../../api/system/relationship1";
export default {
name: "Relationship",
data() {
return {
//
loading: true,
//
ids: [],
//
single: true,
//
multiple: true,
//
showSearch: true,
//
total: 0,
//
relationshipList: [],
//
title: "",
//
open: false,
//
queryParams: {
pageNum: 1,
pageSize: 10,
author: null,
keyword: null,
agency: null,
relationshipId: null,
url: null,
title: null
},
//
form: {},
//
rules: {
},
cascadeOptions1:[],
cascaderProps: {
value: 'id', // `id` value
label: 'pointName', // `docTitle` label
children: 'children', // `children` children
disabled: 'disabled',
emitPath: false//
},
resultFileList:[],
diaForm: {
desc: '',
list: [],
},
};
},
created() {
this.getList();
this.getThreeGroup()
},
methods: {
//
onUploadSuccess(response, file, fileList) {
if (response && response.code === 200) {
if (response) {
this.prodectName = response.url
console.log(this.prodectName);
this.resultFileList.push({
url: response.url,
name: response.fileName,
uid: file.uid
});
this.dealPDF();
setTimeout(() => {
this.dealPDF();
}, 1);
}
} else if (response && response.msg) {
console.log('upload failed', response.msg);
}
},
//
dealPDF() {
var liElements = document.querySelectorAll('ul.el-upload-list.el-upload-list--picture li.el-upload-list__item');
liElements.forEach(function (liElement) {
var aElement = liElement.querySelector('a.el-upload-list__item-name');
if (aElement && aElement.textContent.includes('.pdf')) {
var imgElement = liElement.querySelector('img.el-upload-list__item-thumbnail');
if (imgElement) {
imgElement.src = ''; // URL
}
}
});
},
reqHeaders() {
return {
Authorization: "Bearer " + getToken()
};
},
handleRemoveFile(file, fileList) {
if (!file) {
return;
}
const index = this.resultFileList.findIndex(item => item.uid === file.uid);
this.resultFileList.splice(index, 1);
},
// 30M
beforeAvatarUpload(file) {
const isLt5M = file.size / 1024 / 1024 < 30;
if (!isLt5M) {
this.$message.error('XXXX');
}
return isLt5M;
},
handlePreview(file) {
console.log(file);
},
// 5
handleExceed(files, fileList) {
if (fileList && fileList.length == 1) {
this.$message.warning('只能上传一个文件');
}
},
getThreeGroup(){
getThreeGroup().then(res=>{
this.cascadeOptions1 = [
{
id: res.zzMap.id,
pointName: res.zzMap.name,
children: res.zzMap.children,
expanded: true
},
{
id: res.jgMap.id,
pointName: res.jgMap.name,
children: res.jgMap.children,
},
{
id: res.gjcMap.id,
pointName: res.gjcMap.name,
children: res.gjcMap.children,
},
]
})
},
/** 查询知识点关系列表 */
getList() {
this.loading = true;
listRelationship(this.queryParams).then(response => {
this.relationshipList = response.rows;
this.total = response.total;
this.loading = false;
});
},
//
cancel() {
this.open = false;
this.reset();
},
//
reset() {
this.form = {
id: null,
author: null,
keyword: null,
agency: null,
relationshipId: null,
url: null,
title: 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.id)
this.single = selection.length!==1
this.multiple = !selection.length
},
/** 新增按钮操作 */
handleAdd() {
this.reset();
this.open = true;
this.title = "添加知识点关系";
},
/** 修改按钮操作 */
handleUpdate(row) {
this.reset();
const id = row.id || this.ids
getRelationship(id).then(response => {
this.form = response.data;
this.open = true;
this.title = "修改知识点关系";
});
},
/** 提交按钮 */
submitForm() {
this.$refs["form"].validate(valid => {
if (valid) {
if (this.form.id != null) {
updateRelationship(this.form).then(response => {
this.$modal.msgSuccess("修改成功");
this.open = false;
this.getList();
});
} else {
if(this.resultFileList.length>0){
this.form.title=this.resultFileList[0].name.replace('.pdf', '');
}
addRelationship(this.form).then(response => {
this.$modal.msgSuccess("新增成功");
this.open = false;
this.getList();
});
}
}
});
},
/** 删除按钮操作 */
handleDelete(row) {
const ids = row.id || this.ids;
this.$modal.confirm('是否确认删除知识点关系编号为"' + ids + '"的数据项?').then(function() {
return delRelationship(ids);
}).then(() => {
this.getList();
this.$modal.msgSuccess("删除成功");
}).catch(() => {});
},
/** 导出按钮操作 */
handleExport() {
this.download('system/relationship/export', {
...this.queryParams
}, `relationship_${new Date().getTime()}.xlsx`)
}
}
};
</script>
<style scoped>
/* 作用于选中后的输入框文本 */
.cascader-ellipsis :deep(.el-input__inner) {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
width: 300px;
}
.el-cascader-menu__list{
width: 300px !important;
overflow: hidden !important;
}
</style>

25
ruoyi-ui/src/views/system/task/index.vue

@ -1,6 +1,30 @@
<template>
<div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="状态" prop="status">
<el-select
v-model="queryParams.type"
placeholder="请选择状态"
clearable
style="width: 200px"
>
<el-option label="大图谱" :value="0" />
<el-option label="小图谱" :value="1" />
</el-select>
</el-form-item>
<el-form-item label="状态" prop="status">
<el-select
v-model="queryParams.status"
placeholder="请选择状态"
clearable
style="width: 200px"
>
<el-option label="构建中" :value="0" />
<el-option label="已完成" :value="1" />
</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>
@ -235,6 +259,7 @@ export default {
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.queryParams.type=null
this.getList();
},
/** 重置按钮操作 */

Loading…
Cancel
Save