From b9a26af5b08d3d92a6c38fd90e023bc4706f19eb Mon Sep 17 00:00:00 2001
From: shuishen <1109946754@qq.com>
Date: Mon, 29 Sep 2025 14:22:30 +0800
Subject: [PATCH] feat:一些基础文件格式化处理

---
 src/hooks/use-modal/index.js           |    2 
 src/hooks/use-theme/index.js           |    2 
 src/hooks/use-loading/index.js         |    2 
 src/store/modules/user/index.js        |   66 ++--
 build/plugins/autoImport.js            |    6 
 src/plugins/permission.js              |    6 
 build/plugins/unocss.js                |    6 
 src/components/theme-picker/index.vue  |   23 
 src/plugins/ui.js                      |    2 
 build/config/proxy.js                  |   10 
 build/plugins/visualizer.js            |    6 
 build/plugins/component.js             |    6 
 src/utils/common/index.js              |    4 
 cz.config.js                           |    2 
 src/locales/index.js                   |    2 
 src/utils/request/interceptors.js      |    4 
 build/plugins/replaceUrl.js            |    6 
 src/utils/modals/index.js              |    8 
 build/plugins/index.js                 |   22 
 src/utils/auth/index.js                |    8 
 src/components/lang-select/index.vue   |   39 +-
 src/pages/inspectionTask/index.vue     |   23 
 src/pages/map/index.vue                |  132 ++++----
 src/hooks/use-clipboard/index.js       |    2 
 src/pages/login/index.vue              |   91 +++--
 src/store/modules/app/index.js         |   58 +-
 src/store/index.js                     |    2 
 src/utils/request/index.js             |   12 
 src/utils/storage/index.js             |   10 
 scripts/post-upgrade.js                |   14 
 scripts/verify-commit.js               |   23 
 src/hooks/use-share/index.js           |    2 
 src/router/index.js                    |   14 
 src/subPackages/404/index.vue          |    7 
 src/hooks/use-permission/index.js      |    2 
 src/subPackages/theme/index.vue        |   47 +-
 src/pages/user/index.vue               |   23 
 src/main.js                            |    2 
 src/plugins/index.js                   |    2 
 src/components/agree-privacy/index.vue |   67 ++--
 build/config/index.js                  |    2 
 src/App.vue                            |   29 -
 src/pages/work/index.vue               |   38 +-
 src/hooks/use-location/index.js        |    8 
 44 files changed, 425 insertions(+), 417 deletions(-)

diff --git a/build/config/index.js b/build/config/index.js
index 9bcd868..e739ac8 100644
--- a/build/config/index.js
+++ b/build/config/index.js
@@ -1 +1 @@
-export * from './proxy';
+export * from './proxy'
diff --git a/build/config/proxy.js b/build/config/proxy.js
index a708a9b..9c31850 100644
--- a/build/config/proxy.js
+++ b/build/config/proxy.js
@@ -9,15 +9,15 @@
  * 2025-09-28 09:31:16
  */
 export const createViteProxy = (env) => {
-  const { VITE_APP_PROXY, VITE_API_PREFIX, VITE_API_BASE_URL } = env;
+  const { VITE_APP_PROXY, VITE_API_PREFIX, VITE_API_BASE_URL } = env
   // 不使用代理直接返回
-  if (!JSON.parse(VITE_APP_PROXY)) return undefined;
+  if (!JSON.parse(VITE_APP_PROXY)) return undefined
   const proxy = {
     [VITE_API_PREFIX]: {
       target: VITE_API_BASE_URL,
       changeOrigin: true,
       rewrite: path => path.replace(new RegExp(`^${VITE_API_PREFIX}`), ''),
     },
-  };
-  return proxy;
-};
+  }
+  return proxy
+}
diff --git a/build/plugins/autoImport.js b/build/plugins/autoImport.js
index 6c0c639..57dfe87 100644
--- a/build/plugins/autoImport.js
+++ b/build/plugins/autoImport.js
@@ -12,7 +12,7 @@
  * @name AutoImportDeps
  * @description 按需加载,自动引入
  */
-import AutoImport from 'unplugin-auto-import/vite';
+import AutoImport from 'unplugin-auto-import/vite'
 
 export const AutoImportDeps = () => {
   return AutoImport({
@@ -20,5 +20,5 @@
     // 禁用生成 .d.ts 文件,因为项目已转为 JavaScript
     dts: false,
     vueTemplate: true,
-  });
-};
+  })
+}
diff --git a/build/plugins/component.js b/build/plugins/component.js
index bf8e9f2..4d7a375 100644
--- a/build/plugins/component.js
+++ b/build/plugins/component.js
@@ -2,11 +2,11 @@
  * @name AutoRegistryComponents
  * @description 按需加载,自动引入
  */
-import Components from 'unplugin-vue-components/vite';
+import Components from 'unplugin-vue-components/vite'
 
 export const AutoRegistryComponents = () => {
   return Components({
     // 禁用生成 .d.ts 文件,因为项目已转为 JavaScript
     dts: false,
-  });
-};
+  })
+}
diff --git a/build/plugins/index.js b/build/plugins/index.js
index 3947d93..0cb9962 100644
--- a/build/plugins/index.js
+++ b/build/plugins/index.js
@@ -1,13 +1,13 @@
-import uniPlugin from '@dcloudio/vite-plugin-uni';
-import ViteRestart from 'vite-plugin-restart';
-import { AutoImportDeps } from './autoImport';
+import uniPlugin from '@dcloudio/vite-plugin-uni'
+import ViteRestart from 'vite-plugin-restart'
+import { AutoImportDeps } from './autoImport'
 // import { ConfigImageminPlugin } from './imagemin';
 // import { ReplaceUrlPlugin } from './replaceUrl';
-import { AutoRegistryComponents } from './component';
-import { MCPPlugin } from './mcp';
-import { ConfigUnoCSSPlugin } from './unocss';
+import { AutoRegistryComponents } from './component'
+import { MCPPlugin } from './mcp'
+import { ConfigUnoCSSPlugin } from './unocss'
 
-export default function createVitePlugins(isBuild) {
+export default function createVitePlugins (isBuild) {
   const vitePlugins = [
     // UnoCSS配置
     ConfigUnoCSSPlugin(),
@@ -23,7 +23,7 @@
     }),
     // 为项目开启 MCP Server
     MCPPlugin(),
-  ];
+  ]
 
   if (isBuild) {
     const buildPlugins = [
@@ -33,9 +33,9 @@
       // CleanImagePlugin(),
       // 打包视图分析
       // VisualizerPlugin(),
-    ];
-    vitePlugins.push(...buildPlugins);
+    ]
+    vitePlugins.push(...buildPlugins)
   }
 
-  return vitePlugins;
+  return vitePlugins
 }
diff --git a/build/plugins/replaceUrl.js b/build/plugins/replaceUrl.js
index a700468..e8ae2d7 100644
--- a/build/plugins/replaceUrl.js
+++ b/build/plugins/replaceUrl.js
@@ -2,12 +2,12 @@
  * @name ReplaceImageUrl
  * @description 替换图片地址
  */
-import replaceImageUrl from 'vite-plugin-replace-image-url';
+import replaceImageUrl from 'vite-plugin-replace-image-url'
 
 export const ReplaceUrlPlugin = () => {
   return replaceImageUrl({
     publicPath: 'https://photo.example.com/miniprogram',
     sourceDir: 'src/static',
     verbose: true,
-  });
-};
+  })
+}
diff --git a/build/plugins/unocss.js b/build/plugins/unocss.js
index 5cbc196..0cef2e0 100644
--- a/build/plugins/unocss.js
+++ b/build/plugins/unocss.js
@@ -2,8 +2,8 @@
  * @name ConfigUnoCSSPlugin
  * @description UnoCSS相关配置
  */
-import UnoCSS from 'unocss/vite';
+import UnoCSS from 'unocss/vite'
 
 export const ConfigUnoCSSPlugin = () => {
-  return UnoCSS();
-};
+  return UnoCSS()
+}
diff --git a/build/plugins/visualizer.js b/build/plugins/visualizer.js
index 2e520d0..824855c 100644
--- a/build/plugins/visualizer.js
+++ b/build/plugins/visualizer.js
@@ -12,12 +12,12 @@
  * @name VisualizerPlugin
  * @description 打包视图分析
  */
-import { visualizer } from 'rollup-plugin-visualizer';
+import { visualizer } from 'rollup-plugin-visualizer'
 
 export const VisualizerPlugin = () => {
   return visualizer({
     emitFile: false,
     filename: 'stats.html', // 分析图生成的文件名
     open: true, // 如果存在本地服务端口,将在打包后自动展示
-  });
-};
+  })
+}
diff --git a/cz.config.js b/cz.config.js
index 66abc46..cb44b17 100644
--- a/cz.config.js
+++ b/cz.config.js
@@ -55,4 +55,4 @@
   defaultIssues: '',
   defaultScope: '',
   defaultSubject: '',
-};
+}
diff --git a/scripts/post-upgrade.js b/scripts/post-upgrade.js
index bcaadda..1092af4 100644
--- a/scripts/post-upgrade.js
+++ b/scripts/post-upgrade.js
@@ -2,7 +2,7 @@
 // # 在升级完后,会自动添加很多无用依赖,这需要删除以减小依赖包体积
 // # 只需要执行下面的命令即可
 
-import { exec } from 'node:child_process';
+import { exec } from 'node:child_process'
 
 // 定义要执行的命令
 const dependencies = [
@@ -20,17 +20,17 @@
   '@dcloudio/uni-mp-harmony',
   // vue 已经内置了 @vue/runtime-core,这里移除掉
   '@vue/runtime-core',
-];
+]
 
 // 使用exec执行命令
 exec(`pnpm remove ${dependencies.join(' ')}`, (error, stdout, stderr) => {
   if (error) {
     // 如果有错误,打印错误信息
-    console.error(`执行出错: ${error}`);
-    return;
+    console.error(`执行出错: ${error}`)
+    return
   }
   // 打印正常输出
-  console.log(`stdout: ${stdout}`);
+  console.log(`stdout: ${stdout}`)
   // 如果有错误输出,也打印出来
-  console.error(`stderr: ${stderr}`);
-});
+  console.error(`stderr: ${stderr}`)
+})
diff --git a/scripts/verify-commit.js b/scripts/verify-commit.js
index 96cdb28..29a52eb 100644
--- a/scripts/verify-commit.js
+++ b/scripts/verify-commit.js
@@ -3,26 +3,25 @@
  * @link https://github.com/toplenboren/simple-git-hooks
  * @see 参考:https://github.com/vuejs/vue-next/blob/master/.github/commit-convention.md
  */
-import { readFileSync } from 'node:fs';
-import path from 'node:path';
-import process from 'node:process';
-import pico from 'picocolors';
+import { readFileSync } from 'node:fs'
+import path from 'node:path'
+import process from 'node:process'
+import pico from 'picocolors'
 
-const msgPath = path.resolve('.git/COMMIT_EDITMSG');
-const msg = readFileSync(msgPath, 'utf-8').trim();
+const msgPath = path.resolve('.git/COMMIT_EDITMSG')
+const msg = readFileSync(msgPath, 'utf-8').trim()
 
 const commitRE
-    = /^(?:revert: )?(?:feat|fix|docs|dx|style|refactor|perf|test|workflow|build|ci|chore|types|wip|mod|release|strengthen)(?:\(.+\))?: .{1,50}/;
+  = /^(?:revert: )?(?:feat|fix|docs|dx|style|refactor|perf|test|workflow|build|ci|chore|types|wip|mod|release|strengthen)(?:\(.+\))?: .{1,50}/
 
 if (!commitRE.test(msg)) {
-  console.log(pico.yellow(`\n提交的信息: ${msg}\n`));
+  console.log(pico.yellow(`\n提交的信息: ${msg}\n`))
   console.error(
     `  ${pico.white(pico.bgRed(' 格式错误 '))} ${pico.red(
       '无效的提交信息格式.',
-    )}\n\n${
-      pico.red('  正确的提交消息格式. 例如:\n\n')
+    )}\n\n${pico.red('  正确的提交消息格式. 例如:\n\n')
     }    ${pico.green('feat: add a new feature')}\n`
     + `    ${pico.green('fix: fixed an bug')}`,
-  );
-  process.exit(1);
+  )
+  process.exit(1)
 }
diff --git a/src/App.vue b/src/App.vue
index 05e4210..466a749 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -9,35 +9,34 @@
  * 2025-09-28 09:31:16
 -->
 <script setup>
-import { onHide, onLaunch, onShow } from "@dcloudio/uni-app"
-import { useAppStore } from "@/store"
-import { mpUpdate } from "@/utils/index"
+import { onHide, onLaunch, onShow } from "@dcloudio/uni-app";
+import { useAppStore } from "@/store";
+import { mpUpdate } from "@/utils/index";
 
-const appStore = useAppStore()
+const appStore = useAppStore();
 
 onLaunch(() => {
-  console.log("App Launch")
+  console.log("App Launch");
 
   // 初始化系统信息
-  appStore.initSystemInfo()
+  appStore.initSystemInfo();
 
   // #ifdef MP-WEIXIN
-  mpUpdate()
+  mpUpdate();
   // #endif
-})
+});
 
 onShow(() => {
-  console.log("App Show")
-})
+  console.log("App Show");
+});
 
 onHide(() => {
-  console.log("App Hide")
-})
-
+  console.log("App Hide");
+});
 </script>
 
 <style lang="scss">
 /* 每个页面公共css */
-@import 'uview-plus/index.scss';
-@import '@/static/styles/common.scss';
+@import "uview-plus/index.scss";
+@import "@/static/styles/common.scss";
 </style>
diff --git a/src/components/agree-privacy/index.vue b/src/components/agree-privacy/index.vue
index cc65547..f2e18d1 100644
--- a/src/components/agree-privacy/index.vue
+++ b/src/components/agree-privacy/index.vue
@@ -7,19 +7,27 @@
 
       <view class="flex flex-col">
         <span class="pt-30rpx text-black font-bold">{{ initSubTitle }}</span>
-        <span class="pt-30rpx text-sm text-black">1.为向您提供基本的服务,我们会遵循正当、合法、必要的原则收集和使用必要的信息。</span>
-        <span class="pt-30rpx text-sm text-black">2.基于您的授权我们可能会收集和使用您的相关信息,您有权拒绝或取消授权。</span>
-        <span class="pt-30rpx text-sm text-black">3.未经您的授权同意,我们不会将您的信息共享给第三方或用于您未授权的其他用途。</span>
-        <span class="pt-30rpx text-sm text-black">4.详细信息请您完整阅读<text class="text-decoration" @click="openPrivacyContract">{{
-          initPrivacyContractName
-        }}</text></span>
+        <span class="pt-30rpx text-sm text-black"
+          >1.为向您提供基本的服务,我们会遵循正当、合法、必要的原则收集和使用必要的信息。</span
+        >
+        <span class="pt-30rpx text-sm text-black"
+          >2.基于您的授权我们可能会收集和使用您的相关信息,您有权拒绝或取消授权。</span
+        >
+        <span class="pt-30rpx text-sm text-black"
+          >3.未经您的授权同意,我们不会将您的信息共享给第三方或用于您未授权的其他用途。</span
+        >
+        <span class="pt-30rpx text-sm text-black"
+          >4.详细信息请您完整阅读<text
+            class="text-decoration"
+            @click="openPrivacyContract"
+            >{{ initPrivacyContractName }}</text
+          ></span
+        >
       </view>
 
       <view class="mt-30rpx flex items-center justify-around pt-10rpx">
         <view class="min-w-100px">
-          <button class="button button-default" @click="disagree">
-            拒绝
-          </button>
+          <button class="button button-default" @click="disagree">拒绝</button>
         </view>
         <view class="min-w-100px">
           <button
@@ -39,41 +47,41 @@
 <script setup>
 const props = withDefaults(defineProps(), {
   modelValue: false,
-  title: '',
-  subTitle: '',
+  title: "",
+  subTitle: "",
   disableCheckPrivacy: true,
-  agreePrivacyId: 'agree-btn',
+  agreePrivacyId: "agree-btn",
 });
 
 const emit = defineEmits([
-  'update:modelValue',
-  'needPrivacyAuthorization',
-  'agree',
-  'disagree',
+  "update:modelValue",
+  "needPrivacyAuthorization",
+  "agree",
+  "disagree",
 ]);
 // 初始化的标题
-const initTitle = ref('隐私政策概要');
+const initTitle = ref("隐私政策概要");
 // 初始化的副标题
-const initSubTitle = ref('');
+const initSubTitle = ref("");
 // 隐私政策
-const initPrivacyContractName = ref('隐私政策');
+const initPrivacyContractName = ref("隐私政策");
 
 // 打开隐私
 function openAgreePrivacy() {
-  emit('update:modelValue', true);
+  emit("update:modelValue", true);
 }
 
 // 关闭隐私
 function closeAgreePrivacy() {
-  emit('update:modelValue', false);
+  emit("update:modelValue", false);
 }
 
 // 需要初始化的数据
 function initData() {
   initTitle.value = props.title || initTitle.value;
-  initSubTitle.value
-    = props.subTitle
-      || `亲爱的用户,感谢您一直以来的支持!为了更好地保护您的权益,同时遵守相关监管要求,请认真阅读${initPrivacyContractName.value},特向您说明如下:`;
+  initSubTitle.value =
+    props.subTitle ||
+    `亲爱的用户,感谢您一直以来的支持!为了更好地保护您的权益,同时遵守相关监管要求,请认真阅读${initPrivacyContractName.value},特向您说明如下:`;
 }
 
 // 检测是否授权
@@ -89,8 +97,7 @@
           // 需要弹出隐私协议
           openAgreePrivacy();
         }
-      }
-      else {
+      } else {
         // 用户已经同意过隐私协议,所以不需要再弹出隐私协议,也能调用已声明过的隐私接口
         // wx.getUserProfile()
       }
@@ -112,14 +119,14 @@
 
 // 同意
 function agree(e) {
-  const buttonId = e.target.id || 'agree-btn';
-  emit('agree', buttonId);
-  emit('update:modelValue', false);
+  const buttonId = e.target.id || "agree-btn";
+  emit("agree", buttonId);
+  emit("update:modelValue", false);
 }
 
 // 拒绝
 function disagree() {
-  emit('disagree');
+  emit("disagree");
   closeAgreePrivacy();
 }
 
diff --git a/src/components/lang-select/index.vue b/src/components/lang-select/index.vue
index 8c0fc58..a81533f 100644
--- a/src/components/lang-select/index.vue
+++ b/src/components/lang-select/index.vue
@@ -14,39 +14,38 @@
 </template>
 
 <script setup>
-import { useI18n } from "vue-i18n"
+import { useI18n } from "vue-i18n";
 
 const props = defineProps({
   size: {
     type: Number,
     default: 40,
-    required: false
-  }
-})
-const emit = defineEmits(["change"])
-const { locale, t } = useI18n()
+    required: false,
+  },
+});
+const emit = defineEmits(["change"]);
+const { locale, t } = useI18n();
 const langStyle = {
-  fontSize: `${props.size}rpx`
-}
+  fontSize: `${props.size}rpx`,
+};
 const langOptions = computed(() => {
   return [
     { label: t("locale.en"), value: "en" },
-    { label: t("locale.zh-hans"), value: "zh-Hans" }
-  ]
-})
+    { label: t("locale.zh-hans"), value: "zh-Hans" },
+  ];
+});
 const langIndex = computed(() => {
-  return langOptions.value.findIndex(item => {
-    return item.value === locale.value
-  })
-})
+  return langOptions.value.findIndex((item) => {
+    return item.value === locale.value;
+  });
+});
 
 function handleLangChange(event) {
-  const lang = langOptions.value[event.detail.value].value
-  locale.value = lang
-  uni.setLocale(lang)
-  emit("change", lang)
+  const lang = langOptions.value[event.detail.value].value;
+  locale.value = lang;
+  uni.setLocale(lang);
+  emit("change", lang);
 }
-
 </script>
 
 <style lang="scss" scoped></style>
diff --git a/src/components/theme-picker/index.vue b/src/components/theme-picker/index.vue
index 2945bc0..0747ec7 100644
--- a/src/components/theme-picker/index.vue
+++ b/src/components/theme-picker/index.vue
@@ -1,9 +1,11 @@
 <template>
   <view class="flex flex-wrap gap-3">
     <view
-      v-for="(item, index) in colors" :key="index"
+      v-for="(item, index) in colors"
+      :key="index"
       class="mb-10rpx h-40rpx w-40rpx center cursor-pointer border-4rpx border-gray-300 rounded-4rpx border-solid"
-      :class="{ 'border-white': theme === item.name }" :style="{ backgroundColor: item.color }"
+      :class="{ 'border-white': theme === item.name }"
+      :style="{ backgroundColor: item.color }"
       @click="changeTheme(item.name)"
     >
       <view v-if="theme === item.name" class="i-mdi-check text-32rpx c-#fff" />
@@ -12,25 +14,24 @@
 </template>
 
 <script setup>
-import { useAppStore } from "@/store"
+import { useAppStore } from "@/store";
 
-const appStore = useAppStore()
+const appStore = useAppStore();
 
 const colors = [
   {
     name: "",
-    color: "#21d59d"
+    color: "#21d59d",
   },
   {
     name: "blue",
-    color: "#3c9cff"
-  }
-]
+    color: "#3c9cff",
+  },
+];
 
-const theme = computed(() => appStore.getTheme)
+const theme = computed(() => appStore.getTheme);
 
 function changeTheme(theme) {
-  appStore.setTheme(theme)
+  appStore.setTheme(theme);
 }
-
 </script>
diff --git a/src/hooks/use-clipboard/index.js b/src/hooks/use-clipboard/index.js
index 318d568..b1b8cf2 100644
--- a/src/hooks/use-clipboard/index.js
+++ b/src/hooks/use-clipboard/index.js
@@ -7,7 +7,7 @@
  * // 获取剪切板
  * const data = await getClipboardData()
  */
-export default function useClipboard() {
+export default function useClipboard () {
   const setClipboardData = ({ data, showToast = true }) => {
     return new Promise((resolve, reject) => {
       uni.setClipboardData({
diff --git a/src/hooks/use-loading/index.js b/src/hooks/use-loading/index.js
index 804dda3..b45c54b 100644
--- a/src/hooks/use-loading/index.js
+++ b/src/hooks/use-loading/index.js
@@ -7,7 +7,7 @@
  * // 隐藏loading
  * hideLoading()
  */
-export default function useLoading() {
+export default function useLoading () {
   const showLoading = (content = "加载中") => {
     uni.showLoading({
       title: content,
diff --git a/src/hooks/use-location/index.js b/src/hooks/use-location/index.js
index cadcd10..7e063d1 100644
--- a/src/hooks/use-location/index.js
+++ b/src/hooks/use-location/index.js
@@ -5,7 +5,7 @@
  * - 地址解析
  * - 距离计算
  */
-export default function useLocation() {
+export default function useLocation () {
   // 当前位置信息
   const location = ref(null)
 
@@ -191,9 +191,9 @@
     const a =
       Math.sin(dLat / 2) * Math.sin(dLat / 2) +
       Math.cos((lat1 * Math.PI) / 180) *
-        Math.cos((lat2 * Math.PI) / 180) *
-        Math.sin(dLon / 2) *
-        Math.sin(dLon / 2)
+      Math.cos((lat2 * Math.PI) / 180) *
+      Math.sin(dLon / 2) *
+      Math.sin(dLon / 2)
 
     const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a))
     const distance = R * c
diff --git a/src/hooks/use-modal/index.js b/src/hooks/use-modal/index.js
index adc277b..5cf5ac9 100644
--- a/src/hooks/use-modal/index.js
+++ b/src/hooks/use-modal/index.js
@@ -4,7 +4,7 @@
  * const {showModal} = useModal()
  * showModal('提示内容')
  */
-export default function useModal() {
+export default function useModal () {
   const showModal = (content, options) => {
     return new Promise((resolve, reject) => {
       uni.showModal({
diff --git a/src/hooks/use-permission/index.js b/src/hooks/use-permission/index.js
index 86060c1..dc2621d 100644
--- a/src/hooks/use-permission/index.js
+++ b/src/hooks/use-permission/index.js
@@ -5,6 +5,6 @@
 // 1.微信小程序端点击tabbar的底层逻辑不触发uni.switchTab
 // 2.h5在浏览器地址栏输入url后跳转不触发uni的路由api
 // 3.首次启动加载的页面不触发uni的路由api
-export default async function usePermission() {
+export default async function usePermission () {
   return hasPerm(currentRoute())
 }
diff --git a/src/hooks/use-share/index.js b/src/hooks/use-share/index.js
index 263e652..d982598 100644
--- a/src/hooks/use-share/index.js
+++ b/src/hooks/use-share/index.js
@@ -10,7 +10,7 @@
  * onShareAppMessage()
  * onShareTimeline()
  */
-export default function useShare(options) {
+export default function useShare (options) {
   // #ifdef MP-WEIXIN
   const title = options?.title ?? ""
   const path = options?.path ?? ""
diff --git a/src/hooks/use-theme/index.js b/src/hooks/use-theme/index.js
index d0d2f0f..024a76b 100644
--- a/src/hooks/use-theme/index.js
+++ b/src/hooks/use-theme/index.js
@@ -14,7 +14,7 @@
 /**
  * 主题Hook
  */
-export default function useTheme() {
+export default function useTheme () {
   const appStore = useAppStore()
 
   // 当前主题模式
diff --git a/src/locales/index.js b/src/locales/index.js
index 4373ecb..2ea0f89 100644
--- a/src/locales/index.js
+++ b/src/locales/index.js
@@ -12,7 +12,7 @@
   }
 })
 
-function setupI18n(app) {
+function setupI18n (app) {
   app.use(i18n)
 }
 
diff --git a/src/main.js b/src/main.js
index feecda1..3d16126 100644
--- a/src/main.js
+++ b/src/main.js
@@ -15,7 +15,7 @@
 import "virtual:uno.css"
 import 'leaflet/dist/leaflet.css'
 
-export function createApp() {
+export function createApp () {
   const app = createSSRApp(App)
   app.use(setupPlugins)
 
diff --git a/src/pages/inspectionTask/index.vue b/src/pages/inspectionTask/index.vue
index 65e7f20..0e32751 100644
--- a/src/pages/inspectionTask/index.vue
+++ b/src/pages/inspectionTask/index.vue
@@ -1,4 +1,4 @@
- <!-- 巡检任务 -->
+<!-- 巡检任务 -->
 <template>
   <z-paging ref="pagingRef" v-model="dataList" @query="queryList">
     <view v-for="(item, index) in dataList" :key="index">
@@ -17,9 +17,9 @@
 </template>
 
 <script setup>
-const pagingRef = ref(null)
+const pagingRef = ref(null);
 
-const dataList = ref([])
+const dataList = ref([]);
 
 const urls = [
   "https://picsum.photos/100/100?random=1",
@@ -31,22 +31,22 @@
   "https://picsum.photos/100/100?random=7",
   "https://picsum.photos/100/100?random=8",
   "https://picsum.photos/100/100?random=9",
-  "https://picsum.photos/100/100?random=10"
-]
+  "https://picsum.photos/100/100?random=10",
+];
 
 function queryList(pageNo, pageSize) {
-  console.log("[ pageNo ] >", pageNo)
-  console.log("[ pageSize ] >", pageSize)
+  console.log("[ pageNo ] >", pageNo);
+  console.log("[ pageSize ] >", pageSize);
   // 这里的pageNo和pageSize会自动计算好,直接传给服务器即可
   // 这里的请求只是演示,请替换成自己的项目的网络请求,并在网络请求回调中通过pagingRef.value.complete(请求回来的数组)将请求结果传给z-paging
   setTimeout(() => {
     // 1秒之后停止刷新动画
-    const list = []
+    const list = [];
     for (let i = 0; i < 30; i++)
-      list.push(urls[uni.$u.random(0, urls.length - 1)])
+      list.push(urls[uni.$u.random(0, urls.length - 1)]);
 
-    pagingRef.value?.complete(list)
-  }, 1000)
+    pagingRef.value?.complete(list);
+  }, 1000);
   // this.$request
   //   .queryList({ pageNo, pageSize })
   //   .then(res => {
@@ -60,5 +60,4 @@
   //     pagingRef.value.complete(false);
   //   });
 }
-
 </script>
diff --git a/src/pages/login/index.vue b/src/pages/login/index.vue
index 43e6a09..403ee91 100644
--- a/src/pages/login/index.vue
+++ b/src/pages/login/index.vue
@@ -2,12 +2,20 @@
 <template>
   <view>
     <view class="login-form-wrap">
-      <view class="title">
-        欢迎登录
-      </view>
-      <input v-model="tel" class="u-border-bottom" type="number" placeholder="请输入手机号">
+      <view class="title"> 欢迎登录 </view>
+      <input
+        v-model="tel"
+        class="u-border-bottom"
+        type="number"
+        placeholder="请输入手机号"
+      />
       <view class="u-border-bottom my-40rpx flex">
-        <input v-model="code" class="flex-1" type="number" placeholder="请输入验证码">
+        <input
+          v-model="code"
+          class="flex-1"
+          type="number"
+          placeholder="请输入验证码"
+        />
         <view>
           <u-code ref="uCodeRef" @change="codeChange" />
           <u-button :text="tips" type="success" size="mini" @click="getCode" />
@@ -18,9 +26,7 @@
       </button>
 
       <view class="alternative">
-        <view class="password">
-          密码登录
-        </view>
+        <view class="password"> 密码登录 </view>
         <view class="issue flex items-center">
           遇到问题 <text class="i-mdi-help" />
         </view>
@@ -42,9 +48,7 @@
     </view>
     <view class="hint">
       登录代表同意
-      <text class="link">
-        用户协议、隐私政策,
-      </text>
+      <text class="link"> 用户协议、隐私政策, </text>
       并授权使用您的账号信息(如昵称、头像、收获地址)以便您统一管理
     </view>
   </view>
@@ -55,76 +59,75 @@
   HOME_PATH,
   isTabBarPath,
   LOGIN_PATH,
-  removeQueryString
-} from "@/router"
-import { setToken } from "@/utils/auth"
+  removeQueryString,
+} from "@/router";
+import { setToken } from "@/utils/auth";
 // import { useUserStore } from '@/store';
 
 // const userStore = useUserStore();
-const tel = ref("18502811111")
-const code = ref("1234")
-const tips = ref()
-const uCodeRef = ref(null)
-let redirect = HOME_PATH
+const tel = ref("18502811111");
+const code = ref("1234");
+const tips = ref();
+const uCodeRef = ref(null);
+let redirect = HOME_PATH;
 
 const inputStyle = computed(() => {
-  const style = {}
+  const style = {};
   if (tel.value && code.value) {
-    style.color = "#fff"
-    style.backgroundColor = uni.$u.color.warning
+    style.color = "#fff";
+    style.backgroundColor = uni.$u.color.warning;
   }
-  return style
-})
+  return style;
+});
 
 function codeChange(text) {
-  tips.value = text
+  tips.value = text;
 }
 
 function getCode() {
   if (uCodeRef.value?.canGetCode) {
     // 模拟向后端请求验证码
     uni.showLoading({
-      title: "正在获取验证码"
-    })
+      title: "正在获取验证码",
+    });
     setTimeout(() => {
-      uni.hideLoading()
-      uni.$u.toast("验证码已发送")
+      uni.hideLoading();
+      uni.$u.toast("验证码已发送");
       // 通知验证码组件内部开始倒计时
-      uCodeRef.value?.start()
-    }, 1000)
+      uCodeRef.value?.start();
+    }, 1000);
   } else {
-    uni.$u.toast("倒计时结束后再发送")
+    uni.$u.toast("倒计时结束后再发送");
   }
 }
 async function submit() {
   if (!uni.$u.test.mobile(Number(tel.value))) {
-    uni.$u.toast("请输入正确的手机号")
-    return
+    uni.$u.toast("请输入正确的手机号");
+    return;
   }
   if (!code.value) {
-    uni.$u.toast("请输入验证码")
-    return
+    uni.$u.toast("请输入验证码");
+    return;
   }
   // 登录请求
   // const res = await userStore.login({ phone: tel.value, code: code.value }).catch(() => {
   //   uni.$u.toast('登录失败');
   // });
   // if (!res) return;
-  setToken("1234567890")
+  setToken("1234567890");
   setTimeout(() => {
     uni.$u.route({
       type: isTabBarPath(redirect) ? "switchTab" : "redirectTo",
-      url: redirect
-    })
-  }, 800)
+      url: redirect,
+    });
+  }, 800);
 }
 
-onLoad(options => {
+onLoad((options) => {
   if (options.redirect && removeQueryString(options.redirect) !== LOGIN_PATH) {
-    redirect = decodeURIComponent(options.redirect)
+    redirect = decodeURIComponent(options.redirect);
   }
-})
-
+});
 </script>
 
 <style lang="scss" scoped>
diff --git a/src/pages/map/index.vue b/src/pages/map/index.vue
index 4392ab8..298de8b 100644
--- a/src/pages/map/index.vue
+++ b/src/pages/map/index.vue
@@ -1,84 +1,84 @@
 <!-- 地图 -->
 <template>
   <!-- 地图容器 -->
-  <view id="map" class="map" style="width: 100%; height: 80vh;"></view>
+  <view id="map" class="map" style="width: 100%; height: 80vh"></view>
 </template>
 
 <script setup>
-  onShow(() => {
-   console.log(222)
-   // #ifdef APP-PLUS
+onShow(() => {
+  console.log(222);
+  // #ifdef APP-PLUS
 
-   console.log(111)
-   plus.screen.lockOrientation('landscape-primary');
-   // #endif
-  })
+  console.log(111);
+  plus.screen.lockOrientation("landscape-primary");
+  // #endif
+});
 
-  onHide(() => {
-    console.log(123123)
-    // #ifdef APP-PLUS
-    	plus.screen.lockOrientation('portrait-primary');
-    	// #endif
-  })
+onHide(() => {
+  console.log(123123);
+  // #ifdef APP-PLUS
+  plus.screen.lockOrientation("portrait-primary");
+  // #endif
+});
 </script>
 
 <script module="leaflet" lang="renderjs">
-  import L from 'leaflet'
-  import {
-    onBeforeUnmount,
-    onMounted
-  } from 'vue';
+import L from 'leaflet'
+import {
+  onBeforeUnmount,
+  onMounted
+} from 'vue';
 
-  export default {
-    mounted() {
-      var basemapLayer0 = L.tileLayer(
-        'http://t1.tianditu.com/vec_c/wmts?layer=vec&style=default&tilematrixset=c&Service=WMTS&Request=GetTile&Version=1.0.0&Format=tiles&TileMatrix={z}&TileCol={x}&TileRow={y}&tk=e110584a27d506da2740edca951683f4', {
-          maxZoom: 18,
-          minZoom: 1,
-          tileSize: 256,
-          zoomOffset: 1
-        });
-      var basemapLayer1 = L.tileLayer(
-        'http://t1.tianditu.com/cva_c/wmts?layer=cva&style=default&tilematrixset=c&Service=WMTS&Request=GetTile&Version=1.0.0&Format=tiles&TileMatrix={z}&TileCol={x}&TileRow={y}&tk=e110584a27d506da2740edca951683f4', {
-          maxZoom: 18,
-          minZoom: 1,
-          tileSize: 256,
-          zoomOffset: 1
-        });
-      var basemapLayer2 = L.tileLayer(
-        'http://t1.tianditu.com/img_c/wmts?layer=img&style=default&tilematrixset=c&Service=WMTS&Request=GetTile&Version=1.0.0&Format=tiles&TileMatrix={z}&TileCol={x}&TileRow={y}&tk=e110584a27d506da2740edca951683f4', {
-          maxZoom: 18,
-          minZoom: 1,
-          tileSize: 256,
-          zoomOffset: 1
-        });
-      var basemapLayer3 = L.tileLayer(
-        'http://t1.tianditu.com/cia_c/wmts?layer=cia&style=default&tilematrixset=c&Service=WMTS&Request=GetTile&Version=1.0.0&Format=tiles&TileMatrix={z}&TileCol={x}&TileRow={y}&tk=e110584a27d506da2740edca951683f4', {
-          maxZoom: 18,
-          minZoom: 1,
-          tileSize: 256,
-          zoomOffset: 1
-        });
-      var basemap0 = L.layerGroup([basemapLayer0, basemapLayer1]);
-      var basemap1 = L.layerGroup([basemapLayer2, basemapLayer3]);
+export default {
+  mounted() {
+    var basemapLayer0 = L.tileLayer(
+      'http://t1.tianditu.com/vec_c/wmts?layer=vec&style=default&tilematrixset=c&Service=WMTS&Request=GetTile&Version=1.0.0&Format=tiles&TileMatrix={z}&TileCol={x}&TileRow={y}&tk=e110584a27d506da2740edca951683f4', {
+        maxZoom: 18,
+        minZoom: 1,
+        tileSize: 256,
+        zoomOffset: 1
+      });
+    var basemapLayer1 = L.tileLayer(
+      'http://t1.tianditu.com/cva_c/wmts?layer=cva&style=default&tilematrixset=c&Service=WMTS&Request=GetTile&Version=1.0.0&Format=tiles&TileMatrix={z}&TileCol={x}&TileRow={y}&tk=e110584a27d506da2740edca951683f4', {
+        maxZoom: 18,
+        minZoom: 1,
+        tileSize: 256,
+        zoomOffset: 1
+      });
+    var basemapLayer2 = L.tileLayer(
+      'http://t1.tianditu.com/img_c/wmts?layer=img&style=default&tilematrixset=c&Service=WMTS&Request=GetTile&Version=1.0.0&Format=tiles&TileMatrix={z}&TileCol={x}&TileRow={y}&tk=e110584a27d506da2740edca951683f4', {
+        maxZoom: 18,
+        minZoom: 1,
+        tileSize: 256,
+        zoomOffset: 1
+      });
+    var basemapLayer3 = L.tileLayer(
+      'http://t1.tianditu.com/cia_c/wmts?layer=cia&style=default&tilematrixset=c&Service=WMTS&Request=GetTile&Version=1.0.0&Format=tiles&TileMatrix={z}&TileCol={x}&TileRow={y}&tk=e110584a27d506da2740edca951683f4', {
+        maxZoom: 18,
+        minZoom: 1,
+        tileSize: 256,
+        zoomOffset: 1
+      });
+    var basemap0 = L.layerGroup([basemapLayer0, basemapLayer1]);
+    var basemap1 = L.layerGroup([basemapLayer2, basemapLayer3]);
 
-      let map = L.map('map', {
-        preferCanvas: true,
-        crs: L.CRS.EPSG4326,
-        layers: [basemap1],
-        zoomControl: false,
-        attributionControl: false,
-        doubleClickZoom: false,
-        editable: true //绘制控件
-      }).setView([25.992338, 114.823254], 13);
-    }
+    let map = L.map('map', {
+      preferCanvas: true,
+      crs: L.CRS.EPSG4326,
+      layers: [basemap1],
+      zoomControl: false,
+      attributionControl: false,
+      doubleClickZoom: false,
+      editable: true //绘制控件
+    }).setView([25.992338, 114.823254], 13);
   }
+}
 </script>
 
 <style scoped>
-  /* Leaflet 默认容器要有高度 */
-  .map {
-    width: 100%;
-    height: 100%;
-  }
+/* Leaflet 默认容器要有高度 */
+.map {
+  width: 100%;
+  height: 100%;
+}
 </style>
diff --git a/src/pages/user/index.vue b/src/pages/user/index.vue
index 6c8915a..5f1bce3 100644
--- a/src/pages/user/index.vue
+++ b/src/pages/user/index.vue
@@ -7,9 +7,7 @@
         <u-avatar src="/static/images/logo.png" size="70" />
       </view>
       <view class="flex-1">
-        <view class="pb-20rpx text-36rpx">
-          uni-app
-        </view>
+        <view class="pb-20rpx text-36rpx"> uni-app </view>
         <view class="u-tips-color text-28rpx" @click="toCopy">
           微信号:uni-app
         </view>
@@ -46,21 +44,20 @@
 </template>
 
 <script setup>
-import { useClipboard, usePermission } from "@/hooks"
+import { useClipboard, usePermission } from "@/hooks";
 
-const { setClipboardData, getClipboardData } = useClipboard()
+const { setClipboardData, getClipboardData } = useClipboard();
 
 // 复制
 const toCopy = async () => {
-  await setClipboardData({ data: "1234567890" })
-  const data = await getClipboardData()
-  console.log("[ data ] >", data)
-}
+  await setClipboardData({ data: "1234567890" });
+  const data = await getClipboardData();
+  console.log("[ data ] >", data);
+};
 
 // 登录鉴权,微信小程序端点击tabbar的底层逻辑不触发uni.switchTab,需要在页面onShow生命周期中校验权限
 onShow(async () => {
-  const hasPermission = await usePermission()
-  console.log(hasPermission ? "已登录" : "未登录,拦截跳转")
-})
-
+  const hasPermission = await usePermission();
+  console.log(hasPermission ? "已登录" : "未登录,拦截跳转");
+});
 </script>
diff --git a/src/pages/work/index.vue b/src/pages/work/index.vue
index b682f37..110e945 100644
--- a/src/pages/work/index.vue
+++ b/src/pages/work/index.vue
@@ -1,10 +1,15 @@
 <!-- 事件工单 -->
 <template>
   <view class="min-h-screen flex flex-col items-center">
-    <image class="mb-50rpx mt-200rpx h-200rpx w-200rpx" src="@/static/images/logo.png" width="200rpx" height="200rpx" />
+    <image
+      class="mb-50rpx mt-200rpx h-200rpx w-200rpx"
+      src="@/static/images/logo.png"
+      width="200rpx"
+      height="200rpx"
+    />
     <view class="flex justify-center">
       <text class="font-size-36rpx">
-        {{ $t('home.intro') }}
+        {{ $t("home.intro") }}
       </text>
     </view>
     <view class="mt-100rpx flex gap-30rpx">
@@ -16,14 +21,18 @@
 
     <!-- #ifdef MP-WEIXIN -->
     <!-- 隐私协议组件 -->
-    <agree-privacy v-model="showAgreePrivacy" :disable-check-privacy="false" @agree="handleAgree" />
+    <agree-privacy
+      v-model="showAgreePrivacy"
+      :disable-check-privacy="false"
+      @agree="handleAgree"
+    />
     <!-- #endif -->
   </view>
 </template>
 
 <script setup>
 // #ifdef MP-WEIXIN
-import { useShare } from "@/hooks"
+import { useShare } from "@/hooks";
 // #endif
 
 // #ifdef MP-WEIXIN
@@ -31,29 +40,28 @@
 const { onShareAppMessage, onShareTimeline } = useShare({
   title: "首页",
   path: "pages/tab/home/index",
-  imageUrl: ""
-})
-onShareAppMessage()
-onShareTimeline()
+  imageUrl: "",
+});
+onShareAppMessage();
+onShareTimeline();
 // #endif
 
-const title = ref()
-title.value = import.meta.env.VITE_APP_TITLE
+const title = ref();
+title.value = import.meta.env.VITE_APP_TITLE;
 
-const showAgreePrivacy = ref(false)
+const showAgreePrivacy = ref(false);
 
 // 同意隐私协议
 function handleAgree() {
-  console.log("同意隐私政策")
+  console.log("同意隐私政策");
 }
 
 // 打开github
 function toGithub() {
   if (window?.open) {
-    window.open("https://github.com/oyjt/uniapp-vue3-template")
+    window.open("https://github.com/oyjt/uniapp-vue3-template");
   } else {
-    uni.$u.toast("请使用浏览器打开")
+    uni.$u.toast("请使用浏览器打开");
   }
 }
-
 </script>
diff --git a/src/plugins/index.js b/src/plugins/index.js
index c2bc856..58547a9 100644
--- a/src/plugins/index.js
+++ b/src/plugins/index.js
@@ -5,7 +5,7 @@
 import setupUI from "./ui"
 
 export default {
-  install(app) {
+  install (app) {
     // UI扩展配置
     setupUI(app)
     // 状态管理
diff --git a/src/plugins/permission.js b/src/plugins/permission.js
index 20fe458..4e871c3 100644
--- a/src/plugins/permission.js
+++ b/src/plugins/permission.js
@@ -20,7 +20,7 @@
  * @param {string} path
  * @returns {boolean} 是否有权限
  */
-export function hasPerm(path = "") {
+export function hasPerm (path = "") {
   if (!isPathExists(path) && path !== "/") {
     uni.redirectTo({
       url: ERROR404_PATH
@@ -38,14 +38,14 @@
   return hasPermission
 }
 
-function setupPermission() {
+function setupPermission () {
   // 注意:拦截uni.switchTab本身没有问题。但是在微信小程序端点击tabbar的底层逻辑并不是触发uni.switchTab。
   // 所以误认为拦截无效,此类场景的解决方案是在tabbar页面的页面生命周期onShow中处理。
   ;["navigateTo", "redirectTo", "reLaunch", "switchTab"].forEach(item => {
     // https://uniapp.dcloud.net.cn/api/interceptor.html
     uni.addInterceptor(item, {
       // 页面跳转前进行拦截, invoke根据返回值进行判断是否继续执行跳转
-      invoke(args) {
+      invoke (args) {
         // args为所拦截api中的参数,比如拦截的是uni.redirectTo(OBJECT),则args对应的是OBJECT参数
         return hasPerm(args.url)
       }
diff --git a/src/plugins/ui.js b/src/plugins/ui.js
index bf790fb..931ce99 100644
--- a/src/plugins/ui.js
+++ b/src/plugins/ui.js
@@ -1,6 +1,6 @@
 import uviewPlus, { setConfig } from "uview-plus"
 
-function setupUI(app) {
+function setupUI (app) {
   // 下面的在特殊场景下才需要配置,通常不用配置即可直接使用uview-plus框架。
   // 调用setConfig方法,方法内部会进行对象属性深度合并,可以放心嵌套配置
   // 需要在app.use(uview-plus)之后执行
diff --git a/src/router/index.js b/src/router/index.js
index 0eab82c..1ba368a 100644
--- a/src/router/index.js
+++ b/src/router/index.js
@@ -20,7 +20,7 @@
  * @param {object} pagesJson
  * @returns [{"path": "/pages/tab/home/index","needLogin": false},...]
  */
-function parseRoutes(pagesJson = {}) {
+function parseRoutes (pagesJson = {}) {
   if (!pagesJson.pages) {
     pagesJson.pages = []
   }
@@ -28,7 +28,7 @@
     pagesJson.subPackages = []
   }
 
-  function parsePages(pages = [], rootPath = "") {
+  function parsePages (pages = [], rootPath = "") {
     const routes = []
     for (let i = 0; i < pages.length; i++) {
       routes.push({
@@ -39,7 +39,7 @@
     return routes
   }
 
-  function parseSubPackages(subPackages = []) {
+  function parseSubPackages (subPackages = []) {
     const routes = []
     for (let i = 0; i < subPackages.length; i++) {
       routes.push(...parsePages(subPackages[i].pages, subPackages[i].root))
@@ -58,7 +58,7 @@
  * 当前路由
  * @returns {string} 当前路由
  */
-export function currentRoute() {
+export function currentRoute () {
   // getCurrentPages() 至少有1个元素,所以不再额外判断
   const pages = getCurrentPages()
   const currentPage = pages[pages.length - 1]
@@ -70,7 +70,7 @@
  * @param {string} path
  * @returns {string} 去除查询字符串后的路径
  */
-export function removeQueryString(path = "") {
+export function removeQueryString (path = "") {
   return path.split("?")[0]
 }
 
@@ -79,7 +79,7 @@
  * @param {string} path
  * @returns {boolean} 路径是否存在
  */
-export function isPathExists(path = "") {
+export function isPathExists (path = "") {
   const cleanPath = removeQueryString(path)
   return routes.some(item => item.path === cleanPath)
 }
@@ -89,7 +89,7 @@
  * @param {string} path
  * @returns {boolean} 是否是tabbar页面
  */
-export function isTabBarPath(path = "") {
+export function isTabBarPath (path = "") {
   const cleanPath = removeQueryString(path)
   return (
     pagesJson.tabBar?.list?.some(item => `/${item.pagePath}` === cleanPath) ===
diff --git a/src/store/index.js b/src/store/index.js
index e416435..53d21a9 100644
--- a/src/store/index.js
+++ b/src/store/index.js
@@ -7,7 +7,7 @@
 import useUserStore from "./modules/user"
 
 // 安装pinia状态管理插件
-function setupStore(app) {
+function setupStore (app) {
   const store = createPinia()
 
   const piniaPersist = createPersistedState({
diff --git a/src/store/modules/app/index.js b/src/store/modules/app/index.js
index 83e82bc..8ffada5 100644
--- a/src/store/modules/app/index.js
+++ b/src/store/modules/app/index.js
@@ -1,8 +1,8 @@
-import { defineStore } from 'pinia';
-import storage from '@/utils/storage';
+import { defineStore } from 'pinia'
+import storage from '@/utils/storage'
 
 // 缓存的主题
-const THEME_KEY = 'app-theme';
+const THEME_KEY = 'app-theme'
 
 const useAppStore = defineStore('app', {
   state: () => ({
@@ -10,63 +10,63 @@
     theme: storage.get(THEME_KEY) || 'light'
   }),
   getters: {
-    getSystemInfo(state) {
-      return state.systemInfo;
+    getSystemInfo (state) {
+      return state.systemInfo
     },
-    getTheme(state) {
-      return state.theme;
+    getTheme (state) {
+      return state.theme
     }
   },
   actions: {
-    setSystemInfo(info) {
-      this.systemInfo = info;
+    setSystemInfo (info) {
+      this.systemInfo = info
     },
-    initSystemInfo() {
+    initSystemInfo () {
       uni.getSystemInfo({
         success: (res) => {
-          this.setSystemInfo(res);
+          this.setSystemInfo(res)
         },
         fail: (err) => {
-          console.error(err);
+          console.error(err)
         }
-      });
+      })
     },
     /**
      * 设置主题
      */
-    setTheme(theme) {
-      this.theme = theme;
+    setTheme (theme) {
+      this.theme = theme
       // 保存到本地存储
-      storage.set(THEME_KEY, this.theme);
+      storage.set(THEME_KEY, this.theme)
     },
-    checkUpdate() {
-      const updateManager = uni.getUpdateManager();
+    checkUpdate () {
+      const updateManager = uni.getUpdateManager()
       updateManager.onCheckForUpdate((res) => {
         // 请求完新版本信息的回调
-        console.log(res.hasUpdate);
-      });
+        console.log(res.hasUpdate)
+      })
       updateManager.onUpdateReady(() => {
         uni.showModal({
           title: '更新提示',
           content: '新版本已经准备好,是否重启应用?',
-          success(res) {
+          success (res) {
             if (res.confirm) {
               // 新的版本已经下载好,调用 applyUpdate 应用新版本并重启
-              updateManager.applyUpdate();
+              updateManager.applyUpdate()
             }
           }
-        });
-      });
+        })
+      })
       updateManager.onUpdateFailed((res) => {
-        console.error(res);
+        console.error(res)
         // 新的版本下载失败
         uni.showToast({
           title: '更新失败',
           icon: 'error'
-        });
-      });
+        })
+      })
     }
   }
-});
+})
 
-export default useAppStore;
+export default useAppStore
diff --git a/src/store/modules/user/index.js b/src/store/modules/user/index.js
index 99d7071..a04baa1 100644
--- a/src/store/modules/user/index.js
+++ b/src/store/modules/user/index.js
@@ -8,9 +8,9 @@
  * Copyright 2025 OBKoro1, All Rights Reserved. 
  * 2025-09-28 09:31:16
  */
-import { defineStore } from 'pinia';
-import { UserApi } from '@/api';
-import { clearToken, setToken } from '@/utils/auth';
+import { defineStore } from 'pinia'
+import { UserApi } from '@/api'
+import { clearToken, setToken } from '@/utils/auth'
 
 const useUserStore = defineStore('user', {
   state: () => ({
@@ -20,68 +20,68 @@
     token: ''
   }),
   getters: {
-    userInfo(state) {
-      return { ...state };
+    userInfo (state) {
+      return { ...state }
     }
   },
   actions: {
     // 设置用户的信息
-    setInfo(partial) {
-      this.$patch(partial);
+    setInfo (partial) {
+      this.$patch(partial)
     },
     // 重置用户信息
-    resetInfo() {
-      this.$reset();
+    resetInfo () {
+      this.$reset()
     },
     // 获取用户信息
-    async info() {
-      const result = await UserApi.profile();
-      this.setInfo(result);
+    async info () {
+      const result = await UserApi.profile()
+      this.setInfo(result)
     },
     // 异步登录并存储token
-    login(loginForm) {
+    login (loginForm) {
       return new Promise((resolve, reject) => {
         UserApi.login(loginForm)
           .then((res) => {
-            const token = res.token;
+            const token = res.token
             if (token) {
-              setToken(token);
+              setToken(token)
             }
-            resolve(res);
+            resolve(res)
           })
           .catch((error) => {
-            reject(error);
-          });
-      });
+            reject(error)
+          })
+      })
     },
     // Logout
-    async logout() {
-      await UserApi.logout();
-      this.resetInfo();
-      clearToken();
+    async logout () {
+      await UserApi.logout()
+      this.resetInfo()
+      clearToken()
     },
     // 小程序授权登录
-    authLogin(provider = 'weixin') {
+    authLogin (provider = 'weixin') {
       return new Promise((resolve, reject) => {
         uni.login({
           provider,
           success: async (result) => {
             if (result.code) {
-              const res = await UserApi.loginByCode({ code: result.code });
-              resolve(res);
+              const res = await UserApi.loginByCode({ code: result.code })
+              resolve(res)
             } else {
-              reject(new Error(result.errMsg));
+              reject(new Error(result.errMsg))
             }
           },
           fail: (err) => {
-            console.error(`login error: ${err}`);
-            reject(err);
+            console.error(`login error: ${err}`)
+            reject(err)
           }
-        });
-      });
+        })
+      })
     }
   },
   persist: true
-});
+})
 
-export default useUserStore;
+export default useUserStore
diff --git a/src/subPackages/404/index.vue b/src/subPackages/404/index.vue
index d0a468a..4cdb3fb 100644
--- a/src/subPackages/404/index.vue
+++ b/src/subPackages/404/index.vue
@@ -23,15 +23,14 @@
 </template>
 
 <script setup>
-import { HOME_PATH } from "@/router"
+import { HOME_PATH } from "@/router";
 
 function handleBack() {
   uni.$u.route({
     type: "switchTab",
-    url: HOME_PATH
-  })
+    url: HOME_PATH,
+  });
 }
-
 </script>
 
 <style lang="scss" scoped>
diff --git a/src/subPackages/theme/index.vue b/src/subPackages/theme/index.vue
index 8a33084..5fb8fa9 100644
--- a/src/subPackages/theme/index.vue
+++ b/src/subPackages/theme/index.vue
@@ -7,9 +7,11 @@
       </view>
       <view class="theme-bg-secondary overflow-hidden rounded-12rpx">
         <view
-          v-for="option in themeOptions" :key="option.value"
+          v-for="option in themeOptions"
+          :key="option.value"
           class="flex items-center border-b px-5 py-7.5 transition-all duration-300"
-          :class="{ 'theme-bg-secondary': theme === option.value }" @click="setTheme(option.value)"
+          :class="{ 'theme-bg-secondary': theme === option.value }"
+          @click="setTheme(option.value)"
         >
           <view class="mr-5">
             <view class="text-48rpx c-primary" :class="option.icon" />
@@ -36,9 +38,7 @@
       </view>
       <view class="theme-bg-secondary rounded-12rpx p-7.5">
         <view class="mb-7.5">
-          <text class="theme-text text-28rpx font-medium">
-            示例内容
-          </text>
+          <text class="theme-text text-28rpx font-medium"> 示例内容 </text>
         </view>
         <view class="mb-7.5 flex flex-wrap gap-5">
           <view class="min-w-120rpx flex-1">
@@ -55,34 +55,32 @@
           </view>
         </view>
         <view class="flex flex-col gap-2.5">
-          <text class="theme-text text-28rpx font-medium">
-            主要文字颜色
-          </text>
-          <text class="theme-text-content text-26rpx">
-            内容文字颜色
-          </text>
-          <text class="theme-text-tips text-24rpx">
-            提示文字颜色
-          </text>
+          <text class="theme-text text-28rpx font-medium"> 主要文字颜色 </text>
+          <text class="theme-text-content text-26rpx"> 内容文字颜色 </text>
+          <text class="theme-text-tips text-24rpx"> 提示文字颜色 </text>
         </view>
       </view>
     </view>
 
     <!-- 快速切换按钮 -->
     <view class="py-5 text-center">
-      <u-button :text="isDark ? '切换到亮色主题' : '切换到暗色主题'" type="primary" @click="toggleTheme" />
+      <u-button
+        :text="isDark ? '切换到亮色主题' : '切换到暗色主题'"
+        type="primary"
+        @click="toggleTheme"
+      />
     </view>
   </view>
 </template>
 
 <script setup>
-import { useTheme } from "@/hooks"
-import { useAppStore } from "@/store"
+import { useTheme } from "@/hooks";
+import { useAppStore } from "@/store";
 
-const { theme, isDark, setTheme, toggleTheme } = useTheme()
+const { theme, isDark, setTheme, toggleTheme } = useTheme();
 
-const appStore = useAppStore()
-const themeClass = computed(() => `theme-${appStore.theme}`)
+const appStore = useAppStore();
+const themeClass = computed(() => `theme-${appStore.theme}`);
 
 // 主题选项
 const themeOptions = [
@@ -90,14 +88,13 @@
     label: "亮色主题",
     value: "light",
     icon: "i-mdi-white-balance-sunny",
-    description: "适合明亮环境使用"
+    description: "适合明亮环境使用",
   },
   {
     label: "暗色主题",
     value: "dark",
     icon: "i-mdi-moon-and-stars",
-    description: "适合暗光环境使用"
-  }
-]
-
+    description: "适合暗光环境使用",
+  },
+];
 </script>
diff --git a/src/utils/auth/index.js b/src/utils/auth/index.js
index dd69248..73400ed 100644
--- a/src/utils/auth/index.js
+++ b/src/utils/auth/index.js
@@ -1,15 +1,15 @@
 const TokenKey = "admin-token"
 const TokenPrefix = "Bearer "
-function isLogin() {
+function isLogin () {
   return !!uni.getStorageSync(TokenKey)
 }
-function getToken() {
+function getToken () {
   return uni.getStorageSync(TokenKey)
 }
-function setToken(token) {
+function setToken (token) {
   uni.setStorageSync(TokenKey, token)
 }
-function clearToken() {
+function clearToken () {
   uni.removeStorageSync(TokenKey)
 }
 export { clearToken, getToken, isLogin, setToken, TokenPrefix }
diff --git a/src/utils/common/index.js b/src/utils/common/index.js
index 964f1f1..5a5e601 100644
--- a/src/utils/common/index.js
+++ b/src/utils/common/index.js
@@ -1,5 +1,5 @@
 // 小程序更新检测
-export function mpUpdate() {
+export function mpUpdate () {
   const updateManager = uni.getUpdateManager()
   updateManager.onCheckForUpdate(res => {
     // 请求完新版本信息的回调
@@ -9,7 +9,7 @@
     uni.showModal({
       title: "更新提示",
       content: "检测到新版本,是否下载新版本并重启小程序?",
-      success(res) {
+      success (res) {
         if (res.confirm) {
           // 新的版本已经下载好,调用 applyUpdate 应用新版本并重启
           updateManager.applyUpdate()
diff --git a/src/utils/modals/index.js b/src/utils/modals/index.js
index a58172b..cc76b31 100644
--- a/src/utils/modals/index.js
+++ b/src/utils/modals/index.js
@@ -3,7 +3,7 @@
  * @param {string} content 提示内容
  * @param {object} option 配置
  */
-export function Toast(content, option = {}) {
+export function Toast (content, option = {}) {
   uni.showToast({
     title: content,
     icon: "none",
@@ -34,7 +34,7 @@
  * @param {string} content 提示内容
  * @param {object} option 配置
  */
-export function Dialog(content, option = {}) {
+export function Dialog (content, option = {}) {
   option.showCancel = false
   return new Promise((resolve, reject) => {
     uni.showModal({
@@ -42,10 +42,10 @@
       content,
       showCancel: false,
       confirmColor: "#1677FF",
-      success(res) {
+      success (res) {
         if (res.confirm) resolve(res)
       },
-      fail() {
+      fail () {
         reject(new Error("Alert 调用失败 !"))
       },
       ...option
diff --git a/src/utils/request/index.js b/src/utils/request/index.js
index 3700d8d..1e82acf 100644
--- a/src/utils/request/index.js
+++ b/src/utils/request/index.js
@@ -4,7 +4,7 @@
 const http = new Request()
 
 // 引入拦截器配置
-export function setupRequest() {
+export function setupRequest () {
   http.setConfig(defaultConfig => {
     /* defaultConfig 为默认全局配置 */
     defaultConfig.baseURL = import.meta.env.VITE_API_BASE_URL
@@ -19,7 +19,7 @@
   responseInterceptors(http)
 }
 
-export function request(config) {
+export function request (config) {
   return new Promise((resolve, reject) => {
     http
       .request(config)
@@ -35,19 +35,19 @@
   })
 }
 
-export function get(url, config) {
+export function get (url, config) {
   return request({ ...config, url, method: "GET" })
 }
 
-export function post(url, config) {
+export function post (url, config) {
   return request({ ...config, url, method: "POST" })
 }
 
-export function upload(url, config) {
+export function upload (url, config) {
   return request({ ...config, url, method: "UPLOAD" })
 }
 
-export function download(url, config) {
+export function download (url, config) {
   return request({ ...config, url, method: "DOWNLOAD" })
 }
 
diff --git a/src/utils/request/interceptors.js b/src/utils/request/interceptors.js
index b66b5bc..5984c15 100644
--- a/src/utils/request/interceptors.js
+++ b/src/utils/request/interceptors.js
@@ -66,7 +66,7 @@
   })
 }
 
-function requestInterceptors(http) {
+function requestInterceptors (http) {
   /**
    * 请求拦截
    * @param {object} http
@@ -109,7 +109,7 @@
     ) => Promise.reject(config)
   )
 }
-function responseInterceptors(http) {
+function responseInterceptors (http) {
   /**
    * 响应拦截
    * @param {object} http
diff --git a/src/utils/storage/index.js b/src/utils/storage/index.js
index fd0ee93..55db0bf 100644
--- a/src/utils/storage/index.js
+++ b/src/utils/storage/index.js
@@ -1,20 +1,20 @@
 const storage = {
-  set(key, value) {
+  set (key, value) {
     if (key !== null && value !== null) uni.setStorageSync(key, value)
   },
-  get(key) {
+  get (key) {
     if (key === null) return null
 
     return uni.getStorageSync(key)
   },
-  setJSON(key, jsonValue) {
+  setJSON (key, jsonValue) {
     if (jsonValue !== null) this.set(key, JSON.stringify(jsonValue))
   },
-  getJSON(key) {
+  getJSON (key) {
     const value = this.get(key)
     if (value) return JSON.parse(value)
   },
-  remove(key) {
+  remove (key) {
     uni.removeStorageSync(key)
   }
 }

--
Gitblit v1.9.3