This commit is contained in:
daihh
2022-06-12 09:00:08 +08:00
14 changed files with 302 additions and 62 deletions

View File

@@ -64,9 +64,6 @@ export default {
type: Boolean,
default: false,
},
data:{
type:Object,
},
boxShow:{
type: Boolean,
default: true,

View File

@@ -43,12 +43,12 @@
<div v-if="views" style="cursor: default;" :style="`min-width: ${nodeWidth};`" class="interact-bar-btn" :class="{cursor:!readonly}">
<el-tooltip effect="light" content="浏览量" placement="top">
<svg-icon style="margin-right: 0;font-size: 16px;" icon-class="browse"></svg-icon>
<svg-icon style="margin-right: 0;font-size:20.5px;" icon-class="eyes"></svg-icon>
</el-tooltip>
<span class="interact-bar-value"> {{ data.views}}</span>
</div>
</div>
<el-dialog title="分享" :visible.sync="shareShow" :close-on-click-modal="false" :modal-append-to-body="false" width="500px" custom-class="g-dialog">
<el-dialog title="分享" :visible.sync="shareShow" :close-on-click-modal="false" :append-to-body="true" width="500px" custom-class="g-dialog">
<div style="height: 200px;padding-right: 30px;">
<el-form label-width="100px" @submit.native.prevent >
<el-form-item label="姓名或工号">
@@ -141,6 +141,10 @@ export default {
theme:{
type:Number,
default:1
},
unicom:{
type:Boolean,
default:false
}
},
data(){
@@ -159,7 +163,7 @@ export default {
},
computed:{
...mapGetters(['userInfo']),
...mapGetters(['userInfo','praisesUnicom','favoritesUnicom']),
showAlign(){
if(this.align=='left'){
@@ -170,6 +174,12 @@ export default {
}
},
watch:{
praisesUnicom(newVal){
this.isPraise = newVal;
},
favoritesUnicom(newVal){
this.isFavorite = newVal;
},
data(newVal,oldVal){
// console.log(newVal,'newVal');
// if(newVal && newVal.id!=''){
@@ -178,7 +188,6 @@ export default {
}
},
created(){
},
mounted() {
if(this.data && this.data.id && !this.readonly){
@@ -266,7 +275,6 @@ export default {
this.shareShow=true;
},
addPraise(){
if(this.type==0){
console.log('未设置type值,1表课程,2表文章3表案例4表问答')
return;
@@ -296,6 +304,9 @@ export default {
this.data.praises--;
}
this.isPraise=false;
if(this.unicom) {
this.$store.dispatch("unicomPraises",false)
}
this.$message({message:'取消点赞',type:'success'})
}else{
console.log('取消失败:'+res.message);
@@ -308,6 +319,9 @@ export default {
if(res.result){
this.data.praises++;
}
if(this.unicom) {
this.$store.dispatch("unicomPraises",true)
}
if(this.type!=1&&this.type!=5){
this.messageSave(this.data.id,this.data.title,this.userInfo.name,this.data.sysCreateBy,this.data.sysCreateAid,'点赞了我的');
}
@@ -356,6 +370,9 @@ export default {
if(res.result){
this.data.favorites--;
}
if(this.unicom) {
this.$store.dispatch("unicomFavorites",false)
}
this.$message({message:'已取消收藏',type:'success'});
//this.$emit('addFavorite',res.result);//添加收藏,如果是true代表添加成功false代表已存在
}else{
@@ -370,6 +387,9 @@ export default {
if(res.result){
this.data.favorites++;
}
if(this.unicom) {
this.$store.dispatch("unicomFavorites",true)
}
if(this.type===2||this.type===4){
this.messageSave(this.data.id,this.data.title,this.userInfo.name,this.data.sysCreateBy,this.data.sysCreateAid,'收藏了我发布的');
}
@@ -477,11 +497,11 @@ export default {
}
apiShares.save(postData).then(rs=>{
$this.shareShow=false;
$this.data.shares++;
if(rs.status!=200){
this.$message.error("分享失败")
}else{
if(rs.result){
$this.data.shares++;
this.$message.success("分享成功")
if(this.type!=3){
if(this.type==1){

1
src/icons/svg/eyes.svg Normal file
View File

@@ -0,0 +1 @@
<?xml version="1.0" encoding="UTF-8"?><svg width="48" height="48" viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg"><rect width="48" height="48" fill="white" fill-opacity="0.01"/><path d="M24 36C35.0457 36 44 24 44 24C44 24 35.0457 12 24 12C12.9543 12 4 24 4 24C4 24 12.9543 36 24 36Z" fill="#a4b0cc" stroke="#a4b0cc" stroke-width="4" stroke-linejoin="round"/><path d="M24 29C26.7614 29 29 26.7614 29 24C29 21.2386 26.7614 19 24 19C21.2386 19 19 21.2386 19 24C19 26.7614 21.2386 29 24 29Z" fill="#FFF" stroke="#FFF" stroke-width="4" stroke-linejoin="round"/></svg>

After

Width:  |  Height:  |  Size: 581 B

View File

@@ -21,5 +21,7 @@ const getters = {
userMsg:state => state.user.msg,
messagesBeReviewed:state => state.user.messagesBeReviewed,
studyTaskCount:state => state.user.studyTaskCount,
praisesUnicom:state =>state.pdf.praisesUnicom,
favoritesUnicom:state =>state.pdf.favoritesUnicom,
}
export default getters

View File

@@ -9,6 +9,7 @@ import portal from './modules/portal'
import getters from './getters'
import sysType from './modules/sysType'
import resOwner from './modules/resOwner'
import pdf from './modules/pdf'
Vue.use(Vuex)
@@ -21,7 +22,8 @@ const store = new Vuex.Store({
settings,
portal,
sysType,
resOwner
resOwner,
pdf
},
getters
})

30
src/store/modules/pdf.js Normal file
View File

@@ -0,0 +1,30 @@
const state = {
praisesUnicom: false,
favoritesUnicom: false,
}
const mutations = {
SET_praisesUnicom: (state, iden) => {
state.praisesUnicom = iden
},
SET_favoritesUnicom: (state, iden) => {
state.favoritesUnicom = iden
},
}
const actions = {
unicomPraises({ commit }, data) {
commit('SET_praisesUnicom', data)
},
unicomFavorites({ commit }, data) {
commit('SET_favoritesUnicom', data)
}
}
export default {
state,
mutations,
actions
}

View File

@@ -73,6 +73,11 @@
</el-table-column>
<el-table-column label="创建人" prop="sysCreateBy"></el-table-column>
<el-table-column label="创建时间" prop="sysCreateTime" width="200px" show-overflow-tooltip></el-table-column>
<el-table-column label="邀请人" prop="auditInfo" width="150px">
<template slot-scope="scope">
{{remarksInterception(scope.row.auditInfo)}}
</template>
</el-table-column>
<el-table-column label="操作" width="100px" fixed="right">
<template slot-scope="scope">
<el-button @click="toExamine(scope.row)" type="text" >审核</el-button>
@@ -168,6 +173,15 @@
</div>
</div>
</div>
<div style="border-top: 1px solid #eee; background-color: #eee; padding: 10px 20px;margin-top: 10px;">
<div style="line-height: 36px;">
<div style="display:flex;">
<div style="flex:1;"><span class="audit-text">邀请人</span>{{audit.sysCreateBy}}</div>
<div style="flex:1;"><span class="audit-text">邀请时间</span>{{audit.sysCreateTime}}</div>
</div>
<p><span class="audit-text">邀请说明</span>{{audit.auditRemark}}</p>
</div>
</div>
<span slot="footer" class="dialog-footer">
<el-button @click="dialogVisible = false;examin={}"> </el-button>
<el-button type="primary" @click="examineData(true)">提交</el-button>
@@ -211,6 +225,7 @@ export default {
sysTypeListMap:[],
resOwnerListMap:[],
showDetails:false,
audit:{},
examin:{
detailType: '',
examineId: '',
@@ -289,6 +304,15 @@ export default {
this.loadSysTypes();
},
methods: {
remarksInterception(info){
let name = '';
if(info == '' || info == null || info == undefined) {
name = '--';
} else {
name = info.split('请')[0];
}
return name;
},
getseatch(){
this.params.pageIndex= 1;
this.searchData();
@@ -412,11 +436,19 @@ export default {
window.open(this.webBaseUrl+routeData.href, '_blank');
},
toExamine(row) {
this.audit = {};
this.examin.detailType = row.type;
this.examin.examineId = row.id;
this.examin.examineName = row.name;
this.auditInfo.remark = '';
this.dialogVisible = true;
apiCourse.getAuditInfo({courseId:row.id}).then(res=>{
if(res.status == 200) {
this.audit = res.result[0];
} else {
this.$message.error(res.message);
}
})
},
enSure() {
// 确认事件
@@ -561,6 +593,11 @@ export default {
</script>
<style lang="scss" scoped>
.audit-text{
font-size: 14px;
color: #606266;
font-weight: 700;
}
.course-types {
display: flex;
justify-content: center;

View File

@@ -75,10 +75,11 @@
</el-table-column>
<el-table-column label="创建人" prop="sysCreateBy"></el-table-column>
<el-table-column label="创建时间" prop="sysCreateTime" width="200px" show-overflow-tooltip></el-table-column>
<el-table-column label="操作" width="100px" fixed="right">
<el-table-column label="操作" width="180px" fixed="right">
<template slot-scope="scope">
<el-button @click="toExamine(scope.row)" type="text" >审核</el-button>
<el-button @click="toPreview(scope.row)" type="text" >预览</el-button>
<el-button @click="toExamine(scope.row)" type="text">审核</el-button>
<el-button @click="toReferral(scope.row)" type="text">邀请审核</el-button>
<el-button @click="toPreview(scope.row)" type="text">预览</el-button>
</template>
</el-table-column>
</el-table>
@@ -176,15 +177,37 @@
</span>
</el-dialog>
<el-dialog title="课程详情" :visible.sync="showDetails" @close="examin = {};" width="900px" custom-class="g-dialog">
<!-- <div v-show="expandDetails"> -->
<div v-if="examin.detailType == 10"><auditCourse1 :showTest="true" :isDetails="false" :isShow="false" :id="examin.examineId"></auditCourse1></div>
<div v-if="examin.detailType == 20"><auditCourse2 :showTest="true" :isDetails="false" :isShow="false" :id="examin.examineId"></auditCourse2></div>
<!-- </div> -->
<span slot="footer" class="dialog-footer">
<el-button @click="showDetails = false;examin = {};"> </el-button>
</span>
</el-dialog>
<el-dialog title="请选择教师" :visible.sync="teacherInfo.show" :close-on-click-modal="false" :append-to-body="true" width="500px" custom-class="g-dialog">
<div style="height: 200px;padding-right: 30px;">
<el-form label-width="100px" @submit.native.prevent >
<el-form-item label="姓名或工号">
<el-input v-model="teacherInfo.name" maxlength="10" placeholder="请输入教师姓名或工号" @keyup.enter.native="keyupEnter">
<el-button @click="findUser" slot="append" icon="el-icon-search">搜索</el-button>
</el-input>
</el-form-item>
</el-form>
<div style="padding: 0px 20px 0 100px;margin-bottom: 20px;">
<el-radio-group v-model="selectedTeacher" v-if="teacherInfo.list.length > 0">
<el-radio v-for="(u,uidx) in teacherInfo.list" :key="uidx" :label="u.aid">{{u.name+'('+u.code+')'}}</el-radio>
</el-radio-group>
<span v-else>请先搜索教师,再选择</span>
</div>
<div style="padding-left: 20px;display:flex;">
<div style="width:84px;font-size: 14px;color: #606266;font-weight: 700;text-align: right;margin-right: 12px;margin-top: 10px;">邀请说明</div>
<el-input type="textarea" :rows="2" placeholder="请输入内容" v-model="referralData.remark" maxlength="200" show-word-limit></el-input>
</div>
</div>
<span slot="footer" class="dialog-footer">
<el-button @click="teacherInfo.show= false"> </el-button>
<el-button @click="submitReferral()" type="primary" >转审</el-button>
</span>
</el-dialog>
</div>
</template>
@@ -196,8 +219,8 @@ import auditCourse1 from '@/components/Course/auditCourse1.vue';
import auditCourse2 from '@/components/Course/auditCourse2.vue';
import adminPage from '@/components/Administration/adminPage.vue';
import {courseType} from '../../utils/tools.js';
import apiType from '../../api/modules/type.js';
import apiCourse from '../../api/modules/course.js';
import apiUser from '@/api/system/user.js'
import { mapGetters,mapActions} from 'vuex';
export default {
name: 'manageCourse',
@@ -207,6 +230,19 @@ export default {
},
data() {
return {
selectedTeacher:'',
teacherInfo:{
show:false,
list:[],
load:false,
name:'',
},
referralData:{
teacherId:'',
teacherName:'',
remark:'',
courseId:'',
},
sysTypeList: [],
sysTypeListMap:[],
resOwnerListMap:[],
@@ -289,6 +325,76 @@ export default {
this.loadSysTypes();
},
methods: {
submitReferral(){ // 转审
if(this.selectedTeacher == '') {
this.$message.warning('请选择教师!')
return
}
let teacherData = this.teacherInfo.list.find(item => item.aid == this.selectedTeacher);
this.referralData.teacherId = teacherData.aid;
this.referralData.teacherName=teacherData.name;
apiCourse.auditAppoint(this.referralData).then(res=>{
if(res.status == 200) {
this.$message.success('转审成功!');
this.searchData();
this.teacherInfo.show= false;
} else {
this.$message.error(res.message);
}
})
},
toReferral(row){
this.teacherInfo.list = [];
this.referralData={
teacherId:'',
teacherName:'',
remark:'',
};
this.selectedTeacher = '';
this.teacherInfo.name = '';
this.referralData.courseId = row.id;
this.teacherInfo.show = true;
},
keyupEnter(){ // 转审选择教师
this.findUser();
return false;
},
findUser(){
this.teacherInfo.load=false;
this.teacherInfo.list=[];
this.selectedTeacher=[];
var name=this.teacherInfo.name;
var regPos = /^\d+(\.\d+)?$/; //非负浮点数
if(regPos.test(name)){
//console.log("数字");
apiUser.getByLoginName(name).then(rs=>{
if(rs.status==200){
//因为根据工号查询只会是一个人所有会有null情况而json会返回空字符串
if(rs.result!=''){
this.teacherInfo.list.push(rs.result);
}else{
this.$message.error("查无此用户")
}
this.teacherInfo.load=true;
}else{
this.$message.error(rs.message);
}
})
}else{
// console.log("非数字");
apiUser.findByName(name).then(rs=>{
if(rs.status==200){
if(rs.result.length==0){
return this.$message.error(rs.message);
}
this.teacherInfo.list=rs.result;
this.teacherInfo.load=true;
}else{
this.$message.error(rs.message);
}
})
}
},
getsearch(){
this.params.pageIndex= 1;
this.searchData();

View File

@@ -28,7 +28,7 @@
</div>
<div class="content ql-container">
<div class="ql-editor">
<div class="qltext" style="word-break:break-all;" v-html="articleDetailData.content"></div>
<div class="qltext" style="word-break:break-all; color:#121212" v-html="articleDetailData.content"></div>
</div>
<!-- html内容 -->
<!-- <img v-if="$route.query.id==1" style="width: 100%;" :src="`${webBaseUrl}/temp/articleOne.png`"/> -->

View File

@@ -24,14 +24,14 @@
<interactBar :data="caseDetail" :type="3" :comments="false" :shares="true"></interactBar>
</div> -->
<!-- <div class="case-summary"><span>{{ caseDetail.summary }}</span></div> -->
<div class="btn-div" >
<span style="color:#666" v-if="caseDetail.orgDomain" class="item">{{ caseDetail.orgDomain }}</span>
<span style="color:#666" v-if="caseDetail.majorType" class="item">{{ caseDetail.majorType }}</span>
<span v-if="caseDetail.keyword1" class="item">{{ caseDetail.keyword1 }}</span>
<span v-if="caseDetail.keyword2" class="item">{{ caseDetail.keyword2 }}</span>
<span v-if="caseDetail.keyword3" class="item">{{ caseDetail.keyword3 }}</span>
<span v-if="caseDetail.keyword4" class="item">{{ caseDetail.keyword4 }}</span>
<span v-if="caseDetail.keyword5" class="item">{{ caseDetail.keyword5 }}</span>
<div class="btn-div clearfix" >
<div style="color:#666" v-if="caseDetail.orgDomain" class="item">{{ caseDetail.orgDomain }}</div>
<div style="color:#666" v-if="caseDetail.majorType" class="item">{{ caseDetail.majorType }}</div>
<div v-if="caseDetail.keyword1" class="item">{{ caseDetail.keyword1 }}</div>
<div v-if="caseDetail.keyword2" class="item">{{ caseDetail.keyword2 }}</div>
<div v-if="caseDetail.keyword3" class="item">{{ caseDetail.keyword3 }}</div>
<div v-if="caseDetail.keyword4" class="item">{{ caseDetail.keyword4 }}</div>
<div v-if="caseDetail.keyword5" class="item">{{ caseDetail.keyword5 }}</div>
<!-- <span v-if="caseDetail.caseType" class="item">{{ caseDetail.caseType }}</span>
<span v-if="caseDetail.caseType1" class="item">{{ caseDetail.caseType1 }}</span>
<span v-if="caseDetail.caseType2" class="item">{{ caseDetail.caseType2 }}</span> -->
@@ -39,22 +39,32 @@
<div class="case-summary"><span>{{ caseDetail.summary }}</span></div>
<div class="label" style="margin-top:10px">
<!-- <span style="margin-left:0px;" v-if="caseDetail.sysCreateTime">{{ caseDetail.sysCreateTime.substring(0,10) }}</span> -->
<interactBar :data="caseDetail" :type="3" :comments="false" :shares="true"></interactBar>
<interactBar :data="caseDetail" :type="3" :comments="false" :shares="true" :unicom="true"></interactBar>
</div>
</el-card>
<el-card :body-style="{ padding: '0px' }" class="jianjie" id="pdfPreview">
<!-- <div class="content">
{{ caseDetail.content }}
</div> -->
<pdfPreview v-if="pdfPath" :filePath="pdfPath" :data="caseDetail"></pdfPreview>
<pdfPreview v-if="pdfPath" :filePath="pdfPath"></pdfPreview>
</el-card>
<div class="postfixt-bot">
<div class="postfixt-bot-box" id="pdfTopBox">
<div style="display:inline-block;">
<interactBar :data="caseDetail" :type="3" :comments="false" :shares="false"></interactBar>
</div>
<div style="display:inline-block;margin: 0 20px;">
<el-button type="primary" @click="goTop()">返回顶部</el-button>
<div style="display: flex;justify-content: space-between;">
<div style="margin-left:20px">
<div style="margin-top:3px">
<i style="font-size:22px;color:#a3b1cc" v-show="zoomShow" @click="zoomBox()" class="el-icon-zoom-in"></i>
<i style="font-size:22px;color:#a3b1cc" v-show="!zoomShow" @click="zoomBox()" class="el-icon-zoom-out"></i>
</div>
</div>
<div>
<div style="display:inline-block;">
<interactBar :data="caseDetail" :type="3" :comments="false" :shares="true" :unicom="true"></interactBar>
</div>
<div style="display:inline-block;margin: 0 20px;">
<el-button type="primary" @click="goTop()">返回顶部</el-button>
</div>
</div>
</div>
</div>
</div>
@@ -65,7 +75,7 @@
</el-col>
</el-row>
</div>
<div style="width: 245px;margin-left: 5px;">
<div style="width: 245px;margin-left: 5px;" :class="zoomShow?'':'fixd-box-show'">
<div>
<div id="fixd-box">
<el-card class="ranking-card" >
@@ -145,6 +155,7 @@
</div>
</div>
<portal-footer></portal-footer>
<portalFloatTools></portalFloatTools>
</div>
</template>
@@ -153,7 +164,6 @@ import { mapGetters } from 'vuex';
import portalHeader from '@/components/PortalHeader.vue';
import portalFooter from '@/components/PortalFooter.vue';
import pdfPreview from '@/components/PdfPreview/view.vue';
import interactBar from '@/components/Portal/interactBar.vue';
import comments from '@/components/Portal/comments.vue';
import apiCase from '@/api/modules/cases.js';
@@ -164,14 +174,16 @@ import apiDict from "@/api/modules/dict.js"
import {encrypt} from '@/utils/jsencrypt.js';
import cookies from 'vue-cookies'
import {cutFullName} from "@/utils/tools.js";
import portalFloatTools from "@/components/PortalFloatTools.vue";
export default {
name: 'atticle',
components: { portalHeader, portalFooter, interactBar, author, comments,pdfPreview },
components: { portalHeader,portalFloatTools, portalFooter, interactBar, author, comments,pdfPreview },
computed: {
...mapGetters(['userInfo'])
},
data() {
return {
zoomShow:true,
isTopBoxShow:true,
toUsers:[],
ankingList:[],
@@ -204,6 +216,9 @@ export default {
);
},
methods: {
zoomBox(){
this.zoomShow = !this.zoomShow;
},
jumpRouter(item) {
// console.log(item)
location.href =`${this.webBaseUrl}/case/detail?id=${item.id}`
@@ -238,7 +253,7 @@ export default {
}
}
if(pdfPreview.getBoundingClientRect().top < 0) {
document.querySelector('#pdfTopBox').style.cssText = `position: fixed;bottom:0;width:${contentDiv-9}px`;
document.querySelector('#pdfTopBox').style.cssText = `position: fixed;bottom:0;box-shadow: -3px 3px 10px 10px rgba(90, 119, 186, .1);width:${contentDiv-9}px;`;
} else {
document.querySelector('#pdfTopBox').style.cssText = "position:static";
}
@@ -325,6 +340,9 @@ export default {
</script>
<style scoped lang="scss">
.fixd-box-show{
display: none;
}
::v-deep .interact-bar .interact-bar-btns {
justify-content: flex-start!important;
@@ -341,7 +359,8 @@ export default {
// border: 1px solid #eee;
// z-index: 999;
.postfixt-bot-box{
text-align: right;
// text-align: right;
background-color: #fff;
// border: 1px solid #eee;
}
@@ -350,7 +369,6 @@ export default {
border:none;
}
.case-summary{
margin-top: 10px;
font-size: 15px;
color: #454545;
word-break:break-all;
@@ -421,16 +439,32 @@ export default {
.type {
color: #0079fe;
}
.clearfix:after{
content: "020";
display: block;
height: 0;
clear: both;
visibility: hidden;
}
.btn-div {
margin: 8px 0;
margin: 0px 0 5px 0;
padding-bottom: 5px;
padding-top:5px;
height: 100%;
width: 100%;
.item {
margin: 0 10px 0 0px;
float: left;
margin: 7px 10px 0px 0px;
border: 1px solid #c2c3c8;
padding: 3px 10px;
padding: 0px 10px;
line-height: 24px;
text-align: center;
height: 24px;
box-sizing: border-box;
border-radius: 2px;
font-size: 14px;
font-size: 14px;
color: #9c9c9c;
}
.item-right {

View File

@@ -89,14 +89,14 @@
<div style="height:32px; ">
<author :avatar="item.authorInfo.avatar" :name="item.authorInfo.name" :info="item.authorInfo.orgInfo" :sex="item.authorInfo.sex"></author>
</div>
<div class="keyword-text">
<span style="color:#666" v-if="item.orgDomain">{{ item.orgDomain }}</span>
<span style="color:#666" v-if="item.majorType">{{ item.majorType }}</span>
<span v-if="item.keyword1">{{ item.keyword1 }}</span>
<span v-if="item.keyword2">{{ item.keyword2 }}</span>
<span v-if="item.keyword3">{{ item.keyword3 }}</span>
<span v-if="item.keyword4">{{ item.keyword4 }}</span>
<span v-if="item.keyword5">{{ item.keyword5 }}</span>
<div class="keyword-text clearfix">
<div style="color:#666" v-if="item.orgDomain">{{ item.orgDomain }}</div>
<div style="color:#666" v-if="item.majorType">{{ item.majorType }}</div>
<div v-if="item.keyword1">{{ item.keyword1 }}</div>
<div v-if="item.keyword2">{{ item.keyword2 }}</div>
<div v-if="item.keyword3">{{ item.keyword3 }}</div>
<div v-if="item.keyword4">{{ item.keyword4 }}</div>
<div v-if="item.keyword5">{{ item.keyword5 }}</div>
</div>
</router-link>
<div class="case-info-summary" @click="jumcasedet(item)">
@@ -632,7 +632,7 @@ export default {
}
.case-titdiv {
line-height: 25px;
line-height: 30px;
display: flex;
.case-tittext {
font-size: 18px;
@@ -650,13 +650,24 @@ export default {
margin-left: 0;
margin-right: 20px;
}
.clearfix:after{
content: "020";
display: block;
height: 0;
clear: both;
visibility: hidden;
}
.keyword-text {
span {
line-height: 30px;
div {
margin-top: 5px;
float: left;
height: 19px;
line-height: 19px;
font-size: 12px;
color: #9c9c9c;
border: 1px solid #c2c3c8;
padding: 2px 5px;
padding: 0px 5px;
border-radius: 2px;
margin-right: 8px;
}
@@ -850,6 +861,7 @@ export default {
}
}
.case-info-summary {
margin-top:3px;
cursor: pointer;
margin-bottom: 5px;
word-break: break-all;

View File

@@ -170,7 +170,7 @@
data(){
return {
isRead: '',
tabName:'course',
tabName:'all',
keyword:'',
courseIndex:null,
qaIndex:null,

View File

@@ -18,7 +18,7 @@
</el-row>
<el-tabs v-model="tabName" @tab-click="changeTab" style="margin-top:14px">
<!-- 全部 -->
<!-- <el-tab-pane label="全部" name="all">
<el-tab-pane label="全部" name="all">
<div v-for="(item, index) in dataList.list">
<course-items type="toMy" v-if="item.type==1" :items="[item]" @confirm="confirm"></course-items>
<case-items type="toMy" v-if="item.type==3" :items="[item]" @confirm="confirm" ></case-items>
@@ -44,7 +44,7 @@
<div v-else class="zan-wu">暂无数据</div>
</div>
</div>
</el-tab-pane> -->
</el-tab-pane>
<el-tab-pane label="课程" name="course">
<div style="min-height: 500px;">
<course-items :keyword="keyword" type="toMy" @confirm="confirm" :items="courseList.list"></course-items>
@@ -160,7 +160,7 @@ export default {
return {
isSearh:false,
isRead: '',
tabName: 'course',
tabName: 'all',
keyword: '',
courseIndex: null,
qaIndex: null,

View File

@@ -587,14 +587,14 @@ export default {
let ids;
ids = list.map((item, index) => {
// item.authorInfo = { aid: '', name: '', orgInfo: '', avater: '' };
return item.cases.sysCreateAid;
return item.cases.authorId;
});
let noRepeatIds = [...new Set(ids)];
apiUser.getByIds(noRepeatIds).then(res => {
if (res.status == 200) {
this.caseList.list = list.map(item => {
let obj = res.result.find(author => {
return author.aid == item.cases.sysCreateAid;
return author.aid == item.cases.authorId;
});
item = Object.assign(item, obj);
return item;
@@ -674,7 +674,6 @@ export default {
} else {
id = item.id;
}
apiFavorite.del(id).then(res => {
if (res.status == 200) {
this.$message.success('取消收藏成功');