Browse Source

peter

360view
newPeter7 2 years ago
parent
commit
bc4e7d70cb
  1. 134
      src/components/360View/afterPart/index.vue
  2. 175
      src/components/360View/forePart/index.vue
  3. 6
      src/components/360View/index.vue
  4. 1
      src/components/360View/index1.vue
  5. 497
      src/components/360View/medicalRecord/callMedical/index.vue
  6. 135
      src/components/360View/medicalRecord/index.vue
  7. 5
      src/components/360View/medicalRecord/outPatientRecord/afterForm.vue
  8. 2
      src/components/360View/medicalRecord/outPatientRecord/allFormPrint.vue
  9. 17
      src/components/360View/medicalRecord/outPatientRecord/diagnosisForm.vue
  10. 19
      src/components/360View/medicalRecord/outPatientRecord/historyForm.vue
  11. 43
      src/components/360View/medicalRecord/outPatientRecord/index.vue
  12. 2
      src/components/360View/medicalRecord/outPatientRecord/leftFormList.vue
  13. 8
      src/components/360View/opticalFile/index.vue
  14. 24
      src/components/360View/specialExamine/index.vue

134
src/components/360View/afterPart/index.vue

@ -1,8 +1,8 @@
<template> <template>
<div class="afterBox"> <div class="afterBox">
<div class="moveIcon"> <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>
<p @click="moveAll(1)"><i style="font-size: 20px" class="el-icon-back" /></p>
<p style="margin-top: 5px" @click="moveAll(2)"><i class="el-icon-back" style="transform: rotateY(180deg);font-size: 20px" /></p>
</div> </div>
<div style="display: flex;margin-top: 32px"> <div style="display: flex;margin-top: 32px">
<div style="width: 200px;padding-right: 8px;text-align: left;overflow-x: auto"> <div style="width: 200px;padding-right: 8px;text-align: left;overflow-x: auto">
@ -30,6 +30,7 @@
</el-tree> </el-tree>
</div> </div>
<after-form <after-form
ref="afterForm"
:table-data="tableData" :table-data="tableData"
@selection="selection" @selection="selection"
@moveHandle="moveHandle" @moveHandle="moveHandle"
@ -102,6 +103,10 @@ export default {
type: String, type: String,
default: '' default: ''
}, },
caseId: {
type: String,
default: ''
},
onlyRead: { onlyRead: {
type: Boolean, type: Boolean,
default: false default: false
@ -228,6 +233,13 @@ export default {
eventBus.$emit('getAfterData', value) eventBus.$emit('getAfterData', value)
} }
} }
},
caseId: {
handler: function(newV, oldV) {
this.getforeList().then(() => {
this.queryOptions()
})
}
} }
}, },
created() { created() {
@ -235,26 +247,108 @@ export default {
mounted() { mounted() {
this.userData = JSON.parse(window.localStorage.getItem('qg-userData')) this.userData = JSON.parse(window.localStorage.getItem('qg-userData'))
this.doctorId = this.userData.id this.doctorId = this.userData.id
this.getforeList('3').then(() => {
this.getforeList().then(() => {
this.queryOptions() this.queryOptions()
}) })
this.queryTreeCase() this.queryTreeCase()
}, },
methods: { methods: {
async getforeList(flag) {
const { data: res } = await this.$http.get('/case/getCase', {
async getforeList() {
const { data: res } = await this.$http.get('/case/getCaseByCaseId', {
params: { params: {
caseId: this.caseId,
patientId: this.patientId, patientId: this.patientId,
platform: this.isSearch, platform: this.isSearch,
flag: flag // 1234
flag: '3'
} }
}) })
if (res.code === 0) { if (res.code === 0) {
this.tableData = res.data ? JSON.parse(res.data.jsonText) : this.tableData
this.tableData.forEach(item => {
item.flag = false
})
this.collectId = res.data ? res.data.id : ''
if (res.data) {
this.tableData = JSON.parse(res.data.jsonText)
this.collectId = res.data.id
} else {
this.tableData = [
{
name: '黄斑'
}, {
name: '黄斑',
sort: 99,
id: 14,
type: 'hangman',
od: '',
os: ''
}, {
name: '视盘'
}, {
name: '视盘',
id: 15,
sort: 3,
type: 'shipman',
od: '',
os: ''
}, {
name: '视盘',
id: 16,
sort: 4,
type: 'shipman',
od: '',
os: ''
}, {
name: '视网膜'
}, {
name: '视网膜',
sort: 99,
id: 17,
type: 'showing',
od: '',
os: ''
}, {
name: '脉络膜'
}, {
name: '脉络膜',
sort: 99,
id: 18,
type: 'mailbomb',
od: '',
os: ''
}, {
name: '玻璃体 vitreous'
}, {
name: '玻璃体 vitreous',
sort: 99,
id: 19,
type: 'blit',
od: '',
os: ''
}, {
name: '血管'
}, {
name: '血管',
sort: 99,
id: 20,
type: 'began',
od: '',
os: ''
}, {
name: '巩膜'
}, {
name: '巩膜',
sort: 99,
id: 21,
type: 'gong',
od: '',
os: ''
}, {
name: '边缘 periphery'
}, {
name: '边缘 periphery',
sort: 99,
id: 22,
type: 'banyan',
od: '',
os: ''
}]
}
} else { } else {
this.$message.error(res.msg) this.$message.error(res.msg)
} }
@ -266,12 +360,12 @@ export default {
if (value.val.flag) { if (value.val.flag) {
data.forEach(row => { data.forEach(row => {
row.flag = false row.flag = false
this.$refs.multipleTable.toggleRowSelection(row, false)
this.$refs.afterForm.$refs.multipleTable.toggleRowSelection(row, false)
}) })
} else { } else {
data.forEach(row => { data.forEach(row => {
row.flag = true row.flag = true
this.$refs.multipleTable.toggleRowSelection(row, true)
this.$refs.afterForm.$refs.multipleTable.toggleRowSelection(row, true)
}) })
} }
} else { } else {
@ -308,6 +402,7 @@ export default {
queryOptions() { queryOptions() {
const treeList = [] const treeList = []
this.tableData.forEach(item => { this.tableData.forEach(item => {
item.flag = false
if (item.type) { if (item.type) {
const p = this.queryTree(item.type) const p = this.queryTree(item.type)
treeList.push(p) treeList.push(p)
@ -320,12 +415,14 @@ export default {
this.tableData.forEach(e => { this.tableData.forEach(e => {
if (e.type === row.type) { if (e.type === row.type) {
e.data = item e.data = item
const sort = item.sort
item.sort = ''
const sort = e.sort
if (sort === 3 || sort === 4 || sort === 99) {
e.sort = ''
this.$nextTick(() => { this.$nextTick(() => {
item.sort = sort
e.sort = sort
}) })
} }
}
}) })
}) })
}) })
@ -410,6 +507,7 @@ export default {
// //
async saveAfter() { async saveAfter() {
const params = { const params = {
caseId: this.caseId,
flag: '3', // 1234 flag: '3', // 1234
jsonText: JSON.stringify(this.tableData), jsonText: JSON.stringify(this.tableData),
name: '后段检查', name: '后段检查',
@ -426,7 +524,7 @@ export default {
const { data: res } = await this.$http.post(url, params) const { data: res } = await this.$http.post(url, params)
if (res.code === 0) { if (res.code === 0) {
this.$message.success('保存成功') this.$message.success('保存成功')
await this.getforeList('3')
await this.getforeList()
} else { } else {
this.$message.error(res.msg) this.$message.error(res.msg)
} }
@ -700,7 +798,7 @@ export default {
} }
.moveIcon{ .moveIcon{
position: absolute; position: absolute;
left: calc(50% + 120px);
left: calc(50% + 112px);
top: 40px; top: 40px;
z-index: 9; z-index: 9;
} }

175
src/components/360View/forePart/index.vue

@ -1,8 +1,8 @@
<template> <template>
<div class="foreBox"> <div class="foreBox">
<div class="moveIcon"> <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>
<p @click="moveAll(1)"><i style="font-size: 20px" class="el-icon-back" /></p>
<p style="margin-top: 5px" @click="moveAll(2)"><i class="el-icon-back" style="transform: rotateY(180deg);font-size: 20px" /></p>
</div> </div>
<div style="display: flex;margin-top: 32px"> <div style="display: flex;margin-top: 32px">
<div style="width: 200px;padding-right: 8px;text-align: left;overflow-x: auto"> <div style="width: 200px;padding-right: 8px;text-align: left;overflow-x: auto">
@ -92,15 +92,14 @@
> >
<template slot-scope="scope"> <template slot-scope="scope">
<div> <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>
<p @click="moveHandle(scope.$index,1, scope.row)"><i style="font-size: 20px" 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);font-size: 20px" /></p>
</div> </div>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column
align="center" align="center"
label="OS" label="OS"
width="300"
> >
<template slot-scope="scope"> <template slot-scope="scope">
<div> <div>
@ -206,6 +205,10 @@ export default {
type: String, type: String,
default: '' default: ''
}, },
caseId: {
type: String,
default: ''
},
onlyRead: { onlyRead: {
type: Boolean, type: Boolean,
default: false default: false
@ -367,35 +370,159 @@ export default {
eventBus.$emit('getForeData', value) eventBus.$emit('getForeData', value)
} }
} }
},
caseId: {
handler: function(newV, oldV) {
this.getforeList().then(() => {
this.queryOptions()
})
}
} }
}, },
created() { created() {
}, },
mounted() { mounted() {
console.log(window.SITE_CONFIG['apiURL'])
this.userData = JSON.parse(window.localStorage.getItem('qg-userData')) this.userData = JSON.parse(window.localStorage.getItem('qg-userData'))
this.doctorId = this.userData.id this.doctorId = this.userData.id
this.getforeList('2').then(() => {
this.getforeList().then(() => {
this.queryOptions() this.queryOptions()
}) })
// //
this.queryTreeCase() this.queryTreeCase()
}, },
methods: { methods: {
async getforeList(flag) {
const { data: res } = await this.$http.get('/case/getCase', {
async getforeList() {
const { data: res } = await this.$http.get('/case/getCaseByCaseId', {
params: { params: {
caseId: this.caseId,
patientId: this.patientId, patientId: this.patientId,
platform: this.isSearch, platform: this.isSearch,
flag: flag // 1234
flag: '2'
} }
}) })
if (res.code === 0) { if (res.code === 0) {
this.tableData = res.data ? JSON.parse(res.data.jsonText) : this.tableData
this.tableData.forEach(item => {
item.flag = false
})
console.log(123, this.tableData)
if (res.data) {
this.collectId = res.data.id
this.tableData = JSON.parse(res.data.jsonText)
} else {
this.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: ''
}]
}
this.collectId = res.data ? res.data.id : '' this.collectId = res.data ? res.data.id : ''
} else { } else {
this.$message.error(res.msg) this.$message.error(res.msg)
@ -450,6 +577,7 @@ export default {
queryOptions() { queryOptions() {
const treeList = [] const treeList = []
this.tableData.forEach(item => { this.tableData.forEach(item => {
item.flag = false
if (item.type) { if (item.type) {
const p = this.queryTree(item.type) const p = this.queryTree(item.type)
treeList.push(p) treeList.push(p)
@ -462,12 +590,14 @@ export default {
this.tableData.forEach(e => { this.tableData.forEach(e => {
if (e.type === row.type) { if (e.type === row.type) {
e.data = item e.data = item
const sort = item.sort
item.sort = ''
const sort = e.sort
if (sort === 1 || sort === 2 || sort === 99) {
e.sort = ''
this.$nextTick(() => { this.$nextTick(() => {
item.sort = sort
e.sort = sort
}) })
} }
}
}) })
}) })
}) })
@ -551,6 +681,7 @@ export default {
// //
async saveFore() { async saveFore() {
const params = { const params = {
caseId: this.caseId,
flag: '2', // 1234 flag: '2', // 1234
jsonText: JSON.stringify(this.tableData), jsonText: JSON.stringify(this.tableData),
name: '前段检查', name: '前段检查',
@ -567,7 +698,7 @@ export default {
const { data: res } = await this.$http.post(url, params) const { data: res } = await this.$http.post(url, params)
if (res.code === 0) { if (res.code === 0) {
this.$message.success('保存成功') this.$message.success('保存成功')
await this.getforeList('2')
await this.getforeList()
} else { } else {
this.$message.error(res.msg) this.$message.error(res.msg)
} }
@ -652,9 +783,6 @@ export default {
}, },
// //
queryTree(type) { queryTree(type) {
// http://47.110.224.240:8036/xiangan-crf/treetag/findTree
// 47.110.224.240:8036
// 192.168.4.83:8036
const baseUrl = window.SITE_CONFIG['apiURL'] + '/treetag/findTree' const baseUrl = window.SITE_CONFIG['apiURL'] + '/treetag/findTree'
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
axios.defaults.headers.common['token'] = Cookies.get('xa-token') || '' axios.defaults.headers.common['token'] = Cookies.get('xa-token') || ''
@ -693,7 +821,6 @@ export default {
}, },
// //
handleTemplate() { handleTemplate() {
// if (!this.multipleSelection.length) return this.$message.warning('!')
this.form.name = '' this.form.name = ''
this.queryTemplate() this.queryTemplate()
this.templateFlag = true this.templateFlag = true
@ -843,7 +970,7 @@ export default {
} }
.moveIcon{ .moveIcon{
position: absolute; position: absolute;
left: calc(50% + 120px);
left: calc(50% + 112px);
top: 40px; top: 40px;
z-index: 9; z-index: 9;
} }

6
src/components/360View/index.vue

@ -323,6 +323,7 @@ export default {
}, },
computerData() { computerData() {
// //
eventBus.$off('sendForData')
eventBus.$on('sendForData', data => { eventBus.$on('sendForData', data => {
console.log(data) console.log(data)
const arr = this.foreList.concat(data) const arr = this.foreList.concat(data)
@ -331,11 +332,6 @@ export default {
console.log(this.foreList) console.log(this.foreList)
this.openDataDrink() this.openDataDrink()
}) })
// eventBus.$on('sendAfterData', data => {
// console.log(data)
// this.afterList = data
// this.openDataDrink()
// })
}, },
openDataDrink() { openDataDrink() {
this.dataType = 2 this.dataType = 2

1
src/components/360View/index1.vue

@ -323,6 +323,7 @@ export default {
}, },
computerData() { computerData() {
// //
eventBus.$off('sendForData')
eventBus.$on('sendForData', data => { eventBus.$on('sendForData', data => {
console.log(data) console.log(data)
const arr = this.foreList.concat(data) const arr = this.foreList.concat(data)

497
src/components/360View/medicalRecord/callMedical/index.vue

@ -0,0 +1,497 @@
<template>
<div class="callMedical">
<div class="archives-content">
<div class="content-left">
<div class="content-left-top">
<div v-for="(item, index) in formList" :key="index" class="formBox" style="margin-top: 12px" :class="[index === curIndex ? 'active' : '']" @click="handleForm(index, item)">
<p :class="[index === curIndex ? 'activeFont' : 'curFont']">{{ item.createTime }}</p>
<p>{{ item.name }}</p>
</div>
<img v-if="!formList" src="@/assets/img/nodata.png" alt="" class="nodata">
<!-- <div class="button"><i class="el-icon-plus" /> 新建表单</div>-->
</div>
<div class="content-left-bottom">
<div class="commonForm-text ">
<span>常用表单</span>
<span class="line" />
<el-checkbox v-model="defaultChecked">默认新建今日</el-checkbox>
</div>
<div v-if="isSearch === '1'" class="record" @click="addRecord('门急诊电子病历')">
<p>门急诊电子病历</p>
<img v-if="!onlyRead" :src="require('@/assets/img/add.png')" alt="">
</div>
<div class="comonForm-tab">
<el-radio-group v-model="formType" size="small">
<el-radio-button label="门诊" name="1" style="" />
<!-- <el-radio-button label="手术" name="2" style=""></el-radio-button>-->
<el-radio-button label="其他" name="3" style="" />
</el-radio-group>
<div v-if="formType === '门诊'" class="record" @click="addRecord">
<p>门急诊电子病历</p>
<img :src="require('@/assets/img/add.png')" alt="">
</div>
</div>
</div>
</div>
</div>
</div>
</template>
<script>
import { dateFilterTwo } from '@/filters/index.js'
import eventBus from '@/page-subspecialty/utils/eventBus'
const Base64 = require('js-base64').Base64
export default {
components: {
},
mixins: [],
props: {
isSearch: {
type: String,
default: ''
},
patientIdNumber: {
type: String,
default: ''
},
patientId: {
type: String,
default: ''
},
onlyRead: {
type: Boolean,
default: false
}
},
inject: ['refresh'],
data() {
return {
id: '',
name: '',
curIndex: 0,
formIdList: [],
formList: [],
defaultChecked: [],
formType: '门诊'
}
},
created() {
},
mounted() {
this.getFormId()
this.getFormList()
},
methods: {
handleForm(index, item) {
this.curIndex = index
this.id = item.id
this.name = item.name
this.$parent.name = item.name
if (item.name === '门急诊电子病历') {
this.$parent.caseId = this.id
}
},
pushtoArray(myarr, mydata) {
if (myarr.length === 0) {
myarr.push(mydata)
} else {
let oktopush = true
for (const ele in myarr) {
if (myarr[ele].id === mydata.id) {
oktopush = false
}
}
if (oktopush) {
myarr.push(mydata)
}
}
return myarr
},
getFormId() {
eventBus.$off('getFormId')
eventBus.$on('getFormId', data => {
console.log(data)
this.formIdList = data
this.pushtoArray(this.formIdList, data)
this.editForm()
})
},
//
async editForm() {
const params = {
flag: 8,
name: this.name,
id: this.id,
patientId: this.patientId,
platform: this.isSearch,
jsonText: JSON.stringify(this.formIdList)
}
const { data: res } = await this.$http.post('/case/update', params)
if (res.code === 0) {
} else {
this.$message.error(res.msg)
}
},
//
addRecord(name) {
this.saveTableData(name)
},
async saveTableData(name) {
const date = dateFilterTwo(this.$moment().format('L'))
const params = {
flag: 8,
name: name,
createTime: date + ' 00:00:00',
patientId: this.patientId,
platform: this.isSearch
}
const { data: res } = await this.$http.post('/case/save', params)
if (res.code === 0) {
this.$message.success('保存成功')
this.getFormList()
} else {
this.$message.error(res.msg)
}
},
async deleteForm() {
const params = {
id: this.id
}
const { data: res } = await this.$http.post('/case/delete', params)
if (res.code === 0) {
this.$message.success('删除成功')
this.getFormList()
} else {
this.$message.error(res.msg)
}
},
async getFormList() {
const { data: res } = await this.$http.get('/patient/view/getCases', {
params: {
patientId: this.patientId,
platform: this.isSearch,
flag: 8
}
})
if (res.code === 0) {
this.formList = res.data || []
if (this.formList.length) {
const first = this.formList[0]
if (this.id === '') {
this.handleForm(0, first)
}
}
} else {
this.$message.error(res.msg)
}
}
}
}
</script>
<style lang="scss" scoped>
.callMedical {
height: 100%;
.text-ellipsis {
white-space: nowrap; //
text-overflow: ellipsis;
overflow: hidden;
}
.printer {
border: 1px solid #ccc;
width: 56px;
height: 32px;
border-radius: 3px;
margin: 0;
margin-left: 10px;
cursor: pointer;
}
.archives-content {
//display: flex;
height: 100%;
overflow: hidden;
.formBox{
cursor: pointer;
padding: 2px 8px;
border-radius: 2px;
margin-top: 12px;
}
.active {
color: white;
background-color: #1C76FD;
}
.curFont {
color: #A6A4A4;
}
.activeFont {
color: #D9D9D9;
}
.content-left {
width: 185px;
height: 100%;
margin-right: 14px;
.nodata {
width: 175px;
margin-top: 30px;
}
.content-left-top,
.content-left-bottom {
height: 50%;
}
.tree-botton-arr {
margin-left: 10px;
}
.tree-date {
padding-right: 10px;
}
.content-left-top {
overflow-y: auto;
margin-bottom: 16px;
.CRFList-list {
display: flex;
justify-content: space-between;
align-items: center;
padding-left: 24px;
padding-right: 16px;
color: #000;
}
.CRFList-list {
height: 40px;
line-height: 40px;
font-size: 14px;
cursor: pointer;
.el-icon-more {
transform: rotate(90deg);
}
}
.CRFList-icon:hover {
color: #ff2929;
}
.CRFList-list-active {
background-color: #1890ff;
color: #fff;
.el-icon-more {
color: #fff;
}
}
.button {
margin-top: 16px;
background: #f2f3f5;
border-radius: 4px;
height: 40px;
line-height: 40px;
text-align: center;
cursor: pointer;
}
.button:hover,
.el-icon-plus:hover {
color: #1890ff;
}
}
.content-left-bottom {
.commonForm-text {
display: flex;
align-items: center;
font-size: 14px;
font-weight: 700;
}
.line {
border-bottom: 1px solid #e5e6eb;
flex: 1;
display: inline-block;
margin: 0 10px;
}
.comonForm-tab {
margin-top: 10px;
}
.comonForm-tab-Pane {
margin-top: 10px;
}
.comonForm-list {
height: 40px;
line-height: 40px;
font-size: 14px;
display: flex;
justify-content: space-between;
align-items: center;
padding: 0 10px;
cursor: pointer;
}
.comonForm-list:hover {
background-color: #f4f8fb;
color: #1d2129;
}
.comonForm-icon:hover {
color: #1890ff;
font-weight: 700;
}
}
}
.record{
display: flex;
justify-content: space-between;
padding-top: 12px;
cursor: pointer;
p {
display: inline-block;
font-size: 14px;
color: rgba(0, 0, 0, 0.85);
letter-spacing: 1px;
}
img {
width: 16px;
height: 16px;
margin-top: 3px;
}
}
}
.content-right {
padding: 12px;
position: relative;
flex: 1;
text-align: center;
background-color: #F0F2F5;
overflow-y: hidden;
.content-right-buttonClick {
display: flex;
justify-content: flex-end;
background: #2e2e2e;
padding: 10px;
}
.editor-CRF {
height: 93%;
}
.content-right-CRF {
background: #5c5c5c;
overflow-x: auto;
padding: 16px 16px 16px 16px;
position: relative;
height: 100%;
}
.content-right-CRF-class {
padding-right: 178px;
}
.suspension-button {
position: absolute;
right: 10px;
top: 10px;
z-index: 1;
}
.case-template,
.intelligent-filling {
cursor: pointer;
height: 140px;
width: 32px;
background: #fff;
border-radius: 4px;
display: flex;
flex-direction: column;
justify-content: space-around;
align-items: center;
box-shadow: 0px 4px 10px rgba(0, 0, 0, 0.1);
span {
writing-mode: vertical-rl;
letter-spacing: 6px;
}
}
.case-template:hover,
.intelligent-filling:hover {
background: linear-gradient(270deg, #f4f8fb 0%, #deebff 66.15%);
}
.case-template {
margin-bottom: 6px;
}
}
}
</style>
<style lang="scss">
.callMedical {
.el-button .el-button--text .el-button--mini {
padding: 0;
}
.tree-date {
font-size: 14px;
color: #ccc;
}
.tree-date-active {
color: #e4e4e4;
}
.el-tree-node {
margin-bottom: 6px;
}
.el-tree-node__content {
margin-bottom: 4px;
height: 35px;
//padding-left: 0 !important;
}
//.tree-children {
// padding: 2px 0 2px 20px;
// position: relative;
//}
//.el-tree-node__expand-icon.is-leaf {
// display: none;
//}
.tree-children:hover {
.tree-button {
display: inline-block;
}
}
.tree-button {
position: absolute;
bottom: 6px;
right: 4px;
display: none;
}
.tree-button-active {
color: #fff;
}
.custom-tree-node {
flex: 1;
padding-top: 6px;
overflow: hidden;
}
.tree-forname {
white-space: nowrap;
text-overflow: ellipsis;
overflow: hidden;
width: 90%;
}
.el-tree-node__content:hover,
.el-upload-list__item:hover {
background: none;
}
.el-icon-caret-right:before {
color: #262626;
}
}
.comonForm-tab {
#tab-mz {
padding-left: 14px !important;
}
.el-tabs__nav-wrap::after {
height: 0;
}
.el-tabs__header {
padding-right: 0 !important;
}
.el-tabs__item.is-active {
color: #fff;
background: #1890ff;
}
.el-tabs__item {
background: #f2f3f5;
padding: 0 14px;
margin-left: 1px;
height: 35px;
line-height: 35px;
}
.el-tabs__content {
padding: 0 !important;
}
}
.see-doctor .comonForm-tab .el-tabs__item:last-child {
padding-right: 14px !important;
}
.see-doctor .comonForm-tab .el-tabs__item:nth-child(2) {
padding-left: 14px !important;
}
</style>

135
src/components/360View/medicalRecord/index.vue

@ -1,7 +1,11 @@
<template> <template>
<div class="archives"> <div class="archives">
<div class="archives-content"> <div class="archives-content">
<div class="content-left" v-if="isSearch === '1' || isSearch === '3'">
<callMedical :is-search="isSearch" :patientId="patientId" :only-read="onlyRead"></callMedical>
</div>
<left-form-list <left-form-list
v-if="isSearch === '2'"
ref="leftFormList" ref="leftFormList"
:patient-id="patientId" :patient-id="patientId"
:is-search="isSearch" :is-search="isSearch"
@ -12,8 +16,11 @@
@addRecord="addRecord" @addRecord="addRecord"
/> />
<div class="content-right"> <div class="content-right">
<template v-if="formList.length">
<ourPatientRecord v-if="name === '门急诊电子病历'" :id="id" :patient-id="patientId" :only-read="onlyRead" :is-search="isSearch" @formDelete="formDelete" />
<div v-if="isSearch === '1' || isSearch === '3'" style="height: 100%">
<ourPatientRecord v-if="name === '门急诊电子病历'" :patientId="patientId" :only-read="onlyRead" :is-search="isSearch" :case-id="caseId"></ourPatientRecord>
</div>
<template v-if="formList.length && isSearch === '2'">
<!-- <ourPatientRecord v-if="name === '门急诊电子病历'" :id="id" :patient-id="patientId" :only-read="onlyRead" :is-search="isSearch" @formDelete="formDelete" />-->
<InformedConsent v-if="name==='眼科激光手术患者知情同意书'" :json-text="jsonText" @handleSaveTable="updateForm" @formDelete="formDelete" /> <InformedConsent v-if="name==='眼科激光手术患者知情同意书'" :json-text="jsonText" @handleSaveTable="updateForm" @formDelete="formDelete" />
<mra-form v-if="name==='眼底血管造影知情同意书'" :json-text="jsonText" @handleSaveTable="updateForm" @formDelete="formDelete" /> <mra-form v-if="name==='眼底血管造影知情同意书'" :json-text="jsonText" @handleSaveTable="updateForm" @formDelete="formDelete" />
<laser-surgery v-if="name==='眼科激光手术治疗'" :json-text="jsonText" @handleSaveTable="updateForm" @formDelete="formDelete" /> <laser-surgery v-if="name==='眼科激光手术治疗'" :json-text="jsonText" @handleSaveTable="updateForm" @formDelete="formDelete" />
@ -25,6 +32,7 @@
</template> </template>
<script> <script>
import ourPatientRecord from './outPatientRecord' import ourPatientRecord from './outPatientRecord'
import callMedical from './callMedical'
import LeftFormList from '@/components/360View/medicalRecord/outPatientRecord/leftFormList.vue' import LeftFormList from '@/components/360View/medicalRecord/outPatientRecord/leftFormList.vue'
import InformedConsent from '@/page-subspecialty/views/modules/formList/InformedConsent.vue' import InformedConsent from '@/page-subspecialty/views/modules/formList/InformedConsent.vue'
import MraForm from '@/page-subspecialty/views/modules/formList/mraForm.vue' import MraForm from '@/page-subspecialty/views/modules/formList/mraForm.vue'
@ -32,6 +40,7 @@ import LaserSurgery from '@/page-subspecialty/views/modules/formList/laserSurger
import ReportForm from '@/page-subspecialty/views/modules/formList/reportForm.vue' import ReportForm from '@/page-subspecialty/views/modules/formList/reportForm.vue'
export default { export default {
components: { components: {
callMedical,
ReportForm, ReportForm,
LaserSurgery, LaserSurgery,
MraForm, MraForm,
@ -63,11 +72,15 @@ export default {
return { return {
id: '', id: '',
name: '', name: '',
caseId: '',
curIndex: 0, curIndex: 0,
formList: [], formList: [],
defaultChecked: [], defaultChecked: [],
formType: '门诊', formType: '门诊',
jsonText: '' jsonText: ''
// idList: [],
// defaultChecked: [],
// formType: ''
} }
}, },
created() { created() {
@ -203,6 +216,124 @@ export default {
.activeFont { .activeFont {
color: #D9D9D9; color: #D9D9D9;
} }
.content-left {
width: 185px;
height: 100%;
margin-right: 14px;
.nodata {
width: 175px;
margin-top: 30px;
}
.content-left-top,
.content-left-bottom {
height: 50%;
}
.tree-botton-arr {
margin-left: 10px;
}
.tree-date {
padding-right: 10px;
}
.content-left-top {
overflow-y: auto;
margin-bottom: 16px;
.CRFList-list {
display: flex;
justify-content: space-between;
align-items: center;
padding-left: 24px;
padding-right: 16px;
color: #000;
}
.CRFList-list {
height: 40px;
line-height: 40px;
font-size: 14px;
cursor: pointer;
.el-icon-more {
transform: rotate(90deg);
}
}
.CRFList-icon:hover {
color: #ff2929;
}
.CRFList-list-active {
background-color: #1890ff;
color: #fff;
.el-icon-more {
color: #fff;
}
}
.button {
margin-top: 16px;
background: #f2f3f5;
border-radius: 4px;
height: 40px;
line-height: 40px;
text-align: center;
cursor: pointer;
}
.button:hover,
.el-icon-plus:hover {
color: #1890ff;
}
}
.content-left-bottom {
.commonForm-text {
display: flex;
align-items: center;
font-size: 14px;
font-weight: 700;
}
.line {
border-bottom: 1px solid #e5e6eb;
flex: 1;
display: inline-block;
margin: 0 10px;
}
.comonForm-tab {
margin-top: 10px;
}
.comonForm-tab-Pane {
margin-top: 10px;
}
.comonForm-list {
height: 40px;
line-height: 40px;
font-size: 14px;
display: flex;
justify-content: space-between;
align-items: center;
padding: 0 10px;
cursor: pointer;
}
.comonForm-list:hover {
background-color: #f4f8fb;
color: #1d2129;
}
.comonForm-icon:hover {
color: #1890ff;
font-weight: 700;
}
}
}
.record{
display: flex;
justify-content: space-between;
padding-top: 12px;
cursor: pointer;
p {
display: inline-block;
font-size: 14px;
color: rgba(0, 0, 0, 0.85);
letter-spacing: 1px;
}
img {
width: 16px;
height: 16px;
margin-top: 3px;
}
}
} }
.content-right { .content-right {
padding: 12px; padding: 12px;

5
src/components/360View/medicalRecord/outPatientRecord/afterForm.vue

@ -36,15 +36,14 @@
> >
<template slot-scope="scope"> <template slot-scope="scope">
<div v-if="!isPrint"> <div v-if="!isPrint">
<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>
<p @click="moveHandle(scope.$index,1, scope.row)"><i style="font-size: 20px" 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);font-size: 20px" /></p>
</div> </div>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column
align="center" align="center"
label="OS" label="OS"
width="300"
> >
<template slot-scope="scope"> <template slot-scope="scope">
<div> <div>

2
src/components/360View/medicalRecord/outPatientRecord/allFormPrint.vue

@ -48,6 +48,8 @@ export default {
}, },
methods: { methods: {
initData() { initData() {
eventBus.$off('getForeData')
eventBus.$off('getAfterData')
eventBus.$on('getForeData', data => { eventBus.$on('getForeData', data => {
this.foreData = data this.foreData = data
}) })

17
src/components/360View/medicalRecord/outPatientRecord/diagnosisForm.vue

@ -1,12 +1,12 @@
<template> <template>
<el-form id="formDiagnosis" :model="diagnosis" label-width="120px" style="margin-top: 32px">
<el-form-item label="诊断:" style="width: 540px">
<el-form id="formDiagnosis" ref="form" :model="diagnosis" label-width="120px" style="margin-top: 32px">
<el-form-item label="诊断:" style="width: 540px" prop="zd">
<el-input v-model="diagnosis.zd" type="textarea" auto-complete="off" style="width: 420px" /> <el-input v-model="diagnosis.zd" type="textarea" auto-complete="off" style="width: 420px" />
</el-form-item> </el-form-item>
<el-form-item label="处理:" style="width: 540px">
<el-form-item label="处理:" style="width: 540px" prop="cl">
<el-input v-model="diagnosis.cl" type="textarea" auto-complete="off" style="width: 420px" /> <el-input v-model="diagnosis.cl" type="textarea" auto-complete="off" style="width: 420px" />
</el-form-item> </el-form-item>
<el-form-item label="治疗意见:" style="width: 540px">
<el-form-item label="治疗意见:" style="width: 540px" prop="yj">
<el-input v-model="diagnosis.yj" type="textarea" auto-complete="off" style="width: 420px" /> <el-input v-model="diagnosis.yj" type="textarea" auto-complete="off" style="width: 420px" />
</el-form-item> </el-form-item>
</el-form> </el-form>
@ -15,7 +15,14 @@
<script> <script>
export default { export default {
name: 'DiagnosisForm', name: 'DiagnosisForm',
props: ['diagnosis']
props: ['diagnosis'],
methods: {
reset() {
this.$nextTick(() => {
this.$refs.form.resetFields()
})
}
}
} }
</script> </script>

19
src/components/360View/medicalRecord/outPatientRecord/historyForm.vue

@ -1,18 +1,18 @@
<template> <template>
<el-form id="medHistory" ref="form" :model="formData" label-width="120px" style="margin-top: 32px"> <el-form id="medHistory" ref="form" :model="formData" label-width="120px" style="margin-top: 32px">
<el-form-item label="主诉:" style="width: 540px">
<el-form-item label="主诉:" style="width: 540px" prop="zs">
<el-input v-model="formData.zs" type="textarea" auto-complete="off" style="width: 420px" /> <el-input v-model="formData.zs" type="textarea" auto-complete="off" style="width: 420px" />
</el-form-item> </el-form-item>
<el-form-item label="现病史:" style="width: 540px">
<el-form-item label="现病史:" style="width: 540px" prop="xbs">
<el-input v-model="formData.xbs" type="textarea" auto-complete="off" style="width: 420px" /> <el-input v-model="formData.xbs" type="textarea" auto-complete="off" style="width: 420px" />
</el-form-item> </el-form-item>
<el-form-item label="既往病史:" style="width: 540px">
<el-form-item label="既往病史:" style="width: 540px" prop="jwbs">
<el-input v-model="formData.jwbs" type="textarea" auto-complete="off" style="width: 420px" /> <el-input v-model="formData.jwbs" type="textarea" auto-complete="off" style="width: 420px" />
</el-form-item> </el-form-item>
<el-form-item label="过敏史:" style="width: 540px">
<el-form-item label="过敏史:" style="width: 540px" prop="gms">
<el-input v-model="formData.gms" type="textarea" auto-complete="off" style="width: 420px" /> <el-input v-model="formData.gms" type="textarea" auto-complete="off" style="width: 420px" />
</el-form-item> </el-form-item>
<el-form-item label="周身其他病史:" style="width: 540px">
<el-form-item label="周身其他病史:" style="width: 540px" prop="zsqtbs">
<el-input v-model="formData.zsqtbs" type="textarea" auto-complete="off" style="width: 420px" /> <el-input v-model="formData.zsqtbs" type="textarea" auto-complete="off" style="width: 420px" />
</el-form-item> </el-form-item>
</el-form> </el-form>
@ -25,6 +25,15 @@ export default {
formData: { formData: {
type: Object type: Object
} }
},
mounted() {
},
methods: {
reset() {
this.$nextTick(()=>{
this.$refs.form.resetFields()
})
}
} }
} }
</script> </script>

43
src/components/360View/medicalRecord/outPatientRecord/index.vue

@ -3,27 +3,27 @@
<div v-if="!onlyRead" class="btnBox"> <div v-if="!onlyRead" class="btnBox">
<el-button v-print="printAll" size="small">打印</el-button> <el-button v-print="printAll" size="small">打印</el-button>
<el-button type="primary" size="small" @click="handleSaveTable">保存</el-button> <el-button type="primary" size="small" @click="handleSaveTable">保存</el-button>
<el-button type="danger" size="small" @click="formDelete">删除</el-button>
<!-- <el-button type="danger" size="small" @click="formDelete">删除</el-button>-->
<el-button v-if="comonFormActive === '2' || comonFormActive === '3'" type="primary" size="small" @click="handleTemplate">保存为模板</el-button> <el-button v-if="comonFormActive === '2' || comonFormActive === '3'" type="primary" size="small" @click="handleTemplate">保存为模板</el-button>
<div v-if="comonFormActive === '2' || comonFormActive === '3'" size="small" style="display:inline-block;margin-left:10px;text-align:center;width: 32px;height: 32px;background-color: #1e79ff;border-radius: 4px;vertical-align: bottom" @click="addData"> <div v-if="comonFormActive === '2' || comonFormActive === '3'" size="small" style="display:inline-block;margin-left:10px;text-align:center;width: 32px;height: 32px;background-color: #1e79ff;border-radius: 4px;vertical-align: bottom" @click="addData">
<img :src="require('@/assets/img/data.png')" alt="" style="width: 17px;height: 16px;margin-top: 5px"> <img :src="require('@/assets/img/data.png')" alt="" style="width: 17px;height: 16px;margin-top: 5px">
</div> </div>
</div> </div>
<el-tabs v-model="comonFormActive" type="border-card" @tab-click="handleClick">
<el-tabs v-model="comonFormActive" type="border-card">
<el-tab-pane label="病史采集" name="1"> <el-tab-pane label="病史采集" name="1">
<history-form ref="form" :form-data="formData" />
<history-form ref="history" :form-data="formData" />
</el-tab-pane> </el-tab-pane>
<el-tab-pane label="前段检查" name="2" style="height: 100%"> <el-tab-pane label="前段检查" name="2" style="height: 100%">
<forePart ref="foreParts" :patient-id="patientId" :is-search="isSearch" :only-read="onlyRead" />
<forePart ref="foreParts" :patient-id="patientId" :is-search="isSearch" :only-read="onlyRead" :case-id="caseId"/>
</el-tab-pane> </el-tab-pane>
<el-tab-pane label="后段检查" name="3" style="height: 100%"> <el-tab-pane label="后段检查" name="3" style="height: 100%">
<afterPart ref="afterParts" :patient-id="patientId" :is-search="isSearch" :only-read="onlyRead" />
<afterPart ref="afterParts" :patient-id="patientId" :is-search="isSearch" :only-read="onlyRead" :case-id="caseId"/>
</el-tab-pane> </el-tab-pane>
<el-tab-pane label="专科检查" name="4" style="height: 100%"> <el-tab-pane label="专科检查" name="4" style="height: 100%">
<specialExamine ref="examines" :patient-id="patientId" :is-search="isSearch" />
<specialExamine ref="examines" :patient-id="patientId" :is-search="isSearch" :case-id="caseId"/>
</el-tab-pane> </el-tab-pane>
<el-tab-pane label="诊断处置" name="5"> <el-tab-pane label="诊断处置" name="5">
<diagnosis-form :diagnosis="diagnosis" />
<diagnosis-form ref="diagnosis" :diagnosis="diagnosis" />
</el-tab-pane> </el-tab-pane>
</el-tabs> </el-tabs>
<all-form-print <all-form-print
@ -68,14 +68,14 @@ export default {
type: String, type: String,
default: '' default: ''
}, },
caseId: {
type: String,
default: ''
},
onlyRead: { onlyRead: {
type: Boolean, type: Boolean,
default: false default: false
}, },
id: {
type: String,
default: ''
}
}, },
inject: ['refresh'], inject: ['refresh'],
data() { data() {
@ -112,6 +112,14 @@ export default {
return this.$refs.foreParts && this.$refs.foreParts.treeProps return this.$refs.foreParts && this.$refs.foreParts.treeProps
} }
}, },
watch: {
caseId: {
handler: function(newV, oldV) {
this.getOutPatientList('1')
this.getOutPatientList('5')
}
}
},
mounted() { mounted() {
this.getOutPatientList('1') this.getOutPatientList('1')
this.getOutPatientList('5') this.getOutPatientList('5')
@ -154,8 +162,9 @@ export default {
}, },
// //
async getOutPatientList(flag) { async getOutPatientList(flag) {
const { data: res } = await this.$http.get('/case/getCase', {
const { data: res } = await this.$http.get('/case/getCaseByCaseId', {
params: { params: {
caseId: this.caseId,
patientId: this.patientId, patientId: this.patientId,
platform: this.isSearch, platform: this.isSearch,
flag: flag flag: flag
@ -180,6 +189,7 @@ export default {
const params = { const params = {
flag: flag, flag: flag,
name: name, name: name,
caseId: this.caseId,
patientId: this.patientId, patientId: this.patientId,
platform: this.isSearch platform: this.isSearch
} }
@ -210,12 +220,6 @@ export default {
} else { } else {
this.$message.error(res.msg) this.$message.error(res.msg)
} }
},
// tab
handleClick() {
},
formDelete() {
this.$emit('formDelete')
} }
} }
} }
@ -240,6 +244,9 @@ export default {
.el-tabs{ .el-tabs{
height: 100%; height: 100%;
} }
.el-tabs__item{
font-size: 16px;
}
.el-tabs--border-card{ .el-tabs--border-card{
border: none; border: none;
} }

2
src/components/360View/medicalRecord/outPatientRecord/leftFormList.vue

@ -45,7 +45,7 @@ export default {
return { return {
formType: '门诊', formType: '门诊',
defaultChecked: [], defaultChecked: [],
outFormNameList: ['门急诊电子病历', '眼科激光手术患者知情同意书', '眼科激光手术治疗', '眼底血管造影知情同意书']
outFormNameList: ['眼科激光手术患者知情同意书', '眼科激光手术治疗', '眼底血管造影知情同意书']
} }
}, },
methods: { methods: {

8
src/components/360View/opticalFile/index.vue

@ -19,7 +19,7 @@
</div> </div>
<div class="record" @click="addRecord(1,'验光报告单')"> <div class="record" @click="addRecord(1,'验光报告单')">
<p>验光报告单</p> <p>验光报告单</p>
<img :src="require('@/assets/img/add.png')" alt="" v-if="!onlyRead && isSearch == '3'">
<img :src="require('@/assets/img/add.png')" alt="" v-if="!onlyRead">
</div> </div>
<div class="comonForm-tab"> <div class="comonForm-tab">
<el-radio-group v-model="formType" size="small"> <el-radio-group v-model="formType" size="small">
@ -29,15 +29,15 @@
<div v-if="formType === '报告单'"> <div v-if="formType === '报告单'">
<div class="record"> <div class="record">
<p>双眼视功能检查报告单</p> <p>双眼视功能检查报告单</p>
<img v-if="!onlyRead && isSearch == '3'" :src="require('@/assets/img/add.png')" alt="" @click="addRecord(2,'双眼视功能检查报告单')">
<img v-if="!onlyRead" :src="require('@/assets/img/add.png')" alt="" @click="addRecord(2,'双眼视功能检查报告单')">
</div> </div>
<div class="record"> <div class="record">
<p>屈光发育档案</p> <p>屈光发育档案</p>
<img v-if="!onlyRead && isSearch == '3'" :src="require('@/assets/img/add.png')" alt="" @click="addRecord(1,'屈光发育档案')">
<img v-if="!onlyRead" :src="require('@/assets/img/add.png')" alt="" @click="addRecord(1,'屈光发育档案')">
</div> </div>
<div class="record" @click="addRecord(4,'三级视功能检查报告单')"> <div class="record" @click="addRecord(4,'三级视功能检查报告单')">
<p>三级视功能检查报告单</p> <p>三级视功能检查报告单</p>
<img v-if="!onlyRead && isSearch == '3'" :src="require('@/assets/img/add.png')" alt="" @click="addRecord(4,'三级视功能检查报告单')">
<img v-if="!onlyRead" :src="require('@/assets/img/add.png')" alt="" @click="addRecord(4,'三级视功能检查报告单')">
</div> </div>
</div> </div>
</div> </div>

24
src/components/360View/specialExamine/index.vue

@ -176,6 +176,10 @@ export default {
type: String, type: String,
default: '' default: ''
}, },
caseId: {
type: String,
default: ''
},
isSearch: { isSearch: {
type: String, type: String,
default: '' default: ''
@ -189,22 +193,33 @@ export default {
tableData: [] tableData: []
} }
}, },
watch: {
caseId: {
handler: function(newV, oldV) {
this.getOutPatientList()
}
}
},
created() { created() {
}, },
beforeDestroy() {
eventBus.$off('sendDataToExamine')
},
mounted() { mounted() {
this.getOutPatientList() this.getOutPatientList()
eventBus.$on('sendDataToExamine', data => { eventBus.$on('sendDataToExamine', data => {
this.tableData = data
this.tableData = JSON.parse(JSON.stringify(data))
}) })
}, },
methods: { methods: {
// //
async getOutPatientList() { async getOutPatientList() {
const { data: res } = await this.$http.get('/case/getCase', {
const { data: res } = await this.$http.get('/case/getCaseByCaseId', {
params: { params: {
caseId: this.caseId,
patientId: this.patientId, patientId: this.patientId,
platform: this.isSearch, platform: this.isSearch,
flag: 4
flag: '4'
} }
}) })
if (res.code === 0) { if (res.code === 0) {
@ -217,7 +232,8 @@ export default {
// //
async saveExamine() { async saveExamine() {
const params = { const params = {
flag: 4,
flag: '4',
caseId: this.caseId,
jsonText: JSON.stringify(this.tableData), jsonText: JSON.stringify(this.tableData),
name: '专科检查', name: '专科检查',
patientId: this.patientId, patientId: this.patientId,

Loading…
Cancel
Save