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