Browse Source

peter

360view
newPeter7 2 years ago
parent
commit
adaaa09ed2
  1. 14
      src/assets/scss/common.scss
  2. 8
      src/assets/scss/theme-variables.scss
  3. 16
      src/components/360View/afterPart/index.vue
  4. 11
      src/components/360View/commonForm/deveopmentFIle.vue
  5. 69
      src/components/360View/commonForm/eyesVision.vue
  6. 38
      src/components/360View/commonForm/optometryForm.vue
  7. 145
      src/components/360View/commonForm/threeVision.vue
  8. 25
      src/components/360View/forePart/index.vue
  9. 88
      src/components/360View/index1.vue
  10. 32
      src/components/360View/itemSelect/index.vue
  11. 76
      src/components/360View/medicalRecord/callMedical/index.vue
  12. 40
      src/components/360View/medicalRecord/index.vue
  13. 4
      src/components/360View/medicalRecord/outPatientRecord/afterForm.vue
  14. 2
      src/components/360View/medicalRecord/outPatientRecord/historyForm.vue
  15. 36
      src/components/360View/opticalFile/index.vue
  16. 2
      src/components/360View/overView/index.vue
  17. 5
      src/components/360View/routine/index.vue
  18. 9
      src/components/360View/show-file.vue
  19. 34
      src/components/360View/special/index.vue
  20. 1
      src/components/360View/specialExamine/index.vue
  21. 7
      src/components/360View/time-line.vue
  22. 12
      src/components/bread-crumb/index.vue
  23. 3
      src/page-subspecialty/router/index.js
  24. 5
      src/page-subspecialty/views/main-sidebar.vue
  25. 13
      src/page-subspecialty/views/modules/optometryManagement/cornea/patient-add-or-update.vue
  26. 7
      src/page-subspecialty/views/modules/optometryManagement/dioptric/index.vue
  27. 36
      src/page-subspecialty/views/modules/optometryManagement/dioptric/patient-add-or-update.vue
  28. 79
      src/page-subspecialty/views/modules/outpatientManagement/call/index.vue
  29. 16
      src/page-subspecialty/views/modules/outpatientManagement/call/patient-add-or-update.vue
  30. 64
      src/page-subspecialty/views/modules/outpatientManagement/treat/index.vue
  31. 20
      src/page-subspecialty/views/modules/outpatientManagement/treat/patient-add-or-update.vue
  32. 3
      src/page-subspecialty/views/modules/scientificManagement/index.vue
  33. 0
      src/page-subspecialty/views/modules/scientificManagement/pretest/_mixin.js
  34. 0
      src/page-subspecialty/views/modules/scientificManagement/pretest/add-or-update.vue
  35. 0
      src/page-subspecialty/views/modules/scientificManagement/pretest/apply.vue
  36. 0
      src/page-subspecialty/views/modules/scientificManagement/pretest/index.vue
  37. 0
      src/page-subspecialty/views/modules/scientificManagement/pretest/review.vue
  38. 0
      src/page-subspecialty/views/modules/scientificManagement/search/index.vue
  39. 0
      src/page-subspecialty/views/modules/scientificManagement/sys/depart-add-or-update.vue
  40. 0
      src/page-subspecialty/views/modules/scientificManagement/sys/depart.vue
  41. 0
      src/page-subspecialty/views/modules/scientificManagement/sys/index.vue
  42. 0
      src/page-subspecialty/views/modules/scientificManagement/sys/log-error.vue
  43. 0
      src/page-subspecialty/views/modules/scientificManagement/sys/log-login.vue
  44. 0
      src/page-subspecialty/views/modules/scientificManagement/sys/log-operation.vue
  45. 0
      src/page-subspecialty/views/modules/scientificManagement/sys/menu-dept-add-or-update.vue
  46. 0
      src/page-subspecialty/views/modules/scientificManagement/sys/menu-dept.vue
  47. 0
      src/page-subspecialty/views/modules/scientificManagement/sys/menu-project-add-or-update.vue
  48. 0
      src/page-subspecialty/views/modules/scientificManagement/sys/menu-project.vue
  49. 0
      src/page-subspecialty/views/modules/scientificManagement/sys/project-add-or-update.vue
  50. 0
      src/page-subspecialty/views/modules/scientificManagement/sys/project-review.vue
  51. 0
      src/page-subspecialty/views/modules/scientificManagement/sys/project.vue
  52. 0
      src/page-subspecialty/views/modules/scientificManagement/sys/role-add-or-update.vue
  53. 0
      src/page-subspecialty/views/modules/scientificManagement/sys/role.vue
  54. 0
      src/page-subspecialty/views/modules/scientificManagement/sys/user-add-or-update.vue
  55. 0
      src/page-subspecialty/views/modules/scientificManagement/sys/user.vue
  56. 235
      src/page-subspecialty/views/pages/luyin.vue
  57. 81
      src/page-subspecialty/views/pages/transfer.vue

14
src/assets/scss/common.scss

@ -5,7 +5,7 @@
}
body {
font-family: "Helvetica Neue", Helvetica, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "微软雅黑", Arial, sans-serif;
font-size: $--font-size-base;
font-size: $--font-size-base !important;
line-height: $base--line-height;
color: $--color-text-primary;
background-color: #fff;
@ -868,4 +868,14 @@ img {
}
.circle-grey {
background-color: #b8b8b8;
}
}
// 调整字体
.el-form-item__label, .el-table th, .el-table__cell, .el-tabs__item{
font-size: 16px;
}
.el-button, .el-radio-button__inner{
font-size: 13px;
}
.el-form-item__label {
min-width: 85px!important;
}

8
src/assets/scss/theme-variables.scss

@ -112,7 +112,7 @@ $--font-size-large: 18px !default;
/// fontSize|1|Font Size|0
$--font-size-medium: 16px !default;
/// fontSize|1|Font Size|0
$--font-size-base: 14px !default;
$--font-size-base: 16px !default;
/// fontSize|1|Font Size|0
$--font-size-small: 13px !default;
/// fontSize|1|Font Size|0
@ -150,7 +150,7 @@ $--icon-color-base: $--color-info !default;
/* Checkbox
-------------------------- */
/// fontSize||Font|1
$--checkbox-font-size: 14px !default;
$--checkbox-font-size: 16px !default;
/// fontWeight||Font|1
$--checkbox-font-weight: $--font-weight-primary !default;
/// color||Color|0
@ -289,7 +289,7 @@ $--select-multiple-input-color: #666 !default;
/// color||Color|0
$--select-input-focus-border-color: $--color-primary !default;
/// fontSize||Font|1
$--select-input-font-size: 14px !default;
$--select-input-font-size: 16px !default;
$--select-option-color: $--color-text-regular !default;
$--select-option-disabled-color: $--color-text-placeholder !default;
@ -619,7 +619,7 @@ $--dialog-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.3) !default;
/// fontSize||Font|1
$--dialog-title-font-size: $--font-size-large !default;
/// fontSize||Font|1
$--dialog-content-font-size: 14px !default;
$--dialog-content-font-size: 16px !default;
/// fontLineHeight||LineHeight|2
$--dialog-font-line-height: $--font-line-height-primary !default;
/// padding||Spacing|3

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

@ -1,6 +1,6 @@
<template>
<div class="afterBox">
<div class="moveIcon">
<div class="moveIcon" v-if="!onlyRead">
<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>
@ -23,13 +23,14 @@
<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 icon="el-icon-delete" style="font-size: 12px;color: #F56C6C" type="text" @click.stop="remove(node, data)" />
<el-button v-if="!data.treeId && !onlyRead" icon="el-icon-plus" style="font-size: 12px;color: #409EFF" type="text" @click.stop="append(2, data)" />
<el-button v-if="!onlyRead" icon="el-icon-delete" style="font-size: 12px;color: #F56C6C" type="text" @click.stop="remove(node, data)" />
</span>
</span>
</el-tree>
</div>
<after-form
:only-read="onlyRead"
ref="afterForm"
:table-data="tableData"
@selection="selection"
@ -77,13 +78,11 @@
</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 AfterForm from '@/components/360View/medicalRecord/outPatientRecord/afterForm.vue'
const Base64 = require('js-base64').Base64
export default {
components: {
AfterForm,
@ -267,6 +266,7 @@ export default {
this.tableData = JSON.parse(res.data.jsonText)
this.collectId = res.data.id
} else {
this.collectId = ''
this.tableData = [
{
name: '黄斑'
@ -427,7 +427,7 @@ export default {
})
})
}
this.sourceData = _.cloneDeep(this.tableData) || []
this.sourceData = Object.assign([], this.tableData)
eventBus.$emit('getAfterData', this.tableData)
}).catch((error) => {
console.log(error)
@ -640,12 +640,11 @@ export default {
})
})
} else {
this.tableData = _.cloneDeep(this.sourceData)
this.tableData = Object.assign([], this.sourceData)
}
},
//
handleTemplate() {
// if (!this.multipleSelection.length) return this.$message.warning('!')
this.form.name = ''
this.queryTemplate()
this.templateFlag = true
@ -680,7 +679,6 @@ export default {
type === 1 ? this.title = '新增父级' : this.title = '新增子级'
type === 1 ? this.parentId = 0 : this.parentId = data.id
this.dialogFormVisible = true
console.log(this.title)
},
//
async handleSaveCase() {

11
src/components/360View/commonForm/deveopmentFIle.vue

@ -1,6 +1,6 @@
<template>
<div id="operation-record" style=" background: #fff; padding: 10px 20px 50px 20px;page-break-after:always">
<div v-if="!onlyRead && isSearch == '3'" class="btnBox">
<div v-if="!onlyRead" class="btnBox">
<el-button v-print="printObj" size="small">打印</el-button>
<el-button type="primary" size="small" @click="handleSaveTable">保存</el-button>
<el-button type="danger" size="small" @click="handleDelete">删除</el-button>
@ -312,6 +312,10 @@ export default {
type: String,
default: ''
},
patientId: {
type: String,
default: ''
},
formContent: {
type: Object,
default: () => { }
@ -509,14 +513,15 @@ export default {
immediate: true
}
},
created() {
mounted() {
this.originTableData = JSON.parse(JSON.stringify(this.tableData))
// this.printPage('threeFunc')
this.getPatientData()
},
methods: {
setData() {
this.headData = this.formContent.a
this.tableData = this.formContent.b
this.getPatientData()
},
reSet() {
this.headData = [

69
src/components/360View/commonForm/eyesVision.vue

@ -1,6 +1,6 @@
<template>
<div id="operation-record" style=" background: #fff; padding: 10px 20px 50px 20px;page-break-after:always">
<div v-if="!onlyRead && isSearch == '3'" class="btnBox">
<div v-if="!onlyRead" class="btnBox">
<el-button v-print="'#eyesFunc'" size="small">打印</el-button>
<el-button type="primary" size="small" @click="handleSaveTable">保存</el-button>
<el-button type="danger" size="small" @click="handleDelete">删除</el-button>
@ -10,10 +10,10 @@
双眼视功能检查报告单
</p>
<div style="display: flex;justify-content: space-around">
<span>登记号<el-input v-model="dataForm.number" style="width: 120px" size="small" clearable placeholder="" /></span>
<span>姓名<el-input v-model="dataForm.name" style="width: 120px" size="small" clearable placeholder="" /></span>
<span>性别<el-input v-model="dataForm.sex" style="width: 120px" size="small" clearable placeholder="" /></span>
<span>年龄<el-input v-model="dataForm.age" style="width: 120px" size="small" clearable placeholder="" /></span>
<span>登记号<el-input v-model="dataForm.patientId" style="width: 120px" size="small" clearable placeholder="" /></span>
<span>姓名<el-input v-model="dataForm.patientName" style="width: 120px" size="small" clearable placeholder="" /></span>
<span>性别<el-input v-model="dataForm.patientSex" style="width: 120px" size="small" clearable placeholder="" /></span>
<span>年龄<el-input v-model="dataForm.patientAge" style="width: 120px" size="small" clearable placeholder="" /></span>
</div>
<div class="operation-record-table">
<el-table :data="tableData" :span-method="objectSpanMethod" border style="width: 100%; margin-top: 20px">
@ -348,6 +348,10 @@ export default {
type: String,
default: ''
},
patientId: {
type: String,
default: ''
},
formContent: {
type: Object,
default: () => { }
@ -360,10 +364,10 @@ export default {
data() {
return {
dataForm: {
number: '',
name: '',
sex: '',
age: ''
patientId: '',
patientName: '',
patientSex: '',
patientAge: ''
},
originTableData: [],
tableData: [
@ -523,12 +527,16 @@ export default {
}
},
created() {
},
mounted() {
this.originTableData = JSON.parse(JSON.stringify(this.tableData))
this.getPatientData()
},
methods: {
setData() {
this.dataForm = this.formContent.a
this.tableData = this.formContent.b
this.getPatientData()
},
reSet() {
this.dataForm = {
@ -640,7 +648,6 @@ export default {
.left {
text-align: left;
}
.width-50 {
.el-input {
width: 50px;
@ -651,7 +658,6 @@ export default {
width: 70px;
}
}
.width-100 {
.el-input {
width: 100px;
@ -686,46 +692,5 @@ export default {
.el-checkbox__inner {
border-color: #767676;
}
//.el-radio__input.is-checked + .el-radio__label {
// color: #606266;
//}
//.el-radio__input.is-checked .el-radio__inner {
// background: #767676;
// border-color: #767676;
//}
//.el-radio {
// margin-right: 8px;
// display: block;
//}
//.el-radio__inner {
// border: 1px solid #767676 !important;
//}
//.el-radio__inner:hover {
// border-color: #767676;
//}
//.el-table--enable-row-hover .el-table__body tr:hover>td.el-table__cell {
// background: none !important;
//}
//.has-gutter {
// display: none;
// .cell {
// font-weight: 700;
// }
// .el-table__cell {
// background: #ced4d9;
// }
//}
// .el-table--border .el-table__cell, .el-table__body-wrapper .el-table--border.is-scrolling-left~.el-table__fixed {
// border-right: 1px solid #808080;
// }
// .el-table td.el-table__cell, .el-table th.el-table__cell.is-leaf {
// border-bottom: 1px solid #808080 !important;
// }
// .el-table--border, .el-table--group {
// border: 1px solid #808080;
// }
// .el-table--border {
// border-bottom: 0;
// }
}
</style>

38
src/components/360View/commonForm/optometryForm.vue

@ -10,10 +10,10 @@
验光报告单
</p>
<div style="display: flex;justify-content: space-around">
<span>登记号<el-input v-model="dataForm.number" style="width: 80px" size="small" clearable placeholder="" /></span>
<span>姓名<el-input v-model="dataForm.name" style="width: 80px" size="small" clearable placeholder="" /></span>
<span>性别<el-input v-model="dataForm.sex" style="width: 60px" size="small" clearable placeholder="" /></span>
<span>年龄<el-input v-model="dataForm.age" style="width: 60px" size="small" clearable placeholder="" /></span>
<span>登记号<el-input v-model="dataForm.patientId" style="width: 80px" size="small" clearable placeholder="" /></span>
<span>姓名<el-input v-model="dataForm.patientName" style="width: 80px" size="small" clearable placeholder="" /></span>
<span>性别<el-input v-model="dataForm.patientSex" style="width: 60px" size="small" clearable placeholder="" /></span>
<span>年龄<el-input v-model="dataForm.patientAge" style="width: 60px" size="small" clearable placeholder="" /></span>
<span>屈光发育档案<el-input v-model="dataForm.file" style="width: 60px" size="small" clearable placeholder="" /></span>
<span>档案号<el-input v-model="dataForm.fileNUm" style="width: 80px" size="small" clearable placeholder="" /></span>
</div>
@ -343,6 +343,10 @@ export default {
type: String,
default: ''
},
patientId: {
type: String,
default: ''
},
formContent: {
type: Object,
default: () => { }
@ -355,10 +359,10 @@ export default {
data() {
return {
dataForm: {
number: '',
name: '',
sex: '',
age: '',
patientId: '',
patientName: '',
patientSex: '',
patientAge: '',
file: '',
fileNUm: ''
},
@ -499,15 +503,27 @@ export default {
immediate: true
}
},
created() {
mounted() {
this.originTableData = JSON.parse(JSON.stringify(this.tableData))
// this.queryData()
this.getPatientData()
console.log(window.localStorage.getItem('shili'))
const shili = window.localStorage.getItem('shili') ? JSON.parse(window.localStorage.getItem('shili')) : []
if (shili.length) {
this.tableData[0].od = shili[0].odVan
this.tableData[0].os = shili[0].osVan
}
},
methods: {
setData() {
this.dataForm = this.formContent.a
this.tableData = this.formContent.b
console.log(this.tableData)
this.getPatientData()
const shili = JSON.parse(window.localStorage.getItem('shili'))
if (shili.length) {
this.tableData[0].od = shili[0].odVan
this.tableData[0].os = shili[0].osVan
}
},
reSet() {
this.dataForm = {

145
src/components/360View/commonForm/threeVision.vue

@ -1,6 +1,6 @@
<template>
<div id="operation-record" style=" background: #fff; padding: 10px 20px 50px 20px;page-break-after:always">
<div class="btnBox" v-if="!onlyRead && isSearch == '3'">
<div v-if="!onlyRead" class="btnBox">
<el-button v-print="'#threeFunc'" size="small">打印</el-button>
<el-button type="primary" size="small" @click="handleSaveTable">保存</el-button>
<el-button type="danger" size="small" @click="handleDelete">删除</el-button>
@ -10,10 +10,10 @@
三级视功能检查报告单
</p>
<div style="display: flex;justify-content: space-around">
<span>登记号<el-input v-model="dataForm.num" style="width: 120px" size="small" clearable placeholder="" /></span>
<span>姓名<el-input v-model="dataForm.name" style="width: 120px" size="small" clearable placeholder="" /></span>
<span>性别<el-input v-model="dataForm.sex" style="width: 120px" size="small" clearable placeholder="" /></span>
<span>年龄<el-input v-model="dataForm.age" style="width: 120px" size="small" clearable placeholder="" /></span>
<span>登记号<el-input v-model="dataForm.patientId" style="width: 120px" size="small" clearable placeholder="" /></span>
<span>姓名<el-input v-model="dataForm.patientName" style="width: 120px" size="small" clearable placeholder="" /></span>
<span>性别<el-input v-model="dataForm.patientSex" style="width: 120px" size="small" clearable placeholder="" /></span>
<span>年龄<el-input v-model="dataForm.patientAge" style="width: 120px" size="small" clearable placeholder="" /></span>
</div>
<div class="operation-record-table">
<el-table :data="tableData" :span-method="objectSpanMethod" border style="width: 820px; margin-top: 20px">
@ -24,32 +24,32 @@
<p style="width: 50%">OD</p>
<p style="width: 50%">OS</p>
</div>
<div class="rowLine"></div>
<div class="cloLine"></div>
<div class="rowLine-l"></div>
<div class="cloLine-l"></div>
<div class="rowLine" />
<div class="cloLine" />
<div class="rowLine-l" />
<div class="cloLine-l" />
<div class="Rline">R</div>
<div class="Rline-os">R</div>
<div class="Lline">L</div>
<div class="Lline-os">L</div>
<el-input class="ipt-a" v-model="scope.row.a" placeholder="" />
<el-input class="ipt-b" v-model="scope.row.b" placeholder="" />
<el-input class="ipt-c" v-model="scope.row.c" placeholder="" />
<el-input class="ipt-d" v-model="scope.row.d" placeholder="" />
<el-input class="ipt-e" v-model="scope.row.e" placeholder="" />
<el-input class="ipt-f" v-model="scope.row.f" placeholder="" />
<el-input class="ipt-g" v-model="scope.row.g" placeholder="" />
<el-input class="ipt-h" v-model="scope.row.h" placeholder="" />
<el-input class="ipt-j" v-model="scope.row.i" placeholder="" />
<el-input class="iptos-a" v-model="scope.row.j" placeholder="" />
<el-input class="iptos-b" v-model="scope.row.k" placeholder="" />
<el-input class="iptos-c" v-model="scope.row.l" placeholder="" />
<el-input class="iptos-d" v-model="scope.row.m" placeholder="" />
<el-input class="iptos-e" v-model="scope.row.n" placeholder="" />
<el-input class="iptos-f" v-model="scope.row.o" placeholder="" />
<el-input class="iptos-g" v-model="scope.row.p" placeholder="" />
<el-input class="iptos-h" v-model="scope.row.q" placeholder="" />
<el-input class="iptos-j" v-model="scope.row.r" placeholder="" />
<el-input v-model="scope.row.a" class="ipt-a" placeholder="" />
<el-input v-model="scope.row.b" class="ipt-b" placeholder="" />
<el-input v-model="scope.row.c" class="ipt-c" placeholder="" />
<el-input v-model="scope.row.d" class="ipt-d" placeholder="" />
<el-input v-model="scope.row.e" class="ipt-e" placeholder="" />
<el-input v-model="scope.row.f" class="ipt-f" placeholder="" />
<el-input v-model="scope.row.g" class="ipt-g" placeholder="" />
<el-input v-model="scope.row.h" class="ipt-h" placeholder="" />
<el-input v-model="scope.row.i" class="ipt-j" placeholder="" />
<el-input v-model="scope.row.j" class="iptos-a" placeholder="" />
<el-input v-model="scope.row.k" class="iptos-b" placeholder="" />
<el-input v-model="scope.row.l" class="iptos-c" placeholder="" />
<el-input v-model="scope.row.m" class="iptos-d" placeholder="" />
<el-input v-model="scope.row.n" class="iptos-e" placeholder="" />
<el-input v-model="scope.row.o" class="iptos-f" placeholder="" />
<el-input v-model="scope.row.p" class="iptos-g" placeholder="" />
<el-input v-model="scope.row.q" class="iptos-h" placeholder="" />
<el-input v-model="scope.row.r" class="iptos-j" placeholder="" />
</div>
<div v-else-if="scope.row.name === 'TITMUS()'">
<span>TITMUS():</span>
@ -132,8 +132,9 @@
</div>
<div v-if="scope.row.name == 'TITMUS(近)'">
<div class="width-180 center">
TNO():
<el-input v-model="scope.row.b" placeholder="" />
<el-input v-model="scope.row.b" placeholder="">
<template slot="prepend">TNO():</template>
</el-input>
</div>
</div>
</template>
@ -178,7 +179,9 @@
</div>
<div v-if="scope.row.name == 'TITMUS(近)'">
<div class="width-180 center">
RDD()<el-input v-model="scope.row.c" placeholder="" />
<el-input v-model="scope.row.c" placeholder="">
<template slot="prepend">RDD():</template>
</el-input>
</div>
</div>
<!-- <div v-if="scope.row.name == '同视机九方位检查'">-->
@ -205,6 +208,10 @@ export default {
type: String,
default: ''
},
patientId: {
type: String,
default: ''
},
formContent: {
type: Object,
default: () => { }
@ -217,11 +224,12 @@ export default {
data() {
return {
dataForm: {
num: '',
name: '',
sex: '',
age: ''
patientId: '',
patientName: '',
patientSex: '',
patientAge: ''
},
patientData: {},
tableData: [
{
name: '基础信息',
@ -332,10 +340,14 @@ export default {
created() {
// this.printPage('threeFunc')
},
mounted() {
this.getPatientData()
},
methods: {
setData() {
this.dataForm = this.formContent.a
this.tableData = this.formContent.b
this.getPatientData()
},
reSet() {
this.dataForm = {
@ -415,6 +427,22 @@ export default {
a: '',
b: ''
}]
this.getPatientData()
},
async getPatientData() {
const { data: res } = await this.$http.get(
'/patient/view/getPatientData',
{
params: {
patientId: this.patientId
}
}
)
if (res.code === 0) {
this.dataForm = res.data
} else {
this.$message.error(res.msg)
}
},
//
singHandle(text) {
@ -482,16 +510,6 @@ export default {
<style lang="scss">
.printBox{
.el-input__inner {
border-bottom: 1px solid #ccc;
border-radius: 0;
padding: 0;
}
.el-input__prefix {
display: none;
}
}
#operation-record {
.btnBox{
display: flex;
justify-content: flex-end;
@ -685,7 +703,6 @@ export default {
.left {
text-align: left;
}
.width-50 {
.el-input {
width: 50px;
@ -696,7 +713,6 @@ export default {
width: 70px;
}
}
.width-100 {
.el-input {
width: 100px;
@ -718,7 +734,6 @@ export default {
line-height: 26px !important;
text-align: center;
}
.el-input__inner {
border-bottom: 1px solid #ccc;
border-radius: 0;
@ -727,42 +742,6 @@ export default {
.el-input__prefix {
display: none;
}
//.el-date-editor.el-input,
//.el-date-editor.el-input__inner {
// width: 140px;
//}
//.el-input__suffix {
// top: -7px;
//}
//.el-checkbox__input.is-checked + .el-checkbox__label {
// color: #606266;
//}
//.el-checkbox__input.is-checked .el-checkbox__inner,
//.el-checkbox__input.is-indeterminate .el-checkbox__inner {
// background: #767676;
// border-color: #767676;
//}
//.el-checkbox__inner:hover,
//.el-checkbox__inner {
// border-color: #767676;
//}
//.el-radio__input.is-checked + .el-radio__label {
// color: #606266;
//}
//.el-radio__input.is-checked .el-radio__inner {
// background: #767676;
// border-color: #767676;
//}
//.el-radio {
// margin-right: 8px;
// display: block;
//}
//.el-radio__inner {
// border: 1px solid #767676 !important;
//}
//.el-radio__inner:hover {
// border-color: #767676;
//}
.el-table--enable-row-hover .el-table__body tr:hover>td.el-table__cell {
background: none !important;
}

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

@ -1,6 +1,6 @@
<template>
<div class="foreBox">
<div class="moveIcon">
<div v-if="!onlyRead" class="moveIcon">
<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>
@ -23,8 +23,8 @@
<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 icon="el-icon-delete" style="font-size: 12px;color: #F56C6C" type="text" @click.stop="remove(node, data)" />
<el-button v-if="!data.treeId && !onlyRead" icon="el-icon-plus" style="font-size: 12px;color: #409EFF" type="text" @click.stop="append(2, data)" />
<el-button v-if="!onlyRead" icon="el-icon-delete" style="font-size: 12px;color: #F56C6C" type="text" @click.stop="remove(node, data)" />
</span>
</span>
</el-tree>
@ -50,6 +50,7 @@
<span style="margin-right: 16px">结膜充血</span>
<treeSelect
v-model="scope.row.od"
:only-read="onlyRead"
:props="treeProps"
style="display: inline-block;width: 60%"
:options="scope.row.data"
@ -66,6 +67,7 @@
<span style="margin-right: 16px">结膜分泌物</span>
<treeSelect
v-model="scope.row.od"
:only-read="onlyRead"
:props="treeProps"
style="display: inline-block;width: 60%"
:options="scope.row.data"
@ -79,7 +81,7 @@
/>
</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" />
<treeSelect v-model="scope.row.od" :only-read="onlyRead" :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>
@ -91,7 +93,7 @@
width="120"
>
<template slot-scope="scope">
<div>
<div v-if="!onlyRead">
<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>
@ -106,6 +108,7 @@
<span v-if="scope.row.sort === 1">
<span style="margin-right: 16px">结膜充血</span><treeSelect
v-model="scope.row.os"
:only-read="onlyRead"
:props="treeProps"
style="display: inline-block;width: 60%"
:options="scope.row.data"
@ -121,6 +124,7 @@
<span v-if="scope.row.sort === 2">
<span style="margin-right: 16px">结膜分泌物</span><treeSelect
v-model="scope.row.os"
:only-read="onlyRead"
:props="treeProps"
style="display: inline-block;width: 60%"
:options="scope.row.data"
@ -134,7 +138,7 @@
/>
</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" />
<treeSelect v-model="scope.row.os" :only-read="onlyRead" :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>
@ -179,7 +183,6 @@
</div>
</template>
<script>
import _ from 'lodash'
import eventBus from '@/page-subspecialty/utils/eventBus'
import treeSelect from '@/components/360View/itemSelect'
import axios from 'axios'
@ -405,6 +408,7 @@ export default {
this.collectId = res.data.id
this.tableData = JSON.parse(res.data.jsonText)
} else {
this.collectId = ''
this.tableData = [
{
name: '眼睑'
@ -523,7 +527,6 @@ export default {
os: ''
}]
}
this.collectId = res.data ? res.data.id : ''
} else {
this.$message.error(res.msg)
}
@ -587,7 +590,7 @@ export default {
if (result.length) {
result.forEach(item => {
item.forEach(row => {
this.tableData.forEach(e => {
this.tableData.forEach((e, index) => {
if (e.type === row.type) {
e.data = item
const sort = e.sort
@ -602,7 +605,7 @@ export default {
})
})
}
this.sourceData = _.cloneDeep(this.tableData) || []
this.sourceData = Object.assign([], this.tableData)
eventBus.$emit('getForeData', this.tableData)
}).catch((error) => {
})
@ -816,7 +819,7 @@ export default {
})
})
} else {
this.tableData = _.cloneDeep(this.sourceData)
this.tableData = Object.assign([], this.sourceData)
}
},
//

88
src/components/360View/index1.vue

@ -37,12 +37,12 @@
<overView :patient-id="patientId" />
</el-tab-pane>
<el-tab-pane name="门诊病历" label="门诊病历" style="height: 100%">
<medicalRecord :patient-id="patientId" :is-search="isSearch" :only-read="onlyRead"/>
<medicalRecord :patient-id="patientId" :is-search="isSearch" :only-read="onlyRead" />
</el-tab-pane>
<el-tab-pane name="常规检查" label="常规检查" style="height: 100%">
<routine :patient-id="patientId" :date="date" :only-read="onlyRead"/>
<routine :patient-id="patientId" :date="date" :only-read="onlyRead" />
</el-tab-pane>
<el-tab-pane name="特殊检查" label="特殊检查" style="height: 100%" >
<el-tab-pane name="特殊检查" label="特殊检查" style="height: 100%">
<special :patient-id="patientId" :only-read="onlyRead" />
</el-tab-pane>
<el-tab-pane name="视光档案" label="视光档案" style="height: 100%">
@ -210,17 +210,10 @@
<!-- 数据集-->
<dataInfo v-if="dataType === 2" :fore-list="foreList" :after-list="afterList" />
<!-- 病历收藏-->
<collection v-if="dataType === 3" :patient-id="patientBaseData.patientId" :platform="isSearch"/>
<collection v-if="dataType === 3" :patient-id="patientBaseData.patientId" :platform="isSearch" />
<!-- 常用业务-->
<business v-if="dataType === 4" />
</drawer>
<!-- 图像与报告 -->
<!-- <keep-alive>-->
<!-- <el-dialog title="" class="detail-view" :fullscreen="true" :visible.sync="isActive" append-to-body @close="closePacs">-->
<!--&lt;!&ndash; <imgRecord :patient-info="patientBaseData" />&ndash;&gt;-->
<!-- <pacsList></pacsList>-->
<!-- </el-dialog>-->
<!-- </keep-alive>-->
</div>
</template>
<script>
@ -280,7 +273,7 @@ export default {
drawerWidth: '',
timeAxisData: [], //
timeAxisAll: [], //
timeAxisType: '', // tab
timeAxisType: '病史总览', // tab
foreList: [], //
afterList: [], //
dataType: 1,
@ -293,18 +286,20 @@ export default {
label: 'tagName'
},
jsArr: [],
crfVisible: false,
dataForm: {}
}
},
created() {
// this.patientIdNumber = '330282200110051983'
this.getPatientData()
this.getTimeAxisData()
// this.getTimeAxisMz()
},
mounted() {
this.computerData()
if (this.isSearch === '3') {
this.timeAxisType = '视光档案'
} else {
this.timeAxisType = '病史总览'
}
},
methods: {
//
@ -332,11 +327,6 @@ export default {
console.log(this.foreList)
this.openDataDrink()
})
// eventBus.$on('sendAfterData', data => {
// console.log(data)
// this.afterList = data
// this.openDataDrink()
// })
},
openDataDrink() {
this.dataType = 2
@ -369,12 +359,12 @@ export default {
// 360
handlePacs() {
const { href } = this.$router.resolve({
name: 'pacs',
name: 'pacs'
// query: {
// id: 1
// }
});
window.open(href, '_blank');
})
window.open(href, '_blank')
},
// 360
closePacs() {
@ -391,9 +381,8 @@ export default {
'/patient/view/getPatientData',
{
params: {
// patientId: this.patientId
patientId: '797064'
// patientIdNumber: '330282200110051983'
patientId: this.patientId
// patientId: '797064'
}
}
)
@ -404,59 +393,23 @@ export default {
}
},
// --
async getTimeAxisData(typeScreenCheckArr) {
// const type = ['', '', '', '', '', '', '访']
async getTimeAxisData() {
const { data: res } = await this.$http.get(
'/patient/view/getTimeAxisData',
{
params: {
// patientId: this.patientId
patientId: '797064'
// type: typeScreenCheckArr !== undefined ? typeScreenCheckArr : type
patientId: this.patientId
}
}
)
if (res.code === 0) {
if (res.data.length > 0) {
this.timeAxisData = res.data.length > 0 ? res.data : []
const curItem = res.data[0].data[0].itemList.length ? res.data[0].data[0].itemList[0] : ''
if (this.isSearch === '3') {
this.timeAxisType = '视光档案'
} else {
this.timeAxisType = res.data[0].data[0].itemList[0].groupName
if (curItem) {
this.getTimeAxisNodeInfo(curItem)
}
}
}
if (!res.data.length) {
this.timeAxisNodeInfo = []
}
} else {
this.$message.error(res.msg)
}
},
async getTimeAxisMz(typeScreenCheckArr) {
// const type = ['', '', '', '', '', '', '访']
const { data: res } = await this.$http.get(
'/patient/view/getTimeAxisDataMzss',
{
params: {
// patientId: this.patientId
patientId: '797064'
// type: typeScreenCheckArr !== undefined ? typeScreenCheckArr : type
}
}
)
if (res.code === 0) {
if (res.data.length > 0) {
// this.timeAxisData = res.data.length > 0 ? res.data : []
// this.type = res.data[0].data[0].itemList[0].groupName
}
if (!res.data.length) {
// this.timeAxisNodeInfo = []
// this.type = ''
// this.isVisit = ''
const year = this.$moment().format('YYYY')
const date = this.$moment().format('YYYY-MM-DD')
this.timeAxisData = [{ year: year, data: [{ date: date, itemList: [{ groupName: '门诊', opDate: date, year: year }] }] }]
}
} else {
this.$message.error(res.msg)
@ -467,7 +420,6 @@ export default {
this.timeAxisType = item.groupName
const { data: res } = await this.$http.get('/patient/view/getTimeAxisNodeInfo', {
params: {
// date: moment(item.date).format('YYYY-MM-DD'),
date: item.opDate,
groupName: item.groupName,
patientId: '797064'

32
src/components/360View/itemSelect/index.vue

@ -27,7 +27,6 @@
:props="props"
:node-key="props.value"
:show-checkbox="multiple"
:render-content="renderContent"
:default-expand-all="defaultExpandAll"
:default-expanded-keys="defaultExpanded"
:default-checked-keys="(multiple && Array.isArray(value)) ? value : []"
@ -37,7 +36,17 @@
empty-text=""
@node-click="nodeClick"
@check-change="nodeCheck"
/>
>
<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 && !onlyRead" icon="el-icon-plus" style="font-size: 12px;color: #409EFF" type="text" @click.stop="append(data)" />
<el-button v-if="(node.label !== '公共' && node.label !== '个人') && !onlyRead" icon="el-icon-delete" style="font-size: 12px;color: #F56C6C" type="text" @click.stop="remove(data)" />
</span>
</span>
</el-tree>
<!-- <el-button v-if="!options.length" type="primary" plain size="small" @click="addNode">+</el-button>-->
</el-scrollbar>
</el-option>
@ -103,6 +112,10 @@ export default {
defaultExpandedKeys: {
type: Array,
default() { return [] }
},
onlyRead: { //
type: Boolean,
default: false
}
},
data() {
@ -185,21 +198,6 @@ export default {
this.newChild = []
this.$emit('input', val)
},
// queryTree(tree, id) {
// let stark = []
// stark = stark.concat(tree)
// let label = ''
// while (stark.length) {
// const temp = stark.shift()
// if (temp[this.props.children]) {
// stark = stark.concat(temp[this.props.children])
// }
// if (temp[this.props.value] === id) {
// label = temp[this.props.label]
// }
// }
// return label
// },
//
emitVal(val) {
if (!val) {

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

@ -3,12 +3,14 @@
<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)">
<div v-for="(item, index) in formList" :key="index" class="formBox" :class="[index === curIndex ? 'active' : '']" @click="handleForm(index, item)">
<div>
<p :class="[index === curIndex ? 'activeFont' : 'curFont']">{{ item.createTime }}</p>
<p>{{ item.name }}</p>
</div>
<i style="margin-top: 28px;color: rgb(199,5,5)" class="el-icon-delete" v-if="index === curIndex && !onlyRead" @click="deleteForm(item.id)"></i>
</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 ">
@ -22,13 +24,13 @@
</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="门诊" style="" />
<!-- <el-radio-button label="手术" name="2" style=""></el-radio-button>-->
<el-radio-button label="其他" name="3" style="" />
<el-radio-button label="其他" name="其他" style="" />
</el-radio-group>
<div v-if="formType === '门诊'" class="record" @click="addRecord">
<p>门急诊电子病历</p>
<img :src="require('@/assets/img/add.png')" alt="">
<img v-if="!onlyRead" :src="require('@/assets/img/add.png')" alt="" @click="addRecord('门急诊电子病历')">
</div>
</div>
</div>
@ -37,9 +39,6 @@
</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: {
},
@ -70,15 +69,11 @@ export default {
curIndex: 0,
formIdList: [],
formList: [],
defaultChecked: [],
defaultChecked: true,
formType: '门诊'
}
},
created() {
},
mounted() {
this.getFormId()
this.getFormList()
},
methods: {
@ -91,57 +86,16 @@ export default {
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 date = this.$moment().format('YYYY-MM-DD HH:mm:ss')
const params = {
flag: 8,
name: name,
createTime: date + ' 00:00:00',
createTime: date,
patientId: this.patientId,
platform: this.isSearch
}
@ -153,14 +107,15 @@ export default {
this.$message.error(res.msg)
}
},
async deleteForm() {
async deleteForm(id) {
const params = {
id: this.id
id: id
}
const { data: res } = await this.$http.post('/case/delete', params)
if (res.code === 0) {
this.$message.success('删除成功')
this.getFormList()
this.id = ''
await this.getFormList()
} else {
this.$message.error(res.msg)
}
@ -210,6 +165,8 @@ export default {
height: 100%;
overflow: hidden;
.formBox{
display: flex;
justify-content: space-between;
cursor: pointer;
padding: 2px 8px;
border-radius: 2px;
@ -245,6 +202,7 @@ export default {
}
.content-left-top {
overflow-y: auto;
padding-bottom: 8px;;
margin-bottom: 16px;
.CRFList-list {
display: flex;

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

@ -1,8 +1,8 @@
<template>
<div class="archives">
<div class="archives-content">
<div v-if="isSearch === '1' || isSearch === '3'" class="content-left">
<callMedical :is-search="isSearch" :patient-id="patientId" :only-read="onlyRead" />
<div class="content-left" v-if="isSearch === '1' || isSearch === '3'">
<callMedical :is-search="isSearch" :patientId="patientId" :only-read="onlyRead"></callMedical>
</div>
<left-form-list
v-if="isSearch === '2'"
@ -17,15 +17,14 @@
/>
<div class="content-right">
<div v-if="isSearch === '1' || isSearch === '3'" style="height: 100%">
<ourPatientRecord v-if="name === '门急诊电子病历'" :patient-id="patientId" :only-read="onlyRead" :is-search="isSearch" :case-id="caseId" />
<ourPatientRecord v-if="name === '门急诊电子病历'" :patientId="patientId" :only-read="onlyRead" :is-search="isSearch" :case-id="caseId"></ourPatientRecord>
</div>
<div v-if="formList.length && isSearch === '2'">
<InformedConsent 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" />
<report-form v-if="name==='报告'" :json-text="jsonText" @handleSaveTable="updateForm" @formDelete="formDelete" />
</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==='眼科激光手术患者知情同意书'" :only-read="onlyRead" :json-text="jsonText" @handleSaveTable="updateForm" @formDelete="formDelete" />
<mra-form v-if="name==='眼底血管造影知情同意书'" :only-read="onlyRead" :json-text="jsonText" @handleSaveTable="updateForm" @formDelete="formDelete" />
<laser-surgery v-if="name==='眼科激光手术治疗'" :only-read="onlyRead" :json-text="jsonText" @handleSaveTable="updateForm" @formDelete="formDelete" />
<report-form v-if="name==='报告'" :only-read="onlyRead" :json-text="jsonText" @handleSaveTable="updateForm" @formDelete="formDelete" />
</template>
</div>
</div>
</div>
@ -41,7 +40,7 @@ import ReportForm from '@/page-subspecialty/views/modules/formList/reportForm.vu
export default {
components: {
callMedical,
ReportForm,
ReportForm,
LaserSurgery,
MraForm,
InformedConsent,
@ -78,9 +77,6 @@ export default {
defaultChecked: [],
formType: '门诊',
jsonText: ''
// idList: [],
// defaultChecked: [],
// formType: ''
}
},
created() {
@ -92,18 +88,6 @@ export default {
this.id = item.id
this.name = item.name
this.jsonText = item.jsonText
if (item.name === '门急诊电子病历') {
// this.eyesData = item.jsonText ? JSON.parse(item.jsonText) : {}
// if (item.jsonText) {
// this.$nextTick(() => {
// this.$refs.eyes.setData()
// })
// } else {
// this.$nextTick(() => {
// this.$refs.eyes.reSet()
// })
// }
}
},
async updateForm(data) {
const params = {
@ -171,6 +155,8 @@ export default {
this.curIndex = this.formList.findIndex(item => item.id === this.id)
this.jsonText = this.formList[this.curIndex].jsonText
}
} else {
this.addRecord('门急诊电子病历')
}
} else {
this.$message.error(res.msg)
@ -342,7 +328,7 @@ export default {
text-align: center;
background-color: #F0F2F5;
overflow: hidden;
overflow-y: scroll;
overflow-y: scroll;
.content-right-buttonClick {
display: flex;
justify-content: flex-end;

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

@ -35,7 +35,7 @@
width="120"
>
<template slot-scope="scope">
<div v-if="!isPrint">
<div v-if="!isPrint && !onlyRead">
<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>
@ -70,7 +70,7 @@ export default {
components: {
treeSelect
},
props: ['tableData', 'isPrint'],
props: ['tableData', 'isPrint', 'onlyRead'],
data() {
return {
treeProps: {

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

@ -1,5 +1,5 @@
<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="140px" style="margin-top: 32px">
<el-form-item label="主诉:" style="width: 540px" prop="zs">
<el-input v-model="formData.zs" type="textarea" auto-complete="off" style="width: 420px" />
</el-form-item>

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

@ -35,7 +35,7 @@
<p>屈光发育档案</p>
<img v-if="!onlyRead" :src="require('@/assets/img/add.png')" alt="" @click="addRecord(1,'屈光发育档案')">
</div>
<div class="record" @click="addRecord(4,'三级视功能检查报告单')">
<div class="record">
<p>三级视功能检查报告单</p>
<img v-if="!onlyRead" :src="require('@/assets/img/add.png')" alt="" @click="addRecord(4,'三级视功能检查报告单')">
</div>
@ -44,18 +44,16 @@
</div>
</div>
<div class="content-right">
<eyesVision v-if="name === '双眼视功能检查报告单'" ref="eyes" :only-read="onlyRead" :is-search="isSearch" :form-content="eyesData" @save="updateForm" @del="deleteForm"/>
<optometryForm v-if="name === '验光报告单'" ref="optome" :only-read="onlyRead" :is-search="isSearch" :form-content="optomeData" @save="updateForm" @del="deleteForm" />
<threeVision v-if="name === '三级视功能检查报告单'" ref="three" :only-read="onlyRead" :is-search="isSearch" :form-content="threeData" @save="updateForm" @del="deleteForm" />
<deveopmentFile v-show="name === '屈光发育档案'" ref="deveope" :only-read="onlyRead" :is-search="isSearch" :form-content="deveopData" @save="updateForm" @del="deleteForm" />
<eyesVision v-if="name === '双眼视功能检查报告单'" ref="eyes" :only-read="onlyRead" :patient-id="patientId" :is-search="isSearch" :form-content="eyesData" @save="updateForm" @del="deleteForm"/>
<optometryForm v-if="name === '验光报告单'" ref="optome" :only-read="onlyRead" :patient-id="patientId" :is-search="isSearch" :form-content="optomeData" @save="updateForm" @del="deleteForm" />
<threeVision v-if="name === '三级视功能检查报告单'" ref="three" :only-read="onlyRead" :patient-id="patientId" :is-search="isSearch" :form-content="threeData" @save="updateForm" @del="deleteForm" />
<deveopmentFile v-show="name === '屈光发育档案'" ref="deveope" :only-read="onlyRead" :patient-id="patientId" :is-search="isSearch" :form-content="deveopData" @save="updateForm" @del="deleteForm" />
</div>
</div>
</div>
</template>
<script>
import { dateFilterTwo } from '@/filters/index.js'
import ourPatientRecord from './outPatientRecord'
const Base64 = require('js-base64').Base64
import eyesVision from '@/components/360View/commonForm/eyesVision' //
import threeVision from '@/components/360View/commonForm/threeVision' //
import optometryForm from '@/components/360View/commonForm/optometryForm' //
@ -160,23 +158,25 @@ export default {
addRecord(index, name) {
this.saveTableData(name)
},
//
async saveTableData(name) {
const date = dateFilterTwo(this.$moment().format('L'))
const date = this.$moment().format('YYYY-MM-DD HH:mm:ss')
const params = {
flag: 6,
name: name,
createTime: date + ' 00:00:00',
createTime: date,
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()
this.getFormList(1)
} else {
this.$message.error(res.msg)
}
},
//
async updateForm(data) {
const params = {
flag: 6,
@ -201,12 +201,12 @@ export default {
const { data: res } = await this.$http.post('/case/delete', params)
if (res.code === 0) {
this.$message.success('删除成功')
this.getFormList()
this.getFormList(1)
} else {
this.$message.error(res.msg)
}
},
async getFormList() {
async getFormList(type) {
const { data: res } = await this.$http.get('/patient/view/getCases', {
params: {
patientId: this.patientId,
@ -216,9 +216,15 @@ export default {
})
if (res.code === 0) {
this.formList = res.data || []
this.curIndex = 0
this.id = this.formList.length ? this.formList[0].id : ''
this.name = this.formList.length ? this.formList[0].name : ''
if (this.name === '') {
this.id = this.formList.length ? this.formList[0].id : ''
this.name = this.formList.length ? this.formList[0].name : ''
}
if (type && type === 1) {
this.curIndex = 0
this.id = this.formList.length ? this.formList[0].id : ''
this.name = this.formList.length ? this.formList[0].name : ''
}
} else {
this.$message.error(res.msg)
}

2
src/components/360View/overView/index.vue

@ -29,7 +29,7 @@
<span>{{ item.zlyj }}</span>
</p>
</div>
<div>
<div style="margin-right: 32px">
<p class="info">
<span class="mr16">处置:</span>
</p>

5
src/components/360View/routine/index.vue

@ -262,6 +262,11 @@ export default {
this.odStatus = res.data.sejue.length ? res.data.sejue[1].eyeStatus : ''
this.shiliLast = res.data.shiliLast || []
this.yanyaLast = res.data.yanyaLast || []
if (this.shiliLast.length) {
window.localStorage.setItem('shili', JSON.stringify(res.data.shiliLast))
} else {
window.localStorage.setItem('shili', [])
}
} else {
this.routineData = {}
this.$message.error(res.msg)

9
src/components/360View/show-file.vue

@ -5,7 +5,7 @@
</div>
<iframe v-if="fileType == 'PDF'" :src="pdfUrl + '#view=FitH,top&pagemode=thumbs'" frameborder="0" style="width: 100%; height: 100%"></iframe>
<div v-if="fileType == 'DCM'" class="dicom" ref="dicomElement"></div>
<div v-if="fileType == 'JPG'" style="width: 100%;height: 100%" class="dicom" ref="dicomElement"></div>
<div v-if="fileType == 'JPG'" style="width: 100%;height: 100%" class="dicom" ref="dicomElement"></div>
<!-- <iframe v-if="curFile.fileType == 'PDF'" :src="curFile.filePath + '#view=FitH,top&pagemode=thumbs'" frameborder="0" style="width: 100%; height: 100%" />-->
<!-- <div v-if="curFile.fileType == 'DCM'" ref="dicomElement" class="dicom" />-->
<!-- <div v-if="curFile.fileType == 'JPG' || curFile.fileType == 'PNG'" ref="imgElement" class="dicom" />-->
@ -215,26 +215,27 @@ export default {
this.renderTime = contextData.renderTimeInMs.toFixed(2)
if (dcmaxTools && dcmaxTools.data && dcmaxTools.data.length) {
this.curIndex = dcmaxTools.data[0].currentImageIdIndex + 1
console.log(this.curIndex)
}
console.log(viewport,dcmaxTools)
},
initData() {
if (this.instanceList.length === 1 && this.fileType === 'DCM') {
this.curElement = this.$refs.imgElement
const imageUrl = this.instanceList[0].imageId
this.drawCornerStone(imageUrl, 'DCM')
this.handleResize()
} else if (this.instanceList.length === 1 && (this.fileType === 'JPG' || this.fileType === 'PNG')) {
this.curElement = this.$refs.imgElement
const imageUrl = this.instanceList[0].imageId
this.drawCornerStone(imageUrl, 'JPG')
this.handleResize()
} else if (this.instanceList.length > 1 && (this.fileType === 'JPG' || this.fileType === 'PNG')) {
this.curElement = this.$refs.imgElement
this.childrenList = this.instanceList
this.setScroll()
this.handleResize()
} else if (this.instanceList.length > 1 && this.fileType === 'DCM') {
console.log('序列', this.instanceList)
this.curElement = this.$refs.dicomElement
this.childrenList = this.instanceList
this.setScroll()
this.handleResize()

34
src/components/360View/special/index.vue

@ -1,8 +1,10 @@
<template>
<div class="specialBox">
<div class="examineBox">
<i class="el-icon-refresh refresh" @click="getSpecialItem"></i>
<el-table
:data="tableData"
@row-click="handleData"
style="width: 100%;margin-top: 16px"
>
<el-table-column
@ -21,20 +23,21 @@
width="200"
>
<template slot-scope="scope">
<el-button type="text" size="small" @click.native.prevent="handleRecord(scope.row)">
<el-button type="text" size="small" @click.native.stop="handleRecord(scope.row)">
当次报告
</el-button>
<el-button type="text" size="small" @click.native.prevent="handleRecord(scope.row)">
<el-button type="text" size="small" @click.native.stop="handleRecord(scope.row)">
所有报告
</el-button>
<el-button type="text" size="small" @click.native.prevent="handleData(scope.row)">
提取数据
</el-button>
<!-- <el-button type="text" size="small" @click.native.prevent="handleData(scope.row)">-->
<!-- 提取数据-->
<!-- </el-button>-->
</template>
</el-table-column>
</el-table>
</div>
<div class="examineData">
<i class="el-icon-refresh refresh-r" @click="getSpecialItem"></i>
<div style="display: flex;justify-content: space-between">
<span style="font-size: 16px;font-weight: 500;color: rgba(0, 0, 0, 0.88);margin-top: 4px">提取数据</span>
<div v-if="!onlyRead" size="small" style="display:inline-block;margin-left:10px;width: 32px;height: 32px;line-height:32px;text-align:center;background-color: #1e79ff;border-radius: 4px;vertical-align: middle" @click="addDataList">
@ -183,6 +186,7 @@ export default {
},
//
handleData(item) {
console.log(187,item)
this.examNo = item.examNo
this.examineItem = item.examineItem
this.getItemData()
@ -213,12 +217,32 @@ export default {
.examineBox{
height: 100%;
overflow: auto;
position: relative;
.refresh{
position: absolute;
right: 20px;
top: 35px;
z-index: 999;
cursor: pointer;
color: #409EFF;
}
}
.examineData{
padding: 16px 0 0 16px;
height: 100%;
overflow: auto;
box-sizing: border-box;
position: relative;
.refresh-r{
position: absolute;
left: 90px;
top: 25px;
z-index: 999;
cursor: pointer;
color: #409EFF;
}
}
.header{
width: 100%;

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

@ -8,6 +8,7 @@
style="width:100%;margin: 8px 8px 0 0"
>
<el-table-column
width="70"
align="center"
type="index"
label="序号"

7
src/components/360View/time-line.vue

@ -47,7 +47,7 @@
</div>
</el-scrollbar>
</div>
<div v-else class="empty"></div>
<div v-else class="empty">暂无数据</div>
</div>
</template>
@ -110,6 +110,9 @@ $borderColor: #424242;
$paddingRight: 0px;
.empty {
color: #000;
width: 100%;
margin-top: 30px;
text-align: center;
}
.time-line {
margin: 0;
@ -287,7 +290,7 @@ $paddingRight: 0px;
padding-left: 15px;
letter-spacing: .2em;
border-radius: 3px;
font-size: 14px;
font-size: 16px;
.svg-icon {
margin-right: 8px;
}

12
src/components/bread-crumb/index.vue

@ -32,8 +32,6 @@ export default {
},
methods: {
getBreadcrumb() {
console.log(this.$route)
console.log(this.$route.matched)
const matched = this.$route.matched
// seeDoctor
if (this.$route.name === 'templateManagement') {
@ -41,17 +39,11 @@ export default {
}
matched.forEach((item, i) => {
if (item.meta.title === '首页' && item.redirect && item.redirect.name) {
console.log(this.userData)
// const positionName = this.userData.positionList.length > 0 ? this.userData.positionList[0].positionName : ''
item.name = 'patientManagement'
// item.name = positionName.includes('') ? 'patientManagement' : 'outpatientManagement'
// item.path = positionName.includes('') ? '/patientManagement' : '/outpatientManagement'
item.path = '/patientManagement'
item.name = 'outpatientManagement'
item.path = '/outpatientManagement-call'
item.meta.title = '首页'
}
})
// console.log(matched)
this.breadList = matched
},
breadcrumbClick(item) {

3
src/page-subspecialty/router/index.js

@ -2,7 +2,6 @@ import Vue from 'vue'
import Router from 'vue-router'
import http from '../utils/request'
import { isURL } from '@/utils/validate'
import Cookies from 'js-cookie'
Vue.use(Router)
@ -57,7 +56,7 @@ export const moduleRoutes = {
path: '/outpatientManagement',
component: () => import('@/page-subspecialty/views/modules/outpatientManagement/call'),
name: 'outpatientManagement',
meta: { title: '分诊管理', isTab: true }
meta: { title: '日常出诊', isTab: true }
},
// ok镜
{

5
src/page-subspecialty/views/main-sidebar.vue

@ -66,11 +66,10 @@ export default {
},
methods: {
exportclick(e) {
console.log(e)
this.$message('暂时没有操作手册可下载')
return
const docxsrc = this.drgsName === '青光眼' ? '../../../static/word/operation-manual-QGY.docx' : '../../../static/word/operation-manual-YSG.docx' //
const docxname = this.drgsName === '青光眼' ? '亚专科青光眼操作手册' : '亚专科眼视光操作手册'//
const docxsrc = '../../../static/word/operation-manual-YSG.docx' //
const docxname = '眼科电子病历操作手册'//
//
JSZipUtils.getBinaryContent(docxsrc, function(error, content) {
// docxsrc

13
src/page-subspecialty/views/modules/optometryManagement/cornea/patient-add-or-update.vue

@ -6,22 +6,19 @@
:title="dataForm.title"
>
<el-form ref="dataForm" :model="dataForm" :rules="dataRule">
<el-form-item v-if="dataForm.drgsName == '眼视光'" label="病历号:" label-width="90px" prop="patId" class="formItemOne">
<el-form-item label="登记号:" label-width="120px" prop="patId" class="formItemOne">
<el-input v-model="dataForm.patId" placeholder="请输入病历号" />
</el-form-item>
<el-form-item v-if="dataForm.drgsName == '青光眼'" label="患者ID:" label-width="90px" prop="patId" class="formItemOne">
<el-input v-model="dataForm.patId" placeholder="请输入患者ID" />
</el-form-item>
<el-form-item label="患者姓名:" label-width="90px" prop="patName">
<el-form-item label="患者姓名:" label-width="120px" prop="patName">
<el-input v-model="dataForm.patName" placeholder="请输入姓名" />
</el-form-item>
<el-form-item v-if="!dataForm.id" label="身份证号:" label-width="90px" prop="patIdNumber">
<el-form-item v-if="!dataForm.id" label="身份证号:" label-width="120px" prop="patIdNumber">
<el-input v-model="dataForm.patIdNumber" placeholder="请输入身份证号 " />
</el-form-item>
<el-form-item label="联系电话:" label-width="90px" prop="patPhone">
<el-form-item label="联系电话:" label-width="120px" prop="patPhone">
<el-input v-model="dataForm.patPhone" placeholder="请输入手机号" />
</el-form-item>
<el-form-item label="家庭地址:" label-width="90px" prop="patAddress">
<el-form-item label="家庭地址:" label-width="120px" prop="patAddress">
<el-input v-model="dataForm.patAddress" placeholder="请输入地址" />
</el-form-item>
<!-- <el-form-item v-if="dataForm.drgsName == '眼视光'" label="患者类别:" label-width="90px" prop="patType">

7
src/page-subspecialty/views/modules/optometryManagement/dioptric/index.vue

@ -319,7 +319,7 @@ export default {
}
.patient-info-head {
margin-bottom: 10px;
padding: 10px 16px;
padding: 10px;
}
.operation-delete,
.operation-details {
@ -336,11 +336,6 @@ export default {
}
.el-form-item {
display: flex;
}
.el-form-item__label {
min-width: 75px;
}
.el-form-item {
margin-bottom: 0;
width: 25%;
}

36
src/page-subspecialty/views/modules/optometryManagement/dioptric/patient-add-or-update.vue

@ -7,43 +7,43 @@
@close="closeDialog"
>
<el-form ref="dataForm" :model="dataForm" :rules="dataRule">
<el-form-item label="病历号:" label-width="90px" prop="patientId" class="formItemOne">
<el-form-item label="病历号:" label-width="120px" prop="patientId" class="formItemOne">
<el-input v-model="dataForm.patientId" placeholder="请输入病历号" />
</el-form-item>
<el-form-item label="患者姓名:" label-width="90px" prop="patientName">
<el-form-item label="患者姓名:" label-width="120px" prop="patientName">
<el-input v-model="dataForm.patientName" placeholder="请输入姓名" />
</el-form-item>
<el-form-item label="身份证号:" label-width="90px" prop="patientIdNumber">
<el-form-item label="身份证号:" label-width="120px" prop="patientIdNumber">
<el-input v-model="dataForm.patientIdNumber" placeholder="请输入身份证号 " />
</el-form-item>
<el-form-item label="出生日期:" label-width="90px" prop="patientBirthday">
<el-form-item label="出生日期:" label-width="120px" prop="patientBirthday">
<el-date-picker
v-model="dataForm.patientBirthday"
align="right"
type="date"
placeholder="选择日期"
value-format="yyyy-MM-dd"
v-model="dataForm.patientBirthday"
align="right"
type="date"
placeholder="选择日期"
value-format="yyyy-MM-dd"
/>
</el-form-item>
<el-form-item label="性别:" label-width="90px" prop="gender">
<el-form-item label="性别:" label-width="120px" prop="gender">
<el-radio-group v-model="dataForm.patientSex" size="medium">
<el-radio-button label="男"></el-radio-button>
<el-radio-button label="女"></el-radio-button>
<el-radio-button label="保密">保密</el-radio-button>
</el-radio-group>
</el-form-item>
<el-form-item label="联系电话:" label-width="90px" prop="patientPhone">
<el-form-item label="联系电话:" label-width="120px" prop="patientPhone">
<el-input v-model="dataForm.patientPhone" placeholder="请输入手机号" />
</el-form-item>
<el-form-item label="家庭地址:" label-width="90px" prop="patientAddress">
<el-form-item label="家庭地址:" label-width="120px" prop="patientAddress">
<el-input v-model="dataForm.patientAddress" placeholder="请输入地址" />
</el-form-item>
<!-- <el-form-item label="随访方案:" label-width="90px" prop="visitId">-->
<!-- <el-select v-model="dataForm.visitId" placeholder="请选择随访方案">-->
<!-- <el-option v-for="item in visitList" :key="item.id" :label="item.name" :value="item.id" />-->
<!-- </el-select>-->
<!-- </el-form-item>-->
<el-form-item label="备注:" label-width="90px" prop="remarks">
<!-- <el-form-item label="随访方案:" label-width="90px" prop="visitId">-->
<!-- <el-select v-model="dataForm.visitId" placeholder="请选择随访方案">-->
<!-- <el-option v-for="item in visitList" :key="item.id" :label="item.name" :value="item.id" />-->
<!-- </el-select>-->
<!-- </el-form-item>-->
<el-form-item label="备注:" label-width="120px" prop="remarks">
<el-input v-model="dataForm.remark" type="textarea" />
</el-form-item>
</el-form>

79
src/page-subspecialty/views/modules/outpatientManagement/call/index.vue

@ -3,7 +3,7 @@
<div class="patient-info">
<div v-if="!detailViewVisible" style="height: 100%">
<div class="patient-info-head">
<el-form :inline="true" :model="dataForm" class="demo-form-inline" @keyup.enter.native="getDataListInitial()">
<el-form :inline="true" :model="dataForm" @keyup.enter.native="getDataListInitial()">
<el-form-item label="登记号:">
<el-input v-model="dataForm.patientId" size="small" clearable placeholder="登记号" @clear="getDataListInitial()" />
</el-form-item>
@ -186,11 +186,8 @@ export default {
patientStatus: '',
patientIdNumber: ''
},
doctorNameList: [],
currentTableList: [],
patientId: '',
patientIdNumber: '',
detailId: ''
patientIdNumber: ''
}
},
filters: {
@ -232,37 +229,11 @@ export default {
default:
return val
}
},
},
watch: {
$route(val) {
//
this.isShowPatient = !(val.matched.length > 2)
}
},
created() {
this.isShowPatient = !(this.$route.matched.length > 2)
// this.getDoctorName()
// this.gettPatType()
},
methods: {
//
browseClick(scopeRow) {
window.sessionStorage.removeItem('itemCurrentIndex')
window.sessionStorage.removeItem('itemListIndex')
this.$router.push({
path: '/seeDoctor',
query: {
info: this.$Base64.encode(JSON.stringify({
patientIdNumber: scopeRow.patientIdNumber,
patientCentreId: scopeRow.patientCentreId,
title: '门诊'
// crfId: scopeRow.crfId,
// patientId: scopeRow.patientId
}))
}
})
},
//
dateChange(e) {
this.dataForm.beginDate = e ? e[0] : ''
@ -276,23 +247,16 @@ export default {
},
//
showDetail(scopeRow, index) {
console.log(scopeRow)
this.onlyRead = index !== 1
this.detailViewVisible = true
this.patientId = scopeRow.patientId
this.patientIdNumber = scopeRow.patientIdNumber
this.patientId = '797064'
// this.patientId = '797064'
this.$nextTick(() => {
// // id--
this.$refs.viewRef.getPatientData()
// // --
this.$refs.viewRef.getTimeAxisData()
// // tab
// this.$refs.viewRef.visible = true
// this.$refs.viewRef.drawer = true
// this.$refs.viewRef.isActive = 1
// this.$refs.viewRef.init()
// this.$refs.viewRef.setIndex()
})
},
// His
@ -302,20 +266,6 @@ export default {
this.$refs.HisAddRef.init()
})
},
//
async getDoctorName() {
const { data: res } = await this.$http.get('/pat/Manage/selectDoctorName', {
params: {
drgsName: window.localStorage.getItem('identity')
}
})
if (res.code === 0) {
this.doctorNameList = res.data
} else {
this.$message.error(res.msg)
}
}
}
}
</script>
@ -336,7 +286,7 @@ export default {
}
.patient-info-head {
margin-bottom: 10px;
padding: 10px 16px;
padding: 10px;
}
.operation-delete,
.operation-details {
@ -351,27 +301,16 @@ export default {
display: flex;
justify-content: space-between;
}
.el-form-item__content,
.el-select,
.el-range-editor--small.el-input__inner {
width: 100%;
}
.el-form-item {
display: flex;
}
.el-form-item__label {
min-width: 75px;
}
.el-form-item {
margin-bottom: 0;
width: 25%;
}
.el-form-item__content,
.el-select,
.el-range-editor--small.el-input__inner {
width: 100%;
}
.form-item-date .el-form-item__content {
min-width: 180px;
}
}
.el-select {
width: 100%;
}
}
</style>

16
src/page-subspecialty/views/modules/outpatientManagement/call/patient-add-or-update.vue

@ -7,16 +7,16 @@
@close="closeDialog"
>
<el-form ref="dataForm" :model="dataForm" :rules="dataRule">
<el-form-item label="病历号:" label-width="90px" prop="patientId" class="formItemOne">
<el-form-item label="病历号:" label-width="120px" prop="patientId" class="formItemOne">
<el-input v-model="dataForm.patientId" placeholder="请输入病历号" />
</el-form-item>
<el-form-item label="患者姓名:" label-width="90px" prop="patientName">
<el-form-item label="患者姓名:" label-width="120px" prop="patientName">
<el-input v-model="dataForm.patientName" placeholder="请输入姓名" />
</el-form-item>
<el-form-item label="身份证号:" label-width="90px" prop="patientIdNumber">
<el-form-item label="身份证号:" label-width="120px" prop="patientIdNumber">
<el-input v-model="dataForm.patientIdNumber" placeholder="请输入身份证号 " />
</el-form-item>
<el-form-item label="出生日期:" label-width="90px" prop="patientBirthday">
<el-form-item label="出生日期:" label-width="120px" prop="patientBirthday">
<el-date-picker
v-model="dataForm.patientBirthday"
align="right"
@ -25,17 +25,17 @@
value-format="yyyy-MM-dd"
/>
</el-form-item>
<el-form-item label="性别:" label-width="90px" prop="gender">
<el-form-item label="性别:" label-width="120px" prop="gender">
<el-radio-group v-model="dataForm.patientSex" size="medium">
<el-radio-button label="男"></el-radio-button>
<el-radio-button label="女"></el-radio-button>
<el-radio-button label="保密">保密</el-radio-button>
</el-radio-group>
</el-form-item>
<el-form-item label="联系电话:" label-width="90px" prop="patientPhone">
<el-form-item label="联系电话:" label-width="120px" prop="patientPhone">
<el-input v-model="dataForm.patientPhone" placeholder="请输入手机号" />
</el-form-item>
<el-form-item label="家庭地址:" label-width="90px" prop="patientAddress">
<el-form-item label="家庭地址:" label-width="120px" prop="patientAddress">
<el-input v-model="dataForm.patientAddress" placeholder="请输入地址" />
</el-form-item>
<!-- <el-form-item label="随访方案:" label-width="90px" prop="visitId">-->
@ -43,7 +43,7 @@
<!-- <el-option v-for="item in visitList" :key="item.id" :label="item.name" :value="item.id" />-->
<!-- </el-select>-->
<!-- </el-form-item>-->
<el-form-item label="备注:" label-width="90px" prop="remarks">
<el-form-item label="备注:" label-width="120px" prop="remarks">
<el-input v-model="dataForm.remark" type="textarea" />
</el-form-item>
</el-form>

64
src/page-subspecialty/views/modules/outpatientManagement/treat/index.vue

@ -113,7 +113,7 @@
<!-- HIS引入弹框 -->
<his-add v-if="HisAddVisible" ref="HisAddRef" :is-search="'2'" />
<!-- 详情页 -->
<detail-view v-if="detailViewVisible" :only-read="onlyRead" :id="detailId" ref="viewRef" :is-search="'2'" :patient-id="patientId" :patient-id-number="patientIdNumber" @detailViewVisible="detailViewVisible=false" />
<detail-view v-if="detailViewVisible" :only-read="onlyRead" ref="viewRef" :is-search="'2'" :patient-id="patientId" :patient-id-number="patientIdNumber" @detailViewVisible="detailViewVisible=false" />
</div>
</template>
<script>
@ -228,12 +228,8 @@ export default {
patientStatus: '',
patientIdNumber: ''
},
doctorNameList: [],
currentTableList: [],
time: '',
patientId: '',
patientIdNumber: '',
detailId: ''
patientIdNumber: ''
}
},
watch: {
@ -244,27 +240,8 @@ export default {
},
created() {
this.isShowPatient = !(this.$route.matched.length > 2)
// this.getDoctorName()
// this.gettPatType()
},
methods: {
//
browseClick(scopeRow) {
window.sessionStorage.removeItem('itemCurrentIndex')
window.sessionStorage.removeItem('itemListIndex')
this.$router.push({
path: '/seeDoctor',
query: {
info: this.$Base64.encode(JSON.stringify({
patientIdNumber: scopeRow.patientIdNumber,
patientCentreId: scopeRow.patientCentreId,
title: '门诊'
// crfId: scopeRow.crfId,
// patientId: scopeRow.patientId
}))
}
})
},
//
dateChange(e) {
this.dataForm.beginDate = e ? e[0] : ''
@ -297,20 +274,6 @@ export default {
this.$refs.HisAddRef.init()
})
},
//
async getDoctorName() {
const { data: res } = await this.$http.get('/pat/Manage/selectDoctorName', {
params: {
drgsName: window.localStorage.getItem('identity')
}
})
if (res.code === 0) {
this.doctorNameList = res.data
} else {
this.$message.error(res.msg)
}
}
}
}
</script>
@ -331,7 +294,7 @@ export default {
}
.patient-info-head {
margin-bottom: 10px;
padding: 10px 16px;
padding: 10px;
}
.operation-delete,
.operation-details {
@ -346,27 +309,16 @@ export default {
display: flex;
justify-content: space-between;
}
.el-form-item {
display: flex;
}
.el-form-item__label {
min-width: 75px;
}
.el-form-item {
margin-bottom: 0;
width: 25%;
}
.el-form-item__content,
.el-select,
.el-range-editor--small.el-input__inner {
width: 100%;
}
.form-item-date .el-form-item__content {
min-width: 180px;
}
}
.el-select {
width: 100%;
.el-form-item {
display: flex;
margin-bottom: 0;
width: 25%;
}
}
}
</style>

20
src/page-subspecialty/views/modules/outpatientManagement/treat/patient-add-or-update.vue

@ -7,16 +7,16 @@
@close="closeDialog"
>
<el-form ref="dataForm" :model="dataForm" :rules="dataRule">
<el-form-item label="病历号:" label-width="90px" prop="patientId" class="formItemOne">
<el-form-item label="病历号:" label-width="120px" prop="patientId" class="formItemOne">
<el-input v-model="dataForm.patientId" placeholder="请输入病历号" />
</el-form-item>
<el-form-item label="患者姓名:" label-width="90px" prop="patientName">
<el-form-item label="患者姓名:" label-width="120px" prop="patientName">
<el-input v-model="dataForm.patientName" placeholder="请输入姓名" />
</el-form-item>
<el-form-item label="身份证号:" label-width="90px" prop="patientIdNumber">
<el-form-item label="身份证号:" label-width="120px" prop="patientIdNumber">
<el-input v-model="dataForm.patientIdNumber" placeholder="请输入身份证号 " />
</el-form-item>
<el-form-item label="出生日期:" label-width="90px" prop="patientBirthday">
<el-form-item label="出生日期:" label-width="120px" prop="patientBirthday">
<el-date-picker
v-model="dataForm.patientBirthday"
align="right"
@ -25,17 +25,17 @@
value-format="yyyy-MM-dd"
/>
</el-form-item>
<el-form-item label="性别:" label-width="90px" prop="gender">
<el-form-item label="性别:" label-width="120px" prop="gender">
<el-radio-group v-model="dataForm.patientSex" size="medium">
<el-radio-button label="男"></el-radio-button>
<el-radio-button label="女"></el-radio-button>
<el-radio-button label="保密">保密</el-radio-button>
</el-radio-group>
</el-form-item>
<el-form-item label="联系电话:" label-width="90px" prop="patientPhone">
<el-form-item label="联系电话:" label-width="120px" prop="patientPhone">
<el-input v-model="dataForm.patientPhone" placeholder="请输入手机号" />
</el-form-item>
<el-form-item label="家庭地址:" label-width="90px" prop="patientAddress">
<el-form-item label="家庭地址:" label-width="120px" prop="patientAddress">
<el-input v-model="dataForm.patientAddress" placeholder="请输入地址" />
</el-form-item>
<!-- <el-form-item label="随访方案:" label-width="90px" prop="visitId">-->
@ -43,7 +43,7 @@
<!-- <el-option v-for="item in visitList" :key="item.id" :label="item.name" :value="item.id" />-->
<!-- </el-select>-->
<!-- </el-form-item>-->
<el-form-item label="备注:" label-width="90px" prop="remarks">
<el-form-item label="备注:" label-width="120px" prop="remarks">
<el-input v-model="dataForm.remark" type="textarea" />
</el-form-item>
</el-form>
@ -142,7 +142,6 @@ export default {
this.dataForm = { ...this.dataForm, ...this.params }
this.dataForm.revisitCycles = this.dataForm.revisitCycles ? this.dataForm.revisitCycles : '1'
this.dataForm.revisitCyclesUnit = this.dataForm.revisitCyclesUnit ? this.dataForm.revisitCyclesUnit : '3'
console.log(this.dataForm)
},
// 访
async getVisitList() {
@ -155,9 +154,6 @@ export default {
},
//
dataFormSubmitHandle: debounce(function() {
if (this.dataForm.title === 'HIS引入') {
// this.$parent.HisAddVisible = false
}
this.$refs.dataForm.validate((valid) => {
if (!valid) {
return false

3
src/page-subspecialty/views/modules/scientificManagement/index.vue

@ -0,0 +1,3 @@
<template>
<router-view />
</template>

0
src/page-subspecialty/views/modules/pretest/_mixin.js → src/page-subspecialty/views/modules/scientificManagement/pretest/_mixin.js

0
src/page-subspecialty/views/modules/pretest/add-or-update.vue → src/page-subspecialty/views/modules/scientificManagement/pretest/add-or-update.vue

0
src/page-subspecialty/views/modules/pretest/apply.vue → src/page-subspecialty/views/modules/scientificManagement/pretest/apply.vue

0
src/page-subspecialty/views/modules/pretest/index.vue → src/page-subspecialty/views/modules/scientificManagement/pretest/index.vue

0
src/page-subspecialty/views/modules/pretest/review.vue → src/page-subspecialty/views/modules/scientificManagement/pretest/review.vue

0
src/page-subspecialty/views/modules/search/index.vue → src/page-subspecialty/views/modules/scientificManagement/search/index.vue

0
src/page-subspecialty/views/modules/sys/depart-add-or-update.vue → src/page-subspecialty/views/modules/scientificManagement/sys/depart-add-or-update.vue

0
src/page-subspecialty/views/modules/sys/depart.vue → src/page-subspecialty/views/modules/scientificManagement/sys/depart.vue

0
src/page-subspecialty/views/modules/sys/index.vue → src/page-subspecialty/views/modules/scientificManagement/sys/index.vue

0
src/page-subspecialty/views/modules/sys/log-error.vue → src/page-subspecialty/views/modules/scientificManagement/sys/log-error.vue

0
src/page-subspecialty/views/modules/sys/log-login.vue → src/page-subspecialty/views/modules/scientificManagement/sys/log-login.vue

0
src/page-subspecialty/views/modules/sys/log-operation.vue → src/page-subspecialty/views/modules/scientificManagement/sys/log-operation.vue

0
src/page-subspecialty/views/modules/sys/menu-dept-add-or-update.vue → src/page-subspecialty/views/modules/scientificManagement/sys/menu-dept-add-or-update.vue

0
src/page-subspecialty/views/modules/sys/menu-dept.vue → src/page-subspecialty/views/modules/scientificManagement/sys/menu-dept.vue

0
src/page-subspecialty/views/modules/sys/menu-project-add-or-update.vue → src/page-subspecialty/views/modules/scientificManagement/sys/menu-project-add-or-update.vue

0
src/page-subspecialty/views/modules/sys/menu-project.vue → src/page-subspecialty/views/modules/scientificManagement/sys/menu-project.vue

0
src/page-subspecialty/views/modules/sys/project-add-or-update.vue → src/page-subspecialty/views/modules/scientificManagement/sys/project-add-or-update.vue

0
src/page-subspecialty/views/modules/sys/project-review.vue → src/page-subspecialty/views/modules/scientificManagement/sys/project-review.vue

0
src/page-subspecialty/views/modules/sys/project.vue → src/page-subspecialty/views/modules/scientificManagement/sys/project.vue

0
src/page-subspecialty/views/modules/sys/role-add-or-update.vue → src/page-subspecialty/views/modules/scientificManagement/sys/role-add-or-update.vue

0
src/page-subspecialty/views/modules/sys/role.vue → src/page-subspecialty/views/modules/scientificManagement/sys/role.vue

0
src/page-subspecialty/views/modules/sys/user-add-or-update.vue → src/page-subspecialty/views/modules/scientificManagement/sys/user-add-or-update.vue

0
src/page-subspecialty/views/modules/sys/user.vue → src/page-subspecialty/views/modules/scientificManagement/sys/user.vue

235
src/page-subspecialty/views/pages/luyin.vue

@ -1,235 +0,0 @@
<template>
<div class="luyin">
<p>录音时长</p>
<div style="margin-top:10px;">
<el-button type="primary" size="small" @click="startRecorder">开始录音</el-button>
<el-button type="primary" size="small" @click="pauseRecorder">暂停录音</el-button>
<el-button type="primary" size="small" @click="endRecorder">停止录音</el-button>
</div>
<div style="margin-top:10px;">
<el-button type="primary" size="small" @click="playRecorder">播放</el-button>
<el-button type="primary" size="small" @click="pausePlayRecorder">暂停播放</el-button>
<el-button type="primary" size="small" @click="resumePlayRecorder">恢复播放</el-button>
</div>
<div style="margin-top:10px;">
<canvas id="canvas" />
<span style="padding: 0 10%;" />
<canvas id="playChart" />
</div>
<div style="margin-top:10px;">
<el-button type="primary" size="small" @click="getMp3Data()">下载MP3</el-button>
</div>
</div>
</template>
<script>
import lamejs from 'lamejs'
export default {
data() {
return {
// -
drawRecordId: null,
oCanvas: null,
ctx: null,
// -
drawPlayId: null,
pCanvas: null,
pCtx: null
}
},
mounted() {
this.startCanvas()
},
methods: {
//
startCanvas() {
//
this.oCanvas = document.getElementById('canvas')
this.ctx = this.oCanvas.getContext('2d')
//
this.pCanvas = document.getElementById('playChart')
this.pCtx = this.pCanvas.getContext('2d')
},
//
startRecorder() {
this.$recorder.start().then(() => {
//
this.drawRecord() //
}, (error) => {
//
console.log(`${error.name} : ${error.message}`)
})
},
//
pauseRecorder() {
this.$recorder.pause()
this.drawRecordId && cancelAnimationFrame(this.drawRecordId)
this.drawRecordId = null
},
//
endRecorder() {
this.$recorder.stop()
this.drawRecordId && cancelAnimationFrame(this.drawRecordId)
this.drawRecordId = null
this.uploadFile()
},
//
async uploadFile() {
const mp3Name = encodeURIComponent('audio_recording_' + new Date().getTime() + '.mp3')
const formData = new FormData()
let file = this.convertToMp3(this.$recorder.getWAV())
file = new File([file], mp3Name)
formData.append('file', file)
formData.append('mp3Name', mp3Name)
const { data: res } = this.$http({
method: 'post',
url: '',
headers: {
'Content-Type': 'multipart/form-data'
},
data: formData
})
console.log(res)
},
//
playRecorder() {
this.$recorder.play()
this.drawPlay() //
},
//
pausePlayRecorder() {
this.$recorder.pausePlay()
},
//
resumePlayRecorder() {
this.$recorder.resumePlay()
this.drawPlay() //
},
// -
drawRecord() {
// requestAnimationFrame60fps
this.drawRecordId = requestAnimationFrame(this.drawRecord)
//
const dataArray = this.$recorder.getRecordAnalyseData()
const bufferLength = dataArray.length
//
this.ctx.fillStyle = 'rgb(255, 255, 255)'
this.ctx.fillRect(0, 0, this.oCanvas.width, this.oCanvas.height)
//
this.ctx.lineWidth = 2
this.ctx.strokeStyle = 'rgb(152, 199, 255)'
this.ctx.beginPath()
var sliceWidth = this.oCanvas.width * 1.0 / bufferLength // bufferLength
var x = 0 // x
for (var i = 0; i < bufferLength; i++) {
var v = dataArray[i] / 128.0
var y = v * this.oCanvas.height / 2
if (i === 0) {
//
this.ctx.moveTo(x, y)
} else {
//
this.ctx.lineTo(x, y)
}
//
x += sliceWidth
}
this.ctx.lineTo(this.oCanvas.width, this.oCanvas.height / 2)
this.ctx.stroke()
},
// -
drawPlay() {
// requestAnimationFrame60fps
this.drawPlayId = requestAnimationFrame(this.drawPlay)
//
const dataArray = this.$recorder.getPlayAnalyseData()
const bufferLength = dataArray.length
//
this.pCtx.fillStyle = 'rgb(255, 255, 255)'
this.pCtx.fillRect(0, 0, this.pCanvas.width, this.pCanvas.height)
//
this.pCtx.lineWidth = 2
this.pCtx.strokeStyle = 'rgb(152, 199, 255)'
this.pCtx.beginPath()
var sliceWidth = this.pCanvas.width * 1.0 / bufferLength // bufferLength
var x = 0 // x
for (var i = 0; i < bufferLength; i++) {
var v = dataArray[i] / 128.0
var y = v * this.pCanvas.height / 2
if (i === 0) {
//
this.pCtx.moveTo(x, y)
} else {
//
this.pCtx.lineTo(x, y)
}
//
x += sliceWidth
}
this.pCtx.lineTo(this.pCanvas.width, this.pCanvas.height / 2)
this.pCtx.stroke()
},
// mp3
getMp3Data() {
const mp3Blob = this.convertToMp3(this.$recorder.getWAV())
this.$recorder.download(mp3Blob, 'recorder', 'mp3')
},
// mp3
convertToMp3(wavDataView) {
// wav
const wav = lamejs.WavHeader.readHeader(wavDataView) // wavconfig
const { channels, sampleRate } = wav
const mp3enc = new lamejs.Mp3Encoder(channels, sampleRate, 128)
//
const result = this.$recorder.getChannelData()
const buffer = []
const leftData = result.left && new Int16Array(result.left.buffer, 0, result.left.byteLength / 2)
const rightData = result.right && new Int16Array(result.right.buffer, 0, result.right.byteLength / 2)
const remaining = leftData.length + (rightData ? rightData.length : 0)
const maxSamples = 1152
for (let i = 0; i < remaining; i += maxSamples) {
const left = leftData.subarray(i, i + maxSamples)
let right = null
let mp3buf = null
if (channels === 2) {
right = rightData.subarray(i, i + maxSamples)
mp3buf = mp3enc.encodeBuffer(left, right)
} else {
mp3buf = mp3enc.encodeBuffer(left)
}
if (mp3buf.length > 0) {
buffer.push(mp3buf)
}
}
const enc = mp3enc.flush()
if (enc.length > 0) {
buffer.push(enc)
}
return new Blob(buffer, { type: 'audio/mp3' })
}
}
}
</script>

81
src/page-subspecialty/views/pages/transfer.vue

@ -1,81 +0,0 @@
<template>
<div />
</template>
<script>
import Cookies from 'js-cookie'
export default {
data() {
return {
returnParam: {},
currentUser: {},
patientInfo: {}
}
},
created() {
var searchHref = decodeURIComponent(window.location.search).replace('?', '')
console.log(searchHref)
var params = searchHref.split('&')
params.forEach(param => {
var paramSplit = param.split('=')
this.returnParam[paramSplit[0]] = paramSplit[1]
})
console.log(this.returnParam)
if (this.returnParam.doctorId) {
this.noPasswordLogin()
}
},
methods: {
noPasswordLogin() {
// https://quguang.huimu.cloud/transfer?patientIdNumber=140108201204070077&doctorId=liucan&hisToken=123456
this.$http.post('/noPasswordLogin', {
doctorId: this.returnParam.doctorId,
hisToken: this.returnParam.hisToken
}).then(({ data: res }) => {
if (res.code !== 0) {
// this.getCaptcha()
return this.$message.error(res.msg)
}
this.currentUser = res.data.currentUser
Cookies.set('xa-token', res.data.token)
window.localStorage.setItem('qg-userData', JSON.stringify(res.data.currentUser))
this.getHisPatientInfo()
}).catch(() => { })
},
// HIS
getHisPatientInfo() {
this.$http.get(`/patient/manage/getHisPatientInfo/${this.returnParam.patientIdNumber}`).then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg)
}
this.patientInfo = res.data
this.savePatientInfo()
}).catch(() => {})
},
async savePatientInfo() {
const { data: res } = await this.$http.post('/patient/manage', this.patientInfo)
if (res.code !== 0) {
return this.$message.error(res.msg)
}
this.$router.push({
path: '/seeDoctor',
query: {
info: this.$Base64.encode(JSON.stringify({
patientIdNumber: this.returnParam.patientIdNumber,
patientCentreId: this.currentUser.centreId,
doctorId: this.returnParam.doctorId,
title: this.currentUser.position === '医生' ? '门诊' : '分诊'
}))
}
})
const findMenuListInterval = setInterval(() => {
const menuList = window.SITE_CONFIG['menuList']
menuList.length > 0 ? clearInterval(findMenuListInterval) : ''
//
window.SITE_CONFIG.menuList.length > 0 ? this.$store.commit('activeIndexFun', res.data[0].id) : ''
}, 500)
}
}
}
</script>
Loading…
Cancel
Save