Переглянути джерело

商品详情由富文本改成图片上传的方式

licc 1 місяць тому
батько
коміт
c159f5bd0c
2 змінених файлів з 53 додано та 20 видалено
  1. 5 1
      src/views/goods/category/edit.vue
  2. 48 19
      src/views/goods/list/edit.vue

+ 5 - 1
src/views/goods/category/edit.vue

@@ -18,6 +18,9 @@
             <div class="form-tips">默认为0, 数值越大越排前</div>
           </div>
         </el-form-item>
+        <el-form-item label="日期预定" prop="choseDateState">
+          <el-switch v-model="formData.choseDateState" :active-value="1" :inactive-value="0"/>
+        </el-form-item>
         <el-form-item label="状态" prop="isShow">
           <el-switch v-model="formData.isShow" :active-value="1" :inactive-value="0"/>
         </el-form-item>
@@ -42,7 +45,8 @@ const formData = reactive({
   id: '',
   name: '',
   sort: 0,
-  isShow: 1
+  isShow: 1,
+  choseDateState: 0
 })
 
 const formRules = {

+ 48 - 19
src/views/goods/list/edit.vue

@@ -153,22 +153,27 @@
                 <material-picker v-model="formData.image" :limit="1"/>
               </div>
             </el-form-item>
-            <el-form-item label="商品轮播图" prop="bannerImages">
+            <el-form-item label="商品视频" prop="video">
               <div class="w-32vw">
-                <material-picker v-model="formData.bannerImages" :limit="3"/>
+                <material-picker v-model="formData.video" type="video" :limit="1"/>
               </div>
             </el-form-item>
-            <el-form-item label="商品视频" prop="video">
+            <el-form-item label="商品轮播图" prop="bannerImages">
               <div class="w-32vw">
-                <material-picker v-model="formData.video" type="video" :limit="1"/>
+                <material-picker v-model="formData.bannerImages" :limit="3"/>
               </div>
             </el-form-item>
           </div>
         </div>
         <div class="xl:flex">
-          <el-form-item label="商品详情" prop="detail">
-            <div style="width: 100%">
-              <editor v-model="formData.detail" :height="500"/>
+<!--          <el-form-item label="商品详情" prop="detail">-->
+<!--            <div style="width: 100%">-->
+<!--              <editor v-model="formData.detail" :height="500"/>-->
+<!--            </div>-->
+<!--          </el-form-item>-->
+          <el-form-item label="商品详情图" prop="detailImages">
+            <div class="w-32vw">
+              <material-picker v-model="formData.detailImages" :limit="20"/>
             </div>
           </el-form-item>
         </div>
@@ -320,21 +325,42 @@ const handleSave = async () => {
     availableDates: processedDates.value // 添加可入住日期数据
   }
 
-  if(formData.bannerImages){
-    submitData.mainResourceList = formData.bannerImages.map((item:any) => {
-      return {
-        resourceUrl: item
-      }
-    })
+  // 构建主资源列表(包括轮播图和详情图)
+  const mainResourceList: any[] = [];
+
+  if (formData.bannerImages) {
+    formData.bannerImages.forEach((item: any, index: number) => {
+      mainResourceList.push({
+        resourceType: 1, // 1轮播图
+        resourceName: `轮播图${index + 1}`,
+        resourceUrl: item,
+        sort: index + 1
+      });
+    });
+  }
+
+  if (formData.detailImages) {
+    formData.detailImages.forEach((item: any, index: number) => {
+      mainResourceList.push({
+        resourceType: 2, // 2详情图
+        resourceName: `详情图${index + 1}`,
+        resourceUrl: item,
+        sort: index + 1
+      });
+    });
   }
+
+  submitData.mainResourceList = mainResourceList;
   if(formData.tags){
     submitData.tags = formData.tags.join(',')
   }
   if(selectedDates.value.length > 0){
-    submitData.choseDateState = 1
-    submitData.startDate = selectedDates.value[0]
-    submitData.endDate = selectedDates.value[selectedDates.value.length - 1]
-    submitData.useDates = selectedDates.value.join(',')
+    const dates = [...selectedDates.value]
+    // 使用日期排序而不是字符串排序
+    const sortedDates = dates.sort((a, b) => new Date(a).getTime() - new Date(b).getTime())
+    submitData.startDate = sortedDates[0]
+    submitData.endDate = sortedDates[selectedDates.value.length - 1]
+    submitData.useDates = sortedDates.join(',')
   }
   feedback.msgSuccess('操作成功')
   if (route.query.id) {
@@ -351,7 +377,7 @@ const handleCategory = (val:any) => {
   const selectedCategory = optionsData.goodsCategory.find((item: any) => item.id === val);
   showDateRange.value = false
   selectedDates.value = []
-  if(selectedCategory && selectedCategory.name === '酒店民宿'){
+  if(selectedCategory && selectedCategory.choseDateState === 1){
     showDateRange.value = true
   }
 }
@@ -371,7 +397,10 @@ const getDetails = async () => {
       formData[key] = ''
     }
     if(key === 'mainResourceList' && data['mainResourceList']){
-      formData.bannerImages = data['mainResourceList'].map((item:any) => {
+      formData.bannerImages = data['mainResourceList'].filter((item:any) => item.resourceType === 1).map((item:any) => {
+        return item.resourceUrl
+      })
+      formData.detailImages = data['mainResourceList'].filter((item:any) => item.resourceType === 2).map((item:any) => {
         return item.resourceUrl
       })
     }