2024-05-20 18:07:24 +08:00
|
|
|
|
<template>
|
|
|
|
|
<div class="app-container">
|
|
|
|
|
<!-- 搜索表单 -->
|
|
|
|
|
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
|
|
|
|
|
<el-form-item label="套餐名称" prop="name">
|
2024-05-22 17:28:19 +08:00
|
|
|
|
<el-input v-model="queryParams.name" placeholder="请输入套餐名称" clearable @keyup.enter.native="handleQuery" />
|
2024-05-20 18:07:24 +08:00
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="状态" prop="status">
|
|
|
|
|
<el-select v-model="queryParams.status" placeholder="请选择状态" clearable>
|
2024-05-22 17:28:19 +08:00
|
|
|
|
<el-option v-for="dict in dict.type.sys_normal_disable" :key="dict.value" :label="dict.label"
|
|
|
|
|
:value="dict.value" />
|
2024-05-20 18:07:24 +08:00
|
|
|
|
</el-select>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item>
|
|
|
|
|
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
|
|
|
|
|
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</el-form>
|
|
|
|
|
|
|
|
|
|
<!-- 按钮和表格 -->
|
|
|
|
|
<el-row :gutter="10" class="mb8">
|
|
|
|
|
<el-col :span="1.5">
|
2024-05-22 17:28:19 +08:00
|
|
|
|
<el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd"
|
|
|
|
|
v-hasPermi="['system:fee:add']">新增</el-button>
|
2024-05-20 18:07:24 +08:00
|
|
|
|
</el-col>
|
|
|
|
|
<el-col :span="1.5">
|
2024-05-22 17:28:19 +08:00
|
|
|
|
<el-button type="success" plain icon="el-icon-edit" size="mini" :disabled="single" @click="handleUpdate"
|
|
|
|
|
v-hasPermi="['system:fee:edit']">修改</el-button>
|
2024-05-20 18:07:24 +08:00
|
|
|
|
</el-col>
|
|
|
|
|
<el-col :span="1.5">
|
2024-05-22 17:28:19 +08:00
|
|
|
|
<el-button type="danger" plain icon="el-icon-delete" size="mini" :disabled="multiple" @click="handleDelete"
|
|
|
|
|
v-hasPermi="['system:fee:remove']">删除</el-button>
|
2024-05-20 18:07:24 +08:00
|
|
|
|
</el-col>
|
|
|
|
|
<el-col :span="1.5">
|
2024-05-22 17:28:19 +08:00
|
|
|
|
<el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport"
|
|
|
|
|
v-hasPermi="['system:fee:export']">导出</el-button>
|
2024-05-20 18:07:24 +08:00
|
|
|
|
</el-col>
|
|
|
|
|
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
|
|
|
|
|
</el-row>
|
|
|
|
|
|
|
|
|
|
<el-table v-loading="loading" :data="feeList" @selection-change="handleSelectionChange">
|
|
|
|
|
<el-table-column type="selection" width="55" align="center" />
|
|
|
|
|
<el-table-column label="id" align="center" prop="ruleId" />
|
|
|
|
|
<el-table-column label="套餐名称" align="center" prop="name" />
|
2024-05-27 09:02:28 +08:00
|
|
|
|
<el-table-column label="说明" align="center" prop="instructions" />
|
2024-05-28 13:53:17 +08:00
|
|
|
|
<!-- <el-table-column label="时间(小时)" align="center" prop="time" />
|
|
|
|
|
<el-table-column label="费用(元)" align="center" prop="fee" /> -->
|
2024-05-20 18:07:24 +08:00
|
|
|
|
<el-table-column label="状态" align="center" prop="status">
|
|
|
|
|
<template slot-scope="scope">
|
2024-05-22 17:28:19 +08:00
|
|
|
|
<dict-tag :options="dict.type.sys_normal_disable" :value="scope.row.status" />
|
2024-05-20 18:07:24 +08:00
|
|
|
|
</template>
|
|
|
|
|
</el-table-column>
|
|
|
|
|
<el-table-column label="创建时间" align="center" prop="createTime" width="180">
|
|
|
|
|
<template slot-scope="scope">
|
|
|
|
|
<span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d}') }}</span>
|
|
|
|
|
</template>
|
|
|
|
|
</el-table-column>
|
|
|
|
|
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
|
|
|
|
|
<template slot-scope="scope">
|
2024-05-22 17:28:19 +08:00
|
|
|
|
<el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)"
|
|
|
|
|
v-hasPermi="['system:fee:edit']">修改</el-button>
|
|
|
|
|
<el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)"
|
|
|
|
|
v-hasPermi="['system:fee:remove']">删除</el-button>
|
2024-05-20 18:07:24 +08:00
|
|
|
|
</template>
|
|
|
|
|
</el-table-column>
|
|
|
|
|
</el-table>
|
|
|
|
|
|
2024-05-22 17:28:19 +08:00
|
|
|
|
<pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize"
|
|
|
|
|
@pagination="getList" />
|
2024-05-20 18:07:24 +08:00
|
|
|
|
|
|
|
|
|
<!-- 添加或修改收费方式对话框 -->
|
|
|
|
|
<el-dialog :title="title" :visible.sync="open" width="1200px" append-to-body>
|
2024-05-22 17:28:19 +08:00
|
|
|
|
|
|
|
|
|
|
2024-05-20 18:07:24 +08:00
|
|
|
|
<el-form ref="form" :model="form" :rules="rules" label-width="150px">
|
2024-05-22 17:28:19 +08:00
|
|
|
|
<el-form-item label="套餐名称" prop="name">
|
|
|
|
|
<el-input v-model="form.name" placeholder="请输入套餐名称" />
|
|
|
|
|
</el-form-item>
|
2024-05-27 09:02:28 +08:00
|
|
|
|
<el-form-item label="说明" prop="instructions" :show-overflow-tooltip="true">
|
|
|
|
|
<editor v-model="form.instructions" :min-height="192"/>
|
|
|
|
|
<!-- <el-input v-model="form.explain" type="textarea" placeholder="请输入内容" /> -->
|
2024-05-22 17:28:19 +08:00
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="状态" prop="status" v-if="title != '添加收费方式'">
|
|
|
|
|
<el-select v-model="form.status" placeholder="请选择状态">
|
|
|
|
|
<el-option v-for="dict in dict.type.sys_normal_disable" :key="dict.value" :label="dict.label"
|
|
|
|
|
:value="dict.value"></el-option>
|
|
|
|
|
</el-select>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="还车结算">
|
|
|
|
|
<el-col :span="4">
|
|
|
|
|
<el-input v-model="form.autoRefundDeposit" placeholder="请输入" />
|
|
|
|
|
</el-col>
|
|
|
|
|
小时 后自动退押金
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="订单超过" prop="unit">
|
|
|
|
|
<el-col :span="4">
|
|
|
|
|
<el-input v-model="form.orderExceedMinutes" placeholder="请输入" />
|
|
|
|
|
</el-col>
|
|
|
|
|
<el-col :span="1.2">
|
|
|
|
|
分钟,每
|
|
|
|
|
</el-col>
|
|
|
|
|
|
|
|
|
|
<el-col :span="4">
|
|
|
|
|
<el-input v-model="form.orderExceedWarn" placeholder="请输入" />
|
|
|
|
|
</el-col>
|
|
|
|
|
分钟语音提醒一次归还设备
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="免费骑行" prop="freeRideTime">
|
|
|
|
|
<el-col :span="4">
|
|
|
|
|
<el-input v-model="form.freeRideTime" placeholder="请输入" />
|
|
|
|
|
</el-col>
|
|
|
|
|
分钟
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<!-- 套餐名称、说明、租赁单位等字段省略,假设这些部分不需要修改 -->
|
|
|
|
|
<el-form-item label="租赁单位" prop="rentalUnit">
|
|
|
|
|
<el-radio-group v-model="form.rentalUnit" @change="handleUnitChange">
|
|
|
|
|
<el-radio label="minutes">按分钟</el-radio>
|
|
|
|
|
<el-radio label="hours">按小时</el-radio>
|
|
|
|
|
<el-radio label="day">按天</el-radio>
|
|
|
|
|
</el-radio-group>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<!-- 计费周期和封顶金额,只在非按天计费时显示 -->
|
|
|
|
|
|
|
|
|
|
<!-- 骑行计费规则选择 -->
|
|
|
|
|
<el-form-item label="骑行计费规则" prop="ridingRule">
|
|
|
|
|
<el-radio-group v-model="form.ridingRule" @change="handleBillingRuleChange">
|
|
|
|
|
<el-radio label="1">起步价计费</el-radio>
|
|
|
|
|
<el-radio label="2">区间计费</el-radio>
|
|
|
|
|
</el-radio-group>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<!-- 起步价计费选项 -->
|
|
|
|
|
<div v-if="form.ridingRule == '1'">
|
|
|
|
|
<el-form-item label="起步价">
|
|
|
|
|
<el-row :gutter="10">
|
|
|
|
|
<el-col :span="6">
|
2024-05-28 13:53:17 +08:00
|
|
|
|
<el-input v-model="startingPrice" placeholder="请输入起步价" />
|
2024-05-22 17:28:19 +08:00
|
|
|
|
</el-col>
|
|
|
|
|
<el-col :span="2" style="line-height: 32px;">
|
|
|
|
|
元(含
|
|
|
|
|
</el-col>
|
|
|
|
|
<el-col :span="6">
|
2024-05-28 13:53:17 +08:00
|
|
|
|
<el-input v-model="startingTime" placeholder="请输入起步时间" />
|
2024-05-22 17:28:19 +08:00
|
|
|
|
</el-col>
|
|
|
|
|
<el-col :span="2" style="line-height: 32px;">
|
|
|
|
|
{{ timeUnit }})
|
|
|
|
|
</el-col>
|
|
|
|
|
</el-row>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="超出价">
|
|
|
|
|
<el-row :gutter="10">
|
|
|
|
|
<el-col :span="6">
|
2024-05-28 13:53:17 +08:00
|
|
|
|
<el-input v-model="timeoutPrice" placeholder="请输入超出价格" />
|
2024-05-22 17:28:19 +08:00
|
|
|
|
</el-col>
|
|
|
|
|
<el-col :span="2" style="line-height: 32px;">
|
|
|
|
|
元/
|
|
|
|
|
</el-col>
|
|
|
|
|
<el-col :span="6">
|
2024-05-28 13:53:17 +08:00
|
|
|
|
<el-input v-model="timeoutTime" placeholder="请输入超出时间" />
|
2024-05-22 17:28:19 +08:00
|
|
|
|
</el-col>
|
|
|
|
|
<el-col :span="4" style="line-height: 32px;">
|
|
|
|
|
{{ timeUnit }}(超出起步价后)
|
|
|
|
|
</el-col>
|
|
|
|
|
</el-row>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item>
|
|
|
|
|
<div>
|
|
|
|
|
注:
|
|
|
|
|
<br />1) 不是起步时间的仍按起步时间收取费用;超出起步时间后的均匀计算。
|
|
|
|
|
<br />2) 为避免免费用户使用,切勿频繁切换。
|
|
|
|
|
</div>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</div>
|
2024-05-20 18:07:24 +08:00
|
|
|
|
<!-- 区间计费选项 -->
|
2024-05-22 17:28:19 +08:00
|
|
|
|
<div v-if="form.ridingRule == '2'">
|
2024-05-20 18:07:24 +08:00
|
|
|
|
<el-form-item label="启用区间">
|
2024-05-22 17:28:19 +08:00
|
|
|
|
<!-- <el-switch v-model="form.enablelnterval" @change="toggleInterval" /> -->
|
2024-05-20 18:07:24 +08:00
|
|
|
|
</el-form-item>
|
2024-05-22 17:28:19 +08:00
|
|
|
|
<div>
|
|
|
|
|
<div v-for="(interval, index) in rule" :key="index" class="interval-group"
|
|
|
|
|
style="display: flex;flex-wrap: wrap;">
|
|
|
|
|
<el-form-item>
|
|
|
|
|
<el-row :gutter="10">
|
|
|
|
|
<div style="display: flex;flex-wrap: nowrap;">
|
|
|
|
|
<el-col :span="1">
|
|
|
|
|
<span>在</span>
|
|
|
|
|
</el-col>
|
|
|
|
|
<el-col :span="2">
|
|
|
|
|
<el-input v-model="interval.start" :placeholder="'请输入'" />
|
|
|
|
|
</el-col>
|
|
|
|
|
<el-col :span="0.5" style="line-height: 32px;">
|
|
|
|
|
~
|
|
|
|
|
</el-col>
|
|
|
|
|
<el-col :span="2">
|
|
|
|
|
<el-input v-model="interval.end" :placeholder="'请输入'" />
|
|
|
|
|
</el-col>
|
|
|
|
|
<el-col :span="2.5" style="line-height: 32px;">
|
|
|
|
|
{{ timeUnit }} 之间,
|
|
|
|
|
</el-col>
|
|
|
|
|
<el-col :span="3" v-if="!form.enablelnterval">
|
|
|
|
|
每<el-input v-model="interval.eachUnit" placeholder="请输入" />
|
|
|
|
|
</el-col>
|
|
|
|
|
<el-col :span="2" style="line-height: 32px;">
|
|
|
|
|
<span v-if="!form.enablelnterval">{{ timeUnit }}</span> 收费
|
|
|
|
|
</el-col>
|
|
|
|
|
<el-col :span="4">
|
|
|
|
|
<el-input v-model="interval.fee" placeholder="请输入" />
|
|
|
|
|
</el-col>
|
|
|
|
|
<el-col :span="1" style="line-height: 32px;">
|
|
|
|
|
元
|
|
|
|
|
</el-col>
|
|
|
|
|
<el-col :span="2">
|
|
|
|
|
<el-button type="danger" icon="el-icon-delete" @click="removeInterval(index)">删除</el-button>
|
|
|
|
|
</el-col>
|
|
|
|
|
</div>
|
|
|
|
|
</el-row>
|
|
|
|
|
</el-form-item>
|
2024-05-20 18:07:24 +08:00
|
|
|
|
</div>
|
|
|
|
|
<el-form-item>
|
|
|
|
|
<el-row :gutter="10">
|
2024-05-22 17:28:19 +08:00
|
|
|
|
<el-col :span="1">
|
2024-05-20 18:07:24 +08:00
|
|
|
|
<span>大于</span>
|
|
|
|
|
</el-col>
|
2024-05-22 17:28:19 +08:00
|
|
|
|
<el-col :span="2">
|
|
|
|
|
<el-input placeholder="请输入" v-model="more.start" />
|
2024-05-20 18:07:24 +08:00
|
|
|
|
</el-col>
|
2024-05-22 17:28:19 +08:00
|
|
|
|
<el-col :span="3" style="line-height: 32px;">
|
2024-05-20 18:07:24 +08:00
|
|
|
|
{{ timeUnit }} 之后,每
|
|
|
|
|
</el-col>
|
|
|
|
|
<el-col :span="4">
|
2024-05-22 17:28:19 +08:00
|
|
|
|
<el-input placeholder="请输入" v-model="more.eachUnit" />
|
2024-05-20 18:07:24 +08:00
|
|
|
|
</el-col>
|
2024-05-22 17:28:19 +08:00
|
|
|
|
<el-col :span="2" style="line-height: 32px;">
|
2024-05-20 18:07:24 +08:00
|
|
|
|
{{ timeUnit }} 收费
|
|
|
|
|
</el-col>
|
2024-05-22 17:28:19 +08:00
|
|
|
|
<el-col :span="2">
|
|
|
|
|
<el-input placeholder="请输入" v-model="more.fee" />
|
2024-05-20 18:07:24 +08:00
|
|
|
|
</el-col>
|
|
|
|
|
<el-col :span="1" style="line-height: 32px;">
|
|
|
|
|
元
|
|
|
|
|
</el-col>
|
|
|
|
|
</el-row>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item>
|
2024-05-22 17:28:19 +08:00
|
|
|
|
<el-button type="primary" icon="el-icon-plus" @click="addInterval">添加区间</el-button>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item>
|
|
|
|
|
<div style="color: red;">
|
2024-05-20 18:07:24 +08:00
|
|
|
|
注:
|
2024-05-22 17:28:19 +08:00
|
|
|
|
|
2024-05-20 18:07:24 +08:00
|
|
|
|
<br />1) 不是单位时间的仍按单位时间收取费用;超出起步时间后的均匀计算。
|
|
|
|
|
<br />2) 为避免免费用户使用,切勿频繁切换。
|
2024-05-22 17:28:19 +08:00
|
|
|
|
<br />3) 请注意第一个时间应该为0,时间区间要连贯 不能出现有时间跨度的场景 如 1-20 每30分钟收费10元 大于50分钟之后,每分钟10分钟收费30元这种情况,否则无法计算!!!!
|
2024-05-20 18:07:24 +08:00
|
|
|
|
</div>
|
|
|
|
|
</el-form-item>
|
2024-05-22 17:28:19 +08:00
|
|
|
|
|
2024-05-20 18:07:24 +08:00
|
|
|
|
</div>
|
2024-05-22 17:28:19 +08:00
|
|
|
|
|
2024-05-20 18:07:24 +08:00
|
|
|
|
</div>
|
2024-05-22 17:28:19 +08:00
|
|
|
|
<el-form-item v-if="form.rentalUnit != 'day'" label="计费周期" prop="chargingCycle">
|
|
|
|
|
<el-radio-group v-model="form.chargingCycle">
|
|
|
|
|
<el-radio label="1">
|
|
|
|
|
订单生成后
|
|
|
|
|
<el-input v-model="form.chargingCycleValue"
|
|
|
|
|
style="width: 80px; display: inline-block; margin-left: 10px;" />
|
|
|
|
|
小时
|
|
|
|
|
</el-radio>
|
|
|
|
|
<el-radio label="2">
|
|
|
|
|
自定义时刻
|
|
|
|
|
<el-time-picker v-model="form.chargingCycleValue" placeholder="选择时间" style="margin-left: 10px;" />
|
|
|
|
|
</el-radio>
|
|
|
|
|
</el-radio-group>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item v-if="form.rentalUnit != 'day'">
|
|
|
|
|
<div>
|
|
|
|
|
|
|
|
|
|
<br />1) 若计费周期为订单生成后X小时,每达到X小时,订单按规则重新计费,各周期内金额总和为订单总费用;
|
|
|
|
|
<br />2) 若计费周期为自定义时刻,每当达到该时刻,订单按规则重新计费,各周期内金额总和为订单总费用
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item v-if="form.rentalUnit != 'day'" label="封顶金额" prop="cappedAmount">
|
|
|
|
|
<el-col :span="4">
|
|
|
|
|
<el-input v-model="form.cappedAmount" placeholder="请输入封顶金额" />
|
|
|
|
|
</el-col>
|
|
|
|
|
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item v-if="form.rentalUnit != 'day'">
|
|
|
|
|
<div>
|
|
|
|
|
注:在单个计费周期内,达到封顶金额后,则订单费用不再增加;超过计费周期后,在新的周期内重新计费,订单总费用继续增加
|
|
|
|
|
</div>
|
|
|
|
|
</el-form-item>
|
2024-05-20 18:07:24 +08:00
|
|
|
|
</el-form>
|
|
|
|
|
<div slot="footer" class="dialog-footer">
|
|
|
|
|
<el-button type="primary" @click="submitForm">确 定</el-button>
|
|
|
|
|
<el-button @click="cancel">取 消</el-button>
|
|
|
|
|
</div>
|
|
|
|
|
</el-dialog>
|
|
|
|
|
</div>
|
|
|
|
|
</template>
|
|
|
|
|
|
|
|
|
|
<script>
|
|
|
|
|
import { listFee, getFee, delFee, addFee, updateFee } from "@/api/system/fee";
|
|
|
|
|
|
|
|
|
|
export default {
|
|
|
|
|
name: "Fee",
|
|
|
|
|
dicts: ['sys_normal_disable'],
|
|
|
|
|
data() {
|
|
|
|
|
return {
|
|
|
|
|
loading: true,
|
|
|
|
|
ids: [],
|
|
|
|
|
single: true,
|
|
|
|
|
multiple: true,
|
|
|
|
|
showSearch: true,
|
|
|
|
|
total: 0,
|
|
|
|
|
feeList: [],
|
|
|
|
|
title: "",
|
|
|
|
|
open: false,
|
|
|
|
|
queryParams: {
|
|
|
|
|
pageNum: 1,
|
|
|
|
|
pageSize: 10,
|
|
|
|
|
name: null,
|
|
|
|
|
status: null,
|
|
|
|
|
},
|
|
|
|
|
form: {
|
2024-05-22 17:28:19 +08:00
|
|
|
|
name: '',
|
2024-05-27 09:02:28 +08:00
|
|
|
|
instructions: '',
|
2024-05-22 17:28:19 +08:00
|
|
|
|
status: "正常",
|
|
|
|
|
autoRefundDeposit: '',
|
|
|
|
|
orderExceedMinutes: '',
|
|
|
|
|
orderExceedWarn: '',
|
|
|
|
|
freeRideTime: '',
|
|
|
|
|
rentalUnit: 'minutes',
|
|
|
|
|
ridingRule: '1',
|
|
|
|
|
chargingCycle: '',
|
|
|
|
|
chargingCycleValue: '',
|
|
|
|
|
cappedAmount: '',
|
|
|
|
|
|
|
|
|
|
rule: [{ start: '', end: '', eachUnit: '', fee: '' }],
|
|
|
|
|
// chargingCycle: 1, // 默认选择第一个选项
|
|
|
|
|
// chargingCycleValue: '', // 对应的值
|
2024-05-20 18:07:24 +08:00
|
|
|
|
},
|
2024-05-28 13:53:17 +08:00
|
|
|
|
timeoutTime: '',
|
|
|
|
|
startingPrice: '',
|
|
|
|
|
startingTime: '',
|
|
|
|
|
timeoutPrice: '',
|
2024-05-22 17:28:19 +08:00
|
|
|
|
enablelnterval: false,
|
|
|
|
|
rule: [{ start: '', end: '', eachUnit: '', fee: '' }],
|
|
|
|
|
more: { start: '', end: '9999', eachUnit: '', fee: '' },
|
2024-05-20 18:07:24 +08:00
|
|
|
|
timeUnit: '分钟',
|
|
|
|
|
rules: {
|
2024-05-22 17:28:19 +08:00
|
|
|
|
name: [
|
|
|
|
|
{ required: true, message: '请输入套餐名称', trigger: 'blur' },
|
|
|
|
|
],
|
2024-05-27 09:02:28 +08:00
|
|
|
|
instructions: [
|
2024-05-22 17:28:19 +08:00
|
|
|
|
{ required: true, message: '请输入说明', trigger: 'blur' },
|
|
|
|
|
],
|
|
|
|
|
status: [
|
|
|
|
|
{ required: true, message: '请选择状态', trigger: 'change' },
|
|
|
|
|
],
|
|
|
|
|
// autoRefundDeposit: [
|
|
|
|
|
// { required: true, message: '请输入还车结算时间', trigger: 'blur' },
|
|
|
|
|
// ],
|
|
|
|
|
orderExceedMinutes: [
|
|
|
|
|
{ required: true, message: '请输入订单超过时间', trigger: 'blur' },
|
|
|
|
|
],
|
|
|
|
|
orderExceedWarn: [
|
|
|
|
|
{ required: true, message: '请输入订单提醒时间', trigger: 'blur' },
|
|
|
|
|
],
|
|
|
|
|
freeRideTime: [
|
|
|
|
|
{ required: true, message: '请输入免费骑行时间', trigger: 'blur' },
|
|
|
|
|
],
|
|
|
|
|
rentalUnit: [
|
|
|
|
|
{ required: true, message: '请选择租赁单位', trigger: 'change' },
|
|
|
|
|
],
|
|
|
|
|
chargingCycle: [
|
|
|
|
|
{ required: true, message: '请选择计费周期', trigger: 'change' },
|
|
|
|
|
],
|
|
|
|
|
cappedAmount: [
|
|
|
|
|
{ required: true, message: '请输入封顶金额', trigger: 'blur' },
|
|
|
|
|
],
|
|
|
|
|
ridingRule: [
|
|
|
|
|
{ required: true, message: '请选择骑行计费规则', trigger: 'change' },
|
|
|
|
|
],
|
|
|
|
|
hourlyFee: [
|
|
|
|
|
{ required: true, message: '请输入每小时收费', trigger: 'blur' },
|
|
|
|
|
],
|
|
|
|
|
perKmFee: [
|
|
|
|
|
{ required: true, message: '请输入每公里收费', trigger: 'blur' },
|
|
|
|
|
],
|
|
|
|
|
sectionCharges: [
|
|
|
|
|
{ required: true, message: '请输入区间收费', trigger: 'blur' },
|
|
|
|
|
],
|
|
|
|
|
},
|
2024-05-20 18:07:24 +08:00
|
|
|
|
};
|
|
|
|
|
},
|
|
|
|
|
created() {
|
|
|
|
|
this.getList();
|
|
|
|
|
},
|
|
|
|
|
methods: {
|
|
|
|
|
handleUnitChange() {
|
2024-05-22 17:28:19 +08:00
|
|
|
|
if (this.form.rentalUnit == 'minutes') {
|
|
|
|
|
this.timeUnit = '分钟';
|
|
|
|
|
} else if (this.form.rentalUnit == 'hours') {
|
|
|
|
|
this.timeUnit = '小时';
|
|
|
|
|
} else if (this.form.rentalUnit == 'day') {
|
|
|
|
|
this.timeUnit = '天';
|
|
|
|
|
// 如果需要的话,你可以取消注释下面的代码,以处理特定于“天”的逻辑
|
|
|
|
|
// this.form.intervals = [];
|
2024-05-20 18:07:24 +08:00
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
handleBillingRuleChange() {
|
2024-05-22 17:28:19 +08:00
|
|
|
|
if (this.form.ridingRule === '2' && this.rule.length === 0) {
|
2024-05-20 18:07:24 +08:00
|
|
|
|
this.addInterval();
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
addInterval() {
|
2024-05-22 17:28:19 +08:00
|
|
|
|
this.rule.push({ start: '', end: '', eachUnit: '', fee: '' });
|
2024-05-20 18:07:24 +08:00
|
|
|
|
},
|
|
|
|
|
removeInterval(index) {
|
2024-05-22 17:28:19 +08:00
|
|
|
|
this.rule.splice(index, 1);
|
2024-05-20 18:07:24 +08:00
|
|
|
|
},
|
|
|
|
|
getList() {
|
|
|
|
|
this.loading = true;
|
|
|
|
|
listFee(this.queryParams).then(response => {
|
|
|
|
|
this.feeList = response.rows;
|
|
|
|
|
this.total = response.total;
|
|
|
|
|
this.loading = false;
|
|
|
|
|
});
|
|
|
|
|
},
|
|
|
|
|
cancel() {
|
|
|
|
|
this.open = false;
|
|
|
|
|
this.reset();
|
|
|
|
|
},
|
|
|
|
|
reset() {
|
|
|
|
|
this.form = {
|
2024-05-22 17:28:19 +08:00
|
|
|
|
name: '',
|
2024-05-27 09:02:28 +08:00
|
|
|
|
instructions: '',
|
2024-05-22 17:28:19 +08:00
|
|
|
|
status: "正常",
|
|
|
|
|
autoRefundDeposit: '',
|
|
|
|
|
orderExceedMinutes: '',
|
|
|
|
|
orderExceedWarn: '',
|
|
|
|
|
freeRideTime: '',
|
|
|
|
|
rentalUnit: 'minutes',
|
|
|
|
|
ridingRule: '1',
|
|
|
|
|
chargingCycle: '',
|
|
|
|
|
chargingCycleValue: '',
|
|
|
|
|
cappedAmount: '',
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
this.enablelnterval = false,
|
|
|
|
|
this.more = { start: '', end: '9999', eachUnit: '', fee: '' }
|
|
|
|
|
this.rule = [{ start: '', end: '', eachUnit: '', fee: '' }],
|
2024-05-28 13:53:17 +08:00
|
|
|
|
this.timeoutTime = '',
|
|
|
|
|
this.startingPrice = '',
|
|
|
|
|
this.startingTime = '',
|
|
|
|
|
this.timeoutPrice = '',
|
2024-05-22 17:28:19 +08:00
|
|
|
|
this.resetForm("form")
|
2024-05-20 18:07:24 +08:00
|
|
|
|
},
|
|
|
|
|
handleQuery() {
|
|
|
|
|
this.queryParams.pageNum = 1;
|
|
|
|
|
this.getList();
|
|
|
|
|
},
|
|
|
|
|
resetQuery() {
|
|
|
|
|
this.resetForm("queryForm");
|
|
|
|
|
this.handleQuery();
|
|
|
|
|
},
|
|
|
|
|
handleSelectionChange(selection) {
|
|
|
|
|
this.ids = selection.map(item => item.ruleId);
|
|
|
|
|
this.single = selection.length !== 1;
|
|
|
|
|
this.multiple = !selection.length;
|
|
|
|
|
},
|
|
|
|
|
handleAdd() {
|
|
|
|
|
this.reset();
|
|
|
|
|
this.open = true;
|
|
|
|
|
this.title = "添加收费方式";
|
|
|
|
|
},
|
|
|
|
|
handleUpdate(row) {
|
|
|
|
|
this.reset();
|
|
|
|
|
const ruleId = row.ruleId || this.ids;
|
|
|
|
|
getFee(ruleId).then(response => {
|
|
|
|
|
this.form = response.data;
|
2024-05-28 13:53:17 +08:00
|
|
|
|
if(this.form.rentalUnit=='minutes'){
|
|
|
|
|
this.timeUnit='分钟'
|
|
|
|
|
}else if(this.form.rentalUnit=='hours'){
|
|
|
|
|
this.timeUnit='小时'
|
|
|
|
|
}else if(this.form.rentalUnit=='day'){
|
|
|
|
|
this.timeUnit='天'
|
|
|
|
|
}
|
2024-05-22 17:28:19 +08:00
|
|
|
|
// delete this.form.ridingRuleJson;
|
|
|
|
|
let json = JSON.parse(response.data.ridingRuleJson)
|
|
|
|
|
if (this.form.ridingRule == 1) {
|
2024-05-28 13:53:17 +08:00
|
|
|
|
this.timeoutTime = json.timeoutTime
|
|
|
|
|
this.startingPrice = json.startingPrice
|
|
|
|
|
this.startingTime = json.startingTime
|
|
|
|
|
this.timeoutPrice = json.timeoutPrice
|
2024-05-22 17:28:19 +08:00
|
|
|
|
} else {
|
|
|
|
|
this.rule = json.rule.slice(0, -1);
|
|
|
|
|
|
|
|
|
|
// 获取数组的最后一个元素
|
|
|
|
|
this.more = json.rule[json.rule.length - 1];
|
|
|
|
|
}
|
|
|
|
|
console.log(this.form,'this.formthis.form');
|
2024-05-20 18:07:24 +08:00
|
|
|
|
this.open = true;
|
|
|
|
|
this.title = "修改收费方式";
|
|
|
|
|
});
|
|
|
|
|
},
|
|
|
|
|
submitForm() {
|
|
|
|
|
this.$refs["form"].validate(valid => {
|
|
|
|
|
if (valid) {
|
2024-05-22 17:28:19 +08:00
|
|
|
|
// this.form.rule.push(this.more)
|
|
|
|
|
// console.log(this.form,'mmmmmmmmmmmmm');
|
|
|
|
|
let data = { ...this.form }; // 使用对象扩展运算符确保复制一个新对象,避免直接修改 this.form
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
this.rule.push(this.more)
|
|
|
|
|
data.ridingRuleJson = {}
|
|
|
|
|
if (this.form.ridingRule == 2) {
|
|
|
|
|
data.ridingRuleJson.rule = this.rule
|
|
|
|
|
data.ridingRuleJson.enablelnterval = this.enablelnterval
|
|
|
|
|
|
|
|
|
|
} else {
|
2024-05-28 13:53:17 +08:00
|
|
|
|
data.ridingRuleJson.timeoutTime = this.timeoutTime
|
|
|
|
|
data.ridingRuleJson.startingPrice = this.startingPrice
|
|
|
|
|
data.ridingRuleJson.startingTime = this.startingTime
|
|
|
|
|
data.ridingRuleJson.timeoutPrice = this.timeoutPrice
|
2024-05-22 17:28:19 +08:00
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
data.ridingRuleJson = JSON.stringify(data.ridingRuleJson);
|
|
|
|
|
|
|
|
|
|
// console.log(data, 'mmmmmmmmmmmmm');
|
2024-05-20 18:07:24 +08:00
|
|
|
|
if (this.form.ruleId != null) {
|
2024-05-22 17:28:19 +08:00
|
|
|
|
updateFee(data).then(() => {
|
2024-05-20 18:07:24 +08:00
|
|
|
|
this.$message.success("修改成功");
|
|
|
|
|
this.open = false;
|
|
|
|
|
this.getList();
|
2024-05-22 17:28:19 +08:00
|
|
|
|
this.reset()
|
2024-05-20 18:07:24 +08:00
|
|
|
|
});
|
|
|
|
|
} else {
|
2024-05-22 17:28:19 +08:00
|
|
|
|
addFee(data).then(() => {
|
2024-05-20 18:07:24 +08:00
|
|
|
|
this.$message.success("新增成功");
|
|
|
|
|
this.open = false;
|
|
|
|
|
this.getList();
|
2024-05-22 17:28:19 +08:00
|
|
|
|
this.reset()
|
2024-05-20 18:07:24 +08:00
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
},
|
|
|
|
|
handleDelete(row) {
|
|
|
|
|
const ruleIds = row.ruleId || this.ids;
|
|
|
|
|
this.$confirm('是否确认删除收费方式编号为"' + ruleIds + '"的数据项?')
|
|
|
|
|
.then(() => {
|
|
|
|
|
return delFee(ruleIds);
|
|
|
|
|
}).then(() => {
|
|
|
|
|
this.getList();
|
|
|
|
|
this.$message.success("删除成功");
|
2024-05-22 17:28:19 +08:00
|
|
|
|
}).catch(() => { });
|
2024-05-20 18:07:24 +08:00
|
|
|
|
},
|
|
|
|
|
handleExport() {
|
|
|
|
|
this.download('system/fee/export', {
|
|
|
|
|
...this.queryParams
|
|
|
|
|
}, `fee_${new Date().getTime()}.xlsx`);
|
|
|
|
|
},
|
|
|
|
|
resetForm(formName) {
|
|
|
|
|
this.$refs[formName] && this.$refs[formName].resetFields();
|
|
|
|
|
},
|
|
|
|
|
toggleInterval() {
|
2024-05-22 17:28:19 +08:00
|
|
|
|
if (!this.form.enablelnterval) {
|
|
|
|
|
|
|
|
|
|
this.more = { start: '', end: '9999', eachUnit: '', fee: '' }
|
|
|
|
|
this.enablelnterval = false
|
|
|
|
|
|
|
|
|
|
this.rule = [{ start: '', end: '', eachUnit: '', fee: '' }]
|
2024-05-28 13:53:17 +08:00
|
|
|
|
this.timeoutTime = ''
|
|
|
|
|
this.startingPrice = ''
|
|
|
|
|
this.startingTime = ''
|
|
|
|
|
this.timeoutPrice = ''
|
2024-05-20 18:07:24 +08:00
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
</script>
|
|
|
|
|
|
|
|
|
|
<style scoped>
|
|
|
|
|
.interval-group {
|
|
|
|
|
margin-bottom: 10px;
|
|
|
|
|
}
|
2024-05-22 17:28:19 +08:00
|
|
|
|
|
2024-05-20 18:07:24 +08:00
|
|
|
|
.el-row {
|
|
|
|
|
align-items: center;
|
|
|
|
|
}
|
2024-05-22 17:28:19 +08:00
|
|
|
|
|
2024-05-20 18:07:24 +08:00
|
|
|
|
.el-col {
|
|
|
|
|
display: flex;
|
|
|
|
|
align-items: center;
|
|
|
|
|
}
|
2024-05-22 17:28:19 +08:00
|
|
|
|
</style>
|