gemer zhang 6 mesi fa
parent
commit
516cc7e2be

+ 6 - 6
packages/backend/.env

@@ -2,16 +2,16 @@
 APP_PORT=8085
 # DB
 # DB_HOST=120.24.144.164
-DB_HOST=localhost
+DB_HOST=192.168.10.82
 # DB_PORT=3306
-DB_PORT=3307
-DB_USER=root
-DB_PWD='laser'
-DB_DATABASE=help_center
+DB_PORT=3306
+DB_USER=gemer
+DB_PWD='gemer...123'
+DB_DATABASE=helper_center
 DB_SYNC=true # 是否开启同步,生产环境请设置成 false
 
 # Redis
-REDIS_URL=redis://192.168.0.47:6379
+REDIS_URL=redis://192.168.10.82:63790
 
 # JWT
 JWT_SECRET="d0!doc15415B0*4G0`"

+ 6 - 2
packages/backend/src/modules/web/web.service.ts

@@ -20,6 +20,7 @@ export class WebService {
   ) {}
 
   async findMenuTree(locale?: string): Promise<Menu[]> {
+    const lang = this.sharedService.handleValidLang(locale);
     const menus = await this.menuRepo.find({
       where: {
         enable: true,
@@ -33,6 +34,7 @@ export class WebService {
       relations: {
         children: true,
         category: true,
+        translations: true,
       },
       select: {
         category: {
@@ -41,14 +43,16 @@ export class WebService {
         },
       },
     });
-    return this.sharedService.handleTree(menus);
+    const allMenus = menus.map((menu) => (menu.translations?.length ? menu.translate(lang) : menu));
+    // console.log('menus', lang, allMenus);
+    return this.sharedService.handleTree(allMenus);
   }
 
   async findArticleDetail(id: number, locale?: string) {
     const lang = this.sharedService.handleValidLang(locale);
     const article = await this.articleRepo.findOne({
       where: { id },
-      relations: { user: true, translations: true, category: true },
+      relations: { user: true, translations: false, category: true },
       select: {
         user: {
           id: true,

+ 2 - 2
packages/frontend/src/views/menu/index.vue

@@ -92,7 +92,7 @@
                 message: '请输入名称',
                 trigger: ['input', 'blur'],
               }">
-                <n-input v-model:value="modalForm.translations[index].title" />
+                <n-input v-model:value="modalForm.translations.find(i=>i.locale===lang).title" />
               </n-form-item>
 
               <n-form-item label="描述" path="description" :rule="{
@@ -100,7 +100,7 @@
                 message: '请输入描述',
                 trigger: ['input', 'blur'],
               }">
-                <n-input v-model:value="modalForm.translations[index].description" type="textarea" />
+                <n-input v-model:value="modalForm.translations.find(i=>i.locale===lang).description" type="textarea" />
               </n-form-item>
             </n-tab-pane>
           </template>

+ 6 - 3
packages/frontend/src/views/menu/list.vue

@@ -94,12 +94,15 @@
         <n-tabs type="line" v-if="modalForm.translations.length > 0" animated>
           <template v-for="(lang, index) in langs" :key="lang">
             <n-tab-pane :name="lang" :tab="langLabel[lang]" :index="index">
-              <n-form-item label="名称" path="title" :rule="{
+  
+              <n-form-item :label="`名称`" path="title" :rule="{
                 required: true,
                 message: '请输入名称',
                 trigger: ['input', 'blur'],
               }">
-                <n-input v-model:value="modalForm.translations[index].title" />
+                <n-input v-model:value="modalForm.translations.find(i=>i.locale===lang).title" >
+                  <template #password-invisible-icon></template>
+                </n-input>
               </n-form-item>
 
               <n-form-item label="描述" path="description" :rule="{
@@ -107,7 +110,7 @@
                 message: '请输入描述',
                 trigger: ['input', 'blur'],
               }">
-                <n-input v-model:value="modalForm.translations[index].description" type="textarea" />
+                <n-input v-model:value="modalForm.translations.find(i=>i.locale===lang).description" type="textarea" />
               </n-form-item>
             </n-tab-pane>
           </template>