Prechádzať zdrojové kódy

banner轮播图后台管理调整

Administrator 1 týždeň pred
rodič
commit
7c32376f6f

+ 13 - 13
jd-logistics-modules/jd-logistics-system/src/main/java/com/ruoyi/logistics/controller/BizBannerController.java

@@ -23,10 +23,10 @@ import com.ruoyi.common.core.utils.poi.ExcelUtil;
 import com.ruoyi.common.core.web.page.TableDataInfo;
 
 /**
- * 系统轮播图Controller
+ * 轮播图Controller
  * 
  * @author RuiJing
- * @date 2026-01-29
+ * @date 2026-02-05
  */
 @RestController
 @RequestMapping("/banner")
@@ -36,7 +36,7 @@ public class BizBannerController extends BaseController
     private IBizBannerService bizBannerService;
 
     /**
-     * 查询系统轮播图列表
+     * 查询轮播图列表
      */
     @RequiresPermissions("system:banner:list")
     @GetMapping("/list")
@@ -48,20 +48,20 @@ public class BizBannerController extends BaseController
     }
 
     /**
-     * 导出系统轮播图列表
+     * 导出轮播图列表
      */
     @RequiresPermissions("system:banner:export")
-    @Log(title = "系统轮播图", businessType = BusinessType.EXPORT)
+    @Log(title = "轮播图", businessType = BusinessType.EXPORT)
     @PostMapping("/export")
     public void export(HttpServletResponse response, BizBanner bizBanner)
     {
         List<BizBanner> list = bizBannerService.selectBizBannerList(bizBanner);
         ExcelUtil<BizBanner> util = new ExcelUtil<BizBanner>(BizBanner.class);
-        util.exportExcel(response, list, "系统轮播图数据");
+        util.exportExcel(response, list, "轮播图数据");
     }
 
     /**
-     * 获取系统轮播图详细信息
+     * 获取轮播图详细信息
      */
     @RequiresPermissions("system:banner:query")
     @GetMapping(value = "/{bannerId}")
@@ -71,10 +71,10 @@ public class BizBannerController extends BaseController
     }
 
     /**
-     * 新增系统轮播图
+     * 新增轮播图
      */
     @RequiresPermissions("system:banner:add")
-    @Log(title = "系统轮播图", businessType = BusinessType.INSERT)
+    @Log(title = "轮播图", businessType = BusinessType.INSERT)
     @PostMapping
     public AjaxResult add(@RequestBody BizBanner bizBanner)
     {
@@ -82,10 +82,10 @@ public class BizBannerController extends BaseController
     }
 
     /**
-     * 修改系统轮播图
+     * 修改轮播图
      */
     @RequiresPermissions("system:banner:edit")
-    @Log(title = "系统轮播图", businessType = BusinessType.UPDATE)
+    @Log(title = "轮播图", businessType = BusinessType.UPDATE)
     @PutMapping
     public AjaxResult edit(@RequestBody BizBanner bizBanner)
     {
@@ -93,10 +93,10 @@ public class BizBannerController extends BaseController
     }
 
     /**
-     * 删除系统轮播图
+     * 删除轮播图
      */
     @RequiresPermissions("system:banner:remove")
-    @Log(title = "系统轮播图", businessType = BusinessType.DELETE)
+    @Log(title = "轮播图", businessType = BusinessType.DELETE)
 	@DeleteMapping("/{bannerIds}")
     public AjaxResult remove(@PathVariable Long[] bannerIds)
     {

+ 10 - 10
jd-logistics-modules/jd-logistics-system/src/main/java/com/ruoyi/logistics/domain/BizBanner.java

@@ -6,10 +6,10 @@ import com.ruoyi.common.core.annotation.Excel;
 import com.ruoyi.common.core.web.domain.BaseEntity;
 
 /**
- * 系统轮播图对象 biz_banner
+ * 轮播图对象 biz_banner
  * 
  * @author RuiJing
- * @date 2026-01-29
+ * @date 2026-02-05
  */
 public class BizBanner extends BaseEntity
 {
@@ -22,24 +22,24 @@ public class BizBanner extends BaseEntity
     @Excel(name = "轮播图名称")
     private String bannerName;
 
-    /** 图片存储路径 */
-    @Excel(name = "图片存储路径")
+    /** 图片路径 */
+    @Excel(name = "图片路径")
     private String imageUrl;
 
-    /** 点击图片时跳转链接 */
-    @Excel(name = "点击图片时跳转链接")
+    /** 跳转链接 */
+    @Excel(name = "跳转链接")
     private String linkUrl;
 
     /** 排序值 */
     @Excel(name = "排序值")
     private Long sortOrder;
 
-    /** 是否激活显示 0表示不显示,1表示显示 */
-    @Excel(name = "是否激活显示 0表示不显示,1表示显示")
+    /** 状态(0显示1隐藏) */
+    @Excel(name = "状态", readConverterExp = "0=显示1隐藏")
     private String isActive;
 
-    /** 系统类型 0管理端 1小程序 */
-    @Excel(name = "系统类型 0管理端 1小程序")
+    /** 系统类型(0PC管理、1小程序) */
+    @Excel(name = "系统类型", readConverterExp = "0=PC管理、1小程序")
     private String sysType;
 
     /** 删除标志(0代表存在 2代表删除) */

+ 15 - 15
jd-logistics-modules/jd-logistics-system/src/main/java/com/ruoyi/logistics/mapper/BizBannerMapper.java

@@ -4,55 +4,55 @@ import java.util.List;
 import com.ruoyi.logistics.domain.BizBanner;
 
 /**
- * 系统轮播图Mapper接口
+ * 轮播图Mapper接口
  * 
  * @author RuiJing
- * @date 2026-01-29
+ * @date 2026-02-05
  */
 public interface BizBannerMapper 
 {
     /**
-     * 查询系统轮播图
+     * 查询轮播图
      * 
-     * @param bannerId 系统轮播图主键
-     * @return 系统轮播图
+     * @param bannerId 轮播图主键
+     * @return 轮播图
      */
     public BizBanner selectBizBannerByBannerId(Long bannerId);
 
     /**
-     * 查询系统轮播图列表
+     * 查询轮播图列表
      * 
-     * @param bizBanner 系统轮播图
-     * @return 系统轮播图集合
+     * @param bizBanner 轮播图
+     * @return 轮播图集合
      */
     public List<BizBanner> selectBizBannerList(BizBanner bizBanner);
 
     /**
-     * 新增系统轮播图
+     * 新增轮播图
      * 
-     * @param bizBanner 系统轮播图
+     * @param bizBanner 轮播图
      * @return 结果
      */
     public int insertBizBanner(BizBanner bizBanner);
 
     /**
-     * 修改系统轮播图
+     * 修改轮播图
      * 
-     * @param bizBanner 系统轮播图
+     * @param bizBanner 轮播图
      * @return 结果
      */
     public int updateBizBanner(BizBanner bizBanner);
 
     /**
-     * 删除系统轮播图
+     * 删除轮播图
      * 
-     * @param bannerId 系统轮播图主键
+     * @param bannerId 轮播图主键
      * @return 结果
      */
     public int deleteBizBannerByBannerId(Long bannerId);
 
     /**
-     * 批量删除系统轮播图
+     * 批量删除轮播图
      * 
      * @param bannerIds 需要删除的数据主键集合
      * @return 结果

+ 16 - 16
jd-logistics-modules/jd-logistics-system/src/main/java/com/ruoyi/logistics/service/IBizBannerService.java

@@ -4,57 +4,57 @@ import java.util.List;
 import com.ruoyi.logistics.domain.BizBanner;
 
 /**
- * 系统轮播图Service接口
+ * 轮播图Service接口
  * 
  * @author RuiJing
- * @date 2026-01-29
+ * @date 2026-02-05
  */
 public interface IBizBannerService 
 {
     /**
-     * 查询系统轮播图
+     * 查询轮播图
      * 
-     * @param bannerId 系统轮播图主键
-     * @return 系统轮播图
+     * @param bannerId 轮播图主键
+     * @return 轮播图
      */
     public BizBanner selectBizBannerByBannerId(Long bannerId);
 
     /**
-     * 查询系统轮播图列表
+     * 查询轮播图列表
      * 
-     * @param bizBanner 系统轮播图
-     * @return 系统轮播图集合
+     * @param bizBanner 轮播图
+     * @return 轮播图集合
      */
     public List<BizBanner> selectBizBannerList(BizBanner bizBanner);
 
     /**
-     * 新增系统轮播图
+     * 新增轮播图
      * 
-     * @param bizBanner 系统轮播图
+     * @param bizBanner 轮播图
      * @return 结果
      */
     public int insertBizBanner(BizBanner bizBanner);
 
     /**
-     * 修改系统轮播图
+     * 修改轮播图
      * 
-     * @param bizBanner 系统轮播图
+     * @param bizBanner 轮播图
      * @return 结果
      */
     public int updateBizBanner(BizBanner bizBanner);
 
     /**
-     * 批量删除系统轮播图
+     * 批量删除轮播图
      * 
-     * @param bannerIds 需要删除的系统轮播图主键集合
+     * @param bannerIds 需要删除的轮播图主键集合
      * @return 结果
      */
     public int deleteBizBannerByBannerIds(Long[] bannerIds);
 
     /**
-     * 删除系统轮播图信息
+     * 删除轮播图信息
      * 
-     * @param bannerId 系统轮播图主键
+     * @param bannerId 轮播图主键
      * @return 结果
      */
     public int deleteBizBannerByBannerId(Long bannerId);

+ 21 - 16
jd-logistics-modules/jd-logistics-system/src/main/java/com/ruoyi/logistics/service/impl/BizBannerServiceImpl.java

@@ -2,6 +2,7 @@ package com.ruoyi.logistics.service.impl;
 
 import java.util.List;
 import com.ruoyi.common.core.utils.DateUtils;
+import com.ruoyi.common.security.utils.SecurityUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import com.ruoyi.logistics.mapper.BizBannerMapper;
@@ -9,10 +10,10 @@ import com.ruoyi.logistics.domain.BizBanner;
 import com.ruoyi.logistics.service.IBizBannerService;
 
 /**
- * 系统轮播图Service业务层处理
+ * 轮播图Service业务层处理
  * 
  * @author RuiJing
- * @date 2026-01-29
+ * @date 2026-02-05
  */
 @Service
 public class BizBannerServiceImpl implements IBizBannerService 
@@ -21,10 +22,10 @@ public class BizBannerServiceImpl implements IBizBannerService
     private BizBannerMapper bizBannerMapper;
 
     /**
-     * 查询系统轮播图
+     * 查询轮播图
      * 
-     * @param bannerId 系统轮播图主键
-     * @return 系统轮播图
+     * @param bannerId 轮播图主键
+     * @return 轮播图
      */
     @Override
     public BizBanner selectBizBannerByBannerId(Long bannerId)
@@ -33,10 +34,10 @@ public class BizBannerServiceImpl implements IBizBannerService
     }
 
     /**
-     * 查询系统轮播图列表
+     * 查询轮播图列表
      * 
-     * @param bizBanner 系统轮播图
-     * @return 系统轮播图
+     * @param bizBanner 轮播图
+     * @return 轮播图
      */
     @Override
     public List<BizBanner> selectBizBannerList(BizBanner bizBanner)
@@ -45,35 +46,39 @@ public class BizBannerServiceImpl implements IBizBannerService
     }
 
     /**
-     * 新增系统轮播图
+     * 新增轮播图
      * 
-     * @param bizBanner 系统轮播图
+     * @param bizBanner 轮播图
      * @return 结果
      */
     @Override
     public int insertBizBanner(BizBanner bizBanner)
     {
         bizBanner.setCreateTime(DateUtils.getNowDate());
+        bizBanner.setCreateBy(SecurityUtils.getLoginUser().getSysUser().getNickName());
+        bizBanner.setUserId(SecurityUtils.getUserId());
+        bizBanner.setDeptId(SecurityUtils.getLoginUser().getSysUser().getDeptId());
         return bizBannerMapper.insertBizBanner(bizBanner);
     }
 
     /**
-     * 修改系统轮播图
+     * 修改轮播图
      * 
-     * @param bizBanner 系统轮播图
+     * @param bizBanner 轮播图
      * @return 结果
      */
     @Override
     public int updateBizBanner(BizBanner bizBanner)
     {
         bizBanner.setUpdateTime(DateUtils.getNowDate());
+        bizBanner.setUpdateBy(SecurityUtils.getLoginUser().getSysUser().getNickName());
         return bizBannerMapper.updateBizBanner(bizBanner);
     }
 
     /**
-     * 批量删除系统轮播图
+     * 批量删除轮播图
      * 
-     * @param bannerIds 需要删除的系统轮播图主键
+     * @param bannerIds 需要删除的轮播图主键
      * @return 结果
      */
     @Override
@@ -83,9 +88,9 @@ public class BizBannerServiceImpl implements IBizBannerService
     }
 
     /**
-     * 删除系统轮播图信息
+     * 删除轮播图信息
      * 
-     * @param bannerId 系统轮播图主键
+     * @param bannerId 轮播图主键
      * @return 结果
      */
     @Override

+ 17 - 17
jd-logistics-modules/jd-logistics-system/src/main/resources/mapper/logistics/BizBannerMapper.xml

@@ -4,7 +4,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.ruoyi.logistics.mapper.BizBannerMapper">
     
-    <resultMap type="com.ruoyi.logistics.domain.BizBanner" id="BizBannerResult">
+    <resultMap type="BizBanner" id="BizBannerResult">
         <result property="bannerId"    column="banner_id"    />
         <result property="bannerName"    column="banner_name"    />
         <result property="imageUrl"    column="image_url"    />
@@ -26,18 +26,18 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         select banner_id, banner_name, image_url, link_url, sort_order, is_active, sys_type, remark, del_flag, create_time, update_time, create_by, update_by, dept_id, user_id from biz_banner
     </sql>
 
-    <select id="selectBizBannerList" parameterType="com.ruoyi.logistics.domain.BizBanner" resultMap="BizBannerResult">
+    <select id="selectBizBannerList" parameterType="BizBanner" resultMap="BizBannerResult">
         <include refid="selectBizBannerVo"/>
         <where>  
             <if test="bannerName != null  and bannerName != ''"> and banner_name like concat('%', #{bannerName}, '%')</if>
             <if test="imageUrl != null  and imageUrl != ''"> and image_url = #{imageUrl}</if>
             <if test="linkUrl != null  and linkUrl != ''"> and link_url = #{linkUrl}</if>
-            <if test="sortOrder != null "> and sort_order = #{sortOrder}</if>
             <if test="isActive != null  and isActive != ''"> and is_active = #{isActive}</if>
             <if test="sysType != null  and sysType != ''"> and sys_type = #{sysType}</if>
             <if test="deptId != null "> and dept_id = #{deptId}</if>
             <if test="userId != null "> and user_id = #{userId}</if>
         </where>
+        order by create_time desc
     </select>
     
     <select id="selectBizBannerByBannerId" parameterType="Long" resultMap="BizBannerResult">
@@ -45,15 +45,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         where banner_id = #{bannerId}
     </select>
 
-    <insert id="insertBizBanner" parameterType="com.ruoyi.logistics.domain.BizBanner" useGeneratedKeys="true" keyProperty="bannerId">
+    <insert id="insertBizBanner" parameterType="BizBanner" useGeneratedKeys="true" keyProperty="bannerId">
         insert into biz_banner
         <trim prefix="(" suffix=")" suffixOverrides=",">
-            <if test="bannerName != null">banner_name,</if>
-            <if test="imageUrl != null">image_url,</if>
-            <if test="linkUrl != null">link_url,</if>
+            <if test="bannerName != null and bannerName != ''">banner_name,</if>
+            <if test="imageUrl != null and imageUrl != ''">image_url,</if>
+            <if test="linkUrl != null and linkUrl != ''">link_url,</if>
             <if test="sortOrder != null">sort_order,</if>
             <if test="isActive != null and isActive != ''">is_active,</if>
-            <if test="sysType != null">sys_type,</if>
+            <if test="sysType != null and sysType != ''">sys_type,</if>
             <if test="remark != null">remark,</if>
             <if test="delFlag != null">del_flag,</if>
             <if test="createTime != null">create_time,</if>
@@ -64,12 +64,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="userId != null">user_id,</if>
          </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
-            <if test="bannerName != null">#{bannerName},</if>
-            <if test="imageUrl != null">#{imageUrl},</if>
-            <if test="linkUrl != null">#{linkUrl},</if>
+            <if test="bannerName != null and bannerName != ''">#{bannerName},</if>
+            <if test="imageUrl != null and imageUrl != ''">#{imageUrl},</if>
+            <if test="linkUrl != null and linkUrl != ''">#{linkUrl},</if>
             <if test="sortOrder != null">#{sortOrder},</if>
             <if test="isActive != null and isActive != ''">#{isActive},</if>
-            <if test="sysType != null">#{sysType},</if>
+            <if test="sysType != null and sysType != ''">#{sysType},</if>
             <if test="remark != null">#{remark},</if>
             <if test="delFlag != null">#{delFlag},</if>
             <if test="createTime != null">#{createTime},</if>
@@ -81,15 +81,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
          </trim>
     </insert>
 
-    <update id="updateBizBanner" parameterType="com.ruoyi.logistics.domain.BizBanner">
+    <update id="updateBizBanner" parameterType="BizBanner">
         update biz_banner
         <trim prefix="SET" suffixOverrides=",">
-            <if test="bannerName != null">banner_name = #{bannerName},</if>
-            <if test="imageUrl != null">image_url = #{imageUrl},</if>
-            <if test="linkUrl != null">link_url = #{linkUrl},</if>
+            <if test="bannerName != null and bannerName != ''">banner_name = #{bannerName},</if>
+            <if test="imageUrl != null and imageUrl != ''">image_url = #{imageUrl},</if>
+            <if test="linkUrl != null and linkUrl != ''">link_url = #{linkUrl},</if>
             <if test="sortOrder != null">sort_order = #{sortOrder},</if>
             <if test="isActive != null and isActive != ''">is_active = #{isActive},</if>
-            <if test="sysType != null">sys_type = #{sysType},</if>
+            <if test="sysType != null and sysType != ''">sys_type = #{sysType},</if>
             <if test="remark != null">remark = #{remark},</if>
             <if test="delFlag != null">del_flag = #{delFlag},</if>
             <if test="createTime != null">create_time = #{createTime},</if>

+ 5 - 5
jd-logistics-ui-v3/src/api/logistics/banner.js

@@ -1,6 +1,6 @@
 import request from '@/utils/request'
 
-// 查询系统轮播图列表
+// 查询轮播图列表
 export function listBanner(query) {
   return request({
     url: '/system/banner/list',
@@ -9,7 +9,7 @@ export function listBanner(query) {
   })
 }
 
-// 查询系统轮播图详细
+// 查询轮播图详细
 export function getBanner(bannerId) {
   return request({
     url: '/system/banner/' + bannerId,
@@ -17,7 +17,7 @@ export function getBanner(bannerId) {
   })
 }
 
-// 新增系统轮播图
+// 新增轮播图
 export function addBanner(data) {
   return request({
     url: '/system/banner',
@@ -26,7 +26,7 @@ export function addBanner(data) {
   })
 }
 
-// 修改系统轮播图
+// 修改轮播图
 export function updateBanner(data) {
   return request({
     url: '/system/banner',
@@ -35,7 +35,7 @@ export function updateBanner(data) {
   })
 }
 
-// 删除系统轮播图
+// 删除轮播图
 export function delBanner(bannerId) {
   return request({
     url: '/system/banner/' + bannerId,

+ 151 - 178
jd-logistics-ui-v3/src/views/logistics/banner/index.vue

@@ -1,38 +1,58 @@
 <template>
   <div class="app-container">
-    <el-form :model="queryParams" ref="queryRef" :inline="true" v-show="showSearch" label-width="68px">
-      <el-form-item label="名称" prop="bannerName">
+    <el-form :model="queryParams" ref="queryRef" :inline="true" v-show="showSearch" label-width="100px">
+      <el-form-item label="轮播图名称" prop="bannerName">
         <el-input
-          v-model="queryParams.bannerName"
-          placeholder="请输入名称"
-          clearable
-          @keyup.enter="handleQuery"
+            v-model="queryParams.bannerName"
+            placeholder="请输入轮播图名称"
+            clearable
+            @keyup.enter="handleQuery"
         />
       </el-form-item>
-      <el-form-item label="是否显示" prop="isActive">
-        <el-select
-          v-model="queryParams.isActive"
-          placeholder="请选择是否显示"
-          clearable
-        >
-          <el-option label="是" :value="1" />
-          <el-option label="否" :value="0" />
+<!--      <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
+              v-for="dict in banner_status"
+              :key="dict.value"
+              :label="dict.label"
+              :value="dict.value"
+          />
         </el-select>
       </el-form-item>
       <el-form-item label="系统类型" prop="sysType">
-        <el-select
-          v-model="queryParams.sysType"
-          placeholder="请选择系统类型"
-          clearable
-        >
+        <el-select v-model="queryParams.sysType" placeholder="请选择系统类型" clearable>
           <el-option
-            v-for="dict in banner_sys_type"
-            :key="dict.value"
-            :label="dict.label"
-            :value="dict.value"
+              v-for="dict in banner_sys_type"
+              :key="dict.value"
+              :label="dict.label"
+              :value="dict.value"
           />
         </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>
         <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
         <el-button icon="Refresh" @click="resetQuery">重置</el-button>
@@ -42,132 +62,135 @@
     <el-row :gutter="10" class="mb8">
       <el-col :span="1.5">
         <el-button
-          type="primary"
-          plain
-          icon="Plus"
-          @click="handleAdd"
-          v-hasPermi="['system:banner:add']"
+            type="primary"
+            plain
+            icon="Plus"
+            @click="handleAdd"
+            v-hasPermi="['logistics:banner:add']"
         >新增</el-button>
       </el-col>
       <el-col :span="1.5">
         <el-button
-          type="success"
-          plain
-          icon="Edit"
-          :disabled="single"
-          @click="handleUpdate"
-          v-hasPermi="['system:banner:edit']"
+            type="success"
+            plain
+            icon="Edit"
+            :disabled="single"
+            @click="handleUpdate"
+            v-hasPermi="['logistics:banner:edit']"
         >修改</el-button>
       </el-col>
       <el-col :span="1.5">
         <el-button
-          type="danger"
-          plain
-          icon="Delete"
-          :disabled="multiple"
-          @click="handleDelete"
-          v-hasPermi="['system:banner:remove']"
+            type="danger"
+            plain
+            icon="Delete"
+            :disabled="multiple"
+            @click="handleDelete"
+            v-hasPermi="['logistics:banner:remove']"
         >删除</el-button>
       </el-col>
-      <el-col :span="1.5">
+<!--      <el-col :span="1.5">
         <el-button
-          type="warning"
-          plain
-          icon="Download"
-          @click="handleExport"
-          v-hasPermi="['system:banner:export']"
+            type="warning"
+            plain
+            icon="Download"
+            @click="handleExport"
+            v-hasPermi="['logistics:banner:export']"
         >导出</el-button>
-      </el-col>
+      </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="名称" align="center" prop="bannerName" />
-      <el-table-column label="轮播图" align="center" prop="imageUrl">
+<!--      <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">
-          <el-image
-            :src="scope.row.imageUrl"
-            :preview-src-list="[scope.row.imageUrl]"
-            fit="cover"
-            style="width: 60px; height: 60px; border-radius: 4px;"
-            :z-index="9999"
-          />
+          <image-preview :src="scope.row.imageUrl" :width="50" :height="50"/>
         </template>
       </el-table-column>
-      <el-table-column label="跳转链接" align="center" prop="linkUrl" />
-      <el-table-column label="排序" align="center" prop="sortOrder" />
-      <el-table-column label="是否显示" align="center" prop="isActive">
+      <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="isActive">
         <template #default="scope">
-          <div>{{ scope.row.isActive === "1" ? '是' : '否' }}</div>
+          <dict-tag :options="banner_status" :value="scope.row.isActive"/>
         </template>
       </el-table-column>
       <el-table-column label="系统类型" align="center" prop="sysType">
         <template #default="scope">
-          <dict-tag :options="banner_sys_type" :value="scope.row.sysType" />
+          <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="createTime" width="180">
+        <template #default="scope">
+          <span>{{ parseTime(scope.row.createTime) }}</span>
         </template>
       </el-table-column>
-      <el-table-column label="备注" align="center" prop="remark" />
       <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
         <template #default="scope">
-          <el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)" v-hasPermi="['system:banner:edit']">修改</el-button>
-          <el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)" v-hasPermi="['system:banner:remove']">删除</el-button>
+          <el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)" v-hasPermi="['logistics:banner:edit']">修改</el-button>
+          <el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)" v-hasPermi="['logistics:banner:remove']">删除</el-button>
         </template>
       </el-table-column>
     </el-table>
-    
+
     <pagination
-      v-show="total>0"
-      :total="total"
-      v-model:page="queryParams.pageNum"
-      v-model:limit="queryParams.pageSize"
-      @pagination="getList"
+        v-show="total>0"
+        :total="total"
+        v-model:page="queryParams.pageNum"
+        v-model:limit="queryParams.pageSize"
+        @pagination="getList"
     />
 
-    <!-- 添加或修改系统轮播图对话框 -->
+    <!-- 添加或修改轮播图对话框 -->
     <el-dialog :title="title" v-model="open" width="500px" append-to-body>
-      <el-form ref="bannerRef" :model="form" :rules="rules" label-width="80px">
+      <el-form ref="bannerRef" :model="form" :rules="rules" label-width="120px">
         <el-form-item label="轮播图名称" prop="bannerName">
           <el-input v-model="form.bannerName" placeholder="请输入轮播图名称" />
         </el-form-item>
-        <el-form-item label="上传图片" prop="imageUrl">
-          <el-upload
-            class="avatar-uploader"
-            :action="uploadUrl"
-            :show-file-list="false"
-            :on-success="handleAvatarSuccess"
-            :before-upload="beforeAvatarUpload"
-            :headers="headers"
-          >
-            <img v-if="form.imageUrl" :src="form.imageUrl" class="avatar" />
-            <el-icon v-else class="avatar-uploader-icon"><Plus /></el-icon>
-          </el-upload>
+        <el-form-item label="轮播图" prop="imageUrl">
+          <image-upload v-model="form.imageUrl" :limit="1"/>
         </el-form-item>
-        <el-form-item label="跳转链接" prop="linkUrl">
-          <el-input v-model="form.linkUrl" placeholder="请输入点击图片时跳转链接" />
+        <el-form-item label="跳转链接" prop="linkUrl">
+          <el-input v-model="form.linkUrl" placeholder="请输入跳转链接" />
         </el-form-item>
-        <el-form-item label="排序值" prop="sortOrder">
+<!--        <el-form-item label="排序值" prop="sortOrder">
           <el-input v-model="form.sortOrder" placeholder="请输入排序值" />
-        </el-form-item>
-        <el-form-item label="是否显示" prop="isActive">
-          <el-select v-model="form.isActive" placeholder="请选择是否显示">
-            <el-option label="否" :value="0" />
-            <el-option label="是" :value="1" />
-          </el-select>
+        </el-form-item>-->
+        <el-form-item label="状态" prop="isActive">
+          <el-radio-group v-model="form.isActive">
+            <el-radio
+                v-for="dict in banner_status"
+                :key="dict.value"
+                :label="dict.value"
+            >{{dict.label}}</el-radio>
+          </el-radio-group>
         </el-form-item>
         <el-form-item label="系统类型" prop="sysType">
-          <el-select v-model="form.sysType" placeholder="请选择系统类型">
-            <el-option
-              v-for="dict in banner_sys_type"
-              :key="dict.value"
-              :label="dict.label"
-              :value="dict.value"
-            />
-          </el-select>
+          <el-radio-group v-model="form.sysType">
+            <el-radio
+                v-for="dict in banner_sys_type"
+                :key="dict.value"
+                :label="dict.value"
+            >{{dict.label}}</el-radio>
+          </el-radio-group>
+        </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="备注" prop="remark">
-          <el-input v-model="form.remark" placeholder="请输入备注" />
+        <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">
@@ -181,19 +204,9 @@
 
 <script setup name="Banner">
 import { listBanner, getBanner, delBanner, addBanner, updateBanner } from "@/api/logistics/banner"
-import { Plus } from '@element-plus/icons-vue'
-import { getToken } from "@/utils/auth"
-import DictTag from '@/components/DictTag'
-import { useDict } from '@/utils/dict'
 
 const { proxy } = getCurrentInstance()
-
-// 使用标准字典类型,但不在表单中使用
-const { banner_sys_type } = proxy.useDict("banner_sys_type")
-
-// 定义上传地址和请求头
-const uploadUrl = ref(import.meta.env.VITE_APP_BASE_API + "/file/upload")
-const headers = ref({ Authorization: "Bearer " + getToken() })
+const { banner_status, banner_sys_type } = proxy.useDict('banner_status', 'banner_sys_type')
 
 const bannerList = ref([])
 const open = ref(false)
@@ -211,17 +224,35 @@ const data = reactive({
     pageNum: 1,
     pageSize: 10,
     bannerName: null,
+    imageUrl: null,
+    linkUrl: null,
     isActive: null,
     sysType: null,
     deptId: null,
     userId: null
   },
-  rules: {}
+  rules: {
+    bannerName: [
+      { required: true, message: "轮播图名称不能为空", trigger: "blur" }
+    ],
+    imageUrl: [
+      { required: true, message: "图片路径不能为空", trigger: "blur" }
+    ],
+    linkUrl: [
+      { required: true, message: "跳转链接不能为空", trigger: "blur" }
+    ],
+    isActive: [
+      { required: true, message: "状态不能为空", trigger: "change" }
+    ],
+    sysType: [
+      { required: true, message: "系统类型不能为空", trigger: "change" }
+    ],
+  }
 })
 
 const { queryParams, form, rules } = toRefs(data)
 
-/** 查询系统轮播图列表 */
+/** 查询轮播图列表 */
 function getList() {
   loading.value = true
   listBanner(queryParams.value).then(response => {
@@ -231,31 +262,6 @@ function getList() {
   })
 }
 
-// 图片上传成功后的回调
-function handleAvatarSuccess(res, file) {
-  if(res.code === 200) {
-    // 根据实际返回的数据结构设置图片URL
-    form.value.imageUrl = res.data.url
-  } else {
-    proxy.$message.error('上传失败:' + res.msg)
-  }
-}
-
-// 上传前的校验
-function beforeAvatarUpload(file) {
-  const acceptTypes = ['image/jpeg', 'image/png', 'image/gif']
-  const isAcceptedType = acceptTypes.includes(file.type)
-  const isLt2M = file.size / 1024 / 1024 < 2
-
-  if (!isAcceptedType) {
-    proxy.$message.error('上传图片只能是 JPG/PNG/GIF 格式!')
-  }
-  if (!isLt2M) {
-    proxy.$message.error('上传图片大小不能超过 2MB!')
-  }
-  return isAcceptedType && isLt2M
-}
-
 // 取消按钮
 function cancel() {
   open.value = false
@@ -307,7 +313,7 @@ function handleSelectionChange(selection) {
 function handleAdd() {
   reset()
   open.value = true
-  title.value = "添加系统轮播图"
+  title.value = "添加轮播图"
 }
 
 /** 修改按钮操作 */
@@ -316,12 +322,8 @@ function handleUpdate(row) {
   const _bannerId = row.bannerId || ids.value
   getBanner(_bannerId).then(response => {
     form.value = response.data
-    // 确保isActive字段的值被正确转换为数字类型,以便与选项值匹配
-    if (form.value.isActive !== null && form.value.isActive !== undefined) {
-      form.value.isActive = Number(form.value.isActive)
-    }
     open.value = true
-    title.value = "修改系统轮播图"
+    title.value = "修改轮播图"
   })
 }
 
@@ -349,7 +351,7 @@ function submitForm() {
 /** 删除按钮操作 */
 function handleDelete(row) {
   const _bannerIds = row.bannerId || ids.value
-  proxy.$modal.confirm('是否确认删除系统轮播图编号为"' + _bannerIds + '"的数据项?').then(function() {
+  proxy.$modal.confirm('是否确认删除轮播图编号为"' + _bannerIds + '"的数据项?').then(function() {
     return delBanner(_bannerIds)
   }).then(() => {
     getList()
@@ -359,39 +361,10 @@ function handleDelete(row) {
 
 /** 导出按钮操作 */
 function handleExport() {
-  proxy.download('system/banner/export', {
+  proxy.download('logistics/banner/export', {
     ...queryParams.value
   }, `banner_${new Date().getTime()}.xlsx`)
 }
 
 getList()
 </script>
-
-<style>
-.avatar-uploader .el-upload {
-  border: 1px dashed var(--el-border-color);
-  border-radius: 6px;
-  cursor: pointer;
-  position: relative;
-  overflow: hidden;
-  transition: var(--el-transition-duration-fast);
-}
-
-.avatar-uploader .el-upload:hover {
-  border-color: var(--el-color-primary);
-}
-
-.avatar-uploader-icon {
-  font-size: 28px;
-  color: #8c939d;
-  width: 178px;
-  height: 178px;
-  text-align: center;
-}
-
-.avatar {
-  width: 178px;
-  height: 178px;
-  display: block;
-}
-</style>