2021-07-21 09:23:02 +08:00
|
|
|
<template>
|
2023-06-16 17:51:08 +08:00
|
|
|
<el-checkbox-group v-model="checkList" v-if="!isNoData">
|
2023-06-09 10:57:00 +08:00
|
|
|
<div @click="isSelectedStatus && data.isBuiltIn !== 1 && clickCard(data,$event)" @mouseenter="mouseenter(data)" @mouseleave="mouseleave(data)" v-for="data in tableData" :key="data.knowledgeId" class="card-item" :class="data.isSelected ? 'card-selected' : ''">
|
2023-04-26 23:46:23 +08:00
|
|
|
<div class="card-content">
|
|
|
|
|
<div class="card-title">
|
2023-05-29 13:00:28 +08:00
|
|
|
<div class="card-title-name" :title="data.name">{{data.name}}</div>
|
2023-04-26 23:46:23 +08:00
|
|
|
<div class="card-title-more">
|
2023-06-08 17:17:41 +08:00
|
|
|
<span v-show="!isSelectedStatus && data.showMore && data.isBuiltIn !== 1"><i class="cn-icon cn-icon-more-dark" @mouseenter="mouseenterMore(data)" test-id="mouseenter-dark"></i></span>
|
2023-04-26 23:46:23 +08:00
|
|
|
<div class="card-operate" v-show="!isSelectedStatus && data.moreOptions" @mouseleave="mouseleaveMore(data)">
|
2023-05-29 13:00:28 +08:00
|
|
|
<div class="card-title-more-edit" @click="edit(data.knowledgeId)" >{{$t('overall.edit')}}</div>
|
2023-04-26 23:46:23 +08:00
|
|
|
<div class="card-title-more-delete" @click="del(data)" >{{$t('overall.delete')}}</div>
|
|
|
|
|
</div>
|
2023-06-08 17:17:41 +08:00
|
|
|
<el-checkbox @click.stop="" :disabled="data.isBuiltIn === 1" @change="(val) => {checkboxStatusChange(val,data)}" style="position: absolute;right: -12px;" v-if="isSelectedStatus" :key="data.knowledgeId" :label="data"><br></el-checkbox>
|
2023-04-26 23:46:23 +08:00
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
2023-05-29 13:00:28 +08:00
|
|
|
<div class="card-id">ID:{{data.knowledgeId}}</div>
|
|
|
|
|
<div class="card-desc" :title="data.description">{{data.description?data.description:'—'}}</div>
|
2023-04-26 23:46:23 +08:00
|
|
|
</div>
|
|
|
|
|
<div class="card-operate__footer">
|
2023-05-29 13:00:28 +08:00
|
|
|
<div class="card-type">
|
|
|
|
|
<div class="card-category">{{tagCategoryText(data.category)}}</div>
|
|
|
|
|
<div class="card-source">{{tagSourceText(data.source)}}</div>
|
|
|
|
|
</div>
|
2023-04-26 23:46:23 +08:00
|
|
|
<el-switch class="card-enable"
|
|
|
|
|
v-model="data.status"
|
|
|
|
|
active-color="#38ACD2"
|
|
|
|
|
inactive-color="#C0CEDB"
|
2023-06-02 14:15:00 +08:00
|
|
|
:active-value="1"
|
|
|
|
|
:inactive-value="0"
|
2023-05-29 13:00:28 +08:00
|
|
|
@change="changeStatus($event,data.knowledgeId)"
|
2023-04-26 23:46:23 +08:00
|
|
|
>
|
|
|
|
|
</el-switch>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</el-checkbox-group>
|
2023-06-16 17:51:08 +08:00
|
|
|
<div class="table-no-data" v-else="isNoData">
|
|
|
|
|
<div class="table-no-data__title">{{ $t('npm.noData') }}</div>
|
|
|
|
|
</div>
|
2021-07-21 09:23:02 +08:00
|
|
|
</template>
|
|
|
|
|
|
|
|
|
|
<script>
|
|
|
|
|
import table from '@/mixins/table'
|
2023-05-29 13:00:28 +08:00
|
|
|
import { knowledgeBaseCategory, knowledgeBaseSource } from '@/utils/constants'
|
2021-07-21 09:23:02 +08:00
|
|
|
export default {
|
2023-05-17 10:51:52 +08:00
|
|
|
name: 'knowledgeBaseTableForCard',
|
2021-07-21 09:23:02 +08:00
|
|
|
mixins: [table],
|
2023-04-26 23:46:23 +08:00
|
|
|
props: {
|
2023-06-16 17:51:08 +08:00
|
|
|
isNoData: {
|
|
|
|
|
type: Boolean,
|
|
|
|
|
default: false
|
|
|
|
|
},
|
2023-04-26 23:46:23 +08:00
|
|
|
isSelectedStatus: {
|
|
|
|
|
type: Boolean
|
|
|
|
|
}
|
|
|
|
|
},
|
2021-07-21 09:23:02 +08:00
|
|
|
data () {
|
|
|
|
|
return {
|
2023-04-26 23:46:23 +08:00
|
|
|
tableTitle: [],
|
|
|
|
|
checkList: []
|
2021-07-21 09:23:02 +08:00
|
|
|
}
|
2023-03-07 18:48:15 +08:00
|
|
|
},
|
2023-04-26 23:46:23 +08:00
|
|
|
methods: {
|
2023-04-28 14:49:50 +08:00
|
|
|
clickCard (data, event) {
|
|
|
|
|
if (data.isSelected) { // 原来为选中,当前点击后未选中
|
|
|
|
|
const index = this.checkList.indexOf(data)
|
|
|
|
|
if (index > -1) {
|
|
|
|
|
this.checkList.splice(index, 1)
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
const index = this.checkList.indexOf(data)
|
|
|
|
|
if (index === -1) {
|
|
|
|
|
this.checkList.push(data)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
const val = !data.isSelected
|
|
|
|
|
data.isSelected = val
|
|
|
|
|
this.$emit('checkboxStatusChange', val, data)
|
|
|
|
|
},
|
2023-04-26 23:46:23 +08:00
|
|
|
checkboxStatusChange (val, data) {
|
2023-04-28 14:49:50 +08:00
|
|
|
data.isSelected = val
|
2023-04-26 23:46:23 +08:00
|
|
|
this.$emit('checkboxStatusChange', val, data)
|
|
|
|
|
},
|
|
|
|
|
showSelect () {
|
|
|
|
|
// this.isSelectedStatus = true
|
|
|
|
|
},
|
|
|
|
|
hideSelect () {
|
|
|
|
|
// this.isSelectedStatus = false
|
|
|
|
|
},
|
2023-04-28 14:49:50 +08:00
|
|
|
clearSelect () {
|
|
|
|
|
this.$nextTick(() => {
|
|
|
|
|
this.checkList = []
|
|
|
|
|
if (this.tableData && this.tableData.length > 0) {
|
|
|
|
|
this.tableData.forEach(data => {
|
|
|
|
|
data.isSelected = false
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
},
|
2023-04-26 23:46:23 +08:00
|
|
|
mouseenterMore (card) {
|
|
|
|
|
this.tableData.forEach(t => {
|
2023-05-29 13:00:28 +08:00
|
|
|
if (t.knowledgeId === card.knowledgeId) {
|
2023-04-26 23:46:23 +08:00
|
|
|
t.moreOptions = true
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
},
|
|
|
|
|
mouseleaveMore (card) {
|
|
|
|
|
this.tableData.forEach(t => {
|
2023-05-29 13:00:28 +08:00
|
|
|
if (t.knowledgeId === card.knowledgeId) {
|
2023-04-26 23:46:23 +08:00
|
|
|
t.moreOptions = false
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
},
|
|
|
|
|
mouseenter (card) {
|
|
|
|
|
this.tableData.forEach(t => {
|
2023-05-29 13:00:28 +08:00
|
|
|
if (t.knowledgeId === card.knowledgeId) {
|
2023-04-26 23:46:23 +08:00
|
|
|
t.showMore = true
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
},
|
|
|
|
|
mouseleave (card) {
|
|
|
|
|
this.tableData.forEach(t => {
|
2023-05-29 13:00:28 +08:00
|
|
|
if (t.knowledgeId === card.knowledgeId) {
|
2023-04-26 23:46:23 +08:00
|
|
|
t.showMore = false
|
|
|
|
|
t.moreOptions = false
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
},
|
|
|
|
|
del (data) {
|
|
|
|
|
this.$emit('delete', data)
|
|
|
|
|
},
|
|
|
|
|
edit (id) {
|
2023-05-15 11:42:21 +08:00
|
|
|
const pageNo = this.$router.currentRoute.value.query.pageNo
|
2023-05-29 13:00:28 +08:00
|
|
|
const listMode = this.$router.currentRoute.value.query.listMode
|
2023-04-26 23:46:23 +08:00
|
|
|
this.$router.push({
|
|
|
|
|
path: '/knowledgeBase/edit',
|
|
|
|
|
query: {
|
|
|
|
|
t: +new Date(),
|
2023-05-15 11:42:21 +08:00
|
|
|
pageNoForTable: pageNo || 1,
|
2023-05-29 13:00:28 +08:00
|
|
|
id: id,
|
|
|
|
|
listMode: listMode
|
2023-04-26 23:46:23 +08:00
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
mounted () {
|
|
|
|
|
this.tableData.forEach(item => {
|
|
|
|
|
item.showMore = false
|
|
|
|
|
item.moreOptions = false
|
|
|
|
|
})
|
|
|
|
|
},
|
2023-05-29 13:00:28 +08:00
|
|
|
computed: {
|
|
|
|
|
tagCategoryText () {
|
|
|
|
|
return function (type) {
|
|
|
|
|
const t = knowledgeBaseCategory.find(t => t.value === type)
|
|
|
|
|
return t ? t.name : ''
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
tagSourceText () {
|
|
|
|
|
return function (type) {
|
|
|
|
|
const t = knowledgeBaseSource.find(t => t.value === type)
|
|
|
|
|
return t ? t.name : ''
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
2021-07-21 09:23:02 +08:00
|
|
|
}
|
|
|
|
|
</script>
|