@@ -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; | |||
@@ -148,7 +161,7 @@ const queryAddOrEditAddress = (code, data) => { | |||
}; | |||
request(addressToOrder, options2).then((res) => { | |||
console.log(res); | |||
uni.navigateTo({ | |||
uni.redirectTo({ | |||
url: `/applyCard/release-products?orderId=${state.formData.orderId}&clientFee=${getItem('clientFee')}&&id=${getItem('productId')}`, | |||
}); | |||
}) | |||
@@ -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; | |||
} |
@@ -1,5 +1,5 @@ | |||
<template> | |||
<navBar title="行驶证信息上传"></navBar> | |||
<navBar title="行驶证信息上传" :scrollTop="scrollTop"></navBar> | |||
<navBgCar></navBgCar> | |||
<view class="content"> | |||
<view class="item-tips"> | |||
@@ -153,7 +153,7 @@ | |||
<script setup lang="ts"> | |||
import { | |||
reactive | |||
reactive,ref, | |||
} from "vue"; | |||
import navBgCar from "./components/nav-bg-car4"; | |||
import navBar from "../components/nav-bar/nav-bar2.vue"; | |||
@@ -176,7 +176,7 @@ | |||
} from "@/utils/network/encryption"; | |||
import { | |||
onLoad, | |||
onShow | |||
onPageScroll | |||
} from "@dcloudio/uni-app"; | |||
import { | |||
getObuStatus | |||
@@ -188,6 +188,13 @@ | |||
import { | |||
getItem | |||
} from "@/utils/storage"; | |||
const scrollTop = ref(0) | |||
//监听页面滚动 | |||
onPageScroll((e) => { | |||
scrollTop.value = e.scrollTop; | |||
}); | |||
const savaHandle = () => { | |||
state.form.vehicleId = | |||
@@ -207,11 +214,11 @@ | |||
state.show = true; | |||
} else { | |||
if(state.type == 1|| state.type == '1'){ | |||
uni.navigateTo({ | |||
uni.redirectTo({ | |||
url:`/applyCard/addAddress?orderId=${state.form.orderId}&clientFee=${getItem('clientFee')}&&id=${getItem('productId')}` | |||
}) | |||
}else{ | |||
uni.navigateTo({ | |||
uni.redirectTo({ | |||
// url: `/applyCard/choice-product?orderId=${state.form.orderId}`, | |||
url: `/applyCard/release-products?orderId=${state.form.orderId}&clientFee=${getItem('clientFee')}&&id=${getItem('productId')}`, | |||
}); |
@@ -1,5 +1,5 @@ | |||
<template> | |||
<navBar title="选择产品"></navBar> | |||
<navBar title="选择产品" :scrollTop="scrollTop"></navBar> | |||
<navBgCar></navBgCar> | |||
<view class="content-value"> | |||
<view @click="savaHandle(item)" class="ul-item" v-for="(item, index) in state.dataArray" :key="index"> | |||
@@ -24,10 +24,11 @@ | |||
<script setup lang="ts"> | |||
import { | |||
onLoad, | |||
onShow | |||
onPageScroll, | |||
} from "@dcloudio/uni-app"; | |||
import { | |||
reactive | |||
reactive, | |||
ref, | |||
} from "vue"; | |||
import { | |||
etcQueryProduct, | |||
@@ -57,6 +58,9 @@ | |||
import { | |||
setItem | |||
} from "@/utils/storage"; | |||
const scrollTop =ref(0);//滚动距离 | |||
const savaHandle = (val) => { | |||
productReCodeAction(val.id).then(value => { | |||
@@ -66,11 +70,11 @@ | |||
} | |||
if (state.userType === "1") { | |||
uni.navigateTo({ | |||
uni.redirectTo({ | |||
url: `/applyCard/opening-account-people?orderId=${state.orderId}&vehiclePlateColor=${state.vehiclePlateColor}`, | |||
}); | |||
} else { | |||
uni.navigateTo({ | |||
uni.redirectTo({ | |||
url: `/applyCard/opening-account-unit?orderId=${state.orderId}&vehiclePlateColor=${state.vehiclePlateColor}`, | |||
}); | |||
} | |||
@@ -114,6 +118,11 @@ | |||
state.dataArray = data??[]; | |||
}); | |||
}); | |||
//监听页面滚动 | |||
onPageScroll((e) => { | |||
scrollTop.value = e.scrollTop; | |||
}); | |||
const productReCodeAction = (id) => { | |||
var data = { |
@@ -1,5 +1,5 @@ | |||
<template> | |||
<navBar title="九州ETC"></navBar> | |||
<navBar title="九州ETC" :scrollTop="scrollTop"></navBar> | |||
<navBgCar></navBgCar> | |||
<view class="content-wrap"> | |||
<!-- 车牌输入 --> | |||
@@ -113,7 +113,7 @@ | |||
import { getItem, StorageKeys } from "@/utils/storage"; | |||
import { stringToJson } from "@/utils/network/encryption"; | |||
import navBar from "../components/nav-bar/nav-bar2.vue"; | |||
import { onLoad, onShow } from "@dcloudio/uni-app"; | |||
import { onLoad, onShow,onPageScroll } from "@dcloudio/uni-app"; | |||
import { | |||
addressQuery, | |||
etcCreatOrder, | |||
@@ -121,9 +121,10 @@ | |||
searchOrder, | |||
} from "@/utils/network/api.js"; | |||
import { request } from "@/utils/network/request.js"; | |||
import { reactive } from "vue"; | |||
import { reactive, ref } from "vue"; | |||
import { msg } from "@/utils/utils"; | |||
const scrollTop =ref(0); | |||
const state = reactive({ | |||
data: { | |||
vehiclePlate: undefined, //车牌号 | |||
@@ -214,7 +215,10 @@ | |||
orderGoAction(); | |||
} else { | |||
const data = stringToJson(res.bizContent); | |||
uni.navigateTo({ | |||
// uni.navigateTo({ | |||
// url: `/applyCard/choice-product?orderId=${data.orderId}&userType=${state.data.userType}&vehiclePlateColor=${state.data.vehiclePlateColor}`, | |||
// }) | |||
uni.redirectTo({ | |||
url: `/applyCard/choice-product?orderId=${data.orderId}&userType=${state.data.userType}&vehiclePlateColor=${state.data.vehiclePlateColor}`, | |||
}) | |||
@@ -256,24 +260,24 @@ | |||
//完成填写基本信息 | |||
if (val.orderStep === 1) { | |||
if (state.data.userType === "1") { | |||
uni.navigateTo({ | |||
uni.redirectTo({ | |||
url: `/applyCard/opening-account-people?orderId=${val.orderId}&&vehiclePlateColor=${val.vehiclePlateColor}`, | |||
}); | |||
} else { | |||
uni.navigateTo({ | |||
uni.redirectTo({ | |||
url: `/applyCard/opening-account-unit?orderId=${val.orderId}&&vehiclePlateColor=${val.vehiclePlateColor}`, | |||
}); | |||
} | |||
} else if (val.orderStep === 2) { | |||
uni.navigateTo({ | |||
uni.redirectTo({ | |||
url: `/applyCard/car-release?orderId=${val.orderId}&&vehiclePlateColor=${val.vehiclePlateColor}`, | |||
}); | |||
} else if (val.orderStep === 3) { | |||
uni.navigateTo({ | |||
uni.redirectTo({ | |||
url: `/applyCard/choice-product?orderId=${val.orderId}`, | |||
}); | |||
} else if (val.orderStep === 4) { | |||
uni.navigateTo({ | |||
uni.redirectTo({ | |||
url: `/applyCard/product-detail?orderId=${val.orderId}&&clientFee=${val.product.clientFee}&&id=${val.productId}`, | |||
}); | |||
} | |||
@@ -283,6 +287,12 @@ | |||
state.data.type = option.type; //客车 | |||
state.data.userType = option.userType; | |||
}); | |||
//监听页面滚动 | |||
onPageScroll((e) => { | |||
scrollTop.value = e.scrollTop; | |||
}); | |||
onShow(() => { | |||
var data = { | |||
openId: getItem(StorageKeys.OpenId), |
@@ -1,5 +1,5 @@ | |||
<template> | |||
<navBar title="ETC开户新办申请-个人"></navBar> | |||
<navBar title="ETC开户新办申请-个人" :scrollTop="scrollTop"></navBar> | |||
<navBgCar></navBgCar> | |||
<view class="content-wrap"> | |||
<view @click="tabChange(true)"> | |||
@@ -228,7 +228,8 @@ | |||
pathToBase64 | |||
} from "@/utils/image-tools/index.js"; | |||
import { | |||
reactive | |||
reactive, | |||
ref, | |||
} from "vue"; | |||
import { | |||
msg, | |||
@@ -236,13 +237,14 @@ | |||
} from "@/utils/utils"; | |||
import { | |||
onLoad, | |||
onShow | |||
onPageScroll, | |||
} from "@dcloudio/uni-app"; | |||
import { | |||
etcOcrCard, | |||
etcUserCardInfoSubmit, | |||
fileUpload, | |||
register, | |||
envs, | |||
} from "@/utils/network/api.js"; | |||
import { | |||
@@ -257,6 +259,7 @@ | |||
getItem, | |||
} from "@/utils/storage"; | |||
import navBar from "../components/nav-bar/nav-bar2.vue"; | |||
const scrollTop = ref(0) | |||
const state = reactive({ | |||
genderList: [{ | |||
value: '男', | |||
@@ -300,6 +303,7 @@ | |||
vehiclePlateColor: undefined, | |||
isMyPeopple: true, | |||
}); | |||
const userGenderAction = () => { | |||
state.genderShow = true; | |||
}; | |||
@@ -351,6 +355,7 @@ | |||
if (result.accessToken && result.openId) { | |||
setItem('token', result.accessToken) | |||
setItem('openId', result.openId) | |||
state.form.opId = result.openId; | |||
let data = state.form; | |||
const options = { | |||
@@ -362,7 +367,7 @@ | |||
request(etcUserCardInfoSubmit, options).then((res) => { | |||
// let result = stringToJson(res.bizContent); | |||
console.log(res); | |||
uni.navigateTo({ | |||
uni.redirectTo({ | |||
url: `/applyCard/car-release?orderId=${state.orderId}&vehiclePlateColor=${state.vehiclePlateColor}&type=1`, | |||
}); | |||
}); | |||
@@ -381,7 +386,7 @@ | |||
request(etcUserCardInfoSubmit, options).then((res) => { | |||
// let result = stringToJson(res.bizContent); | |||
console.log(res); | |||
uni.navigateTo({ | |||
uni.redirectTo({ | |||
url: `/applyCard/car-release?orderId=${state.orderId}&vehiclePlateColor=${state.vehiclePlateColor}`, | |||
}); | |||
}); | |||
@@ -456,8 +461,14 @@ | |||
state.form.orderId = option.orderId; | |||
state.orderId = option.orderId; | |||
state.vehiclePlateColor = option.vehiclePlateColor; | |||
state.form.opId = getItem('openId')??''; | |||
//state.fromOrder = option.fromOrder //是否来自订单-修改资料 | |||
}); | |||
//监听页面滚动 | |||
onPageScroll((e) => { | |||
scrollTop.value = e.scrollTop; | |||
}); | |||
const cardDbImageOcr = (val : any) => { | |||
var imageType = val; | |||
@@ -545,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> | |||
@@ -1,5 +1,5 @@ | |||
<template> | |||
<navBar title="ETC开户新办申请-单位"></navBar> | |||
<navBar title="ETC开户新办申请-单位" :scrollTop="scrollTop"></navBar> | |||
<navBgCar></navBgCar> | |||
<view class="content-wrap"> | |||
<view class="item-tips"> | |||
@@ -96,7 +96,7 @@ | |||
<script setup lang="ts"> | |||
import { | |||
reactive | |||
reactive, ref | |||
} from "vue"; | |||
import navBgCar from "./components/nav-bg-car3"; | |||
import navBar from "../components/nav-bar/nav-bar2.vue"; | |||
@@ -119,7 +119,8 @@ | |||
stringToJson | |||
} from "@/utils/network/encryption"; | |||
import { | |||
onLoad | |||
onLoad, | |||
onPageScroll, | |||
} from "@dcloudio/uni-app"; | |||
import { | |||
setItem, | |||
@@ -129,6 +130,9 @@ import { | |||
msg, | |||
checkStr | |||
} from "@/utils/utils"; | |||
const scrollTop =ref(0);//滚动距离 | |||
const state = reactive({ | |||
form: { | |||
orderId: "", //订单ID | |||
@@ -217,7 +221,7 @@ import { | |||
request(etcCompanyCardInfoSubmit, options).then((res) => { | |||
// let result = stringToJson(res.bizContent); | |||
console.log(res); | |||
uni.navigateTo({ | |||
uni.redirectTo({ | |||
url: `/applyCard/car-release?orderId=${state.orderId}&vehiclePlateColor=${state.vehiclePlateColor}&type=1`, | |||
}); | |||
}); | |||
@@ -234,17 +238,26 @@ import { | |||
}; | |||
request(etcCompanyCardInfoSubmit, options).then((res) => { | |||
const data = stringToJson(res.bizContent); | |||
uni.navigateTo({ | |||
uni.redirectTo({ | |||
url: `/applyCard/car-release?orderId=${state.orderId}&&vehiclePlateColor=${state.vehiclePlateColor}`, | |||
}); | |||
}); | |||
} | |||
}; | |||
onLoad((option: any) => { | |||
state.form.orderId = option.orderId; | |||
state.orderId = option.orderId; | |||
state.vehiclePlateColor = option.vehiclePlateColor; | |||
state.form.opId = getItem('openId')??''; | |||
}); | |||
//监听页面滚动 | |||
onPageScroll((e) => { | |||
scrollTop.value = e.scrollTop; | |||
}); | |||
//营业执照Orc接口调用 | |||
const cardImageOcrYY = () => { | |||
uni.chooseImage({ |
@@ -1,7 +1,6 @@ | |||
<template> | |||
<view class="nav-bar" :style="{height:navHeight+'px'}"> | |||
<view class="title" | |||
:style="{paddingTop:searchMarginTop+'px',height:searchHeight+'px',lineHeight:searchHeight+'px'}"> | |||
<view class="nav-bar" :class="scrollTop>navHeight?'nav-bg':''" :style="{height:navHeight+'px'}"> | |||
<view class="title" :style="{paddingTop:searchMarginTop+'px',height:searchHeight+'px',lineHeight:searchHeight+'px'}"> | |||
<block v-if="isBack"> | |||
<image :src="`/static/image/icon-back.png`" | |||
:style="{height:searchHeight+'px',width:searchHeight+'px'}" class="back" @click="back"></image> | |||
@@ -17,10 +16,10 @@ | |||
onMounted, | |||
ref | |||
} from "vue"; | |||
const navHeight = ref(null) | |||
const searchMarginTop = ref(null) | |||
const searchHeight = ref(null) | |||
const searchWidth = ref(null) | |||
const navHeight = ref(0) | |||
const searchMarginTop = ref(0) | |||
const searchHeight = ref(0) | |||
const searchWidth = ref(0) | |||
onMounted(() => { | |||
const menuButtonInfo = uni.getMenuButtonBoundingClientRect() | |||
const { | |||
@@ -51,6 +50,10 @@ | |||
isBack: { | |||
type: Boolean, | |||
default: true | |||
}, | |||
scrollTop:{ | |||
type:Number, | |||
default:0 | |||
} | |||
}) | |||
const back = () => { | |||
@@ -61,6 +64,9 @@ | |||
</script> | |||
<style scoped> | |||
.nav-bg{ | |||
background: linear-gradient(to right,#13E7C1,#43A1E0); | |||
} | |||
.blank { | |||
width: 100%; | |||
display: none; |
@@ -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 | |||
} |
@@ -55,15 +55,17 @@ | |||
</view> | |||
<view class="agreement"> | |||
<checkbox-group @change="checkboxChange"> | |||
<checkbox-group @change="checkboxChange" class="group"> | |||
<checkbox | |||
:checked="state.checked" | |||
activeColor="#00B38B" | |||
color="#00B38B" | |||
size="30" | |||
icon-size="30" | |||
label-size="24" | |||
>我已阅读并同意 | |||
style="transform:scale(0.85)" | |||
> | |||
</checkbox> | |||
<label>我已阅读并同意</label> | |||
</checkbox-group> | |||
<!-- <view class="txt-grey">我已阅读并同意</view> --> | |||
<view class="txt-green" @click="toRead" | |||
@@ -224,7 +226,10 @@ const reqLogin = (code:string, data:object) => { | |||
width: 260rpx; | |||
height: 160rpx; | |||
} | |||
.group{ | |||
display: flex; | |||
align-items: center; | |||
} | |||
.title { | |||
font-size: 46rpx; | |||
color: #333333; |
@@ -1,155 +1,165 @@ | |||
<!-- 注册第1步 --> | |||
<template> | |||
<view class="register-main"> | |||
<view class="title">注册账户</view> | |||
<view class="hint">请输入手机号</view> | |||
<view class="form-input"> | |||
<view> +86</view> | |||
<image :src="`${$imgUrl}common/arror_down_black.png`" class="arror" /> | |||
<input | |||
class="input" | |||
v-model="state.phone" | |||
focus | |||
placeholder="请输入手机号" | |||
placeholder-class="form-placeholder" | |||
type="number" | |||
maxlength="11" | |||
/> | |||
</view> | |||
<view class="agreement"> | |||
<u-checkbox | |||
v-model="state.checked" | |||
activeColor="#00B38B" | |||
size="30" | |||
icon-size="30" | |||
label-size="24" | |||
>我已阅读并同意</u-checkbox> | |||
<!-- <view class="txt-grey">我已阅读并同意</view> --> | |||
<view class="txt-green" @click="msg('阅读协议')" | |||
>《平台用户服务隐私协议》</view | |||
> | |||
</view> | |||
</view> | |||
<view class="btn"> | |||
<submit-button | |||
title="同意协议并获取验证码" | |||
@submit="nextStep" | |||
></submit-button> | |||
</view> | |||
<view class="register-main"> | |||
<view class="title">注册账户</view> | |||
<view class="hint">请输入手机号</view> | |||
<view class="form-input"> | |||
<view> +86</view> | |||
<image :src="`${$imgUrl}common/arror_down_black.png`" class="arror" /> | |||
<input class="input" v-model="state.phone" focus placeholder="请输入手机号" placeholder-class="form-placeholder" | |||
type="number" maxlength="11" /> | |||
</view> | |||
<view class="agreement"> | |||
<checkbox-group @change="checkboxChange" class="group"> | |||
<checkbox :checked="state.checked" color="#00B38B" style="transform:scale(0.85)"> | |||
</checkbox> | |||
<label>我已阅读并同意</label> | |||
</checkbox-group> | |||
<!-- <view class="txt-grey">我已阅读并同意</view> --> | |||
<view class="txt-green" @click="toRead">《平台用户服务隐私协议》</view> | |||
</view> | |||
</view> | |||
<view class="btn"> | |||
<submit-button title="同意协议并获取验证码" @submit="nextStep"></submit-button> | |||
</view> | |||
</template> | |||
<script setup lang="ts"> | |||
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"; | |||
import { request } from "@/utils/network/request.js"; | |||
const state = reactive({ | |||
phone: "", //电话 | |||
checked: false, //是否勾选阅读协议 | |||
}); | |||
/* 下一步 */ | |||
const nextStep = () => { | |||
if (!state.phone) { | |||
msg("请输入手机号!"); | |||
return; | |||
} | |||
if (!checkStr(state.phone, "mobile")) { | |||
msg("请输入正确的手机号!"); | |||
return; | |||
} | |||
if (!state.checked) { | |||
msg("请勾选我已阅读并同意《平台用户服务隐私协议》"); | |||
return; | |||
} | |||
const options = { | |||
type: 2, | |||
data: { mobile: state.phone }, | |||
method: "POST", | |||
showLoading: true, | |||
}; | |||
request(sendCode, options) | |||
.then((res) => { | |||
msg("验证码发送成功!"); | |||
navTo(`/login/register-step2?phone=${state.phone}`); | |||
}) | |||
.catch((err) => { | |||
console.log(err); | |||
}); | |||
}; | |||
// 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"; | |||
import { request } from "@/utils/network/request.js"; | |||
const state = reactive({ | |||
phone: "", //电话 | |||
checked: false, //是否勾选阅读协议 | |||
}); | |||
const checkboxChange = (e) => { | |||
console.log(e); | |||
state.checked = !state.checked; | |||
}; | |||
// 去协议页面 | |||
const toRead=()=>{ | |||
navTo("/login/agreement") | |||
} | |||
/* 下一步 */ | |||
const nextStep = () => { | |||
if (!state.phone) { | |||
msg("请输入手机号!"); | |||
return; | |||
} | |||
if (!checkStr(state.phone, "mobile")) { | |||
msg("请输入正确的手机号!"); | |||
return; | |||
} | |||
if (!state.checked) { | |||
msg("请勾选我已阅读并同意《平台用户服务隐私协议》"); | |||
return; | |||
} | |||
const options = { | |||
type: 2, | |||
data: { mobile: state.phone }, | |||
method: "POST", | |||
showLoading: true, | |||
}; | |||
request(sendCode, options) | |||
.then((res) => { | |||
msg("验证码发送成功!"); | |||
navTo(`/login/register-step2?phone=${state.phone}`); | |||
}) | |||
.catch((err) => { | |||
console.log(err); | |||
}); | |||
}; | |||
</script> | |||
<style lang="scss" scoped> | |||
.register-main { | |||
border-top: 1rpx solid #dcdcdc; | |||
padding: 78rpx 30rpx 50rpx; | |||
.title { | |||
font-size: 32rpx; | |||
color: #333333; | |||
font-weight: 600; | |||
} | |||
.hint { | |||
font-size: 24rpx; | |||
color: #999999; | |||
margin-top: 20rpx; | |||
} | |||
.form-input { | |||
margin-top: 80rpx; | |||
display: flex; | |||
flex-direction: row; | |||
align-items: center; | |||
height: 90rpx; | |||
border-bottom: 1rpx solid #dcdcdc; | |||
padding: 0rpx 12rpx; | |||
font-size: 28rpx; | |||
color: #333333; | |||
&:last-child { | |||
margin-top: 50rpx; | |||
} | |||
.input { | |||
flex: 1; | |||
padding-right: 48rpx; | |||
} | |||
.arror { | |||
width: 28rpx; | |||
height: 25rpx; | |||
margin-left: 16rpx; | |||
margin-right: 40rpx; | |||
} | |||
.eye { | |||
width: 48rpx; | |||
height: 48rpx; | |||
} | |||
} | |||
.form-placeholder { | |||
color: #999999; | |||
} | |||
.agreement { | |||
font-size: 24rpx; | |||
display: flex; | |||
align-items: center; | |||
margin-top: 60rpx; | |||
.txt-grey { | |||
color: #666666; | |||
} | |||
.txt-green { | |||
color: #00b38b; | |||
} | |||
:deep(.u-checkbox) { | |||
margin-right: -20rpx; | |||
} | |||
} | |||
} | |||
.btn { | |||
margin: 200rpx 40rpx 0px; | |||
} | |||
</style> | |||
.group { | |||
display: flex; | |||
align-items: center; | |||
} | |||
.register-main { | |||
border-top: 1rpx solid #dcdcdc; | |||
padding: 78rpx 30rpx 50rpx; | |||
.title { | |||
font-size: 32rpx; | |||
color: #333333; | |||
font-weight: 600; | |||
} | |||
.hint { | |||
font-size: 24rpx; | |||
color: #999999; | |||
margin-top: 20rpx; | |||
} | |||
.form-input { | |||
margin-top: 80rpx; | |||
display: flex; | |||
flex-direction: row; | |||
align-items: center; | |||
height: 90rpx; | |||
border-bottom: 1rpx solid #dcdcdc; | |||
padding: 0rpx 12rpx; | |||
font-size: 28rpx; | |||
color: #333333; | |||
&:last-child { | |||
margin-top: 50rpx; | |||
} | |||
.input { | |||
flex: 1; | |||
padding-right: 48rpx; | |||
} | |||
.arror { | |||
width: 28rpx; | |||
height: 25rpx; | |||
margin-left: 16rpx; | |||
margin-right: 40rpx; | |||
} | |||
.eye { | |||
width: 48rpx; | |||
height: 48rpx; | |||
} | |||
} | |||
.form-placeholder { | |||
color: #999999; | |||
} | |||
.agreement { | |||
font-size: 24rpx; | |||
display: flex; | |||
align-items: center; | |||
margin-top: 60rpx; | |||
.txt-grey { | |||
color: #666666; | |||
} | |||
.txt-green { | |||
color: #00b38b; | |||
} | |||
:deep(.u-checkbox) { | |||
margin-right: -20rpx; | |||
} | |||
} | |||
} | |||
.btn { | |||
margin: 200rpx 40rpx 0px; | |||
} | |||
</style> |
@@ -391,9 +391,15 @@ | |||
const toCreatOrder = (val: any) => { | |||
state.userType = val; | |||
if (val === "1") { | |||
navTo(`/applyCard/essential-information?type=${state.type}&&userType=${state.userType}`) | |||
// navTo(`/applyCard/essential-information?type=${state.type}&&userType=${state.userType}`) | |||
uni.navigateTo({ | |||
url:`/applyCard/essential-information?type=${state.type}&&userType=${state.userType}` | |||
}) | |||
} else { | |||
navTo(`/applyCard/essential-information?type=${state.type}&&userType=${state.userType}`) | |||
// navTo(`/applyCard/essential-information?type=${state.type}&&userType=${state.userType}`) | |||
uni.navigateTo({ | |||
url:`/applyCard/essential-information?type=${state.type}&&userType=${state.userType}` | |||
}) | |||
} | |||
closeMask(); | |||
}; |
@@ -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> |
@@ -16,6 +16,7 @@ | |||
<style lang="scss" scoped> | |||
.content { | |||
padding: 100rpx 50rpx 0rpx 50rpx; | |||
font-size: 30rpx; | |||
.subBtn{ | |||
margin-top: 100rpx; | |||
} |
@@ -12,8 +12,11 @@ | |||
</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" class="group"> | |||
<checkbox :checked="state.checked" color="#00B38B" style="transform:scale(0.85)"> | |||
</checkbox> | |||
<label>我已阅读并同意</label> | |||
</checkbox-group> | |||
<!-- <view class="txt-grey">我已阅读并同意</view> --> | |||
<view class="txt-green" @click="toRead">《平台用户服务隐私协议》</view> | |||
</view> | |||
@@ -47,9 +50,14 @@ | |||
checked: false, //是否勾选阅读协议 | |||
}); | |||
// | |||
const toRead = () => { | |||
const checkboxChange = (e) => { | |||
console.log(e); | |||
state.checked = !state.checked; | |||
}; | |||
// 去协议页面 | |||
const toRead=()=>{ | |||
navTo("/login/agreement") | |||
} | |||
@@ -88,6 +96,11 @@ | |||
</script> | |||
<style lang="scss" scoped> | |||
.group { | |||
display: flex; | |||
align-items: center; | |||
} | |||
.register-main { | |||
border-top: 1rpx solid #dcdcdc; | |||
padding: 78rpx 30rpx 50rpx; |
@@ -289,7 +289,7 @@ | |||
<style> | |||
page { | |||
background: #F3F3F3; | |||
background: #eef7f7; | |||
} | |||
</style> | |||
<style lang="scss" scoped> | |||
@@ -389,7 +389,11 @@ | |||
} | |||
.shibie-wrapper { | |||
margin-top: 60rpx; | |||
margin-top: 40rpx; | |||
background: #fff; | |||
padding: 40rpx 30rpx; | |||
border-radius: 20rpx; | |||
box-shadow: 0 4rpx 13rpx 3rpx rgba(223,223,223,.8); | |||
.title { | |||
font-size: 30rpx; |
@@ -66,7 +66,7 @@ export function request(code, options = {}) { | |||
options.success = (res) => { | |||
// 请求返回后,隐藏loading(如果请求返回快的话,可能会没有loading) | |||
wx.hideLoading() | |||
if (res.data.statusCode !== 0 && res.data.statusCode !== 200) { | |||
if (res.data.statusCode !== 0) { | |||
if (res.data.statusCode == 600) { | |||
resolve(res.data) | |||
} else if(res.data.statusCode == 401){ |