Browse Source

1、页面显示优化 增加弹窗默认值,调整table宽度
2、http携带设备状态数据入库
3、内容发布增加一级缓存

lihao16 6 months ago
parent
commit
75b146f84e

+ 5 - 0
smsb-modules/smsb-device/src/main/java/com/inspur/device/domain/SmsbDeviceManufacturer.java

@@ -47,5 +47,10 @@ public class SmsbDeviceManufacturer extends TenantEntity {
      */
     private String deviceModel;
 
+    /**
+     * 备注
+     */
+    private String remark;
+
 
 }

+ 4 - 1
smsb-modules/smsb-device/src/main/java/com/inspur/device/domain/bo/SmsbDeviceManufacturerBo.java

@@ -50,5 +50,8 @@ public class SmsbDeviceManufacturerBo extends BaseEntity {
     @NotNull(message = "设备型号", groups = { AddGroup.class, EditGroup.class })
     private String deviceModel;
 
-
+    /**
+     * 备注
+     */
+    private String remark;
 }

+ 4 - 1
smsb-modules/smsb-device/src/main/java/com/inspur/device/domain/vo/SmsbDeviceManufacturerVo.java

@@ -64,5 +64,8 @@ public class SmsbDeviceManufacturerVo implements Serializable {
     @ExcelProperty(value = "创建时间")
     private Date createTime;
 
-
+    /**
+     * 备注
+     */
+    private String remark;
 }

+ 13 - 0
smsb-modules/smsb-device/src/main/java/com/inspur/device/service/impl/SmsbDeviceServiceImpl.java

@@ -37,6 +37,7 @@ import org.dromara.common.sse.dto.SseMessageContentDto;
 import org.dromara.common.sse.dto.SseMessageContentTypeDto;
 import org.dromara.common.sse.dto.SseMessageDto;
 import org.dromara.common.sse.utils.SseMessageUtils;
+import org.springframework.beans.BeanUtils;
 import org.springframework.cache.annotation.CacheEvict;
 import org.springframework.cache.annotation.CachePut;
 import org.springframework.cache.annotation.Cacheable;
@@ -401,6 +402,18 @@ public class SmsbDeviceServiceImpl implements ISmsbDeviceService {
             smsbDeviceHeartRecord.setTimeInterval(0L);
         }
         smsbDeviceHeartRecordMapper.insert(smsbDeviceHeartRecord);
+        // 5 记录设备状态
+        SmsbDeviceRunInfo deviceRunInfo = new SmsbDeviceRunInfo();
+        BeanUtils.copyProperties(requestParam, deviceRunInfo);
+        deviceRunInfo.setDeviceId(smsbDeviceVo.getId());
+        deviceRunInfo.setTenantId(smsbDeviceVo.getTenantId());
+        deviceRunInfo.setBright(requestParam.getBright().longValue());
+        deviceRunInfo.setVolume(requestParam.getVolume().longValue());
+        deviceRunInfo.setExternalMemoryTotal(requestParam.getExternalMemoryTotal().toString());
+        deviceRunInfo.setExternalMemoryUsage(requestParam.getExternalMemoryUsage().toString());
+        deviceRunInfo.setRamTotalOfByte(requestParam.getRamTotalOfByte().toString());
+        deviceRunInfo.setRamUsageOfByte(requestParam.getRamUsageOfByte().toString());
+        smsbDeviceRunInfoMapper.insert(deviceRunInfo);
 
         return R.ok();
     }

+ 1 - 1
smsb-modules/smsb-netty/src/main/java/com/inspur/netty/server/NettyServer.java

@@ -60,7 +60,7 @@ public class NettyServer {
                             // channel.pipeline().addLast(new OTACheckReplayHandler());
                             // channel.pipeline().addLast(new DeviceRunInfoHandler());
                             // channel.pipeline().addLast(new ContentDownloadStatusHandler());
-                            channel.pipeline().addLast(new SourcePlayRecordHandler());
+                            // channel.pipeline().addLast(new SourcePlayRecordHandler());
                         }
                     });
             ChannelFuture f = b.bind(8990).sync();

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

@@ -23,4 +23,12 @@ public interface SmsbItemPushDeviceMapper extends BaseMapperPlus<SmsbItemPushDev
      * @return
      */
     Page<SmsbItemPushDeviceVo> selectVoListV2(@Param("pushId") Long pushId, @Param("page") Page<SmsbItemPushDeviceVo> page);
+
+    /**
+     * 更新设备推送状态
+     * @param pushId
+     * @param deviceId
+     * @param status
+     */
+    void updateDevicePushStatus(Long pushId, Long deviceId, Integer status);
 }

+ 17 - 3
smsb-modules/smsb-source/src/main/java/com/inspur/source/service/impl/SmsbItemPushServiceImpl.java

@@ -33,6 +33,7 @@ import org.dromara.common.core.utils.StreamUtils;
 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.redis.utils.RedisUtils;
 import org.dromara.common.satoken.utils.LoginHelper;
 import org.dromara.workflow.common.constant.FlowConstant;
 import org.dromara.workflow.common.enums.MessageTypeEnum;
@@ -66,6 +67,7 @@ import org.springframework.context.event.EventListener;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.time.Duration;
 import java.time.LocalDateTime;
 import java.time.ZoneId;
 import java.time.ZonedDateTime;
@@ -84,6 +86,8 @@ import java.util.stream.Collectors;
 @Slf4j
 public class SmsbItemPushServiceImpl implements ISmsbItemPushService {
 
+    private final static String PUSH_CONTENT_INFO_KEY = "global:msr:device:push:";
+
     private final SmsbItemPushMapper baseMapper;
     private final SmsbItemPushTimeMapper itemPushTimeMapper;
     private final SmsbItemPushDeviceMapper itemPushDeviceMapper;
@@ -294,12 +298,16 @@ public class SmsbItemPushServiceImpl implements ISmsbItemPushService {
     private void pushNettyMsg(List<String> deviceIds, Long pushId) {
         List<SmsbDevice> smsbDevices = smsbDeviceMapper.selectByIds(deviceIds);
         for (SmsbDevice smsbDevice : smsbDevices) {
-            // 1 发送长连接消息
+            // 1 redis 缓存预加载
+            cachePushInfo(smsbDevice.getIdentifier());
+            // 2 发送长连接消息
             String nettyMessage = PushMessageType.CONTENT_UPDATE.getValue() + "/" + pushId;
             boolean pushResult = PushMsgUtil.sendV2(smsbDevice.getIdentifier(), nettyMessage);
             log.info("push content update identifier: {}, result:{}", smsbDevice.getIdentifier(), pushResult);
-            // 2 redis 缓存预加载
-            cachePushInfo(smsbDevice.getIdentifier());
+            // 3 下发成功  更新设备下发状态
+            if (pushResult) {
+                itemPushDeviceMapper.updateDevicePushStatus(pushId, smsbDevice.getId(), 2);
+            }
         }
     }
 
@@ -421,11 +429,17 @@ public class SmsbItemPushServiceImpl implements ISmsbItemPushService {
 
     // @Cacheable(cacheNames = "global:msr:device:push", key = "#identifier")
     public FrontPushInfoVo getItemPushInfoByCache(String identifier) {
+        FrontPushInfoVo redisValue = RedisUtils.getCacheObject(PUSH_CONTENT_INFO_KEY + identifier);
+        if (null != redisValue) {
+            return redisValue;
+        }
         return generatePushInfo(identifier);
     }
 
     // @CachePut(cacheNames = "global:msr:device:push", key = "#identifier")
     public FrontPushInfoVo cachePushInfo(String identifier) {
+        FrontPushInfoVo redisValue = generatePushInfo(identifier);
+        RedisUtils.setCacheObject(PUSH_CONTENT_INFO_KEY + identifier,redisValue, Duration.ofSeconds(60));
         return generatePushInfo(identifier);
     }
 

+ 4 - 0
smsb-modules/smsb-source/src/main/resources/mapper/SmsbItemPushDeviceMapper.xml

@@ -9,4 +9,8 @@
                  LEFT JOIN smsb_device sd on ipd.device_id = sd.id
         where ipd.push_id = #{pushId}
     </select>
+
+    <update id="updateDevicePushStatus">
+        update smsb_item_push_device set push_state = #{status} where push_id = #{pushId} and device_id = #{deviceId}
+    </update>
 </mapper>

+ 4 - 3
smsb-plus-ui/src/views/smsb/device/index.vue

@@ -79,8 +79,8 @@
         <el-table-column label="设备型号" align="left" prop="deviceModel" width="120" :show-overflow-tooltip="true" />
         <el-table-column label="设备SN" align="left" prop="serialNumber" width="150" :show-overflow-tooltip="true" />
         <el-table-column label="设备MAC" align="left" prop="mac" width="150" />
-        <el-table-column label="设备标识" align="left" prop="identifier" width="250" :show-overflow-tooltip="true"/>
-        <el-table-column label="分辨率" align="left" prop="resolution" width="150" />
+        <el-table-column label="设备标识" align="left" prop="identifier" width="220" :show-overflow-tooltip="true"/>
+        <el-table-column label="分辨率" align="left" prop="resolution" width="100" />
         <el-table-column label="开机时间" align="left" prop="openTime" width="80" />
         <el-table-column label="关机时间" align="left" prop="closeTime" width="80" />
         <el-table-column label="在线状态" align="center" prop="onlineStatus" width="80">
@@ -104,7 +104,7 @@
             <span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>
           </template>
         </el-table-column>
-        <el-table-column label="备注" align="left" prop="remark" width="100" :show-overflow-tooltip="true" />
+        <el-table-column label="备注" align="left" prop="remark" width="200" :show-overflow-tooltip="true" />
         <el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="120">
           <template #default="scope">
             <el-tooltip content="修改" placement="top">
@@ -251,6 +251,7 @@
           <div style="margin-top: 20px">
             <span>版本CODE:{{ deviceRunInfo.versionCode }}</span>
             <span style="margin-left: 50px">应用版本:{{ deviceRunInfo.versionName }}</span>
+            <span style="margin-left: 50px">状态时间:{{ deviceRunInfo.versionName }}</span>
             <br/>
           </div>
         </el-tab-pane>

+ 74 - 46
smsb-plus-ui/src/views/smsb/manufacturer/index.vue

@@ -2,19 +2,31 @@
   <div class="p-2">
     <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="厂商名称" prop="manufacturerName">
-              <el-input v-model="queryParams.manufacturerName" placeholder="请输入厂商名称" clearable @keyup.enter="handleQuery" />
+              <el-input v-model="queryParams.manufacturerName" placeholder="请输入厂商名称" clearable
+                        @keyup.enter="handleQuery"/>
             </el-form-item>
             <el-form-item label="设备类型" prop="type">
               <el-select v-model="queryParams.type" placeholder="请选择设备类型" clearable>
-                <el-option v-for="dict in smsb_device_type" :key="dict.value" :label="dict.label" :value="dict.value" />
+                <el-option v-for="dict in smsb_device_type" :key="dict.value" :label="dict.label" :value="dict.value"/>
               </el-select>
             </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 v-hasPermi="['smsb:deviceManufacturer:add']" type="primary" plain icon="Plus"
+                         @click="handleAdd"> 新增
+              </el-button>
+              <el-button v-hasPermi="['smsb:deviceManufacturer:edit']" type="success" plain icon="Edit"
+                         :disabled="single" @click="handleUpdate()"
+              >修改
+              </el-button>
+              <el-button v-hasPermi="['smsb:deviceManufacturer:remove']" type="danger" plain icon="Delete"
+                         :disabled="multiple" @click="handleDelete()"
+              >删除
+              </el-button>
             </el-form-item>
           </el-form>
         </el-card>
@@ -22,35 +34,30 @@
     </transition>
 
     <el-card shadow="never">
-      <template #header>
-        <el-row :gutter="10" class="mb8">
-          <el-col :span="1.5">
-            <el-button v-hasPermi="['smsb:deviceManufacturer:add']" type="primary" plain icon="Plus" @click="handleAdd"> 新增 </el-button>
-          </el-col>
-          <el-col :span="1.5">
-            <el-button v-hasPermi="['smsb:deviceManufacturer:edit']" type="success" plain icon="Edit" :disabled="single" @click="handleUpdate()"
-              >修改
-            </el-button>
-          </el-col>
-          <el-col :span="1.5">
-            <el-button v-hasPermi="['smsb:deviceManufacturer:remove']" type="danger" plain icon="Delete" :disabled="multiple" @click="handleDelete()"
-              >删除
-            </el-button>
-          </el-col>
-          <el-col :span="1.5">
-            <el-button v-hasPermi="['smsb:deviceManufacturer:export']" type="warning" plain icon="Download" @click="handleExport">导出 </el-button>
-          </el-col>
-          <right-toolbar v-model:showSearch="showSearch" @query-table="getList"></right-toolbar>
-        </el-row>
-      </template>
+      <!--      <template #header>
+              <el-row :gutter="10" class="mb8">
+                <el-col :span="1.5">
+
+                </el-col>
+                <el-col :span="1.5">
+
+                </el-col>
+                <el-col :span="1.5">
 
+                </el-col>
+                <el-col :span="1.5">
+                  <el-button v-hasPermi="['smsb:deviceManufacturer:export']" type="warning" plain icon="Download" @click="handleExport">导出 </el-button>
+                </el-col>
+                <right-toolbar v-model:showSearch="showSearch" @query-table="getList"></right-toolbar>
+              </el-row>
+            </template>-->
       <el-table v-loading="loading" :data="deviceManufacturerList" @selection-change="handleSelectionChange">
         <el-table-column type="selection" width="55" align="center" />
-        <el-table-column v-if="true" label="主键ID" align="left" prop="id" width="250" />
-        <el-table-column label="厂商标识" align="left" prop="manufacturerKey" />
+        <el-table-column v-if="true" label="主键ID" align="left" prop="id" width="200" />
+        <el-table-column label="厂商标识" align="left" prop="manufacturerKey" width="180"/>
         <el-table-column label="厂商名称" align="left" prop="manufacturerName" />
-        <el-table-column label="设备型号" align="left" prop="deviceModel" />
-        <el-table-column label="设备类型" align="center" prop="type">
+        <el-table-column label="设备型号" align="left" prop="deviceModel" width="200"/>
+        <el-table-column label="设备类型" align="center" prop="type" width="120">
           <template #default="scope">
             <dict-tag :options="smsb_device_type" :value="scope.row.type" />
           </template>
@@ -60,6 +67,7 @@
             <span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d}  {h}:{i}:{s}') }}</span>
           </template>
         </el-table-column>
+        <el-table-column label="备注" align="left" prop="remark" />
         <el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="120">
           <template #default="scope">
             <el-tooltip content="修改" placement="top">
@@ -81,21 +89,37 @@
       <pagination v-show="total > 0" v-model:page="queryParams.pageNum" v-model:limit="queryParams.pageSize" :total="total" @pagination="getList" />
     </el-card>
     <!-- 添加或修改厂商管理对话框 -->
-    <el-dialog v-model="dialog.visible" :title="dialog.title" width="500px" append-to-body>
+    <el-dialog v-model="dialog.visible" :title="dialog.title" width="700px" append-to-body>
       <el-form ref="deviceManufacturerFormRef" :model="form" :rules="rules" label-width="80px">
-        <el-form-item label="厂商KEY" prop="manufacturerKey">
-          <el-input v-model="form.manufacturerKey" placeholder="请输入厂商KEY" />
-        </el-form-item>
-        <el-form-item label="厂商名称" prop="manufacturerName">
-          <el-input v-model="form.manufacturerName" placeholder="请输入厂商名称" />
-        </el-form-item>
-        <el-form-item label="设备型号" prop="deviceModel">
-          <el-input v-model="form.deviceModel" placeholder="请输入设备型号" />
-        </el-form-item>
-        <el-form-item label="设备类型" prop="type">
-          <el-select v-model="form.type" placeholder="请选择设备类型">
-            <el-option v-for="dict in smsb_device_type" :key="dict.value" :label="dict.label" :value="parseInt(dict.value)"></el-option>
-          </el-select>
+        <el-row :gutter="20">
+          <el-col :span="12">
+            <el-form-item label="厂商KEY" prop="manufacturerKey">
+              <el-input v-model="form.manufacturerKey" placeholder="请输入厂商KEY"/>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="厂商名称" prop="manufacturerName">
+              <el-input v-model="form.manufacturerName" placeholder="请输入厂商名称"/>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row :gutter="20">
+          <el-col :span="12">
+            <el-form-item label="设备型号" prop="deviceModel">
+              <el-input v-model="form.deviceModel" placeholder="请输入设备型号"/>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="设备类型" prop="type">
+              <el-select v-model="form.type" placeholder="请选择设备类型">
+                <el-option v-for="dict in smsb_device_type" :key="dict.value" :label="dict.label"
+                           :value="parseInt(dict.value)"></el-option>
+              </el-select>
+            </el-form-item>
+          </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>
       <template #footer>
@@ -110,13 +134,17 @@
 
 <script setup name="DeviceManufacturer" lang="ts">
 import {
-  listDeviceManufacturer,
-  getDeviceManufacturer,
-  delDeviceManufacturer,
   addDeviceManufacturer,
+  delDeviceManufacturer,
+  getDeviceManufacturer,
+  listDeviceManufacturer,
   updateDeviceManufacturer
 } from '@/api/smsb/device/deviceManufacturer';
-import { DeviceManufacturerVO, DeviceManufacturerQuery, DeviceManufacturerForm } from '@/api/smsb/device/deviceManufacturer_type';
+import {
+  DeviceManufacturerForm,
+  DeviceManufacturerQuery,
+  DeviceManufacturerVO
+} from '@/api/smsb/device/deviceManufacturer_type';
 
 const { proxy } = getCurrentInstance() as ComponentInternalInstance;
 const { smsb_device_type } = toRefs<any>(proxy?.useDict('smsb_device_type'));

+ 7 - 6
smsb-plus-ui/src/views/smsb/minioData/index.vue

@@ -158,7 +158,7 @@
         <el-col :span="10" style="height: 100%; overflow: auto; border-right: 1px solid #eee; padding-right: 10px">
           <el-tree ref="sourceTreeRef" :data="sourceTreeOptions" show-checkbox node-key="id"
             :props="{ value: 'id', label: 'name', children: 'children' }" :check-strictly="true"
-            :default-expand-all="false" @check="handleTreeCheck" style="height: 100%"></el-tree>
+            :default-expand-all="true" @check="handleTreeCheck" style="height: 100%"></el-tree>
         </el-col>
         <el-col :span="14"
           style="height: 100%; display: flex; flex-direction: column; overflow: auto; padding-left: 10px">
@@ -190,7 +190,7 @@
     </el-dialog>
 
     <!-- 转码进度弹窗 -->
-    <el-dialog :title="trans.title" v-model="trans.visible" width="1000px" append-to-body :style="{ height: '850px' }">
+    <el-dialog :title="trans.title" v-model="trans.visible" width="1000px" append-to-body :style="{ height: '700px' }">
       <el-card shadow="never">
         <el-table v-loading="loading" :data="transRecordList">
           <el-table-column label="资源名称" align="left" prop="fileName" width="200" :show-overflow-tooltip="true" />
@@ -224,7 +224,7 @@
 
     <!-- 引用情况弹窗 -->
     <el-dialog :title="useDialog.title" v-model="useDialog.visible" width="1000px" append-to-body
-      :style="{ height: '850px' }">
+      :style="{ height: '700px' }">
       <el-card shadow="never">
         <el-table v-loading="loading" :data="itemRecordList">
           <el-table-column label="名称" align="left" prop="itemName" />
@@ -235,12 +235,13 @@
           </el-table-column>
           <el-table-column label="分屏" align="center" prop="splitScreen" width="100">
             <template #default="scope">
-              <dict-tag :options="smsb_split_screen" :value="scope.row.splitScreen" />
+              <span v-if="scope.row.splitScreen == 0"> --- </span>
+              <dict-tag v-else :options="smsb_split_screen" :value="scope.row.splitScreen" />
             </template>
           </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="150" />
+          <el-table-column label="创建时间" align="left" prop="createTime" width="160" />
         </el-table>
         <pagination v-show="itemTotal > 0" :total="itemTotal" v-model:page="dialogQueryParams.pageNum"
           v-model:limit="dialogQueryParams.pageSize" @pagination="getItemListByFileId" />
@@ -314,7 +315,7 @@ const useDialog = reactive<DialogOption>({
 });
 
 const initFormData: MinioDataForm = {
-  tag: undefined,
+  tag: 1,
   marketing: undefined,
   ossId: undefined,
   sourceTreeIds: undefined

+ 1 - 1
smsb-plus-ui/src/views/smsb/otaPackage/index.vue

@@ -33,7 +33,7 @@
         <el-table-column label="版本名称" align="center" prop="versionName" width="100" />
         <el-table-column label="版本号" align="left" prop="versionCode" width="100" :show-overflow-tooltip="true" />
         <el-table-column label="文件大小" align="left" prop="fileSize" width="100" :show-overflow-tooltip="true" />
-        <el-table-column label="文件名称" align="left" prop="fileName" width="200" :show-overflow-tooltip="true" />
+        <el-table-column label="文件名称" align="left" prop="fileName" width="250" :show-overflow-tooltip="true" />
         <el-table-column label="下载路径" align="left" prop="fileUrl" :show-overflow-tooltip="true" width="200" />
         <el-table-column label="MD5" align="left" prop="md5" width="250" :show-overflow-tooltip="true" />
         <el-table-column label="状态" align="center" prop="status" width="80" />

+ 3 - 3
smsb-plus-ui/src/views/smsb/otaRecord/index.vue

@@ -30,9 +30,9 @@
       <el-table v-loading="loading" :data="otaRecordList" @selection-change="handleSelectionChange">
         <el-table-column type="selection" width="55" align="center" />
         <el-table-column label="ID" align="left" prop="id" v-if="true" width="175" />
-        <el-table-column label="升级名称" align="left" prop="otaName" width="150" :show-overflow-tooltip="true" />
-        <el-table-column label="升级设备" align="left" prop="deviceName" width="180" :show-overflow-tooltip="true" />
-        <el-table-column label="升级文件" align="left" prop="fileName" width="200" :show-overflow-tooltip="true" />
+        <el-table-column label="升级名称" align="left" prop="otaName" width="180" :show-overflow-tooltip="true" />
+        <el-table-column label="升级设备" align="left" prop="deviceName" width="220" :show-overflow-tooltip="true" />
+        <el-table-column label="升级文件" align="left" prop="fileName" width="250" :show-overflow-tooltip="true" />
         <el-table-column label="文件地址" align="left" prop="fileUrl" width="200" :show-overflow-tooltip="true" />
         <el-table-column label="文件MD5" align="left" prop="md5" width="180" :show-overflow-tooltip="true" />
         <el-table-column label="版本号" align="left" prop="versionCode" width="100" :show-overflow-tooltip="true" />

+ 51 - 32
smsb-plus-ui/src/views/smsb/sourceTree/index.vue

@@ -1,15 +1,19 @@
 <template>
   <div class="p-2">
     <transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
-      <div v-show="showSearch" class="mb-[10px]">
+      <div v-show="showSearch" class="mb-[10px]" :style="{ marginTop: '10px', height: '60px' }">
         <el-card shadow="hover">
           <el-form ref="queryFormRef" :model="queryParams" :inline="true">
             <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>
               <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="['source:sourceTree:add']">
+                新增
+              </el-button>
+              <el-button type="info" plain icon="Sort" @click="handleToggleExpandAll">展开/折叠</el-button>
             </el-form-item>
           </el-form>
         </el-card>
@@ -17,17 +21,17 @@
     </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="['source:sourceTree:add']"> 新增 </el-button>
-          </el-col>
-          <el-col :span="1.5">
-            <el-button type="info" plain icon="Sort" @click="handleToggleExpandAll">展开/折叠</el-button>
-          </el-col>
-          <right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar>
-        </el-row>
-      </template>
+      <!--      <template #header>
+              <el-row :gutter="10" class="mb8">
+                <el-col :span="1.5">
+
+                </el-col>
+                <el-col :span="1.5">
+
+                </el-col>
+                <right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar>
+              </el-row>
+            </template>-->
       <el-table
         ref="sourceTreeTableRef"
         v-loading="loading"
@@ -59,23 +63,32 @@
       </el-table>
     </el-card>
     <!-- 添加或修改文件目录对话框 -->
-    <el-dialog :title="dialog.title" v-model="dialog.visible" width="500px" append-to-body>
+    <el-dialog :title="dialog.title" v-model="dialog.visible" width="600px" append-to-body>
       <el-form ref="sourceTreeFormRef" :model="form" :rules="rules" label-width="80px">
-        <el-form-item label="父级目录" prop="parentId">
-          <el-tree-select
-            v-model="form.parentId"
-            :data="sourceTreeOptions"
-            :props="{ value: 'id', label: 'name', children: 'children' }"
-            value-key="id"
-            placeholder="请选择父级目录"
-            check-strictly
-          />
+        <el-form-item label="目录名称" prop="name">
+          <el-input v-model="form.name" placeholder="请输入名称"/>
         </el-form-item>
-        <el-form-item label="名称" prop="name">
-          <el-input v-model="form.name" placeholder="请输入名称" />
-        </el-form-item>
-        <el-form-item label="顺序" prop="orderNo">
-          <el-input v-model="form.orderNo" placeholder="请输入顺序" />
+        <el-row :gutter="20">
+          <el-col :span="12">
+            <el-form-item label="父级目录" prop="parentId">
+              <el-tree-select
+                v-model="form.parentId"
+                :data="sourceTreeOptions"
+                :props="{ value: 'id', label: 'name', children: 'children' }"
+                value-key="id"
+                placeholder="请选择父级目录"
+                check-strictly
+              />
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="顺序" prop="orderNo">
+              <el-input-number v-model="form.orderNo" placeholder="请输入顺序"/>
+            </el-form-item>
+          </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>
       <template #footer>
@@ -89,8 +102,14 @@
 </template>
 
 <script setup name="SourceTree" lang="ts">
-import { listSourceTree, getSourceTree, delSourceTree, addSourceTree, updateSourceTree } from '@/api/smsb/source/sourceTree';
-import { SourceTreeVO, SourceTreeQuery, SourceTreeForm } from '@/api/smsb/source/sourceTree_type';
+import {
+  addSourceTree,
+  delSourceTree,
+  getSourceTree,
+  listSourceTree,
+  updateSourceTree
+} from '@/api/smsb/source/sourceTree';
+import {SourceTreeForm, SourceTreeQuery, SourceTreeVO} from '@/api/smsb/source/sourceTree_type';
 
 type SourceTreeOption = {
   id: number;
@@ -98,7 +117,7 @@ type SourceTreeOption = {
   children?: SourceTreeOption[];
 };
 
-const { proxy } = getCurrentInstance() as ComponentInternalInstance;
+const {proxy} = getCurrentInstance() as ComponentInternalInstance;
 const sourceTreeList = ref<SourceTreeVO[]>([]);
 const sourceTreeOptions = ref<SourceTreeOption[]>([]);
 const buttonLoading = ref(false);
@@ -119,7 +138,7 @@ const initFormData: SourceTreeForm = {
   id: undefined,
   name: undefined,
   parentId: undefined,
-  orderNo: undefined,
+  orderNo: 1,
   isDel: undefined
 };