浏览代码

feat:删除多余字段

颜琼丽 1 天之前
父节点
当前提交
fe699891f1

+ 130 - 209
jd-logistics-ui-v3/src/components/ImageUpload/index.vue

@@ -19,28 +19,7 @@
         :on-preview="handlePictureCardPreview"
         :class="{ hide: fileList.length >= limit }"
     >
-      <!-- 自定义文件项模板,包含删除和预览按钮 -->
-      <template #file="{ file }">
-        <div class="el-upload-list__item" :class="`is-${file.status}`">
-          <img
-              class="el-upload-list__item-thumbnail"
-              :src="file.baseUrl"
-              alt=""
-              @click="handlePictureCardPreview(file)"
-          />
-          <!-- 操作按钮区域 -->
-          <span class="el-upload-list__item-actions">
-            <span class="el-upload-list__item-preview" @click="handlePictureCardPreview(file)">
-              <el-icon><ZoomIn /></el-icon>
-            </span>
-            <span class="el-upload-list__item-delete" @click="handleDelete(file)">
-              <el-icon><Delete /></el-icon>
-            </span>
-          </span>
-        </div>
-      </template>
-      <!-- 上传按钮 -->
-      <el-icon class="avatar-uploader-icon"><Plus /></el-icon>
+      <el-icon class="avatar-uploader-icon"><plus /></el-icon>
     </el-upload>
     <!-- 上传提示 -->
     <div class="el-upload__tip" v-if="showTip && !disabled">
@@ -49,89 +28,110 @@
         大小不超过 <b style="color: #f56c6c">{{ fileSize }}MB</b>
       </template>
       <template v-if="fileType">
-        格式为 <b style="color: #f56c6c">{{ fileType.join('/') }}</b>
+        格式为 <b style="color: #f56c6c">{{ fileType.join("/") }}</b>
       </template>
       的文件
     </div>
 
-    <el-dialog v-model="dialogVisible" title="预览" width="800px" append-to-body>
-      <img :src="dialogImageUrl" style="display: block; max-width: 100%; margin: 0 auto" />
+    <el-dialog
+        v-model="dialogVisible"
+        title="预览"
+        width="800px"
+        append-to-body
+    >
+      <img
+          :src="dialogImageUrl"
+          style="display: block; max-width: 100%; margin: 0 auto"
+      />
     </el-dialog>
   </div>
 </template>
 
 <script setup>
-import { getToken } from '@/utils/auth'
+import { getToken } from "@/utils/auth"
 import Sortable from 'sortablejs'
-import { getFileBase64 } from '@/api/file' // 确保路径正确
-import { Plus, ZoomIn, Delete } from '@element-plus/icons-vue'
 
 const props = defineProps({
   modelValue: [String, Object, Array],
-  action: { type: String, default: '/file/upload' },
-  data: { type: Object },
-  limit: { type: Number, default: 5 },
-  fileSize: { type: Number, default: 5 },
-  fileType: { type: Array, default: () => ['png', 'jpg', 'jpeg'] },
-  isShowTip: { type: Boolean, default: true },
-  disabled: { type: Boolean, default: false },
-  drag: { type: Boolean, default: true }
+  // 上传接口地址
+  action: {
+    type: String,
+    default: "/file/upload"
+  },
+  // 上传携带的参数
+  data: {
+    type: Object
+  },
+  // 图片数量限制
+  limit: {
+    type: Number,
+    default: 5
+  },
+  // 大小限制(MB)
+  fileSize: {
+    type: Number,
+    default: 5
+  },
+  // 文件类型, 例如['png', 'jpg', 'jpeg']
+  fileType: {
+    type: Array,
+    default: () => ["png", "jpg", "jpeg"]
+  },
+  // 是否显示提示
+  isShowTip: {
+    type: Boolean,
+    default: true
+  },
+  // 禁用组件(仅查看图片)
+  disabled: {
+    type: Boolean,
+    default: false
+  },
+  // 拖动排序
+  drag: {
+    type: Boolean,
+    default: true
+  }
 })
 
 const { proxy } = getCurrentInstance()
-const emit = defineEmits(['update:modelValue'])
-
-const uploadingCount = ref(0)
-const dialogImageUrl = ref('')
+const emit = defineEmits()
+const number = ref(0)
+const uploadList = ref([])
+const dialogImageUrl = ref("")
 const dialogVisible = ref(false)
 const baseUrl = import.meta.env.VITE_APP_BASE_API
-const uploadImgUrl = ref(baseUrl + props.action)
-const headers = ref({ Authorization: 'Bearer ' + getToken() })
+const uploadImgUrl = ref(baseUrl + props.action) // 上传的图片服务器地址
+const headers = ref({ Authorization: "Bearer " + getToken() })
 const fileList = ref([])
-const showTip = computed(() => props.isShowTip && (props.fileType || props.fileSize))
-
-// 缓存 base64
-const base64Cache = new Map()
+const showTip = computed(
+    () => props.isShowTip && (props.fileType || props.fileSize)
+)
 
-// 监听外部 modelValue 变化(编辑回显)
-watch(() => props.modelValue, async (val) => {
+watch(() => props.modelValue, val => {
   if (val) {
-    const paths = Array.isArray(val) ? val : (val ? val.split(',').filter(p => p) : [])
-    const results = await Promise.all(paths.map(async (path) => {
-      if (!base64Cache.has(path)) {
-        try {
-          const base64 = await getFileBase64(path)
-          base64Cache.set(path, base64)
-        } catch (e) {
-          console.error(`获取图片 ${path} 的 base64 失败:`, e)
-          base64Cache.set(path, '')
-        }
-      }
-      const base64 = base64Cache.get(path)
-      return {
-        uid: Symbol('uid'),          // 生成唯一 uid,避免与上传文件冲突
-        name: path,
-        url:  path,         // 优先使用 base64,否则用原始路径(可能不显示)
-        rawUrl: path,
-        baseUrl:base64,
-        status: 'success'
+    // 首先将值转为数组
+    const list = Array.isArray(val) ? val : props.modelValue.split(",")
+    // 然后将数组转为对象数组
+    fileList.value = list.map(item => {
+      if (typeof item === "string") {
+        item = { name: item, url: item }
       }
-    }))
-    fileList.value = results
+      return item
+    })
   } else {
     fileList.value = []
-    base64Cache.clear()
+    return []
   }
-}, { deep: true, immediate: true })
+},{ deep: true, immediate: true })
 
-// 上传前校验
+// 上传前loading加载
 function handleBeforeUpload(file) {
-  // 文件类型校验
   let isImg = false
   if (props.fileType.length) {
-    let fileExtension = ''
-    if (file.name.lastIndexOf('.') > -1) {
-      fileExtension = file.name.slice(file.name.lastIndexOf('.') + 1)
+    let fileExtension = ""
+    if (file.name.lastIndexOf(".") > -1) {
+      fileExtension = file.name.slice(file.name.lastIndexOf(".") + 1)
     }
     isImg = props.fileType.some(type => {
       if (file.type.indexOf(type) > -1) return true
@@ -139,10 +139,10 @@ function handleBeforeUpload(file) {
       return false
     })
   } else {
-    isImg = file.type.indexOf('image') > -1
+    isImg = file.type.indexOf("image") > -1
   }
   if (!isImg) {
-    proxy.$modal.msgError(`文件格式不正确,请上传${props.fileType.join('/')}图片格式文件!`)
+    proxy.$modal.msgError(`文件格式不正确,请上传${props.fileType.join("/")}图片格式文件!`)
     return false
   }
   if (file.name.includes(',')) {
@@ -152,13 +152,12 @@ function handleBeforeUpload(file) {
   if (props.fileSize) {
     const isLt = file.size / 1024 / 1024 < props.fileSize
     if (!isLt) {
-      proxy.$modal.msgError(`上传图片大小不能超过 ${props.fileSize} MB!`)
+      proxy.$modal.msgError(`上传头像图片大小不能超过 ${props.fileSize} MB!`)
       return false
     }
   }
-  proxy.$modal.loading('正在上传图片,请稍候...')
-  uploadingCount.value++
-  return true
+  proxy.$modal.loading("正在上传图片,请稍候...")
+  number.value++
 }
 
 // 文件个数超出
@@ -167,166 +166,88 @@ function handleExceed() {
 }
 
 // 上传成功回调
-async function handleUploadSuccess(res, file) {
+function handleUploadSuccess(res, file) {
   if (res.code === 200) {
-    const rawUrl = res.data.url
-    // 立即添加文件到 fileList,使用原始路径占位(可能会裂图)
-    const newItem = {
-      uid: file.uid,               // 使用 el-upload 的 uid,保证删除时匹配
-      name: rawUrl,
-      url: rawUrl,                 // 先用原始路径,等 base64 获取后替换
-      rawUrl: rawUrl,
-      baseUrl:rawUrl,
-      status: 'uploading'          // 标记正在获取 base64
-    }
-    fileList.value.push(newItem)
-
-    // 获取 base64(现在返回完整的 data URL)
-    try {
-      const base64 = await getFileBase64(rawUrl)
-      console.log('获取到 base64 预览:', base64 ? base64.substring(0, 100) + '...' : '空')
-
-      // 更新对应项的 url 和状态(通过重新赋值数组触发响应式更新)
-      fileList.value = fileList.value.map(item => {
-        if (item.uid === file.uid) {
-          return {
-            ...item,
-            baseUrl: base64,
-            status: 'success'
-          }
-        }
-        return item
-      })
-      // 存入缓存
-      base64Cache.set(rawUrl, base64)
-    } catch (error) {
-      console.error('获取图片 base64 失败:', error)
-      // 更新状态为失败,可显示裂图或默认占位图
-      fileList.value = fileList.value.map(item => {
-        if (item.uid === file.uid) {
-          return {
-            ...item,
-            status: 'error'
-          }
-        }
-        return item
-      })
-    } finally {
-      uploadingCount.value--
-      if (uploadingCount.value === 0) {
-        proxy.$modal.closeLoading()
-      }
-    }
-
-    // 更新 v-model 值(原始路径拼接)
-    emit('update:modelValue', listToString(fileList.value))
+    uploadList.value.push({ name: res.data.url, url: res.data.url })
+    uploadedSuccessfully()
   } else {
-    // 上传失败
+    number.value--
+    proxy.$modal.closeLoading()
     proxy.$modal.msgError(res.msg)
     proxy.$refs.imageUpload.handleRemove(file)
-    uploadingCount.value--
-    if (uploadingCount.value === 0) {
-      proxy.$modal.closeLoading()
-    }
+    uploadedSuccessfully()
   }
 }
 
 // 删除图片
 function handleDelete(file) {
-  // 优先使用 rawUrl 查找(确保唯一性)
-  const rawUrl = file.rawUrl || file.name || file.url
-  let index = fileList.value.findIndex(f => f.rawUrl === rawUrl)
-
-  // 如果找不到,尝试用 uid(针对上传的文件)
-  if (index === -1 && file.uid) {
-    index = fileList.value.findIndex(f => f.uid === file.uid)
+  const findex = fileList.value.map(f => f.name).indexOf(file.name)
+  if (findex > -1 && uploadList.value.length === number.value) {
+    fileList.value.splice(findex, 1)
+    emit("update:modelValue", listToString(fileList.value))
+    return false
   }
+}
 
-  if (index > -1) {
-    const removed = fileList.value[index]
-    if (removed.rawUrl) {
-      base64Cache.delete(removed.rawUrl)
-    }
-    fileList.value.splice(index, 1)
-    emit('update:modelValue', listToString(fileList.value))
-  } else {
-    console.warn('未找到要删除的文件', file)
+// 上传结束处理
+function uploadedSuccessfully() {
+  if (number.value > 0 && uploadList.value.length === number.value) {
+    fileList.value = fileList.value.filter(f => f.url !== undefined).concat(uploadList.value)
+    uploadList.value = []
+    number.value = 0
+    emit("update:modelValue", listToString(fileList.value))
+    proxy.$modal.closeLoading()
   }
-  // 阻止 el-upload 默认删除行为(已经手动处理)
-  return false
 }
 
 // 上传失败
-function handleUploadError(err, file) {
-  console.error('上传错误', err)
-  proxy.$modal.msgError('上传图片失败')
+function handleUploadError() {
+  proxy.$modal.msgError("上传图片失败")
   proxy.$modal.closeLoading()
-  uploadingCount.value--
-  if (uploadingCount.value === 0) {
-    proxy.$modal.closeLoading()
-  }
 }
 
-// 预览大图
+// 预览
 function handlePictureCardPreview(file) {
-  // 如果有 base64 优先使用,否则用原始路径
-  dialogImageUrl.value = file.baseUrl || file.rawUrl
+  dialogImageUrl.value = file.url
   dialogVisible.value = true
 }
 
-// 文件列表转字符串(使用原始路径)
-function listToString(list, separator = ',') {
-  return list.map(item => item.rawUrl).filter(Boolean).join(separator)
+// 对象转成指定字符串分隔
+function listToString(list, separator) {
+  let strs = ""
+  separator = separator || ","
+  for (let i in list) {
+    if (undefined !== list[i].url && list[i].url.indexOf("blob:") !== 0) {
+      strs += list[i].url.replace(baseUrl, "") + separator
+    }
+  }
+  return strs != "" ? strs.substr(0, strs.length - 1) : ""
 }
 
-// 拖拽排序(可选)
+// 初始化拖拽排序
 onMounted(() => {
   if (props.drag && !props.disabled) {
     nextTick(() => {
       const element = proxy.$refs.imageUpload?.$el?.querySelector('.el-upload-list')
-      if (element) {
-        Sortable.create(element, {
-          onEnd: (evt) => {
-            const movedItem = fileList.value.splice(evt.oldIndex, 1)[0]
-            fileList.value.splice(evt.newIndex, 0, movedItem)
-            emit('update:modelValue', listToString(fileList.value))
-          }
-        })
-      }
+      Sortable.create(element, {
+        onEnd: (evt) => {
+          const movedItem = fileList.value.splice(evt.oldIndex, 1)[0]
+          fileList.value.splice(evt.newIndex, 0, movedItem)
+          emit('update:modelValue', listToString(fileList.value))
+        }
+      })
     })
   }
 })
 </script>
 
 <style scoped lang="scss">
-:deep(.hide .el-upload--picture-card) { display: none; }
-:deep(.el-upload.el-upload--picture-card.is-disabled) { display: none !important; }
+// .el-upload--picture-card 控制加号部分
+:deep(.hide .el-upload--picture-card) {
+  display: none;
+}
 
-/* 自定义文件项样式,确保操作按钮在 hover 时显示 */
-:deep(.el-upload-list__item) {
-  position: relative;
-  &:hover .el-upload-list__item-actions {
-    opacity: 1;
-  }
-  .el-upload-list__item-actions {
-    position: absolute;
-    top: 0;
-    left: 0;
-    width: 100%;
-    height: 100%;
-    background-color: rgba(0, 0, 0, 0.5);
-    display: flex;
-    align-items: center;
-    justify-content: center;
-    opacity: 0;
-    transition: opacity 0.3s;
-    .el-upload-list__item-preview,
-    .el-upload-list__item-delete {
-      color: #fff;
-      font-size: 20px;
-      margin: 0 8px;
-      cursor: pointer;
-    }
-  }
+:deep(.el-upload.el-upload--picture-card.is-disabled) {
+  display: none !important;
 }
-</style>
+</style>

+ 68 - 98
jd-logistics-ui-v3/src/views/logistics/banner/index.vue

@@ -9,14 +9,14 @@
             @keyup.enter="handleQuery"
         />
       </el-form-item>
-<!--      <el-form-item label="跳转链接" prop="linkUrl">
-        <el-input
-            v-model="queryParams.linkUrl"
-            placeholder="请输入跳转链接"
-            clearable
-            @keyup.enter="handleQuery"
-        />
-      </el-form-item>-->
+      <!--      <el-form-item label="跳转链接" prop="linkUrl">
+              <el-input
+                  v-model="queryParams.linkUrl"
+                  placeholder="请输入跳转链接"
+                  clearable
+                  @keyup.enter="handleQuery"
+              />
+            </el-form-item>-->
       <el-form-item label="状态" prop="isActive">
         <el-select v-model="queryParams.isActive" placeholder="请选择状态" clearable>
           <el-option
@@ -37,22 +37,22 @@
           />
         </el-select>
       </el-form-item>
-<!--      <el-form-item label="部门id" prop="deptId">
-        <el-input
-            v-model="queryParams.deptId"
-            placeholder="请输入部门id"
-            clearable
-            @keyup.enter="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="用户id" prop="userId">
-        <el-input
-            v-model="queryParams.userId"
-            placeholder="请输入用户id"
-            clearable
-            @keyup.enter="handleQuery"
-        />
-      </el-form-item>-->
+      <!--      <el-form-item label="部门id" prop="deptId">
+              <el-input
+                  v-model="queryParams.deptId"
+                  placeholder="请输入部门id"
+                  clearable
+                  @keyup.enter="handleQuery"
+              />
+            </el-form-item>
+            <el-form-item label="用户id" prop="userId">
+              <el-input
+                  v-model="queryParams.userId"
+                  placeholder="请输入用户id"
+                  clearable
+                  @keyup.enter="handleQuery"
+              />
+            </el-form-item>-->
       <el-form-item>
         <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
         <el-button icon="Refresh" @click="resetQuery">重置</el-button>
@@ -89,29 +89,29 @@
             v-hasPermi="['logistics:banner:remove']"
         >删除</el-button>
       </el-col>
-<!--      <el-col :span="1.5">
-        <el-button
-            type="warning"
-            plain
-            icon="Download"
-            @click="handleExport"
-            v-hasPermi="['logistics:banner:export']"
-        >导出</el-button>
-      </el-col>-->
+      <!--      <el-col :span="1.5">
+              <el-button
+                  type="warning"
+                  plain
+                  icon="Download"
+                  @click="handleExport"
+                  v-hasPermi="['logistics:banner:export']"
+              >导出</el-button>
+            </el-col>-->
       <right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar>
     </el-row>
 
     <el-table v-loading="loading" :data="bannerList" @selection-change="handleSelectionChange">
       <el-table-column type="selection" width="55" align="center" />
-<!--      <el-table-column label="轮播图id" align="center" prop="bannerId" />-->
+      <!--      <el-table-column label="轮播图id" align="center" prop="bannerId" />-->
       <el-table-column label="轮播图名称" align="center" prop="bannerName" />
       <el-table-column label="轮播图" align="center" prop="imageUrl" width="100">
         <template #default="scope">
-          <img :src="scope.row.imageBase64 || ''" :width="50" :height="50"/>
+          <image-preview :src="scope.row.imageUrl" :width="50" :height="50"/>
         </template>
       </el-table-column>
       <el-table-column label="跳转链接" align="center" prop="linkUrl"  width="150" :show-overflow-tooltip="true"/>
-<!--      <el-table-column label="排序" align="center" prop="sortOrder" />-->
+      <!--      <el-table-column label="排序" align="center" prop="sortOrder" />-->
       <el-table-column label="状态" align="center" prop="isActive">
         <template #default="scope">
           <dict-tag :options="banner_status" :value="scope.row.isActive"/>
@@ -122,9 +122,9 @@
           <dict-tag :options="banner_sys_type" :value="scope.row.sysType"/>
         </template>
       </el-table-column>
-<!--      <el-table-column label="备注" align="center" prop="remark" />-->
-<!--      <el-table-column label="部门id" align="center" prop="deptId" />-->
-<!--      <el-table-column label="用户id" align="center" prop="userId" />-->
+      <!--      <el-table-column label="备注" align="center" prop="remark" />-->
+      <!--      <el-table-column label="部门id" align="center" prop="deptId" />-->
+      <!--      <el-table-column label="用户id" align="center" prop="userId" />-->
       <el-table-column label="创建时间" align="center" prop="createTime" width="180">
         <template #default="scope">
           <span>{{ parseTime(scope.row.createTime) }}</span>
@@ -153,16 +153,11 @@
           <el-input v-model="form.bannerName" placeholder="请输入轮播图名称" />
         </el-form-item>
         <el-form-item label="轮播图" prop="imageUrl">
-          <image-upload
-              v-model="form.imageUrl"
-              :limit="1"
-              :preview-base64="form.imagePreviewBase64"
-              @update:preview-base64="val => form.imagePreviewBase64 = val"
-          />
+          <image-upload v-model="form.imageUrl" :limit="1"/>
         </el-form-item>
-<!--        <el-form-item label="排序值" prop="sortOrder">
-          <el-input v-model="form.sortOrder" placeholder="请输入排序值" />
-        </el-form-item>-->
+        <!--        <el-form-item label="排序值" prop="sortOrder">
+                  <el-input v-model="form.sortOrder" placeholder="请输入排序值" />
+                </el-form-item>-->
         <el-form-item label="状态" prop="isActive">
           <el-radio-group v-model="form.isActive">
             <el-radio
@@ -182,21 +177,21 @@
           </el-radio-group>
         </el-form-item>
 
-        <el-form-item label="跳转链接" >
+        <el-form-item label="跳转链接">
           <el-input v-model="form.linkUrl" placeholder="请输入跳转链接" />
         </el-form-item>
-<!--        <el-form-item label="备注" prop="remark">
-          <el-input v-model="form.remark" type="textarea" placeholder="请输入内容" />
-        </el-form-item>
-        <el-form-item label="删除标志" prop="delFlag">
-          <el-input v-model="form.delFlag" placeholder="请输入删除标志" />
-        </el-form-item>
-        <el-form-item label="部门id" prop="deptId">
-          <el-input v-model="form.deptId" placeholder="请输入部门id" />
-        </el-form-item>
-        <el-form-item label="用户id" prop="userId">
-          <el-input v-model="form.userId" placeholder="请输入用户id" />
-        </el-form-item>-->
+        <!--        <el-form-item label="备注" prop="remark">
+                  <el-input v-model="form.remark" type="textarea" placeholder="请输入内容" />
+                </el-form-item>
+                <el-form-item label="删除标志" prop="delFlag">
+                  <el-input v-model="form.delFlag" placeholder="请输入删除标志" />
+                </el-form-item>
+                <el-form-item label="部门id" prop="deptId">
+                  <el-input v-model="form.deptId" placeholder="请输入部门id" />
+                </el-form-item>
+                <el-form-item label="用户id" prop="userId">
+                  <el-input v-model="form.userId" placeholder="请输入用户id" />
+                </el-form-item>-->
       </el-form>
       <template #footer>
         <div class="dialog-footer">
@@ -210,7 +205,6 @@
 
 <script setup name="Banner">
 import { listBanner, getBanner, delBanner, addBanner, updateBanner } from "@/api/logistics/banner"
-import { getFileBase64 } from "@/api/file" // 新增:下载接口
 
 const { proxy } = getCurrentInstance()
 const { banner_status, banner_sys_type } = proxy.useDict('banner_status', 'banner_sys_type')
@@ -225,7 +219,6 @@ const multiple = ref(true)
 const total = ref(0)
 const title = ref("")
 
-
 const data = reactive({
   form: {},
   queryParams: {
@@ -261,28 +254,13 @@ const data = reactive({
 const { queryParams, form, rules } = toRefs(data)
 
 /** 查询轮播图列表 */
-/** 查询轮播图列表 */
-async function getList() {
+function getList() {
   loading.value = true
-  const response = await listBanner(queryParams.value)
-  const rows = response.rows
-  // 并发获取每个图片的 base64
-  const promises = rows.map(async (item) => {
-    if (item.imageUrl) {
-      try {
-        const base64 = await getFileBase64(item.imageUrl)
-        item.imageBase64 = base64
-      } catch (error) {
-        console.error('获取图片Base64失败', error)
-        item.imageBase64 = '' // 可设置默认图片
-      }
-    }
-    return item
+  listBanner(queryParams.value).then(response => {
+    bannerList.value = response.rows
+    total.value = response.total
+    loading.value = false
   })
-  await Promise.all(promises)
-  bannerList.value = rows
-  total.value = response.total
-  loading.value = false
 }
 
 // 取消按钮
@@ -297,7 +275,6 @@ function reset() {
     bannerId: null,
     bannerName: null,
     imageUrl: null,
-    imagePreviewBase64: null, // 重置
     linkUrl: null,
     sortOrder: null,
     isActive: null,
@@ -341,23 +318,16 @@ function handleAdd() {
 }
 
 /** 修改按钮操作 */
-async function handleUpdate(row) {
+function handleUpdate(row) {
   reset()
   const _bannerId = row.bannerId || ids.value
-  const response = await getBanner(_bannerId)
-  form.value = response.data
-  // 如果已有图片,获取其 base64 用于预览
-  if (form.value.imageUrl) {
-    try {
-      const base64 = await getFileBase64(form.value.imageUrl)
-      form.value.imagePreviewBase64 = base64
-    } catch (error) {
-      console.error('获取预览图片失败', error)
-    }
-  }
-  open.value = true
-  title.value = "修改轮播图"
+  getBanner(_bannerId).then(response => {
+    form.value = response.data
+    open.value = true
+    title.value = "修改轮播图"
+  })
 }
+
 /** 提交按钮 */
 function submitForm() {
   proxy.$refs["bannerRef"].validate(valid => {

+ 63 - 59
jd-logistics-ui-v3/src/views/logistics/order/index.vue

@@ -355,7 +355,7 @@
               <div class="form-content">
                 <div class="value-services-grid">
                   <!-- 包装服务 -->
-                  <div class="service-item" v-if="form.orderType == '1' || form.orderType == '2'">
+                  <div class="service-item" v-if="form.orderType == '1'">
                     <span class="service-label">包装服务</span>
                     <div class="service-value">
                       <el-switch
@@ -368,7 +368,7 @@
                   </div>
 
                   <!-- 保价 -->
-                  <div class="service-item" v-if="form.orderType == '1'">
+                  <div class="service-item" v-if="form.orderType == '1'|| form.orderType == '2'">
                     <span class="service-label">保价</span>
                     <div class="insurance-wrapper">
                       <el-switch
@@ -398,20 +398,20 @@
                   </div>
 
                   <!-- 超长超重 -->
-                  <div class="service-item">
-                    <span class="service-label">超长超重</span>
-                    <div class="service-value">
-                      <el-switch
-                          v-model="addedServiceData.isOverLongWeight"
-                          size="large"
-                          active-color="#1890ff"
-                          :disabled="isViewMode"
-                      />
-                    </div>
-                  </div>
+<!--                  <div class="service-item">-->
+<!--                    <span class="service-label">超长超重</span>-->
+<!--                    <div class="service-value">-->
+<!--                      <el-switch-->
+<!--                          v-model="addedServiceData.isOverLongWeight"-->
+<!--                          size="large"-->
+<!--                          active-color="#1890ff"-->
+<!--                          :disabled="isViewMode"-->
+<!--                      />-->
+<!--                    </div>-->
+<!--                  </div>-->
 
                   <!-- 签单返还 -->
-                  <div class="service-item" v-if="form.orderType == '1' || form.orderType == '2'">
+                  <div class="service-item" v-if="form.orderType == '1' ">
                     <span class="service-label">签单返还</span>
                     <div class="sign-return-wrapper">
                       <el-switch
@@ -450,17 +450,17 @@
                   </div>
 
                   <!-- 打木架 -->
-                  <div class="service-item" v-if="form.orderType == '2'">
-                    <span class="service-label">打木架</span>
-                    <div class="service-value">
-                      <el-switch
-                          v-model="addedServiceData.isWoodenCrate"
-                          size="large"
-                          active-color="#1890ff"
-                          :disabled="isViewMode"
-                      />
-                    </div>
-                  </div>
+<!--                  <div class="service-item" v-if="form.orderType == '2'">-->
+<!--                    <span class="service-label">打木架</span>-->
+<!--                    <div class="service-value">-->
+<!--                      <el-switch-->
+<!--                          v-model="addedServiceData.isWoodenCrate"-->
+<!--                          size="large"-->
+<!--                          active-color="#1890ff"-->
+<!--                          :disabled="isViewMode"-->
+<!--                      />-->
+<!--                    </div>-->
+<!--                  </div>-->
                 </div>
               </div>
             </div>
@@ -510,22 +510,22 @@
               </div>
               <div v-else>
                 <!-- 费用汇总信息放在表格上方 -->
-                <div class="fee-summary" v-if="deliverFreeData.length > 0">
-                  <el-descriptions :column="4" border>
-                    <el-descriptions-item label="总原始金额">
-                      <span class="summary-amount">{{ formatCurrency(totalOriginalAmount) }}</span> 元
-                    </el-descriptions-item>
-                    <el-descriptions-item label="总费率金额">
-                      <span class="summary-amount">{{ formatCurrency(totalRateAmount) }}</span> 元
-                    </el-descriptions-item>
-                    <el-descriptions-item label="总调整金额">
-                      <span class="summary-amount">{{ formatCurrency(totalAdjustAmount) }}</span> 元
-                    </el-descriptions-item>
-                    <el-descriptions-item label="实际总金额">
-                      <span class="summary-amount total">{{ formatCurrency(actualTotalAmount) }}</span> 元
-                    </el-descriptions-item>
-                  </el-descriptions>
-                </div>
+<!--                <div class="fee-summary" v-if="deliverFreeData.length > 0">-->
+<!--                  <el-descriptions :column="4" border>-->
+<!--                    <el-descriptions-item label="总原始金额">-->
+<!--                      <span class="summary-amount">{{ formatCurrency(totalOriginalAmount) }}</span> 元-->
+<!--                    </el-descriptions-item>-->
+<!--                    <el-descriptions-item label="总费率金额">-->
+<!--                      <span class="summary-amount">{{ formatCurrency(totalRateAmount) }}</span> 元-->
+<!--                    </el-descriptions-item>-->
+<!--                    <el-descriptions-item label="总调整金额">-->
+<!--                      <span class="summary-amount">{{ formatCurrency(totalAdjustAmount) }}</span> 元-->
+<!--                    </el-descriptions-item>-->
+<!--                    <el-descriptions-item label="实际总金额">-->
+<!--                      <span class="summary-amount total">{{ formatCurrency(actualTotalAmount) }}</span> 元-->
+<!--                    </el-descriptions-item>-->
+<!--                  </el-descriptions>-->
+<!--                </div>-->
 
                 <!-- 费用信息表格 -->
                 <el-table
@@ -670,26 +670,30 @@
           </el-tab-pane>
 
           <el-tab-pane label="其他信息" name="other">
-            <el-row :gutter="20">
+
+            <el-form-item label="取消原因" prop="cancelReason">
+              <el-input v-model="form.cancelReason" placeholder="请输入取消原因" type="textarea" :rows="3" />
+            </el-form-item>
+<!--            <el-row :gutter="20">-->
 <!--              <el-col :span="12">-->
 <!--                <el-form-item label="父运单ID" prop="parentWaybillId">-->
 <!--                  <el-input v-model="form.parentWaybillId" placeholder="请输入父运单ID" />-->
 <!--                </el-form-item>-->
 <!--              </el-col>-->
-              <el-col :span="12">
-                <el-form-item label="取消原因" prop="cancelReason">
-                  <el-input v-model="form.cancelReason" placeholder="请输入取消原因" />
-                </el-form-item>
-              </el-col>
-              <el-col :span="12">
-                <el-form-item label="是否结算开票" prop="invoiceFlag">
-                  <el-select v-model="form.invoiceFlag" placeholder="请选择" style="width: 100%">
-                    <el-option label="是" :value="1" />
-                    <el-option label="否" :value="0" />
-                  </el-select>
-                </el-form-item>
-              </el-col>
-            </el-row>
+<!--              <el-col :span="12">-->
+<!--                <el-form-item label="取消原因" prop="cancelReason">-->
+<!--                  <el-input v-model="form.cancelReason" placeholder="请输入取消原因" />-->
+<!--                </el-form-item>-->
+<!--              </el-col>-->
+<!--              <el-col :span="12">-->
+<!--                <el-form-item label="是否结算开票" prop="invoiceFlag">-->
+<!--                  <el-select v-model="form.invoiceFlag" placeholder="请选择" style="width: 100%">-->
+<!--                    <el-option label="是" :value="1" />-->
+<!--                    <el-option label="否" :value="0" />-->
+<!--                  </el-select>-->
+<!--                </el-form-item>-->
+<!--              </el-col>-->
+<!--            </el-row>-->
 
 <!--            <el-row :gutter="20">-->
 <!--              <el-col :span="12">-->
@@ -707,9 +711,9 @@
 <!--              </el-col>-->
 <!--            </el-row>-->
 
-            <el-form-item label="备注" prop="remark">
-              <el-input v-model="form.remark" type="textarea" :rows="3" placeholder="请输入备注" />
-            </el-form-item>
+<!--            <el-form-item label="备注" prop="remark">-->
+<!--              <el-input v-model="form.remark" type="textarea" :rows="3" placeholder="请输入备注" />-->
+<!--            </el-form-item>-->
           </el-tab-pane>
         </el-tabs>
       </el-form>