bike/pages_adminSet/modelMt.vue
2024-10-31 17:46:59 +08:00

649 lines
14 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>
<view class="page">
<u-navbar title="车型编辑" :border-bottom="false" :background="bgc" title-color='#000' title-size='36'
height='45'></u-navbar>
<view class="card">
<view class="card_li">
<view class="card_left">
车型名称
</view>
<view class="card_right">
<input type="text" v-model="data.model" placeholder="请输入车型名称" class="input"
placeholder-style="color:#C7CDD3">
</view>
</view>
<view class="card_li" style="margin-top: 30rpx;" v-if="false">
<view class="up_left">
<view class="txt1">
上传车辆照片
</view>
<view class="txt2">
门头照片必须清晰、方正、易于辨识
</view>
</view>
<view class="up_rignt">
<image src="https://lxnapi.ccttiot.com/bike/img/static/u08cpfIllwweGcS9awYP" mode=""
v-if="data.picture==''" @click="btn()"></image>
<image :src="data.picture" mode="" v-else></image>
<image src="https://lxnapi.ccttiot.com/bike/img/static/uFp9riSLtpmuq6gyKfdr" mode="" class="close"
v-if="data.picture!=''" @click="data.picture=''"></image>
</view>
</view>
</view>
<view class="card">
<view class="card_li">
<view class="card_left">
最高电压
</view>
<view class="card_right">
<input type="text" v-model="data.fullVoltage" placeholder="请输入电压" class="input"
placeholder-style="color:#C7CDD3"><span> v</span>
</view>
</view>
<view class="card_li">
<view class="card_left">
最低电压
</view>
<view class="card_right">
<input type="text" v-model="data.lowVoltage" placeholder="请输入电压" class="input"
placeholder-style="color:#C7CDD3"><span> v</span>
</view>
</view>
<view class="card_li">
<view class="card_left">
满电续航
</view>
<view class="card_right">
<input type="text" v-model="data.fullEndurance" placeholder="请输入续航公里" class="input"
placeholder-style="color:#C7CDD3">
<span> KM</span>
</view>
</view>
<view class="card_li">
<view class="card_left">
低电量提醒
</view>
<view class="card_right">
<u-switch v-model="data.lowBatteryReminderSwitch"></u-switch>
<!-- <input type="text" v-model="data.lowBatteryReminder" placeholder="请输入提醒电量" class="input"
placeholder-style="color:#C7CDD3">
<span> %</span> -->
</view>
</view>
<view class="card_li" v-if="data.lowBatteryReminderSwitch">
<view class="card_left">
骑行低电量提醒(%
</view>
<view class="card_right">
<input type="text" v-model="data.lowBatteryReminder" placeholder="请输入提醒电量" class="input"
placeholder-style="color:#C7CDD3">
<span> %</span>
</view>
</view>
<!-- <view class="card_li">
<view class="card_left">
车型简介
</view>
<view class="card_right">
<input type="text" v-model="data.description" placeholder="请输入车型简介" class="input"
placeholder-style="color:#C7CDD3">
</view>
</view> -->
</view>
<!-- <view class="card">
<view class="card_li">
<view class="card_left">
收费模板
</view>
<view class="card_right">
无日租 <view class="iconfont icon-xiangyou1 " style="color: #CBCBCB;">
</view>
</view>
</view>
</view> -->
<view class="card">
<view class="card_li1">
<view class="card_top" @click="showpart=true">
<view class="card_left">
收费模版
</view>
<view class="card_right">
<view class="iconfont icon-xiangyou1 " style="color: #CBCBCB;">
</view>
</view>
</view>
<!-- <view class="taocan" v-if="data.ruleIds">
{{getAccessoryNames()}}
</view> -->
<view class="taocan" v-if="data.ruleIds">
<view v-for="(name, index) in getAccessoryNames()" :key="index"
style="width: 100%; display: flex;margin-top: 10rpx;">
<view class="tc_li">
{{ name }}
</view>
</view>
</view>
<!-- <span v-if="data.ruleIds">{{getAccessoryNames()}}</span> -->
</view>
</view>
<u-mask :show="showpart" :z-index='100' @click="closepart()" />
<view class="choose_part" v-if="showpart">
<view class="tit">
选择收费方式
</view>
<view class="part_box">
<view class="" v-for="(item, index) in Accessorylist" :key="index" @click="chooseAcc(item.ruleId)"
style="width: 100%; display: flex;margin-top: 10rpx;">
<view class="part" :class="data.ruleIds.includes(item.ruleId) ? 'act' : ''">
{{item.name}}
<image src="https://lxnapi.ccttiot.com/bike/img/static/uJNlGEGmN0F4AuPJmOZn" mode=""
v-if="data.ruleIds.includes(item.ruleId)">
</image>
</view>
</view>
</view>
<view class="btn" @click="subacc()">
确定
</view>
</view>
<view class="btn_box">
<view class="btn1" @click="backpage()">
取消
</view>
<view class="btn2" @click="sub">
保存
</view>
</view>
</view>
</template>
<script>
export default {
data() {
return {
bgc: {
backgroundColor: "#fff",
},
showpart: false,
list: [],
Accessorylist: [],
chooseIdxArr: [], // 存储选中的索引
data: {
model: "",
fullVoltage: "",
lowVoltage: "",
fullEndurance: "",
ruleIds: [],
lowBatteryReminder: '20',
lowBatteryReminderSwitch: false
// deposit: "",
// picture: "",
// description: "",
},
token: '',
upurl: '',
modelId: '',
areaId: ''
}
},
onLoad(e) {
if (e.modelId) {
console.log(e);
this.modelId = e.modelId
this.getmodelInfo()
}
if (uni.getStorageSync('adminAreaid')) {
this.areaId = uni.getStorageSync('adminAreaid')
}
// this.getQiniuToken()
},
onShow() {
this.getAccessorylist()
// this.getModelList()
},
methods: {
closepart() {
this.showpart = false
},
getmodelInfo() {
this.$u.get("system/model/" + this.modelId).then((res) => {
if (res.code == 200) {
this.data = res.data
this.data.ruleIds = res.ruleIds
console.log(this.data, 'this.datathis.data');
}
});
},
backpage() {
uni.redirectTo({
url: '/pages_adminSet/CarModel'
})
},
sub() {
if (this.data.model === undefined || this.data.model === null || this.data.model === '') {
uni.showToast({
title: '请填写车型名称',
icon: 'none',
duration: 2000
});
return; // 阻止请求继续执行
}
if (this.data.fullVoltage === undefined || this.data.fullVoltage === null || this.data.fullVoltage ===
'') {
uni.showToast({
title: '请填写满电电压',
icon: 'none',
duration: 2000
});
return;
}
if (this.data.lowVoltage === undefined || this.data.lowVoltage === null || this.data.lowVoltage === '') {
uni.showToast({
title: '请填写亏电电压',
icon: 'none',
duration: 2000
});
return;
}
if (this.data.fullEndurance === undefined || this.data.fullEndurance === null || this.data
.fullEndurance === '') {
uni.showToast({
title: '请填写续航公里数',
icon: 'none',
duration: 2000
});
return;
}
if (this.data.ruleIds.length < 1) {
uni.showToast({
title: '请选择收费模版',
icon: 'none',
duration: 2000
});
return;
}
if (this.modelId) {
this.data.areaId = this.areaId
this.$u.put("/system/model", this.data).then((res) => {
if (res.code == 200) {
uni.showToast({
title: '操作成功',
icon: 'none',
duration: 1000
});
setTimeout(() => {
uni.navigateBack()
}, 1200)
}
});
} else {
this.data.areaId = this.areaId
this.$u.post("/system/model", this.data).then((res) => {
if (res.code == 200) {
uni.showToast({
title: '操作成功',
icon: 'none',
duration: 1000
});
setTimeout(() => {
uni.navigateBack()
}, 1200)
}
});
}
},
subacc() {
this.showpart = false
console.log(this.chooseIdxArr);
},
chooseAcc(ruleId) {
const index = this.data.ruleIds.indexOf(ruleId);
if (index > -1) {
// 如果 ruleId 已经存在于 ruleIds 中,则从数组中删除
this.data.ruleIds.splice(index, 1);
} else {
// 如果 ruleId 不存在,则添加到 ruleIds 中
this.data.ruleIds.push(ruleId);
}
console.log(this.data.ruleIds, ' this.data.ruleIds');
},
getAccessoryNames(accessoryIds) {
// 根据 accessoryIds 找到 Accessorylist 中对应的 name 字段
// 遍历 accessoryIds 数组,根据每个 id 找到 Accessorylist 中对应的 name 字段
// const accessoryNames = this.data.ruleIds.map(id => {
// console.log(id);
// const item = this.Accessorylist.find(accessory => accessory.ruleId === id);
// return item ? item.name : '';
// });
// // 拼接 name 字符串,过滤掉空值
// return accessoryNames.filter(name => name).join(', ');
// 根据 accessoryIds 找到 Accessorylist 中对应的 name 字段
const accessoryNames = this.data.ruleIds.map(id => {
const item = this.Accessorylist.find(accessory => accessory.ruleId === id);
return item ? item.name : '';
});
// 过滤掉空值并返回数组
return accessoryNames.filter(name => name);
},
getAccessorylist() {
let data = {
areaId: this.areaId
}
this.$u.get(`/app/fee/list?`, data).then((res) => {
if (res.code == 200) {
this.Accessorylist = res.data
} else {
// 处理接口返回错误的情况
}
}).catch(error => {
// 处理接口请求失败的情况
});
},
getModelList() {
this.$u.get(`appAdmin/getModelListByMerchantId`).then((res) => {
if (res.code == 200) {
this.list = res.data
} else {
// 处理接口返回错误的情况
}
}).catch(error => {
// 处理接口请求失败的情况
});
},
}
}
</script>
<style lang="scss">
page {}
.page {
.choose_part {
position: fixed;
top: 530rpx;
left: 54rpx;
z-index: 110;
width: 644rpx;
padding: 40rpx 48rpx;
background: #FFFFFF;
border-radius: 26rpx 26rpx 26rpx 26rpx;
.part_box {
margin-top: 40rpx;
display: flex;
flex-wrap: wrap;
.part:nth-child(3n) {
margin-right: 0;
}
.part {
margin-top: 10rpx;
position: relative;
margin-right: 36rpx;
display: flex;
align-items: center;
justify-content: center;
// width: 160rpx;
// height: 60rpx;
padding: 10rpx 20rpx;
background: #F0F0F0;
border-radius: 6rpx 6rpx 6rpx 6rpx;
border: 1rpx solid #F0F0F0;
font-weight: 500;
font-size: 32rpx;
color: #3D3D3D;
image {
position: absolute;
right: 0;
bottom: 0;
width: 34rpx;
height: 34rpx;
}
}
.act {
background: #DCEDFF;
border: 1rpx solid #4297F3;
color: #4297F3;
}
}
.tit {
width: 100%;
text-align: center;
font-weight: 600;
font-size: 36rpx;
color: #3D3D3D;
}
.btn {
margin-top: 60rpx;
display: flex;
align-items: center;
justify-content: center;
width: 552rpx;
height: 88rpx;
background: #4C97E7;
border-radius: 10rpx 10rpx 10rpx 10rpx;
font-weight: 600;
font-size: 36rpx;
color: #FFFFFF;
}
}
.btn_box {
position: fixed;
width: 750rpx;
bottom: 50rpx;
display: flex;
flex-wrap: nowrap;
align-content: center;
justify-content: center;
.btn1 {
margin-right: 52rpx;
display: flex;
flex-wrap: nowrap;
align-items: center;
justify-content: center;
width: 310rpx;
height: 100rpx;
background: #E2F2FF;
font-weight: 500;
font-size: 40rpx;
color: #4C97E7;
}
.btn2 {
display: flex;
flex-wrap: nowrap;
align-items: center;
justify-content: center;
width: 310rpx;
height: 100rpx;
background: #4C97E7;
font-weight: 500;
font-size: 40rpx;
color: #FFFFFF;
}
}
.card {
padding: 0 24rpx;
margin: 0 auto;
margin-top: 24rpx;
width: 672rpx;
background: #FFFFFF;
box-shadow: 0rpx 4rpx 22rpx 0rpx rgba(0, 0, 0, 0.07);
border-radius: 10rpx 10rpx 10rpx 10rpx;
.card_li:last-child {
border-bottom: 1rpx solid #fff;
}
.card_li1 {
padding-top: 24rpx;
display: flex;
flex-wrap: wrap;
.taocan {
margin-top: 10rpx;
padding-bottom: 20rpx;
display: flex;
flex-wrap: wrap;
.tc_li {
padding: 8rpx 14rpx;
margin-right: 20rpx;
background: #DCEDFF;
border-radius: 6rpx 6rpx 6rpx 6rpx;
font-weight: 400;
font-size: 26rpx;
color: #4297F3;
}
}
.card_top {
display: flex;
flex-wrap: nowrap;
align-content: center;
justify-content: space-between;
width: 100%;
border-bottom: 1rpx solid #D8D8D8;
padding-bottom: 18rpx;
.card_left {
font-weight: 400;
font-size: 30rpx;
color: #3D3D3D;
}
.card_right {
display: flex;
flex-wrap: nowrap;
align-items: center;
span {
font-weight: 400;
font-size: 30rpx;
color: #3D3D3D;
}
.input {
text-align: right;
/* 输入框内容靠右显示 */
}
}
}
}
.card_li {
padding-top: 24rpx;
display: flex;
flex-wrap: nowrap;
align-content: center;
justify-content: space-between;
border-bottom: 1rpx solid #D8D8D8;
padding-bottom: 18rpx;
.up_left {
.txt1 {
font-weight: 400;
font-size: 30rpx;
color: #3D3D3D;
}
.txt2 {
margin-top: 16rpx;
font-weight: 400;
font-size: 24rpx;
color: #3D3D3D;
}
}
.up_rignt {
width: 110rpx;
height: 110rpx;
image {
width: 110rpx;
height: 110rpx;
}
.close {
background: #FFFFFF;
// border-radius: 50%;
position: absolute;
right: 0;
top: 0;
width: 25rpx;
height: 25rpx;
}
}
.card_left {
font-weight: 400;
font-size: 30rpx;
color: #3D3D3D;
}
.card_right {
display: flex;
flex-wrap: nowrap;
align-items: center;
span {
font-weight: 400;
font-size: 30rpx;
color: #3D3D3D;
}
.input {
text-align: right;
/* 输入框内容靠右显示 */
}
}
}
}
}
</style>