|
@@ -229,25 +229,25 @@
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
- <!-- <div class="nephogramArea">
|
|
|
|
|
|
+ <div class="nephogramArea">
|
|
<div class="fl_nephogram">
|
|
<div class="fl_nephogram">
|
|
<div class="imgTit">
|
|
<div class="imgTit">
|
|
<span>词云图</span>
|
|
<span>词云图</span>
|
|
<span></span>
|
|
<span></span>
|
|
</div>
|
|
</div>
|
|
- <div class="m-m-formImage" v-loading="uploadNephogramLoading">
|
|
|
|
|
|
+ <div class="m-m-formImage">
|
|
<div
|
|
<div
|
|
class="m-m-fi-nephogramItem"
|
|
class="m-m-fi-nephogramItem"
|
|
style="width:100%;"
|
|
style="width:100%;"
|
|
- v-if="!imageList.videoList.length==0"
|
|
|
|
- v-for="(item, index) in imageList.NephogramList?imageList.NephogramList:[]"
|
|
|
|
- :key="index"
|
|
|
|
|
|
+ v-loading="uploadNephogramLoading"
|
|
|
|
+ v-if="(imageList.NephogramList&&imageList.NephogramList.length>0)"
|
|
>
|
|
>
|
|
-
|
|
|
|
|
|
+ <wordcloudEChart :data="imageList.NephogramList[0]"/>
|
|
<span @click.stop="delNephogram('NephogramList')"></span>
|
|
<span @click.stop="delNephogram('NephogramList')"></span>
|
|
</div>
|
|
</div>
|
|
<div
|
|
<div
|
|
class="m-m-fi-nephogramItem"
|
|
class="m-m-fi-nephogramItem"
|
|
|
|
+ v-loading="uploadNephogramLoading"
|
|
@click.stop="addNephogram()"
|
|
@click.stop="addNephogram()"
|
|
style="width:23.5%;max-height: 100px;"
|
|
style="width:23.5%;max-height: 100px;"
|
|
v-if="((imageList.NephogramList&&imageList.NephogramList.length<=0) || !imageList.NephogramList)"
|
|
v-if="((imageList.NephogramList&&imageList.NephogramList.length<=0) || !imageList.NephogramList)"
|
|
@@ -270,7 +270,7 @@
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
- </div> -->
|
|
|
|
|
|
+ </div>
|
|
</div>
|
|
</div>
|
|
<previewVideoDialog ref="previewVideoDialogRef"/>
|
|
<previewVideoDialog ref="previewVideoDialogRef"/>
|
|
</div>
|
|
</div>
|
|
@@ -278,10 +278,13 @@
|
|
|
|
|
|
<script>
|
|
<script>
|
|
import previewVideoDialog from './previewVideoDialog.vue';
|
|
import previewVideoDialog from './previewVideoDialog.vue';
|
|
|
|
+import wordcloudEChart from './wordcloudEChart.vue'
|
|
|
|
+import { v4 as uuidv4 } from "uuid";
|
|
export default {
|
|
export default {
|
|
- emits: ["saveData", "saveImage", "saveVideo","delImage"],
|
|
|
|
|
|
+ emits: ["saveData", "saveImage", "saveVideo","delImage","saveNephogram"],
|
|
components:{
|
|
components:{
|
|
- previewVideoDialog
|
|
|
|
|
|
+ previewVideoDialog,
|
|
|
|
+ wordcloudEChart
|
|
},
|
|
},
|
|
props: {
|
|
props: {
|
|
data: {
|
|
data: {
|
|
@@ -306,10 +309,15 @@ export default {
|
|
};
|
|
};
|
|
},
|
|
},
|
|
},
|
|
},
|
|
|
|
+ dataList:{
|
|
|
|
+ type:Array,
|
|
|
|
+ default:()=>[]
|
|
|
|
+ }
|
|
},
|
|
},
|
|
data() {
|
|
data() {
|
|
return {
|
|
return {
|
|
title: "基本信息",
|
|
title: "基本信息",
|
|
|
|
+ chartObj:null,
|
|
showMain: true,
|
|
showMain: true,
|
|
uploadImageLoading: false,
|
|
uploadImageLoading: false,
|
|
uploadVideoLoading:false,
|
|
uploadVideoLoading:false,
|
|
@@ -495,8 +503,120 @@ export default {
|
|
},
|
|
},
|
|
//添加云图
|
|
//添加云图
|
|
addNephogram(){
|
|
addNephogram(){
|
|
- this.$message.info("生成词云图")
|
|
|
|
|
|
+ if(!this.tid)return this.$message.error("请选择课堂")
|
|
|
|
+ if(this.uploadNephogramLoading)return this.$message.info("请稍等");
|
|
|
|
+ this.uploadNephogramLoading = true;
|
|
|
|
+ let _workText = ``;
|
|
|
|
+ this.dataList.forEach((i) => {
|
|
|
|
+ let _jsonObj = i.jsonData;
|
|
|
|
+ _workText += `名称:${_jsonObj.name}\n分析内容:${_jsonObj.content?_jsonObj.content:''}\n\n`;
|
|
|
|
+ });
|
|
|
|
+ const _msg = `NOTICE
|
|
|
|
+Language: Please use the same language as the user requirement, if the user speaks Chinese, the specific text of your answer should also be in Chinese.
|
|
|
|
+ATTENTION: Use '##' to SPLIT SECTIONS, not '#'. Output format carefully referenced "Format example".
|
|
|
|
+Instruction: Based on the context, follow "Format example", write content.
|
|
|
|
+
|
|
|
|
+## 参靠内容
|
|
|
|
+${_workText}
|
|
|
|
+
|
|
|
|
+## 要求
|
|
|
|
+根据#参考内容 生成词云图数据,2-4个字的短语,选取与课程比较相关的词汇,禁止有重复的词汇,去掉【这里】【哪里】【谁知】之类无指示含义的词汇;格式参考## format example
|
|
|
|
+输入完整的JSON数据,禁止有重复的词汇;
|
|
|
|
+## format example
|
|
|
|
+[
|
|
|
|
+ {"value":1,"name":"词汇","textStyle":{"color":"随机颜色"}},
|
|
|
|
+ {"value":2,"name":"词汇","textStyle":{"color":"随机颜色"}},
|
|
|
|
+ {"value":1,"name":"词汇","textStyle":{"color":"随机颜色"}},
|
|
|
|
+ {"value":3,"name":"词汇","textStyle":{"color":"随机颜色"}},
|
|
|
|
+ {"value":1,"name":"词汇","textStyle":{"color":"随机颜色"}},
|
|
|
|
+ {"value":2,"name":"词汇","textStyle":{"color":"随机颜色"}},
|
|
|
|
+ {"value":1,"name":"词汇","textStyle":{"color":"随机颜色"}},
|
|
|
|
+ {"value":4,"name":"词汇","textStyle":{"color":"随机颜色"}}
|
|
|
|
+]
|
|
|
|
+`;
|
|
|
|
+ const _uuid = uuidv4();
|
|
|
|
+ let params = {
|
|
|
|
+ model: "gpt-3.5-turbo",
|
|
|
|
+ temperature: 0,
|
|
|
|
+ max_tokens: 4096,
|
|
|
|
+ top_p: 1,
|
|
|
|
+ frequency_penalty: 0,
|
|
|
|
+ presence_penalty: 0,
|
|
|
|
+ messages: [{ role: "user", content: _msg }],
|
|
|
|
+ uid: _uuid,
|
|
|
|
+ mind_map_question: "",
|
|
|
|
+ stream: false,
|
|
|
|
+ };
|
|
|
|
+ this.ajax
|
|
|
|
+ .post("https://gpt4.cocorobo.cn/chat", params)
|
|
|
|
+ .then((res) => {
|
|
|
|
+ let _data = res.data.FunctionResponse.choices[0];
|
|
|
|
+ let _jsonData = _data.message.content;
|
|
|
|
+ _jsonData = _jsonData.replaceAll("```json", "").replaceAll("```", "");
|
|
|
|
+ let _result = JSON.parse(_jsonData);
|
|
|
|
+ console.log(_jsonData)
|
|
|
|
+ this.$emit('saveNephogram',{
|
|
|
|
+ tooltip: {
|
|
|
|
+ show: false,
|
|
|
|
+ },
|
|
|
|
+ series: [
|
|
|
|
+ {
|
|
|
|
+ type: 'wordCloud',
|
|
|
|
+ sizeRange: [14, 38],
|
|
|
|
+ rotationRange: [0, 0],
|
|
|
|
+ keepAspect:false,
|
|
|
|
+ shape: 'circle',
|
|
|
|
+ left: 'center',
|
|
|
|
+ top: 'center',
|
|
|
|
+ right: null,
|
|
|
|
+ bottom: null,
|
|
|
|
+ width: '90%',
|
|
|
|
+ height: '90%',
|
|
|
|
+ // maskImage: maskImage,
|
|
|
|
+ // sizeRange: [12, 60],
|
|
|
|
+ rotationRange: [-90, 90],
|
|
|
|
+ rotationStep: 45,
|
|
|
|
+ gridSize: 12,
|
|
|
|
+ autoSize: {
|
|
|
|
+ enable: true,
|
|
|
|
+ minSize: 12,
|
|
|
|
+ },
|
|
|
|
+ // textStyle: {
|
|
|
|
+ // color: function () {
|
|
|
|
+ // var colors = [
|
|
|
|
+ // '#F6A878',
|
|
|
|
+ // '#FDCA71',
|
|
|
|
+ // '#D9E4E4',
|
|
|
|
+ // '#CAE1E6',
|
|
|
|
+ // '#8B9ECD',
|
|
|
|
+ // '#6CB9FB',
|
|
|
|
+ // '#5596F7',
|
|
|
|
+ // '#4778FE',
|
|
|
|
+ // ];
|
|
|
|
+ // return colors[parseInt(Math.random() * 8)];
|
|
|
|
+ // },
|
|
|
|
+ // },
|
|
|
|
+ data: _result,
|
|
|
|
+ // [{name: "行政处罚"num: 1324}]
|
|
|
|
+ },
|
|
|
|
+ ],
|
|
|
|
+ })
|
|
|
|
+ })
|
|
|
|
+ .catch((e) => {
|
|
|
|
+ console.log(e);
|
|
|
|
+ this.$message.error("生成词云图失败");
|
|
|
|
+ })
|
|
|
|
+ .finally((_) => {
|
|
|
|
+ this.uploadNephogramLoading = false;
|
|
|
|
+ });
|
|
|
|
+ // this.$emit('saveNephogram',{
|
|
|
|
+ // name: "测试",
|
|
|
|
+ // status: "success",
|
|
|
|
+ // uid: "1",
|
|
|
|
+ // url: "测试",
|
|
|
|
+ // })
|
|
},
|
|
},
|
|
|
|
+
|
|
// 删除图片
|
|
// 删除图片
|
|
delImage(key) {
|
|
delImage(key) {
|
|
this.$confirm("确定删除该图片吗?", "提示", {
|
|
this.$confirm("确定删除该图片吗?", "提示", {
|
|
@@ -546,7 +666,9 @@ export default {
|
|
this.$emit("saveData");
|
|
this.$emit("saveData");
|
|
},
|
|
},
|
|
},
|
|
},
|
|
- mounted() {},
|
|
|
|
|
|
+ mounted() {
|
|
|
|
+ // this.showNephogram();
|
|
|
|
+ },
|
|
};
|
|
};
|
|
</script>
|
|
</script>
|
|
|
|
|
|
@@ -721,6 +843,7 @@ export default {
|
|
background-repeat: no-repeat;
|
|
background-repeat: no-repeat;
|
|
background-size: 100% 100%;
|
|
background-size: 100% 100%;
|
|
display: none;
|
|
display: none;
|
|
|
|
+ z-index: 9999;
|
|
/* display: flex;
|
|
/* display: flex;
|
|
justify-content: flex-end;
|
|
justify-content: flex-end;
|
|
align-items: flex-start;
|
|
align-items: flex-start;
|
|
@@ -852,7 +975,7 @@ export default {
|
|
height: 100%;
|
|
height: 100%;
|
|
}
|
|
}
|
|
|
|
|
|
-.m-m-fi-imageItem > span {
|
|
|
|
|
|
+.m-m-fi-nephogramItem > span {
|
|
width: 20px;
|
|
width: 20px;
|
|
height: 20px;
|
|
height: 20px;
|
|
position: absolute;
|
|
position: absolute;
|
|
@@ -862,6 +985,7 @@ export default {
|
|
background-repeat: no-repeat;
|
|
background-repeat: no-repeat;
|
|
background-size: 100% 100%;
|
|
background-size: 100% 100%;
|
|
display: none;
|
|
display: none;
|
|
|
|
+ z-index: 99999;
|
|
/* display: flex;
|
|
/* display: flex;
|
|
justify-content: flex-end;
|
|
justify-content: flex-end;
|
|
align-items: flex-start;
|
|
align-items: flex-start;
|