From 0b3c4a0ffa0ff53e892e5fdacc7c4ac196393a70 Mon Sep 17 00:00:00 2001
From: shuishen <1109946754@qq.com>
Date: Tue, 16 Dec 2025 15:32:48 +0800
Subject: [PATCH] feat:部署微信小程序测试
---
src/config/env.js | 31 +
src/pages.json | 8
src/pages/login/index.vue | 497 +++++++++++++-------------
src/pages/user/index.vue | 405 +++++++++++-----------
src/pages/map/index copy.vue | 10
src/manifest.json | 2
src/static/fonts/font.css | 13
src/App.vue | 12
src/pages/placeholder/placeholder.vue | 11
src/subPackages/404/index.vue | 9
src/utils/common/index.js | 24
11 files changed, 536 insertions(+), 486 deletions(-)
diff --git a/src/App.vue b/src/App.vue
index 83a564a..5101c82 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -1,12 +1,12 @@
<script setup>
-import {onHide, onLaunch, onShow} from "@dcloudio/uni-app";
-import {useAppStore, useUserStore} from "@/store";
-import {useGlobalWS} from "@/hooks/useGlobalWS.js";
+import { onHide, onLaunch, onShow } from "@dcloudio/uni-app";
+import { useAppStore, useUserStore } from "@/store";
+import { useGlobalWS } from "@/hooks/useGlobalWS.js";
const appStore = useAppStore();
const userStore = useUserStore();
-useGlobalWS()
+useGlobalWS();
onShow(() => {
console.log("App Show");
@@ -23,7 +23,7 @@
//不存在则跳转至登录页
uni.reLaunch({
url: "/pages/login/index",
- })
+ });
}
});
</script>
@@ -41,7 +41,7 @@
}
page {
- background-image: url('~@/static/images/user/bg.png');
+ background-image: url("https://wrj.shuixiongit.com/aiskyminio/cloud-bucket/ztzf_app_assets/images/user/bg.png");
background-size: cover;
background-position: center;
background-repeat: no-repeat;
diff --git a/src/config/env.js b/src/config/env.js
index 4ea2a2e..94e7913 100644
--- a/src/config/env.js
+++ b/src/config/env.js
@@ -1,26 +1,43 @@
+/*
+ * @Author : yuan
+ * @Date : 2025-12-15 17:51:08
+ * @LastEditors : yuan
+ * @LastEditTime : 2025-12-16 15:01:04
+ * @FilePath : \src\config\env.js
+ * @Description :
+ * Copyright 2025 OBKoro1, All Rights Reserved.
+ * 2025-12-15 17:51:08
+ */
// 如果是打包app,需要改这里,h5不需要改这里
const development = {
VITE_APP_ENV:'development',
// 开发环境这里改为自己的
- // VITE_APP_WEBVIEW_URL: 'https://wrj.shuixiongit.com/drone-app-web-view/#/webViewWrapper',
- VITE_APP_WEBVIEW_URL: 'http://localhost:5173/drone-app-web-view/#/webViewWrapper',
+ VITE_APP_WEBVIEW_URL: 'https://wrj.shuixiongit.com/drone-app-web-view/#/webViewWrapper',
+ // VITE_APP_WEBVIEW_URL: 'http://localhost:5173/drone-app-web-view/#/webViewWrapper',
VITE_API_BASE_URL: 'https://wrj.shuixiongit.com/api',
// VITE_API_BASE_URL: 'https://aisky.org.cn/api',
- VITE_APP_WS_API_URL:'wss://wrj.shuixiongit.com/drone-wss/api/v1/ws'
+ VITE_APP_WS_API_URL:'wss://wrj.shuixiongit.com/drone-wss/api/v1/ws',
+
+ // 静态资源存放地址'
+ VITE_APP_ASSETS_URL: 'https://wrj.shuixiongit.com/drone-app/assets/static'
}
const test = {
- VITE_APP_ENV:'test',
+ VITE_APP_ENV: 'test',
VITE_APP_WEBVIEW_URL: 'https://wrj.shuixiongit.com/drone-app-web-view/#/webViewWrapper',
VITE_API_BASE_URL: 'https://wrj.shuixiongit.com/api',
- VITE_APP_WS_API_URL:'wss://wrj.shuixiongit.com/drone-wss/api/v1/ws'
+ VITE_APP_WS_API_URL: 'wss://wrj.shuixiongit.com/drone-wss/api/v1/ws',
+ // 静态资源存放地址'
+ VITE_APP_ASSETS_URL: 'https://wrj.shuixiongit.com/drone-app/assets/static'
}
const production = {
- VITE_APP_ENV:'production',
+ VITE_APP_ENV: 'production',
VITE_APP_WEBVIEW_URL: 'https://aisky.org.cn/drone-app-web-view/#/webViewWrapper',
VITE_API_BASE_URL: 'https://aisky.org.cn/api',
- VITE_APP_WS_API_URL:'wss://aisky.org.cn/drone-wss/api/v1/ws'
+ VITE_APP_WS_API_URL: 'wss://aisky.org.cn/drone-wss/api/v1/ws',
+ // 静态资源存放地址'
+ VITE_APP_ASSETS_URL: 'https://wrj.shuixiongit.com/drone-app/assets/static'
}
export default {
diff --git a/src/manifest.json b/src/manifest.json
index 67f4c1a..fda55cc 100644
--- a/src/manifest.json
+++ b/src/manifest.json
@@ -89,7 +89,7 @@
"quickapp" : {},
/* 小程序特有相关 */
"mp-weixin" : {
- "appid" : "wx1ff4bbc24b343ef1",
+ "appid" : "wx7ad823321a1e4fdd",
"setting" : {
"urlCheck" : false
},
diff --git a/src/pages.json b/src/pages.json
index 49e545b..939a1f4 100644
--- a/src/pages.json
+++ b/src/pages.json
@@ -42,7 +42,14 @@
"navigationBarTitleText": "登录页",
"navigationStyle": "custom"
}
+ },
+ {
+ "path": "pages/placeholder/placeholder",
+ "style": {
+ "navigationBarTitleText": "占位页面"
+ }
}
+
],
"subPackages": [
{
@@ -174,6 +181,7 @@
"pagePath": "subPackages/taskDetail/addTask/index"
},
{
+ "pagePath": "pages/placeholder/placeholder",
"iconPath": "static/images/tabbar/drone.png",
"visible": "true"
},
diff --git a/src/pages/login/index.vue b/src/pages/login/index.vue
index e8db5f3..cd71dcf 100644
--- a/src/pages/login/index.vue
+++ b/src/pages/login/index.vue
@@ -1,281 +1,284 @@
<!-- 登录页 -->
<template>
- <view class="login-form-wrap">
- <image class="logo" :src="logoSvg" />
- <div class="title">掌控智飞</div>
- <div class="user-name">
- <image :src="usernameSvg" />
- <input v-model="loginForm.username" placeholder="请输入用户名" />
- </div>
- <div class="pass-word">
- <image :src="passwordSvg" />
- <input v-model="loginForm.password" type="password" placeholder="请输入密码" />
- </div>
- <div class="remember-password">
- <label>
- <checkbox-group @change="toggleRemember">
- <checkbox :checked="rememberPassword" color="#1D6FE9" style="transform:scale(0.7)" />
- </checkbox-group>
- 记住密码
- </label>
- </div>
+ <view class="login-form-wrap">
+ <image class="logo" :src="logoSvg" />
+ <div class="title">掌控智飞</div>
+ <div class="user-name">
+ <image :src="usernameSvg" />
+ <input v-model="loginForm.username" placeholder="请输入用户名" />
+ </div>
+ <div class="pass-word">
+ <image :src="passwordSvg" />
+ <input
+ v-model="loginForm.password"
+ type="password"
+ placeholder="请输入密码"
+ />
+ </div>
+ <div class="remember-password">
+ <label>
+ <checkbox-group @change="toggleRemember">
+ <checkbox
+ :checked="rememberPassword"
+ color="#1D6FE9"
+ style="transform: scale(0.7)"
+ />
+ </checkbox-group>
+ 记住密码
+ </label>
+ </div>
- <button class="login-btn" :style="[inputStyle]" @tap="submit">
- 登录
- </button>
-
- <image class="lowerRightCorner" :src="droneSvg" />
- </view>
+ <button class="login-btn" :style="[inputStyle]" @tap="submit">登录</button>
+ <image class="lowerRightCorner" :src="droneSvg" />
+ </view>
</template>
<script setup>
- import md5 from "js-md5";
- import {
- loginByUsername
- } from "@/api/user/index.js";
- import {
- useUserStore
- } from "@/store/index.js";
- import droneSvg from '@/static/images/login/droneSvg.svg'
- import usernameSvg from '@/static/images/login/username.svg'
- import passwordSvg from '@/static/images/login/password.svg'
- import logoSvg from '@/static/images/login/logo.svg'
- import {
- HOME_PATH,
- LOGIN_PATH,
- removeQueryString
- } from "@/router";
- import { onMounted } from 'vue';
+import { getAssetsImage } from "@/utils/index.js";
+import md5 from "js-md5";
+import { loginByUsername } from "@/api/user/index.js";
+import { useUserStore } from "@/store/index.js";
- const userStore = useUserStore();
- const loginForm = ref({
- username: "",
- password: "",
- });
- const rememberPassword = ref(false);
- const inputStyle = computed(() => {
- const style = {};
- if (loginForm.value.username && loginForm.value.password) {
- style.color = "#fff";
- style.backgroundColor = '#1D6FE9';
- }
- return style;
- });
- let redirect = HOME_PATH;
- function toggleRemember(e) {
- rememberPassword.value = e.detail.value.length > 0;
- }
+import { HOME_PATH, LOGIN_PATH, removeQueryString } from "@/router";
+import { onMounted } from "vue";
- async function submit() {
- if (!loginForm.value.username.trim()) {
- uni.showToast({
- title: "请输入用户名",
- icon: "none",
- duration: 2000
- });
- return;
- }
-
- if (!loginForm.value.password.trim()) {
- uni.showToast({
- title: "请输入密码",
- icon: "none",
- duration: 2000
- });
- return;
- }
- let userInfo = {
- tenantId: "000000",
- deptId: "",
- roleId: "",
- username: loginForm.value.username,
- password: loginForm.value.password,
- type: "account",
- code: "",
- key: "",
- };
+const droneSvg = getAssetsImage("/images/login/droneSvg.svg");
- if (rememberPassword.value) {
- uni.setStorageSync('rememberedUser', {
- username: loginForm.value.username,
- password: loginForm.value.password
- });
- } else {
- uni.removeStorageSync('rememberedUser');
- }
+const usernameSvg = getAssetsImage("/images/login/username.svg");
+const passwordSvg = getAssetsImage("/images/login/password.svg");
+const logoSvg = getAssetsImage("/images/login/logo.svg");
- try {
- const res = await loginByUsername(
- userInfo.tenantId,
- userInfo.deptId,
- userInfo.roleId,
- userInfo.username,
- md5(userInfo.password),
- userInfo.type,
- userInfo.key,
- userInfo.code
- );
- userStore.setUserInfo(res.data);
- uni.reLaunch({
- url: "/pages/map/index",
- });
- } catch (error) {
- const errorMsg =error.data?.error_description !=="Bad credentials" ? error.data?.error_description: "登录失败,请重试";
- uni.showToast({
- title: errorMsg,
- icon: "none",
- duration: 2000
- });
- }
- }
- // 从本地存储加载记住的密码
- onMounted(() => {
- const savedUserInfo = uni.getStorageSync('rememberedUser');
- console.log('记住密码',savedUserInfo)
- if (savedUserInfo) {
- loginForm.value.username = savedUserInfo.username;
- loginForm.value.password = savedUserInfo.password;
- rememberPassword.value = true;
- }
- });
- onLoad((options) => {
- if (options.redirect && removeQueryString(options.redirect) !== LOGIN_PATH) {
- redirect = decodeURIComponent(options.redirect);
- }
- });
+const userStore = useUserStore();
+const loginForm = ref({
+ username: "",
+ password: "",
+});
+const rememberPassword = ref(false);
+const inputStyle = computed(() => {
+ const style = {};
+ if (loginForm.value.username && loginForm.value.password) {
+ style.color = "#fff";
+ style.backgroundColor = "#1D6FE9";
+ }
+ return style;
+});
+let redirect = HOME_PATH;
+function toggleRemember(e) {
+ rememberPassword.value = e.detail.value.length > 0;
+}
+async function submit() {
+ if (!loginForm.value.username.trim()) {
+ uni.showToast({
+ title: "请输入用户名",
+ icon: "none",
+ duration: 2000,
+ });
+ return;
+ }
+
+ if (!loginForm.value.password.trim()) {
+ uni.showToast({
+ title: "请输入密码",
+ icon: "none",
+ duration: 2000,
+ });
+ return;
+ }
+ let userInfo = {
+ tenantId: "000000",
+ deptId: "",
+ roleId: "",
+ username: loginForm.value.username,
+ password: loginForm.value.password,
+ type: "account",
+ code: "",
+ key: "",
+ };
+
+ if (rememberPassword.value) {
+ uni.setStorageSync("rememberedUser", {
+ username: loginForm.value.username,
+ password: loginForm.value.password,
+ });
+ } else {
+ uni.removeStorageSync("rememberedUser");
+ }
+
+ try {
+ const res = await loginByUsername(
+ userInfo.tenantId,
+ userInfo.deptId,
+ userInfo.roleId,
+ userInfo.username,
+ md5(userInfo.password),
+ userInfo.type,
+ userInfo.key,
+ userInfo.code
+ );
+ userStore.setUserInfo(res.data);
+ uni.reLaunch({
+ url: "/pages/map/index",
+ });
+ } catch (error) {
+ const errorMsg =
+ error.data?.error_description !== "Bad credentials"
+ ? error.data?.error_description
+ : "登录失败,请重试";
+ uni.showToast({
+ title: errorMsg,
+ icon: "none",
+ duration: 2000,
+ });
+ }
+}
+// 从本地存储加载记住的密码
+onMounted(() => {
+ const savedUserInfo = uni.getStorageSync("rememberedUser");
+ console.log("记住密码", savedUserInfo);
+ if (savedUserInfo) {
+ loginForm.value.username = savedUserInfo.username;
+ loginForm.value.password = savedUserInfo.password;
+ rememberPassword.value = true;
+ }
+});
+onLoad((options) => {
+ if (options.redirect && removeQueryString(options.redirect) !== LOGIN_PATH) {
+ redirect = decodeURIComponent(options.redirect);
+ }
+});
</script>
<style lang="scss" scoped>
- .login-form-wrap {
- position: relative;
- text-align: center;
- height: 100%;
- width: 100%;
+.login-form-wrap {
+ position: relative;
+ text-align: center;
+ height: 100%;
+ width: 100%;
- .logo {
- width: 127px;
- height: 51px;
- margin: 0 auto;
- margin-top: 104px;
- margin-bottom: 16px;
- }
+ .logo {
+ width: 127px;
+ height: 51px;
+ margin: 0 auto;
+ margin-top: 104px;
+ margin-bottom: 16px;
+ }
- .lowerRightCorner {
- position: absolute;
- right: 0;
- bottom: 0;
- width: 425.61rpx;
- height: 316.46rpx;
- }
+ .lowerRightCorner {
+ position: absolute;
+ right: 0;
+ bottom: 0;
+ width: 425.61rpx;
+ height: 316.46rpx;
+ }
- .title {
- font-family: YouSheBiaoTiHei, YouSheBiaoTiHei;
- font-weight: 400;
- font-size: 84rpx;
- line-height: 82rpx;
- letter-spacing: 1px;
- text-shadow: 0px 8px 8px rgba(0, 0, 0, 0.18);
- text-align: center;
- font-style: normal;
- text-transform: none;
- color: #1452D3;
- text-align: center;
- margin-bottom: 168rpx;
- }
+ .title {
+ font-family: YouSheBiaoTiHei, YouSheBiaoTiHei;
+ font-weight: 400;
+ font-size: 84rpx;
+ line-height: 82rpx;
+ letter-spacing: 1px;
+ text-shadow: 0px 8px 8px rgba(0, 0, 0, 0.18);
+ text-align: center;
+ font-style: normal;
+ text-transform: none;
+ color: #1452d3;
+ text-align: center;
+ margin-bottom: 168rpx;
+ }
- .user-name,
- .pass-word {
- display: flex;
- //justify-content: center;
- align-items: center;
- margin-left: 62rpx;
- margin-right: 58rpx;
- height: 118rpx;
- border-bottom: 2rpx solid #E3E3E3;
+ .user-name,
+ .pass-word {
+ display: flex;
+ //justify-content: center;
+ align-items: center;
+ margin-left: 62rpx;
+ margin-right: 58rpx;
+ height: 118rpx;
+ border-bottom: 2rpx solid #e3e3e3;
- image {
- width: 40rpx;
- height: 40rpx;
- margin-right: 12rpx;
- }
+ image {
+ width: 40rpx;
+ height: 40rpx;
+ margin-right: 12rpx;
+ }
- :deep(uni-input) {
- height: 40rpx;
- line-height: 40rpx;
- width: 80%;
- margin-top: 20rpx;
- }
+ :deep(uni-input) {
+ height: 40rpx;
+ line-height: 40rpx;
+ width: 80%;
+ margin-top: 20rpx;
+ }
- :deep(.uni-input-placeholder) {
- font-size: 32rpx;
- color: #E3E3E3;
- font-weight: 500;
- }
- }
+ :deep(.uni-input-placeholder) {
+ font-size: 32rpx;
+ color: #e3e3e3;
+ font-weight: 500;
+ }
+ }
- .remember-password {
- display: flex;
- justify-content: flex-end;
- align-items: center;
- margin-left: 62rpx;
- margin-right: 58rpx;
- margin-top: 20rpx;
+ .remember-password {
+ display: flex;
+ justify-content: flex-end;
+ align-items: center;
+ margin-left: 62rpx;
+ margin-right: 58rpx;
+ margin-top: 20rpx;
- color: #666;
- font-size: 28rpx;
+ color: #666;
+ font-size: 28rpx;
- label {
- display: flex;
- align-items: center;
- }
- }
+ label {
+ display: flex;
+ align-items: center;
+ }
+ }
- input {
- @apply pb-6rpx mb-10rpx text-left;
- }
+ input {
+ @apply pb-6rpx mb-10rpx text-left;
+ }
- .tips {
- @apply mt-8rpx mb-60rpx;
- color: $u-info;
- }
+ .tips {
+ @apply mt-8rpx mb-60rpx;
+ color: $u-info;
+ }
- .login-btn {
- z-index: 1;
- @apply flex items-center justify-center py-12rpx px-0 text-30rpx border-none;
- background: #1D6FE9;
- color: white;
- width: 590rpx;
- height: 76rpx;
- border-radius: 40rpx 40rpx 40rpx 40rpx;
- margin-top: 100rpx;
+ .login-btn {
+ z-index: 1;
+ @apply flex items-center justify-center py-12rpx px-0 text-30rpx border-none;
+ background: #1d6fe9;
+ color: white;
+ width: 590rpx;
+ height: 76rpx;
+ border-radius: 40rpx 40rpx 40rpx 40rpx;
+ margin-top: 100rpx;
- &::after {
- @apply border-none;
- }
- }
+ &::after {
+ @apply border-none;
+ }
+ }
- .alternative {
- @apply flex justify-between mt-30rpx;
- color: $u-tips-color;
- }
- }
+ .alternative {
+ @apply flex justify-between mt-30rpx;
+ color: $u-tips-color;
+ }
+}
- .login-type-wrap {
- @apply flex justify-between pt-350rpx px-150rpx pb-150rpx;
+.login-type-wrap {
+ @apply flex justify-between pt-350rpx px-150rpx pb-150rpx;
- .item {
- @apply flex items-center flex-col text-28rpx;
- color: $u-content-color;
- }
- }
+ .item {
+ @apply flex items-center flex-col text-28rpx;
+ color: $u-content-color;
+ }
+}
- .hint {
- @apply px-40rpx py-20rpx text-24rpx;
- color: $u-tips-color;
+.hint {
+ @apply px-40rpx py-20rpx text-24rpx;
+ color: $u-tips-color;
- .link {
- color: $u-warning;
- }
- }
+ .link {
+ color: $u-warning;
+ }
+}
</style>
diff --git a/src/pages/map/index copy.vue b/src/pages/map/index copy.vue
index cceea63..5464613 100644
--- a/src/pages/map/index copy.vue
+++ b/src/pages/map/index copy.vue
@@ -89,12 +89,12 @@
const mapStore = useMapStore()
const layers = [{
- src: "/static/images/sl.png",
+ src: "https://wrj.shuixiongit.com/drone-app/assets/static/images/sl.png",
name: '标准地图',
key: 1,
},
{
- src: "/static/images/yx.png",
+ src: "https://wrj.shuixiongit.com/drone-app/assets/static/images/yx.png",
name: '卫星地图',
key: 2,
}
@@ -218,13 +218,13 @@
let map = null
const layers = [{
- src: "/static/images/sl.png",
+ src: "https://wrj.shuixiongit.com/drone-app/assets/static/images/sl.png",
name: '标准地图',
key: 1,
map: basemap0
},
{
- src: "/static/images/yx.png",
+ src: "https://wrj.shuixiongit.com/drone-app/assets/static/images/yx.png",
name: '卫星地图',
key: 2,
map: basemap1
@@ -308,7 +308,7 @@
// 创建一个自定义的图片图标
const customIcon = L.icon({
- iconUrl: './static/images/logo.png', // 替换为你的图片路径
+ iconUrl: 'https://wrj.shuixiongit.com/drone-app/assets/static/images/logo.png', // 替换为你的图片路径
iconSize: [32, 32], // 图标大小
iconAnchor: [16, 16], // 图标的锚点(设置图片的底部中心)
});
diff --git a/src/pages/placeholder/placeholder.vue b/src/pages/placeholder/placeholder.vue
new file mode 100644
index 0000000..8a7c737
--- /dev/null
+++ b/src/pages/placeholder/placeholder.vue
@@ -0,0 +1,11 @@
+<!-- 登录页 -->
+<template>
+ <view>占位页</view>
+</template>
+
+<script setup>
+
+</script>
+
+<style lang="scss" scoped>
+</style>
diff --git a/src/pages/user/index.vue b/src/pages/user/index.vue
index 74cdcf8..f62321e 100644
--- a/src/pages/user/index.vue
+++ b/src/pages/user/index.vue
@@ -1,231 +1,236 @@
<!-- 我的 -->
<template>
<view class="page-wrap">
- <view class="userBox">
- <view class="flex items-center pb-30rpx pl-30rpx pr-20rpx">
- <view class="mr-20rpx">
- <u-avatar :src="user.avatar" size="70" />
- </view>
- <view class="flex-1">
- <view class="userName">{{ userStore?.userInfo?.nick_name }}</view>
- <view class="departs">
- <image src="@/static/images/user/mobile.svg" alt="" />
- <span>{{user.deptName}}</span>
- </view>
- </view>
- <view class="rightLogo">
- <image src="@/static/images/user/logo2.png" alt="" />
- </view>
- </view>
- <view class="personalInformation">
- <div class="message">
- <div class="messagebox">个人信息</div>
- <div class="editInfo" @click="handelEdit(1)">点击编辑
- <image src="@/static/images/user/rightBtn.svg" alt="" />
- </div>
- </div>
- <div class="passwordBox">
- <div class="messagebox">修改密码</div>
- <div class="editInfo" @click="handelEdit(2)">点击编辑 <image src="@/static/images/user/rightBtn.svg" alt="" />
- </div>
- </div>
- </view>
+ <view class="userBox">
+ <view class="flex items-center pb-30rpx pl-30rpx pr-20rpx">
+ <view class="mr-20rpx">
+ <u-avatar :src="user.avatar" size="70" />
+ </view>
+ <view class="flex-1">
+ <view class="userName">{{ userStore?.userInfo?.nick_name }}</view>
+ <view class="departs">
+ <image
+ src="https://wrj.shuixiongit.com/aiskyminio/cloud-bucket/ztzf_app_assets/images/user/mobile.svg"
+ alt=""
+ />
+ <span>{{ user.deptName }}</span>
+ </view>
+ </view>
+ <view class="rightLogo">
+ <image
+ src="https://wrj.shuixiongit.com/aiskyminio/cloud-bucket/ztzf_app_assets/images/user/logo2.png"
+ alt=""
+ />
+ </view>
+ </view>
+ <view class="personalInformation">
+ <div class="message">
+ <div class="messagebox">个人信息</div>
+ <div class="editInfo" @click="handelEdit(1)">
+ 点击编辑
+ <image
+ :src="rightImage"
+ alt=""
+ />
+ </div>
+ </div>
+ <div class="passwordBox">
+ <div class="messagebox">修改密码</div>
+ <div class="editInfo" @click="handelEdit(2)">
+ 点击编辑
+ <image
+ :src="rightImage"
+ alt=""
+ />
+ </div>
+ </div>
+ </view>
- <view class="mt-20rpx">
- <div class="goOutStyle" @click="logOut">退出登录</div>
- </view>
- <div class="bottomLogo"><image src="@/static/images/user/logo1.png" alt="" /></div>
- </view>
+ <view class="mt-20rpx">
+ <div class="goOutStyle" @click="logOut">退出登录</div>
+ </view>
+ <div class="bottomLogo">
+ <image
+ :src="logoImage"
+ alt=""
+ />
+ </div>
+ </view>
</view>
</template>
<script setup>
- import {
- getUserInfo,
+import { getAssetsImage } from "@/utils/index.js";
+import { getUserInfo } from "@/api/user/index.js";
+import { useClipboard } from "@/hooks";
+import { useUserStore } from "@/store/index.js";
+import { onShow } from "@dcloudio/uni-app";
+import { getDeviceRegionApi } from "@/api/map.js";
- } from '@/api/user/index.js';
- import {
- useClipboard
- } from "@/hooks";
- import {
- useUserStore
- } from "@/store/index.js";
- import {
- onShow
- } from "@dcloudio/uni-app";
- import {
- getDeviceRegionApi
- } from "@/api/map.js";
+const { setClipboardData, getClipboardData } = useClipboard();
- const {
- setClipboardData,
- getClipboardData
- } = useClipboard();
- const userStore = useUserStore();
- const user = ref('')
- const getUserInfoData = () => {
- getUserInfo().then(res => {
- user.value = res.data.data;
- });
- };
+const rightImage = getAssetsImage("/images/user/rightBtn.svg");
+const logoImage = getAssetsImage("/images/user/logo1.png");
- function logOut() {
- userStore.setUserInfo(null)
- uni.reLaunch({
- url: '/pages/login/index'
- })
- }
-
- function getDeviceRegion() {
- getDeviceRegionApi().then(res => {
-
- })
- }
- const handelEdit = (val) => {
-
- if (val === 1) {
- uni.navigateTo({
- url: `/subPackages/userDetail/infos/index`
- });
- } else {
- uni.navigateTo({
- url: `/subPackages/userDetail/password/index`
- });
- }
-
- }
- // 登录鉴权,微信小程序端点击tabbar的底层逻辑不触发uni.switchTab,需要在页面onShow生命周期中校验权限
- onShow(async () => {
- getDeviceRegion()
- getUserInfoData()
- uni.setTabBarItem({
- index: 2, // Tab 的索引(从0开始)
- visible: false,
- })
- uni.setTabBarItem({
- index: 3, // Tab
- visible: true,
- });
+const userStore = useUserStore();
+const user = ref("");
+const getUserInfoData = () => {
+ getUserInfo().then((res) => {
+ user.value = res.data.data;
});
+};
+
+function logOut() {
+ userStore.setUserInfo(null);
+ uni.reLaunch({
+ url: "/pages/login/index",
+ });
+}
+
+function getDeviceRegion() {
+ getDeviceRegionApi().then((res) => {});
+}
+const handelEdit = (val) => {
+ if (val === 1) {
+ uni.navigateTo({
+ url: `/subPackages/userDetail/infos/index`,
+ });
+ } else {
+ uni.navigateTo({
+ url: `/subPackages/userDetail/password/index`,
+ });
+ }
+};
+// 登录鉴权,微信小程序端点击tabbar的底层逻辑不触发uni.switchTab,需要在页面onShow生命周期中校验权限
+onShow(async () => {
+ getDeviceRegion();
+ getUserInfoData();
+ uni.setTabBarItem({
+ index: 2, // Tab 的索引(从0开始)
+ visible: false,
+ });
+ uni.setTabBarItem({
+ index: 3, // Tab
+ visible: true,
+ });
+});
</script>
<style scoped lang="scss">
- .page-wrap {
- width: 100%;
- height: 100%;
-
- }
-.userBox {
- padding-top: 88rpx;
+.page-wrap {
+ width: 100%;
+ height: 100%;
}
- .userName {
- font-weight: 700;
- font-size: 36rpx;
- color: #000000;
+.userBox {
+ padding-top: 88rpx;
+}
+.userName {
+ font-weight: 700;
+ font-size: 36rpx;
+ color: #000000;
+}
+.departs {
+ display: flex;
+ align-items: center;
+ margin-top: 22rpx;
+
+ image {
+ width: 28rpx;
+ height: 28rpx;
}
- .departs {
- display: flex;
- align-items: center;
- margin-top: 22rpx;
-
- image {
- width: 28rpx;
- height: 28rpx;
- }
-
- span {
- font-family: "Source Han Sans CN";
- font-weight: 400;
- font-size: 28rpx;
- color: rgba(0, 0, 0, 0.6);
- margin-left: 6rpx;
- }
- }
-
- .rightLogo {
- width: 200rpx;
- height: 80rpx;
-
- image {
- width: 100%;
- height: 100%;
- }
- }
-
- .bottomLogo {
- position: absolute;
- bottom: 50rpx;
- left: 0;
- right: 0;
- margin: 0 auto;
- text-align: center;
-
- image {
- width: 128rpx;
- height: 52rpx;
- }
- }
-
- .goOutStyle {
- width: 590rpx;
- height: 76rpx;
- background: #1D6FE9;
- border-radius: 40rpx;
+ span {
font-family: "Source Han Sans CN";
font-weight: 400;
font-size: 28rpx;
- color: #FFFFFF;
- text-align: center;
- line-height: 76rpx;
- margin: auto;
- margin-top: 114rpx;
+ color: rgba(0, 0, 0, 0.6);
+ margin-left: 6rpx;
}
+}
- .personalInformation {
- display: flex;
- justify-content: space-between;
- padding: 0 24rpx;
+.rightLogo {
+ width: 200rpx;
+ height: 80rpx;
- .message,
- .passwordBox {
- width: 340rpx;
- height: 160rpx;
+ image {
+ width: 100%;
+ height: 100%;
+ }
+}
- .messagebox {
- padding: 20rpx 24rpx;
- font-family: "Source Han Sans CN";
- font-weight: 500;
- font-size: 28rpx;
- color: #000000;
- }
+.bottomLogo {
+ position: absolute;
+ bottom: 50rpx;
+ left: 0;
+ right: 0;
+ margin: 0 auto;
+ text-align: center;
- .editInfo {
- padding: 20rpx 24rpx;
- color: rgba(0, 0, 0, 0.5);
- font-family: "Source Han Sans CN";
- font-weight: 400;
- font-size: 24rpx;
- display: flex;
- align-items: center;
+ image {
+ width: 128rpx;
+ height: 52rpx;
+ }
+}
- image {
- width: 28rpx;
- height: 28rpx;
- }
+.goOutStyle {
+ width: 590rpx;
+ height: 76rpx;
+ background: #1d6fe9;
+ border-radius: 40rpx;
+ font-family: "Source Han Sans CN";
+ font-weight: 400;
+ font-size: 28rpx;
+ color: #ffffff;
+ text-align: center;
+ line-height: 76rpx;
+ margin: auto;
+ margin-top: 114rpx;
+}
+
+.personalInformation {
+ display: flex;
+ justify-content: space-between;
+ padding: 0 24rpx;
+
+ .message,
+ .passwordBox {
+ width: 340rpx;
+ height: 160rpx;
+
+ .messagebox {
+ padding: 20rpx 24rpx;
+ font-family: "Source Han Sans CN";
+ font-weight: 500;
+ font-size: 28rpx;
+ color: #000000;
+ }
+
+ .editInfo {
+ padding: 20rpx 24rpx;
+ color: rgba(0, 0, 0, 0.5);
+ font-family: "Source Han Sans CN";
+ font-weight: 400;
+ font-size: 24rpx;
+ display: flex;
+ align-items: center;
+
+ image {
+ width: 28rpx;
+ height: 28rpx;
}
}
-
- .message {
- background: url(@/static/images/user/info.png) no-repeat center;
- background-size: 100% 100%;
-
- }
-
- .passwordBox {
- background: url(@/static/images/user/password.png) no-repeat center;
- background-size: 100% 100%;
-
- }
}
+
+ .message {
+ background: url(https://wrj.shuixiongit.com/drone-app/assets/static/images/user/info.png)
+ no-repeat center;
+ background-size: 100% 100%;
+ }
+
+ .passwordBox {
+ background: url(https://wrj.shuixiongit.com/drone-app/assets/static/images/user/password.png)
+ no-repeat center;
+ background-size: 100% 100%;
+ }
+}
</style>
diff --git a/src/static/fonts/font.css b/src/static/fonts/font.css
index 9451657..9140775 100644
--- a/src/static/fonts/font.css
+++ b/src/static/fonts/font.css
@@ -1,6 +1,6 @@
@font-face {
font-family: "Source Han Sans CN";
- src: url("SourceHanSansCN-Regular.woff2") format("opentype");
+ src: url("./SourceHanSansCN-Regular.woff2") format("opentype");
font-weight: 400;
font-style: normal;
font-display: swap;
@@ -8,35 +8,32 @@
@font-face {
font-family: "Source Han Sans CN";
- src: url("SourceHanSansCN-Bold.woff2") format("opentype") ;
+ src: url("./SourceHanSansCN-Bold.woff2") format("opentype");
font-weight: 700;
font-style: normal;
font-display: swap;
}
-
@font-face {
font-family: "Segoe UI";
- src: url("SourceHanSansCN-Regular.woff2") format("opentype");
+ src: url("./SourceHanSansCN-Regular.woff2") format("opentype");
font-weight: 400;
font-style: normal;
font-display: swap;
}
-
@font-face {
font-family: "Segoe UI";
- src: url("SourceHanSansCN-Bold.woff2") format("opentype") ;
+ src: url("./SourceHanSansCN-Bold.woff2") format("opentype");
font-weight: 700;
font-style: normal;
font-display: swap;
}
-
/* 额外的标题字体 */
@font-face {
font-family: "YouSheBiaoTiHei";
- src: url("YouSheBiaoTiHei.TTF") format("truetype");
+ src: url("./YouSheBiaoTiHei.TTF") format("truetype");
font-weight: normal;
font-style: normal;
font-display: swap;
diff --git a/src/subPackages/404/index.vue b/src/subPackages/404/index.vue
index 4cdb3fb..e5a4b4f 100644
--- a/src/subPackages/404/index.vue
+++ b/src/subPackages/404/index.vue
@@ -2,8 +2,8 @@
* @Author : yuan
* @Date : 2025-09-28 09:31:16
* @LastEditors : yuan
- * @LastEditTime : 2025-09-28 09:50:32
- * @FilePath : \src\pages\common\404\index.vue
+ * @LastEditTime : 2025-12-16 11:02:27
+ * @FilePath : \src\subPackages\404\index.vue
* @Description :
* Copyright 2025 OBKoro1, All Rights Reserved.
* 2025-09-28 09:31:16
@@ -15,7 +15,7 @@
mode="page"
text-size="20"
text="页面不存在"
- icon="/static/images/404.png"
+ :icon="errorImage"
width="380"
height="380"
/>
@@ -23,8 +23,11 @@
</template>
<script setup>
+import { getAssetsImage } from "@/utils/index.js";
import { HOME_PATH } from "@/router";
+const errorImage = getAssetsImage("/404.png");
+
function handleBack() {
uni.$u.route({
type: "switchTab",
diff --git a/src/utils/common/index.js b/src/utils/common/index.js
index 9e1f8ff..c8cacc3 100644
--- a/src/utils/common/index.js
+++ b/src/utils/common/index.js
@@ -10,8 +10,8 @@
*/
// 小程序更新检测
import { useUserStore } from "@/store/index.js"
-import configEnv from "@/config/env.js";
-import process from "node:process";
+import configEnv from "@/config/env.js"
+import process from "node:process"
export function mpUpdate () {
const updateManager = uni.getUpdateManager()
@@ -40,26 +40,27 @@
})
})
}
-export function getStatusBarHeight() {
+export function getStatusBarHeight () {
try {
- const systemInfo = uni.getSystemInfoSync();
- return systemInfo.statusBarHeight || 0;
+ const systemInfo = uni.getSystemInfoSync()
+ return systemInfo.statusBarHeight || 0
} catch (error) {
- return 0;
+ return 0
}
}
-export function getEnvObj() {
+export function getEnvObj () {
return configEnv[__APP_ENV__?.ENV_NAME] || {}
}
+
export function getWebViewUrl (targetUrl, otherParams) {
const userStore = useUserStore()
const url = getEnvObj().VITE_APP_WEBVIEW_URL
const uniPlatform = __APP_ENV__.UNI_PLATFORM
- const statusBarHeight = getStatusBarHeight();
+ const statusBarHeight = getStatusBarHeight()
// 1. 处理用户参数
const userParams = userStore?.userInfo ? JSON.stringify(userStore.userInfo) : '{}'
// 2. 构建查询参数字符串
-let queryString = `params=${encodeURIComponent(userParams)}&topMargin=${statusBarHeight}&uniPlatform=${uniPlatform}`
+ let queryString = `params=${encodeURIComponent(userParams)}&topMargin=${statusBarHeight}&uniPlatform=${uniPlatform}`
// 3. 处理 otherParams 对象
if (otherParams && typeof otherParams === 'object') {
@@ -73,3 +74,8 @@
// 4. 拼接完整 URL
return `${url}${targetUrl}?${queryString}`
}
+
+export function getAssetsImage (targetUrl) {
+ const url = getEnvObj().VITE_APP_ASSETS_URL
+ return `${url}${targetUrl}`
+}
\ No newline at end of file
--
Gitblit v1.9.3