瀏覽代碼

页面,登录等

lipenghui 4 月之前
父節點
當前提交
dc85bd3f2d

+ 1 - 1
src/api/pms/iotinfo/index.ts

@@ -19,7 +19,7 @@ export const IotInfoApi = {
     return await request.get({ url: `/rq/iot-info/page`, params })
   },
   getIotInfoFilePage: async (params: any) => {
-    return await request.get({ url: `/rq/iot-info/file/page`, params })
+    return await request.post({ url: `/rq/iot-info/file/page`, params })
   },
   // 查询资料详情
   getIotInfo: async (id: number) => {

+ 1 - 0
src/components/UploadFile/src/UploadFileAll.vue

@@ -24,6 +24,7 @@
         <Icon icon="ep:upload-filled" />
         选取文件
       </el-button>
+      <span style="vertical-align:middle;color: red;margin-left: 10px">文件最大不超过30M</span>
       <template v-if="isShowTip" #tip>
         <div style="font-size: 8px">
           大小不超过 <b style="color: #f56c6c">{{ fileSize }}MB</b>

+ 1 - 0
src/utils/dict.ts

@@ -107,6 +107,7 @@ export const getDictLabel = (dictType: string, value: any): string => {
 }
 
 export enum DICT_TYPE {
+  PMS_FILE_TYPE = 'pms_file_type',
   PMS_DEVICE_STATUS = 'pms_device_status',
   PMS_ASSET_PROPERTY = 'pms_asset_property',
   USER_TYPE = 'user_type',

+ 58 - 60
src/views/Login/components/LoginForm.vue

@@ -1,4 +1,3 @@
-
 <template>
   <el-form
     v-show="getShow"
@@ -16,18 +15,18 @@
           <LoginFormTitle style="width: 100%" />
         </el-form-item>
       </el-col>
-<!--      <el-col :span="24" style="padding-right: 10px; padding-left: 10px">-->
-<!--        <el-form-item v-if="loginData.tenantEnable === 'true'" prop="tenantName">-->
-<!--          <el-input-->
-<!--            v-model="loginData.loginForm.tenantName"-->
-<!--            :placeholder="t('login.tenantNamePlaceholder')"-->
-<!--            :prefix-icon="iconHouse"-->
-<!--            link-->
-<!--            type="primary"-->
-<!--          />-->
-<!--        </el-form-item>-->
-<!--      </el-col>-->
-      <el-col :span="24" style="padding-right: 10px; padding-left: 10px;margin-top: 30px">
+      <!--      <el-col :span="24" style="padding-right: 10px; padding-left: 10px">-->
+      <!--        <el-form-item v-if="loginData.tenantEnable === 'true'" prop="tenantName">-->
+      <!--          <el-input-->
+      <!--            v-model="loginData.loginForm.tenantName"-->
+      <!--            :placeholder="t('login.tenantNamePlaceholder')"-->
+      <!--            :prefix-icon="iconHouse"-->
+      <!--            link-->
+      <!--            type="primary"-->
+      <!--          />-->
+      <!--        </el-form-item>-->
+      <!--      </el-col>-->
+      <el-col :span="24" style="padding-right: 10px; padding-left: 10px; margin-top: 30px">
         <el-form-item prop="username">
           <el-input
             v-model="loginData.loginForm.username"
@@ -50,7 +49,7 @@
       </el-col>
       <el-col
         :span="24"
-        style="padding-right: 10px; padding-left: 10px; margin-top: 10px; margin-bottom: -20px"
+        style="padding-right: 10px; padding-left: 10px; margin-top: -10px; margin-bottom: -20px"
       >
         <el-form-item>
           <el-row justify="space-between" style="width: 100%">
@@ -93,13 +92,13 @@
       <el-col :span="24" style="padding-right: 10px; padding-left: 10px">
         <el-form-item>
           <el-row :gutter="5" justify="space-between" style="width: 100%">
-<!--            <el-col :span="8">-->
-<!--              <XButton-->
-<!--                :title="t('login.btnMobile')"-->
-<!--                class="w-[100%]"-->
-<!--                @click="setLoginState(LoginStateEnum.MOBILE)"-->
-<!--              />-->
-<!--            </el-col>-->
+            <!--            <el-col :span="8">-->
+            <!--              <XButton-->
+            <!--                :title="t('login.btnMobile')"-->
+            <!--                class="w-[100%]"-->
+            <!--                @click="setLoginState(LoginStateEnum.MOBILE)"-->
+            <!--              />-->
+            <!--            </el-col>-->
             <el-col :span="24">
               <XButton
                 :title="t('login.btnQRCode')"
@@ -107,47 +106,47 @@
                 @click="setLoginState(LoginStateEnum.QR_CODE)"
               />
             </el-col>
-<!--            <el-col :span="12">-->
-<!--              <XButton-->
-<!--                :title="t('login.btnRegister')"-->
-<!--                class="w-[100%]"-->
-<!--                @click="setLoginState(LoginStateEnum.REGISTER)"-->
-<!--              />-->
-<!--            </el-col>-->
+            <!--            <el-col :span="12">-->
+            <!--              <XButton-->
+            <!--                :title="t('login.btnRegister')"-->
+            <!--                class="w-[100%]"-->
+            <!--                @click="setLoginState(LoginStateEnum.REGISTER)"-->
+            <!--              />-->
+            <!--            </el-col>-->
           </el-row>
         </el-form-item>
       </el-col>
-<!--      <el-divider content-position="center">{{ t('login.otherLogin') }}</el-divider>-->
-<!--      <el-col :span="24" style="padding-right: 10px; padding-left: 10px">-->
-<!--        <el-form-item>-->
-<!--          <div class="w-[100%] flex justify-between">-->
-<!--            <Icon-->
-<!--              v-for="(item, key) in socialList"-->
-<!--              :key="key"-->
-<!--              :icon="item.icon"-->
-<!--              :size="30"-->
-<!--              class="anticon cursor-pointer"-->
-<!--              color="#999"-->
-<!--              @click="doSocialLogin(item.type)"-->
-<!--            />-->
-<!--          </div>-->
-<!--        </el-form-item>-->
-<!--      </el-col>-->
-<!--      <el-divider content-position="center">萌新必读</el-divider>-->
-<!--      <el-col :span="24" style="padding-right: 10px; padding-left: 10px">-->
-<!--        <el-form-item>-->
-<!--          <div class="w-[100%] flex justify-between">-->
-<!--            <el-link href="https://doc.iocoder.cn/" target="_blank">📚开发指南</el-link>-->
-<!--            <el-link href="https://doc.iocoder.cn/video/" target="_blank">🔥视频教程</el-link>-->
-<!--            <el-link href="https://www.iocoder.cn/Interview/good-collection/" target="_blank">-->
-<!--              ⚡面试手册-->
-<!--            </el-link>-->
-<!--            <el-link href="http://static.yudao.iocoder.cn/mp/Aix9975.jpeg" target="_blank">-->
-<!--              🤝外包咨询-->
-<!--            </el-link>-->
-<!--          </div>-->
-<!--        </el-form-item>-->
-<!--      </el-col>-->
+      <!--      <el-divider content-position="center">{{ t('login.otherLogin') }}</el-divider>-->
+      <!--      <el-col :span="24" style="padding-right: 10px; padding-left: 10px">-->
+      <!--        <el-form-item>-->
+      <!--          <div class="w-[100%] flex justify-between">-->
+      <!--            <Icon-->
+      <!--              v-for="(item, key) in socialList"-->
+      <!--              :key="key"-->
+      <!--              :icon="item.icon"-->
+      <!--              :size="30"-->
+      <!--              class="anticon cursor-pointer"-->
+      <!--              color="#999"-->
+      <!--              @click="doSocialLogin(item.type)"-->
+      <!--            />-->
+      <!--          </div>-->
+      <!--        </el-form-item>-->
+      <!--      </el-col>-->
+      <!--      <el-divider content-position="center">萌新必读</el-divider>-->
+      <!--      <el-col :span="24" style="padding-right: 10px; padding-left: 10px">-->
+      <!--        <el-form-item>-->
+      <!--          <div class="w-[100%] flex justify-between">-->
+      <!--            <el-link href="https://doc.iocoder.cn/" target="_blank">📚开发指南</el-link>-->
+      <!--            <el-link href="https://doc.iocoder.cn/video/" target="_blank">🔥视频教程</el-link>-->
+      <!--            <el-link href="https://www.iocoder.cn/Interview/good-collection/" target="_blank">-->
+      <!--              ⚡面试手册-->
+      <!--            </el-link>-->
+      <!--            <el-link href="http://static.yudao.iocoder.cn/mp/Aix9975.jpeg" target="_blank">-->
+      <!--              🤝外包咨询-->
+      <!--            </el-link>-->
+      <!--          </div>-->
+      <!--        </el-form-item>-->
+      <!--      </el-col>-->
     </el-row>
   </el-form>
 </template>
@@ -484,7 +483,6 @@ onMounted(() => {
 <!--  }-->
 <!--};-->
 
-
 <!--const initDingLogin=()=> {-->
 <!--  // if (window.DDLogin) {-->
 <!--  var url = dingRedirectUrl-->

+ 39 - 38
src/views/Login/components/QrCodeForm.vue

@@ -5,11 +5,11 @@
     </el-col>
     <el-col :span="24" style="padding-right: 10px; padding-left: 10px">
       <el-card class="mb-10px text-center" shadow="hover">
-<!--        <Qrcode :logo="logoImg" />-->
-        <div id="login_container" ></div>
+        <!--        <Qrcode :logo="logoImg" />-->
+        <div id="login_container"></div>
       </el-card>
     </el-col>
-<!--    <el-divider class="enter-x">{{ t('login.qrcode') }}</el-divider>-->
+    <!--    <el-divider class="enter-x">{{ t('login.qrcode') }}</el-divider>-->
     <el-col :span="24" style="padding-right: 10px; padding-left: 10px">
       <div class="mt-15px w-[100%]">
         <XButton :title="t('login.backLogin')" class="w-[100%]" @click="handleBackLogin()" />
@@ -18,8 +18,6 @@
   </el-row>
 </template>
 <script lang="ts" setup>
-import logoImg from '@/assets/imgs/logo.png'
-
 import LoginFormTitle from './LoginFormTitle.vue'
 import { LoginStateEnum, useLoginState } from './useLogin'
 
@@ -30,41 +28,44 @@ const { handleBackLogin, getLoginState } = useLoginState()
 const getShow = computed(() => unref(getLoginState) === LoginStateEnum.QR_CODE)
 
 const appId = 'dingik345qmyhtysvs2x'
-const dingRedirectUrl = 'http://1.94.244.160:91/login?loginType=dingding&type=20'
+const dingRedirectUrl = 'http://1.94.244.160:70/login?loginType=dingding&type=20'
 
-onMounted(()=>{
+onMounted(() => {
   initDingLogin()
 })
-const _getRandomString=(len)=> {
-  len = len || 10;
-  let $chars = "ABCDEFGHIJKMNOPQRSTUVWXYZ"; // 默认去掉了容易混淆的字符oOLl,9gq,Vv,Uu,I1
-  let maxPos = $chars.length;
-  let pwd = "";
+const _getRandomString = (len) => {
+  len = len || 10
+  let $chars = 'ABCDEFGHIJKMNOPQRSTUVWXYZ' // 默认去掉了容易混淆的字符oOLl,9gq,Vv,Uu,I1
+  let maxPos = $chars.length
+  let pwd = ''
   for (var i = 0; i < len; i++) {
-    pwd += $chars.charAt(Math.floor(Math.random() * maxPos));
+    pwd += $chars.charAt(Math.floor(Math.random() * maxPos))
   }
-  return pwd;
+  return pwd
 }
-const initDingLogin=()=> {
+const initDingLogin = () => {
   // if (window.DDLogin) {
   var url = dingRedirectUrl
-  var state = _getRandomString(10);
+  var state = _getRandomString(10)
   var gotoUrl = encodeURIComponent(
-    "https://oapi.dingtalk.com/connect/oauth2/sns_authorize?" +
-    "appid=" + appId +
-    "&response_type=code" +
-    "&scope=snsapi_login" +
-    "&state=" + state +
-    "&redirect_uri=" + url
-  );
+    'https://oapi.dingtalk.com/connect/oauth2/sns_authorize?' +
+      'appid=' +
+      appId +
+      '&response_type=code' +
+      '&scope=snsapi_login' +
+      '&state=' +
+      state +
+      '&redirect_uri=' +
+      url
+  )
 
   nextTick(() => {
     var obj = window.DDLogin({
-      id: "login_container",
+      id: 'login_container',
       goto: gotoUrl,
-      style: "border:none;background-color:#FFFFFF;",
+      style: 'border:none;background-color:#FFFFFF;',
       width: '100%', // 二维码的宽度
-      height: "290", // 二维码的高度
+      height: '290' // 二维码的高度
     })
     // 重置扫码登录框的样式,让登录框居中
     let box = document.getElementById('login_container')
@@ -83,23 +84,23 @@ const initDingLogin=()=> {
     height: "350",
   }); */
   var handleMessage = function (event) {
-    var origin = event.origin;
-    if (origin === "https://login.dingtalk.com") {
-      var loginTmpCode = event.data;
+    var origin = event.origin
+    if (origin === 'https://login.dingtalk.com') {
+      var loginTmpCode = event.data
       console.log(loginTmpCode)
       window.location.href =
-        "https://oapi.dingtalk.com/connect/oauth2/sns_authorize?appid=dingik345qmyhtysvs2x&response_type=code&scope=snsapi_login&state=" +
+        'https://oapi.dingtalk.com/connect/oauth2/sns_authorize?appid=dingik345qmyhtysvs2x&response_type=code&scope=snsapi_login&state=' +
         state +
-        "&redirect_uri=" +
+        '&redirect_uri=' +
         url +
-        "&loginTmpCode=" +
-        loginTmpCode;
+        '&loginTmpCode=' +
+        loginTmpCode
     }
-  };
-  if (typeof window.addEventListener != "undefined") {
-    window.addEventListener("message", handleMessage, false);
-  } else if (typeof window.attachEvent != "undefined") {
-    window.attachEvent("onmessage", handleMessage);
+  }
+  if (typeof window.addEventListener != 'undefined') {
+    window.addEventListener('message', handleMessage, false)
+  } else if (typeof window.attachEvent != 'undefined') {
+    window.attachEvent('onmessage', handleMessage)
   }
   // }
 }

+ 15 - 132
src/views/pms/device/BomInfo.vue

@@ -16,10 +16,10 @@
             :inline="true"
             label-width="68px"
           >
-            <el-form-item label="文件名称" prop="fileName">
+            <el-form-item label="物料名称" prop="name">
               <el-input
-                v-model="queryParams.fileName"
-                placeholder="请输入文件名称"
+                v-model="queryParams.name"
+                placeholder="请输入物料名称"
                 clearable
                 @keyup.enter="handleQuery"
                 class="!w-240px"
@@ -28,9 +28,6 @@
             <el-form-item>
               <el-button @click="handleQuery"><Icon icon="ep:search" />搜索</el-button>
               <el-button @click="resetQuery"><Icon icon="ep:refresh" />重置</el-button>
-              <el-button type="primary" plain @click="openForm('create')">
-                <Icon icon="ep:plus" /> 文件上传
-              </el-button>
             </el-form-item>
           </el-form>
         </ContentWrap>
@@ -41,16 +38,10 @@
             :stripe="true"
             :show-overflow-tooltip="true"
           >
-            <!--          <el-table-column label="设备名称" align="center" prop="deviceId" />-->
-            <!--          <el-table-column label="资料分类" align="center" prop="classId" />-->
-            <el-table-column label="文件名称" align="center" prop="filename" />
-            <el-table-column label="文件类型" align="center" prop="fileType" />
-            <el-table-column label="文件大小" align="center" prop="fileSize" />
-            <el-table-column label="查看预览" align="center" prop="filePath" >
-              <template #default="scope">
-                <el-button link type="primary" @click="openWeb(scope.row.filePath)"> <Icon size="19" icon="ep:view"  /> </el-button>
-              </template>
-            </el-table-column>
+            <el-table-column label="物料编码" align="center" prop="code" />
+            <el-table-column label="物料名称" align="center" prop="name" />
+            <el-table-column label="规格型号" align="center" prop="model" />
+            <el-table-column label="单位" align="center" prop="unit" />
             <el-table-column label="备注" align="center" prop="remark" />
             <el-table-column
               label="创建时间"
@@ -59,38 +50,6 @@
               :formatter="dateFormatter"
               width="180px"
             />
-            <el-table-column label="操作" align="center" width="160">
-              <template #default="scope">
-                <div class="flex items-center justify-center">
-                  <el-button type="primary" link @click="openForm('update', scope.row.id)">
-                    <Icon icon="ep:edit" />修改
-                  </el-button>
-                  <el-dropdown
-                    @command="(command) => handleCommand(command, scope.row)"
-                    v-hasPermi="[
-                      'system:user:delete',
-                      'system:user:update-password',
-                      'system:permission:assign-user-role'
-                    ]"
-                  >
-                    <el-button type="primary" link><Icon icon="ep:d-arrow-right" /> 更多</el-button>
-                    <template #dropdown>
-                      <el-dropdown-menu>
-                        <el-dropdown-item command="handleDelete">
-                          <Icon icon="ep:delete" />删除
-                        </el-dropdown-item>
-<!--                        <el-dropdown-item command="fileView">-->
-<!--                          <Icon icon="ep:view" />预览-->
-<!--                        </el-dropdown-item>-->
-                        <el-dropdown-item command="fileDownload">
-                          <Icon icon="ep:view" />下载
-                        </el-dropdown-item>
-                      </el-dropdown-menu>
-                    </template>
-                  </el-dropdown>
-                </div>
-              </template>
-            </el-table-column>
           </el-table>
           <Pagination
             :total="total"
@@ -109,14 +68,12 @@
   />
 </template>
 <script lang="ts" setup>
-import { IotDeviceApi, IotDeviceVO } from '@/api/pms/device'
-import FileTree from '@/views/pms/device/FileTree.vue'
+import { IotDeviceVO } from '@/api/pms/device'
 import { dateFormatter } from '@/utils/formatTime'
 import IotInfoForm from '@/views/pms/iotinfo/IotInfoForm.vue'
-import * as IotInfoApi from '@/api/pms/iotinfo'
-import { IotInfoVO } from '@/api/pms/iotinfo'
 import { onMounted, ref } from 'vue'
-import BomTree from "@/views/pms/device/BomTree.vue";
+import BomTree from '@/views/pms/device/BomTree.vue'
+import * as PmsMaterialApi from '@/api/pms/material'
 
 defineOptions({ name: 'DeviceUpload' })
 const queryFormRef = ref() // 搜索的表单
@@ -132,9 +89,6 @@ const container = ref(null)
 const leftWidth = ref(350) // 初始左侧宽度
 const rightWidth = ref(window.innerWidth * 0.69)
 let isDragging = false
-const openWeb = (url) => {
-  window.open('http://1.94.244.160:8012/onlinePreview?url='+encodeURIComponent(Base64.encode(url)));
-}
 const startDrag = (e) => {
   isDragging = true
   document.addEventListener('mousemove', onDrag)
@@ -162,94 +116,23 @@ const stopDrag = () => {
 const queryParams = reactive({
   pageNo: 1,
   pageSize: 10,
-  fileName: null,
   createTime: [],
   deviceId: null,
-  classId: null
+  bomId: null,
+  name: null
 })
-// SPU 表单数据
-const handleCommand = (command: string, row: IotInfoVO) => {
-  switch (command) {
-    case 'handleDelete':
-      handleDelete(row.id)
-      break
-    case 'handleUpdate':
-      openForm('update', row.id)
-      break
-    case 'fileView':
-      handleFileView(row.filePath)
-      break
-    case 'fileDownload':
-      handleDownload(row.filePath)
-      break
-    default:
-      break
-  }
-}
-const handleDownload = async (url) => {
-  try {
-    const response = await fetch(url)
-    const blob = await response.blob()
-    const downloadUrl = window.URL.createObjectURL(blob)
-
-    const link = document.createElement('a')
-    link.href = downloadUrl
-    link.download = url.split('/').pop() // 自动获取文件名‌:ml-citation{ref="3" data="citationList"}
-    link.click()
-
-    URL.revokeObjectURL(downloadUrl)
-  } catch (error) {
-    console.error('下载失败:', error)
-  }
-}
-const handleFileView = (url: string) => {
-  window.open(
-    'http://1.94.244.160:8012/onlinePreview?url=' + encodeURIComponent(Base64.encode(url))
-  )
-}
-const handleDelete = async (id: number) => {
-  try {
-    // 删除的二次确认
-    await message.delConfirm()
-
-    // 发起删除
-    await IotInfoApi.IotInfoApi.deleteIotInfo(id)
-    message.success(t('common.delSuccess'))
-    // 刷新列表
-    await getList()
-  } catch {}
-}
 const formRef = ref()
-const openForm = (type: string, id?: number) => {
-  if (!queryParams.classId) {
-    message.error('请选择左侧资料分类')
-    return
-  }
-  formRef.value.open(type, id)
-}
 const deviceId = ref('')
 const handleFileNodeClick = async (row) => {
-  queryParams.classId = row.id
+  queryParams.bomId = row.id
   await getList()
 }
-/** 获得详情 */
-// const getDetail = async () => {
-//   if (id) {
-//     formLoading.value = true
-//     try {
-//       formData.value = (await IotDeviceApi.getIotDevice(id)) as IotDeviceVO
-//
-//     } finally {
-//       formLoading.value = false
-//     }
-//   }
-// }
 /** 查询列表 */
 const getList = async () => {
   formLoading.value = true
   try {
-    queryParams.deviceId = deviceId.value
-    const data = await IotInfoApi.IotInfoApi.getIotInfoPage(queryParams)
+    // queryParams.deviceId = deviceId.value
+    const data = await PmsMaterialApi.listByBomId(queryParams)
     list.value = data.list
     total.value = data.total
   } finally {

+ 0 - 4
src/views/pms/device/BomTree.vue

@@ -129,7 +129,6 @@ const handleNodeDrop = async (draggingNode, dropNode, dropType, event) => {
   const targetIndex = dropNode.parent.childNodes.findIndex(n => n.data.id === dropNode.data.id);
   // 更新本地数据
   draggingNode.data.parentId = newParentId;
-  debugger
   console.log(JSON.stringify(draggingNode.data))
   await InfoClassifyApi.IotInfoClassifyApi.removeIotInfoClassify(draggingNode.data)
 };
@@ -153,7 +152,6 @@ onMounted(async () => {
   await getTree()
   setHeight();
   if (bomList.value.length > 0) {
-    debugger
     emits('success', bomList.value[0].id)
   }
   window.addEventListener('resize', setHeight);
@@ -188,7 +186,6 @@ const submitForm = async () => {
   formLoading.value = true
   try {
     const data = formData.value as unknown as InfoClassifyApi.IotInfoClassifyVO
-    debugger
     if (formType.value === 'create') {
       data.parentId = nodeInfo.value.id
       data.deviceId = props.deviceId
@@ -285,7 +282,6 @@ const getTree = async () => {
     queryParams.deviceCategoryId = re.assetClass
     BomApi.getBomPage(queryParams).then((res) => {
       console.log(JSON.stringify(res))
-      debugger
       // bomList.value = []
       // bomList.value.push(...handleTree(res))
       bomList.value = handleTree(res)

+ 21 - 12
src/views/pms/device/DeviceUpload.vue

@@ -16,9 +16,9 @@
             :inline="true"
             label-width="68px"
           >
-            <el-form-item label="文件名称" prop="fileName">
+            <el-form-item label="文件名称" prop="filename">
               <el-input
-                v-model="queryParams.fileName"
+                v-model="queryParams.filename"
                 placeholder="请输入文件名称"
                 clearable
                 @keyup.enter="handleQuery"
@@ -44,11 +44,17 @@
             <!--          <el-table-column label="设备名称" align="center" prop="deviceId" />-->
             <!--          <el-table-column label="资料分类" align="center" prop="classId" />-->
             <el-table-column label="文件名称" align="center" prop="filename" />
-            <el-table-column label="文件类型" align="center" prop="fileType" />
+            <el-table-column label="文件类型" align="center" prop="fileType" >
+              <template #default="scope">
+                <dict-tag :type="DICT_TYPE.PMS_FILE_TYPE" :value="scope.row.fileType" />
+              </template>
+            </el-table-column>
             <el-table-column label="文件大小" align="center" prop="fileSize" />
-            <el-table-column label="查看预览" align="center" prop="filePath" >
+            <el-table-column label="查看预览" align="center" prop="filePath">
               <template #default="scope">
-                <el-button link type="primary" @click="openWeb(scope.row.filePath)"> <Icon size="19" icon="ep:view"  /> </el-button>
+                <el-button link type="primary" @click="openWeb(scope.row.filePath)">
+                  <Icon size="19" icon="ep:view" />
+                </el-button>
               </template>
             </el-table-column>
             <el-table-column label="备注" align="center" prop="remark" />
@@ -79,9 +85,9 @@
                         <el-dropdown-item command="handleDelete">
                           <Icon icon="ep:delete" />删除
                         </el-dropdown-item>
-<!--                        <el-dropdown-item command="fileView">-->
-<!--                          <Icon icon="ep:view" />预览-->
-<!--                        </el-dropdown-item>-->
+                        <!--                        <el-dropdown-item command="fileView">-->
+                        <!--                          <Icon icon="ep:view" />预览-->
+                        <!--                        </el-dropdown-item>-->
                         <el-dropdown-item command="fileDownload">
                           <Icon icon="ep:view" />下载
                         </el-dropdown-item>
@@ -109,13 +115,14 @@
   />
 </template>
 <script lang="ts" setup>
-import { IotDeviceApi, IotDeviceVO } from '@/api/pms/device'
+import { IotDeviceVO } from '@/api/pms/device'
 import FileTree from '@/views/pms/device/FileTree.vue'
 import { dateFormatter } from '@/utils/formatTime'
 import IotInfoForm from '@/views/pms/iotinfo/IotInfoForm.vue'
 import * as IotInfoApi from '@/api/pms/iotinfo'
 import { IotInfoVO } from '@/api/pms/iotinfo'
 import { onMounted, ref } from 'vue'
+import {DICT_TYPE} from "@/utils/dict";
 
 defineOptions({ name: 'DeviceUpload' })
 const queryFormRef = ref() // 搜索的表单
@@ -133,7 +140,9 @@ const leftWidth = ref(350) // 初始左侧宽度
 const rightWidth = ref(window.innerWidth * 0.69)
 let isDragging = false
 const openWeb = (url) => {
-  window.open('http://1.94.244.160:8012/onlinePreview?url='+encodeURIComponent(Base64.encode(url)));
+  window.open(
+    'http://1.94.244.160:8012/onlinePreview?url=' + encodeURIComponent(Base64.encode(url))
+  )
 }
 const startDrag = (e) => {
   isDragging = true
@@ -162,7 +171,7 @@ const stopDrag = () => {
 const queryParams = reactive({
   pageNo: 1,
   pageSize: 10,
-  fileName: null,
+  filename: null,
   createTime: [],
   deviceId: null,
   classId: null
@@ -268,7 +277,7 @@ const getList = async () => {
 const successList = async (id) => {
   queryParams.classId = id
   await getList()
-  queryParams.classId = ""
+  queryParams.classId = ''
 }
 /** 搜索按钮操作 */
 const handleQuery = () => {

+ 3 - 3
src/views/pms/iotinfo/IotInfoForm.vue

@@ -13,21 +13,21 @@
       <el-form-item label="文件类型" prop="fileType">
         <el-select v-model="formData.fileType" placeholder="请选择">
           <el-option
-            v-for="dict in getStrDictOptions(DICT_TYPE.PMS_DEVICE_STATUS)"
+            v-for="dict in getStrDictOptions(DICT_TYPE.PMS_FILE_TYPE)"
             :key="dict.label"
             :label="dict.label"
             :value="dict.value"
           />
         </el-select>
       </el-form-item>
-      <el-form-item label="附件" prop="filePath">
+      <el-form-item label="附件" prop="filePath" style="">
         <UploadFileAll style="vertical-align: middle"
           :is-show-tip="false"
           v-model="formData.filePath"
           :multiple="formType === 'create'"
           :limit="formType === 'create' ? 5 : 1"
         />
-        <span style="vertical-align:middle;color: red;margin-left: 10px;margin-bottom: 10px">文件最大不超过30M</span>
+<!--        <span style="vertical-align:middle;color: red;margin-left: 10px;margin-bottom: 10px">文件最大不超过30M</span>-->
       </el-form-item>
       <el-form-item label="备注" prop="remark">
         <el-input v-model="formData.remark" type="textarea" placeholder="请输入备注" />

+ 8 - 3
src/views/system/tree/index.vue

@@ -20,9 +20,9 @@
             :inline="true"
             label-width="68px"
           >
-            <el-form-item label="文件名称" prop="fileName">
+            <el-form-item label="文件名称" prop="filename">
               <el-input
-                v-model="queryParams.fileName"
+                v-model="queryParams.filename"
                 placeholder="请输入文件名称"
                 clearable
                 @keyup.enter="handleQuery"
@@ -41,7 +41,11 @@
         <ContentWrap>
           <el-table v-loading="formLoading" :data="list" :stripe="true" :show-overflow-tooltip="true">
             <el-table-column label="文件名称" align="center" prop="filename" />
-            <el-table-column label="文件类型" align="center" prop="fileType" />
+            <el-table-column label="文件类型" align="center" prop="fileType" >
+              <template #default="scope">
+                <dict-tag :type="DICT_TYPE.PMS_FILE_TYPE" :value="scope.row.fileType" />
+              </template>
+            </el-table-column>
             <el-table-column label="文件大小" align="center" prop="fileSize" />
             <el-table-column label="查看预览" align="center" prop="filePath" >
               <template #default="scope">
@@ -116,6 +120,7 @@ import { ref, onMounted, onUnmounted } from 'vue'
 
 import PmsTree from '@/views/system/tree/PmsTree.vue'
 import {CACHE_KEY, useCache} from "@/hooks/web/useCache";
+import {DICT_TYPE} from "@/utils/dict";
 defineOptions({ name: 'IotTree' })
 
 const container = ref(null)