优化
This commit is contained in:
		| @ -9,7 +9,7 @@ VITE_APP_BASE_API = 'http://192.168.110.119:8899' | ||||
|  | ||||
| # 无人机接口地址 | ||||
|  | ||||
| VITE_APP_BASE_DRONE_API = 'http://192.168.110.8:9136' | ||||
| VITE_APP_BASE_DRONE_API = 'http://192.168.110.119:9136' | ||||
|  | ||||
| # 应用访问路径 例如使用前缀 /admin/ | ||||
| VITE_APP_CONTEXT_PATH = '/' | ||||
|  | ||||
| @ -210,7 +210,7 @@ | ||||
|       </div> | ||||
|     </div> | ||||
|     <script type="text/javascript" | ||||
| 		src="http://zmkg.cqet.top:8899/changxieoffice/web-apps/apps/api/documents/api.js"></script> | ||||
| 		src="http://58.17.134.85:7363/changxieoffice/web-apps/apps/api/documents/api.js"></script> | ||||
|     <script src="./src/assets/sdk/YJEarth.min.js"></script> | ||||
|     <script src="./src/utils/reconnecting-websocket.js"></script> | ||||
|     <script type="module" src="/src/main.ts"></script> | ||||
|  | ||||
| @ -500,18 +500,8 @@ const initGeoTiff = async () => { | ||||
| }; | ||||
|  | ||||
| let map: any = null; | ||||
| const layerData = reactive<any>({}); | ||||
| const centerPosition = ref(fromLonLat([107.12932403398425, 23.805564054229908])); | ||||
| const initOLMap = () => { | ||||
|   console.log(111); | ||||
|   // const scoure = new TileLayer({ | ||||
|   //   // 设置图层的数据源为XYZ类型。XYZ是一个通用的瓦片图层源,它允许你通过URL模板来获取瓦片 | ||||
|   //   source: new XYZ({ | ||||
|   //     url: 'http://192.168.110.2:8000/api/projects/3/tasks/c2e3227f-343f-48b1-88c0-1432d6eab33f/orthophoto/tiles/{z}/{x}/{y}' | ||||
|   //   }) | ||||
|   // }); | ||||
|   // console.log(scoure); | ||||
|  | ||||
|   map = new Map({ | ||||
|     // 设置地图容器的ID | ||||
|     target: 'olMap', | ||||
| @ -519,16 +509,17 @@ const initOLMap = () => { | ||||
|     layers: [ | ||||
|       // 高德地图 | ||||
|       // TileLayer表示一个瓦片图层,它由一系列瓦片(通常是图片)组成,用于在地图上显示地理数据。 | ||||
|  | ||||
|       new TileLayer({ | ||||
|         // 设置图层的数据源为XYZ类型。XYZ是一个通用的瓦片图层源,它允许你通过URL模板来获取瓦片 | ||||
|         source: new XYZ({ | ||||
|           url: 'https://webst02.is.autonavi.com/appmaptile?style=6&x={x}&y={y}&z={z}' | ||||
|           url: 'https://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/{z}/{y}/{x}', | ||||
|           maxZoom: 18 | ||||
|         }) | ||||
|       }), | ||||
|       new TileLayer({ | ||||
|         // 设置图层的数据源为XYZ类型。XYZ是一个通用的瓦片图层源,它允许你通过URL模板来获取瓦片 | ||||
|         source: new XYZ({ | ||||
|           url: 'http://webst02.is.autonavi.com/appmaptile?x={x}&y={y}&z={z}&lang=zh_cn&size=1&scale=1&style=8' | ||||
|           url: 'http://192.168.110.2:8000/api/projects/3/tasks/c2e3227f-343f-48b1-88c0-1432d6eab33f/orthophoto/tiles/{z}/{x}/{y}' | ||||
|         }) | ||||
|       }) | ||||
|       // imageLayer.value | ||||
| @ -541,7 +532,7 @@ const initOLMap = () => { | ||||
|       center: centerPosition.value, //地图中心点 | ||||
|       zoom: 15, // 缩放级别 | ||||
|       minZoom: 0, // 最小缩放级别 | ||||
|       // maxZoom: 18, // 最大缩放级别 | ||||
|       // maxZoom: 19, // 最大缩放级别 | ||||
|       constrainResolution: true // 因为存在非整数的缩放级别,所以设置该参数为true来让每次缩放结束后自动缩放到距离最近的一个整数级别,这个必须要设置,当缩放在非整数级别时地图会糊 | ||||
|       // projection: 'EPSG:4326' // 投影坐标系,默认是3857 | ||||
|     }), | ||||
| @ -848,8 +839,6 @@ const toggleFeatureHighlight = (feature: Feature, addIfNotExist = true) => { | ||||
|  | ||||
| onMounted(async () => { | ||||
|   // 地图初始化 | ||||
|   // geoTiffLoading.value = true; | ||||
|   await initGeoTiff(); | ||||
|   initOLMap(); | ||||
|   // geoTiffLoading.value = false; | ||||
|   map.addLayer(sharedLayer); | ||||
|  | ||||
| @ -22,6 +22,10 @@ | ||||
|         </el-card> | ||||
|       </div> | ||||
|     </transition> | ||||
| <<<<<<< HEAD | ||||
| ======= | ||||
|  | ||||
| >>>>>>> 64b04286e36ef42ab8a27f17406454b185d48e80 | ||||
|     <el-card shadow="never"> | ||||
|       <template #header> | ||||
|         <el-row :gutter="10" class="mb8"> | ||||
|  | ||||
| @ -29,6 +29,7 @@ | ||||
|           <el-table v-loading="loading" :data="tableData" border height="63vh" :empty-text="emptyText"> | ||||
|             <el-table-column label="序号" align="center" type="index" width="80px" /> | ||||
|             <el-table-column label="文件名称" align="center" prop="fileName" min-width="100px" /> | ||||
|             <el-table-column label="文件类型" align="center" prop="fileSuffix" min-width="100px" /> | ||||
|             <el-table-column label="文件路径" align="center" min-width="100px"> | ||||
|               <template #default="scope"> | ||||
|                 <span>{{ filterfilenPath(scope.row.filePath) }}</span> | ||||
| @ -45,7 +46,7 @@ | ||||
|               </template> | ||||
|             </el-table-column> | ||||
|           </el-table> | ||||
|           <pagination :total="tableData.length" v-model:page="pageNum" v-model:limit="pageSize" @pagination="getDataFileQuery" /> | ||||
|           <pagination :total="total" v-model:page="formData.pageNum" v-model:limit="formData.pageSize" @pagination="getDataFileQuery" /> | ||||
|         </div> | ||||
|       </div> | ||||
|     </el-dialog> | ||||
| @ -57,30 +58,15 @@ import { ref, reactive, getCurrentInstance, nextTick } from 'vue'; | ||||
| import { listKnowledgeDocument, getProfileDetail } from '@/api/quality/knowledgeDocument'; | ||||
| import { useUserStoreHook } from '@/store/modules/user'; | ||||
|  | ||||
| const emit = defineEmits(['onExport', 'onExportView']); | ||||
| const emit = defineEmits(['onExport', 'onExportView', 'onBook']); | ||||
| const stores = useUserStoreHook(); | ||||
| const { proxy } = getCurrentInstance() as any; | ||||
|  | ||||
| const documentDetailRef = ref(); | ||||
| const allTreeRef = ref(); | ||||
| const baseURL: string | undefined | boolean = import.meta.env.VITE_API_URL; | ||||
|  | ||||
| const loading = ref(false); | ||||
| const tableData = ref<any[]>([]); | ||||
| const isShowDialog = ref(false); | ||||
| const formData = reactive({ fileName: '', projectId: stores.selectedProject.id }); | ||||
| const projectList = ref<any[]>([]); | ||||
| const projectQuery = reactive({ name: '' }); | ||||
| const pageNum = ref(1); | ||||
| const pageSize = ref(10); | ||||
| const formData = reactive({ fileName: '', projectId: stores.selectedProject.id, pageNum: 1, pageSize: 10 }); | ||||
| const total = ref(0); | ||||
| const showDocumentDetail = ref(false); | ||||
| const emptyText = ref('暂无数据'); | ||||
| const treeList = ref<any[]>([]); | ||||
| const arrayList = ref<any[]>([]); | ||||
| const infoMap = ref(new Map()); | ||||
| const infoList = ref<any[]>([]); | ||||
| const paramsQuery = reactive({ idStr: '', project: '' }); | ||||
|  | ||||
| const openDialog = () => { | ||||
|   isShowDialog.value = true; | ||||
| @ -104,7 +90,7 @@ const getDataFileQuery = () => { | ||||
|     tableData.value = []; | ||||
|     if (res.code == 200 && res.rows?.length) { | ||||
|       tableData.value = res.rows; | ||||
|       total.value = res.rows.length; | ||||
|       total.value = res.total; | ||||
|     } else { | ||||
|       emptyText.value = '没有查询到数据,请重新输入搜索'; | ||||
|     } | ||||
| @ -112,15 +98,7 @@ const getDataFileQuery = () => { | ||||
| }; | ||||
|  | ||||
| const onBook = (row: any) => { | ||||
|   return; | ||||
|   getProfileDetail(row.id).then((res: any) => { | ||||
|     if (res.code == 200) { | ||||
|       showDocumentDetail.value = true; | ||||
|       nextTick(() => { | ||||
|         documentDetailRef.value.openDialog(res.data); | ||||
|       }); | ||||
|     } | ||||
|   }); | ||||
|   emit('onBook', row); | ||||
| }; | ||||
|  | ||||
| const onExport = (row: any) => { | ||||
|  | ||||
| @ -93,13 +93,14 @@ | ||||
|             <el-table v-loading="state.loading" :data="state.infoList" height="67vh" border> | ||||
|               <el-table-column label="序号" align="center" type="index" min-width="50px" /> | ||||
|               <el-table-column label="文件名称" align="center" prop="fileName"></el-table-column> | ||||
|               <el-table-column label="上传时间" align="center" prop="createdAt"> </el-table-column> | ||||
|               <el-table-column label="操作" align="center"> | ||||
|               <el-table-column label="文件类型" align="center" prop="fileSuffix" width="100px" /> | ||||
|               <el-table-column label="上传时间" align="center" prop="createTime"> </el-table-column> | ||||
|               <el-table-column label="操作" align="center" width="300"> | ||||
|                 <template #default="scope"> | ||||
|                   <el-button | ||||
|                     type="primary" | ||||
|                     v-auth="'/zm/api/v1/system/documentData/get'" | ||||
|                     v-if="state.acceptType.includes(scope.row.suffix)" | ||||
|                     v-if="acceptType.includes(scope.row.fileSuffix)" | ||||
|                     link | ||||
|                     @click="handleView(scope.row)" | ||||
|                     ><el-icon><View /></el-icon>查看</el-button | ||||
| @ -107,7 +108,7 @@ | ||||
|                   <el-button | ||||
|                     type="primary" | ||||
|                     v-auth="'/zm/api/v1/system/documentData/complaintBoxAdd'" | ||||
|                     v-if="state.acceptType.includes(scope.row.suffix)" | ||||
|                     v-if="state.wordType.includes(scope.row.fileSuffix)" | ||||
|                     link | ||||
|                     @click="updataView(scope.row)" | ||||
|                     ><el-icon><EditPen /></el-icon>修改文件</el-button | ||||
| @ -132,9 +133,9 @@ | ||||
|             /> | ||||
|           </div> | ||||
|         </div> | ||||
|         <!-- <documentDetail ref="documentDetailRef" v-if="state.showDocumentDetail" @onClose="onClose"></documentDetail> | ||||
|     <documentsEdit ref="documentDataEditRef" v-if="state.showdocumentDataEdit" @onClose="onCloseEdit"></documentsEdit> | ||||
|     <uploadFileder | ||||
|         <documentsDeailsVue ref="documentDetailRef" v-if="state.showDocumentDetail" @onClose="onClose"></documentsDeailsVue> | ||||
|         <documentsEdit ref="documentDataEditRef" v-if="state.showdocumentDataEdit" @onClose="onCloseEdit"></documentsEdit> | ||||
|         <!-- <uploadFileder | ||||
|       ref="uploadFilederRef" | ||||
|       v-if="state.showUploadFileder" | ||||
|       @onCloseFile="state.showUploadFileder = false" | ||||
| @ -142,7 +143,7 @@ | ||||
|     ></uploadFileder> | ||||
|     <fileOnline ref="fileOnlineRef" @getfileOnlineType="getfileOnlineType"></fileOnline> | ||||
|     <moveFile ref="moveFileRef"></moveFile> --> | ||||
|         <bookFile ref="bookFileRef" @onExportView="onExportView" @onExport="onExport"></bookFile> | ||||
|         <bookFile ref="bookFileRef" @onExportView="onExportView" @onExport="onExport" @onBook="handleView"></bookFile> | ||||
|         <el-dialog title="上传文件" v-model="uploadFileder" width="30%"> | ||||
|           <file-upload v-model="state.paramsQuery.file"></file-upload> | ||||
|           <template #footer> | ||||
| @ -158,6 +159,15 @@ | ||||
|       <RecyclingStation ref="recylingRef"></RecyclingStation> | ||||
|     </el-tab-pane> | ||||
|   </el-tabs> | ||||
|   <el-image-viewer | ||||
|     ref="imageRef" | ||||
|     style="width: 100%; height: 100%" | ||||
|     :url-list="[imgUrl]" | ||||
|     v-if="imgUrl" | ||||
|     show-progress | ||||
|     fit="cover" | ||||
|     @close="imgUrl = ''" | ||||
|   /> | ||||
| </template> | ||||
|  | ||||
| <script setup name="KnowledgeDocument" lang="ts"> | ||||
| @ -179,12 +189,8 @@ type KnowledgeDocumentOption = { | ||||
|   fileName: string; | ||||
|   children?: KnowledgeDocumentOption[]; | ||||
| }; | ||||
| // import documentDetail from '/@/views/OnlineEngineering/comm/documentsDetail/index.vue'; | ||||
| // import documentsEdit from '/@/views/OnlineEngineering/comm/documentsEdit/index.vue'; | ||||
| // import profileData from '/@/views/OnlineEngineering/profileData/index.vue'; | ||||
| // import uploadFileder from '/@/views/OnlineEngineering/comm/uploadFileder/index.vue'; | ||||
| // import fileOnline from '/@/views/OnlineEngineering/profileEngineering/fileOnline/index.vue'; | ||||
| // import moveFile from '/@/views/OnlineEngineering/profileEngineering/moveFile/index.vue'; | ||||
| import DocumentsEdit from '@/views/safety/knowledgeDocument/component/documentsEdit.vue'; | ||||
| import documentsDeailsVue from '@/views/safety/knowledgeDocument/component/documentsDeails.vue'; | ||||
| import RecyclingStation from './component/recyclingStation.vue'; | ||||
|  | ||||
| import { useUserStoreHook } from '@/store/modules/user'; | ||||
| @ -205,6 +211,8 @@ const uploadParams = computed(() => { | ||||
|   }; | ||||
| }); | ||||
|  | ||||
| const imgUrl = ref<string>(''); | ||||
|  | ||||
| const filterText = ref(''); | ||||
| const treeRef = ref(); | ||||
| const documentDetailRef = ref(); | ||||
| @ -245,11 +253,15 @@ const state = reactive({ | ||||
|   parentName: '', | ||||
|   selectedNodeId: null, | ||||
|   projectId: currentProject.value?.id || '', | ||||
|   acceptType: ['.pdf', '.doc', '.docx', '.xls', '.xlsx', '.ppt', '.pptx'], | ||||
|   imgType: ['jpg', 'png', 'jpeg', 'gif', 'svg'], | ||||
|   wordType: ['pdf', 'doc', 'docx', 'xls', 'xlsx', 'ppt', 'pptx'], | ||||
|   browserViewableType: ['html', 'htm', 'txt', 'log', 'md', 'json', 'xml', 'css', 'js'], | ||||
|  | ||||
|   draggableCheck: true, | ||||
|   activeName: '' | ||||
| }); | ||||
|  | ||||
| const acceptType = computed(() => [...state.imgType, ...state.wordType, ...state.browserViewableType]); | ||||
| watch(filterText, (val: any) => { | ||||
|   treeRef.value!.filter(val); | ||||
| }); | ||||
| @ -418,15 +430,17 @@ const updateName = (row) => { | ||||
|   editName(row, '请输入文件名称', 1); | ||||
| }; | ||||
| const handleView = (row) => { | ||||
|   // getProfileDetail(row.id).then((res: any) => { | ||||
|   //   if (res.code == 200) { | ||||
|   //     // 查看文档 | ||||
|   //     state.showDocumentDetail = true; | ||||
|   //     nextTick(() => { | ||||
|   //       documentDetailRef.value.openDialog(res.data); | ||||
|   //     }); | ||||
|   //   } | ||||
|   // }); | ||||
|   if (state.imgType.includes(row.fileSuffix)) { | ||||
|     imgUrl.value = row.fileUrl; | ||||
|     return; | ||||
|   } else if (state.wordType.includes(row.fileSuffix)) { | ||||
|     state.showDocumentDetail = true; | ||||
|     nextTick(() => { | ||||
|       documentDetailRef.value.openDialog(row); | ||||
|     }); | ||||
|   } else { | ||||
|     window.open(row.fileUrl); | ||||
|   } | ||||
| }; | ||||
| // 关闭在线编辑弹框 | ||||
| const onClose = () => { | ||||
| @ -440,7 +454,7 @@ const updataView = (row) => { | ||||
|   // 修改文档 | ||||
|   state.showdocumentDataEdit = true; | ||||
|   nextTick(() => { | ||||
|     documentDataEditRef.value.openDialog(row, '/zm/api/v1/system/busConstructionUser/complaintBoxAddTwo'); | ||||
|     documentDataEditRef.value.openDialog(row, '/quality/knowledgeDocument/changxie/callback/'); | ||||
|   }); | ||||
| }; | ||||
| // 删除文件及文件夹 | ||||
|  | ||||
| @ -29,6 +29,8 @@ | ||||
|           <el-table v-loading="loading" :data="tableData" border height="63vh" :empty-text="emptyText"> | ||||
|             <el-table-column label="序号" align="center" type="index" width="80px" /> | ||||
|             <el-table-column label="文件名称" align="center" prop="fileName" min-width="100px" /> | ||||
|             <el-table-column label="文件类型" align="center" prop="fileSuffix" width="100px" /> | ||||
|  | ||||
|             <el-table-column label="文件路径" align="center" min-width="100px"> | ||||
|               <template #default="scope"> | ||||
|                 <span>{{ filterfilenPath(scope.row.filePath) }}</span> | ||||
| @ -45,7 +47,7 @@ | ||||
|               </template> | ||||
|             </el-table-column> | ||||
|           </el-table> | ||||
|           <pagination :total="tableData.length" v-model:page="pageNum" v-model:limit="pageSize" @pagination="getDataFileQuery" /> | ||||
|           <pagination :total="total" v-model:page="formData.pageNum" v-model:limit="formData.pageSize" @pagination="getDataFileQuery" /> | ||||
|         </div> | ||||
|       </div> | ||||
|     </el-dialog> | ||||
| @ -53,34 +55,23 @@ | ||||
| </template> | ||||
|  | ||||
| <script lang="ts" setup> | ||||
| import { ref, reactive, getCurrentInstance, nextTick } from 'vue'; | ||||
| import { listKnowledgeDocument, getProfileDetail } from '@/api/safety/knowledgeDocument'; | ||||
| import { listKnowledgeDocument } from '@/api/safety/knowledgeDocument'; | ||||
| import { useUserStoreHook } from '@/store/modules/user'; | ||||
|  | ||||
| const emit = defineEmits(['onExport', 'onExportView']); | ||||
| const emit = defineEmits(['onExport', 'onExportView', 'onBook']); | ||||
| const stores = useUserStoreHook(); | ||||
| const { proxy } = getCurrentInstance() as any; | ||||
|  | ||||
| const documentDetailRef = ref(); | ||||
| const allTreeRef = ref(); | ||||
| const baseURL: string | undefined | boolean = import.meta.env.VITE_API_URL; | ||||
|  | ||||
| const loading = ref(false); | ||||
| const tableData = ref<any[]>([]); | ||||
| const isShowDialog = ref(false); | ||||
| const formData = reactive({ fileName: '', projectId: stores.selectedProject.id }); | ||||
| const projectList = ref<any[]>([]); | ||||
| const projectQuery = reactive({ name: '' }); | ||||
| const pageNum = ref(1); | ||||
| const pageSize = ref(10); | ||||
| const formData = reactive({ | ||||
|   fileName: '', | ||||
|   projectId: stores.selectedProject.id, | ||||
|   pageNum: 1, | ||||
|   pageSize: 10 | ||||
| }); | ||||
| const total = ref(0); | ||||
| const showDocumentDetail = ref(false); | ||||
| const emptyText = ref('暂无数据'); | ||||
| const treeList = ref<any[]>([]); | ||||
| const arrayList = ref<any[]>([]); | ||||
| const infoMap = ref(new Map()); | ||||
| const infoList = ref<any[]>([]); | ||||
| const paramsQuery = reactive({ idStr: '', project: '' }); | ||||
|  | ||||
| const openDialog = () => { | ||||
|   isShowDialog.value = true; | ||||
| @ -104,7 +95,7 @@ const getDataFileQuery = () => { | ||||
|     tableData.value = []; | ||||
|     if (res.code == 200 && res.rows?.length) { | ||||
|       tableData.value = res.rows; | ||||
|       total.value = res.rows.length; | ||||
|       total.value = res.total; | ||||
|     } else { | ||||
|       emptyText.value = '没有查询到数据,请重新输入搜索'; | ||||
|     } | ||||
| @ -112,15 +103,7 @@ const getDataFileQuery = () => { | ||||
| }; | ||||
|  | ||||
| const onBook = (row: any) => { | ||||
|   return; | ||||
|   getProfileDetail(row.id).then((res: any) => { | ||||
|     if (res.code == 200) { | ||||
|       showDocumentDetail.value = true; | ||||
|       nextTick(() => { | ||||
|         documentDetailRef.value.openDialog(res.data); | ||||
|       }); | ||||
|     } | ||||
|   }); | ||||
|   emit('onBook', row); | ||||
| }; | ||||
|  | ||||
| const onExport = (row: any) => { | ||||
|  | ||||
| @ -13,6 +13,8 @@ | ||||
| </template> | ||||
| <script lang="ts"> | ||||
| import { setMove } from '@/utils/moveDiv'; | ||||
| declare const CXO_API: any; | ||||
|  | ||||
| export default defineComponent({ | ||||
|   name: 'index', | ||||
|   setup(props, { emit }) { | ||||
| @ -68,10 +70,6 @@ export default defineComponent({ | ||||
|     }; | ||||
|     const init = (obj) => { | ||||
|       let documentKey = obj.id.toString() + new Date().getTime(); | ||||
|       let baseURL = import.meta.env.VITE_APP_BASE_API + '/'; | ||||
|       console.log(baseURL); | ||||
|  | ||||
|       let url = baseURL + obj.filePath.replaceAll('+', ' '); | ||||
|       console.log('🚀 ~ init ~ url:', obj.fileUrl); | ||||
|       let type = obj.fileSuffix; | ||||
|       if (obj.fileSuffix.includes('.')) { | ||||
| @ -83,8 +81,6 @@ export default defineComponent({ | ||||
|       } else if (type == 'ppt' || type == 'pptx') { | ||||
|         documentType = 'slide'; //演示文档文件 | ||||
|       } | ||||
|       console.log(documentType, obj.fileSuffix); | ||||
|  | ||||
|       new CXO_API.CXEditor('box_app', { | ||||
|         document: { | ||||
|           fileType: type, | ||||
| @ -130,7 +126,7 @@ export default defineComponent({ | ||||
|   } | ||||
| }); | ||||
| </script> | ||||
| <style lang="scss"> | ||||
| <style lang="scss" scoped> | ||||
| .document_detail { | ||||
|   position: fixed; | ||||
|   top: 50%; | ||||
|  | ||||
| @ -16,6 +16,10 @@ import { toRefs, reactive, onMounted, ref, defineComponent, watch, getCurrentIns | ||||
| import { setMove } from '@/utils/moveDiv'; | ||||
| import { useUserStoreHook } from '@/store/modules/user'; | ||||
|  | ||||
| // Ensure CXO_API is available globally or import it if it's a module | ||||
| // Example for global usage (e.g., included via script tag in index.html): | ||||
| declare const CXO_API: any; | ||||
|  | ||||
| export default defineComponent({ | ||||
|   name: 'index', | ||||
|   setup(props, { emit }) { | ||||
| @ -88,7 +92,7 @@ export default defineComponent({ | ||||
|       } else if (type == 'ppt' || type == 'pptx') { | ||||
|         documentType = 'slide'; //演示文档文件 | ||||
|       } | ||||
|       console.log(documentType, obj.fileSuffix.substring(1), obj.fileUrl); | ||||
|       console.log(baseURL + state.postUrl + '?path=' + obj.filePath + '&id=' + obj.id); | ||||
|       new CXO_API.CXEditor('box_app_edit', { | ||||
|         document: { | ||||
|           fileType: obj.fileSuffix, | ||||
| @ -97,8 +101,9 @@ export default defineComponent({ | ||||
|           url: obj.fileUrl | ||||
|         }, | ||||
|         documentType, | ||||
|         token: stores.token, | ||||
|         editorConfig: { | ||||
|           callbackUrl: baseURL + state.postUrl + '?path=' + obj.filePath | ||||
|           callbackUrl: baseURL + state.postUrl + obj.id + '?path=' + obj.filePath | ||||
|         }, | ||||
|         events: { | ||||
|           onDocumentReady: onDocumentReady, | ||||
| @ -133,7 +138,7 @@ export default defineComponent({ | ||||
|   } | ||||
| }); | ||||
| </script> | ||||
| <style lang="scss"> | ||||
| <style lang="scss" scoped> | ||||
| .document_detail_eidt { | ||||
|   position: fixed; | ||||
|   top: 50%; | ||||
|  | ||||
							
								
								
									
										
											BIN
										
									
								
								src/views/safety/knowledgeDocument/icon/full.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								src/views/safety/knowledgeDocument/icon/full.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 2.8 KiB | 
							
								
								
									
										
											BIN
										
									
								
								src/views/safety/knowledgeDocument/icon/suo.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								src/views/safety/knowledgeDocument/icon/suo.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 2.4 KiB | 
| @ -12,6 +12,7 @@ | ||||
|                   :uploadUrl="uploadUrl" | ||||
|                   :params="uploadParams" | ||||
|                   :on-upload-success="uploadFile" | ||||
|                   :fileType="[]" | ||||
|                 > | ||||
|                   <el-button type="primary" style="float: left" :disabled="!state.parentPid"> | ||||
|                     <el-icon size="small"><Plus /></el-icon>上传文件 | ||||
| @ -77,29 +78,26 @@ | ||||
|                       > | ||||
|                     </el-form-item> | ||||
|                   </el-col> | ||||
|                   <!-- <el-col :span="4"> | ||||
| 								<el-button type="primary" v-auth="'/zm/api/v1/system/documentData/add'" :disabled="!parentPid" @click="uploadFile(2)" | ||||
| 									><el-icon><Plus /></el-icon>导入本地文件</el-button | ||||
| 								> | ||||
| 							</el-col> --> | ||||
|                   <!-- <el-col :span="4"> | ||||
| 								<el-button type="primary" @click="onMoveFile" | ||||
| 									><el-icon><Plus /></el-icon>移动</el-button | ||||
| 								> | ||||
| 							</el-col> --> | ||||
|                 </el-row> | ||||
|               </el-form> | ||||
|             </div> | ||||
|             <el-table v-loading="state.loading" :data="state.infoList" height="67vh" border> | ||||
|               <el-table-column label="序号" align="center" type="index" min-width="50px" /> | ||||
|               <el-table-column label="文件名称" align="center" prop="fileName"></el-table-column> | ||||
|               <el-table-column label="文件类型" align="center" prop="fileSuffix" width="100px" /> | ||||
|  | ||||
|               <el-table-column label="上传时间" align="center" prop="createTime"> </el-table-column> | ||||
|               <el-table-column label="操作" align="center" width="300"> | ||||
|                 <template #default="scope"> | ||||
|                   <el-button type="primary" link @click="handleView(scope.row)" | ||||
|                   <el-button type="primary" link @click="handleView(scope.row)" v-if="acceptType.includes(scope.row.fileSuffix)" | ||||
|                     ><el-icon><View /></el-icon>查看</el-button | ||||
|                   > | ||||
|                   <el-button type="primary" v-auth="'/zm/api/v1/system/documentData/complaintBoxAdd'" link @click="updataView(scope.row)" | ||||
|                   <el-button | ||||
|                     type="primary" | ||||
|                     v-auth="'/zm/api/v1/system/documentData/complaintBoxAdd'" | ||||
|                     v-if="state.wordType.includes(scope.row.fileSuffix)" | ||||
|                     link | ||||
|                     @click="updataView(scope.row)" | ||||
|                     ><el-icon><EditPen /></el-icon>修改文件</el-button | ||||
|                   > | ||||
|                   <el-button type="primary" v-auth="'/zm/api/v1/system/documentData/uniFolderDownload'" link @click="onExportView(scope.row)" | ||||
| @ -124,15 +122,7 @@ | ||||
|         </div> | ||||
|         <documentsDeailsVue ref="documentDetailRef" v-if="state.showDocumentDetail" @onClose="onClose"></documentsDeailsVue> | ||||
|         <documentsEdit ref="documentDataEditRef" v-if="state.showdocumentDataEdit" @onClose="onCloseEdit"></documentsEdit> | ||||
|         <!--<uploadFileder | ||||
|       ref="uploadFilederRef" | ||||
|       v-if="state.showUploadFileder" | ||||
|       @onCloseFile="state.showUploadFileder = false" | ||||
|       @getDocumentListFileType="getdocumentDataListFileType" | ||||
|     ></uploadFileder> | ||||
|     <fileOnline ref="fileOnlineRef" @getfileOnlineType="getfileOnlineType"></fileOnline> | ||||
|     <moveFile ref="moveFileRef"></moveFile> --> | ||||
|         <bookFile ref="bookFileRef" @onExportView="onExportView" @onExport="onExport"></bookFile> | ||||
|         <bookFile ref="bookFileRef" @onExportView="onExportView" @onBook="handleView" @onExport="onExport"></bookFile> | ||||
|         <el-dialog title="上传文件" v-model="uploadFileder" width="30%"> | ||||
|           <file-upload v-model="state.paramsQuery.file"></file-upload> | ||||
|           <template #footer> | ||||
| @ -148,32 +138,28 @@ | ||||
|       <RecyclingStation ref="recylingRef"></RecyclingStation> | ||||
|     </el-tab-pane> | ||||
|   </el-tabs> | ||||
|   <el-image-viewer | ||||
|     ref="imageRef" | ||||
|     style="width: 100%; height: 100%" | ||||
|     :url-list="[imgUrl]" | ||||
|     v-if="imgUrl" | ||||
|     show-progress | ||||
|     fit="cover" | ||||
|     @close="imgUrl = ''" | ||||
|   /> | ||||
| </template> | ||||
|  | ||||
| <script setup name="KnowledgeDocument" lang="ts"> | ||||
| import { | ||||
|   listKnowledgeDocument, | ||||
|   getKnowledgeDocument, | ||||
|   delKnowledgeDocument, | ||||
|   addKnowledgeDocument, | ||||
|   getUniFolderDownloadList, | ||||
|   treeStructureData, | ||||
|   documentDataEdit, | ||||
|   getProfileDetail, | ||||
|   updateKnowledgeDocument | ||||
|   documentDataEdit | ||||
| } from '@/api/safety/knowledgeDocument'; | ||||
| import { KnowledgeDocumentVO, KnowledgeDocumentQuery, KnowledgeDocumentForm } from '@/api/quality/knowledgeDocument/types'; | ||||
|  | ||||
| type KnowledgeDocumentOption = { | ||||
|   id: number; | ||||
|   fileName: string; | ||||
|   children?: KnowledgeDocumentOption[]; | ||||
| }; | ||||
| import documentsEdit from './component/documentsEdit.vue'; | ||||
| // import profileData from '/@/views/OnlineEngineering/profileData/index.vue'; | ||||
| // import uploadFileder from '/@/views/OnlineEngineering/comm/uploadFileder/index.vue'; | ||||
| // import fileOnline from '/@/views/OnlineEngineering/profileEngineering/fileOnline/index.vue'; | ||||
| // import moveFile from '/@/views/OnlineEngineering/profileEngineering/moveFile/index.vue'; | ||||
| import documentsDeailsVue from './component/documentsDeails.vue'; | ||||
| import RecyclingStation from './component/recyclingStation.vue'; | ||||
|  | ||||
| @ -195,16 +181,15 @@ const uploadParams = computed(() => { | ||||
|   }; | ||||
| }); | ||||
|  | ||||
| const imgUrl = ref<string>(''); | ||||
| const filterText = ref(''); | ||||
| const treeRef = ref(); | ||||
| const documentDetailRef = ref(); | ||||
| const documentDataEditRef = ref(); | ||||
| const uploadFileder = ref(false); | ||||
| const fileOnlineRef = ref(); | ||||
| const moveFileRef = ref(); | ||||
| const imageRef = ref(); | ||||
| const recylingRef = ref(); | ||||
| const bookFileRef = ref(); | ||||
| const baseURL: string | undefined | boolean = import.meta.env.VITE_API_URL; | ||||
| const state = reactive({ | ||||
|   treeList: [] as any, | ||||
|   arrayList: [] as any, | ||||
| @ -235,46 +220,20 @@ const state = reactive({ | ||||
|   parentName: '', | ||||
|   selectedNodeId: null, | ||||
|   projectId: currentProject.value?.id || '', | ||||
|   acceptType: ['.pdf', '.doc', '.docx', '.xls', '.xlsx', '.ppt', '.pptx'], | ||||
|   imgType: ['jpg', 'png', 'jpeg', 'gif', 'svg'], | ||||
|   wordType: ['pdf', 'doc', 'docx', 'xls', 'xlsx', 'ppt', 'pptx'], | ||||
|   browserViewableType: ['html', 'htm', 'txt', 'log', 'md', 'json', 'xml', 'css', 'js'], | ||||
|  | ||||
|   draggableCheck: true, | ||||
|   activeName: '' | ||||
| }); | ||||
|  | ||||
| const acceptType = computed(() => [...state.imgType, ...state.wordType, ...state.browserViewableType]); | ||||
|  | ||||
| watch(filterText, (val: any) => { | ||||
|   treeRef.value!.filter(val); | ||||
| }); | ||||
|  | ||||
| // 新建文件夹 | ||||
| // const addFile = () => { | ||||
| //   let tip = '在根目录下新建文件夹'; | ||||
| //   if (state.parentPid) { | ||||
| //     tip = '在“' + state.parentName + '文件夹”下新建文件夹'; | ||||
| //   } | ||||
| //   ElMessageBox.prompt('请输入文件夹名称', tip, { | ||||
| //     confirmButtonText: '确定', | ||||
| //     cancelButtonText: '取消', | ||||
| //     inputErrorMessage: '请输入文件夹名称', | ||||
| //     inputValue: '' | ||||
| //   }) | ||||
| //     .then(({ value }) => { | ||||
| //       documentDataNewFolder({ fileName: value, pid: state.parentPid, fileType: 3, projectId: state.projectId }).then((res: any) => { | ||||
| //         if (res.code == 0) { | ||||
| //           ElMessage({ | ||||
| //             type: 'success', | ||||
| //             message: '添加成功' | ||||
| //           }); | ||||
| //           gettreeStructureData(); | ||||
| //         } else { | ||||
| //           ElMessage({ | ||||
| //             type: 'error', | ||||
| //             message: res.message | ||||
| //           }); | ||||
| //         } | ||||
| //       }); | ||||
| //     }) | ||||
| //     .catch(() => {}); | ||||
| // }; | ||||
|  | ||||
| // 上传文件 | ||||
| const uploadFile = (files: any[]) => { | ||||
|   proxy.$modal.success('上传成功'); | ||||
| @ -289,7 +248,6 @@ const subMitUpload = () => { | ||||
|     ElMessage.warning('请选择文件!'); | ||||
|     return; | ||||
|   } | ||||
|  | ||||
|   addKnowledgeDocument(state.paramsQuery, { projectId: state.projectId, pid: state.parentPid }).then((res: any) => { | ||||
|     if (res.code == 200) { | ||||
|       ElMessage.success('上传成功'); | ||||
| @ -409,10 +367,17 @@ const updateName = (row) => { | ||||
|   editName(row, '请输入文件名称', 1); | ||||
| }; | ||||
| const handleView = (row) => { | ||||
|   state.showDocumentDetail = true; | ||||
|   nextTick(() => { | ||||
|     documentDetailRef.value.openDialog(row); | ||||
|   }); | ||||
|   if (state.imgType.includes(row.fileSuffix)) { | ||||
|     imgUrl.value = row.fileUrl; | ||||
|     return; | ||||
|   } else if (state.wordType.includes(row.fileSuffix)) { | ||||
|     state.showDocumentDetail = true; | ||||
|     nextTick(() => { | ||||
|       documentDetailRef.value.openDialog(row); | ||||
|     }); | ||||
|   } else { | ||||
|     window.open(row.fileUrl); | ||||
|   } | ||||
| }; | ||||
| // 关闭在线编辑弹框 | ||||
| const onClose = () => { | ||||
| @ -426,7 +391,7 @@ const updataView = (row) => { | ||||
|   // 修改文档 | ||||
|   state.showdocumentDataEdit = true; | ||||
|   nextTick(() => { | ||||
|     documentDataEditRef.value.openDialog(row, '/changxie/callback'); | ||||
|     documentDataEditRef.value.openDialog(row, '/safety/knowledgeDocument/changxie/callback/'); | ||||
|   }); | ||||
| }; | ||||
| // 删除文件及文件夹 | ||||
| @ -484,15 +449,6 @@ const onExport = () => { | ||||
|     } | ||||
|   }); | ||||
| }; | ||||
| // 在线模板文件导入 | ||||
| const uploadOnlineFile = (node, data) => { | ||||
|   state.paramsQuery.folderId = data.folderId; | ||||
|   fileOnlineRef.value.openDialog(data.id); | ||||
| }; | ||||
| const onMoveFile = () => { | ||||
|   // 移动文件 | ||||
|   // moveFileRef.value.openDialog(); | ||||
| }; | ||||
|  | ||||
| // 查看所有资料 | ||||
| const onBook = () => { | ||||
|  | ||||
		Reference in New Issue
	
	Block a user