Sfoglia il codice sorgente

1、可视化集成至界面管理表smsb_item,type=3
2、调整可视化页面展示,接口地址和按钮权限

lihao16 5 mesi fa
parent
commit
1df5e71491

+ 13 - 14
smsb-modules/smsb-device/src/main/java/com/inspur/device/domain/constants/DeviceTaskConstants.java

@@ -10,40 +10,28 @@ public class DeviceTaskConstants {
 
     /** 设备时序更新 */
     public static final Integer DEVICE_TASK_PLAY_LINE_UPDATE = 1001;
-
     /** 设备重启 */
     public static final Integer DEVICE_TASK_REBOOT = 1002;
-
     /** 设备关机 */
     public static final Integer DEVICE_TASK_SHUTDOWN = 1003;
-
     /** 设备待机 */
     public static final Integer DEVICE_TASK_STANDBY = 1004;
-
     /** 音量调节 */
     public static final Integer DEVICE_TASK_VOICE = 1005;
-
     /** 截屏 */
     public static final Integer DEVICE_TASK_SCREENSHOT = 1006;
-
     /** 开始推流 */
     public static final Integer DEVICE_TASK_STREAM_START = 1007;
-
     /** APP重启 */
     public static final Integer DEVICE_TASK_RESTART_APP = 1008;
-
     /** 亮度调节 */
     public static final Integer DEVICE_TASK_BRIGHTNESS = 1009;
-
     /** 结束推流 */
     public static final Integer DEVICE_TASK_STREAM_STOP = 1010;
-
     /** 电源一键开启 */
     public static final Integer DEVICE_TASK_POWER_ON = 1011;
-
     /** 电源一键关闭 */
     public static final Integer DEVICE_TASK_POWER_OFF = 1012;
-
     /** 电源定时任务 */
     public static final Integer DEVICE_TASK_POWER_SCHEDULE = 1013;
 
@@ -55,9 +43,20 @@ public class DeviceTaskConstants {
     /** 任务执行 */
     public static final Integer DEVICE_TASK_STATUS_EXECUTE = 2002;
 
-
     /** 节目更新 */
-    // 2001任务获取 获取时间线 获取节目单 验证素材 开始下载 下载完成 开始播放 2999任务完成
+    // 2001任务获取 获取时间线 开始素材验证 完成素材验证 开始下载 下载完成 开始播放 2999任务完成
+    /** 获取时间线 */
+    public static final Integer DEVICE_TASK_STATUS_GET_TIME_LINE = 2101;
+    /** 开始验证素材 */
+    public static final Integer DEVICE_TASK_STATUS_BEGIN_VALIDATE_FILE = 2102;
+    /** 完成素材验证 */
+    public static final Integer DEVICE_TASK_STATUS_END_VALIDATE_FILE = 2103;
+    /** 开始下载 */
+    public static final Integer DEVICE_TASK_STATUS_BEGIN_DOWNLOAD_FILE = 2104;
+    /** 完成下载 */
+    public static final Integer DEVICE_TASK_STATUS_END_DOWNLOAD_FILE = 2105;
+    /** 开始播放 */
+    public static final Integer DEVICE_TASK_STATUS_BEGIN_PLAY = 2106;
 
     /** 任务完成 */
     public static final Integer DEVICE_TASK_STATUS_END = 2999;

+ 8 - 8
smsb-modules/smsb-source/src/main/java/com/inspur/source/controller/SmsbItemProgramController.java

@@ -32,7 +32,7 @@ import java.util.List;
 @Validated
 @RequiredArgsConstructor
 @RestController
-@RequestMapping("/system/itemProgram")
+@RequestMapping("/smsb/itemProgram")
 public class SmsbItemProgramController extends BaseController {
 
     private final ISmsbItemProgramService smsbItemProgramService;
@@ -40,7 +40,7 @@ public class SmsbItemProgramController extends BaseController {
     /**
      * 查询节目信息列表
      */
-    @SaCheckPermission("system:itemProgram:list")
+    @SaCheckPermission("smsb:itemProgram:list")
     @GetMapping("/list")
     public TableDataInfo<SmsbItemProgramVo> list(SmsbItemProgramBo bo, PageQuery pageQuery) {
         return smsbItemProgramService.queryPageList(bo, pageQuery);
@@ -49,7 +49,7 @@ public class SmsbItemProgramController extends BaseController {
     /**
      * 导出节目信息列表
      */
-    @SaCheckPermission("system:itemProgram:export")
+    @SaCheckPermission("smsb:itemProgram:export")
     @Log(title = "节目信息", businessType = BusinessType.EXPORT)
     @PostMapping("/export")
     public void export(SmsbItemProgramBo bo, HttpServletResponse response) {
@@ -62,7 +62,7 @@ public class SmsbItemProgramController extends BaseController {
      *
      * @param id 主键
      */
-    @SaCheckPermission("system:itemProgram:query")
+    @SaCheckPermission("smsb:itemProgram:query")
     @GetMapping("/{id}")
     public R<SmsbItemProgramVo> getInfo(@NotNull(message = "主键不能为空")
                                      @PathVariable Long id) {
@@ -72,7 +72,7 @@ public class SmsbItemProgramController extends BaseController {
     /**
      * 新增节目信息
      */
-    @SaCheckPermission("system:itemProgram:add")
+    @SaCheckPermission("smsb:itemProgram:add")
     @Log(title = "节目信息", businessType = BusinessType.INSERT)
     @RepeatSubmit()
     @PostMapping()
@@ -83,7 +83,7 @@ public class SmsbItemProgramController extends BaseController {
     /**
      * 修改节目信息
      */
-    @SaCheckPermission("system:itemProgram:edit")
+    @SaCheckPermission("smsb:itemProgram:edit")
     @Log(title = "节目信息", businessType = BusinessType.UPDATE)
     @RepeatSubmit()
     @PutMapping()
@@ -94,7 +94,7 @@ public class SmsbItemProgramController extends BaseController {
     /**
      * 修改节目名称
      */
-    @SaCheckPermission("system:itemProgram:edit")
+    @SaCheckPermission("smsb:itemProgram:edit")
     @Log(title = "节目信息", businessType = BusinessType.UPDATE)
     @RepeatSubmit()
     @PutMapping("/editName")
@@ -107,7 +107,7 @@ public class SmsbItemProgramController extends BaseController {
      *
      * @param ids 主键串
      */
-    @SaCheckPermission("system:itemProgram:remove")
+    @SaCheckPermission("smsb:itemProgram:remove")
     @Log(title = "节目信息", businessType = BusinessType.DELETE)
     @DeleteMapping("/{ids}")
     public R<Void> remove(@NotEmpty(message = "主键不能为空")

+ 4 - 1
smsb-modules/smsb-source/src/main/java/com/inspur/source/domain/SmsbItem.java

@@ -34,7 +34,7 @@ public class SmsbItem extends TenantEntity {
     private String itemName;
 
     /**
-     * 类型 1-轮播组 2-节目组
+     * 类型 1-轮播组 2-节目组 3-可视化
      */
     private Integer itemType;
 
@@ -58,5 +58,8 @@ public class SmsbItem extends TenantEntity {
      */
     private Integer delFlag;
 
+    /** 可视化ID */
+    private Long programId;
+
 
 }

+ 3 - 0
smsb-modules/smsb-source/src/main/java/com/inspur/source/domain/bo/SmsbItemBo.java

@@ -101,5 +101,8 @@ public class SmsbItemBo extends BaseEntity {
      */
     private Long hasTime;
 
+    /** 可视化ID */
+    private Long programId;
+
 
 }

+ 7 - 1
smsb-modules/smsb-source/src/main/java/com/inspur/source/domain/vo/SmsbItemProgramVo.java

@@ -8,6 +8,7 @@ import lombok.Data;
 
 import java.io.Serial;
 import java.io.Serializable;
+import java.util.Date;
 
 /**
  * 节目信息视图对象 smsb_item_program
@@ -86,6 +87,11 @@ public class SmsbItemProgramVo implements Serializable {
     /**
      * 删除标志
      */
-    private Integer delFlag; // 0: 正常, 1: 删除
+    // 0: 正常, 1: 删除
+    private Integer delFlag;
+
+    private Date createTime;
+
+    private Date updateTime;
 
 }

+ 3 - 0
smsb-modules/smsb-source/src/main/java/com/inspur/source/domain/vo/SmsbItemVo.java

@@ -76,4 +76,7 @@ public class SmsbItemVo implements Serializable {
     @ExcelProperty(value = "资源ID列表")
     private List<Long> fileIdList;
 
+    /** 可视化ID */
+    private Long programId;
+
 }

+ 8 - 0
smsb-modules/smsb-source/src/main/java/com/inspur/source/mapper/SmsbItemMapper.java

@@ -6,6 +6,7 @@ import com.inspur.source.domain.vo.*;
 import org.apache.ibatis.annotations.Param;
 import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
 
+import java.util.Collection;
 import java.util.List;
 
 /**
@@ -38,4 +39,11 @@ public interface SmsbItemMapper extends BaseMapperPlus<SmsbItem, SmsbItemVo> {
     List<SmsbItemPushVo> selectRunItemPushVoById(@Param("itemId") Long itemId);
 
     List<EditHistoryVo> selectEditHistory(@Param("id") String id);
+
+    /**
+     * 根据可视化ID,更新del_flag
+     * @param delFlag
+     * @param programIds
+     */
+    void updateDelByProgramIds(@Param("delFlag") Integer delFlag, @Param("programIds") List<Long> programIds);
 }

+ 18 - 3
smsb-modules/smsb-source/src/main/java/com/inspur/source/service/impl/SmsbItemProgramServiceImpl.java

@@ -3,9 +3,11 @@ package com.inspur.source.service.impl;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.inspur.source.domain.SmsbItem;
 import com.inspur.source.domain.SmsbItemProgram;
 import com.inspur.source.domain.bo.SmsbItemProgramBo;
 import com.inspur.source.domain.vo.SmsbItemProgramVo;
+import com.inspur.source.mapper.SmsbItemMapper;
 import com.inspur.source.mapper.SmsbItemProgramMapper;
 import com.inspur.source.service.ISmsbItemProgramService;
 import lombok.RequiredArgsConstructor;
@@ -13,6 +15,7 @@ import org.dromara.common.core.utils.MapstructUtils;
 import org.dromara.common.core.utils.StringUtils;
 import org.dromara.common.mybatis.core.page.PageQuery;
 import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.satoken.utils.LoginHelper;
 import org.springframework.stereotype.Service;
 
 import java.util.Collection;
@@ -31,6 +34,8 @@ public class SmsbItemProgramServiceImpl implements ISmsbItemProgramService {
 
     private final SmsbItemProgramMapper baseMapper;
 
+    private final SmsbItemMapper smsbItemMapper;
+
     /**
      * 查询节目信息
      *
@@ -98,6 +103,16 @@ public class SmsbItemProgramServiceImpl implements ISmsbItemProgramService {
         if (flag) {
             bo.setId(add.getId());
         }
+        // 同时向smsb_item表插入一天type = 3
+        SmsbItem smsbItem = new SmsbItem();
+        smsbItem.setItemType(3);
+        smsbItem.setItemName(add.getName());
+        smsbItem.setDelFlag(0);
+        smsbItem.setSplitScreen(0L);
+        smsbItem.setSourceNum(0);
+        smsbItem.setProgramId(add.getId());
+        smsbItem.setCreateUser(LoginHelper.getLoginUser().getNickname());
+        smsbItemMapper.insert(smsbItem);
         return flag;
     }
 
@@ -141,9 +156,9 @@ public class SmsbItemProgramServiceImpl implements ISmsbItemProgramService {
      */
     @Override
     public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
-        if(isValid){
-            //TODO 做一些业务上的校验,判断是否需要校验
-        }
+        // 先更新smsb_item 表中的del_flag
+        smsbItemMapper.updateDelByProgramIds(1,(List<Long>) ids);
+        // 数据删除
         return baseMapper.logicDeleteByIds((List<Long>) ids) > 0;
     }
 }

+ 1 - 1
smsb-modules/smsb-source/src/main/java/com/inspur/source/service/impl/SmsbItemServiceImpl.java

@@ -177,7 +177,7 @@ public class SmsbItemServiceImpl implements ISmsbItemService {
         SmsbItem add = MapstructUtils.convert(bo, SmsbItem.class);
         validEntityBeforeSave(add);
         add.setSourceNum(CollectionUtil.isEmpty(bo.getSelectedFiles()) ? 0 : bo.getSelectedFiles().size());
-        add.setCreateUser(LoginHelper.getUsername());
+        add.setCreateUser(LoginHelper.getLoginUser().getNickname());
         add.setDelFlag(0);
         boolean flag = baseMapper.insert(add) > 0;
         if (!flag) {

+ 9 - 2
smsb-modules/smsb-source/src/main/resources/mapper/SmsbItemMapper.xml

@@ -7,7 +7,7 @@
         select count(1)                                                  as totalNum,
                IFNULL(SUM(CASE WHEN item_type = 1 THEN 1 ELSE 0 END), 0) AS lbNum,
                IFNULL(SUM(CASE WHEN item_type = 2 THEN 1 ELSE 0 END), 0) AS jmNum
-        from smsb_item
+        from smsb_item where del_flag = 0
     </select>
 
     <select id="selectListByFileId" parameterType="Long" resultType="com.inspur.source.domain.vo.SmsbItemVo">
@@ -28,7 +28,7 @@
         from smsb_item_push sip
         INNER JOIN smsb_item_push_rel sipr on sip.id = sipr.push_id
         WHERE
-            sipr.item_id = #{itemId} and sip.status = 'waiting'
+            sipr.item_id = #{itemId} and sip.status = 'waiting' and del_flag = 0
     </select>
 
     <select id="selectEditHistory" resultType="com.inspur.source.domain.vo.EditHistoryVo">
@@ -39,4 +39,11 @@
         GROUP BY oper_name, oper_param
         ORDER BY oper_time;
     </select>
+
+    <update id="updateDelByProgramIds">
+        update smsb_item set del_flag = #{delFlag} where program_id in
+        <foreach collection="programIds" item="programId" open="(" separator="," close=")">
+            #{programId}
+        </foreach>
+    </update>
 </mapper>

+ 6 - 6
smsb-plus-ui/src/api/smsb/source/item_program.ts

@@ -24,7 +24,7 @@ export function getAssetUrl(keyName: string): string {
 
 export const listItemProgram = (query?: ItemProgramQuery): AxiosPromise<ItemProgramVO[]> => {
   return request({
-    url: '/system/itemProgram/list',
+    url: '/smsb/itemProgram/list',
     method: 'get',
     params: query
   });
@@ -36,7 +36,7 @@ export const listItemProgram = (query?: ItemProgramQuery): AxiosPromise<ItemProg
  */
 export const getItemProgram = (id: string | number): AxiosPromise<ItemProgramVO> => {
   return request({
-    url: '/system/itemProgram/' + id,
+    url: '/smsb/itemProgram/' + id,
     method: 'get'
   });
 };
@@ -47,7 +47,7 @@ export const getItemProgram = (id: string | number): AxiosPromise<ItemProgramVO>
  */
 export const addItemProgram = (data: ItemProgramForm) => {
   return request({
-    url: '/system/itemProgram',
+    url: '/smsb/itemProgram',
     method: 'post',
     data: data
   });
@@ -59,7 +59,7 @@ export const addItemProgram = (data: ItemProgramForm) => {
  */
 export const updateItemProgram = (data: ItemProgramForm) => {
   return request({
-    url: '/system/itemProgram',
+    url: '/smsb/itemProgram',
     method: 'put',
     data: data
   });
@@ -71,7 +71,7 @@ export const updateItemProgram = (data: ItemProgramForm) => {
  */
 export const delItemProgram = (id: string | number | Array<string | number>) => {
   return request({
-    url: '/system/itemProgram/' + id,
+    url: '/smsb/itemProgram/' + id,
     method: 'delete'
   });
 };
@@ -84,7 +84,7 @@ export const delItemProgram = (id: string | number | Array<string | number>) =>
  */
 export const editProgramName = (id: number|string, name: string) => {
   return request({
-    url: '/system/itemProgram/editName',
+    url: '/smsb/itemProgram/editName',
     method: 'put',
     params: { id, name }
   });

+ 9 - 9
smsb-plus-ui/src/views/smsb/item/index.vue

@@ -37,11 +37,11 @@
               <el-input v-model="queryParams.itemName" style="width: 150px" placeholder="请输入名称" clearable
                 @keyup.enter="handleQuery" />
             </el-form-item>
-            <el-form-item label="类型" prop="itemType">
+<!--            <el-form-item label="类型" prop="itemType">
               <el-select v-model="queryParams.itemType" style="width: 150px" placeholder="请选择类型" clearable>
                 <el-option v-for="dict in smsb_item_type" :key="dict.value" :label="dict.label" :value="dict.value" />
               </el-select>
-            </el-form-item>
+            </el-form-item>-->
             <el-form-item label="时间" style="width: 250px">
               <el-date-picker v-model="dateRangeCreateTime" value-format="YYYY-MM-DD HH:mm:ss" type="daterange"
                 range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期"
@@ -52,8 +52,8 @@
               <el-button icon="Refresh" @click="resetQuery">重置</el-button>
               <el-button type="primary" plain icon="Plus" @click="handleAddL" v-hasPermi="['source:item:add']"> 新增轮播组
               </el-button>
-              <el-button type="primary" plain icon="Plus" @click="handleAddJ" v-hasPermi="['source:item:add']"> 新增分屏组
-              </el-button>
+<!--              <el-button type="primary" plain icon="Plus" @click="handleAddJ" v-hasPermi="['source:item:add']"> 新增分屏组
+              </el-button>-->
               <el-button type="success" plain icon="Edit" :disabled="single" @click="handleUpdate()"
                 v-hasPermi="['source:item:edit']">修改
               </el-button>
@@ -80,12 +80,12 @@
               <dict-tag :options="smsb_item_type" :value="scope.row.itemType" />
             </template>
           </el-table-column>
-          <el-table-column label="分屏" align="center" prop="splitScreen" width="120">
+<!--          <el-table-column label="分屏" align="center" prop="splitScreen" width="120">
             <template #default="scope">
-              <span v-if="scope.row.splitScreen == 0"> --- </span>
+              <span v-if="scope.row.splitScreen == 0"> -&#45;&#45; </span>
               <dict-tag v-else :options="smsb_split_screen" :value="scope.row.splitScreen" />
             </template>
-          </el-table-column>
+          </el-table-column>-->
           <el-table-column label="资源数量" align="center" prop="sourceNum" width="100" />
           <el-table-column label="创建人" align="left" prop="createUser" width="120" :show-overflow-tooltip="true" />
           <el-table-column label="创建时间" align="left" prop="createTime" width="160" />
@@ -164,7 +164,7 @@
                 <el-tooltip effect="dark" :content="element.name" placement="top">
                   <span style="
                       flex: 1;
-                      max-width: 410px;
+                      max-width: 380px;
                       overflow: hidden;
                       text-overflow: ellipsis;
                       white-space: nowrap;
@@ -502,7 +502,7 @@ const queryParams = ref({
   pageNum: 1,
   pageSize: 10,
   itemName: undefined,
-  itemType: undefined,
+  itemType: 1,
   splitScreen: undefined,
   createUser: undefined,
   params: {}

+ 76 - 65
smsb-plus-ui/src/views/smsb/itemProgram/index.vue

@@ -3,17 +3,17 @@
     <transition :enter-active-class="proxy?.animate.searchAnimate.enter"
       :leave-active-class="proxy?.animate.searchAnimate.leave">
       <div v-show="showSearch" class="mb-[10px]">
-        <el-card shadow="hover">
+        <el-card shadow="hover" :style="{ marginTop: '10px', height: '60px' }">
           <el-form ref="queryFormRef" :model="queryParams" :inline="true">
             <!-- <el-form-item label="节目ID" prop="programId">
               <el-input v-model="queryParams.programId" placeholder="请输入节目ID" clearable @keyup.enter="handleQuery" />
             </el-form-item> -->
             <el-form-item label="节目名称" prop="name">
-              <el-input v-model="queryParams.name" placeholder="请输入节目名称" clearable @keyup.enter="handleQuery" />
+              <el-input v-model="queryParams.name" placeholder="请输入节目名称" clearable @keyup.enter="handleQuery"/>
             </el-form-item>
             <el-form-item label="分辨率" prop="resolutionRatio">
               <el-input v-model="queryParams.resolutionRatio" placeholder="请输入分辨率" clearable
-                @keyup.enter="handleQuery" />
+                        @keyup.enter="handleQuery"/>
             </el-form-item>
             <!-- <el-form-item label="图片地址" prop="imgUrl">
               <el-input v-model="queryParams.imgUrl" placeholder="请输入图片地址" clearable @keyup.enter="handleQuery" />
@@ -21,12 +21,21 @@
             <!-- <el-form-item label="节目时长" prop="duration">
               <el-input v-model="queryParams.duration" placeholder="请输入节目时长" clearable @keyup.enter="handleQuery" />
             </el-form-item> -->
-            <el-form-item label="所属个人" prop="user">
-              <el-input v-model="queryParams.user" placeholder="请输入所属个人" clearable @keyup.enter="handleQuery" />
-            </el-form-item>
+            <!--            <el-form-item label="所属个人" prop="user">
+                          <el-input v-model="queryParams.user" placeholder="请输入所属个人" 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>
+              <el-button type="primary" plain icon="Plus" @click="handleAdd"
+                         v-hasPermi="['smsb:itemProgram:add']">新增
+              </el-button>
+              <el-button type="success" plain icon="Edit" :disabled="single" @click="handleUpdate()"
+                         v-hasPermi="['smsb:itemProgram:edit']">修改
+              </el-button>
+              <el-button type="danger" plain icon="Delete" :disabled="multiple" @click="handleDelete()"
+                         v-hasPermi="['smsb:itemProgram:remove']">删除
+              </el-button>
             </el-form-item>
           </el-form>
         </el-card>
@@ -34,58 +43,60 @@
     </transition>
 
     <el-card shadow="never">
-      <template #header>
-        <el-row :gutter="10" class="mb8">
-          <el-col :span="1.5">
-            <el-button type="primary" plain icon="Plus" @click="handleAdd"
-              v-hasPermi="['system:itemProgram:add']">新增</el-button>
-          </el-col>
-          <el-col :span="1.5">
-            <el-button type="success" plain icon="Edit" :disabled="single" @click="handleUpdate()"
-              v-hasPermi="['system:itemProgram:edit']">修改</el-button>
-          </el-col>
-          <el-col :span="1.5">
-            <el-button type="danger" plain icon="Delete" :disabled="multiple" @click="handleDelete()"
-              v-hasPermi="['system:itemProgram:remove']">删除</el-button>
-          </el-col>
-          <el-col :span="1.5">
-            <el-button type="warning" plain icon="Download" @click="handleExport"
-              v-hasPermi="['system:itemProgram:export']">导出</el-button>
-          </el-col>
-          <right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar>
-        </el-row>
-      </template>
-
-      <el-table v-loading="loading" :data="itemProgramList" @selection-change="handleSelectionChange">
-        <el-table-column type="selection" width="55" align="center" />
-        <el-table-column label="节目ID" align="center" prop="programId" />
-        <el-table-column label="节目名称" align="center" prop="name" />
-        <el-table-column label="分辨率" align="center" prop="resolutionRatio" />
-        <!-- <el-table-column label="图片地址" align="center" prop="imgUrl" /> -->
-        <!-- <el-table-column label="状态" align="center" prop="status" /> -->
-        <!-- <el-table-column label="节目时长" align="center" prop="duration" /> -->
-        <el-table-column label="所属个人" align="center">
-          <template #default="scope">
-            <span>{{ userNickNameMap[scope.row.user] || scope.row.user || '-' }}</span>
-          </template>
-        </el-table-column>
-        <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
-          <template #default="scope">
-            <el-tooltip content="修改" placement="top">
-              <el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)"
-                v-hasPermi="['system:itemProgram:edit']"></el-button>
-            </el-tooltip>
-            <el-tooltip content="删除" placement="top">
-              <el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)"
-                v-hasPermi="['system:itemProgram:remove']"></el-button>
-            </el-tooltip>
-            <el-tooltip content="预览" placement="top">
-              <el-button link type="primary" icon="View" @click="handlePreview(scope.row)"></el-button>
-            </el-tooltip>
-          </template>
-        </el-table-column>
-      </el-table>
-
+      <!--      <template #header>
+              <el-row :gutter="10" class="mb8">
+                <el-col :span="1.5">
+                  <el-button type="primary" plain icon="Plus" @click="handleAdd"
+                    v-hasPermi="['smsb:itemProgram:add']">新增</el-button>
+                </el-col>
+                <el-col :span="1.5">
+                  <el-button type="success" plain icon="Edit" :disabled="single" @click="handleUpdate()"
+                    v-hasPermi="['smsb:itemProgram:edit']">修改</el-button>
+                </el-col>
+                <el-col :span="1.5">
+                  <el-button type="danger" plain icon="Delete" :disabled="multiple" @click="handleDelete()"
+                    v-hasPermi="['smsb:itemProgram:remove']">删除</el-button>
+                </el-col>
+                <el-col :span="1.5">
+                  <el-button type="warning" plain icon="Download" @click="handleExport"
+                    v-hasPermi="['smsb:itemProgram:export']">导出</el-button>
+                </el-col>
+                <right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar>
+              </el-row>
+            </template>-->
+      <div class="table-content">
+        <el-table v-loading="loading" :data="itemProgramList" @selection-change="handleSelectionChange">
+          <el-table-column type="selection" width="55" align="center"/>
+          <el-table-column label="ID" align="left" prop="id" width="180"/>
+          <el-table-column label="节目名称" align="left" prop="name" :show-overflow-tooltip="true"/>
+          <el-table-column label="分辨率" align="center" prop="resolutionRatio" width="150"/>
+          <!-- <el-table-column label="图片地址" align="center" prop="imgUrl" /> -->
+          <!-- <el-table-column label="状态" align="center" prop="status" /> -->
+          <!-- <el-table-column label="节目时长" align="center" prop="duration" /> -->
+          <el-table-column label="创建用户" align="center" width="150">
+            <template #default="scope">
+              <span>{{ userNickNameMap[scope.row.user] || scope.row.user || '-' }}</span>
+            </template>
+          </el-table-column>
+          <el-table-column label="创建时间" align="left" prop="createTime" width="180"/>
+          <el-table-column label="更新时间" align="left" prop="updateTime" width="180"/>
+          <el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="150">
+            <template #default="scope">
+              <el-tooltip content="修改" placement="top">
+                <el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)"
+                           v-hasPermi="['smsb:itemProgram:edit']"></el-button>
+              </el-tooltip>
+              <el-tooltip content="删除" placement="top">
+                <el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)"
+                           v-hasPermi="['smsb:itemProgram:remove']"></el-button>
+              </el-tooltip>
+              <el-tooltip content="预览" placement="top">
+                <el-button link type="primary" icon="View" @click="handlePreview(scope.row)"></el-button>
+              </el-tooltip>
+            </template>
+          </el-table-column>
+        </el-table>
+      </div>
       <pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum"
         v-model:limit="queryParams.pageSize" @pagination="getList" />
     </el-card>
@@ -119,14 +130,14 @@
 </template>
 
 <script setup name="ItemProgram" lang="ts">
-import { listItemProgram, getItemProgram, delItemProgram, addItemProgram, updateItemProgram } from '@/api/smsb/source/item_program';
-import { getUser, optionSelect, UserVO } from '@/api/system/user';
-import { useUserStore } from '@/store/modules/user';
-import { ItemProgramVO, ItemProgramQuery, ItemProgramForm } from '@/api/smsb/source/item_program_type';
-import { useRouter } from 'vue-router';
-import { getCurrentInstance, reactive, toRefs } from 'vue';
+import {addItemProgram, delItemProgram, listItemProgram, updateItemProgram} from '@/api/smsb/source/item_program';
+import {optionSelect, UserVO} from '@/api/system/user';
+import {useUserStore} from '@/store/modules/user';
+import {ItemProgramForm, ItemProgramQuery, ItemProgramVO} from '@/api/smsb/source/item_program_type';
+import {useRouter} from 'vue-router';
+import {getCurrentInstance, reactive, toRefs} from 'vue';
 
-const { proxy } = getCurrentInstance() as ComponentInternalInstance;
+const {proxy} = getCurrentInstance() as ComponentInternalInstance;
 const router = useRouter();
 
 const itemProgramList = ref<ItemProgramVO[]>([]);