8 changed files with 393 additions and 11 deletions
@ -0,0 +1,323 @@ |
|||
<template> |
|||
<div class="electroInfo"> |
|||
<!-- 文件上传 --> |
|||
<el-upload |
|||
class="upload-demo" |
|||
drag |
|||
:action="uploadUrl" |
|||
multiple |
|||
:headers="headers" |
|||
:show-file-list="false" |
|||
:data="uploadData" |
|||
:on-success="successFile" |
|||
:before-upload="beforeUpload" |
|||
> |
|||
<i class="el-icon-upload" /> |
|||
<div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div> |
|||
<div slot="tip" class="el-upload__tip">只能上传PDF文件</div> |
|||
</el-upload> |
|||
<!-- 节点 --> |
|||
<div class="collect_context"> |
|||
<el-button v-if="!collectData.length" size="mini" @click="dialogFormVisible = true">新增节点</el-button> |
|||
<el-tree |
|||
v-else |
|||
accordion |
|||
:data="collectData" |
|||
node-key="id" |
|||
highlight-current |
|||
:props="defaultProps" |
|||
:default-expanded-keys="defaultExpandIds" |
|||
@node-expand="handleNodeExpand" |
|||
> |
|||
<span slot-scope="{ node, data }" class="custom-tree-node" @click="levelClick(data)"> |
|||
<span class="treeDefault"> |
|||
<span>{{ node.label }}</span> |
|||
</span> |
|||
<span> |
|||
<el-dropdown v-if="!data.patientId" trigger="click" @command="(command)=>addNode(command,node,data)"> |
|||
<span :class="{'active':curNode.id===data.id}"> |
|||
<i class="el-icon-plus" /> |
|||
</span> |
|||
<el-dropdown-menu slot="dropdown"> |
|||
<el-dropdown-item command="same">新增同级节点</el-dropdown-item> |
|||
<el-dropdown-item command="child">新增子级节点</el-dropdown-item> |
|||
</el-dropdown-menu> |
|||
</el-dropdown> |
|||
<el-dropdown trigger="click" style="margin-left: 10px" @command="(command)=>handleNode(command,node,data)"> |
|||
<span :class="{'active':curNode.id===data.id}">···</span> |
|||
<el-dropdown-menu slot="dropdown"> |
|||
<el-dropdown-item command="rename">编辑</el-dropdown-item> |
|||
<el-dropdown-item command="delete">删除</el-dropdown-item> |
|||
</el-dropdown-menu> |
|||
</el-dropdown> |
|||
</span> |
|||
</span> |
|||
</el-tree> |
|||
<el-dialog :modal-append-to-body="false" width="30%" title="节点名称" :visible.sync="dialogFormVisible"> |
|||
<el-input ref="renameRef" v-model="editName" /> |
|||
<div slot="footer" class="dialog-footer"> |
|||
<el-button @click="dialogFormVisible = false">取 消</el-button> |
|||
<el-button type="primary" :disabled="disabled" @click="confirmNode()">确 定</el-button> |
|||
</div> |
|||
</el-dialog> |
|||
</div> |
|||
<!-- 文件列表 --> |
|||
<el-table center :data="tableData"> |
|||
<el-table-column label="文件名" prop="fileName"> |
|||
<template slot-scope="scope"> |
|||
<span v-if="scope.row.fileName">{{ scope.row.fileName.split('-')[0] }}</span> |
|||
</template> |
|||
</el-table-column> |
|||
<el-table-column label="操作" align="center" width="100"> |
|||
<template slot-scope="scope"> |
|||
<div> |
|||
<span style="color: #ff0000;cursor: pointer" @click="deleteFile(scope.row)">删除</span> |
|||
<span style="color: #1890ff;cursor: pointer;margin-left: 8px" @click="goDetail(scope.row)">预览</span> |
|||
</div> |
|||
</template> |
|||
</el-table-column> |
|||
</el-table> |
|||
</div> |
|||
</template> |
|||
|
|||
<script> |
|||
export default { |
|||
name: 'ElectronInfo', |
|||
data() { |
|||
return { |
|||
uploadUrl: window.SITE_CONFIG['apiURL'] + '/bd/knowledgeTree/uploadFiles', |
|||
uploadData: { |
|||
treeId: '' |
|||
}, |
|||
headers: { |
|||
token: window.sessionStorage.getItem('xa-token') |
|||
}, |
|||
collectData: [], |
|||
tableData: [], |
|||
dialogFormVisible: false, |
|||
defaultProps: { |
|||
children: 'childList', |
|||
label: 'content' |
|||
}, |
|||
addParam: { |
|||
}, |
|||
curNode: '', |
|||
editName: '', |
|||
changeType: '', |
|||
disabled: false, // 用防止多次添加或多次重命名 |
|||
defaultExpandIds: [] |
|||
} |
|||
}, |
|||
watch: { |
|||
dialogFormVisible(newValue) { |
|||
if (newValue) { |
|||
this.$nextTick(() => { |
|||
this.$refs.renameRef.focus() |
|||
}) |
|||
} |
|||
}, |
|||
collectData(val) { |
|||
if (!val.length) { |
|||
this.disabled = false |
|||
this.addParam.id = '' |
|||
this.addParam.pid = 0 |
|||
this.editName = '' |
|||
} |
|||
} |
|||
}, |
|||
mounted() { |
|||
this.getTree() |
|||
}, |
|||
methods: { |
|||
getTree() { |
|||
this.$http.get('/bd/knowledgeTree/getTree').then(res => { |
|||
this.collectData = res.data.data |
|||
}) |
|||
}, |
|||
// 删除文件 |
|||
deleteFile(scopeRow) { |
|||
this.$confirmFun('你确定要删除吗?') |
|||
.then(() => { |
|||
this.$http.get('/bd/knowledgeTree/deleteFile', { |
|||
params: { |
|||
id: scopeRow.id |
|||
} |
|||
}).then(() => { |
|||
this.$message({ |
|||
message: '删除成功!', |
|||
type: 'success' |
|||
}) |
|||
this.queryCurKnowledge(this.curNode.id) |
|||
}) |
|||
}).catch(() => {}) |
|||
}, |
|||
// 预览文件 |
|||
goDetail(scopeRow) { |
|||
window.open(scopeRow.fileUrl, '_blank') |
|||
}, |
|||
// 上传前做文件格式校验 |
|||
beforeUpload(file) { |
|||
const extension = file.name.split('.').slice(-1)[0] === 'pdf' |
|||
const isLt100M = file.size / 1024 / 1024 > 100 |
|||
if (!extension) { |
|||
this.$message.warning('上传文件只能是pdf格式!') |
|||
} |
|||
if (isLt100M) { |
|||
this.$message.warning('上传文件大小不能超过 100MB!') |
|||
} |
|||
return extension && !isLt100M |
|||
}, |
|||
// 上传成功 |
|||
successFile(data) { |
|||
if (data.code === 500) { |
|||
this.$message.error(data.msg) |
|||
} |
|||
if (data.code === 0) { |
|||
this.$message.success('上传成功!') |
|||
this.queryCurKnowledge(this.curNode.id) |
|||
} |
|||
}, |
|||
levelClick(data) { |
|||
this.curNode = data |
|||
this.remark = data.remark || '' |
|||
this.uploadData.treeId = data.id |
|||
this.queryCurKnowledge(data.id) |
|||
}, |
|||
// 获取子节点下的全部文件 |
|||
queryCurKnowledge(treeId) { |
|||
this.$http.get('/bd/knowledgeTree/getFileListByTreeId', { |
|||
params: { |
|||
treeId |
|||
} |
|||
}).then(res => { |
|||
this.tableData = res.data.data |
|||
}) |
|||
}, |
|||
// 新增节点 |
|||
addNode(command, node, data) { |
|||
this.changeType = '新增' |
|||
this.editMessage = '添加成功!' |
|||
this.disabled = false |
|||
switch (command) { |
|||
// 新建同级节点 |
|||
case 'same': |
|||
this.dialogFormVisible = true |
|||
this.addParam.pid = data.pid |
|||
this.editName = node.name |
|||
break |
|||
// 新建子级节点 |
|||
case 'child': |
|||
this.dialogFormVisible = true |
|||
this.addParam.pid = data.id |
|||
this.editName = node.name |
|||
break |
|||
// 初始新增 |
|||
default: |
|||
this.addParam.id = '' |
|||
this.addParam.pid = 0 |
|||
this.editName = '' |
|||
break |
|||
} |
|||
}, |
|||
// 更多 |
|||
handleNode(command, node, data) { |
|||
switch (command) { |
|||
case 'rename': |
|||
this.disabled = false |
|||
this.editNode(node, data) |
|||
break |
|||
case 'delete': |
|||
this.deleteNode(data) |
|||
break |
|||
} |
|||
}, |
|||
// 编辑节点 |
|||
editNode(node, data) { |
|||
this.dialogFormVisible = true |
|||
this.editName = node.label |
|||
this.editMessage = '重命名成功!' |
|||
this.changeType = '修改' |
|||
this.addParam.id = data.id |
|||
}, |
|||
// 节点删除 |
|||
deleteNode(data) { |
|||
this.$confirmFun('你确定要删除吗?') |
|||
.then(() => { |
|||
this.$http.get('/bd/knowledgeTree/deleteTree', { |
|||
params: { |
|||
id: data.id |
|||
} |
|||
}).then(() => { |
|||
this.$message({ |
|||
message: '删除成功!', |
|||
type: 'success' |
|||
}) |
|||
this.getTree() |
|||
}) |
|||
}).catch(() => {}) |
|||
}, |
|||
// 确定新增节点/重命名 |
|||
async confirmNode() { |
|||
const params = { |
|||
doctorId: this.doctorId, |
|||
content: this.editName, |
|||
...this.addParam |
|||
} |
|||
this.disabled = true |
|||
let url = '' |
|||
if (this.changeType === '修改') { |
|||
url = 'bd/knowledgeTree/updateTree' |
|||
} else { |
|||
url = '/bd/knowledgeTree/addTree' |
|||
} |
|||
await this.$http.post(url, params) |
|||
this.$message({ |
|||
message: this.editMessage, |
|||
type: 'success' |
|||
}) |
|||
this.dialogFormVisible = false |
|||
await this.getTree() |
|||
}, |
|||
// 树节点展开 |
|||
handleNodeExpand() { |
|||
if (this.defaultExpandIds.indexOf(this.curNode.id) === -1) { |
|||
this.defaultExpandIds.push(this.curNode.id) |
|||
} |
|||
} |
|||
} |
|||
} |
|||
</script> |
|||
|
|||
<style lang="scss" scoped> |
|||
.el-upload__tip{ |
|||
margin-bottom: 16px; |
|||
} |
|||
.collect_context{ |
|||
margin: 10px 0; |
|||
font-size: 16px; |
|||
color: #000; |
|||
} |
|||
::v-deep .el-tree--highlight-current .el-tree-node.is-current>.el-tree-node__content{ |
|||
background-color: #409EFF; |
|||
color: #FFFFFF; |
|||
span{ |
|||
color: #FFFFFF; |
|||
} |
|||
} |
|||
.electroInfo{ |
|||
overflow: hidden; |
|||
} |
|||
.treeDefault{ |
|||
display: inline-block; |
|||
min-width: 200px; |
|||
max-width:500px; |
|||
font-size: 16px; |
|||
text-overflow: ellipsis; |
|||
overflow: hidden; |
|||
padding-right: 10px; |
|||
} |
|||
::v-deep .custom-tree-node{ |
|||
display: flex; |
|||
align-items: center; |
|||
} |
|||
</style> |
@ -0,0 +1,42 @@ |
|||
<template> |
|||
<div class="content"> |
|||
<el-tabs v-model="activeName"> |
|||
<el-tab-pane label="疾病标签" name="first">疾病标签</el-tab-pane> |
|||
<el-tab-pane label="电子资料" name="second"> |
|||
<electron-info v-if="activeName==='second'" /> |
|||
</el-tab-pane> |
|||
</el-tabs> |
|||
</div> |
|||
</template> |
|||
|
|||
<script> |
|||
import ElectronInfo from '@/components/360View/knowledge/electronInfo.vue' |
|||
|
|||
export default { |
|||
name: 'KnowledgeBase', |
|||
components: { ElectronInfo }, |
|||
data() { |
|||
return { |
|||
activeName: 'second' |
|||
} |
|||
} |
|||
} |
|||
</script> |
|||
|
|||
<style lang="scss" scoped> |
|||
.content{ |
|||
width: 650px; |
|||
padding: 12px 8px; |
|||
} |
|||
::v-deep .el-tabs{ |
|||
height: 100%; |
|||
} |
|||
::v-deep .el-tabs__content{ |
|||
padding: 10px 0 0 0; |
|||
overflow: hidden; |
|||
overflow-y: scroll; |
|||
} |
|||
::v-deep .el-tabs__header{ |
|||
margin: 0; |
|||
} |
|||
</style> |
Loading…
Reference in new issue