Просмотр исходного кода

🎨 按要求更换轮播图,增加轮播图动态修改

快乐的梦鱼 1 неделя назад
Родитель
Сommit
b056d15d67

+ 6 - 3
src/App.vue

@@ -2,18 +2,20 @@
 import AppConfig, { isTestEnv } from '@/common/config/AppCofig'
 import { onError, onLaunch } from '@dcloudio/uni-app'
 import { useAuthStore } from './store/auth'
+import { useAppInit } from './common/composeabe/AppInit';
+import { IconUtils } from './components/basic/IconUtils';
+import { useAppConfiguration } from './api/system/useAppConfiguration';
 import { configTheme } from './components/theme/ThemeDefine';
 import { getCurrentPageUrl, navTo } from './components/utils/PageAction';
 import { RequestApiConfig, RequestApiError } from '@imengyu/imengyu-utils';
+import { BugReporterAbstractionUniapp } from './common/BugReporter/impl/BugReporterAbstractionUniapp';
 import ApiCofig from './common/config/ApiCofig';
-import { useAppInit } from './common/composeabe/AppInit';
 import MemoryTimeOut from './common/composeabe/MemoryTimeOut';
 import BugReporter, { type BugDetailDeviceInfo } from './common/BugReporter';
-import { BugReporterAbstractionUniapp } from './common/BugReporter/impl/BugReporterAbstractionUniapp';
-import { IconUtils } from './components/basic/IconUtils';
 
 const authStore = useAuthStore();
 const { init } = useAppInit();
+const { loadAppConfiguration } = useAppConfiguration();
 const redirectThrottle = new MemoryTimeOut('RedirectThrottle', 50000);
 
 
@@ -36,6 +38,7 @@ onLaunch(async () => {
   }
     
   await BugReporter.checkAndReportBug();
+  await loadAppConfiguration();
   await init();
 });
 

+ 11 - 3
src/api/system/ConfigurationApi.ts

@@ -14,9 +14,17 @@ export const CommonConfigurationConfig = {
 export interface IConfigurationItem {
   baseServerUrl: string,
   articleMark: string,
-  routeListImage: string,
-  routeListImageStyle: Record<string, any>,
-  routeListMarginTop: number,
+  banners: {
+    name: string,
+    images: string[]
+  }[],
+  homeBackground: string,
+  homeTitle: {
+    title: string,
+    titleWidth: string,
+    subTitle: string,
+    subWidth: string,
+  },
 }
 
 export class ConfigurationApi extends UpdateServerRequestModule<DataModel> {

+ 23 - 2
src/api/system/DefaultConfiguration.json

@@ -1,4 +1,25 @@
 {
-  "baseServerUrl": "https://mnwh.wenlvti.net/api",
-  "articleMark": "以上内容摘自:"
+  "homeBackground": "https://mn.wenlvti.net/app_static/xiangyuan/images/home/HomeBackground.jpg",
+  "homeTitle": {
+    "title": "https://mncdn.wenlvti.net/app_static/xiangyuan/images/home/ButtonTitle.png",
+    "titleWidth": "430rpx", 
+    "subTitle": "https://mn.wenlvti.net/app_static/xiangyuan/images/home/ButtonSubTitle01.png",
+    "subWidth": ""
+  },
+  "banners": [
+    {
+      "name": "store",
+      "images": [
+        "https://mn.wenlvti.net/app_static/xiangyuan/images/causel/01/B1.png",
+        "https://mn.wenlvti.net/app_static/xiangyuan/images/causel/01/B2.jpg",
+        "https://mn.wenlvti.net/app_static/xiangyuan/images/causel/01/B3.jpg"
+      ]
+    },
+    {
+      "name": "dig",
+      "images": [
+        "https://mn.wenlvti.net/app_static/xiangyuan/images/causel/01/A1.png"
+      ]
+    }
+  ]
 }

+ 0 - 2
src/api/system/useAppConfiguration.ts

@@ -1,6 +1,5 @@
 import { LogUtils } from "@imengyu/imengyu-utils";
 import { inject, provide, ref, type Ref } from "vue";
-import { BaseAppServerRequestUrlManager } from "../BaseAppServerRequestModule";
 import ConfigurationApi, { type IConfigurationItem } from "./ConfigurationApi";
 
 export const APP_CONFIGURATION_KEY = Symbol('APP_CONFIGURATION_KEY');
@@ -15,7 +14,6 @@ export function useAppConfiguration() {
     const config = await ConfigurationApi.getConfig();
     LogUtils.printLog(TAG, 'info', '获取配置', config);
     appConfiguration.value = config;
-    BaseAppServerRequestUrlManager.notifyUrlConfigUpdated('base-app-server', config.baseServerUrl);
   }
 
   provide(APP_CONFIGURATION_KEY, appConfiguration);

+ 6 - 3
src/pages/home/index.vue

@@ -1,7 +1,7 @@
 <template>
   <FlexCol :gap="20" :padding="30" :innerStyle="{
     marginTop: '-100px',
-    backgroundImage: 'url(https://mn.wenlvti.net/app_static/xiangyuan/images/home/HomeBackground.jpg)',
+    backgroundImage: `url(${appConfiguration?.homeBackground})`,
     backgroundSize: '100% auto',
     backgroundRepeat: 'no-repeat',
     backgroundPosition: 'top center',
@@ -9,8 +9,8 @@
   }">
     <Height height="100px" />
     <FlexCol align="center">
-      <Image src="https://mncdn.wenlvti.net/app_static/xiangyuan/images/home/ButtonTitle.png" width="430rpx" mode="widthFix" />
-      <Image src="https://mn.wenlvti.net/app_static/xiangyuan/images/home/ButtonSubTitleNew.png" width="520rpx" mode="widthFix" />
+      <Image :src="appConfiguration?.homeTitle.title" :width="appConfiguration?.homeTitle.titleWidth" mode="widthFix" />
+      <Image :src="appConfiguration?.homeTitle.subTitle" :width="appConfiguration?.homeTitle.subTitle" mode="widthFix" />
     </FlexCol>
     <Box icon="https://mncdn.wenlvti.net/app_static/xiangyuan/images/home/icon-pin-distance.png" :padding="false">
       <LightMap
@@ -176,6 +176,9 @@ import CommonContent, { GetContentListParams } from '@/api/CommonContent';
 import UnmoveableContent from '@/api/inheritor/UnmoveableContent';
 import { goCommonContentDetail, goCommonContentList } from '../article/common/CommonContent';
 import { toast } from '@/components/utils/DialogAction';
+import { injectAppConfiguration } from '@/api/system/useAppConfiguration';
+
+const appConfiguration = injectAppConfiguration();
 
 const currentLonlat = ref<{ longitude: number, latitude: number }>({ longitude: 0, latitude: 0 });
 const isLightMode = ref(false);

+ 4 - 4
src/pages/home/store/index.vue

@@ -4,10 +4,7 @@
     <FlexCol :radius="15" overflow="hidden">
       <ImageSwiper 
         :height="300"
-        :images="[
-          'https://mn.wenlvti.net/app_static/xiangyuan/images/causel/B1.jpg',
-          'https://mn.wenlvti.net/app_static/xiangyuan/images/causel/B2.jpg',
-        ]"
+        :images="appConfiguration?.banners.find(p => p.name === 'store')?.images || []"
       />
     </FlexCol>
     <Box title="最新" icon="https://mncdn.wenlvti.net/app_static/xiangyuan/images/home/icon-shining.png" showMore @moreClicked="goList()">  
@@ -47,6 +44,7 @@
 
 <script setup lang="ts">
 import { useSimpleDataLoader } from '@/common/composeabe/SimpleDataLoader';
+import { injectAppConfiguration } from '@/api/system/useAppConfiguration';
 import { navTo } from '@/components/utils/PageAction';
 import CommonContent, { GetContentListItem, GetContentListParams } from '@/api/CommonContent';
 import Box from '@/common/components/parts/Box.vue';
@@ -63,6 +61,8 @@ import FlexRow from '@/components/layout/FlexRow.vue';
 import Height from '@/components/layout/space/Height.vue';
 import Width from '@/components/layout/space/Width.vue';
 
+const appConfiguration = injectAppConfiguration();
+
 const discoverLoader = useSimpleDataLoader(async () => {
   return (await CommonContent.getContentList(new GetContentListParams()
     .setModelId(13)