|
@@ -156,6 +156,7 @@
|
|
|
<div v-if="l.tool[0] == 52">
|
|
|
<div class="toolBlk">
|
|
|
<img
|
|
|
+ style="width: 44px;height: 44px;object-fit: contain;"
|
|
|
src="../../../assets/icon/fourthToolList/text.png"
|
|
|
alt=""
|
|
|
/>
|
|
@@ -168,6 +169,35 @@
|
|
|
</div>
|
|
|
<div class="answerTxt" v-html="l.content[0].text"></div>
|
|
|
</div>
|
|
|
+ <div v-if="l.tool[0] == 72">
|
|
|
+ <div class="toolBlk">
|
|
|
+ <img
|
|
|
+ style="width: 44px;height: 44px;object-fit: contain;"
|
|
|
+ :src="l.appJson.json.icon"
|
|
|
+ alt=""
|
|
|
+ />
|
|
|
+ <div class="toolTit">
|
|
|
+ <div>工具{{ lind + 1 }}:{{ l.appJson.name }}</div>
|
|
|
+ <div>
|
|
|
+ {{ l.appJson.detail }}
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div style="margin-bottom: 20px;" v-for="(item,index) in l.content[0]" :key="index+'coco'">
|
|
|
+ <div style="margin-bottom: 15px;font-size: 14px;font-weight: 600;color: #000;">第{{ index + 1}}阶段</div>
|
|
|
+ <div v-for="(po,PInd) in item.messages" :key="PInd+'PInd'">
|
|
|
+ <div class="left" v-if="po.role == 'assistant'">
|
|
|
+ <div class="TName">小可AI助手</div>:
|
|
|
+ <div class="con" v-html="MarkdownT(po.content)"></div>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <div class="left" v-if="po.role == 'user'">
|
|
|
+ <div class="TName">{{ userName }}</div>:
|
|
|
+ <div class="con" v-html="po.content"></div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
<div v-if="l.tool[0] == 16 || l.tool[0] == 50">
|
|
|
<div class="toolBlk">
|
|
|
<img
|
|
@@ -786,6 +816,7 @@
|
|
|
</template>
|
|
|
|
|
|
<script>
|
|
|
+import MarkdownIt from "markdown-it";
|
|
|
|
|
|
const getFile = url => {
|
|
|
return new Promise((resolve, reject) => {
|
|
@@ -894,6 +925,17 @@ export default {
|
|
|
},
|
|
|
|
|
|
computed: {
|
|
|
+ MarkdownT() {
|
|
|
+ return function (c) {
|
|
|
+ let md = new MarkdownIt({
|
|
|
+ html: true, // 允许渲染 HTML
|
|
|
+ linkify: true, // 自动将URL链接转化为可点击链接
|
|
|
+ typographer: true, // 启用排版规则(如替换 `"` 为 “)
|
|
|
+ });
|
|
|
+ return c
|
|
|
+ ? md.render(c) : "";
|
|
|
+ };
|
|
|
+ },
|
|
|
isStage() {
|
|
|
return function(val) {
|
|
|
let isShow = false;
|
|
@@ -1157,7 +1199,11 @@ export default {
|
|
|
this.workEvaList = res.data[13];
|
|
|
|
|
|
// console.log('res.data[0][0]',res.data[0][0]);
|
|
|
- this.resData = JSON.parse(JSON.stringify(res.data[0][0]));
|
|
|
+ if (res.data[0] && res.data[0][0] && res.data[0][0].length) {
|
|
|
+ this.resData = JSON.parse(JSON.stringify(res.data[0][0]));
|
|
|
+ }else{
|
|
|
+ this.resData=[]
|
|
|
+ }
|
|
|
|
|
|
this.courseName = res.data[0][0].course;
|
|
|
this.CState = res.data[0][0].state;
|
|
@@ -1253,6 +1299,10 @@ export default {
|
|
|
e.content = JSON.parse(e.content);
|
|
|
});
|
|
|
|
|
|
+ res.data[14].forEach(e => {
|
|
|
+ e.content = JSON.parse(e.content);
|
|
|
+ });
|
|
|
+
|
|
|
let AreaAllWork = [
|
|
|
...res.data[1],
|
|
|
...res.data[3],
|
|
@@ -1264,7 +1314,8 @@ export default {
|
|
|
...res.data[9],
|
|
|
...res.data[10],
|
|
|
...res.data[11],
|
|
|
- ...res.data[12]
|
|
|
+ ...res.data[12],
|
|
|
+ ...res.data[14],
|
|
|
];
|
|
|
|
|
|
AreaAllWork.sort(function(a, b) {
|
|
@@ -1379,6 +1430,31 @@ export default {
|
|
|
</script>
|
|
|
|
|
|
<style scoped>
|
|
|
+ .left{
|
|
|
+ display: flex;
|
|
|
+ justify-content: flex-start;
|
|
|
+ margin-bottom: 10px;
|
|
|
+ line-height: 25px;
|
|
|
+ flex: 1;
|
|
|
+ border-bottom: 1px #e7e7e7 solid;
|
|
|
+ }
|
|
|
+ .TName{
|
|
|
+ /* font-size: 14px; */
|
|
|
+ color: #4472C4;
|
|
|
+ margin-bottom: 5px;
|
|
|
+ font-weight: 600;
|
|
|
+ width: 80px;
|
|
|
+ flex-shrink: 0;
|
|
|
+ font-size: 14px;
|
|
|
+ overflow: hidden;
|
|
|
+ white-space: nowrap;
|
|
|
+ text-overflow: ellipsis;
|
|
|
+ }
|
|
|
+ .con{
|
|
|
+ margin-left: 10px;
|
|
|
+ font-size: 12px;
|
|
|
+ color: #000;
|
|
|
+ }
|
|
|
.eliP {
|
|
|
overflow: hidden;
|
|
|
white-space: nowrap;
|