Files
zn-ai/src/pages/home/components/TaskOperationDialog.vue

139 lines
3.3 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<el-dialog v-model="isVisible" width="480" align-center class="dark-dialog">
<template #title>
<span>{{ title }}</span>
</template>
<el-form :model="form" :rules="rules" ref="formRef" label-position="top" class="pl-4 pr-4 pt-4 dark-form">
<el-form-item prop="roomType">
<template #label>
<span>选择房型</span>
</template>
<el-select v-model="form.roomType" placeholder="请选择房型">
<el-option v-for="item in roomList" :label="item.pmsName" :value="item.id" :key="item.id" />
</el-select>
</el-form-item>
<el-form-item prop="range">
<template #label>
<span>选择日期范围</span>
</template>
<el-date-picker v-model="form.range" type="daterange" value-format="YYYY-MM-DD" placeholder="请选择日期"
style="width: 100%">
</el-date-picker>
</el-form-item>
<el-form-item prop="operation">
<template #label>
<span>选择操作</span>
</template>
<el-select v-model="form.operation" placeholder="请选择操作">
<el-option label="开启" value="open" />
<el-option label="关闭" value="close" />
</el-select>
</el-form-item>
</el-form>
<template #footer>
<div class="dialog-footer">
<el-button @click="cancel">取消</el-button>
<el-button type="primary" @click="confirm">确认</el-button>
</div>
</template>
</el-dialog>
</template>
<script setup lang="ts">
import { hotelStaffTypeMappingListUsingPost } from '@api/index'
import { ref } from 'vue'
const isVisible = ref(false)
const roomList: any = ref([])
const title = ref('渠道房型操作')
const formRef = ref()
const form = ref({
roomType: '',
operation: '',
range: []
})
const rules = ref({
roomType: [
{ required: true, message: '请选择房型', trigger: 'blur' },
],
range: [
{
required: true,
message: '请选择日期范围',
trigger: 'change',
type: 'array'
},
],
operation: [
{ required: true, message: '请选择操作', trigger: 'blur' },
]
})
// 打开弹窗
const open = async () => {
await getRoomTypeList()
isVisible.value = true
}
// 关闭弹窗
const close = () => {
isVisible.value = false
}
// 重置form
const reset = () => {
form.value.roomType = ''
form.value.range = []
formRef.value.resetFields()
}
// 取消操作
const cancel = () => {
close()
reset()
}
// 确认操作
const confirm = () => {
formRef.value.validate((valid: boolean) => {
if (!valid) {
return
}
close()
// 将roomList.value数组处理成标准数组
const newList = roomList.value.map((item: any) => ({ ...item }))
const options = {
roomType: form.value.roomType,
startTime: form.value.range[0],
endTime: form.value.range[1],
operation: form.value.operation,
roomList: newList
}
console.log(options)
/**
* 坑传给进程的参数不能是ref包裹的reactive对象
*/
window.api.executeScript(options)
reset()
})
}
// 获取房型列表
const getRoomTypeList = async () => {
const res = await hotelStaffTypeMappingListUsingPost({ body: {} })
roomList.value = res.data
}
defineExpose({
open,
close,
})
</script>