Browse Source

患者列表,测评列表,就诊列表

whszxyjhyy
lzp 4 weeks ago
parent
commit
3d23b47d90
  1. 1
      web_admin/src/views/his/Evaluation/ReportDetail/scaleTable.vue
  2. 10
      web_admin/src/views/his/Evaluation/index.vue
  3. 215
      web_admin/src/views/visiting/components/Assist.vue
  4. 1666
      web_admin/src/views/visiting/components/config.js
  5. 226
      web_admin/src/views/visiting/components/pastNowHistory.vue
  6. 245
      web_admin/src/views/visiting/components/personalHistory.vue
  7. 476
      web_admin/src/views/visiting/components/visiting.vue
  8. 320
      web_admin/src/views/visiting/index.vue
  9. 2
      web_client/src/views/history/components/scaleInforCopy.vue

1
web_admin/src/views/his/Evaluation/ReportDetail/scaleTable.vue

@ -871,6 +871,7 @@
:visible.sync="openQualityDetails"
width="1400px"
append-to-body
>
<QualityDetail v-if="openQualityDetails" :query="qualityData" />
<span slot="footer" class="dialog-footer">

10
web_admin/src/views/his/Evaluation/index.vue

@ -108,9 +108,15 @@
row-key="evaluationId"
@selection-change="handleSelectionChange"
>
<el-table-column prop="name" label="姓名" align="center" width="120">
<el-table-column
prop="name"
label="姓名"
align="center"
width="120"
fixed
>
</el-table-column>
<el-table-column label="性别" width="100" align="center">
<el-table-column label="性别" width="100" align="center" fixed>
<template slot-scope="scope">
<span v-if="scope.row.sex - 0 == 0"></span>
<span v-if="scope.row.sex - 0 == 1"></span>

215
web_admin/src/views/visiting/components/Assist.vue

@ -0,0 +1,215 @@
<template>
<!-- 辅助检查 -->
<div class="box" style="background: #fff">
<div v-if="assistArray.length" style="padding-bottom: 1px">
<div :key="index" v-for="(patient, index) in assistArray">
<div class="div-ul">
<div class="div-li" style="text-align: left">
<span>诊断类型</span>
<el-select
style="width: 100%"
:disabled="true"
v-model="patient.diagnosisType"
placeholder=""
>
<el-option value="1"> 出院诊断 </el-option>
<el-option value="2"> 入院诊断 </el-option>
<el-option value="3"> 门诊诊断 </el-option>
</el-select>
</div>
<div class="div-li" style="text-align: left">
<span style="margin-right: 10px">是否主要诊断</span>
<el-radio-group
:disabled="true"
style="display: flex; align-items: center"
v-model="patient.isMainDiagnosis"
>
<el-radio label="1"></el-radio>
<el-radio label="0"></el-radio>
</el-radio-group>
</div>
<div class="div-li" style="text-align: left">
<span>诊断名称</span>
<el-input v-model="patient.diagnosisName" :disabled="true" />
</div>
</div>
<div class="div-ul">
<div class="div-li" style="text-align: left">
<span>诊断编码</span>
<el-input v-model="patient.diagnosisCode" :disabled="true" />
</div>
<div class="div-li" style="text-align: left">
<span>诊断日期</span>
<el-input v-model="patient.diagnosisDate" :disabled="true" />
</div>
<div class="div-li"></div>
</div>
</div>
</div>
<div v-else>
<el-empty description="暂无病史信息"></el-empty>
</div>
</div>
</template>
<script>
import { mapState, mapMutations } from "vuex";
export default {
name: "Family",
props: {
detailData: {
type: Object,
default: () => {},
},
},
data() {
return {
icdList: [],
};
},
computed: {},
created() {
this.assistArray = this.detailData.otherMsg.pmsPatientDiagnosis || [];
// this.geticdQuery();
},
methods: {
...mapMutations("ht", ["addAssistArray"]),
//
async geticdQuery() {
let res = await icdQuery();
const { code, msg, data } = res;
if (code === 200) {
this.icdList = data;
}
},
},
};
</script>
<style scoped>
.w-select {
}
.w-full,
.w-full1 {
width: 100%;
}
>>> .w-full .ant-select-selection__placeholder,
>>> .w-full .ant-select-search__field__placeholder {
display: block !important;
}
>>> .ant-select-selection {
border: none;
border-bottom: 1px solid #888888;
height: 32px !important;
line-height: 32px !important;
}
>>> .ant-select-selection__rendered {
height: 32px !important;
line-height: 32px !important;
}
>>> .ant-select-disabled {
background-color: #ffffff !important;
}
>>> .ant-select-disabled .ant-select-selection {
border-bottom: 1px dashed #888888;
background-color: #ffffff !important;
}
.lighten-5 {
border-bottom: 1px solid #d9d9d9;
padding-bottom: 20px;
margin-bottom: 20px;
}
.lighten-5:last-child {
border-bottom: none !important;
}
.div-title {
}
.box {
position: relative;
}
.dataAdd {
position: absolute;
top: -58px;
right: 0;
}
.div-info {
display: flex;
justify-content: space-between;
align-items: center;
}
.userInfo {
display: flex;
}
/deep/.ant-btn-success {
color: #fff;
background-color: #00825a;
border-color: #00825a;
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.12);
box-shadow: 0 2px 0 rgba(0, 0, 0, 0.045);
}
.btn {
width: 120px;
height: 42px;
font-size: 16px;
margin: 10px 0;
}
.box-width {
min-width: 84px;
width: 84px;
text-align: right;
line-height: 32px;
}
.add-new-box {
width: 100%;
position: relative;
height: 0px;
}
.add-new {
position: absolute;
right: 0;
top: -8px;
}
.red--text-box {
text-align: left;
margin-bottom: 4px;
font-size: 16px;
font-family: Source Han Sans CN, Source Han Sans CN-Regular;
}
.w-full {
width: 100%;
}
</style>
<style lang="less" scoped>
/deep/ .ant-card-body {
padding-bottom: 0 !important;
}
.div-ul {
width: 100%;
display: flex;
.div-li {
font-size: 16px;
flex: 1;
display: flex;
margin-right: 20px;
margin-bottom: 20px;
span {
line-height: 32px;
flex-shrink: 0;
}
}
}
/deep/.ant-input {
border: none;
border-bottom: 1px solid #888888;
}
/deep/.ant-input:focus {
box-shadow: none !important;
}
</style>

1666
web_admin/src/views/visiting/components/config.js

File diff suppressed because it is too large

226
web_admin/src/views/visiting/components/pastNowHistory.vue

@ -0,0 +1,226 @@
<template>
<!-- 用药史 -->
<div class="box" style="background: #fff">
<!-- 现病史 -->
<div v-if="patientArray.length">
<div
:key="index"
v-for="(people, index) in patientArray"
style="padding-bottom: 20px"
>
<div>
<div class="div-ul">
<div class="div-li" style="text-align: left">
<span>药物名称</span>
<el-input :disabled="true" v-model="people.drugName" />
</div>
<div class="div-li" style="text-align: left">
<span>剂量</span>
<el-input :disabled="true" v-model="people.dose" />
</div>
<div class="div-li" style="text-align: left">
<span>药物单位</span>
<el-input :disabled="true" v-model="people.unit" />
</div>
<div class="div-li" style="text-align: left">
<span>药物频率</span>
<el-input :disabled="true" v-model="people.frequency" />
</div>
</div>
</div>
</div>
</div>
<div v-else>
<el-empty description="暂无数据"></el-empty>
</div>
</div>
</template>
<script>
export default {
name: "Family",
props: {
detailData: {
type: Object,
default: () => {},
},
},
data() {
return {
patientArray: [],
drugList: [],
unitList: [
{ name: "ml/次" },
{ name: "g/次" },
{ name: "mg/次" },
{ name: "ug/次" },
{ name: "u/次" },
{ name: "片/次" },
{ name: "粒/次" },
{ name: "支/次" },
{ name: "颗/次" },
{ name: "条/次" },
{ name: "包/次" },
{ name: "袋/次" },
],
frequencyList: [
{ name: "QD(每早一次)" },
{ name: "QN(每晚一次)" },
{ name: "BID(每天两次)" },
{ name: "TID(每天三次)" },
{ name: "QID(每天四次)" },
{ name: "W1D(每周一次)" },
{ name: "W2D(每周两次)" },
{ name: "W3D(每周三次)" },
{ name: "QOD(隔天一次)" },
],
};
},
computed: {},
created() {
this.patientArray = this.detailData.otherMsg.pmsPatientParentIllness || [];
},
methods: {
//
async getDrug() {
let res = await drug();
const { code, msg, data } = res;
if (code === 200) {
this.drugList = data;
}
},
},
beforeDestroy() {},
};
</script>
<style scoped>
>>> .el-input,
>>> .el-autocomplete {
height: 32px;
line-height: 32px;
}
.w-select {
}
.w-full,
.w-full1 {
width: 100%;
}
>>> .w-full .ant-select-selection__placeholder,
>>> .w-full .ant-select-search__field__placeholder {
display: block !important;
}
>>> .ant-select-selection {
border: none;
border-bottom: 1px solid #888888;
height: 32px !important;
line-height: 32px !important;
}
>>> .ant-select-selection__rendered {
height: 32px !important;
line-height: 32px !important;
}
>>> .ant-select-disabled {
background-color: #ffffff !important;
}
>>> .ant-select-disabled .ant-select-selection {
border-bottom: 1px dashed #888888;
background-color: #ffffff !important;
}
.lighten-5 {
border-bottom: 1px solid #d9d9d9;
padding-bottom: 20px;
margin-bottom: 20px;
}
.lighten-5:last-child {
border-bottom: none !important;
}
.div-title {
}
.box {
position: relative;
}
.dataAdd {
position: absolute;
top: -58px;
right: 0;
}
.div-info {
display: flex;
justify-content: space-between;
align-items: center;
}
.userInfo {
display: flex;
}
/deep/.ant-btn-success {
color: #fff;
background-color: #00825a;
border-color: #00825a;
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.12);
box-shadow: 0 2px 0 rgba(0, 0, 0, 0.045);
}
.btn {
width: 120px;
height: 42px;
font-size: 16px;
margin: 10px 0;
}
.box-width {
min-width: 84px;
width: 84px;
text-align: right;
line-height: 32px;
}
.add-new-box {
width: 100%;
position: relative;
height: 0px;
}
.add-new {
position: absolute;
right: 0;
top: -8px;
}
.red--text-box {
text-align: left;
margin-bottom: 4px;
font-size: 16px;
font-family: Source Han Sans CN, Source Han Sans CN-Regular;
}
.w-full {
width: 100%;
}
</style>
<style lang="less" scoped>
/deep/ .ant-card-body {
padding-bottom: 0 !important;
}
.div-ul {
width: 100%;
display: flex;
.div-li {
font-size: 16px;
flex: 1;
display: flex;
margin-right: 20px;
span {
line-height: 32px;
flex-shrink: 0;
}
}
}
/deep/.ant-input {
border: none;
border-bottom: 1px solid #888888;
}
/deep/.ant-input:focus {
box-shadow: none !important;
}
</style>

245
web_admin/src/views/visiting/components/personalHistory.vue

@ -0,0 +1,245 @@
<template>
<!-- 病史信息 -->
<div class="box">
<!-- 个人史 -->
<div v-if="personalArray.length">
<div
style="text-align: left; font-size: 16px; line-height: 40px"
:key="index"
class="lighten-5"
v-for="(people, index) in personalArray"
>
<!-- 是否吸烟 -->
<div>
<div class="div-ul">
<div class="div-li">
<div class="div-title" style="margin-right: 10px">是否吸烟</div>
<el-radio-group
:disabled="true"
class="w-full"
v-model="people.smokingHistory"
>
<el-radio :label="1"></el-radio>
<el-radio :label="0"></el-radio>
</el-radio-group>
</div>
<div
class="div-li"
style="text-align: left"
v-if="people.smokingHistory === 1"
>
<span>持续</span>
<el-input :disabled="true" v-model="people.smokingYear" />
<span></span>
</div>
<div class="div-li" v-else></div>
<div class="div-li"></div>
</div>
<div style="height: 10px"></div>
<div class="div-ul" v-if="people.smokingHistory == 1">
<div class="div-li">
<div class="div-title" style="margin-right: 10px">是否戒烟</div>
<el-radio-group :disabled="true" v-model="people.smokingQuit">
<el-radio :label="1"></el-radio>
<el-radio :label="0"></el-radio>
</el-radio-group>
</div>
<div
class="div-li"
style="text-align: left"
v-if="people.smokingQuit == 1"
>
<span>戒烟</span>
<el-input :disabled="true" v-model="people.smokingQuitYear" />
<span></span>
</div>
<div class="div-li" v-else></div>
<div class="div-li"></div>
</div>
</div>
<!-- 饮酒史 -->
<div>
<div style="height: 10px"></div>
<div class="div-ul">
<div class="div-li">
<div class="div-title" style="margin-right: 10px">是否饮酒</div>
<el-radio-group
:disabled="true"
class="w-full"
style="text-align: left"
name="smokingHistory"
v-model="people.drinkHistory"
>
<el-radio :label="1"></el-radio>
<el-radio :label="0"></el-radio>
</el-radio-group>
</div>
<div
class="div-li"
style="text-align: left"
v-if="people.drinkHistory === 1"
>
<span>持续</span>
<el-input :disabled="true" v-model="people.drinkYear" />
<span></span>
</div>
<div class="div-li" v-else></div>
<div class="div-li"></div>
</div>
<div style="height: 10px"></div>
<div class="div-ul" v-if="people.drinkHistory == 1">
<div class="div-li">
<div class="div-title" style="margin-right: 10px">是否戒酒</div>
<el-radio-group :disabled="true" v-model="people.drinkQuit">
<el-radio :label="1"></el-radio>
<el-radio :label="0"></el-radio>
</el-radio-group>
</div>
<div
class="div-li"
style="text-align: left"
v-if="people.drinkQuit == 1"
>
<span>戒酒</span>
<el-input :disabled="true" v-model="people.drinkQuitYear" />
<span></span>
</div>
<div class="div-li" v-else></div>
<div class="div-li"></div>
</div>
</div>
<div style="height: 10px"></div>
<!-- 过敏药 -->
<div class="div-ul">
<div class="div-li" style="text-align: left">
<span>过敏药</span>
<el-input :disabled="true" v-model="people.allergyDrug" />
</div>
<div class="div-li"></div>
<div class="div-li"></div>
</div>
</div>
</div>
<div v-else>
<el-empty description="暂无数据"></el-empty>
</div>
</div>
</template>
<script>
export default {
name: "PmsPatientPersonal",
props: {
detailData: {
type: Object,
default: () => {},
},
},
data() {
return {
personalArray: [],
};
},
computed: {},
created() {
this.personalArray = this.detailData.otherMsg.pmsPatientPersonal || [];
},
methods: {},
};
</script>
<style scoped>
.lighten-5 {
border-bottom: 1px solid #d9d9d9;
padding-bottom: 20px;
margin-bottom: 20px;
}
.lighten-5:last-child {
border-bottom: none !important;
}
.div-title {
flex-shrink: 0;
}
.div-info {
display: flex;
justify-content: space-between;
align-items: center;
}
.userInfo {
display: flex;
}
/deep/.ant-btn-success {
color: #fff;
background-color: #00825a;
border-color: #00825a;
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.12);
box-shadow: 0 2px 0 rgba(0, 0, 0, 0.045);
}
.btn {
width: 120px;
height: 42px;
font-size: 16px;
margin: 10px 0;
}
.box-width {
min-width: 84px;
width: 84px;
text-align: right;
line-height: 32px;
}
.add-new-box {
width: 100%;
position: relative;
height: 0px;
}
.add-new {
position: absolute;
right: 0;
top: -8px;
}
.red--text-box {
text-align: left;
margin-bottom: 4px;
font-size: 16px;
font-family: Source Han Sans CN, Source Han Sans CN-Regular;
}
.w-full {
display: flex;
width: 100%;
}
</style>
<style lang="less" scoped>
/deep/ .ant-card-body {
padding-bottom: 0 !important;
}
.div-ul {
width: 100%;
display: flex;
.div-li {
font-size: 16px;
flex: 1;
display: flex;
align-items: center;
margin-right: 20px;
span {
line-height: 32px;
flex-shrink: 0;
}
}
}
/deep/.ant-input {
border: none;
border-bottom: 1px solid #888888;
}
/deep/.ant-input:focus {
box-shadow: none !important;
}
</style>

476
web_admin/src/views/visiting/components/visiting.vue

@ -0,0 +1,476 @@
<template>
<div class="box">
<!-- 现病史 -->
<div>
<div v-if="bodyArray.length">
<div style="" :key="index" v-for="(people, index) in bodyArray">
<div class="div-car" style="margin-top: 20px">
<div class="title">就诊信息</div>
<div class="div-ul">
<div class="div-li" style="text-align: left">
<span>就诊类型</span>
<el-select
style="width: 100%"
:disabled="true"
v-model="people.visitType"
placeholder=""
>
<el-option value="0" label="门诊"> </el-option>
<el-option value="1" label="住院"> </el-option>
</el-select>
</div>
<div class="div-li" style="text-align: left">
<span>就诊号</span>
<el-input :disabled="true" v-model="people.outpatientNo" />
</div>
<div class="div-li" style="text-align: left">
<span>年龄</span>
<el-input :disabled="true" v-model="people.age" />
</div>
<div class="div-li" style="text-align: left">
<span>就诊科室</span>
<el-input :disabled="true" v-model="people.department" />
</div>
<div class="div-li" style="text-align: left">
<span>就诊/主治医生</span>
<el-input :disabled="true" v-model="people.doctor" />
</div>
<div class="div-li" style="text-align: left">
<span>就诊/入院日期</span>
<el-input :disabled="true" v-model="people.admissionDate" />
</div>
<div class="div-li" style="text-align: left">
<span>住院次数</span>
<el-input :disabled="true" v-model="people.admissionCount" />
</div>
<div class="div-li" style="text-align: left">
<span>入院途径</span>
<el-select
:disabled="true"
style="width: 100%"
v-model="people.admissionMethod"
placeholder=""
>
<el-option
v-for="(status, index) in admissionMethods"
:key="index"
:value="status.id"
:label="status.name"
>
</el-option>
</el-select>
</div>
<div
class="div-li"
style="text-align: left"
v-if="people.admissionMethod == 4"
>
<span>入院途径其他</span>
<el-input
:disabled="true"
v-model="people.admissionMethodOther"
/>
</div>
<div class="div-li" style="text-align: left">
<span>床位号</span>
<el-input :disabled="true" v-model="people.bedNumber" />
</div>
<div class="div-li" style="text-align: left">
<span>出院日期</span>
<el-input :disabled="true" v-model="people.dischargeDate" />
</div>
<div class="div-li" style="text-align: left">
<span>离院方式</span>
<el-select
:disabled="true"
style="width: 100%"
v-model="people.dischargeMethod"
placeholder=""
>
<el-option
v-for="(status, index) in dischargeMethods"
:key="index"
:value="status.id"
:label="status.name"
>
</el-option>
</el-select>
</div>
</div>
</div>
<!-- 检查信息 -->
<div class="div-car">
<div class="title">检查信息</div>
<div class="div-ul">
<div class="div-li" style="text-align: left">
<span>身高</span>
<el-input :disabled="true" v-model="people.height" />
<span>cm</span>
</div>
<div class="div-li" style="text-align: left">
<span>体重</span>
<el-input :disabled="true" v-model="people.weight" />
<span>kg</span>
</div>
<div class="div-li" style="text-align: left">
<span>BMI</span>
<el-input :disabled="true" v-model="people.bmi" />
</div>
</div>
<div class="div-ul">
<div class="div-li" style="text-align: left">
<span>T值</span>
<el-input :disabled="true" v-model="people.tz" />
</div>
<div class="div-li" style="text-align: left">
<span>体温</span>
<el-input :disabled="true" v-model="people.temperature" />
<span></span>
</div>
<div class="div-li" style="text-align: left">
<span>收缩压</span>
<el-input :disabled="true" v-model="people.systolicPressure" />
<span>mmHg</span>
</div>
</div>
<div class="div-ul">
<div class="div-li" style="text-align: left">
<span>舒张压</span>
<el-input :disabled="true" v-model="people.diastolicPressure" />
<span>mmHg</span>
</div>
<div class="div-li" style="text-align: left">
<span>脉搏</span>
<el-input :disabled="true" v-model="people.pulse" />
<span></span>
</div>
<div class="div-li" style="text-align: left">
<span>肌酐</span>
<el-input :disabled="true" v-model="people.creatinine" />
<span>umol/L</span>
</div>
</div>
<div class="div-ul">
<div class="div-li" style="text-align: left">
<span>血氧饱和度</span>
<el-input :disabled="true" v-model="people.oxygenSaturation" />
</div>
<div class="div-li" style="text-align: left">
<span>白蛋白</span>
<el-input :disabled="true" v-model="people.albumin" />
</div>
<div class="div-li" style="text-align: left">
<span>总蛋白</span>
<el-input :disabled="true" v-model="people.totalProtein" />
</div>
</div>
<div class="div-ul">
<div class="div-li" style="text-align: left">
<span>维生素D3测定</span>
<el-input :disabled="true" v-model="people.vitaminD3" />
</div>
<div class="div-li" style="text-align: left">
<span>凝血酶原时间</span>
<el-input :disabled="true" v-model="people.hematocrit" />
<span></span>
</div>
<div class="div-li" style="text-align: left">
<span>D-二聚体</span>
<el-input :disabled="true" v-model="people.dimer" />
</div>
</div>
</div>
</div>
</div>
<div v-else>
<div class="title">就诊信息</div>
<el-empty description="暂无数据"></el-empty>
</div>
<div class="div-car">
<div class="title">诊断信息</div>
<Assist :detailData="detailData"> </Assist>
</div>
<div class="div-car">
<div class="title">用药信息</div>
<pastNowHistory :detailData="detailData"> </pastNowHistory>
</div>
<div class="div-car">
<div class="title">病史信息</div>
<personalHistory :detailData="detailData"> </personalHistory>
</div>
</div>
</div>
</template>
<script>
import { mapState, mapMutations } from "vuex";
import personalHistory from "./personalHistory";
import pastNowHistory from "./pastNowHistory";
import Assist from "./Assist";
import {
patientParentIllness,
body,
dischargeMethods,
admissionMethods,
} from "./config";
export default {
name: "Family",
props: {
detailData: {
type: Object,
default: () => {},
},
},
data() {
return {
bodyArray: [],
dischargeMethods, //
admissionMethods, //
};
},
components: {
personalHistory,
pastNowHistory,
Assist,
},
computed: {},
created() {
this.bodyArray = this.detailData.otherMsg.pmsPatientBody || [];
console.log("this.bodyArray ", this.bodyArray);
},
methods: {},
beforeDestroy() {},
};
</script>
<style scoped>
>>> .el-input.is-disabled .el-input__inner {
background-color: #ffffff !important;
color: #000 !important;
}
.w-full,
.w-full1 {
width: 100%;
}
>>> .w-full .ant-select-selection__placeholder,
>>> .w-full .ant-select-search__field__placeholder {
display: block !important;
}
>>> .ant-select-selection {
border: none;
border-bottom: 1px solid #888888;
}
>>> .ant-select-disabled {
background-color: #ffffff !important;
}
>>> .ant-select-disabled .ant-select-selection {
border-bottom: 1px dashed #888888;
}
.ant-radio-group {
display: flex;
flex-wrap: wrap;
justify-content: center;
}
>>> .ant-radio-wrapper {
display: flex;
align-items: center;
font-size: 18px !important;
}
>>> .el-dialog__body {
padding: 20px 20px 20px 20px !important;
}
.popup-p-icon {
color: #e6a23c;
font-size: 24px;
margin-right: 10px;
}
>>> .el-button {
padding: 8px 11px !important;
}
.popup-p {
display: flex;
align-items: center;
font-size: 14px;
margin-bottom: 0;
}
.div-step {
position: fixed;
left: 0;
right: 0;
margin: auto;
bottom: 20px;
z-index: 999;
font-size: 18px;
width: 300px;
line-height: 48px;
background: #5cc0be;
border-radius: 6px 6px 6px 6px;
text-align: center;
color: #fff;
}
.div-car {
padding: 16px 16px 0 16px;
background: #fff;
border-radius: 10px;
margin-bottom: 16px;
}
.lighten-5 {
border-bottom: 1px solid #d9d9d9;
padding-bottom: 20px;
margin-bottom: 20px;
}
.lighten-5:last-child {
border-bottom: none !important;
}
.title {
font-size: 16px;
border-bottom: 1px solid #d9d9d9;
margin-bottom: 16px;
line-height: 20px;
padding-bottom: 14px;
text-align: left !important;
}
>>> .el-input__icon {
display: none;
}
>>> .el-date-editor.el-input {
height: 32px;
line-height: 32px;
width: 74%;
}
>>> .el-input--prefix .el-input__inner {
padding: 4px 11px;
}
>>> .el-input__inner {
font-size: 16px;
color: #222222;
height: 32px !important;
line-height: 32px !important;
border: none;
color: rgba(0, 0, 0, 0.65);
border-bottom: 1px solid #888888;
border-radius: 4px;
font-size: 14px;
}
>>> .el-input__inner::placeholder {
color: #bfbfbf;
font-weight: 500;
font-size: 14px;
line-height: 1.5;
}
.div-title {
flex-shrink: 0;
}
.div-info {
display: flex;
justify-content: space-between;
align-items: center;
}
.userInfo {
display: flex;
}
/deep/.ant-btn-success {
color: #fff;
background-color: #00825a;
border-color: #00825a;
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.12);
box-shadow: 0 2px 0 rgba(0, 0, 0, 0.045);
}
.btn {
width: 120px;
height: 42px;
font-size: 16px;
margin: 10px 0;
}
.box-width {
min-width: 84px;
width: 84px;
text-align: right;
line-height: 32px;
}
.add-new-box {
width: 100%;
position: relative;
height: 0px;
}
.add-new {
position: absolute;
right: 0;
top: -8px;
}
.red--text-box {
text-align: left;
margin-bottom: 4px;
font-size: 16px;
font-family: Source Han Sans CN, Source Han Sans CN-Regular;
}
.w-full,
.w-full1 {
width: 100%;
}
</style>
<style lang="less" scoped>
/deep/.ant-input[disabled] {
background-color: #ffffff !important;
}
/deep/.w-full .ant-select-selection__placeholder,
/deep/ .w-full .ant-select-search__field__placeholder {
display: block !important;
}
/deep/.ant-select-selection {
border: none;
border-bottom: 1px solid #888888;
}
/deep/ .ant-card-body {
padding-bottom: 0 !important;
}
.div-ul {
width: 100%;
display: flex;
flex-wrap: wrap;
.div-li {
font-size: 16px;
width: 32.33%;
display: flex;
align-items: center;
margin-right: 1%;
position: relative;
margin-bottom: 24px;
span {
line-height: 32px;
flex-shrink: 0;
}
.required {
color: red;
position: absolute;
top: -5px;
left: -5px;
}
}
.div-li:nth-child(3n) {
margin-right: 0;
}
}
/deep/.ant-input {
border: none;
border-bottom: 1px solid #888888;
}
/deep/.ant-input:focus {
box-shadow: none !important;
}
</style>

320
web_admin/src/views/visiting/index.vue

@ -15,20 +15,6 @@
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<!-- <el-form-item label="医院" prop="param.hospital">
<el-select
v-model="queryParams.param.hospitalId"
clearable
placeholder="所属医院"
>
<el-option
v-for="item in hospitalList"
:key="item.id"
:label="item.hospitalName"
:value="item.id"
></el-option>
</el-select>
</el-form-item> -->
<el-form-item label="时间范围" prop="param.time">
<el-date-picker
v-model="queryParams.param.time"
@ -54,7 +40,7 @@
>
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<!-- <el-row :gutter="10" class="mb8">
<el-col :span="1.5" v-hasPermi="['tms:patient:add']">
<el-button
type="primary"
@ -65,30 +51,6 @@
>新增
</el-button>
</el-col>
<!-- <el-col :span="1.5" v-hasPermi="['tms:patient:remove']">
<el-button
type="danger"
plain
icon="el-icon-delete"
size="mini"
:disabled="multiple"
@click="handleDelete"
>删除
</el-button>
</el-col> -->
<!-- <el-col :span="1.5" v-hasPermi="['tms:patient:import']">
<el-button
type="warning"
plain
icon="el-icon-upload2"
size="mini"
:loading="exportLoading"
@click="handlePhysicalReport"
>导入体检报告
</el-button>
</el-col>
-->
<el-col :span="1.5" v-hasPermi="['tms:patient:export']">
<el-button
type="warning"
@ -99,18 +61,7 @@
>导出
</el-button>
</el-col>
<!-- <el-col :span="1.5" v-hasPermi="['tms:patient:import']">
<el-button
type="warning"
plain
icon="el-icon-upload2"
size="mini"
:loading="exportLoading"
@click="handleReport"
>导入体检报告
</el-button>
</el-col> -->
</el-row>
</el-row> -->
<el-table
v-loading="loading"
:data="patientList"
@ -288,7 +239,7 @@
key="contactMobile"
width="120"
></el-table-column> -->
<el-table-column
<!-- <el-table-column
label="与联系人关系"
align="center"
prop="contactRelation"
@ -353,7 +304,7 @@
></el-option>
</el-select>
</template>
</el-table-column>
</el-table-column> -->
<!-- <el-table-column
label="身份证号"
align="center"
@ -402,7 +353,7 @@
key="createTime"
fixed="right"
></el-table-column>
<!-- <el-table-column
<el-table-column
label="操作"
align="center"
prop="department"
@ -414,33 +365,13 @@
<el-button
size="mini"
type="text"
icon="el-icon-search"
@click="handleRecord(scope.row)"
v-hasPermi="['tms:patient:record']"
>
查看测评记录
</el-button>
<el-button
size="mini"
type="text"
icon="el-icon-edit"
@click="handleEdit(scope.row.patientId)"
v-hasPermi="['tms:patient:edit']"
icon="el-icon-tickets"
@click="handleDetail(scope.row)"
>
修改
</el-button>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
style="color: red"
@click="handleDelete(scope.row)"
v-hasPermi="['tms:patient:remove']"
>
删除
详情
</el-button>
</template>
</el-table-column> -->
</el-table-column>
</el-table>
<pagination
v-show="total > 0"
@ -449,100 +380,23 @@
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
<!-- 导入患者信息 医科大学流调-->
<el-dialog
title="导入患者信息(医科大学流调)"
:visible.sync="open"
width="640px"
append-to-body
>
<el-form ref="form" :model="form">
<el-form-item prop="accessUrl">
<el-upload
:limit="1"
class="avatar-uploader wj-uploader"
:headers="headers"
:action="uploadFileUrl"
accept=".xlsx, .xls"
:before-upload="handleBeforePdfUpload"
:show-file-list="true"
:on-success="handleUploadPdfAdd"
:file-list="fileList"
>
<i class="el-icon-upload"></i>
<div class="el-upload__text">
将文件拖到此处
<em>点击上传</em>
</div>
</el-upload>
</el-form-item>
</el-form>
</el-dialog>
<!--导入患者信息 殷家堡 -->
<el-dialog
title="导入患者信息(殷家堡)"
:visible.sync="yjbOpen"
width="640px"
append-to-body
>
<el-form ref="form" :model="form">
<el-form-item prop="accessUrl">
<el-upload
:limit="1"
class="avatar-uploader wj-uploader"
:headers="headers"
:action="uploadFileUrl2"
accept=".xlsx, .xls"
:before-upload="handleBeforePdfUpload"
:show-file-list="true"
:on-success="handleUploadPdfAdd"
:file-list="fileList"
>
<i class="el-icon-upload"></i>
<div class="el-upload__text">
将文件拖到此处
<em>点击上传</em>
</div>
</el-upload>
</el-form-item>
</el-form>
</el-dialog>
<!-- 导入患者信息 -->
<el-dialog
title="导入体检报告"
:visible.sync="physicaOpen"
width="640px"
title="详情"
:visible.sync="detailVisible"
width="1400px"
append-to-body
class="popup"
>
<el-form ref="form" :model="form">
<el-form-item prop="accessUrl">
<el-upload
:limit="1"
class="avatar-uploader wj-uploader"
:headers="headers"
:action="uploadFileUrl1"
accept=".zip"
:before-upload="handleBeforePdfUpload1"
:on-success="handleUploadPdfAdd1"
:file-list="fileList"
:show-file-list="true"
>
<i class="el-icon-upload"></i>
<div class="el-upload__text">
将文件拖到此处
<em>点击上传</em>
</div>
</el-upload>
</el-form-item>
</el-form>
<visiting v-if="detailVisible" :detailData="detailData"></visiting>
</el-dialog>
</div>
</template>
<script>
import visiting from "./components/visiting.vue";
import { getToken } from "@/utils/auth";
import { mapMutations } from "vuex";
import { getHosList } from "@/api/his/hospital";
import { patientList, delPatient } from "@/api/his/patient";
import { queryPatientJzList } from "@/api/visiting";
import {
base as baseConfig,
@ -561,6 +415,9 @@ import {
} from "./config";
export default {
name: "Patient",
components: {
visiting,
},
data() {
return {
baseConfig,
@ -580,6 +437,8 @@ export default {
physicaOpen: false,
open: false,
form: {},
detailVisible: false,
detailData: {},
headers: {
Authorization: "Bearer " + getToken(),
deptId: localStorage.getItem("hospitalId"),
@ -617,97 +476,13 @@ export default {
},
created() {
this.getList();
this.getHospitalList();
},
methods: {
...mapMutations("patient", ["SET_PATIENT_ID"]),
//
handleReport() {
this.open = true;
this.fileList = [];
},
//
handleReport1() {
this.yjbOpen = true;
this.fileList = [];
},
handlePhysicalReport() {
this.fileList = [];
this.physicaOpen = true;
},
// - pdg
handleUploadPdfAdd1(res) {
if (res.code == 200) {
this.physicaOpen = false;
this.getList();
this.$modal.msgSuccess("导入成功");
} else {
this.$message.error(res.msg || "导入失败");
this.fileList = [];
}
},
// -
handleBeforeUpload1(file) {
const isLt2M = file.size / 1024 / 1024 < 100;
//
if (!isLt2M) {
this.$message.error("上传文件大小不能超过 100MB!");
}
return isLt2M;
},
// -
handleBeforePdfUpload1(file) {
const fileSuffix = file.name.substring(file.name.lastIndexOf(".") + 1);
const whiteList = ["zip"];
if (whiteList.indexOf(fileSuffix) === -1) {
this.$message.error("上传文件只能是 zip");
return false;
}
},
// - pdg
handleUploadPdfAdd(res) {
if (res.code == 200) {
this.open = false;
this.yjbOpen = false;
this.getList();
this.$modal.msgSuccess("导入成功");
} else {
this.$message.error(res.msg || "导入失败");
this.fileList = [];
}
},
// -
handleBeforeUpload(file) {
const isLt2M = file.size / 1024 / 1024 < 100;
//
if (!isLt2M) {
this.$message.error("上传文件大小不能超过 100MB!");
}
return isLt2M;
},
// -
handleBeforePdfUpload(file) {
const fileSuffix = file.name.substring(file.name.lastIndexOf(".") + 1);
const whiteList = ["xlsx", "xls"];
if (whiteList.indexOf(fileSuffix) === -1) {
this.$message.error("上传文件只能是 xlsx,xls");
return false;
}
},
//
getHospitalList() {
const queryParams = {
param: {
searchValue: "",
informedConsent: null,
},
pageNum: 1,
pageSize: 100,
};
getHosList(queryParams).then((res) => {
this.hospitalList = [...res.data];
// this.total = res.data.length;
});
//
handleDetail(row) {
this.detailVisible = true;
this.detailData = { ...row };
},
/** 搜索按钮操作----- */
handleQuery() {
@ -751,43 +526,7 @@ export default {
this.single = selection.length !== 1;
this.multiple = !selection.length;
},
//
handleAdd() {
//
this.SET_PATIENT_ID(null);
this.$router.push("/patient/info");
},
//
handleEdit(id) {
//
const patientId = id || this.ids[0];
this.SET_PATIENT_ID(patientId);
this.$router.push({ path: "/patient/info" });
},
//
handleDelete(row) {
const patientIds = row.patientId ? [row.patientId] : this.ids;
this.$modal
.confirm("是否确认删除当前选择的患者数据?")
.then(function () {
return delPatient({ param: { ids: patientIds } });
// return true;
})
.then(() => {
this.getList();
this.$modal.msgSuccess("删除成功");
})
.catch(() => {});
},
//
handleRecord(row) {
const patientId = row.patientId;
this.$router.push({ path: "/evaluation/index", query: { patientId } });
},
//
handleImport() {
this.$message.warning("导入");
},
//
handleExport() {
if (this.queryParams.param.time?.length) {
@ -805,7 +544,14 @@ export default {
},
};
</script>
<style scoped src="@/assets/styles/common.css"></style>
<style scoped>
>>> .el-dialog {
background: rgb(246, 246, 246);
}
>>> .el-dialog__header {
background: #fff;
}
.table-select {
/* 禁止点击 */
pointer-events: none;

2
web_client/src/views/history/components/scaleInforCopy.vue

@ -49,7 +49,7 @@
<div
class="div-derive cardRig-but"
style="width: 130px; margin-right: 10px"
@click="handleExport('个人版')"
@click="handleExport('个人版', true)"
>
<i class="el-icon-upload2"></i>导出个人版
</div>

Loading…
Cancel
Save