Browse Source

peter

360view
newPeter7 2 years ago
parent
commit
3003dd79b2
  1. 2
      src/components/360View/commonForm/eyesVision.vue
  2. 2
      src/components/360View/commonForm/optometryForm-copy.vue
  3. 607
      src/components/360View/commonForm/optometryForm.vue
  4. 2
      src/components/360View/commonForm/threeVision.vue
  5. 2
      src/components/360View/special/index.vue
  6. 2
      src/i18n/zh-CN.js
  7. 6
      src/page-subspecialty/router/index.js
  8. 318
      src/page-subspecialty/router/index.js.bak
  9. 2
      src/page-subspecialty/views/main-navbar.vue
  10. 14
      src/page-subspecialty/views/modules/scientificManagement/search/index.vue
  11. 50
      src/page-subspecialty/views/modules/scientificManagement/sys/project.vue
  12. 2
      src/page-subspecialty/views/modules/systemManagement/team/edit-password.vue
  13. 2
      src/page-subspecialty/views/modules/systemManagement/team/index.vue
  14. 2
      src/page-subspecialty/views/pages/login.vue
  15. 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

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

@ -578,7 +578,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.dataForm.tongk = '正常瞳孔'

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;
}
}

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

@ -1245,7 +1245,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() {

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()

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 = '新增'

6
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 }
}
]

318
src/page-subspecialty/router/index.js.bak

@ -0,0 +1,318 @@
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)
// 解决Vue-Router升级导致的Uncaught(in promise) navigation guard问题----------
const originalPush = Router.prototype.push
Router.prototype.push = function push(location, onResolve, onReject) {
if (onResolve || onReject) return originalPush.call(this, location, onResolve, onReject)
return originalPush.call(this, location).catch(err => err)
}
// 解决Vue-Router升级导致的Uncaught(in promise) navigation guard问题----------
// 页面路由(独立页面)
export const pageRoutes = [
{
path: '/404',
component: () => import('@/page-subspecialty/views/pages/404'),
name: '404',
meta: { title: '404未找到' },
beforeEnter(to, from, next) {
// 拦截处理特殊业务场景
// 如果, 重定向路由包含__双下划线, 为临时添加路由
if (/__.*/.test(to.redirectedFrom)) {
return next(to.redirectedFrom.replace(/__.*/, ''))
}
next()
}
},
{
path: '/login',
component: () => import('@/page-subspecialty/views/pages/login'),
name: 'login',
meta: { title: '登录' }
},
{
path: '/pacsManage',
component: () => import('@/page-subspecialty/views/pages/pacsManage/index'),
name: 'pacsManage',
meta: { title: 'pacs浏览器', isTab: true }
},
{
path: '/pacs',
component: () => import('@/page-subspecialty/views/pages/pacs/index'),
name: 'pacs',
meta: { title: 'pacs浏览器', isTab: true }
}
]
// 模块路由(基于主入口布局页面)*8
export const moduleRoutes = {
path: '/',
component: () => import('@/page-subspecialty/views/main'),
name: 'main',
redirect: { name: 'outpatientManagement' },
meta: { title: '首页' },
children: [
{
path: '/outpatientManagement',
component: () => import('@/page-subspecialty/views/modules/outpatientManagement/call'),
name: 'outpatientManagement',
meta: { title: '日常出诊', isTab: true }
},
// ok镜
{
path: '/patientInfo',
name: 'patientInfo',
meta: { title: '详情', isTab: true },
component: () => import('@/page-subspecialty/views/modules/optometryManagement/seeDoctor/index')
},
{
path: '/iframe',
component: null,
name: 'iframe',
meta: { title: 'iframe', isTab: true }
},
{
path: '/redirect',
name: 'redirect',
component: () => import('@/page-subspecialty/views/redirect')
},
{
path: '/360view',
name: '360view',
component: () => import('@/components/360View/index1.vue')
}
]
}
export function addDynamicRoute(routeParams, router) {
// 组装路由名称, 并判断是否已添加, 如是: 则直接跳转
var routeName = routeParams.routeName
var dynamicRoute = window.SITE_CONFIG['dynamicRoutes'].filter(item => item.name === routeName)[0]
if (dynamicRoute) {
return router.push({ name: routeName, params: routeParams.params })
}
// 否则: 添加并全局变量保存, 再跳转
dynamicRoute = {
path: routeName,
component: () => Promise.resolve(require(`@/page-subspecialty/views/modules/${routeParams.path}`).default),
// component: () => import(`@/views/modules/${routeParams.path}`),
name: routeName,
meta: {
...window.SITE_CONFIG['contentTabDefault'],
menuId: routeParams.menuId,
title: `${routeParams.title}`
}
}
router.addRoutes([
{
...moduleRoutes,
name: `main-dynamic__${dynamicRoute.name}`,
children: [dynamicRoute]
}
])
window.SITE_CONFIG['dynamicRoutes'].push(dynamicRoute)
router.push({ name: dynamicRoute.name, params: routeParams.params })
}
const createRouter = () => new Router({
mode: 'history',
scrollBehavior: () => ({ y: 0 }),
routes: pageRoutes.concat(moduleRoutes)
})
const router = createRouter()
// [vue-router] Duplicate named routes definition 重复的命名路由定义
// 动态路由退出再登录会出现警告重复路由
// 解决方案:在退出时调用resetRouter()方法
export function resetRouter() {
const newRouter = createRouter()
router.matcher = newRouter.matcher // reset router
}
router.beforeEach((to, from, next) => {
// 添加动态(菜单)路由
// 已添加或者当前路由为页面路由, 可直接访问
if (window.SITE_CONFIG['dynamicMenuRoutesHasAdded'] || fnCurrentRouteIsPageRoute(to, pageRoutes)) {
return next()
}
if (to.path === from.path) {
return
}
if (to.name === 'login' || to.path === '/login' || to.path === 'satusScreen' || to.name === 'satusScreen') {
next()
} else if (to.name === '360view' && to.query.doctorId) {
loginByDocId(to.query.doctorId, next, to.fullPath)
} else {
// 获取字典列表, 添加并全局变量保存
// http.get('/sys/dict/type/all').then(({ data: res }) => {
// if (res.code !== 0) {
// return
// }
// window.SITE_CONFIG['dictList'] = res.data
// }).catch(() => {})
// 获取左侧菜单列表,添加并全局变量保存
http.get('/sys/menu/nav').then(({ data: res }) => {
if (res.code !== 0) {
Vue.prototype.$message.error(res.msg)
return next({ name: 'login' })
}
window.SITE_CONFIG['menuList'] = res.data
}).catch(() => {
return next({ name: 'login' })
})
// 获取菜单管理菜单列表,并添加动态路由
http.get('/sys/menu/list', {
params: {
type: 0
}
}).then(({ data: res }) => {
if (res.code !== 0) {
Vue.prototype.$message.error(res.msg)
return next({ name: 'login' })
}
// window.SITE_CONFIG['menuList'] = res.data
const menuListChild = res.data.filter(item => item.children.length > 0)
fnAddDynamicMenuRoutes(JSON.parse(JSON.stringify(res.data)), menuListChild.length)
next({ ...to, replace: true })
}).catch(() => {
// console.log(123)
return next({ name: 'login' })
})
}
})
function getNavList(next) {
http.get('/sys/menu/nav').then(({ data: res }) => {
if (res.code !== 0) {
Vue.prototype.$message.error(res.msg)
return next()
}
window.SITE_CONFIG['menuList'] = res.data
}).catch(() => {
return next({ name: 'login' })
})
}
function muneList(next) {
http.get('/sys/menu/list', {
params: {
type: 0
}
}).then(({ data: res }) => {
if (res.code !== 0) {
Vue.prototype.$message.error(res.msg)
return next({ name: 'login' })
}
// window.SITE_CONFIG['menuList'] = res.data
const menuListChild = res.data.filter(item => item.children.length > 0)
fnAddDynamicMenuRoutes(JSON.parse(JSON.stringify(res.data)), menuListChild.length)
}).catch(() => {
return next({ name: 'login' })
})
}
function loginByDocId(doctorId, next) {
const params = {
doctorId: doctorId
}
http.post('/loginByDid', params).then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg)
}
console.log(res)
// Cookies.set('xa-token', res.data.token)
window.sessionStorage.setItem('xa-token', res.data.token)
window.sessionStorage.setItem('qg-userData', JSON.stringify(res.data.currentUser))
getNavList(next)
muneList(next)
return next()
}).catch(() => { })
}
/**
* 判断当前路由是否为页面路由
* @param {*} route 当前路由
* @param {*} pageRoutes 页面路由
*/
function fnCurrentRouteIsPageRoute(route, pageRoutes = []) {
let temp = []
for (let i = 0; i < pageRoutes.length; i++) {
if (route.path === pageRoutes[i].path) {
return true
}
if (pageRoutes[i].children && pageRoutes[i].children.length >= 1) {
temp = temp.concat(pageRoutes[i].children)
}
}
return temp.length >= 1 ? fnCurrentRouteIsPageRoute(route, temp) : false
}
/**
* 添加动态(菜单)路由
* PH自上而下遍历累积平铺
* @param {*} menuList 菜单列表
* @param {*} routes 递归创建的动态(菜单)路由
*/
function fnAddDynamicMenuRoutes(menuList = [], menuListChildLength, routes = []) {
let index = 0
menuList.forEach((item, i) => {
// eslint-disable-next-line
let URL = (item.url || '').replace(/{{([^}}]+)?}}/g, (s1, s2) => eval(s2)) // URL支持{{ window.xxx }}占位符变量
item['meta'] = {
...window.SITE_CONFIG['contentTabDefault'],
menuId: item.id,
title: item.name
}
if (isURL(URL)) {
item['path'] = item['name'] = `i-${item.id}`
item['meta'].push({
iframeURL: URL
})
} else {
// console.log(URL)
URL = URL.replace(/^\//, '').replace(/_/g, '-')
item['path'] = '/' + URL.replace(/\//g, '-')
item['name'] = URL.replace(/\//g, '-')
// 坑!!!父级也必须要有component,父级要有自己的vue组件,父级路由必须有<router-view />占位符
// 其孩子children才能展示出来,孩子展示在父级占位符的地方
URL.includes('seeDoctor') ? URL = 'seeDoctor' : '' // 不同父级有相同子级seeDoctor,防止面包屑冲突,动态路由名字区分设置为seeDoctor、seeDoctorOne,在寻找组件时替换回seeDoctor,可以找到对应组件路径
item['component'] = () => Promise.resolve(require(`@/page-subspecialty/views/modules/${URL}`).default)
// 如果是父级给父级添加重定向到子菜单第一项
if (item.children.length > 0 && item.children[0].url) {
// console.log(item)
// isShow:0显示不菜单 1显示菜单
item.children[0].isShow === 0 ? '' : item['redirect'] = '/' + item.children[0].url.replace(/\//g, '-')
}
}
if (item.children.length > 0) {
index++
fnAddDynamicMenuRoutes(item.children)
}
})
// 此处一定要加判断,因为此方法在递归,要等到递归完成后再执行下面的内容
// 坑!!!如果不加此判断,this.$route.matched面包屑的父级就不会展示
if (menuListChildLength === index) {
routes = menuList
// PH:底层调用一次
// 添加路由
router.addRoutes([
{
...moduleRoutes,
name: 'main-dynamic-menu',
children: [...routes]
},
{ path: '*', redirect: { name: '404' }}
])
// console.log('----------------------')
window.SITE_CONFIG['dynamicMenuRoutes'] = routes
window.SITE_CONFIG['dynamicMenuRoutesHasAdded'] = true
}
}
export default router

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>

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