gemercheung пре 6 месеци
родитељ
комит
20c5223946

+ 2 - 1
packages/backend/src/modules/article/article.service.ts

@@ -18,7 +18,7 @@ export class ArticleService {
 
     @InjectRepository(ArticleTranslation)
     private articleTranslationRepo: Repository<ArticleTranslation>,
-  ) {}
+  ) { }
   async create(createArticleDto: CreateArticleDto) {
     const article = this.articleRepo.create(createArticleDto);
     return this.articleRepo.save(article);
@@ -96,6 +96,7 @@ export class ArticleService {
     if (!article) throw new BadRequestException('权限不存在或者已删除');
 
     const updateArticle = this.articleRepo.merge(article, updateArticleDto);
+    // console.log('updateArticle', updateArticle);
     await this.articleRepo.save(updateArticle);
     return true;
   }

+ 2 - 1
packages/backend/src/modules/article/dto.ts

@@ -104,4 +104,5 @@ export class GetArticleDto {
 
 export class QueryArticleDto extends GetArticleDto {}
 
-export class UpdateArticleDto extends CreateArticleDto {}
+export class UpdateArticleDto extends CreateArticleDto {
+}

+ 1 - 1
packages/frontend/src/utils/enum.js

@@ -30,4 +30,4 @@ export const otherstyleEnum = [
     value: 1,
     label: '推荐阅读',
   },
-]
+]

+ 1 - 1
packages/frontend/src/utils/index.js

@@ -11,4 +11,4 @@ export * from './common'
 export * from './http'
 export * from './is'
 export * from './naiveTools'
-export * from './storage'
+export * from './storage'

+ 5 - 0
packages/frontend/src/views/article/add.vue

@@ -100,6 +100,11 @@ categoryApi.getAll().then(({ data = [] }) => (allCategory.value = data))
 function handleAdd() {
   modalFormRef.value?.validate((errors) => {
     if (!errors) {
+      // const zhTitle = modalForm.value.translations.find(i => i.lang === 'zh')
+      // debugger
+      // if (zhTitle === '') {
+      //   modalForm.value.translations.find(i => i.lang === 'zh').title = modalForm.value.title
+      // }
       articleApi.create(modalForm.value)
       $message.success('保存成功!')
       router.push('/article')

+ 3 - 2
packages/frontend/src/views/article/index.vue

@@ -133,11 +133,12 @@ const columns = [
 async function handleEnable(row) {
   row.enableLoading = true
   try {
-    await api.update({ id: row.id, enable: !row.enable })
+    console.log('row', row)
+    await api.update({ ...row, id: row.id, enable: !row.enable })
     row.enableLoading = false
     $message.success('操作成功')
     $table.value?.handleSearch()
-  }
+  }
   catch (error) {
     console.error(error)
     row.enableLoading = false

+ 27 - 19
packages/frontend/src/views/category/index.vue

@@ -14,20 +14,24 @@
         </n-input>
       </MeQueryItem>
       <MeQueryItem label="状态" :label-width="50">
-        <n-select v-model:value="queryItems.enable" clearable :options="[
-          { label: '启用', value: 1 },
-          { label: '停用', value: 0 },
-        ]" />
+        <n-select
+          v-model:value="queryItems.enable" clearable :options="[
+            { label: '启用', value: 1 },
+            { label: '停用', value: 0 },
+          ]"
+        />
       </MeQueryItem>
     </MeCrud>
 
     <MeModal ref="modalRef" width="520px">
       <n-form ref="modalFormRef" label-placement="left" label-align="left" :label-width="80" :model="modalForm">
-        <n-form-item label="分类名" path="title" :rule="{
-          required: true,
-          message: '请输入分类名',
-          trigger: ['input', 'blur'],
-        }">
+        <n-form-item
+          label="分类名" path="title" :rule="{
+            required: true,
+            message: '请输入分类名',
+            trigger: ['input', 'blur'],
+          }"
+        >
           <n-input v-model:value="modalForm.title" />
         </n-form-item>
         <n-form-item label="上层分类" path="parentId">
@@ -40,19 +44,23 @@
         <n-tabs v-if="modalForm.translations.length > 0" type="line" 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="{
-                required: true,
-                message: '请输入名称',
-                trigger: ['input', 'blur'],
-              }">
+              <n-form-item
+                label="名称" path="title" :rule="{
+                  required: true,
+                  message: '请输入名称',
+                  trigger: ['input', 'blur'],
+                }"
+              >
                 <n-input v-model:value="modalForm.translations[index].title" />
               </n-form-item>
 
-              <n-form-item label="备注" path="remark" :rule="{
-                required: false,
-                message: '请输入备注',
-                trigger: ['input', 'blur'],
-              }">
+              <n-form-item
+                label="备注" path="remark" :rule="{
+                  required: false,
+                  message: '请输入备注',
+                  trigger: ['input', 'blur'],
+                }"
+              >
                 <n-input v-model:value="modalForm.translations[index].remark" type="textarea" />
               </n-form-item>
             </n-tab-pane>

+ 84 - 61
packages/frontend/src/views/menu/list.vue

@@ -19,20 +19,24 @@
         </n-input>
       </MeQueryItem>
       <MeQueryItem label="状态" :label-width="50">
-        <n-select v-model:value="queryItems.enable" clearable :options="[
-          { label: '启用', value: 1 },
-          { label: '停用', value: 0 },
-        ]" />
+        <n-select
+          v-model:value="queryItems.enable" clearable :options="[
+            { label: '启用', value: 1 },
+            { label: '停用', value: 0 },
+          ]"
+        />
       </MeQueryItem>
     </MeCrud>
 
     <MeModal ref="modalRef" width="520px">
       <n-form ref="modalFormRef" label-placement="left" label-align="left" :label-width="95" :model="modalForm">
-        <n-form-item label="名称" path="title" :rule="{
-          required: true,
-          message: '请输入名称',
-          trigger: ['input', 'blur'],
-        }">
+        <n-form-item
+          label="名称" path="title" :rule="{
+            required: true,
+            message: '请输入名称',
+            trigger: ['input', 'blur'],
+          }"
+        >
           <n-input v-model:value="modalForm.title" />
         </n-form-item>
 
@@ -44,46 +48,57 @@
           <n-input v-model:value="modalForm.description" type="textarea" />
         </n-form-item> -->
         <n-form-item v-if="modalForm.level !== 0" label="封面" path="cover">
-          <n-upload :multiple="false" :default-upload="true" list-type="image-card" :custom-request="uploadCover"
-            :max="1" :default-file-list="previewFileList" @preview="handlePreview" @remove="handleCoverRemove" />
+          <n-upload
+            :multiple="false" :default-upload="true" list-type="image-card" :custom-request="uploadCover"
+            :max="1" :default-file-list="previewFileList" @preview="handlePreview" @remove="handleCoverRemove"
+          />
           <n-modal v-model:show="showModal" preset="card" style="width: 600px" title="">
             <img :src="previewImageUrl" style="width: 100%">
           </n-modal>
         </n-form-item>
-        <n-form-item label="分类" path="categoryId" :rule="{
-          required: modalForm.level === 0 ? false : true,
-          type: 'number',
-          trigger: ['change', 'blur'],
-          message: '请输入分类',
-        }">
-          <n-tree-select v-model:value="modalForm.categoryId" :options="allCategory" label-field="title" key-field="id"
-            placeholder="根分类" clearable />
+        <n-form-item
+          label="分类" path="categoryId" :rule="{
+            required: modalForm.level === 0 ? false : true,
+            type: 'number',
+            trigger: ['change', 'blur'],
+            message: '请输入分类',
+          }"
+        >
+          <n-tree-select
+            v-model:value="modalForm.categoryId" :options="allCategory" label-field="title" key-field="id"
+            placeholder="根分类" clearable
+          />
         </n-form-item>
 
-        <n-form-item v-if="modalForm.level === 0" label="样式类型" path="styleType" :rule="{
-          required: true,
-          type: 'number',
-          message: '请输入样式类型',
-          trigger: ['input', 'blur'],
-        }">
+        <n-form-item
+          v-if="modalForm.level === 0" label="样式类型" path="styleType" :rule="{
+            required: true,
+            type: 'number',
+            message: '请输入样式类型',
+            trigger: ['input', 'blur'],
+          }"
+        >
           <n-select v-model:value="modalForm.styleType" :options="styleEnum" clearable filterable tag />
         </n-form-item>
 
-
-        <n-form-item v-if="isShowOtherCol" label="其他类别" path="otherType" :rule="{
-          required: true,
-          type: 'number',
-          message: '请输入其他类别',
-          trigger: ['input', 'blur'],
-        }">
-          <n-select v-model:value="modalForm.otherType" :options="otherstyleEnum" clearable  />
+        <n-form-item
+          v-if="isShowOtherCol" label="其他类别" path="otherType" :rule="{
+            required: true,
+            type: 'number',
+            message: '请输入其他类别',
+            trigger: ['input', 'blur'],
+          }"
+        >
+          <n-select v-model:value="modalForm.otherType" :options="otherstyleEnum" clearable />
         </n-form-item>
-        <n-form-item label="文章链接" path="articleId" :rule="{
-          required: false,
-          type: 'number',
-          trigger: ['change', 'blur'],
-          message: '请输入文章链接',
-        }">
+        <n-form-item
+          label="文章链接" path="articleId" :rule="{
+            required: false,
+            type: 'number',
+            trigger: ['change', 'blur'],
+            message: '请输入文章链接',
+          }"
+        >
           <n-select v-model:value="modalForm.articleId" :options="allArticle" clearable filterable tag />
         </n-form-item>
 
@@ -91,35 +106,43 @@
           <n-input-number v-model:value="modalForm.grid" style="width:100%" />
         </n-form-item>
 
-        <n-form-item label="排序" path="order" :rule="{
-          type: 'number',
-          required: true,
-          message: '此为必填项',
-          trigger: ['blur', 'change'],
-        }">
+        <n-form-item
+          label="排序" path="order" :rule="{
+            type: 'number',
+            required: true,
+            message: '此为必填项',
+            trigger: ['blur', 'change'],
+          }"
+        >
           <n-input-number v-model:value="modalForm.order" />
         </n-form-item>
         <!-- {{ modalForm.translations }} -->
         <n-tabs v-if="modalForm.translations.length > 0" type="line" 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="{
-                required: true,
-                message: '请输入名称',
-                trigger: ['input', 'blur'],
-              }">
+              <n-form-item
+                label="名称" path="title" :rule="{
+                  required: true,
+                  message: '请输入名称',
+                  trigger: ['input', 'blur'],
+                }"
+              >
                 <n-input v-model:value="modalForm.translations.find(i => i.locale === lang).title">
                   <template #password-invisible-icon />
                 </n-input>
               </n-form-item>
 
-              <n-form-item label="描述" path="description" :rule="{
-                required: false,
-                message: '请输入描述',
-                trigger: ['input', 'blur'],
-              }">
-                <n-input v-model:value="modalForm.translations.find(i => i.locale === lang).description"
-                  type="textarea" />
+              <n-form-item
+                label="描述" path="description" :rule="{
+                  required: false,
+                  message: '请输入描述',
+                  trigger: ['input', 'blur'],
+                }"
+              >
+                <n-input
+                  v-model:value="modalForm.translations.find(i => i.locale === lang).description"
+                  type="textarea"
+                />
               </n-form-item>
             </n-tab-pane>
           </template>
@@ -232,10 +255,10 @@ const columns = [
     key: 'cover',
     render: row => row.cover
       ? h(NImage, {
-        src: row.cover,
-        height: 60,
-        width: 80,
-      })
+          src: row.cover,
+          height: 60,
+          width: 80,
+        })
       : null,
   },
   {