Browse Source

修改

master
刘灿 5 months ago
parent
commit
b6a0b7b2d6
  1. 6
      src/assets/scss/common.scss
  2. 2
      src/components/H5form/eye-question.vue
  3. 3
      src/components/H5form/fzbl.vue
  4. 2
      src/components/H5form/operation-plan.vue
  5. 8
      src/components/H5form/operation-record.vue
  6. 20
      src/components/H5form/operationed-check-record.vue
  7. 39
      src/components/H5form/qg-dzbl.vue
  8. 4
      src/components/H5form/qgyj.vue
  9. 2
      src/components/H5form/talk-record.vue
  10. 4
      src/mixins/clearContent.js
  11. 15
      src/mixins/signGet.js
  12. 24
      src/page-subspecialty/views/modules/seeDoctor/archives/index.vue
  13. 137
      src/page-subspecialty/views/modules/statisticalManagement/index.vue
  14. 2
      src/page-subspecialty/views/modules/statisticalManagement/jzrc-echarts.vue
  15. 20
      src/page-subspecialty/views/modules/surgicalManagement/operationList/index.vue
  16. 10
      src/page-subspecialty/views/modules/surgicalManagement/schedule/doctor-schedule.vue
  17. 41
      src/page-subspecialty/views/pages/login.vue
  18. 43
      static/js/deepseek.js
  19. 9
      vue.config.js

6
src/assets/scss/common.scss

@ -1472,4 +1472,10 @@ img {
.el-radio:focus:not(.is-focus):not(:active):not(.is-disabled) .el-radio__inner {
box-shadow: none !important;
}
.colorInputRed {
.el-input__inner,.el-input.is-disabled,.el-input.is-disabled .el-input__inner,.el-dropdown-selfdefine{
color: red;
}
}

2
src/components/H5form/eye-question.vue

@ -102,7 +102,7 @@
</el-form-item>
</span>
<span class="padding-left-10">
<el-checkbox v-model="formListValue.djdsBX" label="不详" @change="radioChange('djdsCheck')" />
<el-checkbox v-model="formListValue.djdsBx" label="不详" @change="radioChange('djdsCheck')" />
</span>
</div>
</span>

3
src/components/H5form/fzbl.vue

@ -215,6 +215,7 @@ export default {
cbzd: '',
clyj: '',
createSign: '',
ysSign:'',
signDate: ''
},
// 1:/() 2:3:/()4:,5:,6:,8:10:
@ -246,7 +247,7 @@ export default {
},
//
getSign() {
this.getSystomSign('', 'signDate', 'createCode', 'createName')
this.getSystomSign('ysSign', 'signDate', 'createCode', 'createName', 'createSign')
},
//
async getInfo() {

2
src/components/H5form/operation-plan.vue

@ -778,7 +778,7 @@ export default {
type: 'success'
})
this.saveEidtTitle = '编辑'
this.statusHandle()
// this.statusHandle() //
setTimeout(() => {
if (this.formListValue.isShowPatientOrDlrSign && this.caOpenStatus) {

8
src/components/H5form/operation-record.vue

@ -1054,7 +1054,7 @@
<span>
技师签字
<span
v-if="!formListValue.jsSign && !isSaveSeccess">{{ formListValue.jsName ? formListValue.jsName : '-' }}</span>
v-if="!formListValue.jsSign">{{ formListValue.jsName ? formListValue.jsName : '-' }}</span>
<img v-else :src="formListValue.jsSign" alt="" width="90px">
</span>
<span style="padding-left:35px;">日期{{
@ -1133,7 +1133,7 @@
<span>
主刀签字
<span
v-if="!formListValue.zdSign && !isSaveSeccess">{{ formListValue.zdName ? formListValue.zdName : '-' }}</span>
v-if="!formListValue.zdSign">{{ formListValue.zdName ? formListValue.zdName : '-' }}</span>
<img v-else :src="formListValue.zdSign" alt="" width="90px">
</span>
<div style="padding-left:35px;">
@ -1592,8 +1592,8 @@ export default {
}
})
}
res.data.jsSign ? '' : this.getSystomSign('jsSign', 'jsSignDate', 'jsCode', 'jsName')
res.data.zdSign ? '' : this.getZdDoctorSign('zdSign', 'zdSignDate', 'zdCode', 'zdName')
res.data.jsName || res.data.jsSign ? '' : this.getSystomSign('jsSign', 'jsSignDate', 'jsCode', 'jsName')
res.data.zdName || res.data.zdSign ? '' : this.getZdDoctorSign('zdSign', 'zdSignDate', 'zdCode', 'zdName')
console.log(this.formListValue)
} else {
this.$message.error(res.msg)

20
src/components/H5form/operationed-check-record.vue

@ -343,17 +343,17 @@
</div>
<!-- 眼压 -->
<div v-if="scope.row.YanYA.length>0" class="width-100 center">
<el-input v-model="formListValue.yyOd1" placeholder="" />/
<el-input v-model="formListValue.yyOd2" placeholder="" />mmHg@
<el-input v-model="formListValue.yyOd1" placeholder="" :class="formListValue.yyOd1 > 21 ? 'colorInputRed' :''"/>/
<el-input v-model="formListValue.yyOd2" placeholder="" :class="formListValue.yyOd2 > 21 ? 'colorInputRed' :''"/>mmHg@
</div>
<!-- 角膜地形图 -->
<div v-if="scope.row.JMDXT.length>0" class="left">
<div class="width-60">
K2
<el-input v-model="formListValue.jmdxtOd1" placeholder="" />
<el-input v-model="formListValue.jmdxtOd1" placeholder="" :class="formListValue.jmdxtOd1 > 48 ? 'colorInputRed' :''"/>
/
K1
<el-input v-model="formListValue.jmdxtOd2" placeholder="" />@
<el-input v-model="formListValue.jmdxtOd2" placeholder="" :class="formListValue.jmdxtOd2 > 48 ? 'colorInputRed' :''"/>@
<el-input v-model="formListValue.jmdxtOd3" placeholder="" />
</div>
</div>
@ -363,7 +363,7 @@
</div>
<!-- 内皮细胞密度/6A -->
<div v-if="scope.row.npxbmd.length>0" class="width-100 center">
<el-input v-model="formListValue.npxbmdOd1" placeholder="" />/
<el-input v-model="formListValue.npxbmdOd1" placeholder="" :class="formListValue.npxbmdOd1 < 2000? 'colorInputRed' :''"/>/
<el-input v-model="formListValue.npxbmdOd2" placeholder="" />
</div>
<!-- OCT上皮/最薄角膜厚度 -->
@ -752,17 +752,17 @@
</div>
<!-- 眼压 -->
<div v-if="scope.row.YanYA.length>0" class="width-100 center">
<el-input v-model="formListValue.yyOs1" placeholder="" />/
<el-input v-model="formListValue.yyOs2" placeholder="" />mmHg@
<el-input v-model="formListValue.yyOs1" placeholder="" :class="formListValue.yyOs1 > 21 ? 'colorInputRed' :''"/>/
<el-input v-model="formListValue.yyOs2" placeholder="" :class="formListValue.yyOs2 > 21 ? 'colorInputRed' :''"/>mmHg@
</div>
<!-- 角膜地形图 -->
<div v-if="scope.row.JMDXT.length>0" class="left">
<div class="width-60">
K2
<el-input v-model="formListValue.jmdxtOs1" placeholder="" />
<el-input v-model="formListValue.jmdxtOs1" placeholder="" :class="formListValue.jmdxtOs1 > 48 ? 'colorInputRed' :''"/>
/
K1
<el-input v-model="formListValue.jmdxtOs2" placeholder="" />@
<el-input v-model="formListValue.jmdxtOs2" placeholder="" :class="formListValue.jmdxtOs2 > 48 ? 'colorInputRed' :''"/>@
<el-input v-model="formListValue.jmdxtOs3" placeholder="" />
</div>
</div>
@ -772,7 +772,7 @@
</div>
<!-- 内皮细胞密度/6A -->
<div v-if="scope.row.npxbmd.length>0" class="width-100 center">
<el-input v-model="formListValue.npxbmdOs1" placeholder="" />/
<el-input v-model="formListValue.npxbmdOs1" placeholder="" :class="formListValue.npxbmdOs1 < 2000? 'colorInputRed' :''"/>/
<el-input v-model="formListValue.npxbmdOs2" placeholder="" />
</div>
<!-- OCT上皮/最薄角膜厚度 -->

39
src/components/H5form/qg-dzbl.vue

@ -255,7 +255,8 @@
<el-radio label="有"></el-radio>
<el-radio label="无"></el-radio>
</el-radio-group>
<span v-if="formListValue.dyjRadio === '有'" class="width-60">
<span v-if="formListValue.dyjRadio === ''" class="width-60"
:class="formListValue.dyjTimeInput < 14 && formListValue.dyjUnit === '天' ? 'colorInputRed' : ''">
<el-input v-model="formListValue.dyjTimeInput" placeholder="" size="small"
class="margin-right-6" />
<el-dropdown trigger="click" @command="dropdownHandle($event,'dyjUnit')">
@ -294,7 +295,7 @@
</el-form-item>
</span>
<span class="padding-left-10">
<el-checkbox v-model="formListValue.djdsBX" label="不详" @change="radioChange('djdsCheck')" />
<el-checkbox v-model="formListValue.djdsBx" label="不详" @change="radioChange('djdsCheck')" />
</span>
</div>
</div>
@ -846,10 +847,10 @@
<div v-if="scope.row.jmdxt.length>0" class="left">
<div class="width-60">
K2
<el-input v-model="formListValue.jmdxtOd1" placeholder="" />
<el-input v-model="formListValue.jmdxtOd1" placeholder="" :class="formListValue.jmdxtOd1 > 48 ? 'colorInputRed' :''"/>
/
K1
<el-input v-model="formListValue.jmdxtOd2" placeholder="" />@
<el-input v-model="formListValue.jmdxtOd2" placeholder="" :class="formListValue.jmdxtOd1 > 48 ? 'colorInputRed' :''"/>@
<el-input v-model="formListValue.jmdxtOd3" placeholder="" />
</div>
<div class="width-80">
@ -866,17 +867,17 @@
</div>
<!--角膜直径-角膜厚度-->
<div v-if="scope.row.jmzjJmhd.length>0" class="width-100 center">
<el-input v-model="formListValue.jmzjOd" placeholder="" /> mm /
<el-input v-model="formListValue.jmhdOd" placeholder="" /> μm
<el-input v-model="formListValue.jmzjOd" placeholder="" :class="formListValue.jmzjOd < 11 ? 'colorInputRed' :''"/> mm /
<el-input v-model="formListValue.jmhdOd" placeholder="" :class="formListValue.jmhdOd < 480 ? 'colorInputRed' :''"/> μm
</div>
<!-- 眼压-->
<div v-if="scope.row.yanya.length>0" class="width-100 center">
<el-input v-model="formListValue.yyOd1" placeholder="" />/
<el-input v-model="formListValue.yyOd2" placeholder="" />mmHg@
<el-input v-model="formListValue.yyOd1" placeholder="" :class="formListValue.yyOd1 >21 ? 'colorInputRed' :''"/>/
<el-input v-model="formListValue.yyOd2" placeholder="" :class="formListValue.yyOd2 > 21 ? 'colorInputRed' :''"/>mmHg@
</div>
<!-- 暗瞳直径 -->
<div v-if="scope.row.atzj.length>0" class="width-120 center">
<el-input v-model="formListValue.atzjOd" placeholder="" /> mm
<el-input v-model="formListValue.atzjOd" placeholder="" :class="formListValue.atzjOd > 7 ? 'colorInputRed' :''"/> mm
</div>
<!-- offset -->
<div v-if="scope.row.offset.length>0" class="center width-100">
@ -898,7 +899,7 @@
</div>
<!-- 内皮细胞密度/6A -->
<div v-if="scope.row.npxbmd.length>0" class="width-80 center">
<el-input v-model="formListValue.npxbmdOd1" placeholder="" />/mm2 /
<el-input v-model="formListValue.npxbmdOd1" placeholder="" :class="formListValue.npxbmdOd1 < 2000 ? 'colorInputRed' :''"/>/mm2 /
<el-input v-model="formListValue.npxbmdOd2" placeholder="" />%
</div>
<!-- OCT上皮/最薄角膜厚度 -->
@ -1295,10 +1296,10 @@
<div v-if="scope.row.jmdxt.length>0" class="left">
<div class="width-60">
K2
<el-input v-model="formListValue.jmdxtOs1" placeholder="" />
<el-input v-model="formListValue.jmdxtOs1" placeholder="" :class="formListValue.jmdxtOs1 > 48 ? 'colorInputRed' :''"/>
/
K1
<el-input v-model="formListValue.jmdxtOs2" placeholder="" />@
<el-input v-model="formListValue.jmdxtOs2" placeholder="" :class="formListValue.jmdxtOs1 > 48 ? 'colorInputRed' :''"/>@
<el-input v-model="formListValue.jmdxtOs3" placeholder="" />
</div>
<div class="width-80">
@ -1315,17 +1316,17 @@
</div>
<!--角膜直径-角膜厚度-->
<div v-if="scope.row.jmzjJmhd.length>0" class="width-100 center">
<el-input v-model="formListValue.jmzjOs" placeholder="" /> mm /
<el-input v-model="formListValue.jmhdOs" placeholder="" /> μm
<el-input v-model="formListValue.jmzjOs" placeholder="" :class="formListValue.jmzjOs < 11 ? 'colorInputRed' :''"/> mm /
<el-input v-model="formListValue.jmhdOs" placeholder="" :class="formListValue.jmhdOs < 480 ? 'colorInputRed' :''"/> μm
</div>
<!-- 眼压-->
<div v-if="scope.row.yanya.length>0" class="width-100 center">
<el-input v-model="formListValue.yyOs1" placeholder="" />/
<el-input v-model="formListValue.yyOs2" placeholder="" />mmHg@
<el-input v-model="formListValue.yyOs1" placeholder="" :class="formListValue.yyOs1 >21 ? 'colorInputRed' :''"/>/
<el-input v-model="formListValue.yyOs2" placeholder="" :class="formListValue.yyOs1 >21 ? 'colorInputRed' :''"/>mmHg@
</div>
<!-- 暗瞳直径 -->
<div v-if="scope.row.atzj.length>0" class="width-120 center">
<el-input v-model="formListValue.atzjOs" placeholder="" /> mm
<el-input v-model="formListValue.atzjOs" placeholder="" :class="formListValue.atzjOs > 7 ? 'colorInputRed' :''"/> mm
</div>
<!-- offset -->
<div v-if="scope.row.offset.length>0" class="center width-100">
@ -1347,7 +1348,7 @@
</div>
<!-- 内皮细胞密度/6A -->
<div v-if="scope.row.npxbmd.length>0" class="width-80 center">
<el-input v-model="formListValue.npxbmdOs1" placeholder="" />/mm2 /
<el-input v-model="formListValue.npxbmdOs1" placeholder="" :class="formListValue.npxbmdOs1 < 2000 ? 'colorInputRed' :''"/>/mm2 /
<el-input v-model="formListValue.npxbmdOs2" placeholder="" />%
</div>
<!-- OCT上皮/最薄角膜厚度 -->
@ -2082,7 +2083,7 @@ export default {
//
djdsOd: '',
djdsOs: '',
djdsBX: '',
djdsBx: '',
//
xjpzTimeInput: '',
xjpzTimeUnit: '年',

4
src/components/H5form/qgyj.vue

@ -131,7 +131,7 @@
</el-form-item>
</span>
<span class="padding-left-10">
<el-checkbox v-model="formListValue.djdsBX" label="不详" @change="radioChange('djdsCheck')" />
<el-checkbox v-model="formListValue.djdsBx" label="不详" @change="radioChange('djdsCheck')" />
</span>
</div>
</span>
@ -677,7 +677,7 @@ export default {
//
djdsOd: '',
djdsOs: '',
djdsBX: '',
djdsBx: '',
//
yxyjRadio: '',
// ok

2
src/components/H5form/talk-record.vue

@ -886,7 +886,7 @@ export default {
message: '您已保存成功',
type: 'success'
})
this.statusHandle()
// this.statusHandle() //
this.getSendCaStatus()
// this.$store.commit('clearSignDate', 'lhOperaRecord')
} else {

4
src/mixins/clearContent.js

@ -75,10 +75,10 @@ export default {
this.formListValue.jzsInput = ''
}
if(text === 'djdsCheck') {
console.log('djdsCheck',this.formListValue.djdsBX);
console.log('djdsCheck',this.formListValue.djdsBx);
this.formListValue.djdsOd = ''
this.formListValue.djdsOs = ''
this.formListValue.djdsIsDisabled = this.formListValue.djdsBX
this.formListValue.djdsIsDisabled = this.formListValue.djdsBx
}
},
// 复选判断清除内容

15
src/mixins/signGet.js

@ -22,21 +22,23 @@ export default {
})
if (res.code === 0) {
console.log('获取授权签字ca已开启');
loading.close()
this.getCaUserSignImg(sign, date, code, name, res.data)
this.getCaUserSignImg(sign, date, code, name, res.data, '', ()=>{
// console.log(123123123);
loading.close()
})
} else {
this.$message.error(res.msg)
loading.close()
}
},
// 获取系统签字
getSystomSign(sign, date, code, name) {
getSystomSign(sign, date, code, name,createSign) {
console.log(date)
const userData = JSON.parse(window.localStorage.getItem('qg-userData'))
this.getCaUserSignImg(sign, date, code, name, userData)
this.getCaUserSignImg(sign, date, code, name, userData, createSign)
},
// 获取ca签名图片
async getCaUserSignImg(sign, date, code, name, resData) {
async getCaUserSignImg(sign, date, code, name, resData, createSign, callback) {
console.log('8888888888');
const { data: res } = await this.$http.get('/hz_quguang/caSign/getCaUserSignImg', {
params: {
@ -47,9 +49,12 @@ export default {
if (res.code === 0) {
date ? this.formListValue[date] = this.$moment().format('YYYY-MM-DD') : ''
sign ? this.formListValue[sign] = res.data.signImgBase : ''
createSign ? this.formListValue[createSign] = res.data.signImgBase : ''
code ? this.formListValue[code] = res.data.employeeId : ''
name ? this.formListValue[name] = res.data.realName : ''
callback ? callback() : ''
} else {
callback ? callback() : ''
this.$message.error(res.msg)
}
},

24
src/page-subspecialty/views/modules/seeDoctor/archives/index.vue

@ -94,9 +94,10 @@
<span v-else>{{ commeFormItem.name }}</span>
</div>
<i
v-if="!positionName.join().includes('医辅') &&
v-if="
positionName.join().includes('医辅') ||
(positionName.join().includes('护士') && commeFormItem.name==='屈光预检') ||
positionName.join().includes('医生') "
positionName.join().includes('医生')"
class="el-icon-plus comonForm-icon"
/>
</div>
@ -110,7 +111,7 @@
<span class="padding-right-10">{{ patientInfoObj.patientId }}</span>
<span class="padding-right-10">{{ patientInfoObj.patientName }}</span>
<span class="padding-right-10">{{ patientInfoObj.patientBirthday }}</span>
<span style="color:yellow;font-size:24px;">{{ patientInfoObj.patientAge < 18 ? '未满18周岁' :'' }}</span>
<span style="color:yellow;font-size:24px;">{{ patientInfoObj.patientAge < 18 ? '未满18周岁' : (patientInfoObj.patientAge > 35 ? '大于35岁' : '') }}</span>
</div>
<div class="content-right-CRF">
<div class="printFather">
@ -633,13 +634,16 @@ export default {
// 1
// 2
// console.log(item)
if (this.positionName.join().includes('医辅')) {
return this.$message({
showClose: true,
message: '您的角色暂无新增表单权限',
type: 'warning'
})
} else if (this.positionName.join().includes('护士') && item.name !== '屈光预检') {
// if (this.positionName.join().includes('')) {
// return this.$message({
// showClose: true,
// message: '',
// type: 'warning'
// })
// }
if (this.positionName.join().includes('护士') && item.name !== '屈光预检') {
console.log('this.positionName',this.positionName);
return this.$message({
showClose: true,
message: '您的角色只有新增屈光预检的权限',

137
src/page-subspecialty/views/modules/statisticalManagement/index.vue

@ -71,69 +71,77 @@
<el-row :gutter="16" style="height:100%">
<span class="statics-title-date">
<p class="statics-title">手术量统计</p>
<el-select v-model="operaTj.doctorId" placeholder="医生" size="small" clearable @clear="newOperaCensus()"
@change="newOperaCensus()" style="margin-right:20px;">
<el-select v-model="operaTj.doctorId" placeholder="医生" size="small" clearable @clear="operaRefresh()"
@change="operaRefresh()" style="margin-right:20px;">
<el-option v-for="(item,index) in doctorList" :key="index" :label="item.doctorName"
:value="item.doctorCode" />
</el-select>
<el-date-picker style="margin-right:20px;" v-model="operaStartEndTime" size="small" type="daterange"
range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期" value-format="yyyy-MM-dd"
@change="operaDateChange" />
<el-radio-group v-model="operaTj.type" size="mini" @change="newOperaCensus()">
<el-radio-group v-model="operaTj.type" size="mini" @change="radioOperaTypeChange()">
<el-radio-button label="3"></el-radio-button>
<el-radio-button label="2"></el-radio-button>
<el-radio-button label="1"></el-radio-button>
</el-radio-group>
<el-button style="margin-left:30px;" type="primary">导出</el-button>
<el-button style="margin-left:30px;" type="primary" size="mini">导出</el-button>
</span>
<el-col :span="12" style="height:100%;">
<el-col :span="12" style="height:90%;">
<div class="operation-volume-echarts">
<operation-volume-echarts v-if="operationVolumeHeight" id-name="operation-volume"
:chart-data="operationVolumeList" :height="operationVolumeHeight" ref="operaRef" />
</div>
</el-col>
<el-col :span="12">
<el-table :data="operaCensusDataList">
<el-col :span="12" style="height:90%;">
<el-table :data="operaCensusDataList" :height="operationVolumeHeight1 - 45">
<el-table-column prop="doctorName" label="医生姓名" width="90"></el-table-column>
<el-table-column prop="operaDate" label="手术时间" width="110"></el-table-column>
<el-table-column prop="operaName" label="手术名称"></el-table-column>
<el-table-column prop="patientName" label="患者姓名" width="90"></el-table-column>
<el-table-column prop="patientId" label="PID" width="90"></el-table-column>
<el-table-column prop="patientId" label="PID" width="120"></el-table-column>
</el-table>
<el-pagination background layout="total, prev, pager, next" :total="opearTotal" :page-size="operaTj.limit"
:current-page.sync="operaTj.page" @current-change="pageCurrentChangeHandle" />
<el-pagination background layout="total, prev, pager, next" :total="opearTotal" :page-size="operaTj.limit" style="margin-top:10px;"
:current-page.sync="operaTj.page" @current-change="operaPageCurrentChangeHandle" />
</el-col>
</el-row>
</div>
<div class="statics-bottom">
<el-row :gutter="16">
<span class="doctor-ssl-title-date" style="margin-top:10px;">
<span class="jzrc-title-date" style="margin-top:10px;">
<p style="margin-right:10px;font-size:20px;">就诊人次统计</p>
<el-select v-model="jzrcTj.doctorId" placeholder="医生" size="small" clearable @clear="newJzrcCensus()"
@change="newJzrcCensus()" style="margin-right:20px;">
<el-select v-model="jzrcTj.doctorId" placeholder="医生" size="small" clearable @clear="jzrcRefresh()"
@change="jzrcRefresh()" style="margin-right:20px;">
<el-option v-for="(item,index) in doctorList" :key="index" :label="item.doctorName"
:value="item.doctorCode" />
</el-select>
<el-date-picker style="margin-right:20px;" v-model="jzrcStartEndTime" size="small" type="daterange"
range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期" value-format="yyyy-MM-dd"
@change="operaDateChange" />
<el-radio-group v-model="jzrcTj.type" size="mini" @change="newJzrcCensus">
@change="jzrcDateChange" />
<el-radio-group v-model="jzrcTj.type" size="mini" @change="radioJzrcTypeChange">
<el-radio-button label="3">本周</el-radio-button>
<el-radio-button label="2">本月</el-radio-button>
<el-radio-button label="1">本年</el-radio-button>
</el-radio-group>
<el-button style="margin-left:30px;" type="primary">导出</el-button>
<el-button style="margin-left:30px;" type="primary" size="mini">导出</el-button>
</span>
<el-col :span="12">
<div class="doctor-ssl">
<div class="doctor-ssl-echearts">
<doctor-ssl-echarts v-if="doctorSSLEchartsHeight" id-name="doctor-ssl-bar" :chart-data="doctorSSLBarList"
:height="doctorSSLEchartsHeight" />
<div class="jzrc">
<div class="jzrc-echearts">
<jzrc-echarts v-if="jzrcEchartsHeight" id-name="jzrc-bar" :chart-data="jzrcCensusList"
:height="jzrcEchartsHeight" />
</div>
</div>
</el-col>
<el-col :span="12">
123
<el-table :data="jzrcCensusDataList" :height="jzrcEchartsHeight1 - 45">
<el-table-column prop="patientId" label="PID"></el-table-column>
<el-table-column prop="patientName" label="患者姓名" ></el-table-column>
<el-table-column prop="patientSex" label="患者性别"></el-table-column>
<el-table-column prop="patientBirthday" label="患者生日" ></el-table-column>
<el-table-column prop="doctorName" label="医生姓名"></el-table-column>
</el-table>
<el-pagination background layout="total, prev, pager, next" :total="jzrcTotal" :page-size="jzrcTj.limit" style="margin-top:10px;"
:current-page.sync="jzrcTj.page" @current-change="jzrcPageCurrentChangeHandle" />
</el-col>
</el-row>
</div>
@ -142,21 +150,23 @@
<script>
import operationVolumeEcharts from './operation-volume-echarts.vue'
import ssfxEcharts from './ssfx-echarts.vue'
import doctorSslEcharts from './doctor-ssl-echarts.vue'
import jzrcEcharts from './jzrc-echarts.vue'
import wjtjEcharts from './wjtj-echarts.vue'
export default {
components: {
operationVolumeEcharts,
ssfxEcharts,
doctorSslEcharts,
jzrcEcharts,
wjtjEcharts
},
data() {
return {
todayShow: false,
operationVolumeHeight: '',
operationVolumeHeight1:'',
ssfxEchartsHeight: '',
doctorSSLEchartsHeight: '',
jzrcEchartsHeight: '',
jzrcEchartsHeight1:'',
wjtjEchartsHeight: '',
todayCensusList: {},
operationVolumeList: [],
@ -164,6 +174,7 @@ export default {
jzrcCensusList: [],
jzrcCensusDataList: [],
opearTotal: 0,
jzrcTotal: 0,
ssfxPieList: [],
doctorSSLBarList: [],
operaStartEndTime: '',
@ -198,9 +209,11 @@ export default {
this.getDoctorList()
},
mounted() {
this.operationVolumeHeight = document.querySelector('.operation-volume-echarts') ? document.querySelector('.operation-volume-echarts').offsetHeight + 'px' : ''
this.operationVolumeHeight = document.querySelector('.operation-volume-echarts') ? (document.querySelector('.operation-volume-echarts').offsetHeight) + 'px' : ''
this.operationVolumeHeight1 = document.querySelector('.operation-volume-echarts') ? (document.querySelector('.operation-volume-echarts').offsetHeight) : ''
this.ssfxEchartsHeight = document.querySelector('.ssfx-echarts') ? document.querySelector('.ssfx-echarts').offsetHeight + 'px' : ''
this.doctorSSLEchartsHeight = document.querySelector('.doctor-ssl-echearts') ? document.querySelector('.doctor-ssl-echearts').offsetHeight + 'px' : ''
this.jzrcEchartsHeight = document.querySelector('.jzrc-echearts') ? (document.querySelector('.jzrc-echearts').offsetHeight - 40) + 'px' : ''
this.jzrcEchartsHeight1 = document.querySelector('.jzrc-echearts') ? (document.querySelector('.jzrc-echearts').offsetHeight - 40) : ''
this.wjtjEchartsHeight = document.querySelector('.wjtj-echarts') ? document.querySelector('.wjtj-echarts').offsetHeight + 'px' : ''
},
methods: {
@ -213,10 +226,6 @@ export default {
this.$message.error(res.msg)
}
},
newOperaCensus() {
this.getOperaCensus()
this.getOperaCensusDataList()
},
//
async getTodayCensus() {
this.todayShow = false
@ -230,12 +239,25 @@ export default {
this.todayCensusList.surveyCompare = survey[1].value - survey[0].value
this.todayShow = true
},
//
// -
operaRefresh() {
this.getOperaCensus()
this.getOperaCensusDataList()
},
// -
radioOperaTypeChange() {
this.operaTj.beginDate = ''
this.operaTj.endDate = ''
this.operaStartEndTime = ''
this.operaRefresh()
},
// -
operaDateChange(e) {
console.log('e', e);
console.log('手术量e', e);
this.operaTj.type = ''
this.operaTj.beginDate = e ? e[0] : ''
this.operaTj.endDate = e ? e[1] : ''
this.newOperaCensus()
this.operaRefresh()
},
// echarts
// typebeginDateendDate
@ -263,28 +285,37 @@ export default {
this.$message.error(res.msg)
}
},
// ,
pageCurrentChangeHandle(val) {
// - ,
operaPageCurrentChangeHandle(val) {
this.operaTj.page = val
this.getOperaCensusDataList()
},
newJzrcCensus() {
// -
jzrcRefresh() {
this.getJzrcCensus()
this.getJzrcCensusDataList()
},
// -
radioJzrcTypeChange() {
this.jzrcTj.beginDate = ''
this.jzrcTj.endDate = ''
this.jzrcStartEndTime = ''
this.jzrcRefresh()
},
//
// -
jzrcDateChange(e) {
console.log('e', e);
console.log('就诊人次e', e);
this.jzrcTj.beginDate = e ? e[0] : ''
this.jzrcTj.endDate = e ? e[1] : ''
this.newJzrcCensus()
this.jzrcTj.type = ''
this.jzrcRefresh()
},
// echarts
// typebeginDateendDate
// beginDateendDatetype
async getJzrcCensus() {
const { data: res } = await this.$http.get(`/hz_quguang/data/analyse/jzrcCensus`, {
params: this.operaTj
params: this.jzrcTj
})
if (res.code === 0) {
this.jzrcCensusList = res.data
@ -293,10 +324,10 @@ export default {
this.$message.error(res.msg)
}
},
// table
// table
async getJzrcCensusDataList() {
const { data: res } = await this.$http.get(`/hz_quguang/data/analyse/jzrcCensusDataList`, {
params: this.operaTj
params: this.jzrcTj
})
if (res.code === 0) {
this.jzrcCensusDataList = res.data.list
@ -305,6 +336,11 @@ export default {
this.$message.error(res.msg)
}
},
// - ,
jzrcPageCurrentChangeHandle(val) {
this.operaTj.page = val
this.getJzrcCensusDataList()
},
}
}
</script>
@ -358,12 +394,12 @@ export default {
// height:calc(100vh - 430px);
height: 40%;
.operation-volume-echarts {
height: 90%;
height: 100%;
}
}
.statics-title-date,
.ssfx-title-date,
.doctor-ssl-title-date,
.jzrc-title-date,
.wjtj-title-date {
display: flex;
justify-content: center;
@ -378,21 +414,20 @@ export default {
.statics-bottom {
// height: 260px;
background: #fff;
height: 55%;
height: 50%;
.el-row,
.el-col {
height: 100%;
}
}
.ssfx,
.doctor-ssl,
.jzrc,
.wjtj {
height: 100%;
background: #fff;
padding: 16px;
}
.ssfx-echarts,
.doctor-ssl-echearts,
.jzrc-echearts,
.wjtj-echarts {
height: 90%;
}
@ -411,5 +446,11 @@ export default {
.el-radio-button:first-child .el-radio-button__inner {
border-left: none;
}
.el-pagination {
margin-top:0;
}
.el-table--medium .el-table__cell {
padding: 6px 0;
}
}
</style>

2
src/page-subspecialty/views/modules/statisticalManagement/doctor-ssl-echarts.vue → src/page-subspecialty/views/modules/statisticalManagement/jzrc-echarts.vue

@ -63,7 +63,7 @@ export default {
left: '3%',
right: '4%',
bottom: '0',
top: '16%',
top: '5%',
containLabel: true
},
// series: this.seriesList

20
src/page-subspecialty/views/modules/surgicalManagement/operationList/index.vue

@ -127,8 +127,9 @@
<span
v-show="scope.row.status===-4 && scope.row.syncStatus===1 && today === $options.filters.dateFilterTwo( scope.row.operaDate )"
class="call" @click="signHandle(scope.row)">签到</span>
<span class="call" @click="ytFinish(scope.row)" v-show="scope.row.status == -3">验谈完毕</span>
<span class="call" @click="browseClick(scope.row)">档案</span>
<!-- syncStatus=1叫号 =0不叫号 -->
<!-- 已预约syncStatus的排程同步状态0:未同步1:已同步 0的时候可修改 1的时候不可修改 -->
<span
v-show="(scope.row.status===0 || scope.row.status===1) && scope.row.syncStatus===1 && today === $options.filters.dateFilterTwo( scope.row.operaDate )"
class="call" @click="callHandle(scope.row)">呼叫</span>
@ -518,6 +519,23 @@ export default {
this.$message.error(res.msg)
}
},
//
async ytFinish(scopeRow) {
const { data: res } = await this.$http.post('/hz_quguang/pda/updateOperaStatus', {
operaId: scopeRow.id,
status: 0
})
if(res.code === 0) {
this.$message({
message: '签到成功',
type: 'success',
onClose: () => {
}
})
} else {
this.$message.error(res.msg)
}
},
//
async callHandle(scopeRow) {
const { data: res } = await this.$http.get(`/hz_quguang/his/opera/schedule/callPatient/${scopeRow.id}`)

10
src/page-subspecialty/views/modules/surgicalManagement/schedule/doctor-schedule.vue

@ -95,7 +95,7 @@
class="show-plus-one"
>
<p @click="numberMangeClick(item,weekInfoItem,'上午','预约详情')">详情</p>
<p @click="numberMangeClick(item,weekInfoItem,'上午','号源管理')">号源管理</p>
<p @click="numberMangeClick(item,weekInfoItem,'上午','号源管理')" v-show="positionName.includes('护士长')">号源管理</p>
</div>
<div
v-show="currentIndex===index && currentWeekIndex===weekInfoIndex && mouseMoveIsShow && showMorningAfterText==='morning'&& title =='plus'"
@ -145,7 +145,7 @@
class="show-plus-one"
>
<p @click="numberMangeClick(item,weekInfoItem,'下午','预约详情')">详情</p>
<p @click="numberMangeClick(item,weekInfoItem,'下午','号源管理')">号源管理</p>
<p @click="numberMangeClick(item,weekInfoItem,'下午','号源管理')" v-show="positionName.includes('护士长')">号源管理</p>
</div>
<div
v-show="currentIndex===index && currentWeekIndex===weekInfoIndex && mouseMoveIsShow && showMorningAfterText==='after' && title =='plus'"
@ -248,7 +248,9 @@ export default {
doctorList: [],
patientList: [],
rowListObj: {},
operaTypeList: []
operaTypeList: [],
userData:{},
positionName:''
};
},
filters: {
@ -284,6 +286,8 @@ export default {
created() {
this.initData(null);
this.getScheduleList()
window.localStorage.getItem('qg-userData') ? this.userData = JSON.parse(window.localStorage.getItem('qg-userData')) : ''
this.positionName = this.userData.positionList && this.userData.positionList.length > 0 ? this.userData.positionList.map(item => item.positionName) : []
},
methods: {

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

@ -12,13 +12,13 @@
<p class="main-title">杭州院区屈光信息系统</p>
<p class="subtitle-title">登录</p>
</div>
<el-form
ref="dataForm"
:model="dataForm"
:rules="dataRule"
status-icon
@keyup.enter.native="dataFormSubmitHandle()"
>
<!-- <div>
<el-input v-model="inputText" placeholder="请输入" />
<el-button @click="getResponse" type="primary">获取回答</el-button>
<div>{{ answer }}</div>
</div> -->
<el-form ref="dataForm" :model="dataForm" :rules="dataRule" status-icon
@keyup.enter.native="dataFormSubmitHandle()">
<!-- 用户名 -->
<el-form-item prop="account">
<el-input v-model="dataForm.account" placeholder="请输入工号" />
@ -44,6 +44,7 @@
</el-form>
<p class="tips">没有账号? 请联系管理员</p>
</div>
<div class="login-footer">
<p class="copyright">南京慧目信息技术有限公司 版权所有</p>
</div>
@ -56,6 +57,7 @@ import debounce from 'lodash/debounce'
import { messages } from '@/i18n'
import { getUUID } from '@/utils'
import setPassword from '@/page-subspecialty/views/pages/setPassword'
// import { getDeepseekResponse } from '../../../../static/js/deepseek.js'
export default {
components: {
setPassword
@ -70,6 +72,8 @@ export default {
uuid: '',
captcha: ''
},
inputText: '',
answer: '',
setPasswordVisible: false
}
},
@ -101,8 +105,25 @@ export default {
}
})
}, 500)
},
methods: {
// async fetchData() {
// const result = await getDeepseekResponse('Hello');
// console.log('result',result);
// },
// async getResponse() {
// try {
// const res = await getDeepseekResponse({
// prompt: this.inputText,
// stream: false
// });
// this.answer = res.data.response;
// } catch (error) {
// console.error(':', error.response?.data || error.message);
// }
// },
//
async getCaptcha() {
console.log(process.env.VUE_APP_LOGIN_URL)
@ -111,7 +132,7 @@ export default {
this.captchaPath = res.data
},
//
dataFormSubmitHandle: debounce(function() {
dataFormSubmitHandle: debounce(function () {
this.$refs['dataForm'].validate((valid) => {
if (!valid) {
return false
@ -184,12 +205,12 @@ export default {
.main-title {
font-size: 30px;
margin-bottom: 10px;
color:#1E79FF;
color: #1e79ff;
font-weight: 700;
}
.subtitle-title {
font-size: 24px;
color: #11305C;
color: #11305c;
}
}
.tips {

43
static/js/deepseek.js

@ -0,0 +1,43 @@
// import axios from 'axios';
// const DEEPSEEK_API_URL = 'http://localhost:11434'; // 实际的 DeepSeek API 地址
// const DEEPSEEK_API_KEY = 'sk-eff330c7a8664ddaaba523ba9bf0226a'; // 替换为你的 DeepSeek API Key
// // 创建 axios 实例
// const deepseekClient = axios.create({
// baseURL: DEEPSEEK_API_URL,
// timeout: 60000, // 超时时间延长至60秒‌
// headers: {
// 'Authorization': `Bearer ${DEEPSEEK_API_KEY}`,
// 'Content-Type': 'application/json',
// },
// });
// // 示例:发送聊天请求‌:ml-citation{ref="4" data="citationList"}
// export const getDeepseekResponse = async (prompt) => {
// try {
// const response = await deepseekClient.post('/chat/completions', {
// model: "deepseek-r1:1.5b",
// messages: [{ role: "user", content: prompt }]
// });
// return response.data.choices.message.content;
// } catch (error) {
// console.error('API Error:', error);
// return null;
// }
// };
import axios from 'axios';
const ollamaClient = axios.create({
baseURL: '/ollama',
timeout: 60000 // 超时时间延长至60秒‌:ml-citation{ref="3,7" data="citationList"}
});
export const getDeepseekResponse = (params) => {
return ollamaClient.post('/api/generate', {
model: 'deepseek-r1:1.5b', // 需与本地部署模型名称一致‌:ml-citation{ref="5,6" data="citationList"}
prompt: params.prompt,
stream: params.stream || false
});
};

9
vue.config.js

@ -63,7 +63,14 @@ module.exports = {
pathRewrite: { // 路径重写
'^/hz_quguang': '/hz_quguang'
}
}
},
// '/ollama': {
// target: 'http://localhost:11434',
// changOrigin: true, // 允许跨域
// pathRewrite: {
// '^/ollama': ''
// },
// }
}
},
configureWebpack: {

Loading…
Cancel
Save