|
@@ -1,6 +1,15 @@
|
|
<template>
|
|
<template>
|
|
- <div class="analysisItem">
|
|
|
|
- <div class="ai-header" v-show="data.jsonData.name != '词频词汇分析'">
|
|
|
|
|
|
+ <div
|
|
|
|
+ class="analysisItem"
|
|
|
|
+ ref="analysisItemRef"
|
|
|
|
+ :style="
|
|
|
|
+ `top:${moveTop}px;transition:${isDragging ? '0' : '.3s'}s;${
|
|
|
|
+ isDragging ? 'z-index:999' : ''
|
|
|
|
+ }`
|
|
|
|
+ "
|
|
|
|
+ @mousedown="moveDown($event)"
|
|
|
|
+ >
|
|
|
|
+ <div class="ai-header">
|
|
<div class="ai-h-left" @click="changeOpenItem(!openItem)">
|
|
<div class="ai-h-left" @click="changeOpenItem(!openItem)">
|
|
<span
|
|
<span
|
|
:class="['ai-h-l-icon', openItem ? 'ai-h-l-iconActive' : '']"
|
|
:class="['ai-h-l-icon', openItem ? 'ai-h-l-iconActive' : '']"
|
|
@@ -37,7 +46,7 @@
|
|
content="修改名称"
|
|
content="修改名称"
|
|
placement="top"
|
|
placement="top"
|
|
>
|
|
>
|
|
- <span class="a_h_l_edit" @click.stop="editTitleFn()">
|
|
|
|
|
|
+ <span class="a_h_l_edit" @click.stop="editTitleFn()" v-if="!isDrag">
|
|
<img
|
|
<img
|
|
src="../../../../assets/icon/classroomObservation/editIcon2.svg"
|
|
src="../../../../assets/icon/classroomObservation/editIcon2.svg"
|
|
/>
|
|
/>
|
|
@@ -45,10 +54,10 @@
|
|
</el-tooltip>
|
|
</el-tooltip>
|
|
</div>
|
|
</div>
|
|
<div class="ai-h-right">
|
|
<div class="ai-h-right">
|
|
- <span style="width: 100px;" class="generateError" v-if="loadNum == 2"
|
|
|
|
|
|
+ <span style="width: 100px;" class="generateError" v-if="loadNum == 2&& !isDrag"
|
|
>优化失败
|
|
>优化失败
|
|
</span>
|
|
</span>
|
|
- <span style="width: 100px" v-if="loadNum == 1">
|
|
|
|
|
|
+ <span style="width: 100px" v-if="loadNum == 1 && !isDrag">
|
|
<span v-if="loading" class="generate">
|
|
<span v-if="loading" class="generate">
|
|
<img
|
|
<img
|
|
:src="
|
|
:src="
|
|
@@ -65,13 +74,10 @@
|
|
/>
|
|
/>
|
|
生成完成
|
|
生成完成
|
|
</span>
|
|
</span>
|
|
-
|
|
|
|
- </span>
|
|
|
|
-
|
|
|
|
-
|
|
|
|
|
|
+ </span>
|
|
|
|
|
|
<span
|
|
<span
|
|
- v-if="loadNum == 0 && !openItem && tid"
|
|
|
|
|
|
+ v-if="loadNum == 0 && !openItem && tid && !isDrag""
|
|
class="ai-h-r-icon4"
|
|
class="ai-h-r-icon4"
|
|
@click="delBtn()"
|
|
@click="delBtn()"
|
|
>
|
|
>
|
|
@@ -89,15 +95,8 @@
|
|
</el-tooltip>
|
|
</el-tooltip>
|
|
</span>
|
|
</span>
|
|
|
|
|
|
- <!-- <span
|
|
|
|
- v-if="loadNum == 0 && !openItem && tid"
|
|
|
|
- class="ai-h-r-moveIcon"
|
|
|
|
- >
|
|
|
|
- <svg t="1727418782659" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="14988" width="200" height="200"><path d="M236.288 787.712V1024H0v-236.288h236.288z m393.856 0V1024H393.856v-236.288h236.288z m393.856 0V1024h-236.288v-236.288H1024zM236.288 393.856v236.288H0V393.856h236.288z m393.856 0v236.288H393.856V393.856h236.288z m393.856 0v236.288h-236.288V393.856H1024zM236.288 0v236.288H0V0h236.288z m393.856 0v236.288H393.856V0h236.288zM1024 0v236.288h-236.288V0H1024z" fill="#000000" p-id="14989"></path></svg>
|
|
|
|
- </span> -->
|
|
|
|
-
|
|
|
|
<span
|
|
<span
|
|
- v-if="loadNum == 0 && openItem"
|
|
|
|
|
|
+ v-if="loadNum == 0 && openItem && !isDrag"
|
|
:class="['ai-h-r-icon1', showIndex <= 0 ? 'ai_h_r_iconOpacity' : '']"
|
|
:class="['ai-h-r-icon1', showIndex <= 0 ? 'ai_h_r_iconOpacity' : '']"
|
|
@click="changeShowIndex(-1)"
|
|
@click="changeShowIndex(-1)"
|
|
>
|
|
>
|
|
@@ -115,8 +114,9 @@
|
|
</el-tooltip>
|
|
</el-tooltip>
|
|
</span>
|
|
</span>
|
|
|
|
|
|
|
|
+
|
|
<span
|
|
<span
|
|
- v-if="loadNum != 1 && openItem"
|
|
|
|
|
|
+ v-if="loadNum != 1 && openItem && !isDrag"
|
|
:class="[
|
|
:class="[
|
|
showIndex >= historyResult.length - 1 ? 'ai_h_r_iconOpacity' : ''
|
|
showIndex >= historyResult.length - 1 ? 'ai_h_r_iconOpacity' : ''
|
|
]"
|
|
]"
|
|
@@ -136,7 +136,7 @@
|
|
</el-tooltip>
|
|
</el-tooltip>
|
|
</span>
|
|
</span>
|
|
|
|
|
|
- <span v-if="loadNum != 1 && openItem && tid" @click="editBtn()">
|
|
|
|
|
|
+ <span v-if="loadNum != 1 && openItem && tid && !isDrag" @click="editBtn()">
|
|
<el-tooltip
|
|
<el-tooltip
|
|
class="item"
|
|
class="item"
|
|
effect="light"
|
|
effect="light"
|
|
@@ -156,7 +156,7 @@
|
|
loadNum != 1 &&
|
|
loadNum != 1 &&
|
|
openItem &&
|
|
openItem &&
|
|
tid &&
|
|
tid &&
|
|
- ['1', '2', '3'].includes(data.jsonData.echartsType)
|
|
|
|
|
|
+ ['1', '2', '3'].includes(data.jsonData.echartsType) && !isDrag
|
|
"
|
|
"
|
|
@click="editEcharts()"
|
|
@click="editEcharts()"
|
|
>
|
|
>
|
|
@@ -177,7 +177,7 @@
|
|
<!-- <span class="ai-h-r-icon4" @click.stop="delBtn()"></span> -->
|
|
<!-- <span class="ai-h-r-icon4" @click.stop="delBtn()"></span> -->
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
- <div class="ai-main" v-if="openItem">
|
|
|
|
|
|
+ <div class="ai-main" v-if="openItem && !isDrag">
|
|
<div class="a-m-brief" v-if="showBrief">
|
|
<div class="a-m-brief" v-if="showBrief">
|
|
{{ data.jsonData.result }}
|
|
{{ data.jsonData.result }}
|
|
<!-- <mdView :text="data.jsonData.result" /> -->
|
|
<!-- <mdView :text="data.jsonData.result" /> -->
|
|
@@ -268,10 +268,22 @@ export default {
|
|
return {};
|
|
return {};
|
|
}
|
|
}
|
|
},
|
|
},
|
|
- dataList:{
|
|
|
|
- type:Array,
|
|
|
|
- default:()=>{return []}
|
|
|
|
- },
|
|
|
|
|
|
+ dataList: {
|
|
|
|
+ type: Array,
|
|
|
|
+ default: () => {
|
|
|
|
+ return [];
|
|
|
|
+ }
|
|
|
|
+ },
|
|
|
|
+ isDrag: {
|
|
|
|
+ type: Boolean,
|
|
|
|
+ default: false
|
|
|
|
+ },
|
|
|
|
+ dialogTagList: {
|
|
|
|
+ type: Array,
|
|
|
|
+ default: () => {
|
|
|
|
+ return [];
|
|
|
|
+ }
|
|
|
|
+ }
|
|
},
|
|
},
|
|
data() {
|
|
data() {
|
|
return {
|
|
return {
|
|
@@ -307,7 +319,13 @@ export default {
|
|
message: "长度需在1-20个字符之间"
|
|
message: "长度需在1-20个字符之间"
|
|
}
|
|
}
|
|
]
|
|
]
|
|
- }
|
|
|
|
|
|
+ },
|
|
|
|
+ startY: 0,
|
|
|
|
+ startTop: 0,
|
|
|
|
+ moveTop: 0,
|
|
|
|
+ isDragging: false,
|
|
|
|
+ dragBoxList: [],
|
|
|
|
+ enterDrag: null
|
|
};
|
|
};
|
|
},
|
|
},
|
|
computed: {
|
|
computed: {
|
|
@@ -327,6 +345,7 @@ export default {
|
|
},
|
|
},
|
|
methods: {
|
|
methods: {
|
|
changeOpenItem(newValue) {
|
|
changeOpenItem(newValue) {
|
|
|
|
+ if(this.isDrag)return;
|
|
if (this.loading == true && this.loadNum != 0)
|
|
if (this.loading == true && this.loadNum != 0)
|
|
return this.$message("请稍后...");
|
|
return this.$message("请稍后...");
|
|
this.loadNum = 0;
|
|
this.loadNum = 0;
|
|
@@ -338,7 +357,7 @@ export default {
|
|
this.openItem = false;
|
|
this.openItem = false;
|
|
this.loadNum = 1;
|
|
this.loadNum = 1;
|
|
let type = 0; //0 用agentId 1:用提示词 3:啥都没有
|
|
let type = 0; //0 用agentId 1:用提示词 3:啥都没有
|
|
- let tips = "";
|
|
|
|
|
|
+ let tips = "";
|
|
let assistant =
|
|
let assistant =
|
|
this.dialogTagDataList.find(i => i.id == this.data.jsonData.mId) ||
|
|
this.dialogTagDataList.find(i => i.id == this.data.jsonData.mId) ||
|
|
this.dialogTagDataList.find(i => i.name == this.data.jsonData.name);
|
|
this.dialogTagDataList.find(i => i.name == this.data.jsonData.name);
|
|
@@ -354,13 +373,15 @@ export default {
|
|
|
|
|
|
if (assistant.tips) {
|
|
if (assistant.tips) {
|
|
type = 1;
|
|
type = 1;
|
|
- let analysisData = ``;
|
|
|
|
- for(let i = 0;i<this.dataList.length;i++){
|
|
|
|
- let _json = this.dataList[i].jsonData;
|
|
|
|
- analysisData +=`### ${_json.anotherName?_json.anotherName:_json.name}\n`
|
|
|
|
- analysisData +=`${_json.content}\n`
|
|
|
|
- }
|
|
|
|
- tips = assistant.tips.replaceAll('${analysisData}',analysisData)
|
|
|
|
|
|
+ let analysisData = ``;
|
|
|
|
+ for (let i = 0; i < this.dataList.length; i++) {
|
|
|
|
+ let _json = this.dataList[i].jsonData;
|
|
|
|
+ analysisData += `### ${
|
|
|
|
+ _json.anotherName ? _json.anotherName : _json.name
|
|
|
|
+ }\n`;
|
|
|
|
+ analysisData += `${_json.content}\n`;
|
|
|
|
+ }
|
|
|
|
+ tips = assistant.tips.replaceAll("${analysisData}", analysisData);
|
|
} else if (assistant.agentid) {
|
|
} else if (assistant.agentid) {
|
|
type = 0;
|
|
type = 0;
|
|
} else {
|
|
} else {
|
|
@@ -375,8 +396,6 @@ export default {
|
|
课堂名称:${this.bmData.courseName} 搜课年级:${this.bmData.grade} 授课科目:${this.bmData.subject}`;
|
|
课堂名称:${this.bmData.courseName} 搜课年级:${this.bmData.grade} 授课科目:${this.bmData.subject}`;
|
|
}
|
|
}
|
|
|
|
|
|
-
|
|
|
|
-
|
|
|
|
// console.log('👇')
|
|
// console.log('👇')
|
|
// return console.log(_msg)
|
|
// return console.log(_msg)
|
|
let parm = {
|
|
let parm = {
|
|
@@ -436,7 +455,8 @@ export default {
|
|
// }
|
|
// }
|
|
let _copyData = JSON.parse(JSON.stringify(this.data));
|
|
let _copyData = JSON.parse(JSON.stringify(this.data));
|
|
// _copyData.jsonData.result = "";
|
|
// _copyData.jsonData.result = "";
|
|
- if(!_copyData.jsonData.mId && assistant.agentid)_copyData.jsonData.mId = assistant.agentid
|
|
|
|
|
|
+ if (!_copyData.jsonData.mId && assistant.agentid)
|
|
|
|
+ _copyData.jsonData.mId = assistant.agentid;
|
|
_copyData.jsonData.content = _data.message;
|
|
_copyData.jsonData.content = _data.message;
|
|
_copyData.jsonData.dataFileList = [];
|
|
_copyData.jsonData.dataFileList = [];
|
|
_copyData.jsonData.fileList = [];
|
|
_copyData.jsonData.fileList = [];
|
|
@@ -670,7 +690,7 @@ export default {
|
|
res.forEach((item, index) => {
|
|
res.forEach((item, index) => {
|
|
if (index == 0) return; //去掉表头
|
|
if (index == 0) return; //去掉表头
|
|
radarData.push({ name: item[0], max: 5 });
|
|
radarData.push({ name: item[0], max: 5 });
|
|
- let _valueItem = item[1] ? item[1] :"0";
|
|
|
|
|
|
+ let _valueItem = item[1] ? item[1] : "0";
|
|
let _value = _valueItem.match(/(\d+)/);
|
|
let _value = _valueItem.match(/(\d+)/);
|
|
_value = _value ? parseInt(_value[0]) : 0;
|
|
_value = _value ? parseInt(_value[0]) : 0;
|
|
seriesData.value.push(_value);
|
|
seriesData.value.push(_value);
|
|
@@ -727,7 +747,7 @@ export default {
|
|
stepList = this.calculateTopValues(res.length - 1);
|
|
stepList = this.calculateTopValues(res.length - 1);
|
|
res.forEach((item, index) => {
|
|
res.forEach((item, index) => {
|
|
if (index == 0) return;
|
|
if (index == 0) return;
|
|
- let _valueItem = item[1] ? item[1] : "0";
|
|
|
|
|
|
+ let _valueItem = item[1] ? item[1] : "0";
|
|
let _value = _valueItem.match(/(\d+)/);
|
|
let _value = _valueItem.match(/(\d+)/);
|
|
_value = _value ? parseInt(_value[0]) : 0;
|
|
_value = _value ? parseInt(_value[0]) : 0;
|
|
// 求百分比
|
|
// 求百分比
|
|
@@ -827,7 +847,7 @@ export default {
|
|
}
|
|
}
|
|
this.loadNum = 2;
|
|
this.loadNum = 2;
|
|
this.loading = false;
|
|
this.loading = false;
|
|
- return this.$message.error("生成图表失败");
|
|
|
|
|
|
+ return this.$message.error("生成图表失败");
|
|
},
|
|
},
|
|
calculateTopValues(len, minTop = -80, maxTop = 70, maxStep = 40) {
|
|
calculateTopValues(len, minTop = -80, maxTop = 70, maxStep = 40) {
|
|
const length = len;
|
|
const length = len;
|
|
@@ -875,9 +895,9 @@ export default {
|
|
|
|
|
|
// 匹配每个单元格 (th 或 td)
|
|
// 匹配每个单元格 (th 或 td)
|
|
while ((cellMatch = cellRegex.exec(rowContent)) !== null) {
|
|
while ((cellMatch = cellRegex.exec(rowContent)) !== null) {
|
|
- let _text = cellMatch[2].trim();
|
|
|
|
- _text = _text.replace(/&[a-zA-Z]+;/g, '');
|
|
|
|
- _text = _text.replace(/<\/?[^>]+(>|$)/g, '')
|
|
|
|
|
|
+ let _text = cellMatch[2].trim();
|
|
|
|
+ _text = _text.replace(/&[a-zA-Z]+;/g, "");
|
|
|
|
+ _text = _text.replace(/<\/?[^>]+(>|$)/g, "");
|
|
rowData.push(_text); // 将每个单元格的内容添加到当前行的数组中
|
|
rowData.push(_text); // 将每个单元格的内容添加到当前行的数组中
|
|
}
|
|
}
|
|
|
|
|
|
@@ -901,6 +921,101 @@ export default {
|
|
|
|
|
|
// 组合三种颜色(红、绿、蓝)的随机值
|
|
// 组合三种颜色(红、绿、蓝)的随机值
|
|
return `#${randomHex()}${randomHex()}${randomHex()}`;
|
|
return `#${randomHex()}${randomHex()}${randomHex()}`;
|
|
|
|
+ },
|
|
|
|
+ moveDown(e) {
|
|
|
|
+ if(!this.isDrag)return;
|
|
|
|
+ this.isDragging = true;
|
|
|
|
+ this.startY = e.clientY;
|
|
|
|
+ this.$nextTick(() => {
|
|
|
|
+ this.dialogTagList.forEach(i => {
|
|
|
|
+ this.dragBoxList.push(
|
|
|
|
+ ...this.$parent.$parent.$refs[`analysis_${i.value}`][0].$refs
|
|
|
|
+ .dragBoxRefTop
|
|
|
|
+ );
|
|
|
|
+ if(this.$parent.$parent.$refs[`analysis_${i.value}`][0].$refs.dragBoxRefBottom.length>0){
|
|
|
|
+ this.dragBoxList.push(
|
|
|
|
+ ...this.$parent.$parent.$refs[`analysis_${i.value}`][0].$refs
|
|
|
|
+ .dragBoxRefBottom
|
|
|
|
+ );
|
|
|
|
+ }else if(this.$parent.$parent.$refs[`analysis_${i.value}`][0].$refs.dragBoxRefBottom){
|
|
|
|
+ this.dragBoxList.push(this.$parent.$parent.$refs[`analysis_${i.value}`][0].$refs.dragBoxRefBottom);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ });
|
|
|
|
+ // 禁用页面文本选择
|
|
|
|
+ document.body.style.userSelect = "none";
|
|
|
|
+ document.addEventListener("mousemove", this.onMouseMove);
|
|
|
|
+ document.addEventListener("mouseup", this.stopDragging);
|
|
|
|
+ });
|
|
|
|
+ },
|
|
|
|
+ onMouseMove(e) {
|
|
|
|
+ if (!this.isDragging) return;
|
|
|
|
+
|
|
|
|
+ const newTop = e.clientY - this.startY; // 计算鼠标移动的Y轴距离
|
|
|
|
+
|
|
|
|
+ // // 更新div的top样式,使其跟随鼠标移动
|
|
|
|
+ this.moveTop = newTop;
|
|
|
|
+ // this.dragBoxList.forEach(i=>{
|
|
|
|
+ // let _i = i.getBoundingClientRect();
|
|
|
|
+ // if(e.clientX>=_i.left && e.clientX<=_i.right && e.clientY>=_i.top && e.clientY<=_i.bottom){
|
|
|
|
+ // this.enterDrag = i;
|
|
|
|
+ // console.log("👇")
|
|
|
|
+ // console.log(e)
|
|
|
|
+ // }else{
|
|
|
|
+ // this.enterDrag = null;
|
|
|
|
+ // }
|
|
|
|
+ // })
|
|
|
|
+ // for (let i = 0; i <= this.dragBoxList.length; i++) {
|
|
|
|
+ // let _i = this.dragBoxList[i].getBoundingClientRect();
|
|
|
|
+ // if (
|
|
|
|
+ // e.clientX >= _i.left &&
|
|
|
|
+ // e.clientX <= _i.right &&
|
|
|
|
+ // e.clientY >= _i.top &&
|
|
|
|
+ // e.clientY <= _i.bottom
|
|
|
|
+ // ) {
|
|
|
|
+ // this.enterDrag = this.dragBoxList[i];
|
|
|
|
+ // console.log("👇");
|
|
|
|
+ // console.log(e);
|
|
|
|
+ // break;
|
|
|
|
+ // } else {
|
|
|
|
+ // this.enterDrag = null;
|
|
|
|
+ // }
|
|
|
|
+ // }
|
|
|
|
+ },
|
|
|
|
+ stopDragging(e) {
|
|
|
|
+ this.isDragging = false;
|
|
|
|
+ try {
|
|
|
|
+ for (let i = 0; i <= this.dragBoxList.length; i++) {
|
|
|
|
+ let _i = this.dragBoxList[i].getBoundingClientRect();
|
|
|
|
+ if (
|
|
|
|
+ e.clientX >= _i.left &&
|
|
|
|
+ e.clientX <= _i.right &&
|
|
|
|
+ e.clientY >= _i.top &&
|
|
|
|
+ e.clientY <= _i.bottom
|
|
|
|
+ ) {
|
|
|
|
+ this.enterDrag = this.dragBoxList[i];
|
|
|
|
+ break;
|
|
|
|
+ } else {
|
|
|
|
+ this.enterDrag = null;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ // 恢复页面的文本选择
|
|
|
|
+ document.body.style.userSelect = "";
|
|
|
|
+ if (!this.enterDrag) {
|
|
|
|
+ this.moveTop = 0;
|
|
|
|
+ } else {
|
|
|
|
+ this.moveTop = 0;
|
|
|
|
+ let moveData = this.enterDrag.getAttribute('type');
|
|
|
|
+ this.$emit("moveAnalysis",{form:`${this.data.Type}_${this.index}_${this.data.tIndex}`,to:moveData})
|
|
|
|
+ }
|
|
|
|
+ // 移除全局的鼠标移动和释放事件
|
|
|
|
+ document.removeEventListener("mousemove", this.onMouseMove);
|
|
|
|
+ document.removeEventListener("mouseup", this.stopDragging);
|
|
|
|
+ } catch (error) {
|
|
|
|
+ this.moveTop = 0;
|
|
|
|
+ document.removeEventListener("mousemove", this.onMouseMove);
|
|
|
|
+ document.removeEventListener("mouseup", this.stopDragging);
|
|
|
|
+ }
|
|
}
|
|
}
|
|
},
|
|
},
|
|
mounted() {
|
|
mounted() {
|
|
@@ -924,6 +1039,9 @@ export default {
|
|
border: 1px solid #e7e7e7;
|
|
border: 1px solid #e7e7e7;
|
|
border-radius: 4px;
|
|
border-radius: 4px;
|
|
transition: 0.3s;
|
|
transition: 0.3s;
|
|
|
|
+ background-color: #fff;
|
|
|
|
+ position: relative;
|
|
|
|
+ top: 0;
|
|
}
|
|
}
|
|
|
|
|
|
.analysisItem:hover {
|
|
.analysisItem:hover {
|
|
@@ -1029,18 +1147,18 @@ export default {
|
|
display: block;
|
|
display: block;
|
|
}
|
|
}
|
|
|
|
|
|
-.ai-h-r-moveIcon{
|
|
|
|
- display: none;
|
|
|
|
- cursor: move !important;
|
|
|
|
|
|
+.ai-h-r-moveIcon {
|
|
|
|
+ display: none;
|
|
|
|
+ cursor: move !important;
|
|
}
|
|
}
|
|
|
|
|
|
-.analysisItem:hover .ai-h-r-moveIcon{
|
|
|
|
- display: block;
|
|
|
|
|
|
+.analysisItem:hover .ai-h-r-moveIcon {
|
|
|
|
+ display: block;
|
|
}
|
|
}
|
|
|
|
|
|
-.ai-h-r-moveIcon>svg{
|
|
|
|
- width: 18px;
|
|
|
|
- height: 18px;
|
|
|
|
|
|
+.ai-h-r-moveIcon > svg {
|
|
|
|
+ width: 18px;
|
|
|
|
+ height: 18px;
|
|
}
|
|
}
|
|
|
|
|
|
.ai-main {
|
|
.ai-main {
|