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