bianyaqi 2 years ago
parent
commit
1e9d9f20a6
  1. 2
      src/components/360View/commonForm/eyesVision.vue
  2. 1107
      src/components/360View/commonForm/optometryForm-copy.vue
  3. 607
      src/components/360View/commonForm/optometryForm.vue
  4. 42
      src/components/360View/commonForm/threeVision.vue
  5. 255
      src/components/360View/index.vue
  6. 634
      src/components/360View/index1.vue
  7. 2
      src/components/360View/opticalFile/index.vue
  8. 2
      src/components/360View/special/index.vue
  9. 164
      src/components/item-select/index.vue
  10. 10
      src/components/patient-search/index.vue
  11. 2
      src/i18n/zh-CN.js
  12. 8
      src/page-subspecialty/router/index.js
  13. 2
      src/page-subspecialty/views/main-navbar.vue
  14. 2
      src/page-subspecialty/views/modules/nurseManagement/reservation/subList/index.vue
  15. 6
      src/page-subspecialty/views/modules/optometryManagement/dioptric/index.vue
  16. 2
      src/page-subspecialty/views/modules/outpatientManagement/call/index.vue
  17. 10
      src/page-subspecialty/views/modules/outpatientManagement/treat/index.vue
  18. 14
      src/page-subspecialty/views/modules/scientificManagement/search/index.vue
  19. 50
      src/page-subspecialty/views/modules/scientificManagement/sys/project.vue
  20. 2
      src/page-subspecialty/views/modules/systemManagement/team/edit-password.vue
  21. 2
      src/page-subspecialty/views/modules/systemManagement/team/index.vue
  22. 2
      src/page-subspecialty/views/pages/login.vue
  23. 56
      src/page-subspecialty/views/pages/subjectManage/index.vue

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

@ -832,7 +832,7 @@ export default {
methods: {
//
setSign() {
const userData = window.sessionStorage.getItem('qg-userData')
const userData = JSON.parse(window.sessionStorage.getItem('qg-userData'))
const date = this.$moment().format('YYYY-MM-DD')
const mzName = window.sessionStorage.getItem('mzDoctorName')
this.formData.ygsSign = userData.signImgBase

1107
src/components/360View/commonForm/optometryForm-copy.vue

File diff suppressed because it is too large

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

@ -1,9 +1,21 @@
<template>
<div id="operation-record" style=" background: #fff; padding: 10px 20px 50px 20px;page-break-after:always">
<div v-if="!onlyRead" class="btnBox">
<el-button v-print="print" size="small">打印</el-button>
<el-button type="primary" size="small" @click="handleSaveTable">保存</el-button>
<el-button type="danger" size="small" @click="handleDelete">删除</el-button>
<div v-if="!onlyRead && isPlatform" style="display: flex;justify-content: space-between">
<div>
<el-switch
v-model="connectFlag"
disabled
active-color="#13ce66"
inactive-color="#ff4949"
active-text="已连接"
inactive-text="已断开"
/>
</div>
<div>
<el-button v-print="print" size="small" @click="handleSaveTable">打印</el-button>
<el-button type="primary" size="small" @click="handleSaveTable">保存</el-button>
<el-button type="danger" size="small" @click="handleDelete">删除</el-button>
</div>
</div>
<div id="optomeFunc" style="width: 840px;padding-right: 8px" class="printBox">
<div class="flex j-c" style="padding-bottom: 8px">
@ -13,17 +25,17 @@
验光报告单
</p>
<div style="display: flex;justify-content: space-around">
<span class="bold">登记号<el-input v-model="dataForm.patientId" style="width: 80px" placeholder="" /></span>
<span class="bold">登记号<el-input v-model="dataForm.patientId" style="width: 95px" placeholder="" /></span>
<span class="bold">姓名<el-input v-model="dataForm.patientName" style="width: 90px" placeholder="" /></span>
<span class="bold">性别<el-input v-model="dataForm.patientSex" style="width: 60px" placeholder="" /></span>
<span class="bold">年龄<el-input v-model="dataForm.patientAge" style="width: 60px" placeholder="" /></span>
<span class="bold">屈光发育档案
<el-select v-model="dataForm.file" placeholder="" style="display: inline-block;width: 100px">
<el-select v-model="dataForm.qgFyda" placeholder="" clearable style="display: inline-block;width: 100px">
<el-option
v-for="item in fileList"
:key="item.id"
:label="item.name"
:value="item.name"
v-for="item in fileList"
:key="item.id"
:label="item.name"
:value="item.name"
/>
</el-select>
</span>
@ -76,12 +88,12 @@
<div v-if="scope.row.name == '1'">
<div class="">
<div style="display: flex;flex-wrap: wrap">
<el-select v-model="scope.row.value" placeholder="" style="width: 100%">
<el-select v-model="dataForm.tongk" clearable placeholder="" style="width: 100%">
<el-option
v-for="item in pupil"
:key="item.id"
:label="item.name"
:value="item.name"
v-for="item in pupil"
:key="item.id"
:label="item.name"
:value="item.name"
/>
</el-select>
</div>
@ -89,27 +101,27 @@
</div>
<div v-if="scope.row.name == '3'">
<div class="width-100 center">
<el-input v-model="scope.row.a" placeholder="" />
<el-input v-model="dataForm.ygjcDsOd" placeholder="" />
</div>
</div>
<div v-if="scope.row.name == '4'">
<div class="width-100 center">
<el-input v-model="scope.row.a" placeholder="" />
<el-input v-model="dataForm.ygjcDsOs" placeholder="" />
</div>
</div>
<div v-if="scope.row.name == '5'">
<div class="width-100 center">
<el-input v-model="scope.row.a" placeholder="" />
<el-input v-model="dataForm.zzcfDsOs" placeholder="" />
</div>
</div>
<div v-if="scope.row.name == '基本信息'">
<div class="width-100 center">
<el-select v-model="scope.row.vision" placeholder="" style="width: 100%" @change="selectVision">
<el-select v-model="dataForm.slType" clearable placeholder="" style="width: 100%" @change="selectVision">
<el-option
v-for="item in visionList"
:key="item.id"
:label="item.name"
:value="item.id"
v-for="item in visionList"
:key="item.id"
:label="item.name"
:value="item.id"
/>
</el-select>
</div>
@ -129,12 +141,12 @@
</div>
<div style="margin-left: 26px">
<span>其他:</span>
<el-select v-model="scope.row.value" placeholder="" style="width: 220px;display: inline-block">
<el-select v-model="dataForm.pjyjQt" clearable placeholder="" style="width: 220px;display: inline-block">
<el-option
v-for="item in others"
:key="item.id"
:label="item.name"
:value="item.name"
v-for="item in others"
:key="item.id"
:label="item.name"
:value="item.name"
/>
</el-select>
</div>
@ -142,7 +154,7 @@
</div>
<div v-if="scope.row.name == '备注'">
<div>
<el-input v-model="scope.row.value" type="textarea" :autosize="{ minRows: 1, maxRows: 3}" placeholder="" />
<el-input v-model="dataForm.beiZhu" type="textarea" :autosize="{ minRows: 1, maxRows: 3}" placeholder="" />
</div>
</div>
</template>
@ -166,22 +178,22 @@
</div>
<div v-if="scope.row.name == '3'">
<div class="width-100 center">
<el-input v-model="scope.row.b" placeholder="" />
<el-input v-model="dataForm.ygjcDcOd" placeholder="" />
</div>
</div>
<div v-if="scope.row.name == '4'">
<div class="width-100 center">
<el-input v-model="scope.row.b" placeholder="" />
<el-input v-model="dataForm.ygjcDcOs" placeholder="" />
</div>
</div>
<div v-if="scope.row.name == '5'">
<div class="width-100 center">
<el-input v-model="scope.row.b" placeholder="" />
<el-input v-model="dataForm.zzcfDcOs" placeholder="" />
</div>
</div>
<div v-if="scope.row.name == '最终处方'">
<div class="width-100 center">
<el-input v-model="scope.row.a" placeholder="" />
<el-input v-model="dataForm.zzcfDsOd" placeholder="" />
</div>
</div>
</template>
@ -190,7 +202,7 @@
<template slot-scope="scope">
<div v-if="scope.row.name == '基本信息'">
<div class="width-100 center">
<el-input v-model="scope.row.od" placeholder="" />
<el-input v-model="dataForm.slOd" placeholder="" />
</div>
</div>
<div v-if="scope.row.name == '验光检查'">
@ -201,12 +213,12 @@
<div v-if="scope.row.name == '1'">
<div>
<div style="display: flex;flex-wrap: wrap">
<el-select v-model="scope.row.examValue" placeholder="">
<el-select v-model="dataForm.jianchaFangfa" clearable placeholder="">
<el-option
v-for="item in examine"
:key="item.id"
:label="item.name"
:value="item.name"
v-for="item in examine"
:key="item.id"
:label="item.name"
:value="item.name"
/>
</el-select>
</div>
@ -214,22 +226,22 @@
</div>
<div v-if="scope.row.name == '3'">
<div class="width-100 center">
<el-input v-model="scope.row.c" placeholder="" />
<el-input v-model="dataForm.ygjcAOd" placeholder="" />
</div>
</div>
<div v-if="scope.row.name == '4'">
<div class="width-100 center">
<el-input v-model="scope.row.c" placeholder="" />
<el-input v-model="dataForm.ygjcAOs" placeholder="" />
</div>
</div>
<div v-if="scope.row.name == '5'">
<div class="width-100 center">
<el-input v-model="scope.row.c" placeholder="" />
<el-input v-model="dataForm.zzcfAOs" placeholder="" />
</div>
</div>
<div v-if="scope.row.name == '最终处方'">
<div class="width-100 center">
<el-input v-model="scope.row.b" placeholder="" />
<el-input v-model="dataForm.zzcfDcOd" placeholder="" />
</div>
</div>
</template>
@ -248,22 +260,22 @@
</div>
<div v-if="scope.row.name == '3'">
<div class="width-100 center">
<el-input v-model="scope.row.d" placeholder="" />
<el-input v-model="dataForm.ygjcVaOd" placeholder="" />
</div>
</div>
<div v-if="scope.row.name == '4'">
<div class="width-100 center">
<el-input v-model="scope.row.d" placeholder="" />
<el-input v-model="dataForm.ygjcVaOs" placeholder="" />
</div>
</div>
<div v-if="scope.row.name == '5'">
<div class="width-100 center">
<el-input v-model="scope.row.d" placeholder="" />
<el-input v-model="dataForm.zzcfVaOs" placeholder="" />
</div>
</div>
<div v-if="scope.row.name == '最终处方'">
<div class="width-100 center">
<el-input v-model="scope.row.c" placeholder="" />
<el-input v-model="dataForm.zzcfAOd" placeholder="" />
</div>
</div>
</template>
@ -272,7 +284,7 @@
<template slot-scope="scope">
<div v-if="scope.row.name == '基本信息'">
<div class="width-100 center">
<el-input v-model="scope.row.os" placeholder="" />
<el-input v-model="dataForm.slOs" placeholder="" />
</div>
</div>
<div v-if="scope.row.name == '验光检查'">
@ -282,22 +294,22 @@
</div>
<div v-if="scope.row.name == '3'">
<div class="width-100 center">
<el-input v-model="scope.row.e" placeholder="" />
<el-input v-model="dataForm.ygjcAddOd" placeholder="" />
</div>
</div>
<div v-if="scope.row.name == '4'">
<div class="width-100 center">
<el-input v-model="scope.row.e" placeholder="" />
<el-input v-model="dataForm.ygjcAddOs" placeholder="" />
</div>
</div>
<div v-if="scope.row.name == '5'">
<div class="width-100 center">
<el-input v-model="scope.row.e" placeholder="" />
<el-input v-model="dataForm.zzcfAddOs" placeholder="" />
</div>
</div>
<div v-if="scope.row.name == '最终处方'">
<div class="width-100 center">
<el-input v-model="scope.row.d" placeholder="" />
<el-input v-model="dataForm.zzcfVaOd" placeholder="" />
</div>
</div>
</template>
@ -311,22 +323,22 @@
</div>
<div v-if="scope.row.name == '3'">
<div class="width-100 center">
<el-input v-model="scope.row.f" placeholder="" />
<el-input v-model="dataForm.ygjcVaOd" placeholder="" />
</div>
</div>
<div v-if="scope.row.name == '4'">
<div class="width-100 center">
<el-input v-model="scope.row.f" placeholder="" />
<el-input v-model="dataForm.zzcfAddOd" placeholder="" />
</div>
</div>
<div v-if="scope.row.name == '5'">
<div class="width-100 center">
<el-input v-model="scope.row.f" placeholder="" />
<el-input v-model="dataForm.zzcfAddOd" placeholder="" />
</div>
</div>
<div v-if="scope.row.name == '最终处方'">
<div class="width-100 center">
<el-input v-model="scope.row.e" placeholder="" />
<el-input v-model="dataForm.zzcfAddOd" placeholder="" />
</div>
</div>
</template>
@ -335,22 +347,22 @@
<div style="display: flex;justify-content: space-between">
<div class="width-180" style="text-align: left">
<span style="display: inline-block;margin-top: 12px">视光师:</span>
<img v-if="dataForm.optometrist" :src="dataForm.optometrist" alt="" style="width: 80px;height: 50px;border-style:none;">
<img v-if="dataForm.ygsSign" :src="dataForm.ygsSign" alt="" style="width: 80px;height: 50px;border-style:none;">
</div>
<div class="width-180" style="text-align: left">
<el-input v-model="dataForm.physician" placeholder="" style="margin-top: 12px">
<el-input v-model="dataForm.ysSign" placeholder="" style="margin-top: 12px">
<template slot="prepend">医师:</template>
</el-input>
</div>
<div class="width-180" style="text-align: left;margin-top: 12px">
日期<el-date-picker
v-model="dataForm.date"
v-model="dataForm.riQi"
type="date"
placeholder="选择日期"
/>
/>
</div>
</div>
<p style="text-align: left;margin-top: 12px;font-size: 14px">说明1.持本报告配镜仅供参考 2.本报告单有效期3个月</p>
<p style="text-align: left;margin-top: 12px;font-size: 14px">说明1.持本报告配镜仅供参考 2.本报告单有效期3个月</p>
</div>
</div>
</div>
@ -366,9 +378,13 @@ export default {
type: String,
default: ''
},
formContent: {
type: Object,
default: () => { }
caseId: {
type: String,
default: ''
},
isPlatform: {
type: Boolean,
default: true
},
onlyRead: {
type: Boolean,
@ -377,6 +393,7 @@ export default {
},
data() {
return {
connectFlag: false, //
ws: null, //
lockReconnect: false, //
timeout: 28 * 1000, // 30
@ -384,14 +401,46 @@ export default {
serverTimeoutObj: null, //
timeoutnum: null, //
dataForm: {
id: '',
jzNumber: '',
idList: [],
patientId: '',
patientName: '',
patientSex: '',
patientAge: '',
file: '',
optometrist: '',
physician: '',
date: ''
qgFyda: '', //
ygsSign: '', //
ysSign: '', //
riQi: '', //
slType: '', //
slOs: '', //
slOd: '', //
tongk: '', //
jianchaFangfa: '',
ygjcDsOd: '',
ygjcDsOs: '',
ygjcDcOd: '',
ygjcDcOs: '',
ygjcAOd: '',
ygjcAOs: '',
ygjcVaOd: '',
ygjcVaOs: '',
ygjcAddOd: '',
ygjcAddOs: '',
zzcfAOd: '',
zzcfAOs: '',
zzcfAddOd: '',
zzcfAddOs: '',
zzcfDcOd: '',
zzcfDcOs: '',
zzcfDsOd: '',
zzcfDsOs: '',
zzcfVaOs: '',
zzcfVaOd: '',
zzcfCheck: '',
pjyjCheck: '', //
pjyjQt: '', // -
beiZhu: '' //
},
fileList: [
{
@ -412,35 +461,28 @@ export default {
pupil: [
{
name: '正常瞳孔',
id: '1',
isSelect: false
id: '1'
}, {
name: '复方托吡卡胺',
id: '2',
isSelect: false
id: '2'
}, {
name: '美多丽',
id: '3',
isSelect: false
id: '3'
}, {
name: '赛飞杰',
id: '4',
isSelect: false
id: '4'
}, {
name: '阿托品',
id: '5',
isSelect: false
id: '5'
}
],
examine: [
{
name: '检影',
id: '1',
isSelect: false
id: '1'
}, {
name: '综合',
id: '2',
isSelect: false
id: '2'
}
],
remoteUse: [
@ -484,164 +526,110 @@ export default {
originTableData: [],
tableData: [
{
name: '基本信息',
vision: '1',
od: '', //
os: '' //
name: '基本信息'
}, {
name: '1',
value: '', //
examValue: '' //
name: '1'
}, {
name: '验光检查'
}, {
name: '3', //
a: '', // (DS)
b: '', // (DC)
c: '', // (A)
d: '', // (VA)
e: '' // (ADD)
name: '3'
}, {
name: '4', //
a: '',
b: '',
c: '',
d: '',
e: ''
name: '4'
}, {
name: '最终处方', //
a: '',
b: '',
c: '',
d: '',
e: ''
name: '最终处方'
}, {
name: '5', //
a: '',
b: '',
c: '',
d: '',
e: ''
name: '5'
}, {
name: '配镜建议',
value: '' //
name: '配镜建议'
}, {
name: '备注',
value: '' //
name: '备注'
}],
print: {
id: 'optomeFunc'
}
}
},
watch: {
caseId: {
handler: function(newV, oldV) {
this.queryForm()
if (this.isSearch === '3') {
this.initWebSoket()
}
}
}
},
destroyed() {
this.ws.close()
if (this.isSearch === '3') {
this.connectFlag = false
clearTimeout(this.timeoutnum)
clearTimeout(this.timeoutObj)
clearTimeout(this.serverTimeoutObj)
this.ws.close()
}
},
mounted() {
this.originTableData = JSON.parse(JSON.stringify(this.tableData))
this.setSign()
this.initWebSoket()
this.queryForm()
this.getPatientData()
this.setVision()
if (this.isSearch === '3') {
this.initWebSoket()
}
},
methods: {
//
setSign() {
const userData = window.sessionStorage.getItem('qg-userData')
const userData = JSON.parse(window.sessionStorage.getItem('qg-userData'))
const date = this.$moment().format('YYYY-MM-DD')
const mzName = window.sessionStorage.getItem('mzDoctorName')
this.dataForm.optometrist = userData.signImgBase
this.dataForm.physician = mzName
this.dataForm.date = date
},
setData() {
this.dataForm = this.formContent.a
this.tableData = this.formContent.b
this.setSign()
this.getPatientData()
},
reSet() {
this.dataForm = {
patientId: '',
patientName: '',
patientSex: '',
patientAge: '',
file: '',
optometrist: '',
physician: '',
date: ''
}
this.tableData = Object.assign([], this.originTableData)
this.setSign()
this.setVision()
this.getPatientData()
this.dataForm.tongk = '正常瞳孔'
this.dataForm.jianchaFangfa = '综合'
this.dataForm.ygsSign = userData.signImgBase
this.dataForm.ysSign = mzName
this.dataForm.riQi = date
},
setVision() {
const data = window.sessionStorage.getItem('shili') ? JSON.parse(window.sessionStorage.getItem('shili')) : []
if (data.length) {
const one = data[0].odVan
const two = data[0].odVag
if (one) {
this.tableData[0].vision = '1'
this.selectVision('1')
} else if (two && !one) {
this.tableData[0].vision = '2'
this.selectVision('2')
} else {
this.tableData[0].vision = '1'
this.selectVision('1')
}
const one = data.length ? data[0].odVan : ''
const two = data.length ? data[0].odVag : ''
if (two && !one) {
this.dataForm.slType = '2'
this.selectVision('2')
} else {
this.dataForm.slType = '1'
this.selectVision('1')
}
},
selectVision(id) {
const data = window.sessionStorage.getItem('shili') ? JSON.parse(window.sessionStorage.getItem('shili')) : []
if (id === '1') {
//
const data = window.sessionStorage.getItem('shili') ? JSON.parse(window.sessionStorage.getItem('shili')) : []
if (data.length) {
this.tableData[0].od = data[0].odVan
this.tableData[0].os = data[0].osVan
} else {
this.tableData[0].od = ''
this.tableData[0].os = ''
}
this.dataForm.slOd = data.length ? data[0].odVan : ''
this.dataForm.slOs = data.length ? data[0].osVan : ''
} else {
const data = window.sessionStorage.getItem('shili') ? JSON.parse(window.sessionStorage.getItem('shili')) : []
if (data.length) {
this.tableData[0].od = data[0].odVag
this.tableData[0].os = data[0].osVag
} else {
this.tableData[0].od = ''
this.tableData[0].os = ''
}
this.dataForm.slOd = data.length ? data[0].odVag : ''
this.dataForm.slOs = data.length ? data[0].osVag : ''
}
},
copyData() {
const ods = this.tableData.filter(item => item.name === '3')
const oss = this.tableData.filter(item => item.name === '4')
this.tableData.forEach(item => {
if (item.name === '最终处方') {
item.a = ods[0].a
item.b = ods[0].b
item.c = ods[0].c
item.d = ods[0].d
item.e = ods[0].e
}
if (item.name === '5') {
item.a = oss[0].a
item.b = oss[0].b
item.c = oss[0].c
item.d = oss[0].d
item.e = oss[0].e
}
})
this.dataForm.zzcfDsOd = this.dataForm.ygjcDsOd
this.dataForm.zzcfDcOd = this.dataForm.ygjcDcOd
this.dataForm.zzcfAOd = this.dataForm.ygjcAOd
this.dataForm.zzcfVaOd = this.dataForm.ygjcVaOd
this.dataForm.zzcfAddOd = this.dataForm.ygjcAddOd
this.dataForm.zzcfDsOs = this.dataForm.ygjcDsOs
this.dataForm.zzcfDcOs = this.dataForm.ygjcDcOs
this.dataForm.zzcfAOs = this.dataForm.ygjcAOs
this.dataForm.zzcfVaOs = this.dataForm.ygjcVaOs
this.dataForm.zzcfAddOs = this.dataForm.ygjcAddOs
},
async getPatientData() {
const { data: res } = await this.$http.get(
'/patient/view/getPatientData',
{
params: {
patientId: this.patientId
'/patient/view/getPatientData',
{
params: {
patientId: this.patientId
}
}
}
)
if (res.code === 0) {
const data = res.data
@ -653,6 +641,58 @@ export default {
this.$message.error(res.msg)
}
},
async queryForm() {
const { data: res } = await this.$http.get(
'/ygbgd/getYgbgdInfo',
{
params: {
patientId: this.patientId,
caseId: this.caseId
}
}
)
if (res.code === 0) {
this.dataForm = res.data
if (!this.dataForm.id) {
await this.queryProject()
this.setVision()
this.setSign()
}
this.dataForm.jzNumber = window.sessionStorage.getItem('jzNumber')
this.handleStr(this.dataForm.pjyjCheck, this.suggest)
this.handleStr(this.dataForm.zzcfCheck, this.remoteUse)
} else {
this.$message.error(res.msg)
}
},
// id
async queryProject() {
const project = window.sessionStorage.getItem('projectItem') ? JSON.parse(window.sessionStorage.getItem('projectItem')) : []
const { data: res } = await this.$http.get(
'/patient/getZlItemDict',
{
params: {
caseName: '验光报告单'
}
}
)
if (res.code === 0) {
const data = res.data || []
const list = []
if (data.length) {
for (let i = 0; i < data.length; i++) {
for (let j = 0; j < project.length; j++) {
if (data[i].itemId === project[j].porjectCode) {
list.push(project[j].id)
}
}
}
this.dataForm.idList = list
}
} else {
this.$message.error(res.msg)
}
},
reconnect() { //
const that = this
if (that.lockReconnect) {
@ -696,53 +736,114 @@ export default {
// wss://127.0.0.1:8030/data
// const url = 'ws://47.110.224.240:8036/xiangan-crf/websocket/0071'
// const url = 'ws://192.168.0.167:8036/xiangan-crf/websocket/0071'
const url = 'ws://127.0.0.1:8030/data'
const self = this
this.ws = new WebSocket(url)
this.ws.onopen = function() {
console.log('连接成功')
self.start()
}
this.ws.onclose = function() {
// console.log('')
self.reconnect()
try {
const url = 'ws://127.0.0.1:8030/data'
const self = this
this.ws = new WebSocket(url)
this.ws.onopen = function() {
console.log('连接成功')
self.connectFlag = true
self.start()
}
this.ws.onclose = function() {
self.connectFlag = false
self.reconnect()
}
this.ws.onerror = function() {
self.connectFlag = false
self.reconnect()
}
this.ws.onmessage = function(msg) {
const message = JSON.parse(msg.data)
// const data = JSON.parse(msg.data)
// const message = JSON.parse(data.msgTxt)
self.dataForm.ygjcDsOd = message.RData.DS
self.dataForm.ygjcDcOd = message.RData.DC
self.dataForm.ygjcAOd = message.RData.AXIS
self.dataForm.ygjcVaOd = message.RData.VA
self.dataForm.ygjcAddOd = message.RData.ADD
self.dataForm.ygjcDsOs = message.LData.DS
self.dataForm.ygjcDcOs = message.LData.DC
self.dataForm.ygjcAOs = message.LData.AXIS
self.dataForm.ygjcVaOs = message.LData.VA
self.dataForm.ygjcAddOs = message.LData.ADD
self.resetHeart()
}
} catch (e) {
console.log(e)
}
this.ws.onerror = function() {
// console.log('')
self.reconnect()
},
//
handleStr(string, array) {
if (string) {
const data = string.split(',')
array.forEach(item => {
data.forEach(row => {
if (item.name === row) {
item.isSelect = true
}
})
})
} else {
array.forEach(item => {
item.isSelect = false
})
}
this.ws.onmessage = function(msg) {
const message = JSON.parse(msg.data)
// const data = JSON.parse(msg.data)
// const message = JSON.parse(data.msgTxt)
console.log(message)
self.tableData.forEach(item => {
if (item.name == '3') {
item.a = message.RData.DS
item.b = message.RData.DC
item.c = message.RData.AXIS
item.d = message.RData.VA
item.e = message.RData.ADD
} else if (item.name == '4') {
item.a = message.LData.DS
item.b = message.LData.DC
item.c = message.LData.AXIS
item.d = message.LData.VA
item.e = message.LData.ADD
return array
},
//
handleCheck(array) {
if (array && array.length) {
const temp = []
array.forEach(item => {
if (item.isSelect) {
temp.push(item.name)
}
})
self.resetHeart()
return temp.join(',')
}
},
handleSaveTable() {
const data = {
a: this.dataForm,
b: this.tableData
}
this.$emit('save', data)
this.dataForm.pjyjCheck = this.handleCheck(this.suggest)
this.dataForm.zzcfCheck = this.handleCheck(this.remoteUse)
this.$http.post('/ygbgd/saveYgbgd', this.dataForm).then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg)
}
this.$message({
message: this.$t('prompt.success'),
type: 'success',
duration: 500,
onClose: () => {
this.queryForm()
}
})
}).catch(() => {})
},
handleDelete() {
this.$emit('del')
const params = {
id: this.caseId
}
this.$confirmFun('你确定要删除吗?').then(async() => {
await this.deleteNewForm()
const { data: res } = await this.$http.post('/case/delete', params)
if (res.code === 0) {
this.$message.success('删除成功')
await this.$parent.getFormList()
} else {
this.$message.error(res.msg)
}
})
},
async deleteNewForm() {
const params = {
id: this.caseId
}
const { data: res } = await this.$http.post('/ygbgd/delYgbgdInfo', params)
if (res.code === 0) {
} else {
this.$message.error(res.msg)
}
},
objectSpanMethod({ row, column, rowIndex, columnIndex }) {
if (columnIndex === 0) {
@ -922,18 +1023,6 @@ export default {
.el-date-editor.el-input__inner {
width: 140px;
}
//.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-table--enable-row-hover .el-table__body tr:hover>td.el-table__cell {
background: none !important;
}
@ -963,6 +1052,21 @@ export default {
margin-right: 5px;
}
}
.el-input__inner {
padding: 0;
border: none;
text-align: center;
border-radius: 0;
border-bottom: 1px solid #8e8c8c;
}
.operation-record-table{
.el-input__inner {
padding: 0;
border: none;
text-align: center;
border-radius: 0;
}
}
.bold{
font-weight: 700;
}
@ -987,6 +1091,9 @@ export default {
border: none;
}
.el-input__suffix-inner{
//display: none;
}
.el-icon-arrow-up{
display: none;
}
}

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

@ -518,7 +518,7 @@
</div>
<div v-else-if="scope.row.name === 'TITMUS()'" class="flex">
<span>TITMUS():</span>
<el-select v-model="dataForm.titmus" placeholder="" clearable style="display: inline-block;width: 95px;margin-left: 8px">
<el-select v-model="dataForm.titmus" placeholder="" filterable allow-create clearable style="display: inline-block;width: 95px;margin-left: 8px">
<el-option
v-for="item in titmusList"
:key="item.id"
@ -608,7 +608,7 @@
</div>
<div v-if="scope.row.name == '检查画片' && scope.row.type == '2'">
<div class="center">
<el-select v-model="dataForm.rhgnjcJchp" placeholder="" clearable style="display: inline-block;width: 180px;margin-left: 8px">
<el-select v-model="dataForm.rhgnjcJchp" placeholder="" filterable allow-create clearable style="display: inline-block;width: 180px;margin-left: 8px">
<el-option
v-for="item in checkTwoList"
:key="item.id"
@ -625,7 +625,7 @@
</div>
<div v-if="scope.row.name == 'Worth-4-dot'">
<div class="center">
<el-select v-model="dataForm.worth1" placeholder="" clearable style="display: inline-block;width: 100px" @change="selectWorth($event, 'od')">
<el-select v-model="dataForm.worth1" placeholder="" filterable allow-create clearable style="display: inline-block;width: 100px" @change="selectWorth($event, 'od')">
<el-option
v-for="item in worthList"
:key="item.id"
@ -641,7 +641,7 @@
<div v-if="scope.row.name == 'TITMUS(近)'">
<div class="center">
<span>TNO():</span>
<el-select v-model="dataForm.tno" placeholder="" clearable style="display: inline-block;width: 120px;margin-left: 8px">
<el-select v-model="dataForm.tno" placeholder="" filterable allow-create clearable style="display: inline-block;width: 120px;margin-left: 8px">
<el-option
v-for="item in tnoList"
:key="item.id"
@ -694,7 +694,7 @@
<div v-if="scope.row.name == '融合点'">
<div class="center">
<span>分开/集合:</span>
<el-select v-model="dataForm.rhgnjcFkjh1" placeholder="" clearable style="display: inline-block;width: 45px;margin-right: 5px">
<el-select v-model="dataForm.rhgnjcFkjh1" placeholder="" filterable allow-create clearable style="display: inline-block;width: 45px;margin-right: 5px">
<el-option
v-for="item in separateList"
:key="item.id"
@ -704,7 +704,7 @@
</el-select>
<el-input v-model="dataForm.rhgnjcFkjh2" placeholder="" style="width: 45px" />
<span>°</span> /
<el-select v-model="dataForm.rhgnjcFkjh3" placeholder="" clearable style="display: inline-block;width: 45px;margin-right: 5px">
<el-select v-model="dataForm.rhgnjcFkjh3" placeholder="" filterable allow-create clearable style="display: inline-block;width: 45px;margin-right: 5px">
<el-option
v-for="item in separateList"
:key="item.id"
@ -718,7 +718,7 @@
</div>
<div v-if="scope.row.name == 'Worth-4-dot'">
<div class="center">
<el-select v-model="dataForm.worth3" placeholder="" clearable style="display: inline-block;width: 100px" @change="selectWorth($event, 'os')">
<el-select v-model="dataForm.worth3" placeholder="" filterable allow-create clearable style="display: inline-block;width: 100px" @change="selectWorth($event, 'os')">
<el-option
v-for="item in worthList"
:key="item.id"
@ -733,8 +733,8 @@
</div>
<div v-if="scope.row.name == 'TITMUS(近)'">
<div class="center">
<span>RDD():</span>
<el-select v-model="dataForm.rdd" placeholder="" clearable style="display: inline-block;width: 120px;margin-left: 8px">
<span>RDD():</span>
<el-select v-model="dataForm.rdd" placeholder="" filterable allow-create clearable style="display: inline-block;width: 120px;margin-left: 8px">
<el-option
v-for="item in rddList"
:key="item.id"
@ -753,8 +753,6 @@
</template>
<script>
import Keyboard from 'vue-keyboard'
// import 'vue-keyboard/dist/vue-keyboard.css'
// import { KEYBOARD_MAP, KEYS } from 'vue-keyboard/lib/keyboard-map';
export default {
components: {
Keyboard
@ -1188,6 +1186,7 @@ export default {
this.dataForm.jzNumber = window.sessionStorage.getItem('jzNumber')
if (!this.dataForm.id) {
await this.queryProject()
await this.getRefractive()
this.dataForm.tssjcJchp = '老虎/笼子(10°)'
this.dataForm.rhgnjcJchp = '三人组(3°)'
this.dataForm.titmus = '60"'
@ -1199,6 +1198,25 @@ export default {
}
}
},
async getRefractive() {
const date = this.$moment().format('YYYY-MM-DD')
const { data: res } = await this.$http.get('/sjsgnjc/getRefractiveInfo', { params: {
formDate: date,
patientId: this.patientId
}})
if (res.code === 0) {
if (res.data) {
this.dataForm.qgztOd1 = res.data.qgztOd1
this.dataForm.qgztOd2 = res.data.qgztOd2
this.dataForm.qgztOd3 = res.data.qgztOd3
this.dataForm.qgztOdVa = res.data.qgztOdVa
this.dataForm.qgztOs1 = res.data.qgztOs1
this.dataForm.qgztOs2 = res.data.qgztOs2
this.dataForm.qgztOs3 = res.data.qgztOs3
this.dataForm.qgztOsVa = res.data.qgztOsVa
}
}
},
handleInput(item, input) {
if (input === 'ᴿ') {
input = 'ᴿ/ʟ'
@ -1245,7 +1263,7 @@ export default {
setSign() {
const userData = window.sessionStorage.getItem('qg-userData')
const date = this.$moment().format('YYYY-MM-DD')
this.dataForm.sgsSign = userData.signImgBase
this.dataForm.sgsSign = JSON.parse(userData).signImgBase
this.dataForm.riQi = date
},
async getPatientData() {

255
src/components/360View/index.vue

@ -34,79 +34,90 @@
<div class="rightBox">
<el-tabs type="border-card" :value="timeAxisType" style="height: 100%" @tab-click="tabClick">
<el-tab-pane name="病史总览" label="病史总览" style="height: 100%">
<overView :patient-id="patientId" />
<overView :patient-id="patientId||$route.query.patientId" />
</el-tab-pane>
<el-tab-pane name="门诊病历" label="门诊病历" style="height: 100%">
<medicalRecord :patient-id="patientId" :is-search="isSearch" :only-read="onlyRead" />
<medicalRecord :type-name="timeAxisType" :patient-id="patientId || $route.query.patientId" :is-search="isSearch || $route.query.isSearch" :only-read="readOnly" />
</el-tab-pane>
<el-tab-pane name="常规检查" label="常规检查" style="height: 100%">
<routine :patient-id="patientId" :date="date" :only-read="onlyRead" />
<routine :patient-id="patientId||$route.query.patientId" :date="date" :only-read="readOnly" />
</el-tab-pane>
<el-tab-pane name="特殊检查" label="特殊检查" style="height: 100%">
<special :patient-id="patientId" :only-read="onlyRead" />
<special :patient-id="patientId||$route.query.patientId" :only-read="readOnly" />
</el-tab-pane>
<el-tab-pane v-if="isSearch === '3'" name="视光档案" label="视光档案" style="height: 100%">
<opticalFile :patient-id="patientId" :only-read="onlyRead" />
<el-tab-pane name="视光档案" label="视光档案" style="height: 100%">
<opticalFile :patient-id="patientId||$route.query.patientId" :is-search="isSearch || $route.query.isSearch" :only-read="readOnly" />
</el-tab-pane>
<el-tab-pane name="诊断" label="诊断">
<el-tab-pane name="诊断" label="诊断" style="height: 100%">
<el-table
:data="timeAxisNodeInfo"
style="width: 100%"
style="width: 100%;height: 100%;overflow: auto"
>
<el-table-column
type="index"
width="50"
/>
<el-table-column
prop="diagName"
label="诊断内容"
align="center"
/>
<el-table-column
label="主诊断"
align="center"
>
<template slot-scope="scope">
{{ scope.row.isMain === '1' ? '是' : '否' }}
{{ scope.row.isMain === 'Y' ? '是' : '否' }}
</template>
</el-table-column>
<el-table-column
prop="diagIcd"
label="ICD编码"
/>
<el-table-column
prop="memo"
label="备注"
/>
<el-table-column
prop="doctorName"
label="医师"
/>
</el-table>
</el-tab-pane>
<el-tab-pane name="手术" label="手术">
<el-tab-pane name="手术" label="手术" style="height: 100%">
<el-table
:data="timeAxisNodeInfo"
style="width: 100%"
style="width: 100%;height: 100%;overflow: auto"
>
<el-table-column
type="index"
width="50"
/>
<el-table-column
prop="bedNo"
label="床号"
align="center"
/>
<el-table-column
prop="deptName"
label="部门名"
align="center"
/>
<el-table-column
prop="wardName"
label="病区名"
align="center"
/>
<el-table-column
prop="mainDrName"
label="主刀医生姓名"
align="center"
/>
<el-table-column
prop="opName"
label="手术名称"
align="center"
/>
<el-table-column
prop="opPartName"
label="手术部位"
align="center"
/>
<el-table-column
prop="opTime"
label="手术时间"
align="center"
>
<template slot-scope="scope">
{{ scope.row.opTime ? scope.row.opTime.substring(0, 10) : '' }}
@ -114,7 +125,6 @@
</el-table-column>
<el-table-column
label="主手术"
align="center"
>
<template slot-scope="scope">
{{ scope.row.isMain === '1' ? '是' : '否' }}
@ -122,57 +132,64 @@
</el-table-column>
</el-table>
</el-tab-pane>
<el-tab-pane name="用药" label="用药">
<el-tab-pane name="医嘱" label="医嘱" style="height: 100%">
<el-table
:data="timeAxisNodeInfo"
style="width: 100%"
style="width: 100%;height: 100%;overflow: auto"
>
<el-table-column
type="index"
width="50"
/>
<el-table-column
prop="medName"
label="商品名"
align="center"
/>
<el-table-column
prop="socName"
label="通用名"
align="center"
/>
<el-table-column
prop="site"
label="部位"
align="center"
prop="numberUse"
label="数量"
/>
<el-table-column
prop="yzTypeName"
label="类型"
/>
<el-table-column
prop="doctorName"
label="医师"
/>
<el-table-column
prop="itemType"
label="门诊/住院"
align="center"
/>
</el-table>
</el-tab-pane>
<el-tab-pane name="住院" label="住院">
<el-tab-pane name="住院" label="住院" style="height: 100%">
<el-table
:data="timeAxisNodeInfo"
style="width: 100%"
style="width: 100%;height: 100%;overflow: auto"
>
<el-table-column
prop="deptName"
type="index"
width="50"
/>
<el-table-column
prop="profName"
label="部门名称"
align="center"
/>
<el-table-column
prop="wardName"
label="病区名称"
align="center"
/>
<el-table-column
prop="diagName"
label="诊断名称"
align="center"
/>
<el-table-column
label="住院日期"
align="center"
>
<template slot-scope="scope">
{{ scope.row.inDate ? scope.row.inDate.substring(0, 10) : '' }}
@ -180,7 +197,6 @@
</el-table-column>
<el-table-column
label="出院日期"
align="center"
>
<template slot-scope="scope">
{{ scope.row.outDate ? scope.row.outDate.substring(0, 10) : '' }}
@ -189,14 +205,14 @@
</el-table>
</el-tab-pane>
<el-tab-pane name="随访记录" label="随访记录" style="height: 100%">
<followUpRecord :patient-id="patientId" :only-read="onlyRead" />
<followUpRecord :patient-id="patientId||$route.query.patientId" :only-read="readOnly" />
</el-tab-pane>
</el-tabs>
</div>
</div>
</div>
<shrink ref="shrinks" :arrow-type="1" @display="handleDisplay" />
<drawer ref="drawers" :display.sync="display" :width="drawerWidth" :mask="false">
<shrink ref="shrinks" :arrow-type="1" @display="handleDisplay" @changeType="changeType" />
<drawer ref="drawers" :cur-type="dataType" :display.sync="display" :width="drawerWidth" :mask="true" @display="closeDrawer">
<!-- 关键指标-->
<key-indicators
v-if="dataType === 1"
@ -204,23 +220,16 @@
ref="keyIndicatorRef"
class="key-content"
v-bind="$attrs"
:patient-id="patientBaseData.patientId"
:patient-id="patientId"
:patient-id-number="patientBaseData.patientIdNumber"
/>
<!-- 数据集-->
<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 || $route.query.isSearch" />
<!-- 常用业务-->
<business v-if="dataType === 4" />
<business v-if="dataType === 4" :patient-id="patientBaseData.patientId" :platform="isSearch || $route.query.isSearch" :patient-name="patientBaseData.patientName" />
</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>
@ -239,22 +248,11 @@ import imgRecord from './img-reccrd.vue'
import pacsList from '@/components/360View/pacs/patientList'
import medicalRecord from '@/components/360View/medicalRecord' //
import opticalFile from '@/components/360View/opticalFile' //
const Base64 = require('js-base64').Base64
import eventBus from '@/page-subspecialty/utils/eventBus'
export default {
components: { timeLine, drawer, keyIndicators, shrink, business, collection, imgRecord, overView, medicalRecord, dataInfo, routine, special, followUpRecord, opticalFile, pacsList },
directives: {
move(el, bindings) {
el.onmousedown = (e) => {
}
}
},
mixins: [],
props: {
patientIdNumber: {
type: String,
default: ''
},
patientId: {
type: String,
default: ''
@ -274,13 +272,14 @@ export default {
sharkFlag: true,
patientBaseData: {},
timeAxisNodeInfo: [], //
doctorId: '', //
date: '', //
source: '', //
collectList: '', //
drawerWidth: '',
timeAxisData: [], //
timeAxisAll: [], //
timeAxisType: '', // tab
timeAxisType: '病史总览', // tab
foreList: [], //
afterList: [], //
dataType: 1,
@ -293,23 +292,45 @@ export default {
label: 'tagName'
},
jsArr: [],
crfVisible: false,
dataForm: {}
}
},
computed: {
readOnly() {
if (this.$route.query.onlyRead) {
return JSON.parse(this.$route.query.onlyRead)
} else {
return this.onlyRead
}
}
},
watch: {
display(val) {
if (val) {
this.$refs.drawers.$el.style.display = 'inline-block'
}
}
},
created() {
// this.patientIdNumber = '330282200110051983'
this.getPatientData()
this.getTimeAxisData()
// this.getTimeAxisMz()
},
mounted() {
this.computerData()
if (this.isSearch === '3') {
this.timeAxisType = '视光档案'
} else {
this.timeAxisType = '病史总览'
}
if (this.$route.query.patientId && !this.$route.query.doctorId) {
this.timeAxisType = '门诊病历'
}
},
methods: {
//
tabClick(type) {
this.timeAxisType = type.name
this.timeAxisNodeInfo = []
},
selectType(type) {
this.dataType = type
@ -325,14 +346,24 @@ export default {
//
eventBus.$off('sendForData')
eventBus.$on('sendForData', data => {
console.log(data)
const arr = this.foreList.concat(data)
const id = 'id'
this.foreList = arr.reduce((all, next) => all.some((item) => item[id] == next[id]) ? all : [...all, next], [])
console.log(this.foreList)
// const id = 'id'
this.foreList = this.unique(arr)
// this.foreList = arr.reduce((all, next) => all.some((item) => item[id] == next[id]) ? all : [...all, next], [])
this.openDataDrink()
})
},
unique(list) {
for (let i = 0; i < list.length - 1; i++) {
for (let j = i + 1; j < list.length; j++) {
if (list[i].id === list[j].id) {
list.splice(i, 1)
j--
}
}
}
return list
},
openDataDrink() {
this.dataType = 2
this.display = true
@ -346,6 +377,13 @@ export default {
}
})
},
closeDrawer(val) {
this.display = val
},
changeType(val) {
this.dataType = val
this.display = true
},
handleDisplay(val) {
this.dataType = 1
if (val) {
@ -359,17 +397,26 @@ export default {
this.drawerWidth = (this.drawerWidth === '500px') ? '800px' : '500px'
},
backList() {
this.$parent.detailViewVisible = false
if (this.$route.query.patientId && !this.$route.query.doctorId) {
this.$router.go(-1)
} else if (this.$route.query.doctorId) {
this.$router.push('/outpatientManagement-call')
} else {
this.$parent.detailViewVisible = false
this.$parent.getDataListInitial()
}
},
// 360
handlePacs() {
const { href } = this.$router.resolve({
name: 'pacs'
// query: {
// id: 1
// }
})
// const baseUrl = 'http://z1.huimucloud.com:8085'
// const baseUrl = 'http://10.80.5.32:8026'
const baseUrl = 'http://192.168.0.85:8001'
const href = `${baseUrl}/EXAMINE_Report/InterFace?PatID=${this.patientId}&DoctorID=${this.employeeId}&PatIdKey=&ExamNo=`
window.open(href, '_blank')
// const { href } = this.$router.resolve({
// name: 'pacsManage'
// })
// window.open(href, '_blank')
},
// 360
closePacs() {
@ -386,9 +433,7 @@ export default {
'/patient/view/getPatientData',
{
params: {
// patientId: this.patientId
patientId: '797064'
// patientIdNumber: '330282200110051983'
patientId: this.patientId || this.$route.query.patientId
}
}
)
@ -399,59 +444,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 || this.$route.query.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)
@ -462,11 +471,9 @@ 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'
// patientId: this.patientId
patientId: this.patientId || this.$route.query.patientId
}
})
if (res.code === 0) {

634
src/components/360View/index1.vue

@ -1,634 +0,0 @@
<template>
<div class="container">
<div style="flex: 1">
<div class="header">
<img :src="require('@/assets/img/back-l.png')" alt="" style="margin-right: 8px;cursor: pointer" @click="backList">
<img :src="require('@/assets/img/boy.png')" alt="">
<p class="head-t">
<span class="head-r">{{ patientBaseData.patientName }}</span>
<span class="head-r">{{ patientBaseData.patientSex }}</span>
<span v-if="patientBaseData.patientAge" class="head-r">{{ patientBaseData.patientAge }}</span>
<img v-if="patientBaseData.patientId" class="icon-a" :src="require('@/assets/img/pid.png')" alt="" style="margin-right: 6px;vertical-align: text-top">
<span style="vertical-align: text-bottom">{{ patientBaseData.patientId }}</span>
</p>
<p class="head-b">
<img v-if="patientBaseData.patientIdNumber" :src="require('@/assets/img/id.png')" alt="" style="margin-right: 6px;vertical-align: middle">
<span class="mr16" style="vertical-align: middle">{{ maskId(patientBaseData.patientIdNumber) }}</span>
<img v-if="patientBaseData.patientPhone" :src="require('@/assets/img/phone.png')" alt="" style="margin-right: 6px;vertical-align: middle">
<span class="mr16" style="vertical-align: middle">{{ patientBaseData.patientPhone }}</span>
<img v-if="patientBaseData.patientAddress" :src="require('@/assets/img/position.png')" alt="" style="margin-right: 6px;vertical-align: middle">
<span style="vertical-align: middle">{{ patientBaseData.patientAddress }}</span>
</p>
<img :src="require('@/assets/img/pacs.png')" alt="" style="float: right;cursor: pointer" @click="handlePacs">
</div>
<div class="contentBox">
<div class="leftBox">
<time-line
ref="timeline"
:time-axis-data="timeAxisData"
@getTimeAxisData="getTimeAxisData"
v-on="$listeners"
@getTimeAxisNodeInfo="getTimeAxisNodeInfo"
/>
</div>
<div class="rightBox">
<el-tabs type="border-card" :value="timeAxisType" style="height: 100%" @tab-click="tabClick">
<el-tab-pane name="病史总览" label="病史总览" style="height: 100%">
<overView :patient-id="patientId||$route.query.patientId" />
</el-tab-pane>
<el-tab-pane name="门诊病历" label="门诊病历" style="height: 100%">
<medicalRecord :type-name="timeAxisType" :patient-id="patientId || $route.query.patientId" :is-search="isSearch || $route.query.isSearch" :only-read="readOnly" />
</el-tab-pane>
<el-tab-pane name="常规检查" label="常规检查" style="height: 100%">
<routine :patient-id="patientId||$route.query.patientId" :date="date" :only-read="readOnly" />
</el-tab-pane>
<el-tab-pane name="特殊检查" label="特殊检查" style="height: 100%">
<special :patient-id="patientId||$route.query.patientId" :only-read="readOnly" />
</el-tab-pane>
<el-tab-pane name="视光档案" label="视光档案" style="height: 100%">
<opticalFile :patient-id="patientId||$route.query.patientId" :is-search="isSearch || $route.query.isSearch" :only-read="readOnly" />
</el-tab-pane>
<el-tab-pane name="诊断" label="诊断" style="height: 100%">
<el-table
:data="timeAxisNodeInfo"
style="width: 100%;height: 100%;overflow: auto"
>
<el-table-column
type="index"
width="50"
/>
<el-table-column
prop="diagName"
label="诊断内容"
/>
<el-table-column
label="主诊断"
>
<template slot-scope="scope">
{{ scope.row.isMain === 'Y' ? '是' : '否' }}
</template>
</el-table-column>
<el-table-column
prop="diagIcd"
label="ICD编码"
/>
<el-table-column
prop="memo"
label="备注"
/>
<el-table-column
prop="doctorName"
label="医师"
/>
</el-table>
</el-tab-pane>
<el-tab-pane name="手术" label="手术" style="height: 100%">
<el-table
:data="timeAxisNodeInfo"
style="width: 100%;height: 100%;overflow: auto"
>
<el-table-column
type="index"
width="50"
/>
<el-table-column
prop="bedNo"
label="床号"
/>
<el-table-column
prop="deptName"
label="部门名"
/>
<el-table-column
prop="wardName"
label="病区名"
/>
<el-table-column
prop="mainDrName"
label="主刀医生姓名"
/>
<el-table-column
prop="opName"
label="手术名称"
/>
<el-table-column
prop="opPartName"
label="手术部位"
/>
<el-table-column
prop="opTime"
label="手术时间"
>
<template slot-scope="scope">
{{ scope.row.opTime ? scope.row.opTime.substring(0, 10) : '' }}
</template>
</el-table-column>
<el-table-column
label="主手术"
>
<template slot-scope="scope">
{{ scope.row.isMain === '1' ? '是' : '否' }}
</template>
</el-table-column>
</el-table>
</el-tab-pane>
<el-tab-pane name="医嘱" label="医嘱" style="height: 100%">
<el-table
:data="timeAxisNodeInfo"
style="width: 100%;height: 100%;overflow: auto"
>
<el-table-column
type="index"
width="50"
/>
<el-table-column
prop="medName"
label="商品名"
/>
<el-table-column
prop="socName"
label="通用名"
/>
<el-table-column
prop="numberUse"
label="数量"
/>
<el-table-column
prop="yzTypeName"
label="类型"
/>
<el-table-column
prop="doctorName"
label="医师"
/>
<el-table-column
prop="itemType"
label="门诊/住院"
/>
</el-table>
</el-tab-pane>
<el-tab-pane name="住院" label="住院" style="height: 100%">
<el-table
:data="timeAxisNodeInfo"
style="width: 100%;height: 100%;overflow: auto"
>
<el-table-column
type="index"
width="50"
/>
<el-table-column
prop="profName"
label="部门名称"
/>
<el-table-column
prop="wardName"
label="病区名称"
/>
<el-table-column
prop="diagName"
label="诊断名称"
/>
<el-table-column
label="住院日期"
>
<template slot-scope="scope">
{{ scope.row.inDate ? scope.row.inDate.substring(0, 10) : '' }}
</template>
</el-table-column>
<el-table-column
label="出院日期"
>
<template slot-scope="scope">
{{ scope.row.outDate ? scope.row.outDate.substring(0, 10) : '' }}
</template>
</el-table-column>
</el-table>
</el-tab-pane>
<el-tab-pane name="随访记录" label="随访记录" style="height: 100%">
<followUpRecord :patient-id="patientId||$route.query.patientId" :only-read="readOnly" />
</el-tab-pane>
</el-tabs>
</div>
</div>
</div>
<shrink ref="shrinks" :arrow-type="1" @display="handleDisplay" @changeType="changeType" />
<drawer ref="drawers" :cur-type="dataType" :display.sync="display" :width="drawerWidth" :mask="true" @display="closeDrawer">
<!-- 关键指标-->
<key-indicators
v-if="dataType === 1"
id="drawerKey"
ref="keyIndicatorRef"
class="key-content"
v-bind="$attrs"
:patient-id="patientId"
:patient-id-number="patientBaseData.patientIdNumber"
/>
<!-- 数据集-->
<dataInfo v-if="dataType === 2" :fore-list="foreList" :after-list="afterList" />
<!-- 病历收藏-->
<collection v-if="dataType === 3" :patient-id="patientBaseData.patientId" :platform="isSearch || $route.query.isSearch" />
<!-- 常用业务-->
<business v-if="dataType === 4" :patient-id="patientBaseData.patientId" :platform="isSearch || $route.query.isSearch" :patient-name="patientBaseData.patientName" />
</drawer>
</div>
</template>
<script>
import timeLine from './time-line.vue'
import shrink from '@/components/360View/shrink'
import drawer from '@/components/360View/drawer'
import dataInfo from './dataInfo' //
import collection from './collection' //
import business from './business' //
import overView from '@/components/360View/overView' //
import routine from '@/components/360View/routine' //
import special from '@/components/360View/special' //
import followUpRecord from '@/components/360View/followUpRecord'
import keyIndicators from './key-indicators'
import imgRecord from './img-reccrd.vue'
import pacsList from '@/components/360View/pacs/patientList'
import medicalRecord from '@/components/360View/medicalRecord' //
import opticalFile from '@/components/360View/opticalFile' //
import eventBus from '@/page-subspecialty/utils/eventBus'
export default {
components: { timeLine, drawer, keyIndicators, shrink, business, collection, imgRecord, overView, medicalRecord, dataInfo, routine, special, followUpRecord, opticalFile, pacsList },
mixins: [],
props: {
patientId: {
type: String,
default: ''
},
onlyRead: {
type: Boolean,
default: false
},
isSearch: {
type: String,
default: ''
}
},
data() {
return {
display: false,
sharkFlag: true,
patientBaseData: {},
timeAxisNodeInfo: [], //
doctorId: '', //
date: '', //
source: '', //
collectList: '', //
drawerWidth: '',
timeAxisData: [], //
timeAxisAll: [], //
timeAxisType: '病史总览', // tab
foreList: [], //
afterList: [], //
dataType: 1,
kpilist: [], // kpicheckbox
ShiLiAndYanYaData: {}, //
isActive: false, // tab
type: '', //
defaultProps: {
children: 'children',
label: 'tagName'
},
jsArr: [],
dataForm: {}
}
},
computed: {
readOnly() {
if (this.$route.query.onlyRead) {
return JSON.parse(this.$route.query.onlyRead)
} else {
return this.onlyRead
}
}
},
watch: {
display(val) {
if (val) {
this.$refs.drawers.$el.style.display = 'inline-block'
}
}
},
created() {
this.getPatientData()
this.getTimeAxisData()
},
mounted() {
this.computerData()
if (this.isSearch === '3') {
this.timeAxisType = '视光档案'
} else {
this.timeAxisType = '病史总览'
}
if (this.$route.query.patientId) {
this.timeAxisType = '门诊病历'
}
},
methods: {
//
tabClick(type) {
this.timeAxisType = type.name
this.timeAxisNodeInfo = []
},
selectType(type) {
this.dataType = type
this.display = true
},
maskId(idCard) {
if (idCard) {
const reg = /^(.{6})(?:\d+)(.{4})$/
return idCard.replace(reg, '\$1******\$2')
}
},
computerData() {
//
eventBus.$off('sendForData')
eventBus.$on('sendForData', data => {
const arr = this.foreList.concat(data)
// const id = 'id'
this.foreList = this.unique(arr)
// this.foreList = arr.reduce((all, next) => all.some((item) => item[id] == next[id]) ? all : [...all, next], [])
this.openDataDrink()
})
},
unique(list) {
for (let i = 0; i < list.length - 1; i++) {
for (let j = i + 1; j < list.length; j++) {
if (list[i].id === list[j].id) {
list.splice(i, 1)
j--
}
}
}
return list
},
openDataDrink() {
this.dataType = 2
this.display = true
this.$nextTick(() => {
if (this.$refs.drawers && this.$refs.drawers.$el) {
this.$refs.drawers.$el.style.display = 'inline-block'
}
if (this.$refs.shrinks && this.$refs.shrinks.$el) {
this.$refs.shrinks.$el.style.zIndex = 999
this.$refs.drawers.selectShrink()
}
})
},
closeDrawer(val) {
this.display = val
},
changeType(val) {
this.dataType = val
this.display = true
},
handleDisplay(val) {
this.dataType = 1
if (val) {
this.display = true
this.$refs.drawers.$el.style.display = 'inline-block'
} else {
this.display = false
}
},
changeWidth() {
this.drawerWidth = (this.drawerWidth === '500px') ? '800px' : '500px'
},
backList() {
if (this.$route.query.patientId && !this.$route.query.doctorId) {
this.$router.go(-1)
} else if (this.$route.query.doctorId) {
this.$router.push('/outpatientManagement-call')
} else {
this.$parent.detailViewVisible = false
this.$parent.getDataListInitial()
}
},
// 360
handlePacs() {
// const baseUrl = 'http://z1.huimucloud.com:8085'
const baseUrl = 'http://10.80.5.32:8026'
// const baseUrl = 'http://192.168.0.85:8001'
const href = `${baseUrl}/EXAMINE_Report/InterFace?PatID=${this.patientId}&DoctorID=${this.employeeId}&PatIdKey=&ExamNo=`
window.open(href, '_blank')
// const { href } = this.$router.resolve({
// name: 'pacsManage'
// })
// window.open(href, '_blank')
},
// 360
closePacs() {
this.isActive = false
},
//
shrinkClick() {
this.drawer = !this.drawer
this.display = true
},
// id--
async getPatientData() {
const { data: res } = await this.$http.get(
'/patient/view/getPatientData',
{
params: {
patientId: this.patientId || this.$route.query.patientId
}
}
)
if (res.code === 0) {
this.patientBaseData = res.data ? res.data : {}
} else {
this.$message.error(res.msg)
}
},
// --
async getTimeAxisData() {
const { data: res } = await this.$http.get(
'/patient/view/getTimeAxisData',
{
params: {
patientId: this.patientId || this.$route.query.patientId
}
}
)
if (res.code === 0) {
if (res.data.length > 0) {
this.timeAxisData = res.data.length > 0 ? res.data : []
}
if (!res.data.length) {
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)
}
},
// --
async getTimeAxisNodeInfo(item) {
this.timeAxisType = item.groupName
const { data: res } = await this.$http.get('/patient/view/getTimeAxisNodeInfo', {
params: {
date: item.opDate,
groupName: item.groupName,
patientId: this.patientId || this.$route.query.patientId
}
})
if (res.code === 0) {
this.timeAxisNodeInfo = res.data || []
} else {
this.$message.error(res.msg)
}
}
}
}
</script>
<style lang="scss">
.container{
.el-tabs__content {
height: calc(100% - 38px);
}
.el-tabs--border-card {
box-shadow: none;
}
.el-tabs--border-card>.el-tabs__header{
background: #F0F2F5;
}
.el-dialog > .el-dialog__body {
height: calc(100% - 48px);
}
}
.detail-view{
.el-dialog > .el-dialog__body {
height: calc(100% - 50px);
}
}
</style>
<style lang="scss" scoped>
.container{
width: 100%;
height: 100%;
display: flex;
background: #F0F2F5;
.contentBox{
display: flex;
height: calc(100% - 100px);
}
.mr16{
margin-right: 16px;
}
.header{
width: 100%;
height: 88px;
padding: 8px;
position: relative;
margin-bottom: 16px;
box-sizing: border-box;
background: #FFFFFF;
border-radius: 4px;
.head-t{
position: absolute;
left: 155px;
top: 20px;
}
.head-b{
position: absolute;
left: 155px;
bottom: 20px;
font-size: 14px;
}
.head-r{
margin-right: 16px;
font-weight: 500;
font-size: 20px;
color: rgba(0, 0, 0, 0.88);
}
}
.key-indicators-shrink {
width: 32px;
margin-left: 8px;
height: 100%;
position: relative;
background: linear-gradient(90deg, rgba(47, 130, 255, 0.3) 0%, rgba(255, 255, 255, 0) 100%);
.icon-circle {
border-radius: 50%;
width: 24px;
height: 24px;
border: 2px solid rgba(30, 121, 255, 0.4);
display: flex;
justify-content: center;
align-items: center;
margin-top: 18px;
margin-left: 3px;
cursor: pointer;
}
.el-icon-arrow-right,.el-icon-arrow-left {
color: #fff;
font-weight: 700;
}
img {
width: 32px;
height: 142px;
}
.dataBase{
position: absolute;
display: inline-block;
color: #1C76FD;
margin-left: 6px;
writing-mode: vertical-rl;
letter-spacing: 3px;
cursor: pointer;
}
.fontColor{
color: white !important;
}
.dataOne{
top: 80px;
}
.dataTwo{
top: 210px;
}
.dataThree{
top: 328px;
}
.dataFour{
top: 455px;
}
.imgCur{
position: absolute;
left: 0;
top: 43px;
}
.imgOne{
position: absolute;
left: 0;
top: 163px;
}
.imgTwo{
position: absolute;
left: 0;
top: 287px;
}
.imgThree{
position: absolute;
left: 0;
top: 411px;
}
}
.leftBox{
width: 168px;
height: 100%;
margin-right: 16px;
background-color: white;
}
.rightBox{
width: 100%;
height: 100%;
background-color: #F0F2F5;
}
}
</style>

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

@ -75,7 +75,7 @@
import ourPatientRecord from './outPatientRecord'
import eyesVision from '@/components/360View/commonForm/eyesVision' //
import threeVision from '@/components/360View/commonForm/threeVision' //
import optometryForm from '@/components/360View/commonForm/optometryForm-copy' //
import optometryForm from '@/components/360View/commonForm/optometryForm' //
import deveopmentFile from '@/components/360View/commonForm/deveopmentFIle' //
export default {
components: {

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

@ -123,7 +123,7 @@ export default {
}
},
mounted() {
const user = window.sessionStorage.getItem('qg-userData')
const user = JSON.parse(window.sessionStorage.getItem('qg-userData'))
this.employeeId = user.employeeId
this.getPatientData()
this.getSpecialItem()

164
src/components/item-select/index.vue

@ -6,7 +6,7 @@
:key="index"
class="match-item"
closable
@close="removeItem(item)"
@close="btnRemove(item)"
@click="editItem(item)"
>
<span class="match-item-name">{{ item.itemName }}
@ -48,9 +48,47 @@
</el-form-item>
<!-- 匹配数值 -->
<el-form-item>
<el-input-number v-if="dataForm.kpiType==='number'" v-model="dataForm.queryValue" size="mini" class="item-query-value" placeholder="请输入" />
<el-input v-if="dataForm.kpiType==='string'" v-model="dataForm.queryValue" size="mini" class="item-query-value" placeholder="请输入" />
<el-date-picker v-if="dataForm.kpiType==='date'" v-model="dataForm.queryValue" size="mini" align="right" type="date" placeholder="选择日期" value-format="yyyy/MM/dd" />
<el-input-number
v-if="dataForm.kpiType==='number'"
v-model="dataForm.queryValue"
size="mini"
class="item-query-value"
placeholder="请输入"
/>
<el-input
v-if="dataForm.kpiType==='string'"
v-model="dataForm.queryValue"
size="mini"
class="item-query-value"
placeholder="请输入"
/>
<el-date-picker
v-if="dataForm.kpiType==='date'"
v-model="dataForm.queryValue"
size="mini"
align="right"
type="date"
placeholder="选择日期"
value-format="yyyy/MM/dd"
/>
<!-- 设备选择 -->
<el-select
v-if="dataForm.kpiType==='selectDevice'"
v-model="dataForm.queryValue"
filterable
size="mini"
placeholder="请选择"
>
<el-option
v-for="item in options_device"
:key="item.deviceId"
:label="item.deviceName+(item.location?'('+item.location+')':'')"
:value="item.deviceId"
>
<span style="float: left">{{ item.deviceName }}</span>
<span style="float: right; color: #8492a6; font-size: 13px">{{ item.location?item.location:'' }}</span>
</el-option>
</el-select>
</el-form-item>
<!-- 按钮 -->
<el-form-item>
@ -66,7 +104,22 @@
<script>
import cloneDeep from 'lodash/cloneDeep'
// import { getBirthday, getAge, formatDate } from '@/utils'
import { findItem, findPathArray } from '@/utils/tree'
// const options_matchType = [
// { label: '', value: 'matchQuery' },
// { label: '', value: 'rangeQuery' }
// ]
// const demo = {
// connection: '', //
// id: '', // ID
// queryType: '', //
// queryLogic: 'eq',
// queryValue: ''
// }
const options_matchValue = [
{ label: '匹配', value: 'eq' },
{ label: '大于', value: 'gt' },
@ -85,6 +138,7 @@ export default {
isAdd: false,
dataList: [],
options_kpi: [],
options_device: [],
options_matchValue: options_matchValue,
CascaderValue: [],
dataForm: {
@ -125,18 +179,32 @@ export default {
},
value(val) {
const arrayData = cloneDeep(val)
// dataList
this.dataList = arrayData.map(item => {
if (this.options_kpi.length === 0) { this.getOptionsKPI() }
const valueList = findPathArray(this.options_kpi, item.id, 'value', 'children')
const itemParentInfo = this.getItem(valueList[(valueList.length - 2) || 0])
console.log(1,valueList)
const itemInfo = this.getItem(valueList[(valueList.length - 1) || 0])
// console.log(item, itemInfo, itemParentInfo)
//
if (item.id.indexOf('DEVICE_ID') >= 0) {
const dict = cloneDeep(window.SITE_CONFIG['dict_device_item'])
const itemId = item.id.split('.')[0] || ''
const obj = dict.find(item2 => item2.value === itemId)
this.options_device = obj ? obj.children : []
}
return {
recId: item.recId,
itemName: itemParentInfo.label,
kpiId: item.id,
kpiName: itemInfo.label,
kpiType: itemInfo.type,
kpiName: item.label,
kpiType: item.type,
queryType: item.queryType, //
// queryTypeName: options_matchType.find((item2) => item2.value === item.queryType).label,
queryLogic: item.queryLogic, // queryValue=queryLogic
queryLogicName: options_matchValue.find((item2) => item2.value === item.queryLogic).label,
queryValue: item.queryValue //
@ -144,9 +212,10 @@ export default {
})
}
},
mounted() {
created() {
this.getOptionsKPI()
},
mounted() { },
methods: {
changeHandle_kpi(valueList) {
if (valueList.length > 0) {
@ -158,13 +227,22 @@ export default {
const item = this.getItem(value)
const oldValType = this.dataForm.kpiType
console.log(item)
this.dataForm.itemName = parentItem.label
this.dataForm.kpiId = item.value
this.dataForm.kpiId = item.id
this.dataForm.kpiName = item.label
this.dataForm.kpiType = item.type
this.dataForm.queryType = this.dataForm.kpiType === 'string' ? 'matchQuery' : 'rangeQuery'
this.dataForm.kpiType = item.fieldType
this.dataForm.queryType = (this.dataForm.kpiType === 'number' || this.dataForm.kpiType === 'date') ? 'rangeQuery' : 'matchQuery'
this.dataForm.queryValue = this.dataForm.kpiType === oldValType ? this.dataForm.queryValue : null
//
if (item.value.indexOf('DEVICE_ID') >= 0) {
// this.options_device = cloneDeep(window.SITE_CONFIG['dict_device']).filter(item2 => (item.value.split('.')[1] || '') === item2.datSource)
const dict = cloneDeep(window.SITE_CONFIG['dict_device_item'])
const itemId = item.value.split('.')[0] || ''
const obj = dict.find(item2 => item2.value === itemId)
this.options_device = obj ? obj.children : []
}
}
},
//
@ -173,9 +251,11 @@ export default {
...item,
connection: this.connection,
id: item.kpiId,
// queryType: item.queryType,
// queryValue: {}, // postgetlogic
queryValue: String(item.queryValue)
}
// filterItem.queryValue[item.queryLogic] = String(item.queryValue)
return filterItem
},
@ -187,7 +267,7 @@ export default {
return list
},
//
removeItem(item) {
btnRemove(item) {
const index = this.dataList.findIndex((item2, index) => {
return item2 === item
})
@ -195,7 +275,7 @@ export default {
this.$emit('remove', this.convertItem(item))
this.$emit('input', this.convertItemList(this.dataList))
this.$emit('getDataListInitial')
this.$emit('change', this.convertItemList(this.dataList))
},
//
editItem(item) {
@ -209,13 +289,17 @@ export default {
this.CascaderValue = findPathArray(this.options_kpi, this.dataForm.kpiId, 'value', 'children')
},
btnAdd() {
this.resetDataForm()
this.isAdd = true
},
btnCancel() {
this.isAdd = false
},
btnOk() {
if (!this.dataForm.kpiId ||
this.dataForm.queryValue === null ||
this.dataForm.queryValue === undefined ||
this.dataForm.queryValue === '') {
this.dataForm.queryValue === null ||
this.dataForm.queryValue === undefined ||
this.dataForm.queryValue === '') {
this.$message.error('请明确查询条件!')
return false
}
@ -224,22 +308,41 @@ export default {
this.$emit('add', this.convertItem(item))
this.$emit('input', this.convertItemList(this.dataList))
this.$emit('getDataListInitial')
this.$emit('change', this.convertItemList(this.dataList))
},
btnCancel() {
this.isAdd = false
resetDataForm() {
this.CascaderValue = []
this.dataForm = {
itemName: '',
kpiName: '',
kpiId: '',
kpiType: 'string',
queryType: 'matchQuery',
queryLogic: 'eq',
queryValue: ''
}
},
getItem(value) {
return findItem(this.options_kpi, value, 'value', 'children')
},
getOptionsKPI() {
async getOptionsKPI() {
if (window.SITE_CONFIG['dict_colSearch']) {
this.options_kpi = window.SITE_CONFIG['dict_colSearch']
} else {
//
this.$http.get('/sys/table/dict/getList', { params: { type: 1 }}).then(({ data: res }) => {
this.options_kpi = res.data
})
const { data: res } = await this.$http.get('/sys/table/dict/getList', { params: { type: 1, isSearch: 1 }})
if (res.data.length) {
res.data.forEach(item => {
item.label = item.tableDescription
item.value = item.tableName
item.list.forEach(row => {
row.label = row.fieldDescription
row.value = row.fieldName
})
item.children = JSON.parse(JSON.stringify(item.list))
})
}
this.options_kpi = res.data
}
}
}
@ -248,8 +351,8 @@ export default {
</script>
<style lang="scss">
.kpi-select-filter .el-cascader-menu__wrap{
height: 400px;
.kpi-select-filter .el-cascader-menu__wrap {
height: 400px;
}
</style>
@ -265,7 +368,7 @@ export default {
margin-left: 5px;
margin-right: 5px;
}
.match-item-kpi{
.match-item-kpi {
color: #fa0d35;
margin-left: 3px;
margin-right: 3px;
@ -286,16 +389,15 @@ export default {
cursor: pointer;
}
.form-query{
.item-query-kpi{
.form-query {
.item-query-kpi {
width: 300px;
}
.item-query-type{
.item-query-type {
width: 100px;
}
.item-query-logic{
.item-query-logic {
width: 100px;
}
}
</style>

10
src/components/patient-search/index.vue

@ -81,7 +81,7 @@
</template>
<script>
import detailView from '@/components/360View/index1' // 360
import detailView from '@/components/360View/index' // 360
import checked from '@/mixins/checked'
import checkedFooter from '@/components/checked-footer'
import dataList from './data-list.vue'
@ -105,7 +105,7 @@ export default {
return {
uploadUrl: window.SITE_CONFIG['apiURL'] + '/patient/data/searchByExcel',
headers: {
token: window.sessionStorage.get('xa-token')
token: window.sessionStorage.getItem('xa-token')
},
dataForm: {},
keyWord: '',
@ -121,11 +121,7 @@ export default {
queryItemData_must: [],
queryItemData_should: [],
queryItemData_must_not: [],
dataList: [
{
name: 1
}
],
dataList: [],
currentTableList: []
}
},

2
src/i18n/zh-CN.js

@ -3,7 +3,7 @@ const t = {}
t.loading = '加载中...'
t.brand = {}
t.brand.lg = '眼科电子病历&科研'
t.brand.lg = '眼科工作平台'
t.brand.mini = '屈光'
t.add = '新增'

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

@ -47,6 +47,12 @@ export const pageRoutes = [
component: () => import('@/page-subspecialty/views/pages/pacs/index'),
name: 'pacs',
meta: { title: 'pacs浏览器', isTab: true }
},
{
path: '/subjectMgt',
component: () => import('@/page-subspecialty/views/pages/subjectManage/index'),
name: 'subjectMgt',
meta: { title: '课题管理', isTab: true }
}
]
@ -86,7 +92,7 @@ export const moduleRoutes = {
{
path: '/360view',
name: '360view',
component: () => import('@/components/360View/index1.vue')
component: () => import('@/components/360View/index.vue')
}
]
}

2
src/page-subspecialty/views/main-navbar.vue

@ -5,7 +5,7 @@
<h1 class="aui-navbar__brand" @click="logoClick">
<a class="aui-navbar__brand-lg" href="javascript:;" style="text-align:center;">
<svg-icon icon-class="icon-yzk-login" style="font-size:36px" />
<div style="margin-top:5px;">眼科电子病历&科研</div>
<div style="margin-top:5px;">眼科工作平台</div>
</a>
<a class="aui-navbar__brand-mini" href="javascript:;"> <svg-icon icon-class="icon-yzk-login" style="font-size:36px" /></a>
</h1>

2
src/page-subspecialty/views/modules/nurseManagement/reservation/subList/index.vue

@ -110,7 +110,7 @@
</template>
<script>
import mixinViewModule from '@/mixins/view-module'
import DetailView from '@/components/360View/index1.vue'
import DetailView from '@/components/360View/index.vue'
import ReDialog from '@/page-subspecialty/views/modules/nurseManagement/reservation/subList/reDialog.vue'
import AddProject from '@/page-subspecialty/views/modules/nurseManagement/reservation/subSetting/addProject.vue'
import AddPatientOrder

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

@ -84,7 +84,7 @@
</el-table-column>
<el-table-column prop="remark" label="备注" header-align="center" align="center" />
<el-table-column prop="updateDate" label="就诊时间" header-align="center" align="center" width="165" />
<el-table-column prop="callSort" label="排队序号" header-align="center" align="center" width="90" />
<el-table-column prop="callSort" label="排队序号" header-align="center" align="center" width="90"/>
<el-table-column prop="callStatus" label="叫号状态" header-align="center" align="center" width="90">
<template slot-scope="scope">
{{ scope.row.callStatus | callStatus }}
@ -128,7 +128,7 @@ import mixinViewModule from '@/mixins/view-module'
import tableAutoHeight from '@/mixins/tableAutoHeight'
import AddOrUpdate from './patient-add-or-update'
import hisAdd from './HIS-add'
import detailView from '@/components/360View/index1' // 360
import detailView from '@/components/360View/index' // 360
export default {
components: {
hisAdd,
@ -273,7 +273,7 @@ export default {
platform: 3
}
})
if (res.code === 0) {
if (res.code === 0){
} else {
this.$message.error(res.msg)
}

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

@ -126,7 +126,7 @@ import mixinViewModule from '@/mixins/view-module'
import tableAutoHeight from '@/mixins/tableAutoHeight'
import AddOrUpdate from './patient-add-or-update'
import hisAdd from './HIS-add'
import detailView from '@/components/360View/index1' // 360
import detailView from '@/components/360View/index' // 360
export default {
components: {
hisAdd,

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

@ -79,12 +79,12 @@
>
<el-table-column prop="patientId" label="登记号" header-align="center" align="center" width="120" />
<!-- <el-table-column prop="patientId" label="就诊号" header-align="center" align="center" />-->
<el-table-column label="状态" header-align="center" align="center" width="100">
<el-table-column label="状态" header-align="center" align="center" width="70">
<template slot-scope="scope">
{{ scope.row.patientStatus | patientStatus }}
</template>
</el-table-column>
<el-table-column prop="patientName" label="患者姓名" header-align="center" align="center" width="100" />
<el-table-column prop="patientName" label="患者姓名" header-align="center" align="center" width="95" />
<el-table-column label="出生日期" header-align="center" align="center" width="110">
<template slot-scope="scope">
{{ scope.row.patientBirthday ? $options.filters.dateFilterTwo( scope.row.patientBirthday): '- ' }}
@ -103,8 +103,8 @@
{{ scope.row.zlEye === 'os' ? '左眼' : ( scope.row.zlEye === 'od' ? '右眼' : '') }}
</template>
</el-table-column>
<el-table-column prop="mzDoctorName" label="门诊医师" header-align="center" align="center" width="100" />
<el-table-column label="操作员" header-align="center" align="center" width="100">
<el-table-column prop="mzDoctorName" label="门诊医师" header-align="center" align="center" width="95" />
<el-table-column label="操作员" header-align="center" align="center" width="95">
<template slot-scope="scope">
{{ getOperator(scope.row.zlProjectList) }}
</template>
@ -159,7 +159,7 @@ import mixinViewModule from '@/mixins/view-module'
import tableAutoHeight from '@/mixins/tableAutoHeight'
import AddOrUpdate from './patient-add-or-update'
import hisAdd from './HIS-add'
import detailView from '@/components/360View/index1' // 360
import detailView from '@/components/360View/index' // 360
export default {
components: {
hisAdd,

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

@ -2,13 +2,13 @@
<template>
<div class="search">
<patient-search ref="patientSearch" :query-item.sync="queryItem" :size="'small'">
<template slot="btn">
<el-button type="primary" size="small" @click="btnPretestClick">预实验
<el-tooltip content="申请预实验" placement="top" effect="light">
<i class="el-icon-takeaway-box el-icon--right" />
</el-tooltip>
</el-button>
</template>
<!-- <template slot="btn">-->
<!-- <el-button type="primary" size="small" @click="btnPretestClick">预实验-->
<!-- <el-tooltip content="申请预实验" placement="top" effect="light">-->
<!-- <i class="el-icon-takeaway-box el-icon&#45;&#45;right" />-->
<!-- </el-tooltip>-->
<!-- </el-button>-->
<!-- </template>-->
</patient-search>
<dialog-add-or-update v-if="addOrUpdateVisible" ref="addOrUpdate" :query-item="queryItem" />
</div>

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

@ -164,7 +164,6 @@
width="120"
>
<template slot-scope="scope">
<span v-if="opPermission(scope.row.projectAdminUserId)">
<el-button
v-if="$hasPermission('') && scope.row.approvalStatus==3 "
@ -197,7 +196,6 @@
>浏览
</el-button>
</span>
</template>
</el-table-column>
</el-table>
@ -291,7 +289,8 @@ export default {
data() {
return {
mixinViewModuleOptions: {
getDataListURL: '/project/page',
getDataListURL: '/project/approvalPage',
// getDataListURL: '/project/page',
getDataListIsPage: true,
deleteURL: '/project',
deleteIsBatch: false
@ -314,48 +313,13 @@ export default {
joinedListUserId: []
}
},
mounted() {
this.dataList = [{
id: '1469220284870430722',
name: 'test5',
deptId: '1422889087457570818',
deptName: null,
code: 'test5',
projectType: '回顾性',
status: 2,
projectAdminUserId: '1443483219713331202',
projectAdminUserName: '金海珍',
beginDate: '2021-12-15',
endDate: '2021-12-23',
approvalStatus: 3,
drugApprovalNumber: '123',
filePathList: [
{
name: '新建 PPTX 演示文稿-629199003223990272.pdf',
url: '课题附件/新建 PPTX 演示文稿-629199003223990272.pdf'
},
{
name: '新建 PPTX 演示文稿-629199090620702720.pdf',
url: '课题附件/新建 PPTX 演示文稿-629199090620702720.pdf'
},
{
name: '新建 PPTX 演示文稿-629199176528437248.pdf',
url: '课题附件/新建 PPTX 演示文稿-629199176528437248.pdf'
}
],
projectAdmin: null,
patientNum: 4,
kpiList: [
'0000000018',
'0000000019'
],
createDate: '2021-12-10 16:19:47',
approvalComment: null
}]
},
methods: {
windowOpen_project(projectId, deptId) {
window.open(`project/home?id=${projectId}`)
// window.open(`project/home?id=${projectId}`)
const { href } = this.$router.resolve({
name: 'subjectMgt'
})
window.open(href, '_blank')
},
handleChange(value) {
this.joinedListUserId = value

2
src/page-subspecialty/views/modules/systemManagement/team/edit-password.vue

@ -66,7 +66,7 @@ export default {
methods: {
init() {
this.visible = true
this.loginInfo = window.sessionStorage.getItem('qg-userData')
this.loginInfo = JSON.parse(window.sessionStorage.getItem('qg-userData'))
this.$nextTick(() => {
this.$refs.dataForm.resetFields() //
})

2
src/page-subspecialty/views/modules/systemManagement/team/index.vue

@ -105,7 +105,7 @@ export default {
created() {
//
this.getRoleName()
this.qgUserData = window.sessionStorage.getItem('qg-userData')
this.qgUserData = JSON.parse(window.sessionStorage.getItem('qg-userData'))
},
methods: {
//

2
src/page-subspecialty/views/pages/login.vue

@ -9,7 +9,7 @@
<!-- <img src="../../../assets/img/login_bgm.png" alt="" class="login-bgm"> -->
<div class="login-content">
<div class="login-content-title">
<p class="main-title">眼科信息系统</p>
<p class="main-title">眼科工作平台</p>
<p class="subtitle-title">登录</p>
</div>
<el-form

56
src/page-subspecialty/views/pages/subjectManage/index.vue

@ -0,0 +1,56 @@
<template>
<div class="subjectManagement">
<el-container style="">
<el-aside width="200px" style="background-color: rgb(238, 241, 246)">
<el-menu :default-openeds="['1', '3']">
</el-menu>
</el-aside>
<el-container>
<el-header style="text-align: right; font-size: 12px">
<el-dropdown>
<i class="el-icon-setting" style="margin-right: 15px" />
<el-dropdown-menu slot="dropdown">
<el-dropdown-item>查看</el-dropdown-item>
<el-dropdown-item>新增</el-dropdown-item>
<el-dropdown-item>删除</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
<span>王小虎</span>
</el-header>
<el-main>
<el-table :data="tableData">
<el-table-column prop="date" label="日期" width="140" />
<el-table-column prop="name" label="姓名" width="120" />
<el-table-column prop="address" label="地址" />
</el-table>
</el-main>
</el-container>
</el-container>
</div>
</template>
<script>
export default {
components: {
},
data() {
return {
}
},
mounted() {
},
methods: {
}
}
</script>
<style lang="scss" scoped>
.subjectManagement{
width: 100%;
height: 100%;
}
</style>
Loading…
Cancel
Save