Selaa lähdekoodia

qhse资料库左侧菜单

yanghao 1 viikko sitten
vanhempi
commit
a9c6d73860
2 muutettua tiedostoa jossa 37 lisäystä ja 63 poistoa
  1. 33 63
      src/views/pms/qhse/data/IotInfoFormTree.vue
  2. 4 0
      src/views/pms/qhse/data/index.vue

+ 33 - 63
src/views/pms/qhse/data/IotInfoFormTree.vue

@@ -7,16 +7,9 @@
       label-width="100px"
       v-loading="formLoading">
       <el-form-item :label="t('fileInfo.fileDirectory')" prop="classId">
-        <el-tree-select
-          disabled="true"
-          v-model="formData.classId"
-          :data="fileList"
-          :props="defaultProps"
-          check-strictly
-          placeholder="请选择文件目录"
-          value-key="id" />
+        <el-input v-model="displayNodeName" disabled placeholder="请选择文件目录" />
       </el-form-item>
-      <el-form-item :label="t('fileInfo.appendix')" prop="filePath" style="">
+      <el-form-item :label="t('fileInfo.appendix')" prop="filePath">
         <file-upload
           style="height: 300px"
           @uploadSuccess="handleUploadSuccess"
@@ -46,35 +39,35 @@
     </el-form>
     <template #footer>
       <el-button
-        @click="submitForm"
-        type="primary"
         v-if="formType !== 'detail'"
+        type="primary"
         :disabled="formLoading"
-        >{{ t('common.ok') }}</el-button
-      >
+        @click="submitForm">
+        {{ t('common.ok') }}
+      </el-button>
       <el-button @click="dialogVisible = false">{{ t('common.cancel') }}</el-button>
     </template>
   </Dialog>
 </template>
+
 <script setup lang="ts">
 import { DataLibraryApi } from '@/api/pms/qhse/index'
 import { DICT_TYPE, getStrDictOptions } from '@/utils/dict'
-import { defaultProps, handleTree } from '@/utils/tree'
-import * as FileClassifyApi from '@/api/pms/info'
-import { IotTreeApi } from '@/api/system/tree'
 import FileUpload from '@/components/UploadFile/src/FileUpload.vue'
 
-/** 资料 表单 */
 defineOptions({ name: 'IotInfoFormTree' })
 
-const { t } = useI18n() // 国际化
-const message = useMessage() // 消息弹窗
+const { t } = useI18n()
+const message = useMessage()
+
+const dialogVisible = ref(false)
+const dialogTitle = ref('')
+const formLoading = ref(false)
+const formType = ref('')
+const displayNodeName = ref('')
+const formRef = ref()
+const formRules = reactive({})
 
-const dialogVisible = ref(false) // 弹窗的是否展示
-const dialogTitle = ref('') // 弹窗的标题
-const formLoading = ref(false) // 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用
-const fileList = ref<Tree[]>([]) // 树形结构
-const formType = ref('') // 表单的类型:create - 新增;update - 修改
 const formData = ref({
   id: undefined,
   deviceId: undefined,
@@ -88,72 +81,50 @@ const formData = ref({
   folderTree: [],
   folderJson: undefined
 })
-const formRules = reactive({
-  // classId: [{ required: true, message: '文件不能为空', trigger: 'blur' }],
-  // filePath: [{ required: true, message: '文件不能为空', trigger: 'blur' }]
-})
-const formRef = ref() // 表单 Ref
+
 const props = defineProps<{
   deviceId: string
   classId: string
   nodeId: string
   deptId: string
+  nodeName: string
 }>()
-const classIdd = ref('')
-/** 打开弹窗 */
+
+const emit = defineEmits(['success'])
+
 const open = async (type: string, id?: number) => {
-  // if (props.type==='file') {
-  await getTreeInfo()
-  // } else {
-  //   await getTree();
-  // }
   dialogVisible.value = true
   dialogTitle.value = t('action.' + type)
   formType.value = type
   resetForm()
-  // 修改时,设置数据
+
   if (id) {
     formLoading.value = true
     try {
-      formData.value.classid = formData.value = await DataLibraryApi.getIotInfo(id)
+      formData.value = await DataLibraryApi.getIotInfo(id)
     } finally {
       formLoading.value = false
     }
   } else {
     formData.value.fileType = 'file'
   }
-  classIdd.value = props.classId
+
+  displayNodeName.value = props.nodeName
   formData.value.classId = props.classId
   formData.value.deptId = props.deptId
 }
-defineExpose({ open }) // 提供 open 方法,用于打开弹窗
-const getTreeInfo = async () => {
-  const res = await IotTreeApi.getSimpleTreeList()
-  fileList.value = []
-  fileList.value.push(...handleTree(res))
-  // firstLevelKeys.value = treeList.value.map(node => node.id);
-  // emits('success', treeList.value[0].id)
-}
-/** 获得分类树 */
-const getTree = async () => {
-  const res = await FileClassifyApi.IotInfoClassifyApi.getSimpleInfotClassifyList(props.deviceId)
-  fileList.value = []
-  fileList.value.push(...handleTree(res))
-}
-/** 提交表单 */
-const emit = defineEmits(['success']) // 定义 success 事件,用于操作成功后的回调
+
+defineExpose({ open })
+
 const submitForm = async () => {
-  // 校验表单
   await formRef.value.validate()
-  // 提交请求
   formLoading.value = true
   try {
     const data = formData.value
     if (formType.value === 'create') {
       data.deviceId = props.deviceId
       data.deptId = props.deptId
-      // data.filePath = data.filePath.join(',')
-      formData.value.folderJson = JSON.stringify(formData.value.folderTree)
+      data.folderJson = JSON.stringify(data.folderTree)
       await DataLibraryApi.createIotInfo(data)
       message.success(t('common.createSuccess'))
     } else {
@@ -161,15 +132,12 @@ const submitForm = async () => {
       message.success(t('common.updateSuccess'))
     }
     dialogVisible.value = false
-    // 发送操作成功的事件
     emit('success')
-    debugger
   } finally {
     formLoading.value = false
   }
 }
 
-/** 重置表单 */
 const resetForm = () => {
   formData.value = {
     id: undefined,
@@ -181,8 +149,10 @@ const resetForm = () => {
     filePath: undefined,
     remark: undefined,
     fileList: [],
-    folderTree: []
+    folderTree: [],
+    folderJson: undefined
   }
+  displayNodeName.value = ''
   formRef.value?.resetFields()
 }
 

+ 4 - 0
src/views/pms/qhse/data/index.vue

@@ -189,6 +189,7 @@
     :deviceId="deviceId"
     :nodeId="nodeId"
     :deptId="deptId"
+    :nodeName="nodeName"
     :classId="clickNodeId" />
 </template>
 <script lang="ts" setup>
@@ -339,6 +340,7 @@ const deviceId = ref('')
 const clickNodeId = ref('')
 const nodeId = ref('')
 const deptId = ref('')
+const nodeName = ref('')
 
 const breadcrumbs = ref<BreadcrumbItem[]>([
   { id: null, name: '科瑞石油技术', type: 'root' } // 根节点
@@ -397,6 +399,7 @@ const handleFileNodeClick = async (row: FileRow) => {
 
   queryParams.classId = row.id
   deptId.value = row.originId != null ? String(row.originId) : ''
+  nodeName.value = row.name || row.filename || ''
   if (row.type == 'device') {
     id.value = Number(row.originId)
   }
@@ -448,6 +451,7 @@ const handleBreadcrumbClick = async (index: number) => {
   queryParams.classId = targetId
   clickNodeId.value = String(targetId)
   nodeId.value = String(targetId)
+  nodeName.value = targetBreadcrumbs[index].name || ''
   const data = await DataLibraryApi.DataLibraryApi.getChildContentFile(queryParams)
   list.value = data
   formLoading.value = false