@@ -5,13 +5,22 @@ | |||
<u-form-item v-if="(form.type==='2'||form.type==='3')" prop="equipmentState"> | |||
<view class="from_item"> | |||
<text><text style="color: red">*</text>是否有设备注销::</text> | |||
<u-radio-group v-model="form.equipmentStateName"> | |||
<!-- <u-radio-group v-model="form.equipmentStateName"> | |||
<u-radio :customStyle="{ marginBottom: '8px' }" activeColor="#2CE242" | |||
v-for="(item, index) in radiolist" :key="index" :label="item.disabled" :name="item.name" | |||
@change="radioChange(item)"> | |||
{{ item.name }} | |||
</u-radio> | |||
</u-radio-group> | |||
</u-radio-group> --> | |||
<radio-group @change="radioChange" class="radios"> | |||
<block v-for="(item, index) in radiolist" :key="item.val"> | |||
<view class="radio-box"> | |||
<radio :value="item.val" :checked="form.equipmentState == item.val" color="#13e7c1" style="transform:scale(0.75)" /> | |||
<view>{{item.name}}</view> | |||
</view> | |||
</block> | |||
</radio-group> | |||
</view> | |||
</u-form-item> | |||
<u-form-item prop="phone"> | |||
@@ -68,7 +77,7 @@ | |||
} from "@/utils/utils"; | |||
// 表单数据 | |||
const form = reactive({ | |||
equipmentState: "2", | |||
equipmentState: 2, | |||
equipmentStateName: "否", | |||
mobile: "", | |||
@@ -95,13 +104,13 @@ | |||
// 单选数据列表 | |||
const radiolist = reactive([{ | |||
name: "是", | |||
disabled: false, | |||
}, | |||
{ | |||
name: "否", | |||
disabled: false, | |||
}, | |||
name: "是", | |||
val: 1, | |||
}, | |||
{ | |||
name: "否", | |||
val: 2, | |||
}, | |||
]); | |||
// 设置验证规则 | |||
@@ -161,12 +170,14 @@ | |||
// 单选 | |||
const radioChange = (val: any) => { | |||
if (val.name === '是') { | |||
form.equipmentState = '1'; | |||
} else { | |||
form.equipmentState = '2'; | |||
} | |||
const radioChange = (e : any) => { | |||
console.log(e); | |||
form.equipmentState = e.detail.value | |||
// if (val.name === '是') { | |||
// form.equipmentState = '1'; | |||
// } else { | |||
// form.equipmentState = '2'; | |||
// } | |||
}; | |||
//下一步 | |||
@@ -209,6 +220,14 @@ | |||
} | |||
</style> | |||
<style lang="scss" scoped> | |||
.radios{ | |||
display: flex; | |||
} | |||
.radio-box{ | |||
display: flex; | |||
align-items: center; | |||
padding-left: 40rpx; | |||
} | |||
.hint2 { | |||
display: flex; | |||
@@ -345,4 +364,4 @@ | |||
bottom: 60rpx; | |||
font-size: 32rpx; | |||
} | |||
</style> | |||
</style> |
@@ -27,11 +27,11 @@ | |||
<button aria-disabled="true" @click="btn" :disabled="disabled"> | |||
点击开始激活 | |||
</button> | |||
</view> | |||
</view> | |||
</view> | |||
<!-- 激活成功popup --> | |||
<u-popup v-model="state.showPopup" mode="center"> | |||
<active-success @cancel="state.showPopup = false"></active-success> | |||
<active-success @cancel="state.showPopup = false"></active-success> | |||
</u-popup> | |||
</template> | |||
@@ -68,19 +68,19 @@ | |||
const tools = require("../../static/etcUtil/tools.js"); | |||
const bluetoothUtil = require("../../static/etcUtil/index.js"); | |||
import activeSuccess from "./components/popup-device-active-success"; | |||
const state =reactive({ | |||
orderId:"", | |||
id:"", | |||
cardStatus:"", | |||
obuStatus:"" | |||
const state = reactive({ | |||
orderId: "", | |||
id: "", | |||
cardStatus: "", | |||
obuStatus: "" | |||
}) | |||
onLoad(() => { | |||
//读取传入 存储的数据orderInfo | |||
let orderData= getItem("orderInfo"); | |||
let orderData = getItem("orderInfo"); | |||
state.id = orderData.id; | |||
state.orderId = orderData.orderId; | |||
console.log(state); | |||
//获取订单详情 | |||
getOrderDetails(state.id); | |||
}) | |||
@@ -252,19 +252,19 @@ | |||
//获取fileData 拼接字符串 | |||
let res1 = AsciToHexString(fileDataStrings.vehiclePlate, 24); //车牌号 | |||
let res2 = IntegerToHexString(fileDataStrings.vehiclePlateColor, 4); //车牌颜色 | |||
let res3 = IntegerToHexString(1, 2); //类型 | |||
let res4 = IntegerToHexString(1, 2); //用户类型 | |||
let res5 = IntegerToHexString(fileDataStrings.outlineL, 4); //车辆尺寸 长 | |||
let res6 = IntegerToHexString(fileDataStrings.outlineW, 2); //车辆尺寸 宽 | |||
let res7 = IntegerToHexString(fileDataStrings.outlineH, 2); //车辆尺寸 高 | |||
let res8 = IntegerToHexString(4, 2); //获取轮数 | |||
let res9 = IntegerToHexString(4, 2); //轴数 | |||
let res10 = IntegerToHexString(null, 4); //轴距32 | |||
let res11 = IntegerToHexString(fileDataStrings.approvedCount, 6); //核载人数 | |||
let res12 = AsciToHexString(fileDataStrings.vehicleVin, 32); //车编号 | |||
let res13 = AsciToHexString(fileDataStrings.vehicleEngineNum, 32); //发动机 | |||
return res1 + res2 + res3 + res4 + res5 + res6 + res7 + res8 + res9 + res10 + res11 + res12 + res13; | |||
@@ -496,9 +496,7 @@ | |||
if (res[0] == "9000") { | |||
tools.showLoadingAlert("执行指令"); | |||
//再次获取随机数 | |||
let cmdArr = [cmd.HOME_DIRECTORY, cmd.OBU_DF01, cmd.OBU_EF01, cmd | |||
.RANDOM_NUMBER | |||
]; | |||
let cmdArr = [cmd.HOME_DIRECTORY, cmd.OBU_DF01, cmd.OBU_EF01, cmd.RANDOM_NUMBER]; | |||
bluetoothUtil.transCmd(cmdArr, '20', function(res) { | |||
var str = res[3].substring(res[3].length - 4, res[3].length); | |||
if (str == "9000") { | |||
@@ -802,4 +800,4 @@ | |||
font-size: 34rpx; | |||
border-radius: 20rpx; | |||
} | |||
</style> | |||
</style> |
@@ -21,13 +21,22 @@ | |||
<u-form-item prop="cardState"> | |||
<view class="from_item"> | |||
<text><text style="color: red">*</text>是否邮寄:</text> | |||
<u-radio-group v-model="form.receiveMethodName"> | |||
<!-- <u-radio-group v-model="form.receiveMethodName"> | |||
<u-radio :customStyle="{ marginBottom: '8px' }" activeColor="#2CE242" | |||
v-for="(item, index) in radiolist1" :key="index" :label="item.disabled" | |||
:name="item.name"> | |||
{{ item.name }} | |||
</u-radio> | |||
</u-radio-group> | |||
</u-radio-group> --> | |||
<radio-group @change="radioChange" class="radios"> | |||
<block v-for="(item, index) in radiolist1" :key="item.val"> | |||
<view class="radio-box"> | |||
<radio :value="item.val" :checked="form.receiveMethod == item.val" color="#13e7c1" style="transform:scale(0.75)" /> | |||
<view>{{item.name}}</view> | |||
</view> | |||
</block> | |||
</radio-group> | |||
</view> | |||
</u-form-item> | |||
<!-- <u-form-item prop="phone"> | |||
@@ -123,11 +132,11 @@ | |||
// 单选数据列表 | |||
const radiolist1 = reactive([{ | |||
name: "不邮寄", | |||
disabled: false, | |||
val: "0", | |||
}, | |||
{ | |||
name: "邮寄", | |||
disabled: false, | |||
val: "1", | |||
}, | |||
]); | |||
@@ -236,17 +245,26 @@ | |||
}); | |||
} | |||
// 单选 | |||
const radioChange = (e : any) => { | |||
console.log(e); | |||
form.receiveMethod = e.detail.value | |||
// if (val.name === '是') { | |||
// form.equipmentState = '1'; | |||
// } else { | |||
// form.equipmentState = '2'; | |||
// } | |||
}; | |||
//申请 | |||
const queryOBUAddAction = () => { | |||
if (form.receiveMethodName === '不邮寄') { | |||
form.receiveMethod = '0' | |||
} else { | |||
form.receiveMethod = '1' | |||
} | |||
// if (form.receiveMethodName === '不邮寄') { | |||
// form.receiveMethod = '0' | |||
// } else { | |||
// form.receiveMethod = '1' | |||
// } | |||
var data = { | |||
orderId: params.orderId, | |||
openId: getItem(StorageKeys.OpenId), | |||
@@ -294,6 +312,14 @@ | |||
} | |||
</style> | |||
<style lang="scss" scoped> | |||
.radios{ | |||
display: flex; | |||
} | |||
.radio-box{ | |||
display: flex; | |||
align-items: center; | |||
padding-left: 40rpx; | |||
} | |||
.hint2 { | |||
display: flex; | |||
@@ -1,6 +1,4 @@ | |||
<template> | |||
<!-- <navBar title="补办ETC卡"></navBar> | |||
--> | |||
<view class="oderPage"> | |||
<view class="addr-box"> | |||
<view class="addr-box-left"> | |||
@@ -24,20 +22,30 @@ | |||
<u-form-item prop="cardState"> | |||
<view class="from_item"> | |||
<text><text style="color: red">*</text>是否寄回设备:</text> | |||
<u-radio-group v-model="form.sendStatusName"> | |||
<!-- <u-radio-group v-model="form.sendStatusName"> | |||
<u-radio :customStyle="{ marginBottom: '8px' }" activeColor="#2CE242" | |||
v-for="(item, index) in radiolist1" :key="index" :label="item.disabled" | |||
:name="item.name"> | |||
{{ item.name }} | |||
</u-radio> | |||
</u-radio-group> | |||
</u-radio-group> --> | |||
<radio-group @change="sendChange" class="radios"> | |||
<block v-for="(item, index) in radiolist1" :key="item.val"> | |||
<view class="radio-box"> | |||
<radio :value="item.val" :checked="form.sendStatus == item.val" color="#13e7c1" | |||
style="transform:scale(0.75)" /> | |||
<view>{{item.name}}</view> | |||
</view> | |||
</block> | |||
</radio-group> | |||
</view> | |||
</u-form-item> | |||
<u-form-item prop="logistics" v-if="form.sendStatusName == '寄回'"> | |||
<view class="from_item"> | |||
<text><text style="color: red">*</text>退货物流公司:</text> | |||
<view style="display: flex" > | |||
<u-input v-model="form.courierCompany" class="input" @click="showPicker" placeholder="请选择" /> | |||
<view style="display: flex"> | |||
<u-input v-model="form.courierCompany" class="input" @click="showPicker" | |||
placeholder="请选择" /> | |||
<u-icon name="arrow-right" style="margin-left: 10px;display: flex;"></u-icon> | |||
</view> | |||
</view> | |||
@@ -51,13 +59,22 @@ | |||
<u-form-item prop="cardState"> | |||
<view class="from_item"> | |||
<text><text style="color: red">*</text>收货方式:</text> | |||
<u-radio-group v-model="form.receiveMethodName"> | |||
<!-- <u-radio-group v-model="form.receiveMethodName"> | |||
<u-radio :customStyle="{ marginBottom: '8px' }" activeColor="#2CE242" | |||
v-for="(item, index) in radiolist2" :key="index" :label="item.disabled" | |||
:name="item.name"> | |||
{{ item.name }} | |||
</u-radio> | |||
</u-radio-group> | |||
</u-radio-group> --> | |||
<radio-group @change="receiveChange" class="radios"> | |||
<block v-for="(item, index) in radiolist2" :key="item.val"> | |||
<view class="radio-box"> | |||
<radio :value="item.val" :checked="form.receiveMethod == item.val" color="#13e7c1" | |||
style="transform:scale(0.75)" /> | |||
<view>{{item.name}}</view> | |||
</view> | |||
</block> | |||
</radio-group> | |||
</view> | |||
</u-form-item> | |||
<u-form-item prop="remark"> | |||
@@ -87,7 +104,7 @@ | |||
</template> | |||
<script setup lang="ts"> | |||
import navBar from "../ETCcancellation/components/nav-bar.vue"; | |||
// import navBar from "../ETCcancellation/components/nav-bar.vue"; | |||
import { | |||
reactive, | |||
ref | |||
@@ -153,45 +170,55 @@ | |||
}); | |||
const applyResList = reactive([{ | |||
//原因 | |||
value: "原因1", | |||
label: "原因1", | |||
}, | |||
{ | |||
value: "原因1", | |||
label: "原因1", | |||
}, | |||
{ | |||
value: "原因1", | |||
label: "原因1", | |||
}, | |||
//原因 | |||
value: "原因1", | |||
label: "原因1", | |||
}, | |||
{ | |||
value: "原因1", | |||
label: "原因1", | |||
}, | |||
{ | |||
value: "原因1", | |||
label: "原因1", | |||
}, | |||
]); | |||
// 单选数据列表 | |||
const radiolist1 = reactive([{ | |||
name: "寄回", | |||
disabled: false, | |||
}, | |||
{ | |||
name: "不寄回", | |||
disabled: false, | |||
}, | |||
name: "寄回", | |||
val: "1", | |||
}, | |||
{ | |||
name: "不寄回", | |||
val: "0", | |||
}, | |||
]); | |||
const radiolist2 = reactive([{ | |||
name: "邮寄", | |||
disabled: false, | |||
}, | |||
{ | |||
name: "不邮寄", | |||
disabled: false, | |||
}, | |||
name: "邮寄", | |||
val: "1", | |||
}, | |||
{ | |||
name: "不邮寄", | |||
val: "0", | |||
}, | |||
]); | |||
// 寄回单选 | |||
const sendChange = (e : any) => { | |||
console.log(e); | |||
form.sendStatus = e.detail.value | |||
}; | |||
// 邮寄单选 | |||
const receiveChange = (e : any) => { | |||
console.log(e); | |||
form.receiveMethod = e.detail.value | |||
}; | |||
let showApplyRes = ref(false); | |||
// 打开物流先择器 | |||
const showApplyResPicker = function() { | |||
const showApplyResPicker = function () { | |||
showApplyRes.value = true; | |||
}; | |||
@@ -203,7 +230,7 @@ | |||
let show = ref(false); | |||
// 打开物流先择器 | |||
const showPicker = function() { | |||
const showPicker = function () { | |||
show.value = true; | |||
}; | |||
@@ -271,16 +298,16 @@ | |||
}); | |||
}; | |||
const submit = () => { | |||
if (form.sendStatusName === '寄回') { | |||
form.sendStatus = '1' | |||
} else { | |||
form.sendStatus = '0' | |||
} | |||
if (form.receiveMethodName === '邮寄') { | |||
form.receiveMethod = '1' | |||
} else { | |||
form.receiveMethod = '0' | |||
} | |||
// if (form.sendStatusName === '寄回') { | |||
// form.sendStatus = '1' | |||
// } else { | |||
// form.sendStatus = '0' | |||
// } | |||
// if (form.receiveMethodName === '邮寄') { | |||
// form.receiveMethod = '1' | |||
// } else { | |||
// form.receiveMethod = '0' | |||
// } | |||
queryCckChangejzCardInfo().then(val => { | |||
console.log(val) | |||
navTo( | |||
@@ -330,6 +357,14 @@ | |||
} | |||
</style> | |||
<style lang="scss" scoped> | |||
.radios{ | |||
display: flex; | |||
} | |||
.radio-box{ | |||
display: flex; | |||
align-items: center; | |||
padding-left: 20rpx; | |||
} | |||
.oderPage { | |||
flex: 1; | |||
width: 100%; | |||
@@ -487,4 +522,4 @@ | |||
line-height: 80rpx; | |||
margin-top: 60rpx; | |||
} | |||
</style> | |||
</style> |
@@ -5,25 +5,41 @@ | |||
<u-form-item prop="cardState"> | |||
<view class="from_item"> | |||
<text><text style="color: red">*</text>需要更换的设备:</text> | |||
<u-radio-group v-model="form.applyTypeName"> | |||
<!-- <u-radio-group v-model="form.applyTypeName"> | |||
<u-radio :customStyle="{ marginBottom: '8px' }" activeColor="#2CE242" | |||
v-for="(item, index) in radiolist1" :key="index" :label="item.disabled" | |||
:name="item.name"> | |||
{{ item.name }} | |||
</u-radio> | |||
</u-radio-group> | |||
</u-radio-group> --> | |||
<radio-group @change="radioChange" class="radios"> | |||
<block v-for="(item, index) in radiolist1" :key="item.val"> | |||
<view class="radio-box"> | |||
<radio :value="item.val" :checked="form.applyType == item.val" color="#13e7c1" style="transform:scale(0.75)" /> | |||
<view>{{item.name}}</view> | |||
</view> | |||
</block> | |||
</radio-group> | |||
</view> | |||
</u-form-item> | |||
<u-form-item prop="cardState"> | |||
<view class="from_item"> | |||
<text><text style="color: red">*</text>设备损坏类型:</text> | |||
<u-radio-group v-model="form.damageModeName"> | |||
<!-- <u-radio-group v-model="form.damageModeName"> | |||
<u-radio :customStyle="{ marginBottom: '8px' }" activeColor="#2CE242" | |||
v-for="(item, index) in radiolist2" :key="index" :label="item.disabled" | |||
:name="item.name"> | |||
{{ item.name }} | |||
</u-radio> | |||
</u-radio-group> | |||
</u-radio-group> --> | |||
<radio-group @change="typeChange" class="radios"> | |||
<block v-for="(item, index) in radiolist2" :key="item.val"> | |||
<view class="radio-box"> | |||
<radio :value="item.val" :checked="form.damageMode == item.val" color="#13e7c1" style="transform:scale(0.75)" /> | |||
<view>{{item.name}}</view> | |||
</view> | |||
</block> | |||
</radio-group> | |||
</view> | |||
</u-form-item> | |||
@@ -90,9 +106,9 @@ | |||
// 表单数据 | |||
const form = reactive({ | |||
damageMode: "", | |||
damageMode: "0", | |||
damageModeName: '人为损坏', | |||
applyType: '', | |||
applyType: 'EXCHANGE_CARD', | |||
applyTypeName: '卡', | |||
mobile: "", | |||
code: '', | |||
@@ -117,25 +133,25 @@ | |||
// 单选数据列表 | |||
const radiolist1 = reactive([{ | |||
name: "卡", | |||
disabled: false, | |||
val: "EXCHANGE_CARD", | |||
}, | |||
{ | |||
name: "OBU", | |||
disabled: false, | |||
val: "EXCHANGE_OBU", | |||
}, { | |||
name: "卡和OBU", | |||
disabled: false, | |||
val: "EXCHANGE_ALL", | |||
}, | |||
]); | |||
// 单选数据列表 | |||
const radiolist2 = reactive([{ | |||
name: "人为损坏", | |||
disabled: false, | |||
val: "0", | |||
}, | |||
{ | |||
name: "自然损坏", | |||
disabled: false, | |||
val: "1", | |||
} | |||
]); | |||
@@ -180,10 +196,24 @@ | |||
params.cardId = option.cardId | |||
params.orderId = option.orderId | |||
changeCardQueryAction().then(val => { | |||
apply.data = val | |||
console.log(val); | |||
apply.data = val; | |||
apply.data.status = val.status; | |||
}) | |||
}); | |||
// 单选 | |||
const radioChange = (e : any) => { | |||
console.log(e); | |||
form.applyType = e.detail.value | |||
}; | |||
// 单选 | |||
const typeChange = (e : any) => { | |||
console.log(e); | |||
form.damageMode = e.detail.value | |||
}; | |||
const getCode = () => { | |||
if (codeDuration.value !== 0) { | |||
@@ -292,18 +322,18 @@ | |||
`/after-sale/replace-equipment/form?orderId=${params.orderId}&&id=${apply.data.id}` | |||
) | |||
} else { | |||
if (form.applyTypeName === '卡') { | |||
form.applyType = 'EXCHANGE_CARD' | |||
} else if (form.applyTypeName === 'OBU') { | |||
form.applyType = 'EXCHANGE_OBU' | |||
} else if (form.applyTypeName === '卡和OBU') { | |||
form.applyType = 'EXCHANGE_ALL' | |||
} | |||
if (form.damageModeName === '人为损坏') { | |||
form.damageMode = '0' | |||
} else if (form.damageModeName === '自然损坏') { | |||
form.damageMode = '1' | |||
} | |||
// if (form.applyTypeName === '卡') { | |||
// form.applyType = 'EXCHANGE_CARD' | |||
// } else if (form.applyTypeName === 'OBU') { | |||
// form.applyType = 'EXCHANGE_OBU' | |||
// } else if (form.applyTypeName === '卡和OBU') { | |||
// form.applyType = 'EXCHANGE_ALL' | |||
// } | |||
// if (form.damageModeName === '人为损坏') { | |||
// form.damageMode = '0' | |||
// } else if (form.damageModeName === '自然损坏') { | |||
// form.damageMode = '1' | |||
// } | |||
queryCckChangejzCardAction().then(val => { | |||
navTo( | |||
@@ -333,6 +363,14 @@ | |||
} | |||
</style> | |||
<style lang="scss" scoped> | |||
.radios{ | |||
display: flex; | |||
} | |||
.radio-box{ | |||
display: flex; | |||
align-items: center; | |||
padding-left: 20rpx; | |||
} | |||
.hint2 { | |||
display: flex; | |||
@@ -38,7 +38,7 @@ | |||
</view> | |||
<image v-if="!state.form.userPosImgUrl" class="icon" :src="`${$imgUrl}applyCard/renxiang.png`"> | |||
</image> | |||
<image v-else class="icon" :src="state.form.userPosImgUrl"></image> | |||
<image v-else class="icon" :src="strReplace(state.form.userPosImgUrl)"></image> | |||
</view> | |||
</view> | |||
<view class="picture-wrapper" @click="cardImageOcr('2')"> | |||
@@ -52,7 +52,7 @@ | |||
</view> | |||
<image v-if="!state.form.userNegImgUrl" class="icon" :src="`${$imgUrl}applyCard/guohui.png`"> | |||
</image> | |||
<image v-else class="icon" :src="state.form.userNegImgUrl"></image> | |||
<image v-else class="icon" :src="strReplace(state.form.userNegImgUrl)"></image> | |||
</view> | |||
</view> | |||
@@ -93,7 +93,7 @@ | |||
</view> | |||
<image v-if="!state.form.vehPosImgUrl" class="icon" :src="`${$imgUrl}applyCard/car-zhu.png`"> | |||
</image> | |||
<image v-else class="icon" :src="state.form.vehPosImgUrl"></image> | |||
<image v-else class="icon" :src="strReplace(state.form.vehPosImgUrl)"></image> | |||
</view> | |||
</view> | |||
<view class="picture-wrapper" @click="cardDbImageOcr('2')"> | |||
@@ -107,7 +107,7 @@ | |||
</view> | |||
<image v-if="!state.form.vehNegImgUrl" class="icon" :src="`${$imgUrl}applyCard/car-fu.png`"> | |||
</image> | |||
<image v-else class="icon" :src="state.form.vehNegImgUrl"></image> | |||
<image v-else class="icon" :src="strReplace(state.form.vehNegImgUrl)"></image> | |||
</view> | |||
</view> | |||
<view class="picture-wrapper" @click="cardFileImageUpdate(1)"> | |||
@@ -121,7 +121,7 @@ | |||
</view> | |||
<image v-if="!state.FormData.peopleVehicleImgUrl" class="icon" :src="`${$imgUrl}applyCard/chetou.png`"> | |||
</image> | |||
<image v-else class="icon" :src="state.FormData.peopleVehicleImgUrl"></image> | |||
<image v-else class="icon" :src="strReplace(state.FormData.peopleVehicleImgUrl)"></image> | |||
</view> | |||
</view> | |||
<view class="picture-wrapper" @click="cardFileImageUpdate(2)"> | |||
@@ -135,7 +135,7 @@ | |||
</view> | |||
<image v-if="!state.FormData.commitmentUrl" class="icon" :src="`${$imgUrl}applyCard/weituoshu.png`"> | |||
</image> | |||
<image v-else class="icon" :src="state.FormData.commitmentUrl"></image> | |||
<image v-else class="icon" :src="strReplace(state.FormData.commitmentUrl)"></image> | |||
</view> | |||
</view> | |||
<view class="shibie-wrapper"> | |||
@@ -217,6 +217,7 @@ | |||
fileUpload, | |||
etcCarOcrCard, | |||
relieveCarId, | |||
envs, | |||
} from "@/utils/network/api.js"; | |||
import { | |||
request | |||
@@ -584,6 +585,11 @@ | |||
}, | |||
}); | |||
}; | |||
//替换图片地址 | |||
const strReplace = (str : string) => { | |||
return str.replace('192.168.101.145:9000', envs[process.env.NODE_ENV].baseUrl) | |||
} | |||
</script> | |||
<style lang="scss" scoped> |
@@ -24,13 +24,22 @@ | |||
<u-form-item prop="cardState"> | |||
<view class="from_item"> | |||
<text><text style="color: red">*</text>是否寄回设备:</text> | |||
<u-radio-group v-model="form.sendStatusName"> | |||
<!-- <u-radio-group v-model="form.sendStatusName"> | |||
<u-radio :customStyle="{ marginBottom: '8px' }" activeColor="#2CE242" | |||
v-for="(item, index) in radiolist1" :key="index" :label="item.disabled" | |||
:name="item.name"> | |||
{{ item.name }} | |||
</u-radio> | |||
</u-radio-group> | |||
</u-radio-group> --> | |||
<radio-group @change="sendChange" class="radios"> | |||
<block v-for="(item, index) in radiolist1" :key="item.val"> | |||
<view class="radio-box"> | |||
<radio :value="item.val" :checked="form.sendStatus == item.val" color="#13e7c1" | |||
style="transform:scale(0.75)" /> | |||
<view>{{item.name}}</view> | |||
</view> | |||
</block> | |||
</radio-group> | |||
</view> | |||
</u-form-item> | |||
<u-form-item prop="logistics" v-if="form.sendStatusName == '寄回'"> | |||
@@ -51,13 +60,22 @@ | |||
<u-form-item prop="cardState"> | |||
<view class="from_item"> | |||
<text><text style="color: red">*</text>收货方式:</text> | |||
<u-radio-group v-model="form.receiveMethodName"> | |||
<!-- <u-radio-group v-model="form.receiveMethodName"> | |||
<u-radio :customStyle="{ marginBottom: '8px' }" activeColor="#2CE242" | |||
v-for="(item, index) in radiolist2" :key="index" :label="item.disabled" | |||
:name="item.name"> | |||
{{ item.name }} | |||
</u-radio> | |||
</u-radio-group> | |||
</u-radio-group> --> | |||
<radio-group @change="receiveChange" class="radios"> | |||
<block v-for="(item, index) in radiolist2" :key="item.val"> | |||
<view class="radio-box"> | |||
<radio :value="item.val" :checked="form.receiveMethod == item.val" color="#13e7c1" | |||
style="transform:scale(0.75)" /> | |||
<view>{{item.name}}</view> | |||
</view> | |||
</block> | |||
</radio-group> | |||
</view> | |||
</u-form-item> | |||
</view> | |||
@@ -74,7 +92,7 @@ | |||
</template> | |||
<script setup lang="ts"> | |||
import navBar from "../ETCcancellation/components/nav-bar.vue"; | |||
// import navBar from "../ETCcancellation/components/nav-bar.vue"; | |||
import { | |||
reactive, | |||
ref | |||
@@ -138,26 +156,37 @@ | |||
// 单选数据列表 | |||
const radiolist1 = reactive([{ | |||
name: "寄回", | |||
disabled: false, | |||
}, | |||
{ | |||
name: "不寄回", | |||
disabled: false, | |||
}, | |||
name: "寄回", | |||
val: "1", | |||
}, | |||
{ | |||
name: "不寄回", | |||
val: "0", | |||
}, | |||
]); | |||
const radiolist2 = reactive([{ | |||
name: "邮寄", | |||
disabled: false, | |||
}, | |||
{ | |||
name: "不邮寄", | |||
disabled: false, | |||
}, | |||
name: "邮寄", | |||
val: "1", | |||
}, | |||
{ | |||
name: "不邮寄", | |||
val: "0", | |||
}, | |||
]); | |||
let show = ref(false); | |||
// 寄回单选 | |||
const sendChange = (e : any) => { | |||
console.log(e); | |||
form.sendStatus = e.detail.value | |||
}; | |||
// 邮寄单选 | |||
const receiveChange = (e : any) => { | |||
console.log(e); | |||
form.receiveMethod = e.detail.value | |||
}; | |||
// 打开物流先择器 | |||
const showPicker = function() { | |||
@@ -229,16 +258,16 @@ | |||
}); | |||
}; | |||
const submit = () => { | |||
if (form.sendStatusName === '寄回') { | |||
form.sendStatus = '1' | |||
} else { | |||
form.sendStatus = '0' | |||
} | |||
if (form.receiveMethodName === '邮寄') { | |||
form.receiveMethod = '1' | |||
} else { | |||
form.receiveMethod = '0' | |||
} | |||
// if (form.sendStatusName === '寄回') { | |||
// form.sendStatus = '1' | |||
// } else { | |||
// form.sendStatus = '0' | |||
// } | |||
// if (form.receiveMethodName === '邮寄') { | |||
// form.receiveMethod = '1' | |||
// } else { | |||
// form.receiveMethod = '0' | |||
// } | |||
queryCckChangejzCardInfo().then(val => { | |||
console.log(val) | |||
navTo( | |||
@@ -289,6 +318,14 @@ | |||
} | |||
</style> | |||
<style lang="scss" scoped> | |||
.radios{ | |||
display: flex; | |||
} | |||
.radio-box{ | |||
display: flex; | |||
align-items: center; | |||
padding-left: 20rpx; | |||
} | |||
.oderPage { | |||
flex: 1; | |||
width: 100%; |
@@ -119,6 +119,7 @@ | |||
data: { | |||
cardStatus: undefined, | |||
obuStatus: undefined, | |||
orderId: undefined, | |||
} | |||
}); | |||
@@ -5,13 +5,21 @@ | |||
<u-form-item prop="cardState"> | |||
<view class="from_item"> | |||
<text><text style="color: red">*</text>是否保留卡签:</text> | |||
<u-radio-group v-model="form.serviceTypeName"> | |||
<!-- <u-radio-group v-model="form.serviceTypeName"> | |||
<u-radio :customStyle="{ marginBottom: '8px' }" activeColor="#2CE242" | |||
v-for="(item, index) in radiolist1" :key="index" :label="item.disabled" | |||
:name="item.name"> | |||
{{ item.name }} | |||
</u-radio> | |||
</u-radio-group> | |||
</u-radio-group> --> | |||
<radio-group @change="radioChange" class="radios"> | |||
<block v-for="(item, index) in radiolist1" :key="item.val"> | |||
<view class="radio-box"> | |||
<radio :value="item.val" :checked="form.serviceType == item.val" color="#13e7c1" style="transform:scale(0.75)" /> | |||
<view>{{item.name}}</view> | |||
</view> | |||
</block> | |||
</radio-group> | |||
</view> | |||
</u-form-item> | |||
@@ -78,11 +86,11 @@ | |||
// 单选数据列表 | |||
const radiolist1 = reactive([{ | |||
name: "保留卡签", | |||
disabled: false, | |||
val: 'WITHVEHICLE', | |||
}, | |||
{ | |||
name: "不保留卡签", | |||
disabled: false, | |||
val: "WITHCUSTOMER", | |||
} | |||
]); | |||
@@ -106,7 +114,16 @@ | |||
onLoad((option) => { | |||
form.mobile = option.mobile | |||
}); | |||
// 单选 | |||
const radioChange = (e : any) => { | |||
console.log(e); | |||
form.serviceType = e.detail.value | |||
// if (val.name === '是') { | |||
// form.equipmentState = '1'; | |||
// } else { | |||
// form.equipmentState = '2'; | |||
// } | |||
}; | |||
const getCode = () => { | |||
if (codeDuration.value !== 0) { | |||
return; | |||
@@ -132,11 +149,11 @@ | |||
//下一步 | |||
const toPage = () => { | |||
if (form.serviceTypeName === '保留卡签') { | |||
form.serviceType = 'WITHVEHICLE' | |||
} else { | |||
form.serviceType = 'WITHCUSTOMER' | |||
} | |||
// if (form.serviceTypeName === '保留卡签') { | |||
// form.serviceType = 'WITHVEHICLE' | |||
// } else { | |||
// form.serviceType = 'WITHCUSTOMER' | |||
// } | |||
// const options = { | |||
// type: 2, | |||
// data: { | |||
@@ -169,6 +186,14 @@ | |||
} | |||
</style> | |||
<style lang="scss" scoped> | |||
.radios{ | |||
display: flex; | |||
} | |||
.radio-box{ | |||
display: flex; | |||
align-items: center; | |||
padding-left: 40rpx; | |||
} | |||
.hint2 { | |||
display: flex; | |||
@@ -42,14 +42,19 @@ | |||
v-model="state.formData.postalCode" | |||
/> | |||
</u-form-item> | |||
<u-form-item label-width="240rpx" label="设置默认收货地址"> | |||
<u-switch | |||
<!-- <u-form-item label-width="240rpx" label="设置默认收货地址"> --> | |||
<!-- <u-switch | |||
v-model="state.formData.defaultAddress" | |||
active-color="#25D8C9" | |||
:active-value="1" | |||
:inactive-value="2" | |||
></u-switch> | |||
</u-form-item> | |||
></u-switch> --> | |||
<!-- </u-form-item> --> | |||
<view class="form-item forn-switch"> | |||
<label>设置默认收货地址</label> | |||
<switch :checked="state.isDefault" color="#43a1e0" style="transform:scale(0.75)" @change="changeSwitch"></switch> | |||
</view> | |||
</u-form> | |||
<view class="action"> | |||
@@ -96,7 +101,15 @@ const state = reactive({ | |||
whetherToMail:0, | |||
}, | |||
show: false, | |||
isDefault: false, | |||
}); | |||
//switch 事件 | |||
const changeSwitch = (e:any)=>{ | |||
console.log(e); | |||
state.formData.defaultAddress = e.detail.value?1:2; | |||
console.log(state.formData); | |||
}; | |||
// 选择地区回调 | |||
const regionConfirm = (e: any) => { | |||
state.formData.region = e.province.name + e.city.name + e.area.name; | |||
@@ -184,6 +197,14 @@ onLoad((option) => { | |||
</script> | |||
<style lang="scss" scoped> | |||
.form-item{ | |||
display: flex; | |||
justify-content: space-between; | |||
align-items: center; | |||
font-size: 30rpx; | |||
padding: 20rpx 0; | |||
} | |||
.form { | |||
padding: 30rpx; | |||
} |
@@ -244,6 +244,7 @@ | |||
etcUserCardInfoSubmit, | |||
fileUpload, | |||
register, | |||
envs, | |||
} from "@/utils/network/api.js"; | |||
import { | |||
@@ -555,7 +556,7 @@ | |||
}; | |||
//替换图片地址 | |||
const strReplace = (str : string) => { | |||
return str.replace('192.168.101.145:9000', '222.85.144.89:19002') | |||
return str.replace('192.168.101.145:9000', envs[process.env.NODE_ENV].baseUrl) | |||
} | |||
</script> | |||
@@ -56,5 +56,5 @@ export const obuStatus = [{ | |||
//获取车辆类型 | |||
export const getObuStatus = (id) => { | |||
let types = obuStatus.filter(item => item.id == id); | |||
return types[0].title | |||
return types[0]?.title | |||
} |
@@ -19,13 +19,16 @@ | |||
</view> | |||
<view class="agreement"> | |||
<u-checkbox | |||
v-model="state.checked" | |||
activeColor="#00B38B" | |||
size="30" | |||
icon-size="30" | |||
label-size="24" | |||
>我已阅读并同意</u-checkbox> | |||
<checkbox-group @change="checkboxChange"> | |||
<checkbox | |||
:checked="state.checked" | |||
activeColor="#00B38B" | |||
size="30" | |||
icon-size="30" | |||
label-size="24" | |||
>我已阅读并同意 | |||
</checkbox> | |||
</checkbox-group> | |||
<!-- <view class="txt-grey">我已阅读并同意</view> --> | |||
<view class="txt-green" @click="msg('阅读协议')" | |||
>《平台用户服务隐私协议》</view | |||
@@ -42,7 +45,7 @@ | |||
</template> | |||
<script setup lang="ts"> | |||
import uCheckBox from "@/uni_modules/vk-uview-ui/components/u-checkbox/u-checkbox.vue"; | |||
// import uCheckBox from "@/uni_modules/vk-uview-ui/components/u-checkbox/u-checkbox.vue"; | |||
import { reactive } from "vue"; | |||
import { checkStr, msg, navTo } from "@/utils/utils"; | |||
import { sendCode, regist } from "@/utils/network/api.js"; | |||
@@ -52,6 +55,10 @@ const state = reactive({ | |||
phone: "", //电话 | |||
checked: false, //是否勾选阅读协议 | |||
}); | |||
const checkboxChange = (e) => { | |||
console.log(e); | |||
state.checked = !state.checked; | |||
}; | |||
/* 下一步 */ | |||
const nextStep = () => { |
@@ -392,12 +392,12 @@ | |||
state.userType = val; | |||
if (val === "1") { | |||
// navTo(`/applyCard/essential-information?type=${state.type}&&userType=${state.userType}`) | |||
uni.redirectTo({ | |||
uni.navigateTo({ | |||
url:`/applyCard/essential-information?type=${state.type}&&userType=${state.userType}` | |||
}) | |||
} else { | |||
// navTo(`/applyCard/essential-information?type=${state.type}&&userType=${state.userType}`) | |||
uni.redirectTo({ | |||
uni.navigateTo({ | |||
url:`/applyCard/essential-information?type=${state.type}&&userType=${state.userType}` | |||
}) | |||
} |
@@ -0,0 +1,341 @@ | |||
<template> | |||
<view class="wrapper"> | |||
<image | |||
:src="`${$imgUrl}user/bg-user.png`" | |||
class="bg-head" | |||
mode="widthFix" | |||
></image> | |||
<view class="bar" :style="{ top: top, height: height, lineHeight: height }" | |||
>九州ETC</view | |||
> | |||
<view class="content" :style="{ top: margin + 'px' }"> | |||
<view class="head" :style="{ marinTop: margin + 'px' }"> | |||
<view class="avatar"> | |||
<image | |||
:src="`${$imgUrl}user/icon-avatar.png`" | |||
:class="!state.data.opId ? 'unlogin' : ''" | |||
></image> | |||
<view | |||
v-if="!state.data.opId" | |||
class="name" | |||
@click="$util.navTo('/login/login')" | |||
> | |||
<view class="nickname">登录/注册</view> | |||
</view> | |||
<view v-else class="name"> | |||
<!-- <view class="nickname">林晨曦</view> --> | |||
<view class="user-id"> | |||
<view class="phone">{{ mobile }}</view> | |||
<view | |||
@click=" | |||
$util.navTo('/personal-center/setting/change-phone', true) | |||
" | |||
class="btn-change" style="display: none;" | |||
> | |||
更换</view | |||
> | |||
</view> | |||
</view> | |||
</view> | |||
<view | |||
class="setting" | |||
@click="$util.navTo('/personal-center/setting/setting', true)" | |||
> | |||
<image :src="`${$imgUrl}user/icon-setting.png`"></image> | |||
<text>设置</text> | |||
</view> | |||
</view> | |||
<view class="menu"> | |||
<view class="item" style="display: none"> | |||
<view class="item-tit"> | |||
<image | |||
:src="`${$imgUrl}user/icon-cny.png`" | |||
class="icon icon-1" | |||
></image> | |||
<text>账户余额</text> | |||
</view> | |||
<view class="amount"> | |||
<text class="cny">¥</text> | |||
<text class="value">0.00</text> | |||
<image :src="`${$imgUrl}user/icon-arrow.png`" class="arrow"></image> | |||
</view> | |||
</view> | |||
<view | |||
class="item" | |||
@click="navTo('/personal-center/change-password', true)" | |||
> | |||
<view class="item-tit"> | |||
<image | |||
:src="`${$imgUrl}user/icon-lock.png`" | |||
class="icon icon-1" | |||
></image> | |||
<text>修改密码</text> | |||
</view> | |||
<image :src="`${$imgUrl}user/icon-arrow.png`" class="arrow"></image> | |||
</view> | |||
<view | |||
class="item" | |||
@click="navTo('/personal-center/progress-query/my-etc', true)" | |||
style="display: none" | |||
> | |||
<view class="item-tit"> | |||
<image | |||
:src="`${$imgUrl}user/icon-ETC.png`" | |||
class="icon icon-2" | |||
></image> | |||
<text>我的ETC</text> | |||
</view> | |||
<image :src="`${$imgUrl}user/icon-arrow.png`" class="arrow"></image> | |||
</view> | |||
<view | |||
class="item" | |||
@click=" | |||
navTo( | |||
'/personal-center/setting/personal-information/corrections', | |||
true | |||
) | |||
" | |||
> | |||
<view class="item-tit"> | |||
<image | |||
:src="`${$imgUrl}user/icon-user.png`" | |||
class="icon icon-2" | |||
></image> | |||
<text>用户信息管理</text> | |||
</view> | |||
<image :src="`${$imgUrl}user/icon-arrow.png`" class="arrow"></image> | |||
</view> | |||
<view | |||
class="item" | |||
@click=" | |||
navTo('/personal-center/setting/car-information/corrections', true) | |||
" | |||
> | |||
<view class="item-tit"> | |||
<image | |||
:src="`${$imgUrl}user/icon-car.png`" | |||
class="icon icon-2" | |||
></image> | |||
<text>车辆信息管理</text> | |||
</view> | |||
<image :src="`${$imgUrl}user/icon-arrow.png`" class="arrow"></image> | |||
</view> | |||
<view | |||
class="item" | |||
@click="navTo('/personal-center/setting/addressManager', true)" | |||
> | |||
<view class="item-tit"> | |||
<image | |||
:src="`${$imgUrl}user/icon-address.png`" | |||
class="icon icon-2" | |||
></image> | |||
<text>收货地址管理</text> | |||
</view> | |||
<image :src="`${$imgUrl}user/icon-arrow.png`" class="arrow"></image> | |||
</view> | |||
<view | |||
class="item" | |||
@click="navTo('/personal-center/setting/bank-card/bank-card', true)" | |||
style="display: none" | |||
> | |||
<view class="item-tit"> | |||
<image | |||
:src="`${$imgUrl}user/icon-card.png`" | |||
class="icon icon-2" | |||
></image> | |||
<text>绑定银行卡</text> | |||
</view> | |||
<image :src="`${$imgUrl}user/icon-arrow.png`" class="arrow"></image> | |||
</view> | |||
</view> | |||
</view> | |||
</view> | |||
</template> | |||
<script lang="ts" setup> | |||
import { reactive } from "vue"; | |||
import { msg, navTo } from "@/utils/utils"; | |||
import { onMounted, ref } from "vue"; | |||
import { getItem, StorageKeys } from "@/utils/storage"; | |||
import { onLoad, onShow } from "@dcloudio/uni-app"; | |||
const height = ref(null); | |||
const top = ref(null); | |||
const margin = ref(null); | |||
const mobile = ref(null); | |||
const state = reactive({ | |||
data: { | |||
opId: "", | |||
}, | |||
}); | |||
onMounted(() => { | |||
const res = uni.getMenuButtonBoundingClientRect(); | |||
height.value = res.height + "px"; | |||
top.value = res.top + "px"; | |||
margin.value = res.height + res.top; | |||
}); | |||
onLoad((option: any) => { | |||
state.data.opId = getItem(StorageKeys.OpenId); | |||
mobile.value = getItem("mobile"); | |||
}); | |||
onShow((option: any) => { | |||
state.data.opId = getItem(StorageKeys.OpenId); | |||
}); | |||
</script> | |||
<style scoped> | |||
.unlogin { | |||
filter: grayscale(100%); | |||
opacity: 0.7; | |||
} | |||
page { | |||
background: #ffffff; | |||
} | |||
.wrapper { | |||
position: relative; | |||
background: #fff; | |||
} | |||
.bar { | |||
width: 100%; | |||
position: fixed; | |||
text-align: center; | |||
font-size: 32rpx; | |||
font-weight: bold; | |||
} | |||
.bg-head { | |||
width: 100%; | |||
position: absolute; | |||
z-index: -99; | |||
top: 0; | |||
left: 0; | |||
} | |||
.content { | |||
position: absolute; | |||
display: flex; | |||
flex-direction: column; | |||
width: 100%; | |||
} | |||
.head { | |||
display: flex; | |||
justify-content: space-between; | |||
align-items: center; | |||
width: 100%; | |||
box-sizing: border-box; | |||
padding: 40rpx 0 46rpx; | |||
} | |||
.head .avatar { | |||
display: flex; | |||
align-items: center; | |||
} | |||
.head .avatar image { | |||
width: 120rpx; | |||
height: 120rpx; | |||
border-radius: 80rpx; | |||
border: 12rpx solid rgba(255, 255, 255, 0.5); | |||
margin: 0 20rpx 0 30rpx; | |||
} | |||
.head .setting { | |||
display: flex; | |||
align-items: center; | |||
background: rgba(255, 255, 255, 0.7); | |||
height: 60rpx; | |||
border-radius: 30rpx 0 0 30rpx; | |||
padding: 0 30rpx 0 20rpx; | |||
color: #00b38b; | |||
} | |||
.head .setting image { | |||
width: 40rpx; | |||
height: 40rpx; | |||
margin-right: 6rpx; | |||
} | |||
.head .nickname { | |||
font-size: 42rpx; | |||
color: #ffffff; | |||
} | |||
.head .user-id { | |||
font-size: 26rpx; | |||
color: #ffffff; | |||
padding-top: 30rpx; | |||
display: flex; | |||
align-items: center; | |||
} | |||
.head .btn-change { | |||
font-size: 22rpx; | |||
height: 40rpx; | |||
padding: 0 20rpx; | |||
border: 1px solid #fff; | |||
box-sizing: border-box; | |||
border-radius: 20rpx; | |||
margin-left: 16rpx; | |||
} | |||
.menu { | |||
background: #ffffff; | |||
border-radius: 30rpx 30rpx 0 0; | |||
padding: 0 30rpx; | |||
} | |||
.menu .arrow { | |||
width: 18rpx; | |||
height: 32rpx; | |||
} | |||
.menu .icon { | |||
width: 48rpx; | |||
height: 48rpx; | |||
margin-right: 20rpx; | |||
} | |||
.menu .item { | |||
display: flex; | |||
justify-content: space-between; | |||
align-items: center; | |||
border-bottom: 1px solid #dcdcdc; | |||
padding: 20rpx 0; | |||
} | |||
.menu .item:first-child { | |||
margin-top: 10rpx; | |||
} | |||
.menu .item-tit { | |||
display: flex; | |||
align-items: center; | |||
font-size: 28rpx; | |||
color: #333; | |||
} | |||
.amount { | |||
display: flex; | |||
justify-content: space-between; | |||
align-items: center; | |||
} | |||
.amount .cny { | |||
font-size: 28rpx; | |||
} | |||
.amount .value { | |||
font-size: 32rpx; | |||
color: #333; | |||
padding-right: 24rpx; | |||
} | |||
</style> |
@@ -1,341 +1,407 @@ | |||
<template> | |||
<view class="wrapper"> | |||
<image | |||
:src="`${$imgUrl}user/bg-user.png`" | |||
class="bg-head" | |||
mode="widthFix" | |||
></image> | |||
<view class="bar" :style="{ top: top, height: height, lineHeight: height }" | |||
>九州ETC</view | |||
> | |||
<view class="content" :style="{ top: margin + 'px' }"> | |||
<view class="head" :style="{ marinTop: margin + 'px' }"> | |||
<view class="avatar"> | |||
<image | |||
:src="`${$imgUrl}user/icon-avatar.png`" | |||
:class="!state.data.opId ? 'unlogin' : ''" | |||
></image> | |||
<view | |||
v-if="!state.data.opId" | |||
class="name" | |||
@click="$util.navTo('/login/login')" | |||
> | |||
<view class="nickname">登录/注册</view> | |||
</view> | |||
<view v-else class="name"> | |||
<!-- <view class="nickname">林晨曦</view> --> | |||
<view class="user-id"> | |||
<view class="phone">{{ mobile }}</view> | |||
<view | |||
@click=" | |||
$util.navTo('/personal-center/setting/change-phone', true) | |||
" | |||
class="btn-change" style="display: none;" | |||
> | |||
更换</view | |||
> | |||
</view> | |||
</view> | |||
</view> | |||
<view | |||
class="setting" | |||
@click="$util.navTo('/personal-center/setting/setting', true)" | |||
> | |||
<image :src="`${$imgUrl}user/icon-setting.png`"></image> | |||
<text>设置</text> | |||
</view> | |||
</view> | |||
<view class="menu"> | |||
<view class="item" style="display: none"> | |||
<view class="item-tit"> | |||
<image | |||
:src="`${$imgUrl}user/icon-cny.png`" | |||
class="icon icon-1" | |||
></image> | |||
<text>账户余额</text> | |||
</view> | |||
<view class="amount"> | |||
<text class="cny">¥</text> | |||
<text class="value">0.00</text> | |||
<image :src="`${$imgUrl}user/icon-arrow.png`" class="arrow"></image> | |||
</view> | |||
</view> | |||
<view | |||
class="item" | |||
@click="navTo('/personal-center/change-password', true)" | |||
> | |||
<view class="item-tit"> | |||
<image | |||
:src="`${$imgUrl}user/icon-lock.png`" | |||
class="icon icon-1" | |||
></image> | |||
<text>修改密码</text> | |||
</view> | |||
<image :src="`${$imgUrl}user/icon-arrow.png`" class="arrow"></image> | |||
</view> | |||
<view | |||
class="item" | |||
@click="navTo('/personal-center/progress-query/my-etc', true)" | |||
style="display: none" | |||
> | |||
<view class="item-tit"> | |||
<image | |||
:src="`${$imgUrl}user/icon-ETC.png`" | |||
class="icon icon-2" | |||
></image> | |||
<text>我的ETC</text> | |||
</view> | |||
<image :src="`${$imgUrl}user/icon-arrow.png`" class="arrow"></image> | |||
</view> | |||
<view | |||
class="item" | |||
@click=" | |||
navTo( | |||
'/personal-center/setting/personal-information/corrections', | |||
true | |||
) | |||
" | |||
> | |||
<view class="item-tit"> | |||
<image | |||
:src="`${$imgUrl}user/icon-user.png`" | |||
class="icon icon-2" | |||
></image> | |||
<text>用户信息管理</text> | |||
</view> | |||
<image :src="`${$imgUrl}user/icon-arrow.png`" class="arrow"></image> | |||
</view> | |||
<view | |||
class="item" | |||
@click=" | |||
navTo('/personal-center/setting/car-information/corrections', true) | |||
" | |||
> | |||
<view class="item-tit"> | |||
<image | |||
:src="`${$imgUrl}user/icon-car.png`" | |||
class="icon icon-2" | |||
></image> | |||
<text>车辆信息管理</text> | |||
</view> | |||
<image :src="`${$imgUrl}user/icon-arrow.png`" class="arrow"></image> | |||
</view> | |||
<view | |||
class="item" | |||
@click="navTo('/personal-center/setting/addressManager', true)" | |||
> | |||
<view class="item-tit"> | |||
<image | |||
:src="`${$imgUrl}user/icon-address.png`" | |||
class="icon icon-2" | |||
></image> | |||
<text>收货地址管理</text> | |||
</view> | |||
<image :src="`${$imgUrl}user/icon-arrow.png`" class="arrow"></image> | |||
</view> | |||
<view | |||
class="item" | |||
@click="navTo('/personal-center/setting/bank-card/bank-card', true)" | |||
style="display: none" | |||
> | |||
<view class="item-tit"> | |||
<image | |||
:src="`${$imgUrl}user/icon-card.png`" | |||
class="icon icon-2" | |||
></image> | |||
<text>绑定银行卡</text> | |||
</view> | |||
<image :src="`${$imgUrl}user/icon-arrow.png`" class="arrow"></image> | |||
</view> | |||
</view> | |||
</view> | |||
</view> | |||
<navBar title="九州ETC" :scrollTop="scrollTop" :isBack="isBack"></navBar> | |||
<view class="wrapper"> | |||
<image :src="`${$imgUrl}user/bg-user-2.png`" class="bg-head" mode="widthFix"></image> | |||
<!-- <view class="bar" :style="{ top: top, height: height, lineHeight: height }">我的-九州ETC</view> --> | |||
<view class="content" :style="{ top: margin + 'px' }"> | |||
<view class="head" :style="{ marinTop: margin + 'px' }"> | |||
<view class="avatar"> | |||
<image :src="`${$imgUrl}user/icon-avatar.png`" :class="!state.data.opId ? 'unlogin' : ''"></image> | |||
<view v-if="!state.data.opId" class="name" @click="$util.navTo('/login/login')"> | |||
<view class="nickname">登录/注册</view> | |||
</view> | |||
<view v-else class="name"> | |||
<view class="nickname">林晨曦</view> | |||
<view class="user-id"> | |||
<view class="phone">15885137270</view> | |||
<view @click="$util.navTo('/personal-center/setting/change-phone', true)" | |||
class="btn-change">已关联</view> | |||
</view> | |||
</view> | |||
</view> | |||
<view class="setting" @click="$util.navTo('/personal-center/setting/setting', true)"> | |||
<!-- <image :src="`${$imgUrl}user/icon-setting.png`"></image> --> | |||
<text>签到</text> | |||
</view> | |||
</view> | |||
<view class="panel-box"> | |||
<view class="panel"> | |||
<view class="panel-item"> | |||
<view class="panel-text"><text class="num">2</text><text class="txt">辆</text></view> | |||
<text class="type">车辆</text> | |||
</view> | |||
<view class="panel-item"> | |||
<text class="num">5</text> | |||
<text class="type">待办</text> | |||
</view> | |||
<view class="panel-item"> | |||
<view class="panel-text"><text class="num">2</text><text class="txt">张</text></view> | |||
<text class="type">卡券</text> | |||
</view> | |||
<view class="panel-item"> | |||
<view class="panel-text"><text class="num">2555</text><text class="txt">分</text></view> | |||
<text class="type">积分</text> | |||
</view> | |||
</view> | |||
<view class="notice"> | |||
<image :src="`${$imgUrl}user/icon-tips.png`" class="icon-notice"></image> | |||
<view class="notice-content">您有一笔成功交易,点击查看详情</view> | |||
</view> | |||
</view> | |||
<view class="rights box"> | |||
<view class="right-head"> | |||
<view class="tit">我的权益</view> | |||
<view class="more"> | |||
<text class="more-text">查看全部</text> | |||
<image :src="`${$imgUrl}user/icon-arrow.png`" class="arrow"></image> | |||
</view> | |||
</view> | |||
</view> | |||
<view class="rights box"> | |||
<view class="right-head"> | |||
<view class="tit">我的订单</view> | |||
<view class="more"> | |||
<text class="more-text">查看全部</text> | |||
<image :src="`${$imgUrl}user/icon-arrow.png`" class="arrow"></image> | |||
</view> | |||
</view> | |||
</view> | |||
<view class="rights box"> | |||
<view class="right-head"> | |||
<view class="tit">本月通行</view> | |||
</view> | |||
</view> | |||
<view class="rights box"> | |||
<view class="right-head"> | |||
<view class="tit">我的车辆</view> | |||
<view class="more"> | |||
<text class="more-text">查看全部</text> | |||
<image :src="`${$imgUrl}user/icon-arrow.png`" class="arrow"></image> | |||
</view> | |||
</view> | |||
</view> | |||
<view class="menu"> | |||
<view class="item" @click="navTo('/personal-center/setting/bank-card/bank-card', true)"> | |||
<view class="item-tit"> | |||
<image :src="`${$imgUrl}user/icon-setting.png`" class="icon icon-2"></image> | |||
<text>设置与资料管理</text> | |||
</view> | |||
<view class="right-arrow"> | |||
<view class="sub-tit">隐私、密码管理</view> | |||
<image :src="`${$imgUrl}user/icon-arrow.png`" class="arrow"></image> | |||
</view> | |||
</view> | |||
</view> | |||
</view> | |||
</view> | |||
</template> | |||
<script lang="ts" setup> | |||
import { reactive } from "vue"; | |||
import { msg, navTo } from "@/utils/utils"; | |||
import { onMounted, ref } from "vue"; | |||
import { getItem, StorageKeys } from "@/utils/storage"; | |||
import { onLoad, onShow } from "@dcloudio/uni-app"; | |||
const height = ref(null); | |||
const top = ref(null); | |||
const margin = ref(null); | |||
const mobile = ref(null); | |||
const state = reactive({ | |||
data: { | |||
opId: "", | |||
}, | |||
}); | |||
onMounted(() => { | |||
const res = uni.getMenuButtonBoundingClientRect(); | |||
height.value = res.height + "px"; | |||
top.value = res.top + "px"; | |||
margin.value = res.height + res.top; | |||
}); | |||
onLoad((option: any) => { | |||
state.data.opId = getItem(StorageKeys.OpenId); | |||
mobile.value = getItem("mobile"); | |||
}); | |||
onShow((option: any) => { | |||
state.data.opId = getItem(StorageKeys.OpenId); | |||
}); | |||
</script> | |||
import { reactive } from "vue"; | |||
import { msg, navTo } from "@/utils/utils"; | |||
import { onMounted, ref } from "vue"; | |||
import { getItem, StorageKeys } from "@/utils/storage"; | |||
import navBar from "../../components/nav-bar/nav-bar2.vue"; | |||
import { onLoad, onShow, onPageScroll } from "@dcloudio/uni-app"; | |||
<style scoped> | |||
.unlogin { | |||
filter: grayscale(100%); | |||
opacity: 0.7; | |||
} | |||
page { | |||
background: #ffffff; | |||
} | |||
.wrapper { | |||
position: relative; | |||
background: #fff; | |||
} | |||
.bar { | |||
width: 100%; | |||
position: fixed; | |||
text-align: center; | |||
font-size: 32rpx; | |||
font-weight: bold; | |||
} | |||
.bg-head { | |||
width: 100%; | |||
position: absolute; | |||
z-index: -99; | |||
top: 0; | |||
left: 0; | |||
} | |||
.content { | |||
position: absolute; | |||
display: flex; | |||
flex-direction: column; | |||
width: 100%; | |||
} | |||
.head { | |||
display: flex; | |||
justify-content: space-between; | |||
align-items: center; | |||
width: 100%; | |||
box-sizing: border-box; | |||
padding: 40rpx 0 46rpx; | |||
} | |||
.head .avatar { | |||
display: flex; | |||
align-items: center; | |||
} | |||
.head .avatar image { | |||
width: 120rpx; | |||
height: 120rpx; | |||
border-radius: 80rpx; | |||
border: 12rpx solid rgba(255, 255, 255, 0.5); | |||
margin: 0 20rpx 0 30rpx; | |||
} | |||
.head .setting { | |||
display: flex; | |||
align-items: center; | |||
background: rgba(255, 255, 255, 0.7); | |||
height: 60rpx; | |||
border-radius: 30rpx 0 0 30rpx; | |||
padding: 0 30rpx 0 20rpx; | |||
color: #00b38b; | |||
} | |||
.head .setting image { | |||
width: 40rpx; | |||
height: 40rpx; | |||
margin-right: 6rpx; | |||
} | |||
.head .nickname { | |||
font-size: 42rpx; | |||
color: #ffffff; | |||
} | |||
.head .user-id { | |||
font-size: 26rpx; | |||
color: #ffffff; | |||
padding-top: 30rpx; | |||
display: flex; | |||
align-items: center; | |||
} | |||
.head .btn-change { | |||
font-size: 22rpx; | |||
height: 40rpx; | |||
padding: 0 20rpx; | |||
border: 1px solid #fff; | |||
box-sizing: border-box; | |||
border-radius: 20rpx; | |||
margin-left: 16rpx; | |||
} | |||
.menu { | |||
background: #ffffff; | |||
border-radius: 30rpx 30rpx 0 0; | |||
padding: 0 30rpx; | |||
} | |||
.menu .arrow { | |||
width: 18rpx; | |||
height: 32rpx; | |||
} | |||
.menu .icon { | |||
width: 48rpx; | |||
height: 48rpx; | |||
margin-right: 20rpx; | |||
} | |||
.menu .item { | |||
display: flex; | |||
justify-content: space-between; | |||
align-items: center; | |||
border-bottom: 1px solid #dcdcdc; | |||
padding: 20rpx 0; | |||
} | |||
.menu .item:first-child { | |||
margin-top: 10rpx; | |||
} | |||
.menu .item-tit { | |||
display: flex; | |||
align-items: center; | |||
font-size: 28rpx; | |||
color: #333; | |||
} | |||
.amount { | |||
display: flex; | |||
justify-content: space-between; | |||
align-items: center; | |||
} | |||
.amount .cny { | |||
font-size: 28rpx; | |||
} | |||
.amount .value { | |||
font-size: 32rpx; | |||
color: #333; | |||
padding-right: 24rpx; | |||
} | |||
const height = ref(null); | |||
const top = ref(null); | |||
const margin = ref(null); | |||
const mobile = ref(null); | |||
const scrollTop = ref(0); | |||
const isBack = ref(false); | |||
const state = reactive({ | |||
data: { | |||
opId: "", | |||
}, | |||
}); | |||
onMounted(() => { | |||
const res = uni.getMenuButtonBoundingClientRect(); | |||
height.value = res.height + "px"; | |||
top.value = res.top + "px"; | |||
margin.value = res.height + res.top; | |||
}); | |||
onLoad((option : any) => { | |||
state.data.opId = getItem(StorageKeys.OpenId); | |||
mobile.value = getItem("mobile"); | |||
}); | |||
//监听页面滚动 | |||
onPageScroll((e) => { | |||
scrollTop.value = e.scrollTop; | |||
}); | |||
onShow((option : any) => { | |||
state.data.opId = getItem(StorageKeys.OpenId); | |||
}); | |||
</script> | |||
<style> | |||
page { | |||
background: #eef7f7; | |||
} | |||
</style> | |||
<style scoped> | |||
.unlogin { | |||
filter: grayscale(100%); | |||
opacity: 0.7; | |||
} | |||
.wrapper { | |||
position: relative; | |||
background: #fff; | |||
} | |||
.bar { | |||
width: 100%; | |||
position: fixed; | |||
text-align: center; | |||
font-size: 32rpx; | |||
font-weight: bold; | |||
} | |||
.bg-head { | |||
width: 100%; | |||
position: absolute; | |||
z-index: -99; | |||
top: 0; | |||
left: 0; | |||
} | |||
.content { | |||
position: absolute; | |||
display: flex; | |||
flex-direction: column; | |||
width: 100%; | |||
} | |||
.head { | |||
display: flex; | |||
justify-content: space-between; | |||
align-items: center; | |||
width: 100%; | |||
box-sizing: border-box; | |||
padding: 40rpx 0 46rpx; | |||
} | |||
.head .avatar { | |||
display: flex; | |||
align-items: center; | |||
} | |||
.head .avatar image { | |||
width: 120rpx; | |||
height: 120rpx; | |||
border-radius: 80rpx; | |||
border: 12rpx solid rgba(255, 255, 255, 0.5); | |||
margin: 0 20rpx 0 30rpx; | |||
} | |||
.head .setting { | |||
display: flex; | |||
align-items: center; | |||
background: rgba(0, 179, 139, .1); | |||
border:1px solid #fff; | |||
height: 60rpx; | |||
border-radius: 30rpx; | |||
padding: 0 34rpx; | |||
color: #fff; | |||
font-size: 28rpx; | |||
margin-right: 30rpx; | |||
} | |||
.head .setting image { | |||
width: 40rpx; | |||
height: 40rpx; | |||
margin-right: 6rpx; | |||
} | |||
.head .nickname { | |||
font-size: 36rpx; | |||
color: #000000; | |||
} | |||
.head .user-id { | |||
font-size: 26rpx; | |||
color: #000000; | |||
padding-top: 30rpx; | |||
display: flex; | |||
align-items: center; | |||
} | |||
.head .btn-change { | |||
font-size: 22rpx; | |||
height: 40rpx; | |||
padding: 0 20rpx; | |||
border: 1px solid #fff; | |||
color:#fff; | |||
box-sizing: border-box; | |||
border-radius: 20rpx; | |||
margin-left: 16rpx; | |||
background: rgba(0, 179, 139, .1); | |||
} | |||
.panel-box { | |||
display: flex; | |||
flex-direction: column; | |||
background: #fff; | |||
margin: 0 30rpx 30rpx; | |||
box-shadow: 0rpx 2rpx 6rpx 0rpx rgba(223, 223, 223, 0.8); | |||
border-radius: 20rpx; | |||
padding: 30rpx 0; | |||
} | |||
.panel { | |||
display: flex; | |||
justify-content: space-evenly; | |||
padding: 30rpx 0; | |||
} | |||
.panel-item { | |||
display: flex; | |||
flex-direction: column; | |||
justify-content: center; | |||
align-items: center; | |||
font-size: 32rpx; | |||
} | |||
.panel-item .num { | |||
font-weight: bold; | |||
color: #454545; | |||
} | |||
.panel-item .txt { | |||
font-size: 26rpx; | |||
} | |||
.panel-item .type { | |||
color: #999; | |||
font-size: 26rpx; | |||
padding: 14rpx 0; | |||
} | |||
.panel-box .icon-notice { | |||
width: 48rpx; | |||
height: 48rpx; | |||
} | |||
.panel-box .notice { | |||
display: flex; | |||
font-size: 32rpx; | |||
margin: 0 30rpx; | |||
align-items: center; | |||
background: #f3f3f3; | |||
border-radius: 10rpx; | |||
padding: 0 14rpx; | |||
} | |||
.panel-box .notice .notice-content { | |||
height: 68rpx; | |||
line-height: 68rpx; | |||
padding: 0 12rpx; | |||
font-size: 28rpx; | |||
} | |||
.box .arrow { | |||
width: 18rpx; | |||
height: 32rpx; | |||
} | |||
.box { | |||
background: #ffffff; | |||
margin: 0 30rpx 30rpx; | |||
padding: 30rpx; | |||
border-radius: 20rpx; | |||
box-shadow: 0rpx 2rpx 6rpx 0rpx rgba(223,223,223,0.8); | |||
} | |||
.box .more { | |||
display: flex; | |||
font-size: 30rpx; | |||
color: #808080; | |||
align-items: center; | |||
} | |||
.box .more .more-text { | |||
padding-right: 20rpx; | |||
} | |||
.box .right-head { | |||
display: flex; | |||
justify-content: space-between; | |||
} | |||
.box .right-head .tit { | |||
font-size: 32rpx; | |||
/* font-weight: bold; */ | |||
} | |||
.menu { | |||
background: #ffffff; | |||
/* border-radius: 30rpx 30rpx 0 0; */ | |||
padding: 0 30rpx; | |||
margin: 0 30rpx 30rpx; | |||
border-radius: 20rpx; | |||
box-shadow: 0rpx 2rpx 6rpx 0rpx rgba(223,223,223,0.8); | |||
} | |||
.menu .arrow { | |||
width: 18rpx; | |||
height: 32rpx; | |||
} | |||
.menu .icon { | |||
width: 48rpx; | |||
height: 48rpx; | |||
margin-right: 10rpx; | |||
} | |||
.menu .item { | |||
display: flex; | |||
justify-content: space-between; | |||
align-items: center; | |||
/* border-bottom: 1px solid #dcdcdc; */ | |||
padding: 20rpx 0; | |||
} | |||
.menu .item:first-child { | |||
margin-top: 10rpx; | |||
} | |||
.menu .item-tit { | |||
display: flex; | |||
align-items: center; | |||
font-size: 30rpx; | |||
color: #333; | |||
} | |||
.menu .right-arrow { | |||
font-size: 26rpx; | |||
color: #ccc; | |||
display: flex; | |||
justify-content: center; | |||
align-items: center; | |||
} | |||
.menu .sub-tit { | |||
padding-right: 20rpx; | |||
} | |||
.amount { | |||
display: flex; | |||
justify-content: space-between; | |||
align-items: center; | |||
} | |||
.amount .cny { | |||
font-size: 28rpx; | |||
} | |||
.amount .value { | |||
font-size: 32rpx; | |||
color: #333; | |||
padding-right: 24rpx; | |||
} | |||
</style> |
@@ -6,8 +6,8 @@ export const URL = "192.168.100.63"; | |||
export const envs = { | |||
//开发环境配置 | |||
development: { | |||
baseUrl: "192.168.100.63:8087", | |||
// baseUrl: "222.85.144.89:19002", | |||
// baseUrl: "192.168.100.63:8087", | |||
baseUrl: "222.85.144.89:19002", | |||
}, | |||
//生产环境配置 | |||
production: { |