Browse Source

模板引入相关功能完善

x-emr
bianyaqi 2 years ago
parent
commit
9c03781f18
  1. 4
      public/index.html
  2. 17
      src/components/360View/forePart/index-copy.vue
  3. 14
      src/components/360View/index.vue
  4. 6
      src/components/360View/medicalRecord/index.vue
  5. 139
      src/components/360View/medicalRecord/outPatientRecord/allFormPrint.vue
  6. 97
      src/components/360View/medicalRecord/outPatientRecord/diagnosisForm.vue
  7. 93
      src/components/360View/medicalRecord/outPatientRecord/historyCallRecord.vue
  8. 82
      src/components/360View/medicalRecord/outPatientRecord/historyForm.vue
  9. 123
      src/components/360View/medicalRecord/outPatientRecord/historyRecordForm.vue
  10. 150
      src/components/360View/medicalRecord/outPatientRecord/index.vue
  11. 5
      src/page-subspecialty/views/modules/template/index.vue
  12. 151
      src/page-subspecialty/views/modules/template/manage/add-fenlei.vue
  13. 149
      src/page-subspecialty/views/modules/template/manage/add-or-update.vue
  14. 64
      src/page-subspecialty/views/modules/template/manage/index.vue
  15. 378
      src/page-subspecialty/views/modules/template/manage/tab-fun.vue

4
public/index.html

@ -39,8 +39,8 @@
<% if (process.env.VUE_APP_NODE_ENV === 'dev') { %>
<script>
//http://121.36.16.195:9002/huimu-admin/swagger-ui/index.html
window.SITE_CONFIG['apiURL'] = 'http://47.110.224.240:8036/xiangan-crf';
// window.SITE_CONFIG['apiURL'] = 'http://192.168.0.168:8036/xiangan-crf';
// window.SITE_CONFIG['apiURL'] = 'http://47.110.224.240:8036/xiangan-crf';
window.SITE_CONFIG['apiURL'] = 'http://192.168.0.168:8036/xiangan-crf';
// window.SITE_CONFIG['apiURL'] = 'http://192.168.4.174:8036/xiangan-crf';
</script>
<% } %>

17
src/components/360View/forePart/index-copy.vue

@ -464,21 +464,6 @@
@remove="removeTree"
/>
</span>
<!-- <span v-if="scope.row.sort === 99">-->
<!-- <treeSelect-->
<!-- v-model="scope.row.os"-->
<!-- :only-read="onlyRead"-->
<!-- :options="scope.row.data"-->
<!-- :props="treeProps"-->
<!-- :multiple="true"-->
<!-- :filterable="true"-->
<!-- :check-strictly="true"-->
<!-- :default-expand-all="true"-->
<!-- @handleNode="handleNode(scope.$index,'os', $event)"-->
<!-- @add="addTree(scope.row, $event)"-->
<!-- @remove="removeTree"-->
<!-- />-->
<!-- </span>-->
<span v-if="!scope.row.sort && !scope.row.id">{{ scope.row.name }}</span>
</div>
</template>
@ -526,11 +511,9 @@ import eventBus from '@/page-subspecialty/utils/eventBus'
import treeSelect from '@/components/360View/itemSelect'
import axios from 'axios'
import Cookies from 'js-cookie'
// import ForeForm from '@/components/360View/medicalRecord/outPatientRecord/foreForm.vue'
const Base64 = require('js-base64').Base64
export default {
components: {
// ForeForm,
treeSelect
},
mixins: [],

14
src/components/360View/index.vue

@ -34,22 +34,23 @@
<div class="rightBox">
<el-tabs type="border-card" :value="timeAxisType" style="height: 100%" @tab-click="tabClick">
<el-tab-pane name="病史总览" label="病史总览" style="height: 100%">
<overView :patient-id="patientId||$route.query.patientId" />
<overView v-if="timeAxisType==='病史总览'" :patient-id="patientId||$route.query.patientId" />
</el-tab-pane>
<el-tab-pane name="门诊病历" label="门诊病历" style="height: 100%">
<medicalRecord :is-dev="isDev" :type-name="timeAxisType" :patient-id="patientId || $route.query.patientId" :is-search="isSearch || $route.query.isSearch" :only-read="readOnly" />
</el-tab-pane>
<el-tab-pane name="常规检查" label="常规检查" style="height: 100%">
<routine :patient-id="patientId||$route.query.patientId" :date="date" :only-read="readOnly" />
<routine v-if="timeAxisType==='常规检查'" :patient-id="patientId||$route.query.patientId" :date="date" :only-read="readOnly" />
</el-tab-pane>
<el-tab-pane name="特殊检查" label="特殊检查" style="height: 100%">
<special :patient-id="patientId||$route.query.patientId" :only-read="readOnly" />
<special v-if="timeAxisType==='特殊检查'" :patient-id="patientId||$route.query.patientId" :only-read="readOnly" />
</el-tab-pane>
<el-tab-pane name="视光档案" label="视光档案" style="height: 100%">
<opticalFile :is-dev="isDev" :patient-id="patientId||$route.query.patientId" :is-search="isSearch || $route.query.isSearch" :only-read="readOnly" />
<opticalFile v-if="timeAxisType==='视光档案'" :is-dev="isDev" :patient-id="patientId||$route.query.patientId" :is-search="isSearch || $route.query.isSearch" :only-read="readOnly" />
</el-tab-pane>
<el-tab-pane name="诊断" label="诊断" style="height: 100%">
<el-table
v-if="timeAxisType==='诊断'"
:data="timeAxisNodeInfo"
style="width: 100%;height: 100%;overflow: auto"
>
@ -84,6 +85,7 @@
</el-tab-pane>
<el-tab-pane name="手术" label="手术" style="height: 100%">
<el-table
v-if="timeAxisType==='手术'"
:data="timeAxisNodeInfo"
style="width: 100%;height: 100%;overflow: auto"
>
@ -134,6 +136,7 @@
</el-tab-pane>
<el-tab-pane name="医嘱" label="医嘱" style="height: 100%">
<el-table
v-if="timeAxisType==='医嘱'"
:data="timeAxisNodeInfo"
style="width: 100%;height: 100%;overflow: auto"
>
@ -169,6 +172,7 @@
</el-tab-pane>
<el-tab-pane name="住院" label="住院" style="height: 100%">
<el-table
v-if="timeAxisType==='住院'"
:data="timeAxisNodeInfo"
style="width: 100%;height: 100%;overflow: auto"
>
@ -205,7 +209,7 @@
</el-table>
</el-tab-pane>
<el-tab-pane name="随访记录" label="随访记录" style="height: 100%">
<followUpRecord :patient-id="patientId||$route.query.patientId" :only-read="readOnly" />
<followUpRecord v-if="timeAxisType==='随访记录'" :patient-id="patientId||$route.query.patientId" :only-read="readOnly" />
</el-tab-pane>
</el-tabs>
</div>

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

@ -30,6 +30,7 @@
:only-read="onlyRead"
:is-search="isSearch"
:case-id="caseId"
:patient-data="patientData"
/>
<InformedConsent
v-if="name==='眼科激光手术患者知情同意书'"
@ -725,11 +726,6 @@ export default {
.tree-button-active {
color: #fff;
}
.custom-tree-node {
flex: 1;
padding-top: 6px;
overflow: hidden;
}
.tree-forname {
white-space: nowrap;
text-overflow: ellipsis;

139
src/components/360View/medicalRecord/outPatientRecord/allFormPrint.vue

@ -1,40 +1,82 @@
<template>
<div id="allForeForm">
<div class="title">病史采集</div>
<div class="fore">
<history-form :form-data="formData" />
<div class="printTitle">
门急诊病历
</div>
<div class="title">前段检查</div>
<div class="fore">
<fore-form
:is-search="isSearch"
:data-form="foreData"
/>
<div v-if="patientData" class="patientInfo">
<div>
姓名{{ patientData.patientName }}
</div>
<div>
性别{{ patientData.patientSex }}
</div>
<div>
年龄{{ patientData.patientAge }}
</div>
<div>
登记号{{ patientData.patientId }}
</div>
<div>
日期{{ $moment().format('YYYY-MM-DD HH:mm:ss') }}
</div>
</div>
<div class="title">后段检查</div>
<div class="fore">
<after-form :is-search="isSearch" :data-form="afterData" />
<div>
<div class="labelItem">
<span>主诉</span> {{ formData.zhuSu }}
</div>
<div class="labelItem">
<span>现病史</span>{{ formData.xbs }}
</div>
<div class="labelItem">
<span>既往病史</span> {{ formData.jws }}
</div>
<div class="labelItem">
<span>过敏史</span> {{ formData.gms }}
</div>
<div class="labelItem">
<span>周身其他病史</span> {{ formData.zsqtbs }}
</div>
<!-- <div>-->
<!-- <span>前段检查</span>{{ frontCheck }}-->
<!-- </div>-->
<div class="labelItem">
<span>诊断</span> {{ diagnosis.zd }}
</div>
<div class="labelItem">
<span>处理</span> {{ diagnosis.cl }}
</div>
<div class="labelItem">
<span>治疗意见</span> {{ diagnosis.zlyj }}
</div>
</div>
<div class="title">专科检查</div>
<div class="fore">
<special-examine :is-search="isSearch" :patient-id="patientId" />
</div>
<div class="title">诊断处置</div>
<diagnosis-form :diagnosis="diagnosis" />
<!-- <div class="fore">-->
<!-- <history-form :form-data="formData" />-->
<!-- </div>-->
<!-- <div class="title">前段检查</div>-->
<!-- <div class="fore">-->
<!-- <fore-form-->
<!-- :is-search="isSearch"-->
<!-- :data-form="foreData"-->
<!-- />-->
<!-- </div>-->
<!-- <div class="title">后段检查</div>-->
<!-- <div class="fore">-->
<!-- <after-form :is-search="isSearch" :data-form="afterData" />-->
<!-- </div>-->
<!-- <div class="title">专科检查</div>-->
<!-- <div class="fore">-->
<!-- <special-examine :is-search="isSearch" :patient-id="patientId" />-->
<!-- </div>-->
<!-- <div class="title">诊断处置</div>-->
<!-- <diagnosis-form :diagnosis="diagnosis" />-->
</div>
</template>
<script>
import HistoryForm from '@/components/360View/medicalRecord/outPatientRecord/historyForm.vue'
import ForeForm from '@/components/360View/medicalRecord/outPatientRecord/foreForm.vue'
import SpecialExamine from '@/components/360View/specialExamine/index.vue'
import DiagnosisForm from '@/components/360View/medicalRecord/outPatientRecord/diagnosisForm.vue'
import eventBus from '@/page-subspecialty/utils/eventBus'
import AfterForm from '@/components/360View/medicalRecord/outPatientRecord/afterForm.vue'
export default {
name: 'AllFormPrint',
components: { AfterForm, DiagnosisForm, SpecialExamine, ForeForm, HistoryForm },
props: ['formData', 'diagnosis', 'patientId', 'isSearch'],
props: ['formData', 'diagnosis', 'patientId', 'isSearch', 'patientData'],
data() {
return {
foreData: {},
@ -42,6 +84,27 @@ export default {
isPrint: true
}
},
computed: {
// frontCheck() {
// if (this.foreData) {
// console.log(this.foreData)
// `OD:${this.foreData.yanjOd}${this.foreData.jiemCxOd}
// ${this.foreData.jiemFmwOd}
// ${this.foreData.leiqOd}
// ${this.foreData.jiaomOd}
// ${this.foreData.qianfOd}
// ${this.foreData.hongmOd}`
// `OS:${this.foreData.yanjOs}
// ${this.foreData.jiemCxOs}
// ${this.foreData.jiemFmwOs}
// ${this.foreData.leiqOs}
// ${this.foreData.jiaomOs}
// ${this.foreData.qianfOs}
// ${this.foreData.hongmOs}`
// }
// return ''
// }
},
mounted() {
this.initData()
},
@ -60,15 +123,37 @@ export default {
}
</script>
<style scoped>
<style lang="scss" scoped>
.title{
text-align: center;
margin-top: 50px;
}
#allForeForm{
width: 800px;
text-align: left;
}
.fore{
width: calc(100% - 10px);
}
.labelItem{
font-size: 16px;
word-break: break-all;
margin: 5px 0;
span{
display: inline-block;
font-weight: bold;
}
}
.printTitle{
font-size: 20px;
font-weight: bold;
text-align: center;
}
.patientInfo{
display: flex;
border-bottom: 1px solid #000;
padding: 10px 0;
>div{
padding-right: 20px;
}
}
</style>

97
src/components/360View/medicalRecord/outPatientRecord/diagnosisForm.vue

@ -1,37 +1,106 @@
<template>
<div style="height: 100%">
<el-form id="formDiagnosis" ref="form" :model="diagnosis" label-width="120px" style="margin-top: 32px">
<el-form-item label="诊断:" style="width: 540px" prop="zd">
<el-input v-model="diagnosis.zd" type="textarea" auto-complete="off" :rows="4" style="width: 420px" />
</el-form-item>
<el-form-item label="处理:" style="width: 540px" prop="cl">
<el-input v-model="diagnosis.cl" type="textarea" auto-complete="off" :rows="4" style="width: 420px" />
</el-form-item>
<el-form-item label="治疗意见:" style="width: 540px" prop="zlyj">
<el-input v-model="diagnosis.zlyj" type="textarea" auto-complete="off" :rows="4" style="width: 420px" />
</el-form-item>
</el-form>
<div style="height: 100%;display: flex">
<div class="historyTaking">
<el-form id="formDiagnosis" ref="form" :model="diagnosis" label-width="120px" style="margin-top: 32px">
<el-form-item label="诊断:" style="width: 540px" prop="zd">
<el-input v-model="diagnosis.zd" type="textarea" auto-complete="off" :rows="4" style="width: 420px" @focus="setCurWord('诊断')" />
</el-form-item>
<el-form-item label="处理:" style="width: 540px" prop="cl">
<el-input v-model="diagnosis.cl" type="textarea" auto-complete="off" :rows="4" style="width: 420px" @focus="setCurWord('处理')" />
</el-form-item>
<el-form-item label="治疗意见:" style="width: 540px" prop="zlyj">
<el-input v-model="diagnosis.zlyj" type="textarea" auto-complete="off" :rows="4" style="width: 420px" @focus="setCurWord('治疗意见')" />
</el-form-item>
</el-form>
</div>
<div v-if="curWord" class="rightText">
<div style="text-align: left;margin-bottom: 16px">
常用内容模板
</div>
<div class="wordContent">
<el-tooltip v-for="(item,index) in commonList" :key="index" effect="dark" placement="top-start">
<span slot="content" class="tooltips">{{ item }}</span>
<el-button class="wordBtn" @click="combineWord(item)">{{ item }}</el-button>
</el-tooltip>
<el-button type="primary" @click="openTextTemplate">更多</el-button>
</div>
</div>
</div>
</template>
<script>
export default {
name: 'DiagnosisForm',
props: ['diagnosis'],
props: ['diagnosis', 'commonList'],
data() {
return {
curWord: ''
}
},
methods: {
reset() {
this.$nextTick(() => {
this.$refs.form.resetFields()
})
},
setCurWord(word) {
this.curWord = word
},
combineWord(text) {
switch (this.curWord) {
case '诊断':
if (!this.diagnosis.zd) {
this.diagnosis.zd = ''
}
this.diagnosis.zd = this.diagnosis.zd + text
break
case '处理':
if (!this.diagnosis.cl) {
this.diagnosis.cl = ''
}
this.diagnosis.cl = this.diagnosis.cl + text
break
case '治疗意见':
if (!this.diagnosis.zlyj) {
this.diagnosis.zlyj = ''
}
this.diagnosis.zlyj = this.diagnosis.zlyj + text
break
}
},
openTextTemplate() {
this.$emit('openDrawer', this.curWord)
}
}
}
</script>
<style lang="scss">
<style scoped lang="scss">
#formDiagnosis{
.el-textarea__inner{
font-size: 16px;
}
}
.wordContent{
text-align: left;
}
.historyTaking{
height: 100%;
padding: 16px 16px 0 0;
width: 50%;
overflow: hidden;
overflow-y: scroll;
}
.wordBtn{
max-width: 200px;
overflow: hidden;
text-overflow: ellipsis;
}
.rightText{
width: 50%;
padding: 16px;
}
.tooltips{
max-width: 200px !important;
}
</style>

93
src/components/360View/medicalRecord/outPatientRecord/historyCallRecord.vue

@ -0,0 +1,93 @@
<template>
<div class="content">
<div class="leftContent">
<div
v-for="(item,index) in historyList"
:key="index"
:class="curIndex===index?'active':''"
class="dateItem"
@click="getCurRecord(item,index)"
>
{{ item.createDate }}
</div>
</div>
<div class="rightBox">
<history-record-form :patient-data="patientData" :history-data="curRecord" @introduceHistory="introduceHistory" />
</div>
</div>
</template>
<script>
import AllFormPrint from '@/components/360View/medicalRecord/outPatientRecord/allFormPrint.vue'
import HistoryRecordForm from '@/components/360View/medicalRecord/outPatientRecord/historyRecordForm.vue'
export default {
name: 'HistoryCallRecord',
components: { HistoryRecordForm, AllFormPrint },
props: ['patientId', 'patientData'],
data() {
return {
historyList: [],
curRecord: {},
curIndex: ''
}
},
created() {
this.queryPatientHistory()
},
methods: {
//
queryPatientHistory() {
this.$http.get('/mjz/getPatientMjzHistory', {
params: {
patientId: this.patientId
}
}).then(res => {
this.historyList = res.data.data
if (this.historyList.length) {
this.curIndex = 0
this.curRecord = this.historyList[0]
}
})
},
getCurRecord(item, index) {
this.curIndex = index
this.curRecord = item
},
//
introduceHistory(param) {
this.$emit('introduceHistory', param)
}
}
}
</script>
<style lang="scss" scoped>
.dateItem{
padding: 5px;
}
.active{
background: #409EFF;
color: #FFFFFF;
}
.content{
display: flex;
justify-content: space-between;
height: 100%;
padding: 0 0 10px 0;
color: #000;
}
.leftContent{
width: 20%;
text-align: left;
padding-right: 10px;
font-size: 16px;
}
.rightBox{
flex: 1;
text-align: left;
padding: 0 0 0 20px;
font-size: 16px;
border-left: 1px solid #ccc;
}
</style>

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

@ -1,62 +1,58 @@
<template>
<!-- <div style="height: 100%;display: flex">-->
<div style="height: 100%;overflow-y: auto">
<div class="historyTaking" style="margin-top: 32px">
<el-form id="medHistory" ref="form" style="width: 540px" :model="formData" label-width="130px">
<div style="height: 100%;display: flex">
<div class="historyTaking">
<el-form id="medHistory" ref="form" :model="formData" label-width="130px">
<el-form-item label="主诉:" prop="zhuSu">
<el-input v-model="formData.zhuSu" type="textarea" auto-complete="off" :rows="4" @blur="getIndex" @focus="setCurWord('主诉')" />
<el-input v-model="formData.zhuSu" type="textarea" auto-complete="off" :rows="4" @focus="setCurWord('主诉')" />
</el-form-item>
<el-form-item label="现病史:" style="width: 540px" prop="xbs">
<el-form-item label="现病史:" prop="xbs">
<el-input v-model="formData.xbs" type="textarea" auto-complete="off" :rows="4" @focus="setCurWord('现病史')" />
</el-form-item>
<el-form-item label="既往病史:" style="width: 540px" prop="jws">
<el-form-item label="既往病史:" prop="jws">
<el-input v-model="formData.jws" type="textarea" auto-complete="off" :rows="4" @focus="setCurWord('既往病史')" />
</el-form-item>
<el-form-item label="过敏史:" style="width: 540px" prop="gms">
<el-form-item label="过敏史:" prop="gms">
<el-input v-model="formData.gms" type="textarea" auto-complete="off" :rows="4" @focus="setCurWord('过敏史')" />
</el-form-item>
<el-form-item label="周身其他病史:" style="width: 540px" prop="zsqtbs">
<el-form-item label="周身其他病史:" prop="zsqtbs">
<el-input v-model="formData.zsqtbs" type="textarea" auto-complete="off" :rows="4" @focus="setCurWord('周身其他病史')" />
</el-form-item>
</el-form>
</div>
<!-- <div v-if="curWord" class="rightText">-->
<!-- {{ curWord }}关键词-->
<!-- <div>-->
<!-- <el-button @click="combineWord('aaaa')">aaaa</el-button>-->
<!-- <el-button @click="combineWord('bbbb')">bbbb</el-button>-->
<!-- <el-button @click="combineWord('cccc')">cccc</el-button>-->
<!-- <el-button @click="combineWord('dddd')">dddd</el-button>-->
<!-- <el-button type="primary" @click="openTextTemplate">更多</el-button>-->
<!-- </div>-->
<!-- </div>-->
<!-- <el-drawer-->
<!-- direction="ltr"-->
<!-- size="40%"-->
<!-- title="我是标题"-->
<!-- :visible.sync="drawer"-->
<!-- :with-header="false"-->
<!-- >-->
<!-- <span>我来啦!</span>-->
<!-- </el-drawer>-->
<!-- </div>-->
<div v-if="curWord" class="rightText">
<div style="text-align: left;margin-bottom: 16px">
常用内容模板
</div>
<div class="wordContent">
<el-tooltip v-for="(item,index) in commonList" :key="index" effect="dark" placement="top-start">
<span slot="content" class="tooltips">{{ item }}</span>
<el-button class="wordBtn" @click="combineWord(item)">{{ item }}</el-button>
</el-tooltip>
<el-button type="primary" @click="openTextTemplate">更多</el-button>
</div>
</div>
</div>
</template>
<script>
import templateManage from '@/page-subspecialty/views/modules/template/manage/index.vue'
export default {
name: 'HistoryForm',
components: {
templateManage
},
props: {
formData: {
type: Object
},
commonList: {
type: Array
}
},
data() {
return {
curWord: '',
textArray: [],
drawer: false
textArray: []
}
},
mounted() {
@ -67,14 +63,11 @@ export default {
this.$refs.form.resetFields()
})
},
getIndex(e) {
console.log(e.srcElement.selectionStart)
},
setCurWord(word) {
this.curWord = word
},
openTextTemplate() {
this.drawer = true
this.$emit('openDrawer', this.curWord)
},
combineWord(text) {
switch (this.curWord) {
@ -120,13 +113,28 @@ export default {
font-size: 16px;
}
}
.tooltips{
max-width: 200px !important;
}
.wordContent{
text-align: left;
}
.wordBtn{
max-width: 200px;
overflow: hidden;
text-overflow: ellipsis;
}
::v-deep .el-button{
margin: 0 16px 16px 0;
}
.rightText{
display: flex;
width: 50%;
padding: 16px;
}
.historyTaking{
height: 100%;
padding: 16px 16px 0 0;
width: 50%;
overflow: hidden;
overflow-y: scroll;
}

123
src/components/360View/medicalRecord/outPatientRecord/historyRecordForm.vue

@ -0,0 +1,123 @@
<template>
<div id="allForeForm">
<div class="printTitle">
门急诊病历
</div>
<div v-if="patientData" class="patientInfo">
<div>
姓名{{ patientData.patientName }}
</div>
<div>
性别{{ patientData.patientSex }}
</div>
<div>
年龄{{ patientData.patientAge }}
</div>
<div>
登记号{{ patientData.patientId }}
</div>
<div v-if="historyData">
日期{{ historyData.createDate }}
</div>
</div>
<div v-if="historyData">
<div class="labelItem">
<span>主诉</span>
{{ historyData.zhuSu }}
<span v-if="historyData.zhuSu" @click="introduceHistory(historyData.zhuSu,'主诉')">引入</span>
</div>
<div class="labelItem">
<span>现病史</span>
{{ historyData.xbs }}
<span v-if="historyData.xbs" @click="introduceHistory(historyData.xbs,'现病史')">引入</span>
</div>
<div class="labelItem">
<span>既往病史</span>
{{ historyData.jws }}
<span v-if="historyData.jws" @click="introduceHistory(historyData.jws,'既往病史')">引入</span>
</div>
<div class="labelItem">
<span>过敏史</span>
{{ historyData.gms }}
<span v-if="historyData.gms" @click="introduceHistory(historyData.gms,'过敏史')">引入</span>
</div>
<div class="labelItem">
<span>周身其他病史</span>
{{ historyData.zsqtbs }}
<span v-if="historyData.zsqtbs" @click="introduceHistory(historyData.zsqtbs,'周身其他病史')">引入</span>
</div>
<div class="labelItem">
<span>诊断</span>
{{ historyData.zd }}
<span v-if="historyData.zd" @click="introduceHistory(historyData.zd,'诊断')">引入</span>
</div>
<div class="labelItem">
<span>处理</span>
{{ historyData.cl }}
<span v-if="historyData.cl" @click="introduceHistory(historyData.cl,'处理')">引入</span>
</div>
<div class="labelItem">
<span>治疗意见</span>
{{ historyData.zlyj }}
<span v-if="historyData.zlyj" @click="introduceHistory(historyData.zlyj,'治疗意见')">引入</span>
</div>
</div>
</div>
</template>
<script>
export default {
name: 'HistoryRecordForm',
props: ['patientData', 'historyData'],
methods: {
introduceHistory(content, type) {
const param = {
content,
type
}
this.$emit('introduceHistory', param)
}
}
}
</script>
<style lang="scss" scoped>
.title{
text-align: center;
margin-top: 50px;
}
#allForeForm{
text-align: left;
}
.fore{
width: calc(100% - 10px);
}
.labelItem{
font-size: 16px;
word-break: break-all;
margin: 5px 0;
span{
display: inline-block;
}
span:nth-child(1){
font-weight: bold;
}
span:nth-child(2){
color: #409EFF;
cursor: pointer;
}
}
.printTitle{
font-size: 20px;
font-weight: bold;
text-align: center;
}
.patientInfo{
display: flex;
border-bottom: 1px solid #000;
padding: 10px 0;
>div{
padding-right: 20px;
}
}
</style>

150
src/components/360View/medicalRecord/outPatientRecord/index.vue

@ -2,6 +2,7 @@
<div class="recordContainer">
<div v-if="!onlyRead && isPlatform" class="btnBox">
<el-button v-print="printAll" size="small" @click="handleSaveTable">打印</el-button>
<el-button type="primary" size="small" @click="checkHistory">历史病历</el-button>
<el-button type="primary" size="small" @click="handleSaveTable">保存</el-button>
<el-button v-if="comonFormActive === '2' || comonFormActive === '3'" type="primary" size="small" @click="handleTemplate">保存为模板</el-button>
<div v-if="comonFormActive === '2' || comonFormActive === '3'" size="small" style="display:inline-block;margin-left:10px;text-align:center;width: 32px;height: 32px;background-color: #1e79ff;border-radius: 4px;vertical-align: bottom" @click="addData">
@ -10,7 +11,7 @@
</div>
<el-tabs v-model="comonFormActive" type="border-card">
<el-tab-pane label="病史采集" name="1" style="height: 100%">
<history-form ref="history" :form-data="formData" />
<history-form ref="history" :common-list="commonList" :form-data="formData" @openDrawer="openDrawer" />
</el-tab-pane>
<el-tab-pane label="前段检查" name="2" style="height: 100%">
<forePart ref="foreParts" :patient-id="patientId" :is-search="isSearch" :only-read="onlyRead" :case-id="caseId" :is-platform="isPlatform" />
@ -22,14 +23,40 @@
<specialExamine ref="examines" :patient-id="patientId" :is-search="isSearch" :case-id="caseId" />
</el-tab-pane>
<el-tab-pane label="诊断处置" name="5">
<diagnosis-form ref="diagnosis" :diagnosis="diagnosis" />
<diagnosis-form ref="diagnosis" :common-list="commonList" :diagnosis="diagnosis" @openDrawer="openDrawer" />
</el-tab-pane>
</el-tabs>
<!-- 历史病历查看及引入 -->
<el-dialog
v-if="historyVisible"
title="历史病历"
:visible.sync="historyVisible"
width="50%"
>
<div slot="title" class="historyTitle">历史病历</div>
<history-call-record
:patient-data="patientData"
:patient-id="patientId"
@introduceHistory="introduceHistory"
/>
</el-dialog>
<!-- 模板引入 -->
<el-drawer
direction="ltr"
size="40%"
title="我是标题"
:visible.sync="drawer"
:with-header="false"
>
<template-manage page-title="模板引入" @yinruTemplateClick="yinruTemplateClick" />
</el-drawer>
<!-- 打印显示 -->
<all-form-print
:patient-id="patientId"
:diagnosis="diagnosis"
:form-data="formData"
:is-search="isSearch"
:patient-data="patientData"
/>
</div>
</template>
@ -40,16 +67,20 @@ import specialExamine from '@/components/360View/specialExamine'
import HistoryForm from '@/components/360View/medicalRecord/outPatientRecord/historyForm.vue'
import AllFormPrint from '@/components/360View/medicalRecord/outPatientRecord/allFormPrint.vue'
import DiagnosisForm from '@/components/360View/medicalRecord/outPatientRecord/diagnosisForm.vue'
import templateManage from '@/page-subspecialty/views/modules/template/manage/index.vue'
import HistoryCallRecord from '@/components/360View/medicalRecord/outPatientRecord/historyCallRecord.vue'
const Base64 = require('js-base64').Base64
export default {
components: {
HistoryCallRecord,
DiagnosisForm,
AllFormPrint,
HistoryForm,
forePart,
afterPart,
specialExamine
specialExamine,
templateManage
},
mixins: [],
props: {
@ -76,11 +107,18 @@ export default {
onlyRead: {
type: Boolean,
default: false
},
patientData: {
type: Object,
default: () => {}
}
},
inject: ['refresh'],
data() {
return {
historyVisible: false,
drawer: false,
curWord: '',
jzNumber: '',
formData: {
caseId: this.caseId,
@ -102,6 +140,7 @@ export default {
}, //
flag: '', // 1 2 3 4 5
comonFormActive: '1',
commonList: [],
printAll: {
id: 'allForeForm'
}
@ -120,6 +159,7 @@ export default {
this.jzNumber = window.sessionStorage.getItem('jzNumber')
await this.getMedicalHistory()
await this.getDiagnosis()
this.queryCommonWord()
},
methods: {
//
@ -138,6 +178,10 @@ export default {
this.$refs.afterParts.handleTemplate()
}
},
//
checkHistory() {
this.historyVisible = true
},
//
addData() {
if (this.comonFormActive === '2') {
@ -195,6 +239,100 @@ export default {
this.$message.error(res.msg)
}
},
//
openDrawer(value) {
this.drawer = true
this.curWord = value
},
//
introduceHistory(param) {
switch (param.type) {
case '主诉':
this.formData.zhuSu = param.content
break
case '现病史':
this.formData.xbs = param.content
break
case '既往病史':
this.formData.jws = param.content
break
case '过敏史':
this.formData.gms = param.content
break
case '周身其他病史':
this.formData.zsqtbs = param.content
break
case '诊断':
this.diagnosis.zd = param.content
break
case '处理':
this.diagnosis.cl = param.content
break
case '治疗意见':
this.diagnosis.zlyj = param.content
break
}
},
//
yinruTemplateClick(value) {
const text = value.contentValue
switch (this.curWord) {
case '主诉':
if (!this.formData.zhuSu) {
this.formData.zhuSu = ''
}
this.formData.zhuSu = this.formData.zhuSu + text
break
case '现病史':
if (!this.formData.xbs) {
this.formData.xbs = ''
}
this.formData.xbs = this.formData.xbs + text
break
case '既往病史':
if (!this.formData.jws) {
this.formData.jws = ''
}
this.formData.jws = this.formData.jws + text
break
case '过敏史':
if (!this.formData.gms) {
this.formData.gms = ''
}
this.formData.gms = this.formData.gms + text
break
case '周身其他病史':
if (!this.formData.zsqtbs) {
this.formData.zsqtbs = ''
}
this.formData.zsqtbs = this.formData.zsqtbs + text
break
case '诊断':
if (!this.diagnosis.zd) {
this.diagnosis.zd = ''
}
this.diagnosis.zd = this.diagnosis.zd + text
break
case '处理':
if (!this.diagnosis.cl) {
this.diagnosis.cl = ''
}
this.diagnosis.cl = this.diagnosis.cl + text
break
case '治疗意见':
if (!this.diagnosis.zlyj) {
this.diagnosis.zlyj = ''
}
this.diagnosis.zlyj = this.diagnosis.zlyj + text
break
}
},
//
queryCommonWord() {
this.$http.get('/bd/template/getUsual').then(res => {
this.commonList = res.data.data
})
},
//
async saveHistory() {
const { data: res } = await this.$http.post('/mjz/saveMjzBscj', this.formData)
@ -229,6 +367,12 @@ export default {
z-index: 9;
}
}
.historyTitle{
font-size: 24px;
font-weight: bold;
border-bottom: 1px solid #ccc;
padding-bottom: 10px;
}
</style>
<style lang="scss">
.recordContainer{

5
src/page-subspecialty/views/modules/template/index.vue

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

151
src/page-subspecialty/views/modules/template/manage/add-fenlei.vue

@ -0,0 +1,151 @@
<template>
<div class="template-add-dialog">
<el-dialog
width="40%"
:visible.sync="visible"
:title="!dataForm.id ? '新增模板分类' : '修改模板分类'"
:close-on-click-modal="false"
:close-on-press-escape="false"
@close="closeDialog"
>
<el-form
ref="dataForm"
:model="dataForm"
:rules="dataRule"
label-width="auto"
>
<el-form-item prop="content" label="分类名称">
<el-input
v-model="dataForm.content"
placeholder="分类名称"
size="small"
/>
</el-form-item>
<!-- 排序 -->
<el-form-item prop="sort" label="排序">
<el-input-number v-model="dataForm.sort" controls-position="right" :min="0" label="排序" />
</el-form-item>
</el-form>
<template slot="footer">
<el-button @click="visible = false">{{ $t('cancel') }}</el-button>
<el-button type="primary" @click="dataFormSubmitHandle">{{ $t('confirm') }}</el-button>
<!-- <el-button type="primary" @click="exportContent">引入</el-button> -->
</template>
</el-dialog>
</div>
</template>
<script>
export default {
props: {
systemInfo: {
type: Object,
default: () => {
return {}
}
}
},
data() {
return {
visible: false,
modelType: '',
dataForm: {
pid: 0,
// 1:2:
type: '',
sort: 0,
content: ''
}
}
},
computed: {
dataRule() {
return {
content: [
{ required: true, message: '请输入内容', trigger: 'blur' }
]
}
}
},
methods: {
init() {
this.visible = true
this.$nextTick(() => {
this.$refs.dataForm.resetFields()
if (this.dataForm.id) {
!this.modelType && this.getInfo()
}
})
},
//
getInfo() {
this.$http.get('/bd/template/getTemplateById', {
params: {
id: this.dataForm.id
}
}).then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg)
}
this.dataForm = res.data
}).catch(() => {})
},
//
dataFormSubmitHandle() {
this.$refs.dataForm.validate((valid) => {
if (!valid) {
return false
}
this.dataForm.type = parseFloat(this.dataForm.type)
let url = ''
if (this.dataForm.id) {
url = '/bd/template/updateBdTemplate'
} else {
url = '/bd/template/addBdTemplate'
}
this.$http.post(url, { ...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.visible = false
this.$emit('refreshDataList')
}
})
}).catch(() => {})
})
},
closeDialog() {
this.$emit('closeDialog')
}
}
}
</script>
<style lang="scss">
.template-add-dialog{
.el-form-item {
margin-bottom:8px
}
.el-select {
width: 100%;
}
.el-form-item__error {
top: 27% !important;
right: 10px !important;
left: auto;
}
.el-input-number {
width: 100%;
}
.el-input__inner {
text-align: left;
}
}
</style>

149
src/page-subspecialty/views/modules/template/manage/add-or-update.vue

@ -0,0 +1,149 @@
<template>
<div class="template-add-dialog">
<el-dialog
width="50%"
:visible.sync="visible"
:title="!dataForm.id ? '新增' : '编辑'"
:close-on-click-modal="false"
:close-on-press-escape="false"
@close="closeDialog"
>
<el-form
ref="dataForm"
:model="dataForm"
:rules="dataRule"
label-width="auto"
>
<el-form-item prop="contentValue" label="模板内容" style="margin-top:20px;">
<el-input
v-model="dataForm.contentValue"
type="textarea"
:autosize="{ minRows: 18}"
placeholder="请输入内容"
/>
</el-form-item>
<!-- 排序 -->
<el-form-item prop="sort" label="排序">
<el-input-number v-model="dataForm.sort" controls-position="right" :min="0" label="排序" />
</el-form-item>
</el-form>
<template slot="footer">
<el-button @click="visible = false">{{ $t('cancel') }}</el-button>
<el-button type="primary" @click="dataFormSubmitHandle">{{ $t('confirm') }}</el-button>
<!-- <el-button type="primary" @click="exportContent">引入</el-button> -->
</template>
</el-dialog>
</div>
</template>
<script>
export default {
props: {
systemInfo: {
type: Object,
default: () => {
return {}
}
}
},
data() {
return {
visible: false,
type: '',
dataForm: {
treeId: '',
contentValue: '',
sort: ''
}
}
},
computed: {
dataRule() {
return {
contentValue: [
{ required: true, message: this.$t('validate.required'), trigger: 'blur' }
]
}
}
},
methods: {
init() {
this.visible = true
this.$nextTick(() => {
this.$refs.dataForm.resetFields()
if (this.dataForm.id) {
this.getInfo()
}
})
},
//
getInfo() {
this.$http.get('/bd/template/getInfoById', {
params: {
id: this.dataForm.id
}
}).then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg)
}
this.dataForm = res.data
}).catch(() => {})
},
//
dataFormSubmitHandle() {
this.$refs.dataForm.validate((valid) => {
if (!valid) {
return false
}
let url = ''
if (this.dataForm.id) {
url = '/bd/template/updateBdTemplateValue'
} else {
url = '/bd/template/addBdTemplateValue'
}
this.updateTemplate({ ...this.dataForm }, url)
})
},
// /
updateTemplate(dataForm, url) {
this.$http.post(url, { ...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.visible = false
this.$emit('refreshDataList')
}
})
}).catch(() => {})
},
closeDialog() {
this.$emit('closeDialog')
}
}
}
</script>
<style lang="scss">
.template-add-dialog{
.el-form-item {
margin-bottom:8px
}
.el-select {
width: 100%;
}
.el-form-item__error {
top: 27% !important;
right: 10px !important;
left: auto;
}
.el-input__inner {
text-align: left;
}
}
</style>

64
src/page-subspecialty/views/modules/template/manage/index.vue

@ -0,0 +1,64 @@
<template>
<div class="template-management-father">
<div class="template-management">
<el-tabs v-model="mainActiveName">
<el-tab-pane label="科室" name="1" class="tab-p">
<tabFun v-if="mainActiveName==='1'" ref="tabFunRef1" main-active-name="1" :page-title="pageTitle" @yinruTemplateClick="yinruTemplateClick" />
</el-tab-pane>
<el-tab-pane label="个人" name="2" class="tab-p">
<tabFun v-if="mainActiveName==='2'" ref="tabFunRef2" main-active-name="2" :page-title="pageTitle" @yinruTemplateClick="yinruTemplateClick" />
</el-tab-pane>
</el-tabs>
</div>
</div>
</template>
<script>
import tabFun from './tab-fun.vue'
export default {
components: {
tabFun
},
props: {
pageTitle: {
type: String,
default: '模板管理'
}
},
data() {
return {
mainActiveName: '1'
}
},
created() {
},
methods: {
//
yinruTemplateClick(item) {
this.$emit('yinruTemplateClick', item)
}
}
}
</script>
<style lang="scss" scoped>
.template-management-father {
height: calc(100vh - 50px - 32px);
width: 100%;
}
.template-management {
background: #fff;
padding: 12px;
width: 100%;
height: calc(100vh - 60px);
}
</style>
<style lang="scss" >
.template-management {
.el-tabs__nav-wrap::after {
height: 1px !important;
}
.el-tabs__header {
margin-bottom: 6px;
}
}
</style>

378
src/page-subspecialty/views/modules/template/manage/tab-fun.vue

@ -0,0 +1,378 @@
<template>
<div class="tab-fun">
<div class="leftlist">
<div class="leftlist-ul" :class="pageTitle=='模板管理' ? 'leftlistMb' : 'leftlistDa'">
<el-tree
ref="templateTree"
:data="fenleiList"
:props="defaultProps"
node-key="id"
accordion
highlight-current
default-expand-all
:expand-on-click-node="false"
>
<span slot-scope="{ node, data }" class="custom-tree-node treeItem" @click="leftListClick(data)">
<el-tooltip show-overflow-tip class="item" effect="dark" placement="top-start">
<div slot="content" class="tooltips">{{ node.label }}</div>
<span class="treeContent">{{ node.label }}</span>
</el-tooltip>
<span v-show="pageTitle=='模板管理'">
<el-button
class="operateBtn"
type="text"
size="mini"
icon="el-icon-edit"
@click="() => addEditFenlei(data)"
/>
<el-button
class="operateBtn"
type="text"
size="mini"
icon="el-icon-plus"
@click="() => addEditFenlei(data,'新增子节点')"
/>
<el-button
class="operateBtn"
type="text"
size="mini"
icon="el-icon-delete"
@click="() => deleteFenleiClick(data,'分类')"
/>
</span>
</span>
</el-tree>
</div>
<el-button v-show="pageTitle=='模板管理'" type="primary" icon="el-icon-plus" class="plus-fenlei" circle @click="addEditFenlei" />
</div>
<div class="rightlist">
<div v-if="contentList.length" class="rightlist-ul" :class="pageTitle=='模板管理' ? 'rightlistMb' : 'rightlistDa'">
<div v-for="(item,index) in contentList" :key="index" class="flex rightli" @dblclick="yinruTemplateClick(item)">
<div class="rightContentli">
<span>{{ item.contentValue }}</span>
</div>
<span v-if="pageTitle=='模板管理'" class="buttonli">
<span
style="color: #1890ff; padding-right: 8px"
class="cursor"
@click="setOften(item)"
>
<el-icon :class="[item.usual?'el-icon-star-on':'el-icon-star-off',item.usual?'active':'']" />
</span>
<span
style="color: #1890ff; padding-right: 8px"
class="cursor"
@click="addEditContent(item)"
>编辑</span>
<span
style="color: #ff4d4f;"
class="cursor"
@click="deleteFenleiClick(item)"
>删除</span>
</span>
<span v-else class="buttonli">
<span
style="color: #1890ff; padding-right: 8px"
class="cursor"
@click="yinruTemplateClick(item)"
>引入</span>
</span>
</div>
</div>
<div v-else class="nodata">
<img src="@/assets/img/nodata.png" alt="">
</div>
<el-button v-show="pageTitle=='模板管理'" type="primary" icon="el-icon-plus" class="plus" circle @click="addEditContent()" />
</div>
<add-or-update
v-if="addContentVisible"
ref="addContentRef"
@refreshDataList="getContent"
@closeDialog="addContentVisible=false"
/>
<addFenlei
v-if="addfenleiVisible"
ref="addfenleiRef"
@refreshDataList="getfenleiList"
@closeDialog="addfenleiVisible=false"
/>
</div>
</template>
<script>
import addOrUpdate from './add-or-update.vue'
import mixinViewModule from '@/mixins/view-module'
import addFenlei from './add-fenlei.vue'
export default {
components: {
addOrUpdate,
addFenlei
},
mixins: [mixinViewModule],
props: {
mainActiveName: {
type: String,
default: ''
},
pageTitle: {
type: String,
default: ''
}
},
data() {
return {
addContentVisible: false,
addfenleiVisible: false,
fenleiList: [],
currentFenleiList: {},
contentList: [],
currentContentList: {},
defaultProps: {
children: 'childList',
label: 'content'
}
}
},
mounted() {
this.getfenleiList()
},
methods: {
//
async getfenleiList() {
const { data: res } = await this.$http.get('/bd/template/getListByType', {
params: {
type: this.mainActiveName
}
})
if (res.code === 0) {
this.fenleiList = res.data
res.data && res.data.length > 0 ? this.currentFenleiList = res.data[0] : ''
this.$nextTick(() => {
this.$refs.templateTree.setCurrentKey(this.currentFenleiList.id)
})
res.data && res.data.length > 0 ? this.getContent() : ''
} else {
this.$message.error(res.msg)
}
},
//
async getContent() {
const { data: res } = await this.$http.get('/bd/template/getInfoByTreeId', {
params: {
treeId: this.currentFenleiList.id
}
})
if (res.code === 0) {
this.contentList = res.data
} else {
this.$message.error(res.msg)
}
},
// tab
handleClick(item) {
this.getfenleiList()
},
//
leftListClick(formItem) {
this.currentFenleiList = formItem
this.getContent()
},
// /
addEditFenlei(item, other) {
this.addfenleiVisible = true
this.$nextTick(() => {
// 1:2:
this.$refs.addfenleiRef.dataForm.type = this.mainActiveName
this.$refs.addfenleiRef.modelType = other
item && !other ? this.$refs.addfenleiRef.dataForm.id = item.id : ''
item && other ? this.$refs.addfenleiRef.dataForm.pid = item.id : ''
this.$refs.addfenleiRef.init()
})
},
//
setOften(item) {
const usual = !item.usual
this.$http.post('/bd/template/updateBdTemplateValue', { id: item.id, usual, sort: item.sort }).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.visible = false
this.getContent()
}
})
}).catch(() => {})
},
//
addEditContent(item) {
this.addContentVisible = true
this.$nextTick(() => {
this.$refs.addContentRef.dataForm.treeId = this.currentFenleiList.id // id
item ? this.$refs.addContentRef.dataForm.id = item.id : '' //
this.$refs.addContentRef.init() //
})
},
//
deleteFenleiClick(item, flag) {
const text = flag === '分类' ? '删除此分类将同时删除分类级下的所有内容,您确定要删除此模板分类吗?' : '您确定要删除此内容吗?'
const url = flag === '分类' ? '/bd/template/deleteBdTemplate' : '/bd/template/deleteBdTemplateValue'
this.$confirmFun(text).then(async() => {
const { data: res } = await this.$http.get(url, {
params: {
id: item.id
}
})
if (res.code === 0) {
this.$message({
message: this.$t('prompt.success'),
type: 'success',
duration: 500,
onClose: () => {
flag === '分类' ? (this.getfenleiList(), this.getContent()) : this.getContent()
}
})
} else {
this.$message.error(res.msg)
}
})
},
//
yinruTemplateClick(item) {
this.$emit('yinruTemplateClick', item)
}
}
}
</script>
<style lang="scss" scoped>
.nodata{
width: 100%;
height: 100%;
display: flex;
align-items: center;
justify-content: center;
}
::v-deep .el-icon-caret-right:before {
color: #262626;
}
.treeContent{
width: 100px;
overflow: hidden;
text-overflow: ellipsis;
}
::v-deep .el-tree--highlight-current .el-tree-node.is-current>.el-tree-node__content{
background-color: #409EFF;
color: #FFFFFF;
button{
color: #FFFFFF;
}
}
.treeItem{
width: 100%;
padding-right: 10px;
display: flex;
justify-content: space-between;
align-items: center;
.operateBtn{
font-size: 16px;
color: #333;
}
}
.tooltips{
max-width: 200px;
}
.tab-fun {
display: flex;
height: calc(100vh - 125px);
.flex{
display: flex;
}
.active{
font-size: 18px !important;
}
.leftlist {
width: 240px;
min-width: 200px;
border-right: 1px solid #ccc;
position: relative;
}
.leftlist-ul {
overflow-y: auto;
}
.leftlistMb{
height: calc(100vh - 160px);
}
.leftlistDa {
height: calc(100vh - 110px);
}
.plus-fenlei {
position: absolute;
right: 10px;
bottom: 0;
}
.rightlist {
flex: 1;
position: relative;
}
.rightlist-ul {
overflow-y: auto;
}
.rightlistMb{
height: calc(100vh - 160px);
}
.rightlistDa {
height: calc(100vh - 110px);
}
.plus {
position: absolute;
right: 0px;
bottom: 0;
}
.li {
padding: 6px 12px;
text-align: center;
cursor: pointer;
display: flex;
justify-content: space-between;
align-items: center;
border-bottom: 1px solid #ccc;
}
.currentLi {
background: #1890ff;
color: #fff;
padding: 6px 12px;
text-align: center;
}
.rightli {
padding: 6px 10px;
text-align: left;
border-bottom: 1px solid #ebeef5;
white-space: normal;
word-break: break-all;
}
.buttonli {
display: inline-block;
text-align: center;
padding-left:20px;
}
.rightContentli {
flex: 1;
}
.rightContentli-title {
font-weight: 700;
font-size: 18px;
}
.rightli:hover {
background: #f5f7fa;
}
.cursor {
cursor: pointer;
}
}
</style>
Loading…
Cancel
Save