Browse Source

列表增加筛选条件

360view
bianyaqi 2 years ago
parent
commit
ef97b5fe62
  1. 2
      package.json
  2. 4
      public/index.html
  3. 202
      src/page-subspecialty/views/modules/nurseManagement/reservation/schedule/add-schedule.vue
  4. 18
      src/page-subspecialty/views/modules/nurseManagement/reservation/schedule/doctor-schedule.vue
  5. 119
      src/page-subspecialty/views/modules/nurseManagement/reservation/schedule/edit-operation.vue
  6. 153
      src/page-subspecialty/views/modules/nurseManagement/reservation/schedule/operation-detail.vue
  7. 266
      src/page-subspecialty/views/modules/nurseManagement/reservation/schedule/setOperaTime.vue
  8. 33
      src/page-subspecialty/views/modules/nurseManagement/reservation/subList/index.vue

2
package.json

@ -83,7 +83,7 @@
"babel-plugin-dynamic-import-node": "2.3.3",
"babel-plugin-transform-remove-console": "^6.9.4",
"copy-webpack-plugin": "^6.4.1",
"eslint": "^8.39.0",
"eslint": "6.7.2",
"eslint-plugin-import": "^2.22.0",
"eslint-plugin-node": "^11.1.0",
"eslint-plugin-promise": "^4.2.1",

4
public/index.html

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

202
src/page-subspecialty/views/modules/nurseManagement/reservation/schedule/add-schedule.vue

@ -1,202 +0,0 @@
<template>
<el-dialog
class="add-schedule"
:visible.sync="visible"
width="40%"
:title="dataForm.title"
@close="closeDialog"
>
<el-form ref="dataForm" :model="dataForm" :rules="dataRule">
<el-form-item label="选择患者:" label-width="90px" prop="patientName">
<el-select
v-model="dataForm.patientName"
filterable
placeholder="请输入关键词或选择患者"
>
<el-option
v-for="item in patientList"
:key="item.id"
:label="item.patientName"
:value="item.patientName"
@click.native="optionsChange(item)"
/>
</el-select>
</el-form-item>
<el-form-item label="医生:" label-width="90px" prop="doctorName">
<el-input v-model="dataForm.doctorName" disabled />
</el-form-item>
<el-form-item label="术式:" label-width="90px" prop="operaName">
<el-input v-model="dataForm.operaName" disabled />
</el-form-item>
<el-form-item label="手术时间:" label-width="90px" prop="operaTime">
<el-date-picker
v-model="dataForm.operaTime"
type="datetime"
placeholder="选择手术时间"
default-time="09:00:00"
@change="pickerChange"
/>
</el-form-item>
<el-form-item label="眼别:" label-width="90px">
<el-radio-group v-model="dataForm.eyeType" size="medium">
<el-radio-button label="OD">OD</el-radio-button>
<el-radio-button label="OS">OS</el-radio-button>
<el-radio-button label="双眼">双眼</el-radio-button>
</el-radio-group>
</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: {
patientTypeList: {
type: Array,
default: () => []
}
},
data() {
return {
visible: false,
dataForm: {
doctorCode: '',
doctorName: '',
eyeType: 'OD',
operaName: '',
operaTime: '',
patientCentreId: '',
patientIdNumber: '',
patientName: '',
patientId: ''
},
params: {},
patientList: [],
timeout: null
}
},
computed: {
dataRule() {
return {
patientName: [
{ required: true, message: '请选择患者', trigger: 'change' }
],
operaTime: [
{ required: true, message: '请选择手术时间', trigger: 'change' }
]
}
}
},
methods: {
init() {
this.visible = true
this.$nextTick(() => {
this.$refs.dataForm.resetFields() //
this.getPatientList()
})
},
//
getInfo() {
this.$http.get(`/patient/manage/${this.params.patientCentreId}/${this.params.patientIdNumber}`).then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg)
}
this.dataForm = {
...this.dataForm,
...res.data
}
}).catch(() => {})
},
//
optionsChange(value) {
this.dataForm.patientCentreId = value.patientCentreId
this.dataForm.patientIdNumber = value.patientIdNumber
this.dataForm.patientId = value.patientId
},
//
async getPatientList(query) {
const { data: res } = await this.$http.get('/opera/schedule/getPatientList', {
params: {
patientName: query
}
})
if (res.code === 0) {
this.patientList = res.data
} else {
this.$message.error(res.msg)
}
},
//
pickerChange(value) {
this.dataForm.operaTime = this.$moment(value).format('YYYY-MM-DD kk:mm:ss')
},
//
dataFormSubmitHandle: debounce(function() {
if (this.dataForm.title === 'HIS引入') {
// this.$parent.HisAddVisible = false
}
this.$refs.dataForm.validate((valid) => {
if (!valid) {
return false
}
this.$http[!this.dataForm.id ? 'post' : 'put']('/opera/schedule', 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('getScheduleList')
}
})
}).catch(() => {})
})
}, 1000, { leading: true, trailing: false }),
//
closeDialog() {
this.$emit('closeDialog')
}
}
}
</script>
<style lang="scss" scoped>
.add-schedule {
.cycle-display {
.el-form-item__content {
display: flex;
}
.el-input-number {
width: 100px;
margin-right: 16px;
}
}
}
</style>
<style lang="scss">
.add-schedule {
.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{
width: 100%;
}
}
</style>

18
src/page-subspecialty/views/modules/nurseManagement/reservation/schedule/doctor-schedule.vue

@ -172,13 +172,6 @@
</el-row>
</div>
</div>
<!-- 新增预约 -->
<add-schedule
v-if="addScheduleVisible"
ref="addScheduleRef"
@closeDialog="addScheduleVisible=false"
@getScheduleList="getScheduleList"
/>
<numberDetailManage
v-if="numberManageVisible"
ref="numberManageRef"
@ -189,21 +182,14 @@
@getScheduleList="getScheduleList"
@rowList="rowList"
/>
<operationDetail
v-if="operationDetailVisible"
ref="operationDetailRef"
@closeDialog="operationDetailVisible=false"
/>
</div>
</template>
<script>
import moment from 'moment'
import addSchedule from './add-schedule.vue'
import _ from 'lodash'
import { dateFilterTwo } from '@/filters'
import NumberDetailManage from '@/page-subspecialty/views/modules/nurseManagement/reservation/schedule/number-detail-manage.vue'
import SetOperaTime from '@/page-subspecialty/views/modules/nurseManagement/reservation/schedule/setOperaTime.vue'
/* eslint-disable */
export default {
props: {
@ -230,9 +216,7 @@ export default {
},
},
components: {
SetOperaTime,
NumberDetailManage,
addSchedule,
},
data() {
return {
@ -260,12 +244,10 @@ export default {
curTime: '',
canAdd: true,
setOperaTimeVisible:false,
operationDetailVisible: false,
mouseMoveIsShow: false,
currentIndex: null,
currentWeekIndex: null,
showMorningAfterText: '',
addScheduleVisible: false,
selectedShow: false,
doctorList:[],
doctorList1: [{

119
src/page-subspecialty/views/modules/nurseManagement/reservation/schedule/edit-operation.vue

@ -1,119 +0,0 @@
<template>
<el-dialog class="edit-operation" :visible.sync="visible" title="修改" append-to-body @close="closeDialog">
<el-form ref="dataForm" :model="dataForm" :rules="dataRule" label-width="auto" @keyup.enter.native="dataFormSubmitHandle()">
<div class="head">
<span>姓名{{ patientInfo.patientName ? patientInfo.patientName : '-' }}</span>
<span>性别{{ patientInfo.patientSex ? patientInfo.patientSex : '-' }}</span>
<span>年龄{{ patientInfo.patientAge ? patientInfo.patientAge : '-' }}</span>
<span>已约日期{{ patientInfo.appointmentDate ? patientInfo.appointmentDate : '-' }}</span>
<span>已约时间{{ patientInfo.appointmentTime ? patientInfo.appointmentTime.substr(0, 5) : '-' }}</span>
</div>
<el-form-item label="修改时间:" prop="operaTime">
<el-time-select
v-model="dataForm.operaTime"
placeholder="请设置时间"
:picker-options="dataForm.morOrAft === 1 ? {
start: '07:30',
step: '00:15',
end: '13:30'
} : {
start: '14:00',
step: '00:15',
end: '21:00'
}"
/>
</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>
export default {
props: {
},
data() {
return {
visible: false,
menuList: [],
tempMenuIdList: [],
dataForm: {
operaTime: '',
morOrAft: ''
},
patientInfo: {
patientAge: '',
patientName: '',
patientSex: ''
}
}
},
computed: {
dataRule() {
return {
operaTime: [
{ required: true, message: '请选择预约时间', trigger: 'blur' }
]
}
}
},
methods: {
init() {
this.visible = true
this.$nextTick(() => {
console.log(this.dataForm)
})
},
//
dataFormSubmitHandle() {
this.$refs.dataForm.validate((valid) => {
if (!valid) {
return false
}
this.$http.post('/num/source/updateNumSourceTime', {
appointmentTime: this.dataForm.operaTime + ':00',
numSourceId: this.patientInfo.numSourceId
}).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('getPatientList')
}
})
}).catch(() => {})
})
},
closeDialog() {
this.$emit('closeDialog')
}
}
}
</script>
<style lang="scss">
.edit-operation{
.head {
font-size: 14px;
padding: 10px;
margin: 4px 0 30px 0;
background: #eff4ff;
border: 1px solid #c5d5fe;
display: flex;
justify-content: space-between;
}
.el-dialog__header {
margin-bottom:12px
}
.el-date-editor.el-input, .el-date-editor.el-input__inner {
width: 100%;
}
}
</style>

153
src/page-subspecialty/views/modules/nurseManagement/reservation/schedule/operation-detail.vue

@ -1,153 +0,0 @@
<template>
<el-dialog append-to-body class="operation-detail" :visible.sync="visible" width="50%" :title="title">
<div class="operation-detail-head">
<div class="head-content">
<span class="head-content-left">
<span>医生姓名</span>
<span>刘灿</span>
</span>
<span class="head-content-right">
<span>预约日期</span>
<span>2022-12-24</span>
<span>周二</span>
<span>上午</span>
</span>
</div>
</div>
<div class="number-list">
<el-table
ref="multipleTable"
class="number-table"
highlight-current-row
:data="dataList"
tooltip-effect="dark"
style="width: 100%"
@current-change="handleCurrentChange"
>
<el-table-column
prop="name"
label="预约号"
/>
<el-table-column
label="预约时间"
>
<template slot-scope="scope">123</template>
</el-table-column>
<template v-if="title=='预约详情'">
<el-table-column
prop="name"
label="姓名"
/>
<el-table-column
prop="name"
label="性别"
/>
<el-table-column
prop="name"
label="年龄"
/>
</template>
<el-table-column v-if="title=='选择时间'" label="手术状态" prop="status" header-align="center" align="center">
<template slot-scope="scope">
<div v-show="scope.row.status == 0">
<span class="circle-status circle-green" />
<span>已预约</span>
</div>
<div v-show="scope.row.status == 1">
<span class="circle-status circle-blue" />
<span>可用</span>
</div>
</template>
</el-table-column>
</el-table>
</div>
<template v-if="title==='选择时间'" slot="footer">
<el-button @click="visible = false">{{ $t('cancel') }}</el-button>
<el-button type="primary" @click="dataFormSubmitHandle()">确定</el-button>
</template>
</el-dialog>
</template>
<script>
export default {
props: {
},
data() {
return {
visible: false,
title: '',
dataList: [],
currentTableList: []
}
},
computed: {
dataRule() {
return {
}
}
},
methods: {
init() {
this.visible = true
this.$nextTick(() => {
})
},
handleCurrentChange() {},
//
getInfo() {
this.$http.get(`/patient/manage/${this.params.patientCentreId}/${this.params.patientIdNumber}`).then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg)
}
this.dataForm = {
...this.dataForm,
...res.data
}
}).catch(() => { })
}
}
}
</script>
<style lang="scss" scoped>
.operation-detail {
.operation-detail-head {
}
.head-content {
font-size: 14px;
padding: 10px;
margin: 4px 0 12px 0;
background: #eff4ff;
border: 1px solid #c5d5fe;
display: flex;
justify-content: space-between;
.head-content-left,.head-content-right {
span:nth-child(1) {
font-weight: 700;
}
}
.head-content-right {
span:nth-child(3),span:nth-child(4) {
padding-left: 10px;
}
}
}
}
</style>
<style lang="scss">
.operation-detail {
.el-table-column--selection .cell {
padding-left: 10px;
}
.el-table__body tr.current-row>td.el-table__cell {
color: #fff;
background: #1e79ff;
}
.el-table td.el-table__cell, .el-table th.el-table__cell.is-leaf {
border: none;
}
}
</style>

266
src/page-subspecialty/views/modules/nurseManagement/reservation/schedule/setOperaTime.vue

@ -1,266 +0,0 @@
<template>
<el-dialog top="30px" class="setoperaTime" append-to-body :visible.sync="visible" width="50%" :title="title" @close="closeDialog">
<div class="flex-6">
<div class="setoperaTime-left">
<el-table
ref="multipleTable"
class="number-table"
:highlight-current-row="true"
:data="dataList"
tooltip-effect="dark"
style="width: 100%"
:height="'450px'"
>
<el-table-column type="index" label="序号" align="center" />
<el-table-column label="已约患者" align="center">
<template slot-scope="scope">{{ scope.row.patientName }}</template>
</el-table-column>
<el-table-column label="预约时间" align="center">
<template slot-scope="scope">
{{ scope.row.operaTime ? scope.row.operaTime.substr(0, 5) : '-' }}
</template>
</el-table-column>
</el-table>
</div>
<div class="setoperaTime-right">
<div class="head-content">
<div class="head-content-left">
<span>医生姓名:</span>
<span>{{ dataForm.mainDoctorName }}</span>
</div>
<div class="head-content-right">
<span>排台日期:</span>
<span>{{ dataForm.operaDate }}</span>
<span>{{ weekName }}</span>
<span>{{ morOrAft===1 ? '上午' : '下午' }}</span>
</div>
</div>
<div class="margin-top-20">
<p class="margin-bottom-10">设置手术时间</p>
<el-time-select
v-model="dataForm.operaTime"
placeholder="请设置时间"
:picker-options="morOrAft === 1 ? {
start: '07:30',
step: '00:15',
end: '13:30'
} : {
start: '14:00',
step: '00:15',
end: '21:00'
}"
/>
</div>
</div>
</div>
<template slot="footer">
<div>
<el-button @click="visible = false">关闭</el-button>
<el-button type="primary" @click="timeSureClick()">确定</el-button>
</div>
</template>
<editOperation
v-if="editOperationVisible"
ref="editOperationRef"
@closeDialog="editOperationVisible=false"
@refreshDataList="getSourceList()"
@editSourceListParams="editSourceListParams"
/>
</el-dialog>
</template>
<script>
import viewModule from '@/mixins/view-module'
import EditOperation from '@/page-subspecialty/views/modules/nurseManagement/reservation/schedule/edit-operation.vue'
export default {
components: { EditOperation },
mixins: [viewModule],
props: {
patientTypeList: {
type: Array,
default: () => []
}
},
data() {
return {
visible: false,
morOrAft: '', //
weekName: '', //
title: '',
dataForm: {
operaDate: '', // ()
operaTime: '',
mainDoctorCode: '', //
morOrAft: '',
total: '' //
},
dataList: [],
rowListObj: {},
currentTableList: [],
currentTableId: [],
saveButtonShow: false,
editOperationVisible: false
}
},
computed: {
dataRule() {
return {
startTime: [
{ required: true, message: '请选择开始时间', trigger: 'change' }
]
}
}
},
methods: {
init() {
this.visible = true
this.$nextTick(() => {
this.saveButtonShow = false
this.$refs.dataForm ? this.$refs.dataForm.resetFields() : '' //
this.dataForm.morOrAft = this.morOrAft
this.getPatientList()
})
},
//
async getPatientList() {
const { data: res } = await this.$http.get('/opera/getOperaPatientList', {
params: {
doctorCode: this.dataForm.mainDoctorCode, //
morOrAft: this.morOrAft, // morOrAft --1:2:
searchDate: this.dataForm.operaDate //
}
})
if (res.code === 0) {
this.dataList = res.data
} else {
this.$message.error(res.msg)
}
},
//
timeSureClick() {
const operaDateTime = this.dataForm.operaDate + ' ' + this.dataForm.operaTime + ':00'
//
const operaTime = new Date(operaDateTime)
//
const nowTime = new Date()
if (operaTime > nowTime) {
const index = this.dataList.findIndex(item => item.operaTime.substr(0, 5) === this.dataForm.operaTime)
if (index === -1) {
this.$emit('rowList', this.dataForm)
this.visible = false
} else {
this.$message({
message: '有时间重复,请重新设置',
type: 'warning'
})
}
} else {
this.$message({
message: '时间已过时,请从新设置',
type: 'warning'
})
}
},
//
closeDialog() {
this.$emit('closeDialog')
this.$emit('getScheduleList')
}
}
}
</script>
<style lang="scss" scoped>
.setoperaTime {
.setoperaTime-left {
width: 250px;
}
.setoperaTime-right {
flex: 1;
margin-left: 20px;
}
.head-content {
font-size: 14px;
padding: 10px;
margin: 4px 0 12px 0;
background: #eff4ff;
border: 1px solid #c5d5fe;
.head-content-left,
.head-content-right {
span {
padding-right: 6px;
}
span:nth-child(1) {
font-weight: 700;
}
}
}
.form-two {
margin-left: 16px;
}
.operation-details {
cursor: pointer;
}
}
</style>
<style lang="scss">
.setoperaTime {
.el-input {
width: auto;
}
.el-form-item {
margin-bottom: 12px;
}
.el-form-item__content {
display: flex;
}
.form-content {
display: flex;
align-items: center;
justify-content: space-between;
padding: 10px 0;
border-bottom: 1px dashed #d6d6d6;
}
.total-form,
.time-form {
margin-bottom: 0;
}
.button {
border: 1px solid #1b6de6;
padding: 10px 10px;
color: #1b6de6;
cursor: pointer;
width: 150px;
text-align: center;
border-radius: 6px;
}
.button:hover {
background: #1b6de6;
color: #fff;
}
.number-table {
margin-top: 8px;
}
.el-table-column--selection .cell {
padding-left: 10px;
}
.el-input-group {
width: 80%;
}
.el-date-editor.el-input, .el-date-editor.el-input__inner {
width: 100%;
}
.el-table__body tr.current-row>td.el-table__cell {
color: #fff;
background: #1b6de6;
}
.el-table td.el-table__cell, .el-table th.el-table__cell.is-leaf {
border: none;
}
.el-dialog__footer {
padding-bottom: 10px;
}
}
</style>

33
src/page-subspecialty/views/modules/nurseManagement/reservation/subList/index.vue

@ -19,7 +19,7 @@
</el-select>
<el-select
v-model="dataForm.itemId"
style="margin-left: 15px"
style="margin:0 15px"
placeholder="请选择"
size="small"
@change="getDataListInitial"
@ -31,6 +31,15 @@
:value="item.itemId"
/>
</el-select>
<el-button
v-for="(item,index) in typeList"
:key="index"
:class="[curIndex === index ? 'active' : '']"
style="margin-left: 0"
size="small"
color="white"
@click="handleType(item.value, index)"
>{{ item.label }}</el-button>
</div>
<el-button type="primary" icon="el-icon-edit" size="small" @click="changeOrder">改约</el-button>
</div>
@ -158,6 +167,18 @@ export default {
value: '',
label: '全部'
}],
typeList: [
{
value: '',
label: '全部'
}, {
value: '100',
label: '未预约'
}, {
value: '200',
label: '已预约'
}],
curIndex: 0,
projects: [],
selectedProjects: [],
patientList: [],
@ -172,6 +193,11 @@ export default {
this.getDataListInitial()
},
methods: {
handleType(value, index) {
this.curIndex = index
this.dataForm.appointStatus = value
this.getDataListInitial()
},
//
queryProjects() {
this.$http.get('/patient/getZlItemDict', { params: { isAppoint: 1 }}).then(data => {
@ -258,6 +284,11 @@ export default {
}
</script>
<style lang="scss" scoped>
.active{
color: #3ea3f6;
background-color: #e0f2fd;
border-color: #3ea3f6;
}
.nurse_content{
height: 100%;
}

Loading…
Cancel
Save