Browse Source

peter

360view
newPeter7 2 years ago
parent
commit
a6cb83153a
  1. 1
      src/components/360View/afterPart/index.vue
  2. 16
      src/components/360View/commonForm/deveopmentFIle.vue
  3. 24
      src/components/360View/commonForm/eyesVision.vue
  4. 27
      src/components/360View/commonForm/optometryForm.vue
  5. 2
      src/components/360View/dataInfo.vue
  6. 1
      src/components/360View/forePart/index.vue
  7. 9
      src/components/360View/img-reccrd.vue
  8. 5
      src/components/360View/index1.vue
  9. 9
      src/components/360View/medicalRecord/callMedical/index.vue
  10. 36
      src/components/360View/medicalRecord/outPatientRecord/index.vue
  11. 29
      src/components/360View/special/index.vue
  12. 1
      src/components/360View/specialExamine/index.vue
  13. 8
      src/page-subspecialty/router/index.js
  14. 6
      src/page-subspecialty/views/modules/optometryManagement/cornea/HIS-add.vue
  15. 164
      src/page-subspecialty/views/modules/optometryManagement/cornea/index.vue
  16. 12
      src/page-subspecialty/views/modules/optometryManagement/cornea/patient-add-or-update.vue
  17. 31
      src/page-subspecialty/views/modules/optometryManagement/dioptric/HIS-add.vue
  18. 32
      src/page-subspecialty/views/modules/optometryManagement/seeDoctor/index.vue
  19. 223
      src/page-subspecialty/views/modules/optometryManagement/seeDoctor/ok-lens-rgp/add-or-update.vue
  20. 131
      src/page-subspecialty/views/modules/optometryManagement/seeDoctor/ok-lens-rgp/arrival-notice-or-update.vue
  21. 430
      src/page-subspecialty/views/modules/optometryManagement/seeDoctor/ok-lens-rgp/index.vue
  22. 241
      src/page-subspecialty/views/modules/optometryManagement/seeDoctor/ok-lens-rgp/left-right-eye.vue
  23. 269
      src/page-subspecialty/views/modules/optometryManagement/seeDoctor/ok-lens-rgp/removeLens-returnGoods-or-update.vue
  24. 17
      src/page-subspecialty/views/modules/optometryManagement/seeDoctor/review.vue
  25. 175
      src/page-subspecialty/views/pages/pacs/drawer.vue
  26. 1735
      src/page-subspecialty/views/pages/pacs/img-record.vue
  27. 48
      src/page-subspecialty/views/pages/pacs/index.vue
  28. 284
      src/page-subspecialty/views/pages/pacs/show-file.vue
  29. 34
      src/page-subspecialty/views/pages/pacsManage/index.vue

1
src/components/360View/afterPart/index.vue

@ -523,7 +523,6 @@ export default {
}
const { data: res } = await this.$http.post(url, params)
if (res.code === 0) {
this.$message.success('保存成功')
await this.getforeList()
} else {
this.$message.error(res.msg)

16
src/components/360View/commonForm/deveopmentFIle.vue

@ -547,18 +547,22 @@ export default {
type: ''
}]
this.tableData = this.originTableData
this.getPatientData()
},
async getPatientData() {
const { data: res } = await this.$http.get(
'/patient/view/getPatientData',
{
params: {
patientId: this.patientId
}
'/patient/view/getPatientData',
{
params: {
patientId: this.patientId
}
}
)
if (res.code === 0) {
this.dataForm = res.data
const data = res.data
this.headData[1].patientName = data.patientName
this.headData[1].sex = data.patientSex
this.headData[1].birthday = data.patientBirthday
} else {
this.$message.error(res.msg)
}

24
src/components/360View/commonForm/eyesVision.vue

@ -200,7 +200,7 @@
<input type="checkbox" :checked="item.isSelect">
<div>{{ item.name }}</div>
</div>
</div>
</div>
</div>
<div style="display: flex">
<p style="width: 140px;">调节功能异常</p>
@ -529,7 +529,7 @@ export default {
created() {
},
mounted() {
this.originTableData = JSON.parse(JSON.stringify(this.tableData))
this.originTableData = JSON.parse(JSON.stringify(this.tableData))
this.getPatientData()
},
methods: {
@ -540,24 +540,22 @@ export default {
},
reSet() {
this.dataForm = {
number: '',
name: '',
sex: '',
age: '',
file: '',
fileNUm: ''
patientId: '',
patientName: '',
patientSex: '',
patientAge: ''
}
this.tableData = this.originTableData
this.getPatientData()
},
async getPatientData() {
const { data: res } = await this.$http.get(
'/patient/view/getPatientData',
{
params: {
patientId: this.patientId
}
'/patient/view/getPatientData',
{
params: {
patientId: this.patientId
}
}
)
if (res.code === 0) {
this.dataForm = res.data

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

@ -506,8 +506,6 @@ export default {
mounted() {
this.originTableData = JSON.parse(JSON.stringify(this.tableData))
this.getPatientData()
console.log(window.localStorage.getItem('shili'))
const shili = window.localStorage.getItem('shili') ? JSON.parse(window.localStorage.getItem('shili')) : []
if (shili.length) {
this.tableData[0].od = shili[0].odVan
@ -519,24 +517,25 @@ export default {
this.dataForm = this.formContent.a
this.tableData = this.formContent.b
this.getPatientData()
const shili = JSON.parse(window.localStorage.getItem('shili'))
if (shili.length) {
this.tableData[0].od = shili[0].odVan
this.tableData[0].os = shili[0].osVan
}
},
reSet() {
this.dataForm = {
number: '',
name: '',
sex: '',
age: '',
patientId: '',
patientName: '',
patientSex: '',
patientAge: '',
file: '',
fileNUm: ''
}
this.tableData = this.originTableData
this.getPatientData()
},
async getPatientData() {
const shili = window.localStorage.getItem('shili') ? JSON.parse(window.localStorage.getItem('shili')) : []
if (shili.length) {
this.tableData[0].od = shili[0].odVan
this.tableData[0].os = shili[0].osVan
}
const { data: res } = await this.$http.get(
'/patient/view/getPatientData',
{
@ -546,7 +545,11 @@ export default {
}
)
if (res.code === 0) {
this.dataForm = res.data
const data = res.data
this.dataForm.patientId = data.patientId
this.dataForm.patientName = data.patientName
this.dataForm.patientSex = data.patientSex
this.dataForm.patientAge = data.patientAge
} else {
this.$message.error(res.msg)
}

2
src/components/360View/dataInfo.vue

@ -131,7 +131,7 @@
</div>
</template>
</el-table-column>
<el-table-column label="操作" align="center" width="130">
<el-table-column label="操作" align="center" width="138">
<template slot-scope="scope">
<span
class="cell-cursor"

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

@ -700,7 +700,6 @@ export default {
}
const { data: res } = await this.$http.post(url, params)
if (res.code === 0) {
this.$message.success('保存成功')
await this.getforeList()
} else {
this.$message.error(res.msg)

9
src/components/360View/img-reccrd.vue

@ -466,9 +466,7 @@ export default {
this.examineType = type
const { data: res } = await this.$http.get('/patient/pac30/getPatientTree', { params: {
treeType: type,
// patientId: this.patientInfo.patientId
patientId: '2553716'
// patientId: '25490'
patientId: this.patientInfo.patientId
}
})
if (res.code === 0) {
@ -476,9 +474,7 @@ export default {
for (let i = 0; i < data.length; i++) {
const temp = data[i].children
for (let j = 0; j < temp.length; j++) {
if (type === 1) {
// temp[j].name = temp[j].examineItem || ''
} else {
if (type === 2) {
temp[j].examTime = temp[j].examTime ? temp[j].examTime.substring(0, 11) : ''
}
}
@ -495,7 +491,6 @@ export default {
this.examItemCode = data[0].id
}
for (let j = 0; j < temp.length; j++) {
// this.allExamine.push(`${temp[j].examNo}||${temp[j].risNo}`)
if (this.examineType === 1) {
temp[j].examDate = cur.id
}

5
src/components/360View/index1.vue

@ -363,10 +363,7 @@ export default {
// 360
handlePacs() {
const { href } = this.$router.resolve({
name: 'pacs'
// query: {
// id: 1
// }
name: 'pacsManage'
})
window.open(href, '_blank')
},

9
src/components/360View/medicalRecord/callMedical/index.vue

@ -5,9 +5,9 @@
<div class="content-left-top">
<div v-for="(item, index) in formList" :key="index" class="formBox" :class="[index === curIndex ? 'active' : '']" @click="handleForm(index, item)">
<div>
<p :class="[index === curIndex ? 'activeFont' : 'curFont']">{{ item.createTime }}</p>
<p>{{ item.name }}</p>
</div>
<p :class="[index === curIndex ? 'activeFont' : 'curFont']">{{ item.createTime }}</p>
<p>{{ item.name }}</p>
</div>
<i style="margin-top: 28px;color: rgb(199,5,5)" class="el-icon-delete" v-if="index === curIndex && !onlyRead" @click="deleteForm(item.id)"></i>
</div>
<img v-if="!formList" src="@/assets/img/nodata.png" alt="" class="nodata">
@ -101,7 +101,6 @@ export default {
}
const { data: res } = await this.$http.post('/case/save', params)
if (res.code === 0) {
this.$message.success('保存成功')
this.getFormList()
} else {
this.$message.error(res.msg)
@ -135,6 +134,8 @@ export default {
if (this.id === '') {
this.handleForm(0, first)
}
} else {
this.addRecord('门急诊电子病历')
}
} else {
this.$message.error(res.msg)

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

@ -126,22 +126,22 @@ export default {
methods: {
//
handleSaveTable() {
// this.saveTableData('1', '')
// this.$refs.foreParts.saveFore()
// this.$refs.afterParts.saveAfter()
// this.$refs.examines.saveExamine()
// this.saveTableData('5', '')
if (this.comonFormActive === '1') {
this.saveTableData('1', '病史采集')
} else if (this.comonFormActive === '2') {
this.$refs.foreParts.saveFore()
} else if (this.comonFormActive === '3') {
this.$refs.afterParts.saveAfter()
} else if (this.comonFormActive === '4') {
this.$refs.examines.saveExamine()
} else if (this.comonFormActive === '5') {
this.saveTableData('5', '诊断处置')
}
this.saveTableData('1', '病史采集')
this.$refs.foreParts.saveFore()
this.$refs.afterParts.saveAfter()
this.$refs.examines.saveExamine()
this.saveTableData('5', '诊断处置')
// if (this.comonFormActive === '1') {
// this.saveTableData('1', '')
// } else if (this.comonFormActive === '2') {
// this.$refs.foreParts.saveFore()
// } else if (this.comonFormActive === '3') {
// this.$refs.afterParts.saveAfter()
// } else if (this.comonFormActive === '4') {
// this.$refs.examines.saveExamine()
// } else if (this.comonFormActive === '5') {
// this.saveTableData('5', '')
// }
},
//
handleTemplate() {
@ -214,7 +214,9 @@ export default {
const { data: res } = await this.$http.post(url, params)
if (res.code === 0) {
this.$message.success('保存成功')
if (flag === '1') {
this.$message.success('保存成功')
}
this.getOutPatientList(flag)
} else {
this.$message.error(res.msg)

29
src/components/360View/special/index.vue

@ -29,9 +29,6 @@
<el-button type="text" size="small" @click.native.stop="handleRecord(scope.row)">
所有报告
</el-button>
<!-- <el-button type="text" size="small" @click.native.prevent="handleData(scope.row)">-->
<!-- 提取数据-->
<!-- </el-button>-->
</template>
</el-table-column>
</el-table>
@ -124,6 +121,7 @@ export default {
},
mounted() {
this.getPatientData()
this.getSpecialItem()
},
@ -184,17 +182,32 @@ export default {
this.$message.error(res.msg)
}
},
//
//
handleData(item) {
console.log(187,item)
this.examNo = item.examNo
this.examineItem = item.examineItem
this.getItemData()
},
//
handleRecord() {
this.isActive = true
handleRecord(item) {
console.log(item)
const patientInfo = {
examDate: item.examTime ? item.examTime.substring(0, 11) : '',
itemCode: item.examineItem,
examNo: item.examNo,
patientId: this.patientId
}
const { href } = this.$router.resolve({
name: 'pacs',
query: {
info: this.$Base64.encode(JSON.stringify(patientInfo))
}
})
window.open(href, '_blank')
},
//
// handleRecord() {
// this.isActive = true
// },
// 360
closePacs() {
this.isActive = false

1
src/components/360View/specialExamine/index.vue

@ -249,7 +249,6 @@ export default {
}
const { data: res } = await this.$http.post(url, params)
if (res.code === 0) {
this.$message.success('保存成功')
await this.getOutPatientList()
} else {
this.$message.error(res.msg)

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

@ -36,8 +36,14 @@ export const pageRoutes = [
meta: { title: '登录' }
},
{
path: '/pacs',
path: '/pacsManage',
component: () => import('@/page-subspecialty/views/pages/pacsManage/index'),
name: 'pacsManage',
meta: { title: 'pacs浏览器', isTab: true }
},
{
path: '/pacs',
component: () => import('@/page-subspecialty/views/pages/pacs/index'),
name: 'pacs',
meta: { title: 'pacs浏览器', isTab: true }
}

6
src/page-subspecialty/views/modules/optometryManagement/cornea/HIS-add.vue

@ -80,16 +80,16 @@ export default {
this.tableText = '请查询所需数据'
this.$refs.dataFormHis.resetFields() //
this.tableData = []
this.findHandle(1)
})
},
// His
async findHandle(flag) {
this.loading = true
if (flag === 2 && !this.dataFormHis.patientId && !this.dataFormHis.patientName && !this.dataFormHis.patientIdNumber) {
if (!this.dataFormHis.patientId && !this.dataFormHis.patientName && !this.dataFormHis.patientIdNumber) {
this.loading = false
return this.$message.error('搜索内容不能为空')
}
const { data: res } = await this.$http.get('/pat/Manage/getHisPatientList', {
const { data: res } = await this.$http.get('/patient/getHisPatient', {
params: this.dataFormHis
})
if (res.code === 0) {

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

@ -3,18 +3,15 @@
<template>
<div v-if="!detailViewVisible">
<div class="patient-info-head">
<el-form :inline="true" :model="dataForm" class="demo-form-inline" @keyup.enter.native="search()">
<el-form :inline="true" :model="dataForm" class="demo-form-inline" @keyup.enter.native="getDataListInitial()">
<el-form-item label="登记号:">
<el-input v-model="dataForm.patId" size="small" clearable placeholder="登记号" @clear="search()" />
</el-form-item>
<el-form-item label="就诊号:">
<el-input v-model="dataForm.patId" size="small" clearable placeholder="就诊号" @clear="search()" />
<el-input v-model="dataForm.patientId" size="small" clearable placeholder="登记号" @clear="getDataListInitial()" />
</el-form-item>
<el-form-item label="患者姓名:">
<el-input v-model="dataForm.patName" placeholder="患者姓名" size="small" clearable @clear="search()" />
<el-input v-model="dataForm.patientName" placeholder="患者姓名" size="small" clearable @clear="getDataListInitial()" />
</el-form-item>
<el-form-item label="身份证:">
<el-input v-model="dataForm.patIdNumber" size="small" clearable placeholder="身份证" @clear="search()" />
<el-input v-model="dataForm.patientIdNumber" size="small" clearable placeholder="身份证" @clear="getDataListInitial()" />
</el-form-item>
<el-form-item prop="dateRange" label="就诊时间" class="form-item-date">
<el-date-picker
@ -29,18 +26,18 @@
/>
</el-form-item>
<el-form-item style="flex:1">
<el-button type="primary" icon="el-icon-search" size="small" @click="search()">查询</el-button>
<el-button type="primary" icon="el-icon-search" size="small" @click="getDataListInitial()">查询</el-button>
</el-form-item>
</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>
<!-- <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"
@ -65,49 +62,26 @@
class="operation-details"
@click="browseClick(scope.row)"
>OK镜</span>
<!-- <el-dropdown trigger="click" @command="handleCommandDropdowm(scope.row.patIdNumber,scope.row,$event)">-->
<!-- <i class="el-icon-more" />-->
<!-- <el-dropdown-menu slot="dropdown">-->
<!-- <el-dropdown-item command="编辑">编辑</el-dropdown-item>-->
<!-- <el-dropdown-item command="修改身份证">修改身份证</el-dropdown-item>-->
<!-- <el-dropdown-item v-if="$hasPermission('patientManagement:delete')" command="删除">删除</el-dropdown-item>-->
<!-- </el-dropdown-menu>-->
<!-- </el-dropdown>-->
</template>
</el-table-column>
</el-table>
<el-pagination background layout="total,prev, pager, next" :total="total" :current-page.sync="page" @current-change="pageCurrentChangeHandle" />
</div>
</div>
<!-- 弹窗, 新增 / 修改 -->
<add-or-update v-if="addOrUpdateVisible" ref="addOrUpdate" :patient-type-list="patientTypeList" @refreshDataList="search" />
<!-- 修改身份证 -->
<!-- <edit-patid v-if="editPatidVisible" ref="editPatidRef" @editPatidVisible="editPatidVisible=false" @refreshDataList="search" />-->
<!-- HIS引入弹框 -->
<his-add v-if="HisAddVisible" ref="HisAddRef" />
<!-- 加入分组弹框 -->
<!-- <add-group v-if="addGroupVisible" ref="addGroupRef" @cancelClick="cancelClick" />-->
<!-- 详情页 -->
<!-- <detail-view v-if="detailViewVisible" :id="detailId" ref="viewRef" :patient-id-number="patientIdNumber" is-search="" @detailViewVisible="detailViewVisible=false" />-->
</template>
<!-- <router-view v-else />-->
</div>
</template>
<script>
import checked from '@/mixins/checked'
import checkedFooter from '@/components/checked-footer'
import headTemplate from '@/components/head'
import mixinViewModule from '@/mixins/view-module'
import AddOrUpdate from './patient-add-or-update'
// import editPatid from './editPatid'
import hisAdd from './HIS-add'
// import detailView from '@/components/360View' // 360
export default {
components: {
headTemplate,
AddOrUpdate,
hisAdd,
checkedFooter
hisAdd
},
mixins: [checked, mixinViewModule],
data() {
@ -116,27 +90,16 @@ export default {
getDataListURL: '/patient/page',
getDataListIsPage: true
},
cheackAllFooter: false,
nextVisitTime: [],
isShowPatient: true,
detailViewVisible: false,
HisAddVisible: false,
editPatidVisible: false,
dataForm: {
patId: '',
patName: '',
doctorName: '',
patientId: '',
patientName: '',
beginDate: '',
endDate: '',
slBeginDate: '',
slEndDate: '',
diagNoseName: '',
patIdNumber: ''
},
deleteParams: {
drgsName: window.localStorage.getItem('identity')
patientIdNumber: ''
},
doctorNameList: [],
patientTypeList: [],
currentTableList: [],
addGroupVisible: false,
@ -144,16 +107,7 @@ export default {
detailId: ''
}
},
watch: {
$route(val) {
//
this.isShowPatient = !(val.matched.length > 2)
}
},
created() {
this.isShowPatient = !(this.$route.matched.length > 2)
// this.getDoctorName()
// this.gettPatType()
},
methods: {
//
@ -170,70 +124,9 @@ export default {
},
//
dateChange(e) {
if (this.dataForm.drgsName === '青光眼') {
this.dataForm.beginDate = e ? e[0] : ''
this.dataForm.endDate = e ? e[1] : ''
} else {
this.dataForm.slBeginDate = e ? e[0] : ''
this.dataForm.slEndDate = e ? e[1] : ''
}
this.search()
},
//
noticeClick(patIdNumber, scopeRow) {
this.$router.push({
path: '/seeDoctor',
query: {
info: this.$Base64.encode(JSON.stringify({
patientIdNumber: scopeRow.patIdNumber,
patId: scopeRow.patId
}))
}
})
},
//
async getDoctorName() {
const { data: res } = await this.$http.get('/pat/Manage/selectDoctorName', {
params: {
drgsName: window.localStorage.getItem('identity')
}
})
if (res.code === 0) {
this.doctorNameList = res.data
} else {
this.$message.error(res.msg)
}
},
// //
// async gettPatType() {
// const { data: res } = await this.$http.get('/pat/Manage/selectPatType', {
// params: {
// drgsName: window.localStorage.getItem('identity')
// }
// })
// if (res.code === 0) {
// this.patientTypeList = res.data
// } else {
// this.$message.error(res.msg)
// }
// },
//
handleCommandDropdowm(patIdNumber, scopeRow, e) {
if (e === '编辑') {
this.addOrUpdateHandle(patIdNumber, scopeRow, '修改患者')
} else if (e === '修改身份证') {
this.editPatidVisible = true
this.$nextTick(() => {
this.$refs.editPatidRef.dataForm.newIdNumber = patIdNumber
this.$refs.editPatidRef.dataForm.oldIdNumber = patIdNumber
this.$refs.editPatidRef.init()
})
} else if (e === '告知书') {
this.noticeClick(patIdNumber, scopeRow, e)
} else if (e === '删除') {
this.deleteHandle(patIdNumber, 'patIdNumber')
}
this.dataForm.beginDate = e ? e[0] : ''
this.dataForm.endDate = e ? e[1] : ''
this.getDataListInitial()
},
// His
HISHandle() {
@ -241,26 +134,7 @@ export default {
this.$nextTick(() => {
this.$refs.HisAddRef.init()
})
},
//
addGroupHandle() {
this.addGroupVisible = true
this.$nextTick(() => {
const patientIdNumberList = []
this.currentTableList.forEach(item => {
patientIdNumberList.push(item.patIdNumber)
})
this.$refs.addGroupRef.dataForm.patientIdNumberList = patientIdNumberList
this.$refs.addGroupRef.init()
})
},
// table
cancelClick() {
this.cheackAllFooter = false
this.cheackReverseFooter = false
this.$refs.multipleTable.clearSelection()
}
}
}
</script>

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

@ -7,10 +7,10 @@
>
<el-form ref="dataForm" :model="dataForm" :rules="dataRule">
<el-form-item label="登记号:" label-width="120px" prop="patId" class="formItemOne">
<el-input v-model="dataForm.patId" placeholder="请输入病历号" />
<el-input v-model="dataForm.patientId" placeholder="请输入病历号" />
</el-form-item>
<el-form-item label="患者姓名:" label-width="120px" prop="patName">
<el-input v-model="dataForm.patName" placeholder="请输入姓名" />
<el-input v-model="dataForm.patientName" placeholder="请输入姓名" />
</el-form-item>
<el-form-item v-if="!dataForm.id" label="身份证号:" label-width="120px" prop="patIdNumber">
<el-input v-model="dataForm.patIdNumber" placeholder="请输入身份证号 " />
@ -38,9 +38,9 @@
<el-radio-button label="2"></el-radio-button>
</el-radio-group>
</el-form-item> -->
<el-form-item v-if="dataForm.drgsName == '青光眼'" label="备注:" label-width="90px" prop="remarks">
<el-input v-model="dataForm.remarks" type="textarea" />
</el-form-item>
<!-- <el-form-item v-if="dataForm.drgsName == '青光眼'" label="备注:" label-width="90px" prop="remarks">-->
<!-- <el-input v-model="dataForm.remarks" type="textarea" />-->
<!-- </el-form-item>-->
</el-form>
<template slot="footer">
<el-button @click="visible = false">{{ $t('cancel') }}</el-button>
@ -63,6 +63,7 @@ export default {
return {
visible: false,
dataForm: {
platform: 1,
patId: '',
patName: '',
patIdNumber: '',
@ -72,7 +73,6 @@ export default {
revisitCycles: '1', //
revisitCyclesUnit: '3', // 1234
remarks: '',
drgsName: window.localStorage.getItem('identity')
}
}
},

31
src/page-subspecialty/views/modules/optometryManagement/dioptric/HIS-add.vue

@ -111,21 +111,22 @@ export default {
}
},
//
async introduceHandle(item) {
console.log(item)
const { data: res } = await this.$http.get('/patient/doLeadIn', {
params: {
patientId: item.patientId,
platform: this.isSearch
}
})
if (res.code === 0) {
this.$message.success('引入成功!')
this.$parent.getDataListInitial()
} else {
this.tableText = res.msg
this.$message.error(res.msg)
}
async introduceHandle(scopwRow) {
this.$parent.addOrUpdateHandle('', scopwRow, 'HIS引入')
// console.log(item)
// const { data: res } = await this.$http.get('/patient/doLeadIn', {
// params: {
// patientId: item.patientId,
// platform: this.isSearch
// }
// })
// if (res.code === 0) {
// this.$message.success('!')
// this.$parent.getDataListInitial()
// } else {
// this.tableText = res.msg
// this.$message.error(res.msg)
// }
}
}
}

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

@ -11,8 +11,8 @@
<span style="vertical-align: text-bottom">{{ patientInfoObj.patientId }}</span>
</p>
<p class="head-b">
<img v-if="patientInfoObj.patientIdNumber" :src="require('@/assets/img/id.png')" alt="" style="margin-right: 6px;vertical-align: middle">
<span class="mr16" style="vertical-align: middle">{{ patientInfoObj.patientIdNumber }}</span>
<img v-if="patientInfoObj.patientId" :src="require('@/assets/img/id.png')" alt="" style="margin-right: 6px;vertical-align: middle">
<span class="mr16" style="vertical-align: middle">{{ patientInfoObj.patientId }}</span>
<img v-if="patientInfoObj.patientPhone" :src="require('@/assets/img/phone.png')" alt="" style="margin-right: 6px;vertical-align: middle">
<span class="mr16" style="vertical-align: middle">{{ patientInfoObj.patientPhone }}</span>
<img v-if="patientInfoObj.patientAddress" :src="require('@/assets/img/position.png')" alt="" style="margin-right: 6px;vertical-align: middle">
@ -22,20 +22,27 @@
<div class="see-docto-right">
<el-tabs v-model="activeName" type="card" @tab-click="TabClick">
<el-tab-pane label="告知书" name="noticeBook">
<notice-book :patient-id-number="patientIdNumber" />
<notice-book :patient-id="patientId" />
</el-tab-pane>
<el-tab-pane label="首诊单" name="firstVisit">
<first-visit :crf-id="patientInfoObj.crfId" :patient-id-number="patientIdNumber" :patient-id="patientId" />
<first-visit :crf-id="patientInfoObj.crfId" :patient-id="patientId" />
</el-tab-pane>
<el-tab-pane label="OK镜" name="okLens">
<ok-lens ref="OKLens" :patient-id="patientId" :doctor-list="doctorList" />
<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-number="patientIdNumber" :patient-id="patientId" />
<review :patient-id="patientId" />
</el-tab-pane>
<el-tab-pane label="历史档案" name="history">
<history-file :patientId="patientId" />
</el-tab-pane>
<el-tab-pane label="RGP" name="RGP">
<ok-lens-rgp ref="okLensRgp" :patient-id="patientId" :doctor-list="doctorList" tab-title="RGP" />
</el-tab-pane>
<el-tab-pane label="离焦软镜" name="离焦软镜">
<ok-lens-rgp ref="okLensRgp" :patient-id="patientId" :doctor-list="doctorList" tab-title="LJRJ" />
</el-tab-pane>
</el-tabs>
</div>
</div>
@ -46,9 +53,12 @@ import okLens from './ok-lens/index.vue' // ok镜
import noticeBook from './notice-book.vue' //
import review from './review.vue' //
import historyFile from './historyRecord.vue' //
import okLensRgp from './ok-lens-rgp/index.vue' // ok
export default {
components: {
firstVisit,
okLensRgp,
okLens,
noticeBook,
review,
@ -61,7 +71,7 @@ export default {
doctorList: [],
patientInfoObj: {},
activeName: 'noticeBook',
patientIdNumber: '',
patientId: '',
patientId: '',
pageParams: {}
}
@ -86,7 +96,7 @@ export default {
},
{
name: '身份证号',
info: val.patientIdNumber
info: val.patientId
},
{
name: '手机号',
@ -106,7 +116,7 @@ export default {
},
created() {
this.pageParams = JSON.parse(this.$Base64.decode(this.$route.query.info))
this.patientIdNumber = this.pageParams.patientIdNumber
this.patientId = this.pageParams.patientId
this.patientId = this.pageParams.patientId
this.getPatientInfo()
this.getDoctorList()
@ -141,8 +151,8 @@ export default {
},
//
TabClick(tab, event) {
if (tab.name === 'okLens') {
this.$refs.OKLens.init()
if (tab.name === 'okLensRgp') {
this.$refs.okLensRgp.init()
}
}
}

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

@ -0,0 +1,223 @@
<template>
<el-dialog
class="oklens-add-order"
:close-on-click-modal="false"
:visible.sync="visible"
:width="dataForm.title==='新增' || dataForm.title === '换片' || dataForm.title === '补录' || dataForm.title === '借片' ? '60%' : '30%'"
:title="dataForm.title"
>
<el-form ref="dataForm" :model="dataForm" :rules="dataRule">
<el-form-item :label="dataForm.title === '借片' ? '借片日期' : '订片日期'" label-width="90px" prop="dpDate">
<el-date-picker v-model="dataForm.dpDate" type="date" placeholder="请选择订片日期" value-format="yyyy-MM-dd" />
</el-form-item>
<el-form-item :label="dataForm.title === '借片' ? '借片医生':'订片医生'" label-width="90px" prop="dpDoctorId">
<el-select v-model="dataForm.dpDoctorId" placeholder="请选择订片医生" clearable>
<el-option v-for="(item,index) in doctorList " :key="index" :value="item.doctorId" :label="item.doctorName" />
</el-select>
</el-form-item>
<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" />
</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" />
</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" />
</el-form>
<template slot="footer">
<el-button @click="visible = false">{{ $t('cancel') }}</el-button>
<el-button type="primary" @click="dataFormSubmitHandle()">{{ $t('confirm') }}</el-button>
</template>
</el-dialog>
</template>
<script>
import debounce from 'lodash/debounce'
import leftRightEye from './left-right-eye.vue'
export default {
components: {
leftRightEye
},
props: {
brandList: {
type: Array,
default: () => []
},
patientIdNumber: {
type: String,
default: ''
},
doctorList: {
type: Array,
default: () => []
},
tabTitle: {
type: String,
default: ''
}
},
data() {
return {
visible: false,
dataForm: {
dpDoctorId: '',
dpDate: '',
patientIdNumber: this.patientIdNumber,
drgsName: window.localStorage.getItem('identity')
},
ISCRTForm: false
}
},
computed: {
dataRule() {
return {
dpDoctorId: [
{ required: true, message: '请选择订片医生', trigger: 'change' }
],
dpDate: [
{ required: true, message: '请选择订片日期', trigger: 'change' }
]
}
}
},
created() {
},
methods: {
init() {
this.visible = true
this.$nextTick(() => {
this.$refs.dataForm.resetFields() //
if (this.dataForm.title === '新增' || this.dataForm.title === '借片' || this.dataForm.title === '换片' || this.dataForm.title === '补录') {
this.$refs.rightEyeRef.leftRightInit()
this.$refs.leftEyeRef.leftRightInit()
} else if (this.dataForm.title === '编辑' || this.dataForm.title === '编辑补录') {
this.$refs.editLeftRightEye.leftRightInit()
}
if (this.dataForm.id) {
this.getInfo()
}
})
this.dataForm.dpDoctorId = ''
this.dataForm.dpDate = ''
},
//
getInfo() {
this.$http.get(`/dp/getDpInfo/${this.dataForm.id}`).then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg)
}
this.dataForm = {
...this.dataForm,
...res.data
}
this.ISCRTForm = res.data.flag
this.$refs.editLeftRightEye.ISCRTForm = this.ISCRTForm
const eyeData = JSON.parse(JSON.stringify(res.data))
delete eyeData.dpDate
delete eyeData.dpDoctorId
delete eyeData.dpDoctorName
this.$refs.editLeftRightEye.dataForm = { ...eyeData }
this.$refs.editLeftRightEye.getBrandColorList('', res.data.brandId, '编辑')
}).catch(() => {})
},
// 320321188808123330 18888888888
dataFormSubmitHandle: debounce(function() {
this.$refs.dataForm.validate((valid) => {
if (!valid) {
return false
}
if (this.dataForm.title === '新增' || this.dataForm.title === '借片' || this.dataForm.title === '换片' || this.dataForm.title === '补录') {
let flag = 0
this.$refs.rightEyeRef.validateFun()
if (this.$refs.rightEyeRef.validateFlag) {
flag++
this.dpFun({ ...this.dataForm, ...this.$refs.rightEyeRef.dataForm })
}
this.$refs.leftEyeRef.validateFun()
if (this.$refs.leftEyeRef.validateFlag) {
flag++
this.dpFun({ ...this.dataForm, ...this.$refs.leftEyeRef.dataForm })
}
flag === 0 ? this.$message.error('请填写右眼或左眼完整信息') : ''
} else if (this.dataForm.title === '编辑' || this.dataForm.title === '编辑补录' || this.dataForm.title === '编辑借片' || this.dataForm.title === '编辑离焦软镜') {
this.$refs.editLeftRightEye.validateFun()
this.dpFun({ ...this.dataForm, ...this.$refs.editLeftRightEye.dataForm })
}
})
}, 1000, { leading: true, trailing: false }),
//
dpFun(data) {
const url = this.dataForm.title === '新增' || this.dataForm.title === '编辑' || this.dataForm.title === '编辑补录' || this.dataForm.title === '编辑借片' || this.dataForm.title === '编辑离焦软镜' ? '/dp' : (this.dataForm.title === '换片' ? '/dp/replace' : (this.dataForm.title === '补录' ? '/dp/addRecord' : (this.dataForm.title === '借片' ? '/dp/borrow' : '')))
this.$http[!this.dataForm.id ? 'post' : 'put'](url, data).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(() => {})
}
}
}
</script>
<style lang="scss" scoped>
.oklens-add-order {
.eyeType {
margin-left:90px;
display: flex;
.rightEye {
margin-right: 16px;
}
.rightEye,.leftEye {
width: 50%;
border-radius: 6px;
background: #FAFAFA;
padding: 0 20px;
}
.rightEye-text,.leftEye-text {
font-size: 16px;
height: 50px;
line-height: 50px;
font-weight: 700;
border-bottom: 1px solid rgba(0, 0, 0, 0.06);
margin-bottom: 20px;
}
}
}
</style>
<style lang="scss">
.oklens-add-order {
.el-dialog__header {
margin-bottom:12px
}
.el-dialog__body {
padding-right: 30px;
}
.formItemOne .el-form-item__content {
display: flex;
}
.el-date-editor.el-input, .el-date-editor.el-input__inner{
width: 100%;
}
.el-select {
display: block;
}
.el-input-number {
display: block;
width: 100%;
}
}
</style>

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

@ -0,0 +1,131 @@
<template>
<el-dialog
class="oklens-add-order"
:visible.sync="visible"
:close-on-click-modal="false"
width="30%"
:title="dataForm.title"
append-to-body
@close="closeDialog"
>
<el-form ref="dataForm" :model="dataForm" :rules="dataRule">
<el-form-item :label="(dataForm.title=='更改通知' ? '通知' : dataForm.title) + '日期:'" label-width="90px" 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-input v-model="dataForm.factoryNumber" placeholder="核对并填写出厂编号" />
</el-form-item>
</template>
<el-form-item label="备 注:" label-width="90px" prop="remark">
<el-input v-model="dataForm.remark" type="textarea" placeholder="备注信息" />
</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>
</template>
</el-dialog>
</template>
<script>
import debounce from 'lodash/debounce'
export default {
props: {
brandList: {
type: Array,
default: () => []
}
},
data() {
return {
visible: false,
dataForm: {
dpId: '',
shareDate: '',
factoryNumber: '',
remark: ''
},
params: {}
}
},
computed: {
dataRule() {
return {
shareDate: [
{ required: true, message: '请选择日期', trigger: 'change' }
],
factoryNumber: [
{ required: true, message: '请选择出厂编号', trigger: 'blur' }
]
}
}
},
methods: {
init() {
this.visible = true
this.$nextTick(() => {
this.$refs.dataForm.resetFields() //
console.log(this.dataForm)
if (this.dataForm.title === '更改通知') {
this.dataForm.id = this.params.noticeId
this.dataForm.remark = this.params.noticeRemark
this.dataForm.shareDate = this.params.noticeDate
} else if (this.dataForm.title === '通知') {
this.dataForm.shareDate = this.$moment().format('YYYY-MM-DD')
}
})
},
// 320321188808123330 18888888888
dataFormSubmitHandle: debounce(function() {
this.$refs.dataForm.validate((valid) => {
if (!valid) {
return false
}
const url = this.dataForm.title === '到货' ? '/dp/arrival' : (this.dataForm.title === '通知' ? '/dp/notice' : this.dataForm.title === '更改通知' ? '/dp/updateNotice' : '')
this.$http[!this.params.noticeId ? 'post' : 'put'](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('getDataList')
}
})
}).catch(() => {})
})
}, 1000, { leading: true, trailing: false }),
//
closeDialog() {
this.$emit('closeDialog')
}
}
}
</script>
<style lang="scss">
.oklens-add-order {
.el-dialog__header {
margin-bottom:12px
}
.el-dialog__body {
padding-right: 30px;
}
.formItemOne .el-form-item__content {
display: flex;
}
.el-date-editor.el-input, .el-date-editor.el-input__inner{
width: 100%;
}
.el-select {
display: block;
}
.el-input-number {
display: block;
width: 100%;
}
}
</style>

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

@ -0,0 +1,430 @@
<template>
<div class="okLens">
<!-- ok镜头部 -->
<head-template head-left="订片记录">
<el-button v-if="tabTitle !== 'LJRJ'" size="small" @click="addOrUpdateHandle('','','借片')">
<svg-icon icon-class="icon-jiebei" /><span class="repair-title">借片</span>
</el-button>
<el-button v-if="tabTitle !== 'LJRJ'" size="small" @click="addOrUpdateHandle('','','补录')">
<svg-icon icon-class="icon-repair" /><span class="repair-title">补录</span>
</el-button>
<el-button size="small" @click="addOrUpdateHandle('','','换片')">
<svg-icon icon-class="icon-change-film" /><span class="change-title">换片</span>
</el-button>
<el-button type="primary" size="small" icon="el-icon-plus" @click="addOrUpdateHandle('','','新增')">新增</el-button>
</head-template>
<!-- ok镜内容 -->
<!-- 1:定片未到货2:到货未通知3:通知未取镜4:取镜/离焦软镜5:放弃取镜6:换片 7:补录8:借片100:退货 -->
<el-table ref="multipleTable" :data="dataList" tooltip-effect="dark" style="width: 100%" :height="`calc(100vh - 217px)`" :row-class-name="getRowClass">
<el-table-column type="expand">
<template v-if="scope.row.status!=7 || scope.row.status!=8" slot-scope="scope">
<el-steps space="80%" :active="scope.row.status==3 ? 3 : scope.row.status" :finish-status="scope.row.status==4 ? 'success' : ( scope.row.status== 5 || scope.row.status== 100 ? 'error' : ( scope.row.status== 6 ? 'wait' : 'finish' ))">
<el-step v-for="(item,index) in scope.row.logVOList" :key="index" :title="item.name">
<template slot="description">
<div class="step-desc">
<p class="description-name">{{ item.status==1 && !scope.row.oldDpId ? '订片': (item.status==2 ? '到货' : (item.status==3 ? '通知' : (item.status==4 ? '取镜' :(item.status==5 ? '放弃' : (item.status==6 ? '换片' : (item.status==100 ? '退货' : (item.status==1&& scope.row.oldDpId ? '换片':''))))))) }}</p>
<p class="description-date"> {{ item.shareDate ? $options.filters.dateFilterTwo( item.shareDate) : '' }}</p>
<p v-show="item.status==2 || item.status==6">出厂编号{{ item.factoryNumber ? item.factoryNumber : '-' }}</p>
<p v-show="item.status==1 && scope.row.oldDpId ">原订片编号{{ scope.row.oldDpId ? scope.row.oldDpId.substr(9) : '' }}</p>
<p v-show="item.status==6">新订片编号{{ scope.row.newDpId ? scope.row.newDpId.substr(9) : '' }}</p>
<div class="description-content">
<template v-if="item.status==1">
<span v-show="scope.row.eyeType">眼别{{ scope.row.eyeType }}</span>
<span v-show="scope.row.brand">品牌{{ scope.row.brand }}</span>
<span v-show="scope.row.curvity && (scope.row.flag=='0'||scope.row.flag=='2')">曲率{{ scope.row.curvity }}</span>
<span v-show="scope.row.degrees && (scope.row.flag=='0'||scope.row.flag=='2')">度数{{ scope.row.degrees }}</span>
<span v-show="scope.row.degrees && scope.row.flag=='2'">AZT{{ scope.row.azt }}</span>
<span v-show="scope.row.bc && (scope.row.flag=='1' ||scope.row.flag=='2')">BC{{ scope.row.bc }}</span>
<span v-show="scope.row.rzd && scope.row.flag=='1'">RZD{{ scope.row.rzd }}</span>
<span v-show="scope.row.lza && scope.row.flag=='1'">LZA{{ scope.row.lza }}</span>
<span v-show="scope.row.diameter">直径{{ scope.row.diameter }}</span>
</template>
<template v-else>
<p v-show="item.status==4 && item.id && scope.row.status==4" class="take-mirror" @click="removeLensReturnGoodsClick(scope.row.id,...scope.row,'取镜记录')">取镜记录</p>
</template>
<p v-show="item.operateDoctorName">订片医生{{ item.dpDoctorName }}</p>
<p v-show="item.operateDoctorName">操作者{{ item.operateDoctorName }}</p>
<p>备注{{ item.remark ? item.remark : '-' }}</p>
</div>
</div>
</template>
</el-step>
</el-steps>
</template>
</el-table-column>
<el-table-column prop="id" label="订片编号" :width=" tabTitle !== 'LJRJ' ? 100 : ''">
<template slot-scope="scope">
{{ scope.row.id ? scope.row.id.substr(9): '- ' }}
</template>
</el-table-column>
<el-table-column prop="dpDate" label="订片日期" :width=" tabTitle !== 'LJRJ' ? 100 : ''">
<template slot-scope="scope">
{{ scope.row.dpDate ? $options.filters.dateFilterTwo( scope.row.dpDate): '- ' }}
</template>
</el-table-column>
<el-table-column v-if="tabTitle !=='LJRJ'" prop="content" :label="tabTitle==='okLens' ? '内容(眼别 品牌 曲率 度数 直径)' : '内容(眼别 品牌 基弧 度数 直径)'" width="240">
<template slot-scope="scope">
<div class="table-colum-content">
<span v-show="scope.row.eyeType"><b :style="{'color':scope.row.eyeType==='OD' ? 'green': '#1E79FF'}">眼别{{ scope.row.eyeType }}</b></span>
<span v-show="scope.row.brand">品牌{{ scope.row.brand }}</span>
<!-- flag 0 第一种国产品牌 flag 1 进口品牌 flag 0 第二种国产品牌 -->
<!-- 根据不同的flag显示不同的内容 -->
<span v-show="scope.row.curvity && (scope.row.flag=='0'||scope.row.flag=='2') && tabTitle==='okLens'">曲率{{ scope.row.curvity }}</span>
<span v-show="scope.row.baseArc && (scope.row.flag=='0'||scope.row.flag=='2') && tabTitle==='RGP'">基弧{{ scope.row.baseArc }}</span>
<span v-show="scope.row.degrees && (scope.row.flag=='0'||scope.row.flag=='2')">度数{{ scope.row.degrees }}</span>
<span v-show="scope.row.degrees && scope.row.flag=='2'">AZT{{ scope.row.azt }}</span>
<span v-show="scope.row.bc && (scope.row.flag=='1' ||scope.row.flag=='2')">BC{{ scope.row.bc }}</span>
<span v-show="scope.row.rzd && scope.row.flag=='1'">RZD{{ scope.row.rzd }}</span>
<span v-show="scope.row.lza && scope.row.flag=='1'">LZA{{ scope.row.lza }}</span>
<span v-show="scope.row.diameter">直径{{ scope.row.diameter }}</span>
</div>
</template>
</el-table-column>
<el-table-column v-if="tabTitle ==='LJRJ'" prop="content" label="内容(眼别 品牌 度数)" width="300">
<template slot-scope="scope">
<div class="table-colum-content">
<span v-show="scope.row.eyeType"><b :style="{'color':scope.row.eyeType==='OD' ? 'green': '#1E79FF'}">眼别{{ scope.row.eyeType }}</b></span>
<span v-show="scope.row.brand">品牌{{ scope.row.brand }}</span>
<span v-show="scope.row.degrees">度数{{ scope.row.degrees }}</span>
</div>
</template>
</el-table-column>
<el-table-column prop="remark" label="备注">
<template slot-scope="scope">
{{ scope.row.remark ? scope.row.remark : '-' }}
</template>
</el-table-column>
<el-table-column prop="dpDoctorName" label="订片医生" />
<template v-if="tabTitle !=='LJRJ'">
<el-table-column prop="arrivalDate" label="到货日期">
<template slot-scope="scope">
{{ scope.row.arrivalDate ? $options.filters.dateFilterTwo( scope.row.arrivalDate): '- ' }}
</template>
</el-table-column>
<el-table-column prop="noticeDate" label="通知日期">
<template slot-scope="scope">
{{ scope.row.noticeDate ? $options.filters.dateFilterTwo( scope.row.noticeDate): '- ' }}
</template>
</el-table-column>
<el-table-column prop="takeAwayDate" label="取镜日期">
<template slot-scope="scope">
{{ scope.row.takeAwayDate ? $options.filters.dateFilterTwo( scope.row.takeAwayDate): '- ' }}
</template>
</el-table-column>
<el-table-column prop="returnDate" label="归还日期">
<template slot-scope="scope">
{{ scope.row.returnDate ? $options.filters.dateFilterTwo( scope.row.returnDate): '- ' }}
</template>
</el-table-column>
</template>
<el-table-column label="状态">
<!-- 1:定片未到货2:到货未通知3:通知未取镜4:放弃取镜5:放弃取镜6:换片7:补录100:退货 -->
<template slot-scope="scope">
<div v-show="scope.row.status == 1">
<span class="circle-status not-start" />
<span>未到货</span>
</div>
<div v-show="scope.row.status == 2">
<span class="circle-status not-start" />
<span>未通知</span>
</div>
<div v-show="scope.row.status == 3">
<template v-if="new Date(scope.row.noticeDate).setDate(new Date(scope.row.noticeDate).getDate() + 30) < new Date()">
<span class="circle-status not-start" />
<span>通知30天未取镜</span>
</template>
<template v-else>
<span class="circle-status not-start" />
<span>未取镜</span>
</template>
</div>
<div v-show="scope.row.status == 4">
<span class="circle-status goed" />
<span>已取镜</span>
</div>
<div v-show="scope.row.status == 5">
<span class="circle-status goed" />
<span>已放弃</span>
</div>
<div v-show="scope.row.status == 6">
<span class="circle-status patch" />
<span>换片</span>
</div>
<div v-show="scope.row.status == 7">
<span class="circle-status patch" />
<span>补录</span>
</div>
<div v-show="scope.row.status == 8">
<span class="circle-status blue" />
<span>借片</span>
</div>
<div v-show="scope.row.status == 100">
<span class="circle-status give-up" />
<span>已退货</span>
</div>
</template>
</el-table-column>
<!-- 1:未到货2未通知3:未取镜4:取镜5:已放弃6:换片7:补录8:借片100:退货 -->
<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)">
<i class="el-icon-more" />
<el-dropdown-menu slot="dropdown">
<el-dropdown-item v-show="scope.row.status==3" command="退货">退货</el-dropdown-item>
<el-dropdown-item command="编辑">编辑</el-dropdown-item>
<el-dropdown-item v-if="$hasPermission('patientManagement:delete')" command="删除">删除</el-dropdown-item>
</el-dropdown-menu>
</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>
<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>
</div>
</template>
</el-table-column>
</el-table>
<!-- 弹窗 新增/编辑/换片/补录/借片 -->
<add-or-update v-if="addOrUpdateVisible" ref="addOrUpdate" :doctor-list="doctorList" :brand-list="brandList" :patient-id="patientId" :tab-title="tabTitle" @refreshDataList="getDataList()" />
<!-- 弹窗 到货/通知 -->
<arrival-notice-or-update v-if="arrivalNoticeVisible" ref="arrivalNoticeOrUpdate" :patient-id="patientId" @refreshDataList="getDataList" @getDataList="getDataList()" @closeDialog="arrivalNoticeVisible=false" />
<!-- 弹窗 取镜/退货 -->
<removeLens-returnGoods-or-update v-if="removeLensReturnGoodsVisible" ref="removeLensReturnGoodsOrUpdate" :patient-id="patientId" :father-factory-number="factoryNumber" @getDataList="getDataList()" @closeDialog="removeLensReturnGoodsVisible=false" />
</div>
</template>
<script>
import headTemplate from '@/components/head'
import mixinViewModule from '@/mixins/view-module'
import AddOrUpdate from './add-or-update.vue'
import arrivalNoticeOrUpdate from './arrival-notice-or-update'
import removeLensReturnGoodsOrUpdate from './removeLens-returnGoods-or-update'
export default {
components: {
headTemplate,
AddOrUpdate,
arrivalNoticeOrUpdate,
removeLensReturnGoodsOrUpdate
},
mixins: [mixinViewModule],
props: {
patientId: {
type: String,
default: ''
},
doctorList: {
type: Array,
default: () => []
},
tabTitle: {
type: String,
default: ''
}
},
data() {
return {
tableHeight: '',
brandList: [],
arrivalNoticeVisible: false,
removeLensReturnGoodsVisible: false,
mixinViewModuleOptions: {
getDataListURL: '/dp/getOKList',
deleteURL: '/dp'
},
dataForm: {
patientId: this.patientId,
isInvisible: this.tabTitle === 'okLens' ? 0 : (this.tabTitle === 'RGP' ? 1 : 2) // 0ok 1RGP 2
},
factoryNumber: ''
}
},
created() {
this.getBrandList()
},
methods: {
init() {
// this.$nextTick(() => {
// console.log(this.$('.el-table').offset().top)
// console.log(this.$(document).height())
// this.tableHeight = this.$(document).height() - this.$('.el-table').offset().top - 36
// console.log(this.tableHeight)
// })
},
// rowStyle({ row, rowIndex }) {
// console.log(row)
// const stylejson = {}
// if (row.eyeType === 'OD') {
// stylejson.color = 'green'
// } else if (row.eyeType === 'OS') {
// stylejson.color = '#1E79FF'
// }
// return stylejson
// },
//
async getBrandList() {
const { data: res } = await this.$http.get('dp/getBrandList', {
params: {
isInvisible: this.tabTitle === 'okLens' ? 0 : (this.tabTitle === 'RGP' ? 1 : 2) // 0ok 1RGP 2
}
})
this.brandList = res.data
},
//
getRowClass({ row, rowIndex }) {
if (row.status === 7 || row.status === 8) {
return 'row-expand-cover'
} else {
return ''
}
},
//
handleCommandDropdowm(id, scopeRow, e) {
console.log(id, scopeRow, e)
if (e === '编辑') {
this.addOrUpdateHandle(id, scopeRow, e)
} else if (e === '退货') {
this.removeLensReturnGoodsClick(id, scopeRow, e)
} else if (e === '删除') {
this.deleteHandle(id)
}
},
// -
arrivalNotiveClick(dpId, params, title) {
this.arrivalNoticeVisible = true
this.$nextTick(() => {
this.$refs.arrivalNoticeOrUpdate.dataForm.dpId = dpId
this.$refs.arrivalNoticeOrUpdate.dataForm.title = title
this.$refs.arrivalNoticeOrUpdate.params = params
this.$refs.arrivalNoticeOrUpdate.init()
})
},
// -退-
removeLensReturnGoodsClick(dpId, params, title) {
this.removeLensReturnGoodsVisible = true
this.factoryNumber = params.factoryNumber
this.$nextTick(() => {
this.$refs.removeLensReturnGoodsOrUpdate.dataForm.dpId = dpId
this.$refs.removeLensReturnGoodsOrUpdate.dataForm.title = title
this.$refs.removeLensReturnGoodsOrUpdate.init()
})
}
}
}
</script>
<style lang="scss" scoped>
.okLens {
.description-content,.table-colum-content {
span {
display: inline-block;
padding-right: 8px;
}
}
.take-mirror {
color:#1890ff;
cursor: pointer;
}
.repair-title,
.change-title {
display: inline-block;
vertical-align: middle;
padding-left: 6px;
}
.circle-status {
width: 6px;
height: 6px;
border-radius: 50%;
margin-right: 5px;
display: inline-block;
}
.not-start {
background-color: #1890ff;
}
.not-started {
background-color: #FAAD14
;
}
.goed {
background: #52c41a;
}
.give-up {
background-color: #FF4D4F;
}
.blue {
background: #14b1fa;
}
.patch {
background-color: #bfbfbf;
}
.step-desc {
.content {
color: #b8b8b8;
}
}
.operation-details {
cursor: pointer;
color:#1890ff;
padding-right: 8px;
}
}
</style>
<style lang="scss">
.okLens {
.el-table::before {
height: 0;
}
.el-timeline-item__node--normal {
border: 3px solid #1890ff;
}
.row-expand-cover .el-table__expand-column .el-icon{
visibility:hidden;
}
.el-step.is-center .el-step__line {
left: 55%;
right: -45%;
}
.el-step__icon-inner {
display: none;
}
.el-step__icon.is-text {
border: none;
width: 8px;
height: 8px;
}
//
.el-step__head.is-finish .el-step__icon.is-text {
background: #409eff;
}
//
.el-step__head.is-error .el-step__icon.is-text {
background: #F56C6C;
}
.el-step__head.is-success .el-step__icon.is-text {
background: #67C23A;
}
.el-step__head.is-wait .el-step__icon.is-text {
background: #b8b8b8;
}
.el-step__head.is-process,.el-step__title.is-process {
color: #b8b8b8;
}
.el-step__description.is-process {
color: #b8b8b8;
}
.el-step__head.is-process .el-step__icon.is-text {
background: #b8b8b8;
}
.el-steps--horizontal {
.el-step.is-horizontal:last-child {
flex-basis: 30% !important;
}
}
}
</style>

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

@ -0,0 +1,241 @@
<template>
<el-form ref="dataForm" :model="dataForm" :rules="dataRule">
<el-form-item v-if="title.includes('编辑')" label="眼 别:" label-width="90px" prop="eyeType">
<el-select v-model="dataForm.eyeType" placeholder="请选择眼别" clearable>
<el-option label="右眼" value="OD" />
<el-option label="左眼" value="OS" />
</el-select>
</el-form-item>
<el-form-item v-if="title=='换片'" label="目标镜片:" label-width="90px" 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-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-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-input v-model="dataForm.baseArc" placeholder="请填写基弧" />
</el-form-item>
<el-form-item label="度 数:" :label-width="title=='新增' ? '60px' : '90px'" 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-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-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-input v-model="dataForm.rzd" placeholder="请填写RZD" />
</el-form-item>
<el-form-item label="LZA:" :label-width="title=='新增' ? '60px' : '90px'" 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-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-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-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-input v-model="dataForm.remark" type="textarea" placeholder="备注信息" />
</el-form-item>
</el-form>
</template>
<script>
export default {
props: {
brandList: {
type: Array,
default: () => []
},
eyeType: {
type: String,
default: ''
},
title: {
type: String,
default: ''
},
patientIdNumber: {
type: String,
default: ''
},
tabTitle: {
type: String,
default: ''
}
},
data() {
return {
brandCOlorList: {},
replaceList: [],
dataForm: {
eyeType: '',
oldDpId: '',
brandId: '',
curvity: '',
baseArc: '',
degrees: '',
azt: '',
bc: '',
rzd: '',
lza: '',
diameter: '',
colourId: '',
returnDate: '',
remark: '',
status: ''
},
ISCRTForm: '0',
validateFlag: false
}
},
computed: {
dataRule() {
return {
oldDpId: [
{ required: true, message: '请选择目标镜片', trigger: 'change' }
],
eyeType: [
{ required: true, message: '请选择眼别', trigger: 'change' }
],
brandId: [
{ required: true, message: '请选择品牌', trigger: 'change' }
],
curvity: [
{ required: true, message: '请选择屈率', trigger: 'blur' }
],
baseArc: [
{ required: true, message: '请选择基弧', trigger: 'blur' }
],
degrees: [
{ required: true, message: '请选择度数', trigger: 'change' }
],
azt: [
{ required: true, message: '请选择AZT', trigger: 'change' }
],
bc: [
{ required: true, message: '请选择BC', trigger: 'blur' }
],
rzd: [
{ required: true, message: '请选择RZD', trigger: 'change' }
],
lza: [
{ required: true, message: '请选择LZA', trigger: 'blur' }
],
diameter: [
{ required: true, message: '请选择直径', trigger: 'blur' }
],
colourId: [
{ required: true, message: '请选择颜色', trigger: 'change' }
]
}
}
},
created() {
},
methods: {
//
async getReplaceList() {
const { data: res } = await this.$http.get('/dp/getReplaceList', {
params: {
patientIdNumber: this.patientIdNumber,
drgsName: window.localStorage.getItem('identity'),
eyeType: this.dataForm.eyeType,
isInvisible: this.tabTitle === 'okLens' ? 0 : (this.tabTitle === 'RGP' ? 1 : 2) // 0ok 1RGP 2
}
})
this.replaceList = res.data
},
leftRightInit() {
this.$nextTick(() => {
this.ISCRTForm = '0'
this.$refs.dataForm.resetFields() //
console.log(this.eyeType)
this.dataForm.eyeType = this.title === '新增' || this.title === '借片' || this.title === '换片' || this.title === '补录' ? this.eyeType : ''
this.dataForm.status = this.tabTitle === 'LJRJ' ? 4 : ''
if (this.title === '换片') {
//
this.getReplaceList()
}
})
this.dataForm.oldDpId = ''
},
colorChange(e) {
console.log(e)
console.log(this.brandCOlorList)
},
//
selectOptionBrandHandle(item) {
console.log('选择品牌变化', item)
this.ISCRTForm = item.flag
this.dataForm.brand = item.brand
this.getBrandColorList(item, item.id)
},
//
selectOptionColorHandle(item) {
console.log(item)
this.dataForm.colour = item.colour
},
//
async getBrandColorList(item, brandId, title) {
const { data: res } = await this.$http.get('/dp/getBrandColourList', {
params: {
brandId: brandId
}
})
this.brandCOlorList = res.data
console.log(res.data)
if (title !== '编辑') {
this.dataForm.colourId = this.dataForm.eyeType === 'OD' ? res.data.odDefault.id : res.data.osDefault.id
}
},
//
validateFun() {
const dataForm = this.dataForm
// flag=1
const ImportCRTFlag1 = dataForm.bc || dataForm.lza || dataForm.rzd || dataForm.brandId || dataForm.colourId || dataForm.diameter
// flag=0
const chinaFlag0 = dataForm.brandId || dataForm.colourId || dataForm.curvity || dataForm.degrees || dataForm.diameter
// flag=2
const chinaFlag2 = dataForm.brandId || dataForm.colourId || dataForm.curvity || dataForm.degrees || dataForm.diameter || dataForm.atz
// flag=1 || flag=0 || flag=2
if ((this.ISCRTForm === '1' && ImportCRTFlag1) || (this.ISCRTForm === '0' && chinaFlag0) || (this.ISCRTForm === '2' && chinaFlag2)) {
this.$refs.dataForm.validate((valid) => {
if (!valid) {
this.validateFlag = false
return false
} else {
this.validateFlag = true
}
})
}
// flag=1 || flag=0 || flag=2
else if ((this.ISCRTForm === '1' && !ImportCRTFlag1) || (this.ISCRTForm === '0' && !chinaFlag0) || (this.ISCRTForm === '2' && !chinaFlag2)) {
this.validateFlag = false
}
}
}
}
</script>

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

@ -0,0 +1,269 @@
<template>
<el-dialog
class="oklens-removeLens-returnGoods"
:visible.sync="visible"
:close-on-click-modal="false"
width="30%"
:title="dataForm.title"
append-to-body
@close="closeDialog"
>
<div class="info">
<div class="orderDate">
<span class="info-left">订片日期</span>
<span class="info-right">{{ dataForm.dpDate }}</span>
</div>
<div class="orderInfo">
<span class="info-left">订片信息</span>
<div class="info-right">
<p>品牌{{ dataForm.brand }}</p>
<p>眼别{{ dataForm.eyeType }}</p>
<p v-show="dataForm.curvity">曲率{{ dataForm.curvity }}</p>
<p v-show="dataForm.degrees">度数{{ dataForm.degrees }}</p>
<p v-show="dataForm.azt">AZT{{ dataForm.azt }}</p>
<p v-show="dataForm.bc">BC{{ dataForm.bc }}</p>
<p v-show="dataForm.rzd">RZD{{ dataForm.rzd }}</p>
<p v-show="dataForm.lza">LZA{{ dataForm.lza }}</p>
<p v-show="dataForm.diameter">直径{{ dataForm.diameter }}</p>
<p>颜色{{ dataForm.colour }}</p>
</div>
</div>
<template v-if="dataForm.title=='取镜记录'">
<div class="removeLensDate">
<span class="info-left">取镜日期</span>
<span class="info-right">{{ dataForm.takeAwayDate }}</span>
</div>
<div class="factoryNumber">
<span class="info-left">出厂编号</span>
<span class="info-right">{{ dataForm.factoryNumber }}</span>
</div>
<div class="remarks">
<span class="info-left">备注</span>
<div class="info-right">{{ dataForm.remark }}</div>
</div>
<div class="sign">
<span class="info-left">取镜签字</span>
<img style="width: 80px;height: 40px;" :src="dataForm.signFile">
</div>
</template>
</div>
<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-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-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-input v-model="dataForm.factoryNumber" placeholder="核对并填写出厂编号" />
</el-form-item>
<el-form-item label="备 注:" label-width="90px" prop="remark">
<el-input v-model="dataForm.remark" type="textarea" placeholder="备注信息" />
</el-form-item>
</el-form>
</template>
<template v-if="dataForm.title=='取镜'">
<div class="signFile">
<span class="info-left">取镜签名</span>
<div class="signFile-right" @click="signClick">
<el-button v-if="lensFlag" type="primary" icon="el-icon-edit" size="small">签名</el-button>
<span v-else class="sign-img">
<img style="width: 80px;height: 40px;" :src="lensSign">
</span>
<span />
</div>
</div>
</template>
<template slot="footer">
<el-button @click="visible = false">{{ $t('cancel') }}</el-button>
<el-button type="primary" @click="dataFormSubmitHandle()">{{ $t('confirm') }}</el-button>
</template>
</el-dialog>
</template>
<script>
import debounce from 'lodash/debounce'
export default {
props: {
brandList: {
type: Array,
default: () => []
},
fatherFactoryNumber: {
type: String,
default: ''
}
},
data() {
return {
visible: false,
dataForm: {
status: '4',
shareDate: '',
factoryNumber: '',
signFile: '',
remark: ''
},
ISCRTForm: false
}
},
computed: {
dataRule() {
// var validataFactoryNumber = (rule, value, callback) => {
// if (value !== this.dataForm.factoryNumbered) {
// return callback(new Error(''))
// }
// callback()
// }
return {
shareDate: [
{ required: true, message: '请选择日期', trigger: 'change' }
]
// factoryNumber: [
// { required: true, validator: validataFactoryNumber, trigger: 'blur' }
// ]
}
},
lensFlag: {
get() {
return this.$store.getters.lensFlag
},
set(val) {}
},
lensSign: {
get() {
return this.$store.getters.lensSign
},
set(val) {
}
}
},
methods: {
init() {
this.visible = true
if (this.dataForm.title !== '取镜记录') {
this.$nextTick(() => {
this.$store.commit('lensSign', '')
this.$store.commit('lensFlag', true)
this.$refs.dataForm.resetFields() //
})
}
this.getTaskAwayLogHandle()
},
//
async getTaskAwayLogHandle() {
const { data: res } = await this.$http.get('/dp/getTaskAwayLog', {
params: {
dpId: this.dataForm.dpId
}
})
this.dataForm = {
...this.dataForm,
...res.data
}
res.data.factoryNumber ? '' : this.dataForm.factoryNumber = this.fatherFactoryNumber
if (this.dataForm.title === '退货') {
this.dataForm.remark = ''
}
},
signClick() {
// this.$parent.$parent.$parent.$parent.beginSign(2)
this.$store.commit('beginSign', 5)
},
// 320321188808123330 18888888888
dataFormSubmitHandle: debounce(function() {
this.dataForm.signFile = this.$store.getters.lensSign
if (this.dataForm.title !== '取镜记录') {
this.$refs.dataForm.validate((valid) => {
if (!valid) {
return false
}
// if (this.dataForm.title === '' && !this.dataForm.signFile) {
// this.$message.error('')
// return false
// }
// /退
this.$http.post(this.dataForm.title === '取镜' ? '/dp/takeAway' : '/dp/returnDp', 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('getDataList')
}
})
}).catch(() => {})
})
} else {
this.visible = false
}
}, 1000, { leading: true, trailing: false }),
//
closeDialog() {
this.$emit('closeDialog')
}
}
}
</script>
<style lang="scss" scoped>
.oklens-removeLens-returnGoods {
.sign-img {
width: 78px;
height: 36px;
overflow: hidden;
display: flex;
justify-content: center;
align-items: center;
}
.info {
margin-left: 16px;
margin-bottom: 16px;
font-size: 14px;
line-height: 32px;
}
.orderInfo,.removeLensDate,.factoryNumber,.remarks,.signFile {
display: flex;
line-height: 32px;
align-items: center;
}
.info-left {
display: inline-block;
width: 80px;
text-align: right;
padding-right: 6px;
}
}
</style>
<style lang="scss">
.oklens-removeLens-returnGoods {
.el-dialog__header {
margin-bottom:12px
}
.el-dialog__body {
padding-right: 30px;
}
.formItemOne .el-form-item__content {
display: flex;
}
.el-date-editor.el-input, .el-date-editor.el-input__inner{
width: 100%;
}
.el-select {
display: block;
}
.el-input-number {
display: block;
width: 100%;
}
}
</style>

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

@ -141,14 +141,10 @@
<script>
export default {
props: {
patientIdNumber: {
type: String,
default: ''
},
patientId: {
type: String,
default: ''
}
},
},
data() {
return {
@ -167,8 +163,7 @@ export default {
glassInfo: '',
doctorAdvice: '',
doctorName: '',
patientIdNumber: this.patientIdNumber,
patientId: this.patientId
patientId: this.patientId,
},
reviewList: []
}
@ -219,15 +214,15 @@ export default {
})
},
getVisitForHis() {
this.$http.get('/return/visit/save', { params: { patientIdNumber: this.patientIdNumber, patientId: this.patientId, returnVisitDate: this.returnDate }}).then(({ data: res }) => {
this.$http.get('/return/visit/save', { params: { patientId: this.patientId, patientId: this.patientId, returnVisitDate: this.returnDate }}).then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg)
}
if (res.data) {
this.$nextTick(() => {
this.dataForm = { ...res.data }
this.dataForm.patientIdNumber = this.patientIdNumber
this.dataForm.patientId = this.patientId
// this.dataForm.patientId = this.patientId
})
} else {
this.$nextTick(() => {
@ -246,8 +241,8 @@ export default {
this.$nextTick(() => {
this.dataForm = { ...row }
this.dataForm.id = row.id
this.dataForm.patientIdNumber = this.patientIdNumber
this.dataForm.patientId = this.patientId
// this.dataForm.patientId = this.patientId
})
},
//
@ -291,7 +286,7 @@ export default {
},
//
getReviewList() {
this.$http.get('/return/visit/getList', { params: { patientIdNumber: this.patientIdNumber }}).then(({ data: res }) => {
this.$http.get('/return/visit/getList', { params: { patientId: this.patientId }}).then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg)
}

175
src/page-subspecialty/views/pages/pacs/drawer.vue

@ -0,0 +1,175 @@
<template>
<div class="drawer">
<div :class="maskClass" @click="closeByMask" />
<div :class="mainClass" :style="mainStyle" class="main">
<div class="drawer-body">
<shrink ref="shrinkTwo" :arrowType="2" @changeType="selectType" @display="closeByButton"/>
<slot/>
</div>
</div>
</div>
</template>
<script>
import shrink from '@/components/360View/shrink'
export default {
components: { shrink },
props: {
//
display: {
type: Boolean
},
//
title: {
type: String,
default: '标题'
},
//
closable: {
type: Boolean,
default: true
},
//
mask: {
type: Boolean,
default: true
},
//
maskClosable: {
type: Boolean,
default: true
},
// ()
width: {
type: String,
default: '400px'
},
//
inner: {
type: Boolean,
default: false
}
},
computed: {
maskClass: function() {
return {
'mask-show': (this.mask && this.display),
'mask-hide': !(this.mask && this.display),
'inner': this.inner
}
},
mainClass: function() {
return {
'main-show': this.display,
'main-hide': !this.display,
'inner': this.inner
}
},
mainStyle: function() {
return {
width: this.width,
right: this.display ? '0' : `-${this.width}`,
borderLeft: this.mask ? 'none' : '1px solid #eee'
}
}
},
mounted() {
if (this.inner) {
const box = this.$el.parentNode
box.style.position = 'relative'
}
},
methods: {
closeByMask() {
this.maskClosable && this.$emit('update:display', false)
},
closeByButton() {
this.$emit('update:display', false)
document.getElementsByClassName('drawer')[0].style.display = 'none'
},
// shark
selectType(type) {
this.$parent.dataType = type
},
selectShrink() {
this.$refs.shrinkTwo.active = 'imgOne'
},
init() {
}
}
}
</script>
<style lang="scss" scoped>
.drawer {
width: auto;
height: 100%;
/* 遮罩 */
.mask-show {
//position: fixed;
//top: 0;
//left: 0;
//width: 100%;
//height: 100%;
//z-index: 999;
//background-color: rgba(0,0,0,.5);
//opacity: 1;
//transition: opacity .5s;
}
.mask-hide {
opacity: 0;
transition: opacity .5s;
}
/* 滑块 */
.main {
position: fixed;
z-index: 999;
top: 60px;
height: calc(100% - 70px);
background: #fff;
transition: all 0.5s;
}
.main-show {
opacity: 1;
}
.main-hide {
opacity: 0;
}
/* 某个元素内部显示 */
.inner {
position: absolute;
}
/* 其他样式 */
.drawer-head {
display: flex;
justify-content: space-between;
height: 45px;
line-height: 45px;
padding: 0 15px;
font-size: 14px;
font-weight: bold;
border-bottom: 1px solid #eee;
.close-btn {
display: inline-block;
cursor: pointer;
height: 100%;
padding-left: 20px;
}
}
.drawer-body {
display: flex;
height: 100%;
font-size: 14px;
}
}
</style>

1735
src/page-subspecialty/views/pages/pacs/img-record.vue

File diff suppressed because it is too large

48
src/page-subspecialty/views/pages/pacs/index.vue

@ -0,0 +1,48 @@
<template>
<div class="detail-view">
<imgRecord v-if="imgFlag" :patient-info="patientBaseData" :exam-info="info"/>
</div>
</template>
<script>
import imgRecord from './img-record'
export default {
components: {
imgRecord
},
data() {
return {
imgFlag: false,
info: {},
patientBaseData: {}
}
},
mounted() {
this.info = JSON.parse(this.$Base64.decode(this.$route.query.info))
this.getPatientData()
},
methods: {
// id
async getPatientData() {
if (!this.info.patientId) return
const { data: res } = await this.$http.get(
'/patient/view/getPatientData',
{
params: {
patientId: this.info.patientId
}
}
)
if (res.code === 0) {
this.patientBaseData = res.data ? res.data : {}
this.imgFlag = true
} else {
this.$message.error(res.msg)
}
}
}
}
</script>
<style lang="scss" scoped>
</style>

284
src/page-subspecialty/views/pages/pacs/show-file.vue

@ -0,0 +1,284 @@
<template>
<div id="fileId" v-resize="handleResize" class="container" file-solt-id="fileId">
<div v-if="fileType == 'PDF' && instanceList.length > 1" style="margin: 2px">
<el-pagination simple :current-page="curIndex" :total="instanceList.length" defaultPageSize="1" @current-change="handleCurrentChange" />
</div>
<iframe v-if="fileType == 'PDF'" :src="pdfUrl + '#view=FitH,top&pagemode=thumbs'" frameborder="0" style="width: 100%; height: 100%"></iframe>
<div v-if="fileType == 'DCM'" class="dicom" ref="dicomElement"></div>
<div v-if="fileType == 'JPG'" style="width: 100%;height: 100%" class="dicom" ref="dicomElement"></div>
<!-- <iframe v-if="curFile.fileType == 'PDF'" :src="curFile.filePath + '#view=FitH,top&pagemode=thumbs'" frameborder="0" style="width: 100%; height: 100%" />-->
<!-- <div v-if="curFile.fileType == 'DCM'" ref="dicomElement" class="dicom" />-->
<!-- <div v-if="curFile.fileType == 'JPG' || curFile.fileType == 'PNG'" ref="imgElement" class="dicom" />-->
</div>
</template>
<script>
export default {
directives: { // 使
resize: { //
bind(el, binding) { // elbinding
let width = ''; let height = ''
function isReize() {
const style = document.defaultView.getComputedStyle(el)
if (width !== style.width || height !== style.height) {
binding.value()
}
width = style.width
height = style.height
}
el.__vueSetInterval__ = setInterval(isReize, 300)
},
unbind(el) {
clearInterval(el.__vueSetInterval__)
}
}
},
props: ['fileObject'],
data() {
return {
curFile: this.fileObject,
curElement: '',
fileType: '',
viewportDefault: '',
zoomValue: '',
wwwcValue: '',
renderTime: '',
pdfUrl: '',
curIndex: 1,
total: 1,
childrenList: [],
instanceList: []
}
},
watch: {
fileObject(val) {
this.curFile = val
}
},
created() {
this.instanceList = this.fileObject.instanceList || []
this.fileType = this.instanceList.length ? this.instanceList[0].imageType : ''
},
mounted() {
this.initData()
},
methods: {
handleCurrentChange (val) {
console.log(val)
this.pdfUrl = this.instanceList[val - 1].imageId
},
// DICM
drawCornerStone(imageUrl, type) {
const self = this
let element = ''
let imageId = ''
if (type === 'DCM') {
element = this.$refs.dicomElement
imageId = 'wadouri:' + imageUrl// dicom'wadouri:'
} else {
element = this.$refs.dicomElement
imageId = imageUrl
}
this.$cornerstoneTools.init()
this.$cornerstone.enable(element)
element.width = document.documentElement.clientWidth
element.height = document.documentElement.clientHeight
this.$cornerstone.loadImage(imageId).then(function (image) {
if (type === 'DCM') {
const viewport = self.$cornerstone.getDefaultViewportForImage(element, image)
self.viewportDefault = viewport
self.$cornerstone.displayImage(element, image, viewport)
} else {
self.$cornerstone.displayImage(element, image)
}
})
element.addEventListener('cornerstoneimagerendered', this.getZoomRate)//
// let imageId = ''
// const self = this
// if (type === 'DCM') {
// imageId = 'wadouri:' + imageUrl // dicom'wadouri:'
// } else {
// imageId = imageUrl
// }
// this.$cornerstoneTools.init()
// this.$cornerstone.enable(this.curElement)
// this.curElement.width = document.documentElement.clientWidth
// this.curElement.height = document.documentElement.clientHeight
// this.$cornerstone.loadImage(imageId).then(function(image) {
// //
// const viewport = self.$cornerstone.getDefaultViewportForImage(self.curElement, image)
// self.viewportDefault = viewport
// if (type === 'DCM') {
// self.$cornerstone.displayImage(self.curElement, image, viewport)
// } else {
// self.$cornerstone.displayImage(self.curElement, image)
// }
// })
},
//
handleResize() {
const canvas = document.getElementById('fileId')
if (this.curElement && canvas) {
this.curElement.style.width = canvas.offsetWidth + 'px'
this.curElement.style.height = canvas.offsetHeight + 'px'
this.$cornerstone.resize(this.curElement)
}
},
//
setWwwl() {
const WwwcTool = this.$cornerstoneTools.WwwcTool
this.$cornerstoneTools.addTool(WwwcTool)
this.$cornerstoneTools.setToolActive('Wwwc', { mouseButtonMask: 1 })
this.$forceUpdate()
},
//
setInvert() {
if (!this.curElement) return
this.viewportDefault.invert = !this.viewportDefault.invert
this.$cornerstone.setViewport(this.curElement, this.viewportDefault)
},
//
setZoom() {
const ZoomTool = this.$cornerstoneTools.ZoomTool
this.$cornerstoneTools.addTool(ZoomTool, {
configuration: {
invert: false,
preventZoomOutsideImage: false,
minScale: 0.1,
maxScale: 20.0
}
})
this.$cornerstoneTools.setToolActive('Zoom', { mouseButtonMask: 1 })
},
//
setMove() {
const PanTool = this.$cornerstoneTools.PanTool
this.$cornerstoneTools.addTool(PanTool)
this.$cornerstoneTools.setToolActive('Pan', { mouseButtonMask: 1 })
},
//
setMagnify() {
const MagnifyTool = this.$cornerstoneTools.MagnifyTool
this.$cornerstoneTools.addTool(MagnifyTool)
this.$cornerstoneTools.setToolActive('Magnify', { mouseButtonMask: 1 })
},
//
setReset() {
if (!this.curElement) return
this.$cornerstone.reset(this.curElement)
},
setScroll() {
const self = this
const element = this.$refs.dicomElement
if (!element) return
this.$cornerstoneTools.init()
this.$cornerstone.enable(element)
const s = document.getElementById('fileId')
element.width = s.clientWidth
element.height = s.clientHeight
const series = this.childrenList
let imageIds = ''
if (this.fileType === 'DCM') {
const scheme = 'wadouri'
imageIds = series.map(seriesImage => `${scheme}:${seriesImage.imageId}`)
} else {
imageIds = series.map(seriesImage => `${seriesImage.imageId}`)
}
const StackScrollTool = this.$cornerstoneTools.StackScrollTool
this.total = imageIds.length
const stack = {
currentImageIdIndex: 0,
imageIds
}
// load images and set the stack
// loadAndCacheImage
this.$cornerstone.loadImage(imageIds[0]).then((image) => {
const viewport = this.$cornerstone.getDefaultViewportForImage(element, image)
self.viewportDefault = viewport
this.$cornerstone.displayImage(element, image, viewport)
this.$cornerstoneTools.addStackStateManager(element, ['stack'])
this.$cornerstoneTools.addToolState(element, 'stack', stack)
})
this.$cornerstoneTools.addTool(StackScrollTool)
this.$cornerstoneTools.setToolActive('StackScroll', { mouseButtonMask: 1 })
element.addEventListener('cornerstoneimagerendered', this.getZoomRate)//
},
// ///
getZoomRate(e) {
if (!this.curElement) return
const contextData = e.detail
const viewport = this.$cornerstone.getViewport(this.curElement)
const dcmaxTools = this.$cornerstoneTools.getToolState(this.curElement, 'stack')
this.zoomValue = viewport.scale.toFixed(2)
this.wwwcValue = Math.round(viewport.voi.windowWidth) + '/' + Math.round(viewport.voi.windowCenter)
this.renderTime = contextData.renderTimeInMs.toFixed(2)
if (dcmaxTools && dcmaxTools.data && dcmaxTools.data.length) {
this.curIndex = dcmaxTools.data[0].currentImageIdIndex + 1
}
},
initData() {
if (this.instanceList.length === 1 && this.fileType === 'DCM') {
this.curElement = this.$refs.imgElement
const imageUrl = this.instanceList[0].imageId
this.drawCornerStone(imageUrl, 'DCM')
this.handleResize()
} else if (this.instanceList.length === 1 && (this.fileType === 'JPG' || this.fileType === 'PNG')) {
this.curElement = this.$refs.imgElement
const imageUrl = this.instanceList[0].imageId
this.drawCornerStone(imageUrl, 'JPG')
this.handleResize()
} else if (this.instanceList.length > 1 && (this.fileType === 'JPG' || this.fileType === 'PNG')) {
this.curElement = this.$refs.imgElement
this.childrenList = this.instanceList
this.setScroll()
this.handleResize()
} else if (this.instanceList.length > 1 && this.fileType === 'DCM') {
console.log('序列', this.instanceList)
this.curElement = this.$refs.dicomElement
this.childrenList = this.instanceList
this.setScroll()
this.handleResize()
} else if (this.fileType === 'PDF') {
console.log('pdf')
this.pdfUrl = this.instanceList[0].imageId
this.total = this.instanceList.length
}
// if (this.curFile && this.curFile.fileType === 'DCM') {
// this.curElement = this.$refs.dicomElement
// const imageUrl = this.curFile.filePath
// this.drawCornerStone(imageUrl, 'DCM')
// // cornerstoneCornerstoneImageRendered
// this.curElement.addEventListener('cornerstoneimagerendered', this.getZoomRate)//
// } else if (this.curFile && (this.curFile.fileType === 'JPG' || this.curFile.fileType === 'PNG')) {
// const imageUrl = this.curFile.filePath
// this.curElement = this.$refs.imgElement
// this.drawCornerStone(imageUrl, 'JPG')
// this.curElement.addEventListener('cornerstoneimagerendered', this.getZoomRate)//
// }
}
}
}
</script>
<style lang="scss" scoped>
.container {
color: #FFFFFF;
width: 100%;
height: 100%;
overflow: hidden;
text-align: center;
.dicom{
width: 100% !important;
height: 100% !important;
}
}
</style>
<style lang="scss">
.container{
.cornerstone-canvas{
width: 100%;
}
}
</style>

34
src/page-subspecialty/views/pages/pacsManage/index.vue

@ -149,8 +149,6 @@ export default {
page: 1,
limit: 10,
total: 0,
// patientId: '2328656',
// patientId: '2553716',
patientId: '',
patientName: '', //
userName: '', //
@ -226,7 +224,6 @@ export default {
},
mounted() {
this.userName = window.localStorage.getItem('userName')
// this.getPatientData()
this.queryPatientList()
},
methods: {
@ -242,6 +239,12 @@ export default {
this.startDate = null
this.endDate = null
},
//
handleClickRow(record) {
console.log(record)
this.patientId = record.id
this.getPatientData()
},
// id--
async getPatientData() {
const { data: res } = await this.$http.get(
@ -254,6 +257,7 @@ export default {
)
if (res.code === 0) {
this.patientBaseData = res.data ? res.data : {}
this.isActive = true
} else {
this.$message.error(res.msg)
}
@ -332,28 +336,7 @@ export default {
const url = `${api.interfaceConfig.downLoad}?patientId=${this.patientId}&token=${token}`
window.location.href = url
},
//
handleClickRow(record, index) {
console.log(record)
this.patientId = record.id
this.getPatientData()
// this.patientBaseData = record
this.isActive = true
// return {
// on: {
// click: () => {
// console.log(record)
// // window.localStorage.setItem('patientId', '88163664')
// window.localStorage.setItem('patientId', '2553716')
// // window.localStorage.setItem('patientId', record.id)
// window.localStorage.setItem('name', record.name)
// window.localStorage.setItem('age', record.age)
// window.localStorage.setItem('sex', record.sex)
// this.$router.push({ name: 'patientDetail' })
// }
// }
// }
},
// 360
closePacs() {
this.isActive = false
@ -390,7 +373,6 @@ export default {
if (res.code === 0) {
this.patientList = res.data ? res.data.list : []
this.total = res.data ? res.data.total : 0
console.log(this.patientList)
} else {
this.$message.error(res.msg)
}

Loading…
Cancel
Save