181 lines
4.5 KiB
Vue
181 lines
4.5 KiB
Vue
<template>
|
|
<div class="banner-form-edite">
|
|
<el-dialog
|
|
:title="textOptTitle"
|
|
:visible="true"
|
|
:modal-append-to-body="true"
|
|
:append-to-body="true"
|
|
:before-close="handleClose"
|
|
:close-on-click-modal="false"
|
|
width="550px"
|
|
top="50px"
|
|
>
|
|
<div v-loading="submitLoading">
|
|
<div class="form-contetn">
|
|
<el-form ref="form" :model="form" :rules="rules" label-width="110px" style="margin-right: 50px;">
|
|
<el-form-item v-if="!isUpdate" label="房间ID" prop="roomId">
|
|
<search-room-input @success="searchRoomSuccess" @fail="searchRoomFail" @load="loadSearchRoom" />
|
|
</el-form-item>
|
|
<el-form-item label="开始时间" prop="startTime">
|
|
<el-date-picker
|
|
v-model="form.startTime"
|
|
:picker-options="pickerOptions"
|
|
type="datetime"
|
|
value-format="timestamp"
|
|
placeholder="选择日期时间"
|
|
style="width:100%;"
|
|
/>
|
|
</el-form-item>
|
|
<el-form-item label="过期时间" prop="expiredTime">
|
|
<el-date-picker
|
|
v-model="form.expiredTime"
|
|
:picker-options="pickerOptions"
|
|
type="datetime"
|
|
value-format="timestamp"
|
|
placeholder="选择日期时间"
|
|
style="width:100%;"
|
|
/>
|
|
</el-form-item>
|
|
<!-- <el-form-item label="权重" prop="weights">
|
|
<el-input v-model.trim="form.weights" v-number type="text" placeholder="越大越靠前" />
|
|
</el-form-item> -->
|
|
</el-form>
|
|
</div>
|
|
<div slot="footer" style="text-align: right;">
|
|
<el-button @click="handleClose()">取消</el-button>
|
|
<el-button type="primary" :disabled="searchDisabled" @click="submitForm()">保存</el-button>
|
|
</div>
|
|
</div>
|
|
</el-dialog>
|
|
</div>
|
|
</template>
|
|
<script>
|
|
|
|
import { addOrUpdateSetHotRoom } from '@/api/sys'
|
|
export default {
|
|
props: {
|
|
row: {
|
|
type: Object,
|
|
default: null
|
|
}
|
|
},
|
|
data() {
|
|
const commonRules = [{ required: true, message: '必填字段', trigger: 'blur' }]
|
|
return {
|
|
form: {
|
|
roomId: '',
|
|
sysOrigin: '',
|
|
startTime: '',
|
|
expiredTime: '',
|
|
weights: '0'
|
|
},
|
|
searchDisabled: false,
|
|
submitLoading: false,
|
|
uploadLoading: false,
|
|
rules: {
|
|
roomId: commonRules,
|
|
startTime: commonRules,
|
|
expiredTime: commonRules,
|
|
weights: commonRules
|
|
},
|
|
pickerOptions: {
|
|
disabledDate(date) {
|
|
return date.getTime() < Date.now()
|
|
}
|
|
}
|
|
}
|
|
},
|
|
computed: {
|
|
isUpdate() {
|
|
return !!(this.row && this.row.roomId)
|
|
},
|
|
textOptTitle() {
|
|
return this.isUpdate ? '修改' : '添加'
|
|
}
|
|
|
|
},
|
|
watch: {
|
|
row: {
|
|
handler(val) {
|
|
if (!val) {
|
|
return
|
|
}
|
|
this.form = Object.assign(this.form, val)
|
|
},
|
|
immediate: true
|
|
}
|
|
},
|
|
methods: {
|
|
handleClose() {
|
|
this.$emit('close')
|
|
},
|
|
submitForm() {
|
|
const that = this
|
|
that.$refs.form.validate(valid => {
|
|
if (!valid) {
|
|
console.error('error submit!!')
|
|
return
|
|
}
|
|
const time = that.form.expiredTime - that.form.startTime
|
|
const minTimeRange = 1000 * 60 * 10
|
|
if (time < minTimeRange) {
|
|
that.$opsMessage.fail('开始时间~过期时间间隔必须>=10分钟以上!!!')
|
|
return
|
|
}
|
|
that.submitLoading = true
|
|
addOrUpdateSetHotRoom(that.form).then(res => {
|
|
that.submitLoading = false
|
|
that.$emit('success', res)
|
|
}).catch(er => {
|
|
that.submitLoading = false
|
|
console.error(er)
|
|
that.$emit('fial', er)
|
|
})
|
|
})
|
|
},
|
|
loadSearchRoom() {
|
|
this.searchDisabled = true
|
|
},
|
|
searchRoomSuccess(res) {
|
|
this.searchDisabled = false
|
|
if (!res) {
|
|
return
|
|
}
|
|
this.form.roomId = res.id
|
|
this.form.sysOrigin = res.sysOrigin
|
|
},
|
|
searchRoomFail() {
|
|
this.form.roomId = ''
|
|
this.form.sysOrigin = ''
|
|
this.searchDisabled = false
|
|
}
|
|
}
|
|
}
|
|
</script>
|
|
|
|
<style scoped lang="scss">
|
|
.form-contetn {
|
|
max-height: 550px;
|
|
overflow: auto;
|
|
}
|
|
.form-autocomplete {
|
|
li {
|
|
line-height: normal;
|
|
padding: 7px;
|
|
|
|
.name {
|
|
text-overflow: ellipsis;
|
|
overflow: hidden;
|
|
}
|
|
.label {
|
|
font-size: 12px;
|
|
color: #b4b4b4;
|
|
}
|
|
|
|
.highlighted .label {
|
|
color: #ddd;
|
|
}
|
|
}
|
|
}
|
|
</style>
|