|
@@ -1132,7 +1132,10 @@
|
|
placeholder=""
|
|
placeholder=""
|
|
></el-input>
|
|
></el-input>
|
|
</div>
|
|
</div>
|
|
- <el-button type="primary" class="submit"
|
|
|
|
|
|
+ <el-button
|
|
|
|
+ type="primary"
|
|
|
|
+ class="submit"
|
|
|
|
+ @click="addAnswer"
|
|
>提出疑问</el-button
|
|
>提出疑问</el-button
|
|
>
|
|
>
|
|
</div>
|
|
</div>
|
|
@@ -1163,24 +1166,10 @@
|
|
</div>
|
|
</div>
|
|
<div class="question-list__item__content">
|
|
<div class="question-list__item__content">
|
|
<div class="nickname">
|
|
<div class="nickname">
|
|
- <template v-if="item.assignRealname">
|
|
|
|
- {{ item.assignRealname }}
|
|
|
|
- </template>
|
|
|
|
- <template v-else>
|
|
|
|
- {{
|
|
|
|
- item.assignUserId > 0 && !item.realname
|
|
|
|
- ? "祥粤老师"
|
|
|
|
- : item.realname
|
|
|
|
- }}
|
|
|
|
- </template>
|
|
|
|
|
|
+ {{ item.realname }}
|
|
</div>
|
|
</div>
|
|
<div class="desc">
|
|
<div class="desc">
|
|
- <template v-if="item.assignRealname"
|
|
|
|
- >我猜这堂课没人听了不会做美梦吧。</template
|
|
|
|
- >
|
|
|
|
- <template v-else>
|
|
|
|
- {{ item.answerText }}
|
|
|
|
- </template>
|
|
|
|
|
|
+ {{ item.answerText }}
|
|
</div>
|
|
</div>
|
|
<div class="time">
|
|
<div class="time">
|
|
{{
|
|
{{
|
|
@@ -1192,45 +1181,71 @@
|
|
<div
|
|
<div
|
|
class="del"
|
|
class="del"
|
|
@click="del(item)"
|
|
@click="del(item)"
|
|
- v-if="item.userId != userInfo.userId"
|
|
|
|
|
|
+ v-if="item.userId === userInfo.userId"
|
|
>
|
|
>
|
|
删除
|
|
删除
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div
|
|
<div
|
|
class="reply-list"
|
|
class="reply-list"
|
|
- v-if="item.assignRealname"
|
|
|
|
|
|
+ v-if="
|
|
|
|
+ item.newArraysAnswerList &&
|
|
|
|
+ item.newArraysAnswerList.length
|
|
|
|
+ "
|
|
>
|
|
>
|
|
- <div class="reply-list__item">
|
|
|
|
|
|
+ <div
|
|
|
|
+ class="reply-list__item"
|
|
|
|
+ v-for="(
|
|
|
|
+ items, indexs
|
|
|
|
+ ) in item.newArraysAnswerList"
|
|
|
|
+ :key="indexs"
|
|
|
|
+ >
|
|
<div class="reply-list__item__avatar">
|
|
<div class="reply-list__item__avatar">
|
|
<img
|
|
<img
|
|
- :src="$tools.splitImgHost(item.avatar)"
|
|
|
|
|
|
+ :src="$tools.splitImgHost(items.avatar)"
|
|
alt=""
|
|
alt=""
|
|
/>
|
|
/>
|
|
</div>
|
|
</div>
|
|
<div class="reply-list__item__content">
|
|
<div class="reply-list__item__content">
|
|
<div class="nickname">
|
|
<div class="nickname">
|
|
- {{
|
|
|
|
- item.assignUserId > 0 &&
|
|
|
|
- !item.realname
|
|
|
|
- ? "祥粤老师"
|
|
|
|
- : item.realname
|
|
|
|
- }}
|
|
|
|
|
|
+ {{ items.realname }}
|
|
</div>
|
|
</div>
|
|
<div class="desc">
|
|
<div class="desc">
|
|
- {{ item.answerText }}
|
|
|
|
|
|
+ 回复
|
|
|
|
+ <span
|
|
|
|
+ style="
|
|
|
|
+ margin: 0px 4px;
|
|
|
|
+ color: #409eff;
|
|
|
|
+ "
|
|
|
|
+ >@{{ items.assignRealname }}</span
|
|
|
|
+ >
|
|
|
|
+ {{ items.answerText }}
|
|
</div>
|
|
</div>
|
|
<div class="time">
|
|
<div class="time">
|
|
{{
|
|
{{
|
|
$tools.timestampToTime(
|
|
$tools.timestampToTime(
|
|
- item.createTime,
|
|
|
|
|
|
+ items.createTime,
|
|
false
|
|
false
|
|
)
|
|
)
|
|
}}
|
|
}}
|
|
- <!-- <div class="del" v-if="index % 2 == 0">
|
|
|
|
|
|
+ <div
|
|
|
|
+ class="del"
|
|
|
|
+ @click="del(items)"
|
|
|
|
+ v-if="
|
|
|
|
+ items.userId === userInfo.userId
|
|
|
|
+ "
|
|
|
|
+ >
|
|
删除
|
|
删除
|
|
</div>
|
|
</div>
|
|
- <div class="reply" v-else>回复</div> -->
|
|
|
|
|
|
+ <div
|
|
|
|
+ class="reply"
|
|
|
|
+ v-if="
|
|
|
|
+ items.userId !== userInfo.userId
|
|
|
|
+ "
|
|
|
|
+ @click="answerBack(items)"
|
|
|
|
+ >
|
|
|
|
+ 回复
|
|
|
|
+ </div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
@@ -1347,6 +1362,18 @@
|
|
>
|
|
>
|
|
预览
|
|
预览
|
|
</div>
|
|
</div>
|
|
|
|
+ <div
|
|
|
|
+ class="btn"
|
|
|
|
+ @click="
|
|
|
|
+ printView(
|
|
|
|
+ $tools.splitImgHost(
|
|
|
|
+ courseHandoutsData.handoutsUrl
|
|
|
|
+ )
|
|
|
|
+ )
|
|
|
|
+ "
|
|
|
|
+ >
|
|
|
|
+ 打印
|
|
|
|
+ </div>
|
|
<div
|
|
<div
|
|
class="btn"
|
|
class="btn"
|
|
@click="
|
|
@click="
|
|
@@ -1955,7 +1982,7 @@
|
|
>
|
|
>
|
|
</span>
|
|
</span>
|
|
</el-dialog>
|
|
</el-dialog>
|
|
-
|
|
|
|
|
|
+ <div id="printTable"></div>
|
|
<ToolBar></ToolBar>
|
|
<ToolBar></ToolBar>
|
|
<Footer></Footer>
|
|
<Footer></Footer>
|
|
</div>
|
|
</div>
|
|
@@ -1968,6 +1995,7 @@ import ToolBar from "@/components/toolbar/index";
|
|
import { mapGetters } from "vuex";
|
|
import { mapGetters } from "vuex";
|
|
import * as baseUrls from "@/axios.js";
|
|
import * as baseUrls from "@/axios.js";
|
|
import pdf from "vue-pdf";
|
|
import pdf from "vue-pdf";
|
|
|
|
+import print from "print-js";
|
|
export default {
|
|
export default {
|
|
name: "CourseDetail",
|
|
name: "CourseDetail",
|
|
components: {
|
|
components: {
|
|
@@ -2043,7 +2071,7 @@ export default {
|
|
uidzb: "egsxlptzdq",
|
|
uidzb: "egsxlptzdq",
|
|
menuList: [],
|
|
menuList: [],
|
|
reMenuList: [],
|
|
reMenuList: [],
|
|
- answerList: [],
|
|
|
|
|
|
+ answerList: [{ newArraysAnswerList: [] }],
|
|
noteList: [],
|
|
noteList: [],
|
|
photoList: [],
|
|
photoList: [],
|
|
noteTotal: 0,
|
|
noteTotal: 0,
|
|
@@ -5066,7 +5094,7 @@ export default {
|
|
},
|
|
},
|
|
];
|
|
];
|
|
|
|
|
|
- if (courseTabIndex == "2") {
|
|
|
|
|
|
+ if (this.courseTabIndex == "2") {
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
this.courseTabIndex = "1";
|
|
this.courseTabIndex = "1";
|
|
@@ -5110,12 +5138,101 @@ export default {
|
|
this.businessData = res.data;
|
|
this.businessData = res.data;
|
|
});
|
|
});
|
|
},
|
|
},
|
|
|
|
+ /**提出答疑 */
|
|
|
|
+ addAnswer() {
|
|
|
|
+ if (!this.textarea) {
|
|
|
|
+ this.$message.warning("请输入疑问内容");
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+ let data = {
|
|
|
|
+ courseId: this.courseId,
|
|
|
|
+ goodsId: this.goodsId,
|
|
|
|
+ orderGoodsId: this.orderGoodsId,
|
|
|
|
+ answerText: this.textarea,
|
|
|
|
+ };
|
|
|
|
+ this.$request.addAnswer(data).then((res) => {
|
|
|
|
+ this.textarea = "";
|
|
|
|
+ this.getAnswerList();
|
|
|
|
+ });
|
|
|
|
+ },
|
|
|
|
+ /**回复 */
|
|
|
|
+ answerBack(row) {
|
|
|
|
+ this.$prompt(`${row.realname}:${row.answerText}`, "提示", {
|
|
|
|
+ confirmButtonText: "确定",
|
|
|
|
+ cancelButtonText: "取消",
|
|
|
|
+ })
|
|
|
|
+ .then(({ value }) => {
|
|
|
|
+ if (!value) {
|
|
|
|
+ this.$message.warning("请输入回复内容");
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ let data = {
|
|
|
|
+ assignUserId: row.userId,
|
|
|
|
+ assignAnswerId: row.answerId,
|
|
|
|
+ courseId: this.courseId,
|
|
|
|
+ goodsId: this.goodsId,
|
|
|
|
+ orderGoodsId: this.orderGoodsId,
|
|
|
|
+ answerText: value,
|
|
|
|
+ assignAnswerText: row.assignAnswerText,
|
|
|
|
+ };
|
|
|
|
+ this.$request.addAnswer(data).then((res) => {
|
|
|
|
+ this.getAnswerList();
|
|
|
|
+ });
|
|
|
|
+ })
|
|
|
|
+ .catch(() => {});
|
|
|
|
+ },
|
|
getAnswerList() {
|
|
getAnswerList() {
|
|
let self = this;
|
|
let self = this;
|
|
this.$request
|
|
this.$request
|
|
.answerList({ courseId: this.courseId, goodsId: this.goodsId })
|
|
.answerList({ courseId: this.courseId, goodsId: this.goodsId })
|
|
.then((res) => {
|
|
.then((res) => {
|
|
- self.answerList = res.rows;
|
|
|
|
|
|
+ let data1 = [];
|
|
|
|
+ let data2 = [];
|
|
|
|
+ let copydata2 = [];
|
|
|
|
+ res.rows.forEach((item) => {
|
|
|
|
+ if (!item.assignAnswerId) {
|
|
|
|
+ data1.push(item);
|
|
|
|
+ } else {
|
|
|
|
+ data2.push(item);
|
|
|
|
+ copydata2.push(item);
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+ data2.forEach((item, index) => {
|
|
|
|
+ //回复层
|
|
|
|
+ data1.forEach((items) => {
|
|
|
|
+ //提问层
|
|
|
|
+ if (items.answerId === item.assignAnswerId) {
|
|
|
|
+ if (
|
|
|
|
+ items.newArraysAnswerList &&
|
|
|
|
+ items.newArraysAnswerList.length
|
|
|
|
+ ) {
|
|
|
|
+ items.newArraysAnswerList.push(item);
|
|
|
|
+ } else {
|
|
|
|
+ items.newArraysAnswerList = [item];
|
|
|
|
+ }
|
|
|
|
+ let indexInd = copydata2.findIndex((itemsxs) => {
|
|
|
|
+ return itemsxs.answerId === item.answerId;
|
|
|
|
+ });
|
|
|
|
+ if (indexInd !== -1) {
|
|
|
|
+ copydata2.splice(indexInd, 1);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+ });
|
|
|
|
+ console.log(copydata2)
|
|
|
|
+ copydata2.forEach((it) => {
|
|
|
|
+ for (let i = 0; i < data1.length; i++) {
|
|
|
|
+ const STATUS = data1[i].newArraysAnswerList.some((items) => {
|
|
|
|
+ return items.answerId === it.assignAnswerId;
|
|
|
|
+ });
|
|
|
|
+ if (STATUS) {
|
|
|
|
+ data1[i].newArraysAnswerList.push(it);
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+ self.answerList = data1;
|
|
});
|
|
});
|
|
},
|
|
},
|
|
courseCourseList() {
|
|
courseCourseList() {
|
|
@@ -5245,6 +5362,39 @@ export default {
|
|
this.getAnswerList();
|
|
this.getAnswerList();
|
|
});
|
|
});
|
|
},
|
|
},
|
|
|
|
+ /**
|
|
|
|
+ * 打印
|
|
|
|
+ */
|
|
|
|
+ printView(url) {
|
|
|
|
+ console.log("触发打印", url);
|
|
|
|
+ printJS({
|
|
|
|
+ printable: url,
|
|
|
|
+ type: "pdf",
|
|
|
|
+ header: null,
|
|
|
|
+ targetStyles: ["*"],
|
|
|
|
+ style: "@page {margin:0 10mm}",
|
|
|
|
+ });
|
|
|
|
+ // this.print(url);
|
|
|
|
+ },
|
|
|
|
+ // 打印方法
|
|
|
|
+ print(filePath) {
|
|
|
|
+ console.log("执行打印");
|
|
|
|
+ let iframe = document.createElement("iframe");
|
|
|
|
+ iframe.style.border = "0px";
|
|
|
|
+ iframe.style.position = "absolute";
|
|
|
|
+ iframe.style.width = "0px";
|
|
|
|
+ iframe.style.height = "0px";
|
|
|
|
+ iframe.style.right = "0px";
|
|
|
|
+ iframe.style.top = "0px";
|
|
|
|
+ iframe.setAttribute("src", filePath);
|
|
|
|
+ iframe.onload = () => {
|
|
|
|
+ iframe.contentWindow.print();
|
|
|
|
+ // setTimeout(() => {
|
|
|
|
+ // document.body.removeChild(iframe);
|
|
|
|
+ // });
|
|
|
|
+ };
|
|
|
|
+ document.body.append(iframe);
|
|
|
|
+ },
|
|
},
|
|
},
|
|
};
|
|
};
|
|
</script>
|
|
</script>
|
|
@@ -5838,6 +5988,8 @@ export default {
|
|
color: #3f8dfd;
|
|
color: #3f8dfd;
|
|
line-height: 24px;
|
|
line-height: 24px;
|
|
margin-right: 20px;
|
|
margin-right: 20px;
|
|
|
|
+ cursor: pointer;
|
|
|
|
+ user-select: none;
|
|
}
|
|
}
|
|
|
|
|
|
.del {
|
|
.del {
|