7 changed files with 424 additions and 0 deletions
|
After Width: | Height: | Size: 3.0 KiB |
@ -0,0 +1,215 @@ |
|||||
|
<template> |
||||
|
<div style="width: 100%;height: 100%;"> |
||||
|
<img style="width: 100%;height: 100%;position: absolute;z-index:-1;" src="../assets/img/twbg1.jpg"> |
||||
|
<headInfo style="position: absolute;z-index: 100"></headInfo> |
||||
|
<div class="content"> |
||||
|
<div class="leftContent"> |
||||
|
<div class="leftBox1"> |
||||
|
<div style="width: 50%;margin: 0 auto;"> |
||||
|
<p style="font-size: 1vw;">Hi,{{ userName }}~</p> |
||||
|
<p style="font-size: 0.7vw;">欢迎使用课程辅助系统</p> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="leftBox2"> |
||||
|
<div class="muluBox"> |
||||
|
<img src="../assets/img/leftBox.png" style="width: 100%;object-fit: contain;z-index: 1;position: absolute;"> |
||||
|
<div class="muluList"> |
||||
|
<div v-for="item in mulu" :key="item"> |
||||
|
<div class="oneMulu" v-if="page!=item" @click="goInfo(item.info)"> |
||||
|
<div style="width: 80%;text-align: center;">{{ item.name }}</div> |
||||
|
<img src="../assets/img/jiantou.png" |
||||
|
style="width: 0.9vw;height:0.9vw;object-fit: contain;float: right;margin-top: 13%;"> |
||||
|
</div> |
||||
|
<div class="oneMuluXuan" v-else> |
||||
|
<div style="width: 72%;text-align: center;">{{ item.name }}</div> |
||||
|
<img src="../assets/img/jiantou.png" |
||||
|
style="width: 0.9vw;height:0.9vw;object-fit: contain;float: right;margin-top: 8%;"> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="rightContent"> |
||||
|
<div class="contentInfo"> |
||||
|
<div class="contentTitle">{{contentInfo.title}}</div> |
||||
|
<div class="contentText" v-html="contentInfo.content"></div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
|
||||
|
|
||||
|
<div style="width: 100%;height: 3%;position: fixed;bottom: 0px;z-index: 100"> |
||||
|
<foot></foot> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
</template> |
||||
|
<script> |
||||
|
|
||||
|
import headInfo from "@/components/Head.vue"; |
||||
|
import Foot from "@/components/Foot.vue"; |
||||
|
import {getTwInfo} from "@/api/kcInfo"; |
||||
|
export default { |
||||
|
// eslint-disable-next-line vue/multi-word-component-names |
||||
|
name: 'TWInfoXq', |
||||
|
components: {Foot, headInfo}, |
||||
|
data() { |
||||
|
return{ |
||||
|
docId:undefined, |
||||
|
level:0, |
||||
|
url:"", |
||||
|
userName:"", |
||||
|
mulu: [ |
||||
|
{id: 0, name: "图文资源", info: "TwInfo"}, |
||||
|
{id: 1, name: "视频资源", info: "SpInfo"}, |
||||
|
{id: 2, name: "动画显示", info: "DhInfo"}, |
||||
|
{id: 3, name: "计算模块", info: "JsInfo"}, |
||||
|
{id: 4, name: "知识图谱", info: "Graph"}, |
||||
|
{id: 4, name: "帮助文档", info: "Help"} |
||||
|
], |
||||
|
contentInfo:{ |
||||
|
title:"", |
||||
|
content:"" |
||||
|
}, |
||||
|
|
||||
|
} |
||||
|
}, |
||||
|
methods:{ |
||||
|
goInfo(info) { |
||||
|
console.log(info) |
||||
|
this.$router.push('/' + info) |
||||
|
}, |
||||
|
getInfo(){ |
||||
|
var data = { |
||||
|
id:this.docId |
||||
|
} |
||||
|
getTwInfo(data).then((res)=>{ |
||||
|
this.contentInfo.title = res.data.data.name |
||||
|
this.contentInfo.content = res.data.data.contentInfo |
||||
|
|
||||
|
}) |
||||
|
} |
||||
|
}, |
||||
|
mounted() { |
||||
|
this.docId = this.$route.query.id; |
||||
|
this.userType = localStorage.getItem("type"); |
||||
|
this.userName = localStorage.getItem("name"); |
||||
|
this.getInfo(); |
||||
|
} |
||||
|
} |
||||
|
</script> |
||||
|
<style scoped> |
||||
|
.content { |
||||
|
width: 100%; |
||||
|
height: 86%; |
||||
|
} |
||||
|
|
||||
|
.leftContent { |
||||
|
width: 14%; |
||||
|
height: 100%; |
||||
|
float: left; |
||||
|
margin-top: 4.4%; |
||||
|
|
||||
|
} |
||||
|
|
||||
|
.leftBox1 { |
||||
|
width: 100%; |
||||
|
height: 10%; |
||||
|
margin-top: 12%; |
||||
|
color: #7cdeff; |
||||
|
} |
||||
|
|
||||
|
.leftBox2 { |
||||
|
width: 100%; |
||||
|
height: 90%; |
||||
|
|
||||
|
} |
||||
|
|
||||
|
.muluBox { |
||||
|
margin: 3% 14%; |
||||
|
height: 92%; |
||||
|
width: 72%; |
||||
|
position: relative; |
||||
|
|
||||
|
} |
||||
|
|
||||
|
.muluList { |
||||
|
width: 100%; |
||||
|
height: 90%; |
||||
|
//background-color: #7cdeff; |
||||
|
display: flex; |
||||
|
flex-direction: column; |
||||
|
position: absolute; |
||||
|
z-index: 2; |
||||
|
margin-top: 20%; |
||||
|
|
||||
|
} |
||||
|
|
||||
|
.oneMulu { |
||||
|
width: 80%; |
||||
|
height: 2.5vw; |
||||
|
line-height: 2.5vw; |
||||
|
font-size: 0.9vw; |
||||
|
|
||||
|
border-bottom: 1px solid #0d3455; |
||||
|
margin-left: 10%; |
||||
|
color: #d1d3d7; |
||||
|
display: flex; |
||||
|
flex-direction: row; |
||||
|
} |
||||
|
|
||||
|
.oneMuluXuan { |
||||
|
background-image: url("../assets/img/xuan.png"); |
||||
|
width: 90%; |
||||
|
height: 2.5vw; |
||||
|
line-height: 2.5vw; |
||||
|
font-size: 0.9vw; |
||||
|
color: #d1d3d7; |
||||
|
display: flex; |
||||
|
flex-direction: row; |
||||
|
padding-left: 10%; |
||||
|
} |
||||
|
|
||||
|
|
||||
|
.rightContent { |
||||
|
width: 84%; |
||||
|
height: 100%; |
||||
|
float: left; |
||||
|
position: relative; |
||||
|
} |
||||
|
|
||||
|
|
||||
|
.contentInfo{ |
||||
|
width: 100%; |
||||
|
height: 96%; |
||||
|
background-color: rgba(20, 119, 208, 0.82); |
||||
|
position: absolute; |
||||
|
z-index: 101; |
||||
|
margin-top: 7%; |
||||
|
border-radius: 1vw; |
||||
|
} |
||||
|
.contentTitle{ |
||||
|
width: 100%; |
||||
|
height: 8%; |
||||
|
|
||||
|
font-size: 1.5vw; |
||||
|
color: #ffffff; |
||||
|
text-align: center; |
||||
|
letter-spacing: 5px; |
||||
|
line-height: 3vw; |
||||
|
|
||||
|
|
||||
|
} |
||||
|
.contentText{ |
||||
|
width: 96%; |
||||
|
height: 89%; |
||||
|
margin-top: 1%; |
||||
|
font-size: 1vw; |
||||
|
margin-left: 2%; |
||||
|
overflow-y: scroll; |
||||
|
color: #ffffff; |
||||
|
|
||||
|
} |
||||
|
</style> |
||||
@ -0,0 +1,77 @@ |
|||||
|
package com.main.woka.Web.Controller; |
||||
|
|
||||
|
|
||||
|
import com.main.woka.Common.core.AjaxResult; |
||||
|
import com.main.woka.Common.util.file.FileUploadUtils; |
||||
|
import com.main.woka.Common.util.file.FileUtils; |
||||
|
import com.main.woka.Config.RuoYiConfig; |
||||
|
import com.main.woka.Config.ServerConfig; |
||||
|
import org.springframework.beans.factory.annotation.Autowired; |
||||
|
import org.springframework.web.bind.annotation.PostMapping; |
||||
|
import org.springframework.web.bind.annotation.RequestMapping; |
||||
|
import org.springframework.web.bind.annotation.RequestParam; |
||||
|
import org.springframework.web.bind.annotation.RestController; |
||||
|
import org.springframework.web.multipart.MultipartFile; |
||||
|
|
||||
|
import java.io.File; |
||||
|
import java.io.IOException; |
||||
|
import java.nio.file.Files; |
||||
|
import java.nio.file.Path; |
||||
|
import java.nio.file.Paths; |
||||
|
import java.text.SimpleDateFormat; |
||||
|
import java.util.Date; |
||||
|
|
||||
|
@RestController |
||||
|
@RequestMapping("/fileUpdate") |
||||
|
public class FileUpdateController extends BaseController { |
||||
|
|
||||
|
|
||||
|
// 定义上传文件的存储路径
|
||||
|
private static final String UPLOAD_DIR = "D:/kcfz/upload/"; |
||||
|
|
||||
|
@PostMapping("/upload") |
||||
|
public AjaxResult uploadFile(@RequestParam("file") MultipartFile file) { |
||||
|
if (file.isEmpty()) { |
||||
|
return AjaxResult.error(); |
||||
|
} |
||||
|
|
||||
|
try { |
||||
|
// 确保上传目录存在
|
||||
|
File uploadDir = new File(UPLOAD_DIR); |
||||
|
if (!uploadDir.exists()) { |
||||
|
uploadDir.mkdirs(); |
||||
|
} |
||||
|
|
||||
|
// 获取文件名并生成唯一的文件名
|
||||
|
String fileName = generateUniqueFileName(file.getOriginalFilename()); |
||||
|
Path filePath = Paths.get(UPLOAD_DIR, fileName); |
||||
|
|
||||
|
// 将文件写入磁盘
|
||||
|
Files.copy(file.getInputStream(), filePath); |
||||
|
|
||||
|
// 返回文件访问路径
|
||||
|
String fileAccessPath = "http://127.0.0.1:10031/profile/" + fileName; |
||||
|
AjaxResult ajaxResult = new AjaxResult(); |
||||
|
ajaxResult.put("fileName",fileName); |
||||
|
ajaxResult.put("url",fileAccessPath); |
||||
|
return AjaxResult.success(ajaxResult); |
||||
|
} catch (IOException e) { |
||||
|
e.printStackTrace(); |
||||
|
return AjaxResult.error(); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
// 生成唯一的文件名
|
||||
|
private String generateUniqueFileName(String originalFileName) { |
||||
|
String extension = ""; |
||||
|
int i = originalFileName.lastIndexOf('.'); |
||||
|
if (i > 0) { |
||||
|
extension = originalFileName.substring(i); |
||||
|
} |
||||
|
|
||||
|
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS"); |
||||
|
String timestamp = sdf.format(new Date()); |
||||
|
|
||||
|
return timestamp + "_" + Math.abs(originalFileName.hashCode()) + extension; |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,41 @@ |
|||||
|
package com.main.woka.Web.Dao; |
||||
|
|
||||
|
public class KcTwImg { |
||||
|
private Long imgId; |
||||
|
private Long twId; |
||||
|
private String imgUrl; |
||||
|
|
||||
|
|
||||
|
public Long getImgId() { |
||||
|
return imgId; |
||||
|
} |
||||
|
|
||||
|
public void setImgId(Long imgId) { |
||||
|
this.imgId = imgId; |
||||
|
} |
||||
|
|
||||
|
public Long getTwId() { |
||||
|
return twId; |
||||
|
} |
||||
|
|
||||
|
public void setTwId(Long twId) { |
||||
|
this.twId = twId; |
||||
|
} |
||||
|
|
||||
|
public String getImgUrl() { |
||||
|
return imgUrl; |
||||
|
} |
||||
|
|
||||
|
public void setImgUrl(String imgUrl) { |
||||
|
this.imgUrl = imgUrl; |
||||
|
} |
||||
|
|
||||
|
@Override |
||||
|
public String toString() { |
||||
|
return "KcTwImg{" + |
||||
|
"imgId=" + imgId + |
||||
|
", twId=" + twId + |
||||
|
", imgUrl='" + imgUrl + '\'' + |
||||
|
'}'; |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,13 @@ |
|||||
|
package com.main.woka.Web.Mapper; |
||||
|
|
||||
|
import com.main.woka.Web.Dao.KcTwImg; |
||||
|
import org.apache.ibatis.annotations.Mapper; |
||||
|
|
||||
|
import java.util.List; |
||||
|
|
||||
|
@Mapper |
||||
|
public interface TwImgMapper { |
||||
|
public int insertTwImg(List<KcTwImg> list); |
||||
|
|
||||
|
List<KcTwImg> getKcTwImgList(Long id); |
||||
|
} |
||||
@ -0,0 +1,44 @@ |
|||||
|
# Pipeline options - lemma is no-op for Chinese but currently needed because coref demands it (bad old requirements system) |
||||
|
|
||||
|
#设定了管道中包括哪些Annotators(一个Annotator就是你需要的文本分析分析工具, 他的结果就是一个或多个Annotation) |
||||
|
#segment:分词, ssplit:分隔, pos: 词性标注, lemma: has->have, ner:命名实体识别, parse:语法分析 |
||||
|
annotators = segment, ssplit, pos, lemma, ner, parse, sentiment, mention, coref |
||||
|
#annotators = segment, ssplit, pos, parse, sentiment |
||||
|
|
||||
|
|
||||
|
# segment 分词 |
||||
|
customAnnotatorClass.segment = edu.stanford.nlp.pipeline.ChineseSegmenterAnnotator |
||||
|
segment.model = D:/tupudata/nlp/stanford-corenlp-3.9.1-models-chinese/edu/stanford/nlp/models/segmenter/chinese/pku.gz |
||||
|
segment.sighanCorporaDict = D:/tupudata/nlp/stanford-corenlp-3.9.1-models-chinese/edu/stanford/nlp/models/segmenter/chinese |
||||
|
segment.serDictionary = D:/tupudata/nlp/stanford-corenlp-3.9.1-models-chinese/edu/stanford/nlp/models/segmenter/chinese/dict-chris6.ser.gz |
||||
|
segment.sighanPostProcessing = true |
||||
|
|
||||
|
# sentence split |
||||
|
ssplit.boundaryTokenRegex = [.]|[!?]+|[\u3002]|[\uFF01\uFF1F]+ |
||||
|
|
||||
|
# pos |
||||
|
pos.model = D:/tupudata/nlp/stanford-corenlp-3.9.1-models-chinese/edu/stanford/nlp/models/pos-tagger/chinese-distsim/chinese-distsim.tagger |
||||
|
|
||||
|
#ner 此处设定了ner使用的语言、模型(crf),目前SUTime只支持英文,不支持中文,所以设置为false。 |
||||
|
ner.language = chinese |
||||
|
ner.model = D:/tupudata/nlp/stanford-corenlp-3.9.1-models-chinese/edu/stanford/nlp/models/ner/chinese.misc.distsim.crf.ser.gz |
||||
|
ner.applyNumericClassifiers = true |
||||
|
ner.useSUTime = false |
||||
|
|
||||
|
#parse |
||||
|
parse.model = D:/tupudata/nlp/stanford-corenlp-3.9.1-models-chinese/edu/stanford/nlp/models/lexparser/chineseFactored.ser.gz |
||||
|
|
||||
|
# coref |
||||
|
coref.sieves = ChineseHeadMatch, ExactStringMatch, PreciseConstructs, StrictHeadMatch1, StrictHeadMatch2, StrictHeadMatch3, StrictHeadMatch4, PronounMatch |
||||
|
coref.input.type = raw |
||||
|
coref.postprocessing = true |
||||
|
coref.calculateFeatureImportance = false |
||||
|
coref.useConstituencyTree = true |
||||
|
coref.useSemantics = false |
||||
|
coref.md.type = RULE |
||||
|
coref.mode = hybrid |
||||
|
coref.path.word2vec = |
||||
|
coref.language = zh |
||||
|
coref.print.md.log = false |
||||
|
coref.defaultPronounAgreement = true |
||||
|
coref.zh.dict = D:/tupudata/nlp/stanford-corenlp-3.9.1-models-chinese/edu/stanford/nlp/models/dcoref/zh-attributes.txt.gz |
||||
@ -0,0 +1,34 @@ |
|||||
|
<?xml version="1.0" encoding="UTF-8" ?> |
||||
|
<!DOCTYPE mapper |
||||
|
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" |
||||
|
"http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
||||
|
|
||||
|
<mapper namespace="com.main.woka.Web.Mapper.TwImgMapper"> |
||||
|
|
||||
|
<resultMap id="KcTlFileResult" type="com.main.woka.Web.Dao.KcTwImg"> |
||||
|
<result property="twId" column="tw_id"/> |
||||
|
<result property="imgId" column="img_id"/> |
||||
|
<result property="imgUrl" column="img_url"/> |
||||
|
</resultMap> |
||||
|
|
||||
|
<!-- 新增图片 --> |
||||
|
<insert id="insertTwImg" parameterType="java.util.List"> |
||||
|
INSERT INTO tw_img |
||||
|
(tw_id,img_url) |
||||
|
VALUES |
||||
|
<foreach collection="list" separator="," item="item"> |
||||
|
(#{item.twId},#{item.imgUrl}) |
||||
|
</foreach> |
||||
|
</insert> |
||||
|
|
||||
|
|
||||
|
<select id="getKcTwImgList" parameterType="java.lang.Long" resultMap="KcTlFileResult"> |
||||
|
select * from tw_img |
||||
|
where tw_id = #{twId} |
||||
|
</select> |
||||
|
|
||||
|
|
||||
|
</mapper> |
||||
|
|
||||
|
|
||||
|
|
||||
Loading…
Reference in new issue