|
|
|
|
<template>
|
|
|
|
|
<div>
|
|
|
|
|
<div ref="lxHeader">
|
|
|
|
|
<lx-header icon="md-apps" style="margin-bottom: 10px; border: 0px; margin-top: 15px" text="护工排班视图">
|
|
|
|
|
<div slot="content"></div>
|
|
|
|
|
<slot>
|
|
|
|
|
<div style="display: flex">
|
|
|
|
|
<!-- <Input v-model="select.keyword" placeholder="关键字搜索" style="width: 200px; margin-right: 10px"/>-->
|
|
|
|
|
<!-- <Button style="margin-right: 10px" type="primary" @click="select.page = 1,getCustomerList()">查询</Button>-->
|
|
|
|
|
<!-- <xy-selectors @search="select.page = 1,getList()" @reset="reset">-->
|
|
|
|
|
<!-- <template>-->
|
|
|
|
|
<!-- <div class="select-item">-->
|
|
|
|
|
<!-- <div class="select-item__label">业务板块</div>-->
|
|
|
|
|
<!-- <el-select size="small" v-model="select.product_type_id" placeholder="选择业务板块" clearable style="width: 200px">-->
|
|
|
|
|
<!-- <el-option v-for="item in types" :value="item.id" :label="item.name" :key="item.id"></el-option>-->
|
|
|
|
|
<!-- </el-select>-->
|
|
|
|
|
<!-- </div>-->
|
|
|
|
|
|
|
|
|
|
<!-- <div class="select-item">-->
|
|
|
|
|
<!-- <div class="select-item__label">所属区域</div>-->
|
|
|
|
|
<!-- <el-select size="small" v-model="select.area_id" placeholder="选择区域" clearable style="width: 200px">-->
|
|
|
|
|
<!-- <el-option v-for="item in areas" :value="item.id" :label="item.value" :key="item.id"></el-option>-->
|
|
|
|
|
<!-- </el-select>-->
|
|
|
|
|
<!-- </div>-->
|
|
|
|
|
|
|
|
|
|
<!-- <div class="select-item">-->
|
|
|
|
|
<!-- <div class="select-item__label">所属月份</div>-->
|
|
|
|
|
<!-- <el-date-picker-->
|
|
|
|
|
<!-- size="small"-->
|
|
|
|
|
<!-- v-model="select.month"-->
|
|
|
|
|
<!-- type="month"-->
|
|
|
|
|
<!-- value-format="yyyy-MM"-->
|
|
|
|
|
<!-- placeholder="选择月"-->
|
|
|
|
|
<!-- style="width: 200px">-->
|
|
|
|
|
<!-- </el-date-picker>-->
|
|
|
|
|
<!-- </div>-->
|
|
|
|
|
|
|
|
|
|
<!-- <div class="select-item">-->
|
|
|
|
|
<!-- <div class="select-item__label">状态</div>-->
|
|
|
|
|
<!-- <el-radio v-model="select.schedule_status" :label="1">已排</el-radio>-->
|
|
|
|
|
<!-- <el-radio v-model="select.schedule_status" :label="2">未排</el-radio>-->
|
|
|
|
|
<!-- <el-radio v-model="select.schedule_status" label="">全部</el-radio>-->
|
|
|
|
|
<!-- </div>-->
|
|
|
|
|
<!-- </template>-->
|
|
|
|
|
<!-- </xy-selectors>-->
|
|
|
|
|
</div>
|
|
|
|
|
</slot>
|
|
|
|
|
</lx-header>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<xy-table
|
|
|
|
|
:default-expand-all="false"
|
|
|
|
|
:list="list"
|
|
|
|
|
:table-item="table"
|
|
|
|
|
:total="total"
|
|
|
|
|
@pageIndexChange="e => {select.page = e;getList()}"
|
|
|
|
|
@pageSizeChange="e => {select.page = 1;select.page_size = e;getList()}">
|
|
|
|
|
<<template v-slot:btns>
|
|
|
|
|
<el-table-column :width="80" align="center" label="操作" fixed="right" header-align="center">
|
|
|
|
|
<template v-slot:default="scope">
|
|
|
|
|
<Button size="small" type="primary" ghost @click="show(scope.row)">查看</Button>
|
|
|
|
|
</template>
|
|
|
|
|
</el-table-column>
|
|
|
|
|
</template>
|
|
|
|
|
</xy-table>
|
|
|
|
|
|
|
|
|
|
<el-drawer
|
|
|
|
|
size="46%"
|
|
|
|
|
title="护工排班"
|
|
|
|
|
:visible.sync="isShowDrawer"
|
|
|
|
|
direction="rtl">
|
|
|
|
|
<div class="draw-title">护工信息</div>
|
|
|
|
|
<div style="margin-left: 2%;">
|
|
|
|
|
<div style="margin-bottom: 8px;">
|
|
|
|
|
<span class="info-title">姓名</span>
|
|
|
|
|
<span class="info-content">{{ worker.name }}</span>
|
|
|
|
|
</div>
|
|
|
|
|
<div style="margin-bottom: 8px;">
|
|
|
|
|
<span class="info-title">性别</span>
|
|
|
|
|
<span class="info-content">{{ worker.sex }}</span>
|
|
|
|
|
</div>
|
|
|
|
|
<div style="margin-bottom: 8px;">
|
|
|
|
|
<span class="info-title">手机号</span>
|
|
|
|
|
<span class="info-content">{{ worker.mobile }}</span>
|
|
|
|
|
</div>
|
|
|
|
|
<div style="margin-bottom: 8px;">
|
|
|
|
|
<span class="info-title">年龄</span>
|
|
|
|
|
<span class="info-content">{{ $moment().diff(worker.birthday,'year') }}</span>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<xy-table :height="400" style="margin-top: 20px;" :list="schedules" :table-item="scheduleTable" :is-page="false">
|
|
|
|
|
<template v-slot:btns>
|
|
|
|
|
<el-table-column :width="130" align="center" label="操作" header-align="center">
|
|
|
|
|
<template v-slot:default="scope">
|
|
|
|
|
<el-popover
|
|
|
|
|
placement="right"
|
|
|
|
|
width="300"
|
|
|
|
|
trigger="click">
|
|
|
|
|
<el-table :data="skus" :height="300">
|
|
|
|
|
<el-table-column width="120" property="sku_info.name" label="明细名称"></el-table-column>
|
|
|
|
|
<el-table-column width="100" property="time" label="时长(分)"></el-table-column>
|
|
|
|
|
</el-table>
|
|
|
|
|
<Button size="small" type="primary" ghost slot="reference" style="margin-right: 4px" @click="showDialog(scope.row)">明细</Button>
|
|
|
|
|
</el-popover>
|
|
|
|
|
|
|
|
|
|
<template v-if="scope.row.status === 0">
|
|
|
|
|
<Poptip
|
|
|
|
|
v-model="isShowSku"
|
|
|
|
|
transfer
|
|
|
|
|
confirm
|
|
|
|
|
title="确认要删除订单?"
|
|
|
|
|
@on-ok="deleteSchedule(scope.row)">
|
|
|
|
|
<Button size="small" type="primary" ghost>删除</Button>
|
|
|
|
|
</Poptip>
|
|
|
|
|
</template>
|
|
|
|
|
</template>
|
|
|
|
|
</el-table-column>
|
|
|
|
|
</template>
|
|
|
|
|
</xy-table>
|
|
|
|
|
</el-drawer>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
</template>
|
|
|
|
|
|
|
|
|
|
<script>
|
|
|
|
|
import { nurseSchedule,scheduleIndex,scheduleDelete } from '@/api/schedule'
|
|
|
|
|
import { getList } from '@/api/serveDetail'
|
|
|
|
|
export default {
|
|
|
|
|
data() {
|
|
|
|
|
return {
|
|
|
|
|
worker:{},
|
|
|
|
|
isShowDrawer:false,
|
|
|
|
|
isShowSku:false,
|
|
|
|
|
skus:[],
|
|
|
|
|
select: {
|
|
|
|
|
page: 1,
|
|
|
|
|
page_size: 10,
|
|
|
|
|
// keyword:'',
|
|
|
|
|
//product_type_id:'',
|
|
|
|
|
// area_id:'',
|
|
|
|
|
//month:'',
|
|
|
|
|
//schedule_status:'',
|
|
|
|
|
},
|
|
|
|
|
customers:[],
|
|
|
|
|
products:[],
|
|
|
|
|
levels:[],
|
|
|
|
|
orders:[],
|
|
|
|
|
accounts:[],
|
|
|
|
|
types:[],
|
|
|
|
|
areas:[],
|
|
|
|
|
|
|
|
|
|
list:[],
|
|
|
|
|
total:0,
|
|
|
|
|
table:[
|
|
|
|
|
{
|
|
|
|
|
prop:'name',
|
|
|
|
|
label:'护工姓名',
|
|
|
|
|
width:140
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
prop:'mobile',
|
|
|
|
|
label:'护工手机号',
|
|
|
|
|
width:160
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
prop:'birthday',
|
|
|
|
|
label:'护工年龄',
|
|
|
|
|
formatter:(cell,data,value) => {
|
|
|
|
|
return value ? this.$moment().diff(value,'year') : value
|
|
|
|
|
},
|
|
|
|
|
width:100
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
prop:'address',
|
|
|
|
|
label:'护工地址',
|
|
|
|
|
align:'left',
|
|
|
|
|
minWidth:200
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
prop:'has_arrange',
|
|
|
|
|
label:'已排班',
|
|
|
|
|
width:120
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
prop:'has_end',
|
|
|
|
|
label:'已完成',
|
|
|
|
|
width:120
|
|
|
|
|
}
|
|
|
|
|
],
|
|
|
|
|
|
|
|
|
|
schedules:[],
|
|
|
|
|
scheduleTable:[
|
|
|
|
|
{
|
|
|
|
|
prop:'customer.name',
|
|
|
|
|
label:'客户名称',
|
|
|
|
|
width:120
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
prop:'customer.phone',
|
|
|
|
|
label:'客户手机号',
|
|
|
|
|
width:150
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
prop:'start_time',
|
|
|
|
|
label:'开始时间',
|
|
|
|
|
width: 170
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
prop:'end_time',
|
|
|
|
|
label:'结束时间',
|
|
|
|
|
width: 170
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
prop:'status',
|
|
|
|
|
label:'状态',
|
|
|
|
|
width: 120,
|
|
|
|
|
formatter:(row,data,value) => {
|
|
|
|
|
let map = new Map([
|
|
|
|
|
[0,'待护理'],
|
|
|
|
|
[1,'护理中'],
|
|
|
|
|
[2,'已护理']
|
|
|
|
|
])
|
|
|
|
|
return map.get(value)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
]
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
methods: {
|
|
|
|
|
async getList(){
|
|
|
|
|
const res = await nurseSchedule(this.select)
|
|
|
|
|
this.list = res.data
|
|
|
|
|
this.total = res.total
|
|
|
|
|
},
|
|
|
|
|
reset(){
|
|
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
editor(){
|
|
|
|
|
|
|
|
|
|
},
|
|
|
|
|
showDialog(row){
|
|
|
|
|
getList({
|
|
|
|
|
customer_id:row.customer_id
|
|
|
|
|
}).then(res => {
|
|
|
|
|
this.skus = res.data.filter(item => {
|
|
|
|
|
return row.id === item.id
|
|
|
|
|
})[0]?.sku ?? []
|
|
|
|
|
this.isShowSku = true
|
|
|
|
|
})
|
|
|
|
|
},
|
|
|
|
|
deleteSchedule(row){
|
|
|
|
|
scheduleDelete({
|
|
|
|
|
id:row.id
|
|
|
|
|
}).then(res => {
|
|
|
|
|
this.$message({
|
|
|
|
|
type:'success',
|
|
|
|
|
message:'删除成功'
|
|
|
|
|
})
|
|
|
|
|
this.getList()
|
|
|
|
|
})
|
|
|
|
|
},
|
|
|
|
|
show(e){
|
|
|
|
|
this.worker = e
|
|
|
|
|
scheduleIndex({
|
|
|
|
|
nurse_name:e.name,
|
|
|
|
|
page_size:9999
|
|
|
|
|
}).then(res => {
|
|
|
|
|
this.schedules = res
|
|
|
|
|
this.isShowDrawer = true
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
computed: {},
|
|
|
|
|
mounted() {
|
|
|
|
|
this.getList()
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
</script>
|
|
|
|
|
|
|
|
|
|
<style scoped lang="scss">
|
|
|
|
|
.select-item{
|
|
|
|
|
display: flex;
|
|
|
|
|
align-items: center;
|
|
|
|
|
|
|
|
|
|
&__label{
|
|
|
|
|
width: 100px;
|
|
|
|
|
padding: 10px 10px;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
.draw-title{
|
|
|
|
|
letter-spacing: 2px;
|
|
|
|
|
font-weight: 600;
|
|
|
|
|
|
|
|
|
|
position: relative;
|
|
|
|
|
padding: 10px 8px 10px 30px;
|
|
|
|
|
&::after{
|
|
|
|
|
content: '';
|
|
|
|
|
width: 10px;
|
|
|
|
|
height: 10px;
|
|
|
|
|
border-radius: 100%;
|
|
|
|
|
background: #B3241D;
|
|
|
|
|
|
|
|
|
|
transform: translateY(-50%);
|
|
|
|
|
position: absolute;
|
|
|
|
|
top: 50%;
|
|
|
|
|
left: 10px;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
.info-title{
|
|
|
|
|
font-weight: 600;
|
|
|
|
|
}
|
|
|
|
|
.info-content{
|
|
|
|
|
|
|
|
|
|
padding-left: 10px;
|
|
|
|
|
}
|
|
|
|
|
</style>
|