Browse Source

peter

360view
newPeter7 2 years ago
parent
commit
766fbcf81a
  1. 99
      src/components/360View/commonForm/optometryForm.vue
  2. 14
      src/components/360View/forePart/index.vue
  3. 12
      src/components/360View/medicalRecord/outPatientRecord/afterForm.vue
  4. 112
      src/components/progress-ods/index-all.vue
  5. 112
      src/components/progress-ods/index.vue
  6. 72
      src/components/ranking-table/index.vue
  7. 7
      src/components/ren-dept-tree/index.js
  8. 121
      src/components/ren-dept-tree/src/ren-dept-tree.vue
  9. 7
      src/components/ren-radio-group/index.js
  10. 22
      src/components/ren-radio-group/src/ren-radio-group.vue
  11. 7
      src/components/ren-region-tree/index.js
  12. 135
      src/components/ren-region-tree/src/ren-region-tree.vue
  13. 7
      src/components/ren-select/index.js
  14. 24
      src/components/ren-select/src/ren-select.vue
  15. 404
      src/components/searchContents/index.vue
  16. 25
      src/page-subspecialty/main.js
  17. 34
      src/page-subspecialty/router/index.js
  18. 6
      src/page-subspecialty/views/main-sidebar.vue
  19. 11
      src/page-subspecialty/views/modules/optometryManagement/cornea/index.vue
  20. 3
      src/page-subspecialty/views/modules/optometryManagement/cornea/patient-add-or-update.vue
  21. 96
      src/page-subspecialty/views/modules/optometryManagement/seeDoctor/first-visit/index.vue
  22. 5
      src/page-subspecialty/views/modules/optometryManagement/seeDoctor/historyRecord.vue
  23. 2
      src/page-subspecialty/views/modules/optometryManagement/seeDoctor/index.vue
  24. 7
      src/page-subspecialty/views/modules/optometryManagement/seeDoctor/notice-book.vue
  25. 8
      src/page-subspecialty/views/modules/optometryManagement/seeDoctor/ok-lens-rgp/add-or-update.vue
  26. 6
      src/page-subspecialty/views/modules/optometryManagement/seeDoctor/ok-lens-rgp/arrival-notice-or-update.vue
  27. 16
      src/page-subspecialty/views/modules/optometryManagement/seeDoctor/ok-lens-rgp/index.vue
  28. 26
      src/page-subspecialty/views/modules/optometryManagement/seeDoctor/ok-lens-rgp/left-right-eye.vue
  29. 8
      src/page-subspecialty/views/modules/optometryManagement/seeDoctor/ok-lens-rgp/removeLens-returnGoods-or-update.vue
  30. 7
      src/page-subspecialty/views/modules/optometryManagement/seeDoctor/review.vue
  31. 4
      src/page-subspecialty/views/modules/systemManagement/team/edit-password.vue
  32. 2
      src/page-subspecialty/views/modules/systemManagement/team/index.vue
  33. 70
      src/page-subspecialty/views/modules/systemManagement/team/team-add-or-update.vue
  34. 7
      src/page-subspecialty/views/pages/login.vue
  35. 10872
      static/js/jquery-3.5.1/jquery.js
  36. 2
      static/js/jquery-3.5.1/jquery.min.js
  37. BIN
      屈光操作手册.docx
  38. BIN
      眼科专病平台需求.docx

99
src/components/360View/commonForm/optometryForm.vue

@ -361,6 +361,12 @@ export default {
},
data() {
return {
ws: null, //
lockReconnect: false, //
timeout: 28 * 1000, // 30
timeoutObj: null, //
serverTimeoutObj: null, //
timeoutnum: null, //
dataForm: {
patientId: '',
patientName: '',
@ -414,12 +420,12 @@ export default {
type: ''
}, {
name: '3',
type: '',
a: '',
b: '',
c: '',
d: '',
e: '',
type: ''
e: ''
}, {
name: '4',
type: '',
@ -506,7 +512,11 @@ export default {
immediate: true
}
},
destroyed() {
this.ws.close()
},
mounted() {
this.initWebSoket()
this.originTableData = JSON.parse(JSON.stringify(this.tableData))
this.getPatientData()
const shili = window.localStorage.getItem('shili') ? JSON.parse(window.localStorage.getItem('shili')) : []
@ -557,19 +567,86 @@ export default {
this.$message.error(res.msg)
}
},
queryData() {
const ws = new WebSocket('ws://192.168.4.24:8036/xiangan-crf/websocket/0071')
ws.onopen = function() {
reconnect() { //
const that = this
if (that.lockReconnect) {
return
}
that.lockReconnect = true
//
that.timeoutnum && clearTimeout(that.timeoutnum)
that.timeoutnum = setTimeout(function() {
//
that.initWebSoket()
that.lockReconnect = false
}, 5000)
},
reset() { //
const that = this
//
clearTimeout(that.timeoutObj)
clearTimeout(that.serverTimeoutObj)
//
that.start()
},
start() { //
const self = this
self.timeoutObj && clearTimeout(self.timeoutObj)
self.serverTimeoutObj && clearTimeout(self.serverTimeoutObj)
self.timeoutObj = setTimeout(function() {
//
if (self.ws.readyState == 1) { //
self.ws.send('heartCheck')
} else { //
self.reconnect()
}
self.serverTimeoutObj = setTimeout(function() {
//
self.ws.close()
}, self.timeout)
}, self.timeout)
},
initWebSoket() {
// wss://127.0.0.1:8030/data
// const url = 'ws://47.110.224.240:8036/xiangan-crf/websocket/0071'
// const url = 'ws://192.168.0.167:8036/xiangan-crf/websocket/0071'
const url = 'wss://127.0.0.1:8030/data'
console.log(123)
const self = this
this.ws = new WebSocket(url)
this.ws.onopen = function() {
console.log('连接成功')
self.start();
}
ws.onerror = function() {
this.ws.onclose = function() {
console.log('连接关闭')
self.reconnect();
}
this.ws.onerror = function() {
console.log('连接失败')
self.reconnect();
}
// ws.send()
ws.onmessage = function(msg) {
const data = JSON.parse(JSON.stringify(msg.data))
// console.log(msg.data)
console.log(data)
this.ws.onmessage = function(msg) {
console.log(msg)
const message = JSON.parse(msg.data)
// const message = JSON.parse(data.msgTxt)
console.log(message)
self.tableData.forEach(item => {
if (item.name == '3') {
item.a = message.RData.DS
item.b = message.RData.DC
item.c = message.RData.AXIS
item.d = message.RData.VA
item.e = message.RData.ADD
} else if (item.name == '4') {
item.a = message.LData.DS
item.b = message.LData.DC
item.c = message.LData.AXIS
item.d = message.LData.VA
item.e = message.LData.ADD
}
})
self.reset();
}
},
handleSaveTable() {

14
src/components/360View/forePart/index.vue

@ -47,12 +47,12 @@
<template slot-scope="scope">
<div>
<span v-if="scope.row.sort === 1">
<span style="margin-right: 16px">结膜充血</span>
<p style="margin:0 16px 6px 0">结膜充血</p>
<treeSelect
v-model="scope.row.od"
:only-read="onlyRead"
:props="treeProps"
style="display: inline-block;width: 60%"
style="display: inline-block;"
:options="scope.row.data"
:multiple="true"
:filterable="true"
@ -64,12 +64,12 @@
/>
</span>
<span v-if="scope.row.sort === 2">
<span style="margin-right: 16px">结膜分泌物</span>
<p style="margin:0 16px 6px 0">结膜分泌物</p>
<treeSelect
v-model="scope.row.od"
:only-read="onlyRead"
:props="treeProps"
style="display: inline-block;width: 60%"
style="display: inline-block;"
:options="scope.row.data"
:multiple="true"
:filterable="true"
@ -110,7 +110,7 @@
v-model="scope.row.os"
:only-read="onlyRead"
:props="treeProps"
style="display: inline-block;width: 60%"
style="display: inline-block;"
:options="scope.row.data"
:multiple="true"
:filterable="true"
@ -122,11 +122,11 @@
/>
</span>
<span v-if="scope.row.sort === 2">
<span style="margin-right: 16px">结膜分泌物</span><treeSelect
<p style="margin:0 16px 6px 0">结膜分泌物</p><treeSelect
v-model="scope.row.os"
:only-read="onlyRead"
:props="treeProps"
style="display: inline-block;width: 60%"
style="display: inline-block;"
:options="scope.row.data"
:multiple="true"
:filterable="true"

12
src/components/360View/medicalRecord/outPatientRecord/afterForm.vue

@ -21,10 +21,12 @@
</span>
<span v-if="!scope.row.sort && !scope.row.id">{{ scope.row.name }}</span>
<span v-if="scope.row.sort === 3">
<span style="margin-right: 16px">视盘视神经</span><treeSelect v-model="scope.row.od" :props="treeProps" style="display: inline-block;width: 60%" :options="scope.row.data" :multiple="true" :filterable="true" :check-strictly="true" :default-expand-all="true" @handleNode="handleNode(scope.$index,'od', $event)" @add="addTree(scope.row, $event)" />
<p style="margin:0 16px 6px 0">视盘视神经</p>
<treeSelect v-model="scope.row.od" :props="treeProps" style="display: inline-block;" :options="scope.row.data" :multiple="true" :filterable="true" :check-strictly="true" :default-expand-all="true" @handleNode="handleNode(scope.$index,'od', $event)" @add="addTree(scope.row, $event)" />
</span>
<span v-if="scope.row.sort === 4">
<span style="margin-right: 16px">视盘CDR</span><treeSelect v-model="scope.row.od" :props="treeProps" style="display: inline-block;width: 60%" :options="scope.row.data" :multiple="true" :filterable="true" :check-strictly="true" :default-expand-all="true" @handleNode="handleNode(scope.$index,'od', $event)" @add="addTree(scope.row, $event)" />
<span style="margin:0 16px 6px 0">视盘CDR</span>
<treeSelect v-model="scope.row.od" :props="treeProps" style="display: inline-block;" :options="scope.row.data" :multiple="true" :filterable="true" :check-strictly="true" :default-expand-all="true" @handleNode="handleNode(scope.$index,'od', $event)" @add="addTree(scope.row, $event)" />
</span>
</div>
</template>
@ -52,10 +54,12 @@
</span>
<span v-if="!scope.row.sort && !scope.row.id">{{ scope.row.name }}</span>
<span v-if="scope.row.sort === 3">
<span style="margin-right: 16px">视盘视神经</span><treeSelect v-model="scope.row.os" :props="treeProps" style="display: inline-block;width: 60%" :options="scope.row.data" :multiple="true" :filterable="true" :check-strictly="true" :default-expand-all="true" @handleNode="handleNode(scope.$index,'os', $event)" @add="addTree(scope.row, $event)" />
<span style="margin:0 16px 6px 0">视盘视神经</span>
<treeSelect v-model="scope.row.os" :props="treeProps" style="display: inline-block;" :options="scope.row.data" :multiple="true" :filterable="true" :check-strictly="true" :default-expand-all="true" @handleNode="handleNode(scope.$index,'os', $event)" @add="addTree(scope.row, $event)" />
</span>
<span v-if="scope.row.sort === 4">
<span style="margin-right: 16px">视盘CDR</span><treeSelect v-model="scope.row.os" :props="treeProps" style="display: inline-block;width: 60%" :options="scope.row.data" :multiple="true" :filterable="true" :check-strictly="true" :default-expand-all="true" @handleNode="handleNode(scope.$index,'os', $event)" @add="addTree(scope.row, $event)" />
<span style="margin:0 16px 6px 0">视盘CDR</span>
<treeSelect v-model="scope.row.os" :props="treeProps" style="display: inline-block;" :options="scope.row.data" :multiple="true" :filterable="true" :check-strictly="true" :default-expand-all="true" @handleNode="handleNode(scope.$index,'os', $event)" @add="addTree(scope.row, $event)" />
</span>
</div>
</template>

112
src/components/progress-ods/index-all.vue

@ -1,112 +0,0 @@
<template>
<div class="component-wrapper">
<div class="year-select">
<el-select v-model="yearSelect" placeholder="请选择">
<el-option v-for="item2 in years" :key="item2.value" :label="item2.label" :value="item2.value" />
</el-select>
</div>
<div v-for="(item,index) in progressList" :key="index" v-loading="progressLoading" class="heatmap-wrapper">
<div class="heatmap-head">
<span class="heatmap-title">{{ item.name }}</span>
<span> {{ yearSelect }} </span>
</div>
<div class="heatmap-container">
<calendar-heatmap :data-list="item.data||[]" :end-date="endDate" class="heatmap" />
</div>
</div>
</div>
</template>
<script>
// import Cookies from 'js-cookie'
// window.SITE_CONFIG['dict_examItem']
import calendarHeatmap from '@/components/calendar-heatmap'
export default {
components: {
calendarHeatmap
},
data() {
return {
progressLoading: false,
progressList: [],
yearSelect: (new Date()).getFullYear(),
endDate: String((new Date()).getFullYear()) + '-12-31'
}
},
computed: {
years() {
const result = []
const thisYear = Number((new Date()).getFullYear())
for (let i = 0; i < 10; i++) {
result.push({
label: thisYear - i,
value: thisYear - i
})
}
return result
}
},
watch: {
yearSelect(val) {
this.getProgressList(val)
}
},
created() { this.getProgressList() },
mounted() { },
methods: {
getProgressList(year) {
this.progressLoading = true
year = year || String((new Date()).getFullYear())
const startDate = year + '-01-01'
const endDate = year + '-12-31'
this.endDate = endDate
// this.progressLoading = true
this.$http.get('/stats/examItem/allExtract', { params: { startDate, endDate }})
.then(({ data: res }) => {
this.progressList = res.data
window.sessionStorage.setItem('progressList', JSON.stringify(this.progressList))
this.progressLoading = false
}).catch(() => { this.progressLoading = false })
}
}
}
</script>
<style lang='scss' scoped>
.component-wrapper {
min-height: 200px;
.year-select{
display: flex;
justify-content: center;
margin-bottom: 10px;
}
.heatmap-wrapper {
margin-bottom: 10px;
.heatmap-head {
display: flex;
justify-content: space-between;
.heatmap-title {
padding: 0 20px;
font-size: 16px;
font-weight: bolder;
}
}
.heatmap-container {
min-height: 130px;
// padding-left: 170px;
.heatmap {
height: 100%;
}
}
}
}
</style>

112
src/components/progress-ods/index.vue

@ -1,112 +0,0 @@
<template>
<div v-loading="progressLoading" class="component-wrapper">
<div class="heatmap-wrapper">
<div class="heatmap-head">
<div class="heatmap-title">
<el-select v-model="itemSelect" size="mini" placeholder="请选择" style="width:250px" filterable>
<el-option v-for="item in items" :key="item.itemId" :label="item.itemName" :value="item.itemId" />
</el-select>
</div>
<div class="year-select">
<el-select v-model="yearSelect" size="mini" placeholder="请选择" style="width:80px">
<el-option v-for="item in years" :key="item.value" :label="item.label" :value="item.value" />
</el-select>
</div>
</div>
<div class="heatmap-container">
<calendar-heatmap :data-list="dataList" :end-date="endDate" class="heatmap" />
</div>
</div>
</div>
</template>
<script>
import calendarHeatmap from '@/components/calendar-heatmap'
export default {
components: {
calendarHeatmap
},
data() {
return {
progressLoading: false,
dataList: [],
itemSelect: window.SITE_CONFIG['dict_examItem'][0].itemId,
yearSelect: (new Date()).getFullYear(),
endDate: String((new Date()).getFullYear()) + '-12-31'
}
},
computed: {
years() {
const result = []
const thisYear = Number((new Date()).getFullYear())
for (let i = 0; i < 10; i++) {
result.push({
label: thisYear - i,
value: thisYear - i
})
}
return result
},
items() {
return window.SITE_CONFIG['dict_examItem']
}
},
watch: {
yearSelect() {
this.getProgressList()
},
itemSelect() {
this.getProgressList()
}
},
created() { this.getProgressList() },
mounted() { }, // this.itemSelect = window.SITE_CONFIG['dict_examItem'][8].itemId
methods: {
getProgressList() {
this.progressLoading = true
const year = this.yearSelect
const startDate = year + '-01-01'
const endDate = year + '-12-31'
this.endDate = endDate
this.$http.get('/stats/examItem/extract', { params: { code: this.itemSelect, startDate, endDate }})
.then(({ data: res }) => {
this.dataList = res.data
this.progressLoading = false
}).catch(() => { this.progressLoading = false })
}
}
}
</script>
<style lang='scss' scoped>
.component-wrapper {
min-height: 200px;
.heatmap-wrapper {
margin-bottom: 10px;
.heatmap-head {
display: flex;
justify-content: space-between;
margin-bottom: 20px;
.heatmap-title {
padding: 0 20px;
font-size: 16px;
font-weight: bolder;
}
}
.heatmap-container {
min-height: 130px;
// padding-left: 170px;
.heatmap {
height: 100%;
}
}
}
}
</style>

72
src/components/ranking-table/index.vue

@ -1,72 +0,0 @@
<template>
<el-table :data="data" class="table-wrapper" :show-header="showHeader" style="width: 100%">
<el-table-column type="index" width="44" />
<el-table-column prop="name" :label="colTitle" width="150" show-overflow-tooltip />
<!-- <el-table-column prop="num" :label="colNum" header-align="center" width="100" align="left" /> -->
<el-table-column header-align="center" min-width="150" align="left">
<!-- scope.row.num -->
<template slot-scope="scope">
<el-progress :stroke-width="10" :percentage="toPercentage(scope.row.num)" :format="format" />
</template>
</el-table-column>
</el-table>
</template>
<script>
export default {
props: {
data: { type: Array, required: true },
showHeader: { type: Boolean, default: false },
colTitle: { type: String, default: '排名' },
colNum: { type: String, default: '数量' }
},
data() {
return {
totalNum: 0,
valMap: {}
}
},
watch: {
data: {
deep: true,
handler(newVal, oldVal) {
this.data.forEach(item => {
this.totalNum += item.num || 0
})
},
immediate: true
}
},
methods: {
toPercentage(val) {
if (val === 0 || this.totalNum === 0) return 0
const perVal = (Math.round(val / this.totalNum * 10000) / 100)//
this.valMap[perVal] = val
return perVal
},
format(percentage) {
return this.valMap[percentage]
}
}
}
</script>
<style lang="scss" scoped>
.table-wrapper {
::v-deep .el-table th {
background-color: transparent;
}
::v-deep .el-table td,
::v-deep .el-table th.is-leaf {
border-bottom: 0px;
}
::v-deep .el-progress-bar__inner,
::v-deep .el-progress-bar__outer {
border-radius: 0%;
}
}
</style>

7
src/components/ren-dept-tree/index.js

@ -1,7 +0,0 @@
import RenDeptTree from './src/ren-dept-tree'
RenDeptTree.install = function(Vue) {
Vue.component(RenDeptTree.name, RenDeptTree)
}
export default RenDeptTree

121
src/components/ren-dept-tree/src/ren-dept-tree.vue

@ -1,121 +0,0 @@
<template>
<div>
<el-input v-model="showDeptName" :placeholder="placeholder" @focus="deptDialog">
<el-button slot="append" icon="el-icon-search" @click="deptDialog" />
</el-input>
<el-input :value="value" style="display: none" />
<el-dialog :visible.sync="visibleDept" width="30%" :modal="false" :title="placeholder" :close-on-click-modal="false" :close-on-press-escape="false">
<el-form size="mini" :inline="true">
<el-form-item :label="$t('keyword')">
<el-input v-model="filterText" />
</el-form-item>
<el-form-item>
<el-button type="default">{{ $t('query') }}</el-button>
</el-form-item>
</el-form>
<el-tree
ref="tree"
class="filter-tree"
:data="deptList"
:default-expanded-keys="expandedKeys"
:props="{ label: 'name', children: 'children' }"
:expand-on-click-node="false"
:filter-node-method="filterNode"
:highlight-current="true"
node-key="id"
/>
<template slot="footer">
<el-button type="default" size="mini" @click="cancelHandle()">{{ $t('cancel') }}</el-button>
<el-button v-if="query" type="info" size="mini" @click="clearHandle()">{{ $t('clear') }}</el-button>
<el-button type="primary" size="mini" @click="commitHandle()">{{ $t('confirm') }}</el-button>
</template>
</el-dialog>
</div>
</template>
<script>
export default {
name: 'RenDeptTree',
props: {
// eslint-disable-next-line vue/require-default-prop
value: [Number, String],
// eslint-disable-next-line vue/require-default-prop
deptName: String,
query: Boolean,
// eslint-disable-next-line vue/require-default-prop
placeholder: String
},
data() {
return {
filterText: '',
visibleDept: false,
deptList: [],
showDeptName: '',
expandedKeys: null,
defaultProps: {
children: 'children',
label: 'label'
}
}
},
watch: {
filterText(val) {
this.$refs.tree.filter(val)
},
deptName(val) {
this.showDeptName = val
}
},
methods: {
deptDialog() {
this.expandedKeys = null
if (this.$refs.tree) {
this.$refs.tree.setCurrentKey(null)
}
this.visibleDept = true
this.getDeptList(this.value)
},
filterNode(value, data) {
if (!value) return true
return data.name.indexOf(value) !== -1
},
getDeptList(id) {
return this.$http.get('/sys/dept/list').then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg)
}
this.deptList = res.data
this.$nextTick(() => {
this.$refs.tree.setCurrentKey(id)
this.expandedKeys = [id]
})
}).catch(() => {})
},
cancelHandle() {
this.visibleDept = false
this.deptList = []
this.filterText = ''
},
clearHandle() {
this.$emit('input', '')
this.$emit('update:deptName', '')
this.showDeptName = ''
this.visibleDept = false
this.deptList = []
this.filterText = ''
},
commitHandle() {
const node = this.$refs.tree.getCurrentNode()
if (!node) {
this.$message.error(this.$t('dept.chooseerror'))
return
}
this.$emit('input', node.id)
this.$emit('update:deptName', node.name)
this.showDeptName = node.name
this.visibleDept = false
this.deptList = []
this.filterText = ''
}
}
}
</script>

7
src/components/ren-radio-group/index.js

@ -1,7 +0,0 @@
import RenRadioGroup from './src/ren-radio-group'
RenRadioGroup.install = function(Vue) {
Vue.component(RenRadioGroup.name, RenRadioGroup)
}
export default RenRadioGroup

22
src/components/ren-radio-group/src/ren-radio-group.vue

@ -1,22 +0,0 @@
<template>
<el-radio-group :value="value+''" @input="$emit('input', $event)">
<el-radio v-for="data in dataList" :key="data.dictValue" :label="data.dictValue">{{ data.dictLabel }}</el-radio>
</el-radio-group>
</template>
<script>
import { getDictDataList } from '@/utils'
export default {
name: 'RenRadioGroup',
props: {
// eslint-disable-next-line vue/require-default-prop
value: [Number, String],
// eslint-disable-next-line vue/require-default-prop
dictType: String
},
data() {
return {
dataList: getDictDataList(this.dictType)
}
}
}
</script>

7
src/components/ren-region-tree/index.js

@ -1,7 +0,0 @@
import RenRegionTree from './src/ren-region-tree'
RenRegionTree.install = function(Vue) {
Vue.component(RenRegionTree.name, RenRegionTree)
}
export default RenRegionTree

135
src/components/ren-region-tree/src/ren-region-tree.vue

@ -1,135 +0,0 @@
<template>
<div class="ren-region">
<el-input v-model="showName" :placeholder="placeholder" @focus="treeDialog">
<el-button slot="append" icon="el-icon-search" @click="treeDialog" />
</el-input>
<el-input :value="value" style="display: none" />
<el-dialog :visible.sync="visibleTree" width="360px" :modal="false" :title="placeholder" :close-on-click-modal="false" :close-on-press-escape="false">
<el-form size="mini" :inline="true">
<el-form-item :label="$t('keyword')">
<el-input v-model="filterText" />
</el-form-item>
<el-form-item>
<el-button type="default">{{ $t('query') }}</el-button>
</el-form-item>
</el-form>
<el-tree
ref="tree"
class="filter-tree"
:data="dataList"
:default-expanded-keys="expandedKeys"
:props="{ label: 'name', children: 'children' }"
:expand-on-click-node="false"
:filter-node-method="filterNode"
:highlight-current="true"
node-key="id"
/>
<template slot="footer">
<el-button type="default" size="mini" @click="cancelHandle()">{{ $t('cancel') }}</el-button>
<el-button type="info" size="mini" @click="clearHandle()">{{ $t('clear') }}</el-button>
<el-button type="primary" size="mini" @click="commitHandle()">{{ $t('confirm') }}</el-button>
</template>
</el-dialog>
</div>
</template>
<style lang="scss">
.ren-region {
.filter-tree {
max-height: 230px;
overflow: auto;
}
.el-dialog__body {
padding: 0px 0px 0px 20px;
}
.el-dialog__footer {
padding: 10px 20px 8px 20px;
}
}
</style>
<script>
import { treeDataTranslate } from '@/utils'
export default {
name: 'RenRegionTree',
props: {
// eslint-disable-next-line vue/require-default-prop
value: [Number, String],
// eslint-disable-next-line vue/require-default-prop
parentName: String,
// eslint-disable-next-line vue/require-default-prop
placeholder: String
},
data() {
return {
filterText: '',
visibleTree: false,
dataList: [],
showName: '',
expandedKeys: null,
defaultProps: {
children: 'children',
label: 'name'
}
}
},
watch: {
filterText(val) {
this.$refs.tree.filter(val)
},
parentName(val) {
this.showName = val
}
},
methods: {
treeDialog() {
this.expandedKeys = null
if (this.$refs.tree) {
this.$refs.tree.setCurrentKey(null)
}
this.visibleTree = true
this.getDataList(this.value)
},
filterNode(value, data) {
if (!value) return true
return data.name.indexOf(value) !== -1
},
getDataList(id) {
return this.$http.get('/sys/region/tree').then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg)
}
this.dataList = treeDataTranslate(res.data)
this.$nextTick(() => {
this.$refs.tree.setCurrentKey(id)
this.expandedKeys = [id]
})
}).catch(() => {})
},
cancelHandle() {
this.visibleTree = false
this.dataList = []
this.filterText = ''
},
clearHandle() {
this.$emit('input', '0')
this.$emit('update:parentName', '')
this.showName = ''
this.visibleTree = false
this.dataList = []
this.filterText = ''
},
commitHandle() {
const node = this.$refs.tree.getCurrentNode()
if (!node) {
this.$message.error(this.$t('choose'))
return
}
this.$emit('input', node.id)
this.$emit('update:parentName', node.name)
this.showName = node.name
this.visibleTree = false
this.dataList = []
this.filterText = ''
}
}
}
</script>

7
src/components/ren-select/index.js

@ -1,7 +0,0 @@
import RenSelect from './src/ren-select'
RenSelect.install = function(Vue) {
Vue.component(RenSelect.name, RenSelect)
}
export default RenSelect

24
src/components/ren-select/src/ren-select.vue

@ -1,24 +0,0 @@
<template>
<el-select :value="value+''" :placeholder="placeholder" clearable @input="$emit('input', $event)">
<el-option v-for="data in dataList" :key="data.dictValue" :label="data.dictLabel" :value="data.dictValue">{{ data.dictLabel }}</el-option>
</el-select>
</template>
<script>
import { getDictDataList } from '@/utils'
export default {
name: 'RenSelect',
props: {
// eslint-disable-next-line vue/require-default-prop
value: [Number, String],
// eslint-disable-next-line vue/require-default-prop
dictType: String,
// eslint-disable-next-line vue/require-default-prop
placeholder: String
},
data() {
return {
dataList: getDictDataList(this.dictType)
}
}
}
</script>

404
src/components/searchContents/index.vue

@ -1,404 +0,0 @@
<template>
<div class="component-container searchContent">
<!-- max-height="450" -->
<el-table
ref="registerPatientsListTable"
:data="dataList"
style="width: 100%"
class="examine-table"
:show-header="conCiseShow == true ? true : false"
@="handleSelectionChange"
@select="headleSelect"
>
<el-table-column v-if="projectName == 'sampleBank'" type="selection" width="55" :selectable="selectable" />
<!-- 简洁版 -->
<template v-if="conCiseShow == true">
<!-- 姓名 -->
<el-table-column :label="'姓名'" header-align="center" align="center" width="120">
<template slot-scope="scope">
{{ scope.row.register_patient.name | f_desensitize_name }}
</template>
</el-table-column>
<!-- 性别 -->
<el-table-column :label="'性别'" header-align="center" align="center">
<template slot-scope="scope">
{{ scope.row.register_patient.sex | f_sex }}
</template>
</el-table-column>
<!-- 年龄 -->
<el-table-column :label="'年龄'" header-align="center" align="center">
<template slot-scope="scope">
{{ scope.row.register_patient.birthday | f_getAge }}
</template>
</el-table-column>
<!-- 身份证号 -->
<el-table-column prop="patientIdNumber" :label="'身份证号'" header-align="center" align="center">
<template slot-scope="scope">
{{ scope.row.register_patient.patientIdNumber | f_desensitize_idNumber }}
</template>
</el-table-column>
<!-- 电话号码 备用-->
<!-- <el-table-column
prop="patientPhone"
:label="'电话号码'"
header-align="center"
align="center"
>
<template slot-scope="scope">
{{ scope.row.register_patient.patientPhone }}
</template>
</el-table-column> -->
<!-- 地址 备用-->
<!-- <el-table-column
prop="patientAddress"
:label="'地址'"
header-align="center"
align="center"
>
<template slot-scope="scope">
{{ scope.row.register_patient.patientAddress }}
</template>
</el-table-column> -->
<!-- 操作 -->
<el-table-column label="操作" header-align="center" align="center" width="150">
<template slot-scope="scope">
<el-button type="text" size="small" @click="showDetail(scope.row)">查看详情
</el-button>
</template>
</el-table-column>
</template>
<!-- 标准版 -->
<template v-if="conCiseShow == false">
<!-- 姓名 -->
<el-table-column header-align="center">
<template slot-scope="scope">
<div class="head">
<div class="left">
<!-- <el-checkbox :label="id">{{ "" }}</el-checkbox> -->
<div class="left">
<span>姓名{{ scope.row.register_patient.name }}</span>
<span>性别{{ scope.row.register_patient.sex }}</span>
<!-- <span>年龄{{ registerPatient.patientSexAge }}</span> -->
</div>
</div>
<div class="right">
<el-link type="primary" :underline="false" @click="showDetail(scope.row)">查看详情 <i
class="el-icon-arrow-right el-icon--right"
/></el-link>
</div>
</div>
<div class="searchContent-text" v-html="scope.row.allHighlight" />
<div class="exam">
<p v-for="(item, index) in scope.row.pacs_register_examine_item" :key="index">
<span>{{ item.examineItem }}</span>
<span>{{ item.count + "次" }}</span>
</p>
</div>
<el-row :gutter="20">
<el-col :span="12">
<echarts-shili :chart-data="scope.row.shili" :id-name="'shili' + scope.$index" desc="视力" />
</el-col>
<el-col :span="12">
<echarts-yanya :chart-data="scope.row.yanya" :id-name="'yanya' + scope.$index" desc="眼压" />
</el-col>
</el-row>
</template>
</el-table-column>
</template>
</el-table>
<!-- 底部全选反选 -->
<checked-footer
v-if="projectName == 'sampleBank'"
ref="checkfooter"
table-ref="registerPatientsListTable"
:current-table-list="currentTableList"
:data-list="dataList"
>
<div class="batch_button">
<el-button type="primary" size="small" @click="IntoSubjectsClick">引入受试者</el-button>
</div>
</checked-footer>
<!-- 详情页 -->
<el-dialog title="360视图" class="detail-view" :visible.sync="dialogVisible" :fullscreen="true">
<detail-view :id="detailId" ref="viewRef" :patient-id-number="patientIdNumber" />
</el-dialog>
<!-- 补全身份证号 -->
<el-dialog title="收货地址" :visible.sync="dialogPatientIDVisible" @closed="closePatientId">
<span>身份证:</span>
<el-input v-model="patientIdNumber" placeholder="请输入内容" clearable />
<div slot="footer" class="dialog-footer">
<el-button @click="dialogPatientIDVisible=false"> </el-button>
<el-button type="primary" @click="surePatientIdClick"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import echartsShili from '@/components/echarts/shili'
import echartsYanya from '@/components/echarts/yanya'
import checkedFooter from '@/components/checked-footer'
import detailView from '@/components/360View/index1'
import checked from '@/mixins/checked'
import { confirm } from '@/utils/confirm'
export default {
components: { echartsShili, echartsYanya, detailView, checkedFooter },
mixins: [checked],
inject: ['refresh'],
props: {
id: {
type: String,
default: ''
},
htmlText: {
type: String,
default: ''
},
projectName: {
type: String,
default: ''
},
registerPatient: {
type: Object,
default: () => {
return {}
}
},
dataList: {
type: Array,
default: () => []
},
visionData: {
type: Array,
default: () => []
},
iopData: {
type: Array,
default: () => []
},
conCiseShow: {
type: Boolean,
default: true
}
},
data() {
return {
dialogVisible: false,
dialogPatientIDVisible: false,
detailId: '',
patientIdNumber: '',
checked: false,
// cheackAllFooter: false,
currentTableList: [],
projectId: '',
noPatientIDList: {},
currentSelectionRow: {},
flag: 0
}
},
created() {
this.projectId = window.SITE_CONFIG['projectId']
},
methods: {
//
showDetail(scope) {
this.patientIdNumber = scope.register_patient.patientIdNumber
this.detailId = scope.id
this.dialogVisible = true
this.$nextTick(() => {
// id--
this.$refs.viewRef.getPatientData()
// --
this.$refs.viewRef.getTimeAxisData()
//
this.$refs.viewRef.getShiLiAndYanYaData()
// --
this.$refs.viewRef.getKPI()
})
},
//
handleSelectionChange(val) {
if (val.length === this.dataList.length) {
this.$refs.checkfooter.cheackAllFooter = true
} else {
this.$refs.checkfooter.cheackAllFooter = false
}
this.currentTableList = val
},
// Checkbox
headleSelect(val) {
// 330104195404061636
this.flag = 0
this.currentSelectionRow = val[0]
if (val.length > 0 && !val[0].register_patient.patientIdNumber) {
this.noPatientIDList = val[0].register_patient
this.dialogPatientIDVisible = true
}
},
//
async surePatientIdClick() {
const { data: res } = await this.$http.post('/project/patient/completeIdNumber', {
birthday: this.$options.filters['dateFilterTwo'](this.noPatientIDList.birthday),
hospitalId: this.noPatientIDList.hospitalId,
name: this.noPatientIDList.name,
patientId: this.noPatientIDList.id,
patientIdNumber: this.patientIdNumber,
sex: this.noPatientIDList.sex
})
if (res.code === 0) {
this.$message({
type: 'success',
message: '身份证号添加成功'
})
this.flag = 1
this.dialogPatientIDVisible = false
} else {
this.flag = 0
this.$message.error(res.msg)
}
},
//
closePatientId() {
this.dialogPatientIDVisible = false
this.flag === 0 ? this.$refs.registerPatientsListTable.toggleRowSelection(this.currentSelectionRow, false) : ''
},
//
IntoSubjectsClick() {
confirm('确定要引入受试者吗?').then(async() => {
const patientInfoArr = []
let patientInfoObj = {}
this.currentTableList.forEach((item) => {
patientInfoObj = {
hospitalCode: item.register_patient.hospitalId,
patientBirthday: item.register_patient.birthday,
patientId: item.register_patient.id,
patientIdNumber: item.register_patient.patientIdNumber,
patientName: item.register_patient.name,
patientSex: item.register_patient.sex,
projectId: this.projectId
}
patientInfoArr.push(patientInfoObj)
})
const { data: res } = await this.$http({
method: 'post',
url: '/project/patient',
data: patientInfoArr
})
if (res.code === 0) {
this.$message({
type: 'success',
message: '引入成功!'
})
this.currentTableList.forEach(item => {
this.dataList.forEach(iten => {
if (item.id === iten.id) {
item.existInProject = 1
}
})
})
this.$refs.registerPatientsListTable.clearSelection()
} else {
this.$message.error(res.msg)
}
})
},
// Function CheckBox
selectable(row, index) {
if (row.existInProject === 1) {
return false
} else {
return true
}
}
}
}
</script>
<style lang="scss" scoped>
.searchContent {
width: 100%;
padding-bottom: 16px;
background-color: #fff;
margin-bottom: 16px;
.head {
display: flex;
justify-content: space-between;
.el-checkbox {
margin-right: 16px;
}
.left {
display: flex;
span {
font-size: 14px;
padding-right: 55px;
font-weight: bold;
}
}
}
.searchContent-text {
font-size: 14px;
margin: 16px 0;
}
.exam {
display: flex;
flex-wrap: wrap;
p {
display: flex;
flex-wrap: nowrap;
height: 32px;
line-height: 32px;
width: 18%;
background-color: #eee;
padding: 0 10px;
margin: 6px;
span {
display: block;
flex: 1;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
span:nth-child(2) {
padding-left: 14px;
color: #0072f9;
}
}
}
}
a.el-link.el-link--primary:hover {
text-decoration: none;
}
</style>
<style lang="scss">
.searchContent .detail-view {
.el-dialog {
background: #000;
overflow: hidden;
}
.el-dialog__header {
padding: 10px 20px 10px;
.el-dialog__title {
color: #fff;
padding: 10px;
}
.el-dialog__headerbtn {
top: 5px;
font-size: 30px;
}
.el-dialog__headerbtn .el-dialog__close {
color: #fff;
}
}
.el-dialog__body {
height: calc(100vh - 60px);
padding: 0 10px;
}
}
</style>

25
src/page-subspecialty/main.js

@ -1,29 +1,22 @@
// system入口
import Vue from 'vue'
import Element from 'element-ui'
// import 'lib-flexible/flexible'
import App from './App.vue'
import router from './router'
import store from './store'
import http from './utils/request'
import jQuery from 'jquery'
import 'element-ui/lib/theme-chalk/index.css'
import '@/icons'
import '@/assets/scss/aui.scss'
import '@/assets/scss/reset.scss'
import i18n from '@/i18n'
import * as filters from '@/filters'
import renRadioGroup from '@/components/ren-radio-group'
import renDeptTree from '@/components/ren-dept-tree'
import { hasPermission, getDictLabel } from '@/utils'
import cloneDeep from 'lodash/cloneDeep'
import 'xe-utils'
import VXETable from 'vxe-table'
import 'vxe-table/lib/index.css'
// import echarts from 'echarts'
import * as echarts from 'echarts'
import moment from 'moment'
import VueChatScroll from 'vue-chat-scroll'
// import jsNSV from '@/utils/js-NSV.js'
@ -36,6 +29,8 @@ Vue.use(Print)
import { confirm } from '@/utils/confirm'
Vue.prototype.$confirmFun = confirm
import jquery from 'jquery'
Vue.prototype.$ = jquery
// import VueDragResize from 'vue-drag-resize'
// Vue.component('vue-drag-resize', VueDragResize)
@ -43,15 +38,6 @@ Vue.prototype.$confirmFun = confirm
import VueCropper from 'vue-cropper'
Vue.use(VueCropper)
import Recorder from 'js-audio-recorder'
const recorder = new Recorder({
sampleBits: 16, // 采样位数,支持 8 或 16,默认是16
sampleRate: 16000, // 采样率,支持 11025、16000、22050、24000、44100、48000,根据浏览器默认值,我的chrome是48000
numChannels: 1 // 声道,支持 1 或 2, 默认是1
// compiling: false,(0.x版本中生效,1.x增加中) // 是否边录边转换,默认是false
})
Vue.prototype.$recorder = recorder
// 全局监听DOM元素
import ElementResizeDetectorMaker from 'element-resize-detector'
Vue.prototype.$erd = ElementResizeDetectorMaker()
@ -70,12 +56,6 @@ Object.keys(filters).forEach(key => {
Vue.filter(key, filters[key])
})
// 全局组件
Vue.use(renRadioGroup)
Vue.use(renDeptTree)
Vue.use(VueChatScroll)
Vue.use(VXETable)
// DICOM
import cornerstone from 'cornerstone-core'
import cornerstoneMath from 'cornerstone-math'
@ -100,7 +80,6 @@ Vue.prototype.$cornerstoneTools = cornerstoneTools
// 挂载全局
Vue.prototype.$http = http
Vue.prototype.$ = jQuery
Vue.prototype.$hasPermission = hasPermission
Vue.prototype.$getDictLabel = getDictLabel
Vue.prototype.$moment = moment

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

@ -104,23 +104,13 @@ export function addDynamicRoute(routeParams, router) {
title: `${routeParams.title}`
}
}
const dynamicRoutes = [
router.addRoutes([
{
...moduleRoutes,
name: `main-dynamic__${dynamicRoute.name}`,
children: [dynamicRoute]
}
]
dynamicRoutes.forEach(res => {
router.addRoute(res)
})
// router.addRoutes([
// {
// ...moduleRoutes,
// name: `main-dynamic__${dynamicRoute.name}`,
// children: [dynamicRoute]
// }
// ])
])
window.SITE_CONFIG['dynamicRoutes'].push(dynamicRoute)
router.push({ name: dynamicRoute.name, params: routeParams.params })
}
@ -183,7 +173,7 @@ router.beforeEach((to, from, next) => {
}
// window.SITE_CONFIG['menuList'] = res.data
const menuListChild = res.data.filter(item => item.children.length > 0)
// console.log(menuListChild)
// this.$store.commit('activeIndexFun', menuListChild[0].children[0].id)
fnAddDynamicMenuRoutes(JSON.parse(JSON.stringify(res.data)), menuListChild.length)
next({ ...to, replace: true })
@ -272,7 +262,6 @@ function fnCurrentRouteIsPageRoute(route, pageRoutes = []) {
*/
function fnAddDynamicMenuRoutes(menuList = [], menuListChildLength, routes = []) {
let index = 0
// console.log(menuList)
menuList.forEach((item, i) => {
// eslint-disable-next-line
let URL = (item.url || '').replace(/{{([^}}]+)?}}/g, (s1, s2) => eval(s2)) // URL支持{{ window.xxx }}占位符变量
@ -307,33 +296,20 @@ function fnAddDynamicMenuRoutes(menuList = [], menuListChildLength, routes = [])
fnAddDynamicMenuRoutes(item.children)
}
})
// routes = menuList
// console.log(routes)
// 此处一定要加判断,因为此方法在递归,要等到递归完成后再执行下面的内容
// 坑!!!如果不加此判断,this.$route.matched面包屑的父级就不会展示
if (menuListChildLength === index) {
routes = menuList
// PH:底层调用一次
// 添加路由
const dynamicRoutes = [
router.addRoutes([
{
...moduleRoutes,
name: 'main-dynamic-menu',
children: [...routes]
},
{ path: '*', redirect: { name: '404' }}
]
dynamicRoutes.forEach(res => {
router.addRoute(res)
})
// router.addRoutes([
// {
// ...moduleRoutes,
// name: 'main-dynamic-menu',
// children: [...routes]
// },
// { path: '*', redirect: { name: '404' }}
// ])
])
// console.log('----------------------')
window.SITE_CONFIG['dynamicMenuRoutes'] = routes
window.SITE_CONFIG['dynamicMenuRoutesHasAdded'] = true

6
src/page-subspecialty/views/main-sidebar.vue

@ -39,8 +39,7 @@ export default {
wordData: {
user_name: 'XXX',
remark: ''
},
drgsName: window.localStorage.getItem('identity')
}
}
},
computed: {
@ -55,7 +54,7 @@ export default {
},
created() {
const defauleActiveIndex = window.localStorage.getItem('defauleActiveIndex')
? window.localStorage.getItem('defauleActiveIndex') : window.SITE_CONFIG.menuList[0].id
? window.localStorage.getItem('defauleActiveIndex') : window.SITE_CONFIG.menuList[0].children[0].id
setTimeout(() => {
this.$store.state.sidebarMenuList = window.SITE_CONFIG.menuList
}, 200)
@ -73,7 +72,6 @@ export default {
//
JSZipUtils.getBinaryContent(docxsrc, function(error, content) {
// docxsrc
//
if (error) {
throw error
}

11
src/page-subspecialty/views/modules/optometryManagement/cornea/index.vue

@ -31,22 +31,13 @@
</el-form>
</div>
<div class="patient-info-content">
<!-- <head-template head-left="患者列表">-->
<!-- <el-button size="small" icon="el-icon-plus" @click="addOrUpdateHandle('','','新增患者')">新增</el-button>-->
<!-- <el-button type="primary" size="small" @click="HISHandle">-->
<!-- <svg-icon icon-class="icon-HIS-up" style="font-size:12px;" />-->
<!-- <span style="padding-left:5px;vertical-align: middle;">HIS引入</span>-->
<!-- </el-button>-->
<!-- </head-template>-->
<el-table
ref="multipleTable"
:data="dataList"
tooltip-effect="dark"
style="width: 100%"
@selection-change="handleSelectionChange"
@sort-change="dataListSortChangeHandle"
>
<el-table-column type="selection" width="45" />
<el-table-column prop="patientId" label="病历号 " header-align="center" align="center" />
<el-table-column prop="patientName" label="患者姓名" header-align="center" align="center" />
<el-table-column prop="patientSex" label="患者性别" header-align="center" align="center" />
@ -55,7 +46,7 @@
{{ scope.row.patientBirthday ? $options.filters.dateFilterTwo( scope.row.patientBirthday): '- ' }}
</template>
</el-table-column>
<el-table-column prop="operation" label="操作" header-align="center" align="center" :width="dataForm.drgsName=='眼视光' ? 180 : 120">
<el-table-column prop="operation" label="操作" header-align="center" align="center">
<template slot-scope="scope">
<span
style="color: #1890ff; padding-right: 8px"

3
src/page-subspecialty/views/modules/optometryManagement/cornea/patient-add-or-update.vue

@ -69,10 +69,9 @@ export default {
patIdNumber: '',
patPhone: '',
patAddress: '',
// patType: '',
revisitCycles: '1', //
revisitCyclesUnit: '3', // 1234
remarks: '',
remarks: ''
}
}
},

96
src/page-subspecialty/views/modules/optometryManagement/seeDoctor/first-visit/index.vue

@ -5,22 +5,14 @@
<el-tooltip class="item" effect="dark" content="首诊单模板有新版本可点击更新" placement="top">
<el-button v-if="dataForm.isNew==2" type="danger" size="small" @click="updateHandle">更新</el-button>
</el-tooltip>
<el-button type="primary" size="small" @click="addOrUpdateHandle">填写</el-button>
<!-- <el-button type="primary" size="small" @click="addOrUpdateHandle">填写</el-button>-->
<!-- <button v-print="'#printMe'" class="printer">打印</button> -->
<button class="printer" @click="printerHandle">打印</button>
</head-template>
<p class="tips">如需补充患者首诊记录信息请点击填写按钮</p>
<!-- 首诊内容 -->
<div class="first-visit-content">
<!-- <crf-->
<!-- v-if="crfVisible"-->
<!-- ref="crfComponent"-->
<!-- :value="dataForm.content"-->
<!-- :height="'100%'"-->
<!-- :js-arr="jsArr"-->
<!-- style="margin: 0;padding: 40px 0;width: 100%;border: 1px solid #000;background:#fff;"-->
<!-- :body-style-show="true"-->
<!-- />-->
</div>
<!-- 弹窗, 新增 / 修改 -->
<!-- <follow-up v-if="followUpVisible" ref="followUp" is-first="1" :title="drgsName + '首诊'" @refreshDataList="init()" />-->
@ -29,27 +21,15 @@
<script>
import headTemplate from '@/components/head'
// import crf from '@/components/hm-crf/load_content.vue'
// import followUp from '@/components/hm-crf/followUp'
import qgyCRFData from '@/mixins/qgyCRFData'
const Base64 = require('js-base64').Base64
export default {
inject: ['refresh'],
components: {
headTemplate,
// crf,
headTemplate
// followUp
},
mixins: [qgyCRFData],
mixins: [],
props: {
crfId: {
type: String,
default: ''
},
patientIdNumber: {
type: String,
default: ''
},
patientId: {
type: String,
default: ''
@ -71,89 +51,21 @@ export default {
addOrUpdateVisible: false,
bodyStyleShow: false,
clearTimeOut: null,
drgsName: window.localStorage.getItem('identity'),
realVisitType: '首诊单', //
isFirst: 1
}
},
created() {
// this.init()
},
// beforeDestroy() {
// clearInterval(this.clearTimeOut)
// this.clearTimeOut = null
// },
methods: {
addOrUpdateHandle() {
this.followUpVisible = true
this.$nextTick(() => {
this.$refs.followUp.crfId = this.crfId
this.$refs.followUp.patientIdNumber = this.patientIdNumber
this.$refs.followUp.patientId = this.patientId
this.$refs.followUp.isWrite = this.dataForm.isWrite
this.$refs.followUp.realVisitType = '首诊单'
this.$refs.followUp.init()
})
},
init() {
console.log('===================================')
this.crfVisible = false
this.$nextTick(() => {
this.$http.get('/crf/getForm', {
params: {
patientId: this.patientId,
}
})
.then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg)
}
if (res.data) {
this.dataForm = { ...res.data }
this.dataForm.content = Base64.decode(res.data.content)
this.crfVisible = true
// isWrite=0 isWrite=1
if (this.drgsName === '青光眼') {
res.data.isWrite === '0' ? this.getQgyCRFData() : ''
} else {
setTimeout(() => {
if (this.$refs.crfComponent) {
const ifr = this.$refs.crfComponent.$el
const ifrWin = ifr.contentWindow
ifrWin.dataFill(res.data.firstVisit)
}
}, 1000)
}
}
}).catch(() => { })
})
},
//
printerHandle() {
this.$refs.crfComponent.$el.contentWindow.print()
},
//
updateHandle() {
this.$confirmFun('更新后原首诊单数据将永久消失,数据需重新填写!').then(async() => {
const { data: res } = await this.$http.delete('/crf/deleteCrfFormInfo', {
params: {
formId: this.dataForm.formId
}
})
if (res.code !== 0) {
this.$message.error(res.msg)
} else {
this.$message({
message: this.$t('prompt.success'),
type: 'success',
duration: 500,
onClose: () => {
this.refresh()
}
})
}
})
}
}
}
</script>

5
src/page-subspecialty/views/modules/optometryManagement/seeDoctor/historyRecord.vue

@ -35,7 +35,6 @@
<img src="@/assets/img/nodata.png" alt="">
</div>
</div>
</div>
</template>
<script>
@ -50,7 +49,7 @@ export default {
data() {
return {
// uploadUrl: 'http://10.152.66.167:8383/huimu-admin/history/archive',
uploadUrl: 'http://192.168.4.24:8036/xiangan-crf/history/archive',
uploadUrl: window.SITE_CONFIG['apiURL'] + '/history/archive',
uploadData: {
patientId: this.patientId
},
@ -61,7 +60,7 @@ export default {
recordList: [],
curIdx: 0,
id: '',
loading: false,
loading: false
}
},
mounted() {

2
src/page-subspecialty/views/modules/optometryManagement/seeDoctor/index.vue

@ -29,7 +29,6 @@
</el-tab-pane>
<el-tab-pane label="OK镜" name="okLens">
<ok-lens-rgp ref="okLensRgp" :patient-id="patientId" :doctor-list="doctorList" tab-title="okLens" />
<!-- <ok-lens ref="OKLens" :patient-id="patientId" :doctor-list="doctorList" />-->
</el-tab-pane>
<el-tab-pane label="复查情况" name="review">
<review :patient-id="patientId" />
@ -72,7 +71,6 @@ export default {
patientInfoObj: {},
activeName: 'noticeBook',
patientId: '',
patientId: '',
pageParams: {}
}
},

7
src/page-subspecialty/views/modules/optometryManagement/seeDoctor/notice-book.vue

@ -309,7 +309,7 @@ export default {
headTemplate
},
props: {
patientIdNumber: {
patientId: {
type: String,
default: ''
}
@ -440,8 +440,7 @@ export default {
//
getNoticeName() {
const params = {
patientIdNumber: this.patientIdNumber,
drgsName: window.localStorage.getItem('identity')
patientId: this.patientId,
}
this.$http.get('/hospital/notice/getNoticeSign', { params: params }).then(({ data: res }) => {
if (res.code !== 0) {
@ -487,7 +486,7 @@ export default {
saveEditNotice() {
const params = {
isNew: 3,
patientIdNumber: this.patientIdNumber,
patientId: this.patientId,
drgsName: window.localStorage.getItem('identity'),
doctorSign: this.doctorSign,
guardianSign: this.guardianSign,

8
src/page-subspecialty/views/modules/optometryManagement/seeDoctor/ok-lens-rgp/add-or-update.vue

@ -18,11 +18,11 @@
<div v-if="dataForm.title==='新增' || dataForm.title === '换片' || dataForm.title === '补录' || dataForm.title === '借片' || dataForm.title === '离焦软镜'" class="eyeType">
<div class="rightEye">
<p class="rightEye-text">右眼</p>
<left-right-eye ref="rightEyeRef" :brand-list="brandList" eye-type="OD" :title="dataForm.title" :patient-id-number="patientIdNumber" :tab-title="tabTitle" />
<left-right-eye ref="rightEyeRef" :brand-list="brandList" eye-type="OD" :title="dataForm.title" :patient-id="patientId" :tab-title="tabTitle" />
</div>
<div class="leftEye">
<p class="leftEye-text">左眼</p>
<left-right-eye ref="leftEyeRef" :brand-list="brandList" eye-type="OS" :title="dataForm.title" :patient-id-number="patientIdNumber" :tab-title="tabTitle" />
<left-right-eye ref="leftEyeRef" :brand-list="brandList" eye-type="OS" :title="dataForm.title" :patient-id="patientId" :tab-title="tabTitle" />
</div>
</div>
<left-right-eye v-if="dataForm.title==='编辑' || dataForm.title==='编辑补录' || dataForm.title==='编辑借片' || dataForm.title==='编辑离焦软镜'" ref="editLeftRightEye" :brand-list="brandList" :title="dataForm.title" :tab-title="tabTitle" />
@ -46,7 +46,7 @@ export default {
type: Array,
default: () => []
},
patientIdNumber: {
patientId: {
type: String,
default: ''
},
@ -65,7 +65,7 @@ export default {
dataForm: {
dpDoctorId: '',
dpDate: '',
patientIdNumber: this.patientIdNumber,
patientId: this.patientId,
drgsName: window.localStorage.getItem('identity')
},
ISCRTForm: false

6
src/page-subspecialty/views/modules/optometryManagement/seeDoctor/ok-lens-rgp/arrival-notice-or-update.vue

@ -9,15 +9,15 @@
@close="closeDialog"
>
<el-form ref="dataForm" :model="dataForm" :rules="dataRule">
<el-form-item :label="(dataForm.title=='更改通知' ? '通知' : dataForm.title) + '日期:'" label-width="90px" prop="shareDate">
<el-form-item :label="(dataForm.title=='更改通知' ? '通知' : dataForm.title) + '日期:'" label-width="95px" prop="shareDate">
<el-date-picker v-model="dataForm.shareDate" value-format="yyyy-MM-dd" type="date" :placeholder="'请选择' + (dataForm.title=='更改通知' ? '通知' : dataForm.title )+ '日期'" />
</el-form-item>
<template v-if="dataForm.title=='到货'">
<el-form-item label="出厂编号:" label-width="90px" prop="factoryNumber">
<el-form-item label="出厂编号:" label-width="95px" prop="factoryNumber">
<el-input v-model="dataForm.factoryNumber" placeholder="核对并填写出厂编号" />
</el-form-item>
</template>
<el-form-item label="备 注:" label-width="90px" prop="remark">
<el-form-item label="备 注:" label-width="95px" prop="remark">
<el-input v-model="dataForm.remark" type="textarea" placeholder="备注信息" />
</el-form-item>
</el-form>

16
src/page-subspecialty/views/modules/optometryManagement/seeDoctor/ok-lens-rgp/index.vue

@ -169,13 +169,13 @@
<el-table-column prop="operation" label="操作" width="150">
<template slot-scope="scope">
<div v-show="scope.row.status!=6 && scope.row.status!=7 && scope.row.status!=8 && scope.row.status!=100 && tabTitle !== 'LJRJ'">
<span v-show="scope.row.status==1" class="operation-details" @click="arrivalNotiveClick(scope.row.id,...scope.row,'到货')">到货</span>
<span v-show="scope.row.status==2" class="operation-details" @click="arrivalNotiveClick(scope.row.id,...scope.row,'通知')">通知</span>
<span v-show="scope.row.status==3" class="operation-details" @click="arrivalNotiveClick(scope.row.id,...scope.row,'更改通知')">更改通知</span>
<span v-show="scope.row.status==3 || scope.row.status==5" class="operation-details" @click="removeLensReturnGoodsClick(scope.row.id,...scope.row,'取镜')">取镜</span>
<span v-show="scope.row.status==4" class="operation-details" @click="removeLensReturnGoodsClick(scope.row.id,...scope.row,'取镜记录')">取镜记录</span>
<span v-show="scope.row.status==1 || scope.row.status==2 || scope.row.status==4 || scope.row.status==5" class="operation-details" @click="removeLensReturnGoodsClick(scope.row.id,...scope.row,'退货')">退货</span>
<el-dropdown trigger="click" @command="handleCommandDropdowm(scope.row.id,...scope.row,$event)">
<span v-show="scope.row.status==1" class="operation-details" @click="arrivalNotiveClick(scope.row.id, scope.row,'到货')">到货</span>
<span v-show="scope.row.status==2" class="operation-details" @click="arrivalNotiveClick(scope.row.id, scope.row,'通知')">通知</span>
<span v-show="scope.row.status==3" class="operation-details" @click="arrivalNotiveClick(scope.row.id, scope.row,'更改通知')">更改通知</span>
<span v-show="scope.row.status==3 || scope.row.status==5" class="operation-details" @click="removeLensReturnGoodsClick(scope.row.id, scope.row,'取镜')">取镜</span>
<span v-show="scope.row.status==4" class="operation-details" @click="removeLensReturnGoodsClick(scope.row.id, scope.row,'取镜记录')">取镜记录</span>
<span v-show="scope.row.status==1 || scope.row.status==2 || scope.row.status==4 || scope.row.status==5" class="operation-details" @click="removeLensReturnGoodsClick(scope.row.id, scope.row,'退货')">退货</span>
<el-dropdown trigger="click" @command="handleCommandDropdowm(scope.row.id, scope.row,$event)">
<i class="el-icon-more" />
<el-dropdown-menu slot="dropdown">
<el-dropdown-item v-show="scope.row.status==3" command="退货">退货</el-dropdown-item>
@ -185,7 +185,7 @@
</el-dropdown>
</div>
<div v-show="scope.row.status==6 || scope.row.status==7 || scope.row.status==8 || scope.row.status==100 || tabTitle =='LJRJ'">
<span v-show="scope.row.status==7 || scope.row.status==8 || tabTitle =='LJRJ'" class="operation-details" @click="addOrUpdateHandle(scope.row.id,...scope.row,`编辑${scope.row.status===7 ? '补录' : (scope.row.status==8 ? '借片' : (tabTitle =='LJRJ' ? '离焦软镜' :''))}`)">编辑</span>
<span v-show="scope.row.status==7 || scope.row.status==8 || tabTitle =='LJRJ'" class="operation-details" @click="addOrUpdateHandle(scope.row.id,scope.row,`编辑${scope.row.status===7 ? '补录' : (scope.row.status==8 ? '借片' : (tabTitle =='LJRJ' ? '离焦软镜' :''))}`)">编辑</span>
<template v-if="$hasPermission('patientManagement:delete')">
<span v-show="scope.row.status==6 || scope.row.status==7 || scope.row.status==8 || scope.row.status==100 || tabTitle =='LJRJ'" class="operation-details" @click="deleteHandle(scope.row.id)">删除</span>
</template>

26
src/page-subspecialty/views/modules/optometryManagement/seeDoctor/ok-lens-rgp/left-right-eye.vue

@ -6,55 +6,55 @@
<el-option label="左眼" value="OS" />
</el-select>
</el-form-item>
<el-form-item v-if="title=='换片'" label="目标镜片:" label-width="90px" prop="oldDpId">
<el-form-item v-if="title=='换片'" label="目标镜片:" label-width="95px" prop="oldDpId">
<el-select v-model="dataForm.oldDpId" placeholder="请选择目标镜片" clearable>
<el-option v-for="(item,index) in replaceList " :key="index" :value="item.id" :label="`${item.dpDate}-${item.brand}-${item.colour}`" />
</el-select>
</el-form-item>
<el-form-item label="品 牌:" :label-width="title=='新增' ? '60px' : '90px'" prop="brandId">
<el-form-item label="品 牌:" :label-width="title=='新增' ? '60px' : '95px'" prop="brandId">
<el-select v-model="dataForm.brandId" placeholder="请选择品牌" clearable>
<el-option v-for="(item,index) in brandList " :key="index" :value="item.id" :label="item.brand" @click.native="selectOptionBrandHandle(item)" />
</el-select>
</el-form-item>
<template v-if="ISCRTForm=='0' || ISCRTForm=='2'">
<el-form-item v-if="tabTitle==='okLens' && tabTitle !== 'LJRJ'" label="曲 率:" :label-width="title=='新增' ? '60px' : '90px'" prop="curvity">
<el-form-item v-if="tabTitle==='okLens' && tabTitle !== 'LJRJ'" label="曲 率:" :label-width="title=='新增' ? '60px' : '95px'" prop="curvity">
<el-input v-model="dataForm.curvity" placeholder="请填写曲率" />
</el-form-item>
<el-form-item v-if="tabTitle==='RGP' && tabTitle !== 'LJRJ'" label="基弧:" :label-width="title=='新增' ? '60px' : '90px'" prop="baseArc">
<el-form-item v-if="tabTitle==='RGP' && tabTitle !== 'LJRJ'" label="基弧:" :label-width="title=='新增' ? '60px' : '95px'" prop="baseArc">
<el-input v-model="dataForm.baseArc" placeholder="请填写基弧" />
</el-form-item>
<el-form-item label="度 数:" :label-width="title=='新增' ? '60px' : '90px'" prop="degrees">
<el-form-item label="度 数:" :label-width="title=='新增' ? '60px' : '95px'" prop="degrees">
<el-input v-model="dataForm.degrees" placeholder="请填写度数" />
</el-form-item>
</template>
<template>
<el-form-item v-if=" ISCRTForm=='2'" label="AZT:" :label-width="title=='新增' ? '60px' : '90px'" prop="azt">
<el-form-item v-if=" ISCRTForm=='2'" label="AZT:" :label-width="title=='新增' ? '60px' : '95px'" prop="azt">
<el-input v-model="dataForm.azt" placeholder="请填写度数" />
</el-form-item>
<el-form-item v-if="ISCRTForm =='1' || ISCRTForm =='2'" label="BC:" :label-width="title=='新增' ? '60px' : '90px'" prop="bc">
<el-form-item v-if="ISCRTForm =='1' || ISCRTForm =='2'" label="BC:" :label-width="title=='新增' ? '60px' : '95px'" prop="bc">
<el-input v-model="dataForm.bc" placeholder="请填写BC" />
</el-form-item>
</template>
<template v-if="ISCRTForm =='1'">
<el-form-item label="RZD:" :label-width="title=='新增' ? '60px' : '90px'" prop="rzd">
<el-form-item label="RZD:" :label-width="title=='新增' ? '60px' : '95px'" prop="rzd">
<el-input v-model="dataForm.rzd" placeholder="请填写RZD" />
</el-form-item>
<el-form-item label="LZA:" :label-width="title=='新增' ? '60px' : '90px'" prop="lza">
<el-form-item label="LZA:" :label-width="title=='新增' ? '60px' : '95px'" prop="lza">
<el-input v-model="dataForm.lza" placeholder="请填写LZA" />
</el-form-item>
</template>
<el-form-item v-if="tabTitle !== 'LJRJ'" label="直 径:" :label-width="title=='新增' ? '60px' : '90px'" prop="diameter">
<el-form-item v-if="tabTitle !== 'LJRJ'" label="直 径:" :label-width="title=='新增' ? '60px' : '95px'" prop="diameter">
<el-input v-model="dataForm.diameter" placeholder="请填写直径" />
</el-form-item>
<el-form-item v-if="tabTitle !== 'LJRJ'" label="颜 色:" :label-width="title=='新增' ? '60px' : '90px'" prop="colourId">
<el-form-item v-if="tabTitle !== 'LJRJ'" label="颜 色:" :label-width="title=='新增' ? '60px' : '95px'" prop="colourId">
<el-select v-model="dataForm.colourId" placeholder="请选择颜色" clearable @change="colorChange">
<el-option v-for="item in brandCOlorList.data" :key="item.id" :label="item.colour" :value="item.id" @click.native="selectOptionColorHandle(item)" />
</el-select>
</el-form-item>
<el-form-item v-if="title.includes('借片')" label="归还日期:" :label-width="title=='新增' ? '60px' : '90px'" prop="returnDate">
<el-form-item v-if="title.includes('借片')" label="归还日期:" :label-width="title=='新增' ? '60px' : '95px'" prop="returnDate">
<el-date-picker v-model="dataForm.returnDate" type="date" placeholder="请选择归还日期" value-format="yyyy-MM-dd" />
</el-form-item>
<el-form-item label="备 注:" :label-width="title=='新增' ? '60px' : '90px'" prop="remark">
<el-form-item label="备 注:" :label-width="title=='新增' ? '60px' : '95px'" prop="remark">
<el-input v-model="dataForm.remark" type="textarea" placeholder="备注信息" />
</el-form-item>
</el-form>

8
src/page-subspecialty/views/modules/optometryManagement/seeDoctor/ok-lens-rgp/removeLens-returnGoods-or-update.vue

@ -50,20 +50,20 @@
<template v-if="dataForm.title !='取镜记录'">
<el-form ref="dataForm" :model="dataForm" :rules="dataRule">
<template v-if="dataForm.title=='取镜'">
<el-form-item label="操作:" label-width="90px" prop="operation">
<el-form-item label="操作:" label-width="95px" prop="operation">
<el-radio-group v-model="dataForm.status">
<el-radio label="4">取镜</el-radio>
<el-radio label="5">放弃</el-radio>
</el-radio-group>
</el-form-item>
</template>
<el-form-item :label="dataForm.title + '日期:'" label-width="90px" prop="shareDate">
<el-form-item :label="dataForm.title + '日期:'" label-width="95px" prop="shareDate">
<el-date-picker v-model="dataForm.shareDate" type="date" :placeholder="'请选择' + dataForm.title + '日期'" value-format="yyyy-MM-dd" />
</el-form-item>
<el-form-item label="出厂编号:" label-width="90px">
<el-form-item label="出厂编号:" label-width="95px">
<el-input v-model="dataForm.factoryNumber" placeholder="核对并填写出厂编号" />
</el-form-item>
<el-form-item label="备 注:" label-width="90px" prop="remark">
<el-form-item label="备 注:" label-width="95px" prop="remark">
<el-input v-model="dataForm.remark" type="textarea" placeholder="备注信息" />
</el-form-item>
</el-form>

7
src/page-subspecialty/views/modules/optometryManagement/seeDoctor/review.vue

@ -24,12 +24,12 @@
/>
<el-table-column label="裸眼视力" align="center">
<el-table-column
prop="odVision"
prop="odVision"
label="R"
align="center"
/>
<el-table-column
prop="osVision"
prop="osVision"
label="L"
align="center"
/>
@ -97,7 +97,7 @@
:title="title"
>
<el-form ref="dataForms" :model="dataForm" :rules="dataRule">
<el-form-item label="复查日期:" label-width="90px" prop="returnVisitDate">
<el-form-item label="复查日期:" label-width="95px" prop="returnVisitDate">
<el-date-picker v-model="dataForm.returnVisitDate" type="date" :disabled="title === '编辑复查情况记录'" placeholder="请选择复查日期" value-format="yyyy-MM-dd" @change="changeDate" />
</el-form-item>
<el-form-item label="裸眼视力:" label-width="90px" prop="osVision">
@ -222,7 +222,6 @@ export default {
this.$nextTick(() => {
this.dataForm = { ...res.data }
this.dataForm.patientId = this.patientId
// this.dataForm.patientId = this.patientId
})
} else {
this.$nextTick(() => {

4
src/page-subspecialty/views/modules/systemManagement/team/edit-password.vue

@ -1,10 +1,10 @@
<template>
<el-dialog class="team-edit-password-Dialog" :visible.sync="visible" width="30%" title="修改密码">
<el-form ref="dataForm" :model="dataForm" :rules="dataRule">
<el-form-item label="登录密码:" label-width="100px" prop="newPassword">
<el-form-item label="登录密码:" label-width="120px" prop="newPassword">
<el-input v-model="dataForm.newPassword" placeholder="请输入要修改的密码" />
</el-form-item>
<el-form-item prop="confirmPassword" label-width="100px" :label="$t('updatePassword.confirmPassword')">
<el-form-item prop="confirmPassword" label-width="120px" :label="$t('updatePassword.confirmPassword')">
<el-input v-model="dataForm.confirmPassword" :placeholder="$t('updatePassword.confirmPassword')" />
</el-form-item>
</el-form>

2
src/page-subspecialty/views/modules/systemManagement/team/index.vue

@ -30,7 +30,7 @@
<span>{{ scope.row.gender === 1 ? '女' :'男' }}</span>
</template>
</el-table-column>
<el-table-column prop="centreName" label="所属医院" header-align="center" align="center" width="200" />
<!-- <el-table-column prop="centreName" label="所属医院" header-align="center" align="center" width="200" />-->
<el-table-column prop="roleList" label="权限" header-align="center" align="center" width="250">
<template slot-scope="scope">
<span v-for="(item,index) in scope.row.roleList" :key="index">

70
src/page-subspecialty/views/modules/systemManagement/team/team-add-or-update.vue

@ -30,23 +30,23 @@
<el-input v-model="dataForm.doctorJob" placeholder="请输入医生职位" />
</el-form-item> -->
<!-- superAdmin0普通用户 1是慧目管理员 -->
<!-- <el-form-item v-if="loginInfo.superAdmin===1" label="所属医院:" label-width="90px" prop="centreId">-->
<!-- <el-select v-model="dataForm.centreId" placeholder="请选择">-->
<!-- <el-option v-for="item in centerList" :key="item.id" :label="item.name" :value="item.id" />-->
<!-- </el-select>-->
<!-- </el-form-item>-->
<el-form-item label="用户类型:" label-width="90px" prop="positionListValue">
<el-cascader
v-model="dataForm.positionListValue"
:options="positionList"
:props="props"
clearable
@change="positionChange"
/>
<!-- <el-select v-model="dataForm.position" placeholder="请选择">
<el-option v-for="item in positionList" :key="item.id" :label="item.name" :value="item.name" />
</el-select> -->
</el-form-item>
<!-- <el-form-item v-if="loginInfo.superAdmin===1" label="所属医院:" label-width="90px" prop="centreId">-->
<!-- <el-select v-model="dataForm.centreId" placeholder="请选择">-->
<!-- <el-option v-for="item in centerList" :key="item.id" :label="item.name" :value="item.id" />-->
<!-- </el-select>-->
<!-- </el-form-item>-->
<!-- <el-form-item label="用户类型:" label-width="90px" prop="positionListValue">-->
<!-- <el-cascader-->
<!-- v-model="dataForm.positionListValue"-->
<!-- :options="positionList"-->
<!-- :props="props"-->
<!-- clearable-->
<!-- @change="positionChange"-->
<!-- />-->
<!-- &lt;!&ndash; <el-select v-model="dataForm.position" placeholder="请选择">-->
<!-- <el-option v-for="item in positionList" :key="item.id" :label="item.name" :value="item.name" />-->
<!-- </el-select> &ndash;&gt;-->
<!-- </el-form-item>-->
<el-form-item label="设置权限:" label-width="90px" prop="roleNameListValue">
<!-- :label="" :value="" :children="" -->
<el-cascader
@ -139,15 +139,16 @@ export default {
signImgBase: '',
status: 1 // 0 1
},
positionList: [{
name: '医生'
}, {
name: '护士'
}, {
name: '技师'
}, {
name: '医辅'
}],
positionList: [
{
name: '医生'
}, {
name: '护士'
}, {
name: '技师'
}, {
name: '医辅'
}],
uploadSignImgBase: '',
uploadImgDialogVisible: false,
centerList: [],
@ -194,10 +195,11 @@ export default {
this.visible = true
this.$nextTick(() => {
//
this.getCentreList()
this.getCentreJobList()
// this.getCentreList()
// this.getCentreJobList()
this.loginInfo = JSON.parse(window.localStorage.getItem('qg-userData'))
this.$refs.dataForm.resetFields() //
console.log(this.dataForm)
if (this.dataForm.id) {
this.getInfo()
}
@ -234,25 +236,25 @@ export default {
res.data.roleIdList.forEach(item => {
roleArr.push([item])
})
res.data.positionIdList.forEach(item => {
postionArr.push([item])
})
// if (res.data.positionIdList && res.data.positionIdList.length) {
// res.data.positionIdList.forEach(item => {
// postionArr.push([item])
// })
// }
this.dataForm = {
...this.dataForm,
...res.data
}
this.dataForm.roleNameListValue = roleArr
this.dataForm.positionListValue = postionArr
// this.dataForm.positionListValue = postionArr
}).catch(() => { })
},
//
roleCascaderChange(val) {
console.log(val)
this.dataForm.roleIdList = []
val.forEach(item => {
this.dataForm.roleIdList.push(item[0])
})
console.log(this.dataForm.roleIdList)
},
//
positionChange(val) {

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

@ -83,17 +83,14 @@ export default {
}
},
created() {
// this.$router.push({ name: 'patientManagement' })
this.getCaptcha()
},
methods: {
//
async getCaptcha() {
this.dataForm.uuid = getUUID()
// console.log(`${window.SITE_CONFIG['apiURL']}`)
const { data: res } = await this.$http.get(`/captcha?uuid=${this.dataForm.uuid}`)
this.captchaPath = res.data
// this.captchaPath = `${window.SITE_CONFIG['apiURL']}/captcha?uuid=${this.dataForm.uuid}`
},
//
dataFormSubmitHandle: debounce(function() {
@ -109,10 +106,6 @@ export default {
Cookies.set('xa-token', res.data.token)
window.localStorage.setItem('qg-userData', JSON.stringify(res.data.currentUser))
this.$router.push({ name: 'outpatientManagement-call' })
// const positionName = res.data.currentUser.positionList.length > 0 ? res.data.currentUser.positionList[0].positionName : ''
// positionName && positionName.includes('') ? this.$router.push({ name: 'outpatientManagement' }) : this.$router.push({ name: 'patientManagement' })
//
window.SITE_CONFIG.menuList.length > 0 ? this.$store.commit('activeIndexFun', res.data[0].id) : ''
}).catch(() => { })
})
}, 1000, { 'leading': true, 'trailing': false })

10872
static/js/jquery-3.5.1/jquery.js

File diff suppressed because it is too large

2
static/js/jquery-3.5.1/jquery.min.js

File diff suppressed because one or more lines are too long

BIN
屈光操作手册.docx

Binary file not shown.

BIN
眼科专病平台需求.docx

Binary file not shown.
Loading…
Cancel
Save