gemercheung 7 månader sedan
förälder
incheckning
da5a32ca70

+ 36 - 24
packages/frontend/src/views/article/add.vue

@@ -7,39 +7,51 @@
     </template>
 
     <div class="editor-wrap">
-      <n-form ref="modalFormRef" class="form wh-full" 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-input :maxlength="200" show-count v-model:value="modalForm.title" />
+      <n-form
+        ref="modalFormRef" class="form wh-full" 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-input v-model:value="modalForm.title" :maxlength="200" show-count />
         </n-form-item>
 
-        <n-form-item label="文章分类" path="categoryId" :rule="{
-          required: 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 style="max-width: 300px;" />
+        <n-form-item
+          label="文章分类" path="categoryId" :rule="{
+            required: 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 style="max-width: 300px;"
+          />
         </n-form-item>
 
         <n-tabs 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="`translations[${index}].title`" :rule="{
-                required: true,
-                message: '请输入文章名称',
-                trigger: ['input', 'blur'],
-              }">
-                <n-input :maxlength="200" show-count v-model:value="modalForm.translations[index].title" />
+              <n-form-item
+                label="文章名称" :path="`translations[${index}].title`" :rule="{
+                  required: true,
+                  message: '请输入文章名称',
+                  trigger: ['input', 'blur'],
+                }"
+              >
+                <n-input v-model:value="modalForm.translations[index].title" :maxlength="200" show-count />
               </n-form-item>
               <div class="h-450">
-                <VividEditor v-model="modalForm.translations[index].content" :dark="isDark"
-                  :handle-image-upload="handleUpload" :handle-video-upload="handleVideoUpload">
+                <VividEditor
+                  v-model="modalForm.translations[index].content" :dark="isDark"
+                  :handle-image-upload="handleUpload" :handle-video-upload="handleVideoUpload"
+                >
                   <SlashCommand />
                   <DragHandle />
                   <!-- <template #menu>

+ 2 - 2
packages/frontend/src/views/article/edit.vue

@@ -18,7 +18,7 @@
             trigger: ['input', 'blur'],
           }"
         >
-          <n-input :maxlength="200" show-count v-model:value="modalForm.title" />
+          <n-input v-model:value="modalForm.title" :maxlength="200" show-count />
         </n-form-item>
 
         <n-form-item
@@ -45,7 +45,7 @@
                   trigger: ['input', 'blur'],
                 }"
               >
-                <n-input :maxlength="200" show-count v-model:value="modalForm.translations[index].title" />
+                <n-input v-model:value="modalForm.translations[index].title" :maxlength="200" show-count />
               </n-form-item>
               <div class="h-450">
                 <VividEditor v-model="modalForm.translations[index].content" :dark="isDark" :handle-image-upload="handleUpload" :handle-video-upload="handleVideoUpload">

+ 39 - 25
packages/frontend/src/views/category/index.vue

@@ -14,26 +14,32 @@
         </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" :maxlength="200" show-count />
         </n-form-item>
         <n-form-item label="上层分类" path="parentId">
           <!-- <n-select v-model:value="modalForm.parentId" :options="allCategory" clearable filterable tag /> -->
-          <n-tree-select v-model:value="modalForm.parentId" :options="allCategory" label-field="title" key-field="id"
-            placeholder="根分类" clearable />
+          <n-tree-select
+            v-model:value="modalForm.parentId" :options="allCategory" label-field="title" key-field="id"
+            placeholder="根分类" clearable
+          />
         </n-form-item>
         <n-form-item label="备注" path="remark">
           <n-input v-model:value="modalForm.remark" />
@@ -42,22 +48,30 @@
         <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="`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 />
+              <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
+                />
               </n-form-item>
 
-              <n-form-item label="备注" path="remark" :rule="{
-                required: false,
-                message: '请输入备注',
-                trigger: ['input', 'blur'],
-              }">
-                <n-input v-model:value="modalForm.translations.find(i => i.locale === lang).remark" :maxlength="200"
-                  show-count type="textarea" />
+              <n-form-item
+                label="备注" path="remark" :rule="{
+                  required: false,
+                  message: '请输入备注',
+                  trigger: ['input', 'blur'],
+                }"
+              >
+                <n-input
+                  v-model:value="modalForm.translations.find(i => i.locale === lang).remark" :maxlength="200"
+                  show-count type="textarea"
+                />
               </n-form-item>
             </n-tab-pane>
           </template>

+ 91 - 64
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" :maxlength="200" show-count />
         </n-form-item>
 
@@ -44,49 +48,61 @@
           <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>
 
@@ -94,36 +110,46 @@
           <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="`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>
+              <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>
@@ -236,10 +262,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' },
@@ -396,7 +422,8 @@ async function handleFormEdit(data = {}) {
       status: 'finished',
       url: modalForm.value.cover,
     }]
-  } else {
+  }
+  else {
     previewFileList.value = []
   }
 

+ 25 - 15
packages/frontend/src/views/pms/user/index.vue

@@ -25,35 +25,45 @@
       </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"
-        :disabled="modalAction === 'view'">
-        <n-form-item label="用户名" path="username" :rule="{
-          required: true,
-          message: '请输入用户名',
-          trigger: ['input', 'blur'],
-        }">
+      <n-form
+        ref="modalFormRef" label-placement="left" label-align="left" :label-width="80" :model="modalForm"
+        :disabled="modalAction === 'view'"
+      >
+        <n-form-item
+          label="用户名" path="username" :rule="{
+            required: true,
+            message: '请输入用户名',
+            trigger: ['input', 'blur'],
+          }"
+        >
           <n-input v-model:value="modalForm.username" :disabled="modalAction !== 'add'" />
         </n-form-item>
-        <n-form-item v-if="['add', 'reset'].includes(modalAction)" :label="modalAction === 'reset' ? '重置密码' : '初始密码'"
+        <n-form-item
+          v-if="['add', 'reset'].includes(modalAction)" :label="modalAction === 'reset' ? '重置密码' : '初始密码'"
           path="password" :rule="{
             required: true,
             message: '请输入密码',
             trigger: ['input', 'blur'],
-          }">
+          }"
+        >
           <n-input v-model:value="modalForm.password" />
         </n-form-item>
 
         <n-form-item v-if="['add', 'setRole'].includes(modalAction)" label="角色" path="roleIds">
-          <n-select v-model:value="modalForm.roleIds" :options="roles" label-field="name" value-field="id" clearable
-            filterable multiple />
+          <n-select
+            v-model:value="modalForm.roleIds" :options="roles" label-field="name" value-field="id" clearable
+            filterable multiple
+          />
         </n-form-item>
         <n-form-item v-if="modalAction === 'add'" label="状态" path="enable">
           <NSwitch v-model:value="modalForm.enable">