Browse Source

peter

360view
newPeter7 2 years ago
parent
commit
18683734b6
  1. 5
      src/components/360View/index1.vue
  2. 51
      src/components/patient-search/data-list.vue
  3. 166
      src/components/patient-search/index.vue
  4. 105
      src/page-subspecialty/router/index.js
  5. 8
      src/page-subspecialty/views/modules/optometryManagement/dioptric/index.vue
  6. 12
      src/page-subspecialty/views/modules/outpatientManagement/call/index.vue
  7. 12
      src/page-subspecialty/views/modules/outpatientManagement/treat/index.vue
  8. 11
      src/page-subspecialty/views/modules/scientificManagement/search/index.vue
  9. 8
      src/page-subspecialty/views/pages/login.vue

5
src/components/360View/index1.vue

@ -272,6 +272,7 @@ export default {
sharkFlag: true,
patientBaseData: {},
timeAxisNodeInfo: [], //
doctorId: '', //
date: '', //
source: '', //
collectList: '', //
@ -396,8 +397,10 @@ export default {
this.drawerWidth = (this.drawerWidth === '500px') ? '800px' : '500px'
},
backList() {
if (this.$route.query.patientId) {
if (this.$route.query.patientId && !this.$route.query.doctorId) {
this.$router.go(-1)
} else if (this.$route.query.doctorId) {
this.$router.push('/outpatientManagement-call')
} else {
this.$parent.detailViewVisible = false
this.$parent.getDataListInitial()

51
src/components/patient-search/data-list.vue

@ -39,7 +39,6 @@
</el-form-item>
</template>
</el-form>
</template>
</el-table-column>
<!-- 姓名 -->
@ -75,46 +74,22 @@
<!-- 操作 -->
<el-table-column label="操作" header-align="center" align="center" width="120">
<template slot-scope="scope">
<el-button type="text" size="small" @click="showDetail(scope.row)">查看详情
</el-button>
<el-button type="text" size="small" @click="showDetail(scope.row)">查看详情</el-button>
</template>
</el-table-column>
</el-table>
<!-- 详情页 -->
<!-- <detail-view v-if="dialogVisible" ref="detailView" :project-id="projectId" /> -->
<!-- <el-dialog
class="dialog"
:visible.sync="dialogVisible"
:title="'患者360'"
:close-on-click-modal="false"
:close-on-press-escape="false"
:fullscreen="true"
append-to-body
>
<patient-view
v-if="dialogVisible"
ref="detailView"
:patient-id-number="patient.patientIdNumber"
:project-id="patient.projectId"
/>
</el-dialog> -->
</div>
</template>
<script>
import echartsLineKpi from '@/components/echarts/line-kpi'
import echartsLineKpiVa from '@/components/echarts/line-kpi-va'
// import checked from '@/mixins/checked'
// import patientView from '@/components/patient-view'
import { findItem } from '@/utils/tree'
export default {
components: {
echartsLineKpi,
echartsLineKpiVa
// patientView
},
props: {
dataListLoading: { type: Boolean, default: false },
@ -125,15 +100,14 @@ export default {
},
data() {
return {
dialogVisible: false,
selectIdList: [],
selectList: [],
patient: {
patientIdNumber: '',
projectId: ''
}
patientId: ''
}
},
mounted() {
console.log(this.dataList)
},
methods: {
getExamItem(obj) {
const result = []
@ -165,14 +139,13 @@ export default {
return this.selectDisableIdList.indexOf(row.id) < 0
},
//
showDetail(scope) {
this.dialogVisible = true
this.patient.patientIdNumber = scope.id
this.patient.projectId = this.projectId
// this.$nextTick(() => {
// this.$refs.detailView.patientIdNumber = scope.id
// this.$refs.detailView.init()
// })
showDetail(scopeRow) {
this.$emit('viewDetail', scopeRow.esPatientInfo.patientId)
// this.patientId = scopeRow.patientId
const mzName = scopeRow.mzDoctorName ? scopeRow.mzDoctorName : ''
const jzNumber = scopeRow.jzNumber ? scopeRow.jzNumber : ''
window.localStorage.setItem('mzDoctorName', mzName)
window.localStorage.setItem('jzNumber', jzNumber)
}
}
}

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

@ -1,86 +1,87 @@
<template>
<div class="project-main">
<el-card shadow="never" class="aui-card--fill">
<el-form
:inline="true"
:model="dataForm"
class="search-wrapper"
@submit.native.prevent
@keyup.enter.native="search"
>
<div class="search-wrapper-top">
<el-form-item class="search-item-input-wrapper">
<el-input v-model="keyWord" size="small" :placeholder="'全文检索(主要内容)关键词'" clearable>
<el-button slot="append" icon="el-icon-search" size="small" @click="getDataListInitial">搜索</el-button>
</el-input>
</el-form-item>
<!-- 筛选条件 -->
<el-form-item>
<el-button type="primary" size="small" @click="queryItemVisible=!queryItemVisible">筛选
<i v-if="!queryItemVisible" class="el-icon-arrow-right el-icon--right" />
<i v-else class="el-icon-arrow-down el-icon--right" />
</el-button>
</el-form-item>
<!-- slot -->
<el-form-item>
<slot name="btn" />
</el-form-item>
</div>
<transition name="slide-fade">
<div v-show="queryItemVisible" class="find-">
<!-- 查询条件 -->
<el-form-item label="必须" style="width:100%;">
<item-select v-model="queryItemData_must" :connection="'must'" />
<div v-if="!detailViewVisible">
<el-card shadow="never" class="aui-card--fill">
<el-form
:inline="true"
:model="dataForm"
class="search-wrapper"
@submit.native.prevent
@keyup.enter.native="getDataListInitial"
>
<div class="search-wrapper-top">
<el-form-item class="search-item-input-wrapper">
<el-input v-model="keyWord" size="small" :placeholder="'全文检索(主要内容)关键词'" clearable>
<el-button slot="append" icon="el-icon-search" size="small" @click="getDataListInitial">搜索</el-button>
</el-input>
</el-form-item>
<el-form-item label="可以" style="width:100%;">
<item-select v-model="queryItemData_should" :connection="'should'" />
<!-- 筛选条件 -->
<el-form-item>
<el-button type="primary" size="small" @click="queryItemVisible=!queryItemVisible">筛选
<i v-if="!queryItemVisible" class="el-icon-arrow-right el-icon--right" />
<i v-else class="el-icon-arrow-down el-icon--right" />
</el-button>
</el-form-item>
<el-form-item label="排除" style="width:100%;">
<item-select v-model="queryItemData_must_not" :connection="'must_not'" />
<!-- slot -->
<el-form-item>
<slot name="btn" />
</el-form-item>
</div>
</transition>
</el-form>
<!-- 查询结果 -->
<div class="result-wrapper">
<data-list
ref="dataList"
:data-list-loading="dataListLoading"
:data-list="dataList"
:project-id="projectId"
v-bind="$attrs"
v-on="$listeners"
/>
<!-- 分页 -->
<el-pagination
background
:current-page="page"
:page-sizes="[10, 20, 50, 100, 200, 500]"
:page-size="limit"
:total="total"
layout="total, prev, pager, next, jumper"
@size-change="pageSizeChangeHandle"
@current-change="pageCurrentChangeHandle"
/>
</div>
</el-card>
<!-- 底部全选反选 -->
<checked-footer ref="checkfooter" table-ref="multipleTable" :current-table-list="currentTableList" :data-list="dataList">
<div class="batch_button">
<transition name="slide-fade">
<div v-show="queryItemVisible" class="find-">
<!-- 查询条件 -->
<el-form-item label="必须" style="width:100%;">
<item-select v-model="queryItemData_must" :connection="'must'" />
</el-form-item>
<el-form-item label="可以" style="width:100%;">
<item-select v-model="queryItemData_should" :connection="'should'" />
</el-form-item>
<el-form-item label="排除" style="width:100%;">
<item-select v-model="queryItemData_must_not" :connection="'must_not'" />
</el-form-item>
</div>
</transition>
</el-form>
<!-- 查询结果 -->
<div class="result-wrapper">
<data-list
ref="dataList"
:data-list-loading="dataListLoading"
:data-list="dataList"
:project-id="projectId"
@viewDetail="viewDetail"
v-bind="$attrs"
v-on="$listeners"
/>
<!-- 分页 -->
<el-pagination
background
:current-page="page"
:page-sizes="[10, 20, 50, 100, 200, 500]"
:page-size="limit"
:total="total"
layout="total, prev, pager, next, jumper"
@size-change="pageSizeChangeHandle"
@current-change="pageCurrentChangeHandle"
/>
</div>
</el-card>
<!-- 底部全选反选 -->
<checked-footer ref="checkfooter" table-ref="multipleTable" :current-table-list="currentTableList" :data-list="dataList">
<div class="batch_button">
<el-button type="primary" size="small" :disabled="currentTableList.length > 0 ? false :true">加入分组
</el-button>
<div class="batch_button">
<el-button type="primary" size="small" :disabled="currentTableList.length > 0 ? false :true">加入分组
</el-button>
</div>
</div>
</div>
</checked-footer>
</checked-footer>
</div>
<detail-view v-if="detailViewVisible" ref="viewRef" :only-read="onlyRead" :is-search="'1'" :patient-id="patientId" @detailViewVisible="detailViewVisible=false" />
</div>
</template>
<script>
import detailView from '@/components/360View/index1' // 360
import checked from '@/mixins/checked'
import checkedFooter from '@/components/checked-footer'
import dataList from './data-list.vue'
@ -90,6 +91,7 @@ import Cookies from 'js-cookie'
export default {
components: {
itemSelect,
detailView,
dataList,
checkedFooter
},
@ -107,16 +109,23 @@ export default {
},
dataForm: {},
keyWord: '',
patientId: '',
limit: 10,
page: 1,
total: 0,
onlyRead: true,
dataListLoading: false, // loading
queryItemVisible: false,
isExpandAll: false,
detailViewVisible: false,
queryItemData_must: [],
queryItemData_should: [],
queryItemData_must_not: [],
dataList: [],
dataList: [
{
name: 1
}
],
currentTableList: []
}
},
@ -125,12 +134,11 @@ export default {
deep: true,
handler(val) {
if (val.must.length > 0 || val.should.length > 0 || val.must_not.length > 0) {
console.log(val)
this.queryItemVisible = true
this.queryItemData_must = val.must
this.queryItemData_should = val.should
this.queryItemData_must_not = val.must_not
this.getDataList()
// this.getDataList()
}
}
}
@ -145,6 +153,11 @@ export default {
this.page = 1
this.retrieval()
},
viewDetail(val) {
console.log(val)
this.patientId = val
this.detailViewVisible = true
},
//
retrieval() {
this.getDataList()
@ -211,6 +224,9 @@ export default {
</script>
<style lang='scss' scoped>
.project-main{
height: 100%;
}
.search-wrapper-top {
display: flex;
align-items: center;
@ -238,7 +254,7 @@ export default {
}
</style>
<style lang='scss'>
<style lang="scss">
.project-main {
.search-wrapper-top {
.el-form-item__content {

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

@ -2,6 +2,7 @@ import Vue from 'vue'
import Router from 'vue-router'
import http from '../utils/request'
import { isURL } from '@/utils/validate'
import Cookies from 'js-cookie'
Vue.use(Router)
@ -146,6 +147,9 @@ router.beforeEach((to, from, next) => {
}
if (to.name === 'login' || to.path === '/login' || to.path === 'satusScreen' || to.name === 'satusScreen') {
next()
} else if (to.name === '360view' && to.query.doctorId) {
loginByDocId(to.query.doctorId, next, to.fullPath)
} else {
// 获取字典列表, 添加并全局变量保存
// http.get('/sys/dict/type/all').then(({ data: res }) => {
@ -154,7 +158,6 @@ router.beforeEach((to, from, next) => {
// }
// window.SITE_CONFIG['dictList'] = res.data
// }).catch(() => {})
// 获取左侧菜单列表,添加并全局变量保存
http.get('/sys/menu/nav').then(({ data: res }) => {
if (res.code !== 0) {
@ -178,7 +181,6 @@ router.beforeEach((to, from, next) => {
}
// window.SITE_CONFIG['menuList'] = res.data
const menuListChild = res.data.filter(item => item.children.length > 0)
// this.$store.commit('activeIndexFun', menuListChild[0].children[0].id)
fnAddDynamicMenuRoutes(JSON.parse(JSON.stringify(res.data)), menuListChild.length)
next({ ...to, replace: true })
@ -186,69 +188,62 @@ router.beforeEach((to, from, next) => {
// console.log(123)
return next({ name: 'login' })
})
// 获取【字段字典表】, 添加并全局变量保存
// http.get('/sys/table/dict/getList', { params: { type: 1 }}).then(({ data: res }) => {
// window.SITE_CONFIG['dict_colSearch'] = res.data
// })
getInitData()
}
})
function getInitData() {
// 获取字典列表, 添加并全局变量保存
// http.get('/sys/dict/type/all').then(({ data: res }) => {
// if (res.code !== 0) { return }
// window.SITE_CONFIG['dictList'] = res.data
// })
// 获取【字段字典表】, 添加并全局变量保存
// http.get('/table/dict/optionsColumn').then(({ data: res }) => {
// window.SITE_CONFIG['dict_colAll'] = res.data
// })
//
// // 获取【字段字典表】, 添加并全局变量保存
// http.get('/table/dict/optionsColumn', { params: { type: 1 }}).then(({ data: res }) => {
// window.SITE_CONFIG['dict_colSearch'] = res.data
// })
//
// // 获取【字段字典表】, 添加并全局变量保存
// http.get('/table/dict/optionsColumn', { params: { type: 2 }}).then(({ data: res }) => {
// window.SITE_CONFIG['dict_colChart'] = res.data
// })
//
// // 获取【字段字典表】, 添加并全局变量保存
// http.get('/table/dict/optionsColumn', { params: { type: 3 }}).then(({ data: res }) => {
// window.SITE_CONFIG['dict_colCrf'] = res.data
// })
//
// // 获取【字段字典表】, 添加并全局变量保存
// http.get('/table/dict/optionsColumn', { params: { type: 4 }}).then(({ data: res }) => {
// window.SITE_CONFIG['dict_colExport'] = res.data
// })
// 获取【检查项目字典】, 添加并全局变量保存
// http.get('/table/dict/examItem').then(({ data: res }) => {
// sortChinese(res.data, 'itemName')
// window.SITE_CONFIG['dict_examItem'] = res.data
// })
// 获取【设备信息字典】, 添加并全局变量保存
// http.get('/device/getData2RelDeviceList').then(({ data: res }) => {
// window.SITE_CONFIG['dict_device'] = res.data
// })
function getNavList(next) {
http.get('/sys/menu/nav').then(({ data: res }) => {
if (res.code !== 0) {
Vue.prototype.$message.error(res.msg)
return next()
}
window.SITE_CONFIG['menuList'] = res.data
}).catch(() => {
return next({ name: 'login' })
})
}
function muneList(next) {
http.get('/sys/menu/list', {
params: {
type: 0
}
}).then(({ data: res }) => {
if (res.code !== 0) {
Vue.prototype.$message.error(res.msg)
return next({ name: 'login' })
}
// window.SITE_CONFIG['menuList'] = res.data
const menuListChild = res.data.filter(item => item.children.length > 0)
fnAddDynamicMenuRoutes(JSON.parse(JSON.stringify(res.data)), menuListChild.length)
}).catch(() => {
return next({ name: 'login' })
})
}
function loginByDocId(doctorId, next) {
const params = {
doctorId: doctorId
}
http.post('/loginByDid', params).then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg)
}
console.log(res)
Cookies.set('xa-token', res.data.token)
window.localStorage.setItem('qg-userData', JSON.stringify(res.data.currentUser))
getNavList(next)
muneList(next)
// 获取【设备与检查项目字典】, 添加并全局变量保存
// http.get('/device/getData2RelDeviceItemList').then(({ data: res }) => {
// window.SITE_CONFIG['dict_device_item'] = res.data
// })
return next()
}).catch(() => { })
}
/**
* 判断当前路由是否为页面路由
* @param {*} route 当前路由
* @param {*} pageRoutes 页面路由
*/
function fnCurrentRouteIsPageRoute(route, pageRoutes = []) {
var temp = []
for (var i = 0; i < pageRoutes.length; i++) {
let temp = []
for (let i = 0; i < pageRoutes.length; i++) {
if (route.path === pageRoutes[i].path) {
return true
}

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

@ -120,7 +120,7 @@
<!-- HIS引入弹框 -->
<his-add v-if="HisAddVisible" ref="HisAddRef" />
<!-- 详情页 -->
<detail-view v-if="detailViewVisible" ref="viewRef" :only-read="onlyRead" :is-search="'3'" :patient-id="patientId" :patient-id-number="patientIdNumber" @detailViewVisible="detailViewVisible=false" />
<detail-view v-if="detailViewVisible" ref="viewRef" :only-read="onlyRead" :is-search="'3'" :patient-id="patientId" @detailViewVisible="detailViewVisible=false" />
</div>
</template>
<script>
@ -314,12 +314,6 @@ export default {
window.localStorage.setItem('mzDoctorName', mzName)
window.localStorage.setItem('jzNumber', jzNumber)
window.localStorage.setItem('projectItem', list.length ? JSON.stringify(list) : '')
this.$nextTick(() => {
// // id--
this.$refs.viewRef.getPatientData()
// // --
this.$refs.viewRef.getTimeAxisData()
})
},
// His
HISHandle() {

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

@ -118,7 +118,7 @@
<!-- HIS引入弹框 -->
<his-add v-if="HisAddVisible" ref="HisAddRef" @openAdd="getHisData" />
<!-- 详情页 -->
<detail-view v-if="detailViewVisible" ref="viewRef" :only-read="onlyRead" :is-search="'1'" :patient-id="patientId" :patient-id-number="patientIdNumber" @detailViewVisible="detailViewVisible=false" />
<detail-view v-if="detailViewVisible" ref="viewRef" :only-read="onlyRead" :is-search="'1'" :patient-id="patientId" @detailViewVisible="detailViewVisible=false" />
</div>
</template>
<script>
@ -223,8 +223,7 @@ export default {
patientStatus: '',
patientIdNumber: ''
},
patientId: '',
patientIdNumber: ''
patientId: ''
}
},
created() {
@ -260,17 +259,10 @@ export default {
this.onlyRead = index !== 1
this.detailViewVisible = true
this.patientId = scopeRow.patientId
this.patientIdNumber = scopeRow.patientIdNumber
const mzName = scopeRow.mzDoctorName ? scopeRow.mzDoctorName : ''
const jzNumber = scopeRow.jzNumber ? scopeRow.jzNumber : ''
window.localStorage.setItem('mzDoctorName', mzName)
window.localStorage.setItem('jzNumber', jzNumber)
this.$nextTick(() => {
// // id--
this.$refs.viewRef.getPatientData()
// // --
this.$refs.viewRef.getTimeAxisData()
})
},
// His
HISHandle() {

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

@ -122,7 +122,7 @@
<!-- HIS引入弹框 -->
<his-add v-if="HisAddVisible" ref="HisAddRef" @openAdd="getHisData" />
<!-- 详情页 -->
<detail-view v-if="detailViewVisible" ref="viewRef" :only-read="onlyRead" :is-search="'2'" :patient-id="patientId" :patient-id-number="patientIdNumber" @detailViewVisible="detailViewVisible=false" />
<detail-view v-if="detailViewVisible" ref="viewRef" :only-read="onlyRead" :is-search="'2'" :patient-id="patientId" @detailViewVisible="detailViewVisible=false" />
</div>
</template>
<script>
@ -227,8 +227,7 @@ export default {
patientStatus: '',
patientIdNumber: ''
},
patientId: '',
patientIdNumber: ''
patientId: ''
}
},
watch: {
@ -304,17 +303,10 @@ export default {
this.onlyRead = index !== 1
this.detailViewVisible = true
this.patientId = scopeRow.patientId
this.patientIdNumber = scopeRow.patientIdNumber
const mzName = scopeRow.mzDoctorName ? scopeRow.mzDoctorName : ''
const jzNumber = scopeRow.jzNumber ? scopeRow.jzNumber : ''
window.localStorage.setItem('mzDoctorName', mzName)
window.localStorage.setItem('jzNumber', jzNumber)
this.$nextTick(() => {
// // id--
this.$refs.viewRef.getPatientData()
// // --
this.$refs.viewRef.getTimeAxisData()
})
},
// His
HISHandle() {

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

@ -13,7 +13,6 @@
<dialog-add-or-update v-if="addOrUpdateVisible" ref="addOrUpdate" :query-item="queryItem" />
</div>
</template>
<script>
import patientSearch from '@/components/patient-search'
import dialogAddOrUpdate from '../pretest/add-or-update.vue'
@ -32,9 +31,6 @@ export default {
}
},
methods: {
// getQueryItem(queryItem) {
// this.queryItem = queryItem
// },
btnPretestClick() {
this.addOrUpdateVisible = true
this.$nextTick(() => {
@ -44,3 +40,10 @@ export default {
}
}
</script>
<style lang="scss" scoped>
.search{
width: 100%;
height: 100%;
}
</style>

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

@ -17,15 +17,14 @@
:model="dataForm"
:rules="dataRule"
status-icon
@keyup.enter.native="dataFormSubmitHandle()"
>
<!-- 用户名 -->
<el-form-item prop="account">
<el-input v-model="dataForm.account" placeholder="请输入工号" />
<el-input v-model="dataForm.account" placeholder="请输入工号" @keyup.enter.native="submitNext"/>
</el-form-item>
<!-- 密码 -->
<el-form-item prop="password">
<el-input v-model="dataForm.password" type="password" placeholder="请输入密码" />
<el-input ref="passWord" v-model="dataForm.password" type="password" placeholder="请输入密码" @keyup.enter.native="dataFormSubmitHandle()"/>
</el-form-item>
<!-- <el-form-item prop="captcha">-->
<!-- <el-row :gutter="10">-->
@ -86,6 +85,9 @@ export default {
// this.getCaptcha()
},
methods: {
submitNext() {
this.$refs.passWord.focus()
},
//
async getCaptcha() {
this.dataForm.uuid = getUUID()

Loading…
Cancel
Save