master
271556543@qq.com 3 years ago
parent 579ce77ad5
commit 6d543025ca

@ -62,6 +62,7 @@ export default {
this.$emit('update:isShow',e)
},
reset(){
this.$emit('reset')
if(this.type === 'normal'){
return
}

@ -1,12 +1,15 @@
<template>
<div v-if="detail">
<xy-dialog
ref="dialog"
:form="form"
:rules="rules"
:is-show.sync="isShow"
:width='84'
title="排班"
type="form"
@submit="submit">
@submit="submit"
@reset="pickType = 1,dateStartPick = '',dateEndPick = ''">
<template v-slot:extraFormTop>
<div :style="{
'display':'flex',
@ -94,22 +97,35 @@
产品
</div>
<div class="xy-table-item-content">
<el-select v-model="form.product_id" disabled placeholder="请选择产品" style="width: 300px">
<el-select v-model="form.product_id" placeholder="请选择产品" style="width: 300px">
<el-option v-for="item in products" :key="item.id" :label="item.name" :value="item.id"></el-option>
</el-select>
</div>
</div>
</template>
<template v-slot:order_id>
<div class="xy-table-item">
<div class="xy-table-item-label">
订单
</div>
<div class="xy-table-item-content">
<el-select v-model="form.order_id" placeholder="请选择订单" style="width: 300px">
<el-option v-for="item in orders" :key="item.id" :label="item.no" :value="item.id"></el-option>
</el-select>
</div>
</div>
</template>
<template v-slot:extraFormBottom>
<el-calendar>
<template v-slot:dateCell="{date, data}">
<el-popover
ref="popover"
:ref="`popover-${data.day}`"
placement="top"
trigger="click"
width="300">
width="280">
<div
slot="reference"
:style="
@ -125,37 +141,44 @@
</div>
<template>
<template v-if="pickType === 1">
<el-time-select
v-model="form.start_time"
:picker-options="{
start: '08:30',
step: '00:15',
end: '18:30'
<div style="display: flex;flex-direction: column;justify-content: center;align-items: center">
<template v-if="pickType === 1">
<el-time-select
style="width: 200px;margin-bottom: 10px"
v-model="form.start_time"
:picker-options="{
start: '00:00',
step: '00:5',
end: '23:59'
}"
placeholder="开始时间">
</el-time-select>
</template>
<template v-else>
<el-time-select
v-model="form.end_time"
:picker-options="{
start: '08:30',
step: '00:15',
end: '18:30',
placeholder="开始时间">
</el-time-select>
</template>
<template v-else>
<el-time-select
style="width: 200px;margin-bottom: 10px"
v-model="form.end_time"
:picker-options="{
start: '00:00',
step: '00:5',
end: '23:59',
minTime: form.start_time
}"
placeholder="结束时间">
</el-time-select>
</template>
<el-select v-model="form.nurse_id">
<el-option
v-for="item in nurses"
:key="item.id"
:value="item.id"
:label="item.name"></el-option>
</el-select>
<Button type="primary" @click="dateConfirm"></Button>
placeholder="结束时间">
</el-time-select>
</template>
<el-select placeholder="请选择护工" v-model="form.nurse_id" style="width: 200px;margin-bottom: 10px">
<el-option
v-for="item in nurses"
:key="item.id"
:value="item.id"
:label="item.name"></el-option>
</el-select>
<div style="width: 200px;display: flex;justify-content: space-between;">
<Button ghost type="primary" @click="$refs[`popover-${data.day}`].doClose()"></Button>
<Button type="primary" @click="dateConfirm(data)"></Button>
</div>
</div>
</template>
</el-popover>
</template>
@ -185,6 +208,10 @@ export default {
levels: {
type: Array,
default: () => []
},
orders:{
type: Array,
default: () => []
}
},
data() {
@ -204,6 +231,14 @@ export default {
start_time: '',
end_time: '',
nurse_id: '',
},
rules:{
product_id:[
{required:true,message:'请选择产品'}
],
order_id:[
{required:true,message:'请选择订单'}
]
}
}
},
@ -217,13 +252,14 @@ export default {
this.detail = res.detail
},
dateConfirm(){
this.pickType = 2
this.$refs['popover'].doClose()
console.log(this.$refs['popover'].showPopper)
dateConfirm(data){
if(this.pickType === 1){
this.pickType = 2
return
}
this.$refs[`popover-${data.day}`].doClose()
},
datePicked(data,date){
console.log(data,date)
if(this.pickType === 1){
this.dateStartPick = data.day
}
@ -233,7 +269,7 @@ export default {
},
submit() {
this.form.start_time = `${this.dateStartPick} ${this.form.start_time}`
this.form.end_time = `${this.dateEndPick} ${this.form.end_time}`
this.form.end_time = `${this.dateEndPick || this.dateStartPick} ${this.form.end_time}`
scheduleSave(this.form).then(res => {
this.$successMessage('排班','')
@ -257,9 +293,12 @@ export default {
watch: {
isShow(val) {
if (val) {
this.getCustomer()
//this.getCustomer()
} else {
this.pickType = 1
this.dateEndPick = ''
this.dateStartPick = ''
this.$refs['dialog'].reset()
}
}
}

@ -23,7 +23,11 @@
:table-item="table"
:total="total">
<template v-slot:btns>
<div></div>
<el-table-column :width="70" align="center" label="操作" fixed="right" header-align="center">
<template v-slot:default="scope">
<Button size="small" type="primary" ghost @click="schedule(scope.row)"></Button>
</template>
</el-table-column>
</template>
</xy-table>
@ -32,7 +36,8 @@
:products="products"
:customers="customers"
:nurses="nurses"
:levels="levels"></add-schedule>
:levels="levels"
:orders="orders"></add-schedule>
</div>
</template>
@ -59,75 +64,76 @@ export default {
products:[],
nurses:[],
levels:[],
orders:[],
total: 0,
list: [],
table: [
{
type: 'expand',
expandFn: (props) => {
let {$refs} = this
return (
<xy-table
style={{'margin':'0 20px','filter':'drop-shadow(0 2px 16px rgba(200,200,200,0.8))'}}
is-page={false}
height={240}
list={props.row.orders}
table-item={
[
{
prop: 'no',
label: '订单编号',
width: 210,
sortable: false
},
{
prop: 'product.name',
label: '产品',
minWidth: 200,
sortable: false
},
{
label: '排班状态',
width: 160,
sortable: false
}
]
}
scopedSlots={{
btns() {
return (
<el-table-column
width={70}
header-align="center"
align="center"
label="操作"
scopedSlots={{
default(scope) {
return (
<Button
type="primary"
size="small"
on={{
['click']: () => {
$refs['addSchedule'].form.product_id = scope.row.product_id
$refs['addSchedule'].form.customer_id = scope.row.customer_id
$refs['addSchedule'].form.order_id = scope.row.id
$refs['addSchedule'].isShow = true
}
}}>排班</Button>
)
}
}}>
</el-table-column>
)
}
}}>
</xy-table>
)
}
},
// {
// type: 'expand',
// expandFn: (props) => {
// let {$refs} = this
// return (
// <xy-table
// style={{'margin':'0 20px','filter':'drop-shadow(0 2px 16px rgba(200,200,200,0.8))'}}
// is-page={false}
// height={240}
// list={props.row.orders}
// table-item={
// [
// {
// prop: 'no',
// label: '',
// width: 210,
// sortable: false
// },
// {
// prop: 'product.name',
// label: '',
// minWidth: 200,
// sortable: false
// },
// {
// label: '',
// width: 160,
// sortable: false
// }
// ]
// }
// scopedSlots={{
// btns() {
// return (
// <el-table-column
// width={70}
// header-align="center"
// align="center"
// label=""
// scopedSlots={{
// default(scope) {
// return (
// <Button
// type="primary"
// size="small"
// on={{
// ['click']: () => {
// $refs['addSchedule'].form.product_id = scope.row.product_id
// $refs['addSchedule'].form.customer_id = scope.row.customer_id
// $refs['addSchedule'].form.order_id = scope.row.id
// $refs['addSchedule'].isShow = true
// }
// }}></Button>
// )
// }
// }}>
// </el-table-column>
// )
// }
// }}>
//
// </xy-table>
// )
// }
// },
{
prop: 'name',
label: '客户',
@ -186,6 +192,13 @@ export default {
const res = await customerList(this.select)
this.total = res.total
this.list = res.data
},
schedule(row){
this.$refs['addSchedule'].detail = row
this.$refs['addSchedule'].form.customer_id = row.id
this.orders = row.orders
this.$refs['addSchedule'].isShow = true
}
},
mounted() {

@ -177,7 +177,7 @@
<span style="color: red;font-weight: 600;padding-right: 4px;">*</span>加入时间
</div>
<div class="xy-table-item-content">
<el-date-picker v-model="form.join_at" placeholder="请选择生日" style="width: 300px;"
<el-date-picker v-model="form.join_at" placeholder="请选择加入时间" style="width: 300px;"
value-format="yyyy-MM-dd"></el-date-picker>
</div>
</div>
@ -189,7 +189,7 @@
离职时间
</div>
<div class="xy-table-item-content">
<el-date-picker v-model="form.leave_at" placeholder="请选择生日" style="width: 300px;"
<el-date-picker v-model="form.leave_at" placeholder="请选择离职时间" style="width: 300px;"
value-format="yyyy-MM-dd"></el-date-picker>
</div>
</div>

Loading…
Cancel
Save