Commit 660378cc98f7fe48e558b7b70e046fed31c72f96

Authored by tianwu
1 parent b58940ac

快递员端 地图显示bug修复 和登录默认存储用户名密码 ,密码加密处理

project-wl-kuaidiyuan-uniapp-vue3/package.json
1 1 {
2 2 "dependencies": {
  3 + "crypto-js": "^4.2.0",
3 4 "esbuild": "^0.14.53",
4 5 "esbuild-windows-64": "^0.14.53"
5 6 }
... ...
project-wl-kuaidiyuan-uniapp-vue3/pages/login/user.vue
... ... @@ -51,14 +51,17 @@ import storage from '@/utils/storage.js';
51 51 import { userLogins } from '../api/user.js';
52 52 // 导入接口
53 53 import { getHomeInfo } from '@/pages/api/index.js';
  54 +
  55 +import { encrypt, decrypt } from '@/utils/crypto.js'
  56 +
54 57 // ------定义变量------
55 58 const store = useStore(); //vuex获取储存数据
56 59 let showPassword = ref(false); //控制密码右侧图标显示隐藏
57 60 const customForm = ref(); //表单校验
58 61 // 表单数据
59 62 let fromInfo = reactive({
60   - account: 'qykdy002', //账号
61   - password: '123456' // 密码
  63 + account: '', //账号
  64 + password: '' // 密码
62 65 });
63 66 // 表单校验
64 67 const customRules = reactive({
... ... @@ -84,8 +87,17 @@ onMounted(() => {
84 87 // 进入登录页面配置默认的请求url
85 88 // uni.setStorageSync('baseUrl', 'http://slwl-geteway-t.itheima.net/courier');
86 89 // 处理定时上报位置的定时器
87   - clearInterval(uni.getStorageSync('positions').timer);
88   - uni.setStorageSync('positions', null);
  90 + if(uni.getStorageSync('positions')?.timer) {
  91 + clearInterval(uni.getStorageSync('positions').timer);
  92 + uni.setStorageSync('positions', null);
  93 + }
  94 + const accountHistory = uni.getStorageSync('accountHistory')
  95 + if(accountHistory) {
  96 + fromInfo.account = accountHistory.account
  97 + fromInfo.password = decrypt(accountHistory.password)
  98 + // console.log(accountHistory)
  99 + }
  100 +
89 101 });
90 102 // ------定义方法------
91 103 // 登录
... ... @@ -112,6 +124,10 @@ const handleSubmit = async () => {
112 124 // 存储token
113 125 uni.setStorageSync('token', res.data.token);
114 126 store.commit('user/setToken', res.data.token);
  127 +
  128 + //存储用户账号和密码,密码加密存储
  129 + const data = { account: fromInfo.account, password: encrypt(fromInfo.password) }
  130 + uni.setStorageSync('accountHistory', data)
115 131 // // 通过vuex获取用户信息
116 132 store.dispatch('user/GetUsersInfo');
117 133 await getHomeInfo().then(res => {
... ...
project-wl-kuaidiyuan-uniapp-vue3/pages/my/map.vue
... ... @@ -9,7 +9,8 @@
9 9 :latitude="latitude"
10 10 :longitude="longitude"
11 11 :polygons="polygons"
12   - scale="16"
  12 + :enable-zoom="true"
  13 + scale="10"
13 14 ></map
14 15 ></view>
15 16 </template>
... ... @@ -66,14 +67,49 @@ onMounted(() =&gt; {
66 67 getUserPolygon();
67 68 });
68 69 // ------定义方法------
  70 +
  71 +const getGeoCenter = (points) => {
  72 + let x = 0, y = 0, z = 0
  73 +
  74 + points.forEach(p => {
  75 + const lat = p.latitude * Math.PI / 180
  76 + const lng = p.longitude * Math.PI / 180
  77 +
  78 + x += Math.cos(lat) * Math.cos(lng)
  79 + y += Math.cos(lat) * Math.sin(lng)
  80 + z += Math.sin(lat)
  81 + })
  82 +
  83 + const total = points.length
  84 + x /= total; y /= total; z /= total
  85 +
  86 + const lng = Math.atan2(y, x)
  87 + const hyp = Math.sqrt(x * x + y * y)
  88 + const lat = Math.atan2(z, hyp)
  89 +
  90 + return {
  91 + longitude: lng * 180 / Math.PI,
  92 + latitude: lat * 180 / Math.PI
  93 + }
  94 +}
  95 +
  96 +
69 97 // 获取作业范围
70 98 const getUserPolygon = async () => {
71 99 await getUserScope().then((res) => {
72 100 if (res.code === 200) {
73   - // TODO暂时保留
  101 + // TODO暂时保留
74 102 // polygons[0].points=res.data.polygon
75 103 // latitude.value=polygons[0].points[0].latitude
76 104 // longitude.value=polygons[0].points[0].longitude
  105 +
  106 + if(res.data.polygon) {
  107 + const {longitude : lng, latitude: lat} = getGeoCenter(res.data.polygon)
  108 + latitude.value = lat
  109 + longitude.value = lng
  110 + polygons[0].points=res.data.polygon
  111 +
  112 + }
77 113 }
78 114 });
79 115 };
... ...
project-wl-kuaidiyuan-uniapp-vue3/utils/crypto.js 0 → 100644
  1 +import CryptoJS from 'crypto-js'
  2 +
  3 +// 一个固定密钥(自己换掉)
  4 +const SECRET_KEY = 'dili-tms'
  5 +
  6 +// AES 加密
  7 +export function encrypt(data) {
  8 + return CryptoJS.AES.encrypt(data, SECRET_KEY).toString()
  9 +}
  10 +
  11 +// AES 解密
  12 +export function decrypt(cipherText) {
  13 + const bytes = CryptoJS.AES.decrypt(cipherText, SECRET_KEY)
  14 + return bytes.toString(CryptoJS.enc.Utf8)
  15 +}
... ...