Переглянути джерело

Merge branch 'liuqiang' into v3

liuQiang 1 рік тому
батько
коміт
4f9a4ad48d

+ 24 - 0
src/api/scanner/info.js

@@ -9,6 +9,15 @@ export function listInfo(query) {
   })
 }
 
+// 查询可用扫描仪
+export function selectInfo(query) {
+  return request({
+    url: '/scanner/info/select',
+    method: 'get',
+    params: query
+  })
+}
+
 // 查询扫描仪管理详细
 export function getInfo(scannerId) {
   return request({
@@ -16,6 +25,21 @@ export function getInfo(scannerId) {
     method: 'get'
   })
 }
+// 根据扫描仪ID获取文件
+export function getFileByScanerId(scannerId) {
+  return request({
+    url: '/scanner/info/files/' + scannerId,
+    method: 'get'
+  })
+}
+// 认领文件
+export function claimFile(data) {
+  return request({
+    url: '/scanner/info/claim',
+    method: 'post',
+    data: data
+  })
+}
 
 // 新增扫描仪管理
 export function addInfo(data) {

BIN
src/assets/images/scanFile.png


+ 176 - 0
src/components/MoveTo/MoveTo.vue

@@ -0,0 +1,176 @@
+<template>
+  <div>
+    <el-dialog
+      v-model="props.openScanMove"
+      width="800px"
+      top="20vh"
+      title="移动到"
+      @close="closeOpen"
+    >
+      <el-form :model="form" label-width="120px">
+        <el-form-item label="文件名称">
+          <el-input v-model="form.fileName" />
+        </el-form-item>
+        <el-form-item label="目标目录">
+          <el-input v-model="thisNode.label" disabled />
+        </el-form-item>
+        <el-form-item label="">
+          <!-- <el-tree
+            class="treebox"
+            :data="treeData"
+            :props="defaultProps"
+            @node-click="handleNodeClick"
+          /> -->
+          <el-tree
+            class="treebox"
+            :data="treeData"
+            :props="defaultProps"
+            @node-click="handleNodeClick"
+          >
+            <template #default="{ node, data }">
+              <span class="custom-tree-node" @click="checkoutNode(node, data)">
+                <img src="@/assets/images/file-img.png" alt="" />
+                <span>{{ node.label }}</span>
+              </span>
+            </template>
+          </el-tree>
+        </el-form-item>
+        <el-form-item>
+          <el-button type="primary" @click="onSubmit">确定</el-button>
+          <el-button @click="closeOpen">取消</el-button>
+        </el-form-item>
+      </el-form>
+    </el-dialog>
+  </div>
+</template>
+
+<script setup>
+import {
+  ref,
+  computed,
+  reactive,
+  defineComponent,
+  watch,
+  toRaw,
+  onMounted,
+  defineExpose,
+  onDeactivated,
+} from "vue";
+import documents from "@/api/document/document";
+import myfile from "@/api/myfile/myfile";
+import { claimFile } from "@/api/scanner/info.js";
+import { ElMessage } from "element-plus";
+const props = defineProps({
+  openScanMove: {
+    type: Boolean,
+    default: false,
+  },
+  scannerFiles: {
+    type: Array,
+    default: () => [],
+  },
+  thisFolder: {
+    type: Object,
+    default: () => {},
+  },
+  scanFileArr: {
+    type: Array,
+    default: () => [],
+  },
+   spaceType: {
+    type: Number,
+    default: 0,
+  },
+});
+const treeData = ref();
+const dirIds = ref();
+const thisNode = ref({}); //当前选中的接点
+const form = ref({
+  fileName: "扫描文件" + Date.now(),
+});
+const defaultProps = ref({
+  label: "label",
+  value: "id",
+  disable: false,
+});
+const emit = defineEmits(["closeOpenScanMove", "saveScanFile"]);
+const closeOpen = () => {
+  emit("closeOpenScanMove");
+};
+function handleNodeClick(data) {
+  dirIds.value = data.id;
+}
+const onSubmit = async () => {
+  const query = {
+    dirId: thisNode.value.value,
+    merge: false,
+    name: form.value.fileName,
+    q: toRaw(props.scanFileArr),
+    spaceId: props.thisFolder.spaceId,
+  };
+  // console.log("query", query);
+  const res = await claimFile(query);
+  if (res.code == 200) {
+    ElMessage({
+      type: "success",
+      message: "移动成功",
+    });
+    closeOpen()
+  }
+  console.log(res);
+};
+//选中文件夹节点
+const checkoutNode = (node, data) => {
+  // console.log('node',node);
+  // console.log("data", data);
+  thisNode.value = {
+    label: data.label,
+    value: data.id,
+    disable: data.disable,
+  };
+};
+//获取文件树
+function getFileTree() {
+  documents.fileTree(props.spaceType).then((res) => {
+    treeData.value = [res];
+    // console.log("treedata", res);
+  });
+}
+onMounted(() => {
+  getFileTree();
+  // console.log("thisFolder", props.thisFolder);
+  // console.log("scanFileArr", props.scanFileArr);
+  thisNode.value = {
+    label: props.thisFolder.dirName,
+    value: props.thisFolder.dirId,
+    disable: false,
+  };
+});
+</script>
+
+<style lang="scss" scoped>
+.treebox {
+  width: 100%;
+  max-height: 500px;
+  overflow-y: auto;
+  border: 1px solid #c1cce3;
+}
+.custom-tree-node {
+  display: flex;
+  align-items: center;
+  img {
+    width: 26px;
+    height: 26px;
+    object-fit: cover;
+  }
+}
+:deep(.el-dialog__body) {
+  padding: 20px !important;
+}
+:deep(.el-input__wrapper) {
+  border: 1px solid #c1cce3;
+}
+:deep(.el-form-item__label) {
+  color: #505870;
+}
+</style>

+ 25 - 6
src/components/ScanFile/ScanFile.vue

@@ -12,17 +12,17 @@
         <div class="statistics">
           <el-checkbox v-model="checkedAll">共{{ total }}项</el-checkbox>
           <div class="">
-            <el-button color="#2E6BC8">
+            <el-button color="#2E6BC8" @click="toSave">
               <img src="@/assets/images/folder_white.png" alt="" />&nbsp; 移动到
             </el-button>
           </div>
         </div>
         <!-- 盒子区域 -->
-        <div class="bigBox">
-          <div v-for="item in 10" :key="item" class="one_box">
-            <img src="@/assets/images/bigLogin.png" alt="" />
+        <div class="bigBox">   
+          <div v-for="item in props.scannerFiles" :key="item" class="one_box">
+            <img :src="wangzhi + item.path" alt="" />
             <div class="top_check">
-              <el-checkbox ></el-checkbox>
+              <el-checkbox @change="checkChange(item)"></el-checkbox>
             </div>
           </div>
         </div>
@@ -48,13 +48,32 @@ const props = defineProps({
     type: Boolean,
     default: false,
   },
+   scannerFiles: {
+    type: Array,
+    default: () => [],
+  },
 });
 const checkedAll = ref(false); //是否全选
 const total = ref(333); //总计数量
-const emit = defineEmits(["closeOpen"]);
+const wangzhi = import.meta.env.VITE_APP_BASE_API
+const fileArr = ref([])
+const emit = defineEmits(["closeOpen",'saveScanFile']);
 const closeOpen = () => {
   emit("closeOpen");
 };
+const checkChange = (item)=>{
+  let arr = fileArr.value
+  if(arr.some(par=>par == item.q)){
+    arr = arr.filter(par=>par !=item.q)
+  }else{
+    arr.push(item.q)
+  }
+  fileArr.value = JSON.parse(JSON.stringify(arr))
+  // console.log('fileArr',toRaw(fileArr.value));
+}
+const toSave = ()=>{
+  emit('saveScanFile',toRaw(fileArr.value))
+}
 </script>
 
 <style lang="scss" scoped>

+ 1 - 0
src/layout/indexCommon.vue

@@ -352,6 +352,7 @@ function logout() {
   })
     .then(() => {
       sessionStorage.clear()
+      localStorage.setItem('passArr','')
       userStore.logOut().then(() => {
         location.href = "/index";
       });

+ 111 - 4
src/views/department/MyFile.vue

@@ -137,6 +137,26 @@
                                 </div>
                             </div>
                         </template>
+                          <div v-if="thisFolder.dirType == '1' && isDept"
+                                style="display: flex;width: 92px;height: 32px;justify-content: flex-start;align-items: center;line-height: 18px;">
+                                <div style="margin-left: 5px;">
+                                    <img src="../../assets/images/scanFile.png" style="width: 24px;height: 24px;" alt="">
+                                </div>
+                                <div style="margin-left: 5px;">
+                                    <span style="color: black;cursor: pointer;" @click="scannerFile">扫描
+                                    </span>
+                                </div>
+                            </div>
+                            <div v-else
+                                style="display: flex;width: 92px;opacity:0.5;height: 32px;justify-content: flex-start;align-items: center;line-height: 18px;">
+                                <div style="margin-left: 5px;">
+                                    <img src="../../assets/images/scanFile.png" style="width: 24px;height: 24px;" alt="">
+                                </div>
+                                <div style="margin-left: 5px;">
+                                    <span style="color: black;cursor: pointer;">扫描
+                                    </span>
+                                </div>
+                            </div>
                         </div>
                        <div class="tip">
                         <img src="@/assets/images/mouseRight.png" alt="">
@@ -416,6 +436,24 @@
     <!-- 二次密码验证 -->
     <inputPassword v-if="showInputPassword" @surePass="surePass" @closeIptPass="closeIptPass" :showInputPassword="showInputPassword"></inputPassword>
     <div v-loading.fullscreen="loadingPreview" v-if="loadingPreview" class="lodingBox"></div>
+    <!-- 扫描文档 -->
+    <ScanFile v-if="openScan" :openScan="openScan" :scannerFiles="scannerFiles" @saveScanFile="saveScanFile" @closeOpen="closeOpen"></ScanFile>
+    <!-- 可用扫描仪信息 -->
+     <div>
+        <el-dialog v-model="checkScanner" title="扫描仪" width="30%">
+            <div v-for="item in scannerList" :key="item.scannerId" @click="checkScanFn(item)" :class="{'checkScan':item.scannerId ==checkScanId }">
+                {{item.scannerName}}
+            </div>
+            <template #footer>
+                <span class="dialog-footer">
+                    <el-button @click="closeCheckScanner">取消</el-button>
+                    <el-button type="primary" @click="sureScaner">确认</el-button>
+                </span>
+            </template>
+        </el-dialog>
+    </div>
+    <!-- 扫描文件移动到 -->
+    <MoveTo v-if="openScanMove" :spaceType='2' :scanFileArr="scanFileArr" :thisFolder="thisFolder" :openScanMove="openScanMove" @closeOpenScanMove='closeOpenScanMove'></MoveTo>
 </template>
 
 <script>
@@ -446,6 +484,8 @@ import level3 from "@/assets/images/level3.png";
 import level4 from "@/assets/images/level4.png";
 import { ElMessage ,ElLoading } from 'element-plus'
 import ImgPreview from '@/components/ImgPreview/ImgPreview.vue'
+import ScanFile from '@/components/ScanFile/ScanFile.vue'
+import MoveTo from '@/components/MoveTo/MoveTo.vue'
 import PathLabel from '@/components/PathLabel/index.vue'
 import { preview } from "@/api/common/common.js";
 import historyList from "@/components/historyList/index.vue"; //选择文件发送的列表,历史版本
@@ -462,6 +502,7 @@ import ordinary from "@/assets/images/ordinary.png";
 import fileStyle from "@/assets/images/fileStyle.png";fileBox
 import fileBox from "@/assets/images/fileBox.png";
 import { getLevel } from '@/api/level/level.js';
+import { listInfo,selectInfo ,getFileByScanerId} from '@/api/scanner/info.js';
 import Cookies from "js-cookie";
 import elTableInfiniteScroll from 'el-table-infinite-scroll'
 import { getConfigKey } from "@/api/system/config.js"
@@ -672,10 +713,17 @@ export default {
         const isDept = ref(false)// 是否管理员
         const loadingUpload = ref(false);//文件上传加载
         const maxFileSize = ref()//能上传的最大size
+        const scannerList = ref() // 扫描仪数据
+        const checkScanId = ref() // 选中的scan的id
+        const checkScanner = ref(false) //显示扫描仪选择框
+        const scannerFiles = ref([]) //选择的扫描仪的文件
+        const openScanMove = ref(false)
         const pathLabelData = ref([
         ])
         //控制宫格展示
         const isList = ref(false); //控制显示方式
+        const openScan = ref(false)//控制扫描文档显示
+        const scanFileArr = ref([]) //认领的扫描文件数组
         const changeShow = (fileGrids) => {
         //   isList.value = !isList.value;
         //   fileGrid.value = fileGrids
@@ -1023,6 +1071,9 @@ export default {
         function cancleHistoryPrew(val) {
             historyPrew.value = false
         }
+        const closeOpen = ()=>{
+            openScan.value = false
+        }
         function createNewFile() {
             addFile.value = true
         }
@@ -1066,7 +1117,7 @@ export default {
         function onSuccess(files, val) {
             fileArr.value.push(files.file)
         }
-                //关闭文件上传
+        //关闭文件上传
         const closeUpload =() =>{
           uploadModal.value = false;
           fileArr.value = [];
@@ -1786,6 +1837,44 @@ export default {
             return false
             }
         }
+        //获取扫描仪列表
+        const scannerFile =async ()=>{
+            const res = await selectInfo()
+            scannerList.value = res.rows
+            checkScanner.value = true
+            checkScanId.value = null
+            // console.log('scanner',res);
+        }
+        // 选择扫描仪
+        const checkScanFn = (item)=>{
+            checkScanId.value = item.scannerId
+        }
+        // 确认选择扫描仪 获取扫描仪下文件列表
+        const sureScaner =async ()=>{
+            if(!checkScanId.value) return
+            const res = await getFileByScanerId(checkScanId.value)
+            console.log('sureScanerres',res);
+            scannerFiles.value = res.data
+            checkScanner.value = false
+            openScan.value = true
+        }
+        // 关闭窗口
+        const closeCheckScanner = ()=>{
+            checkScanner.value = false
+        }
+        // 移动到事件
+        const saveScanFile = (arr)=>{
+            console.log('arr',arr);
+             openScan.value = false
+             scanFileArr.value = arr
+             openScanMove.value = true
+
+        }
+        // 关闭窗口
+        const closeOpenScanMove = ()=>{
+            openScanMove.value = false
+            refreshFile()
+        }
         onMounted(() => {
             getAllTop()
             getSpaceList()
@@ -2041,7 +2130,21 @@ export default {
             backTopPath,
             maxFileSize,
             upBefore,
-            getFirstFolder
+            getFirstFolder,
+            openScan,
+            closeOpen,
+            scannerFile,
+            scannerList,
+            checkScanner,
+            checkScanId,
+            checkScanFn,
+            closeCheckScanner,
+            sureScaner,
+            scannerFiles,
+            saveScanFile,
+            openScanMove,
+            closeOpenScanMove,
+            scanFileArr
 
         }
     },
@@ -2061,7 +2164,9 @@ export default {
         PlaceGridFolder,
         PalaceGridFile,
         inputPassword,
-        PathLabel
+        PathLabel,
+        ScanFile,
+        MoveTo
     },
 }
 
@@ -2178,7 +2283,9 @@ p {
     border-radius: 4px;
     background-color: white;
 }
-
+.checkScan{
+    background-color: #eee;
+}
 .useBox {
     width: 100%;
     height: 24px;

+ 160 - 62
src/views/myfile/MyFile.vue

@@ -94,75 +94,95 @@
                     <div class="manyUse">
                         <div class="useMenu">
                             <div v-if="thisFolder.dirType == '1'"
-                            style="display: flex;width: 92px;height: 32px;justify-content: flex-start;align-items: center;line-height: 18px;">
-                            <div style="margin-left: 5px;">
-                                <img src="../../assets/images/upload.png" style="width: 24px;height: 24px;" alt="">
-                            </div>
-                            <div style="margin-left: 5px;">
-                                <span style="color: black;cursor: pointer;" @click="uploadModal = true">上传
-                                </span>
-                            </div>
-                        </div>
-                        <div v-else
-                            style="display: flex;width: 92px;opacity:0.5;height: 32px;justify-content: flex-start;align-items: center;line-height: 18px;">
-                            <div style="margin-left: 5px;">
-                                <img src="../../assets/images/upload.png" style="width: 24px;height: 24px;" alt="">
-                            </div>
-                            <div style="margin-left: 5px;">
-                                <span style="color: black;cursor: pointer;">上传
-                                </span>
-                            </div>
-                        </div>
-                        <div v-if="thisFolder.dirType" class="shouzhi"
-                            style="display: flex;width: 102px;height: 32px;justify-content: flex-start;align-items: center;">
-                            <div style="margin-left: 5px;">
-                                <el-icon
-                                    style="background-color: #7084B4;width: 24px;height: 24px;border-radius: 50%;color: white;"
-                                    @click="createNewMenu(0)">
-                                    <Plus />
-                                </el-icon>
+                                style="display: flex;width: 92px;height: 32px;justify-content: flex-start;align-items: center;line-height: 18px;">
+                                <div style="margin-left: 5px;">
+                                    <img src="../../assets/images/upload.png" style="width: 24px;height: 24px;" alt="">
+                                </div>
+                                <div style="margin-left: 5px;">
+                                    <span style="color: black;cursor: pointer;" @click="uploadModal = true">上传
+                                    </span>
+                                </div>
                             </div>
-                            <div style="margin-left: 5px;" @click="createNewMenu(0)">
-                                <span style="font-size: 14px;" class="shouzhi">新建目录</span>
+                            <div v-else
+                                style="display: flex;width: 92px;opacity:0.5;height: 32px;justify-content: flex-start;align-items: center;line-height: 18px;">
+                                <div style="margin-left: 5px;">
+                                    <img src="../../assets/images/upload.png" style="width: 24px;height: 24px;" alt="">
+                                </div>
+                                <div style="margin-left: 5px;">
+                                    <span style="color: black;cursor: pointer;">上传
+                                    </span>
+                                </div>
                             </div>
-                        </div>
-                        <div v-else class="shouzhi"
-                            style="display: flex;opacity:0.5;width: 102px;height: 32px;justify-content: flex-start;align-items: center;">
-                            <div style="margin-left: 5px;">
-                                <el-icon
-                                    style="background-color: #7084B4;width: 24px;height: 24px;border-radius: 50%;color: white;">
-                                    <Plus />
-                                </el-icon>
+                            <div v-if="thisFolder.dirType" class="shouzhi"
+                                style="display: flex;width: 102px;height: 32px;justify-content: flex-start;align-items: center;">
+                                <div style="margin-left: 5px;">
+                                    <el-icon
+                                        style="background-color: #7084B4;width: 24px;height: 24px;border-radius: 50%;color: white;"
+                                        @click="createNewMenu(0)">
+                                        <Plus />
+                                    </el-icon>
+                                </div>
+                                <div style="margin-left: 5px;" @click="createNewMenu(0)">
+                                    <span style="font-size: 14px;" class="shouzhi">新建目录</span>
+                                </div>
                             </div>
-                            <div style="margin-left: 5px;">
-                                <span style="font-size: 14px;" class="shouzhi">新建目录</span>
+                            <div v-else class="shouzhi"
+                                style="display: flex;opacity:0.5;width: 102px;height: 32px;justify-content: flex-start;align-items: center;">
+                                <div style="margin-left: 5px;">
+                                    <el-icon
+                                        style="background-color: #7084B4;width: 24px;height: 24px;border-radius: 50%;color: white;">
+                                        <Plus />
+                                    </el-icon>
+                                </div>
+                                <div style="margin-left: 5px;">
+                                    <span style="font-size: 14px;" class="shouzhi">新建目录</span>
+                                </div>
                             </div>
-                        </div>
-                        <div style="display: flex;width: 102px;height: 32px;justify-content: flex-start;align-items: center;"
-                            :class="!thisFolder.dirType ? 'yincang' : 'xianshi'">
-                            <div style="margin-left: 5px;">
-                                <el-icon
-                                    style="background-color: #7084B4;width: 24px;height: 24px;border-radius: 50%;color: white;"
-                                    @click="thisFolder.dirType ? createNewMenu(2) : null">
-                                    <Plus />
-                                </el-icon>
+                            <div style="display: flex;width: 102px;height: 32px;justify-content: flex-start;align-items: center;"
+                                :class="!thisFolder.dirType ? 'yincang' : 'xianshi'">
+                                <div style="margin-left: 5px;">
+                                    <el-icon
+                                        style="background-color: #7084B4;width: 24px;height: 24px;border-radius: 50%;color: white;"
+                                        @click="thisFolder.dirType ? createNewMenu(2) : null">
+                                        <Plus />
+                                    </el-icon>
+                                </div>
+                                <div style="margin-left: 5px;" @click="thisFolder.dirType ? createNewMenu(2) : null">
+                                    <span style="font-size: 14px;" class="shouzhi">新建文档</span>
+                                </div>
                             </div>
-                            <div style="margin-left: 5px;" @click="thisFolder.dirType ? createNewMenu(2) : null">
-                                <span style="font-size: 14px;" class="shouzhi">新建文档</span>
+                            <template v-for="(item, index) in useMenu" :key="index">
+                                <div :class="{ 'isCheck': haveCheck }"
+                                    style="display: flex;width: 82px;opacity:0.5;height: 32px;justify-content: flex-start;align-items: center;line-height: 18px;cursor: pointer;"
+                                    @click="getMenu(item, index,haveCheck)">
+                                    <div style="margin-left: 5px;">
+                                        <img :src="item.img" style="width: 24px;height: 24px;" alt="">
+                                    </div>
+                                    <div style="margin-left: 5px;">
+                                        <span style="font-size: 14px;" class="shouzhi">{{ item.name }}</span>
+                                    </div>
+                                </div>
+                            </template>
+                            <div v-if="thisFolder.dirType == '1'"
+                                style="display: flex;width: 92px;height: 32px;justify-content: flex-start;align-items: center;line-height: 18px;">
+                                <div style="margin-left: 5px;">
+                                    <img src="../../assets/images/scanFile.png" style="width: 24px;height: 24px;" alt="">
+                                </div>
+                                <div style="margin-left: 5px;">
+                                    <span style="color: black;cursor: pointer;" @click="scannerFile">扫描
+                                    </span>
+                                </div>
                             </div>
-                        </div>
-                        <template v-for="(item, index) in useMenu" :key="index">
-                            <div :class="{ 'isCheck': haveCheck }"
-                                style="display: flex;width: 82px;opacity:0.5;height: 32px;justify-content: flex-start;align-items: center;line-height: 18px;cursor: pointer;"
-                                @click="getMenu(item, index,haveCheck)">
+                            <div v-else
+                                style="display: flex;width: 92px;opacity:0.5;height: 32px;justify-content: flex-start;align-items: center;line-height: 18px;">
                                 <div style="margin-left: 5px;">
-                                    <img :src="item.img" style="width: 24px;height: 24px;" alt="">
+                                    <img src="../../assets/images/scanFile.png" style="width: 24px;height: 24px;" alt="">
                                 </div>
                                 <div style="margin-left: 5px;">
-                                    <span style="font-size: 14px;" class="shouzhi">{{ item.name }}</span>
+                                    <span style="color: black;cursor: pointer;">扫描
+                                    </span>
                                 </div>
                             </div>
-                        </template>
                         </div>
                         <div class="tip">
                             <img src="@/assets/images/mouseRight.png" alt="">
@@ -438,7 +458,23 @@
     <!-- 新增文档 -->
     <AddFile v-if="newAdd" :newAdd="newAdd" @threeBe="threeBe" :clickFileData="clickFileData"></AddFile>
     <!-- 扫描文档 -->
-    <ScanFile v-if="openScan" :openScan="openScan" @closeOpen="closeOpen"></ScanFile>
+    <ScanFile v-if="openScan" :openScan="openScan" :scannerFiles="scannerFiles" @saveScanFile="saveScanFile" @closeOpen="closeOpen"></ScanFile>
+    <!-- 可用扫描仪信息 -->
+     <div>
+        <el-dialog v-model="checkScanner" title="扫描仪" width="30%">
+            <div v-for="item in scannerList" :key="item.scannerId" @click="checkScanFn(item)" :class="{'checkScan':item.scannerId ==checkScanId }">
+                {{item.scannerName}}
+            </div>
+            <template #footer>
+                <span class="dialog-footer">
+                    <el-button @click="closeCheckScanner">取消</el-button>
+                    <el-button type="primary" @click="sureScaner">确认</el-button>
+                </span>
+            </template>
+        </el-dialog>
+    </div>
+    <!-- 扫描文件移动到 -->
+    <MoveTo v-if="openScanMove" :spaceType='3' :scanFileArr="scanFileArr" :thisFolder="thisFolder" :openScanMove="openScanMove" @closeOpenScanMove='closeOpenScanMove'></MoveTo>
 </template>
 
 <script>
@@ -474,6 +510,7 @@ import level4 from "@/assets/images/level4.png";
 import { ElMessage, ElLoading } from 'element-plus'
 import ImgPreview from '@/components/ImgPreview/ImgPreview.vue'
 import ScanFile from '@/components/ScanFile/ScanFile.vue'
+import MoveTo from '@/components/MoveTo/MoveTo.vue'
 import PathLabel from '@/components/PathLabel/index.vue'
 import { preview } from "@/api/common/common.js";
 import historyList from "@/components/historyList/index.vue"; //选择文件发送的列表,历史版本
@@ -488,6 +525,7 @@ import { encrypt, decrypt } from "@/utils/jsencrypt";
 import Cookies from "js-cookie";
 import elTableInfiniteScroll from 'el-table-infinite-scroll'
 import { getLevel } from '@/api/level/level.js';
+import { listInfo,selectInfo ,getFileByScanerId} from '@/api/scanner/info.js';
 import { getConfigKey } from "@/api/system/config.js"
 
 export default {
@@ -689,11 +727,17 @@ export default {
         const clickFileData = ref(null);
         let fileBig = ref(0);
         const maxFileSize = ref()//能上传的最大size
+        const scannerList = ref() // 扫描仪数据
+        const checkScanId = ref() // 选中的scan的id
+        const checkScanner = ref(false) //显示扫描仪选择框
+        const scannerFiles = ref([]) //选择的扫描仪的文件
+        const openScanMove = ref(false)
         const pathLabelData = ref([
         ])
          //控制宫格展示
         const isList = ref(false); //控制显示方式
         const openScan = ref(false)//控制扫描文档显示
+        const scanFileArr = ref([]) //认领的扫描文件数组
         const changeShow = (fileGrids) => {
         //   isList.value = !isList.value;
         //   fileGrid.value = fileGrids
@@ -1729,7 +1773,7 @@ export default {
             }
             const res = await delFavorite(query)
             //TODO 之后需要重新获取数据 并message提示
-            console.log('res', res);
+            // console.log('res', res);
             refreshFile()
         }
         //获取安全图标
@@ -1884,6 +1928,44 @@ export default {
             return false
             }
         }
+        //获取扫描仪列表
+        const scannerFile =async ()=>{
+            const res = await selectInfo()
+            scannerList.value = res.rows
+            checkScanner.value = true
+            checkScanId.value = null
+            // console.log('scanner',res);
+        }
+        // 选择扫描仪
+        const checkScanFn = (item)=>{
+            checkScanId.value = item.scannerId
+        }
+        // 确认选择扫描仪 获取扫描仪下文件列表
+        const sureScaner =async ()=>{
+            if(!checkScanId.value) return
+            const res = await getFileByScanerId(checkScanId.value)
+            console.log('sureScanerres',res);
+            scannerFiles.value = res.data
+            checkScanner.value = false
+            openScan.value = true
+        }
+        // 关闭窗口
+        const closeCheckScanner = ()=>{
+            checkScanner.value = false
+        }
+        // 移动到事件
+        const saveScanFile = (arr)=>{
+            console.log('arr',arr);
+             openScan.value = false
+             scanFileArr.value = arr
+             openScanMove.value = true
+
+        }
+        // 关闭窗口
+        const closeOpenScanMove = ()=>{
+            openScanMove.value = false
+            refreshFile()
+        }
         onMounted(() => {
             // if(!thisFolder.value){
             getAllTop()
@@ -2152,7 +2234,19 @@ export default {
             upBefore,
             openScan,
             closeOpen,
-            getFirstFolder
+            getFirstFolder,
+            scannerFile,
+            scannerList,
+            checkScanner,
+            checkScanId,
+            checkScanFn,
+            closeCheckScanner,
+            sureScaner,
+            scannerFiles,
+            saveScanFile,
+            openScanMove,
+            closeOpenScanMove,
+            scanFileArr
         }
     },
     watch: {
@@ -2173,7 +2267,8 @@ export default {
         PalaceGridFile,
         inputPassword,
         PathLabel,
-        ScanFile
+        ScanFile,
+        MoveTo
     },
 }
 
@@ -2380,6 +2475,9 @@ p {
         font-size: 12px;
     }
 }
+.checkScan{
+    background-color: #eee;
+}
 
 :deep(.el-collapse-item__header) {
     height: 24px !important;

+ 6 - 3
src/views/scanner/info/index.vue

@@ -69,7 +69,7 @@
           :disabled="single"
           @click="handleSee"
         >
-          查看
+          查看FTP信息
         </el-button>
       </el-col>
       <right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar>
@@ -357,10 +357,13 @@ function handleExport() {
 }
 /** 查看按钮操作 */
 function handleSee() {
-  console.log('Seerow',ids.value);
+  const url = location.href
+  const arr = url.split('/')
+console.log('arr',arr);
   const row = infoList.value.find(item=>item.scannerId === ids.value[0])
+  const pass=decode(row.pass);
    ElMessageBox.alert(
-      `端口号:${row.port}<br>扫描仪IP:${row.scannerIp}<br>账号:${row.user}`,
+      `端口号:${row.port}<br>扫描仪IP:${arr[2]}<br>账号:${row.user}<br>密码:${pass}`,
       '扫描仪信息',
       {
         dangerouslyUseHTMLString: true,