25 changed files with 1474 additions and 470 deletions
@ -0,0 +1,855 @@ |
|||
<template> |
|||
<div class="foreBox"> |
|||
<div class="moveIcon"> |
|||
<p @click="moveAll(1)"><i class="el-icon-back" /></p> |
|||
<p style="margin-top: 5px" @click="moveAll(2)"><i class="el-icon-back" style="transform: rotateY(180deg)" /></p> |
|||
</div> |
|||
<div style="display: flex;margin-top: 32px"> |
|||
<div style="width: 200px;padding-right: 8px;text-align: left;overflow-x: auto"> |
|||
<p style="font-weight: bold;margin-bottom: 12px;text-align: left">描述项模板</p> |
|||
<el-button v-if="!treeCaseList.length" type="primary" size="small" @click="append(1)">+新增</el-button> |
|||
<el-tree |
|||
ref="tree" |
|||
:data="treeCaseList" |
|||
:props="treeProps" |
|||
:default-expand-all="true" |
|||
:expand-on-click-node="false" |
|||
node-key="id" |
|||
highlight-current |
|||
@node-click="templateData" |
|||
> |
|||
<span slot-scope="{ node, data }" class="custom-tree-node"> |
|||
<span style="display: inline-block;min-width: 80px"> |
|||
<span>{{ node.label }}</span> |
|||
</span> |
|||
<span> |
|||
<el-button v-if="!data.treeId" icon="el-icon-plus" style="font-size: 12px;color: #409EFF" type="text" @click.stop="append(2, data)"></el-button> |
|||
<el-button icon="el-icon-delete" style="font-size: 12px;color: #F56C6C" type="text" @click.stop="remove(node, data)"></el-button> |
|||
</span> |
|||
</span> |
|||
</el-tree> |
|||
</div> |
|||
<el-table |
|||
id="foreCheck" |
|||
ref="multipleTable" |
|||
:data="tableData" |
|||
style="margin: 8px 8px 0 0" |
|||
@select="selection" |
|||
> |
|||
<el-table-column |
|||
type="selection" |
|||
width="55" |
|||
/> |
|||
<el-table-column |
|||
align="center" |
|||
label="OD" |
|||
> |
|||
<template slot-scope="scope"> |
|||
<div> |
|||
<span v-if="scope.row.sort === 1"> |
|||
<span style="margin-right: 16px">结膜:充血</span><treeSelect |
|||
v-model="scope.row.od" |
|||
:props="treeProps" |
|||
style="display: inline-block;width: 60%" |
|||
:options="scope.row.data" |
|||
:multiple="true" |
|||
:filterable="true" |
|||
:check-strictly="true" |
|||
:default-expand-all="true" |
|||
@handleNode="handleNode(scope.$index,'od', $event)" |
|||
@add="addTree(scope.row, $event)" |
|||
@remove="removeTree" |
|||
/> |
|||
</span> |
|||
<span v-if="scope.row.sort === 2"> |
|||
<span style="margin-right: 16px">结膜:分泌物</span><treeSelect |
|||
v-model="scope.row.od" |
|||
:props="treeProps" |
|||
style="display: inline-block;width: 60%" |
|||
:options="scope.row.data" |
|||
:multiple="true" |
|||
:filterable="true" |
|||
:check-strictly="true" |
|||
:default-expand-all="true" |
|||
@handleNode="handleNode(scope.$index,'od', $event)" |
|||
@add="addTree(scope.row, $event)" |
|||
@remove="removeTree" |
|||
/> |
|||
</span> |
|||
<span v-if="scope.row.sort === 99"> |
|||
<treeSelect v-model="scope.row.od" :options="scope.row.data" :props="treeProps" :multiple="true" :filterable="true" :check-strictly="true" :default-expand-all="true" @handleNode="handleNode(scope.$index,'od', $event)" @add="addTree(scope.row, $event)" @remove="removeTree" /> |
|||
</span> |
|||
<span v-if="!scope.row.sort && !scope.row.id">{{ scope.row.name }}</span> |
|||
</div> |
|||
</template> |
|||
</el-table-column> |
|||
<el-table-column |
|||
class="move" |
|||
align="center" |
|||
width="120" |
|||
> |
|||
<template slot-scope="scope"> |
|||
<div> |
|||
<p @click="moveHandle(scope.$index,1, scope.row)"><i class="el-icon-back" /></p> |
|||
<p style="margin-top: 5px" @click="moveHandle(scope.$index,2, scope.row)"><i class="el-icon-back" style="transform: rotateY(180deg)" /></p> |
|||
</div> |
|||
</template> |
|||
</el-table-column> |
|||
<el-table-column |
|||
align="center" |
|||
label="OS" |
|||
width="300" |
|||
> |
|||
<template slot-scope="scope"> |
|||
<div> |
|||
<span v-if="scope.row.sort === 1"> |
|||
<span style="margin-right: 16px">结膜:充血</span><treeSelect |
|||
v-model="scope.row.os" |
|||
:props="treeProps" |
|||
style="display: inline-block;width: 60%" |
|||
:options="scope.row.data" |
|||
:multiple="true" |
|||
:filterable="true" |
|||
:check-strictly="true" |
|||
:default-expand-all="true" |
|||
@handleNode="handleNode(scope.$index,'os', $event)" |
|||
@add="addTree(scope.row, $event)" |
|||
@remove="removeTree" |
|||
/> |
|||
</span> |
|||
<span v-if="scope.row.sort === 2"> |
|||
<span style="margin-right: 16px">结膜:分泌物</span><treeSelect |
|||
v-model="scope.row.os" |
|||
:props="treeProps" |
|||
style="display: inline-block;width: 60%" |
|||
:options="scope.row.data" |
|||
:multiple="true" |
|||
:filterable="true" |
|||
:check-strictly="true" |
|||
:default-expand-all="true" |
|||
@handleNode="handleNode(scope.$index,'os', $event)" |
|||
@add="addTree(scope.row, $event)" |
|||
@remove="removeTree" |
|||
/> |
|||
</span> |
|||
<span v-if="scope.row.sort === 99"> |
|||
<treeSelect v-model="scope.row.os" :options="scope.row.data" :props="treeProps" :multiple="true" :filterable="true" :check-strictly="true" :default-expand-all="true" @handleNode="handleNode(scope.$index,'os', $event)" @add="addTree(scope.row, $event)" @remove="removeTree" /> |
|||
</span> |
|||
<span v-if="!scope.row.sort && !scope.row.id">{{ scope.row.name }}</span> |
|||
</div> |
|||
</template> |
|||
</el-table-column> |
|||
</el-table> |
|||
</div> |
|||
<el-dialog :title="title" :visible.sync="dialogFormVisible" width="40%"> |
|||
<el-form :model="form" style="margin-top: 16px"> |
|||
<el-form-item label="名称:" label-width="120px"> |
|||
<el-input v-model="form.name" auto-complete="off" style="width: 300px" /> |
|||
</el-form-item> |
|||
</el-form> |
|||
<div slot="footer" class="dialog-footer"> |
|||
<el-button @click="dialogFormVisible = false">取 消</el-button> |
|||
<el-button type="primary" @click="handSaveBtn">确 定</el-button> |
|||
</div> |
|||
</el-dialog> |
|||
<el-dialog title="新建模板" :visible.sync="templateFlag" width="40%"> |
|||
<el-form :model="form" style="margin-top: 16px"> |
|||
<el-form-item label="名称:" label-width="120px"> |
|||
<el-input v-model="form.name" auto-complete="off" style="width: 300px" /> |
|||
</el-form-item> |
|||
<el-form-item label="目录:" label-width="120px"> |
|||
<el-tree |
|||
ref="tree" |
|||
:data="treeTemplate" |
|||
:props="treeProps" |
|||
:default-expand-all="true" |
|||
:expand-on-click-node="false" |
|||
node-key="id" |
|||
highlight-current |
|||
@node-click="templateNodeClick" |
|||
/> |
|||
</el-form-item> |
|||
</el-form> |
|||
<div slot="footer" class="dialog-footer"> |
|||
<el-button @click="templateFlag = false">取 消</el-button> |
|||
<el-button type="primary" @click="saveTreeTemplete">确 定</el-button> |
|||
</div> |
|||
</el-dialog> |
|||
</div> |
|||
</template> |
|||
<script> |
|||
import _ from 'lodash' |
|||
import eventBus from '@/page-subspecialty/utils/eventBus' |
|||
import treeSelect from '@/components/360View/itemSelect' |
|||
import axios from 'axios' |
|||
import Cookies from 'js-cookie' |
|||
import ForeForm from '@/components/360View/medicalRecord/outPatientRecord/foreForm.vue' |
|||
const Base64 = require('js-base64').Base64 |
|||
export default { |
|||
components: { |
|||
treeSelect |
|||
}, |
|||
mixins: [], |
|||
props: { |
|||
patientIdNumber: { |
|||
type: String, |
|||
default: '' |
|||
}, |
|||
patientId: { |
|||
type: String, |
|||
default: '' |
|||
}, |
|||
isSearch: { |
|||
type: String, |
|||
default: '' |
|||
} |
|||
}, |
|||
inject: ['refresh'], |
|||
data() { |
|||
return { |
|||
userData: {}, |
|||
title: '', |
|||
sourceData: [], |
|||
treeCaseList: [], |
|||
treeTemplate: [], |
|||
addType: '', |
|||
treeProps: { |
|||
value: 'id', |
|||
label: 'name', |
|||
children: 'child' |
|||
}, |
|||
type: '', |
|||
doctorId: '', |
|||
deleteId: '', |
|||
treeId: '', |
|||
treeFlag: '', |
|||
treeName: '', |
|||
weight: '', |
|||
parentId: 0, |
|||
collectId: '', |
|||
form: { |
|||
name: '' |
|||
}, |
|||
multipleSelection: [], |
|||
templateFlag: false, |
|||
dialogFormVisible: false, |
|||
tableData: [ |
|||
{ |
|||
name: '眼睑' |
|||
}, { |
|||
name: '眼睑', |
|||
sort: 99, |
|||
id: 1, |
|||
type: 'anion', |
|||
od: '', |
|||
os: '' |
|||
}, { |
|||
name: '结膜' |
|||
}, { |
|||
name: '结膜', |
|||
id: 2, |
|||
sort: 1, |
|||
type: 'jimmy', |
|||
od: '', |
|||
os: '' |
|||
}, { |
|||
name: '结膜', |
|||
id: 3, |
|||
sort: 2, |
|||
type: 'jimmy', |
|||
od: '', |
|||
os: '' |
|||
}, { |
|||
name: '泪器' |
|||
}, { |
|||
name: '泪器', |
|||
sort: 99, |
|||
id: 4, |
|||
type: 'liq', |
|||
od: '', |
|||
os: '' |
|||
}, { |
|||
name: '角膜' |
|||
}, { |
|||
name: '角膜', |
|||
sort: 99, |
|||
id: 5, |
|||
type: 'Giacomo', |
|||
od: '', |
|||
os: '' |
|||
}, { |
|||
name: '前房' |
|||
}, { |
|||
name: '前房', |
|||
sort: 99, |
|||
id: 6, |
|||
type: 'Jianfeng', |
|||
od: '', |
|||
os: '' |
|||
}, { |
|||
name: '虹膜' |
|||
}, { |
|||
name: '虹膜', |
|||
sort: 99, |
|||
id: 7, |
|||
type: 'mongo', |
|||
od: '', |
|||
os: '' |
|||
}, { |
|||
name: '瞳孔' |
|||
}, { |
|||
name: '瞳孔', |
|||
sort: 99, |
|||
id: 8, |
|||
type: 'tonguing', |
|||
od: '', |
|||
os: '' |
|||
}, { |
|||
name: '晶状体' |
|||
}, { |
|||
name: '晶状体', |
|||
sort: 99, |
|||
id: 9, |
|||
type: 'jingling', |
|||
od: '', |
|||
os: '' |
|||
}, { |
|||
name: '睫状体' |
|||
}, { |
|||
name: '睫状体', |
|||
sort: 99, |
|||
id: 10, |
|||
type: 'jingles', |
|||
od: '', |
|||
os: '' |
|||
}, { |
|||
name: '眼位' |
|||
}, { |
|||
name: '眼位', |
|||
sort: 99, |
|||
id: 11, |
|||
type: 'yawn', |
|||
od: '', |
|||
os: '' |
|||
}, { |
|||
name: '眼眶' |
|||
}, { |
|||
name: '眼眶', |
|||
sort: 99, |
|||
id: 12, |
|||
type: 'yanking', |
|||
od: '', |
|||
os: '' |
|||
}, { |
|||
name: '眼球运动' |
|||
}, { |
|||
name: '眼球运动', |
|||
sort: 99, |
|||
id: 13, |
|||
type: 'yang', |
|||
od: '', |
|||
os: '' |
|||
}] |
|||
} |
|||
}, |
|||
watch: { |
|||
tableData: { |
|||
deep: true, |
|||
handler: (value) => { |
|||
if (value) { |
|||
eventBus.$emit('getForeData', value) |
|||
} |
|||
} |
|||
} |
|||
}, |
|||
created() { |
|||
}, |
|||
mounted() { |
|||
this.userData = JSON.parse(window.localStorage.getItem('qg-userData')) |
|||
this.doctorId = this.userData.id |
|||
this.getforeList('2').then(() => { |
|||
this.queryOptions() |
|||
}) |
|||
// 查询左侧病历树 |
|||
this.queryTreeCase() |
|||
}, |
|||
methods: { |
|||
async getforeList(flag) { |
|||
const { data: res } = await this.$http.get('/case/getCase', { |
|||
params: { |
|||
patientId: this.patientId, |
|||
platform: this.isSearch, |
|||
flag: flag // 1病史采集2前段检查3后段检查4专科检查 |
|||
} |
|||
}) |
|||
if (res.code === 0) { |
|||
this.tableData = res.data ? JSON.parse(res.data.jsonText) : [] |
|||
this.tableData.forEach(item => { |
|||
item.flag = false |
|||
}) |
|||
console.log(123, this.tableData) |
|||
this.collectId = res.data ? res.data.id : '' |
|||
} else { |
|||
this.$message.error(res.msg) |
|||
} |
|||
}, |
|||
// 表格复选框 |
|||
selection(selection, val) { |
|||
if (!val.id) { |
|||
const data = this.tableData.filter(item => item.name === val.name) |
|||
if (val.flag) { |
|||
data.forEach(row => { |
|||
row.flag = false |
|||
this.$refs.multipleTable.toggleRowSelection(row, false) |
|||
}) |
|||
} else { |
|||
data.forEach(row => { |
|||
row.flag = true |
|||
this.$refs.multipleTable.toggleRowSelection(row, true) |
|||
}) |
|||
} |
|||
} else { |
|||
const data = this.tableData.filter(item => item.id === val.id) |
|||
if (val.flag) { |
|||
data.forEach(row => { |
|||
row.flag = false |
|||
}) |
|||
} else { |
|||
data.forEach(row => { |
|||
row.flag = true |
|||
}) |
|||
} |
|||
} |
|||
}, |
|||
// 保留下拉框的label,添加到数据集用于展示 |
|||
handleNode(index, type, event) { |
|||
if (type === 'os') { |
|||
this.tableData[index].osValue = event |
|||
} else { |
|||
this.tableData[index].odValue = event |
|||
} |
|||
}, |
|||
// 添加数据集 |
|||
addForeData() { |
|||
const selectData = this.tableData.filter(item => item.flag === true) |
|||
if (!selectData.length) return this.$message.warning('请勾选数据!') |
|||
const data = selectData.filter(item => { |
|||
return item.type !== undefined |
|||
}) |
|||
eventBus.$emit('sendForData', data) |
|||
}, |
|||
// 获取下拉选择项,把数据封装进表格中 |
|||
queryOptions() { |
|||
const treeList = [] |
|||
this.tableData.forEach(item => { |
|||
if (item.type) { |
|||
const p = this.queryTree(item.type) |
|||
treeList.push(p) |
|||
} |
|||
}) |
|||
Promise.all(treeList).then((result) => { |
|||
if (result.length) { |
|||
result.forEach(item => { |
|||
item.forEach(row => { |
|||
this.tableData.forEach(e => { |
|||
if (e.type === row.type) { |
|||
e.data = item |
|||
const sort = item.sort |
|||
item.sort = '' |
|||
this.$nextTick(() => { |
|||
item.sort = sort |
|||
}) |
|||
} |
|||
}) |
|||
}) |
|||
}) |
|||
} |
|||
this.sourceData = _.cloneDeep(this.tableData) || [] |
|||
eventBus.$emit('getForeData', this.tableData) |
|||
}).catch((error) => { |
|||
}) |
|||
}, |
|||
// 全部移动 |
|||
moveAll(type) { |
|||
if (type === 1) { |
|||
this.tableData.forEach(item => { |
|||
if (item.sort) { |
|||
item.od = item.os |
|||
item.odValue = item.osValue |
|||
const sort = item.sort |
|||
item.sort = '' |
|||
this.$nextTick(() => { |
|||
item.sort = sort |
|||
}) |
|||
} |
|||
}) |
|||
} else { |
|||
this.tableData.forEach(item => { |
|||
if (item.sort) { |
|||
item.os = item.od |
|||
item.osValue = item.odValue |
|||
const sort = item.sort |
|||
item.sort = '' |
|||
this.$nextTick(() => { |
|||
item.sort = sort |
|||
}) |
|||
} |
|||
}) |
|||
} |
|||
}, |
|||
// 移动 |
|||
moveHandle(index, type, row) { |
|||
if (row.id) { |
|||
if (type === 1) { |
|||
this.tableData[index].od = row.os |
|||
this.tableData[index].odValue = row.osValue |
|||
} else { |
|||
this.tableData[index].os = row.od |
|||
this.tableData[index].osValue = row.odValue |
|||
} |
|||
const sort = this.tableData[index].sort |
|||
this.tableData[index].sort = '' |
|||
this.$nextTick(() => { |
|||
this.tableData[index].sort = sort |
|||
}) |
|||
} else { |
|||
if (type === 1) { |
|||
this.tableData.forEach(item => { |
|||
if (item.name === row.name) { |
|||
item.od = item.os |
|||
item.odValue = item.osValue |
|||
const sort = item.sort |
|||
item.sort = '' |
|||
this.$nextTick(() => { |
|||
item.sort = sort |
|||
}) |
|||
} |
|||
}) |
|||
} else { |
|||
this.tableData.forEach(item => { |
|||
if (item.name === row.name) { |
|||
item.os = item.od |
|||
item.osValue = item.odValue |
|||
const sort = item.sort |
|||
item.sort = '' |
|||
this.$nextTick(() => { |
|||
item.sort = sort |
|||
}) |
|||
} |
|||
}) |
|||
} |
|||
} |
|||
}, |
|||
// 保存前段检查 |
|||
async saveFore() { |
|||
const params = { |
|||
flag: '2', // 1病史采集2前段检查3后段检查4专科检查 |
|||
jsonText: JSON.stringify(this.tableData), |
|||
name: '前段检查', |
|||
patientId: this.patientId, |
|||
platform: this.isSearch |
|||
} |
|||
let url = '' |
|||
if (this.collectId) { |
|||
url = '/case/update' |
|||
params.id = this.collectId |
|||
} else { |
|||
url = '/case/save' |
|||
} |
|||
const { data: res } = await this.$http.post(url, params) |
|||
if (res.code === 0) { |
|||
this.$message.success('保存成功') |
|||
await this.getforeList('2') |
|||
} else { |
|||
this.$message.error(res.msg) |
|||
} |
|||
}, |
|||
handSaveBtn() { |
|||
if (this.addType === 1) { |
|||
this.handleSaveTree() |
|||
} else { |
|||
this.handleSaveCase() |
|||
} |
|||
}, |
|||
// 新增选择下拉树 |
|||
addTree(item, event) { |
|||
this.title = '新增子级' |
|||
this.addType = 1 |
|||
this.form.name = '' |
|||
this.type = event.type |
|||
this.parentId = event.id |
|||
this.treeFlag = event.flag |
|||
this.dialogFormVisible = true |
|||
}, |
|||
// 新增保存树-眼睛部位下拉选择 |
|||
async handleSaveTree() { |
|||
const params = { |
|||
doctorId: this.doctorId, |
|||
name: this.form.name, |
|||
flag: this.treeFlag, // // 1公共树,2个人树 |
|||
type: this.type, |
|||
parentId: this.parentId, |
|||
platform: this.isSearch |
|||
} |
|||
const { data: res } = await this.$http.post('/treetag/addTree', params) |
|||
if (res.code === 0) { |
|||
this.dialogFormVisible = false |
|||
this.updataList() |
|||
this.$message.success('保存成功') |
|||
} else { |
|||
this.$message.error(res.msg) |
|||
} |
|||
}, |
|||
// 删除选择下拉树 |
|||
removeTree(item) { |
|||
this.type = item.type |
|||
this.deleteId = item.id |
|||
this.$confirm('确定删除该节点?', '提示', { |
|||
confirmButtonText: '确定', |
|||
cancelButtonText: '取消', |
|||
type: 'warning' |
|||
}).then(() => { |
|||
this.handleRemove() |
|||
}).catch(() => { |
|||
|
|||
}) |
|||
}, |
|||
// 删除选择下拉树 |
|||
async handleRemove() { |
|||
const params = { |
|||
id: this.deleteId |
|||
} |
|||
const { data: res } = await this.$http.post('/treetag/deleteTree', params) |
|||
if (res.code === 0) { |
|||
this.$message.success('删除成功') |
|||
this.updataList() |
|||
} else { |
|||
this.$message.error(res.msg) |
|||
} |
|||
}, |
|||
// 刷新单个选择下拉树 |
|||
updataList() { |
|||
this.queryTree(this.type).then((res) => { |
|||
this.tableData.forEach(item => { |
|||
if (item.type === this.type) { |
|||
const sort = item.sort |
|||
item.sort = '' |
|||
this.$nextTick(() => { |
|||
item.sort = sort |
|||
}) |
|||
item.data = res |
|||
} |
|||
}) |
|||
}) |
|||
}, |
|||
// 封装查询单个下拉选择树 |
|||
queryTree(type) { |
|||
// http://47.110.224.240:8036/xiangan-crf/treetag/findTree |
|||
// 47.110.224.240:8036 |
|||
// 192.168.4.83:8036 |
|||
return new Promise((resolve, reject) => { |
|||
axios.defaults.headers.common['token'] = Cookies.get('xa-token') || '' |
|||
axios.get('http://192.168.4.83:8036/xiangan-crf/treetag/findTree', { |
|||
params: { |
|||
doctorId: this.doctorId, |
|||
type: type, |
|||
platform: this.isSearch |
|||
} |
|||
}).then(res => { |
|||
if (res.data.code === 0) { |
|||
const data = res.data |
|||
resolve(data.data) |
|||
} |
|||
}) |
|||
.catch(error => { |
|||
reject(error) |
|||
}) |
|||
}) |
|||
}, |
|||
// 点击左侧模板数据覆盖表格内容 |
|||
templateData(data, node) { |
|||
if (data && data.caseJson) { |
|||
this.tableData = JSON.parse(data.caseJson) |
|||
// 回显表格复选框 |
|||
this.$nextTick(() => { |
|||
this.tableData.forEach(item => { |
|||
if (item.flag) { |
|||
this.$refs.multipleTable.toggleRowSelection(item, true) |
|||
} |
|||
}) |
|||
}) |
|||
} else { |
|||
this.tableData = _.cloneDeep(this.sourceData) |
|||
} |
|||
}, |
|||
// 点击保存模板后弹框 |
|||
handleTemplate() { |
|||
// if (!this.multipleSelection.length) return this.$message.warning('请勾选模板内容!') |
|||
this.form.name = '' |
|||
this.queryTemplate() |
|||
this.templateFlag = true |
|||
}, |
|||
// 保存模板时选择树节点 |
|||
templateNodeClick(node) { |
|||
this.treeId = node.id |
|||
}, |
|||
// 保存模板树 |
|||
async saveTreeTemplete() { |
|||
if (!this.treeId) return this.$message.warning('请选择目录!') |
|||
const params = { |
|||
caseJson: JSON.stringify(this.tableData), |
|||
doctorId: this.doctorId, |
|||
name: this.form.name, |
|||
type: 2, // 2前段检查 3后段检查 |
|||
treeId: this.treeId |
|||
} |
|||
const { data: res } = await this.$http.post('/treetemplate/addTreeCase', params) |
|||
if (res.code === 0) { |
|||
this.templateFlag = false |
|||
this.queryTreeCase() |
|||
this.$message.success('保存成功') |
|||
} else { |
|||
this.$message.error(res.msg) |
|||
} |
|||
}, |
|||
// 新增左侧描述项树弹框 |
|||
append(type, data) { |
|||
this.addType = 2 |
|||
this.form.name = '' |
|||
type === 1 ? this.title = '新增父级' : this.title = '新增子级' |
|||
type === 1 ? this.parentId = 0 : this.parentId = data.id |
|||
this.dialogFormVisible = true |
|||
}, |
|||
// 新增左侧描述项树 |
|||
async handleSaveCase() { |
|||
const params = { |
|||
doctorId: this.doctorId, |
|||
name: this.form.name, |
|||
weight: this.weight, |
|||
parentId: this.parentId, |
|||
platform: this.isSearch |
|||
} |
|||
const { data: res } = await this.$http.post('/treetemplate/addTree', params) |
|||
if (res.code === 0) { |
|||
this.dialogFormVisible = false |
|||
this.queryTreeCase() |
|||
this.$message.success('保存成功') |
|||
} else { |
|||
this.$message.error(res.msg) |
|||
} |
|||
}, |
|||
// 删除左侧树/模板节点弹框 |
|||
remove(node, data) { |
|||
this.deleteId = data.id |
|||
let url = '' |
|||
if (data.type) { |
|||
// 模板节点 |
|||
url = '/treetemplate/deleteTreeCase' |
|||
} else { |
|||
// 树节点 |
|||
url = '/treetemplate/deleteTree' |
|||
} |
|||
this.$confirm('确定删除该节点?', '提示', { |
|||
confirmButtonText: '确定', |
|||
cancelButtonText: '取消', |
|||
type: 'warning' |
|||
}).then(() => { |
|||
this.removeTemplate(url) |
|||
}).catch(() => { |
|||
|
|||
}) |
|||
}, |
|||
// 删除左侧树/模板节点 |
|||
async removeTemplate(url) { |
|||
const params = { |
|||
id: this.deleteId |
|||
} |
|||
const { data: res } = await this.$http.post(url, params) |
|||
if (res.code === 0) { |
|||
this.$message.success('删除成功') |
|||
this.queryTreeCase() |
|||
this.getforeList('2') |
|||
} else { |
|||
this.$message.error(res.msg) |
|||
} |
|||
}, |
|||
// 查询弹框模板树 |
|||
async queryTemplate() { |
|||
const { data: res } = await this.$http.get('/treetemplate/findTree', { |
|||
params: { |
|||
platform: this.isSearch, |
|||
doctorId: this.doctorId |
|||
} |
|||
}) |
|||
if (res.code === 0) { |
|||
this.treeTemplate = res.data |
|||
} else { |
|||
this.$message.error(res.msg) |
|||
} |
|||
}, |
|||
// 使用递归遍历树,合并模板节点和child节点 |
|||
fn(data) { |
|||
data.forEach((item, i) => { |
|||
if (item.list && item.list.length) { |
|||
item.child = item.child.concat(item.list) |
|||
// 调用递归函数 |
|||
} |
|||
if (item.child) { |
|||
this.fn(item.child) |
|||
} |
|||
}) |
|||
return data |
|||
}, |
|||
// 查询左侧病历树 |
|||
async queryTreeCase() { |
|||
const { data: res } = await this.$http.get('/treetemplate/findTreeCase', { |
|||
params: { |
|||
type: 2, |
|||
platform: this.isSearch, |
|||
doctorId: this.doctorId |
|||
} |
|||
}) |
|||
if (res.code === 0) { |
|||
this.treeCaseList = this.fn(res.data) |
|||
} else { |
|||
this.$message.error(res.msg) |
|||
} |
|||
} |
|||
} |
|||
} |
|||
</script> |
|||
<style lang="scss" scoped> |
|||
.foreBox{ |
|||
width: 100%; |
|||
height: 100%; |
|||
overflow-y: auto; |
|||
position: relative; |
|||
.btnBox{ |
|||
position: fixed; |
|||
right: 84px; |
|||
text-align: right; |
|||
margin-right: 16px; |
|||
background-color: white; |
|||
z-index: 999; |
|||
} |
|||
.moveIcon{ |
|||
position: absolute; |
|||
left: calc(50% + 120px); |
|||
top: 40px; |
|||
z-index: 9; |
|||
} |
|||
.custom-tree-node{ |
|||
width: 100%; |
|||
} |
|||
} |
|||
</style> |
|||
<style lang="scss"> |
|||
.foreBox{ |
|||
.el-form-item__content{ |
|||
text-align: left; |
|||
} |
|||
.el-tree-node>.el-tree-node__children{ |
|||
overflow-x: auto; |
|||
} |
|||
} |
|||
</style> |
Loading…
Reference in new issue