Explorar el Código

Merge branch 'master' of http://192.168.40.220/dmc/jz_applet into master

yxb
wq hace 2 años
padre
commit
1690321bec

+ 36
- 17
after-sale/ETC-log-off/etc-log-off.vue Ver fichero

@@ -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>

+ 15
- 17
after-sale/activation/activate.vue Ver fichero

@@ -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>

+ 36
- 10
after-sale/additional-equipment/additional-equipment-verification.vue Ver fichero

@@ -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;

+ 84
- 49
after-sale/replace-equipment/form.vue Ver fichero

@@ -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>

+ 62
- 24
after-sale/replace-equipment/verification.vue Ver fichero

@@ -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;

+ 12
- 6
after-sale/rescind-carId/rescind-carId-select.vue Ver fichero

@@ -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>

+ 67
- 30
after-sale/to-bookkeeping-card/mailing_information.vue Ver fichero

@@ -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%;

+ 1
- 0
after-sale/transfer-ownership/transfer-confirm.vue Ver fichero

@@ -119,6 +119,7 @@
data: {
cardStatus: undefined,
obuStatus: undefined,
orderId: undefined,
}
});

+ 35
- 10
after-sale/transfer-ownership/transfer-verification.vue Ver fichero

@@ -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;

+ 26
- 5
applyCard/addAddress.vue Ver fichero

@@ -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;
}

+ 12
- 5
applyCard/car-release.vue Ver fichero

@@ -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')}`,
});

+ 14
- 5
applyCard/choice-product.vue Ver fichero

@@ -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 = {

+ 20
- 10
applyCard/essential-information.vue Ver fichero

@@ -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),

+ 17
- 6
applyCard/opening-account-people.vue Ver fichero

@@ -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>

+ 18
- 5
applyCard/opening-account-unit.vue Ver fichero

@@ -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({

+ 13
- 7
components/nav-bar/nav-bar2.vue Ver fichero

@@ -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;

+ 1
- 1
datas/obuStatus.js Ver fichero

@@ -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
}

+ 9
- 4
login/login.vue Ver fichero

@@ -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;

+ 157
- 147
login/register-step1.vue Ver fichero

@@ -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>

+ 8
- 2
pages/index/index.vue Ver fichero

@@ -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();
};

+ 341
- 0
pages/user/user - back.vue Ver fichero

@@ -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>

+ 663
- 335
pages/user/user.vue
La diferencia del archivo ha sido suprimido porque es demasiado grande
Ver fichero


+ 1
- 0
personal-center/setting/account-cancellation.vue Ver fichero

@@ -16,6 +16,7 @@
<style lang="scss" scoped>
.content {
padding: 100rpx 50rpx 0rpx 50rpx;
font-size: 30rpx;
.subBtn{
margin-top: 100rpx;
}

+ 18
- 5
personal-center/setting/change-phone.vue Ver fichero

@@ -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;

+ 6
- 2
personal-center/setting/personal-information/user-card.vue Ver fichero

@@ -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;

+ 1
- 1
utils/network/request.js Ver fichero

@@ -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){

Cargando…
Cancelar
Guardar