Files
wangxiaowei 833999c772 完善功能
2026-03-13 16:02:43 +08:00

233 lines
5.5 KiB
Vue

<template>
<el-dialog title="添加场景" :visible.sync="dialogVisible" @close="dialogFormVisible" :close-on-click-modal="false"
:close-on-press-escape="false">
<el-form size="small" :model="form" :rules="formRules" ref="form">
<el-form-item label="选择场地" prop="room_id" :label-width="formLabelWidth">
<el-select v-model="form.room_id" @change="changeGround">
<el-option :value="item.id" :label="item.title" :key="item.id" v-for="item in veuneList"></el-option>
</el-select>
</el-form-item>
<el-form-item label="选择日期" prop="times" :label-width="formLabelWidth">
<div class="block">
<span class="demonstration"></span>
<el-date-picker size="small" v-model="form.times" type="daterange"
value-format="yyyy-MM-dd" range-separator="至" start-placeholder="开始日期"
end-placeholder="结束日期"></el-date-picker>
</div>
</el-form-item>
<el-form-item label="选择星期" :label-width="formLabelWidth">
<el-select v-model="form.week">
<el-option :value="item.id" :label="item.title" :key="item.id" v-for="item in week_arr"></el-option>
</el-select>
</el-form-item>
<el-form-item label="时间段" prop="times_arr" :label-width="formLabelWidth">
<el-select v-model="form.times_arr" multiple placeholder="请选择">
<el-option
v-for="item in options"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="dialogFormVisible">取 消</el-button>
<el-button type="primary" @click="addUser" :loading="loading"> </el-button>
</div>
</el-dialog>
</template>
<script>
import PorductApi from '@/api/product.js';
import Upload from '@/components/file/Upload';
import Uediter from '@/components/UE.vue';
import VenueApi from '@/api/venue.js';
export default {
components: {
Upload,
Uediter,
},
data() {
return {
/*富文本框配置*/
ueditor: {
text: '',
config: {
initialFrameWidth: 400,
initialFrameHeight: 500
},
},
selectGroundType: null,
form: {
room_id: '',
times: '',
week: '',
times_arr:[
'06:00-07:00',
'07:00-08:00',
'08:00-09:00',
'09:00-10:00',
'10:00-11:00',
'11:00-12:00',
'12:00-13:00',
'13:00-14:00',
'14:00-15:00',
'15:00-16:00',
'16:00-17:00',
'17:00-18:00',
'18:00-19:00',
'19:00-20:00',
'20:00-21:00',
'21:00-22:00',
],
},
formRules: {
room_id: [{
required: true,
message: '请选择场地',
trigger: 'blur'
}],
times_arr: [{
required: true,
message: '请选择灯光使用时段',
trigger: 'blur'
}],
},
options: [],
/*左边长度*/
formLabelWidth: '120px',
/*是否显示*/
dialogVisible: false,
loading: false,
/*是否上传图片*/
isupload: false,
veuneList: [],
week_arr: [
{ id: '1', title: '周一' },
{ id: '2', title: '周二' },
{ id: '3', title: '周三' },
{ id: '4', title: '周四' },
{ id: '5', title: '周五' },
{ id: '6', title: '周六' },
{ id: '7', title: '周日' },
],
};
},
props: ['open_add', 'addform'],
created() {
this.dialogVisible = this.open_add;
// 生成 6:00-22:00 的时间段,格式为 { value: '06:00-07:00', label: '06:00 - 07:00' }
const start = 6, end = 22;
this.options = [];
for (let i = start; i < end; i++) {
const h1 = i < 10 ? `0${i}` : `${i}`;
const h2 = i + 1 < 10 ? `0${i + 1}` : `${i + 1}`;
this.options.push({
value: `${h1}:00-${h2}:00`,
label: `${h1}:00 - ${h2}:00`
});
}
this.getVeuneList()
},
methods: {
// 获取场地列表-不需要分页
getVeuneList() {
let self = this;
VenueApi.noPageGroundRoomList({ground_id: 1}, true)
.then(res => {
self.veuneList = res.data;
})
.catch(error => {
self.loading = false;
});
},
/*添加场景*/
addUser() {
let self = this;
// 复制表单数据
let params = { ...self.form };
self.$refs.form.validate((valid) => {
if (valid) {
self.loading = true;
if (params.times) {
params.times = params.times.join(',');
}
if (!params.times && !params.week) {
self.$message({
message: '日期范围和星期需选择其一',
type: 'warning'
});
self.loading = false;
return
}
params.times_arr = params.times_arr.join(',');
VenueApi.addScene(params).then(data => {
self.loading = false;
self.$message({
message: '添加成功',
type: 'success'
});
self.dialogFormVisible(true);
}).catch(error => {
self.loading = false;
});
}
});
},
/*获取富文本内容*/
contentChangeFunc(e){
this.form.textarea1 = e;
},
/*关闭弹窗*/
dialogFormVisible(e) {
if (e) {
this.$emit('closeDialog', {
type: 'success',
openDialog: false
})
} else {
this.$emit('closeDialog', {
type: 'error',
openDialog: false
})
}
},
/*上传*/
openUpload(e) {
this.type = e;
this.isupload = true;
},
/*获取图片*/
returnImgsFunc(e) {
if (e != null && e.length > 0) {
this.file_path = e[0].file_path;
this.form.img = e[0].file_id;
}
this.isupload = false;
},
changeGround(e) {
this.selectGroundType = this.veuneList.find(item => item.id === e).type_id
}
}
};
</script>
<style>
.img {
margin-top: 10px;
}
</style>