<template>
|
<GlobalAlertWindow
|
:title="title"
|
:visible.sync="visible"
|
:confirm-working="isWorking"
|
width="600px"
|
@confirm="confirm"
|
>
|
|
<el-form :model="form" ref="form" :rules="rules" label-suffix=":">
|
<el-form-item label="车型名称" prop="bikeTypeName">
|
{{ form.bikeTypeName }}
|
</el-form-item>
|
<!-- base-->
|
<el-form-item label="工作日计费" prop="base">
|
<el-select v-model="form.baseType" @change="selectBaseType">
|
<el-option
|
v-for="item in priceType"
|
:key="item.id"
|
:label="item.name"
|
:value="item.id"
|
></el-option>
|
</el-select>
|
<div class="setting" v-if="form.baseType === 1" style="display: flex;">
|
<el-input v-model="form.basePrice" type="number" placeholder="" v-trim/>
|
元,畅骑一整天
|
</div>
|
<div class="setting" v-else>
|
<div style="display: flex;">
|
起步价<el-input v-model="form.basePrice" type="number" placeholder="" v-trim/>
|
元<el-input v-model="form.baseTime" type="number" placeholder="" v-trim/>分钟
|
</div>
|
<div style="display: flex; margin-top: 5px;">
|
超过后<el-input v-model="form.unitPrice" type="number" placeholder="" v-trim/>
|
元,每<el-input v-model="form.unitTime" type="number" placeholder="" v-trim/>分钟
|
</div>
|
</div>
|
</el-form-item>
|
<el-form-item label="节假日计费" prop="holiday">
|
<el-select v-model="form.holidayBaseType" @change="selectHolidayBaseType">
|
<el-option
|
v-for="item in priceType"
|
:key="item.id"
|
:label="item.name"
|
:value="item.id"
|
></el-option>
|
</el-select>
|
<div class="setting" v-if="form.holidayBaseType == 1" style="display: flex;">
|
<el-input v-model="form.holidayBasePrice" type="number" placeholder="" v-trim/>
|
元,畅骑一整天
|
</div>
|
<div class="setting" v-else>
|
<div style="display: flex;">
|
起步价<el-input v-model="form.holidayBasePrice" type="number" placeholder="" v-trim/>
|
元<el-input v-model="form.holidayBaseTime" type="number" placeholder="" v-trim/>分钟
|
</div>
|
<div style="display: flex; margin-top: 5px;">
|
超过后<el-input v-model="form.holidayUnitPrice" type="number" placeholder="" v-trim/>
|
元,每<el-input v-model="form.holidayUnitTime" type="number" placeholder="" v-trim/>分钟
|
</div>
|
</div>
|
</el-form-item>
|
</el-form>
|
</GlobalAlertWindow>
|
</template>
|
|
<script>
|
import BaseOpera from '@/components/base/BaseOpera'
|
import GlobalAlertWindow from '@/components/common/GlobalAlertWindow'
|
import { updatePricingDetailById } from '@/api/business/pricingParam'
|
// import { findList } from '@/api/business/roomTime'
|
export default {
|
name: 'OperaPriceConfigWindow',
|
extends: BaseOpera,
|
components: { GlobalAlertWindow },
|
data () {
|
const baseRule = (rule, value, callback) => {
|
if (this.form.baseType == 1) {
|
if (/^[1-9]\d*$|^0$/.test(this.form.basePrice)) {
|
callback()
|
} else {
|
callback(new Error())
|
}
|
} else {
|
if (
|
(/^[1-9]\d*$|^0$/.test(this.form.basePrice)) &&
|
(/^[1-9]\d*$|^0$/.test(this.form.baseTime)) &&
|
(/^[1-9]\d*$|^0$/.test(this.form.unitPrice)) &&
|
(/^[1-9]\d*$|^0$/.test(this.form.unitTime))) {
|
callback()
|
} else {
|
callback(new Error())
|
}
|
}
|
}
|
const holidayRule = (rule, value, callback) => {
|
if (this.form.holidayBaseType === 1) {
|
if (/^[1-9]\d*$|^0$/.test(this.form.holidayBasePrice)) {
|
callback()
|
} else {
|
callback(new Error())
|
}
|
} else {
|
if (
|
(/^[1-9]\d*$|^0$/.test(this.form.holidayBasePrice)) &&
|
(/^[1-9]\d*$|^0$/.test(this.form.holidayBaseTime)) &&
|
(/^[1-9]\d*$|^0$/.test(this.form.holidayUnitTime))) {
|
callback()
|
} else {
|
callback(new Error())
|
}
|
}
|
}
|
return {
|
// 表单数据
|
form: {
|
id: null,
|
pricePramId: '',
|
bikeTypeId: '',
|
bikeTypeName: '',
|
baseType: '',
|
baseTime: '',
|
basePrice: '',
|
unitPrice: '',
|
unitTime: '',
|
holidayBaseType: '',
|
holidayBaseTime: '',
|
holidayBasePrice: '',
|
holidayUnitPrice: '',
|
holidayUnitTime: '',
|
},
|
priceType: [
|
{ name: '一口价', id: 1 },
|
{ name: '阶梯定价', id: 2 },
|
],
|
backInfoRequired: false,
|
// 验证规则
|
rules: {
|
base: [
|
{ required: true, validator: baseRule, message: '请完善工作日计价信息', tigger: 'blur' }
|
],
|
holiday: [
|
{ required: true, validator: holidayRule, message: '请完善节假日计价信息', tigger: 'blur'},
|
]
|
},
|
|
}
|
},
|
|
methods: {
|
/**
|
* 打开窗口
|
* @title 窗口标题
|
* @target 编辑的对象
|
*/
|
open (title, target) {
|
this.title = title
|
this.visible = true
|
// 新建
|
if (target == null) {
|
this.$nextTick(() => {
|
this.$refs.form.resetFields()
|
this.form[this.configData['field.id']] = null
|
})
|
return
|
}
|
// 编辑
|
this.$nextTick(() => {
|
for (const key in this.form) {
|
this.form[key] = target[key]
|
}
|
this.form.baseType = target.baseTime === -1 ? 1 : 2
|
this.form.holidayBaseType = target.holidayBaseTime === -1 ? 1 : 2
|
// this.form.backReason = ''
|
// this.form.backInfo = ''
|
// this.$refs.form.clearValidate()
|
})
|
},
|
selectBaseType(v) {
|
console.log(v);
|
if (v==1) {
|
this.form.baseTime = -1
|
} else {
|
this.form.baseTime = ''
|
}
|
},
|
selectHolidayBaseType(v) {
|
// console.log(item);
|
if (v==1) {
|
this.form.holidayBaseTime = -1
|
} else {
|
this.form.holidayBaseTime = ''
|
}
|
},
|
confirm() {
|
this.$refs.form.validate((valid) => {
|
if (!valid) {
|
return
|
}
|
this.isWorking = true
|
updatePricingDetailById(this.form)
|
.then(res => {
|
this.visible = false
|
this.$tip.apiSuccess('修改成功')
|
this.$emit('success')
|
|
})
|
.catch(err => {
|
this.$tip.apiFailed(err)
|
})
|
.finally(() => {
|
this.isWorking = false
|
})
|
})
|
}
|
},
|
}
|
</script>
|
|
<style lang="scss" scoped>
|
@import "@/assets/style/alertstyle.scss";
|
@import "@/assets/style/variables.scss";
|
|
::v-deep .el-input.is-disabled .el-input__inner {
|
background-color: #fff !important;
|
cursor: pointer;
|
}
|
|
.time-style {
|
display: flex;
|
flex-wrap: wrap;
|
cursor: pointer;
|
.time-item {
|
margin-right: 8px;
|
margin-bottom: 8px;
|
border: #111 solid 1px;
|
font-size: 14px;
|
line-height: 14px;
|
padding: 5px;
|
border-radius: 5px;
|
color: #111;
|
}
|
.time-item-sel {
|
border-color: $primary-color;
|
background-color: $primary-color;
|
color: #fff;
|
}
|
.time-item-disable {
|
border-color: #999;
|
background-color: #999;
|
color: #111;
|
}
|
}
|
|
.setting {
|
margin-top: 15px;
|
.el-input {
|
width: 100px;
|
}
|
}
|
|
</style>
|