gemercheung 6 mesi fa
parent
commit
b005535dad
1 ha cambiato i file con 67 aggiunte e 89 eliminazioni
  1. 67 89
      packages/frontend/src/views/menu/list.vue

+ 67 - 89
packages/frontend/src/views/menu/list.vue

@@ -19,24 +19,20 @@
         </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" :maxlength="200" show-count />
         </n-form-item>
 
@@ -48,61 +44,49 @@
           <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
-            style="max-width:120px ;" accept=".jpg,.jpeg,.png" :multiple="false" :default-upload="true"
+          <n-upload style="max-width:120px ;" accept=".jpg,.jpeg,.png" :multiple="false" :default-upload="true"
             list-type="image-card" :custom-request="uploadCover" :max="1" ::default-file-list="previewFileList"
-            @preview="handlePreview" @before-upload="beforeUpload" @remove="handleCoverRemove"
-          />
+            @preview="handlePreview" @before-upload="beforeUpload" @remove="handleCoverRemove" />
           <n-modal v-model:show="showModal" preset="card" style="width: 600px" title="">
             <img :src="previewImageUrl" style="width: 100%">
           </n-modal>
           <!-- {{ detail.styleType }} -->
-          {{ uploadTips.find(i => i.key === detail.styleType) ? uploadTips.find(i => i.key === detail.styleType).content
-            : "" }}
+          {{uploadTips.find(i => i.key === detail.styleType) ? uploadTips.find(i => i.key === detail.styleType).content
+            : ""}}
         </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-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
-          v-if="modalForm.level !== 0" label="文章链接" path="articleId" :rule="{
-            required: false,
-            type: 'number',
-            trigger: ['change', 'blur'],
-            message: '请输入文章链接',
-          }"
-        >
+        <n-form-item v-if="modalForm.level !== 0" 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>
 
@@ -110,46 +94,36 @@
           <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-input
-                  v-model:value="modalForm.translations.find(i => i.locale === lang).title" :maxlength="200"
-                  show-count
-                >
+              <n-form-item label="名称" :path="`translations[${index}].title`" :rule="{
+                required: true,
+                message: '请输入名称',
+                trigger: ['input', 'blur'],
+              }">
+                <n-input v-model:value="modalForm.translations.find(i => i.locale === lang).title" :maxlength="200"
+                  show-count>
                   <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"
-                  :maxlength="200" show-count 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"
+                  :maxlength="200" show-count type="textarea" />
               </n-form-item>
             </n-tab-pane>
           </template>
@@ -262,10 +236,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,
   },
   { title: '创建人', key: 'user.username' },
@@ -444,6 +418,10 @@ function handleSubAdd() {
   modalForm.value.level = 1
   modalForm.value.cover = ''
   previewFileList.value = []
+  modalForm.value.translations = []
+  setTimeout(() => {
+    modalForm.value.translations = initTranslations({}, ['title', 'description']).translations
+  }, 200)
   handleAdd({ level: 1, cover: '' })
 }