@@ -106,8 +106,11 @@ | |||
showLoading: true, | |||
}; | |||
request(etcQueryProduct, options).then((res) => { | |||
console.log(res.bizContent); | |||
const data = stringToJson(res.bizContent); | |||
state.dataArray = data; | |||
console.log(data); | |||
console.log(typeof(data)); | |||
state.dataArray = data??[]; | |||
}); | |||
}); | |||
@@ -1,7 +1,7 @@ | |||
<!-- 车牌颜色选择组件 --> | |||
<template> | |||
<view class="numberplates"> | |||
<view class="numberplate" v-for="(item,index) in state.numberplateColorList" @click="checkNumberplateColor(item)"> | |||
<view class="numberplate" v-for="(item,index) in state.numberplateColorList" @click="checkNumberplateColor(item)" :key="index"> | |||
<image :src="`${fileURL}/image/issueActivation/${item.src}.png`" class="numberplate-bg"></image> | |||
<view class="numberplate-name" :style="`color:${item.color}`">{{numberplate}}</view> | |||
<image :src="`${fileURL}image/issueActivation/${item.checkSrc}.png`" class="numberplate-icon-check" |
@@ -127,7 +127,7 @@ | |||
const state = reactive({ | |||
data: { | |||
vehiclePlate: undefined, //车牌号 | |||
vehiclePlateNumber: "贵A1234", //车牌号 | |||
vehiclePlateNumber: "贵A12345", //车牌号 | |||
vehiclePlateColor: 0, //车盘颜色 | |||
type: "0", //车牌类型 | |||
userType: "1", | |||
@@ -246,6 +246,7 @@ | |||
}; | |||
request(searchOrder, options).then((res) => { | |||
const data = stringToJson(res.bizContent); | |||
console.log(data); | |||
orderStepGoActon(data); | |||
}); | |||
}; | |||
@@ -296,7 +297,7 @@ | |||
}; | |||
request(addressQuery, options).then((res) => { | |||
const data = stringToJson(res.bizContent); | |||
state.addressArray = data.data; | |||
state.addressArray = data.data??[]; | |||
}); | |||
} | |||
@@ -0,0 +1,124 @@ | |||
<!-- 办理流程 --> | |||
<template> | |||
<view :class="['as-layout-horizontal', index as any === 0?'active':'', 'logistics-gray']" style="overflow: visible" v-for="(item,index) in options" :key="index"> | |||
<view class="logistics-layout"> | |||
<view class="logistics-layout-top"> | |||
<view class="title"> | |||
{{(item as ItemType).title}} | |||
</view> | |||
<!-- <view class="more" v-if="(item as ItemType).right" @click="emit('more')"> | |||
<span class="label">详细信息</span> | |||
<image class="arror" :src="`${$imgUrl}common/arror-right-green.png`"></image> | |||
</view> --> | |||
</view> | |||
<view class="desc"> | |||
{{(item as ItemType).desc}} | |||
</view> | |||
</view> | |||
</view> | |||
</template> | |||
<script setup lang="ts"> | |||
import { PropType } from "vue"; | |||
interface ItemType{ | |||
title:string, | |||
desc:string, | |||
right?:boolean, | |||
} | |||
const emit = defineEmits(['more']) | |||
const props = defineProps({ | |||
//数据列表 | |||
options:{ | |||
type:Array as PropType<ItemType[]>, | |||
default: () => ([]) | |||
}, | |||
}) | |||
</script> | |||
<style lang="scss" scoped> | |||
.as-layout-horizontal{ | |||
border-left: 2px solid #00B38B; | |||
padding-bottom: 45rpx; | |||
margin-top: 10rpx; | |||
position: relative; | |||
&::after{ | |||
content: ''; | |||
left: -8rpx; | |||
top: -10rpx; | |||
position: absolute; | |||
width: 12rpx; | |||
height: 12rpx; | |||
border-radius: 50%; | |||
border: 2rpx solid #00B38B; | |||
box-sizing: border-box; | |||
} | |||
&:last-child{ | |||
border-left: none; | |||
padding-bottom: 0px; | |||
&::after{ | |||
left: -4.5rpx; | |||
} | |||
} | |||
.logistics-layout{ | |||
padding-left: 35rpx; | |||
&-top{ | |||
width: 100%; | |||
display: flex; | |||
margin-top: -20rpx; | |||
align-items: center; | |||
.more{ | |||
display: flex; | |||
align-items: center; | |||
.label{ | |||
font-size: 24rpx; | |||
color: #00B38B; | |||
} | |||
.arror{ | |||
width: 30rpx; | |||
height: 30rpx; | |||
} | |||
} | |||
} | |||
.title{ | |||
font-size: 28rpx; | |||
color: #0D0F26; | |||
flex: 1; | |||
font-weight: bold; | |||
} | |||
.desc{ | |||
font-size: 24rpx; | |||
margin-top: 20rpx; | |||
margin-bottom: 20rpx; | |||
color: #666666; | |||
line-height: 25px; | |||
} | |||
} | |||
} | |||
.logistics-gray{ | |||
border-color: #DCDCDC; | |||
&::after{ | |||
background-color: #DCDCDC; | |||
border: none; | |||
} | |||
} | |||
.active{ | |||
position: relative; | |||
&::after{ | |||
content: ''; | |||
position: absolute; | |||
width: 12rpx; | |||
height: 12rpx; | |||
left:-8rpx; | |||
border-radius: 50%; | |||
background-color: #00B38B; | |||
} | |||
} | |||
</style> |
@@ -15,15 +15,14 @@ | |||
</view> | |||
<view class="right"> | |||
<view class="right-content"> | |||
<view v-for="(item,index) in menu.list[tableSelectIndex].subMenus" :key='index' class="item-box" | |||
@click=" | |||
toNext(item.link) | |||
"> | |||
<view class="item bg-blue" :style="{ '--background': bgBlue }"> | |||
<image :src="`${$imgUrl}${item.iconPath}`" /> | |||
<block v-if="menu.list.length >0"> | |||
<view v-for="(item,index) in menu.list[tableSelectIndex].subMenus" :key='index' class="item-box" @click="toNext(item.link)"> | |||
<view class="item bg-blue" :style="{ '--background': bgBlue }"> | |||
<image :src="`${$imgUrl}${item.iconPath}`" /> | |||
</view> | |||
<view class="text">{{item.name}}</view> | |||
</view> | |||
<view class="text">{{item.name}}</view> | |||
</view> | |||
</block> | |||
</view> | |||
</view> | |||
</view> | |||
@@ -72,9 +71,8 @@ | |||
}); | |||
onLoad(() => { | |||
queryMenuConfigAction().then((val: any) => { | |||
menu.list = val.menuList | |||
queryMenuConfigAction().then((val : any) => { | |||
menu.list = val.menuList??[] | |||
}) | |||
}); | |||
@@ -82,6 +80,7 @@ | |||
var data = { | |||
openId: getItem(StorageKeys.OpenId), | |||
systemType: '6', | |||
loginSource: '69af303ba2eb4608a099163f0d2a5dbd' | |||
}; | |||
const options = { | |||
type: 2, | |||
@@ -103,7 +102,6 @@ | |||
uni.navigateTo({ | |||
url: url, | |||
}); | |||
// msg("该功能正在开发中,敬请期待!") | |||
} | |||
</script> | |||
@@ -246,4 +244,4 @@ | |||
.right .text-orange { | |||
color: #fd8362; | |||
} | |||
</style> | |||
</style> |
@@ -63,7 +63,7 @@ export const useUserStore = defineStore("userStore", { | |||
console.log("option********",options); | |||
return new Promise(async (resolve, reject) => { | |||
const res = await request(getToken, options); | |||
const data = stringToJson(stringToJson(res.bizContent)); | |||
const data = stringToJson(res.bizContent); | |||
this.saveToken(data.accessToken); | |||
this.saveOpenId(data.openId); | |||
resolve(data); |
@@ -85,8 +85,11 @@ export function request(code, options = {}) { | |||
reject(res.data.errorMsg) | |||
return | |||
} | |||
let content = s4.decryptData_CBC(res, sm4Key) | |||
content.data.bizContent = JSON.stringify(content.data.bizContent) | |||
// console.log(content); | |||
// content.data.bizContent = JSON.stringify(content.data.bizContent) | |||
// console.log(content.data); | |||
resolve(content.data) | |||
} | |||
options.fail = (err) => { |
@@ -393,9 +393,10 @@ export function SM4Util () { | |||
sm4.sm4_setkey_dec(ctx, keyBytes) | |||
let decrypted = sm4.sm4_crypt_cbc(ctx, ivBytes, base64js.toByteArray(cipherText.data.bizContent)) | |||
let bizContent = utf8ByteToUnicodeStr(decrypted) | |||
let begin = bizContent.indexOf('{'); | |||
let end = bizContent.lastIndexOf('}'); | |||
cipherText.data.bizContent = bizContent.substring(begin,end+1) | |||
// let begin = bizContent.indexOf('{'); | |||
// let end = bizContent.lastIndexOf('}'); | |||
// cipherText.data.bizContent = bizContent.substring(begin,end+1) | |||
cipherText.data.bizContent = bizContent; | |||
return cipherText | |||
} catch (e) { | |||
console.error(e) |