parent
5cc53f0d0d
commit
5d776df829
@ -0,0 +1,101 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<el-drawer
|
||||||
|
size="44%"
|
||||||
|
title="详情"
|
||||||
|
:visible.sync="visible"
|
||||||
|
direction="rtl">
|
||||||
|
<el-descriptions :column="2" border direction="vertical" style="margin: 20px;">
|
||||||
|
<el-descriptions-item v-for="(value,key) in showRow" :label="value">
|
||||||
|
<template v-if="descriptionItem(key)">
|
||||||
|
<template v-if="isHTML(descriptionItem(key))">
|
||||||
|
<div v-html="descriptionItem(key)"></div>
|
||||||
|
</template>
|
||||||
|
<template v-else>
|
||||||
|
<div>{{ descriptionItem(key) }}</div>
|
||||||
|
</template>
|
||||||
|
</template>
|
||||||
|
<template v-else>
|
||||||
|
<div v-for="(i) in row[key]">
|
||||||
|
<a :download="i.url" :href="i.url" target="_blank">{{ i.original_name }}</a>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</el-descriptions-item>
|
||||||
|
</el-descriptions>
|
||||||
|
</el-drawer>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
type: 1,//1通知2制度文档
|
||||||
|
visible: false,
|
||||||
|
row: {},
|
||||||
|
|
||||||
|
t1: {
|
||||||
|
name: '名称',
|
||||||
|
shijian: '时间',
|
||||||
|
neirong: '内容',
|
||||||
|
},
|
||||||
|
t2: {
|
||||||
|
name: '名称',
|
||||||
|
created_at: '发布时间',
|
||||||
|
'system_catalogue_id_system_catalogues_id_relation.name': '目录',
|
||||||
|
'id_system_file_files_system_id_relation': '附件'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
show () {
|
||||||
|
this.visible = true;
|
||||||
|
},
|
||||||
|
hide () {
|
||||||
|
this.visible = false;
|
||||||
|
},
|
||||||
|
setRow (row) {
|
||||||
|
this.row = row;
|
||||||
|
},
|
||||||
|
setType (type) {
|
||||||
|
this.type = type
|
||||||
|
},
|
||||||
|
|
||||||
|
isHTML (str) {
|
||||||
|
const htmlRegex = /<([A-Za-z][A-Za-z0-9]*)\b[^>]*>(.*?)<\/\1>/;
|
||||||
|
return htmlRegex.test(str);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
showRow () {
|
||||||
|
return this.type === 1 ? this.t1 : this.t2;
|
||||||
|
},
|
||||||
|
descriptionItem () {
|
||||||
|
return function (key) {
|
||||||
|
if (key.includes('files')) return false;
|
||||||
|
|
||||||
|
let splits = key.split('.');
|
||||||
|
let value = this.row;
|
||||||
|
for (let i = 0;i < splits.length;i++) {
|
||||||
|
value = value[splits[i]]
|
||||||
|
}
|
||||||
|
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped lang="scss">
|
||||||
|
a {
|
||||||
|
color: red;
|
||||||
|
text-decoration: none;
|
||||||
|
transition: all 0.2s;
|
||||||
|
}
|
||||||
|
|
||||||
|
a:hover {
|
||||||
|
color: red;
|
||||||
|
text-decoration: underline;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
Loading…
Reference in new issue