ソースを参照

refactor(components): 替换image-upload组件为upload-image组件

- 将多个页面中的image-upload组件替换为upload-image组件
- 更新系统基础设置页面的表单字段结构
- 添加客户协议和供应商协议编辑器功能
- 优化登录设置页面的上传组件样式属性
- 统一图片上传组件的引入方式和使用方法
肖路 11 時間 前
コミット
ce97259eff
29 ファイル変更115 行追加103 行削除
  1. 1 1
      src/views/platform/customerOperation/vipSite/styleDesign.vue
  2. 1 1
      src/views/platform/decoration/brand/index.vue
  3. 1 1
      src/views/platform/decoration/carousel/index.vue
  4. 1 1
      src/views/platform/decoration/caseAd/index.vue
  5. 43 43
      src/views/platform/decoration/flashSale/index.vue
  6. 2 2
      src/views/platform/decoration/floor/manage.vue
  7. 1 1
      src/views/platform/decoration/floorAd/index.vue
  8. 1 1
      src/views/platform/decoration/fresh/index.vue
  9. 1 1
      src/views/platform/decoration/recommend/index.vue
  10. 1 1
      src/views/platform/decoration/solution/index.vue
  11. 1 1
      src/views/platform/enterprise/carousel/index.vue
  12. 1 1
      src/views/platform/enterprise/floorAd/index.vue
  13. 1 1
      src/views/platform/gift/banner/index.vue
  14. 3 3
      src/views/platform/gift/carousel/index.vue
  15. 1 1
      src/views/platform/gift/floorAd/index.vue
  16. 1 1
      src/views/platform/gift/hotCustom/index.vue
  17. 3 3
      src/views/platform/gift/icon/index.vue
  18. 13 13
      src/views/platform/gift/longAd/index.vue
  19. 3 3
      src/views/platform/gift/recommendAd/index.vue
  20. 1 1
      src/views/platform/industrial/brandFloor/index.vue
  21. 3 3
      src/views/platform/industrial/carousel/index.vue
  22. 1 1
      src/views/platform/industrial/floorAd/index.vue
  23. 1 1
      src/views/platform/industrial/tag/index.vue
  24. 2 2
      src/views/platform/operation/gallery/index.vue
  25. 2 2
      src/views/platform/operation/theme/edit.vue
  26. 6 6
      src/views/platform/ruleCenter/category/index.vue
  27. 1 1
      src/views/platform/ruleCenter/list/edit.vue
  28. 17 5
      src/views/system/basicSetting/index.vue
  29. 1 1
      src/views/system/loginSetting/index.vue

+ 1 - 1
src/views/platform/customerOperation/vipSite/styleDesign.vue

@@ -103,7 +103,7 @@
           </el-col>
         </el-row>
         <el-form-item label="图片" prop="imageUrl">
-          <image-upload v-model="form.imageUrl" :limit="1" :file-size="5" :file-type="['png', 'jpg', 'jpeg']" />
+          <upload-image v-model="form.imageUrl" :limit="1" :file-size="5" :file-type="['png', 'jpg', 'jpeg']" />
         </el-form-item>
       </el-form>
       <template #footer>

+ 1 - 1
src/views/platform/decoration/brand/index.vue

@@ -71,7 +71,7 @@
           <el-input v-model="form.advertBrief" placeholder="请输入品牌简介" />
         </el-form-item>
         <el-form-item label="品牌图片" prop="coverImage">
-          <image-upload v-model="form.coverImage" :limit="1" />
+          <upload-image v-model="form.coverImage" :limit="1" />
           <div class="upload-tip">建议尺寸:400x300,支持 jpg/png 格式</div>
         </el-form-item>
         <el-form-item label="跳转链接" prop="advertUrl">

+ 1 - 1
src/views/platform/decoration/carousel/index.vue

@@ -94,7 +94,7 @@
           <el-input v-model="form.title" placeholder="请输入广告名称" />
         </el-form-item>
         <el-form-item label="广告图片" prop="imageUrl">
-          <image-upload v-model="form.imageUrl" :limit="1" />
+          <upload-image v-model="form.imageUrl" :limit="1" />
         </el-form-item>
         <el-form-item label="开始时间" prop="startTime">
           <el-date-picker

+ 1 - 1
src/views/platform/decoration/caseAd/index.vue

@@ -10,7 +10,7 @@
       </div>
       <!-- 隐藏的image-upload -->
       <div style="display: none">
-        <image-upload ref="uploadRef" v-model="imageOssId" :limit="1" />
+        <upload-image ref="uploadRef" v-model="imageOssId" :limit="1" />
       </div>
     </div>
   </div>

+ 43 - 43
src/views/platform/decoration/flashSale/index.vue

@@ -110,7 +110,7 @@
           <el-switch v-model="bannerForm.showText" />
         </el-form-item>
         <el-form-item label="图片" required>
-          <image-upload v-model="bannerForm.coverImage" :limit="1" />
+          <upload-image v-model="bannerForm.coverImage" :limit="1" />
         </el-form-item>
         <el-form-item label="描述" required>
           <el-input v-model="bannerForm.advertBrief" type="textarea" :rows="3" placeholder="请输入描述" />
@@ -194,11 +194,11 @@ const defaultBannerUrl = 'https://via.placeholder.com/200x300/1a237e/FFFFFF?text
 // 左侧大图配置
 const bannerConfig = ref({ id: null as number | null, imageUrl: '', imageOssId: '', link: '', title: '', brief: '', showText: false });
 const bannerDialog = reactive({ visible: false });
-const bannerForm = reactive({ 
-  id: null as number | null, 
-  advertTitle: '', 
-  coverImage: '', 
-  advertUrl: '', 
+const bannerForm = reactive({
+  id: null as number | null,
+  advertTitle: '',
+  coverImage: '',
+  advertUrl: '',
   advertBrief: '',
   showText: false,
   advertPosition: ADVERT_POSITION,
@@ -219,10 +219,10 @@ const loadBannerConfig = async () => {
           if (ossRes.data && ossRes.data.length > 0) displayUrl = ossRes.data[0].url;
         } catch (e) { console.error('获取图片URL失败', e); }
       }
-      bannerConfig.value = { 
-        id: data.id, 
-        imageUrl: displayUrl, 
-        imageOssId: ossId, 
+      bannerConfig.value = {
+        id: data.id,
+        imageUrl: displayUrl,
+        imageOssId: ossId,
         link: data.advertUrl || '',
         title: data.advertTitle || '',
         brief: data.advertBrief || '',
@@ -245,10 +245,10 @@ const handleEditBanner = async () => {
         if (coverImageValue && typeof coverImageValue === 'string' && coverImageValue.startsWith('http')) {
           coverImageValue = bannerConfig.value.imageOssId || '';
         }
-        Object.assign(bannerForm, { 
-          id: data.id, 
+        Object.assign(bannerForm, {
+          id: data.id,
           advertTitle: data.advertTitle || '',
-          coverImage: coverImageValue, 
+          coverImage: coverImageValue,
           advertUrl: data.advertUrl || '',
           advertBrief: data.advertBrief || '',
           showText: data.isShow === '1',
@@ -258,10 +258,10 @@ const handleEditBanner = async () => {
         });
       }
     } else {
-      Object.assign(bannerForm, { 
-        id: null, 
+      Object.assign(bannerForm, {
+        id: null,
         advertTitle: '',
-        coverImage: '', 
+        coverImage: '',
         advertUrl: '',
         advertBrief: '',
         showText: true,
@@ -300,12 +300,12 @@ const loadHeaderConfig = async () => {
     const res = await getFloorTitle(TITLE_ID);
     if (res.data) {
       const data = res.data;
-      headerConfig.value = { 
-        id: data.id, 
-        title: data.title || '大牌推荐', 
-        subtitle: data.subtitle || '甄选大牌,优质好品', 
-        linkText: data.linkWord || '查看更多品牌信息', 
-        linkUrl: data.linkUrl || '' 
+      headerConfig.value = {
+        id: data.id,
+        title: data.title || '大牌推荐',
+        subtitle: data.subtitle || '甄选大牌,优质好品',
+        linkText: data.linkWord || '查看更多品牌信息',
+        linkUrl: data.linkUrl || ''
       };
     }
   } catch (error) { console.error('加载标题配置失败', error); }
@@ -315,12 +315,12 @@ const handleEditHeader = () => { Object.assign(headerForm, headerConfig.value);
 
 const saveHeaderConfig = async () => {
   try {
-    const data = { 
-      id: headerForm.id, 
-      title: headerForm.title, 
-      subtitle: headerForm.subtitle, 
-      linkWord: headerForm.linkText, 
-      linkUrl: headerForm.linkUrl 
+    const data = {
+      id: headerForm.id,
+      title: headerForm.title,
+      subtitle: headerForm.subtitle,
+      linkWord: headerForm.linkText,
+      linkUrl: headerForm.linkUrl
     };
     if (headerForm.id) await updateFloorTitle(data);
     else await addFloorTitle(data);
@@ -592,14 +592,14 @@ onMounted(() => { loadHeaderConfig(); loadBannerConfig(); loadRecommendId().then
 
   &:hover { background: #fafafa; }
 
-  .close-icon { 
-    position: absolute; 
-    top: 8px; 
-    right: 8px; 
-    font-size: 18px; 
-    color: #999; 
-    cursor: pointer; 
-    &:hover { color: #f56c6c; } 
+  .close-icon {
+    position: absolute;
+    top: 8px;
+    right: 8px;
+    font-size: 18px;
+    color: #999;
+    cursor: pointer;
+    &:hover { color: #f56c6c; }
   }
 
   .sort-icon {
@@ -650,16 +650,16 @@ onMounted(() => { loadHeaderConfig(); loadBannerConfig(); loadRecommendId().then
   background: #fff;
   border-radius: 4px;
 
-  .search-title { 
-    font-size: 14px; 
-    font-weight: 500; 
-    color: #333; 
+  .search-title {
+    font-size: 14px;
+    font-weight: 500;
+    color: #333;
     padding: 12px 20px;
     border-bottom: 1px solid #e8e8e8;
   }
-  .search-bar { 
-    display: flex; 
-    gap: 10px; 
+  .search-bar {
+    display: flex;
+    gap: 10px;
     padding: 16px 20px;
   }
 }

+ 2 - 2
src/views/platform/decoration/floor/manage.vue

@@ -173,7 +173,7 @@
           </div>
         </el-form-item>
         <el-form-item label="图片" prop="advertiseImage" required>
-          <ImageUpload v-model="adForm.advertiseImage" :limit="1" />
+          <upload-image v-model="adForm.advertiseImage" :limit="1" />
         </el-form-item>
         <el-form-item label="描述" prop="advertiseDescribe" required>
           <el-input v-model="adForm.advertiseDescribe" type="textarea" :rows="4" placeholder="请输入描述" />
@@ -226,7 +226,7 @@ import { listFloorLabel, addFloorLabel, updateFloorLabel, delFloorLabel } from '
 import { listFloor } from '@/api/system/floor';
 import { listProduct } from '@/api/product/productBase';
 import { listDecorationFloorLink, addDecorationFloorLink, delDecorationFloorLink } from '@/api/product/decorationFloorLink';
-import ImageUpload from '@/components/ImageUpload/index.vue';
+import uploadImage from '@/components/upload-image/index.vue';
 
 const route = useRoute();
 const router = useRouter();

+ 1 - 1
src/views/platform/decoration/floorAd/index.vue

@@ -93,7 +93,7 @@
             <el-row :gutter="20">
               <el-col :span="12">
                 <el-form-item label="图片:">
-                  <image-upload v-model="form.imageUrl" :limit="1" />
+                  <upload-image v-model="form.imageUrl" :limit="1" />
                 </el-form-item>
               </el-col>
               <el-col :span="12" v-if="activeTab === 'icon'">

+ 1 - 1
src/views/platform/decoration/fresh/index.vue

@@ -89,7 +89,7 @@
           <el-input v-model="form.advertBrief" placeholder="请输入简介" />
         </el-form-item>
         <el-form-item label="图片" prop="coverImage">
-          <image-upload v-model="form.coverImage" :limit="1" />
+          <upload-image v-model="form.coverImage" :limit="1" />
         </el-form-item>
         <el-form-item label="跳转链接" prop="advertUrl">
           <el-input v-model="form.advertUrl" placeholder="请输入跳转链接" />

+ 1 - 1
src/views/platform/decoration/recommend/index.vue

@@ -84,7 +84,7 @@
           <el-switch v-model="sceneForm.showText" />
         </el-form-item>
         <el-form-item label="图片" prop="coverImage">
-          <image-upload v-model="sceneForm.coverImage" :limit="1" />
+          <upload-image v-model="sceneForm.coverImage" :limit="1" />
         </el-form-item>
         <el-form-item label="描述" prop="advertBrief">
           <el-input v-model="sceneForm.advertBrief" type="textarea" :rows="3" placeholder="请输入描述" />

+ 1 - 1
src/views/platform/decoration/solution/index.vue

@@ -88,7 +88,7 @@
           <el-input v-model="form.advertBrief" type="textarea" :rows="3" placeholder="请输入方案描述" />
         </el-form-item>
         <el-form-item label="方案图片" prop="coverImage">
-          <image-upload v-model="form.coverImage" :limit="1" />
+          <upload-image v-model="form.coverImage" :limit="1" />
         </el-form-item>
         <el-form-item label="链接地址" prop="advertUrl">
           <el-input v-model="form.advertUrl" placeholder="请输入链接地址" />

+ 1 - 1
src/views/platform/enterprise/carousel/index.vue

@@ -94,7 +94,7 @@
           <el-input v-model="form.title" placeholder="请输入广告名称" />
         </el-form-item>
         <el-form-item label="广告图片" prop="imageUrl">
-          <image-upload v-model="form.imageUrl" :limit="1" />
+          <upload-image v-model="form.imageUrl" :limit="1" />
         </el-form-item>
         <el-form-item label="开始时间" prop="startTime">
           <el-date-picker

+ 1 - 1
src/views/platform/enterprise/floorAd/index.vue

@@ -93,7 +93,7 @@
             <el-row :gutter="20">
               <el-col :span="12">
                 <el-form-item label="图片:">
-                  <image-upload v-model="form.imageUrl" :limit="1" />
+                  <upload-image v-model="form.imageUrl" :limit="1" />
                 </el-form-item>
               </el-col>
               <el-col :span="12" v-if="activeTab === 'icon'">

+ 1 - 1
src/views/platform/gift/banner/index.vue

@@ -68,7 +68,7 @@
           <el-input v-model="form.title" placeholder="请输入公告标题" />
         </el-form-item>
         <el-form-item label="封面图片" prop="imageUrl">
-          <image-upload v-model="form.imageUrl" :limit="1" />
+          <upload-image v-model="form.imageUrl" :limit="1" />
         </el-form-item>
         <el-form-item label="链接地址" prop="link">
           <el-input v-model="form.link" placeholder="请输入链接地址" />

+ 3 - 3
src/views/platform/gift/carousel/index.vue

@@ -149,7 +149,7 @@
         </el-form-item>
 
         <el-form-item label="图片" prop="imageUrl">
-          <image-upload v-model="form.imageUrl" :limit="1" />
+          <upload-image v-model="form.imageUrl" :limit="1" />
         </el-form-item>
 
         <el-form-item label="描述" prop="remark">
@@ -365,12 +365,12 @@ onMounted(() => {
 .action-link {
   cursor: pointer;
   margin: 0 8px;
-  
+
   &.primary {
     color: #409eff;
     &:hover { color: #66b1ff; }
   }
-  
+
   &.danger {
     color: #f56c6c;
     &:hover { color: #f78989; }

+ 1 - 1
src/views/platform/gift/floorAd/index.vue

@@ -90,7 +90,7 @@
           </el-col>
         </el-row>
         <el-form-item label="封面图片" prop="mainImg">
-          <image-upload v-model="form.mainImg" :limit="1" />
+          <upload-image v-model="form.mainImg" :limit="1" />
         </el-form-item>
       </el-form>
       <template #footer>

+ 1 - 1
src/views/platform/gift/hotCustom/index.vue

@@ -90,7 +90,7 @@
           </el-col>
         </el-row>
         <el-form-item label="封面图片" prop="mainImg">
-          <image-upload v-model="form.mainImg" :limit="1" />
+          <upload-image v-model="form.mainImg" :limit="1" />
         </el-form-item>
       </el-form>
       <template #footer>

+ 3 - 3
src/views/platform/gift/icon/index.vue

@@ -100,7 +100,7 @@
         </el-row>
 
         <el-form-item label="封面图片" prop="imageUrl">
-          <image-upload v-model="form.imageUrl" :limit="1" />
+          <upload-image v-model="form.imageUrl" :limit="1" />
         </el-form-item>
       </el-form>
       <template #footer>
@@ -294,12 +294,12 @@ onMounted(() => {
 .action-link {
   cursor: pointer;
   margin: 0 8px;
-  
+
   &.primary {
     color: #409eff;
     &:hover { color: #66b1ff; }
   }
-  
+
   &.danger {
     color: #f56c6c;
     &:hover { color: #f78989; }

+ 13 - 13
src/views/platform/gift/longAd/index.vue

@@ -8,10 +8,10 @@
 
       <!-- 广告图片卡片 -->
       <el-card class="ad-card" shadow="hover" @click="handleClickAd">
-        <el-image 
-          v-if="adData.imageUrl" 
-          :src="adData.imageUrl" 
-          fit="contain" 
+        <el-image
+          v-if="adData.imageUrl"
+          :src="adData.imageUrl"
+          fit="contain"
           class="ad-image"
         >
           <template #error>
@@ -35,7 +35,7 @@
           </el-form-item>
           <el-form-item label="图片:">
             <div class="upload-area">
-              <image-upload v-model="form.imageUrl" :limit="1" />
+              <upload-image v-model="form.imageUrl" :limit="1" />
               <span class="upload-tip">建议尺寸:1200 x 300 像素</span>
             </div>
           </el-form-item>
@@ -142,11 +142,11 @@ onMounted(() => {
 
 .title-card {
   margin-bottom: 16px;
-  
+
   :deep(.el-card__body) {
     padding: 12px 20px;
   }
-  
+
   .title-text {
     font-size: 14px;
     font-weight: 500;
@@ -158,19 +158,19 @@ onMounted(() => {
   margin-bottom: 16px;
   cursor: pointer;
   transition: all 0.3s;
-  
+
   &:hover {
     box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
   }
-  
+
   :deep(.el-card__body) {
     padding: 0;
   }
-  
+
   .ad-image {
     width: 100%;
     display: block;
-    
+
     :deep(img) {
       width: 100%;
       height: auto;
@@ -189,7 +189,7 @@ onMounted(() => {
   background: #f5f7fa;
   color: #909399;
   font-size: 14px;
-  
+
   .el-icon {
     font-size: 40px;
     margin-bottom: 10px;
@@ -206,7 +206,7 @@ onMounted(() => {
   display: flex;
   flex-direction: column;
   gap: 10px;
-  
+
   .upload-tip {
     color: #909399;
     font-size: 12px;

+ 3 - 3
src/views/platform/gift/recommendAd/index.vue

@@ -68,7 +68,7 @@
           <el-input v-model="form.title" placeholder="请输入公告标题" />
         </el-form-item>
         <el-form-item label="封面图片" prop="imageUrl">
-          <image-upload v-model="form.imageUrl" :limit="1" />
+          <upload-image v-model="form.imageUrl" :limit="1" />
         </el-form-item>
         <el-form-item label="链接地址" prop="link">
           <el-input v-model="form.link" placeholder="请输入链接地址" />
@@ -264,12 +264,12 @@ onMounted(() => {
 .action-link {
   cursor: pointer;
   margin: 0 6px;
-  
+
   &.primary {
     color: #409eff;
     &:hover { color: #66b1ff; }
   }
-  
+
   &.danger {
     color: #f56c6c;
     &:hover { color: #f78989; }

+ 1 - 1
src/views/platform/industrial/brandFloor/index.vue

@@ -87,7 +87,7 @@
         <el-row :gutter="20">
           <el-col :span="24">
             <el-form-item label="图片" prop="imageUrl">
-              <image-upload v-model="form.imageUrl" :limit="1" />
+              <upload-image v-model="form.imageUrl" :limit="1" />
               <div class="upload-tip">请上传大小不超过 <span class="tip-highlight">5MB</span> 格式为 <span class="tip-highlight">png/jpg/jpeg</span> 的文件</div>
             </el-form-item>
           </el-col>

+ 3 - 3
src/views/platform/industrial/carousel/index.vue

@@ -94,7 +94,7 @@
           <el-input v-model="form.title" placeholder="请输入广告名称" />
         </el-form-item>
         <el-form-item label="广告图片" prop="imageUrl">
-          <image-upload v-model="form.imageUrl" :limit="1" />
+          <upload-image v-model="form.imageUrl" :limit="1" />
         </el-form-item>
         <el-form-item label="开始时间" prop="startTime">
           <el-date-picker
@@ -332,12 +332,12 @@ onMounted(() => {
 .action-link {
   cursor: pointer;
   margin: 0 8px;
-  
+
   &.primary {
     color: #409eff;
     &:hover { color: #66b1ff; }
   }
-  
+
   &.danger {
     color: #f56c6c;
     &:hover { color: #f78989; }

+ 1 - 1
src/views/platform/industrial/floorAd/index.vue

@@ -115,7 +115,7 @@
               </el-col>
             </el-row>
             <el-form-item label="图片:">
-              <image-upload v-model="form.imageUrl" :limit="1" />
+              <upload-image v-model="form.imageUrl" :limit="1" />
               <div class="upload-tip">请上传大小不超过 <span class="tip-highlight">5MB</span> 格式为 <span class="tip-highlight">png/jpg/jpeg</span> 的文件</div>
             </el-form-item>
             <el-form-item label="描述:">

+ 1 - 1
src/views/platform/industrial/tag/index.vue

@@ -38,7 +38,7 @@
           <el-input v-model="form.link" placeholder="请输入链接" />
         </el-form-item>
         <el-form-item label="图片" prop="imageUrl">
-          <image-upload v-model="form.imageUrl" :limit="1" />
+          <upload-image v-model="form.imageUrl" :limit="1" />
         </el-form-item>
         <el-form-item label="描述" prop="remark">
           <el-input v-model="form.remark" type="textarea" :rows="3" placeholder="请输入描述" />

+ 2 - 2
src/views/platform/operation/gallery/index.vue

@@ -77,7 +77,7 @@
           <el-input v-model="uploadForm.imageName" placeholder="请输入图片名称" />
         </el-form-item>
         <el-form-item label="图片" prop="ossId">
-          <image-upload v-model="uploadForm.ossId" :limit="1" />
+          <upload-image v-model="uploadForm.ossId" :limit="1" />
         </el-form-item>
       </el-form>
       <template #footer>
@@ -89,7 +89,7 @@
     <!-- 编辑对话框 -->
     <el-dialog v-model="editDialog.visible" title="编辑图片" width="500px" append-to-body>
       <div class="edit-image-container">
-        <image-upload v-model="editForm.ossId" :limit="1" />
+        <upload-image v-model="editForm.ossId" :limit="1" />
       </div>
       <template #footer>
         <el-button type="primary" @click="submitEdit">确 认</el-button>

+ 2 - 2
src/views/platform/operation/theme/edit.vue

@@ -125,7 +125,7 @@
         <el-row :gutter="20">
           <el-col :span="8">
             <el-form-item label="封面图片" prop="coverImage">
-              <image-upload v-model="form.coverImage" :limit="1" />
+              <upload-image v-model="form.coverImage" :limit="1" />
             </el-form-item>
           </el-col>
         </el-row>
@@ -133,7 +133,7 @@
         <el-row :gutter="20">
           <el-col :span="8">
             <el-form-item label="内页图片" prop="titlePage">
-              <image-upload v-model="form.titlePage" :limit="1" />
+              <upload-image v-model="form.titlePage" :limit="1" />
             </el-form-item>
           </el-col>
         </el-row>

+ 6 - 6
src/views/platform/ruleCenter/category/index.vue

@@ -60,7 +60,7 @@
     <el-dialog v-model="dialog.visible" :title="dialog.title" width="500px" append-to-body>
       <el-form ref="formRef" :model="form" :rules="rules" label-width="100px">
         <el-form-item label="分类图标" prop="ruleCategoryImage">
-          <image-upload v-model="form.ruleCategoryImage" :limit="1" />
+          <upload-image v-model="form.ruleCategoryImage" :limit="1" />
         </el-form-item>
         <el-form-item label="分类名称" prop="ruleCategoryName">
           <el-input v-model="form.ruleCategoryName" placeholder="请输入分类名称" />
@@ -145,7 +145,7 @@ const flattenTree = (tree: any[], level: number = 1, parentExpanded: boolean = t
   tree.forEach((node, index) => {
     const isLastItem = index === tree.length - 1;
     const newIsLast = [...isLast, isLastItem];
-    
+
     if (parentExpanded) {
       result.push({
         ...node,
@@ -155,7 +155,7 @@ const flattenTree = (tree: any[], level: number = 1, parentExpanded: boolean = t
         expanded: expandedKeys.value.has(node.ruleCategoryNo)
       });
     }
-    
+
     if (node.children && node.children.length > 0) {
       const childExpanded = parentExpanded && expandedKeys.value.has(node.ruleCategoryNo);
       result.push(...flattenTree(node.children, level + 1, childExpanded, newIsLast));
@@ -211,7 +211,7 @@ const getList = async () => {
     const list = res.rows || [];
     categoryList.value = buildTree(list);
     categoryTreeOptions.value = [{ ruleCategoryNo: '', ruleCategoryName: '顶级分类', children: categoryList.value }];
-    
+
     // 默认全部展开
     if (isExpandAll.value) {
       const allKeys = new Set<string>();
@@ -226,7 +226,7 @@ const getList = async () => {
       collectKeys(categoryList.value);
       expandedKeys.value = allKeys;
     }
-    
+
     updateFlatList();
   } catch (error) {
     console.error('加载列表失败', error);
@@ -379,7 +379,7 @@ onMounted(() => {
   cursor: pointer;
   font-size: 10px;
   margin-right: 4px;
-  
+
   &:hover {
     color: #409eff;
   }

+ 1 - 1
src/views/platform/ruleCenter/list/edit.vue

@@ -37,7 +37,7 @@
         </el-form-item>
 
         <el-form-item label="规则图片" prop="ruleImage">
-          <image-upload v-model="form.ruleImage" :limit="1" />
+          <upload-image v-model="form.ruleImage" :limit="1" />
         </el-form-item>
 
         <el-form-item label="规则内容" prop="ruleContent">

+ 17 - 5
src/views/system/basicSetting/index.vue

@@ -176,24 +176,24 @@
         <el-row :gutter="20">
           <el-col :span="8">
             <el-form-item label="平台LOGO" prop="logo">
-              <image-upload v-model="form.logo" :limit="1" />
+              <upload-image v-model="form.logo" :limit="1" />
             </el-form-item>
           </el-col>
           <el-col :span="8">
             <el-form-item label="平台图标" prop="icon">
-              <image-upload v-model="form.icon" :limit="1" />
+              <upload-image v-model="form.icon" :limit="1" />
             </el-form-item>
           </el-col>
           <el-col :span="8">
             <el-form-item label="默认头像" prop="defaultAvatar">
-              <image-upload v-model="form.defaultAvatar" :limit="1" />
+              <upload-image v-model="form.defaultAvatar" :limit="1" />
             </el-form-item>
           </el-col>
         </el-row>
 
         <!-- 小程序二维码 -->
         <el-form-item label="小程序二维码" prop="miniQrcode">
-          <image-upload v-model="form.miniQrcode" :limit="1" />
+          <upload-image v-model="form.miniQrcode" :limit="1" />
         </el-form-item>
 
         <!-- 内容 -->
@@ -206,6 +206,16 @@
           <el-input v-model="form.detailDesc" type="textarea" :rows="3" placeholder="请输入详细页描述" />
         </el-form-item>
 
+        <!-- 客户协议 -->
+        <el-form-item label="客户协议" prop="customerLoginAgreement">
+          <editor v-model="form.customerLoginAgreement" :min-height="192" />
+        </el-form-item>
+
+        <!-- 供应商协议 -->
+        <el-form-item label="供应商协议" prop="supplierLoginAgreement">
+          <editor v-model="form.supplierLoginAgreement" :min-height="192" />
+        </el-form-item>
+
         <!-- 提交按钮 -->
         <el-form-item>
           <el-button type="primary" @click="submitForm" v-hasPermi="['system:platformConfig:edit']">提交</el-button>
@@ -256,7 +266,9 @@ const data = reactive({
     detailDesc: '',
     platormDiy: '0', // 平台商城自定义 0不diy 1diy
     industrialDiy: '0', // 工业品商城自定义 0不diy 1diy
-    fuliDiy: '0' // 福利商城自定义 0不diy 1diy
+    fuliDiy: '0', // 福利商城自定义 0不diy 1diy
+    customerLoginAgreement: '', // 客户登录协议
+    supplierLoginAgreement: '' // 供应商登录协议
   } as any,
   rules: {
     platformName: [{ required: true, message: '平台名称不能为空', trigger: 'blur' }],

+ 1 - 1
src/views/system/loginSetting/index.vue

@@ -33,7 +33,7 @@
           </div>
           <div class="image-actions">
             <div class="upload-btn">
-              <image-upload v-model="item.image" :limit="1" :fileSize="5" :isShowTip="false" />
+              <upload-image v-model="item.image" :limit="1" width="100px" height="100px" />
             </div>
             <div class="color-picker">
               <span>背景色:</span>