8 changed files with 424 additions and 87 deletions
@ -0,0 +1,56 @@ |
|||
<template> |
|||
<div> |
|||
<el-button type="text" @click="isShow = true">点击打开 Dialog</el-button> |
|||
<el-button type="text" @click="ubmShow = true">UBM预约</el-button> |
|||
<el-button type="text" @click="addShow = true">新增</el-button> |
|||
<el-button type="text" @click="listShow = true">预约患者列表</el-button> |
|||
<el-button type="text" @click="numberShow = true">号源管理</el-button> |
|||
<re-dialog :is-show="isShow" @close="closeDialog1" /> |
|||
<u-b-m-order :is-show="ubmShow" @close="closeDialog2" /> |
|||
<add-project :is-show="addShow" @close="closeDialog3" /> |
|||
<order-patient-list :is-show="listShow" @addOrder="addOrder" @close="closeDialog4" /> |
|||
<number-manage :is-show="numberShow" @close="closeDialog5" /> |
|||
</div> |
|||
</template> |
|||
|
|||
<script> |
|||
import ReDialog from '@/page-subspecialty/views/modules/nurseManagement/reDialog.vue' |
|||
import UBMOrder from '@/page-subspecialty/views/modules/nurseManagement/UBMOrder.vue' |
|||
import AddProject from '@/page-subspecialty/views/modules/nurseManagement/addProject.vue' |
|||
import OrderPatientList from '@/page-subspecialty/views/modules/nurseManagement/orderPatientList.vue' |
|||
import NumberManage from '@/page-subspecialty/views/modules/nurseManagement/numberManage.vue' |
|||
|
|||
export default { |
|||
name: 'NurseManagement', |
|||
components: { NumberManage, OrderPatientList, AddProject, UBMOrder, ReDialog }, |
|||
data() { |
|||
return { |
|||
isShow: false, |
|||
ubmShow: false, // ubm弹框 |
|||
addShow: false, |
|||
listShow: false, |
|||
numberShow: false |
|||
} |
|||
}, |
|||
methods: { |
|||
addOrder() { |
|||
this.ubmShow = true |
|||
}, |
|||
closeDialog1(val) { |
|||
this.isShow = val |
|||
}, closeDialog2(val) { |
|||
this.ubmShow = val |
|||
}, closeDialog3(val) { |
|||
this.addShow = val |
|||
}, closeDialog4(val) { |
|||
this.listShow = val |
|||
}, closeDialog5(val) { |
|||
this.numberShow = val |
|||
} |
|||
} |
|||
} |
|||
</script> |
|||
|
|||
<style scoped> |
|||
|
|||
</style> |
@ -0,0 +1,357 @@ |
|||
<template> |
|||
<!-- 一已约患者列表 --> |
|||
<div class="scheduled-patient"> |
|||
<div class="scheduled-patient-head"> |
|||
<el-select v-model="searchType" placeholder="请选择" size="small" @change="getDataListInitial"> |
|||
<el-option |
|||
v-for="item in options" |
|||
:key="item.value" |
|||
:label="item.label" |
|||
:value="item.value" |
|||
/> |
|||
</el-select> |
|||
<el-select v-model="project" style="margin-left: 15px" placeholder="请选择" size="small" @change="getDataListInitial"> |
|||
<el-option |
|||
v-for="item in projects" |
|||
:key="item.value" |
|||
:label="item.label" |
|||
:value="item.value" |
|||
/> |
|||
</el-select> |
|||
</div> |
|||
<div class="scheduled-patient-content"> |
|||
<el-table |
|||
ref="multipleTable" |
|||
:data="dataList" |
|||
tooltip-effect="dark" |
|||
style="width: 100%" |
|||
:cell-class-name="tableCellClassName" |
|||
@sort-change="sortChange" |
|||
@row-dblclick="dbclick" |
|||
> |
|||
<el-table-column type="selection" width="50px" /> |
|||
<el-table-column prop="patientId" label="登记号" header-align="center" align="center" width="150px" /> |
|||
<el-table-column prop="caseId" label="就诊号" header-align="center" align="center" width="150px" /> |
|||
<el-table-column prop="patientName" label="患者姓名" header-align="center" align="center" width="150px" /> |
|||
<el-table-column label="负责医生" header-align="center" align="center" width="150px"> |
|||
<template slot-scope="scope"> |
|||
{{ scope.row.mainDoctorName ? scope.row.mainDoctorName : '-' }} |
|||
</template> |
|||
</el-table-column> |
|||
<el-table-column label="预约时间" header-align="center" align="center" sortable="OPERA_DATE"> |
|||
<template slot-scope="scope"> |
|||
{{ scope.row.orderTime ? scope.row.orderTime : '-' }} |
|||
</template> |
|||
</el-table-column> |
|||
<el-table-column label="检查项目" prop="project" header-align="center" align="center"> |
|||
<template slot-scope="scope"> |
|||
<div v-if="scope.row.ouOpera">OU:{{ scope.row.ouOpera }}</div> |
|||
<div v-if="scope.row.odOpera">OD:{{ scope.row.odOpera }}</div> |
|||
<div v-if="scope.row.osOpera">OS:{{ scope.row.osOpera }}</div> |
|||
</template> |
|||
</el-table-column> |
|||
<el-table-column label="眼别" prop="eyeLevel" header-align="center" align="center"> |
|||
<template slot-scope="scope"> |
|||
<div v-show="scope.row.operaStatus == 0"> |
|||
<span class="circle-status circle-green" /> |
|||
<span>等待签到</span> |
|||
</div> |
|||
<div v-show="scope.row.operaStatus == 1"> |
|||
<span class="circle-status circle-green" /> |
|||
<span>等待呼叫</span> |
|||
</div> |
|||
<div v-show="scope.row.operaStatus == 2"> |
|||
<span class="circle-status circle-red" /> |
|||
<span>呼叫中</span> |
|||
</div> |
|||
<div v-show="scope.row.operaStatus == 3"> |
|||
<span class="circle-status circle-yellow" /> |
|||
<span>手术中</span> |
|||
</div> |
|||
<div v-show="scope.row.operaStatus == 4"> |
|||
<span class="circle-status circle-grey" /> |
|||
<span>手术结束</span> |
|||
</div> |
|||
<div v-show="scope.row.operaStatus == 100"> |
|||
<span class="circle-status circle-grey" /> |
|||
<span>已取消</span> |
|||
</div> |
|||
</template> |
|||
</el-table-column> |
|||
<el-table-column label="操作" header-align="center" align="center" width="200px"> |
|||
<template slot-scope="scope"> |
|||
<span v-if="scope.row.operaStatus === 0" class="call" @click="editOpera(scope.row)">修改</span> |
|||
<span v-if="scope.row.operaStatus === 0" class="call" @click="cancelClick(scope.row)">取消</span> |
|||
</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> |
|||
</template> |
|||
<script> |
|||
import mixinViewModule from '@/mixins/view-module' |
|||
export default { |
|||
name: 'SubList', |
|||
components: { |
|||
// scheduledOrder |
|||
}, |
|||
mixins: [mixinViewModule], |
|||
data() { |
|||
return { |
|||
mixinViewModuleOptions: { |
|||
getDataListURL: '/opera/getList', |
|||
getDataListIsPage: true, |
|||
createdIsNeed: false |
|||
}, |
|||
scheduledOrderVisible: false, |
|||
nextVisitTime: [], |
|||
dataForm: { |
|||
endTime: '', |
|||
startTime: '', |
|||
status: '', |
|||
doctorCode: '', |
|||
operaName: '', |
|||
patientId: '' |
|||
}, |
|||
options: [ |
|||
{ |
|||
value: '0', |
|||
label: '今天' |
|||
}, { |
|||
value: '1', |
|||
label: '昨天' |
|||
}, { |
|||
value: '2', |
|||
label: '前天' |
|||
}, { |
|||
value: '3', |
|||
label: '近三天' |
|||
}, { |
|||
value: '4', |
|||
label: '近一周' |
|||
}, { |
|||
value: '5', |
|||
label: '近一个月 ' |
|||
}, { |
|||
value: '6', |
|||
label: '近半年 ' |
|||
}, { |
|||
value: '', |
|||
label: '全部' |
|||
}], |
|||
projects: [ |
|||
{ |
|||
value: '0', |
|||
label: '今天' |
|||
}, { |
|||
value: '1', |
|||
label: '昨天' |
|||
}, { |
|||
value: '2', |
|||
label: '前天' |
|||
}, { |
|||
value: '3', |
|||
label: '近三天' |
|||
}, { |
|||
value: '4', |
|||
label: '近一周' |
|||
}, { |
|||
value: '5', |
|||
label: '近一个月 ' |
|||
}, { |
|||
value: '6', |
|||
label: '近半年 ' |
|||
}, { |
|||
value: '', |
|||
label: '全部' |
|||
}], |
|||
searchType: '0', |
|||
project: '0', |
|||
// 0:等待签到 1:等待呼叫,2:呼叫中,3:手术中 4:手术结束 5:已取消 |
|||
statusList: [{ |
|||
status: 0, |
|||
name: '等待签到' |
|||
}, { |
|||
status: 1, |
|||
name: '等待呼叫' |
|||
}, { |
|||
status: 2, |
|||
name: '呼叫中' |
|||
}, { |
|||
status: 3, |
|||
name: '手术中' |
|||
}, { |
|||
status: 4, |
|||
name: '手术结束' |
|||
}, { |
|||
status: 100, |
|||
name: '已取消' |
|||
}], |
|||
doctorList: [], |
|||
operaList: [], |
|||
currentRow: {}, |
|||
today: '', |
|||
// 用一个字符串来保存当前双击的是哪一个单元格 |
|||
currentCell: null |
|||
} |
|||
}, |
|||
created() { |
|||
this.today = this.$moment().format('YYYY-MM-DD') |
|||
this.dataForm.startTime = this.$moment().format('YYYY-MM-DD') |
|||
this.dataForm.endTime = this.$moment().format('YYYY-MM-DD') |
|||
this.nextVisitTime = [this.dataForm.startTime, this.dataForm.endTime] |
|||
this.getDoctorList() |
|||
this.getOperaList() |
|||
this.getDataListInitial() |
|||
}, |
|||
methods: { |
|||
// 日期改变时 |
|||
dateChange(e) { |
|||
this.dataForm.startTime = e ? e[0] : '' |
|||
this.dataForm.endTime = e ? e[1] : '' |
|||
this.getDataListInitial() |
|||
}, |
|||
// 获取手术医生列表 |
|||
async getDoctorList() { |
|||
const { data: res } = await this.$http.get('/sys/user/getDoctorList') |
|||
if (res.code === 0) { |
|||
this.doctorList = res.data |
|||
} else { |
|||
this.$message.error(res.msg) |
|||
} |
|||
}, |
|||
// 获取术士项目列表 |
|||
async getOperaList() { |
|||
const { data: res } = await this.$http.get('/opera/getOperaNameList') |
|||
if (res.code === 0) { |
|||
this.operaList = res.data |
|||
} else { |
|||
this.$message.error(res.msg) |
|||
} |
|||
}, |
|||
// 排序 |
|||
sortChange(e) { |
|||
console.log(e) |
|||
this.order = e.order === 'descending' ? 'desc' : 'asc' |
|||
this.orderField = e.column.sortable |
|||
this.getDataList() |
|||
}, |
|||
// 给单元格绑定横向和竖向的index,这样就能确定是哪一个单元格 |
|||
tableCellClassName({ row, column, rowIndex, columnIndex }) { |
|||
row.index = rowIndex |
|||
column.index = columnIndex |
|||
}, |
|||
// 获得当前双击的单元格的横竖index,然后拼接成一个唯一字符串用于判断,并赋给currentCell |
|||
// 拼接后类似这样:"1,0","1,1", |
|||
dbclick(row, column) { |
|||
this.currentCell = row.index + ',' + column.index |
|||
// 这里必须要setTimeout,因为在点击的时候,input才刚被v-if显示出来,不然拿不到dom |
|||
setTimeout(() => { |
|||
// 双击后自动获得焦点 |
|||
this.$refs[row.index + ',' + column.index].focus() |
|||
}) |
|||
}, |
|||
// 当input失去焦点的时候,隐藏input |
|||
hideInput(scopeRow) { |
|||
this.currentCell = null |
|||
const operaParams = scopeRow |
|||
operaParams.operaTime = scopeRow.operaTime ? scopeRow.operaTime + ':00' : '' |
|||
this.updateOpera(operaParams) |
|||
}, |
|||
async updateOpera(operaParams) { |
|||
const { data: res } = await this.$http.post('/opera/updateOpera', operaParams) |
|||
if (res.code === 0) { |
|||
this.getDataList() |
|||
} else { |
|||
this.$message.error(res.msg) |
|||
} |
|||
}, |
|||
// 修改手术 |
|||
editOpera(scopeRow) { |
|||
this.currentRow = scopeRow |
|||
this.scheduledOrderVisible = true |
|||
this.$nextTick(() => { |
|||
this.$refs.scheduledOrderRef.init() |
|||
this.$refs.scheduledOrderRef.title = '修改预约' |
|||
}) |
|||
}, |
|||
// 取消手术 |
|||
cancelClick(scopeRow) { |
|||
this.$confirmFun('确定要取消此患者手术预约吗?', '已放弃取消操作').then(async() => { |
|||
const { data: res } = await this.$http.post('/opera/cancelStatus', { |
|||
id: scopeRow.id, |
|||
operaStatus: 100 |
|||
}) |
|||
if (res.code === 0) { |
|||
this.getDataList() |
|||
this.$message({ |
|||
message: '取消成功', |
|||
type: 'success' |
|||
}) |
|||
} else { |
|||
this.$message.error(res.msg) |
|||
} |
|||
}) |
|||
} |
|||
} |
|||
} |
|||
</script> |
|||
<style lang="scss" scoped> |
|||
.scheduled-patient { |
|||
background: #fff; |
|||
.scheduled-patient-content { |
|||
padding: 16px; |
|||
margin-bottom: 45px; |
|||
} |
|||
.scheduled-patient-head { |
|||
padding: 10px 16px 0 16px; |
|||
} |
|||
.call { |
|||
cursor: pointer; |
|||
color: #1890ff; |
|||
padding-right: 8px; |
|||
} |
|||
} |
|||
.scheduled-patient { |
|||
.form-item-date{ |
|||
.el-input__inner { |
|||
width: 210px !important; |
|||
} |
|||
} |
|||
.scheduled-patient-head { |
|||
.el-form-item__label { |
|||
text-align: left; |
|||
} |
|||
.el-form { |
|||
display: flex; |
|||
justify-content: space-between; |
|||
} |
|||
.el-form-item { |
|||
display: flex; |
|||
} |
|||
|
|||
.el-form-item { |
|||
margin-bottom: 0; |
|||
width: 35%; |
|||
} |
|||
.el-form-item__content, |
|||
.el-select, |
|||
.el-range-editor--small.el-input__inner { |
|||
width:auto |
|||
} |
|||
} |
|||
.el-select { |
|||
width: 100%; |
|||
} |
|||
.db-input-edit { |
|||
.el-input__inner { |
|||
background: #ccc; |
|||
width: 120px; |
|||
} |
|||
.el-input.is-active .el-input__inner, .el-input__inner:focus { |
|||
border: none; |
|||
} |
|||
} |
|||
} |
|||
</style> |
Loading…
Reference in new issue