소스 검색

💊 优化创建自查表和协议年份

快乐的梦鱼 1 개월 전
부모
커밋
db65f07080

+ 3 - 0
src/App.vue

@@ -29,13 +29,16 @@ import NavBar from './components/NavBar.vue';
 import zhCN from 'ant-design-vue/es/locale/zh_CN';
 import { useRedirectLoginPage } from './common/LoginPageRedirect';
 import FooterSmall from './components/FooterSmall.vue';
+import { useAppConfiguration } from './api/system/useAppConfiguration.ts';
 
 const authStore = useAuthStore();
 const { checkAndRedirectLoginPage } = useRedirectLoginPage();
+const { loadAppConfiguration } = useAppConfiguration();
 
 onMounted(async () => {
   await authStore.loadLoginState();
   checkAndRedirectLoginPage();
+  await loadAppConfiguration();
 });
 
 const route = useRoute();

+ 46 - 0
src/api/system/ConfigurationApi.ts

@@ -0,0 +1,46 @@
+import { MengyuServerRequestModule } from '@/api/RequestModules';
+import { LogUtils } from '@imengyu/imengyu-utils';
+import { DataModel } from '@imengyu/js-request-transform';
+import DefaultConfiguration from './DefaultConfiguration.json';
+
+export const CommonConfigurationConfig = {
+  /**
+   * 应用id
+   */
+  appId: 2,
+  appConfigId: 6,
+}
+
+export interface IConfigurationItem {
+  baseServerUrl: string,
+  articleMark: string,
+  collectSignYear: number,
+  collectFormYear: number,
+  routeListImage: string,
+  routeListImageStyle: Record<string, any>,
+  routeListMarginTop: number,
+}
+
+export class ConfigurationApi extends MengyuServerRequestModule<DataModel> {
+
+  constructor() {
+    super();
+  }
+
+  /**
+   * 获取当前配置,有缓存,会根据激活的历史版本获取对应配置
+   * @returns 
+   */
+  async getConfig() {try {
+      return (((await this.get('/app-configuration-get', '获取配置', {
+        name: CommonConfigurationConfig.appConfigId,
+        appId: CommonConfigurationConfig.appId,
+        })).data as any)?.data as IConfigurationItem);
+    } catch (error) {
+      LogUtils.printLog("ConfigurationApi", 'error', '获取配置失败,使用默认配置', error);
+      return DefaultConfiguration as IConfigurationItem;
+    }
+  }
+}
+
+export default new ConfigurationApi();

+ 4 - 0
src/api/system/DefaultConfiguration.json

@@ -0,0 +1,4 @@
+{
+  "collectSignYear": 2027,
+  "collectFormYear": 2025
+}

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

@@ -0,0 +1,29 @@
+import { LogUtils } from "@imengyu/imengyu-utils";
+import { inject, provide, ref, type Ref } from "vue";
+import ConfigurationApi, { type IConfigurationItem } from "./ConfigurationApi";
+
+export const APP_CONFIGURATION_KEY = Symbol('APP_CONFIGURATION_KEY');
+
+const TAG = 'useAppConfiguration';
+
+export function useAppConfiguration() {
+  const appConfiguration = ref<IConfigurationItem | null>(null);
+
+  async function loadAppConfiguration() {
+    //获取配置
+    const config = await ConfigurationApi.getConfig();
+    LogUtils.printLog(TAG, 'info', '获取配置', config);
+    appConfiguration.value = config;
+  }
+
+  provide(APP_CONFIGURATION_KEY, appConfiguration);
+
+  return {
+    loadAppConfiguration,
+    appConfiguration,
+  };
+}
+
+export function injectAppConfiguration() {
+  return inject(APP_CONFIGURATION_KEY) as Ref<IConfigurationItem | null>;
+}

+ 4 - 2
src/pages/collect/assessment/argeement-sign.vue

@@ -87,6 +87,7 @@ import AgreementBodyMunicipal from './components/AgreementBodyMunicipal.vue';
 import type { AgreementYmdParts } from './components/AgreementDateWriteBlock.vue';
 import { useSimpleDataLoader } from '@/composeables/useSimpleDataLoader';
 import { ArrowLeftOutlined } from '@ant-design/icons-vue';
+import { injectAppConfiguration } from '@/api/system/useAppConfiguration.ts';
 
 function formatErr(e: unknown): string {
   if (e instanceof RequestApiError)
@@ -250,6 +251,7 @@ watch(
 );
 
 const submitLoading = ref(false);
+const appConfiguration = injectAppConfiguration();
 
 async function createAgreement() {
   const now = new Date();
@@ -259,12 +261,12 @@ async function createAgreement() {
   const basicInfo = await AssessmentContentApi.getInheritorBasic(uid);
   const detail = new AgreementDetail();
   detail.userId = uid;
-  detail.year = 2027;
+  detail.year = appConfiguration.value?.collectSignYear || now.getFullYear() + 1;
   detail.level = basicInfo.level;
   if (basicInfo.level === 24) {
     detail.partyA = '厦门市文化和旅游局';
   } else if (basicInfo.level === 25) {
-    detail.partyA = '';
+    detail.partyA = '厦门市文化和旅游局';
   } else {
     detail.partyA = '福建省文化和旅游厅';
   }

+ 3 - 1
src/pages/collect/assessment/evaluation-form.vue

@@ -66,6 +66,7 @@ import AssessmentContentApi, {
 } from '@/api/collect/AssessmentContent';
 import SelfAssessmentFormDisplay from './components/SelfAssessmentFormDisplay.vue';
 import { useSimpleDataLoader } from '@/composeables/useSimpleDataLoader';
+import { injectAppConfiguration } from '@/api/system/useAppConfiguration.ts';
 
 function formatErr(e: unknown): string {
   if (e instanceof RequestApiError)
@@ -78,6 +79,7 @@ function formatErr(e: unknown): string {
 const router = useRouter();
 const route = useRoute();
 const authStore = useAuthStore();
+const appConfiguration = injectAppConfiguration();
 
 const queryId = computed(() => Number(route.query.id) || 0);
 const queryUserId = computed(() => Number(route.query.userId) || 0);
@@ -147,7 +149,7 @@ async function createForm() {
   const uid = authStore.userInfo?.id ?? authStore.userId;
   const detail = new SelfAssessmentDetail();
   detail.userId = uid;
-  detail.year = new Date().getFullYear();
+  detail.year = appConfiguration.value?.collectFormYear || new Date().getFullYear();
   detail.checkItems = [];
   currentForm.value = detail;
   loadEditorContent();